在
手机中有三大件组成:CPU、内存DDR、存储设备(EMMC/UFS等),内存用以临时存储程序运行时所需的数据(掉电数据丢失),而存储设备用以长久保存数据(掉电数据不丢失)。
在手机上,从SD卡到EMMC、再到UFS卡,存储卡的速度是越来越快,现在一般手机的配置是EMMC,而旗舰手机的配置是UFS,很明显UFS将会是未来一段时间的手机存储的主流,快是唯一的原因。
所谓的UFS即Universal Flash storage,通用闪存存储,这一概念通常代表2个意思:
(1)手机存储接口协议,类似于SATA,PCIE/NVME等概念;
(2)使用该协议的存储设备;
UFS相比较EMMC的速度很快,其最重要的就是它的信号是差分传输,这个是信号传输UFS数据传输快的基础。所有的高速传输线,比如SATA、PCie、SAS,都是串行差分信号。
串行信号可以使用更快的时钟(时钟信息可以嵌在数据流中),差分信号,即用两根信号线上的电平差0或者1。
与单端信号传输相比,差分信号的抗干扰能力更强,能提供更宽的带宽。其次,UFS和PCIE一样,支持多通道数据传输,目前最多支持两个通道,多通道可以让UFS在成本、功耗和性能之间做取舍。
UFS支持命令队列,就是主机一下可以发很多个命令下去,然后UFS设备支持并行和乱序执行,谁先完成谁先返回状态。这种命令处理方式叫做异步命令处理。而它的前辈eMMC,是不支持命令队列的,命令一个一个执行,或者一包一包(每个包里面含有若干个命令)执行,前面命令没有执行完成,后面的命令是不能发下去的。这种命令处理方式叫做同步命令处理。
我们来比较一下“全双工+异步命令处理”和“半双工+同步命令处理”两者命令处理方式和命令执行效率。
半双工+同步
主机发了一个写命令W1给设备,然后主机把数据写到设备;由于是同步传输模式,命令处理是一个一个处理的,所以在发读命令R2之前,必须等前一个写命令W1完成;同样,在发送写命令W3之前,必须等R2命令完成。
全双工+异步
由于支持命令队列,主机一下可以发若干个命令给设备,如上图,主机一下发了一个写命令W1和读命令R2给设备。设备可以并行处理这两个命令,由于协议支持全双工操作,主机传输写命令W1的数据给设备的同时。
设备也可以把读命令R2的数据返回给主机。后面命令R3,R4,W5…的处理方式类似。
再形象一点,我们以搬运货物的例子来比较一下eMMC和UFS命令执行方式:
现在的手机,应用非常丰富,你要一边斗地主,一边听歌,还要聊微信,多线程操作。由于全双工和命令队列的存在,UFS处理命令的效率大大提高,给用户极好的体验。
前面我们拿UFS和eMMC做了几个对比,但我好像忘了说什么是eMMC。有人可能懵逼,什么是eMMC?
eMMC,Embedded Mul
ti Media Card,和UFS一样,也是JEDEC制定的移动存储协议,它是UFS前一代协议标准。
eMMC最新标准是2015年发布的eMMC5.1,最高速度是400MB/s。JEDEC已经有了UFS,不确定会不会再发布新的eMMC标准。毕竟,并行传输的eMMC由于受限于物理信号,速度想要有个质的飞跃是不太现实。
原作者:锐志创新 老徐的技术专栏