系列文章目录
文章目录
前言
提示:1~4章有兴趣自己查询英文文档,本文就不具体描述,直接进去正题,从第5章开始;。 绿色:重点语句,红色:重点词汇,蓝色:作者根据文章内容进行的相关解析,仅供参考。如果对您有一点帮助,帮点个赞吧!
十、UFS传输协议(UTP)层
10.1 概述
SCSI 架构模型(SAM)被用作通用的 UTP 架构模型,并且 SAM 的任务管理功能用于任务管理。一个任务通常是指一个 SCSI 命令或服务请求。虽然该模型使用 SCSI 命令集作为命令集,但并不一定要完全使用 SCSI 命令。
SAM 架构是一种客户端-服务器模式,或者更常见的说法是请求-响应架构。客户端被称为“发起设备”,服务器被称为“目标设备”。发起设备和目标设备被映射到 UFS 物理网络设备中。发起设备会向目标设备发出命令或服务请求,而目标设备将执行所请求的服务。目标设备是 UFS 设备。UFS 设备会包含一个或多个逻辑单元。逻辑单元是设备内部的一个独立处理单元。
客户端请求会指向设备内的单个逻辑单元。一个逻辑单元将接收并处理客户端的指令或请求。每个逻辑单元在目标设备内都有一个称为逻辑单元号(LUN)的地址。
发起设备与目标设备之间的通信是以一系列消息的形式进行的。这些消息按照本标准中所定义的 UFS 协议信息单元(UPIU)格式进行编排。已定义了多种不同的 UPIU 类型。所有 UPIU 结构在数据结构的开头(最低地址)都包含一个共同的头部区域。结构的其余字段则根据 UPIU 的类型而有所不同。
任务是指执行特定服务的命令或一系列操作。逻辑单元包含一个任务队列,该队列将支持对一个或多个任务的处理。任务队列由逻辑单元管理。在构建任务时,发起设备会生成一个唯一的任务标签。目标设备和发起设备会使用此任务标签来区分多个任务。与特定任务相关的所有事务和序列都会在与事务相关的数据结构中包含该任务标签。
指挥结构由命令描述块(CDB)组成,这些块包含命令操作码以及相关的参数、标志和属性。CDB 内容和结构的描述在 [SAM]、[SBC] 和 [SPC] 等 INCITS T10 草案标准中均有详细规定。
一个命令事务由一个命令、一个可选的数据阶段以及一个状态阶段组成。这些交易以 UPIU 结构的形式呈现。命令阶段将命令信息和相关参数从发起设备传递至目标设备。如果需要数据阶段,则数据流的方向与发起设备相对。数据写入从发起设备流向目标设备。数据读取则从目标设备流向发起设备。在命令完成时,目标设备将在状态阶段向发起设备交付响应。该响应将包含状态以及指示命令成功完成或失败的 UFS 响应状态。如果指示有错误,响应将包含更详细的 UFS 错误信息。
10.2 UTP 和 UniPro 具体概述
UTP 将通过 UniPro 网络以标准消息包(T_SDU)的形式发送命令、数据和响应。UFS 事务将被组合成称为 UFS 协议信息单元(UPIU)的数据结构中。为 UFS SCSI 命令、响应、输入数据和输出数据、任务管理、实用功能、供应商功能、事务同步和控制等定义了 UPIU。该列表可扩展以适应未来的新增内容。对于枚举和配置,UFS 支持一种描述符、属性和标志系统,该系统定义并控制设备的具体细节,包括操作特性、接口、逻辑单元数量、运行速度、电源配置等。该系统是一个相关元素的层次树结构。它可以扩展。
10.2.1 阶段
基于 SCSI 的命令协议要求UPIU 数据包必须遵循执行命令所需的转换流程。简而言之,执行一个命令需要发送一个COMMAND UPIU、零个或多个DATA IN UPIU 或 DATA OUT UPIU 数据包,并以包含状态信息的RESPONSE UPIU 结束。
10.2.2 数据分段
设备可能在缓冲存储或处理吞吐量方面存在限制。在执行需要大量数据输出操作的命令时,目标设备可以通过在准备好接收下一个数据输出 UPIU 时发送“准备传输 UPIU”来控制数据输出阶段。此外,“准备传输 UPIU”中包含一个嵌入式传输上下文,用于在主机上按每个数据包为基础启动 DMA 传输。
10.2.3 UniPro
根据 UniPro 协议的要求,UFS 启动器设备和目标设备会将其交易分割成 UniPro 消息,这些消息将包含 UPIU 的内容。UniPro 消息能够处理理论上无限大小的 T_SDU 消息。UFS 会为最大 T_SDU 消息设定一个可行的限制。该限制为 65600 字节,其中包括 UPIU 标头、可选的扩展头区域和数据段。最小消息大小由基本头格式决定,为 32 字节。未来有可能这个值会增加