《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 星載高速大容量存儲器文件化壞塊管理設(shè)計
星載高速大容量存儲器文件化壞塊管理設(shè)計
2017年電子技術(shù)應(yīng)用第6期
楊志勇1,,2,董振興1,,2,,朱 巖1,,2,董文濤1
1.中國科學(xué)院國家空間科學(xué)中心,北京100190,;2.中國科學(xué)院大學(xué),,北京100190
摘要: 為保證星載高速大容量存儲器高速穩(wěn)定的存儲速率,需對NAND Flash存儲芯片中因單粒子翻轉(zhuǎn)或超過擦除極限而在寫入時出現(xiàn)的壞塊進(jìn)行管理,。文件化壞塊管理采用鏈表的方式將壞塊,、分流水級未使用塊和分有效載荷數(shù)據(jù)存儲塊分別鏈接成不同的文件,并采用四級流水乒乓緩沖機(jī)制快速替換寫入失敗塊,。運(yùn)行于型號任務(wù)中的文件化壞塊管理,,解決了因數(shù)據(jù)寫入出現(xiàn)壞塊時的存儲速率抖動問題,實現(xiàn)了四倍于單流水級的寫入速率對多有效載荷數(shù)據(jù)分文件進(jìn)行穩(wěn)定存儲,,從而保證了載荷數(shù)據(jù)的正確性和完整性,。
中圖分類號: TN919.5
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.003
中文引用格式: 楊志勇,董振興,,朱巖,,等. 星載高速大容量存儲器文件化壞塊管理設(shè)計[J].電子技術(shù)應(yīng)用,2017,,43(6):11-14.
英文引用格式: Yang Zhiyong,,Dong Zhenxing,Zhu Yan,,et al. Design of file-based bad block management of high-speed large-capacity space-borne storage[J].Application of Electronic Technique,,2017,43(6):11-14.
Design of file-based bad block management of high-speed large-capacity space-borne storage
Yang Zhiyong1,,2,,Dong Zhenxing1,2,,Zhu Yan1,,2,Dong Wentao1
1.National Space Science Center,,Chinese Academy of Sciences,,Beijing 100190,China,; 2.University of Chinese Academy of Sciences,,Beijing 100190,China
Abstract: In order to ensure high-speed stable storage rate of high-speed large-capacity space-borne storage, we must to manage the bad blocks that occur when writing because of single particle flipping and exceeding erase limits in NAND Flash chip. File-based bad block management links all bad blocks of four-level pipeline into one file, links unused blocks of four-level pipeline into four separate files, and links used blocks into many different payload files. In addition, adopting a four-level pipeline ping-pong buffer mechanism replaces the write failure blocks fast. The file-based bad block management, which runs in the model task, resolves the problem of storage rate jitter when the data is written in a bad block, and stores the multi-payload data into different payload files with four times the write rate of one-level pipeline. Therefore, file-based bad block management ensures the correctness and integrity of the payload data.
Key words : high-speed large-capacity space-borne storage,;multi-payload,;pipeline operation;file-based bad block management

0 引言

    星載高速大容量存儲器是衛(wèi)星及其他航天器進(jìn)行信息獲取,、信息處理及信息傳輸?shù)年P(guān)鍵設(shè)備之一,。NAND Flash芯片具有存儲密度大,、接口速率高、非易失性,、低功耗,、抗震性強(qiáng)、工作溫度寬等特點,,是星載高速大容量存儲器的理想存儲介質(zhì)[1-3],。但NAND Flash在空間高能粒子輻射、極高低溫環(huán)境下,,極易出現(xiàn)位翻轉(zhuǎn)錯誤[4-5],,采用錯誤檢測糾正(Error Correcting Code,ECC)技術(shù)對其糾錯可一定程度上保證數(shù)據(jù)的正確性[6-8],。然而,NAND Flash受制造工藝限制,,出廠時存在一定數(shù)量隨機(jī)分布的壞塊[5,,9-10],并且隨著時間的推移,,F(xiàn)lash達(dá)到擦除極限,,壞塊數(shù)量將會不斷增多。壞塊的產(chǎn)生將影響存儲器的存儲速率和存儲信息數(shù)據(jù)的正確性,、完整性,,甚至決定航天探測任務(wù)的成敗。因此,,高效,、可靠的壞塊管理對星載高速大容量存儲器具有重大意義。

