社区编辑申请
注册/登录
带你认识UFS:一种高速率的存储器件 原创
存储 存储设备
随着智能手机的快速发展,手机已经变成了一种生活中的必需品。人们对于智能手机的要求也越来越高。卓越的手机性能可以给用户带来指尖跳舞的感觉。为了满足这种需求,各大厂家对手机的CPU,内存,存储设备都投入了大量的研发。

一、UFS简介

随着智能手机的快速发展,手机已经变成了一种生活中的必需品。人们对于智能手机的要求也越来越高。卓越的手机性能可以给用户带来指尖跳舞的感觉。为了满足这种需求,各大厂家对手机的CPU,内存,存储设备都投入了大量的研发。现在CPU和内存的发展已经是相当地迅速,运行速度在成倍增长。但是传统的存储设备运行速度已经远远落后于CPU和内存。高速的CPU和内存搭配低速的存储设备,就像是大牛拉小车发挥不出自己的优势。所以对于快速存储设备的需求尤为迫切,从而有了UFS(Universal Flash Storage)的诞生。

二、UFS与eMMC

说起UFS,必须要讲讲它的前辈eMMC。eMMC是一种嵌入式多媒体卡,是由JEDEC协会所制定的一种嵌入式非易失性存储器。它采用并行传输技术,读写必须分开执行,虽然仅提供单路读写功能,但仍具备体积小、高度集成与低复杂度的优势。目前最新的 eMMC 5.1 标准,连续读取速度约为 250MB/s。

UFS最早是由JEDEC在2011年推出的,采用全新的串行传输技术,可同时读写操作。第一代 UFS 由于与当时 eMMC 标准速度差异不大,且成本较为高昂,因此并未成功普及。直至 2014 年 UFS 2.0 标准问世后,连续读取速度约达 800MB/s,UFS 才成为 Android 旗舰手机逐渐采用的标准配置。目前最新的 UFS 3.1 标准,连续读取速度约为 1,700MB/s。这时,UFS的传输速度已远远领先于eMMC。

表1:不同协议下的理想传输速度

图1:UFS 实测速度          图2:eMMC实测速度

图1,图2分别是用AndroBench实测的UFS和eMMC的读写速率。新手机发布后,很多手机测评自媒体都会使用AndroidBench测试手机的读写速率来判断其性能。对于AndroBench所测的数据,业内也是比较认可的。从图1和图2来看,UFS的速率是eMMC的两倍,但也不难发现,这一速率和理想的数据还是有差距的。理想总归是理想,实际的速率还要结合整机的性能。

为什么UFS的速率要高于eMMC?

具体有两方面的原因:

1. 数据信号的处理方式不同

UFS是差分串行传输,与单端信号传输相比,差分信号抗干扰能力强,能提供更宽的带宽处理,速度更快。eMMC使用的是并行数据传输。并行最大的问题是速度上不去,因为一旦时钟上去,干扰就变大,信号完整性无法保证。

图3:UFS与eMMC的通讯方式不同

2.协议的不同

好的器件如果没有优良的上层软件(firmware)就相当于法拉利不加98号汽油,再好也跑不快。eMMC和UFS的协议都是由JEDEC制定的,器件厂家根据协议来设计器件。eMMC的通讯方式是半双工的,读写不能同时进行。UFS是全双工通讯,读写是可以同时进行的。简单来说,eMMC的通讯方式是一种应答式的,host发送数据给eMMC 需要等eMMC应答之后才可以继续发送数据。UFS则不一样,host只管向UFS发送数据谁先完成谁先返回状态不需要等待。所以,速度就会比eMMC要快,如图3。

三、UFS架构设计

图4:UFS协议栈

整个UFS协议栈可以分为三层:应用层(UFS Application Layer(UAP)),传输层(UFS Transport Layer(UTP)),链路层(UIC InterConnect Layer(UIC))。应用层发出SCSI命令(UFS没有自己的命令使用的是简化的SCSI命令),在传输层将SCSI分装为UPIU,再经过链路层将命令发送给Devices。下面分别介绍这三层:

