9.1 概述


Figure 5.1 shows the Universal Flash Storage (UFS) top level architecture.
UniPro:unied protocol
Application Layer和UTP:遵守SCSI规范
M-PHY和UniPro:遵守MIPI标准

Definition
CPort:A CPort is a Service Access Point on the UniPro Transport Layer (L4) within a Device that is used for connection-oriented data transmission.CPort是device UniPro传输层(L4)上的服务接入点,用于面向连接的数据传输。
Service Access Point (SAP): The point at which Layer -(x) services are provided by Layer-(x) to Layer-x+1).Layer-(x)向Layer-x+1提供Layer-(x)服务的点。
End-to-End Flow Control (E2E FC):A credit- based flow control method that is implemented in theTransport Layer (L4)of the UniPro stack on a Connection .在UniPro栈的传输层(L4)上实现的基于信用的流量控制方法
Flow Control : The process of managing the flow of data from one entity to another to ensure that the receiving entity can handle all of the incoming data .管理从一个实体到另一个实体的数据流的过程,以确保接收实体能处理所有传入的数据
PHY Adapter:A protocol layer that converts symbols from a nAPPI to the signals used by a specific PHY PPI.PHY适配器:将nAPPI的符号转换为特定PHY PPI所使用的信号的协议层。
lane:Consists of two complementary Lane Modules communicating via two-line, point-to-point Lane Interconnects . Sometimes Lane is also used to denote interconnect only .A Lane can be used for either Dataor Clock signal transmission .由两个互补的通道模块组成,通过两线,点对点通道互连进行通信。 有时Lane也仅用于表示互连。一条Lane可用于数据或时钟信号的传输。
Traffic Class:A priority equivalence class of Messages/Packets/Frames.Frames from a higher-priorityTraffic Class are allowed to preempt lower-priority Traffic Classes .消息/包/帧的优先级等价类。 来自高优先级流类的帧被允许抢占低优先级流类
Fragment :A portion of a UniPro Message that can be passed to,orreceivedby,a CPort. Received Fragments are not generally identical to transmitted Fragments .UniPro消息的一部分,可以传递给CPort或由CPort接收。 接收的片通常与传输的片不同。
MTU:Maximum Transmission Unit,最大传输单元。MTU其实就是在每一个节点的管控值,只要是大于这个值的数据帧,要么选择分片,要么直接丢弃。

9.2 结构模型

Figure 9.1 — UniPro internal layering view (a) and UniPro Black Box view (b)
UniPro充当UFS的数据链路层,负责host和device的连接。UniPro不仅定义了数据链路层,它本是也是一个比较完整的协议栈,如Figure 9.1(a):
传输层(L4)支持多设备之间的双向连接,但UFS只支持CPort0
网络层(L3)支持通过设备ID寻址多达128个设备,但由于UFS是点到点传输,所以无需网络层;
数据链路层(L2)支持流控、CRC生成和校验、重传机制等,UFS利用了UniPro的数据链路层为主机和设备之间通讯提供可靠的连接。
物理层(M-PHY)使用8/10编码、差分信号串行数据传输。数据传输分高低速模式,每种模式下又有几种不同的速度档。
在UFS的背景下,整个UniPro协议堆栈应尽可能被视为一个黑盒模型,如Figure 9.1(b);

9.3 UniPro/UFS传输协议接口(Data Plane)

UniPro将位于UniPro传输层L4的CPorts作为概念接口提供给UniPro之上的应用层或协议层,从而与UTP通信,可将CPorts视为UniPro T_CO_SAP的实例;MIPI中不定义T_CO_SAP的物理实现,使用者可自由选择。例如,更高UniPro层的软件实现,基于硬件实现每个CPort的缓冲或每个CPort的DMA通道等。
服务访问点(SAP)提供服务原语(SP),UFS的应用层或协议层通过规范使用SAP从而去定义它们的交互。
core data transfer service primitives
(1)T_CO_DATA.req( MessageFragment, EOM)
UniPro服务端发送消息片段;当UFS层请求UIC层传输数据时,UFS层应确保上述数据的最后一个片段和EOM消息结束标志一起传输。
(2)T_CO_DATA.cnf_L( L4 CPort Result Code )
UniPro报告消息(片段)传输请求的结果;
(3)T_CO_DATA.ind( MessageFragment, EOM, SOM, MsgStatus )
UniPro向服务端发送接收到的消息(片段);
EOM:通知服务用户这是最后的消息片段
SOM:通知服务用户这是第一个消息片段
(4)T_CO_DATA.rsp_L( )
UniPro的服务端报告接收下一个消息(片段)的准备情况;

