NAND Flash管理算法的設計及實(shí)現
圖4中同時(shí)給出了Spare的區定義,其中兩字節用于標識本物理塊所對應的母塊;兩字節用于標識本物理塊對應的邏輯塊;一字節用于標識本物理頁(yè)對應的邏輯頁(yè),一字節用于標識連續邏輯頁(yè)數(表示上面連續邏輯頁(yè)的個(gè)數,此域可以輔助加快建立頁(yè)映射表的時(shí)間),余下的10字節用于存放ECC,這樣可以達到4字節錯誤的糾錯能力。一般情況下,前面的4個(gè)字節是建立塊地址映射表的關(guān)鍵,其次,后面兩個(gè)字節則是建立頁(yè)地址映射表的關(guān)鍵。
2.4 頁(yè)映射表建立時(shí)間的優(yōu)化
因為建立頁(yè)映射表需要讀取母塊和子塊中各物理頁(yè)spare區以判定該物理頁(yè)對應的邏輯頁(yè),而每個(gè)物理頁(yè)的讀取都要花費大約50μs的時(shí)間。因此,如果對每個(gè)物理頁(yè)都讀取,建立頁(yè)映射表就會(huì )比較費時(shí)。為了加快建立頁(yè)映射表的速度,一般只希望能讀取一個(gè)物理頁(yè),而免于讀取其他若干頁(yè),以便加快建表速度。因為很多時(shí)候都是連續寫(xiě),而連續的幾個(gè)物理頁(yè)在邏輯上也是連續的,因此可以考慮在spare區加入連續邏輯頁(yè)號,這樣,重新建表時(shí),就可根據連續頁(yè)號知道連續幾個(gè)物理頁(yè)對應的邏輯頁(yè),從而加快建表的速度。對于最佳情形,有時(shí)只需要讀一個(gè)頁(yè)就可以建立整個(gè)邏輯塊的頁(yè)映射表。圖5所示是一種加快建表的示意圖。
2.5 分區
不同的flash,塊數是不同的,其塊映射表需要的RAM空間也不一樣。對于當前主流flash,有的具有8192個(gè)塊,如果對整個(gè)flash建表,需要的RAM空間將多達32KB,這樣芯片成本就會(huì )比較高。一個(gè)可行的解決辦法是對flash分區,比如1024個(gè)塊為一個(gè)分區,每次只對一個(gè)分區進(jìn)行建表,這樣,RAM空間就可以降低到4KB。這樣,隨著(zhù)將來(lái)flash容量的增加,塊數即使再多,也能夠用同樣的方法處理,而不用增大RAM。
3 結束語(yǔ)
本文介紹了一種針對MLC flash的優(yōu)異管理算法及軟件實(shí)現方法,并且已在SD卡上大規模商用。該算法只需簡(jiǎn)單配置就能支持市場(chǎng)上的各種flash,而且也兼容各種SD設備。同時(shí)RAM空間需求小,成本低,壽命長(cháng),兼容性好,擴展性強,flash空間利用率高,具有很高的商用價(jià)值。
評論