本文档将讨论在驱动器出现故障之前计算可写入LabVIEW Real-Time系统驱动器(如PXI/PXIe或cRIO 9803)的数据量时,多个因素对驱动器耐久性公式产生的影响。
在为应用程序恰当选择基于闪存的存储设备时,通常需要权衡成本、容量和耐用性。例如,虽然基于单级单元(SLC)的驱动器耐久性更高,使用寿命更长,但每GB的价格也比基于多级单元(MLC)的驱动器更加昂贵。然而,基于MLC的驱动器使用寿命远远不如SLC驱动器,在高温下存储时尤其容易出现问题。为了更好地确定应使用何种类型的闪存,我们需要了解每种方案的预期使用寿命,并将其与应用程序的要求进行比较。首先提出以下问题:
在各种运行和存储条件下计算SSD的精确耐久性非常复杂,并且涉及许多具有测量和统计属性的因素。
但是,预期驱动器耐久性的代表性范例如下:
其中
驱动器耐久性=驱动器写入中可写入的数据总量
闪存单元耐久性=指定闪存架构的最大编程/擦除(P/E)循环数
STF=存储时间系数,调整存储时长
AT=温度加速度系数,调整存储温度
WAF=写入放大系数,调整闪存的利用率
SSD通常利用NAND闪存将数据存储在由浮栅晶体管组成的单元中。 每个单元中存储的电荷量决定了数据的值。 只要电荷足以确定单元的状态,或者可以通过使用纠错码(ECC)进行纠正,就可以保持数据完整性。 每个单元中存储的数据位数以及可写入该单元的次数取决于闪存设备所用的结构。
闪存架构 | 单元层数 | 每个单元的数据位数 | 单元电压状态数 | 单元耐久性1(P/E循环) |
---|---|---|---|---|
平面SLC | 1 | 1 | 2 | ~100,000 |
平面MLC | 1 | 2 | 4 | ~3,000 |
平面eMLC/iMLC/pSLC | 1 | 1 | 2 | ~20,000 |
平面TLC | 1 | 3 | 8 | <1,000 |
垂直SLC | 可变,通常为64 | 1 | 2 | TBD2 |
垂直MLC | 可变,通常为64 | 2 | 4 | TBD2 |
1耐久性假定单元使用寿命结束时在40°C的存储环境中数据保存超过1年
2垂直SLC和MLC闪存的耐久性预计与平面闪存相似
单元耐久性是指在数据无法再充分保留且单元出现故障之前闪存单元可实现的编程/擦除(P/E)循环数。 每次写入闪存单元时(一个P/E循环),该单元的氧化物层都会有一些退化。 由于该层在受到P/E循环的压力后会变弱,存储的电荷便更容易泄漏,单元保存数据的能力有所降低。
每个单元的电荷水平必须保持在一定阈值内,才能保持数据完整性。 但遗憾的是,随着时间的推移,电荷会从闪存单元中泄漏,如果电荷损耗太多,那么存储的数据也会丢失。
在正常操作期间,闪存驱动器固件会定期刷新单元以恢复损耗的电荷。 但是,当闪存不上电时,电荷状态会随时间自然退化。 电荷损耗的速率以及闪存对这种损耗的敏感性会受到闪存结构、闪存磨损量(在单元上执行P/E循环的次数)和存储温度的影响。 闪存单元耐久性规格通常假定驱动器使用寿命结束时数据保存时间至少为12个月。
对于其他时长,可以使用存储时间系数(STF)来调整驱动器耐久性公式。 衡量STF的公式是存储时长除以标准12个月。 例如,如果需要36个月的存储时长,则STF将为3(36个月/12个月)。 下面列出了各种存储时长的STF值:
存储时长 | STF |
---|---|
1个月 | 0.08 |
3个月 | 0.25 |
6个月 | 0.5 |
1年 | 1 |
3年 | 3 |
5年 | 5 |
10年 | 10 |
尽管运行环境温度和非运行环境(存储)温度都会影响数据保存时间,但在计算驱动器耐久性时,非运行环境温度所产生的影响比较大。
较低的存储温度会延长数据保存时间,而较高的存储温度会大幅降低数据保存时间。 例如,将存储温度从40°C升高到70°C可能会使驱动器的耐久性降低一个数量级以上,从而导致驱动器使用寿命结束时数据保存时间仅为数周而并非一整年。
温度加速度系数(AT)可用于调整存储温度。 该值从阿伦尼乌斯公式得出,总结如下表所示:
存储温度(°C) | AT |
---|---|
25 | 0.13 |
30 | 0.26 |
40 | 1 |
55 | 6.4 |
70 | 35 |
85 | 168 |
有关温度对闪存耐久性和数据保存时间的影响以及如何计算AT的更多信息,请参阅温度对SSD耐久性的影响。
闪存的利用率较低,通常效率不高,进而导致驱动器磨损加剧。 写入放大系数(WAF)表示闪存的利用率,其中WAF越高,效率越低。 可通过多种因素来确定WAF,其中一些由应用程序确定:
通常,较大的顺序写入要比较小的随机写入更加高效。 虽然为工业或嵌入式应用程序设置WAF没有固定公式,但可以将JEDEC应用程序工作负载标准作为备用(有关详细信息,请参见JEDEC JESD218和JESD219)。 企业级闪存用随机数据表示各种文件大小,而客户端级闪存
此外,驱动器固件通过损耗均衡和智能数据块管理功能来管理闪存利用率,相应的管理成效也会影响WAF。 由于WAF高度依赖于应用程序工作负载和驱动器固件,有时也会使用WAF = 4这一”经验法则”。
工作负载 | 访问类型 | 常规WAF |
---|---|---|
企业级(JESD219) | 跨SSD存储的随机数据 | ~15 |
“经验法则” | 当没有其他模型可用时,混合使用随机数据和顺序数据作为WAF的近似值 | 4 |
客户端级(JESD219) | 消费类笔记本电脑的典型负载,主要由长顺序写入(例如照片、音乐)和一些较小的随机访问组成 | ~2 |
全顺序 | 所有写入均按大文件顺序执行 | ~1 |
直接测量驱动器性能可以更精确地确定WAF。通过运行几个小时的应用程序并测量写入驱动器的实际数据量和执行的P/E循环,可以计算指定闪存和应用程序用例的WAF。 考虑到WAF对驱动器耐久性的影响,强烈建议对应用进行分析,从而确定其WAF。
了解闪存单元耐久性、存储时间系数、温度放大系数和写入放大系数后,就可以确定驱动器耐久性。
回顾驱动器耐久性公式:
非运行环境(存储)温度为40°C的64 GB SLC SSD,采用流式数据记录(顺序写入),理想数据保存时间为1年。 SLC闪存单元的耐久性为100,000个P/E循环,STF和AT均为1(因为我们在40°C的1年基准期内),且“全顺序”模型的WAF为1。
生命周期终止前的总写入字节数 = 64 GB x 100,000次驱动器写入 = 6400 TB
非运行环境(存储)温度为55°C的64 GB SLC SSD,采用流式数据记录(顺序写入),理想数据保存时间为1年。 SLC闪存单元的耐久性为100,000个P/E循环,STF为1,55°C时AT为6.4,“全顺序”模型的WAF为1。
生命周期终止前的总写入字节数 = 64 GB x 15,614次驱动器写入 = 1000 TB
非运行环境(存储)温度为55°C的128 GB eMLC SSD,写入配置文件未知,理想数据保存时间为24个月。eMLC闪存单元的耐久性为20,000个P/E循环,STF为2(24/12个月),存储温度为55°C时AT为6.4,采用“经验法则”模型的WAF为4。
生命周期终止前的总写入字节数 = 128 GB x 390次驱动器写入 = 50 TB
非运行环境(存储)温度为70°C的480 GB MLC SSD,采用流式数据记录(顺序写入),理想数据保存时间为3个月。 MLC闪存单元的耐久性为3,000个P/E循环,STF为0.25(3/12个月),在存储温度为70°C时AT为35,“全顺序”模型的WAF为1。
生命周期终止前的总写入字节数 = 480 GB x 342次驱动器写入 = 164 TB
利用驱动器耐久性公式,可根据应用程序的环境和性能系数来调整驱动器规格。
但遗憾的是,在指定驱动器耐久性方面并没有整齐划一的方法。 一些数据表仅会列出驱动器容量和闪存技术,而其他数据表会列出特定测试条件下的特定驱动器耐久性规格。这些规格可能会列出用于计算的存储温度和数据保存时间,但通常未明确说明此信息。 如未指定,则可假定存储温度为40°C,数据保存时间为1年。
该驱动器的数据表列出了以下规格:
闪存类型 | SLC |
---|---|
驱动器容量 | 64 GB |
耐久性:总写入字节数(企业级) | 500 TB |
耐久性:总写入字节数(客户端级) | 3855 TB |
目标应用程序的存储温度为55°C,预期存储时间为1年,并且与消费类存储设备的使用方式相似。
我们可以分析数据表,并确定在SLC(10万个P/E循环)下,企业级和客户端级闪存的有效WAF分别为12.8和1.7。 由于目标应用程序与消费类设备相似,我们可以使用1.7的客户端级WAF和3855 TB(或6万次驱动器写入)的相应耐久性规范。
接下来,我们需要调整存储温度和时长。 可以通过以下公式计算得出:
假定存储温度为40°C (ATSPEC = 1),时长为1年(STFSPEC = 1)且WAFSPEC为1.7,指定的耐久性应为3855 TB。 目标应用的存储温度为55°C (ATADJ = 6.4),时长为1年(STFADJ = 1)且WAFADJ为1.7。 那么,调整后的驱动器耐久性规格为: