0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UFS定义一个完整的协议栈

SSDFans 来源:未知 作者:李倩 2018-06-06 15:55 次阅读

任何一种接口或者协议,都是由一个完整的协议栈组成的。UFS也不例外。

UFS定义了一个完整的协议栈。从上到下,依次为应用层、传输层、数据链路层和物理层。UFS使用MIPI(Mobile Industry Processor Interface ,移动产业处理器接口)联盟的UniPro作为数据链路层和MIPI的M-PHY作为物理层,两者合起来称之为互连层(UFS InterConnect Layer)。与之相比,PCIe接口只定义了下三层(如下图),没有应用层。只有加上上层NVMe,才构成一个完整的SSD通讯协议。

目前UFS没有定义自己的命令(没有UFS Native Command Set),使用的命令是简化的SCSI命令(基于SBC和SPC),由INCITS T10组织定义的。关于SCSI相关协议,大家可以参看相应的spec。

四层中,只有传输层是JEDEC自己定义的。所以,UFS四层中有三层是别人的,命令层是T10的,数据链路层和物理层是MIPI的,传输层是JEDEC自己的。JEDEC移花接木的水平真是高。不由的想到一个广告:“我们不生产水,我们只是大自然的搬运工!”

UFS至今已经有五个版本,每层的版本也不尽相同。

我们依次来看看这几层。

UFS应用层

应用层包括UFS命令集、设备管理器(Device Manager)和任务管理器(Task Manager)。应用层处于整个协议栈的最高层,所有的命令或者请求都来源于该层。它是最高统帅,所有的战术和策略都是它制定的,然后真正去冲锋陷阵的是将军和士兵(应用层下面的传输层和内联层)。

命令集

如前所述,目前UFS没有定义自己的命令,使用简化的SCSI命令。

其中包括一些SPC(SCSI Primary Commands)命令:

和一些SBC(SCSI Block Commands)命令:

UFS除了定义基本的读写命令,也有trim命令(UNMAP),还有其它一些命令。我们不打算深入其中。

设备管理器

顾名思义,设备管理器用以管理UFS设备。

设备管理器有两个功能:一是处理设备级操作,二是管理设备级配置。

前者包括管理设备功耗、设置数据传输相关参数、使能/禁止设备后台操作(Background Operation)以及其它设备相关操作。

后者通过维护和存储一系列的描述符(Descriptor,后面有章节介绍),通过诸如Query请求修改或获取设备的配置信息

从UFS层次架构图来看,设备管理器既可以通过下层的传输层为其服务(通过UDM_SAP):

设备管理器也可以绕过传输层(通过UIO_SAP),直接管理与控制互联层:

设备管理器可以通过互联层提供的接口(UIO_SAP),使用一系列的原语(Primitive)直接控制操作互联层(UIC)。这些原语包括重启设备、重启互联层、让物理层进入和退出休眠模式(Hibernate)等原语。

总之,设备管理器既可以走常规渠道(通过传输层,以数据包UPIU的形式),也可以走快速通道(发送UIC能理解的命令,原语的形式)管理和操作设备。

任务管理器

任务管理器用以管理命令队列中的命令。比如任务管理器可以发Abort命令,终止之前发下去的命令。它也可以清空命令队列中的所有命令。具体如下:

当某个命令超时时,系统可能发Abort命令把这个命令终止掉。

UFS传输层

传输层为它上面的应用层服务。当传输层收到应用层命令或者请求后,它会产生UPIU(UFS Protocol Information Unit),把命令块或者请求封装成固定格式的数据结构,然后交由下层传到接收端的传输层。和命令相关的数据、状态,也有相应的UPIU数据包。UPIU是主机和设备进行信息交换的基本数据单元。

UPIU,和SATA中的FIS,PCIe中的TLP,是同一层次的东西,上层命令或者数据都是通过此类数据包封装起来,然后传输到接收端。

如果说应用层是统帅的话,传输层可以认为是将军了。

下一章节为专门介绍UPIU,这里就不细讲。

UFS互联层

UFS互联层包括MIPI UniPro和M-PHY,分别充当UFS数据链路层和物理层的角色。数据链路层负责主机和设备的链接,物理层传输实实在在的物理信号

UniPro其实不仅仅只定义了数据链路层,它本是也是一个比较完整的协议栈,如下图所示:

