彭佳煜,王曉偉,余江南
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710065)
隨著數(shù)字化技術(shù)的飛速發(fā)展,數(shù)據(jù)存儲(chǔ)系統(tǒng)在數(shù)字通信、圖像處理、人工智能、語(yǔ)音識(shí)別以及航空電子等眾多領(lǐng)域中有了廣泛應(yīng)用,隨之對(duì)信息系統(tǒng)的容量、存儲(chǔ)速度、數(shù)據(jù)安全性等方面的要求也在不斷提高。
高性能大容量數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展由存儲(chǔ)介質(zhì)的發(fā)展所引導(dǎo)。傳統(tǒng)的磁存儲(chǔ)技術(shù)已不再滿足當(dāng)今社會(huì)對(duì)高速大容量數(shù)據(jù)存儲(chǔ)的需求。近年來(lái),閃存技術(shù)快速發(fā)展,具有顯著優(yōu)勢(shì)。基于NAND閃存形成的固態(tài)存儲(chǔ)器具有高集成度、高存儲(chǔ)密度、低功耗、防腐防震等優(yōu)點(diǎn),可以滿足苛刻條件下的數(shù)據(jù)存儲(chǔ)要求,成為當(dāng)代數(shù)據(jù)存儲(chǔ)系統(tǒng)的主流選擇。
為保護(hù)關(guān)鍵數(shù)據(jù)的安全,作為數(shù)據(jù)保護(hù)的最后一道防線,數(shù)據(jù)毀鑰技術(shù)應(yīng)運(yùn)而生[1]。目前,常用的銷毀技術(shù)為軟毀鑰,主要為數(shù)據(jù)覆蓋和軟件擦除技術(shù)。軟毀鑰方式是通過(guò)軟件對(duì)原有的數(shù)據(jù)進(jìn)行重寫,不能在短時(shí)間內(nèi)完成數(shù)據(jù)銷密,并存在數(shù)據(jù)恢復(fù)的風(fēng)險(xiǎn)。為提高存儲(chǔ)系統(tǒng)的可靠性,系統(tǒng)需要在短時(shí)間內(nèi)響應(yīng)并完成數(shù)據(jù)存儲(chǔ)載體的銷密。本文提出了一種硬毀鑰的銷密方案,通過(guò)控制電路將毀鑰電源接入存儲(chǔ)介質(zhì)芯片,借助毀鑰電源的高電壓、大電流破壞存儲(chǔ)介質(zhì)芯片的內(nèi)部結(jié)構(gòu),并滿足關(guān)鍵時(shí)刻在短時(shí)間內(nèi)完成核心數(shù)據(jù)的毀鑰要求。
針對(duì)以上問(wèn)題,本文設(shè)計(jì)實(shí)現(xiàn)了一種帶應(yīng)急燒毀功能的高速大容量存儲(chǔ)模塊,系統(tǒng)以FPGA為控制核心,以NAND Flash為主要存儲(chǔ)介質(zhì),通過(guò)硬件毀鑰電路從物理上燒毀存儲(chǔ)核心關(guān)鍵數(shù)據(jù)的存儲(chǔ)芯片,以保障數(shù)據(jù)安全,滿足當(dāng)前對(duì)存儲(chǔ)系統(tǒng)大容量、高速率、數(shù)據(jù)安全性的新要求。
大容量存儲(chǔ)模塊的硬件功能如圖1所示。模塊選用標(biāo)準(zhǔn)PCI總線接口作為主處理器,實(shí)現(xiàn)存儲(chǔ)處理板的數(shù)據(jù)計(jì)算處理等任務(wù)。處理器周圍配置了DDR2 SDRAM、Flash、NvRAM等局部存儲(chǔ)資源,采用34片NAND Flash芯片形成非易性大容量存儲(chǔ)陣列,以FPGA為控制核心,內(nèi)部邏輯主要包含:PCI-E硬核端點(diǎn)邏輯、NAND Flash控制邏輯、局部總線接口轉(zhuǎn)換和控制邏輯。考慮信息安全的要求,本文設(shè)計(jì)毀鑰電路,在緊急情況下將存儲(chǔ)重要信息的芯片燒毀。另外,存儲(chǔ)處理板上設(shè)計(jì)了以太網(wǎng)、JTAG、RS232等調(diào)試接口。大容量存儲(chǔ)模塊的核心硬件配置由3部分組成:大容量存儲(chǔ)單元、處理器單元、控制單元。

