UFS协议4.0介绍四——UTP layer

UFS Transport Protocol (UTP) Layer
UTP采用了SCSI架构模型[SAM], 这是一种客户端-服务端模型,主机发送命令和请求服务到UFS。主机和UFS之间的通信是一系列消息,消息的格式是UPIU。Task是一个命令或一系列用来执行请求服务的动作。一个LU包含一个task queue,支持一个或多个task。

Command结构由Command Descriptor Blocks CDB,组成。A command transaction consists of a Command, an optional Data Phase, and a Status Phase

A basic header segment has a fixed length of 12 bytes. The minimum UPIU size is 32 bytes which includes a basic header segment and transaction specific fields.

The maximum UPIU size is defined as being 65600 bytes

UPIU Data Structure

Description

NOP Out NOP Out可以当做是主机发给设备的ping,用来检测连接路径
NOP In 设备发给主机,用来响应NOP Out
Command 

在发起设备中形成并被发送到目标设备的LU,一个Command upiu包含命令描述块作为命令和

命令参数,这代表命令阶段。

Response 目标设备中形成,发送给发起设备。包含一个命令特定的操作状态和其他响应信息。代表命令的状态阶段。
Data out 发起设备中形成,被用来发送数据到目标设备,代表命令的数据输出阶段。
Data In 目标设备中形成,发送给发起设备,代表命令的数据输入阶段。
Task Management Request 这个类型的传输携带了SCSI结构模型任务管理功能请求,主机中形成,发送给目标设备,标准功能由SAM定义。
Task Management Response
任务管理请求的响应。
Ready To Transfer

当目标设备准备好接收下一个DATA OUT UPIU以及有足够空间接收数据时,会先发一个Ready to Transfer给发起设备。目标设备可以发送多个Ready to transfer,如果有足够空间接收多个DATA OUT UPIU。

 

Query Request: 发起设备中形成,用来请求目标设备的descriptor,flag, attribute。

UFS devices are able to process only either a NOP OUT or a QUERY REQUEST at any point of time.

UPIU概述

UPIU的总大小会根据传输类型变化,但是所有的UPIU的大小都是32bits的整数倍,意味着是4字节对齐。upiu的大小可以是固定或者变化依赖传输类型字段和扩展标志。所有的UPIU都有一个header.

 HD和DD对UFS来说目前都是0.

 Total Extra Header Segment Length:是否有多余的header,这个字段的值 * 32bytes就是多余header的长度。因为最大支持的额外header长度是96字节,所以这个字段取值是0,1,2,3.

 

Command UPIU

Command UPIU包含基础的UPIU header加上额外的必要信息来描述一个命令。发起设备会产生这个UPIU并把它送到目标设备,以请求目标设备执行一个SCSI命令服务。

 Flags

Flags.R: 字段如果是1,表示这个命令需要从目标设备传输数据到发起设备,也就是读。如果.R被设为1,那么.W应该是0.如果.R和.W都被设为0,那么代表没有数据传输。Expected Data Transfer Length字段应该是0.

Flags.ATTR: 这个字段包含任务属性值,如图10.7

Flags.CP: 这个字段表示命令特权。这个1bit字段指示一个用Simple任务属性的命令相对于任务集合中其他用Simple任务属性的命令的相对调度重要性。

如果命令具有Simple以外的属性,那么此字段没有意义。

命令管理者可能会使用命令特权来决定命令集中带有Simple任务属性命令的执行顺序。

Data Segment length

这个字段应该为0,因为命令UPIU中没有数据段。

Expected Data segment length

这个字段表示要传输的数据长度,由要请求完成的SCSI命令CDB指示。只有Flags.w或者Flags.R字段被设置1了,这个字段才有效。单位是byte。

如果前面的Command UPIU携带了SCSI write或者read cmd,这个字段将等于CDB中logic block size和transfer length的乘积。

CDB

这个字段包含了Command descriptor block,是一个16字节的数组。

IID

LSB分布的Initiator ID

 

RESPONSE UPIU

response相比cmd,要多了额外的response,status和device information来指示先前执行的命令结果。在发送response UPIU之前,target device应该停止为请求DATA-Out的command发送ready to transfer UPIU。

 response字段

 status字段

如果命令的类型是SCSI命令集,那么status字段会包含标准的SCSI status数值。

 

 

posted @ 2025-01-13 06:30  老胡同学  阅读(274)  评论(0)    收藏  举报