吳洪成 潘琪
摘 要: 研究基于NAND-FLASH的固態(tài)存儲模塊的開發(fā)和應(yīng)用,具有重要的現(xiàn)實意義。文章提出了一種高可靠固態(tài)存儲模塊實現(xiàn)及其在計算機系統(tǒng)中應(yīng)用的方法,即采用數(shù)據(jù)糾錯、損耗均衡、過量配置、壞塊管理、RAID等技術(shù)實現(xiàn)計算機系統(tǒng)的高可靠性存儲模塊,并考慮非正常斷電保護以及數(shù)據(jù)加密、數(shù)據(jù)銷毀等功能,以滿足高可靠、深層次的應(yīng)用需求。
關(guān)鍵詞: 高可靠; 固態(tài)存儲; NAND-FLASH; 計算機系統(tǒng)
中圖分類號:TP399 文獻標志碼:A 文章編號:1006-8228(2015)09-14-03
Realization and application of high-reliable solid-state storage module
Wu Hongcheng1, Pan Qi2
(1. No.52 Research Institute of CETC, Hangzhou, Zhejiang 310012, China; 2. The air force's military representative office in Zhejiang)
Abstract: Research on the development and application of solid-state storage module based on NAND-FLASH has important practical significance. This paper proposes the realization of a high-reliable solid-state storage module and its application in the computer system, namely the data correction, wear leveling, excess allocation, bad block management, raid, and other technology is used to achieve high reliability storage module for computer system, and taking into account the non-normal power-off protection and data encryption, data destruction , and other functions, to meet the demands of high reliable and in-depth applications.
Key words: high-reliable; solid-state storage; NAND-FLASH; computer system
0 引言
在過去30多年里,硬盤驅(qū)動器在計算機系統(tǒng)存儲介質(zhì)中一直占據(jù)統(tǒng)治地位,然而除了存儲容量有大幅度提升外,其讀寫速度沒有明顯的提升。為應(yīng)對當前計算機系統(tǒng)對存儲介質(zhì)讀寫速率的需求,尤其是面對廣泛的PC機應(yīng)用市場,研究高可靠、低成本的固態(tài)存儲模塊具有重大的意義,可為計算機商用系統(tǒng)的應(yīng)用帶來數(shù)據(jù)處理上的革新。
本論文結(jié)合NAND-FLASH存儲介質(zhì)的使用特點,提出了一種高可靠固態(tài)存儲模塊的開發(fā)及在計算機系統(tǒng)的應(yīng)用方法,即采用數(shù)據(jù)糾錯、損耗均衡、過量配置、壞塊管理、RAID等技術(shù)實現(xiàn)計算機系統(tǒng)的高可靠性存儲模塊,并考慮了非正常斷電保護以及數(shù)據(jù)加密、數(shù)據(jù)銷毀等滿足高可靠及深層次的應(yīng)用需求。
1 固態(tài)存儲模塊的總體實現(xiàn)
面對當前計算機系統(tǒng)的應(yīng)用需求,本文提出了NAND-
FLASH芯片的高可靠固態(tài)存儲[1]模塊的實現(xiàn)原理,如圖1所示。
固態(tài)存儲模塊主要由接口電路、大規(guī)??删幊涕T陣列(FPGA)、數(shù)據(jù)緩存、嵌入式處理器及其外圍電路、協(xié)處理器以及存儲介質(zhì)組等幾大部分組成。嵌入式處理器為存儲模塊控制中心,實現(xiàn)對外命令通信、工作流程控制、數(shù)據(jù)讀寫、目錄管理等各種控制功能。FPGA負責(zé)數(shù)據(jù)流的控制,主要包括外部數(shù)據(jù)接口邏輯、DDR3數(shù)據(jù)緩存控制邏輯、內(nèi)部通信邏輯以及FLASH控制邏輯等。數(shù)據(jù)緩存主要實現(xiàn)高速、突發(fā)用戶接口數(shù)據(jù)流與后端FLASH存儲介質(zhì)組間歇性數(shù)據(jù)流的速率匹配,通常采用多片高速、大容量數(shù)據(jù)緩存芯片并行工作[2]實現(xiàn)。存儲介質(zhì)組由多片高密度的NAND-FLASH芯片組成,為實現(xiàn)高速數(shù)據(jù)讀寫,采用多通道并行工作[3]的方式實現(xiàn),并且每通道再采用多片F(xiàn)LASH芯片并行工作。對外接口實現(xiàn)通用(如SATA3.0等)或者專用接口(自定義接口,適用個性化專用需求)。
[外圍電路][處理器\&] [內(nèi)部接口][大規(guī)模
可編程門陳列\&] [協(xié)處理器][接口
電路] [命令接口] [接口
電路] [數(shù)據(jù)接口] [數(shù)據(jù)緩存] [存儲
介質(zhì)組]
圖1 高可靠固態(tài)存儲模塊的總體實現(xiàn)原理
2 高可靠存儲模塊的實現(xiàn)技術(shù)及應(yīng)用方式
結(jié)合計算機系統(tǒng)的應(yīng)用需求,實現(xiàn)固態(tài)存儲模塊數(shù)據(jù)可靠讀寫及存儲,需要針對NAND-FLASH的主要控制管理技術(shù)有數(shù)據(jù)糾錯、損耗均衡、過量配置、壞塊管理以及RAID。為提高數(shù)據(jù)存儲的可靠性,在計算機系統(tǒng)傳輸路徑中增加數(shù)據(jù)校驗與糾錯技術(shù),以及非正常斷電保護技術(shù)。考慮到當前數(shù)據(jù)安全方面存在失竊、遺失、被非授權(quán)人員使用的情況,為確保存儲模塊內(nèi)數(shù)據(jù)不被他人獲取、利用,最大限度的降低損失,本文提出了相應(yīng)的數(shù)據(jù)加密技術(shù)、數(shù)據(jù)銷毀技術(shù)及其應(yīng)用方法。
2.1 NAND-FLASH的高可靠應(yīng)用
NAND-FLASH內(nèi)部采用非線性宏單元模式,以頁為單位讀寫數(shù)據(jù),以塊為單位擦除數(shù)據(jù),寫入前必須擦除數(shù)據(jù)。NAND-FLASH芯片具有存儲容量大、寫入速度快等優(yōu)點,同時也存在位翻轉(zhuǎn)、使用壽命有限、壞塊等不足。FLASH控制邏輯通常在FPGA中實現(xiàn),在FLASH基本控制邏輯的基礎(chǔ)上,需通過數(shù)據(jù)糾錯、損耗均衡、過量配置、壞塊管理等技術(shù)實現(xiàn)對FLASH存儲介質(zhì)的可靠讀寫,通過RAID技術(shù)保護數(shù)據(jù)完整性。
⑴ 數(shù)據(jù)糾錯
由于NAND-FLASH本身特點,在數(shù)據(jù)寫入、讀取過程中數(shù)據(jù)會有一定概率發(fā)生位翻轉(zhuǎn),從而影響數(shù)據(jù)的正確性。因此,在使用NAND-FLASH時,需增加糾錯算法,采用BCH碼(由Bose、Chaudhuri、Hocquenghem共同開發(fā)),用于糾正讀寫過程中產(chǎn)生的位錯誤,恢復(fù)出正確的數(shù)據(jù)。BCH編碼器采用32位并行系數(shù)的并行編碼技術(shù),有效提高編碼模塊的編碼帶寬,單個BCH編碼器最高可以達到400MBps的編碼速率。為滿足高速、高可靠性存儲模塊需求,采用多個存儲控制器[4](集成BCH編碼器)并行運行的方式實現(xiàn)讀寫速率的提升。
⑵ 損耗均衡
NAND-FLASH每個存儲單元使用壽命有限,如MLC的廠家標稱寫入次數(shù)小于3000次。針對該特點,在使用NAND-FLASH進行數(shù)據(jù)存儲時,需要對NAND-FLASH的擦除和寫入操作進行合理的管理和控制,采用合理、高效的均衡技術(shù),如動態(tài)損耗平衡、靜態(tài)損耗平衡方法,均勻地對NAND-FLASH存儲空間進行擦寫,避免部分存儲空間的使用壽命過早被耗盡,從而在其固有壽命范圍內(nèi),提高存儲模塊的整體使用壽命。
⑶ 過量配置
對于提升可靠性與耐用度,在使用上注意損耗平衡的同時,需要空間過量配置。通過損耗均衡方式,擦除量所產(chǎn)生的平均擦寫周期變少,但仍會出現(xiàn)了存儲塊失效的情況,此時需將該些存儲塊標記為不可用,并從預(yù)留的備用區(qū)域中重新分配一塊存儲塊到相應(yīng)的邏輯地址,從而實現(xiàn)空間的過量配置。過量配置不是免費的,需根據(jù)存儲模塊應(yīng)用場景要求的不同,合理的選擇和設(shè)計過量配置的空間。一般而言,可靠性越高的存儲模塊會分配越多的過量配置空間,以犧牲更多的可用空間來換取更長的使用壽命。
⑷ 壞塊管理[4]
NAND-FLASH在出廠時存在一定數(shù)量的物理壞塊,在反復(fù)擦寫過程中也會出現(xiàn)新的壞塊,該些壞塊無法保證數(shù)據(jù)存儲的可靠性,應(yīng)禁止對其進行操作。因此,對NAND-FLASH存儲芯片數(shù)據(jù)操作前,預(yù)先讀取存儲在FLASH中的出廠時壞塊信息列表,并實時監(jiān)測后續(xù)FLASH塊使用狀態(tài),及時監(jiān)測使用過程中新出現(xiàn)的物理壞塊,將發(fā)現(xiàn)的無法可靠存儲數(shù)據(jù)的物理塊加入壞塊列表,使用時禁止使用這些壞塊地址。
⑸ RAID技術(shù)
考慮到NAND-FLASH芯片的數(shù)據(jù)塊可能出現(xiàn)工作異常導(dǎo)致數(shù)據(jù)失效的情況,對固態(tài)存儲模塊采用RAID1~RAID7算法[5],并支持算法配置,即模塊中數(shù)據(jù)的冗余保護,又可考慮相應(yīng)響應(yīng)場合的經(jīng)濟性。提高數(shù)據(jù)存儲可靠性為適合數(shù)據(jù)存儲可靠性要求較高的金融、醫(yī)療、軍事等應(yīng)用,固態(tài)存儲模塊將采用RAID5的方式實現(xiàn),其中任何一個FLASH芯片工作異常時均可以通過存儲在其余通道中的數(shù)據(jù)恢復(fù)該芯片的數(shù)據(jù),保證數(shù)據(jù)可靠存儲。
2.2 模塊整體的高可靠應(yīng)用
為提高固態(tài)存儲模塊在計算機系統(tǒng)應(yīng)用的可靠性,本文采用傳輸路徑數(shù)據(jù)校驗與糾錯技術(shù),對存儲模塊數(shù)據(jù)讀寫的全鏈路進行檢測和控制。
存儲時數(shù)據(jù)流從用戶接口輸入后,經(jīng)過接口模塊、FPGA、SDRAM、FLASH芯片等,其中SDRAM芯片經(jīng)過兩次,分別為寫入與讀取,并且多通道高速串行通信總線接口每通道的通信速率為Gbps量級。在如此復(fù)雜的數(shù)據(jù)傳輸路徑中,對數(shù)據(jù)傳輸路徑中可能出現(xiàn)的數(shù)據(jù)誤碼檢查與糾正,保證數(shù)據(jù)可靠傳輸,主要采用DDR3 SDRAM數(shù)據(jù)的ECC(Error Correcting Code)處理和多級數(shù)據(jù)流的CRC(Cyclic Redundancy Check)檢驗(高速串行通信總線接口、FPGA內(nèi)部整個數(shù)據(jù)傳輸及FLASH接口數(shù)據(jù)傳輸)。
2.3 高可靠性場合應(yīng)用
為適應(yīng)計算機系統(tǒng)特定場合的高可靠性應(yīng)用需求,固態(tài)存儲模塊采用了數(shù)據(jù)加密技術(shù)、數(shù)據(jù)銷毀技術(shù),以保證存儲模塊在失竊、遺失、被非授權(quán)人員使用時的數(shù)據(jù)存儲可靠性。
2.3.1 非正常斷電保護
計算機系統(tǒng)在使用中必須考慮非正常斷電對系統(tǒng)的沖擊及影響,尤其是考慮其系統(tǒng)內(nèi)各存儲單元的影響,以保證系統(tǒng)繼續(xù)運行及后續(xù)恢復(fù)。目前市場上的一般商用固態(tài)盤,在多次非正常斷電情況下,會出現(xiàn)數(shù)據(jù)錯、元數(shù)據(jù)損壞等錯誤,甚至出現(xiàn)不能掛載及存儲空間不能識別的嚴重錯誤,這對于高可靠性計算機系統(tǒng)而言是致命的。因此,在高可靠性固態(tài)存儲模塊實現(xiàn)上,應(yīng)充分考慮對非正常斷電現(xiàn)象的發(fā)生,采取有效的保護措施或設(shè)計方法來保證存儲模塊在非正常斷電情況下的數(shù)據(jù)完整性。具體措施包括:
⑴ 定時更新目錄信息,將斷電前數(shù)據(jù)存儲信息的損失降到最低;
⑵ 在制定空間保留多份目錄備份信息;
⑶ 合理設(shè)計上電數(shù)據(jù)恢復(fù),對非正常斷電前寫入的數(shù)據(jù)及目錄進行數(shù)據(jù)完整性校驗,最大限度恢復(fù)數(shù)據(jù)及目錄等信息;
⑷ 選配欠壓檢測電路,采用儲能器件對存儲模塊中核心電路進行保護,如觸發(fā)非正常斷電事件、記錄非正常斷電現(xiàn)象、保護敏感的元數(shù)據(jù)信息等。
2.3.2 數(shù)據(jù)加密
數(shù)據(jù)加密是對輸入固態(tài)存儲模塊的數(shù)據(jù)進行加密后再寫入存儲介質(zhì)的一種數(shù)據(jù)保護措施,是保證數(shù)據(jù)對敵安全的有效手段之一。根據(jù)固態(tài)存儲模塊的工作原理,AES(Advanced Encryption Standard)配合RSA(由Rivest,Shamir和Adleman共同開發(fā))為固態(tài)存儲模塊數(shù)據(jù)加密的首選加密方案,加密引擎采用FPGA實現(xiàn)。加密后的數(shù)據(jù)以密文的方式存放在NAND-
FLASH存儲介質(zhì)中,加/解密密鑰與加密引擎分離,存儲在獨立的可信介質(zhì)中,只有合法用戶掌控密鑰,安全有效地實現(xiàn)目標數(shù)據(jù)的加/解密操作,以確保即使存儲模塊被敵方獲取,也無法直接獲取有效數(shù)據(jù)。
2.3.3 數(shù)據(jù)銷毀
應(yīng)對當前數(shù)據(jù)私密性不斷增加的需求,當存儲模塊被非授權(quán)人員獲取時,通過各種破解手段,被加密過的數(shù)據(jù)遲早仍會被破解,因此固態(tài)存儲模塊中增加數(shù)據(jù)銷毀功能。對于本方案中采用普通NAND-FLASH作為存儲介質(zhì)的數(shù)據(jù)存儲模塊,可以采取以下數(shù)據(jù)銷毀[6]措施:
⑴ 快速銷毀密鑰,失去密鑰后存儲模塊中存儲的密文不能被直接讀取使用;
⑵ 快速銷毀目錄,銷毀后存儲模塊中的數(shù)據(jù)很難被重新組織、恢復(fù)成可用的數(shù)據(jù);
⑶ 物理銷毀,使用高壓、大電流電路直接燒壞芯片和電路板等;
⑷ 下發(fā)擦除、覆蓋寫入命令,對已存儲數(shù)據(jù)進行高速擦除,擦除后再寫入指定數(shù)據(jù)進行覆蓋。
密鑰銷毀、目錄銷毀可以瞬間完成,但銷毀不徹底,數(shù)據(jù)仍然存在于存儲介質(zhì)上;物理銷毀也是瞬間完成,具有破壞性,數(shù)據(jù)被徹底銷毀;數(shù)據(jù)擦除和覆蓋寫入銷毀的速率相對較慢,無破壞性,數(shù)據(jù)也能被徹底銷毀。因此實際應(yīng)用中,本固態(tài)存儲模塊可根據(jù)計算機系統(tǒng)的具體應(yīng)用場景進行選配,滿足各種應(yīng)用需求,確保數(shù)據(jù)存儲安全可靠。
3 結(jié)束語
目前高可靠固態(tài)存儲模塊以VPX 6U的形式體現(xiàn),模塊支持SATA3.0接口及專用接口(如光纖、高速總線等),提供6TB的存儲空間,單向讀寫速率可達最大24Gbps,支持raid方式、非正常斷電保護、數(shù)據(jù)加密機數(shù)據(jù)銷毀等功能的配置,具備數(shù)據(jù)高可靠性存儲能力,能夠滿足計算機系統(tǒng)高可靠性應(yīng)用場合,尤其是惡劣環(huán)境條件下的數(shù)據(jù)高可靠存儲的應(yīng)用需求。
參考文獻:
[1] 朱知博.基于NAND-FLASH的高速大容量存儲系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2011.34(8):170
[2] 張峰.基于Nandflash陣列的高速存儲技術(shù)[J].電訊技術(shù),2013.53(1):68-71
[3] 胡洋,馮丹.高性能固態(tài)盤的多級并行性及算法研究[D].華中科技大學(xué)博士學(xué)位論文,2012.5.
[4] 湯瑞.一種基于NAND Flash固態(tài)硬盤的壞塊管理方法[J].電子科技,2014.27(8):40
[5] 韓煜,劉政林.一種高吞吐率、低成本的固態(tài)硬盤數(shù)據(jù)安全方案[J].信息與電子工程,2011.9(5):638
[6] 唐迪,魏英.存儲介質(zhì)數(shù)據(jù)銷毀技術(shù)研究[J].信息安全與技術(shù),2012.1:8