这三种技术都是属于闪存(Flash Memory)的不同种类,区别主要在于控制器,接口标准以及更底层的 Flash 芯片标准。它们在电脑/手机等系统中的主要作用是作为存储设备(storage)/文件系统。
以前电脑系统中的主要的存储设备是机械式磁盘,访问速度慢,体积庞大,功耗高,而且对震动非常敏感,因此很难用于小型化的移动设备里。Flash Memory 出现后,由于没有移动部件,几乎完美解决了以上机械硬盘的各种问题,因此很快在各种移动设备中获得广泛应用。(当然,Flash的写操作和寿命的问题也比较复杂,
SSD 主要作用是取代 PC/服务器 上的 HDD 硬盘,它需要: - 超大容量(百GB~TB级别)
- 极高的并行性以提高性能
- 对功耗,体积等要求并不敏感
- 兼容已有接口技术 (SATA,PCI等)
而 eMMC 和 UFS主要都是针对移动设备发明的,它们阿需要: - 适当的容量
- 适当的性能
- 对功耗 ,体积的要求极其敏感
- 仅需遵循一定的接口标准 (稍后解释)
为了直观感受一下区别,我刚才特意找来了一个 PCIe 的 SSD,如下图,上面黑色的芯片就是Flash:
我又拆了一个手机,它里面的 Flash 芯片是这样的(中间那个最大的黑色芯片):
看到区别了吗?
一个SSD,为了达到高并行高性能的要求,有多个Flash 芯片,这样就可以在每个芯片上进行相互独立的读写操作,以并行性来提高硬盘吞吐量,还可以增加冗余备份。而手机中为了节省空间和功耗,通常只有一片密度较高的 Flash 芯片。 管理一个 Flash 芯片,和管理多个 Flash 芯片,策略肯定是不一样的,因此它们的控制器 (controller)就完全不同了。而且 PC 上需要兼容 SATA 或 PCIe 或 m2 接口,这样你电脑硬盘坏了的时候,可以拔下来换上另一块同样接口的硬盘能照样用。而手机上的 Flash 芯片大多是直接焊在主板上的,基本上不需要考虑更换的问题,所以只要遵从一个特定标准,能和CPU正常通讯就好了。因此接口的不同也是 SSD 和 eMMC,UFS 的重要区别之一。 eMMC 和 UFS 都是面向移动端 Flash 的标准,区别在于,二者的接口技术大相径庭。
eMMC 是一个起源较早的技术,全称叫 embedded MultiMedia Card,为什么单单e是小写呢? 因为先有的MMC啊。所谓MMC,大家可能没听过但可能见过,相机中用得较多,和SD卡长得很像(之前的图片就搞错了,感谢评论中各位的提醒)。
MMC前面加了个embedded,主要就是为了突出现在这个设备是embedded 在电路板上。eMMC 和 MMC一样,沿用了 8 bit 的并行接口。在传输速率不高的时代,这个接口够用了。但随着设备对接口的带宽要求越来越高,想把并行接口速率提高也越来越难。eMMC 的最新 5.1标准理论最高值最高可以达到400 MB/s,再往上提高频率也不是不行,但就未必划算了。 用高速串行接口取代了并行接口,而且还是全双工的,也就是可以读写同时进行。所以相比 eMMC, UFS的理论性能提高不少,甚至可以达到一些SSD的水准。可以在下图直观感受一下,蓝色的是UFS,红色的是eMMC,当然是越高越好:
(图片引自[1] Micron 的文档)
最后,大家可能比较关心的一个问题:我设计好了一个使用UFS的系统,然后悲伤地发现没有UFS可以用了,那能不能直接换成eMMC呢? 答案是不行的,因为 UFS 和 eMMC 接口完全不兼容,控制器也不可通用。下面两个示意图分别是eMMC和UFS的接口
即使是示意图,也能看出两者的明显差别。eMMC有两条总线,分别传输指令数据输入和输出,而且因为是并行总线还要有额外的data strobe。而UFS则是有两条差分的数据lane,指令和数据都是以packet的形式发送的。就更不要提二者的信号线的电气特性也有很大差别了。这些将直接导致控制侧(CPU那边)SoC 的控制器和电路设计会有很大不同。
所以一个系统的SoC以及电路板一定要经过重新设计,才能把 UFS 替换成 eMMC,这不是在生产线上换个 Flash 芯片那么简单的事儿,还得经过比较长时间的设计和测试才行。
在连续读写性能这块:UFS 4.0 >NVMe = UFS3.1>UFS2.1>eMMC5.1
|