01 记忆与遗忘
正如艾宾浩斯记忆曲线所示:输入的信息经过人脑的注意过程后被学习,学习的信息进入人脑短时记忆。遗忘在学习后立即开始,若不及时加以复习,短时记忆中的信息就会被遗忘;但遗忘的速度并不均衡——遵循先快后慢的原则。
任何记忆体都会遗忘,闪存也不例外。对于闪存,通常用出错率(RBER)来衡量其对数据的遗忘程度。出错率小于ECC纠错能力的可以被纠错,反之则没法纠错。没法纠错的数据就相当于被“遗忘”了。
影响闪存遗忘的因素主要有以下三种:
1.1 Read Retry
一般来说,闪存都是用默认的读取参考电压(Default Vread,简称DVread)来读取。用默认Vread读取的出错率称之为DRBER。采用最优的Vread读取的数据的出错率为最优RBER,记为ORBER。相同条件下,ORBER通常比DRBER要小很多。
下图为某一款闪存在1000P/E cycles,1年40℃保持时间下,某一个Block中所有Frame的出错率频度统计。其中Frame大小为1Kbyte+Parity。
纵坐标是对应RBER的Frame个数。ECC是ECC纠错能力。从上图可以看出,DRBER很多都不能被ECC引擎纠错。如果DRBER不能被ECC引擎纠错,那么就会启动Read Retry流程。Read Retry就是逐步逼近ORBER的过程。
下图说明了Read Retry的实际效果。DR是默认Vread。虚线是之前的阈值分布,实线是现在的阈值分布。区域A是默认读的出错数,区域B+A是当前默认Vread读出数据的出错bit数。区域B就是增加的错误bit数。可以看出,默认读出错的增加是很恐怖的。所以需要Read Retry。
而区域C和区域D则是前后最优Vread下出错的个数。很显然,不管是增加的出错数还是绝对出错数都是很少的。
总结:Read Retry可以减少数据出错率,使得数据出错率趋近ORBER。
1.2 Retention与P/E cycle
P/E cycle和Retention时间是经常一起出现的一对。很难脱离一个来说明另一个对出错率的影响。由于DRBER变化过于剧烈,实际中倾向于用ORBER来衡量出错率。
下图是以Retention Time这个维度来看一个Block平均ORBER的变化趋势。(最大值离散性比较大,不容易看出规律)
从图上可以看出,出错率随着时间的增加而增加,然后增加量却在减小。P/E cycle越大,增加的速度也越大。
这个趋势跟遗忘曲线正好反过来。这一点很好理解。出错越多,那么遗忘度就越多。一开始出错增加很快,遗忘率就下降很快。
用对数函数来很好的拟合这个增减率:
如果用P/E cycle这个维度来看待一个Block的平均ORBER,那么情况会变得更加有趣。下图是不同Retention时间下,出错率跟P/E cycle的关系:
如图中所示,在P/E cycle大于100的时候,出错率跟P/E cycle几乎是呈线性。总结:P/E cycle越大,Retention时间越长,出错率就越大,遗忘的信息也就越多。
1.3 温度
温度加剧了混乱度,温度对混乱度的加剧可以用著名的阿伦尼乌斯公式(Arrhenius equation )来定量描述:
这个公式说明对于温度T1下,保持时间t1等效于温度T2下等效的保持时间t2。简单的来说,就是对于Flash的出错率来说,在温度T1下保持t1时间,跟T2下保持t2时间是等效的。
不过这个公式不能直观的看出温度的“威力”。下表可以充分展示这种威力。
上表可以看出,120℃下,保持1个小时,相当于常温20℃下保持7.37年。
总结:高温是闪存遗忘的一个重要原因,温度越高,闪存遗忘信息也就越快。
02 延缓遗忘的做法
我们人类延缓遗忘的有效方法就是复习。而闪存延缓遗忘的办法更多,主要有以下几种:
1. 增加ECC的纠错能力
这一点本质上是延缓了Flash的遗忘。纠错能力强了,那么可以保持的时间就更久。
2. 刷新
时不时的去读一下闪存,如果发现数据出错超过一个阈值,那么就把这些数据读出来,重新写入Flash的另一个Block。
3. Read Retry
Read Retry可以减少数据出错率,使得数据出错率趋近最小出错率。
4. 降低温度
降低温度是一个有效的办法,只是对于普通存储来说,降低温度成本较高。
硅格(SiliconGo)是得一微电子(YEESTOR)旗下全自主工业存储品牌,提供全系列工业用存储解决方案,专为工规/车规应用而设计打造。产品覆盖2.5寸SATA SSD、mSATA SSD、M.2 SSD、U.2 SSD、BGA SSD、eMMC等规格类型,皆搭载得一微自研的主控芯片,具备完全自主知识产权。适用于各种极端环境,广泛应用于轨道交通、工业电脑、服务器、视频监控、网络通讯、电力能源、智能家居、车载等多个领域。