1 星載存儲器背景

    隨著空間探測任務(wù)的發(fā)展,,有效載荷產(chǎn)生的數(shù)據(jù)帶寬急劇增大,,存儲速率同樣需要提高,然而NAND Flash固有寫操作特性降低了有效吞吐率,。Flash寫入數(shù)據(jù)分為兩個過程,,首先將命令、地址及數(shù)據(jù)以字節(jié)方式寫入芯片內(nèi)部緩存(即“加載”過程),;其次芯片需要一個內(nèi)部編程過程,,才可確定編程是否成功[11-12]。編程過程中,,芯片不響應(yīng)外部命令,。星載高速大容量存儲器針對Flash寫操作特點,采用四級流水[9,,11]存儲技術(shù),,充分利用芯片編程時間加載其他芯片,實現(xiàn)存儲區(qū)全速無間斷數(shù)據(jù)寫入。圖1為四級流水線寫操作過程,。

htdz3-t1.gif

    空間探測有效載荷不斷增多,,各個有效載荷所產(chǎn)生的數(shù)據(jù)量參差不齊。傳統(tǒng)單分區(qū)環(huán)形隊列順序?qū)懭氲拇鎯芾矸绞?從前往后存儲,,待至存儲空間尾部,,擦除存儲空間首部已寫入塊,使其變?yōu)槲词褂脡K,,以便尾部空間存滿后,,再次從存儲空間首部繼續(xù)存儲)不能適應(yīng)新的需求。若存在兩種不同速率的有效載荷同時產(chǎn)生數(shù)據(jù):高速設(shè)備產(chǎn)生的數(shù)據(jù)存儲滿存儲空間尾部后,,環(huán)形隊列順序?qū)懭氲拇鎯Ψ绞綄⒉脸撞靠臻g,;低速設(shè)備所存儲的數(shù)據(jù)很少,并且由于回放數(shù)據(jù)優(yōu)先級的原因,,存在低速設(shè)備的數(shù)據(jù)未及時回放,,卻被擦除以得到高速設(shè)備存儲新數(shù)據(jù)所需要的未使用塊。

    因此,,傳統(tǒng)的環(huán)形隊列順序?qū)懭氲拇鎯芾矸绞?,不能適用于多載荷。本文所提到的星載高速大容量存儲器,,采用的是四級流水存儲技術(shù),,每一個有效載荷分一個文件的方式進(jìn)行鏈?zhǔn)酱鎯芾怼?/p>

2 傳統(tǒng)壞塊管理

2.1 壞塊替換

    存儲器初始化時,讀取相應(yīng)的塊狀態(tài)信息,,構(gòu)建壞塊表,。數(shù)據(jù)存儲時,根據(jù)壞塊表中信息,,跳過已有的壞塊,。若在存儲塊中寫入數(shù)據(jù)的過程中第n頁失敗則獲得一塊未使用塊,替換正在寫入塊,,并將失敗塊的前n-1頁復(fù)制到有效未使用塊,,并將第n頁及之后的數(shù)據(jù)寫入新塊[7,10,,12-15],。如圖2所示。

htdz3-t2.gif

    傳統(tǒng)的壞塊替換方法是將存儲出錯塊中的有效數(shù)據(jù)復(fù)制到新的替代塊中,,以增加額外的存儲時間開銷來保證數(shù)據(jù)存儲的正確性,。若在存儲塊的尾部出錯,那么將復(fù)制出錯塊近一塊的數(shù)據(jù)到替代塊中,,這大大降低了存儲的速率,。在整個存儲過程中,,由于出錯塊出錯所在的頁數(shù)不同,將會出現(xiàn)存儲速率抖動,。星載高速存儲器不允許存儲速率的抖動,,否則將可能出現(xiàn)數(shù)據(jù)的丟失。

2.2 動態(tài)壞塊管理

    動態(tài)壞塊管理[2,,4-5,,13]將存儲空間分為4個區(qū):數(shù)據(jù)存儲區(qū)、交換塊區(qū),、替換(保留)塊區(qū)[10,,15-16]和壞塊區(qū)。其思想是在存儲器使用過程中出現(xiàn)壞塊,,采用動態(tài)方式標(biāo)記壞塊,,將壞塊加入壞塊映射區(qū),從替換(保留)塊區(qū)選擇有效未使用塊對壞塊進(jìn)行替換,,并更新邏輯-物理塊地址映射表,。若對已寫入數(shù)據(jù)塊修改,需將整個存儲塊的數(shù)據(jù)讀到存儲控制器,,對其數(shù)據(jù)進(jìn)行修改,然后將修改后的數(shù)據(jù)寫入到交換塊區(qū)的存儲塊,,最后更新邏輯-物理塊地址映射表[10,,13]

    動態(tài)壞塊管理對已寫入數(shù)據(jù)的修改方式,,比直接在原存儲塊中寫入速率高,。星載高速大容量存儲器只對有效載荷數(shù)據(jù)存儲,不對數(shù)據(jù)進(jìn)行修改,。同時,,存儲器采用四級流水存儲技術(shù),并對不同的有效載荷分文件進(jìn)行鏈?zhǔn)酱鎯?。因此,,動態(tài)壞塊管理的方法不適合星載高速大容量存儲管理。