1.应用层(UFS Application Layer(UAP))

  • UFS command set(UCS):使用的命令是简化的SCSI命令(SCSI Primary Command(SPC),SCSI Block Command(SBC)),如读写命令等。
  • Device Manager: 用于管理UFS设备、设备集操作(对设备的工作模式或状态进行控制),设备集配置(对设备硬件属性进行设置)。
  • Task Manager:任务管理器用于管理命令队列中的命令。比如任务管理器可以发Abort命令,终止之前发下去的命令。它也可以清空命令队列中的所有命令。

2.传输层(UFS Transport Layer(UTP))

这一层是JEDEC协议制定的,其他两层都是引用别人的协议。这一层也是UFS最重要的一层。在这一层将应用层的SCSI命令封装为 UFS可以识别的UPIU(固定格式的数据结构,用以传输应用层发来的命令或者请求),通过互联层到Devices实现端到端的数据传输。

图5:UPIU的格式

最小的UPIU是32字节,根据不同的Transaction Type这个大小也是不同的。0~11是12字节的帧头。具体的UPIU类型和12字节的帧头可以参考“JESD220D_UFS3.0”,这里就不在赘述。

3.链路层(UIC InterConnect Layer(UIC))

主要包括MIPI UniPro 数据链路层和MIPI M-PHY 物理层。其中,MIPI UniPro 数据链路层负责主机和设备的链接,它本身是一个完整的协议栈;MIPI M-PHY 物理层负责传输实实在在的物理信号,使用8/10编码、差分信号串行数据传输。数据传输分高低速模式,每种模式下又有几种不同的速度档。

四、结语

UFS的整个架构要比eMMC的复杂,有些知识点可以用晦涩难懂来形容。十分考验个人的功底。UFS的整个系统很庞大,本文只是一个入门的介绍,如果想深入去学习,建议先啃协议,后续结合协议看代码。

作者介绍

陈豪,51CTO社区编辑,具有6年工作经验的高级系统工程师。擅长技能有Linux内嵌汇编语言,Python,C,C++,Java,Linux内核分析,智能机器人软件设计等。

参考文献:JESD220D_UFS3.0

​https://blog.csdn.net/guozhidixian/article/details/112797245​

​https://blog.csdn.net/guozhidixian/article/details/100626691​


责任编辑:华轩 来源: 51CTO
相关推荐

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-05-18 10:58:36

LinuxKali Linux

2022-05-17 15:51:32

数据中心运维能力基础设施

2022-05-20 14:54:33

数据安全数字化转型企业

2022-05-16 10:36:08

GitHub开源项目

2022-05-16 10:49:28

网络协议数据

2022-05-17 16:56:33

开发工具前端

2022-05-11 08:23:54

自动化测试软件测试

2022-05-24 12:42:24

物联网

2022-05-11 14:05:11

区块链网络安全存储

2022-05-09 11:57:39

云原生实践安全

2022-05-20 14:08:13

Web3元宇宙区块链

2022-05-12 14:44:38

数据中心IT云计算

2022-05-07 15:31:19

物联网5G智慧城市

2022-05-24 12:05:36

Testin云测试

2022-05-24 07:51:05

测试模型测试单元测试

2022-05-06 09:21:21

TypeScriptinterfacetype

2022-05-17 11:46:48

高并发服务数据库

2022-05-20 16:50:33

区块链Web3加密资产

2022-05-16 10:41:40

GNOME 42Console控制台

编辑推荐

SSD接口详解,再也不会买错固态硬盘了SAN和NAS、ISCSI存储有什么区别,SAN和NAS设备哪个更好?献给“大容量”用户: NAS与磁盘阵列柜正确的选择方式都在这里儿了手把手教你组 笔记本高大上的磁盘阵列磁盘阵列怎么配置,图文步骤来教你
我收藏的内容
点赞
收藏

51CTO技术栈公众号