UFS Host基础特性分析 -- 硬件部分

Contents

        • UFS总体架构
        • MPHY
        • UniPro
          • UFSHCI
        • UFS Host Controller
          • UFS系统框图
          • UFS controller wrapper

UFS总体架构

UFS Host基础特性分析 -- 硬件部分_第1张图片

    UFS总体架构主要包含了UFS Host Controller部分和UFS device部分,UFS协议对应的也分为两部分:UFS Host Controller Interface协议和UFS协议。
UFS Host基础特性分析 -- 硬件部分_第2张图片
    无论是UFS Host Controller部分还是UFS device部分,他们都将遵循统一的UFS规范。

  • UFS Application Layer (UAP)应用层
    • 1.UFS command set (UCS):UCS处理命令集,如读、写命令等,.使用的命令是简化的SCSI命令(基于SBC和SPC),也可以扩展UFS本地命令集,目前暂时没有定义。
    • 2.Task Manager:任务管理器用以管理命令队列中的命令。比如任务管理器可以发Abort命令,终止之前发下去的命令。它也可以清空命令队列中的所有命令。
  • Device Manager(Query request)设备管理器用于管理UFS设备,包括:
    • 1.处理设备级操作:设备功耗管理、数据传输设置、后台操作使能和其它的特定操作。
    • 2.管理设备级配置:维护和存储一组描述符,例如查询请求命令允许修改和查询设备的配置信息。
  • UFS Transport Protocol(UTP)传输层
    • 主要功能在UFS host端和UFS device端传输UPIU,将应用层的命令封装成UPIU,命令的数据、状态等对应不同的UPIU。UPIU是主机和设备进行信息交换的基本数据单元,它使用数据帧可以最小限度的减少Host的处理时间,同时由device端控制数据传输的节奏,无需host端poll。
  • UFS Interconnenct Layer(UIC)互联层
    • 主要包括MIPI UniPro数据链路层和MIPI M-PHY物理层。其中,MIPI UniPro数据链路层负责主机和设备的链接,它本身是一个完整的协议栈;MIPI M-PHY物理层负责传输实实在在的物理信号,使用8/10编码、差分信号串行数据传输,数据传输分高低速模式,每种模式下又有几种不同的速度档。

MPHY

    UFS具备的优势就来源于新的协议架构。和传统的eMMC相比,UFS底层采用了MPHY协议,这个是UFS底层物理信号传输协议,MPHY是有MIPI Alliance推出的PHY协议。它具有“快”和“稳”的传输特点。因为MPHY使用串行+差分的结构形式,串行保证了“快”,串行可以做到高频传输,而且没有的并行信号的相互干扰,而“稳”则由差分保证,差分传输可以相互抵消共模信号干扰。

UniPro

UFSHCI

UFS Host基础特性分析 -- 硬件部分_第3张图片
    UFS驱动通过UFS HCI管理UFS host controller.UFS HCI包含如下的模块。

  • CSR:CSR 模块通过 AHB 从接口实现软件寄存器,该接口连接到配置 NOC。
    • 通过 TR 门铃寄存器检测软件 TR 并将门铃位的索引标记到HCI TR FIFO。
    • 通过 TMR 门铃寄存器检测软件 TMR 并将门铃位的索引标记为HCI TMR FIFO。
    • 允许通过 DME 接口单元生成请求来控制 UniPro 控制器;
  • Transfer request (TR) FIFO
  • TMR FIFO
  • 中断聚合和生成 (IAG) 单元

Host端数据结构
    UniPro层是封装在UFS这个IP里面的,其中的寄存器也是CPU不能直接访问的。UFS整个模块对外的唯一接口就是UFSHCI(UFS Host Controller Interface)。CPU通过两条总线来实现对UFS的控制和数据交互,分别是APB和AXI总线。在下图中,左边的UFSHCI 寄存器,通过APB总线进行访问,其地址空间通过ioremap在内核申请虚拟地址空间即可被CPU直接访问;右边方框则是数据部分,有dma_alloc接口进行申请,通过AXI总线进行访问。