2.3 異步壞塊管理

    異步壞塊管理[6]是基于嵌入式文件系統(tǒng)實現(xiàn)讀,、寫,、擦除等請求的壞塊管理緩沖層。文件系統(tǒng)發(fā)出讀,、寫,、擦除等請求,獨立運(yùn)行的異步壞塊管理進(jìn)程將這些請求緩沖到隊列,,并直接向文件系統(tǒng)返回請求執(zhí)行成功狀態(tài),。異步壞塊管理進(jìn)程在響應(yīng)寫請求時,,將其他讀、寫,、擦除請求阻塞,,直到此次寫請求完成為止。當(dāng)執(zhí)行寫請求出現(xiàn)壞塊時,,異步壞塊管理進(jìn)程將復(fù)制已寫入壞塊的數(shù)據(jù)到替代塊中,,并將請求緩沖隊列中相應(yīng)寫請求的數(shù)據(jù)寫入到未使用塊,從而保證數(shù)據(jù)的完整性和正確性,。

    異步壞塊管理中不能同時執(zhí)行讀,、寫、擦除三種類型的請求,,這將降低星載存儲器的數(shù)據(jù)存儲管理性能,;寫入數(shù)據(jù)出現(xiàn)壞塊,讀取已寫入壞塊數(shù)據(jù)將增加星載CPU運(yùn)行內(nèi)存資源消耗,;異步壞塊管理是一種基于嵌入式文件系統(tǒng)的管理算法,,星載存儲器不宜采用不成熟的星載文件系統(tǒng)技術(shù)。因此,,星載高速大容量存儲器不能采用異步壞塊管理方法,。

3 文件化壞塊管理

3.1 塊狀態(tài)信息存儲

    星載高速大容量存儲器,F(xiàn)PGA和CPU協(xié)調(diào)配合共同控制管理數(shù)據(jù)存儲,。存儲器塊狀態(tài)信息存儲在每個塊的空余區(qū),,當(dāng)系統(tǒng)第一次啟動時,F(xiàn)PGA掃描存儲器中所有塊空余區(qū),,獲取所有塊狀態(tài)信息,,并由FPGA組建OBAT(Original Block Allocate Table)存儲到掉電非易失型存儲器MRAM,再由CPU將OBAT從MRAM中讀到CPU運(yùn)行內(nèi)存,,最后由CPU組建成IBAT(Index Block Allocate Table),,并將組建好的IBAT寫回MRAM。系統(tǒng)正常運(yùn)行過程中,,存儲塊狀態(tài)發(fā)生改變,,F(xiàn)GPA修改相應(yīng)塊空余區(qū),并實時維護(hù)MRAM中的IBAT表,。這樣的存儲機(jī)制,,能夠保證大容量存儲管理系統(tǒng)快速可靠的啟動。系統(tǒng)正常斷電,,將CPU運(yùn)行內(nèi)存中的IBAT寫回MRAM,,系統(tǒng)重啟時,CPU直接從MRAM快速讀取IBAT即可,。當(dāng)系統(tǒng)異常斷電啟動,,F(xiàn)PGA校驗MRAM中的數(shù)據(jù),,若校驗成功,CPU直接從MRAM中快速讀取IBAT表即可,;若校驗失敗,,系統(tǒng)的啟動過程和第一次啟動過程一樣。 因此,,系統(tǒng)只是第一次啟動和系統(tǒng)異常斷電校驗失敗時的啟動時間較長,。OBAT表和IBAT表分別如表1、表2所示,。

htdz3-b1.gif

htdz3-b2.gif

    表1,、表2中:(1)塊狀態(tài)表示正常寫入塊、正常替代塊,、正常失敗塊,、替代失敗塊、未使用塊和無效塊,。(2)塊尾頁地址,,表示塊的正常寫入頁地址。(3)文件號,,表示不同有效載荷,。(4)本文件內(nèi)塊計數(shù),表示該文件已經(jīng)寫入的塊數(shù),。(5)本文件下一流水級指針,,即下一流水級的塊序號。

