UFS协议—新手快速入门(三)【7-9】

目录

七、UPIU介绍

八、UPIU详解

(1)命令或者请求UPIU

(2)数据传输相关UPIU

1、数据传输机制

2、主机和设备的角色

(3)状态UPIU

1、主机请求与对应的状态UPIU

2、状态UPIU的作用

(4)其它UPIU

1、特殊UPIU类型及其作用

2、特殊UPIU的使用场景

九、读写交互实例


UFS协议—新手快速入门(一)【1-4】

UFS协议—新手快速入门(二)【5-6】

UFS协议—新手快速入门(四)【10】

UFS协议—新手快速入门(五)【11-13】 

七、UPIU介绍

UFS协议信息单元(UPIU)是UFS协议中用于数据传输的基本单元,它具有固定的格式,并且包含了传输命令或请求所需的所有信息。

在UFS中,UPIU的作用类似于SATA(串行ATA)中的FIS(Frame Information Structure,帧信息结构)和PCIe(PCI Express)中的TLP(Transaction Layer Packet,事务层数据包)。这些结构都是各自协议中用于传输数据的基本单元它们封装了命令、数据和状态信息,以确保数据传输的准确性和效率。

  • SATA中的FIS:在SATA协议中,FIS用于在主机和存储设备之间传输命令和数据。FIS有不同的类型,每种类型用于不同的传输目的,例如,读/写命令、设备状态等。

  • PCIe中的TLP:PCIe是一个高速串行通信协议,用于计算机内部硬件之间的数据传输。TLP是PCIe协议中的基本数据传输单元,它包含了传输的数据和必要的控制信息。

在UFS(Universal Flash Storage)协议中,命令的执行通常分为三个阶段:命令阶段、数据阶段和状态阶段。每个阶段都有其特定的作用和重要性。以下是对这三个阶段的进一步解释:

1、命令阶段(Command Phase)

  • 主机向设备发送命令或请求。这个阶段是命令执行过程的起点,主机通过发送命令来指示设备执行特定的操作,如读取、写入、擦除等。

2、数据阶段(Data Phase)

  • 根据命令的性质,这个阶段可能涉及到数据的传输。对于读写命令,数据阶段是必要的,因为它们需要在主机和设备之间传输数据。然而,对于某些不需要数据交换的命令,如某些配置或状态查询命令,数据阶段可能不存在。

3、状态阶段(Status Phase)

  • 无论命令是否涉及数据传输,状态阶段都是必不可少的。在这个阶段,设备向主机返回命令执行的结果,包括成功、失败或错误状态。这确保了主机能够了解命令的执行情况,并据此采取进一步的行动。

在PCIe(PCI Express)协议中,事务层数据包(TLP)可以是Posted或Non-posted:

  • Posted TLP

    • Posted TLP用于不需要确认的事务,即发起者不等待命令执行状态的返回。这通常用于那些不需要立即反馈的事务,可以提高系统的整体性能。
  • Non-posted TLP

    • Non-posted TLP用于需要确认的事务,即发起者需要等待命令执行状态的返回。这确保了事务的完整性和可靠性。

对于UFS来说,所有的命令都是Non-posted的,这意味着设备必须在命令执行完成后向主机返回状态信息。这种机制确保了命令的执行是可追踪和可靠的,对于存储设备来说尤其重要,因为数据的完整性和准确性至关重要。

八、UPIU详解

在UFS(Universal Flash Storage)协议中,UPIU(UFS Protocol Information Unit)是用于主机和设备之间信息交互的基本单元。无论命令执行处于哪个阶段,UPIU都发挥着关键作用。以下是UPIU在不同阶段的具体应用:

1、命令或请求UPIU

  • 当UFS主机需要向设备发送命令或请求时,它会创建一个命令或请求UPIU。这个UPIU包含了命令的详细信息,如命令码、传输参数等,以及可能需要的额外信息,如事务标识符(Transaction Identifier,TID)。

2、数据UPIU

  • 在数据阶段,如果命令涉及到数据的传输,UFS主机或设备会使用数据UPIU来传输数据。数据UPIU包含了实际的数据负载,以及与数据传输相关的控制信息,如数据长度、方向(主机到设备或设备到主机)等。

3、响应UPIU

  • 在状态阶段,UFS设备使用响应UPIU来向主机返回命令执行的状态信息。响应UPIU包含了命令执行结果的状态码,指示命令是否成功完成,或者是否遇到了错误。

在整个命令执行过程中,UPIU确保了信息的封装和传输的一致性。通过使用UPIU,UFS协议能够以标准化的方式处理命令、数据和状态信息,从而简化了主机和设备之间的通信过程,并提高了协议的效率和可靠性。

此外,UPIU的使用还有助于实现以下目标:

  • 错误检测和纠正:UPIU可能包含用于错误检测和纠正的机制,如校验和或CRC(循环冗余校验)。
  • 命令队列管理:UPIU中的TID可以帮助UFS主机和设备有效地管理命令队列,确保命令按照正确的顺序执行。
  • 协议兼容性:UPIU的设计有助于确保UFS协议的兼容性,使得不同的UFS设备和主机能够无缝地进行通信。

