針對(duì)Flash存儲(chǔ)特性的航天器大容量固態(tài)存儲(chǔ)技術(shù)
隨著航天任務(wù)的不斷豐富、航天探測(cè)技術(shù)的不斷提高(如探測(cè)器種類增多,相機(jī)分辨率提高等),中國(guó)空間站等重大戰(zhàn)略規(guī)劃的逐步實(shí)施,空間科技數(shù)據(jù)的采集速度與存儲(chǔ)總量需求大幅度攀升,對(duì)存儲(chǔ)器的容量、吞吐速率、數(shù)據(jù)管理提出了更高的要求。
本文引用地址:http://2s4d.com/article/201610/307928.htm目前航天器所攜帶的固態(tài)存儲(chǔ)器的基本存儲(chǔ)介質(zhì)以SDRAM和Flash為主,F(xiàn)lash讀寫速度較SDRAM慢、操作復(fù)雜,但因?yàn)榛A(chǔ)工藝的區(qū)別,F(xiàn)lash的存儲(chǔ)密度遠(yuǎn)遠(yuǎn)超過(guò)RAM系列產(chǎn)品,不需要刷新,功耗低,并且擁有非易失存儲(chǔ)特性,在重量、功耗、可靠性極其敏感的航天應(yīng)用上,F(xiàn)lash將保持巨大的生命力和發(fā)展?jié)摿Α?/p>
基于Flash的存儲(chǔ)系統(tǒng)主要有固態(tài)硬盤和介質(zhì)直接管理兩種方式。前者目前廣泛應(yīng)用在筆記本、服務(wù)器等商用領(lǐng)域,在存儲(chǔ)設(shè)備內(nèi)部,通過(guò)FTL(flash transition Layer,閃存轉(zhuǎn)換層)的轉(zhuǎn)換,可處理SATA命令,但在硬件接口及軟件系統(tǒng)方面照搬傳統(tǒng)磁盤管理技術(shù),對(duì)存儲(chǔ)特性利用并不充分:硬件SATA接口標(biāo)準(zhǔn)無(wú)法滿足Flash存儲(chǔ)系統(tǒng)性能要求,成為瓶頸;以文件系統(tǒng)為代表的數(shù)據(jù)管理策略,大都考慮磁盤環(huán)境進(jìn)行優(yōu)化,F(xiàn)lash的優(yōu)勢(shì)無(wú)法充分體現(xiàn)。航天級(jí)應(yīng)用需要采用介質(zhì)直接管理的方式,針對(duì)Flash存儲(chǔ)特性,從底層進(jìn)行硬件結(jié)構(gòu)設(shè)計(jì),在滿足任務(wù)的容量、速度、容錯(cuò)等關(guān)鍵需求的同時(shí),盡量降低系統(tǒng)復(fù)雜度,逐步實(shí)現(xiàn)數(shù)據(jù)有效管理策略。
1 Flash器件的存儲(chǔ)特性介紹
本文以3D—PLUS公司的NAND型32Gbits(4G×8)Flash疊裝模塊作為存儲(chǔ)介質(zhì)為例,介紹Flash存儲(chǔ)特性。
1.1 并行性
該模塊由8片4G位(512Mbits×8)SAMSUNG公司的NAND Flash芯片疊裝而成,公用對(duì)外的8位寬I/O總線。該Flash芯片每2K字節(jié)的主存儲(chǔ)區(qū)(Main Array)外加64字節(jié)的空余區(qū)(Spare Array)組成一頁(yè)(Page),64頁(yè)組成一個(gè)塊(Block),4096塊組成一個(gè)器件(Device)。
由于Flash存儲(chǔ)模塊的指令與數(shù)據(jù)公用I/O端口,對(duì)時(shí)序要求較為嚴(yán)格,但從應(yīng)用的角度來(lái)看,由于各組I/O之間無(wú)依賴性,非常容易實(shí)現(xiàn)并行擴(kuò)展。3D plus公司提供的存儲(chǔ)模塊通過(guò)簡(jiǎn)單的片選邏輯,即可封裝多個(gè)Flash存儲(chǔ)芯片。在航天實(shí)際任務(wù)應(yīng)用中,我們也可以方便的通過(guò)并行總線技術(shù),進(jìn)行擴(kuò)展,提高速度、提高容量。
1.2 最小操作單位及編程時(shí)間
寫操作最小單位為“頁(yè)”。寫FLASH的過(guò)程分為兩步,首先將命令、地址以及數(shù)據(jù)以字節(jié)方式寫入芯片內(nèi)部緩存(也就是“加載”,最快周期為50 ns)后,芯片內(nèi)部需要一個(gè)內(nèi)部編程的過(guò)程,才可以確定編程是否成功。典型時(shí)間tPROG為300μs,最大700μs。在編程過(guò)程中,芯片不響應(yīng)外部命令,極大的降低了Flash的寫入速度,是Flash應(yīng)用的難點(diǎn)之一。
讀操作通常也是以頁(yè)為單位進(jìn)行,但相對(duì)靈活些,也可以通過(guò)在輸入地址過(guò)程中直接定位某一字節(jié)讀取。在輸入命令和地址后,需要一個(gè)等待時(shí)間tR后才可以將數(shù)據(jù)通過(guò)讀脈沖讀出。tR最大值為25μs。擦除操作必須以“塊”為單位進(jìn)行,每次必須同時(shí)擦除一個(gè)塊內(nèi)的全部64頁(yè)的數(shù)據(jù)。在擦除的命令和地址輸入后,需要等待時(shí)間tBERS后才可以確定擦除是否成功。tBERS的典型時(shí)間為2 ms,最大為3 ms。
1.3 無(wú)效塊
NAND型FLASH芯片的特點(diǎn)是在出廠時(shí)就存在一定比例的無(wú)效塊(Invalid Block),在芯片的使用過(guò)程中,有可能還會(huì)有新的無(wú)效塊產(chǎn)生,具體表現(xiàn)為在編程或擦除過(guò)程中出現(xiàn)編程失敗或擦除失敗的情況。對(duì)無(wú)效塊的讀操作是允許的,但由于對(duì)無(wú)效塊的寫和擦除操作應(yīng)盡量避免。壞塊隨機(jī)分布,難以從工藝上根本消除。
2 航天存儲(chǔ)系統(tǒng)設(shè)計(jì)及應(yīng)對(duì)技術(shù)措施
2.1 系統(tǒng)設(shè)計(jì)
文中以3D—PLUS公司的NAND型32Gbits(4Gbx8)Flash疊裝模塊作為存儲(chǔ)介質(zhì),介紹航天實(shí)際應(yīng)用的Flash存儲(chǔ)128Gbits容量方案。存儲(chǔ)控制采用FPGA集成全部控制模塊,負(fù)責(zé)系統(tǒng)工作流程執(zhí)行和狀態(tài)維護(hù)。
在每次系統(tǒng)重新加電后,硬件電路將自動(dòng)遍歷整個(gè)存儲(chǔ)區(qū)的簇使用記錄信息,每64簇的簇使用信息組成一條塊信息,全部塊信息構(gòu)成“塊分配表”,即BAT(Block Assignment Table),包含F(xiàn)lash的當(dāng)前使用信息,作為存儲(chǔ)狀態(tài)控制的依據(jù)。硬件初始化結(jié)束后,BAT表送往計(jì)算機(jī)內(nèi)存,計(jì)算機(jī)軟件在完成對(duì)CPU初始化設(shè)置后,進(jìn)入常規(guī)任務(wù)管理,包括數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)回放、數(shù)據(jù)讀取、數(shù)據(jù)擦除。FPGA與計(jì)算機(jī)通過(guò)
HPI總線通訊,計(jì)算機(jī)主板通過(guò)CAN總線與上位機(jī)通訊,實(shí)現(xiàn)指令遙控遙測(cè)等功能。存儲(chǔ)控制實(shí)現(xiàn)以硬件為主,與地面通訊交互功能以軟件為主。
為了保證存儲(chǔ)數(shù)據(jù)可靠,實(shí)際應(yīng)用中在存儲(chǔ)控制模塊中對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)出Flash存儲(chǔ)介質(zhì)的端口進(jìn)行RS編譯碼,有效檢錯(cuò)、糾錯(cuò),避免單粒子翻轉(zhuǎn)造成存儲(chǔ)數(shù)據(jù)錯(cuò)誤,并提交檢糾錯(cuò)信息至遙測(cè)工程參數(shù)。系統(tǒng)擁有回復(fù)出場(chǎng)初始化的命令,當(dāng)檢測(cè)到存儲(chǔ)系統(tǒng)出現(xiàn)較為嚴(yán)重的異常時(shí)可以恢復(fù)存儲(chǔ)系統(tǒng)至出場(chǎng)狀態(tài)。同時(shí)可以增加存儲(chǔ)電路板備份板,由復(fù)接器控制冷備或者熱備,提高系統(tǒng)可靠性。
2.2 并行總線技術(shù)和“簇”的概念
疊裝模塊包含8片F(xiàn)lash芯片,公用對(duì)外的8位寬I/O總線。128 Gbits配置的存儲(chǔ)區(qū)模塊由4個(gè)Flash疊裝模塊構(gòu)成,將4片F(xiàn)lash控制總線、狀態(tài)總線互連,而I/O總線擴(kuò)展為32位,其中4片F(xiàn)lash的8位寬I/O總線分別對(duì)應(yīng)32位總線的不同數(shù)據(jù)位段。即4片并行的FLASH芯片相同地址的頁(yè)被看作一個(gè)基本單位,即“簇”,因此1“簇”的基本存儲(chǔ)空間為2 kx32 bits。經(jīng)擴(kuò)展后,一簇容量為64 kbits,64簇組成一個(gè)塊(Block)。
4倍總線擴(kuò)展的系統(tǒng)操作速度將提高為原來(lái)的4倍。同時(shí)可以非常簡(jiǎn)單的進(jìn)行更多的擴(kuò)展,但考慮到控制總線的驅(qū)動(dòng)負(fù)載能力,更多的并行擴(kuò)展可能帶來(lái)時(shí)鐘沿建立時(shí)間不穩(wěn)定,可以使用總線驅(qū)動(dòng)器增強(qiáng)驅(qū)動(dòng)負(fù)載能力。
2.3 流水線技術(shù)
為了提高系統(tǒng)的存儲(chǔ)速度,根據(jù)FLASH芯片的操作特點(diǎn),在對(duì)存儲(chǔ)區(qū)模塊寫入時(shí)還將采用流水線操作的方式。將多片F(xiàn)LASH分成若干組,每次加載(寫)一頁(yè)的數(shù)據(jù)到一組Flash芯片后,該組芯片總要有大約300μs的內(nèi)部編程時(shí)間,在此期間盡管不能對(duì)該組芯片進(jìn)行其它操作,但可以立即進(jìn)行另一組芯片的加載。如果采用16 MHz的寫時(shí)鐘(周期62.5 ns),加載2k數(shù)據(jù)的時(shí)間大約為130μs左右,當(dāng)?shù)?組芯片加載完畢后,第一組芯片的編程過(guò)程通常已經(jīng)結(jié)束,待系統(tǒng)確認(rèn)后,開始下一個(gè)循環(huán)。根據(jù)寫操作典型事件,本設(shè)計(jì)采用4級(jí)流水線寫操作,便可以基本保證在宏觀上實(shí)現(xiàn)對(duì)存儲(chǔ)區(qū)的全速率無(wú)間斷連續(xù)數(shù)據(jù)寫入。圖4為流水線寫操作的原理示意圖。
2.4 壞塊管理
對(duì)于初始無(wú)效塊,將被直接跳過(guò),后續(xù)數(shù)據(jù)將被加載到該無(wú)效塊在本流水級(jí)內(nèi)后續(xù)的第一個(gè)有效塊中。如果在使用過(guò)程中出現(xiàn)了新增的編程無(wú)效簇,該簇所處的塊將被定義為程無(wú)效塊,系統(tǒng)將把該塊所在流水級(jí)內(nèi)后續(xù)的第一個(gè)有效塊作為替代塊,編程出錯(cuò)的數(shù)據(jù)將被重新加載至替代塊內(nèi)的相同偏移頁(yè)地址的簇地址空間,該流水級(jí)后續(xù)的數(shù)據(jù)將被加載到替代簇地址的后續(xù)地址中。
3 民用Flash存儲(chǔ)系統(tǒng)的啟示
民用Flash存儲(chǔ)系統(tǒng)有兩個(gè)特點(diǎn),一是Flash存儲(chǔ)介質(zhì)隨著半導(dǎo)體技術(shù)的提高密度增加很快,但由于工藝原因,對(duì)單粒子效應(yīng)敏感,密度越大,可能造成的混亂越嚴(yán)重,不適用于航天環(huán)境。二是存儲(chǔ)管理方式研究較為深入,極大的方便了用戶使用,借鑒意義較大。
民用Flash存儲(chǔ)系統(tǒng)管理類別較廣,大體分為Flash加速卡、Flash存儲(chǔ)陣列與分布式集群系統(tǒng),大多關(guān)注3個(gè)關(guān)鍵技術(shù),基于I/O棧調(diào)整與重構(gòu)的存儲(chǔ)性能優(yōu)化、系統(tǒng)級(jí)可靠性、體積與能耗。代表性Flash存儲(chǔ)系統(tǒng)對(duì)比見(jiàn)表1。而從航天存儲(chǔ)系統(tǒng)現(xiàn)狀來(lái)看,系統(tǒng)軟件層的I/O棧優(yōu)化尚無(wú)必要,而關(guān)注全局磨損平衡的系統(tǒng)級(jí)可靠性研究參考性較強(qiáng),體積與能耗的相關(guān)考量也有相互借鑒的地方,分布式集群系統(tǒng)的設(shè)計(jì)思想有一定的啟發(fā)性。
系統(tǒng)級(jí)可靠性研究中磨損平衡的提出,是由于Flash存儲(chǔ)單元的多次擦除,會(huì)削弱其保存電子的性能,使得數(shù)據(jù)易受干擾。閃存的擦除次數(shù)在一萬(wàn)到十萬(wàn)次之間,并且隨著存儲(chǔ)密度增加而降低。民用存儲(chǔ)系統(tǒng)一般在FTL內(nèi)實(shí)現(xiàn)磨損平衡策略。動(dòng)態(tài)磨損平衡在擦除與寫入的過(guò)程中,綜合考慮存儲(chǔ)單元的磨損程度,實(shí)時(shí)進(jìn)行平衡;靜態(tài)磨損平衡則是定時(shí)交換讀寫頻次低的冷數(shù)據(jù)與頻次高熱數(shù)據(jù)的存儲(chǔ)位置,又可分為隨機(jī)平衡機(jī)制,與基于擦寫次數(shù)的平衡機(jī)制。
分布式集群存儲(chǔ)系統(tǒng)的設(shè)計(jì)與航天應(yīng)用的流水操作思想較為相似,都有著用空間換取速度的指導(dǎo)思想。不過(guò)前是從更高層次進(jìn)行的整體系統(tǒng)設(shè)計(jì),包括系統(tǒng)架構(gòu)、FTL優(yōu)化等措施,解決Flash接口速率遠(yuǎn)遠(yuǎn)小于數(shù)據(jù)吞吐速率需求的問(wèn)題,但需要考慮大規(guī)模擴(kuò)展帶來(lái)的時(shí)延和可靠性問(wèn)題。分布式集群存儲(chǔ)系統(tǒng)突出特點(diǎn)是擁有良好的擴(kuò)展性,優(yōu)化存儲(chǔ)狀態(tài)更新查詢方式、選擇相適應(yīng)的低頻低功耗的CPU,有效降低整體功耗。
航天科技任務(wù)越來(lái)越豐富,科學(xué)數(shù)據(jù)的種類與數(shù)量不斷增加,對(duì)存儲(chǔ)系統(tǒng)數(shù)據(jù)管理要求也越來(lái)越高。相比于航天用存儲(chǔ)系統(tǒng)硬件架構(gòu)從磁帶機(jī)、磁盤到固態(tài)存儲(chǔ)器的多次升級(jí),相應(yīng)的數(shù)據(jù)管理研究與應(yīng)用較為落后,如高效壞塊管理、長(zhǎng)時(shí)間在軌磨損平衡、適應(yīng)航天綜合電子平臺(tái)的文件操作系統(tǒng)等。目前國(guó)內(nèi)外民用基于Flash的固態(tài)存儲(chǔ)系統(tǒng)架構(gòu)與優(yōu)化技術(shù)研究進(jìn)展較快,也更為豐富,對(duì)航天應(yīng)用具有較強(qiáng)的啟發(fā)性。
4 結(jié)束語(yǔ)
針對(duì)Flash存儲(chǔ)特性,本文以航天任務(wù)為背景,提出一種基于直接控制存儲(chǔ)介質(zhì)的Flash存儲(chǔ)系統(tǒng)。發(fā)揮Flash存儲(chǔ)介質(zhì)并行性的優(yōu)點(diǎn),應(yīng)用并行總線擴(kuò)展技術(shù);針對(duì)寫操作編程時(shí)間長(zhǎng)的問(wèn)題,合理采用多級(jí)流水線技術(shù);針對(duì)Flash壞塊現(xiàn)象,采取簡(jiǎn)單可靠的壞塊管理策略。并且調(diào)研民用Flash存儲(chǔ)技術(shù)與設(shè)計(jì)思想,探討航天存儲(chǔ)技術(shù)的研究方向。
評(píng)論