基于FLASH星載存儲器的高效管理研究
為了提高存儲速率,引入并行擴展和流水線操作的概念,將存儲陣列劃分為流水線組,每組多片芯片構(gòu)成并行結(jié)構(gòu)。并行擴展的概念較為直接,由于單片FLASH 芯片的數(shù)據(jù)總線 位寬較小,因而將多片芯片的IO 端口進行并行擴展,而所有控制信號直接連接在一起,這 樣每組芯片可以看作一個整體進行控制,實現(xiàn)了數(shù)據(jù)的并行操作。并行N 片的寬總線結(jié)構(gòu)數(shù)據(jù)處理能力可以達到單片芯片的N 倍。另外由于FLASH 芯片為串行操作接口,數(shù)據(jù)的寫入需要經(jīng)過數(shù)據(jù)加載、芯片自動編程、狀態(tài)讀取的過程才能執(zhí)行下一次的寫入操作,因而寫入性能較差??紤]到芯片自動編程過程的時間較長且不需要外部干預(yù),可以借鑒流水線的設(shè)計思想,利用這段空閑時間對其他組芯片進行控制,提高數(shù)據(jù)吞吐率。流水線操作示意圖如 圖2 所示。假設(shè)數(shù)據(jù)加載時間為Tload,芯片自動編程時間為Tprog,狀態(tài)讀取時間為 Tcheck,采用M 級流水線完成一次流水操作的總時間不超過(Tload+Tcheck)*M+Tprog, 相比不采用流水線操作縮短了(M-1)*Tprog 時間,提高了數(shù)據(jù)吞吐率。具體的總線寬度以及 流水線級數(shù)設(shè)置可以根據(jù)具體應(yīng)用需求確定。
最后,為了提高數(shù)據(jù)的可靠性,在 FLASH 控制模塊中增加數(shù)據(jù)檢錯糾錯處理模塊。
圖 2 流水線操作示意圖
3. YAFFS2 分析與改進
YAFFS2 具有優(yōu)良的文件管理特性,但是畢竟YAFFS2 是針對商用領(lǐng)域設(shè)計的文件系統(tǒng),對于空間應(yīng)用并沒有特殊考慮,直接應(yīng)用有其局限性。本節(jié)針對空間存儲器的特點,對 YAFFS2 不適合空間應(yīng)用的方面提出具體的修改方案,使得修改后的文件系統(tǒng)能夠滿足空間 數(shù)據(jù)存儲的需求。
3.1 硬件結(jié)構(gòu)適應(yīng)性
YAFFS2 文件系統(tǒng)只是針對單片F(xiàn)LASH 設(shè)計的系統(tǒng),對于FLASH 存儲陣列的結(jié)構(gòu)沒有 考慮,因而不適宜于直接在陣列結(jié)構(gòu)上面使用,需要進行修改。
并行結(jié)構(gòu)的處理比較簡單,將同組內(nèi)的所有芯片當(dāng)作整體統(tǒng)一進行處理即可。這樣的設(shè)計簡單,但也會帶來一些額外的問題需要注意。比如當(dāng)某一片芯片出現(xiàn)壞塊的時候,組內(nèi)其他芯片相應(yīng)塊也需標記為壞塊,造成一定的存儲空間浪費。另外讀取該組狀態(tài)的時候需要同時兼顧并行多片的狀態(tài)。這些問題需要在文件系統(tǒng)設(shè)計中進行相應(yīng)的修改。 流水線的設(shè)計較為復(fù)雜。由于YAFFS2 的存儲區(qū)管理是基于單片芯片的,因而在多級流 水線結(jié)構(gòu)中,每級流水線需要單獨維護自己的存儲區(qū),比如存儲塊的分配、壞塊的標記等。數(shù)據(jù)寫入的時候首先需要選擇流水線級,在流水線級內(nèi)部再采用現(xiàn)有的存儲區(qū)管理方式。
3.2 壞塊管理策略
FLASH 壞塊的類型可以分為初始壞塊和使用時產(chǎn)生壞塊兩類,不同芯片廠家采用不同 的方式標示初始壞塊,用戶可以根據(jù)具體的芯片手冊進行壞塊識別。三星NAND FLASH 通 過在每塊的第一頁或第二頁的第2048 字節(jié)寫入非0xFF 來標示初始壞塊,新產(chǎn)生的壞塊則 需要用戶自己進行記錄。
壞塊管理的首要任務(wù)就是對壞塊進行識別和標記,并且對于壞塊盡量不再進行擦寫操 作。YAFFS2 文件系統(tǒng)要求底層FLASH 驅(qū)動提供壞塊識別和標記的函數(shù),文件系統(tǒng)對這部分 功能并沒有實現(xiàn),也沒有要求具體的實現(xiàn)方式??紤]到存儲區(qū)的并行結(jié)構(gòu)特點,本方案對新產(chǎn)生的壞塊也采用在該塊第一頁的第2048 字節(jié)寫入非0xFF 的方法進行標記。由于寫入或者擦除是對組內(nèi)并行多片芯片同時進行操作,而這些芯片同時發(fā)生壞塊的概率可以認為接近于0,因而對于壞塊的標記總能夠成功寫入某個芯片。該方法將新產(chǎn)生壞塊和原始壞塊進行了統(tǒng)一,設(shè)計簡單并且不需要額外的存儲空間來存儲壞塊表,缺點是對于新產(chǎn)生的壞塊還有 一次寫入操作。
評論