9.3.1 Flow control

UFS不会利用UniPro的端到端流量控制特性进行数据通信。因为UFS传输层已经通过严格的客户端-服务器通信模型、带标签的命令队列和数据传输的设备端节流避免了任何溢出。因此,UFS将不会使用UniPro的T_CO_FLOWCONTROL服务原语,不需要它的实现。
9.3.2 Object sizes
一个UniPro消息可以是任何大小,其内容不会被UniPro以任何方式解释。
Message Fragment消息片段是UniPro消息的一部分,可以传递给CPort或由CPort接收。
接收到的分片通常与发送出去的分片不同。消息片段可能携带EOM,也可能不携带,而UFS请求UIC的数据而发送出去的消息的最后一个片段是一定要有EOM的
Message Fragment应该有最大的T_MTU字节,以避免在更低层中进一步分裂。

9.4 UniPro/UFS控制接口(Control Plane)

UFS DME与UniPro的每层都留有SAP接口(Service Access Point),通过SAP提供的服务原语(SP),DME可以访问每个layer的控制和状态参数,管理它们的power模式,并且可以访问、控制对端设备的UniPro模块。
DME配置原语
DME_GET / DME_SET
提供对本地UniPort的UniPro和M-PHY的所有属性的读/写访问
DME_PEER_GET (optional) / DME_PEER_SET (optional)
提供对对端UniPort的UniPro和M-PHY的所有属性的读/写访问
UniPro可以去设置属性的顺序,所以UFS的应用应该保持DME配置原语的调用顺序。如果由UFS本身内部生成,则DME配置原语应按照定义的正确顺序发出。
DME控制原语:
控制原语较多,此处不加描述,如若感兴趣,请查看原文档。

9.5 地址映射

UniPro有两个级别的寻址,用来控制远程UniPro实体之间的信息交换。
Network Layer (L3): Device ID
在建立连接期间,创建连接的一方使用此值选择连接的远程端上的物理实体。 在这个连接的生命周期内,DeviceID应该被视为静态的(不变的)。
Transport Layer (L4): CPort ID
选择内置在远程目标UniPro设备的逻辑实体。 在这个连接的生命周期内,CPort ID应该被视为静态的(不变的)。

UFS采用基于Nexus定义的SCSI架构模型的寻址表示法。
启动程序端口标识符 I
目标端口标识符 T
逻辑单元编号 L
命令标识符 Q
在一个特定的逻辑单元(L)中唯一地定义了一个特定的命令标识符(Q)连接到特定的设备目标端口标识符(T),通过特定的主机启动程序端口标识符(I)访问
UFS互连层地址(设备ID和CPort ID)只与Nexus的I_T部分相关。这个标准只需要并使用一个UniPro CPort在设备端和主机端。

映射规则:
UFS启动器端口标识符(I)和UFS目标端口标识符(T)为16bit并且
UFS启动器/目标端口标识符应该包含UFS端口的实体(主机或设备)的UniPro网络层Device ID
host的UniPro网络层Device ID重置值应为0
device的UniPro网络层Device ID重置值应为1
UFS启动器/目标端口标识符包含UniPro传输层CPort ID,表示UFS端口使用它来与远程实体通信
host的UniPro传输层CPort ID重置值应为0
device的UniPro传输层CPort ID重置值应为0
UFS启动器端口标识符应包含启动器ID (IID)。

UFS host和device的UTP层之间的单一UniPro连接可以由上面的UFS I_T Nexus唯一标识;
UFS I_T Nexus元素(Device ID和CPort ID)可以在重置后由host使用DME服务原语DME_SET/DME_PEER_SET修改;
host端CPort的所有属性(包括,例如,“T_ConnectionState”)都可以在重置后由host使用DME_GET和DME_SET原语检查和修改 ;
Device端CPort的所有属性(包括,例如,“T_ConnectionState”)可以在重置后由主机使用DME_PEER_GET和DME_PEER_SET原语检查和修改。

9.6 UniPro的选项和可调参数

MIPI UniPro被设计成一个通用的协议规范,因此有几个选项和参数,像UFS这样的应用程序应该为其专门的UniPro使用场景指定。 UniPro规范的附录E详细说明了所有可能的选择。 本章的其余部分定义了这个版本的UFS标准对这些选项和参数的具体要求。 它们适用于UFS主机端UniPro实现,如果没有明确说明,也适用于UFS设备端UniPro实现。

