• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      NAND Flash存儲關鍵技術*

      2016-09-07 02:25:40劉航航李曉穎楊云剛薛小樂中國兵器工業(yè)第203研究所西安710065
      彈箭與制導學報 2016年1期
      關鍵詞:字節(jié)校驗編程

      劉航航,李曉穎,楊云剛,薛小樂(中國兵器工業(yè)第203研究所,西安 710065)

      NAND Flash存儲關鍵技術*

      劉航航,李曉穎,楊云剛,薛小樂
      (中國兵器工業(yè)第203研究所,西安710065)

      為提高NAND Flash數據存儲的可靠性,闡述了壞塊管理的基本思想,探討了壞塊跳過、壞塊替換和動態(tài)壞塊管理三種方案,探究了基于漢明碼的BCH碼的數據校驗算法。為提高NAND Flash存儲效率,研究了Multi-Plane操作、Interleaved Die操作、多片Flash陣列流水線技術等方法。研究分析表明壞塊管理策略和數據檢驗可提高NAND Flash數據存儲可靠性,流水線操作等技術可提高NAND Flash存儲效率。

      NAND Flash;壞塊管理;數據存儲

      0 引言

      存儲模塊是決定嵌入式系統(tǒng)性能的核心模塊之一,NAND Flash作為一種安全、快速的存儲設備,具有小體積、大容量、低成本、擦除次數多以及保存壽命長等優(yōu)點,在嵌入式系統(tǒng)的數據存儲中廣泛應用。但由于生產加工工藝水平有限及NAND Flash物理結構的特性,會導致芯片在出廠和使用過程中出現壞塊,影響存儲的可靠性。因此,在進行NAND Flash存儲設計時需要考慮數據存儲的可靠性與存儲效率。文中首先介紹NAND Flash的物理結構及特性,在此基礎上探討存儲關鍵技術[1]。

      1 NAND Flash簡介

      NAND Flash分為SLC flash和MLC flash兩種。SLC是指每一個存儲單元只存儲1位的信息。MLC并非單純在存儲單元中存儲電荷,而是要精確控制存儲電荷的多少,這導致其誤碼率高于SLC,相應的讀寫機制也更復雜,因而降低了讀寫速率。相對SLC,MLC使用壽命較短,存取速率較慢,能耗比SLC高,但存儲容量較大[2]。

      圖1 芯片組織架構

      文中結合Micron公司一款MLC架構的芯片MT29F128G08介紹其關鍵的存儲技術。該芯片組織架構見圖1所示,芯片內部包含兩個Target,每個Target包含一個邏輯單元Logic Unit(LUN),LUN的組織架構見圖2所示,圖中給出了詳細的存儲結構。

      圖2 Logical Unit(LUN)組織架構

      2 存儲可靠性關鍵技術

      NAND Flash出廠時被廠商確認的壞塊在文中被稱為固有壞塊;在使用過程中,當對塊的擦除或編程操作失敗,或是發(fā)生超出數據校驗算法糾錯能力的塊應被標記為壞塊,這種塊在文中被稱為使用壞塊。好的壞塊管理策略和數據校驗算法是保證存儲可靠性最重要的關鍵技術,此外可通過犧牲空間換取存儲的可靠性。

      2.1壞塊管理

      壞塊管理的主要思路避免對壞塊進行操作,在遇到壞塊時找到好的塊來替代壞塊;主要工作是創(chuàng)建和維護壞塊管理表bad-block-table(BBT)以及對邏輯物理地址的管理。BBT的創(chuàng)建依據廠商的約定讀取相應位置的壞塊標記,經研究壞塊管理的常用方法有如下幾種[3-7]。

      2.1.1壞塊跳過

      對于固有壞塊,依據BBT判定待操作的塊是否為壞塊,若為壞塊,則跳過該塊,將數據存儲在相鄰的下一個好塊上,如圖3所示,第n塊為壞塊,第n+1塊為好塊,則跳過第n塊將數據存儲至第n+1塊。如果是使用壞塊,則將該塊標記為壞塊,同時跳過該塊將數據存儲在下一個好塊,如有必要,將數據轉存至好塊中。

      圖3 壞塊跳過示意圖

      2.1.2壞塊替換

      壞塊替換的管理思路是遇到壞塊時并不是跳過該塊尋找最近的好塊繼續(xù)存儲,而是通過修改其邏輯地址與物理地址的映射關系,將邏輯地址指向一個確定的好塊,從而達到壞塊替換的目的。該方案中需將所有塊分為兩個區(qū):存儲區(qū)與替換區(qū),如圖4所示。MT29F128G08芯片官方手冊中指明在產品有效的生命周期內壞塊的數目不會超過100塊,按20%的余量設計,替換區(qū)預留的好塊數目大于120塊即可滿足使用要求。在應用層,用戶操作的是連續(xù)地址,易于操作與管理;在驅動層或邏輯層需要維護好存儲區(qū)與替換區(qū)的映射關系。

      圖4 壞塊替換示意圖

      2.1.3動態(tài)管理

      為了保持NAND Flash的使用壽命足夠長,必須避免擦寫區(qū)域的不均衡,否則會因為局部達到擦寫極限而報廢,通過磨損均衡機制可有效延長閃存的使用壽命。

      為了解決損耗均衡的問題而定期進行特殊整理。比較各個區(qū)域或塊的擦除次數(塊擦除次數可作為BBT的屬性之一),對于使用頻率明顯低于平均水平的塊,需提高其使用次數;對于使用頻次明顯高于平均水平的塊應減少對其操作的頻次。

      2.2數據校驗算法

      如電路穩(wěn)定,操作時序正常,NAND Flash出錯時一般只是某個頁中1 bit或幾個bit發(fā)生錯誤。SLC Flash發(fā)生錯誤尤其是2 bit以上的錯誤的概率較低,一般使用漢明碼進行校驗和糾錯[8]。而MLC Flash的錯誤一般都大于2 bit,需使用糾錯能力更強的BCH算法。

      2.2.1漢明碼校驗算法

      1)校驗算法

      基于漢明碼的ECC(error correction code,ECC)數據校驗算法將數據塊看作一個矩陣,利用矩陣的行、列奇偶信息生成校驗碼,能夠糾正1位、發(fā)現2位的錯誤。以512字節(jié)的數據為例,生成3字節(jié)ECC校驗數據共24位:6位的列校驗碼和18位行校驗碼,具體生成規(guī)則不再贅述[9],存放次序如表1所示,CP表示列校驗碼,RP表示行校驗碼。

      表1 漢明碼ECC校驗碼存放格式

      2)糾錯算法

      向NAND Flash的頁中寫入數據時將生成的ECC校驗和保存到頁的OOB(out of band)數據區(qū)中。當從NAND Flash中讀取數據時,在應用層對每512字節(jié)生成一個新的ECC校驗和。將兩校驗和按位異或,結果分析如下:

      a)若結果為0,則表示不存在錯(或是出現了ECC無法檢測的錯誤);

      b)若結果中存在12個比特位為1,表示存在一個比特錯誤,且可糾正;

      c)若結果中只存在1個比特位為1,表示OOB區(qū)出錯;

      d)其他情況均表示出現了無法糾正的錯誤。2.2.2BCH碼校驗算法簡介

      BCH碼是一類重要的循環(huán)碼,能糾正 NAND Flash中多個隨機錯誤,基于BCH碼的糾錯過程由編碼和譯碼兩部分組成[10-11]。

      1)BCH編碼原理

      設BCH(n,k)碼的碼元取自有限域GF(2m),能糾正t個錯誤,信息位有k位,校驗位有r位,其原始多項式為:

      其中mi∈{0,1},i=0,1,2,…,k-1。生成多項式為:

      其中gi∈{0,1},i=0,1,2,…,r。生成的校驗多項式為:

      系統(tǒng)碼的生成表達式為:

      由此可以看出,系統(tǒng)編碼的關鍵是求出校驗多項式,其過程可描述如下:

      a)信息多項式m(x)升 xn-k次冪變?yōu)?xn-k·m(x);

      b)xn-k·m(x)除以生成多項式g(x)得到商q(x)和余數多項式r(x);

      c)碼元多項式即為:

      2)BCH譯碼過程

      BCH譯碼算法是BCH碼研究中最關鍵的部分,其過程可分為3個步驟[12]:

      a)由接收碼字計算伴隨式,如果伴隨式的值不為0則有錯誤存在;

      b)依據伴隨式求出錯誤位置多項式σ(x);

      c)求出σ(x)的根,得到錯誤位置并更正錯誤。

      2.3取同舍異法

      “取同舍異法”是筆者在實際應用過程中經常使用的一種方法。存儲數據時存3份,讀取數據時逐一比較3份數據的每個字節(jié):如果3個字節(jié)相同,返回任一個即可;如果有一個字節(jié)不同,返回相同的兩個字節(jié)中一個;如果3個字節(jié)都不相同,則返回任一個即可,但數據采信度低,這種情況發(fā)生的概率極低。

      該方案是通過犧牲存儲空間換取數據可靠性的方法,適用于數據量較小或是存儲極其重要的數據的場合,如索引表或測試結果等。

      3 存儲效率關鍵技術

      制約NAND Flash存儲速率的主要因素是編程單位為頁,完成一頁的編程需要一定的時長。因此,如要提高編程效率或系統(tǒng)存儲性能需要合理利用好頁編程時間。

      3.1單片Flash編程技術

      1)Cache操作

      對于普通的頁操作,Cache Registers和Data Registers是一個整體(Cache Registers和Data Registers的關系見圖2),而對于Cache操作,Cache Registers和Data Registers視為兩個緩沖區(qū),首先將數據傳送至Cache Registers,Flash內部將數據從 Cache Registers搬移至Data Registers后進行編程。此時Cache Registers處于空閑狀態(tài),可以將下一次需要存儲的數據傳入Cache Registers,從而提高存儲效率。

      2)Multi-Plane操作

      由圖2可知,每個Plane都有獨立的緩沖寄存器和數據寄存器,因而可以同時對多個Plane進行操作從而提高存儲效率。Multi-Plane編程的過程是分別傳入各個Plane需要編程的地址和數據,同時開啟編程操作,共享編程時間,從而提高整體編程性能。

      3)Interleaved Die操作

      當一個Target包含有多個LUN時,由于各個LUN的片選、地址、數據、命令、狀態(tài)總線都是獨立的,當對兩個LUN進行交互編程時,理論上存儲效能可以提高2倍。具體過程為首先對LUN1發(fā)送編程指令和數據,當LUN1內部開始進行編程操作時對處于就緒態(tài)的LUN2發(fā)送編程指令和數據,LUN2內部開始編程操作之后查詢LUN1編程是否已完成,如果完成開啟下一次存儲操作。如此循環(huán)交互操作LUN1 和LUN2,就可以有效的利用頁編程時間,使得整體編程效率大大提高。

      3.2多片流水線存儲技術

      在高速應用的場合,單片Flash不能滿足存儲速率要求。對Flash陣列采用分片流水線技術,可以大大提高存儲效率[13-15]。在進行連續(xù)快速存儲數據時,將數據塊拆分成多個數據片,采用流水線方式將數據片分散寫入各個Flash芯片,以消除各個Flash芯片寫入的等待時間,加快寫入速度。如圖5所示,4 片Flash構成的存儲陣列工作流程示意圖,其存儲速率可提高約4倍。

      圖5 Flash陣列流水線存儲示意圖

      嵌入式系統(tǒng)中一般由FPGA產生Flash選擇,控制信號將數據分散寫入板卡上的相應的Flash存儲器;應用程序實現Flash陣列存儲的數據結構鏈表和文件管理。在多片流水線存儲的過程中結合3.1小節(jié)中提到的常規(guī)方法,理論上速率會有更大的提高。

      4 小結

      1)壞塊和位翻轉是影響NAND Flash數據存儲可靠性的主要因素,通過壞塊管理、數據校驗及取同舍異法可以提高產品的使用壽命和數據可靠性。

      2)基于漢明碼的ECC校驗適用于SLC架構的NAND Flash,而MLC架構的Flash應選用BCH碼校驗算法。

      3)頁編程時間是限制NAND Flash存儲效率的主要因素。通過Cache、Multi-Plane、Interleaved Die等操作可以有效提高單片Flash的存儲效率;通過流水線技術可以提高Flash陣列的存儲效率,滿足高速應用的場合。

      [1]杜家瑞,劉正強,李應春.NAND Flash在嵌入式系統(tǒng)中的應用[J].微機處理,2010(2):115-118.

      [2]林剛.NAND Flash壞塊管理算法及邏輯層驅動設計[D].西安:西安電子科技大學,2009.

      [3]彭兵,步凱,徐欣.NAND Flash壞塊管理研究[J].微機處理,2009(2):113-115.

      [4]程道遠.NAND Flash文件系統(tǒng)方案及其可靠性設計[J].電腦知識與技術,2007(9):1320.

      [5]文燚,謝凱年.超大容量NAND FLASH壞區(qū)管理方法的設計與實現[J].現代電子技術,2007(16):55 -57.

      [6]寧飛.大容量存儲中 NAND Flash壞塊的管理方法[J].電子測試,2012(12):64-68.

      [7]朱念好,周玉潔.Flash存儲管理的研究與設計[J].計算機工程與設計,2010,31(3):511-513.

      [8]邢開宇,曹曉曼,方火能.基于FPGA和NAND Flash的存儲器 ECC設計與實現[J].電子科技,2012,25 (10):70-73.

      [9]李澤明,楊燕嬌,張會新.一種NAND Flash ECC校驗設計及FPGA實現[J].電視技術,2013,37(17):73 -75.

      [10]殷民,易波.閃存控制器中BCH編解碼器設計和驗證[J].通信技術,2012,45(2):6-9.

      [11]陳宗正.NAND Flash控制器中BCH編譯碼器的設計與硬件實現[D].武漢:華中科學技術大學,2012.

      [12]趙淑明,王衛(wèi)東,李彥強.BCH編譯碼的DSP實現[J].山西電子技術,2008(2):25-26.

      [13]杜學亮,金西.NAND Flash的并行調度算法[J].小型微型計算機系統(tǒng),2010,31(6):1171-1174.

      [14] 賈源泉.基于NAND FLASH的多路并行存儲系統(tǒng)的研究與實現[D].長沙:國防科學技術大學,2011.

      [15]張燚翾,殷希梅,程洪濤.基于AT25DF641的彈載數據記錄器的設計[J].彈箭與制導學報,2010,30 (5):209-210.

      THe Key Technique of High-capacity NAND Flash Memory

      LIU Hanghang,LI Xiaoying,YANG Yungang,XUE Xiaole
      (No.203 Research Institute of China Ordnance Industries,Xi’an 710065,China)

      In order to improve reliability of NAND Flash data storage,basic idea of bad block of NAND Flash was discussed,three management strategies including bad block skip,bad block replacement and dynamic management were analyzed;Error checking and correcting algorithm were also described.In order to enhance efficiency of NAND Flash memory,Multi-Plane operation,Interleaved Die operation,pipeline storage technology of multi-chip were studied.Analysis shows that the effective management strategies and data check-out algorithm can increase NAND Flash data storage reliability,several operations sharing the program time can raise efficiency of NAND Flash memory.

      NAND Flash;error management;data storage

      TP333.5

      A

      10.15892/j.cnki.djzdxb.2016.01.040

      2015-04-21

      劉航航(1988-),男,甘肅人,碩士,研究方向:測控與嵌入式系統(tǒng)設計。

      猜你喜歡
      字節(jié)校驗編程
      No.8 字節(jié)跳動將推出獨立出口電商APP
      編程,是一種態(tài)度
      少先隊活動(2021年2期)2021-03-29 05:41:04
      元征X-431實測:奔馳發(fā)動機編程
      編程小能手
      學生天地(2020年17期)2020-08-25 09:28:48
      紡織機上誕生的編程
      No.10 “字節(jié)跳動手機”要來了?
      爐溫均勻性校驗在鑄鍛企業(yè)的應用
      簡談MC7字節(jié)碼
      大型電動機高阻抗差動保護穩(wěn)定校驗研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗方法
      康定县| 南部县| 乌恰县| 延安市| 洛浦县| 孝感市| 灯塔市| 湘阴县| 姜堰市| 沧州市| 西宁市| 绥化市| 无棣县| 保德县| 桃园市| 孟州市| 康马县| 曲阳县| 铁岭市| 双鸭山市| 鄂伦春自治旗| 铁岭市| 库尔勒市| 乌审旗| 清涧县| 黔西| 临洮县| 常德市| 盐边县| 汤阴县| 长汀县| 乐昌市| 宜黄县| 武义县| 长兴县| 枣庄市| 方正县| 新蔡县| 弥勒县| 邵阳市| 东乡族自治县|