3.2 文件化組織結(jié)構(gòu)

    星載高速大容量存儲器,,為解決低速寫入單塊速率的限制,采用四級流水并行寫入的方式,,以提高系統(tǒng)的存儲速率,。同時,為了對多有效載荷的管理,,存儲系統(tǒng)采用文件化的管理方式,。所謂文件化管理,即根據(jù)不同的有效載荷分不同的文件對其進(jìn)行存儲,,將未使用塊根據(jù)四個流水級分為四個文件進(jìn)行管理,,以及無效塊作為一個文件進(jìn)行管理。

    存儲器系統(tǒng)第一次啟動,,F(xiàn)PGA從塊的空余區(qū)掃描塊狀態(tài)組織成OBAT結(jié)構(gòu)存放于MRAM中,,CPU從MRAM讀取OBAT到內(nèi)存的一塊連續(xù)存儲空間,并由OBAT組建成IBAT,,也是一個文件化的過程,。其OBAT變?yōu)镮BAT,,文件化的過程為:(1)根據(jù)塊狀態(tài)、流水級和文件號分為不同的塊組,;(2)針對各個有效載荷文件,,根據(jù)OBAT中的本文件內(nèi)塊計數(shù)按照從小到大進(jìn)行排序;(3)各有效載荷文件根據(jù)排序結(jié)果,,將OBAT中的塊計數(shù)的存儲位置修改為指向下一流水級的指針,,即塊序號。分流水級的未使用塊和無效塊無需排序,,直接將其修改為后續(xù)的塊序號,。

    OBAT組建成IBAT,得到文件化鏈?zhǔn)酱鎯Y(jié)構(gòu)(如圖3所示)后,,原存放OBAT的連續(xù)內(nèi)存空間大小不改變,,相應(yīng)塊狀態(tài)信息物理位置及序號不變,只是在內(nèi)存中增加了相應(yīng)文件的頭信息(文件ID,、文件大小,、指向第一塊塊序號指針等)。分流水級的未使用塊文件中指針指向本流水級塊序號,,無效塊文件中指針不分流水級,,直接指向無效塊序號。

htdz3-t3.gif

3.3 文件化壞塊替換

    星載高速大容量存儲器,,CPU向FPGA提供有效的未使用塊,,F(xiàn)PGA采用四級流水存儲技術(shù)向未使用塊中寫入數(shù)據(jù),二者協(xié)同配合,,共同實現(xiàn)對有效載荷數(shù)據(jù)高速有效穩(wěn)定的存儲,。FPGA內(nèi)部為每個有效載荷文件創(chuàng)建四級流水乒乓緩沖塊空間,即存放8個塊序號,。CPU和FPGA一致,,創(chuàng)建同樣類似的緩沖塊空間。以某一有效載荷向Flash中寫入數(shù)據(jù)為例:

    (1)系統(tǒng)啟動初始化,,CPU為相應(yīng)文件分配四個流水級的未使用塊序號ABCD,,并發(fā)送給FPGA。如表3所示,。

htdz3-b3.gif

    (2)FPGA將ABCD移入正在寫入塊緩沖空間,,并向CPU申請第0流水級的未使用塊。CPU收到FPGA的申請后,,首先將ABCD添加到文件鏈表,,其次將ABCD移入正在寫入塊緩沖,最后分別從四個流水級未使用塊文件中快速獲得未使用塊EFGH發(fā)送給FPGA,。FPGA將獲得的未使用塊添加到相應(yīng)緩沖空間,,并開始對A塊寫入數(shù)據(jù),。如表4所示。

htdz3-b4.gif

    (3)當(dāng)FGPA再次向CPU正常申請第0水級流未使用塊時,,和上一步驟操作類似,。如表5所示。

htdz3-b5.gif

    (4)若FPGA向第1流水級塊F寫入出錯,,F(xiàn)GPA將J直接作為其替代塊,,將J放入到正在寫入塊緩沖。FGPA向CPU申請?zhí)娲鷫K,,并告知出錯塊的有效尾頁地址,。CPU收到申請后,首先設(shè)置塊F正常失敗狀態(tài)和有效尾頁地址,,其次將J作為F的替代塊,,并將J添加到文件鏈表之后,設(shè)置J的塊狀態(tài)為正常替代塊,,最后從第1流水級未使用塊文件中快速申請塊M,,如表6所示。

htdz3-b6.gif

    (5)當(dāng)后續(xù)正常申請時,,與步驟(2)和(3)的操作相同,。

    當(dāng)出現(xiàn)出錯塊時,保持出錯塊中已寫入數(shù)據(jù)不變,,從出錯塊的出錯頁地址開始向替代塊中寫入數(shù)據(jù),,避免了數(shù)據(jù)存儲過程中的數(shù)據(jù)抖動,保持一定的速率寫入數(shù)據(jù),。對于任何一個流水級的塊出錯,,都能夠得到快速高效的響應(yīng)。星載存儲器采用與寫入數(shù)據(jù)時相對應(yīng)的算法,,對存儲塊中的數(shù)據(jù)進(jìn)行回放,。

