3、UFS协议基础:物理层、链路层、传输层、应用层的基本架构与关键术语
UFS(Universal Flash Storage)并不是一条简单的“高速串行总线”,而是一套分层协议栈。它把电气信号、链路可靠性、命令语义和上层应用抽象拆成四层:物理层(M-PHY)、链路层(UniPro)、传输层(UFS Transport Protocol)和应用层(UFS Application Layer)。理解这四层的分工与接口,是后续做硬件设计、信号完整性验证和协议调试的基础。
3.1 四层架构总览
从主机 SoC 到 UFS 设备,数据和控制信息自上而下逐层封装,自下而上逐层解封装。每一层只关心自己的职责,并通过明确定义的接口与相邻层交互。下图展示了四层协议栈的纵向关系以及各层的关键对象。
3.2 物理层 M-PHY:速率、Lane 与信号状态
M-PHY 是 UFS 的电气基础,定义了差分信号、时钟嵌入方式、编码规则和功耗状态。UFS 使用 M-PHY 而非传统并行总线,关键参数包括:
- Lane(通道):UFS 通常使用 1 条或 2 条 Lane,每条 Lane 由一对差分线组成,支持双向通信。
- HS 模式:高速模式,HS-G1 为 1.25 Gbps/lane,HS-G4 为 11.6 Gbps/lane,HS-G5 可达 23.2 Gbps/lane。
- PWM 模式:低速模式,用于初始化、命令传输和低功耗场景,速率从 PWM-G1 到 PWM-G7。
- 信号状态:LINE RESET、SLEEP、STALL、BURST 等,用于控制链路启停和功耗切换。
3.3 链路层 UniPro:可靠传输与流控
UniPro 是 UFS 的链路层协议,源自 MIPI 的 UniPro 规范。它把 M-PHY 的原始比特流组织成可靠的帧传输,主要职责包括:
- 数据链路层(L2):负责帧同步、CRC 校验、确认与重传,保证数据无差错传输。
- 网络层(L3):提供多路复用和路由,区分不同的逻辑通道。
- 传输层(L4):提供端到端的连接管理,包括 CPort 和 CPort 之间的数据流。
UniPro 使用 CPort(Connection Port)作为通信端点,每个 CPort 有唯一的 ID。UFS 中常见的 CPort 包括:
| CPort 名称 | 方向 | 用途 |
|---|---|---|
| CPort 0 | 双向 | UFS 命令与响应 UPIU |
| CPort 1 | 双向 | 任务管理 UPIU |
| CPort 2 | 设备→主机 | 设备发起的通知与异常 |
| CPort 3 | 双向 | 数据读写传输 |
3.4 传输层 UTP:UPIU 与命令语义
UTP 层定义了 UFS 的UPIU(UFS Protocol Information Unit),这是主机与设备之间交换信息的基本单元。UPIU 分为三类:
- 命令 UPIU:主机向设备发送操作请求,如读、写、查询、任务管理。
- 数据 UPIU:承载实际读写数据,与命令 UPIU 配对使用。
- 响应 UPIU:设备返回执行结果,包含状态码和必要参数。
一个典型的读操作流程如下:
主机发送 Command UPIU (READ)
→ 设备返回 Data UPIU (数据)
→ 设备返回 Response UPIU (状态)
UPIU 头部包含 Transaction Type、Flags、LUN、Task Tag、Data Segment Length 等字段。其中 Task Tag 用于匹配命令与响应,LUN 用于区分不同的逻辑单元。
3.5 应用层:SCSI 命令集与逻辑单元
UFS 应用层采用 SCSI 命令集作为上层语义,常见的命令包括:
- READ (10/16):从指定 LUN 读取数据。
- WRITE (10/16):向指定 LUN 写入数据。
- INQUIRY:查询设备信息。
- TEST UNIT READY:检查设备是否就绪。
- REQUEST SENSE:获取错误详情。
每个 UFS 设备可以包含多个逻辑单元(LUN),例如 LUN 0 通常用于系统数据,LUN 1 用于用户数据。主机通过 LUN 字段区分访问目标。
3.6 案例:一次 UFS 读操作的完整路径
假设主机要读取 LUN 0 的 4KB 数据,协议栈的协作过程如下:
- 应用层构造 SCSI READ 命令,指定 LUN=0、LBA、传输长度。
- UTP 层将 SCSI 命令封装为 Command UPIU,填入 Task Tag 和 LUN。
- UniPro 将 UPIU 分段、加 CRC,通过 CPort 0 发送。
- M-PHY 将数据串行化,以 HS-G4 速率通过差分对发送。
- 设备侧逐层解封装,执行读操作,返回 Data UPIU 和 Response UPIU。
- 主机根据 Task Tag 匹配响应,完成一次读事务。
3.7 关键术语速查清单
| 术语 | 所属层 | 含义 |
|---|---|---|
| M-PHY | 物理层 | UFS 物理接口,定义电气特性与速率模式 |
| Lane | 物理层 | 一对差分信号线,构成一个双向通道 |
| UniPro | 链路层 | 可靠传输协议,负责帧同步、重传和流控 |
| CPort | 链路层 | UniPro 通信端点,用于区分不同数据流 |
| UPIU | 传输层 | UFS 协议信息单元,命令/数据/响应的载体 |
| Task Tag | 传输层 | 命令与响应的匹配标识 |
| LUN | 应用层 | 逻辑单元号,区分设备内的不同存储区域 |
| SCSI | 应用层 | 上层命令集,定义读写、查询等操作语义 |