【技術(shù)領(lǐng)域】
本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及基于閃存的數(shù)據(jù)存儲方法、裝置以及閃存芯片。
背景技術(shù):
非易失性存儲器,諸如固態(tài)硬盤(solidstatedrives,ssd),由于其非易失存儲特性和高速讀寫性能,近年來被廣泛應(yīng)用。
ssd在數(shù)據(jù)存儲過程中,其映射算法通常根據(jù)物理塊的使用次數(shù)來存儲數(shù)據(jù),將數(shù)據(jù)平均地存儲至各個物理塊中,以保證每個物理塊的使用次數(shù)和頻率是接近的。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)相關(guān)技術(shù)存在以下問題:根據(jù)上述方法進行數(shù)據(jù)存儲的過程中,沒有考慮數(shù)據(jù)的重要程度,導(dǎo)致一些重要的數(shù)據(jù)存儲在健康狀態(tài)較差的物理塊中,從而導(dǎo)致重要數(shù)據(jù)容易出現(xiàn)丟失或者破壞。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供基于閃存的數(shù)據(jù)存儲方法、裝置以及閃存芯片,解決重要數(shù)據(jù)容易出現(xiàn)丟失或者破壞的問題。
本發(fā)明實施例的一個方面,提供一種基于閃存的數(shù)據(jù)存儲方法,所述閃存包含多個物理塊,所述方法包括:獲取各空閑的所述物理塊的健康狀態(tài);確定待存儲數(shù)據(jù)的重要等級;根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問時的r/b信號等待時長來確定的。
可選地,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
可選地,所述確定待存儲數(shù)據(jù)的重要等級包括:根據(jù)所述待存儲數(shù)據(jù)的數(shù)據(jù)類型確定所述待存儲數(shù)據(jù)的重要等級;或者,根據(jù)所述待存儲數(shù)據(jù)的用戶標識確定所述待存儲數(shù)據(jù)的重要等級。
可選地,所述確定各空閑的所述物理塊的健康狀態(tài)之前,所述方法還包括:接收待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;
所述根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中之后,所述方法還包括:
將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本發(fā)明實施例的另一方面,提供一種基于閃存的數(shù)據(jù)存儲裝置,所述閃存包含多個物理塊,所述裝置包括:獲取模塊,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊,用于確定待存儲數(shù)據(jù)的重要等級;存儲模塊,用于根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問時的r/b信號等待時長來確定的。
可選地,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
可選地,所述確定模塊具體用于:根據(jù)所述待存儲數(shù)據(jù)的數(shù)據(jù)類型確定所述待存儲數(shù)據(jù)的重要等級;或者,根據(jù)所述待存儲數(shù)據(jù)的用戶標識確定所述待存儲數(shù)據(jù)的重要等級。
可選地,所述裝置還包括:接收模塊,用于接收待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;搜尋模塊,用于根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;建立模塊,用于將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本發(fā)明實施例的又一方面,提供一種閃存芯片,所述閃存芯片包括:控制器;以及與所述控制器通信連接的存儲器;其中,所述存儲器存儲有可被所述控制器執(zhí)行的指令,所述指令被所述控制器執(zhí)行,以使所述控制器能夠執(zhí)行如上所述的方法。
在本發(fā)明實施例中,通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的重要等級,然后根據(jù)待存儲數(shù)據(jù)的重要等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù)。該實施方式能夠?qū)⒅匾臄?shù)據(jù)存儲至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲時的安全性。
【附圖說明】
一個或多個實施例通過與之對應(yīng)的附圖中的圖片進行示例性說明,這些示例性說明并不構(gòu)成對實施例的限定,附圖中具有相同參考數(shù)字標號的元件表示為類似的元件,除非有特別申明,附圖中的圖不構(gòu)成比例限制。
圖1是本發(fā)明本發(fā)明實施例提供的一種閃存設(shè)備的內(nèi)部結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖;
圖3是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法中確定物理塊的健康狀態(tài)的方法的流程示意圖;
圖4是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法中一種fat文件系統(tǒng)的邏輯示意圖;
圖5是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖;
圖6是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實施例提供的一種閃存芯片的結(jié)構(gòu)示意圖。
【具體實施方式】
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
目前,閃存設(shè)備主要由閃存介質(zhì)和閃存控制器兩部分構(gòu)成,如圖1所示,圖1是本發(fā)明實施例提供的一種閃存設(shè)備的內(nèi)部結(jié)構(gòu)示意圖。
閃存操作以頁(page)為讀寫單元,以物理塊(block)為擦除單元,設(shè)備內(nèi)部的介質(zhì)訪問提供了通道、顆粒封裝、顆粒閃存片等多個級別的并行。設(shè)備內(nèi)部以多通道方式組織閃存顆粒封裝,每個通道上可連接多個顆粒封裝,多顆粒封裝之間共享傳輸通道,但可獨立執(zhí)行指令。每個顆粒封裝內(nèi)部包含兩個或多個顆粒,每個顆粒可被獨立選中執(zhí)行指令。顆粒內(nèi)部可分為多個片,每個片含有一個頁大小的寄存器緩存,用于暫存讀寫數(shù)據(jù)。
閃存控制器主要負責地址映射、垃圾回收和磨損均衡。閃存通過異地更新的方式緩解閃存單元寫前擦除的延遲,由于閃存單元的擦除次數(shù)有限,閃存控制器通過磨損均衡算法來平衡設(shè)備內(nèi)部物理塊之間的擦除次數(shù),同時垃圾回收算法盡量選擇擦除效率高的物理塊回收以控制寫放大。
可以理解的是,上述閃存設(shè)備的閃存控制器能夠?qū)?shù)據(jù)平均地存儲到各個不同的物理塊中,從整體上提高了閃存設(shè)備的健康狀態(tài)。然而,在數(shù)據(jù)存儲過程中,沒有考慮數(shù)據(jù)的重要性,導(dǎo)致一些重要的數(shù)據(jù)(比如文件系統(tǒng)數(shù)據(jù))被分配到健康狀態(tài)差的物理塊中,致使重要數(shù)據(jù)丟失。由于一些數(shù)據(jù)本身的價值遠遠比閃存設(shè)備本身的成本更高,因此,提高對數(shù)據(jù)本身的保護會更經(jīng)濟有效。
基于此,請參閱圖2,圖2是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖。該閃存可具體是u盤(usb存盤,usbflashdisk)和ssd等設(shè)備,閃存可具體由閃存控制器和閃存介質(zhì)組成,閃存控制器的功能可具體由控制芯片實現(xiàn),閃存介質(zhì)的功能可具體由存儲芯片實現(xiàn),存儲芯片為flash芯片,flash類型的芯片可具體為nandflash芯片等。如圖2所述,該方法包括:
s101、獲取各空閑的所述物理塊的健康狀態(tài)。
該物理塊即閃存介質(zhì)上的存儲數(shù)據(jù)的物理區(qū)域,物理塊是數(shù)據(jù)在磁盤上的存儲單位,是上層軟件中操作文件時使用的最小操作單元。物理塊由扇區(qū)組成,從硬件設(shè)備上讀取一個物理塊,實際是從硬件設(shè)備讀取一個或多個扇區(qū)。物理塊對應(yīng)邏輯塊,邏輯塊與文件相對應(yīng)。在本實施例中,預(yù)先確定每一物理塊的健康狀態(tài),當有數(shù)據(jù)存儲請求時,獲取空閑物理塊的健康狀態(tài)。
物理塊的健康狀態(tài)一定程度上能夠反映執(zhí)行本方法的閃存設(shè)備的使用壽命的長短,以及閃存設(shè)備讀數(shù)據(jù)/寫數(shù)據(jù)時的工作性能。
其中,如圖3所示,確定物理塊的健康狀態(tài)的具體過程包括:
s11、獲取所述物理塊的歷史訪問次數(shù);
s12、當所述歷史訪問次數(shù)為大于或者等于預(yù)設(shè)次數(shù)時,獲取所述物理塊最近一次被訪問時的r/b信號等待時長;
s13、根據(jù)所述r/b信號等待時長確定所述物理塊的健康狀態(tài)。
在本實施例中,每個物理塊都有相應(yīng)的區(qū)域記錄歷史訪問次數(shù)。當歷史訪問次數(shù)大于或者等于預(yù)設(shè)次數(shù)時,檢查r/b信號等待時長,根據(jù)該時長的長短來判斷該物理塊的健康狀態(tài),當該等待時長比較長時,說明物理塊的健康狀態(tài)比較差,當該等待時長比較短時,說明物理塊的健康狀態(tài)比較好。當物理塊的歷史訪問次數(shù)較少,則說明該物理塊比較新,其r/b信號等待時長之間的區(qū)別比較小,可以直接使用第一次訪問該物理塊時的r/b信號等待時長,以減少計算步驟。
其中,該r/b信號即表示“就緒/忙”,r/b的輸出能夠顯示閃存芯片的狀態(tài),r/b處于低電平時,表示有編程、擦除或隨機讀操作正在進行,操作完成后,r/b會自動返回高電平。通過r/b信號可以判斷編程、擦除或隨機讀操作是否完成,如果是“忙”,表示編程、擦除或隨機讀操作正在進行中,如果是“就緒”,表示操作完成。
其中,檢查r/b信號等待時長,即檢查物理塊最近一次被訪問時的r/b信號等待時長。
其中,最近一次的r/b信號等待時長包括:所述物理塊被寫入數(shù)據(jù)時的最近一次的r/b信號等待時長;或者,所述物理塊被讀取數(shù)據(jù)時的最近一次的r/b信號等待時長。也即是說,當該物理塊最近一次的操作是讀取數(shù)據(jù),則檢查讀取數(shù)據(jù)過程中的r/b信號等待時長,當該物理塊最近一次的操作是寫入數(shù)據(jù),則檢查寫入數(shù)據(jù)過程中的r/b信號等待時長。
其中,根據(jù)r/b信號等待時長確定物理塊的健康狀態(tài),由于r/b信號等待時長越長,表示操作時間更長,隨著閃存芯片寫操作次數(shù)的增加,r/b信號等待時長就會增加,因此,物理塊的健康狀態(tài)就會變差。相反地,r/b信號等待時長越短,物理塊的健康狀態(tài)就會越好。
在本實施例中,可以結(jié)合一些數(shù)據(jù)(比如總?cè)萘俊⑽募到y(tǒng)所占用的存儲空間、系統(tǒng)開銷占用的存儲空間以及用戶習(xí)慣等),根據(jù)獲取的r/b信號等待時長,確定物理塊的具體健康狀態(tài),并記錄該r/b信號等待時長與物理塊的具體健康狀態(tài)的對應(yīng)關(guān)系。例如,r/b信號等待時長為10個cpu時鐘周期,其對應(yīng)的物理塊的健康狀態(tài)為第一級別,r/b信號等待時長為7個cpu時鐘周期,其對應(yīng)的物理塊的健康狀態(tài)為第二級別,r/b信號等待時長為4個cpu時鐘周期,其對應(yīng)的物理塊的健康狀態(tài)為第三級別,等。其中,第一級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第一預(yù)設(shè)范圍內(nèi),第二級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第二預(yù)設(shè)范圍內(nèi),第三級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第三預(yù)設(shè)范圍內(nèi)。其中,第一預(yù)設(shè)范圍的時長大于第二預(yù)設(shè)范圍的時長,第二預(yù)設(shè)范圍的時長大于第三預(yù)設(shè)范圍的時長。
需要說明的是,由于是獲取所述物理塊最近一次被訪問時的r/b信號等待時長,并用最近一次的r/b信號等待時長來判斷物理塊的健康狀態(tài),因此,該物理塊的健康狀態(tài)的確定結(jié)果是一個動態(tài)更新的過程,根據(jù)物理塊的使用次數(shù)以及最近一次的r/b信號等待時長,動態(tài)的更新其健康狀態(tài)。
s102、確定待存儲數(shù)據(jù)的重要等級。
在本實施例中,執(zhí)行本方法的閃存設(shè)備可以主動的識別待存儲數(shù)據(jù)的數(shù)據(jù)類型,從而根據(jù)數(shù)據(jù)類型確定該待存儲數(shù)據(jù)的重要等級。比如,該待存儲數(shù)據(jù)屬于文件系統(tǒng)的元數(shù)據(jù)時,默認該待存儲數(shù)據(jù)是重要數(shù)據(jù)。其中,文件系統(tǒng)是操作系統(tǒng)用于明確存儲設(shè)備(常見的是磁盤,也有基于nandflash的固態(tài)硬盤)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在存儲設(shè)備上組織文件的方法。例如,nand閃存的存儲文件系統(tǒng),按其結(jié)構(gòu)主要分為基于塊設(shè)備的常規(guī)文件系統(tǒng)和日志結(jié)構(gòu)的文件系統(tǒng),基于塊設(shè)備的文件系統(tǒng)是磁盤存儲器最常用的文件系統(tǒng),比如fat文件系統(tǒng)和ext2文件系統(tǒng);日志結(jié)構(gòu)的文件系統(tǒng)包括jffs2、yaffs、cffs等。
在本實施例中,執(zhí)行本方法的閃存設(shè)備還可以根據(jù)待存儲數(shù)據(jù)的用戶標識來確定待存儲數(shù)據(jù)的重要等級。在這里,只有當用戶對待存儲數(shù)據(jù)的重要等級進行自定義標注后,在進行數(shù)據(jù)存儲時,閃存設(shè)備才能夠根據(jù)用戶標注的標識判斷數(shù)據(jù)的重要程度,該過程是一個被動的確定待存儲數(shù)據(jù)重要等級的過程。
需要說明的是,除了上述兩種方法確定待存儲數(shù)據(jù)的等級之外,還可以通過其他方法來確定待存儲數(shù)據(jù)的重要等級。
s103、根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中。
在本實施例中,確定待存儲數(shù)據(jù)的重要等級,以及空閑物理塊的健康狀態(tài)之后,將最重要的待存儲數(shù)據(jù)寫入健康狀態(tài)最好的空閑物理塊中,將次重要的待存儲數(shù)據(jù)寫入健康狀態(tài)較好的空閑物理塊中。待存儲數(shù)據(jù)的重要等級與物理塊的健康狀態(tài)之間的對應(yīng)關(guān)系,可以預(yù)先設(shè)定好,例如,一級重要的待存儲數(shù)據(jù)對應(yīng)健康狀態(tài)最好的物理塊,二級重要的待存儲數(shù)據(jù)對應(yīng)健康狀態(tài)較好的物理塊,三級重要的待存儲數(shù)據(jù)對應(yīng)健康狀態(tài)一般的物理塊,四級重要的待存儲數(shù)據(jù)對應(yīng)健康狀態(tài)較差的物理塊,其中,一級重要、二級重要、三級重要以及四級重要是按照數(shù)據(jù)的重要程度從高到低排序的。在確定待存儲數(shù)據(jù)的重要等級后,根據(jù)其重要等級自動的查找其對應(yīng)的物理塊。
下面以常用的文件系統(tǒng)fat來舉例,如圖4所示,其中,超級塊、塊描述、位表、結(jié)點表等數(shù)據(jù)為元數(shù)據(jù),數(shù)據(jù)塊是用于存儲真實的數(shù)據(jù)。由于元數(shù)據(jù)的訪問效率對于整個文件系統(tǒng)的性能有重要的影響,并且它的損壞會導(dǎo)致數(shù)據(jù)訪問失敗,因此,元數(shù)據(jù)是重要數(shù)據(jù),相應(yīng)地,將元數(shù)據(jù)存儲至健康狀態(tài)好的物理塊中。進一步地,經(jīng)過預(yù)定時間后,當檢測到該元數(shù)據(jù)所存儲的物理塊的健康狀態(tài)變差了時,可以調(diào)整該元數(shù)據(jù)所存儲的物理塊,將元數(shù)據(jù)匹配到其他健康狀態(tài)好的物理塊中。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲方法,該方法通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的重要等級,然后根據(jù)待存儲數(shù)據(jù)的重要等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù)。該實施方式能夠?qū)⒅匾臄?shù)據(jù)存儲至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲時的安全性。
請參閱圖5,圖5是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖。如圖5所示,該方法包括:
s201、接收待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;
s202、根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;
s203、獲取各空閑的所述物理塊的健康狀態(tài);
s204、確定待存儲數(shù)據(jù)的重要等級;
s205、根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中;
s206、將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本實施例與上述實施例的主要區(qū)別在于,在根據(jù)待存儲數(shù)據(jù)的重要等級,以及物理塊的健康狀態(tài)完成數(shù)據(jù)存儲之后,還根據(jù)該存儲結(jié)果,建立物理塊與待存儲數(shù)據(jù)的邏輯號之間的映射。該映射可以用于,當有讀數(shù)據(jù)請求時,可以根據(jù)讀數(shù)據(jù)請求攜帶的邏輯號,并結(jié)合物理塊與邏輯號之間的映射關(guān)系,找到該邏輯號所對應(yīng)的物理塊,然后讀取該物理塊中的數(shù)據(jù)。
需要說明的是,在上述讀取數(shù)據(jù)過程中,也可以根據(jù)讀數(shù)據(jù)過程中的r/b信號等待時長來更新物理塊的健康狀態(tài),當物理塊健康狀態(tài)更新,并且數(shù)據(jù)存儲的位置變化了,相應(yīng)地,對所述映射表進行更新。
其中,所述邏輯號即邏輯塊對應(yīng)的編號。具體文件系統(tǒng)管理的是一個邏輯空間,該邏輯空間即類似于一個大的數(shù)組,數(shù)組中每個元素就是文件系統(tǒng)操作的基本單位,也即是邏輯塊,一般邏輯塊從0開始編號,而且,邏輯塊是連續(xù)的,與邏輯塊對應(yīng)的即物理塊。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲方法,該方法通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的重要等級,然后根據(jù)待存儲數(shù)據(jù)的重要等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù),并且根據(jù)存儲結(jié)果建立相應(yīng)的映射。一方面,該實施方式能夠?qū)⒅匾臄?shù)據(jù)存儲至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲時的安全性,另一方面,讀數(shù)據(jù)時是根據(jù)映射關(guān)系來獲取相應(yīng)的數(shù)據(jù),由于數(shù)據(jù)存儲結(jié)合了物理塊的健康狀態(tài),一定程度上使數(shù)據(jù)讀取的速度更快。
請參閱圖6,圖6是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖。如圖6所示,該裝置30包括:獲取模塊33、確定模塊34以及存儲模塊35。
其中,獲取模塊33,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊34,用于確定待存儲數(shù)據(jù)的重要等級;存儲模塊35,用于根據(jù)所述待存儲數(shù)據(jù)的重要等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應(yīng)的物理塊中。
在本實施例中,獲取模塊33和確定模塊34分別連接存儲模塊,獲取模塊33將獲取的各空閑物理塊的健康狀態(tài)發(fā)送至存儲模塊35,確定模塊34將確定的待存儲數(shù)據(jù)的重要等級發(fā)送至存儲模塊35,存儲模塊35根據(jù)物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的重要等級來存儲待存儲數(shù)據(jù)。
其中,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問時的r/b信號等待時長來確定的。
其中,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
在一些實施例中,請參閱圖7,圖7與圖6的主要區(qū)別在于,所述裝置30還包括:接收模塊31、搜尋模塊32以及建立模塊36。
其中,接收模塊31,用于接收待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;搜尋模塊32,用于根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;建立模塊36,用于將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
需要說明的是,本發(fā)明實施例中的基于閃存的數(shù)據(jù)存儲裝置中的各個模塊之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容同樣適用于基于閃存的數(shù)據(jù)存儲裝置。本發(fā)明實施例中的各個模塊能作為單獨的硬件或軟件來實現(xiàn),并且可以根據(jù)需要使用單獨的硬件或軟件來實現(xiàn)各個單元的功能的組合。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲裝置,該裝置通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的重要等級,然后根據(jù)待存儲數(shù)據(jù)的重要等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù),并且根據(jù)存儲結(jié)果建立相應(yīng)的映射表。一方面,該實施方式能夠?qū)⒅匾臄?shù)據(jù)存儲至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲時的安全性,另一方面,讀數(shù)據(jù)時是根據(jù)映射表來獲取相應(yīng)的數(shù)據(jù),由于數(shù)據(jù)存儲結(jié)合了物理塊的健康狀態(tài),一定程度上使數(shù)據(jù)讀取的速度更快。
請參閱圖8,圖8是本發(fā)明實施例提供的一種閃存芯片的結(jié)構(gòu)示意圖。如圖8所示,該閃存芯片40包括:控制器41和存儲器42,控制器41和存儲器42之間電性連接。
存儲器42作為一種非易失性計算機可讀存儲介質(zhì),可用于存儲非易失性軟件程序、非易失性計算機可執(zhí)行程序以及模塊,如本發(fā)明實施例中的基于閃存的數(shù)據(jù)存儲方法對應(yīng)的程序指令/模塊(例如,附圖6所示的獲取模塊33、確定模塊34以及存儲模塊35)。控制器41通過運行存儲在存儲器42中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務(wù)器的各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)上述方法實施例基于閃存的數(shù)據(jù)存儲方法。
存儲器42可以包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需要的應(yīng)用程序;存儲數(shù)據(jù)區(qū)可存儲根據(jù)基于閃存的數(shù)據(jù)存儲裝置的使用所創(chuàng)建的數(shù)據(jù)等。
所述一個或者多個模塊存儲在所述存儲器42中,當被所述一個或者多個控制器41執(zhí)行時,執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
上述產(chǎn)品可執(zhí)行本發(fā)明實施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實施例中詳盡描述的技術(shù)細節(jié),可參見本發(fā)明實施例所提供的方法。
本發(fā)明實施例提供了一種非易失性計算機可讀存儲介質(zhì),所述非易失性計算機可讀存儲介質(zhì)存儲有計算機可執(zhí)行指令,該計算機可執(zhí)行指令被電子設(shè)備執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
本發(fā)明實施例提供了一種計算機程序產(chǎn)品,包括存儲在非易失性計算機可讀存儲介質(zhì)上的計算程序,所述計算機程序包括程序指令,當所述程序指令被計算機執(zhí)行時,使所述計算機執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。
通過以上的實施方式的描述,本領(lǐng)域普通技術(shù)人員可以清楚地了解到各實施方式可借助軟件加通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;在本發(fā)明的思路下,以上實施例或者不同實施例中的技術(shù)特征之間也可以進行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明,它們沒有在細節(jié)中提供;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。