9.6.1 UniPro PHY适配器(L1.5)
物理适配层,用于检测双向Lane通路的个数,并提供软件支持。允许访问对端L1.5层的控制参数和状态,并可以通过原子操作改变对端Power Mode。L1.5层的数据以Symbol为单位的,每个symbol有17个bits,包含有两个Byte和一个control bit (bit16)。Control bit=1,表明后两个bytes是控制命令;Control bit=0,后两个bytes是data payload。

在UFS系统中,主机和设备使用相同的参考时钟,因此没有使用跳过symbols插入功能,其实现是可选的.
UFS设备应支持以下物理通道连接:
one lane:
Tx物理通道0连接到Rx物理通道0
two lane:
Tx物理通道0连接到Rx物理通道0
Tx物理通道1连接到Rx物理通道1

9.6.2 UniPro 数据链路层(L2)
支持流控、CRC生成和校验、重传机制等,UFS利用了UniPro的数据链路层为主机和设备之间通讯提供可靠的连接。其中采用ECC保证接收数据的准确性,接收端也要留有足够的buffer来缓存接收到的数据。一旦接收失败,发送端必须重新发送一次。L2层的数据单位是帧Frame,在原有L1层的基础上,把独立的symbol打包。每个Frame最多可以打包144个 symbol,并在Frame的头尾处各添加上Header和Tailer之后,附上16bits ECC来侦查纠错。
这层有个比较重要的概念是TC(Traffic Class),UFS支持两种优先级的Data Frame TC0和TC1。TC1的优先级高于TC0,绝大多数的数据都是在TC0这个级别传递的,紧急的数据通过TC1来传递。TC1可以中断、抢占正在发送的TC0的数据发送。

应该实现TC0;
TC1:Low Lantency 低延时是非必须的;
发送端的抢占能力是非必须的;
应该提供至少DL_MTU bytes的Tx和Rx缓冲;
支持L2帧最大尺寸的传输和接收(DL_MTU);

9.6.3 UniPro 网络层(L3)
支持通过设备ID寻址多达128个设备,但由于UFS是点到点传输,所以无需网络层;L3的数据的单位是package,在层2的Frame的基础上增加了7bits的shorter-header,用来标识数据route的目标地址。

支持L3包最大尺寸的传输和接收(N_MTU);

9.6.4 UniPro 传输层(L4)
支持多设备之间的双向连接,但UFS只支持CPort0。由于基本通信服务已经在底层处理的差不多了,所以传输层是相对比较简单的一层,它提供对多device和多client的支持。L4层的数据的单位是segment,在package的基础上增加了5bit的”Cport” identifier,我们在这里可以把它看做是UFS的sub-address。

UFS主机和UFS设备应实现至少1个CPort(这个标准只需要和使用1个CPort在链路的两边);
如果实现了多个CPort, UFS不会强制要求任何超过UniPro默认的CPort仲裁方案;
应该支持UniPro Test Feature;
UFS不要求UniPro端到端流控制机制 ;
UFS 不使用 “Controlled Segment Dropping”(CSD),CSD shall be disabled;
UFS不使用 “CPort Safety Valve” (CSV), CSV shall be disabled;
支持L4段最大尺寸的传输和接收(T_MTU);

9.6.5 UniProDME
DME服务原语提供了:
检索或设置属性
控制整个UniPro协议栈的重置和运行模式

UFS Hosts
应该实现DME_PEER_GET原语和DME_PEER_SET原语,它们在[MIPI-UniPro]中是可选的

UFS Devices
不能使用DME_SET原语来修改本地的PA_PWRMode属性
应仅在以下情况下使用DME_RESET:在上电或硬件复位时,或在DME_LINKLOST.ind后,
shall not use the following primitives:DME_PEER_GET.req, DME_PEER_SET.req,详见协议文档;

9.6.6 UniPro Attributes
为了优化UFS引导过程,UFS UIC实现应该使用MIPI UniPro规范定义的所有UniPro属性的默认重置值。 例外情况是,CPort 0的Network Layer Attributes和specific Attributes的重置值应反映上述章节中定义的设置,因此应包含表9.2所示的值。

Note:如有错误,敬请斧正;如有遗漏,欢迎补充。

