Nand Flash的擦寫(xiě)次數(shù)與使用壽命
Nand Flash因?yàn)槠潆姎馓匦?,讀和寫(xiě)是按頁(yè)來(lái)讀取的,而擦除是按照塊來(lái)擦除的,了解這些,我們就比較容易去理解Nand Flash的擦寫(xiě)次數(shù)與使用壽命。
通常,一個(gè)對(duì)NAND的寫(xiě)操作包括如下步驟:
1) 從NAND中讀取一個(gè)頁(yè)面,內(nèi)容放入NANDflash的寄存器中。
2) 更新寄存器中的內(nèi)容
3) 找一個(gè)空白頁(yè)
4) 把寄存器中的內(nèi)容寫(xiě)入空白頁(yè)
5) 把先前的頁(yè)面標(biāo)記為無(wú)效頁(yè)
最終,Garbage Collector會(huì)把無(wú)效頁(yè)面并入同一塊中,然后擦除這個(gè)無(wú)效塊,以備今后使用。
了解的上述NAND讀寫(xiě)的原理,我們就可以計(jì)算正常情況下NAND分區(qū)的使用壽命。Flash都有擦寫(xiě)的上限,通常標(biāo)記為P/E門(mén)限。大多數(shù)商用的NAND flash門(mén)限可以支持10萬(wàn)次P/E cycles, 超過(guò)這個(gè)門(mén)限,flash無(wú)法保證其存儲(chǔ)數(shù)據(jù)的完整與正確性。
基于NAND的嵌入式文件系統(tǒng)通常都運(yùn)用一種叫做wear leveling的技術(shù),使得對(duì)每一塊的讀寫(xiě)在整個(gè)NAND分區(qū)中均勻分布。并且通過(guò)壞塊管理來(lái)把寫(xiě)失敗的塊標(biāo)記為壞塊。這些技術(shù)可以充分利用全部存儲(chǔ)空間,有效提高NAND flash的壽命。
基于此,預(yù)期的NAND使用壽命可以通過(guò)如下公式計(jì)算出來(lái)。
Expected lifetime (in days) =
EFS Partition size (in Bytes) x Number of Program/Erase cycles x Overhead ratio /
File size written (bitrate in Bytes/sec) x 24 hours x 60 min x 60 sec
需要注意兩點(diǎn),
1) Overhead ratio 是文件系統(tǒng)的開(kāi)銷。
2) FileSize written應(yīng)該考慮頁(yè)面的大小。比如說(shuō)flash的頁(yè)面大小是1024 Bytes, 一個(gè)應(yīng)用每一秒鐘寫(xiě)一次flash, 每次一個(gè)字節(jié),F(xiàn)ile size written 應(yīng)該是1024, 而不是1。
編輯:admin 最后修改時(shí)間:2023-03-01