UFS Host基础特性分析 -- 硬件部分_第4张图片

    UFS host驱动通过分配和使用UTRD描述符和UTMRD描述符来与host控制器硬件通信。host控制器系统内存可以同时接受多达32个UTRD描述符和8个UTMRD描述符。每个UTRD描述符指向了一块内存区域,这块内存区域包含:命令UPIU(UCD),response UPIU,并包含了一块物理区域描述符表(PRDT),表中每一项指向一个数据buffer,存储需要传输的数据(command upiu)或要接收的数据(response upiu)。UCD的command和response将被分别组装成UPIU并通过UTP层进行传输。上图所示的数据结构为:

  • 左侧UFSHCI寄存器分布分成6块,Host Controller capability、Interrupt and host status、UTP Transfer Request、UTP Task Managerment Request、UIC Command、Vendor Specific。
  • UTP Transfer Request这一块的寄存器提供了指向UTRD(UTP Transfer Request Decriptor)list的指针地址。
  • UTRD有0~31个,即32个,意味着UFS拥有32个slot,SOC层可以同时接收32个请求。32个UTRD是物理连续的,这点很重要,因为连续,所以可以直接根据slot序号直接获取到UTRD。
  • UTRD里面包含了UPIU的地址,UPIU的size是固定的,否则AXI怎么能准确的把response信息填充到对应请求的Response UPIU里面呢。同样Response UPIU数据格式固定。
  • 如果UTRD里面有数据读写需求,那么需要填充PRDT(Physical Region Description Table)。PRDT指向的Data buffer不是连续的,而是离散状,因为PRDT是个表,所以这个表里面可以存放很多不连续的Data buffer地址,对应一个个的segment。
  • 1个Data buffer的size最大不能超过64K,这个是由芯片内部决定的,因为这个size涉及到一个数据包单元DATA OUT/IN UPIU的长度,也是一次底层数据包传输的长度,但是PRDT表的个数可以自己确定,一般软件定义为128个,那么一个UTRD也就是一个请求可以最大传输64K * 128 = 8M。在实际应用中一个读写请求如果size过大,如1000M,则会被上层切割,比如1M,所以底层的size是足够的。
  • .除了32个UTRD外还有8个UTMR,顾名思义,这个是任务管理请求,对上面的32个请求的状态进行查询,如果说32个UTRD理解为工人,这8个UTMD可以理解监工,查询是否工作完成,如果工作在预期时间内没有完成的也可以执行abort操作,然后重新下发请求或者进行复位器件等相关的异常处理。

UFS Host基础特性分析 -- 硬件部分_第5张图片
    上面的寄存器CPU可以通过APB总线直接读写,而UniPro的寄存器则可以通过上面的四个UCI Command寄存器完成。寄存器就是芯片的API接口,通过这4个UIC寄存器就可以实现对UniPro各层和MPHY的所有寄存器的读写操作。

UFS Host Controller

UFS系统框图

UFS Host基础特性分析 -- 硬件部分_第6张图片
    UFS控制器有如下的接口:

  • AHB Interface:用于软件访问、控制器编程和初始化;它作为一个AHB从机连接在芯片的配置NOC上,以75MHz的频率工作。
  • AXI master Interface:用于与系统内存之间的数据传输;它作为一个AHB主机连接在系统的NOC上,以200MHz的频率工作。
        UFS host控制器功能:
  • 从芯片的全局时钟控制器(GCC)接收时钟。
  • 维护连接到应用程序 QGIC 的专用中断输出线。
  • 通过标准参考 M-PHY 模块接口 (RMMI) 连接到 M-PHY。M-PHY 有一个到 UFS 设备的差分串行接口。这作为双单工 Tx/Rx
    每个方向有两条道的接口。
UFS controller wrapper

UFS Host基础特性分析 -- 硬件部分_第7张图片
    UTP 控制器为硬件和软件实现了标准的主机控制器接口 (HCI)。

  • UTP控制器在输出数据传输时工作:
    • 接受来自软件的命令
    • 生成输出的UPIU传输事务
    • 通过 CPort 将UPIU发送到 UniPro 控制器
  • UTP控制器在输入数据传输时工作:
    • 通过 CPort 从 UniPro 控制器接收输入的 UPIU 事务
      -通过 HCI 将接收到的数据移动到指定的系统内存中的缓冲区

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