專利名稱:Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到一種閃存數(shù)據(jù)管理方法,特別涉及到一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法。
背景技術(shù):
Nand Flash芯片的存儲單元有物理存儲地址,操作系統(tǒng)的文件系統(tǒng)將文件分開為一些邏輯存儲塊,并用存儲塊的邏輯編號來組織文件,因此需要硬件驅(qū)動層將芯片的物理地址和文件系統(tǒng)的邏輯編號關(guān)聯(lián)起來,一般實現(xiàn)方式為建立映射表?,F(xiàn)有技術(shù)主要為兩種, 在頁(Page)基礎(chǔ)之上為芯片建立映射表,另外的實現(xiàn)方式采取建立在Block映射機(jī)制上的映射表。Nand Flash芯片是非易失存儲器,Block是擦除的最小單位,讀取和寫入的最小單位是I^age。任何Nand Flash芯片的寫入操作只能在已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除的操作。如圖1所示,為現(xiàn)有技術(shù)以I^age為單元的寫入操作過程,假設(shè)Block3和Block4都為閃存中一個標(biāo)準(zhǔn)大小的Block塊,其中Block3 為已有數(shù)據(jù)存儲區(qū)域,PageB、C和D存儲有數(shù)據(jù),Block4為空置,現(xiàn)要將PageE寫入Block3 中的I^ageD位置處,由于Block3的I^age D區(qū)域已存儲數(shù)據(jù),而對于Nand Flash芯片而言, 擦除的最小單元為Block,只有將Block原有的數(shù)據(jù)全部擦除,才可以將I^geE寫入,但是在擦除一個Block塊時,其他有效數(shù)據(jù)需要保留,例如Block3中的I^age B和C,因此需要尋找一個處于擦除狀態(tài)下的Block (例如Block4),先將PageE寫入Block4的I^age E處,最后將 Block3的Page B和C寫入Block4的Page B和C處。因此在現(xiàn)有技術(shù)的Nand Flash芯片中,在I^ageE的起始邏輯地址寫入數(shù)據(jù)時,其通過以下兩個步驟完成找到空置的Block4,將Block3的PageB和C拷貝至Block4的相應(yīng)位置;將要寫入的PageE直接寫入Block4的相應(yīng)區(qū)域,并將原有的PageE與Block3的映射關(guān)系修改為PageE與Block4的映射關(guān)系。上述步驟可以看出,上述拷貝數(shù)據(jù)的過程,實際上需要搬運數(shù)據(jù)3次。當(dāng)拷貝的文件包含數(shù)據(jù)量比較大時,系統(tǒng)文件區(qū)不停的反復(fù)被讀寫,而NandFlash的存儲單元在擦寫一定次數(shù)之后會損壞,導(dǎo)致該存儲單元不能再被使用,大大降低產(chǎn)品的壽命。而在I^age基礎(chǔ)之上為芯片建立映射表,需要大量消耗內(nèi)存,無法在資源受到限制的嵌入式設(shè)備特別是智能卡設(shè)備中實現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的主要目的為提供一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,有效管理 Nand Flash芯片的物理存儲空間,提高上層操作系統(tǒng)的文件系統(tǒng)的運行效率。本發(fā)明提出一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,包括將Nand Flash劃分為多個分區(qū);將每一分區(qū)劃分為緩存區(qū)和存儲區(qū);
將寫入的數(shù)據(jù)緩存至緩存區(qū);當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)。優(yōu)選地,所述分區(qū)包括至少兩個Block塊,該分區(qū)的緩存區(qū)包括至少一 Block塊。優(yōu)選地,所述當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)包括當(dāng)某一分區(qū)包括兩個以上Block塊,該分區(qū)的緩存區(qū)包括至少兩個Block塊,且該緩存區(qū)中任一 Block塊填滿時,將填滿的Block塊的數(shù)據(jù)移至該分區(qū)的存儲區(qū)的Block塊。優(yōu)選地,所述將Nand Flash劃分為多個分區(qū)包括建立分區(qū)映射表,記錄所述分區(qū)的邏輯地址與物理地址的對應(yīng)關(guān)系。優(yōu)選地,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括基于I^age建立緩存區(qū)映射表,用于記錄所述緩存區(qū)內(nèi)I^age的邏輯地址和I^age的物理地址。優(yōu)選地,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括基于Block建立存儲區(qū)映射表,用于記錄所述存儲區(qū)內(nèi)Block塊的邏輯地址和 Block塊的物理地址的對應(yīng)關(guān)系。優(yōu)選地,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括建立緩存-存儲映射表,指明緩存區(qū)中的I^age和將要寫入存儲區(qū)的Block的映射關(guān)系。優(yōu)選地,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括建立需要進(jìn)行讀寫操作的分區(qū)的緩存區(qū)映射表、存儲區(qū)映射表和緩存-存儲映射表。本發(fā)明提出的一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,通過建立分別基于 Block塊和I^age的混合映射表,解決了由于系統(tǒng)文件區(qū)域的快速磨損而導(dǎo)致Nand Flash的文件系統(tǒng)損壞所造成的壽命縮減的問題,以及單純基于I^age建立的映射表效率低下的問題。在有效管理Nand Flash芯片的物理存儲空間的基礎(chǔ)上提高上層操作系統(tǒng)的文件系統(tǒng)的運行效率。
圖1為現(xiàn)有技術(shù)Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法的操作示意圖;圖2為本發(fā)明Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法一實施例的流程示意圖;圖3為本發(fā)明Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法又一實施例的流程示意圖;
圖4為本發(fā)明Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法另一實施例的流程示意圖。本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進(jìn)一步說明。
具體實施例方式應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。參照圖2,提出本發(fā)明Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法一實施例,包括步驟SlOljf Nand Flash劃分為多個分區(qū);步驟S102、將每一分區(qū)劃分為緩存區(qū)和存儲區(qū);
步驟S103、將寫入的數(shù)據(jù)緩存至緩存區(qū);步驟S104、當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)。本實施例的實現(xiàn)需要依賴于Nand Flash芯片內(nèi)置或外置的控制器指令,Nand Flash的操作特性是以I^age為單位進(jìn)行讀寫,一個I^age不能重復(fù)寫,重復(fù)寫之前必須先擦除。而擦除是以Block塊為單位進(jìn)行。為方便描述,本實施例將擦除操作的一個單位稱為Block塊,是一種NandFlash的物理存儲結(jié)構(gòu)單元;對Block塊中的進(jìn)行讀寫操作的基本單元稱為I^age (數(shù)據(jù)塊),一個 Block含有多個Page。將Nand Flash存儲空間劃分為多個分區(qū),每一分區(qū)包括多個Block塊。將Nand Flash芯片像硬盤一樣分區(qū)管理,建立對應(yīng)的分區(qū)映射表,在其表項中記錄各分區(qū)的邏輯地址與物理地址的對應(yīng)關(guān)系。將每一分區(qū)再劃分為緩存區(qū)和存儲區(qū),緩存區(qū)包括至少一個Block塊,用于緩存寫入分區(qū)的數(shù)據(jù),存儲區(qū)包括除緩存區(qū)以外的其余Block塊,用于存儲從緩存區(qū)轉(zhuǎn)移過來的數(shù)據(jù)。當(dāng)向分區(qū)寫入數(shù)據(jù)時,數(shù)據(jù)首先被緩存至緩存區(qū),當(dāng)緩存區(qū)存滿后,將該緩存區(qū)的數(shù)據(jù)移至存儲區(qū)。只須在收到相同的邏輯地址的數(shù)據(jù)塊時,將對應(yīng)的物理地址做修改,數(shù)據(jù)就會存放到新的緩存區(qū)的物理地址。本實施例中,將Nand Flash存儲空間分區(qū)管理,并分別建立緩存區(qū)和存儲區(qū),可減少對存儲區(qū)的操作頻率。參照圖3,提出本發(fā)明Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法又一實施例,在一實施例中,在執(zhí)行步驟S103之前,還包括步驟S105,建立分區(qū)的緩存區(qū)映射表、存儲區(qū)映射表和緩存-存儲映射表。當(dāng)分區(qū)包括兩個以上Block塊,該分區(qū)的緩存區(qū)包括至少兩個Block塊,且該緩存區(qū)中任一 Block塊填滿時,可將填滿的Block塊的數(shù)據(jù)移至該分區(qū)的存儲區(qū)的Block塊。如此是以緩存區(qū)中的Block塊為緩存單位,當(dāng)任一 Block塊填滿時,就將該Block塊的數(shù)據(jù)移至對應(yīng)存儲區(qū)的Block塊中。此時將數(shù)據(jù)轉(zhuǎn)移后的緩存區(qū)的Block塊進(jìn)行擦除,又可以再從該Block塊的第一個I^ge開始緩存數(shù)據(jù)。由于Nand Flash的讀寫是以I^age為單位,而擦寫是以Block塊為單位,因此為了將讀寫定位至Page,同時又減少擦寫B(tài)lock塊的次數(shù),再分別設(shè)置緩存區(qū)映射表、存儲區(qū)映射表以及緩存-存儲映射表。緩存區(qū)映射表基于I^age建立,記錄緩存區(qū)內(nèi)I^ge的邏輯地址和I^age的物理地址的對應(yīng)關(guān)系,存儲區(qū)映射表基于Block建立,記錄存儲區(qū)內(nèi)Block塊的邏輯地址和Block塊的物理地址的對應(yīng)關(guān)系,緩存-存儲映射表,用于指明緩存區(qū)中的I^age 和將要寫入存儲區(qū)的Block的映射關(guān)系,即緩存區(qū)中I3age的邏輯地址與存儲區(qū)中Block的邏輯地址之間的映射關(guān)系。如此,在數(shù)據(jù)寫入分區(qū)時,先查找緩存區(qū)映射表中相關(guān)表項的物理地址,將數(shù)據(jù)緩存到該物理地址中,當(dāng)緩存區(qū)填滿后,再查找緩存-存儲映射表和存儲區(qū)映射表中相關(guān)表項,將緩存區(qū)數(shù)據(jù)移至該數(shù)據(jù)本來要寫入的真實的物理地址中。本實施例中,將讀寫數(shù)據(jù)的臨時操作放在緩存區(qū)中的I^age進(jìn)行,因此可以將映射至相同存儲區(qū)中某一 Block的不同I^age—次性寫入,并沒有頻繁地對存儲區(qū)內(nèi)Block塊進(jìn)行操作,將Nand Flash芯片的磨損次數(shù)大大降低,又避免了單純以I^age為單位進(jìn)行讀寫而造成的效率低下。在有效管理Nand Flash芯片的物理存儲空間的基礎(chǔ)上提高上層操作系
5統(tǒng)的文件系統(tǒng)的運行效率。參照圖4,步驟S105可具體為步驟S106、建立需要進(jìn)行讀寫操作的分區(qū)的緩存區(qū)映射表、存儲區(qū)映射表和緩存-存儲映射表。由于基于I^age建立的映射表非常消耗內(nèi)存,雖然只是挑選非常少的Block塊作為緩存區(qū)而降低了內(nèi)存消耗,但是緩存-存儲映射表也會增加內(nèi)存消耗。為了解決上述問題, 可以只對需要對其進(jìn)行讀寫操作的分區(qū)建立緩存區(qū)映射表、存儲區(qū)映射表和緩存-存儲映射表,進(jìn)一步節(jié)約內(nèi)存空間,抵消需要增加的內(nèi)存消耗。以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,包括 將Nand Flash劃分為多個分區(qū);將每一分區(qū)劃分為緩存區(qū)和存儲區(qū); 將寫入的數(shù)據(jù)緩存至緩存區(qū);當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)。
2.如權(quán)利要求1所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,所述分區(qū)包括至少兩個Block塊,該分區(qū)的緩存區(qū)包括至少一 Block塊。
3.如權(quán)利要求2所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,所述當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)包括當(dāng)某一分區(qū)包括兩個以上Block塊,該分區(qū)的緩存區(qū)包括至少兩個Block塊,且該緩存區(qū)中任一 Block塊填滿時,將填滿的Block塊的數(shù)據(jù)移至該分區(qū)的存儲區(qū)的Block塊。
4.如權(quán)利要求1至3中任一項所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,所述將Nand Flash劃分為多個分區(qū)包括建立分區(qū)映射表,記錄所述分區(qū)的邏輯地址與物理地址的對應(yīng)關(guān)系。
5.如權(quán)利要求1至3中任一項所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括基于I^age建立緩存區(qū)映射表,用于記錄所述緩存區(qū)內(nèi)I^ge的邏輯地址和I^ge的物理地址。
6.如權(quán)利要求5所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括基于Block建立存儲區(qū)映射表,用于記錄所述存儲區(qū)內(nèi)Block塊的邏輯地址和Block 塊的物理地址的對應(yīng)關(guān)系。
7.如權(quán)利要求6所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括建立緩存-存儲映射表,指明緩存區(qū)中的I^age和將要寫入存儲區(qū)的Block的映射關(guān)系。
8.如權(quán)利要求7所述的NandFlash芯片硬件驅(qū)動層的實現(xiàn)方法,其特征在于,在執(zhí)行所述將寫入的數(shù)據(jù)緩存至緩存區(qū)之前,還包括建立需要進(jìn)行讀寫操作的分區(qū)的緩存區(qū)映射表、存儲區(qū)映射表和緩存-存儲映射表。
全文摘要
本發(fā)明揭示了一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,包括將Nand Flash劃分為多個分區(qū);將每一分區(qū)劃分為緩存區(qū)和存儲區(qū);將寫入的數(shù)據(jù)緩存至緩存區(qū);當(dāng)緩存區(qū)滿時,將該緩存區(qū)的數(shù)據(jù)移至該緩存區(qū)所在分區(qū)的存儲區(qū)。本發(fā)明提供的一種Nand Flash芯片硬件驅(qū)動層的實現(xiàn)方法,有效管理Nand Flash芯片的物理存儲空間,提高上層操作系統(tǒng)的文件系統(tǒng)的運行效率。
文檔編號G06F12/02GK102306124SQ20111021843
公開日2012年1月4日 申請日期2011年8月1日 優(yōu)先權(quán)日2011年8月1日
發(fā)明者姚權(quán)銘 申請人:深圳市文鼎創(chuàng)數(shù)據(jù)科技有限公司