(1)命令或者请求UPIU

在UFS(Universal Flash Storage)系统中,应用层的命令、设备管理和任务管理是三个关键的模块,它们与传输层紧密协作以实现高效和灵活的数据存储和访问。以下是这些模块如何与传输层交互,以及传输层如何生成不同类型的UPIU(UFS Protocol Information Unit):

1、UFS命令模块

  • 这个模块负责发送简化版本的SCSI(Small Computer System Interface)命令。SCSI是一种广泛使用的存储设备接口标准,UFS命令模块使用这些命令来执行存储操作,如读写数据块。
  • 当传输层接收到来自UFS命令模块的命令请求时,它会生成一个COMMAND UPIU。这个UPIU封装了SCSI命令的所有相关信息,包括操作码、参数列表、数据传输方向和大小等。

2、任务管理器

  • 任务管理器负责管理任务队列,包括任务的调度、优先级管理以及执行终止(Abort)操作。它允许应用层控制和监视正在进行的命令。
  • 当传输层接收到来自任务管理器的请求,如终止某个正在进行的命令,它会生成一个TASK MANAGEMENT REQUEST UPIU。这个UPIU封装了任务管理请求的详细信息,包括要终止的命令的标识符和请求的类型。

3、设备管理器

  • 设备管理器负责管理UFS设备的配置和状态,包括设置设备参数、查询设备状态和执行固件更新等操作。
  • 当传输层接收到来自设备管理器的请求,如查询设备的配置信息,它会生成一个QUERY REQUEST UPIU。这个UPIU封装了设备管理请求的所有相关信息,包括查询的类型和所需的参数。

每种类型的UPIU都是为特定类型的请求设计的,确保了命令和请求的准确传递以及数据的完整性和可靠性。通过这种方式,UFS协议能够支持复杂的存储操作和管理功能,同时保持高效和灵活的数据处理能力。

(2)数据传输相关UPIU

在UFS(Universal Flash Storage)协议中,数据的传输是双向的,并且需要主机和设备之间的协调。

1、数据传输机制

(1)写操作(Write Operation)

  • 命令阶段:主机首先发送写命令给设备。
  • 等待阶段:主机等待设备通知其准备好接收数据。
  • 通知阶段:设备通过发送READY TO TRANSFER UPIU(RTT)告知主机它已准备好接收数据,以及可以接收的数据量。
  • 数据传输阶段:主机根据RTT中的信息,发送DATA OUT UPIU将数据传输给设备。

(2)读操作(Read Operation)

  • 命令阶段:主机发送读命令给设备。
  • 数据准备阶段:设备从闪存中获取数据。
  • 数据传输阶段:设备控制数据的传输,通过DATA IN UPIU将数据发送给主机。主机在发送读命令之前已准备好接收数据的空间。
2、主机和设备的角色
  • 主机(Host)

    • 在写操作中,主机是数据的发送者,需要等待设备的RTT通知后再发送数据。
    • 在读操作中,主机是数据的接收者,等待设备准备好数据后接收。
  • 设备(Device)

    • 在写操作中,设备是数据的接收者,需要在准备好接收数据后发送RTT给主机。
    • 在读操作中,设备是数据的发送者,控制数据的传输给主机。

UFS协议中的这种机制确保了数据传输的同步性和效率。主机在写操作中不会盲目发送数据,而是等待设备的准备通知,这有助于避免数据传输冲突和提高数据传输的可靠性。而在读操作中,由于主机已经准备好接收数据,设备可以直接控制数据的发送,从而实现高效的数据传输。

(3)状态UPIU

针对UFS(Universal Flash Storage)系统中主机发出的不同请求,设备在完成任务后会返回相应的状态UPIU给主机。

1、主机请求与对应的状态UPIU

(1)SCSI命令

  • 请求类型: SCSI命令,用于执行存储操作,如读写数据。
  • 返回状态UPIU: RESPONSE UPIU,包含SCSI命令执行的状态和结果。

(2)任务管理器发出的Task Management Request

  • 请求类型: Task Management Request,用于管理命令队列,如终止或查询命令。
  • 返回状态UPIU: TASK MANAGEMENT RESPONSE UPIU,包含任务管理操作的状态和结果。

(3)设备管理器发出的Query Request

  • 请求类型: Query Request,用于查询或配置UFS设备的状态和参数。
  • 返回状态UPIU: QUERY RESPONSE UPIU,包含查询操作的状态和结果数据。
2、状态UPIU的作用
  • RESPONSE UPIU: 用于通知主机SCSI命令的执行结果,包括成功、错误或状态信息。
  • TASK MANAGEMENT RESPONSE UPIU: 用于通知主机任务管理操作的结果,例如命令是否已成功终止或查询。

(4)其它UPIU

1、特殊UPIU类型及其作用

(1)NOP OUT UPIU

  • 传输方向: 主机到设备
  • 作用: 无操作命令,用于检测设备是否连接并响应。类似于网络中的ping命令,用于确认连接的可达性。

