系列文章目录
文章目录
系列文章目录
前言
九、UFS UIC Layer:MIPI UNIRPO
9.1 Overview
9.2 Architectural Model
9.3 UniPro/UFS Transport Protocol Interface (Data Plane)
9.3.1 Flow control
9.3.2 Object sizes
9.4 UniPro/UFS Control Interface (Control Plane)
9.5 UniPro/UFS Transport Protocol Address Mapping
9.6 Options and Tunable Parameters of UniPro(UniPro 的选项及可调节参数)
9.6.1 UniPro PHY Adapter
9.6.2 UniPro Data Link Layer
9.6.3 UniPro Network Layer
9.6.4 UniPro Transport Layer
9.6.5 UniPro Device Management Entity Transport Layer
9.6.6 UniPro Attributes
前言
提示:1~4章有兴趣自己查询英文文档,本文就不具体描述,直接进去正题,从第5章开始;。 绿色:重点语句,红色:重点词汇,蓝色:作者根据文章内容进行的相关解析,仅供参考。如果对您有一点帮助,帮点个赞吧!
九、UFS UIC Layer:MIPI UNIRPO
9.1 Overview
UFS 基于 MIPI 统一协议(UniPro)构建其互连(服务交付子系统),以向 UFS 传输协议(UTP)层提供基本的传输能力。在数据平面,UTP 和 UniPro 通过 UniPro 传输层 C 端口(T_CO_SAPs)的服务原语进行通信。UFS 的更高层协议功能与 UniPro 之间的控制平面交互(例如,链路的发现、枚举和配置)是通过 UniPro 规范中定义的设备管理实体服务原语来实现的。
9.2 Architectural Model
UniPro 在内部由若干个子层组成,这些子层均按照 MIPI UniPro 规范 [MIPI-UniPro] 进行了明确定义。在 UFS 的背景下,整个 UniPro 协议栈应尽可能地被视为一个黑盒模型(见图 9.1)。因此,以下各部分仅:
1、明确 UFS 与 UniPro 之间所需接口的数量及类型
2、明确 UFS 与 UniPro 之间所需接口的数量及类型
3、选择 UniPro 规范中的可选功能和可定义属性

