SSD掉电保护也是一门艺术

简介: 当你正在文思泉涌地敲打键盘赶稿件时,电脑突然抽风,然后,你就看到了绝望的蓝色(系统崩溃,电脑蓝屏了)。其实office软件有自动保存的功能,当电脑重启,再次打开WORD文件时,会提醒你要不要导入最后自动保存的内容(这个方法不是100%管用)。

类似的情况,你是否想过,正在往SSD写入数据时,系统突然掉电了,那SSD的数据会怎么样呢?

总的来说,系统掉电会给SSD带来三种情况的灾难:
3.造成SSD坏块增加。系统的突然掉电有可能会使NAND闪存中多个bit发生错误,如果错误的bit超过了ECC的纠错能力,主控就会将其标记为坏块,后续就不能用来存储数据。这也就是为什么在不正常断电之后,我们有时会看到坏块的增加。

在上一篇文章("你知道企业级SSD与消费级SSD的区别吗?")中,我们有介绍企业级SSD与消费级SSD区别。简单言之,企业级SSD更加注重数据的安全性,而消费级SSD更加注重的是成本。

对于消费级SSD,由于对数据的安全性要求不能那么的严格,并且ECC/LDPC纠错技术,Wear-leveling技术以及其他的Flash管理技术基本可以满足需求。

但是,对于企业级的SSD,这些措施并不能完全满足数据安全性的苛刻要求。

目前针对企业级SSD掉电保护的措施有两种:
1.增加电源储存电路(power hold-up circuit)。
2.关闭“回写缓存”(write-back caching)功能。

接下来,我们就这两种保护措施展开介绍:

1.增加电源储存电路(power hold-up circuit)
SMART公司的一款XceedIOPS SSD的掉电保护电路图如下:

你是否会遇到这样一种情况:

1.用户写入数据丢失。我们在前面的文章提到“在Host写入数据时,并不会直接交给主控去写入NAND闪存,而是先把数据丢到DRAM缓存中,之后再传到主控内部的缓存中,最后再由主控写入NAND闪存”(详细内容请见本公众号历史文章“SSD内涵与外在俱佳—记SSD之结构与工作原理”)。我们假设Host写入的数据在放到DRAM这一步时突然掉电,由于DRAM是挥发性记忆体,只要断电,数据就会丢失。这对用户来说肯定会崩溃的,对企业级的用户更是不能容忍的。


2.FTL mapping信息丢失。SSD在完成一部分数据写入的时候需要更新闪存转换层FTL的mapping table(FTL相关详细内容请见本公众号历史文章“如何成为一个具有领导力的SSD主控?”), 如果在还未来及更新mapping table时,系统掉电,那么后果就是整块SSD对于系统不能识别。目前市场上SSD厂商都不会提供修复mapping table的工具。要想修复这块SSD就必须返厂维修,SSD厂商会通过特殊的方式对mapping table进行重建,并找到丢失的数据。


大多数的企业级SSD会有一块专门检测SSD供电电压的电路,如果检测到供电电压低于设定的阈值时,此时会给SSD主控发送预警。接着启动power hold-up电路,保证SSD正常的操作。


Power hold-up电路中的电压源可以是超级电容(supercapacitor), 或者一系列的分离式电容(discrete capacitors), 甚至可以是一块电池(不过,目前市场上还没有产品采用这个方法)。这里主要分享超级电容和分离式电容。

(1)超级电容
超级电容是通过极化电解质实现储存能量的电化学元件。它可以在较小的三维空间存储惊人的能量。基于超级电容的掉电保护电路如上图所示。

由于设计基于超级电容的掉电保护电路相对简单,所以大多数的企业级SSD也是采用这个方法。但是超级电容想要在企业级SSD的应用中立于不败之地,并不容易。

超级电容会随着时间的增加,容量减小,并且电解液也会因为泄露和扩散而不断流失。温度对超级电容的影响不容忽视,环境温度每上升10度,超级电容的寿命就会折半。

超级电容大多数是铝电解电容。虽然铝电解电容具有较高的电容体积比,但是与所有的电解电容一样,铝电解电容同样具有可靠性顾虑。


分离式电容会增加电路设计的复杂性,不过会克服超级电容可靠性的限制。基于分离式电容的掉电保护电路是采用了一系列的分离式电容并联,如下图。


(2)分离式电容

分离式电容主要有氧化铌电容和聚合钽电容。这些电容不像超级电容那样采用电解液,所以不会有泄露相关的问题。氧化铌电容和聚合钽电容的环境温度可以达到85度。从这个角度讲,分离式电容更加利用企业级SSD的应用。

