本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種nand閃存的映射表管理方法及其系統(tǒng)。
背景技術(shù):
nand閃存由于其體積小、質(zhì)量輕、抗震性強(qiáng)、噪聲小、耐高溫和低功耗等優(yōu)點,已經(jīng)廣泛地應(yīng)用在常見的電子產(chǎn)品中。nand閃存中的ftl(flashtranslationlayer,閃存轉(zhuǎn)換層)是一種與操作系統(tǒng)間對話的介質(zhì),由于存在ftl,因此操作系統(tǒng)可將閃存等產(chǎn)品作為一個磁盤驅(qū)動器,在閃存等產(chǎn)品上建立多個虛擬的數(shù)據(jù)塊或者扇區(qū)用以存儲及管理數(shù)據(jù)。
目前,由于傳統(tǒng)的單層或者雙層映射表太大,而電子產(chǎn)品的單芯片的內(nèi)存大小有限,所以有必要減小映射表在單芯片的內(nèi)存中所占的空間。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提供一種nand閃存的映射表管理方法及其系統(tǒng),可以減少占用電子產(chǎn)品的單芯片的內(nèi)存空間。
為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:
一種nand閃存的映射表管理方法,包括:
當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置;
判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);
若是,則將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。
本發(fā)明采用的另一技術(shù)方案為:
一種nand閃存的映射表管理系統(tǒng),包括:
建立模塊,用于當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置;
判斷模塊,用于判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);
存放模塊,用于若是,則將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。
本發(fā)明的有益效果在于:當(dāng)將數(shù)據(jù)寫入nand閃存時,建立具有三級映射關(guān)系的映射表,并且只將一定個數(shù)的一級映射表、二級映射表和三級映射表存放在單芯片的內(nèi)存中,其余的則存放在nand閃存中,可以減少映射表在單芯片的內(nèi)存中的占用空間,降低單芯片的制作成本,并且本發(fā)明采用三級映射的方式,可以提高查詢效率。
附圖說明
圖1為本發(fā)明的nand閃存的映射表管理方法的流程圖;
圖2為本發(fā)明的nand閃存的映射表管理系統(tǒng)的示意圖。
標(biāo)號說明:
1、建立模塊;2、判斷模塊;3、存放模塊。
具體實施方式
為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖予以說明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:只將一定個數(shù)的一級映射表、二級映射表和三級映射表存放在單芯片的內(nèi)存中,其余的則存放在nand閃存中,可以減少映射表在單芯片的內(nèi)存中的占用空間,降低單芯片的制作成本。
請參照圖1,一種nand閃存的映射表管理方法,包括:
當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置;
判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);
若是,則將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。
從上述描述可知,本發(fā)明的有益效果在于:當(dāng)將數(shù)據(jù)寫入nand閃存時,建立具有三級映射關(guān)系的映射表,并且只將一定個數(shù)的一級映射表、二級映射表和三級映射表存放在單芯片的內(nèi)存中,其余的則存放在nand閃存中,可以減少映射表在單芯片的內(nèi)存中的占用空間,降低單芯片的制作成本,并且本發(fā)明采用三級映射的方式,可以提高查詢效率。存放在單芯片的內(nèi)存中的映射表的數(shù)目可以根據(jù)內(nèi)存大小進(jìn)行設(shè)置,例如可以存放兩個一級映射表,兩個二級映射表和十六個三級映射表。
進(jìn)一步的,當(dāng)需要建立新的三級映射表,并且單芯片的內(nèi)存中的三級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的三級映射表存放至nand閃存中,并同步更新對應(yīng)的二級映射表。
由上述描述可知,可以根據(jù)需要將訪問次數(shù)最少的,即將最不常用的三級映射表存放至nand閃存中,對存放在單芯片的內(nèi)存中的映射表進(jìn)行實時調(diào)整,可以提高查詢效率。
進(jìn)一步的,當(dāng)需要建立新的二級映射表,并且單芯片的內(nèi)存中的二級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的二級映射表存放至nand閃存中,并同步更新對應(yīng)的一級映射表。
由上述描述可知,可以將使用較少的二級映射表存至nand閃存中,對二級映射表進(jìn)行實時調(diào)整。
進(jìn)一步的,當(dāng)存放于nand閃存上的一三級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的三級映射表存放至nand閃存中,并將所述一三級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的二級映射表。
進(jìn)一步的,當(dāng)存放于nand閃存上的一二級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的二級映射表存放至nand閃存中,并將所述一二級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的一級映射表。
進(jìn)一步的,當(dāng)存放于nand閃存上的一一級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的一級映射表存放至nand閃存中,并將所述一一級映射表存放至單芯片的內(nèi)存中。
由上述描述可知,當(dāng)nand閃存上的映射表訪問次數(shù)較多時,將其與單芯片的內(nèi)存中訪問次數(shù)最少的映射表互換存放位置,可以更加有效地管理相關(guān)數(shù)據(jù)。
請參照圖2,本發(fā)明的另一技術(shù)方案為:
一種nand閃存的映射表管理系統(tǒng),包括:
建立模塊,用于當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置;
判斷模塊,用于判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);
存放模塊,用于若是,則將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。
進(jìn)一步的,還包括第一更新模塊,用于當(dāng)需要建立新的三級映射表,并且單芯片的內(nèi)存中的三級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的三級映射表存放至nand閃存中,并同步更新對應(yīng)的二級映射表。
進(jìn)一步的,還包括第二更新模塊,用于當(dāng)需要建立新的二級映射表,并且單芯片的內(nèi)存中的二級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的二級映射表存放至nand閃存中,并同步更新對應(yīng)的一級映射表。
進(jìn)一步的,還包括第三更新模塊,用于當(dāng)存放于nand閃存上的一三級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的三級映射表存放至nand閃存中,并將所述一三級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的二級映射表。
進(jìn)一步,還包括第四更新模塊,用于當(dāng)存放于nand閃存上的一二級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的二級映射表存放至nand閃存中,并將所述一二級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的一級映射表。
進(jìn)一步的,還包括第五更新模塊,用于當(dāng)存放于nand閃存上的一一級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的一級映射表存放至nand閃存中,并將所述一一級映射表存放至單芯片的內(nèi)存中。
實施例一
請參照圖1,本發(fā)明的實施例一為:
一種nand閃存的映射表管理方法,可以減少占用電子產(chǎn)品的單芯片的內(nèi)存空間,包括:
s1、當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置。本實施例中,一個一級映射表對應(yīng)的二級映射表的存放位置的數(shù)量可以根據(jù)需要進(jìn)行設(shè)置,一個二級映射表對應(yīng)的三級映射表的存放位置的數(shù)量也可以根據(jù)需要進(jìn)行設(shè)置,一個三級映射表對應(yīng)的實際位置也可以根據(jù)需要進(jìn)行設(shè)置,一個存放位置的大小可以是2字節(jié)、4字節(jié)或者8字節(jié)。在建立映射表時,可以根據(jù)數(shù)據(jù)大小來建立相應(yīng)大小的映射表,當(dāng)存入新的數(shù)據(jù)時,根據(jù)需要增加映射表的數(shù)量。
s2、判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);若是,則進(jìn)行步驟s3,若否,則將一級映射表、二級映射表和三級映射表全部存放至單芯片的內(nèi)存中。在單芯片的內(nèi)存中存放的一級映射表、二級映射表和三級映射表的個數(shù)可以根據(jù)單芯片的內(nèi)存大小來定,各級映射表的預(yù)設(shè)個數(shù)可以相同,也可以不同。例如,可以存放兩個一級映射表,兩個二級映射表和16個三級映射表,若每一個映射表的大小均為4096bytes,那么存放在單芯片的內(nèi)存中的映射表的總大小為80kbytes,占用的單芯片的內(nèi)存空間很小。
s3、將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。本實施例中,可以將映射表存放至nand閃存的slc塊中。
本實施例中,當(dāng)需要建立新的三級映射表,并且單芯片的內(nèi)存中的三級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的三級映射表存放至nand閃存中,并同步更新對應(yīng)的二級映射表。當(dāng)需要建立新的二級映射表,并且單芯片的內(nèi)存中的二級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的二級映射表存放至nand閃存中,并同步更新對應(yīng)的一級映射表。
本實施例中,當(dāng)存放于nand閃存上的一三級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的三級映射表存放至nand閃存中,并將所述一三級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的二級映射表。當(dāng)存放于nand閃存上的一二級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的二級映射表存放至nand閃存中,并將所述一二級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的一級映射表。當(dāng)存放于nand閃存上的一一級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的一級映射表存放至nand閃存中,并將所述一一級映射表存放至單芯片的內(nèi)存中。預(yù)設(shè)次數(shù)可以根據(jù)需要進(jìn)行設(shè)置,對于不同級的映射表,預(yù)設(shè)次數(shù)可以設(shè)置為相同,也可以設(shè)置為不同。
實施例二
請參照圖2,本發(fā)明的實施例二為:一種nand閃存的映射表管理系統(tǒng),與實施例一的方法相對應(yīng),包括:
建立模塊1,用于當(dāng)將數(shù)據(jù)寫入nand閃存時,建立至少一個的一級映射表、二級映射表和三級映射表,所述一級映射表對應(yīng)至少一個的所述二級映射表的存放位置,所述二級映射表對應(yīng)至少一個的所述三級映射表的存放位置,所述三級映射表對應(yīng)所述數(shù)據(jù)在nand閃存上的實際位置;
判斷模塊2,用于判斷所述一級映射表、二級映射表和三級映射表的個數(shù)是否超過預(yù)設(shè)個數(shù);
存放模塊3,用于若是,則將預(yù)設(shè)個數(shù)的一級映射表、二級映射表和三級映射表存放至單芯片的內(nèi)存中,將未存放在單芯片的內(nèi)存中的一級映射表、二級映射表和三級映射表存放至nand閃存中。
進(jìn)一步的,還包括第一更新模塊,用于當(dāng)需要建立新的三級映射表,并且單芯片的內(nèi)存中的三級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的三級映射表存放至nand閃存中,并同步更新對應(yīng)的二級映射表。
進(jìn)一步的,還包括第二更新模塊,用于當(dāng)需要建立新的二級映射表,并且單芯片的內(nèi)存中的二級映射表的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,將訪問次數(shù)最少的二級映射表存放至nand閃存中,并同步更新對應(yīng)的一級映射表。
進(jìn)一步的,還包括第三更新模塊,用于當(dāng)存放于nand閃存上的一三級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的三級映射表存放至nand閃存中,并將所述一三級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的二級映射表。
進(jìn)一步,還包括第四更新模塊,用于當(dāng)存放于nand閃存上的一二級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的二級映射表存放至nand閃存中,并將所述一二級映射表存放至單芯片的內(nèi)存中,同步更新對應(yīng)的一級映射表。
進(jìn)一步的,還包括第五更新模塊,用于當(dāng)存放于nand閃存上的一一級映射表的訪問次數(shù)超過預(yù)設(shè)次數(shù)時,將單芯片的內(nèi)存中訪問次數(shù)最少的一級映射表存放至nand閃存中,并將所述一一級映射表存放至單芯片的內(nèi)存中。
綜上所述,本發(fā)明提供的一種nand閃存的映射表管理方法及其系統(tǒng),只將一定個數(shù)的一級映射表、二級映射表和三級映射表存放在單芯片的內(nèi)存中,其余的則存放在nand閃存中,可以減少映射表在單芯片的內(nèi)存中的占用空間,降低單芯片的制作成本,并且實時對單芯片的內(nèi)存中的映射表進(jìn)行調(diào)整,可以有效地對相關(guān)數(shù)據(jù)進(jìn)行管理。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。