9.3 UniPro/UFS Transport Protocol Interface (Data Plane)
UniPro 提供了 CPorts 作为与 UniPro 之上应用程序或协议层的逻辑接口。CPorts 可以被视为根据 UniPro 规范第 8.8 节中所规定的 T_CO_SAP 的实例化。T_CO_SAP 的物理实现并未在 MIPI 中明确定义,因为实现者应能够自由选择,例如,更高层级的 UniPro 层的软件实现、基于每个 CPort 的缓冲区的硬件实现或者每个 CPort 的 DMA 通道等。
服务接入点(SAP)提供服务原语(SP),这些原语可被应用程序或协议的规范作为 UniPro 上的用户功能服务(UFS)来使用,以定义它们之间的交互。有关协议规范中 SAP/SP 概念的更多信息,请参阅 UniPro 规范的附录 C。
T_CO_SAP 提供了以下核心数据传输服务原语(请参阅 UniPro 规范,8.8.1 节):
T_CO_SAP 提供了以下核心数据传输服务原语(请参阅 UniPro 规范,8.8.1 节):
●T_CO_DATA.req(消息片段,结束标记)
○由“统一服务提供商”服务用户发出的消息(片段)
注意:每当 UFS 层请求 UIC 层传输数据时,UFS 层必须确保所述数据的最后一个片段在传输时会带有 EOM 标志。确保这种行为的一种方法是,UFS 层仅在每个原子协议数据单元(例如,每次 UFS 传输层“UPIU”)中调用此 UIC 数据传输服务原语,并始终将 EOM 标志设置为“真”。
●T_CO_DATA.cnf_L( L4CPortResultCode )
○由 UniPro 发布,用于报告消息(片段)传输请求的结果
●T_CO_DATA.ind(消息片段、结束标记、开始标记、消息状态)
○由 UniPro 发出,以将接收到的消息(片段)发送给服务用户
○EOM 向服务使用者告知,这是最后一个消息片段(即“消息结束”)
○SOM 向服务使用者告知,这是第一个消息片段(消息起始部分)
●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 不会对其内容进行任何解读。消息可以以多个消息片段的形式从 UniPro 发送或接收。
消息片段是指消息的一部分,它可以传递给或由 CPort 接收。接收的分段通常与传输的分段并不完全相同。消息分段可能或可能不带有“消息结束”(EoM)标志。
一个消息片段的最大长度应为 T_MTU 字节,以避免在更低层级出现进一步的分割。
9.4 UniPro/UFS Control Interface (Control Plane)
UniPro 通过服务接入点(DME SAP)提供对其设备管理实体(DME)的访问,同时向 UFS 公开以下服务,从而实现对 UniPro 的属性和行为的控制:
DME Configuration Primitives
●DME_POWERON (optional) / DME_POWEROFF (optional)
○允许对所有 UniPro 层(从 L1.5 到 L4)进行上电或断电操作
●DME_ENABLE
○允许启用整个本地 UniPro 系统(UniPro L1.5 至 L4)
●DME_RESET
○ 允许重置整个本地 UniPro 系统(UniPro L1.5 至 L4)
●DME_ENDPOINTRESET
○ 允许向链路端点发送端点重置请求命令
●DME_LINKSTARTUP
○允许本地启动链接,并告知有关远程链接启动调用的信息
●DME_HIBERNATE_ENTER/DME_HIBERNATE_NEXT
○允许将整个“链接”设备置于休眠模式,并使其重新启动
➢影响本地以及相邻的 UniPort(UniPro L1.5 – L4 和 M-PHY)
注意:退出 Hibernate 后,UniPro 传输层的所有属性(包括 L4 T_PeerDeviceID、L4 T_PeerCPortID、L4 T_ConnectionState 等)都将恢复到其初始值。在通信恢复之前,两端都必须正确恢复所有必需的属性。
●DME_POWERMODE
○允许更改 M-PHY 链路任一方向或两个方向的功率模式
●DME_TEST_MODE(optional)
○允许在特定测试模式下将对等的 UniPro 设备设置在链路上。
●DME_LINKLOST
○UniPro 栈向更高层级发出指示,表明链路已中断。
●DME_ERROR
○UniPro 栈向更高层级发出指示,表明在其中一个 UniPro 层中已出现错误情况。
9.5 UniPro/UFS Transport Protocol Address Mapping
UniPro 从根本上设有两个层面的地址机制,用于控制不同 UniPro 实体之间的信息交换。
Network Layer (L3): Device ID, lowest level of addressability
(网络层(第 3 层):设备标识符,地址识别的最低级别)
○为未来的 UniPro 设备网络所设定。在连接建立过程中,创建连接的一方会使用此值来选择连接远程端的物理实体。该值在本次连接的整个生命周期内应被视为固定不变的。
Transport Layer (L4): CPort ID, highest level of end-to-end addressability
(传输层(第 4 层):通信端口标识符,是实现端到端可寻址性的最高级别)
○在连接建立过程中,创建连接的一方会使用此值来选择连接远程端目标 UniPro 设备内部的逻辑实体。该值在本次连接的整个生命周期内应被视为固定不变的。
UFS 采用了基于 Nexus(I_T_L_Q) 定义的 SCSI 架构模型的地址表示法。
●Initiator Port Identifier (I) 起始端口标识符
●Target Port Identifier (T) 目标端口标识符
●Logical Unit Number (L) 逻辑单元号
●Command Identifier (Q). 命令识别项
I_T_L_Q Nexus 机制能够唯一地定义一个特定的命令槽(Q)所在的特定逻辑单元(L),该逻辑单元连接至特定的设备目标端口(T),并通过特定的主机发起端口(I)进行访问。
UFS 互联层的地址(设备标识符和 C 端口标识符)仅与 Nexus 的 I_T 部分相关。
此标准仅要求并在设备端及主机端使用单一的 UniPro CPort 。
Mapping Rules(映射规则)
●UFS 启动器端口标识符(I)和 UFS 目标端口标识符(T)均应为 16 位宽度。
○UFS 启动器/目标端口标识符应包含包含所述 UFS 端口的实体(主机或设备)的 UniPro 网络层设备标识号。
■UniPro 网络层设备 ID 的重置值对于主机而言应为 0 。
■UniPro 网络层设备标识重置值对于该设备而言应为 1 。
○UFS 启动器/目标端口标识符包含了 UniPro 传输层的 C 端口 ID,该 ID 用于指示 UFS 端口与远程实体进行通信。
■UniPro 传输层 C 端口 ID 的重置值对于主机而言应为 0 。
■对于该设备而言,UniPro 传输层 C 端口 ID 的重置值应为 0 。
●UFS 启动器端口标识符应包含启动器标识(IID)。
表 9.1 为 UFS 定义了发起端口标识符(I)和目标端口标识符(T)。

