国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)據(jù)記錄器中NAND Flash的壞塊管理方法*

2016-09-09 09:21郁聰沖
艦船電子工程 2016年8期
關(guān)鍵詞:記錄器寄存器芯片

邢 旺 郁聰沖

(92941部隊(duì)95分隊(duì) 葫蘆島 125000)

XING Wang YU Congchong

(Unit 95, No.92941 Trops of PLA, Huludao 125000)

?

數(shù)據(jù)記錄器中NAND Flash的壞塊管理方法*

邢旺郁聰沖

(92941部隊(duì)95分隊(duì)葫蘆島125000)

NAND Flash作為數(shù)據(jù)記錄器中的數(shù)據(jù)存儲(chǔ)芯片,其在應(yīng)用時(shí)容易受到壞塊問(wèn)題的影響。大量的應(yīng)用表明壞塊能夠降低存儲(chǔ)芯片的穩(wěn)定性,造成存儲(chǔ)數(shù)據(jù)的錯(cuò)誤,因此為了保證存儲(chǔ)數(shù)據(jù)正確,對(duì)NAND Flash芯片中壞塊的管理具有重要意義。介紹了NAND Flash的物理結(jié)構(gòu),歸納了壞塊跳過(guò)法和動(dòng)態(tài)壞塊管理法,為NAND Flash的壞塊管理提供了依據(jù)。

NAND Flash; 壞塊識(shí)別; 壞塊替換; 壞塊跳過(guò); 動(dòng)態(tài)壞塊管理

XING WangYU Congchong

(Unit 95, No.92941 Trops of PLA, Huludao125000)

Class NumberTN401

1 引言

隨著電子技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)已被廣泛應(yīng)用于工業(yè)生產(chǎn)與軍事國(guó)防領(lǐng)域?;谇度胧较到y(tǒng)研發(fā)的數(shù)據(jù)記錄器能夠接收并存儲(chǔ)工業(yè)設(shè)備的健康狀態(tài)數(shù)據(jù),為設(shè)備的安全運(yùn)行提供保障;在武器裝備試驗(yàn)中,數(shù)據(jù)記錄器可以存儲(chǔ)裝備運(yùn)行期間的各種試驗(yàn)參數(shù),試驗(yàn)結(jié)束后可通過(guò)導(dǎo)出試驗(yàn)數(shù)據(jù)分析裝備故障、測(cè)定航行路線等,為事后鑒定提供依據(jù),尤其在飛行器的飛行試驗(yàn)與水下探測(cè)器的航行試驗(yàn)中,若數(shù)據(jù)記錄器不能正常工作,不僅沒(méi)有依據(jù)評(píng)定裝備的性能,而且會(huì)造成不可估量的損失?,F(xiàn)階段,F(xiàn)lash閃存已成為各類(lèi)便攜型數(shù)字設(shè)備的存儲(chǔ)介質(zhì),由于NAND Flash芯片具有存儲(chǔ)速度快、容量大、可擦除次數(shù)多等優(yōu)勢(shì),其在數(shù)據(jù)記錄器中應(yīng)用最為廣泛。但是NAND Flash在出廠時(shí)便會(huì)存在穩(wěn)定性無(wú)法保證的壞塊,這是由于技術(shù)工藝問(wèn)題造成的,并且無(wú)法克服,同時(shí),在使用過(guò)程中,隨著擦寫(xiě)次數(shù)的增多,也會(huì)出現(xiàn)壞塊,這些壞塊不允許進(jìn)行擦除和寫(xiě)入操作,所以,壞塊管理在NAND Flash中具有相當(dāng)重要的作用[1~3]。

針對(duì)數(shù)據(jù)記錄器中NAND Flash存在壞塊的情況,本文主要研究NAND Flash的工作原理和芯片中壞塊的管理方法,以滿足不同的需求,為數(shù)據(jù)記錄器中NAND Flash存儲(chǔ)數(shù)據(jù)的正確性和芯片工作的穩(wěn)定性提供可靠的保證。

