ufs2.2 协议扫盲(十一)

10.7.1 COMMAND UPIU:
COMMAND UPIU 包含基本的 UPIU 标头以及指定命令所需的附加信息。 Initiator 设备将生成此 UPIU 并将其发送到 Target 设备以请求由 Target 执行的 SCSI 命令服务。

0~12字节是基本的标准header, xx00 0001b 指示这是一个 COMMAND UPIU.

Flags字段如下:
Flag
Description
Flags.R
.R 标志中的值“1”表示该命令需要从目标设备到启动器设备的数据传输(传入数据)。 如果 .R 设置为“1”,则 .W 应设置为“0”。 如果 .R 和 .W 设置为“0”,则此命令不需要数据传输,预期数据传输长度字段将被忽略。
Flags.W
.W 标志中的值“1”表示命令需要从发起方设备到目标设备的数据传输(传出数据)。 如果 .W 设置为“1”,则 .R 应设置为“0”。 如果 .W 和 .R 设置为“0”,则此命令不需要数据传输,并且预期数据传输长度字段将被忽略。
Flags.ATTR
.ATTR 字段包含由 [SAM] 定义的任务属性值。
Task Attribute
Bit 1
Bit 0
Simple00
Ordered01
Head of Queue
10
ACA (Not Used)
11
Flags.CP
.CP 字段表示命令优先级; 有关详细信息,请参阅 [SAM]。 在 UFS 中,.CP 字段仅支持两个值,而 [SAM] 允许更大的范围。 该 1 位字段指定具有简单任务属性的命令相对于已经在任务集中具有简单任务属性的其他命令的相对调度重要性。 如果命令具有除简单任务属性之外的任务属性,则该字段没有意义。任务管理器可以使用命令优先级来确定在任务集中处理具有简单任务属性的命令的顺序。 “1”值表示高优先级。 “0”值表示没有优先级。
Data Segment Length 字段应包含零,因为此 UPIU 中没有数据段。

Expected Data Transfer Length:字段包含一个值,该值表示完成 在 CDB 中指示的 SCSI 命令请求所需的 传输字节数(例如,在写命令的情况下的传输长度为xxx字节、分配长度、参数列表长度等)。数据可以从发起方设备传输到目标设备或从目标设备传输到发起方设备。仅当 Flags.W 或 Flags.R 位之一设置为“1”时,该字段才有效。对于从发起设备到目标设备的数据传输,.W 标志应设置为“1”,.R 标志应设置为“0”。 Expected Data Transfer Length 字段中的值表示发起方设备期望发送到目标设备的字节数。对于从目标设备到发起方设备的数据传输,.R 标志应设置为“1”,.W 标志应设置为“0”,Expected Data Transfer Length 字段中的值表示发起设备期望从目标设备接收的字节数。当 COMMAND UPIU 对 SCSI WRITE 或 SCSI READ 命令(特别是 WRITE (6)、READ (6)、WRITE (10)、READ (10)、WRITE (16) 或 READ (16))进行编码时,此值字段应为逻辑块大小 (bLogicalBlockSize) 和 CDB 的 TRANSFER LENGTH 字段的乘积(比如读写命令,会在CDB16字节中明确TRANSFER LENGTH)。该模型要求发起方设备分配足够的缓冲区空间来接收需要 数据输入操作的命令所请求的全部数据大小。以字节为单位的大小应为 Expected Data Transfer Length字段中的值。为了在不使用额外握手 UPIU 的情况下实现数据输入阶段的全部吞吐量,这一要求很重要。发起方设备可能会请求大于目标设备中接收缓冲区大小的数据输出大小。在这种情况下,目标设备将根据需要发送 READY TO TRANSFER UPIU 来调整 DATA OUT UPIU 的速度。 Initiator 设备在收到 READY TO TRANSFER UPIU 之前不会发送 DATA OUT UPIU。

CDB:CDB 字段包含命令描述符块。 该区域是一个 16 字节的数组,将包含一个标准命令描述符块,由支持的 UFS 命令集类型之一定义。 对于 SCSI 命令,可以参考 [SPC] 等规范。 最多可以使用 16 字节的 CDB。 CDB 大小由 SCSI 的 CDB[0] 中操作码字段的组位隐含指示,即 SCSI 命令操作码。 如果 CDB 大小小于 16 字节,则未使用的 COMMAND UPIU 字节被定义为保留。 对于其他命令,CDB 大小取决于命令操作码。
Initiator ID (IID):发起者 ID 字段(字节 4 的位 [7:4])指示创建任务请求的发起者设备的身份。 
Command Set Type :命令集类型字段将指定一个枚举值,该值指示使用哪个特定命令集来定义 CDB 字段中的命令字节。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心无杂念可否?

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

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

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

打赏作者

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

抵扣说明:

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

余额充值