在 UFS 主机的 UTP 层与 UFS 设备的 UTP 层之间所建立的单一 UniPro 连接,可以通过 UFS I_T Nexus 进行唯一标识。表 9.1 为 UFS 定义了发起端口标识符(I)和目标端口标识符(T)。
注意:UFS I_T 网络元素(设备标识符和 C 端口标识符)在重置后可由主机通过 DME 服务原语进行修改:
●“I”这一元素可由主机通过 DME_SET 原语进行修改。
●“T”元素可由主机通过 DME_PEER_SET 原语进行修改。
主机端的 CPort 的所有属性(例如“T_ConnectionState”)在重置后均可由主机通过使用 DME_GET 和 DME_SET 原语进行检查和修改。
设备端的 CPort 的所有属性(例如“T_ConnectionState”)在重置后均可由主机通过 DME_PEER_GET 和 DME_PEER_SET 原语进行检查和修改。
9.6 Options and Tunable Parameters of UniPro(UniPro 的选项及可调节参数)
MIPI UniPro 被设计为一种通用的协议规范,因此它具备多种选项和参数,而像 UFS 这样的应用程序则需要针对其特定的 UniPro 使用场景来指定这些选项和参数。UniPro 规范的附录 E 具体列出了所有可能的选择。
本章的其余部分明确了针对这些选项和参数的具体要求,这些要求适用于本次 UFS 标准的版本。它们不仅适用于 UFS 主机端的 UniPro 实现,也适用于 UFS 设备端的 UniPro 实现(除非另有明确说明)
9.6.1 UniPro PHY Adapter
关于由 UFS 定义的与 MIPI M-PHY 相关的属性值及实现选项,请参阅 8.7 节“UFS PHY 属性”。
在 UFS 系统中,主机和设备使用相同的参考时钟,因此跳过符号插入功能不会被使用,其实现也是可选的。
UFS 设备应支持以下物理通道连接。
●One lane
○传输端口 0 与接收端口 0 之间存在物理连接
●Two lanes
○传输端口 0 与接收端口 0 之间存在物理连接
○传输端口 1 与接收端口 1 之间存在物理连接

9.6.2 UniPro Data Link Layer
●将实施数据链路层的“尽力而为”流量类别(类别 0)
●数据链路层流量类别 1(TC1:‘低延迟’)并非必需设置。
●不需要具备 TX 预先抢占能力
●将提供至少 DL_MTU 字节的数据链路层接收和发送缓冲区空间
●将支持最大尺寸的 L2 帧(DL_MTU)的传输与接收操作
9.6.3 UniPro Network Layer
●将支持最大尺寸的 L3 数据包(N_MTU)的传输与接收操作
9.6.4 UniPro Transport Layer
●UFS 主机和 UFS 设备应至少配置 1 个 CPort
●如果同时采用了多个 CPort,UFS 将不会强制采用除 UniPro 默认方案之外的任何 CPort 仲裁方案。
●将支持 UniPro 测试功能
●UFS 不需要 UniPro 的端到端流量控制机制
○UFS 不会使用“控制段丢弃”(CSD)这一技术。
■因此,CSD 将被禁用。
●UFS 不会使用“CPort 安全阀”(CSV)。因此,CSV 应该被关闭。
●将支持最大尺寸 L4 分段(T_MTU)的传输与接收。
9.6.5 UniPro Device Management Entity Transport Layer
(UniPro 设备管理实体传输层)
DME 服务原语提供了实现相关功能的方法。
●获取或设置属性
●控制整个 UniPro 协议栈的复位和运行模式
UFS 主机和 UFS 设备应实现以下 DME 服务原语:
●DME_GET, DME_SET,
●DME_ENABLE,
●DME_RESET, DME_ENDPOINTRESET,
●DME_LINKSTARTUP, DME_LINKLOST,
●DME_HIBERNATE_ENTER, DME_HIBERNATE_EXIT,
●DME_POWERMODE,
●DME_ERROR
UFS Hosts
●将实现 DME_PEER_GET 原语和 DME_PEER_SET 原语,这些在 [MIPI-UniPro] 中是可选的。
UFS Devices
●不得使用 DME_SET 原语来修改本地的 PA_PWRMode 属性。
●只有在以下情况下才应使用 DME_RESET:在电源开启或硬件复位时,或者在发生 DME_LINKLOST 事件之后。
●不得使用以下这些基本元素
○DME_PEER_GET.req, DME_PEER_SET.req
○DME_POWERON.req, DME_POWEROFF.req,
○DME_ENDPOINTRESET.req
○DME_HIBERNATE_ENTER.req, DME_HIBERNATE_EXIT.req,
○DME_POWERMODE.req, DME_TEST_MODE.req.
9.6.6 UniPro Attributes
为了优化 UFS 启动流程,UFS UIC 实现应使用由 MIPI UniPro 规范所定义的针对所有 UniPro 属性的默认复位值。但有例外情况,网络层属性的复位值以及 CPort 0 的特定属性的复位值应反映上述部分中所定义的设置,因此应包含如表 9.2 所示的值。


















暂无评论内容