2 NAND Flash的物理結(jié)構(gòu)

現(xiàn)在很多公司都生產(chǎn)NAND Flash芯片,以三星公司生產(chǎn)的K9K8G08U0A芯片為例[4],其物理存儲(chǔ)單元的陣列組織結(jié)構(gòu)如圖1所示,該芯片的存儲(chǔ)結(jié)構(gòu)包含8192個(gè)塊,每塊的存儲(chǔ)空間大小為(128K+4K)字節(jié)。每一塊又含有64頁(yè),每頁(yè)的存儲(chǔ)空間大小為(2K+64)字節(jié),其中,2K為用戶的數(shù)據(jù)存儲(chǔ)區(qū),最后64字節(jié)構(gòu)成的區(qū)域?yàn)槿哂鄥^(qū)域,數(shù)據(jù)在讀寫(xiě)時(shí)候相對(duì)容易出錯(cuò),為了保證數(shù)據(jù)的正確性,必須要有對(duì)應(yīng)的檢測(cè)和糾錯(cuò)方法,而額外的錯(cuò)誤校驗(yàn)等需要空間,所以設(shè)計(jì)了多余的區(qū)域,用于放置數(shù)據(jù)的校驗(yàn)值或壞塊標(biāo)記等信息[5]。

圖1 K9K8G08U0A的物理存儲(chǔ)單元的陣列組織結(jié)

頁(yè)是NAND Flash的寫(xiě)入操作的基本單位,NAND Flash芯片中都有一個(gè)對(duì)應(yīng)的區(qū)域,專門(mén)用于存放將要寫(xiě)入到物理存儲(chǔ)單元中去的或者剛從存儲(chǔ)單元中讀取出來(lái)的一頁(yè)數(shù)據(jù),這個(gè)數(shù)據(jù)緩存區(qū)稱為頁(yè)寄存器,只有將數(shù)據(jù)寫(xiě)到了頁(yè)寄存器中,等待編程確認(rèn)命令到來(lái)時(shí),實(shí)際的編程寫(xiě)入動(dòng)作才開(kāi)始。塊則是NAND Flash擦除操作的最小單位,在發(fā)送一個(gè)擦除命令后,一次性地將一個(gè)塊全部擦除為1,也就是0xFF。NAND Flash的數(shù)據(jù)流向步驟如圖2所示。

圖2 NAND Flash的數(shù)據(jù)流向

3 NAND Flash的壞塊管理

3.1壞塊識(shí)別和存儲(chǔ)

NAND Flash的出廠壞塊包含一個(gè)或更多個(gè)不可用的bit,生產(chǎn)NAND Flash的廠家通常會(huì)保證芯片的第0塊是好塊,并且一般相對(duì)比較耐用,做此保證的主要原因是很多種NAND Flash的壞塊管理方法中,就是將壞塊信息存儲(chǔ)在第0塊內(nèi)。壞塊的標(biāo)記保存在冗余區(qū)的固定位置,對(duì)于現(xiàn)在常見(jiàn)的頁(yè)大小為2K的NAND Flash,壞塊標(biāo)記位于塊中第一頁(yè)起始位置的第1個(gè)字節(jié),如果該字節(jié)不是0xFF,就說(shuō)明該塊是壞塊。在第一次啟動(dòng)時(shí),NAND Flash通常會(huì)進(jìn)行壞塊掃描和建立壞塊信息表的過(guò)程,該過(guò)程的流程圖如圖3所示。

圖3 創(chuàng)建壞塊信息表的流程

