技术分析(3)超级电容的保护策略
我们在SandForce的企业级1xxx和2xxx主控上都会看到超级电容。那么那个电容到底是干啥的哪?最简单的回答就是,掉电保护。
虽然企业级环境下,不管是内部的电源或者外围的组件,稳定性都比消费级来的高档,但是还是不能保证忽然掉电的情况,而由于这类情况而造成的数据丢失更是不可容忍的。企业级SSD就是为这部分突发情况而设计的,一般内部都加上了超级电容之类的保护。
掉电分为间歇性和持续性掉电,主要是因为电源保险丝,线材问题,UPS问题,SSD电压管理模块出错,PCB问题,机械故障或者接口问题甚至环境因素。这类掉电可能导致系统出现延迟(SSD需要内部重建映射表)或者严重的数据丢失问题。
掉电后会发生的常见情况:
当NAND在编程一个Page的时候,整个编程操作必须保证数据完整的写入到这个Page里,如果在这个时候出现掉电情况,那么就可能造成数据出错。对于MLC的NAND来说,造成的问题更严重。因为MLC的NAND在每个单元里存放2bit的数据。(意味着1个物理Page里存放了2个逻辑Page的数据。)当操作高位Page时(第2个逻辑Page)掉电的话,之前完成操作的低位Page(第1个逻辑Page)数据也可能丢失,这就是一个典型的低位Page数据错误例子。这个错误会造成之前写入正确的数据也会因为这次掉电事故而出现错误。SLC的NAND相对来说就没这类问题。
当出现掉电问题后,SSD一般会出现以下3种数据丢失甚至坏盘的问题:
1)丢失数据:这个情况大多是因为数据还在写缓冲区里的关系,之前也说了,写缓冲区是为了提高峰值性能用的。在这个情况下,当SSD主控制器掉电后,写缓冲区里的数据还没有被写入到NAND里,这样就会造成了数据丢失。之后再次开机的话,主控制器可能会报告数据错误(取决于主控制器的算法设计)或者它会给主机之前的过期数据(掉电影响的“扇区”数据),后面这个操作就会造成静态数据错误,因为主控制器并不知道这些扇区内的数据是错误的,所以用户在操作系统里看到的文件虽然存在(例如视频和音乐图片等),但是当双击要播放使用时,却报错了。
2)丢失映射表信息:所有的SSD主控制器都是用映射表信息来操作相对应的逻辑地址和物理NAND位置的。当SSD内的数据需要读取时,必须有相对应的之前生成的并且更新维护过的正确映射表信息,而当数据写入之前写入过的逻辑地址时,映射表信息必须被更新。如果正确的映射表信息因为掉电而丢失了,那么SSD硬盘就会报数据出错,或者数据是“旧”的甚至在下一次上电后整个SSD硬盘都不认了。
3)低位Page出错:MLC或者eMLC的NAND因为在每个物理Page里存放了2个逻辑Page的数据(每个存储单元里可以保存2bit数据。)当进行编程时候,低位Page(逻辑Page低的那个)是先编程的,之后才对高位Page(逻辑地址高的那个)再进行编程。当编程高位Page时,编程所需要的电压同时冲击同一单元下之前已经被编程过有效数据的低位Page上。如果这时候出现掉电,高位Page自然会出错,但是之前已经编程过正确数据的低位Page也会因为这次掉电而造成出错。当低位Page在之后的操作中需要被主机读取时,SSD会报告这个数据是不可恢复的错误。
由于必须满足JEDEC规定的企业级SSD的UBER率的要求,企业级SSD都设计了掉电保护电路来保证掉电后数据和映射表信息不会丢失。
大多数企业级的SSD都有掉电保护电路,当检测到电压低于一个设定的阀值时,就会对SSD主控制器发送预警信号,这时会靠着第二部分的电压保持电路去保证SSD主控制器有足够的时间让缓冲区的数据存进NAND里去。
当主电源因突发事件被切断后,第二个供电电路被激活,供电的可以是超级金属电容,一组分立的氧化铌电容器并联甚至是电池(好像目前没人这样做 =.=)。他们的区别主要是使用环境和稳定性,应该说超级金属电容方案最简单,但是很难保证高温环境下长久使用后的稳定性,而分立的氧化铌电容器稳定性非常好,但是成本高不说,因为单个容量小所以多个组成后占用PCB也是个问题。
小结:电容的容量大小主要取决于需要保护的数据多少(主控内的SRAM或者再加上外部缓存内的数据越多,需要坚持的时间越久,很明显三星有大容量数据缓存,狗皮膏药状的电容非常壮观,而SandForce内部的SRAM容量肯定也大于Intel的老主控内部SRAM容量)。这里的Intel 320的电容方案,损坏一个,另外的可以继续工作,不至于没有保护。另外钽电容相比超级金属电容明显耐温高寿,但是容量就小很多。而在高端SandForce企业级方案内,也会采用像Intel这样的小电容方案。图里的是OCZ_PCEVA_REVIEW VERTEX 3 PRO(低端企业级)。镁光的SSD没有掉电保护,掉电后缓存里最后笔用户数据会丢失。
|