一種基于大容量固態(tài)存儲(chǔ)的地址映射方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子通信技術(shù)領(lǐng)域,尤其涉及一種一種基于大容量固態(tài)存儲(chǔ)的地址映射方法及裝置。
【背景技術(shù)】
[0002]存儲(chǔ)領(lǐng)域常用的數(shù)據(jù)載體是機(jī)械硬盤和固態(tài)硬盤(SSD),固態(tài)硬盤具有體積小,能耗低,抗干擾能力強(qiáng),尋址時(shí)間極小,每秒進(jìn)行讀寫操作的次數(shù)(1PS)高等特點(diǎn),相較于傳統(tǒng)磁盤,flash等固態(tài)硬盤存儲(chǔ)可以做到微秒級(jí)的的延遲,而傳統(tǒng)磁盤智能做到毫秒級(jí)延遲。但是,由于flash等固態(tài)硬盤本身(I)修改數(shù)據(jù)不能直接在原數(shù)據(jù)上重寫,導(dǎo)致非定點(diǎn)更新;(2)數(shù)據(jù)讀寫的基本單位是頁,而擦除的基本單位是塊;(3)由于壽命問題,每個(gè)擦除塊只能被擦除有限的次數(shù)等固有特性,所以基于flash等固態(tài)硬盤的存儲(chǔ)系統(tǒng),需要模擬讀寫機(jī)械硬盤的傳統(tǒng)塊設(shè)備的行為,對(duì)系統(tǒng)屏蔽固態(tài)驅(qū)動(dòng)器的特性。
[0003]閃存轉(zhuǎn)換層(FTL)算法,其實(shí)就是一種邏輯區(qū)塊地址(LBA)到物理頁號(hào)(PPN)的映射。當(dāng)文件系統(tǒng)發(fā)送指令要寫入或者更新一個(gè)特定的邏輯頁,閃存轉(zhuǎn)換層(FTL)實(shí)際上就是把數(shù)據(jù)寫入到一個(gè)不同的空閑物理頁并更新映射表,并把這個(gè)頁上包含的舊數(shù)據(jù)置為無效。正是因?yàn)殚W存轉(zhuǎn)換層(FTL)的存在,操作系統(tǒng)才能把當(dāng)成硬盤驅(qū)動(dòng)器那樣的操作,因此,閃存轉(zhuǎn)換層(FTL)算法的性能也就直接影響flash等固態(tài)硬盤的性能表現(xiàn)。
[0004]早期的flash等固態(tài)硬盤容量較小,每個(gè)芯片的頁數(shù)有限,所述小粒度的頁級(jí)映射策略,是一種高效靈活的映射方法,可以把任何一個(gè)邏輯頁映射到任意的物理頁,每個(gè)映射關(guān)系對(duì)應(yīng)一個(gè)映射條目。但是由于映射的粒度小,當(dāng)flash等固態(tài)硬盤容量較大時(shí),需要消耗大量的內(nèi)存來存儲(chǔ)映射表信息,不適宜大容量的固態(tài)存儲(chǔ)系統(tǒng)。
[0005]使用塊級(jí)映射地址的轉(zhuǎn)換,通過地址映射將邏輯塊號(hào)轉(zhuǎn)化成物理塊號(hào),根據(jù)邏輯地址中的塊號(hào)偏移將數(shù)據(jù)寫入物理塊中具有相同偏移的物理頁。由于采用粗粒度的映射,映射表顯著減少。但是假如N個(gè)頁面組成一個(gè)塊,跟基本的頁映射算法相比,塊映射的映射表數(shù)量降低為原來的1/N,使得整個(gè)映射表能夠完全存儲(chǔ)在主存RAM中。塊級(jí)映射方案中,替代塊的空間利用率很低,造成存儲(chǔ)空間的浪費(fèi);另一方面,當(dāng)進(jìn)行flash等固態(tài)硬盤的擦除操作時(shí),需要大量的數(shù)據(jù)擦除和歉意操作,系統(tǒng)運(yùn)行一段時(shí)間需要頻繁的垃圾回收,造成系統(tǒng)的性能抖動(dòng)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種基于大容量固態(tài)存儲(chǔ)的地址映射方法及裝置,通過根據(jù)將要被讀或?qū)懭氲臄?shù)據(jù)的邏輯區(qū)塊地址,在2級(jí)映射表中查找所述邏輯區(qū)塊地址對(duì)應(yīng)的3級(jí)映射表,從所述3級(jí)映射表中讀出所述數(shù)據(jù)或者在為所述邏輯區(qū)塊地址分配的物理頁號(hào)中寫入所述數(shù)據(jù)的多級(jí)順序映射方案,由于在2級(jí)映射表中僅存儲(chǔ)3級(jí)映射表的索引,而且只有在主存中的3級(jí)映射表沒有存儲(chǔ)所述待讀或待寫入數(shù)據(jù)時(shí),才將固態(tài)硬盤中的所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表寫入主存,從而解決了在大容量存儲(chǔ)的情形下頁級(jí)映射由于映射粒度小需要消耗大量主存存儲(chǔ)空間的問題,也避免了塊級(jí)映射進(jìn)行塊操作時(shí)涉及數(shù)據(jù)較多導(dǎo)致的性能不穩(wěn)定問題,從而達(dá)到了簡(jiǎn)化映射關(guān)系以減少主存存儲(chǔ)空間的消耗并且維持性能穩(wěn)定的效果。
[0007]第一方面提供一種基于大容量固態(tài)存儲(chǔ)的地址映射方法,其特征在于,包括:
[0008]獲取用于將數(shù)據(jù)寫入固態(tài)硬盤的寫命令,所述寫命令攜帶待寫入數(shù)據(jù)及所述待寫入數(shù)據(jù)的邏輯區(qū)塊地址;
[0009]根據(jù)所述全局2級(jí)映射表,查詢所述邏輯區(qū)塊地址所對(duì)應(yīng)的主存中的所述3級(jí)映射表,所述全局2級(jí)映射表用于索引所述主存中3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表,所述主存中3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表用于存儲(chǔ)所述邏輯區(qū)塊地址及與所述邏輯區(qū)塊地址對(duì)應(yīng)的物理頁號(hào)的映射關(guān)系;
[0010]如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中;
[0011]控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表中;
[0012]在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表中,將待寫入數(shù)據(jù)寫入所述物理頁號(hào)所對(duì)應(yīng)的存儲(chǔ)空間。
[0013]在第一方面第一種可能的實(shí)現(xiàn)方式中,在所述如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中之前,其特征在于,還包括:
[0014]判斷所述主存中存儲(chǔ)所述3級(jí)映射表的空間是否到達(dá)預(yù)設(shè)閾值,在達(dá)到所述預(yù)設(shè)閾值的情況下,則根據(jù)預(yù)設(shè)緩存規(guī)則將冷數(shù)據(jù)從所述主存移出并寫入到所述固態(tài)硬盤中,以為將所述固態(tài)硬盤中的邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表寫入所述主存提供存儲(chǔ)空間。
[0015]結(jié)合第一方面或第一方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,在所述控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表中之后,還包括:
[0016]將所述物理頁號(hào)寫入所述固態(tài)硬盤中;或,將所述邏輯區(qū)塊地址與所述物理頁號(hào)寫入主存中后,將所述物理頁號(hào)寫入所述固態(tài)硬盤中。
[0017]結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,在所述將所述物理頁號(hào)寫入所述固態(tài)硬盤中之后,還包括:
[0018]將所述邏輯區(qū)塊地址與所述物理頁號(hào)在所述2級(jí)映射表與I級(jí)映射表中進(jìn)行更新。
[0019]結(jié)合第一方面至第一方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在所述如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中之后,還包括:
[0020]將所述3級(jí)映射表中的所述邏輯區(qū)塊地址所對(duì)應(yīng)的計(jì)數(shù)器加一;
[0021]在所述控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表中之后,對(duì)所述三級(jí)映射表中的所述邏輯區(qū)塊地址所對(duì)應(yīng)的計(jì)數(shù)器減一,以確認(rèn)所述待寫入數(shù)據(jù)的所述邏輯區(qū)塊地址獲得了對(duì)應(yīng)的物理頁號(hào)。
[0022]第二方面提供一種一種基于大容量固態(tài)存儲(chǔ)的地址映射方法,其特征在于,包括:
[0023]獲取用于讀固態(tài)硬盤中數(shù)據(jù)的讀命令,所述讀命令攜帶待寫入數(shù)據(jù)的邏輯區(qū)塊地址;
[0024]在主存中通過全局2級(jí)映射表,查詢所述主存中3級(jí)映射表中存儲(chǔ)的所述邏輯區(qū)塊地址所對(duì)應(yīng)的物理頁號(hào),所述全局2級(jí)映射表用于索引所述主存中的3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表;
[0025]如果所述主存中的所述3級(jí)映射表中未存儲(chǔ)所述邏輯區(qū)塊地址所對(duì)應(yīng)的物理頁號(hào),則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的所述3級(jí)映射表,將所述固態(tài)硬盤中的所述3級(jí)映射表中存儲(chǔ)的所述邏輯區(qū)塊地址及與所述邏輯區(qū)塊地址對(duì)應(yīng)的物理頁號(hào)讀出;
[0026]從所述物理頁上讀取所述數(shù)據(jù)。
[0027]第三方面提供一種基于大容量固態(tài)存儲(chǔ)的地址映射方法,其特征在于,包括:
[0028]獲取用于讀或?qū)懝虘B(tài)硬盤中數(shù)據(jù)的命令,所述命令包括讀命令或?qū)懨睿?br>[0029]判斷所述命令是讀命令或?qū)懨睿?br>[0030]如果所述命令是讀命令,所述讀命令攜帶邏輯區(qū)塊地址,在主存中通過全局2級(jí)映射表,查詢所述主存中3級(jí)映射表中存儲(chǔ)的所述邏輯區(qū)塊地址所對(duì)應(yīng)的物理頁號(hào),所述全局2級(jí)映射表用于索引所述主存中的3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表;
[0031]如果所述主存中的所述3級(jí)映射表中未存儲(chǔ)所述邏輯區(qū)塊地址所對(duì)應(yīng)的物理頁號(hào),則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的所述3級(jí)映射表,將所述固態(tài)硬盤中的所述3級(jí)映射表中存儲(chǔ)的所述邏輯區(qū)塊地址及與所述邏輯區(qū)塊地址對(duì)應(yīng)的物理頁號(hào)讀出;
[0032]從所述物理頁上讀取所述數(shù)據(jù);
[0033]如果所述命令是寫命令,所述寫命令攜帶待寫入數(shù)據(jù)及所述待寫入數(shù)據(jù)的邏輯區(qū)塊地址,根據(jù)所述全局2級(jí)映射表,查詢所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述主存中的所述3級(jí)映射表,所述全局2級(jí)映射表用于索引所述主存中3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表,所述3級(jí)映射表用于存儲(chǔ)所述邏輯區(qū)塊地址及與所述邏輯區(qū)塊地址對(duì)應(yīng)的物理頁號(hào)的映射關(guān)系;
[0034]如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中;
[0035]控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中;
[0036]在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中,將待寫入數(shù)據(jù)寫入所述物理頁號(hào)所對(duì)應(yīng)的存儲(chǔ)空間。
[0037]在第三方面第一種可能的實(shí)現(xiàn)方式中,在所述如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中之前,其特征在于,還包括:
[0038]判斷所述主存中存儲(chǔ)所述3級(jí)映射表的空間是否到達(dá)預(yù)設(shè)閾值,在達(dá)到所述預(yù)設(shè)閾值的情況下,則根據(jù)預(yù)設(shè)緩存規(guī)則將冷數(shù)據(jù)從所述主存移出并寫入到所述固態(tài)硬盤中,以為將所述固態(tài)硬盤中的邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表寫入所述主存提供存儲(chǔ)空間。
[0039]結(jié)合第三方面或第三方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,在所述控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中之后,還包括:
[0040]將所述物理頁號(hào)寫入所述固態(tài)硬盤中;或,將所述邏輯區(qū)塊地址與所述物理頁號(hào)寫入主存中后,將所述物理頁號(hào)寫入所述固態(tài)硬盤中。
[0041]結(jié)合第三方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,在所述將所述物理頁號(hào)寫入所述固態(tài)硬盤中之后,還包括:
[0042]將所述邏輯區(qū)塊地址與所述物理頁號(hào)在所述2級(jí)映射表與I級(jí)映射表中進(jìn)行更新。
[0043]結(jié)合第三方面至第三方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在所述如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中之后,還包括:
[0044]將所述3級(jí)映射表中的所述邏輯區(qū)塊地址所對(duì)應(yīng)的計(jì)數(shù)器加一;
[0045]在所述控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中之后,對(duì)所述三級(jí)映射表中的所述邏輯區(qū)塊地址所對(duì)應(yīng)的計(jì)數(shù)器減一,以確認(rèn)所述待寫入數(shù)據(jù)的所述邏輯區(qū)塊地址獲得了對(duì)應(yīng)的物理頁號(hào)。
[0046]第四方面提供一種基于大容量固態(tài)存儲(chǔ)的地址映射裝置,其特征在于,包括:
[0047]獲取模塊,獲取用于將數(shù)據(jù)寫入固態(tài)硬盤的寫命令,所述寫命令攜帶待寫入數(shù)據(jù)及所述待寫入數(shù)據(jù)的邏輯區(qū)塊地址;
[0048]處理模塊,用于根據(jù)所述全局2級(jí)映射表,查詢所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述主存中的所述3級(jí)映射表,所述全局2級(jí)映射表用于索引所述主存中3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表,所述3級(jí)映射表用于存儲(chǔ)所述邏輯區(qū)塊地址及與所述邏輯區(qū)塊地址對(duì)應(yīng)的物理頁號(hào)的映射關(guān)系;
[0049]所述處理模塊,還用于如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中;
[0050]所述處理模塊,還用于控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中;
[0051]所述處理模塊,還用于在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中,將待寫入數(shù)據(jù)寫入所述物理頁號(hào)所對(duì)應(yīng)的存儲(chǔ)空間;
[0052]存儲(chǔ)模塊,包括所述固態(tài)硬盤模塊與所述主存模塊,用于存儲(chǔ)所述全局2級(jí)映射表、及存儲(chǔ)所述主存中3級(jí)映射表和固態(tài)硬盤中的3級(jí)映射表。
[0053]結(jié)合第四方面,在第四方面第一種可能的實(shí)現(xiàn)方式中,所述處理模塊,在所述還用于如果所述主存中不存在所述邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表,則根據(jù)所述全局2級(jí)映射表索引所述固態(tài)硬盤中的3級(jí)映射表中,將所述邏輯區(qū)塊地址所對(duì)應(yīng)的所述固態(tài)硬盤中的3級(jí)映射表讀出并存儲(chǔ)到所述主存中之前,還用于:
[0054]判斷所述主存中存儲(chǔ)所述3級(jí)映射表的空間是否到達(dá)預(yù)設(shè)閾值,在達(dá)到所述預(yù)設(shè)閾值的情況下,則根據(jù)預(yù)設(shè)緩存規(guī)則將冷數(shù)據(jù)從所述主存移出并寫入到所述固態(tài)硬盤中,以為將所述固態(tài)硬盤中的邏輯區(qū)塊地址所對(duì)應(yīng)的3級(jí)映射表寫入所述主存提供存儲(chǔ)空間。
[0055]結(jié)合第四方面第一種可能的實(shí)現(xiàn)方式,在第四方面第二種可能的實(shí)現(xiàn)方式中,所述處理模塊,在所述還用于控制固態(tài)硬盤控制器為所述邏輯區(qū)塊地址分配物理頁號(hào),并將所述物理頁號(hào)存儲(chǔ)在所述主存中所述邏輯區(qū)塊地址所對(duì)應(yīng)的三級(jí)映射表中之后,還包括:
[0056]將所述物理頁號(hào)寫入所述固態(tài)硬盤中;或,將所述邏輯區(qū)塊地址與所述物理頁號(hào)寫入主存中后,將所述物理頁號(hào)寫入所述固態(tài)硬盤中。
[0057]結(jié)合第四方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述處理模塊,在所述還用于將所述物理頁號(hào)寫入所述固態(tài)硬盤中之后,還用于:
[0058