NAND Flash在使用過(guò)程中出現(xiàn)的壞塊分為兩種:1)當(dāng)擦除或者編程操作失敗時(shí),會(huì)產(chǎn)生第一種使用壞塊。具體過(guò)程就是在擦除和編程操作過(guò)后讀狀態(tài)寄存器,如果失敗就將該塊標(biāo)記為壞塊。2)讀某塊內(nèi)的某頁(yè)數(shù)據(jù)時(shí),如果數(shù)據(jù)出錯(cuò)位數(shù)超出了ECC(Error Correcting Code)校驗(yàn)?zāi)芰?,則產(chǎn)生第二種使用壞塊。具體過(guò)程就是在讀操作后,如果ECC不能校驗(yàn)回原數(shù)據(jù)就標(biāo)記該塊為壞塊[6]。

3.2壞塊的替換

通常情況下,創(chuàng)建壞塊表的同時(shí)會(huì)創(chuàng)建一個(gè)壞塊和好塊的對(duì)應(yīng)關(guān)系表并保存在NAND Flash的第0塊中。在存儲(chǔ)數(shù)據(jù)時(shí),首先讀出壞塊表中的信息,然后根據(jù)壞塊表中的信息跳過(guò)固有壞塊進(jìn)行數(shù)據(jù)的存儲(chǔ);同樣,在NAND Flash使用過(guò)程產(chǎn)生壞塊時(shí),通過(guò)壞塊和好塊的對(duì)應(yīng)關(guān)系表,把壞塊中的數(shù)據(jù)轉(zhuǎn)存到與之對(duì)應(yīng)的好塊中,同時(shí)跳過(guò)此壞塊,將此壞塊進(jìn)行標(biāo)記并更新無(wú)效塊表的信息[7]。壞塊替換過(guò)程如圖4所示。

圖4 壞塊替換過(guò)程

在編程或者寫(xiě)入過(guò)程中,如果發(fā)現(xiàn)塊A的第n頁(yè)出現(xiàn)錯(cuò)誤時(shí),首先復(fù)制第A塊中第1頁(yè)到第(n-1)頁(yè)的數(shù)據(jù),同時(shí)轉(zhuǎn)存到好塊B的相同位置,然后將緩存中塊A第n頁(yè)的數(shù)據(jù)復(fù)制到塊B的第n頁(yè),并在塊B中繼續(xù)存儲(chǔ)數(shù)據(jù),完成壞塊的替換。

3.3壞塊跳過(guò)法

壞塊跳過(guò)法的思想在于運(yùn)行前首先建立壞塊信息標(biāo)記表,如果在運(yùn)行中經(jīng)查詢某塊是壞塊時(shí),則跳過(guò)該塊,對(duì)下一個(gè)塊地址進(jìn)行操作。如果在NAND Flash使用過(guò)程中突發(fā)出現(xiàn)壞塊,也將該壞塊的數(shù)據(jù)存儲(chǔ)在下一個(gè)好塊里。這種方法實(shí)現(xiàn)簡(jiǎn)單,查詢標(biāo)記和壞塊替換速度快,一般適用于高速順序的場(chǎng)合[8~9]。其具體過(guò)程為:上電時(shí)先將第0塊的壞塊表信息讀出并存入相應(yīng)的寄存器中,在寫(xiě)數(shù)據(jù)之前調(diào)用檢測(cè)好塊地址函數(shù),將檢測(cè)到的好塊地址存到寄存器中,讀取寄存器中好塊地址進(jìn)行寫(xiě)操作的同時(shí)繼續(xù)調(diào)用檢測(cè)好塊地址函數(shù),如果檢測(cè)到下一塊是好塊就直接存到寄存器中,如果是下一塊是壞塊則將塊加一,并再次調(diào)用檢測(cè)好塊地址函數(shù),直到檢測(cè)到好塊并將其地址存到寄存器中,這樣循環(huán)下去,不斷更新和讀出寄存器中的內(nèi)容,便可以成功跳過(guò)壞塊。壞塊跳過(guò)法的時(shí)序仿真圖如圖5所示。

圖5 壞塊跳過(guò)法時(shí)序仿真圖