传输层(L4)支持多设备之间的双向连接,但UFS只支持CPort0;网络层(L3)支持通过设备ID寻址多达128个设备,但由于UFS是点到点传输,所以无需网络层;数据链路层(L2)支持流控、CRC生成和校验、重传机制等,UFS利用了UniPro的数据链路层为主机和设备之间通讯提供可靠的连接。

物理层(M-PHY)使用8/10编码、差分信号串行数据传输。数据传输分高低速模式,每种模式下又有几种不同的速度档。

关于MIPI UniPro和M-PHY,读者可以看相关的spec,这里不细讲。

本章对UFS协议栈做了简单介绍,下一章将会对传输层发起的UPIU进行详细的介绍。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2685

    浏览量

    115424
  • 协议栈
    +关注

    关注

    2

    文章

    129

    浏览量

    33428
  • UFS
    UFS
    +关注

    关注

    6

    文章

    101

    浏览量

    23546

原文标题:蛋蛋读UFS之二:UFS协议栈

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    于移动存储设备,例如USB闪存驱动器、SD存储卡和固态硬盘等。   3. UFS(Universal Flash Storage)   3.1 用途特性   UFS种新型的闪存标准,旨在提供高性能
    发表于 04-03 12:05

    如何解决蓝牙协议被锁问题?

    如何解决蓝牙协议被锁问题
    发表于 03-21 08:21

    ufs3.1和ufs4.0有什么区别?ufs4.0和ufs3.1实际使用区别

    ufs3.1和ufs4.0有什么区别?ufs4.0和ufs3.1实际使用区别  UFS是一种高速、节能、可靠的非易失性存储器,旨在提供更快的
    的头像 发表于 01-17 11:05 7474次阅读

    SimpliciTI这个无线协议的性能咋样?能接多少节点?

    SimpliciTI这个无线协议的性能咋样? 能接多少节点,多节点并发,这个延迟多少????
    发表于 11-10 08:07

    IIC协议中是怎么确定主和从的?

    是通过什么方式来判断设备是主还是从
    发表于 10-10 06:01

    STM32WB产品详解及FUS无线协议升级

    STM32WB产品详解及FUS无线协议升级2.4GHz无线双核STM32WB, 采用SoC单芯片设计,支持多协议射频。
    发表于 09-06 06:35

    使用agile_modbus主机协议出现丢包是怎么回事?

    使用agile_modbus主机协议,接10从机,测试发现从机接的越多,丢包率越高。实际测试10从机,每个从机间隔2s读次,半个小时
    发表于 09-03 14:38

    TCP IP协议次课开启你的网络之门 - 第20节 #硬声创作季

    网络协议TCP协议
    充八万
    发布于 :2023年08月17日 14:30:19

    TCP IP协议次课开启你的网络之门 - 第19节 #硬声创作季

    网络协议TCP协议
    充八万
    发布于 :2023年08月17日 14:29:29

    TCP IP协议次课开启你的网络之门 - 第18节 #硬声创作季

    网络协议TCP协议
    充八万
    发布于 :2023年08月17日 14:28:39

    TCP IP协议次课开启你的网络之门 - 第17节 #硬声创作季

    网络协议TCP协议
    充八万
    发布于 :2023年08月17日 14:27:49

    TCP IP协议次课开启你的网络之门 - 第16节 #硬声创作季

    网络协议TCP协议
    充八万
    发布于 :2023年08月17日 14:26:59

    STM32WB BLE协议编程指南

    本文档的主要目的是为开发人员提供有关如何使用 STM32WB BLE 协议 API 和相关事件回调开发低功耗蓝牙(BLE)应用的些参考编程指南。本文档介绍了允许访问 STM32WB 片上系统所提
    发表于 08-14 10:13

    ufs4.0和3.1差别大吗 ufs40对比ufs3.1提升多少

    UFS(Universal Flash Storage)是一种用于移动设备存储的闪存存储标准。UFS 3.1和UFS 4.0是UFS标准的不同版本,它们之间有一些显著的差异。
    的头像 发表于 07-18 14:57 6w次阅读

    如何使用测试套件解决JEDEC-UFS堆栈验证的7大挑战

    的堆栈已经发展势头强劲,并提供了越来越多的新应用程序来利用 UFS 堆栈。UFS协议由于其更高的性能、效率、并发多任务处理、使用完整带宽、安全性和可靠性以及更长的电源寿命而迅速被采用
    的头像 发表于 05-26 15:13 704次阅读
    如何使用测试套件解决JEDEC-<b class='flag-5'>UFS</b>堆栈验证的7大挑战