王志強 左清清 劉陶
由于NAND Flash存儲器因本身工藝特性,有時會發生位翻轉現象,即一個比特位的值由0翻轉為1,或由1翻轉為0。NandFlash芯片位翻轉為芯片固有特性,發生概率極低。機載計算機電子盤在用戶使用過程中若發生文件系統關鍵數據錯誤,則會導致文件系統掛載不成功。本文通過分析一例Flash位翻轉故障,對電子盤進行了設計改進,避免了Flash位翻轉時導致文件系統故障。
故障情況
用戶首先選中多個文件夾進行刪除,當執行第3次刪除操作時,遠程系統瀏覽器彈出“無法刪除文件”提示,關閉提示對話框后,立刻進行單個文件夾刪除操作,遠程系統瀏覽器仍然彈出“無法刪除文件”提示;給產品下電,隨后重新上電,產品重啟過程中報告文件系統無法掛載,并且無法通過遠程系統瀏覽器連接產品上的文件系統。
故障分析
在對本故障件加電測試過程中,對存儲文件系統管理數據的頁數據進行分析,發現讀出的數據中有一處數據發生從0xD4到0x54的跳變,其二進制表示為0b110101000b01010100,可確定此處數據發生1bit從1到0的翻轉,錯誤KEY值,如圖1所示。

如果模塊具有ECC校驗能力,可對單頁中出現的少量數據位錯誤進行性檢測和糾正。故障模塊配套邏輯不具備ECC校驗能力,讀取電子盤中spare區(存儲ECC校驗結果)數據,發現數據均為0xFF,即未進行ECC校驗。因此,當NandFlash中發生位翻轉時,無法對ECC校驗進行糾錯,而該位數據剛好是文件系統索引關鍵數據,所以最終引起了文件系統掛載不成功。
NandFlash存儲器中每個存儲單元由源極、漏極和柵極組成。柵極與硅襯底之間通過二氧化硅絕緣層來保護浮置柵極中的電荷不會泄漏。NandFlash為電壓型控制器件,其擦和寫均是基于隧道效應,電流穿過浮置柵極與硅基層之間的絕緣層,對浮置柵極進行充電(寫數據)或放電(擦除數據)。
在芯片的使用和存儲過程中,NAND Flash由于本身的內在固有特性,會出現位翻轉現象,隨著擦除和編程次數的增多,會加劇某些存儲單元“位翻轉”現象的發生。因此,在使用過程中通常需要視情況增加ECC校驗功能。ECC(Error Checking and Correction)是一種用于NAND的差錯檢測和糾正算法,它將數據塊看作一個矩陣,利用矩陣的行、列奇偶信息生成ECC校驗碼,可對單頁中出現的少量數據位錯誤進行檢測和糾正,有效避免因NandFlash偶發位翻轉引起的錯誤。
改進
NandFlash芯片位翻轉為芯片固有特性。通過增加ECC校驗,能夠在發生NandFlash芯片發生“位翻轉”時進行糾錯,避免文件系統發生異常。更改軟件設計,當執行電子盤讀操作時,根據電子盤控制邏輯返回值判斷NandFlash是否發生不可校驗的位翻轉現象。若NandFlash發生不可校驗的位翻轉現象,則將相關信息存儲在子卡模塊的NvRAM中。
NandFlash芯片位翻轉為芯片固有特性,發生概率極低。但是通過增加ECC校驗,能夠在發生NandFlash芯片發生“位翻轉”時進行糾錯,避免文件系統發生異常。本文通過分析Flash芯片位翻轉故障,對電子盤模塊進行了設計改進,避免故障再次發生,希望此分析及改進過程對閱讀者有所幫助。