以K9K8G08U0A芯片為例,該芯片的每一塊含有64頁(yè),將地址加64,即16進(jìn)制的0040,就可以實(shí)現(xiàn)塊數(shù)增加1,即跳過(guò)一塊。圖5中clock為時(shí)鐘信號(hào),bad_block為壞塊信號(hào),addr為起始地址,addr_add為地址的增加值。當(dāng)輸入的起始地址為16進(jìn)制數(shù)1100時(shí),若在地址1102處檢測(cè)到壞塊,則發(fā)出bad_block壞塊信號(hào),同時(shí)地址的增加值addr_add由0000變?yōu)?040,操作地址也由1101加上0040變?yōu)?141,則成功跳過(guò)壞塊,對(duì)下一塊進(jìn)行操作。

3.4動(dòng)態(tài)壞塊管理法

動(dòng)態(tài)壞塊管理法的思想在于當(dāng)NAND Flash存儲(chǔ)空間出現(xiàn)壞塊時(shí),采取動(dòng)態(tài)壞塊管理法標(biāo)記壞塊,將壞塊放入映射表的壞塊區(qū),從替換塊區(qū)選擇一個(gè)好塊,代替壞塊進(jìn)行操作,同時(shí),更新邏輯-物理塊地址映射表。在對(duì)已用塊進(jìn)行寫(xiě)入操作時(shí),改為對(duì)交換塊進(jìn)行操作,有利于NAND Flash存儲(chǔ)空間的管理及邏輯-物理地址映射表的更新[10~11]。

動(dòng)態(tài)壞塊管理法首先將NAND Flash整個(gè)的存儲(chǔ)空間劃分成若干個(gè)組,每個(gè)組包含相同數(shù)量的塊,同時(shí)為每個(gè)組建立一張邏輯-物理塊地址映射表,并將映射表劃分為四個(gè)區(qū):1)數(shù)據(jù)存儲(chǔ)區(qū):用于存儲(chǔ)數(shù)據(jù)、系統(tǒng)應(yīng)用程序等;2)交換塊區(qū):所有對(duì)已用塊的寫(xiě)入操作均改為對(duì)交換塊的寫(xiě)入;3)替換塊區(qū):替換塊用于當(dāng)寫(xiě)入塊是一個(gè)壞塊時(shí),可以從替換塊中找一個(gè)好塊,代替壞塊進(jìn)行編程操作;4)壞塊區(qū):壞塊區(qū)用于存放初始上電掃描發(fā)現(xiàn)的壞塊以及使用過(guò)程中出現(xiàn)的壞塊。在映射過(guò)程中將壞塊放在映射表的最后。每一組的邏輯-物理塊地址映射空間劃分如圖6所示。

圖6 映射空間的劃分

動(dòng)態(tài)壞塊管理法的關(guān)鍵環(huán)節(jié)在于更新邏輯-物理塊地址映射表,需要更新邏輯-物理地址映射表的狀況有兩種:1)當(dāng)對(duì)某一塊進(jìn)行編程、擦除操作失敗時(shí),則認(rèn)定該塊為壞塊,此時(shí)需要從替換塊區(qū)選擇一個(gè)好塊,將壞塊的邏輯地址賦給替換塊區(qū)選定的好塊,并對(duì)替換塊進(jìn)行寫(xiě)入數(shù)據(jù)的操作,同時(shí)將壞塊和替換塊進(jìn)行標(biāo)記,并將壞塊的邏輯地址對(duì)應(yīng)到地址映射表的壞塊區(qū);2)若沒(méi)有出現(xiàn)壞塊,而是將要進(jìn)行編程寫(xiě)入操作的塊是已用塊時(shí),便要從交換塊區(qū)選擇一個(gè)塊代替已用塊進(jìn)行操作,將交換塊的地址映射到數(shù)據(jù)塊中,并擦除此已用塊,將其作為新的交換塊進(jìn)行使用。每次完成對(duì)一個(gè)塊的寫(xiě)入操作后,要更新映射表,實(shí)現(xiàn)動(dòng)態(tài)的映射地址更新。最后,當(dāng)對(duì)若干個(gè)塊構(gòu)成的某個(gè)組全部完成操作后,系統(tǒng)自動(dòng)更新NAND Flash存儲(chǔ)的地址映射表。

