本發(fā)明涉及計(jì)算機(jī)閃存存儲(chǔ)領(lǐng)域,具體涉及一種固態(tài)盤中映射表的組織方法、系統(tǒng)及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)、云計(jì)算、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,固態(tài)硬盤作為新的一代存儲(chǔ),廣泛被應(yīng)用。存儲(chǔ)介質(zhì)2D NAND Flash已經(jīng)逐步成為過去,3D NAND紛紛涌現(xiàn),在NAND Flash中,以頁為單位進(jìn)行數(shù)據(jù)讀寫,以塊為單位進(jìn)行數(shù)據(jù)擦除,sector是Flash操作的基本單位,由于Flash的特性,存儲(chǔ)信號(hào)只能從1變到0,所以,每次新的寫入都必須重新擦除,而擦除操作是sector為單位進(jìn)行的。3D NAND需要更高的糾錯(cuò)能力。更大的糾錯(cuò)能力就需要更多的校驗(yàn)數(shù)據(jù),用戶數(shù)據(jù)(Data Sector 比如4K為單位)和校驗(yàn)數(shù)據(jù)一起組成一個(gè)或多個(gè)ECC chunk 順序存放在一起。一個(gè)Data Sector一般存放在一個(gè)物理page內(nèi)部,讀取的時(shí)候容易一次性讀出,過大的Data Sector導(dǎo)致一個(gè)NAND flash 的物理page內(nèi)部沒法存儲(chǔ)下整倍數(shù)個(gè)Data Sector。剩余的空間由于存儲(chǔ)不下整個(gè)Data Sector,存儲(chǔ)空間會(huì)被浪費(fèi)。
為了提高空間利用率和糾錯(cuò)能力,我們把一個(gè)Data Sector拆成多個(gè)細(xì)粒度的ECC chunk,方便一個(gè)物理page能存放下整倍數(shù)個(gè)ECC chunk。同時(shí)把多個(gè)物理page組合成為一個(gè)邏輯page來使用。從這個(gè)邏輯page角度來計(jì)算存放的Data Sector個(gè)數(shù)。這樣每個(gè)物理page浪費(fèi)的空間就會(huì)減少。在不把Data Sector拆分為多個(gè)細(xì)粒度ECC chunk的情況下,可能每個(gè)物理page就會(huì)浪費(fèi)1K空間。采用這樣方法后,可能一個(gè)邏輯page才會(huì)浪費(fèi)1K空間。這樣做到了提高糾錯(cuò)能力和充分利用空間的效果。這種一個(gè)Data Sector跨兩個(gè)page的用法,需要額外的元數(shù)據(jù)來描述這種跨頁的Data Sector分別處于哪兩個(gè)物理page,前后偏移是多少。每個(gè)Data Sector如果都需要一份元數(shù)據(jù)來描述,這導(dǎo)致元數(shù)據(jù)變多,需要更大的內(nèi)存來描述每個(gè)Data Sector,內(nèi)存的占用量和不跨頁模式下內(nèi)存量增加約四分之一。
這會(huì)帶來單盤成本的增加,另外由于磁盤的最大容量和磁盤上內(nèi)存的容量存在一定比例關(guān)系。多出來的元數(shù)據(jù)占用,就會(huì)導(dǎo)致映射表可用內(nèi)存減少,磁盤容量降低。
為了充分利用這種跨頁存放Data Sector的方法而不帶來元數(shù)據(jù)的增加,提出了以下的一種映射表組織方式。
技術(shù)實(shí)現(xiàn)要素:
鑒于此,本方法提供的一種固態(tài)盤中映射表的組織方法、系統(tǒng)及裝置,通過組織多個(gè)物理頁作為一個(gè)整體,并拆分邏輯sector為多個(gè)小單元存入邏輯頁中,充分利用物理頁中的空間利用率,同時(shí)提高糾錯(cuò)能力。
為了達(dá)到上述目的,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
本發(fā)明提供一種固態(tài)硬盤固件映射表的組織方法,包括:
將多個(gè)物理頁組織成邏輯頁;
將每個(gè)邏輯sector拆分為多個(gè)小單元;
組織邏輯sector的地址映射表;
建立邏輯sector的位置轉(zhuǎn)換矩陣。
其中,將每個(gè)邏輯sector拆分為多個(gè)小單元,包括:
將每個(gè)邏輯sector拆分為多個(gè)固定大小的小單元。
其中,組織邏輯sector的地址映射表,包括:
建立邏輯sector到邏輯頁映射關(guān)系,生成地址映射表。
其中,建立邏輯sector到邏輯頁映射關(guān)系,生成地址映射表,包括:
在地址映射表中記錄邏輯頁編號(hào),及邏輯頁內(nèi)邏輯sector編號(hào)。
進(jìn)一步地,組織邏輯sector的地址映射表之后,還包括:
將邏輯sector依據(jù)地址映射表存入邏輯頁。
進(jìn)一步地,建立邏輯sector的位置轉(zhuǎn)換矩陣,包括:
根據(jù)邏輯sector與物理頁對(duì)應(yīng)關(guān)系,建立邏輯sector的位置轉(zhuǎn)換矩陣。
本發(fā)明還提供一種固態(tài)硬盤固件映射表的組織系統(tǒng),包括多個(gè)物理頁、地址映射表、位置轉(zhuǎn)換矩陣和邏輯sector,其中:多個(gè)物理頁組織成一個(gè)邏輯頁,每個(gè)邏輯sector拆分成多個(gè)小單元,存入邏輯頁中;根據(jù)邏輯sector與邏輯頁的對(duì)應(yīng)關(guān)系生成地址映射表,根據(jù)邏輯sector與物理頁的對(duì)應(yīng)關(guān)系生成位置轉(zhuǎn)換矩陣。
其中,所述邏輯sector拆分成多個(gè)固定大小的小單元。
其中,所述地址映射表包括邏輯頁編號(hào)和邏輯頁中邏輯sector的編號(hào);優(yōu)選地,位置轉(zhuǎn)換矩陣中記錄所有邏輯sector在物理頁中的位置信息。
本發(fā)明還提供一種固態(tài)硬盤固件映射表的組織裝置,其特征在于,包括:
邏輯頁組織模塊,用于將多個(gè)物理頁組織成一個(gè)邏輯頁;
邏輯sector拆分模塊,用于將將每個(gè)邏輯sector拆分成多個(gè)小單元;
地址映射表創(chuàng)建模塊,用于根據(jù)邏輯sector與邏輯頁的對(duì)應(yīng)關(guān)系生成地址映射表;
位置轉(zhuǎn)換矩陣創(chuàng)建模塊,用于根據(jù)邏輯sector與物理頁的對(duì)應(yīng)關(guān)系生成位置轉(zhuǎn)換矩陣。
本發(fā)明提供一種固態(tài)硬盤固件映射表的組織方法,具有如下有益效果:
1.本發(fā)明將多個(gè)物理頁組織成一個(gè)整體的邏輯頁,同時(shí)將每一個(gè)邏輯sector拆分成為多個(gè)ECC chunk存入邏輯頁中,在確定ECC chunk大小的時(shí)候,盡量讓一個(gè)物理頁中存放整數(shù)倍個(gè)ECC chunk,這種情況下會(huì)出現(xiàn)多個(gè)ECC chunk屬于一個(gè)邏輯sector,但卻分別存入不同的物理頁中,因?yàn)镋CC chunk的大小遠(yuǎn)小于邏輯sector,物理頁中的空間得到充分的利用;
2.現(xiàn)有技術(shù)中,邏輯sector需要額外的元數(shù)據(jù)來描述這種跨頁的邏輯Sector分別處于哪兩個(gè)物理頁,前后偏移是多少,每個(gè)邏輯Sector如果都需要一份元數(shù)據(jù)來描述,這導(dǎo)致元數(shù)據(jù)變多,需要更大的內(nèi)存來描述每個(gè)邏輯Sector,內(nèi)存的占用量和不跨頁模式下內(nèi)存量增加約四分之一;本發(fā)明建立邏輯sector到邏輯頁映射關(guān)系,生成地址映射表,在地址映射表中記錄邏輯頁編號(hào),及邏輯頁內(nèi)邏輯sector編號(hào),同時(shí)根據(jù)邏輯sector與物理頁對(duì)應(yīng)關(guān)系,建立邏輯sector的位置轉(zhuǎn)換矩陣,不需要為每一個(gè)sector增加元數(shù)據(jù)信息,只需要使用一個(gè)公共的轉(zhuǎn)換矩陣就能達(dá)到邏輯地址LBA到PBA的轉(zhuǎn)換;
3.如果修改了糾錯(cuò)能力,ECC chunk大小會(huì)變化,只需要更新轉(zhuǎn)換矩陣中的信息就能切換到新的映射方式。
固態(tài)硬盤固件映射表的組織系統(tǒng)及裝置的有益效果與固態(tài)硬盤固件映射表的組織方法類似,不再贅述。
附圖說明:
圖1為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織系統(tǒng)的流程示意圖;
圖2為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織系統(tǒng)的框架圖;
圖3為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織裝置的結(jié)構(gòu)示意圖圖;
具體實(shí)施方式:
為了便于理解,對(duì)本發(fā)明中出現(xiàn)的部分名詞作以下解釋說明:
固態(tài)硬盤以3D NAND Flash作為存儲(chǔ)介質(zhì),在NAND Flash中,以頁為單位進(jìn)行數(shù)據(jù)讀寫,以塊為單位進(jìn)行數(shù)據(jù)擦除,sector是NAND Flash中操作的基本單位,其中,頁即page,塊即block,sector為扇區(qū)或者磁區(qū)。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供一種固態(tài)硬盤固件映射表的組織方法,包括:
將多個(gè)物理頁組織成邏輯頁;
將每個(gè)邏輯sector拆分為多個(gè)小單元;
組織邏輯sector的地址映射表;
建立邏輯sector的位置轉(zhuǎn)換矩陣。
請(qǐng)參考圖1,圖1為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織系統(tǒng)的流程示意圖;本實(shí)施例提供一種固態(tài)硬盤固件映射表的組織方法,包括:
步驟S101、將多個(gè)物理頁組織成邏輯頁;
在本實(shí)施例中,把多個(gè)物理page組合成為一個(gè)邏輯page來使用,從邏輯page角度來計(jì)算存放的sector個(gè)數(shù),這樣每個(gè)物理page浪費(fèi)的空間就會(huì)減少,平均每個(gè)物理page就只會(huì)被浪費(fèi)1K空間。
步驟S102、將每個(gè)邏輯sector拆分為多個(gè)小單元;
在本實(shí)施例中將每個(gè)邏輯sector拆分為多個(gè)固定大小的小單元。因?yàn)檫壿媠ector需要跨物理頁進(jìn)行存放,因此將邏輯sector進(jìn)行拆分,以實(shí)現(xiàn)跨物理頁存放,同時(shí),邏輯sector的大小一般為相同的,將邏輯sector拆分為固定大小的小單元,也就是說所有邏輯sector所拆分的小單元的大小均為相同的,此時(shí),根據(jù)物理頁的大小,將邏輯sector的小單元依次存入邏輯頁中,只需要簡(jiǎn)單的計(jì)算就能得到邏輯sector的各個(gè)小單元在邏輯頁中的排布情況,以便生成邏輯sector與物理頁、邏輯頁之間的地址映射表。
作為一種實(shí)施方式,可以將邏輯sector拆分為多個(gè)校驗(yàn)數(shù)據(jù)ECC chunk,實(shí)現(xiàn)3D NAND Flash的糾錯(cuò)能力,其中ECC chunk的大小均相等。當(dāng)糾錯(cuò)能力進(jìn)行修改時(shí),只需要修改ECC chunk的大小。
步驟S103、組織邏輯sector的地址映射表;
在本實(shí)施例中建立邏輯sector到邏輯頁映射關(guān)系,生成地址映射表;在地址映射表中記錄邏輯頁編號(hào),及邏輯頁內(nèi)邏輯sector編號(hào)。
步驟S104、將邏輯sector依據(jù)地址映射表存入邏輯頁;
步驟S105、建立邏輯sector的位置轉(zhuǎn)換矩陣;
其中,矩陣需要包括以下幾個(gè)信息:1)sector是否跨兩個(gè)物理page;2)sector在邏輯page的哪1個(gè)或者2個(gè)物理page;3)sector在兩個(gè)物理page內(nèi)部分別占用多少空間;4)sector在兩個(gè)物理page內(nèi)部的起始地址。
原有的映射表組織方法中,管理sector從邏輯地址(LBA)到NAND物理地址(PBA)的轉(zhuǎn)換,用戶寫入數(shù)據(jù)時(shí),固件通過后端NAND管理模塊查找空閑的block,把數(shù)據(jù)寫入對(duì)應(yīng)物理block,然后更改映射信息,把LBA指向?qū)懭氲腜BA;在讀取數(shù)據(jù)時(shí),通過用戶輸入的LBA值查找到對(duì)應(yīng)的PBA,再把NAND上面的數(shù)據(jù)取出,返回給用戶。傳統(tǒng)映射表組織方式中,用 32位bit長(zhǎng)度表示映射關(guān)系,不同的bit表示了能定位到具體物理sector的位域信息。在本實(shí)施例中,用位置轉(zhuǎn)換矩陣就能達(dá)到邏輯地址LBA到PBA的轉(zhuǎn)換,不需要為每一個(gè)sector增加元數(shù)據(jù),在sector進(jìn)行寫入時(shí),按照邏輯page編址,統(tǒng)一把邏輯sector按照順序擺放在邏輯page上。例如,在圖2所示的邏輯頁中,sector 3, sector 6, sector7 出現(xiàn)了跨物理頁的情況。根據(jù)邏輯sector到邏輯頁映射關(guān)系和位置轉(zhuǎn)換矩陣,能很快定位到sector 3, sector 6, sector7分別在這個(gè)邏輯page的具體位置信息和長(zhǎng)度,從而得到sector 3, sector 6, sector7在物理頁中的具體位置。整個(gè)固件只需建立一個(gè)公共的位置轉(zhuǎn)換矩陣,在進(jìn)行邏輯頁內(nèi)部邏輯Sector到物理地址轉(zhuǎn)換的時(shí)候使用。
作為一種實(shí)施方式,如果一個(gè)固件或系統(tǒng)中如果存在不同糾錯(cuò)能力需求,也可以設(shè)置一張或者多張轉(zhuǎn)換矩陣來滿足需求。
本發(fā)明實(shí)施例還提供一種固態(tài)硬盤固件映射表的組織系統(tǒng),包括多個(gè)物理頁、地址映射表、位置轉(zhuǎn)換矩陣和邏輯sector,其中:多個(gè)物理頁組織成一個(gè)邏輯頁,每個(gè)邏輯sector拆分成多個(gè)小單元,存入邏輯頁中;根據(jù)邏輯sector與邏輯頁的對(duì)應(yīng)關(guān)系生成地址映射表,根據(jù)邏輯sector與物理頁的對(duì)應(yīng)關(guān)系生成位置轉(zhuǎn)換矩陣。
請(qǐng)參考圖2,圖2為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織系統(tǒng)的框架圖;本實(shí)施例提供一種固態(tài)硬盤固件映射表的組織系統(tǒng),包括多個(gè)物理頁、地址映射表、位置轉(zhuǎn)換矩陣和邏輯sector,其中:多個(gè)物理頁組織成一個(gè)邏輯頁,每個(gè)邏輯sector拆分成多個(gè)小單元,存入邏輯頁中;根據(jù)邏輯sector與邏輯頁的對(duì)應(yīng)關(guān)系生成地址映射表,根據(jù)邏輯sector與物理頁的對(duì)應(yīng)關(guān)系生成位置轉(zhuǎn)換矩陣。
其中,所述邏輯sector拆分成多個(gè)固定大小的小單元。
其中,所述地址映射表包括邏輯頁編號(hào)和邏輯頁中邏輯sector的編號(hào);優(yōu)選地,位置轉(zhuǎn)換矩陣中記錄所有邏輯sector在物理頁中的位置信息。
請(qǐng)參考圖3,圖3為本發(fā)明實(shí)施例所提供的固態(tài)硬盤固件映射表的組織裝置的結(jié)構(gòu)示意圖;本實(shí)施例提供一種固態(tài)硬盤固件映射表的組織裝置,其特征在于,包括:
邏輯頁組織模塊301,用于將多個(gè)物理頁組織成一個(gè)邏輯頁;
邏輯sector拆分模塊302,用于將將每個(gè)邏輯sector拆分成多個(gè)小單元;
地址映射表創(chuàng)建模塊303,用于根據(jù)邏輯sector與邏輯頁的對(duì)應(yīng)關(guān)系生成地址映射表;
位置轉(zhuǎn)換矩陣創(chuàng)建模塊304,用于根據(jù)邏輯sector與物理頁的對(duì)應(yīng)關(guān)系生成位置轉(zhuǎn)換矩陣。
以上所述僅為本發(fā)明示意性的具體實(shí)施方式,并非用以限定本發(fā)明的范圍,任何本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明構(gòu)思和原則的前提下所做出的等同變化與修改,均應(yīng)屬于本發(fā)明保護(hù)的范圍。