NAND FLASH扇區(qū)管理
首先需要了解NAND FLASH的結構。如圖:
本文引用地址:http://m.butianyuan.cn/article/201610/307386.htm以鎂光MT29F4G08BxB Nand Flash為例,這款Flash(如上圖)以4個扇區(qū)(sector)組成1個頁(page),64個頁(page)組成1個塊(block),4096個塊(block)構成整個Flash存儲器;由于每個扇區(qū)的容量是512 字節(jié)(bytes),整個Flash容量為4224M Bit(相當于528M字節(jié)),去掉備用區(qū)域用于存放ECC數據校驗16M(虛線部分),就是這個片子的容量512M字節(jié)。其他型號的Flash也是同樣由扇區(qū)組成頁、由頁組成塊、塊組成整個存儲設備,只是扇區(qū)、頁、塊的數量多少有區(qū)別而已。
在Flash的生產制造過程中,由于生產工藝的缺陷,很容易在Flash中產生不能使用的壞區(qū)域,如果在U盤中要使用這樣的Flash,就必須使用所謂的“量產工具”;U盤量產工具其實就是一種集壞區(qū)域掃描和Flash管理系統(tǒng)裝載于一身的工具。常規(guī)U盤主控的掃描是以塊為單位,掃描即往每一個塊里寫入數據,然后將讀出的數據與寫入的數據比較,如果數據有誤則把該塊標為“壞塊”。掃描完成后就是將Flash管理系統(tǒng)裝載到Flash里面,Flash管理系統(tǒng)就會利用掃描產生的壞塊表對整個Flash進行讀寫管理,這樣就完成了整個量產動作,U盤也就可以正常使用了。所以U盤顯示的容量與實際所用的Flash容量差異來源于不能存儲信息的壞塊和Flash管理系統(tǒng)的占用塊。壞塊越多,做出的U盤容量越低;而Flash管理系統(tǒng)占用的塊是沒有辦法避免,就像我們的電腦安裝操作系統(tǒng)要占用硬盤空間一樣。
當然這里還涉及到一個ECC糾錯能力的問題,假設對這個Flash進行掃描的定義的ECC糾錯能力為1bit,只有數據出現超過1bit錯誤的塊才會被標記為壞塊。這個時候需要區(qū)分塊糾錯和扇區(qū)糾錯的差別,假設任何一個塊里有任何一個扇區(qū)(512bytes)存在超出1bit的錯誤,常規(guī)主控在掃描的時候就會判斷整個塊為壞區(qū)域,這樣將損失整個塊128Kbytes的容量;但是當使用扇區(qū)糾錯的主控時,同樣1bit ECC糾錯,他會直接去判斷這個塊里哪些是超出1bit錯誤的扇區(qū),從而將其剔除,損失的只是每個真正有錯誤扇區(qū)的512bytes容量,從而保留了其余沒有錯誤的扇區(qū),這樣Flash的利用率可以得到極大的提高。
評論