在讲解固态硬盘(SSD)前,我们先讲几个术语(名词)。就像我们如果讲解机械硬盘,我们要明白磁盘和磁头,读写部分的机械结构等。
反正吧,磨刀不误砍柴工。
为了更好地展开说明,列举一些容易混淆的概念并加以说明。
- 固态存储(Solid State Storage) :使用硅晶半导体技术,而不是借助于机械旋转对磁碟、光碟或者磁带进行操作,从而实现数据存取的存储方式 。 内存(RAM)、闪存(Flash)、相变存储(Phase Change Memory, 简称为 PCM)等都被称为固态存储 。当前,因为闪存在价格、容量、可靠性等多方面达到了相对领先的平衡,因此被 广泛应用于固态存储领域。
- 闪存: 一种非易失性的半导体存储器件。所谓“非易失性”,是指在断电情况下仍能保持所存储的数据信息,分NOR闪存和NAND闪存。NOR闪存常用于存放系统启动程序,在嵌入式设备中较为常见;NAND闪存主要用于数据存储,固态硬盘中使用的就是NAND闪存。
- 固态硬盘(SSD):由控制器、内存、闪存颗粒(前面提到,因其多方面达到了领先的平衡,被广泛用于固态存储)等单元组成。控制器提供了外部主机接口、内部闪存管理接口,并通过内嵌的 CPU 来运行SSD固件,它管理着主机可见的存储地址空间、闪存物理空间、垃圾回收、磨损均衡等。内存用于运行SSD固件,并保存在地址空间虚拟化所需要的各种表项。闪存只是最终的存储信息的实体,多颗闪存颗粒分布在SSD的电路板上,共同为SSD提供存储空间 。
闪存介绍
上面提到闪存在固态硬盘的广泛应用,所以在讲解固态硬盘的各种算法前需要重点介绍一下闪存的特性。
- 概念与原理
闪存使用三端器件作为存储单元,分别为源极、漏极和栅极,主要利用电场的效应来控制源极与漏极之间的通断;在栅极 与硅衬底之间增加了一个浮置栅极,浮置栅极可以存储电荷,利用电荷存储来存 储记忆。
擦除:释放浮置栅极的电荷,从而使之变成‘1’,这个动作被称为“擦除”。
编程:向浮置栅极注入电荷,从而使之变成‘0’,这个动作被称为“编程”。
2. 内部组织结构
闪存颗粒内部一般由成千上万个大小相同的块(Block) 所组成,块大小一般为数百 KB 倒数 MB。每一个块的内部又分为若干个大小相同的页(Page),页的大小一般为 4KB 或者 8KB。
3. 数据写入
- 向闪存中写入数据时,只能以页为粒度进行写入,如果闪存中某个页已经被写入了数据,那么不能向这个页中再次直接写 入数据,只能在这个页的数据被清空以后才能再次写入。
- 闪存进行数据清空的力度是块,即一次清空动作会将一个块的数据全部抹除。清空动作对应着闪存的擦除动作,即擦除了一个块的数据后,这 个块中所有的 bit 位都变成了 1。
- 写入动作对应着闪存的编程动作,将数据写入页时,将特定的 bit 位从 1 变成 0,就使得这个页保存了相应的数据。
- 闪存就工作在这样的“擦除”和“编程”循环中,一次这样的循环,被 称为一次擦写(Program/Erase,简称为 P/E)。闪存中每个块的 P/E 次数有限;当某个块的 P/E 次数达到上限后,就无法保证能够继续有效地存取数据。
4. 数据读出
- 闪存中保存的数据,经过一段时间后,可能存在若干 bit 位的错误。如果直接将页中读出的数据返回给上层业务,就可能造成业务失败。
- 为了保证返回给上层业务的数据是正确有效的,闪存内部预留了部分空间用于保存业务数据的 ECC(Error Correcting Code,纠错码)。每当读取数据时,控制器会使用相应的 ECC 对这些数据进行错误检查和纠正。
- 受限于控制器的计算能力,ECC 的纠错范围有限,只能在页面数据中出现bit 位错误的数量不超过一定的上限时才有效。当前主流的 ECC 纠错能力一般是 24bit/1KB,即每 1KB 数据(包含业务数据和 ECC 校验数据) 内出现了 bit 位错误不超过24个时,控制器可以通过计算的方式得出正确有效的业务数据。
- 当某个页中的 bit 位错误数超过控制器的计算能力后,该页的业务数据无法被正确读出,此时便产生一个 UNC(Uncorrectable)错误,UNC 错误只能被更高层级的 RAID 机制所修复。
在通电 40°C 和断电 30°C 温度下,SSD 将将数据保留 52 周,即一年。如表所示,数据保留与活动温度成正比,与断电温度成反比,这意味着较高的断电温度将导致保留率下降。该活动温度仅为 25-30°C 且断电为 55°C 的最坏情况下,数据保留时间可能短至一周,这是许多网站所炒作“数据在几天内丢失”的言论。是的,它在技术上可能发生,但不是在典型的用户环境中。
在现实中,55°C 的断电温度对于客户端用户来说根本不现实,因为SSD很可能在室温下存储在室内某处(壁橱、地下室、车库等),温度往往低于 30°C。另一方面,活动的温度通常至少为 40°C,因为电脑中的硬盘和其他元件会产生热量,使之超过室温
Control Gate: 控制栅
ONO: 氧化层
Floating Gate: 浮动栅
Tunnel Oxide: 隧道氧化层
Silicon: 硅
与一般原理一样,数据保留的时长是有技术解释的。半导体的导电率随温度而变化,这对NAND来说是个坏消息,因为当它不通电时,电子不应该移动,因为这会改变单元(cell)的电荷。换句话说,随着温度的升高,电子更快地从浮动栅中逸出,最终改变单元的电压状态,使数据不可读(即SSD不再保留数据)。
对于正常通电使用时,温度具有相反的效果。由于较高的温度使硅导电性更高,因此在编程/擦除操作过程中电流较高,对隧道氧化层的压力较小,从而提高了单元(cell)的耐久性,因为隧道氧化层保持电子在浮动栅内的能力实际上决定了SSD的耐久性[寿命]。
总之,在典型的客户环境中,绝对没有理由担心 SSD 数据保留时长。请记住,此处提供的数字适用于已通过其耐久性考核的SSD(写入量达到标称值)[潜台词就是隧道氧化层将电子控制在浮动栅的能力已经变得较差了]。因此对于新SSD,数据保留时长要久得多,通常对于基于全新的MLC NAND的SSD来说,数据保留时长通常会超过十年。如果你今天买了一个SSD,并存储数据,SSD本身将变得完全过时比它将失去它的数据更快。此外,考虑到 SSD 的成本,将它们用于冷存储无论如何都不经济高效,因此,如果您希望存档的数据,我建议仅出于成本原因使用机械硬盘。
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。