圖1 存儲(chǔ)系統(tǒng)架構(gòu)
處理器單元完成整個(gè)存儲(chǔ)系統(tǒng)的數(shù)據(jù)處理功能,通過(guò)自帶的PCI接口與控制單元通信,完成數(shù)據(jù)、命令、地址、狀態(tài)的相互傳遞、轉(zhuǎn)換和處理。處理器采用PowerPC的G6代處理器,目前已在國(guó)內(nèi)外數(shù)據(jù)處理與信號(hào)處理中廣泛運(yùn)用,主頻最高可達(dá)1.5 GHz, 處理器單元配置獨(dú)立的DDR2、Flash、NvRAM、溫度監(jiān)控等芯片。Flash用于存儲(chǔ)系統(tǒng)程序及用戶應(yīng)用程序代碼。啟動(dòng)過(guò)程中,處理器將應(yīng)用程序及系統(tǒng)程序的數(shù)據(jù)代碼由FPGA控制將Flash芯片的程序讀入DDR2內(nèi)存后運(yùn)行。此外,CPU還配置8×PCI Express接口、2個(gè)以太網(wǎng)控制器、UART接口、中斷控制器、DMA控制器等資源。
大容量存儲(chǔ)單元采用NAND型Flash芯片作為主要存儲(chǔ)介質(zhì),共選用34片Micron公司的NAND Flash(型號(hào):MT29F64G08AJABAWP-IT:B)實(shí)現(xiàn)非易性存儲(chǔ)陣列,單片容量為8 G×8 bit,共包含16 384個(gè)數(shù)據(jù)塊,每塊128頁(yè),每頁(yè)共(4 096+224)個(gè)字節(jié),其中的4 096為數(shù)據(jù)存儲(chǔ)區(qū),224為空閑存儲(chǔ)區(qū)。32片NAND Flash用于存儲(chǔ)普通數(shù)據(jù),形成256 GB的大容量存儲(chǔ)陣列,所述存儲(chǔ)陣列分為4個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元包含8片NAND芯片,其中每4片NAND芯片組成1組,每個(gè)存儲(chǔ)體單元又分為2組NAND芯片,每組由4片NAND芯片進(jìn)行32 bit位擴(kuò)展,每個(gè)存儲(chǔ)體內(nèi)有獨(dú)立的數(shù)據(jù)線和控制信號(hào)。另外,2片NAND芯片組成16 G存儲(chǔ)關(guān)鍵數(shù)據(jù)區(qū),具備硬毀密功能,需要時(shí)可被物理燒毀。存儲(chǔ)陣列控制由FPGA邏輯實(shí)現(xiàn),主要實(shí)現(xiàn)NAND Flash按頁(yè)讀寫基本操作和4通道陣列譯碼,內(nèi)部實(shí)現(xiàn)4 bit/256 bit的ECC校驗(yàn)算法[2]。
控制單元采用FPGA作為整個(gè)存儲(chǔ)系統(tǒng)的硬件核心,大容量存儲(chǔ)模塊選用Xilinx公司Vertex5系列FPGA來(lái)實(shí)現(xiàn)PCI-E硬核端點(diǎn)邏輯以及處理器局部總線接口轉(zhuǎn)換邏輯、大容量存儲(chǔ)控制邏輯。CPU局部總線接口轉(zhuǎn)換邏輯和控制邏輯將CPU數(shù)據(jù)地址復(fù)用的局部總線分成單獨(dú)的數(shù)據(jù)總線和地址總線,根據(jù)地址完成片選譯碼及讀寫控制,對(duì)Flash的所有管腳控制均通過(guò)FPGA內(nèi)部轉(zhuǎn)換實(shí)現(xiàn)。FPGA一端接PCIe總線,由PCIe核完成數(shù)據(jù)傳送和寄存器讀寫控制,另一端接NAND Flash存儲(chǔ)陣列。PCI接口由FPGA內(nèi)部的PCI IP核實(shí)現(xiàn),該接口主要完成Flash控制器緩沖雙口的讀寫訪問(wèn)、設(shè)備控制寄存器讀寫訪問(wèn)、PCI-E設(shè)備配置功能。FPGA通過(guò)大容量存儲(chǔ)邏輯控制Flash存儲(chǔ)陣列的數(shù)據(jù)、命令、地址、狀態(tài)的傳遞和處理,實(shí)現(xiàn)NAND Flash的讀寫操作控制。4個(gè)存儲(chǔ)單元各自使用一組寄存器和一個(gè)16 KB的數(shù)據(jù)緩存區(qū)來(lái)執(zhí)行其對(duì)應(yīng)通道的指令、地址、狀態(tài)以及數(shù)據(jù)傳輸與處理,并且每個(gè)通道的數(shù)據(jù)線和控制線是完全獨(dú)立的。
就單個(gè)的NAND閃存芯片而言,其數(shù)據(jù)訪問(wèn)速率非常緩慢。為滿足存儲(chǔ)系統(tǒng)高帶寬和高速率的需求,需要通過(guò)設(shè)計(jì)時(shí)空并行的方式來(lái)提升存儲(chǔ)陣列底層硬件的吞吐[3]。
空間上,采用芯片并行處理技術(shù)提高了存儲(chǔ)帶寬,256 GB 存儲(chǔ)陣列控制器采用四體交叉存儲(chǔ)方式,因此擴(kuò)展后的塊大小是原來(lái)的4 倍,每個(gè)塊里有512 頁(yè),塊中編號(hào)按照四體輪換方式編制,保證四體并行操作。將4片位寬8 bit的NAND Flash芯片并行擴(kuò)展為32 bit的芯片組,將存儲(chǔ)帶寬提升為原先的4倍。
時(shí)間并行性采用流水線技術(shù)。NAND Flash是數(shù)據(jù)存儲(chǔ)過(guò)程,包含3步:首先進(jìn)行加載操作,即完成命令、地址和數(shù)據(jù)的加載;其次進(jìn)行頁(yè)編程操作,把加載到頁(yè)寄存器中的數(shù)據(jù)寫到內(nèi)部存儲(chǔ)單元;最后在頁(yè)編程結(jié)束后檢測(cè)已寫入的數(shù)據(jù)的正確性。在加載命令階段,通常需要的時(shí)間為130 μs,最長(zhǎng)的自編程時(shí)間為500 μs,檢測(cè)操作大致需要0.1 μs,自編程的時(shí)長(zhǎng)大約為加載操作的4倍。由于模塊采用了4通道并行操作,每個(gè)通道內(nèi)CPU將數(shù)據(jù)寫入FPGA內(nèi)部緩沖,發(fā)送自編程命令后就向下一通道的緩沖區(qū)內(nèi)寫入數(shù)據(jù),復(fù)用了Flash頁(yè)自編程時(shí)間,該方法充分利用閃存芯片組的頁(yè)編程間隔,對(duì)其他空閑芯片組進(jìn)行讀寫,從而達(dá)到流水式的并行存儲(chǔ)效應(yīng),極大地提升了存取速度。
經(jīng)計(jì)算得出,單片NAND Flash的讀取速度約為20 MB/s,寫入速度約為6.3 MB/s。經(jīng)過(guò)芯片并行設(shè)計(jì)將讀寫速度提高到單片的4倍,分別為80 MB/s和25.2 MB/s。以下是使用4級(jí)流水之后的寫入速度的計(jì)算結(jié)果:

