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
    +关注

    关注

    21

    文章

    2861

    浏览量

    117395
  • 协议栈
    +关注

    关注

    2

    文章

    141

    浏览量

    33629
  • UFS
    UFS
    +关注

    关注

    6

    文章

    104

    浏览量

    24044

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

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

收藏 人收藏

    评论

    相关推荐

    EMMC与UFS的技术对比

    UFS的技术对比: 、基本概述 技术 eMMC UFS 定义 嵌入式多媒体卡,将存储器芯片和控制器集成在起 通用闪存存储,
    的头像 发表于 12-25 09:44 59次阅读

    hart协议协议结构分析

    的智能化水平,同时保持与现有模拟系统的兼容性。 2. HART协议概述 HART协议可以分为几个层次,每个层次负责不同的功能: 2.1 物理层(Physical Layer) 物理
    的头像 发表于 12-02 09:43 213次阅读

    明达技术为您剖析软&硬协议

    在当今这个科技日新月异的时代,每一个细微之处都蕴含着无限可能。今天,让我们同深入探索网络协议领域的两大核心实现方式——软协议
    的头像 发表于 11-23 16:28 109次阅读
    明达技术为您剖析软&amp;硬<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    CC256x TI蓝牙协议基础HFGAGDemo应用

    电子发烧友网站提供《CC256x TI蓝牙协议基础HFGAGDemo应用.pdf》资料免费下载
    发表于 11-11 15:18 2次下载
    CC256x TI蓝牙<b class='flag-5'>协议</b><b class='flag-5'>栈</b>基础HFGAGDemo应用

    Linux网络协议的实现

    网络协议是操作系统核心的重要组成部分,负责管理网络通信中的数据包处理。在 Linux 操作系统中,网络协议
    的头像 发表于 09-10 09:51 306次阅读
    Linux网络<b class='flag-5'>协议</b><b class='flag-5'>栈</b>的实现

    TCP/IP协议的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 4次下载

    LwIP协议源码详解—TCP/IP协议的实现

    电子发烧友网站提供《LwIP协议源码详解—TCP/IP协议的实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载

    基于MM32F5270的Ethernet实现LwIP协议移植

    LwIP是轻量化的TCP/IP协议,由瑞典计算机科学院(SICS)的Adam Dunkels 开发的小型开源的TCP/IP协议。LwI
    的头像 发表于 06-21 10:28 1181次阅读
    基于MM32F5270的Ethernet实现LwIP<b class='flag-5'>协议</b><b class='flag-5'>栈</b>移植

    Microchip TCP/IP 协议应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 1次下载

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

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

    ethernetif_input和tcpip协议线程的作用

    tcpip协议线程是lwIP协议的核心线程,负责处理TCP/IP协议的各种功能,包括TCP
    的头像 发表于 03-20 10:01 1327次阅读

    PROFINET协议通信技术介绍

    PROFINET协议是PROFINET通信协议的实现基础,它由多个层次组成,每个层次都有特定的功能和作用。
    的头像 发表于 02-03 16:22 2465次阅读

    使用LwIP协议浅析实战分析(i.MX RT)

    LWIP协议与网络分层 LwIP(Light weight IP),是种轻量化且开源的TCP/IP协议,它可以在有限的RAM和ROM条件下,实现
    的头像 发表于 02-02 17:05 1725次阅读
    使用LwIP<b class='flag-5'>协议</b><b class='flag-5'>栈</b>浅析实战分析(i.MX RT)

    通信网络协议之UDP协议技术解析

    在通常的网络协议中,TCP/IP协议常见的示例,其中UDP和TCP都是传输层
    发表于 02-01 11:00 976次阅读
    通信网络<b class='flag-5'>协议</b><b class='flag-5'>栈</b>之UDP<b class='flag-5'>协议</b>技术解析

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

    ufs3.1和ufs4.0有什么区别?ufs4.0和ufs3.1实际使用区别  UFS种高速
    的头像 发表于 01-17 11:05 3.1w次阅读