e-works数字化企业网  »  文章频道  »  基础信息化  »  存储

不同的闪存都有什么区别?

2017/5/27    来源:知乎日报    作者:佚名      
关键字:存储  闪存  SSD  
这个时候发这篇文章难免有蹭热点的嫌疑^但作为一个计算机体系结构的研究生,在这些名词满天飞的时候,我的好奇心是抑制不住的,想一探这几样技术的究竟。
    市面上闪存大体有三种类型,分别是SSD,eMMC和UFS ,本文不对某一特定事件进行点评,仅从技术角度分析对比一下这三种技术。
 
    首先,这三种技术都是属于闪存(Flash Memory)的不同种类,区别主要在于控制器,接口标准以及更底层的 Flash 芯片标准。它们在电脑/手机等系统中的主要作用是作为存储设备(storage)/文件系统。(注意它们虽然叫也 memory,但和运存的 memory 是完全两回事儿)
 
    以前电脑系统中的主要的存储设备是机械式磁盘,访问速度慢,体积庞大,功耗高,而且对震动非常敏感,因此很难用于小型化的移动设备里。Flash Memory 出现后,由于没有移动部件,几乎完美解决了以上机械硬盘的各种问题,因此很快在各种移动设备中获得广泛应用。而且基于 Flash 的 SSD 硬盘性能普遍好于传统机械硬盘,因此也成为了 PC/ 服务器的主流存储设备。
 
    那么既然 SSD,eMMC,UFS 都是 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 的区别了。
 
    eMMC 和 UFS 都是面向移动端 Flash 的标准,区别在于,二者的接口技术大相径庭。
 
    eMMC 是一个起源较早的技术,全称叫 embedded MultiMedia Card,为什么单单 e 是小写呢? 因为先有的 MMC 啊。所谓 MMC,通俗来说就是所谓的内存卡。
 
不同的闪存都有什么区别?
 
    MMC 前面加了个 embedded,主要就是为了突出现在这个设备是 embedded 在电路板上。eMMC 和 MMC 一样,沿用了 8 bit 的并行接口。在传输速率不高的时代,这个接口够用了。但随着设备对接口的带宽要求越来越高,想把并行接口速率提高也越来越难。eMMC 的最新 5.1标准理论最高值最高可以达到400 MB/s,再往上提高频率也不是不行,但就未必划算了。
 
    好在这几年接口串行化大潮轰轰烈烈。所谓接口串行化,简单来说就是工程师们发现:与其用一个比较宽的并行接口以较低的速率传输,用一个串行接口用非常高的速率传输似乎更划算一些(带宽,功率,成本各方面综合考虑)。所以这个时候 UFS 应运而生,用高速串行接口取代了并行接口,而且还是全双工的,也就是可以读写同时进行。所以相比 eMMC, UFS 的理论性能提高不少,甚至可以达到一些 SSD 的水准。可以在下图直观感受一下,蓝色的是 UFS,红色的是 eMMC,当然是越高越好:
 
不同的闪存都有什么区别?
 
    最后,大家可能比较关心的一个问题:如果设计好了一个使用 UFS 的系统,然后最后发现没有 UFS 可以用了,那能不能直接换成 eMMC 呢?
 
    答案是不行的,因为 UFS 和 eMMC 接口完全不兼容,控制器也不可通用。下面两个示意图分别是 eMMC 和 UFS 的接口(图片引自[2][3] JEDEC 标准)。

不同的闪存都有什么区别?

    即使是示意图,也能看出两者的明显差别。eMMC 有两条总线,分别传输指令数据输入和输出,而且因为是并行总线还要有额外的 data strobe。而 UFS 则是有两条差分的数据 lane,指令和数据都是以 packet 的形式发送的。就更不要提二者的信号线的电气特性也有很大差别了。这些将直接导致控制侧(CPU 那边)SoC 的控制器和电路设计会有很大不同。
 
    所以一个系统的 SoC 以及电路板一定要经过重新设计,才能把 UFS 替换成 eMMC,这不是在生产线上换个 Flash 芯片那么简单的事儿,还得经过比较长时间的设计和测试才行。否则想要快速拿出替代方案的话,恐怕从一开始就要设计两套方案了。
 
   
责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