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