NAND-Flash 的存储原理
固态硬盘最小单元的基本架构如下:
我们知道计算机中所有的信息储存最终都必须回归到 0与1,就像电影《黑客任务》中母体不停跑动连串的 0与1一样,原则上,只要存储单元能提供两种或两种以上可供辨识的状态,便可以拿来纪录数据。
(1)写入数据
在 NAND-Flash 中,当我们需要写入数据时,会在图中的控制闸(Control Gate)施加高电压,然后允许源极(Source)与汲极(Drain)间的 N信道(N-Channel)流入电子,等到电流够强,电子获得足够能量时,便会越过浮置闸(Floating Gate)底下的二氧化硅层(SiO2)为单元所捕获,这个过程我们称之为穿隧效应(Tunnel Effect);
(2)数据稳定
一旦电子进入了浮置闸,即使移除电源,只要没有足够能量,电子是无法逃离底下的二氧化硅层的,捕获电子的状态便会一直维持下去,时间可以长达十数年之久,视用来绝缘的二氧化硅层耗损状况而定。
(3)读取数据
读取数据时,我们同样会在控制闸施加电压,好吸住浮置闸里的电子,但不用到穿隧注入(Tunnel Injection)电子时那么高,同时让 N通道流过电流,利用电流来感应浮置闸里电子捕获量的多寡,靠感应强度转换为二进制的 0与1,最后输出成数据。
(4)擦除数据
假如我们需要擦除数据,就必须靠释放浮置闸里头的电子来达成,此时我们不会对控制闸施加任何电压,而是反过来对单元底下的 P型半导体(P-Well)施加电压,源极与汲极间的电流流过二氧化硅层底下的 N通道时会反向让浮置闸里的电子再次穿越二氧化硅层被吸引出来,我们称之为穿隧释出(Tunnel Release)。
SLC MLC TLC 简单分析
SLC Single-Level Cell,意味着每个存储单元只存放 1bit讯息,靠浮置闸里电子捕获状态的有或无来输出成数据(即使在 0的状态浮置闸里其实还是有电子,但不多),也就是最简单的 0与1;MLC Multi-Level Cell,意味着每个存储单元可存放 2bit讯息,浮置闸里电子的量会分为高、中、低与无四种状态,转换为二进制后变成 00、01、10、11。2009年 TLC Triple-Level Cell 架构问世,更进一步将浮置闸里的电子捕获状态分成八种,换算成二进制的 000、001、010、011、100、101、110、111,也就是 3bit。
SLC 与 MLC 的比较主要可以分为寿命、成本、功耗、效能与出错率五个面向。
(1)比较寿命
首先是寿命问题,要谈这个我们又得回到上面那不是很好消化的原理图与介绍。我们晓得(如果你有懂的话)固态硬盘存储数据主要靠单元中浮置闸所捕获电子的量,电子要进入或离开浮置闸都得藉由穿隧效应进出用来阻挡电子的二氧化硅层,问题也就出在这;二氧化硅层其实只有 10nm左右厚度,在每一次的穿隧注入电子或释出时,二氧化硅的原子键会一点一点地被破坏,数据的擦除工作会愈来愈慢,因为电子会慢慢占据原本用来绝缘的二氧化硅层,抵销掉施加在控制闸上的电压,导致需要更高电压才能完成工作,而这会让氧化物更快被击穿,等到整个二氧化硅层被电子贯穿,该单元也就正式寿终正寝啦。SLC 只有有或无两种状态,MLC 却有四种电压状态,为了达到这四种状态,电子得频繁出入二氧化硅层,加速单元的耗竭,这也就是为什么 SLC 可以有十万次擦写寿命而 MLC 却只有一万次的原因;当然啦,TLC更惨,平均只有五百到一千次擦写寿命,所以主要拿来做市售的亲民价随身碟。
磨损平衡 坏块管理
这时我们就得引进两种主要让固态硬盘延长寿命的技术了,磨损平衡(Wear-Leveling)与坏块管理(Bad Block Management)。
所谓的耗损平衡又称均衡抹除技术,我们知道一个固态硬盘单元愈常被读取,二氧化硅层就会愈快被电子贯穿,导致存储效能低落,为了解决这个问题,厂商会运用不同的计算法则,将数据分散写进不常使用的区块,使得整颗硬盘每个区块寿命都能大致相同,而当坏块一个接一个出现的时候,也就是这颗固态硬盘大限将届的时候。均衡抹除算法有动态与静态,动态(Dynamic)是在写入数据前,先看看哪些空白区块写入次数较少,在实际写入时先将数据分配进这些区块;而静态(Static)则是对某些因长期储存固定数据而导致写入次数极低的区块,先将数据备份到其他区块上,然后再抹除原本区块以便参与循环。均衡抹除算法每家厂商都不尽相同,有时不同算法对固态硬盘效能会有极大影响。
坏块管理顾名思义,就是管理提前阵亡的坏块。事实上,每颗用来作为内存的颗粒,即使是最高等级,出厂时也都会有坏块,厂商会先将这些坏块标记封存起来,然后保证在硬盘的生命周期内,每个颗粒的好块总数不会低于某个值,如一个 SLC颗粒 4096个区块里要有 3996个区块能在生命周期十万次擦写寿命内正常运作,我们称为最小有效块值(NVB-minimum number of valid blocks),出厂后在消费者手中产生的坏块则必须靠固态硬盘的主控芯片来判断隔离,避免数据误入坏块无法储存日后也无法读取;坏块管理完全仰赖各大厂主控芯片里的逻辑运算,所以主控芯片对固态硬盘而言犹如大脑之于人身。下图是 2010年镁光(Micron) 32GB SLC 25nm技术颗粒的架构图,一颗固态硬盘上会有数个颗粒(die),每个颗粒上会有两平面(plane),每一平面会分割成 2048个区块(block),每个区块上则分作 256页面(page),每一页面上可储存 (4096+224)字节(byte),一字节等于 8位(bit),让您一窥固态硬盘的究竟。
(2)比较速度、功耗、稳定性、出错率、成本
一旦了解了 SLC、MLC、TLC和固态硬盘寿命的关系后,剩下的读取速度、功耗、出错率与成本就很容易理解了,SLC因为只有两种状态,最容易辨识,所以在同一种主控芯片与计算逻辑下速度最快,功耗也最低,状态稳定,以现代技术而言出错率几乎可以忽略不计,不过,因为每个单元只能存储一个位,所以在相同容量下成本最高。事实上,主控芯片在这其中扮演着举足轻重的脚色,它不仅影响到单信道、双信道甚至四信道的读取效能,也是内存颗粒中保证存储内容正确性 ECC(错误检查与纠错,Error Checking and Correction)技术的神经中枢,MLC与 TLC都十分仰赖 ECC,一有出错就会导致倍数以上的数据损失,然而截至 2012年底,各大厂 ECC技术其实都已经相当成熟,这也是为什么极端重视数据准确度的企业用户胆敢大量采用 MLC固态硬盘的原因,甚至有 SLC硬盘将逐渐淡出市场的传闻,也是啦,你要企业主买一颗没意外的话会活得比他更久的硬盘,要那些老板情何以堪,再说科技日新月异,真的有必要砸大钱采购这种价格不斐容量又小的产品吗?下图或许给您一个 SLC、MLC清晰易瞭的比较。
内存颗粒等级释疑
上面这张图就是所谓的晶圆,刚出厂切割完就长这样,上面每一个小方块都可以拿做成一张记忆卡。问题是,就像内存颗粒即使刚出厂都会有坏块一样,刚出厂的晶圆上也不是每片颗粒都是优等生,就英特尔、镁光(Intel、Micron这两家公司的晶圆由共同合资的IMFT,IM Flash Technology生产)来讲,有些可以拿来做最高等级的同步颗粒,有些修复校验后可以拿来当次等的同步颗粒,而有些不管怎样折腾都是鸡肋,食之无味,弃之可惜,但还是可以卖,就拿来做最低阶的异步颗粒,主要用在国民价记忆卡上。所以,千万不要看到打上英特尔或镁光就以为是什么极品,没那么神,还要对照颗粒表面的编码才能判定质量良窳。
同步与异步
好啦,最后我们来谈谈颗粒的同步与异步。同步/异步,主要是两个管脚的定义不同,同步模式下,颗粒不需要告诉主控“我准备好了,可以读/写了”,而是随时ready的状态,这样可以省下一个时钟周期。
用英特尔 25nm颗粒的分级表来总结,给您个清晰的轮廓。