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