(北京空間飛行器總體設(shè)計(jì)部,北京 100094)
作為衛(wèi)星數(shù)據(jù)管理系統(tǒng)中的關(guān)鍵組成,星載固態(tài)存儲(chǔ)器為有效載荷業(yè)務(wù)、平臺(tái)業(yè)務(wù)、星間中繼通信業(yè)務(wù)等數(shù)據(jù)提供存儲(chǔ)管理、回放傳輸?shù)裙δ躘1]。目前,星載固態(tài)存儲(chǔ)器主要使用基于Nand FLASH的文件存儲(chǔ)管理系統(tǒng),其具有非易失性、電可擦除性、可重復(fù)編程以及高密度、低功耗等特點(diǎn)。但目前YAFFS法中的索引表使用多級(jí)映射方式,其索引表建立過(guò)程耗時(shí)巨大,從而導(dǎo)致星載固態(tài)存儲(chǔ)器存在啟動(dòng)時(shí)間過(guò)長(zhǎng)的問(wèn)題。而衛(wèi)星所處的空間環(huán)境充斥著大量的帶電粒子會(huì)造成星載固態(tài)存儲(chǔ)器運(yùn)行邏輯錯(cuò)亂或者工作失效,嚴(yán)重時(shí)會(huì)導(dǎo)致整個(gè)星載數(shù)據(jù)管理系統(tǒng)不能工作。面對(duì)這種情況,地面通常會(huì)采用星載設(shè)備主備份切換或者復(fù)位操作來(lái)解決在軌出現(xiàn)的問(wèn)題[2]。同時(shí),空間探測(cè)器承載的有效載荷向著數(shù)量多,性能高以及多樣化的方向迅速發(fā)展,衛(wèi)星平臺(tái)承載的數(shù)據(jù)流要求越來(lái)越高。面對(duì)高速的數(shù)據(jù)輸入,固態(tài)存儲(chǔ)器過(guò)長(zhǎng)的啟動(dòng)時(shí)間會(huì)增加存儲(chǔ)數(shù)據(jù)丟失或者出錯(cuò)的風(fēng)險(xiǎn)。因此如何減少星上存儲(chǔ)系統(tǒng)的啟動(dòng)時(shí)間、提高快速訪問(wèn)速度已經(jīng)成為當(dāng)前星載數(shù)據(jù)管理研究的熱點(diǎn)之一。
當(dāng)前研究趨勢(shì)主要集中于兩個(gè)方向:1)通過(guò)精簡(jiǎn)索引表信息來(lái)減少需要恢復(fù)的數(shù)據(jù)量。例如Chan-Sul Park[3]提出的用掃描每個(gè)Nand Flash塊(block)頭文件空閑區(qū)的方式替代掃描每個(gè)Nand Flash頁(yè)(Page)的方式來(lái)建立更精簡(jiǎn)的索引表信息。索引表的建立過(guò)程以及索引表內(nèi)容均得到了簡(jiǎn)化,但其啟動(dòng)時(shí)間隨著存儲(chǔ)空間的增加而逐漸延長(zhǎng),不適用于大容量的Nand Flash存儲(chǔ)系統(tǒng);2)通過(guò)優(yōu)化索引表存儲(chǔ)方式來(lái)提高索引表建立速度。Keun Soo Yim[4]提出的快照技術(shù)(Snapshot)每次關(guān)機(jī)前將系統(tǒng)中的索引數(shù)據(jù)存儲(chǔ)于Nand Flash中,在存儲(chǔ)系統(tǒng)啟動(dòng)后通過(guò)讀取快照中的數(shù)據(jù)來(lái)恢復(fù)索引表。但這種索引表存儲(chǔ)方式減少了每次上電后對(duì)所有Nand Flash空閑區(qū)的掃描工作,成功加快了存儲(chǔ)器啟動(dòng)速度。但其索引表的存儲(chǔ)只在收到關(guān)機(jī)指令后啟動(dòng),對(duì)與沒(méi)有指令的非預(yù)期關(guān)機(jī)或者突然斷電情況無(wú)法啟動(dòng)存儲(chǔ)。而星上存儲(chǔ)系統(tǒng)中常常存在這樣非預(yù)期斷電的情況,故該方式具有很高的不可靠性,不適于在衛(wèi)星上使用。只包含Nand Flash單一存儲(chǔ)器件的固態(tài)存儲(chǔ)器,精簡(jiǎn)索引表信息常常受制于Nand Flash存儲(chǔ)體的容量,而修改索引表的存儲(chǔ)方式也會(huì)帶來(lái)極大的不可靠性。
針對(duì)這一問(wèn)題,分級(jí)緩存的新設(shè)計(jì)采用片內(nèi)緩存結(jié)合小容量非易失存儲(chǔ)器(MRAM)[5]的硬件架構(gòu)打破這一困局。MRAM其集動(dòng)態(tài)RAM、磁盤存儲(chǔ)和高速緩沖存儲(chǔ)器功能于一身,不僅存取速度快,掉電不流失數(shù)據(jù),接口時(shí)序與RAM相似,而且存儲(chǔ)單元不受單粒子效應(yīng)的影響。本文將重點(diǎn)討論如何將具有非易失且具有抗輻照功能的磁電存儲(chǔ)器(MRAM)和Nand Flash存儲(chǔ)器結(jié)合實(shí)現(xiàn)分級(jí)緩存,在以對(duì)象為索引的啟動(dòng)方式下把文件對(duì)象頭存儲(chǔ)指針存儲(chǔ)在MRAM中,從而保證在啟動(dòng)時(shí)可以快速定位對(duì)象文件地址指針來(lái)建立文件系統(tǒng)。若恢復(fù)失敗,再以NAND FLASH文件元數(shù)據(jù)為依據(jù),重新精簡(jiǎn)元數(shù)據(jù)結(jié)構(gòu)并集成為獨(dú)立的塊元數(shù)據(jù)區(qū),對(duì)整個(gè)存儲(chǔ)體的文件信息快速訪問(wèn),從而實(shí)現(xiàn)固態(tài)存儲(chǔ)器啟動(dòng)速度和存儲(chǔ)可靠性的大幅度提升。
本文結(jié)構(gòu)如下,第一節(jié)主要闡述了基于分級(jí)緩存加速的星載固態(tài)存儲(chǔ)系統(tǒng)架構(gòu)。第二節(jié)深入解析了基于分級(jí)緩存加速的文件系統(tǒng)啟動(dòng)及管理策略;第三節(jié)論述了星載固態(tài)存儲(chǔ)器啟動(dòng)性能分析,并通過(guò)實(shí)驗(yàn)結(jié)果和以往設(shè)計(jì)進(jìn)行了比較,表明了本設(shè)計(jì)的有效性;第四節(jié)對(duì)全文進(jìn)行了總結(jié)和展望。
磁電存儲(chǔ)器(MRAM)[5]中數(shù)據(jù)存儲(chǔ)是通過(guò)直接附著于鐵磁薄膜上具有電感耦合效應(yīng)的導(dǎo)線來(lái)完成的。這種工作機(jī)理不僅提高了存儲(chǔ)器的速度、可靠性,降低了功耗,而且在存儲(chǔ)單元尺寸、存儲(chǔ)速度方面也完全可以與DRAM相比擬。在衛(wèi)星上使用的磁電存儲(chǔ)器經(jīng)過(guò)抗輻照加固和3D疊片封裝,并行疊加的MRAM的數(shù)據(jù)線各自獨(dú)立組成更寬的數(shù)據(jù)總線,共用地址線和讀寫控制信號(hào),通過(guò)片選信號(hào)進(jìn)行選通,如圖1(a)所示,例如3D-plus公司的3DMR8M32VS8420 磁電存儲(chǔ)器,其內(nèi)部為兩組MRAM存儲(chǔ)基片,每次4片并行組成32位的數(shù)據(jù)總線,兩組共用17位地址總線和讀寫使能信號(hào),通過(guò)片選信號(hào)進(jìn)行選通。
圖1 MRAM和Nand Flash存儲(chǔ)架構(gòu)
Nand Flash芯片存儲(chǔ)結(jié)構(gòu)中的讀寫操作的基本單元為頁(yè)(Page)[6],擦除操作的基本單元為塊(Block)。每頁(yè)包含數(shù)據(jù)區(qū)和空閑區(qū),在固態(tài)存儲(chǔ)器中空余區(qū)用于存儲(chǔ)該頁(yè)相關(guān)的管理信息。由于Nand Flash的工藝問(wèn)題,其只支持先擦除再寫入的數(shù)據(jù)更新方式,此外其內(nèi)部存在壞塊,在壞塊區(qū)存儲(chǔ)數(shù)據(jù)會(huì)造成數(shù)據(jù)錯(cuò)誤。Nand Flash出廠時(shí)會(huì)標(biāo)注存在的壞塊,但壞塊會(huì)在使用中陸續(xù)產(chǎn)生。在衛(wèi)星上使用的Nand Flash存儲(chǔ)器經(jīng)過(guò)抗輻照加固和3D疊片封裝。疊片中并行聯(lián)系的Flash共用數(shù)據(jù)線,通過(guò)片選信號(hào)進(jìn)行選通,可以使用一個(gè)Flash接口控制模塊進(jìn)行控制。而隨著存儲(chǔ)容量的增加,星上存儲(chǔ)系統(tǒng)使用多個(gè)3D疊片封裝的Nand Flash存儲(chǔ)器,每個(gè)Nand Flash存儲(chǔ)器的IO接口各自獨(dú)立存在,從而形成Nand Flash的多通道存儲(chǔ)架構(gòu)[7],如圖1(b)所示。
Nand Flash和MRAM協(xié)同工作存儲(chǔ)系統(tǒng)硬件架構(gòu),將MRAM接入星載固態(tài)存儲(chǔ)系統(tǒng)[8]的下層FPGA中。其和Nand Flash一起受FPGA控制,具體如圖2所示。整個(gè)固態(tài)存儲(chǔ)器系統(tǒng)按照層次化思想進(jìn)行設(shè)計(jì),其使用CPU作為固態(tài)存儲(chǔ)器文件系統(tǒng)YAFFS2的實(shí)現(xiàn)載體,使用FPGA通過(guò)對(duì)Flash頁(yè)讀取,F(xiàn)lash頁(yè)寫入、Flash塊擦除以及Flash壞塊管理等基本單元操作,為CPU軟件提供硬件接口支持。其中,F(xiàn)PGA內(nèi)部分為負(fù)責(zé)接口選通和時(shí)序的物理接口管理模塊,負(fù)責(zé)存儲(chǔ)單元操作的存儲(chǔ)基本單元模塊,負(fù)責(zé)數(shù)據(jù)流控制和糾錯(cuò)的數(shù)據(jù)緩存模塊,以及和CPU總線通信的CPU接口模塊。
圖2 基于分級(jí)緩存的星載固態(tài)存儲(chǔ)器硬件架構(gòu)
基于YAFFS2文件系統(tǒng)的固態(tài)存儲(chǔ)器啟動(dòng)流程分為兩種,一種為以對(duì)象為索引自上而下搭建文件系統(tǒng), 一種為以Nand Flash里面的元數(shù)據(jù)為依據(jù)自下而上的恢復(fù)文件系統(tǒng),如圖3所示。
第一種方式中,YAFFS2 使用對(duì)象(object)來(lái)實(shí)例化所有存入閃存的文件,每個(gè)對(duì)象都有一個(gè)對(duì)象頭(object header)與之對(duì)應(yīng)。對(duì)象頭(object header)存儲(chǔ)文件對(duì)象的基本信息,如對(duì)象類型、父目錄的對(duì)象id、對(duì)象名、屬主信息、訪問(wèn)信息等等[9]。在文件系統(tǒng)掛載時(shí),YAFFS2根據(jù)對(duì)象頭創(chuàng)建相應(yīng)文件的對(duì)象,進(jìn)而建立起整個(gè)文件系統(tǒng)的組織關(guān)系。每當(dāng)文件發(fā)生改動(dòng)(修改、增加、刪除)后,文件系統(tǒng)都會(huì)在該文件后添加一個(gè)新的對(duì)象頭做為標(biāo)識(shí),。由于文件有可能發(fā)生過(guò)多次更改,同一文件可能會(huì)對(duì)應(yīng)多個(gè)對(duì)象頭,但其中只有一個(gè)是有效的。在固態(tài)存儲(chǔ)器啟動(dòng)時(shí),需要掃描整個(gè)Flash來(lái)鎖定有效的對(duì)象頭文件,這使得文件系統(tǒng)加載時(shí)間隨著Flash容量增大而延長(zhǎng),會(huì)出現(xiàn)啟動(dòng)速度慢的現(xiàn)象。
第二種方式中,YAFFS按照固定大小的數(shù)據(jù)段來(lái)組織文件,并利用NandFlash頁(yè)面的空閑區(qū)存放ECC(錯(cuò)誤檢查與糾正)糾錯(cuò)信息和文件系統(tǒng)組織信息[10]。在系統(tǒng)啟動(dòng)過(guò)程中,固態(tài)存儲(chǔ)器會(huì)遍歷所有Flash頁(yè)的空閑區(qū)來(lái)見(jiàn)獲取足夠的信息,將頁(yè)信息整合為按照塊為單位的塊信息數(shù)組(block_info)。遍歷結(jié)束后,CPU讀取該數(shù)組到緩存中進(jìn)行管理,并配置文件系統(tǒng)結(jié)構(gòu)。同時(shí)CPU在內(nèi)存中設(shè)置chunk_bits數(shù)組記錄Flash中所有邏輯頁(yè)的使用情況,數(shù)組中的每一個(gè)位(bit)對(duì)應(yīng)閃存中的一個(gè)頁(yè)的狀態(tài),若頁(yè)被使用則對(duì)應(yīng)位設(shè)置為1。當(dāng)文件系統(tǒng)被卸載時(shí),塊信息數(shù)組(block_info)和chunk_bits數(shù)組作為檢查點(diǎn)(checkpoint)數(shù)據(jù)被寫入到Nand Flash中[11]。在下一次加載文件系統(tǒng)時(shí),檢查點(diǎn)數(shù)據(jù)可以幫助YAFFS2將文件系統(tǒng)快速恢復(fù)到上一次卸載前的狀態(tài),而不必掃描整個(gè)Flash,從而加快了文件系統(tǒng)的掛載速度。如果文件恢復(fù)失敗,YAFFS2讀取塊序號(hào)(seq_number)采用逆序掃描的方式獲取閃存上每一塊的信息來(lái)恢復(fù)文件系統(tǒng)。這樣的遍歷操作也會(huì)造成啟動(dòng)時(shí)必須遍歷所有塊,致使啟動(dòng)時(shí)間隨容量增加大幅增長(zhǎng),無(wú)法滿足星載固態(tài)存儲(chǔ)器的應(yīng)用需求。
通過(guò)對(duì)啟動(dòng)流程進(jìn)行分析可知,第一個(gè)從對(duì)象出發(fā)的啟動(dòng)方式的關(guān)鍵在于對(duì)各個(gè)文件中對(duì)象頭(object header)的定位。第二個(gè)從Flash頁(yè)內(nèi)空閑區(qū)出發(fā)的啟動(dòng)方式的關(guān)鍵在于對(duì)索引信息的維護(hù)。因此,啟動(dòng)流程的優(yōu)化關(guān)鍵在于文件對(duì)象頭的地址索引,以及塊信息索引表的數(shù)據(jù)維護(hù)。
新的對(duì)象頭頁(yè)面(Object header)伴隨著文件系統(tǒng)操作而不斷被創(chuàng)建,舊的對(duì)象頭頁(yè)面不斷失效。本文將這類靈活變化又需要斷電保存的地址信息存入磁電存儲(chǔ)器MRAM中,每次新對(duì)象頭頁(yè)面被創(chuàng)建時(shí)就同步更新對(duì)應(yīng)文件號(hào)(ObjectID)在MRAM中的對(duì)象頭頁(yè)面存儲(chǔ)地址,這樣固態(tài)存儲(chǔ)器啟動(dòng)的時(shí)候可以直接讀取最新對(duì)象頭文件的存儲(chǔ)指針,減少了遍歷Flash的操作流程。
針對(duì)塊信息索引表的數(shù)據(jù)維護(hù),本文旨在通過(guò)精簡(jiǎn)文件組織信息內(nèi)容和優(yōu)化文件組織信息存儲(chǔ)方式等兩個(gè)方面實(shí)現(xiàn)啟動(dòng)流程的優(yōu)化。在文件組織信息中,Nand Flash存儲(chǔ)體的壞塊信息更新頻率低,查詢率高,適合在吞吐高,斷電保存的MRAM中存儲(chǔ)。因此在本設(shè)計(jì)中,在MRAM中設(shè)置壞塊表記錄Flash中所有塊的好壞塊情況,表中的每一個(gè)位(bit)對(duì)應(yīng)Flash中的一個(gè)塊,好塊為0,壞塊為1。通過(guò)對(duì)好壞塊表的查詢可以成功屏蔽壞塊對(duì)文件操作的影響。
參考yaffs_PackdTags2Part描述結(jié)構(gòu)內(nèi)容,提煉文件信息數(shù)據(jù),即塊元數(shù)據(jù)??紤]星載系統(tǒng)處理數(shù)據(jù)的類型與特點(diǎn),設(shè)置星載固態(tài)存儲(chǔ)器的文件系統(tǒng)最多支持1024個(gè)文件,同時(shí)每個(gè)文件的最小單位為一個(gè)Flash的塊。這樣對(duì)于每個(gè)Flash的塊來(lái)說(shuō),其元數(shù)據(jù)中的每個(gè)屬性都是唯一的,其具體參數(shù)如表1所示。
本設(shè)計(jì)嘗試在Nand Flash中尋找區(qū)域集中保存所有的塊元數(shù)據(jù),定義為塊元數(shù)據(jù)區(qū),特別針對(duì)星載固態(tài)存儲(chǔ)器的多通道系統(tǒng),在每個(gè)擁有獨(dú)立IO接口的Flash芯片(Device)中設(shè)置保存該Device所有Block塊元數(shù)據(jù)的塊元數(shù)據(jù)區(qū),這樣在固態(tài)存儲(chǔ)器啟動(dòng)時(shí)可以并行多通道讀取各自獨(dú)立的塊元數(shù)據(jù)區(qū),來(lái)獲得整個(gè)Nand Flash存儲(chǔ)體的文件系統(tǒng)信息,而不再將每個(gè)Block塊都一一遍歷,從而大大縮短啟動(dòng)時(shí)間。其具體存儲(chǔ)分布和更新方式如圖4所示。
圖4 多個(gè)Device中塊數(shù)據(jù)區(qū)存儲(chǔ)及更新示意圖
伴隨著星載固態(tài)存儲(chǔ)系統(tǒng)的運(yùn)行,每個(gè)文件操作都有可能導(dǎo)致Block塊元數(shù)據(jù)內(nèi)容的失效,故需要定時(shí)遍歷整個(gè)Device來(lái)讀取Block塊內(nèi)部文件信息形成新的塊元數(shù)據(jù)區(qū)文件。從舊的塊元數(shù)據(jù)區(qū)文件尾部開(kāi)始順序存儲(chǔ)到Flash中。最新一次的完整數(shù)據(jù)的地址指針伴隨著每次定時(shí)更新而跳變,故將這部分?jǐn)?shù)據(jù)放入MRAM中存儲(chǔ)。當(dāng)斷電后啟動(dòng)時(shí),星載固態(tài)存儲(chǔ)器來(lái)讀取MRAM來(lái)獲得最新一次版本的塊數(shù)據(jù)區(qū)的完整數(shù)據(jù),并作為數(shù)據(jù)恢復(fù)的信息參考。將整個(gè)存儲(chǔ)體的壞塊表,所有文件的對(duì)象頭存儲(chǔ)指針以及所有Flash芯片的塊元數(shù)據(jù)區(qū)存儲(chǔ)在MRAM中進(jìn)行管理,通過(guò)三模冗余存儲(chǔ)設(shè)計(jì)來(lái)保證存儲(chǔ)數(shù)據(jù)的高可靠性。
星載固態(tài)存儲(chǔ)器的啟動(dòng)時(shí)間與Nand Flash接口時(shí)序、容量、內(nèi)部壞塊數(shù)、塊元數(shù)據(jù)區(qū)大小以及塊元數(shù)據(jù)更新周期等因素有關(guān),依照星上器件使用情況對(duì)上述因素進(jìn)行量化假設(shè):
1)Nand Flash存儲(chǔ)體內(nèi)部架構(gòu)以及相關(guān)參數(shù)在目前星上存儲(chǔ)系統(tǒng)的性能區(qū)間如表2所示。
2)Nand Flash讀取操作時(shí),設(shè)定時(shí)鐘周期為tRC,Flash內(nèi)部運(yùn)行時(shí)間為trb,讀取數(shù)據(jù)字節(jié)數(shù)為Brd, Flash內(nèi)部數(shù)據(jù)的讀取時(shí)間為:
Trd=7tRC+trb+BrdtRC
(1)
設(shè)置Tpre=7tRC+trb,則方程式(1)可以簡(jiǎn)化為:
Trd=Tpre+BrdtRC
(2)
其中:tRC一般在40~80 ns之間,tRC一般在25 μs左右。
3)MRAM讀取時(shí)間為TM_RD,其中0≤TM_RD≤35 ns
4)星載固態(tài)存儲(chǔ)器YAFFS2文件系統(tǒng)中文件數(shù)設(shè)置為WObject個(gè),其中0≤WObject≤1023。
5)單個(gè)Device中塊元數(shù)據(jù)區(qū)大小為BWA個(gè)Flash數(shù)據(jù)頁(yè)P(yáng)age,根據(jù)定義,即:
設(shè)定0≤BWA≤QPage。
根據(jù)上一節(jié)Nand Flash讀取時(shí)間公式(2),對(duì)傳統(tǒng)算法的啟動(dòng)過(guò)程進(jìn)行建模。傳統(tǒng)星載固態(tài)存儲(chǔ)器每次啟動(dòng)需要搜索所有數(shù)據(jù)頁(yè)的空閑區(qū),來(lái)尋找對(duì)象頭文件,或者獲取塊序號(hào)(Seq_Number)用于逆序掃描建立文件系統(tǒng)。因此其啟動(dòng)時(shí)間Tmnt可以定義為:
Tmnt=PDeviceLChipSBlockQPage(Tpre+BSparetRC)
(3)
本文中設(shè)計(jì)的星載固態(tài)存儲(chǔ)器針對(duì)兩種YAFFS2 文件系統(tǒng)掛載方式分別設(shè)計(jì)了基于MRAM的啟動(dòng)加速算法,下面一一進(jìn)行建模并估算啟動(dòng)時(shí)間:
1)針對(duì)以對(duì)象為索引自上而下的文件啟動(dòng)方式,其啟動(dòng)過(guò)程為讀取MRAM獲得對(duì)象頭文件地址指針,然后讀取頭文件內(nèi)部數(shù)據(jù),依次遍歷所有文件后,從而完成固態(tài)存儲(chǔ)器啟動(dòng)操作。故其啟動(dòng)過(guò)程Tmnt_H可以定義為:
Tmnt_H=WObject[TM_RD+Tpre+(BSpare+BData)tRC]
(4)
考慮到TM_RD遠(yuǎn)小于Tpre,則公式(4)可以簡(jiǎn)化為:
Tmnt_H=WObject[Tpre+(BSpare+BData)tRC]
(5)
2)針對(duì)以Nand Flash里面的元數(shù)據(jù)為依據(jù)自下而上的文件啟動(dòng)方式,其啟動(dòng)過(guò)程為讀取MRAM獲得每個(gè)Device中的塊元數(shù)據(jù)區(qū)起始地址指針,然后數(shù)據(jù)區(qū)的塊元數(shù)據(jù),從而完成文件系統(tǒng)加載操作。在這個(gè)過(guò)程中,讀取MRAM的操作室串行的,而讀取各個(gè)獨(dú)立Flash的操作則是并行進(jìn)行的,故其啟動(dòng)過(guò)程Tmnt_D可以定義為:
Tmnt_D=PDeviceTM_RD+BWA(Tpre+BDatatRC)
(6)
引入公式(3),并考慮到PDeviceTM_RD數(shù)值太小可以忽略,公式(5)可以演變?yōu)椋?/p>
(7)
通過(guò)公式(5)可知,針對(duì)以對(duì)象為索引自上而下的文件啟動(dòng)方式只受文件數(shù)量和單頁(yè)Flash讀取時(shí)間影響,而Nand Flash芯片容量和內(nèi)部結(jié)構(gòu)不再直接影響啟動(dòng)時(shí)間。參考3.1節(jié)中各個(gè)參數(shù)的數(shù)值范圍,當(dāng)文件數(shù)量為1024,單頁(yè)Flash數(shù)據(jù)區(qū)字節(jié)數(shù)為8192, 空閑區(qū)字節(jié)數(shù)為224,Flash讀取時(shí)鐘周期為80 ns時(shí),理論上按照公式(5)獲得最大啟動(dòng)時(shí)間為689.28 ms。
通過(guò)公式(7)可知,針對(duì)以Nand Flash里面的元數(shù)據(jù)為依據(jù)自下而上的文件啟動(dòng)方式受單個(gè)芯片Device的內(nèi)部塊結(jié)構(gòu)和單字節(jié)Flash讀取時(shí)間影響,而與Nand Flash芯片個(gè)數(shù)關(guān)系不大。參考3.1節(jié)中各個(gè)參數(shù)的數(shù)值范圍,當(dāng)單頁(yè)Flash數(shù)據(jù)區(qū)字節(jié)數(shù)為2048,單個(gè)基片Chip中包含4096塊,每個(gè)芯片包含8個(gè)基片,Flash讀取時(shí)鐘周期為80 ns時(shí),理論上按照公式(7)獲得最大啟動(dòng)時(shí)間為24.17 ms。
通過(guò)公式(3)可知,以傳統(tǒng)方式啟動(dòng),啟動(dòng)時(shí)間與存儲(chǔ)器的整體規(guī)模直接相關(guān),存儲(chǔ)體容量越大,時(shí)間越長(zhǎng)。參考3.1節(jié)中各個(gè)參數(shù)的數(shù)值范圍,當(dāng)單頁(yè)Flash空閑區(qū)字節(jié)數(shù)為64,存儲(chǔ)體包含1個(gè)Nand Flash存儲(chǔ)芯片,單個(gè)存儲(chǔ)芯片中包含4個(gè)基片,單個(gè)基片Chip中包含2048塊,單個(gè)Block塊內(nèi)部包含64頁(yè),F(xiàn)lash讀取時(shí)鐘周期為40 ns時(shí),理論上按照公式(3)獲得最小啟動(dòng)時(shí)間為22.84 s。
由此可見(jiàn),針對(duì)星載固態(tài)存儲(chǔ)器的使用區(qū)間,經(jīng)過(guò)分級(jí)緩存加速優(yōu)化的啟動(dòng)流程的最大耗時(shí)都遠(yuǎn)遠(yuǎn)小于基于傳統(tǒng)設(shè)計(jì)方案的啟動(dòng)方式的最小耗時(shí)。故針對(duì)星載固存設(shè)計(jì)來(lái)說(shuō),分級(jí)緩存加速的文件系統(tǒng)啟動(dòng)速度大大優(yōu)于傳統(tǒng)文件系統(tǒng)啟動(dòng)速度。
本次設(shè)計(jì)中,F(xiàn)PGA芯片選用Xilinx公司的XQR2V3000,設(shè)置外部激勵(lì)對(duì)固態(tài)存儲(chǔ)器上電啟動(dòng)進(jìn)行控制仿真。通過(guò)仿真,基于硬件加速的星載固態(tài)存儲(chǔ)器啟動(dòng)設(shè)計(jì)的性能可以得到更多方面的論證。
1)設(shè)置文件對(duì)象數(shù)為1000,每個(gè)芯片Device包含4個(gè)基片,每個(gè)Flash基片(Chip)包含4096的塊(Block),Nand Flash接口讀取時(shí)鐘為60 ns,選取不同規(guī)格的Nand Flash進(jìn)行仿真,測(cè)試Flash單片容量與啟動(dòng)時(shí)間的關(guān)系,具體如圖5所示。
圖5 不同規(guī)格Nand Flash環(huán)境下固態(tài)存儲(chǔ)器的啟動(dòng)時(shí)間
圖表中的具體數(shù)值如表3所示。
表3 單片容量不同的Nand Flash 的啟動(dòng)時(shí)間
通過(guò)圖5的仿真結(jié)果可以看出,當(dāng)單片Page容量很小的時(shí)候,兩種方式性能差不多。隨著Nand Flash單片容量的增加,星載固態(tài)存儲(chǔ)器的啟動(dòng)時(shí)間因?yàn)椴捎脝?dòng)方式的不同而出現(xiàn)截然不同的特性。在以對(duì)象為索引的文件啟動(dòng)方式下,啟動(dòng)時(shí)間伴隨容量增加而明顯延長(zhǎng)。而在以Nand Flash里面的元數(shù)據(jù)為依據(jù)的文件啟動(dòng)方式下,啟動(dòng)時(shí)間反而逐漸減小并趨于一個(gè)穩(wěn)定值。也就是說(shuō),當(dāng)單片Page容量超過(guò)8 416字節(jié)后,啟動(dòng)時(shí)間不再受單片Page大小的影響。
2)設(shè)置文件對(duì)象數(shù)為1 000,每個(gè)芯片Device包含4個(gè)基片,每個(gè)Flash基片(Chip)包含4 096的塊(Block),每頁(yè)P(yáng)age數(shù)據(jù)區(qū)包含4 096字節(jié),空閑區(qū)包含128字節(jié),通過(guò)FPGA修改Nand Flash讀取時(shí)鐘周期(tRC),測(cè)試Flash讀取速率與啟動(dòng)時(shí)間的關(guān)系,具體實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 不同讀取速率下的固態(tài)存儲(chǔ)器的啟動(dòng)時(shí)間
圖表中的具體數(shù)值如表4所示。
表4 不同讀取速率下固態(tài)存儲(chǔ)器的啟動(dòng)時(shí)間
通過(guò)對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行解析發(fā)現(xiàn)在兩種啟動(dòng)方式下,星載固態(tài)存儲(chǔ)器都不同程度地隨Nand Flash接口讀取速率的提高獲得更高的啟動(dòng)速率,但星載設(shè)備的可靠性要求接口時(shí)序擁有一定的時(shí)序裕度,故要求使用者根據(jù)具體應(yīng)用環(huán)境選擇合適的Nand Flash接口讀取時(shí)鐘周期,從而在高啟動(dòng)速率和高可靠性之間得到平衡。
在實(shí)際的測(cè)試板上面,選用Xilinx公司的XQR2V3000作為芯片載體,選用五塊三星公司出品的FLASH 存儲(chǔ)器MMFN08408808S-F和一塊3D_Plus公司出品的MRAM 存儲(chǔ)器3DMR8M32VS8420作為存儲(chǔ)器件,使用YAFFS2文件系統(tǒng),創(chuàng)建10個(gè)文件,進(jìn)行斷電重啟操作,記錄上電后到文件系統(tǒng)組織信息搜集完畢的時(shí)間。經(jīng)過(guò)測(cè)試,以對(duì)象為索引的文件啟動(dòng)方式獲得的啟動(dòng)時(shí)間為3.12 ms,以Nand Flash里面的元數(shù)據(jù)為依據(jù)的文件啟動(dòng)方式獲得的啟動(dòng)時(shí)間為143.47 ms。在相同的實(shí)驗(yàn)條件下,以傳統(tǒng)設(shè)計(jì)方式進(jìn)行重啟后,其啟動(dòng)時(shí)間為170.35 s。由此可知,本文通過(guò)加入MRAM實(shí)現(xiàn)分級(jí)緩存的硬件架構(gòu)并設(shè)計(jì)了基于分級(jí)緩存文件系統(tǒng)的啟動(dòng)加速算法,這樣的設(shè)計(jì)可以大大縮短了星載固態(tài)存儲(chǔ)器啟動(dòng)時(shí)間。
本文從星載固態(tài)存儲(chǔ)器在軌工作環(huán)境出現(xiàn)的問(wèn)題出發(fā),深入研究星載固態(tài)存儲(chǔ)器傳統(tǒng)啟動(dòng)策略的優(yōu)化局限,提出一種基于分級(jí)緩存加速的星載固態(tài)存儲(chǔ)器啟動(dòng)及管理算法。分級(jí)緩存設(shè)計(jì)在硬件架構(gòu)上引入MRAM磁電存儲(chǔ)器來(lái)存儲(chǔ)Nand Flash的壞塊信息和文件系統(tǒng)操作中容易變化文件組織信息。針對(duì)YAFFS2文件系統(tǒng)的加載過(guò)程,分級(jí)緩存對(duì)關(guān)鍵信息的高吞吐率保證固態(tài)存儲(chǔ)器直接定位對(duì)象頭文件而縮短了基于對(duì)象索引建立文件系統(tǒng)的時(shí)間,也可以通過(guò)直接定位更精簡(jiǎn)集成的塊元數(shù)據(jù)區(qū)的起始地址來(lái)加速以Flash元數(shù)據(jù)恢復(fù)文件系統(tǒng)的進(jìn)程。MRAM的抗輻照以及斷電保護(hù)特性,保護(hù)其內(nèi)部存儲(chǔ)文件數(shù)據(jù)的正確性和實(shí)時(shí)性,大大提高文件系統(tǒng)可靠性。在本文中,作者對(duì)兩種啟動(dòng)方式下的優(yōu)化設(shè)計(jì)進(jìn)行建模,通過(guò)性能分析和與傳統(tǒng)算法的比較,以及在星載存儲(chǔ)測(cè)試板上的實(shí)驗(yàn)驗(yàn)證均表明新設(shè)計(jì)的啟動(dòng)時(shí)間大大縮短,從而證明基于分級(jí)緩存加速的固態(tài)存儲(chǔ)器啟動(dòng)設(shè)計(jì)擁有超越傳統(tǒng)設(shè)計(jì)的優(yōu)越性能。