UFS UIC Layer: MIPI UNIPRO相关推荐

  1. UFS 5 - UFS UIC Layer: MIPI M-PHY

    UFS 5 - UFS UIC Layer: MIPI M-PHY 1 Termination 2 Drive Levels 3 PHY State machine 4 HS Burst 4.1 HS ...

  2. UFS 11 - UFS RPMB分区功能验证

    UFS 11 - UFS RPMB分区功能验证 1 ufs-utils下载和编译 1.1 ufs-utils开源代码下载 1.2 编译 2 ufs-utils工具使用 2.1 ufs-utils -- ...

  3. UFS 1-UFS架构简介1

    UFS 1-UFS架构简介 1 UFS是什么? 1.1 UFS 1.2 一般特征 1.2.1 Target performance 1.2.2 Target host applications 1.2 ...

  4. ufs2.2 协议扫盲(三)

    五.UFS ARCHITECTURE OVERVIEW UFS communication is a layered communication architecture. It is based o ...

  5. 蛋蛋读UFS之二:UFS协议栈

    转自:蛋蛋读UFS之二:UFS协议栈 任何一种接口或者协议,都是由一个完整的协议栈组成的.UFS也不例外. UFS定义了一个完整的协议栈.从上到下,依次为应用层.传输层.数据链路层和物理层.UFS使用 ...

  6. UFS3.0协议学习Note(一)-什么是UFS

    愿每一个认真学习的人都能拥有快乐的明天! List 一.什么是UFS 二.UFS接口 三.协议架构 四.UFS封装 一.什么是UFS UFS = Universal Flash Storage(通用闪 ...

  7. 蛋蛋读UFS之十:UFS电源管理

    转自:蛋蛋读UFS之十:UFS电源管理 UFS是手机存储设备,因此对功耗要求很高.我们来看看UFS的电源管理. 三个供电电压,VCC,VCCQ和VCCQ2,分别给UFS设备模块供电.UFS设备主要包括 ...

  8. UFS详细介绍---终章

    UFS详细介绍-终章 UNIVERSAL FLASH STORAGE (UFS),通用闪存存储器.目前最新的标准是UFS4.0:UFS的出现是因为替代eMMC产品的,但是因为价格等,目前没办法做到完全 ...

  9. 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

    文/黑猫学长 1 作者想说 笔者本人从事于存储芯片行业多年,对eMMC/UFS/SD等芯片有深入研究,协议尤甚.而今看来,UFS协议在整个存储产品中(包括U盘.SPI.SD卡,NM卡.emmc.SSD ...

  10. mipi白皮书 在5G下 IOT

    5G下在IOT中的mipi 背景 mipi 5G中优势 5G手机中的mipi mipi 背景 2020年 是5G元年,很多行业因5g重新定义.显示行业也不例外,针对5G,mipi联盟发表了对应的白皮书 ...

最新文章

  1. 面试时怎么设计测试用例
  2. win2008server设置问题
  3. 为什么很多优秀的人,把闹钟定在早晨5:57?
  4. 拼图游戏_我最喜欢的Java拼图2 + 1 = 4
  5. ABP VNext从单体切换到微服务
  6. 云计算及应用课程知识整理
  7. 华为服务器参数配置文件,最实用的华为配置基础手册.doc
  8. Python —— any()函数和all()函数
  9. r语言pls分析_零基础学习R语言分析GEO
  10. tensorflow精进之路(十七)——python3网络爬虫(上)
  11. SOA的关键是什么?
  12. 《C语言程序设计(第五版)》---谭浩强——习题解答第一章
  13. Spring事务管理
  14. MariaDB 安装
  15. vscode如何设置大小写转换的快捷键
  16. 微博上面好看的跳舞美女蛮多的,【Python爬虫】采集微博视频数据(附代完整代码)
  17. php收银系统如何连接pos机,收银pos机怎么连接?
  18. React 使用阿里巴巴矢量图标库管理Icon图标的Icon-antd用法
  19. 通用Excel数据导入功能模板
  20. 仿百度联想词下拉列表,键盘上下键选值

热门文章

  1. LeetCode第 252 场周赛 之5187. 收集足够苹果的最小花园周长
  2. 计算机组成原理复习(第二版)唐朔飞编著(转载请注明出处---https://www.cnblogs.com/qingl)...
  3. 英语口语8级是这么炼成的!
  4. 6 观察者模式off方法
  5. 关于iphone备份在c盘之后无法恢复备份的问题
  6. java 计算年龄_Java 根据出生日期计算年龄
  7. Bada学习-(十一)文件系统
  8. win7 计算机登录用户名和密码忘记,电脑win7登陆密码忘记了怎么办_win7忘记登陆密码如何进入-win7之家...
  9. 爬虫-3-requests和代理
  10. git 解决悬空文件问题