本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種FTL地址映射的方法及裝置。
背景技術(shù):
閃存Flash-based SSD(Solid State Drive,固態(tài)硬盤)由主機(jī)接口、處理器、內(nèi)存、通道控制器和一組閃存Flash芯片組成,F(xiàn)lash芯片內(nèi)部包括多個(gè)晶元die,每個(gè)die包括多個(gè)分組plane,每個(gè)plane內(nèi)部包括2048個(gè)塊block,每個(gè)block由256個(gè)頁組成。Flash芯片的讀、寫粒度為一個(gè)頁,擦除粒度為一個(gè)塊,讀寫特性為擦除后再寫write-after-erase,即芯片上的數(shù)據(jù)不能原地更新。SSD對(duì)外呈現(xiàn)的讀寫空間,即供上層用戶使用的空間,為邏輯地址空間,SSD內(nèi)部讀寫空間由Flash顆粒組成,稱為物理地址空間,邏輯地址空間與物理地址空間之間進(jìn)行地址映射,F(xiàn)lash-based SSD內(nèi)部包括一層FTL(Flash Translation Layer,地址轉(zhuǎn)換層),負(fù)責(zé)邏輯地址空間到物理地址空間的映射,物理地址空間中還包括部分備用空間spare space,主要作為數(shù)據(jù)存儲(chǔ)和FTL進(jìn)行數(shù)據(jù)整合或垃圾回收的備用空間。目前根據(jù)FTL地址映射粒度,可以將映射方式分為三類:塊級(jí)映射、頁級(jí)映射和混合映射。頁級(jí)映射為FTL允許一個(gè)邏輯頁映射到任何一個(gè)物理頁,即每個(gè)邏輯頁維護(hù)一個(gè)映射表項(xiàng),每個(gè)映射表項(xiàng)能夠?qū)ぶ啡魏我粋€(gè)物理頁,這中映射方式映射靈活、空間利用率高存在,但是映射表很大、內(nèi)存占用多。基于上述頁級(jí)映射方式的不足,現(xiàn)有技術(shù)中采用了改進(jìn)頁級(jí)映射方法為:將邏輯地址空間劃分為多個(gè)超級(jí)塊superblock,superblock與物理地址空間之間通過塊級(jí)映射實(shí)現(xiàn),Superblock內(nèi)部采用頁級(jí)映射,將映射表存儲(chǔ)在備用空間中,superblock內(nèi)部映射時(shí),首先將邏輯地址通過頁映射到備用空間,從備用空間中的映射表確定物理地址,然后確定與邏輯地址對(duì)應(yīng)的物理地址,即superblock內(nèi)部采用三級(jí)頁映射。這樣,由于映射限定在Superblock內(nèi)部并且存儲(chǔ)在備用空間,可以減小映射表的大小, 減少占用的存儲(chǔ)空間。
現(xiàn)有技術(shù)中至少存在如下技術(shù)特點(diǎn):superblock內(nèi)部采用了多級(jí)映射,所以每次主機(jī)讀取數(shù)據(jù)時(shí),需要進(jìn)行多級(jí)查詢才能從確定存儲(chǔ)相應(yīng)數(shù)據(jù)的物理地址,每次主機(jī)寫數(shù)據(jù)時(shí),需要多級(jí)元數(shù)據(jù)查詢和寫入,實(shí)現(xiàn)過程復(fù)雜,導(dǎo)致主機(jī)讀寫過程高延遲。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供一種FTL地址映射的方法及裝置,能夠解決現(xiàn)有技術(shù)中的頁映射方法,實(shí)現(xiàn)過程復(fù)雜,導(dǎo)致讀寫過程高延遲的問題。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
第一方面,本發(fā)明的實(shí)施例提供一種FTL地址映射的方法,包括:
將邏輯地址空間劃分為若干個(gè)邏輯地址段,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值;
建立虛擬地址空間,所述虛擬地址空間包括虛擬地址段,所述虛擬地址段的數(shù)量大于或等于所述邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于所述邏輯地址段中邏輯塊的數(shù)量,所述虛擬地址段與所述邏輯地址段一一對(duì)應(yīng),所述虛擬地址段中的虛擬塊與物理地址空間中的物理塊一一映射;
建立所述邏輯地址段和與所述邏輯地址段對(duì)應(yīng)的虛擬地址段之間的頁級(jí)映射表,以及所述虛擬地址段中虛擬塊和與所述虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表;
當(dāng)主機(jī)讀或?qū)憯?shù)據(jù)時(shí),獲取所述主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
根據(jù)所述目標(biāo)邏輯頁地址和所述頁級(jí)映射表,確定目標(biāo)虛擬頁地址,所述目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射;
根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址,所述目標(biāo)虛擬頁地址所在虛擬塊與所述目標(biāo)邏輯頁地址所在邏輯塊相互映射。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述頁級(jí)映射表存儲(chǔ)與邏輯頁地址映射的虛擬頁地址,所述虛擬頁地址包括虛擬頁所屬虛擬地址段的標(biāo)識(shí)、虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和塊內(nèi)偏移 量;
所述目標(biāo)虛擬頁地址包括所述目標(biāo)虛擬頁所屬虛擬地址段的標(biāo)識(shí)、所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和目標(biāo)塊內(nèi)偏移量。
結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述塊級(jí)映射表存儲(chǔ)與所述虛擬地址段中虛擬塊映射的物理地址空間中物理塊的地址,所述物理地址空間中物理塊的地址包括所述物理地址空間中物理塊的標(biāo)識(shí);
則所述根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址包括:
根據(jù)所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和所述塊級(jí)映射表,確定所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí);
根據(jù)所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí)和所述目標(biāo)塊內(nèi)偏移量確定所述目標(biāo)物理頁地址。
結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述虛擬地址段與所述邏輯地址段按照所述虛擬地址段標(biāo)識(shí)順序和所述邏輯地址段標(biāo)識(shí)順序一一對(duì)應(yīng)。
結(jié)合第一方面,在第一方面的第四種可能的實(shí)現(xiàn)方式中,當(dāng)主機(jī)寫數(shù)據(jù)時(shí),所述獲取所述主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址包括:
根據(jù)所述主機(jī)發(fā)送的寫數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
在所述根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址之后,所述方法還包括:
判斷所述目標(biāo)物理頁地址當(dāng)前是否存儲(chǔ)其他數(shù)據(jù);
當(dāng)所述目標(biāo)物理頁地址當(dāng)前未存儲(chǔ)其他數(shù)據(jù)時(shí),將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述目標(biāo)物理頁地址;
當(dāng)所述目標(biāo)物理頁地址當(dāng)前存儲(chǔ)其他數(shù)據(jù)時(shí),在所述物理地址空間中選擇當(dāng)前未存儲(chǔ)其他數(shù)據(jù)的物理頁地址作為新目標(biāo)物理頁地址,與所述新目標(biāo)物理頁地址所屬物理塊相互映射的新目標(biāo)虛擬塊和所述目標(biāo)虛擬頁地址所在虛擬塊屬于同一個(gè)虛擬地址段;
將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述新目標(biāo)物理頁地址。
結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,在所述將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述新目標(biāo)物理頁地址之后,所述方法還包括:
根據(jù)所述新目標(biāo)物理頁地址和所述塊級(jí)映射表確定新目標(biāo)虛擬頁地址,所述新目標(biāo)虛擬頁地址所在虛擬塊與所述新目標(biāo)邏輯頁地址所在邏輯塊相互映射;
根據(jù)所述新目標(biāo)虛擬頁地址更新所述頁級(jí)映射表,使更新后的頁級(jí)映射表中所述新目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射。
結(jié)合第一方面,在第一方面的第六種可能的實(shí)現(xiàn)方式中,當(dāng)所述主機(jī)讀數(shù)據(jù)時(shí),所述獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址包括:
根據(jù)所述主機(jī)發(fā)送的讀數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
在所述根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址之后,所述方法還包括:
向所述主機(jī)發(fā)送所述目標(biāo)物理頁地址中存儲(chǔ)的數(shù)據(jù)。
第二方面,本發(fā)明的實(shí)施例提供一種FTL地址映射的裝置,包括:
劃分單元,用于將邏輯地址空間劃分為若干個(gè)邏輯地址段,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值;
建立單元,用于建立虛擬地址空間,所述虛擬地址空間包括虛擬地址段,所述虛擬地址段的數(shù)量大于或等于所述邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于所述邏輯地址段中邏輯塊的數(shù)量,所述虛擬地址段與所述邏輯地址段一一對(duì)應(yīng),所述虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射;
所述建立單元還用于建立所述邏輯地址段和與所述邏輯地址段對(duì)應(yīng)的虛擬地址段之間的頁級(jí)映射表,以及所述虛擬地址段中虛擬塊和與所述虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表;
獲取單元,用于當(dāng)主機(jī)讀或?qū)憯?shù)據(jù)時(shí),獲取所述主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
確定單元,用于根據(jù)所述目標(biāo)邏輯頁地址和所述頁級(jí)映射表,確定目標(biāo)虛擬頁地址,所述目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射;
所述確定單元還用于根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址,所述目標(biāo)虛擬頁地址所在虛擬塊與所述目標(biāo)邏輯頁地址所在邏輯塊相互映射。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述頁級(jí)映射表存儲(chǔ)與邏輯頁地址映射的虛擬頁地址,所述虛擬頁地址包括虛擬頁所屬虛擬地址段的標(biāo)識(shí)、虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和塊內(nèi)偏移量;
所述目標(biāo)虛擬頁地址包括所述目標(biāo)虛擬頁所屬虛擬地址段的標(biāo)識(shí)、所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和目標(biāo)塊內(nèi)偏移量。
結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述塊級(jí)映射表存儲(chǔ)與所述虛擬地址段中虛擬塊映射的物理地址空間中物理塊的地址,所述物理地址空間中物理塊的地址包括所述物理地址空間中物理塊的標(biāo)識(shí);
所述確定單元具體用于根據(jù)所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和所述塊級(jí)映射表,確定所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí);以及,用于根據(jù)所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí)和所述目標(biāo)塊內(nèi)偏移量確定所述目標(biāo)物理頁地址。
結(jié)合第二方面,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述虛擬地址段與所述邏輯地址段按照所述虛擬地址段標(biāo)識(shí)順序和所述邏輯地址段標(biāo)識(shí)順序一一對(duì)應(yīng)。
結(jié)合第二方面,在第二方面的第四種可能的實(shí)現(xiàn)方式中,當(dāng)主機(jī)寫數(shù)據(jù)時(shí),所述獲取單元具體用于根據(jù)所述主機(jī)發(fā)送的寫數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
所述裝置還包括:
判斷單元,用于判斷所述目標(biāo)物理頁地址當(dāng)前是否存儲(chǔ)其他數(shù)據(jù);
存儲(chǔ)單元,用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前未存儲(chǔ)其他數(shù)據(jù)時(shí),將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述目標(biāo)物理頁地址;
選擇單元,用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前存儲(chǔ)其他數(shù)據(jù)時(shí),在所述物理地址空間中選擇當(dāng)前未存儲(chǔ)其他數(shù)據(jù)的物理頁地址作為新目標(biāo)物理頁地址,與所述新目標(biāo)物理頁地址所屬物理塊相互映射的新目標(biāo)虛擬塊和 所述目標(biāo)虛擬頁地址所在虛擬塊屬于同一個(gè)虛擬地址段;
所述存儲(chǔ)單元還用于將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述新目標(biāo)物理頁地址。
結(jié)合第二方面的第四種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述確定單元還用于根據(jù)所述新目標(biāo)物理頁地址和所述塊級(jí)映射表確定新目標(biāo)虛擬頁地址,所述新目標(biāo)虛擬頁地址所在虛擬塊與所述新目標(biāo)邏輯頁地址所在邏輯塊相互映射;所述裝置還包括:
更新單元,用于根據(jù)所述新目標(biāo)虛擬頁地址更新所述頁級(jí)映射表,使更新后的頁級(jí)映射表中所述新目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射。
結(jié)合第二方面,在第二方面的第六種可能的實(shí)現(xiàn)方式中,當(dāng)所述主機(jī)讀數(shù)據(jù)時(shí),所述獲取單元具體用于根據(jù)所述主機(jī)發(fā)送的讀數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
所述裝置還包括:
發(fā)送單元,用于向所述主機(jī)發(fā)送所述目標(biāo)物理頁地址中存儲(chǔ)的數(shù)據(jù)。
本發(fā)明實(shí)施例提供的一種FTL地址映射的方法及裝置,本發(fā)明將邏輯地址劃分為邏輯塊為預(yù)設(shè)值的邏輯地址段,在邏輯地址與物理地址之間建立一層虛擬地址空間,使虛擬地址空間中的虛擬地址段與邏輯地址段之間映射方式為頁級(jí)映射,虛擬地址空間與物理地址空間之間的映射方式為塊級(jí)映射,并建立相應(yīng)的頁級(jí)映射表和塊級(jí)映射表,在確定主機(jī)讀或?qū)憯?shù)據(jù)的目標(biāo)邏輯頁地址后,通過頁級(jí)映射表確定目標(biāo)虛擬頁地址,然后通過塊級(jí)映射表確定目標(biāo)物理頁地址,從而完成從邏輯地址空間到物理地址空間的映射。如此,在邏輯地址空間與物理地址空間之間建立一層虛擬地址空間,虛擬地址空間與物理地址空間之間進(jìn)行塊級(jí)映射,塊級(jí)映射表的大小遠(yuǎn)小于頁級(jí)映射表的大小,并且映射過程簡(jiǎn)單;將邏輯地址空間進(jìn)行劃分,減少邏輯地址空間與虛擬地址空間之間頁映射的范圍,進(jìn)而降低頁級(jí)映射表中每個(gè)表項(xiàng)存儲(chǔ)的尋址范圍,降低頁級(jí)映射表的大小,邏輯地址空間與虛擬地址空間之間采用單級(jí)頁映射,實(shí)現(xiàn)過程簡(jiǎn)單,主機(jī)讀或?qū)憯?shù)據(jù)時(shí)不會(huì)出現(xiàn)多次讀取元數(shù)據(jù)的過程,操作方便,不會(huì)導(dǎo)致主機(jī)讀寫過程高延遲,提高設(shè)備性能。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明一實(shí)施例提供的方法流程圖;
圖2為本發(fā)明又一實(shí)施例提供的方法流程圖;
圖3、圖4為本發(fā)明又一實(shí)施例提供的地址空間映射示意圖;
圖5、圖6為本發(fā)明又一實(shí)施例提供的裝置結(jié)構(gòu)示意圖;
圖7為本發(fā)明又一實(shí)施例提供的固態(tài)硬盤結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為使本發(fā)明技術(shù)方案的優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說明。
本發(fā)明一實(shí)施例提供一種FTL地址映射的方法,用于FTL,如圖1所示,所述方法包括:
101、FTL將邏輯地址空間劃分為若干個(gè)邏輯地址段。
其中,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值。
102、FTL建立虛擬地址空間。
其中,虛擬地址空間包括虛擬地址段,虛擬地址段的數(shù)量大于或等于邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于邏輯地址段中邏輯塊的數(shù)量,虛擬地址段與邏輯地址段一一對(duì)應(yīng),虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射。
本發(fā)明實(shí)施例中,虛擬地址段與邏輯地址段按照虛擬地址段標(biāo)識(shí)順序和邏輯地址段標(biāo)識(shí)順序一一對(duì)應(yīng)。
103、FTL建立邏輯地址段和與邏輯地址段對(duì)應(yīng)的虛擬地址段之間的 頁級(jí)映射表,以及虛擬地址段中虛擬塊和與虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表。
本發(fā)明實(shí)施例中,頁級(jí)映射表存儲(chǔ)與邏輯頁地址映射的虛擬頁地址,虛擬頁地址包括虛擬頁所屬虛擬地址段的標(biāo)識(shí)、虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和塊內(nèi)偏移量。塊級(jí)映射表存儲(chǔ)與虛擬地址段中虛擬塊映射的物理地址空間中物理塊的地址,物理地址空間中物理塊的地址包括物理地址空間中物理塊的標(biāo)識(shí)。
104、當(dāng)主機(jī)讀或?qū)憯?shù)據(jù)時(shí),F(xiàn)TL獲取主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址。
105、FTL根據(jù)目標(biāo)邏輯頁地址和頁級(jí)映射表,確定目標(biāo)虛擬頁地址。
其中,目標(biāo)虛擬頁地址與目標(biāo)邏輯頁地址相互映射。
本發(fā)明實(shí)施例中,目標(biāo)虛擬頁地址包括目標(biāo)虛擬頁所屬虛擬地址段的標(biāo)識(shí)、目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和目標(biāo)塊內(nèi)偏移量。
106、FTL根據(jù)目標(biāo)虛擬頁地址和塊級(jí)映射表,確定目標(biāo)物理頁地址。
其中,目標(biāo)虛擬頁地址所在虛擬塊與目標(biāo)邏輯頁地址所在邏輯塊相互映射。
需要說明的是,現(xiàn)有技術(shù)將映射表存儲(chǔ)在備用空間中,但是,與每個(gè)superblock對(duì)應(yīng)的備份空間是有限的,這就會(huì)導(dǎo)致每個(gè)superblock對(duì)應(yīng)的可使用的備份空間減少,進(jìn)而使FTL進(jìn)行數(shù)據(jù)整合或垃圾回收時(shí)備用空間不足,影響設(shè)備性能。本發(fā)明實(shí)施例中映射過程不會(huì)占用物理地址空間中的備份空間,則不會(huì)對(duì)FTL進(jìn)行數(shù)據(jù)整合或垃圾回收產(chǎn)生影響,避免現(xiàn)有技術(shù)中FTL進(jìn)行數(shù)據(jù)整合或垃圾回收時(shí)備用空間不足,影響設(shè)備性能的情況。
本發(fā)明實(shí)施例中,將邏輯地址劃分為邏輯塊為預(yù)設(shè)值的邏輯地址段,在邏輯地址與物理地址之間建立一層虛擬地址空間,使虛擬地址空間中的虛擬地址段與邏輯地址段之間映射方式為頁級(jí)映射,虛擬地址空間與物理地址空間之間的映射方式為塊級(jí)映射,并建立相應(yīng)的頁級(jí)映射表和塊級(jí)映射表,在確定主機(jī)讀或?qū)憯?shù)據(jù)的目標(biāo)邏輯頁地址后,通過頁級(jí)映射表確定目標(biāo)虛擬頁地址,然后通過塊級(jí)映射表確定目標(biāo)物理頁地址,從而完成從邏輯地址空間到物理地址空間的映射。如此,在邏輯地址空間與物理地址 空間之間建立一層虛擬地址空間,虛擬地址空間與物理地址空間之間進(jìn)行塊級(jí)映射,塊級(jí)映射表的大小遠(yuǎn)小于頁級(jí)映射表的大小,并且映射過程簡(jiǎn)單;將邏輯地址空間進(jìn)行劃分,減少邏輯地址空間與虛擬地址空間之間頁映射的范圍,進(jìn)而降低頁級(jí)映射表中每個(gè)表項(xiàng)存儲(chǔ)的尋址范圍,降低頁級(jí)映射表的大小,邏輯地址空間與虛擬地址空間之間采用單級(jí)頁映射,實(shí)現(xiàn)過程簡(jiǎn)單,主機(jī)讀或?qū)憯?shù)據(jù)時(shí)不會(huì)出現(xiàn)多次讀取元數(shù)據(jù)的過程,操作方便,不會(huì)導(dǎo)致主機(jī)讀寫過程高延遲,提高設(shè)備性能。
本發(fā)明又一實(shí)施例提供一種FTL地址映射的方法,用于FTL,如圖3所示,所述方法包括:
201、FTL將邏輯地址空間劃分為若干個(gè)邏輯地址段。
其中,邏輯地址空間包括很多邏輯塊,本發(fā)明實(shí)施例中,將邏輯地址空間劃分為若干個(gè)邏輯地址段,,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值,即每個(gè)邏輯地址段包括的邏輯塊相同,個(gè)數(shù)為預(yù)設(shè)值。
202、FTL建立虛擬地址空間。
其中,虛擬地址空間并不直接存儲(chǔ)數(shù)據(jù),其包括多個(gè)虛擬地址段,虛擬地址段的數(shù)量大于或等于邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于邏輯地址段中邏輯塊的數(shù)量。虛擬地址段與邏輯地址段一一對(duì)應(yīng),虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射。
203、FTL建立邏輯地址段和與邏輯地址段對(duì)應(yīng)的虛擬地址段之間的頁級(jí)映射表。
其中,虛擬地址段與邏輯地址段一一對(duì)應(yīng),虛擬地址段與邏輯地址段之間的映射方式采用頁級(jí)映射,即邏輯地址段中一個(gè)邏輯頁映射虛擬地址段中的一個(gè)虛擬頁,本步驟中建立相對(duì)應(yīng)的虛擬地址段與邏輯地址段中邏輯頁和虛擬也的映射關(guān)系。
需要說明的是,由于步驟201中將邏輯地址空間劃分為邏輯地址段,則每一個(gè)邏輯頁的地址應(yīng)該由其所在邏輯地址段的標(biāo)識(shí)、所在邏輯地址段中邏輯塊的標(biāo)識(shí)和所在邏輯地址段中邏輯塊的塊內(nèi)偏移組成,相應(yīng)的每一個(gè)虛擬頁的地址應(yīng)該由其所在虛擬地址段的標(biāo)識(shí)、所在虛擬地址段中虛擬塊的標(biāo)識(shí)和所在虛擬地址段中虛擬塊的塊內(nèi)偏移組成,當(dāng)邏輯頁與虛擬頁建立映射關(guān)系時(shí),頁級(jí)映射表中存儲(chǔ)邏輯頁地址與虛擬頁地址的映射關(guān) 系。
204、FTL建立虛擬地址段中虛擬塊和與虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表。
其中,虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射,虛擬地址段與物理地址空間之間的映射方式采用塊級(jí)映射,即虛擬地址段中一個(gè)邏輯塊映射物理地址空間中的一個(gè)物理塊,本步驟中建立相對(duì)應(yīng)的虛擬塊與物理塊的映射關(guān)系。邏輯地址空間、虛擬地址空間和物理地址空間的映射方式如圖3、圖4所示。
需要說明的是,由于物理空間中的物理塊地址為其物理塊標(biāo)識(shí),當(dāng)物理塊與虛擬塊建立映射關(guān)系時(shí),塊級(jí)映射表中存儲(chǔ)物理塊地址與虛擬塊地址的映射關(guān)系。由于虛擬地址段與物理地址空間之間的映射方式采用塊級(jí)映射,則虛擬塊中各虛擬頁的塊內(nèi)偏移量即為物理塊中各物理頁的塊內(nèi)偏移量。物理塊與虛擬塊之間還可以采用全相聯(lián)塊級(jí)映射。
205、當(dāng)接收主機(jī)的讀取數(shù)據(jù)請(qǐng)求時(shí),F(xiàn)TL獲取主機(jī)讀取數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址。
其中,F(xiàn)TL在主機(jī)的讀取數(shù)據(jù)請(qǐng)求中獲取目標(biāo)邏輯頁地址,目標(biāo)邏輯頁地址包括其所在邏輯地址段的標(biāo)識(shí)、所在邏輯地址段中邏輯塊的標(biāo)識(shí)和所在邏輯地址段中邏輯塊的目標(biāo)塊內(nèi)偏移。
206、FTL根據(jù)目標(biāo)邏輯頁地址和頁級(jí)映射表,F(xiàn)TL確定目標(biāo)虛擬頁地址。
其中,頁級(jí)映射表中存儲(chǔ)了各邏輯頁地址與虛擬頁地址的映射關(guān)系,則根據(jù)目標(biāo)邏輯頁地址查詢頁級(jí)映射表,即可得出與目標(biāo)邏輯頁地址映射的目標(biāo)虛擬頁地址。
207、FTL根據(jù)目標(biāo)虛擬頁地址和塊級(jí)映射表,F(xiàn)TL確定目標(biāo)物理塊地址。
其中,塊級(jí)映射表中存儲(chǔ)了相互映射的虛擬塊地址與物理塊地址的映射關(guān)系,根據(jù)目標(biāo)虛擬頁所屬虛擬快地址查詢塊級(jí)映射表,可以得出與目標(biāo)虛擬頁所屬虛擬快地址映射的目標(biāo)物理塊地址。
208、FTL根據(jù)目標(biāo)物理塊地址和目標(biāo)塊內(nèi)偏移確定目標(biāo)物理頁地址。
209、FTL從目標(biāo)物理頁地址中讀取主機(jī)所屬的數(shù)據(jù),并將讀取的數(shù) 據(jù)回復(fù)主機(jī)。
210、當(dāng)接收主機(jī)的寫數(shù)據(jù)請(qǐng)求時(shí),F(xiàn)TL獲取主機(jī)需要存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址。
其中,需要存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址包括其所在邏輯地址段的標(biāo)識(shí)、所在邏輯地址段中邏輯塊的標(biāo)識(shí)和所在邏輯地址段中邏輯塊的目標(biāo)塊內(nèi)偏移。
211、FTL根據(jù)目標(biāo)邏輯頁地址和頁級(jí)映射表,確定目標(biāo)虛擬頁地址。
212、FTL根據(jù)目標(biāo)虛擬頁地址和塊級(jí)映射表,F(xiàn)TL確定目標(biāo)物理塊地址。
213、FTL根據(jù)目標(biāo)物理塊地址和目標(biāo)塊內(nèi)偏移確定目標(biāo)物理頁地址。
214、FTL判斷目標(biāo)物理頁地址當(dāng)前是否被占用,若目標(biāo)物理頁地址當(dāng)前未被占用,執(zhí)行步驟215;若目標(biāo)物理頁地址當(dāng)前被占用,執(zhí)行步驟216。
215、FTL存儲(chǔ)主機(jī)需要存儲(chǔ)數(shù)據(jù)。
216、FTL選擇未被占用的新目標(biāo)物理頁存儲(chǔ)需要存儲(chǔ)數(shù)據(jù),并確定新目標(biāo)物理頁地址。
其中,與新目標(biāo)物理頁地址所屬物理塊相互映射的新目標(biāo)虛擬塊和目標(biāo)虛擬頁地址所在虛擬塊屬于同一個(gè)虛擬地址段。
217、FTL根據(jù)新目標(biāo)物理頁地址和塊級(jí)映射表確定新目標(biāo)虛擬頁地址。
其中,新目標(biāo)物理頁地址包括其所在新目標(biāo)物理塊的地址和新目標(biāo)塊內(nèi)偏移。根據(jù)新目標(biāo)物理塊地址查詢塊級(jí)映射表,確定與新目標(biāo)物理塊地址映射的新目標(biāo)虛擬塊地址,結(jié)合新目標(biāo)虛擬塊地址和新目標(biāo)塊內(nèi)偏移確定新目標(biāo)虛擬塊地址。
218、FTL根據(jù)新目標(biāo)虛擬頁地址更新頁級(jí)映射表,使頁級(jí)映射表中目標(biāo)邏輯頁地址與新目標(biāo)虛擬頁地址映射。
需要說明的是,現(xiàn)有技術(shù)將映射表存儲(chǔ)在備用空間中,但是,與每個(gè)superblock對(duì)應(yīng)的備份空間是有限的,這就會(huì)導(dǎo)致每個(gè)superblock對(duì)應(yīng)的可使用的備份空間減少,進(jìn)而使FTL進(jìn)行數(shù)據(jù)整合或垃圾回收時(shí)備用空間不足,影響設(shè)備性能。本發(fā)明實(shí)施例中映射過程不會(huì)占用物理地址空間中 的備份空間,則不會(huì)對(duì)FTL進(jìn)行數(shù)據(jù)整合或垃圾回收產(chǎn)生影響,避免現(xiàn)有技術(shù)中FTL進(jìn)行數(shù)據(jù)整合或垃圾回收時(shí)備用空間不足,影響設(shè)備性能的情況。
本發(fā)明實(shí)施例中,將邏輯地址劃分為邏輯塊為預(yù)設(shè)值的邏輯地址段,在邏輯地址與物理地址之間建立一層虛擬地址空間,使虛擬地址空間中的虛擬地址段與邏輯地址段之間映射方式為頁級(jí)映射,虛擬地址空間與物理地址空間之間的映射方式為塊級(jí)映射,并建立相應(yīng)的頁級(jí)映射表和塊級(jí)映射表,在確定主機(jī)讀或?qū)憯?shù)據(jù)的目標(biāo)邏輯頁地址后,通過頁級(jí)映射表確定目標(biāo)虛擬頁地址,然后通過塊級(jí)映射表確定目標(biāo)物理頁地址,從而完成從邏輯地址空間到物理地址空間的映射。如此,在邏輯地址空間與物理地址空間之間建立一層虛擬地址空間,虛擬地址空間與物理地址空間之間進(jìn)行塊級(jí)映射,塊級(jí)映射表的大小遠(yuǎn)小于頁級(jí)映射表的大小,并且映射過程簡(jiǎn)單;將邏輯地址空間進(jìn)行劃分,減少邏輯地址空間與虛擬地址空間之間頁映射的范圍,進(jìn)而降低頁級(jí)映射表中每個(gè)表項(xiàng)存儲(chǔ)的尋址范圍,降低頁級(jí)映射表的大小,邏輯地址空間與虛擬地址空間之間采用單級(jí)頁映射,實(shí)現(xiàn)過程簡(jiǎn)單,主機(jī)讀或?qū)憯?shù)據(jù)時(shí)不會(huì)出現(xiàn)多次讀取元數(shù)據(jù)的過程,操作方便,不會(huì)導(dǎo)致主機(jī)讀寫過程高延遲,提高設(shè)備性能。
本發(fā)明又一實(shí)施例提供一種FTL地址映射的裝置30,如圖5所示,所述裝置30包括:
劃分單元31,用于將邏輯地址空間劃分為若干個(gè)邏輯地址段,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值;
建立單元32,用于建立虛擬地址空間,所述虛擬地址空間包括虛擬地址段,所述虛擬地址段的數(shù)量大于或等于所述邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于所述邏輯地址段中邏輯塊的數(shù)量,所述虛擬地址段與所述邏輯地址段一一對(duì)應(yīng),所述虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射;
所述建立單元32還用于建立所述邏輯地址段和與所述邏輯地址段對(duì)應(yīng)的虛擬地址段之間的頁級(jí)映射表,以及所述虛擬地址段中虛擬塊和與所述虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表;
獲取單元33,用于當(dāng)主機(jī)讀或?qū)憯?shù)據(jù)時(shí),獲取所述主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
確定單元34,用于根據(jù)所述目標(biāo)邏輯頁地址和所述頁級(jí)映射表,確定目標(biāo)虛擬頁地址,所述目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射;
所述確定單元34還用于根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址,所述目標(biāo)虛擬頁地址所在虛擬塊與所述目標(biāo)邏輯頁地址所在邏輯塊相互映射。
其中,所述頁級(jí)映射表存儲(chǔ)與邏輯頁地址映射的虛擬頁地址,所述虛擬頁地址包括虛擬頁所屬虛擬地址段的標(biāo)識(shí)、虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和塊內(nèi)偏移量;所述目標(biāo)虛擬頁地址包括所述目標(biāo)虛擬頁所屬虛擬地址段的標(biāo)識(shí)、所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和目標(biāo)塊內(nèi)偏移量。所述塊級(jí)映射表存儲(chǔ)與所述虛擬地址段中虛擬塊映射的物理地址空間中物理塊的地址,所述物理地址空間中物理塊的地址包括所述物理地址空間中物理塊的標(biāo)識(shí)。所述虛擬地址段與所述邏輯地址段按照所述虛擬地址段標(biāo)識(shí)順序和所述邏輯地址段標(biāo)識(shí)順序一一對(duì)應(yīng)。
進(jìn)一步的,所述確定單元34具體用于根據(jù)所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和所述塊級(jí)映射表,確定所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí);以及,用于根據(jù)所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí)和所述目標(biāo)塊內(nèi)偏移量確定所述目標(biāo)物理頁地址。
進(jìn)一步的,當(dāng)主機(jī)寫數(shù)據(jù)時(shí),所述獲取單元33具體用于根據(jù)所述主機(jī)發(fā)送的寫數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址。
進(jìn)一步的,如圖6所示,所述裝置30還可以包括:
判斷單元35,用于判斷所述目標(biāo)物理頁地址當(dāng)前是否存儲(chǔ)其他數(shù)據(jù);
存儲(chǔ)單元36,用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前未存儲(chǔ)其他數(shù)據(jù)時(shí),將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述目標(biāo)物理頁地址;
選擇單元37,用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前存儲(chǔ)其他數(shù)據(jù)時(shí),在所述物理地址空間中選擇當(dāng)前未存儲(chǔ)其他數(shù)據(jù)的物理頁地址作為新目標(biāo)物理頁地址,與所述新目標(biāo)物理頁地址所屬物理塊相互映射的新目標(biāo)虛擬塊和所述目標(biāo)虛擬頁地址所在虛擬塊屬于同一個(gè)虛擬地址段;
所述存儲(chǔ)單元36還用于將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述新目標(biāo)物理 頁地址。
進(jìn)一步的,所述確定單元34還用于根據(jù)所述新目標(biāo)物理頁地址和所述塊級(jí)映射表確定新目標(biāo)虛擬頁地址,所述新目標(biāo)虛擬頁地址所在虛擬塊與所述新目標(biāo)邏輯頁地址所在邏輯塊相互映射。
進(jìn)一步的,如圖6所示,所述裝置30還可以包括:
更新單元38,用于根據(jù)所述新目標(biāo)虛擬頁地址更新所述頁級(jí)映射表,使更新后的頁級(jí)映射表中所述新目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射。
進(jìn)一步的,當(dāng)所述主機(jī)讀數(shù)據(jù)時(shí),所述獲取單元33具體用于根據(jù)所述主機(jī)發(fā)送的讀數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址。
進(jìn)一步的,如圖6所示,所述裝置30還可以包括:
發(fā)送單元39,用于向所述主機(jī)發(fā)送所述目標(biāo)物理頁地址中存儲(chǔ)的數(shù)據(jù)。
本發(fā)明實(shí)施例中,裝置30將邏輯地址劃分為邏輯塊為預(yù)設(shè)值的邏輯地址段,在邏輯地址與物理地址之間建立一層虛擬地址空間,使虛擬地址空間中的虛擬地址段與邏輯地址段之間映射方式為頁級(jí)映射,虛擬地址空間與物理地址空間之間的映射方式為塊級(jí)映射,并建立相應(yīng)的頁級(jí)映射表和塊級(jí)映射表,在確定主機(jī)讀或?qū)憯?shù)據(jù)的目標(biāo)邏輯頁地址后,通過頁級(jí)映射表確定目標(biāo)虛擬頁地址,然后通過塊級(jí)映射表確定目標(biāo)物理頁地址,從而完成從邏輯地址空間到物理地址空間的映射。如此,在邏輯地址空間與物理地址空間之間建立一層虛擬地址空間,虛擬地址空間與物理地址空間之間進(jìn)行塊級(jí)映射,塊級(jí)映射表的大小遠(yuǎn)小于頁級(jí)映射表的大小,并且映射過程簡(jiǎn)單;將邏輯地址空間進(jìn)行劃分,減少邏輯地址空間與虛擬地址空間之間頁映射的范圍,進(jìn)而降低頁級(jí)映射表中每個(gè)表項(xiàng)存儲(chǔ)的尋址范圍,降低頁級(jí)映射表的大小,邏輯地址空間與虛擬地址空間之間采用單級(jí)頁映射,實(shí)現(xiàn)過程簡(jiǎn)單,主機(jī)讀或?qū)憯?shù)據(jù)時(shí)不會(huì)出現(xiàn)多次讀取元數(shù)據(jù)的過程,操作方便,不會(huì)導(dǎo)致主機(jī)讀寫過程高延遲,提高設(shè)備性能。
本發(fā)明又一實(shí)施例提供一種固態(tài)硬盤40,如圖7所示,所述固態(tài)硬盤40至少包括:處理單元401,I/O(Input/Output,輸入/輸出)接口402,存儲(chǔ)單元403,通信總線404。通信總線404用于實(shí)現(xiàn)這些組件之間的通 信。
處理單元401為固態(tài)硬盤40的控制中心,利用各種接口和線路連接整個(gè)固態(tài)硬盤40的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)單元內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)單元403內(nèi)的數(shù)據(jù),以執(zhí)行固態(tài)硬盤40的各種功能和/或處理數(shù)據(jù)。所述處理單元401可以由集成電路(Integrated Circuit,IC)組成,例如可以由單顆封裝的IC所組成,也可以由連接多顆相同功能或不同功能的封裝IC而組成。
I/O接口402用于建立通信信道,使固態(tài)硬盤40通過所述通信信道與主機(jī)等設(shè)備通信。所述I/O接口402實(shí)現(xiàn)方式可以包括無線局域網(wǎng)(Wireless Local Area Network,wireless LAN)模塊、藍(lán)牙模塊、基帶(Base Band)模塊等通信模塊,以及所述通信模塊對(duì)應(yīng)的射頻(Radio Frequency,RF)電路,用于進(jìn)行無線局域網(wǎng)絡(luò)通信、藍(lán)牙通信、紅外線通信及/或蜂窩式通信系統(tǒng)通信,例如寬帶碼分多重接入(Wideband Code Division Multiple Access,W-CDMA)及/或高速下行封包存取(High Speed Downlink Packet Access,HSDPA)。所述通信模塊用于控制固態(tài)硬盤40中的各組件的通信,并且可以支持直接內(nèi)存存取(Direct Memory Access)。
在本發(fā)明的不同實(shí)施方式中,所述I/O接口402中的各種通信模塊一般以集成電路芯片(Integrated Circuit Chip)的形式出現(xiàn),并可進(jìn)行選擇性組合,而不必包括所有通信模塊及對(duì)應(yīng)的天線組。例如,所述I/O接口402可以僅包括基帶芯片、射頻芯片以及相應(yīng)的天線以在一個(gè)蜂窩通信系統(tǒng)中提供通信功能。經(jīng)由所述I/O接口402建立的無線通信連接,例如無線局域網(wǎng)接入或WCDMA接入,所述固態(tài)硬盤40可以連接至蜂窩網(wǎng)(Cellular Network)或因特網(wǎng)(Internet)。在本發(fā)明的一些可選實(shí)施方式中,所述I/O接口402中的通信模塊,例如基帶模塊可以集成到處理單元401中。
存儲(chǔ)單元403用于存儲(chǔ)軟件程序以及模塊,處理單元401通過運(yùn)行存儲(chǔ)在存儲(chǔ)單元403的軟件程序以及模塊,從而執(zhí)行固態(tài)硬盤40的各種功能應(yīng)用以及實(shí)現(xiàn)數(shù)據(jù)處理。存儲(chǔ)單元403主要包括程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū),其中,程序存儲(chǔ)區(qū)可以存儲(chǔ)至少一個(gè)功能所需的應(yīng)用程序4031等等;數(shù)據(jù)存儲(chǔ)區(qū)可存儲(chǔ)根據(jù)固態(tài)硬盤40的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、 電話本等)等。在本發(fā)明具體實(shí)施方式中,存儲(chǔ)單元403可以包括易失性存儲(chǔ)器,例如非揮發(fā)性動(dòng)態(tài)隨機(jī)存取內(nèi)存(Nonvolatile Random Access Memory,NVRAM)、相變化隨機(jī)存取內(nèi)存(Phase Change RAM,PRAM)、磁阻式隨機(jī)存取內(nèi)存(Magetoresistive RAM,MRAM)等,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、電子可擦除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、閃存器件,例如反或閃存(NOR flash memory)或是反及閃存(NAND flash memory)。非易失存儲(chǔ)器儲(chǔ)存處理單元401所執(zhí)行的應(yīng)用程序4031。所述處理單元401從所述非易失存儲(chǔ)器加載運(yùn)行程序與數(shù)據(jù)到內(nèi)存并將數(shù)字內(nèi)容儲(chǔ)存于大量儲(chǔ)存裝置中。所述應(yīng)用程序4031包括安裝在固態(tài)硬盤40上的任何應(yīng)用,包括但不限于瀏覽器、電子郵件、即時(shí)消息服務(wù)、文字處理、鍵盤虛擬、窗口小部件(Widget)、加密、數(shù)字版權(quán)管理、語音識(shí)別、語音復(fù)制、定位(例如由全球定位系統(tǒng)提供的功能)、音樂播放等等。
處理單元401,用于將邏輯地址空間劃分為若干個(gè)邏輯地址段,每個(gè)所述邏輯地址段中所包括的邏輯塊數(shù)量為預(yù)設(shè)值;以及,用于建立虛擬地址空間,所述虛擬地址空間包括虛擬地址段,所述虛擬地址段的數(shù)量大于或等于所述邏輯地址段的數(shù)量,各虛擬地址段中虛擬塊的數(shù)量大于所述邏輯地址段中邏輯塊的數(shù)量,所述虛擬地址段與所述邏輯地址段一一對(duì)應(yīng),所述虛擬地址段中的虛擬塊與物理地址空間中的物理塊為塊級(jí)映射;以及,用于建立所述邏輯地址段和與所述邏輯地址段對(duì)應(yīng)的虛擬地址段之間的頁級(jí)映射表,以及所述虛擬地址段中虛擬塊和與所述虛擬地址段中虛擬塊映射的物理地址空間中的物理塊之間的塊級(jí)映射表;以及,用于當(dāng)主機(jī)讀或?qū)憯?shù)據(jù)時(shí),獲取所述主機(jī)讀或?qū)憯?shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;以及,用于根據(jù)所述目標(biāo)邏輯頁地址和所述頁級(jí)映射表,確定目標(biāo)虛擬頁地址,所述目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射;以及,用于根據(jù)所述目標(biāo)虛擬頁地址和所述塊級(jí)映射表,確定目標(biāo)物理頁地址,所述目標(biāo)虛擬頁地址所在虛擬塊與所述目標(biāo)邏輯頁地址所在邏輯塊相互映射。
其中,所述頁級(jí)映射表存儲(chǔ)與邏輯頁地址映射的虛擬頁地址,所述虛擬頁地址包括虛擬頁所屬虛擬地址段的標(biāo)識(shí)、虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和塊內(nèi)偏移量;所述目標(biāo)虛擬頁地址包括所述目標(biāo)虛擬頁所屬 虛擬地址段的標(biāo)識(shí)、所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和目標(biāo)塊內(nèi)偏移量。所述塊級(jí)映射表存儲(chǔ)與所述虛擬地址段中虛擬塊映射的物理地址空間中物理塊的地址,所述物理地址空間中物理塊的地址包括所述物理地址空間中物理塊的標(biāo)識(shí)。所述虛擬地址段與所述邏輯地址段按照所述虛擬地址段標(biāo)識(shí)順序和所述邏輯地址段標(biāo)識(shí)順序一一對(duì)應(yīng)。
本發(fā)明實(shí)施例的一種實(shí)施方式中,所述處理單元401還用于根據(jù)所述目標(biāo)虛擬頁所屬虛擬地址段中虛擬塊的標(biāo)識(shí)和所述塊級(jí)映射表,確定所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí);以及,用于根據(jù)所述目標(biāo)物理頁所屬物理塊的標(biāo)識(shí)和所述目標(biāo)塊內(nèi)偏移量確定所述目標(biāo)物理頁地址。
本發(fā)明實(shí)施例的一種實(shí)施方式中,當(dāng)主機(jī)寫數(shù)據(jù)時(shí),所述處理單元401還用于根據(jù)所述主機(jī)發(fā)送的寫數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;以及,用于判斷所述目標(biāo)物理頁地址當(dāng)前是否存儲(chǔ)其他數(shù)據(jù);
所述存儲(chǔ)單元403用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前未存儲(chǔ)其他數(shù)據(jù)時(shí),將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述目標(biāo)物理頁地址;
所述處理單元401還用于當(dāng)所述目標(biāo)物理頁地址當(dāng)前存儲(chǔ)其他數(shù)據(jù)時(shí),在所述物理地址空間中選擇當(dāng)前未存儲(chǔ)其他數(shù)據(jù)的物理頁地址作為新目標(biāo)物理頁地址,與所述新目標(biāo)物理頁地址所屬物理塊相互映射的新目標(biāo)虛擬塊和所述目標(biāo)虛擬頁地址所在虛擬塊屬于同一個(gè)虛擬地址段;
所述存儲(chǔ)單元403還將所述主機(jī)寫入的數(shù)據(jù)存儲(chǔ)所述新目標(biāo)物理頁地址。
本發(fā)明實(shí)施例的一種實(shí)施方式中,所述處理單元401還用于根據(jù)所述新目標(biāo)物理頁地址和所述塊級(jí)映射表確定新目標(biāo)虛擬頁地址,所述新目標(biāo)虛擬頁地址所在虛擬塊與所述新目標(biāo)邏輯頁地址所在邏輯塊相互映射;以及,用于根據(jù)所述新目標(biāo)虛擬頁地址更新所述頁級(jí)映射表,使更新后的頁級(jí)映射表中所述新目標(biāo)虛擬頁地址與所述目標(biāo)邏輯頁地址相互映射。
本發(fā)明實(shí)施例的一種實(shí)施方式中,當(dāng)所述主機(jī)讀數(shù)據(jù)時(shí),所述處理單元401還用于根據(jù)所述主機(jī)發(fā)送的讀數(shù)據(jù)請(qǐng)求獲取所述主機(jī)讀數(shù)據(jù)對(duì)應(yīng)的目標(biāo)邏輯頁地址;
所述處理單元還用于401通過所述I/O接口402向所述主機(jī)發(fā)送所述目標(biāo)物理頁地址中存儲(chǔ)的數(shù)據(jù)。
本發(fā)明實(shí)施例中,固態(tài)硬盤40將邏輯地址劃分為邏輯塊為預(yù)設(shè)值的邏輯地址段,在邏輯地址與物理地址之間建立一層虛擬地址空間,使虛擬地址空間中的虛擬地址段與邏輯地址段之間映射方式為頁級(jí)映射,虛擬地址空間與物理地址空間之間的映射方式為塊級(jí)映射,并建立相應(yīng)的頁級(jí)映射表和塊級(jí)映射表,在確定主機(jī)讀或?qū)憯?shù)據(jù)的目標(biāo)邏輯頁地址后,通過頁級(jí)映射表確定目標(biāo)虛擬頁地址,然后通過塊級(jí)映射表確定目標(biāo)物理頁地址,從而完成從邏輯地址空間到物理地址空間的映射。如此,在邏輯地址空間與物理地址空間之間建立一層虛擬地址空間,虛擬地址空間與物理地址空間之間進(jìn)行塊級(jí)映射,塊級(jí)映射表的大小遠(yuǎn)小于頁級(jí)映射表的大小,并且映射過程簡(jiǎn)單;將邏輯地址空間進(jìn)行劃分,減少邏輯地址空間與虛擬地址空間之間頁映射的范圍,進(jìn)而降低頁級(jí)映射表中每個(gè)表項(xiàng)存儲(chǔ)的尋址范圍,降低頁級(jí)映射表的大小,邏輯地址空間與虛擬地址空間之間采用單級(jí)頁映射,實(shí)現(xiàn)過程簡(jiǎn)單,主機(jī)讀或?qū)憯?shù)據(jù)時(shí)不會(huì)出現(xiàn)多次讀取元數(shù)據(jù)的過程,操作方便,不會(huì)導(dǎo)致主機(jī)讀寫過程高延遲,提高設(shè)備性能。
本發(fā)明實(shí)施例提供的FTL地址映射的裝置可以實(shí)現(xiàn)上述提供的方法實(shí)施例,具體功能實(shí)現(xiàn)請(qǐng)參見方法實(shí)施例中的說明,在此不再贅述。本發(fā)明實(shí)施例提供的FTL地址映射的方法及裝置可以適用于FLT,但不僅限于此。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。