張 雯,崔建杰,張 新
(1.西安郵電大學電子工程學院,西安 710121;2.西安奇維科技股份有限公司研發(fā)中心,西安 710077)
?
一種多通道NAND Flash陣列的壞塊管理方案*
張雯1,2,崔建杰2,張新1*
(1.西安郵電大學電子工程學院,西安 710121;2.西安奇維科技股份有限公司研發(fā)中心,西安 710077)
摘要:針對多通道NAND Flash陣列對可靠性的要求,提出一種壞塊管理方案,優(yōu)化壞塊信息的存儲和查詢方法,把壞塊和替換塊地址映射表存儲在FRAM中。測試數據證明,方案可以實現多通道NAND Flash陣列的壞塊管理,保證了存儲的可靠性。優(yōu)化的壞塊表及查詢方法縮短了壞塊查詢時間,FRAM節(jié)省了有效塊地址映射時間,同時FRAM的鐵電效應,進一步提高了數據存儲的可靠性。
關鍵詞:大容量存儲;壞塊管理;二分法;NAND Flash陣列;FRAM
在這個信息科學飛速發(fā)展的時代,數據存儲成為通信領域中不可或缺的環(huán)節(jié),系統(tǒng)對存儲容量和存儲帶寬的需求不斷增加,這就使得對海量數據存儲的研究成為一種必然趨勢。NAND Flash存儲器成本低,容量大,數據存儲速率高、非易失性好,可擦除次數多,無機械機制等優(yōu)勢,成為海量數據存儲系統(tǒng)的理想器件,使海量數據存儲得到迅猛發(fā)展和廣泛應用[1]。由于制造工藝的關系,NAND Flash在出廠時就會存在一定量壞塊[2],這些固有壞塊不能進行讀寫或擦除等操作,經廠商檢測后被標記出來,存儲在NAND Flash自身的備用區(qū)。同時,因NAND Flash擦寫壽命一般不超過100萬次[3],使用一定時限后必然會產生使用壞塊,這些壞塊的存在會使系統(tǒng)的可靠性下降。對比幾種NAND Flash壞塊管理方法,提出一種針對多通道NAND Flash陣列的壞塊管理方案,優(yōu)化了壞塊和替換塊地址映射表及查表方式,使用了鐵電存儲器,保證數據存儲可靠性的同時,明顯縮短了壞塊信息的讀取時間,提高了系統(tǒng)對數據的處理速度。
以美光公司的MT29F64G08AJABA芯片為例,一個邏輯單元LUN(Logic Unit Number)的物理結構如圖1所示。MT29F64G08AJABA是由4個LUN組成,其中1 Page=4096 byte+224 byte),1 Block=128 Page=512 kbyte+28 kbyte,1 LUN=4096 Blocks=2 Gbyte+112 Mbyte,即 MT29F64G08AJABA容量為(8 Gbyte+448 Mbyte),這表示用戶可以進行讀寫、擦除等操作的存儲空間為8 Gbyte,而后的448 Mbyte空間是廠家為芯片自身預留的備用區(qū),這部分區(qū)域,是用戶不能進行操作的,只能用來存儲廠家檢測并標記出的固有壞塊信息。[4]
圖1 NAND Flash物理結構圖
NAND Flash的基本操作主要有3種:讀、寫和擦除,讀操作和寫操作都是按頁操作的,擦除是按塊操作的,NAND Flash本身具有較快的寫入與擦除速度,這是它適合大容量存儲的原因之一。[5]NAND Flash存儲器是一個非易失性半導體,每次進行寫操作之前都需要先進行擦除操作,NAND Flash存儲器的使用順序是擦除、編程、多次讀取、擦除,依次循環(huán)。
2.1壞塊出現的原因
壞塊是指一個塊內含有一位或多位數據單元,無法進行讀或寫或擦除或糾錯碼ECC(Error Checking and Correction)校驗等操作的塊單元,一般分為固有壞塊和使用壞塊。由于生產工藝的限制,通常NAND Flash在出廠時允許2%數量的壞塊存在,稱為固有壞塊。在芯片的長期使用過程中,由于存儲單元錯誤、地址線錯誤等,使某些塊頻繁地寫入或擦除,超出了NAND Flash支持的操作次數,使NAND Flash某一部分扇區(qū)損壞而出現壞塊,稱為使用壞塊。
如果數據信息存儲在NAND Flash的壞塊中,會導致數據信息的錯碼或丟失,造成不必要的損失,同時也降低了系統(tǒng)的穩(wěn)定性和可靠性,所以對NAND Flash的存儲方式和存儲區(qū)域的管理是非常有必要的。
2.2壞塊管理的常見方法
壞塊管理的主要思想就是壞塊識別、存儲、跳過和替換。目前已經有許多專家學者探索了壞塊的各種處理方法,常見的有以下幾種:(1)在現場可編程門陣列FPGA(Field Programmable Gate Array)內建立片上隨機存儲器RAM(Random Access Memory),每次操作完成后,通過狀態(tài)寄存器的內容判斷操作是否正確,若不正確則判定為壞塊,須將整塊數據搬移到有效塊單元中。[6]在高速實時數據傳輸中,不可能花費很長時間進行數據搬移,此方法不僅對速度有限制,而且受到FPGA內部RAM資源的限制。(2)在FPGA內部生成壞區(qū)文件,將檢測到的壞塊信息寫入FPGA的只讀存儲器ROM(Read Only Memory)中,將使用的Flash陣列壞塊生成壞區(qū)文件,當Flash陣列中的一片遇到壞塊時,則整個陣列地址同時跳過這個壞塊。[7]這種設計僅僅是將壞塊標記并跳過,必然損失了Flash陣列的存儲空間。(3)在FPGA內部建立RAM,存儲所有有效塊地址,在每次寫操作之前,調用檢測有效塊地址函數,寫操作時直接提取有效塊地址。[1]此方法明顯需要占用足夠大的RAM空間,而且給軟件設計增加了難度。在常見的壞塊管理方案中通常都是針對單通道或單個NAND Flash而言,本設計提出的優(yōu)化方案則是針對多通道NAND Flash陣列而言。
3.1多通道NAND Flash陣列
NAND Flash單片容量已經遠遠不能滿足人們的需求,越來越多的電子領域采用多片NAND Flash級聯或組成陣列使用以擴大存儲空間和提高數據吞吐量。NAND Flash寫入的平均時間為200 μs,最大等待時間為700 μs,[4]若按順序依次操作數據的寫入速度就會很慢,無法滿足實際的使用要求。這就引入了一個新的問題,如何提高數據的讀寫速度,采用多通道NAND Flash陣列,可以有效的解決這一問題。
在多通道NAND Flash陣列中,每個閃存通道都有自己獨立的通道緩存、時序模塊、數據總線和控制總線,這樣就可以使得每個通道并行工作互不影響,由硬件邏輯來實現數據到各個通道上的自動分配,大大提高了數據的傳輸速度。整個NAND Flash陣列由多個通道構成,每增加一個通道,理論上數據的讀寫速度會增加一倍,突破閃存的極限讀寫速度限制,在擴大存儲容量的同時,也可以成倍提高數據的吞吐率。設計的NAND Flash陣列在讀取數據的時候,通道仲裁和數據分配單元可以一次啟動多個通道進行數據讀操作,每個通道讀取數據后都存放在對應的通道緩存中,由通道仲裁和數據分配單元負責把數據讀出向前傳遞。寫數據嚴格按照芯片手冊提供的最大等待時間來操作,這樣可以保證在惡劣的外部環(huán)境下,數據依然能夠可靠的寫入到芯片中。這種由單通道構成的多通道NAND Flash陣列,每增加一個單通道,便會使構成的多通道NAND Flash陣列的讀寫速度比原來的單通道NAND Flash級聯讀寫速度增加一倍,從而大幅提高NAND Flash的讀寫速度。
以4通道8片NAND Flash陣列為例(下文中都用此陣列為例),選用的NAND Flash控制器數據總線寬16位。如圖2 NAND Flash陣列所示,將兩片NAND Flash芯片構成16位數據總線,每個通道中的NAND Flash芯片通過級聯共享一條數據總線、控制總線和片選信號。每個通道都有自己獨立的通道緩存,獨立的時序模塊,獨立的數據總線和控制總線,所以這4個通道可以并行工作,互不影響。當寫完chip0后,讓其處于寫等待狀態(tài),立即轉入對chip1的操作,并不因為chip0處于寫等待狀態(tài)而使總線空閑,以此類推,當循環(huán)操作一周后,chip0寫等待狀態(tài)完成,又進入下一輪操作,這就是流水線管理方法,它可以保證每個通道的數據總線總是處于繁忙狀態(tài),從而提高了每個通道的數據傳輸速度。
圖2 NAND Flash陣列示意圖
3.2鐵電存儲器
鐵電存儲器FRAM(Ferroelectric Random Access Memory)是基于鐵電晶體的鐵電效應進行信息存儲的一種新型非易失性存儲器。鐵電效應是指在鐵電晶體上施加一定的電場時,晶體中心原子在電場的作用下運動,并達到一種穩(wěn)定狀態(tài);當電場從晶體移走后,中心原子會保持在原來的位置的特性。[8]根據這一特性將鐵電薄膜與CMOS工藝集成形成一種鐵電存儲產品,同時還具有RAM的特性。[9]因此,FRAM既可以像RAM一樣操作,讀寫功耗極低,又不存在如EEPROM的最大寫入次數問題,同時,它還具有速度快、耐久度高、抗輻射能力強等優(yōu)點[10]。最重要的是FRAM中不存在壞塊,在突發(fā)掉電事故時,因為鐵電效應的穩(wěn)定性,數據信息并不會丟失,這就極大的提高了系統(tǒng)的可靠性。本設計使用FRAM來存儲壞塊信息,既可以解決在FPGA內部存放壞塊信息帶來的RAM資源緊張的問題,也可以解決在NAND Flash中存放壞塊信息帶來的寫入速度受限制的問題,從而確保壞塊信息和塊映射信息可以快速保存,且不會因掉電而丟失。
3.3壞塊識別
NAND Flash存儲器在出廠時廠家會標記出固有壞塊,通過讀所有NAND Flash的備用區(qū),可以識別并標記出固有壞塊。在第1次使用NAND Flash時,創(chuàng)建壞塊和替換塊地址映射表,保存在FRAM中。在以后的使用中,由于不斷地擦寫等操作會出現使用壞塊,壞塊識別的常用方法有以下3種:(1)將NAND Flash擦除,然后寫滿全0,再次擦除,若出現非FFh的,則標記為壞塊;(2)在寫入數據時,若狀態(tài)返回為寫入失敗,則標記為壞塊;(3)在擦除數據時,若狀態(tài)返回為擦除失敗,再次擦除仍顯示失敗,標記為壞塊。這3種方法都要保證足夠的執(zhí)行時間,否則因為時間不夠系統(tǒng)也會報錯,造成壞塊的誤判。
3.4壞塊的存儲
3.4.1壞塊存儲的優(yōu)化方案
設計的四通道8片NAND Flash陣列,每片NAND Flash有4096個塊,這就需要用12 bit表示它們的地址,而片選信號用1 bit表示,通道號用2 bit表示,這樣確定一個塊的具體地址,需要2 byte大小。由廠家的技術手冊可知一般壞塊數不會超過總塊數的20%,因此NAND Flash陣列設置替換塊區(qū)大小為總容量的20%。本設計總共容量64 Gbyte,按比例替換塊區(qū)留12 Gbyte,即預留替換塊數為12×1 024/4(每塊的大小為4 Mbyte)=3 072塊。這樣,設計中支持建立的壞塊和替換塊地址映射表最大為3 072(塊數)×2 byte(壞塊地址大小)+3 072(塊數)×2 byte(替換塊地址大小)=12 kbyte,即選用16 kbyte的FRAM就可以滿足系統(tǒng)要求。
圖3 通道與壞塊信息存儲對應關系示意圖
設計的是四通道存儲陣列,為了方便壞塊信息的查找,將FRAM也平均劃分為4個空間,即每個空間大小為4 kbyte,定義每個通道對應相應的存儲空間。根據技術手冊估算出每個通道的壞塊數量最多不超過768塊,假設768塊均壞,則對應的壞塊信息需要768(塊數)×2 byte(壞塊地址大小)+768(塊數)×2 byte(替換塊地址大小)=3 072 byte空間存儲,故預留的4 kbyte空間足夠使用。各通道與FRAM的存儲關系如圖3所示。這樣的設計可以有效提高后續(xù)壞塊查找的效率,縮短查找時間。
3.4.2二分法存儲壞塊信息
將初始化時建立在FRAM中的壞塊和替換塊地址映射表導入到NAND Flash控制器的內存中,再將3.3壞塊識別過程中標記出來的使用壞塊插入到FRAM的壞塊和替換塊地址映射表中。為了方便以后的壞塊查找,設計采用二分法將新的壞塊和替換塊地址映射插入原有映射表中,流程如圖4所示,流程圖是針對單通道而言的,即每個通道在對應的FRAM存儲空間獨立實現該過程。因為初始化時,固有壞塊是按序掃描的,所以最初創(chuàng)建的壞塊和替換塊地址映射表是升序排列,滿足二分法的基本條件。最后將更新過的壞塊和替換塊地址映射表重新導入FRAM中,一直到下次發(fā)現新的壞塊時,再執(zhí)行上述過程。設計存儲的僅為壞塊信息,相比于常見的存儲所有塊的狀態(tài)信息,初始化時并無優(yōu)勢,但是明顯縮短了壞塊信息建立的時間,加快了壞塊信息建立的速度。
圖4 二分法插入壞塊地址和替換塊地址流程圖
設計使用的塊號信息都是用是邏輯塊地址LBA(Logical Block Addressing)表示的,通過邏輯地址和物理地址的映射查出對應的物理塊地址PBA(Physical Block Addressing),最終確定NAND Flash的壞塊具體位置。LBA-PBA映射關系如表1所示。
歸納出邏輯地址和物理地址的對應關系公式為:LBA=通道號×8 192+片選×4 096+塊號。
因為FRAM具有鐵電效應的優(yōu)良特性,保證了壞塊和替換塊地址映射表不會因掉電而丟失,有效提高了NAND Flash陣列存儲的可靠性,并且FRAM最大讀寫時間為130 ns[11],相比較于傳統(tǒng)方法將壞塊和替換塊地址映射表存放在NAND Flash陣列專門劃分的壞塊區(qū)中,讀寫速度有明顯的提高,也節(jié)省了NAND Flash陣列的存儲空間。
表1 LBA-PBA映射表
3.5壞塊的跳過和替換
在寫數據的過程中,若發(fā)現壞塊,為了不影響系統(tǒng)的寫速度,僅僅將壞塊標記出來然后跳過,繼續(xù)在下一個好塊中進行當次寫操作。設計的NAND Flash陣列通道內為流水線操作,當chip0寫完進入寫等待狀態(tài),利用這個空閑時期,將剛才寫操作過程中標記的壞塊找出來,由于在同一塊中,某一頁的寫入操作失敗,并不會影響其他頁數據的正確性,因此可以重新寫入無效頁的正確數據,與這一塊中其他頁的數據一起搬移到替換區(qū)中的有效塊里,并更新FRAM中壞塊和替換塊地址映射表,在下次使用時,就可以直接將數據寫入更新的物理地址,替換過程如圖5所示。這一過程的完成并不影響chip1的任何操作,所以從微觀意義上講也是時間的并行操作,給整個系統(tǒng)節(jié)省時間,也就是提高整個系統(tǒng)的存儲速度。當發(fā)現壞塊時,順序從替換區(qū)取一塊有效塊替換,將替換區(qū)中替換塊的地址指針+1,然后將更新的地址信息寫入FRAM中保存。實現的數據結構如表2所示。
圖5 替換過程示意圖
表2壞塊替換實現數據結構說明
成員說明block_bad數據存儲區(qū)中出現壞塊的塊號chips_instead替換區(qū)中替換塊的塊號
上述壞塊的替換過程都是針對單通道而言的,即每個通道內部各自實現著替換過程。每片NAND Flash為8 Gbyte,依據技術手冊可知壞塊數最多不超過1.6 Gbyte,即每片NAND Flash預留1.6 Gbyte為替換塊區(qū),多通道存儲空間分布的示意圖如圖6所示。
圖6 通道內存儲空間分布示意圖
圖7 二分法查找壞塊信息流程圖
為了方便壞塊信息的查詢,本設計使用二分法查找壞塊信息,單通道實現的流程圖如圖7所示。由于創(chuàng)建壞塊和替換塊地址映射表的時候就按照升序的方式排列,所以查找壞塊信息時,無需再考慮順序問題,滿足二分法的使用基本條件。使用二分法查找壞塊信息相較于輪詢法[12],查找更快捷,提高了存儲系統(tǒng)的工作效率,有效節(jié)省了每次使用前格式化的時間。而每個通道對應相應的壞塊信息存儲空間,雖然會出現浪費空間的現象,但是相比于把整個系統(tǒng)的壞塊信息建立一張壞塊和替換塊地址映射表,查找的長度大大縮短,有效減少了查詢次數,進一步提高了這個系統(tǒng)的工作效率。
實驗仿真時搭建一個簡易的系統(tǒng),系統(tǒng)框圖如圖8所示,實驗主要是為了證明上述方法可以有效實現多通道NAND Flash陣列的壞塊管理。通過PC機輸入一組數據,執(zhí)行連續(xù)擦寫操作,通過SSCOM3.2軟件監(jiān)測,如圖9軟件監(jiān)測圖所示。擦除成功時顯示“SUCCESS”表示該塊為有效塊。但是明顯看到擦除塊23556時,顯示“failed”,表示擦除失敗,重復又擦除了一次,同樣顯示“failed”擦除失敗,確定塊23556為壞塊,并用替換區(qū)的塊7700481替換。由此可以證明NAND Flash陣列的壞塊識別、替換功能正常,可以實現設計初衷。
圖8 實驗系統(tǒng)示意圖
重新執(zhí)行寫操作時,可以由圖10 Model Sim仿真圖看出,塊23555與塊23557之間為塊7700481,表示執(zhí)行替換操作成功,再次證明優(yōu)化的多通道NAND Flash陣列壞塊管理方案可以實現有效的壞塊管理。
隨著多通道NAND Flash陣列存儲技術的日益完善,它的存儲密度越來越大,而相應的體積、功耗和成本卻越來越小,使得多通道NAND Flash陣列存儲技術有廣泛的市場前景。本文面向多通道NAND Flash陣列存儲提出一種優(yōu)化的壞塊管理方案,多通道并行存儲數據,通道內獨立管理壞塊,使用FRAM存儲壞塊和替換塊地址映射表。通過仿真實驗,證明了方案的可行性,故這一方案可以優(yōu)化多通道NAND Flash陣列存儲技術,進一步提高存儲系統(tǒng)的工作效率和可靠性。
圖9 軟件監(jiān)測圖
圖10 Model Sim仿真圖
參考文獻:
[1]舒文麗,吳云峰,趙啟義,等.NAND Flash存儲的壞塊管理方法[J].電子器件,2011,34(5):580-583.
[2]周軍.NAND Flash的壞塊管理設計[J].單片機與嵌入式系統(tǒng)應用,2010(9):15-20.
[3]林剛.NAND Flash壞塊管理算法及邏輯層驅動設計[D].西安:西安電子科技大學,2009:25-61.
[4]Micron Technology.MT29F64G08A[J/K/M]ABA NAND Flash Memory Datasheet[Z].2009.
[5]寧飛.大容量存儲中NAND Flash壞塊的管理方法[J].電子測試,2010(12):64-68.
[6]王珺.高速大容量固態(tài)存儲系統(tǒng)的實現與應用[D].西安:西安電子科技大學,2006.
[7]吳萌.一種高速大容量圖像存儲系統(tǒng)設計[D].西安:中國科學院西安光學精密機械研究所,2009.
[8]百科.鐵電存儲器[EB/OL].(2013-04-27)[2013-07-16].http://baike.baidu.com/view/923780.htm.
[9]廖貴成,王龍,史文余.高性能Flash/FRAM混合數據存儲系統(tǒng)的設計及應用[J].微電子學與計算機,2010,27(12):127-129.
[10]張德凱,徐建龍,任天令.1Kbit鐵電存儲器電路設計技術研究[J].半導體技術,2012,37(11):878-882.
[11]肖月寧.用于計算機系統(tǒng)的鐵電隨機存儲器的研究進展[J].電腦編程技巧與維護,2011(2):92-92.
[12]賈源泉,肖儂,賴明澈,等.基于NAND FLASH的多路并行存儲系統(tǒng)中壞塊策略的研究[J].計算機研究與發(fā)展,2012,49(增刊):68-72.
張雯(1989-),女,漢族,陜西西安人,西安郵電大學碩士研究生,研究方向為通信電路系統(tǒng),vivian890202@163.com;
崔建杰(1979-),男,漢族,湖北襄陽人,西安奇維科技股份有限公司,硬件工程師,從事固態(tài)存儲產品研發(fā)設計,cuijianjie@keyway.com.cn;
張新(1968-),女,博士,漢族,甘肅敦煌人,西安郵電大學,教授,從事網絡計算與網絡管理研究,zhx@xupt.deu.cn。
BadBlockManagementMethodofMulti-ChannelNANDFlashArray*
ZHANGWen1,2,CUIJianjie2,ZHANGXin1*
(1.School of Electronic Engineering,Xi’an University of Posts and Telecommunications,Xi’an 710121,China;2.R&D Center,Xi’an Keyway Technology Co.,Ltd,Xi’an 710077,China)
Abstract:Aiming at the requirement about the reliability of the multi-channel NAND Flash array,a bad block management method is proposed.The method optimizes the bad block information storage and query methods.A FRAM stores the LBA-PBA address mapping table.The data of tests shows that the method can achieve multi-channel NAND Flash array of bad block management to ensure the reliability of storage.Optimized bad block creation method reduces the bad block query time.The FRAM saves the time of the valid block address mapping.And with the ferroelectric the reliability of data storage is further improved.
Key words:large capacity storage;bad block management;dichotomy;NAND Flash array;FRAM
doi:EEACC:014010.3969/j.issn.1005-9490.2014.05.004
中圖分類號:TP333
文獻標識碼:A
文章編號:1005-9490(2014)05-0816-06
收稿日期:2013-09-11修改日期:2013-09-25
項目來源:西安市科技計劃基金項目(CXY1117[5])