基于閃存的星載大容量存儲器的研究和實現(xiàn)
1.2 無效塊的管理本文引用地址:http://2s4d.com/article/202575.htm
三星閃存芯片在使用過程中會出現(xiàn)無效塊。無效塊是指一個塊中存在一個或多個無效位,其可靠性不能得到保證,必須加以標識和旁路(當然無效塊不會影響到其它塊的有效性)4并進行數(shù)據(jù)備份。為了對無效塊實現(xiàn)管理,可以建立一張無效塊到冗余區(qū)有效塊的映射表。映射表結(jié)構(gòu)如圖2所示。映射原理如下: 開始是一張初始無效塊映射表,這張表可以根據(jù)三星公司技術(shù)手冊給出的算法建立起來。按照圖示的映射數(shù)據(jù)結(jié)構(gòu)對整個存儲區(qū)進行編號,并根據(jù)這個編號對映射表進行排序。進行寫操作時,按照上述的映射結(jié)構(gòu)將寫地址與映射表進行比較,比較到塊級即可。如果是無效塊,將待寫入的數(shù)據(jù)寫到被映射到的塊;如果不是,則直接寫入該塊。如果在寫某塊的某頁時出現(xiàn)編程錯誤,則將該塊添加進無效塊映射表(當編程出錯時就表明出錯頁對應(yīng)的塊無效),同時從該出錯頁開始,將該塊后面的頁數(shù)據(jù)都寫入到對應(yīng)的映射塊。這樣,在數(shù)據(jù)讀出時,可將讀地址與映射表比較,并且需要比較到頁級以確定每一頁的確切存放位置。如果該頁編程正確,則直接讀出;如果錯誤,則到被映射的塊的對應(yīng)頁讀數(shù)據(jù),并且該頁之后的頁也從被映射塊中讀數(shù)據(jù)。根據(jù)三星的技術(shù)資料,對無效塊進行讀操作是允許的,即對于編程出錯頁前面的那些編程正確的頁是可以正確讀出的,而對無效塊進行編程和擦除的操作是不推薦的,因為有時這些操作會使鄰近的塊也失效4。所以讀操作要查找到每一頁的對應(yīng)存放位置,而寫操作只要查找到塊就行。查找時采用二分查找算法。擦除完后,將擦除出錯的塊也添加進無效塊映射表。無效塊映射表需要不斷維護和更新。
2 閃存構(gòu)成星載大容量存儲器的系統(tǒng)實現(xiàn)方案2.1 系統(tǒng)的組成
該實現(xiàn)方案將上述關(guān)鍵問題的解決方法融合進來,系統(tǒng)由存儲區(qū)模塊、接口模塊、數(shù)據(jù)緩沖模塊及主控模塊四部分組成,系統(tǒng)原理圖如圖3所示。
2.1.1 存儲區(qū)模塊
為了實現(xiàn)并行和流水技術(shù),整個存儲區(qū)模塊按如下方式構(gòu)成:由4片K9K1G08U0M型三星閃存芯片組成一個子模塊,8個子模塊組成8級流水的大模塊,而這個大模塊即是整個存儲區(qū),其總?cè)萘繛椋常玻牵猓椋?。無效塊備份的冗余區(qū)可以設(shè)在每個子模塊內(nèi)部,即從子模塊的每塊芯片中預留出一部分空間。這種模塊化管理的方式既便于系統(tǒng)擴展,又可以在不影響系統(tǒng)正常工作的情況下旁路已損壞的存儲塊。
2.1.2 接口模塊
系統(tǒng)與外部的接口有兩個。一是與CPU的接口,主要完成系統(tǒng)的初始化、外部命令和地址的輸入以及內(nèi)部狀態(tài)參數(shù)的輸出,同時CPU 還要對存儲區(qū)完成管理:無效塊的管理、地址的譯碼和映射等;二是與外部高速數(shù)據(jù)源的接口,主要完成外部高速數(shù)據(jù)的接收和發(fā)送。這里選用了1394高速總線作為數(shù)據(jù)源總線。
2.1.3 數(shù)據(jù)緩沖模塊
這一模塊包括數(shù)據(jù)輸入FIFO、數(shù)據(jù)輸出FIFO和一個作為數(shù)據(jù)備份的SRAM。由于閃存的寫入速度比較慢,如果沒有數(shù)據(jù)緩沖區(qū),外部的高速數(shù)據(jù)很有可能會丟失,而且數(shù)據(jù)回放時也需要一個緩沖區(qū)使內(nèi)外的數(shù)據(jù)率匹配。考慮到編程出錯時需要重新加載數(shù)據(jù),按照流水線的工作方式,如果不進行數(shù)據(jù)備份,可能會出現(xiàn)出錯時的數(shù)據(jù)丟失,因此選用了一個SRAM進行數(shù)據(jù)備份。當將輸入FIFO的數(shù)據(jù)寫入FLASH時,同時也將數(shù)據(jù)寫入到SRAM進行備份;當需要重新編程時,再從SRAM中將相應(yīng)的備份數(shù)據(jù)重新寫入FLASH。
2.1.4 主控模塊
這一模塊完成整個存儲器系統(tǒng)的內(nèi)部控制,是核心控制機構(gòu),連接著存儲區(qū)、數(shù)據(jù)緩沖以及外部接口三個模塊,完成它們之間的數(shù)據(jù)、命令、地址、狀態(tài)的相互傳遞、轉(zhuǎn)換和處理。主控模塊又分為三個子模塊,即存儲區(qū)控制子模塊、存儲區(qū)數(shù)據(jù)子模塊和1394接口控制子模塊,分別由三片FPGA(現(xiàn)場可編程邏輯陣列)完成。
評論