可得寫入速度為126 MB/s。
為了保障機(jī)密存儲(chǔ)數(shù)據(jù)的安全性,當(dāng)意外情況發(fā)生時(shí),需要在短時(shí)間內(nèi)徹底損毀存儲(chǔ)芯片,大容量存儲(chǔ)模塊配置應(yīng)急毀鑰電路,使保密數(shù)據(jù)無(wú)法被破解及恢復(fù)。外部提供毀密開關(guān)盒,向大容量模塊提供一路28VDC/1A/1S的毀密電源,用于燒毀大容量存儲(chǔ)單元中存儲(chǔ)關(guān)鍵信息的存儲(chǔ)芯片。
毀鑰電路設(shè)計(jì)采用限流分時(shí)的方法燒毀NAND Flash芯片。毀鑰電路主要包括供電單元、電源切換單元、燒毀控制單元。主控單元主要由單片機(jī)實(shí)現(xiàn),該單片機(jī)的供電來(lái)源于毀鑰電源,意外發(fā)生時(shí),毀鑰電源啟動(dòng),主控單元開始工作。通過(guò)控制單元編程控制通道切換單元,將毀鑰電源與要燒毀的NAND Flash芯片導(dǎo)通,通過(guò)燒毀核心電源VCC的方式,可以有效地防止 MOS器件的泄漏電流過(guò)大 ,從而影響NAND Flash芯片的I/O信號(hào)及控制信號(hào)的完整性,有效地解決了NAND Flash芯片出現(xiàn)壞塊的問(wèn)題。同時(shí)考慮到燒毀電流的控制,采用切換自毀通道或者斷開物理自毀電源的方法,解決供電過(guò)載問(wèn)題,無(wú)需采用大功率的物理自毀電源。使用獨(dú)立通道自毀方式,逐一燒毀NAND Flash芯片,保證每片NAND都能安全燒毀。增加儲(chǔ)能電容,用慢充快放的方式通過(guò)儲(chǔ)能電容迅速放電,產(chǎn)生大電流燒毀NAND Flash芯片,并采用多次反復(fù)加電燒毀確保NAND Flash芯片被燒毀,設(shè)置限流電阻保證前端電流不超過(guò)1A,防止進(jìn)行燒毀時(shí)對(duì)前端電路造成影響。
從試驗(yàn)結(jié)果統(tǒng)計(jì)分析,燒毀后NAND Flash芯片無(wú)法讀取數(shù)據(jù),且在燒毀過(guò)程中前端1 A保險(xiǎn)絲不被燒斷。將燒毀的芯片進(jìn)行元器件失效分析,NAND Flash芯片均被燒毀,內(nèi)部可見有燒毀損傷,達(dá)到數(shù)據(jù)無(wú)法恢復(fù)的目的。結(jié)果表明,限流分時(shí)銷毀電路的毀密設(shè)計(jì)方案可滿足毀鑰需求。
文本介紹了一種以 FPGA為控制核心、基于 NAND閃存的通用高速大容量數(shù)據(jù)存儲(chǔ)系統(tǒng),對(duì)該系統(tǒng)的整體結(jié)構(gòu)進(jìn)行了介紹,并對(duì)其中涉及的幾個(gè)關(guān)鍵技術(shù)進(jìn)行了詳細(xì)的闡述,例如:并行運(yùn)算、流水線技術(shù)、硬毀鑰電路設(shè)計(jì)等,很大程度地提升了系統(tǒng)的存儲(chǔ)容量、讀取速度以及數(shù)據(jù)安全性。經(jīng)過(guò)實(shí)際運(yùn)行,該系統(tǒng)達(dá)到了的設(shè)計(jì)指標(biāo)。