4 結(jié)語(yǔ)

針對(duì)目前NAND Flash大量應(yīng)用于數(shù)據(jù)記錄器的現(xiàn)狀以及NAND Flash存在壞塊問(wèn)題的限制,本文介紹了壞塊跳過(guò)法以及動(dòng)態(tài)壞塊管理法。壞塊跳過(guò)法實(shí)現(xiàn)簡(jiǎn)單且完成速度快,適用于高速場(chǎng)合,而動(dòng)態(tài)壞塊管理法能夠?qū)崿F(xiàn)邏輯-物理地址映射表的實(shí)時(shí)更新,同時(shí)引入了交換塊的概念,在頻繁進(jìn)行寫(xiě)入擦除操作時(shí)能及時(shí)找到替換塊。通過(guò)使用合適的壞塊管理方法,可以對(duì)NAND Flash中

產(chǎn)生的壞塊進(jìn)行有效管理,提高了存儲(chǔ)系統(tǒng)的穩(wěn)定性,為存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性提供了可靠保障。

[1] 薛瑤.某飛行器數(shù)據(jù)記錄器的優(yōu)化設(shè)計(jì)[D].太原:中北大學(xué),2009:8-10.

[2] 李士照.某水下用數(shù)據(jù)記錄器的設(shè)計(jì)及實(shí)現(xiàn)[D].太原:中北大學(xué),2013:1-6.

[3] 王安,錢(qián)曉亮,樊文俠.基于ARM的USB接口數(shù)據(jù)記錄器的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2007,27(1):254-256.

[4] Samsung. K9K8G08U0A [EB/OL]. http://www.samsung.com/Products/Semiconductor, 2006-1-10.

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

[6] 周軍.NAND Flash的壞塊管理設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(9):15-20.

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

[8] 舒文麗,吳云峰.NAND Flash存儲(chǔ)的壞塊管理方法[J].電子器件,2011,34(5):580-583.

[9] 張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計(jì)算機(jī)工程,2010,36(6):239-243.

[10] 韓勇豪,王少云.一種NAND Flash動(dòng)態(tài)壞塊管理算法的設(shè)計(jì)與實(shí)現(xiàn)[J].信息化研究,2011,37(3):23-26.

[11] 張鵬.NAND Flash壞塊管理算法研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2015:8-11.

Bad Block Management Methods of NAND Flash Memory in Data Recorder*

NAND Flash is used as memory chips of the data recorder. NAND Flash is easily affected by the bad block problem. Bad block could be able to reduce the stability of the memory chips and cause data errors. Therefore, bad block management of the NAND Flash is important. The physical structure of NAND Flash is introduced. Bad block skip method and dynamic bad block management method are summarized. Theoretic analysis can verify the truth of the bad block management methods of NAND Flash.

NAND Flash, bad block identification, bad block replacement, bad block skip, dynamic bad block management

2016年2月9日,

2016年3月21日

邢旺,男,碩士研究生,助理工程師,研究方向:衛(wèi)星導(dǎo)航。郁聰沖,男,碩士研究生,助理工程師,研究方向:衛(wèi)星導(dǎo)航。

TN401

10.3969/j.issn.1672-9730.2016.08.032

猜你喜歡
記錄器寄存器芯片
芯片會(huì)議
人體微芯片
關(guān)于射頻前端芯片研發(fā)與管理模式的思考
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
二進(jìn)制翻譯中動(dòng)靜結(jié)合的寄存器分配優(yōu)化方法
移位寄存器及算術(shù)運(yùn)算應(yīng)用
汽車(chē)事故數(shù)據(jù)記錄器數(shù)據(jù)規(guī)范及應(yīng)用進(jìn)展綜述
航空百科(45)
Lx5280模擬器移植設(shè)計(jì)及實(shí)施