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