王志強 左清清 劉陶
由于NAND Flash存儲器因本身工藝特性,有時會發(fā)生位翻轉(zhuǎn)現(xiàn)象,即一個比特位的值由0翻轉(zhuǎn)為1,或由1翻轉(zhuǎn)為0。NandFlash芯片位翻轉(zhuǎn)為芯片固有特性,發(fā)生概率極低。機載計算機電子盤在用戶使用過程中若發(fā)生文件系統(tǒng)關(guān)鍵數(shù)據(jù)錯誤,則會導(dǎo)致文件系統(tǒng)掛載不成功。本文通過分析一例Flash位翻轉(zhuǎn)故障,對電子盤進行了設(shè)計改進,避免了Flash位翻轉(zhuǎn)時導(dǎo)致文件系統(tǒng)故障。
故障情況
用戶首先選中多個文件夾進行刪除,當(dāng)執(zhí)行第3次刪除操作時,遠程系統(tǒng)瀏覽器彈出“無法刪除文件”提示,關(guān)閉提示對話框后,立刻進行單個文件夾刪除操作,遠程系統(tǒng)瀏覽器仍然彈出“無法刪除文件”提示;給產(chǎn)品下電,隨后重新上電,產(chǎn)品重啟過程中報告文件系統(tǒng)無法掛載,并且無法通過遠程系統(tǒng)瀏覽器連接產(chǎn)品上的文件系統(tǒng)。
故障分析
在對本故障件加電測試過程中,對存儲文件系統(tǒng)管理數(shù)據(jù)的頁數(shù)據(jù)進行分析,發(fā)現(xiàn)讀出的數(shù)據(jù)中有一處數(shù)據(jù)發(fā)生從0xD4到0x54的跳變,其二進制表示為0b110101000b01010100,可確定此處數(shù)據(jù)發(fā)生1bit從1到0的翻轉(zhuǎn),錯誤KEY值,如圖1所示。
如果模塊具有ECC校驗?zāi)芰?,可對單頁中出現(xiàn)的少量數(shù)據(jù)位錯誤進行性檢測和糾正。故障模塊配套邏輯不具備ECC校驗?zāi)芰?,讀取電子盤中spare區(qū)(存儲ECC校驗結(jié)果)數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)均為0xFF,即未進行ECC校驗。因此,當(dāng)NandFlash中發(fā)生位翻轉(zhuǎn)時,無法對ECC校驗進行糾錯,而該位數(shù)據(jù)剛好是文件系統(tǒng)索引關(guān)鍵數(shù)據(jù),所以最終引起了文件系統(tǒng)掛載不成功。
NandFlash存儲器中每個存儲單元由源極、漏極和柵極組成。柵極與硅襯底之間通過二氧化硅絕緣層來保護浮置柵極中的電荷不會泄漏。NandFlash為電壓型控制器件,其擦和寫均是基于隧道效應(yīng),電流穿過浮置柵極與硅基層之間的絕緣層,對浮置柵極進行充電(寫數(shù)據(jù))或放電(擦除數(shù)據(jù))。
在芯片的使用和存儲過程中,NAND Flash由于本身的內(nèi)在固有特性,會出現(xiàn)位翻轉(zhuǎn)現(xiàn)象,隨著擦除和編程次數(shù)的增多,會加劇某些存儲單元“位翻轉(zhuǎn)”現(xiàn)象的發(fā)生。因此,在使用過程中通常需要視情況增加ECC校驗功能。ECC(Error Checking and Correction)是一種用于NAND的差錯檢測和糾正算法,它將數(shù)據(jù)塊看作一個矩陣,利用矩陣的行、列奇偶信息生成ECC校驗碼,可對單頁中出現(xiàn)的少量數(shù)據(jù)位錯誤進行檢測和糾正,有效避免因NandFlash偶發(fā)位翻轉(zhuǎn)引起的錯誤。
改進
NandFlash芯片位翻轉(zhuǎn)為芯片固有特性。通過增加ECC校驗,能夠在發(fā)生NandFlash芯片發(fā)生“位翻轉(zhuǎn)”時進行糾錯,避免文件系統(tǒng)發(fā)生異常。更改軟件設(shè)計,當(dāng)執(zhí)行電子盤讀操作時,根據(jù)電子盤控制邏輯返回值判斷NandFlash是否發(fā)生不可校驗的位翻轉(zhuǎn)現(xiàn)象。若NandFlash發(fā)生不可校驗的位翻轉(zhuǎn)現(xiàn)象,則將相關(guān)信息存儲在子卡模塊的NvRAM中。
NandFlash芯片位翻轉(zhuǎn)為芯片固有特性,發(fā)生概率極低。但是通過增加ECC校驗,能夠在發(fā)生NandFlash芯片發(fā)生“位翻轉(zhuǎn)”時進行糾錯,避免文件系統(tǒng)發(fā)生異常。本文通過分析Flash芯片位翻轉(zhuǎn)故障,對電子盤模塊進行了設(shè)計改進,避免故障再次發(fā)生,希望此分析及改進過程對閱讀者有所幫助。