《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 星載高速大容量存儲器文件化壞塊管理設計
星載高速大容量存儲器文件化壞塊管理設計
2017年電子技術應用第6期
楊志勇1,,2,,董振興1,,2,,朱 巖1,2,,董文濤1
1.中國科學院國家空間科學中心,,北京100190;2.中國科學院大學,,北京100190
摘要: 為保證星載高速大容量存儲器高速穩(wěn)定的存儲速率,,需對NAND Flash存儲芯片中因單粒子翻轉或超過擦除極限而在寫入時出現(xiàn)的壞塊進行管理。文件化壞塊管理采用鏈表的方式將壞塊,、分流水級未使用塊和分有效載荷數(shù)據(jù)存儲塊分別鏈接成不同的文件,,并采用四級流水乒乓緩沖機制快速替換寫入失敗塊。運行于型號任務中的文件化壞塊管理,,解決了因數(shù)據(jù)寫入出現(xiàn)壞塊時的存儲速率抖動問題,,實現(xiàn)了四倍于單流水級的寫入速率對多有效載荷數(shù)據(jù)分文件進行穩(wěn)定存儲,從而保證了載荷數(shù)據(jù)的正確性和完整性,。
中圖分類號: TN919.5
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.003
中文引用格式: 楊志勇,,董振興,朱巖,,等. 星載高速大容量存儲器文件化壞塊管理設計[J].電子技術應用,,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)星及其他航天器進行信息獲取,、信息處理及信息傳輸?shù)年P鍵設備之一。NAND Flash芯片具有存儲密度大,、接口速率高,、非易失性、低功耗,、抗震性強,、工作溫度寬等特點,是星載高速大容量存儲器的理想存儲介質[1-3],。但NAND Flash在空間高能粒子輻射、極高低溫環(huán)境下,,極易出現(xiàn)位翻轉錯誤[4-5],,采用錯誤檢測糾正(Error Correcting Code,ECC)技術對其糾錯可一定程度上保證數(shù)據(jù)的正確性[6-8],。然而,,NAND Flash受制造工藝限制,出廠時存在一定數(shù)量隨機分布的壞塊[5,,9-10],,并且隨著時間的推移,F(xiàn)lash達到擦除極限,,壞塊數(shù)量將會不斷增多,。壞塊的產生將影響存儲器的存儲速率和存儲信息數(shù)據(jù)的正確性、完整性,,甚至決定航天探測任務的成敗,。因此,高效,、可靠的壞塊管理對星載高速大容量存儲器具有重大意義,。

1 星載存儲器背景

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

htdz3-t1.gif

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

    因此,傳統(tǒng)的環(huán)形隊列順序寫入的存儲管理方式,,不能適用于多載荷,。本文所提到的星載高速大容量存儲器,采用的是四級流水存儲技術,,每一個有效載荷分一個文件的方式進行鏈式存儲管理,。

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

2.1 壞塊替換

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

htdz3-t2.gif

    傳統(tǒng)的壞塊替換方法是將存儲出錯塊中的有效數(shù)據(jù)復制到新的替代塊中,以增加額外的存儲時間開銷來保證數(shù)據(jù)存儲的正確性,。若在存儲塊的尾部出錯,,那么將復制出錯塊近一塊的數(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)方式標記壞塊,將壞塊加入壞塊映射區(qū),,從替換(保留)塊區(qū)選擇有效未使用塊對壞塊進行替換,,并更新邏輯-物理塊地址映射表。若對已寫入數(shù)據(jù)塊修改,,需將整個存儲塊的數(shù)據(jù)讀到存儲控制器,,對其數(shù)據(jù)進行修改,然后將修改后的數(shù)據(jù)寫入到交換塊區(qū)的存儲塊,,最后更新邏輯-物理塊地址映射表[10,,13]

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

2.3 異步壞塊管理

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

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

3 文件化壞塊管理

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

    星載高速大容量存儲器,F(xiàn)PGA和CPU協(xié)調配合共同控制管理數(shù)據(jù)存儲,。存儲器塊狀態(tài)信息存儲在每個塊的空余區(qū),,當系統(tǒng)第一次啟動時,F(xiàn)PGA掃描存儲器中所有塊空余區(qū),,獲取所有塊狀態(tài)信息,,并由FPGA組建OBAT(Original Block Allocate Table)存儲到掉電非易失型存儲器MRAM,再由CPU將OBAT從MRAM中讀到CPU運行內存,,最后由CPU組建成IBAT(Index Block Allocate Table),,并將組建好的IBAT寫回MRAM,。系統(tǒng)正常運行過程中,存儲塊狀態(tài)發(fā)生改變,,F(xiàn)GPA修改相應塊空余區(qū),,并實時維護MRAM中的IBAT表。這樣的存儲機制,,能夠保證大容量存儲管理系統(tǒng)快速可靠的啟動,。系統(tǒng)正常斷電,將CPU運行內存中的IBAT寫回MRAM,,系統(tǒng)重啟時,,CPU直接從MRAM快速讀取IBAT即可。當系統(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)本文件內塊計數(shù),,表示該文件已經寫入的塊數(shù),。(5)本文件下一流水級指針,即下一流水級的塊序號,。

3.2 文件化組織結構

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

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

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

htdz3-t3.gif

3.3 文件化壞塊替換

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

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

htdz3-b3.gif

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

htdz3-b4.gif

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

htdz3-b5.gif

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

htdz3-b6.gif

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

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

4 結論

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

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

參考文獻

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

[2] 喬立巖,,張鵬,魏德寶,,等.一種新型NAND Flash壞塊管理算法的研究與實現(xiàn)[J].電子測量技術,,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存儲管理的設計與實現(xiàn)[D].廣州:廣東工業(yè)大學,2014.

[5] 張鵬.NAND Flash壞塊管理算法研究與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學,,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)的設計[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控制器設計[J].電子設計工程,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.中國科學院國家空間科學中心,北京100190,;2.中國科學院大學,,北京100190)

此內容為AET網站原創(chuàng),未經授權禁止轉載,。