專利名稱:一種固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及固態(tài)存儲(chǔ)系統(tǒng)領(lǐng)域,尤其是涉及一種具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法。
背景技術(shù):
固態(tài)存儲(chǔ)系統(tǒng)(Solid State Disk, SSD)是使用固態(tài)存儲(chǔ)介質(zhì)且具備硬盤(pán)使用界面的存儲(chǔ)設(shè)備?,F(xiàn)有的SSD —般使用NANDFlash作為存儲(chǔ)介質(zhì)。由于NAND Flash具有有限的編程/擦除次數(shù)(例如,25nm多層單元閃存(MLC NAND Flash) —般具有3000次編程/擦除壽命),因此如何降低SSD中NAND Flash的損耗是提高SSD使用壽命和可靠性的重要技術(shù)課題。重復(fù)數(shù)據(jù)刪除(Data Deduplication)是在存儲(chǔ)技術(shù)領(lǐng)域應(yīng)用很廣泛的一種降低數(shù)據(jù)量的技術(shù)。其原理是:對(duì)于每筆寫(xiě)入存儲(chǔ)系統(tǒng)中的數(shù)據(jù)A,按照文件或固定大小的塊(chunk)為單位,計(jì)算該數(shù)據(jù)A的唯一特征值(也可稱為該數(shù)據(jù)A的“指紋”)f。根據(jù)該特征值f,去重(dedup)系統(tǒng)會(huì)查詢存儲(chǔ)系統(tǒng)中是否有與該特征值相同的數(shù)據(jù)塊。如果查詢到相同的數(shù)據(jù)塊,假設(shè)為數(shù)據(jù)B,則dedup系統(tǒng)就不會(huì)將這筆新的數(shù)據(jù)A實(shí)際寫(xiě)入系統(tǒng),而是用一個(gè)指向數(shù)據(jù)B的指針代替數(shù)據(jù)A的實(shí)際存儲(chǔ)地址。因此,當(dāng)下一次需要訪問(wèn)數(shù)據(jù)A時(shí),就根據(jù)指向數(shù)據(jù)B的地址,從數(shù)據(jù)B中獲得數(shù)據(jù)。根據(jù)dedup的機(jī)制,由于數(shù)據(jù)B和數(shù)據(jù)A具有相同的特征值f,因此也具有相同的數(shù)據(jù)內(nèi)容(這是因?yàn)閿?shù)據(jù)的內(nèi)容和數(shù)據(jù)的特征值是一一對(duì)應(yīng)的)。這樣,如果有很多內(nèi)容相同的數(shù)據(jù)需要存儲(chǔ),那么具有dedup功能的存儲(chǔ)系統(tǒng)只需要存儲(chǔ)一份實(shí)際的數(shù)據(jù),而其他相同的數(shù)據(jù)就只需用指針來(lái)指向該份實(shí)際存儲(chǔ)的數(shù)據(jù)的地址就可以了。而對(duì)于沒(méi)有dedup功能的存儲(chǔ)系統(tǒng),則每一份相同內(nèi)容的數(shù)據(jù)仍然會(huì)占據(jù)一塊存儲(chǔ)空間。對(duì)于很多應(yīng)用場(chǎng)景,例如服務(wù)器數(shù)據(jù)的定期備份,個(gè)人資料的定期備份等,具有dedup功能的存儲(chǔ)系統(tǒng)可以大大降低對(duì)存儲(chǔ)容量的要求。事實(shí)上,各大先進(jìn)存儲(chǔ)系統(tǒng)廠商的存儲(chǔ)備份系統(tǒng)均具備dedup功能,其實(shí)際使用表明,最大能夠帶來(lái)10 20倍的容量節(jié)約。重復(fù)數(shù)據(jù)刪除可以分為off-line (離線)重復(fù)數(shù)據(jù)刪除和in-line (在線)重復(fù)數(shù)據(jù)刪除。其中,所謂off-line,是指在激活去重功能時(shí),該存儲(chǔ)系統(tǒng)不能接受用戶寫(xiě)入數(shù)據(jù),即存儲(chǔ)系統(tǒng)必須在離線(不對(duì)用戶提供服務(wù))的情況下進(jìn)行數(shù)據(jù)去重;而所謂in-line,是指數(shù)據(jù)去重功能可以在用戶向存儲(chǔ)系統(tǒng)寫(xiě)入數(shù)據(jù)的同時(shí),并行的進(jìn)行數(shù)據(jù)去重。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法,該固態(tài)存儲(chǔ)系統(tǒng)包括地址映射表、指紋映射表和有效頁(yè)計(jì)數(shù)表,該寫(xiě)入方法包括步驟:固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求;計(jì)算該邏輯頁(yè)的數(shù)據(jù)的特征值;判斷該邏輯頁(yè)的數(shù)據(jù)的特征值是否存在于指紋映射表中;若該邏輯頁(yè)的數(shù)據(jù)的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁(yè)地址映射的地址記為指紋映射表中的該邏輯頁(yè)的數(shù)據(jù)的特征值對(duì)應(yīng)的物理頁(yè)地址;將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)加I。此外,該寫(xiě)入方法還包括步驟:若該邏輯頁(yè)的數(shù)據(jù)的特征值未存在于指紋映射表中,則分配一個(gè)新的物理頁(yè),在該新的物理頁(yè)中寫(xiě)入該邏輯頁(yè)的數(shù)據(jù),更新地址映射表并將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的新的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)記為I ;在指紋映射表中,以該邏輯頁(yè)的數(shù)據(jù)的特征值創(chuàng)建新的映射,將該邏輯頁(yè)的數(shù)據(jù)的特征值映射到該邏輯頁(yè)的數(shù)據(jù)所寫(xiě)入到的新的物理頁(yè)地址。此外,在有效頁(yè)計(jì)數(shù)表中,有效頁(yè)計(jì)數(shù)是物理頁(yè)中包含的有效的邏輯頁(yè)的個(gè)數(shù)。此外,在步驟“固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求”中,如果檢測(cè)到發(fā)生覆蓋寫(xiě),則需要先查詢地址映射表中該邏輯頁(yè)地址對(duì)應(yīng)的物理頁(yè)地址,并在有效頁(yè)計(jì)數(shù)表中將對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)減I。本發(fā)明的另一目的還在于提供一種與上述對(duì)應(yīng)的固態(tài)存儲(chǔ)系統(tǒng)的讀取方法,該讀取方法包括步驟:固態(tài)存儲(chǔ)系統(tǒng)接收到讀取邏輯頁(yè)的請(qǐng)求;判斷邏輯頁(yè)地址在地址映射表中是否映射到有效的物理頁(yè)地址;若該邏輯頁(yè)地址在地址映射表中映射到有效的物理頁(yè)地址,從該邏輯頁(yè)地址映射的物理頁(yè)地址中讀取該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)。此外,所述讀取方法還包括步驟:若該邏輯頁(yè)地址在地址映射表中沒(méi)有映射到任何一個(gè)有效的物理頁(yè)地址,則返回“無(wú)該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)”。本發(fā)明的另一目的還在于提供一種與上述對(duì)應(yīng)的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集方法,該垃圾收集方法包括步驟:在固態(tài)存儲(chǔ)系統(tǒng)中查詢到垃圾塊;檢測(cè)垃圾塊中是否存在包含有效數(shù)據(jù)的物理頁(yè);若檢測(cè)到垃圾塊中存在包含有效數(shù)據(jù)的物理頁(yè),將垃圾塊中的包含有效數(shù)據(jù)的物理頁(yè)(其地址為搬移前物理頁(yè)地址)搬移到固態(tài)存儲(chǔ)系統(tǒng)可以寫(xiě)入新數(shù)據(jù)的物理頁(yè)地址(其地址為搬移后物理頁(yè)地址);更新地址映射表,使邏輯頁(yè)地址映射到搬移后的物理頁(yè)地址;更新指紋映射表中的該有效數(shù)據(jù)的特征值映射到的物理頁(yè)地址為搬移后的物理頁(yè)地址;更新有效頁(yè)計(jì)數(shù)表,使搬移后的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)等于搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù),使搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)為O ;擦除該垃圾塊。此外,該垃圾收集方法還包括步驟:若檢測(cè)到垃圾塊中不存在包含有效數(shù)據(jù)的物理頁(yè),直接擦除該垃圾塊。此外,在步驟“檢測(cè)垃圾塊中是否存在包含有效數(shù)據(jù)的物理頁(yè)”中,檢測(cè)垃圾塊中的每個(gè)物理頁(yè)對(duì)應(yīng)的有效頁(yè)計(jì)數(shù),若該有效頁(yè)計(jì)數(shù)為0,則該物理頁(yè)不包含有效數(shù)據(jù);若該有效頁(yè)計(jì)數(shù)不為0,則該物理頁(yè)包含有效數(shù)據(jù)。本發(fā)明的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法,可以在線消除寫(xiě)入固態(tài)存儲(chǔ)系統(tǒng)中的重復(fù)數(shù)據(jù),因此能夠提高固態(tài)存儲(chǔ)系統(tǒng)的存儲(chǔ)效率及其性能,并降低功耗。
圖la、lb和Ic分別示出了根據(jù)本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)的地址映射表、指紋映射表和有效頁(yè)計(jì)數(shù)表。圖2示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法的流程圖。圖3示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的讀取方法的流程圖。圖4示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集方法的流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的固態(tài)存儲(chǔ)系統(tǒng)(SSD)具有在線重復(fù)數(shù)據(jù)刪除的功能。在固態(tài)存儲(chǔ)系統(tǒng)中,假設(shè)去重(dedup)的單位為一個(gè)固定長(zhǎng)度的塊(chunk),每一塊的長(zhǎng)度根據(jù)Flash的頁(yè)的大小確定,可為4KB、8KB或16KB。某一塊的數(shù)據(jù)的唯一特征值的產(chǎn)生應(yīng)該滿足如下條件:一、該特征值僅跟所述某一塊的數(shù)據(jù)的內(nèi)容有關(guān);二、所述某一塊的數(shù)據(jù)的內(nèi)容與其特征值之間具有一一對(duì)應(yīng)性。當(dāng)數(shù)據(jù)的內(nèi)容發(fā)生變化,哪怕是極其微小的變化,該數(shù)據(jù)的特征值也會(huì)發(fā)生明顯的改變。可使用現(xiàn)有技術(shù)的某種數(shù)據(jù)摘要算法(例如,MD5、SHA或其簡(jiǎn)化版本)來(lái)產(chǎn)生每一塊的數(shù)據(jù)的特征值。在此不對(duì)具體產(chǎn)生該特征值的算法做任何限定,只要滿足上述兩個(gè)條件即可。圖la、lb和Ic分別示出了根據(jù)本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)的地址映射表、指紋映射表和有效頁(yè)計(jì)數(shù)表。如圖1a所示,在根據(jù)本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)中,會(huì)維護(hù)一份邏輯頁(yè)地址到物理頁(yè)地址的地址映射表(以下文中簡(jiǎn)稱為地址映射表)。當(dāng)計(jì)算機(jī)主機(jī)需要訪問(wèn)某一塊的數(shù)據(jù)時(shí),會(huì)向SSD發(fā)送其邏輯頁(yè)地址,而SSD根據(jù)該邏輯頁(yè)地址,查詢地址映射表,得到實(shí)際存儲(chǔ)該塊的數(shù)據(jù)的物理頁(yè)地址。圖1a中的LPA表示存儲(chǔ)的邏輯頁(yè)地址,PPA表示存儲(chǔ)的物理頁(yè)地址,共有256項(xiàng)邏輯頁(yè)地址到物理頁(yè)地址的映射關(guān)系。但需說(shuō)明的是,圖1a僅示出了本發(fā)明的一種地址映射表,在此并不以此為限定。如圖1b所示,在根據(jù)本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)包括的指紋映射表中,F(xiàn)P表示存儲(chǔ)的每個(gè)特征值(即指紋),PPA表示存儲(chǔ)的與每個(gè)特征值對(duì)應(yīng)的數(shù)據(jù)的物理頁(yè)地址,SSD可以根據(jù)該物理頁(yè)地址取到實(shí)際的數(shù)據(jù)。為了便于說(shuō)明,在本發(fā)明的實(shí)施例中,指紋映射表是以簡(jiǎn)單的一維列表的形式表示的,在此并不以此為限。在實(shí)際的固態(tài)存儲(chǔ)系統(tǒng)中,從運(yùn)行效率和性能的角度來(lái)說(shuō),可以選擇更為高效的數(shù)據(jù)結(jié)構(gòu)。如圖1c所示,在根據(jù)本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)包括的有效頁(yè)計(jì)數(shù)表中,Count (有效頁(yè)計(jì)數(shù))表示該物理頁(yè)所存儲(chǔ)的數(shù)據(jù)的重復(fù)數(shù)量(即有多少個(gè)邏輯頁(yè)的數(shù)據(jù)是與該物理頁(yè)的數(shù)據(jù)相同并且都存儲(chǔ)在該物理頁(yè)中)。若物理頁(yè)地址(PPA)中存儲(chǔ)的具有某個(gè)特征值的數(shù)據(jù)頁(yè)在SSD中只有一個(gè),則其對(duì)應(yīng)的Count為I ;若物理頁(yè)地址(PPA)中存儲(chǔ)的具有某個(gè)特征值的數(shù)據(jù)頁(yè)在SSD中有η個(gè)(即dedup發(fā)生作用),則其對(duì)應(yīng)的Count為η。但需說(shuō)明的是,圖1c僅示出了本發(fā)明的一種可能的有效頁(yè)計(jì)數(shù)表的數(shù)值,在此并不以此為限定。以下,將詳細(xì)說(shuō)明根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取和垃圾收集方法。圖2示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法包括步驟:S21:固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求;S22:計(jì)算該邏輯頁(yè)的數(shù)據(jù)的特征值;S23:判斷該邏輯頁(yè)的數(shù)據(jù)的特征值是否存在于指紋映射表中;本步驟中,如果該邏輯頁(yè)的數(shù)據(jù)的特征值存在于指紋映射表中,則執(zhí)行步驟S24和S25,其中,步驟S24:將地址映射表中的該邏輯頁(yè)地址映射的地址記為指紋映射表中的該邏輯頁(yè)的數(shù)據(jù)的特征值對(duì)應(yīng)的物理頁(yè)地址;步驟S25:將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)加I。如果該邏輯頁(yè)的數(shù)據(jù)的特征值未存在于指紋映射表中,則執(zhí)行步驟S26和S27,其中步驟S26:分配一個(gè)新的物理頁(yè),在該新的物理頁(yè)中寫(xiě)入該邏輯頁(yè)的數(shù)據(jù),更新地址映射表并將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的新的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)記為I ;步驟S27:在指紋映射表中,以該邏輯頁(yè)的數(shù)據(jù)的特征值創(chuàng)建新的映射,將該邏輯頁(yè)的數(shù)據(jù)的特征值映射到該邏輯頁(yè)的數(shù)據(jù)所寫(xiě)入到的新的物理頁(yè)地址。這里,在步驟S26中,更新地址映射表是指由于該邏輯頁(yè)的數(shù)據(jù)的特征值未存在于指紋映射表中,因此該邏輯頁(yè)的數(shù)據(jù)是新的數(shù)據(jù),之前并未在指紋映射表中寫(xiě)入過(guò),因此需要實(shí)際寫(xiě)入固態(tài)存儲(chǔ)系統(tǒng),并在地址映射表中將該邏輯頁(yè)的數(shù)據(jù)的邏輯頁(yè)地址映射為該邏輯頁(yè)的數(shù)據(jù)實(shí)際寫(xiě)入的物理頁(yè)地址。此外,在上述步驟中,有效頁(yè)計(jì)數(shù)表中的有效頁(yè)計(jì)數(shù)表示的是以物理頁(yè)地址(PPA)中存儲(chǔ)的數(shù)據(jù)頁(yè)代表的有效的邏輯頁(yè)的個(gè)數(shù)。另外,在步驟S21中,如果檢測(cè)到發(fā)生覆蓋寫(xiě)(即寫(xiě)入的邏輯頁(yè)地址之前已經(jīng)寫(xiě)入過(guò)數(shù)據(jù)),則需要先查詢地址映射表中該邏輯頁(yè)地址對(duì)應(yīng)的物理頁(yè)地址,并在有效頁(yè)計(jì)數(shù)表中將對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)減I。與上述固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法對(duì)應(yīng)的讀取方法為其逆過(guò)程,具體參照?qǐng)D3。圖3示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的讀取方法的流程圖。如圖3所示,根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的讀取方法包括步驟:S31:固態(tài)存儲(chǔ)系統(tǒng)接收到讀取邏輯頁(yè)的請(qǐng)求;S32:判斷邏輯頁(yè)地址在地址映射表中是否映射到有效的物理頁(yè)地址;本步驟中,如果該邏輯頁(yè)地址在地址映射表中映射到有效的物理頁(yè)地址,則執(zhí)行步驟S33:從該邏輯頁(yè)地址映射的物理頁(yè)地址中讀取該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)。如果該邏輯頁(yè)地址在地址映射表中沒(méi)有映射到任何一個(gè)有效的物理頁(yè)地址,則執(zhí)行步驟S34:返回“無(wú)該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)”。本發(fā)明的實(shí)施例的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集過(guò)程需要從閃存的物理頁(yè)地址中讀取其對(duì)應(yīng)的邏輯頁(yè)地址,這正好與上述的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入及讀取方法中的從地址映射表中的邏輯頁(yè)地址查詢?cè)撨壿嬳?yè)地址對(duì)應(yīng)的物理頁(yè)地址的過(guò)程相反,具體參照?qǐng)D4。圖4示出了根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集方法的流程圖。如圖4所示,根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集方法包括步驟:S41:在固態(tài)存儲(chǔ)系統(tǒng)中查詢到垃圾塊;S42:檢測(cè)垃圾塊中是否存在包含有效數(shù)據(jù)的物理頁(yè);本步驟中,如果檢測(cè)到垃圾塊中存在包含有效數(shù)據(jù)的物理頁(yè),則執(zhí)行步驟S43、步驟S44、步驟S45、步驟S46和步驟S47 ;其中,步驟S43:將垃圾塊中的包含有效數(shù)據(jù)的物理頁(yè)從搬移前的物理頁(yè)地址搬移到固態(tài)存儲(chǔ)系統(tǒng)可以寫(xiě)入新數(shù)據(jù)的搬移后的物理頁(yè)地址;步驟S44:更新地址映射表,使邏輯頁(yè)地址映射到搬移后的物理頁(yè)地址;步驟S45:更新指紋映射表中的該有效數(shù)據(jù)的特征值映射到的物理頁(yè)地址為搬移后的物理頁(yè)地址;步驟S46:更新有效頁(yè)計(jì)數(shù)表,使搬移后的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)等于搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù),使搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)為O ;步驟S47:擦除該垃圾塊。如果檢測(cè)到垃圾塊中不存在包含有效數(shù)據(jù)的物理頁(yè),則直接執(zhí)行步驟S47:擦除該垃圾塊。此外,在步驟S42中,檢測(cè)垃圾塊中的每個(gè)物理頁(yè)對(duì)應(yīng)的有效頁(yè)計(jì)數(shù),若該有效頁(yè)計(jì)數(shù)為0,則該物理頁(yè)不包含有效數(shù)據(jù);若該有效頁(yè)計(jì)數(shù)不為0,則該物理頁(yè)包含有效數(shù)據(jù)。綜上所述,根據(jù)本發(fā)明的實(shí)施例的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法,可以在線消除寫(xiě)入固態(tài)存儲(chǔ)系統(tǒng)中的重復(fù)數(shù)據(jù),因此能夠提高固態(tài)存儲(chǔ)系統(tǒng)的存儲(chǔ)效率及其性能,并降低功耗。盡管已經(jīng)參照其示例性實(shí)施例具體顯示和描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離權(quán)利要求所限定的本發(fā)明的精神和范圍的情況下,可以對(duì)其進(jìn)行形式和細(xì)節(jié)上的各種改變。
權(quán)利要求
1.一種具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入方法,該固態(tài)存儲(chǔ)系統(tǒng)包括地址映射表、指紋映射表和有效頁(yè)計(jì)數(shù)表,其特征在于,該寫(xiě)入方法包括步驟: 固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求; 計(jì)算該邏輯頁(yè)的數(shù)據(jù)的特征值; 判斷該邏輯頁(yè)的數(shù)據(jù)的特征值是否存在于指紋映射表中; 若該邏輯頁(yè)的數(shù)據(jù)的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁(yè)地址映射的地址記為指紋映射表中的該邏輯頁(yè)的數(shù)據(jù)的特征值對(duì)應(yīng)的物理頁(yè)地址; 將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)加I。
2.根據(jù)權(quán)利要求1所述的寫(xiě)入方法,其特征在于,還包括步驟: 若該邏輯頁(yè)的數(shù) 據(jù)的特征值未存在于指紋映射表中,則分配一個(gè)新的物理頁(yè),在該新的物理頁(yè)中寫(xiě)入該邏輯頁(yè)的數(shù)據(jù),更新地址映射表并將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的新的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)記為I ; 在指紋映射表中,以該邏輯頁(yè)的數(shù)據(jù)的特征值創(chuàng)建新的映射,將該邏輯頁(yè)的數(shù)據(jù)的特征值映射到該邏輯頁(yè)的數(shù)據(jù)所寫(xiě)入到的新的物理頁(yè)地址。
3.根據(jù)權(quán)利要求1或2所述的寫(xiě)入方法,其特征在于,在有效頁(yè)計(jì)數(shù)表中,有效頁(yè)計(jì)數(shù)是物理頁(yè)中包含的有效的邏輯頁(yè)的個(gè)數(shù)。
4.根據(jù)權(quán)利要求1所述的寫(xiě)入方法,其特征在于,在步驟“固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求”中,如果檢測(cè)到發(fā)生覆蓋寫(xiě),則需要先查詢地址映射表中該邏輯頁(yè)地址對(duì)應(yīng)的物理頁(yè)地址,并在有效頁(yè)計(jì)數(shù)表中將對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)減I。
5.一種與權(quán)利要求1對(duì)應(yīng)的固態(tài)存儲(chǔ)系統(tǒng)的讀取方法,其特征在于,該讀取方法包括步驟: 固態(tài)存儲(chǔ)系統(tǒng)接收到讀取邏輯頁(yè)的請(qǐng)求; 判斷邏輯頁(yè)地址在地址映射表中是否映射到有效的物理頁(yè)地址; 若該邏輯頁(yè)地址在地址映射表中映射到有效的物理頁(yè)地址,從該邏輯頁(yè)地址映射的物理頁(yè)地址中讀取該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的讀取方法,其特征在于,還包括步驟: 若該邏輯頁(yè)地址在地址映射表中沒(méi)有映射到任何一個(gè)有效的物理頁(yè)地址,則返回“無(wú)該邏輯頁(yè)對(duì)應(yīng)的數(shù)據(jù)”。
7.一種與權(quán)利要求1對(duì)應(yīng)的固態(tài)存儲(chǔ)系統(tǒng)的垃圾收集方法,其特征在于,該垃圾收集方法包括步驟: 在固態(tài)存儲(chǔ)系統(tǒng)中查詢到垃圾塊; 檢測(cè)垃圾塊中是否存在包含有效數(shù)據(jù)的物理頁(yè); 若檢測(cè)到垃圾塊中存在包含有效數(shù)據(jù)的物理頁(yè),將垃圾塊中的包含有效數(shù)據(jù)的物理頁(yè)從搬移前的物理頁(yè)地址搬移到固態(tài)存儲(chǔ)系統(tǒng)可以寫(xiě)入新數(shù)據(jù)的搬移后的物理頁(yè)地址; 更新地址映射表,使邏輯頁(yè)地址映射到搬移后的物理頁(yè)地址; 更新指紋映射表中的該有效數(shù)據(jù)的特征值映射到的物理頁(yè)地址為搬移后的物理頁(yè)地址; 更新有效頁(yè)計(jì)數(shù)表,使搬移后的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)等于搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù),使搬移前的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)為O ;擦除該垃圾塊。
8.根據(jù)權(quán)利要求7所述的垃圾收集方法,其特征在于,還包括步驟: 若檢測(cè)到垃圾塊中不存在包含有效數(shù)據(jù)的物理頁(yè),直接擦除該垃圾塊。
9.根據(jù)權(quán)利要求7或8所述的垃圾收集方法,其特征在于,在步驟“檢測(cè)垃圾塊中是否存在包含有效數(shù)據(jù)的物理頁(yè)”中,檢測(cè)垃圾塊中的每個(gè)物理頁(yè)對(duì)應(yīng)的有效頁(yè)計(jì)數(shù),若該有效頁(yè)計(jì)數(shù)為O,則該物理頁(yè)不包含有效數(shù)據(jù);若該有效頁(yè)計(jì)數(shù)不為O,則該物理頁(yè)包含有效數(shù)據(jù) 。
全文摘要
本發(fā)明公開(kāi)一種具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法。其中,所述寫(xiě)入方法包括步驟固態(tài)存儲(chǔ)系統(tǒng)接收到寫(xiě)入邏輯頁(yè)的請(qǐng)求;計(jì)算該邏輯頁(yè)的數(shù)據(jù)的特征值(即指紋);判斷該邏輯頁(yè)的數(shù)據(jù)的特征值是否存在于指紋映射表中;若該邏輯頁(yè)的數(shù)據(jù)的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁(yè)地址映射的地址記為指紋映射表中的該邏輯頁(yè)的數(shù)據(jù)的特征值對(duì)應(yīng)的物理頁(yè)地址;將有效頁(yè)計(jì)數(shù)表中對(duì)應(yīng)的物理頁(yè)地址的有效頁(yè)計(jì)數(shù)加1。本發(fā)明的具有在線重復(fù)數(shù)據(jù)刪除功能的固態(tài)存儲(chǔ)系統(tǒng)的寫(xiě)入、讀取及垃圾收集方法,可以在線消除寫(xiě)入固態(tài)存儲(chǔ)系統(tǒng)中的重復(fù)數(shù)據(jù),因此能夠提高固態(tài)存儲(chǔ)系統(tǒng)的存儲(chǔ)效率及其性能,并降低功耗。
文檔編號(hào)G06F12/02GK103150258SQ20131009027
公開(kāi)日2013年6月12日 申請(qǐng)日期2013年3月20日 優(yōu)先權(quán)日2013年3月20日
發(fā)明者劉偉 申請(qǐng)人:中國(guó)科學(xué)院蘇州納米技術(shù)與納米仿生研究所