4 結(jié)論

    傳統(tǒng)壞塊管理方法是將已寫入的數(shù)據(jù)復(fù)制到緩沖空間中,增大了緩沖空間資源占用,;將已寫入壞塊數(shù)據(jù)重新寫入未使用塊的方式,造成數(shù)據(jù)存儲速率抖動,;只針對單流水級存儲塊實施壞塊管理,。

    文件化壞塊管理采用四倍于單塊寫入速率的四級流水存儲技術(shù),能夠同時對多個有效載荷產(chǎn)生的數(shù)據(jù)分文件進(jìn)行管理,。文件化壞塊管理將已寫入數(shù)據(jù)的壞塊保留在有效載荷文件存儲塊鏈表中,,從相應(yīng)流水級未使用塊文件快速獲取新塊作為其替代塊,避免了數(shù)據(jù)存儲速率抖動,,保證了星載高速大容量存儲器高效穩(wěn)定運(yùn)行,。此方案已在某型號任務(wù)中得到驗證和應(yīng)用,。

參考文獻(xiàn)

[1] 徐永剛,任國強(qiáng),,吳欽章,,等.NAND Flash圖像記錄系統(tǒng)壞塊管理關(guān)鍵技術(shù)[J].紅外與激光工程,2012,,41(4):1101-1106.

[2] 喬立巖,,張鵬,魏德寶,,等.一種新型NAND Flash壞塊管理算法的研究與實現(xiàn)[J].電子測量技術(shù),,2015,38(11):37-41.

[3] ASHRAF M N,,DASTUR J.Software based nand flash management techniques[C].2009 International Conference on Computing, Engineering and Information,,2009:168-171.

[4] 張小萌.NAND Flash存儲管理的設(shè)計與實現(xiàn)[D].廣州:廣東工業(yè)大學(xué),2014.

[5] 張鵬.NAND Flash壞塊管理算法研究與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),,2015.

[6] MAHESH S,SAUGATA D P.Asynchronous bad block management in nand flash memory[P/OL]:United States,,US 2013/0205072 A1.(2013-8-8)[2017-4-5].http://kns.cnki.net/kns/detail/detail.aspx?FileName=US9483395(B2)&DbName=SOPD2016.

[7] PELEATO B,TABRIZI H,,AGARWAL R,,et al.Ber-based wear leveling and bad block management for nand flash[C].2015 IEEE International Conference on Communications(icc),2015:295-300.

[8] MA Y,,DU H,,YANG S.Independent bad block management for mass storage flash memory arrays[C].2015 6th IEEE International Conference on Software Engineering and Service Science(icsess),2015:388-391.

[9] 趙亞慧,,金龍旭,,陶宏江,等.基于NAND Flash的高速大容量存儲系統(tǒng)的設(shè)計[J].電光與控制,,2016,,23(5):71-75,79.

[10] SUPRIYA K P.Study of bad block management and wear leveling in nand flash memories[J].International Journal of Research in Engineering and Technology,,2013,,2(10):284-288.

[11] 閆夢婷,安軍社,江源源.實現(xiàn)流水存儲及壞塊處理的Flash控制器設(shè)計[J].電子設(shè)計工程,,2016,,24(16):50-53.

[12] Samsungelectronics.1Gx8bit-2Gx8bit Nand flash memory_K9F8G08UXM[EB/OL].Samsung Corporation.2006-9-26(2007-3-31)[2017-4-6].https://wenku.baidu.com/view/96a00d00bed5b9f3f90f1cbe.html.

[13] 邢旺,郁聰沖.數(shù)據(jù)記錄器中NAND Flash的壞塊管理方法[J].艦船電子工程,,2016,,36(8):132-134,160.

[14] 舒文麗,吳云峰,,趙啟義,,等.NAND Flash存儲的壞塊管理方法[J].電子器件,2011,,34(5):580-583.

[15] 寧飛.大容量存儲中NAND Flash壞塊的管理方法[J].電子測試,,2010,38(12):64-68.

[16] 湯瑞.一種基于NAND Flash固態(tài)硬盤的壞塊管理方法[J].電子科技,,2014,,27(8):40-42.



作者信息:

楊志勇1,2,,董振興1,,2,朱  巖1,,2,,董文濤1

(1.中國科學(xué)院國家空間科學(xué)中心,北京100190,;2.中國科學(xué)院大學(xué),,北京100190)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。