UFS顶层架构
UFS基于SCSI SAM架构模型定义了一个完整的协议栈,从上到下依次为应用层、传输层、数据链路层、物理层。UFS使用MIPI联盟的UniPro作为数据链路层和MIPI的M-PHY作为物理层,两者合起来称之为互连层(UFS InterConnect Layer)
应用层
应用层包括UFS命令集、设备管理器(Device Manager)和任务管理器(Task Manager)。应用层处于整个协议栈的最高层,所有的命令或者请求都来源于该层。
UCS负责命令的生成,目前UFS没有定义自己的命令(没有UFS Native Command Set),使用的命令是简化的SCSI命令(基于SBC和SPC),由INCITS T10组织定义。
任务管理器用于处理命令队列控制的命令。设备管理器将提供设备级别的控制,如查询请求和较低级别的链路层控制。
UFS命令集
目前ufs没有定义自己的命令,使用的是简化的SCSI命令,主要包括SPC(SCSI Primary Commands)命令和SBC(SCSI Block Commands)命令
命令类型 | 命令名 |
---|---|
SPC | INQUIRY |
SPC | MODE SELECT(10) |
SPC | MODE SENSE(10) |
SPC | REPORT LUNS |
SPC | READ BUFFER |
SPC | TEST UNIT READY |
SPC | WRITE BUFFER |
SPC | SECURITY PROTOCOL IN |
SPC | SECURITY PROTOCOL OUT |
SBC | FORMAT UNIT |
SBC | PRE-FETCH(10)/(16) |
SBC | READ(6)/(10)/(16) |
SBC | WRITE(6)/(10)/(16) |
SBC | READ CAPACITY(10)/(16) |
SBC | REQUEST SENSE |
SBC | SEND DIAGNOSTIC |
SBC | UNMAP |
SBC | START STOP UNIT |
SBC | SYNCHRONIZE CACHE(10)/(16) |
SBC | VERIFY(10) |
UFS 设备管理器
设备管理器主要完成以下两种任务:
- 处理设备级别的操作:管理设备功耗、设置数据传输相关参数、后台操作使能/禁止和其它设备相关操作
- 管理设备级别的配置:维护和存储一组描述符,处理查询请求修改或获取设备的配置信息
从UFS架构模型来看,下层为UFS设备管理器提供了服务访问节点: - UDM_SAP:访问传输层,查询请求,查询响应等操作
- UIO_SAP:管理和控制互联层,主要是通过一系列原语操作,主要包括重启设备、重启互联层、让物理层进入和退出休眠模式等
因此设备管理器既可以通过正常流程(由UTP传输层传递UPIU数据包),快速访问模式(以原语的形式发送UIC命令)管理和操作设备 。
UFS任务管理器
任务管理器主要处理命令队列中的命令,比如当某个命令超时时,任务管理器可以通过发送Abort命令将这个命令终止掉;也可以使用Clear命令清空命令队列中的所有命令,具体定义如下:
传输层
UTP使用SAM作为通用架构模型,是一种请求-响应架构模型。
UTP层使用UPIU(UFS Protocol Information Unit)用作传递host与ufs设备之间的基本数据单元,不同种类的UPIU都包含有一个通用的头结构。当host端传输层接收到来自应用层的命令或者请求后,会产生相应的UPIU,然后交由下层传导接收端的传输层。 无论UTP 下发何种命令协议,UFS 设备都应统一采用 SCSI CDB、状态和任务管理功能。
互连层
UFS互联层由MIPI UniPro和M-PHY构成,为上层(UTP)提供基本的传输能力。数据链路层负责主机和设备的链接,物理层负责传输物理电气信号。
系统模型
UFS 信号
Name | 描述 |
---|---|
RST_n | UFS设备硬件复位信号 |
REF_CLK | 链路上每个UFS设备低速参考时钟 |
DOUT_t | 由UFS设备输出的差分信号 |
DOUT_c | 由UFS设备输出的差分信号 |
DIN_t | 输入UFS设备的差分信号 |
DIN_c | 输入UFS设备的差分信号 |
UniPro
UniPro除了是一个数据链路层,它也是一个完整的协议栈,
- 传输层(L4)支持多设备之间的双向连接,但是UFS只支持CPort0;
- 网络层(L3)支持通过设备ID寻址多达128个设备,但是由于UFS是点对点的传输,所以不需要使用网络层;
- 数据链路层(L2)支持流控、CRC生成和校验,重传机制等,UFS利用了UniPro的数据链路层为主机和设备之间通讯提供可靠的连接;
- 物理层(M-PHY)使用8/10编码,差分信号进行串行数据传输。数据传输分为高低速模式,每种模式下又有集中不同的速度档位;