UFS 3.1协议分析(第五章) -- UFS协议栈

Contents

        • UFS顶层架构
        • 应用层
          • UFS命令集
          • UFS 设备管理器
          • UFS任务管理器
        • 传输层
        • 互连层
          • UniPro

UFS顶层架构

    UFS基于SCSI SAM架构模型定义了一个完整的协议栈,从上到下依次为应用层、传输层、数据链路层、物理层。UFS使用MIPI联盟的UniPro作为数据链路层和MIPI的M-PHY作为物理层,两者合起来称之为互连层(UFS InterConnect Layer)
UFS 3.1协议分析(第五章) -- UFS协议栈_第1张图片

应用层

    应用层包括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命令清空命令队列中的所有命令,具体定义如下:
UFS 3.1协议分析(第五章) -- UFS协议栈_第2张图片

传输层

    UTP使用SAM作为通用架构模型,是一种请求-响应架构模型。
    UTP层使用UPIU(UFS Protocol Information Unit)用作传递host与ufs设备之间的基本数据单元,不同种类的UPIU都包含有一个通用的头结构。当host端传输层接收到来自应用层的命令或者请求后,会产生相应的UPIU,然后交由下层传导接收端的传输层。 无论UTP 下发何种命令协议,UFS 设备都应统一采用 SCSI CDB、状态和任务管理功能。

互连层

    UFS互联层由MIPI UniPro和M-PHY构成,为上层(UTP)提供基本的传输能力。数据链路层负责主机和设备的链接,物理层负责传输物理电气信号。
    系统模型
UFS 3.1协议分析(第五章) -- UFS协议栈_第3张图片
    UFS 信号

Name 描述
RST_n UFS设备硬件复位信号
REF_CLK 链路上每个UFS设备低速参考时钟
DOUT_t 由UFS设备输出的差分信号
DOUT_c 由UFS设备输出的差分信号
DIN_t 输入UFS设备的差分信号
DIN_c 输入UFS设备的差分信号
UniPro

    UniPro除了是一个数据链路层,它也是一个完整的协议栈,
UFS 3.1协议分析(第五章) -- UFS协议栈_第4张图片

  • 传输层(L4)支持多设备之间的双向连接,但是UFS只支持CPort0;
  • 网络层(L3)支持通过设备ID寻址多达128个设备,但是由于UFS是点对点的传输,所以不需要使用网络层;
  • 数据链路层(L2)支持流控、CRC生成和校验,重传机制等,UFS利用了UniPro的数据链路层为主机和设备之间通讯提供可靠的连接;
  • 物理层(M-PHY)使用8/10编码,差分信号进行串行数据传输。数据传输分为高低速模式,每种模式下又有集中不同的速度档位;

你可能感兴趣的:(存储协议分析,嵌入式,ufs)