(2)NOP IN UPIU

  • 传输方向: 设备到主机
  • 作用: 作为NOP OUT UPIU的响应,表明设备已经收到NOP OUT UPIU并正常响应,主机可以确认与设备的连接。

(3)REJECT UPIU

  • 传输方向: 设备到主机
  • 作用: 当设备接收到一个无效或不被支持的UPIU时,会发送REJECT UPIU来拒绝该UPIU,通知主机该命令或请求不被接受。
2、特殊UPIU的使用场景
  • NOP OUT UPIU: 主机在初始化或定期检查时发送,以确保设备仍然在线并能够响应命令。
  • NOP IN UPIU: 设备收到NOP OUT UPIU后返回,用于确认设备的正常工作状态和响应能力。
  • REJECT UPIU: 设备在遇到无法处理的UPIU时使用,以通知主机存在问题,需要主机采取相应的措施。

九、读写交互实例

主机往设备读取96KB数据

主机往设备读取96KB数据:

  1. 命令发送:主机通过某种通信协议(如TCP/IP)向设备发送一个读数据的命令。在这个例子中,命令是读取96KB的数据。

  2. 数据传输:设备接收到命令后,开始准备数据。由于数据量较大,设备可能选择分批次传输数据,以避免数据传输过程中的延迟和丢包问题。在这个例子中,数据被分为三批返回。

  3. 状态返回:数据传输完成后,设备会发送一个状态消息给主机,告知命令的执行结果。这个状态可以是成功、失败或其他状态信息,具体取决于设备和协议的设计。

主机往设备写64KB数据

主机往设备写64KB数据:

基于请求-响应模式的数据传输过程,其中涉及到了轮询(Polling)和确认(Acknowledgment,简称ACK)机制。这个过程通常被称为"停止-等待"协议(Stop-and-Wait Protocol),在这种协议中,发送方在发送数据后会等待接收方的确认,然后才继续发送下一批数据。

  1. 命令发送:主机发送一个写64KB数据的命令给设备。

  2. 等待响应:主机等待设备响应,确认设备已经准备好接收数据。

  3. 数据分批传输

    • 设备通知主机可以开始传输数据,指定可以传输24KB。
    • 主机收到通知后,发送24KB数据给设备。
    • 设备接收到24KB数据后,发送确认(ACK)给主机,通知主机可以继续发送下一批数据。
    • 设备再次通知主机,可以发送32KB数据。
    • 主机收到通知后,发送32KB数据给设备。
    • 设备接收到32KB数据后,再次发送确认给主机。
  4. 传输剩余数据

    • 设备通知主机可以发送剩余的8KB数据。
    • 主机收到通知后,发送剩余的8KB数据给设备。
  5. 确认完成

    • 设备接收到所有数据后,对数据进行处理,并发送一个命令执行完成的响应给主机。
  6. 主机接收响应:主机接收到设备发送的命令执行完成的响应,确认整个数据传输过程已经成功完成。

在这个过程中,"RTT"(Round-Trip Time,往返时间)是指从主机发送数据到设备,再从设备返回确认的总时间。主机必须等待收到设备的确认(即一个RTT周期)后,才能继续发送下一批数据。这种机制确保了数据的可靠传输,但同时也降低了传输效率,因为主机在每次数据传输后都需要等待确认,这增加了传输的总时间。

在实际应用中,为了提高效率,可能会使用更高级的协议,如TCP,它支持流水线传输(Pipelining),允许在没有收到确认的情况下发送多个数据包。然而,对于某些实时性要求高或资源受限的系统,停止-等待协议可能是一个合适的选择。

  • 36
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
UFS(Universal Flash Storage)协议和MPHY(M-PHY)是用于存储设备的通信协议和物理层接口。 UFS协议是由JEDEC(联合电子设备工程委员会)开发的一种高性能、低功耗的存储设备通信协议。它被广泛应用于移动设备和高性能计算设备中的闪存储存储器。UFS协议支持多个闪存设备同时访问,并且具有快速的数据传输速率和低延迟。此外,UFS协议还具有高度的可扩展性和灵活性,可以适应不同设备的需求。对于移动设备而言,UFS协议可以提供快速的应用程序启动时间、高速连续数据读写和低功耗消耗。 MPHY是一种用于通信接口的物理层技术。它提供了一种高速、低功耗的物理层接口,适用于多种应用领域。MPHY物理层接口可以与各种不同的通信协议配合使用,如UFS协议、PCI Express协议等。它采用了串行信号传输的方式,通过差分信号和预编码技术来提高数据传输速率和抗干扰能力。 UFS协议和MPHY物理层接口之间的关系是密切的。UFS协议需要使用MPHY来进行物理层的传输。MPHY提供了高速、低功耗的物理层接口,确保了UFS协议的可靠传输和高效性能。两者配合使用可以实现高速闪存设备的数据传输和存储操作。 综上所述,UFS协议是一种用于存储设备通信的协议,而MPHY是一种物理层接口技术。它们之间的配合使用可以实现高速、低功耗的存储设备通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITC小浪花、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值