选择超级电容还是分离式电容,需要应用者根据成本与可靠性作出折中的决策。

2.关闭“回写缓存”(write-back caching)功能
我们先回顾一下什么叫write-back caching。看下图:

在Host写入SSD数据的整个流程是这样的:
(1)Host触发写入命令,并传入数据;
(2)SSD接收到数据之后,把数据放到DRAM缓存中,并开始写入NAND闪存;
(3)SSD发送完成报告给Host(注意,这时Data还没真正写入NAND闪存,SSD已经发送完成报告了);
(4)来自DRAM缓存的数据,这时才真正写入NAND闪存;
(5)NAND闪存完成数据写入之后给主控报告。

这样的一个过程,我们就称为write-back caching。

假设,系统在第(4)步掉电了,这时Host已经接收到完成报告,就认为数据已经写到了NAND闪存。但现实是骨感的,数据还在路上,这样,数据肯定丢失了。Host再去读它自己认为已经写好的数据,那么SSD会返回数据错误或者数据丢失。

如果,我们把这个功能关掉,把上面的流程调整一下:
(1)Host触发写入命令,并传入数据;
(2)SSD接收到数据之后,把数据放到DRAM缓存中,并开始写入NAND闪存;
(3)来自DRAM缓存的数据,这时才真正写入NAND闪存;
(4)NAND闪存完成数据写入之后给主控报告;
(5)SSD发送完成报告给Host。

关掉write-back caching之后,SSD要等到全部数据真正写入NAND闪存之后才会给Host发送完成报告, 这样,Host就不会错误的读取信息了。但是这样的做法会降低SSD的写入性能。在应用过程中,需要使用者作出折中的方案。

【结语】
掉电保护对企业级SSD尤为重要,目前掉电保护的措施有:
1.增加电源储存电路(power hold-up circuit),电容可以超级电容或者分离式电容。
2.关闭“回写缓存”(write-back caching)功能。

研发更加有效的掉电保护技术是一门科学,更是一门艺术,让我们拭目以待新科技。



相关文章
|
6月前
|
存储 算法 索引
【头歌·计组·自己动手画CPU】三、存储系统设计(HUST)(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】三、存储系统设计(HUST)(理论版) 【计算机硬件系统设计】
519 1
|
6月前
|
存储
【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】
588 2
|
6月前
|
存储 人工智能 BI
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
415 1
|
6月前
|
数据采集 算法 C++
物理电学的编程
物理电学的编程
46 1
|
6月前
|
存储 缓存 并行计算
【软件设计师备考 专题 】CPU和存储器的组成、性能和基本工作原理
【软件设计师备考 专题 】CPU和存储器的组成、性能和基本工作原理
107 0
|
存储 缓存 固态存储
面对SSD的步步紧逼,HDD依然奋斗不息
固态硬盘的步步紧逼,机械硬盘厂商也不会坐以待毙等着被SSD取代。HDD的厂商也在不断的创新,增加HDD的竞争优势。
|
存储 缓存 Java
程序员需要了解的硬核知识之磁盘
此篇文章是 《程序员需要了解的硬核知识》系列第四篇,历史文章请戳 程序员需要了解的硬核知识之内存 程序员需要了解的硬核知识之CPU 程序员需要了解的硬核知识之二进制 我们大家知道,计算机的五大基础部件是 存储器、控制器、运算器、输入和输出设备,其中从存储功能的角度来看,可以把存储器分为内存和 磁盘,内存我们上面的文章已经介绍过了,那么此篇文章我们来介绍一下磁盘以及内存和磁盘的关系。
117 0
程序员需要了解的硬核知识之磁盘
|
前端开发 异构计算 内存技术
一文读懂计算机系统中常见的带宽
什么是带宽 带宽应用的领域非常多,可以用来标识信号传输的数据传输能力、标识单位时间内通过链路的数据量、标识显示器的显示能力。
|
Linux C++ Windows
「平淡无奇小天才」:两块C++代码结合ASCII码,即可实现Nvidia光线追踪技术
最近,Reddit上一则项目帖子引起了大家的热烈关注,此项目利用ASCII码实现了光线追踪技术,而众所周知,这项技术原本是只有Nvidia显卡才能做到的。不仅如此,整个项目的代码还非常的简洁。看到这里,想试试吗?
130 0
「平淡无奇小天才」:两块C++代码结合ASCII码,即可实现Nvidia光线追踪技术
|
存储 数据中心
互联网时代下机械硬盘的发展史(上)
互联网时代下机械硬盘的发展史
266 0
互联网时代下机械硬盘的发展史(上)