【技術領域】
本發(fā)明涉及存儲技術領域,尤其涉及基于閃存的數(shù)據(jù)存儲方法、裝置以及閃存芯片。
背景技術:
非易失性存儲器,諸如固態(tài)硬盤(solidstatedrives,ssd),由于其非易失存儲特性和高速讀寫性能,近年來被廣泛應用。
ssd在數(shù)據(jù)存儲過程中,其映射算法通常根據(jù)物理塊的使用次數(shù)來存儲數(shù)據(jù),將數(shù)據(jù)平均地存儲至各個物理塊中,以保證每個物理塊的使用次數(shù)和頻率是接近的。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)相關技術存在以下問題:根據(jù)上述方法進行數(shù)據(jù)存儲的過程中,沒有考慮物理塊本身的物理性能,即便每個物理塊的使用次數(shù)相同,但物理塊之間的響應時間也會存在不一致的情況,從而不同的物理塊會有不同的健康程度。如果經(jīng)常更新的數(shù)據(jù)存放在健康程度差的物理塊中,將延長該數(shù)據(jù)更新的時間,使數(shù)據(jù)讀/寫速度緩慢,總體上延長了存儲器的平均響應時間,降低了存儲器的性能。
技術實現(xiàn)要素:
本發(fā)明要解決的技術問題是提供基于閃存的數(shù)據(jù)存儲方法、裝置以及閃存芯片,解決存儲器平均響應時間慢、存儲器性能低的問題。
本發(fā)明實施例的一個方面,提供一種基于閃存的數(shù)據(jù)存儲方法,所述閃存包含多個物理塊,所述方法包括:獲取各空閑的所述物理塊的健康狀態(tài);確定待存儲數(shù)據(jù)的熱度等級;根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問時的r/b信號等待時長來確定的。
可選地,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
可選地,所述確定待存儲數(shù)據(jù)的熱度等級包括:根據(jù)數(shù)據(jù)在緩存中的訪問頻率的高低確定所述待存儲數(shù)據(jù)的熱度等級。
可選地,所述確定各空閑的所述物理塊的健康狀態(tài)之前,所述方法還包括:接收待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;
所述根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中之后,所述方法還包括:
將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本發(fā)明實施例的另一方面,提供一種基于閃存的數(shù)據(jù)存儲裝置,所述閃存包含多個物理塊,所述裝置包括:獲取模塊,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊,用于確定待存儲數(shù)據(jù)的熱度等級;存儲模塊,用于根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問時的r/b信號等待時長來確定的。
可選地,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
可選地,所述確定模塊具體用于:根據(jù)數(shù)據(jù)在緩存中的訪問頻率的高低確定所述待存儲數(shù)據(jù)的熱度等級。
可選地,所述裝置還包括:接收模塊,用于接收待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;搜尋模塊,用于根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;建立模塊,用于將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本發(fā)明實施例的又一方面,提供一種閃存芯片,所述閃存芯片包括:控制器;以及與所述控制器通信連接的存儲器;其中,所述存儲器存儲有可被所述控制器執(zhí)行的指令,所述指令被所述控制器執(zhí)行,以使所述控制器能夠執(zhí)行如上所述的方法。
在本發(fā)明實施例中,通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的熱度等級,然后根據(jù)待存儲數(shù)據(jù)的熱度等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù)。該實施方式能夠將經(jīng)常更新的數(shù)據(jù)(即熱數(shù)據(jù))存儲至健康狀態(tài)好的物理塊中,將不經(jīng)常更新的數(shù)據(jù)(即冷數(shù)據(jù))存儲至健康狀態(tài)差的物理塊中。一方面,使數(shù)據(jù)的讀/寫速度變快,縮短了存儲器的平均響應時間,另一方面,避免了大量壞塊的產(chǎn)生,提高了存儲器的性能。
【附圖說明】
一個或多個實施例通過與之對應的附圖中的圖片進行示例性說明,這些示例性說明并不構成對實施例的限定,附圖中具有相同參考數(shù)字標號的元件表示為類似的元件,除非有特別申明,附圖中的圖不構成比例限制。
圖1是本發(fā)明本發(fā)明實施例提供的一種閃存設備的內部結構示意圖;
圖2是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖;
圖3是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法中確定物理塊的健康狀態(tài)的方法的流程示意圖;
圖4是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖;
圖5是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結構示意圖;
圖6是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結構示意圖;
圖7是本發(fā)明實施例提供的一種閃存芯片的結構示意圖。
【具體實施方式】
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
目前,閃存設備主要由閃存介質和閃存控制器兩部分構成,如圖1所示,圖1是本發(fā)明實施例提供的一種閃存設備的內部結構示意圖。
閃存操作以頁(page)為讀寫單元,以物理塊(block)為擦除單元,設備內部的介質訪問提供了通道、顆粒封裝、顆粒閃存片等多個級別的并行。設備內部以多通道方式組織閃存顆粒封裝,每個通道上可連接多個顆粒封裝,多顆粒封裝之間共享傳輸通道,但可獨立執(zhí)行指令。每個顆粒封裝內部包含兩個或多個顆粒,每個顆??杀华毩⑦x中執(zhí)行指令。顆粒內部可分為多個片,每個片含有一個頁大小的寄存器緩存,用于暫存讀寫數(shù)據(jù)。
閃存控制器主要負責地址映射、垃圾回收和磨損均衡。閃存通過異地更新的方式緩解閃存單元寫前擦除的延遲,由于閃存單元的擦除次數(shù)有限,閃存控制器通過磨損均衡算法來平衡設備內部物理塊之間的擦除次數(shù),同時垃圾回收算法盡量選擇擦除效率高的物理塊回收以控制寫放大。
可以理解的是,上述閃存設備的閃存控制器能夠將數(shù)據(jù)更新請求均勻地下發(fā)至各個物理塊,以均衡各個物理塊的使用頻率,從而延長存儲器的使用壽命。然而,在數(shù)據(jù)存儲過程中,忽略了物理塊本身的實際物理性能,即便每個物理塊的訪問次數(shù)相同,但其剩余的使用壽命也可能是不同的,同理其各自的響應時間也不同。如果一些頻繁被訪問的數(shù)據(jù)(這類數(shù)據(jù)被稱為熱數(shù)據(jù))被分配到健康狀態(tài)差的物理塊中,致使數(shù)據(jù)的訪問速度緩慢,延長了存儲器的平均響應時間。另外,如果將熱數(shù)據(jù)與很少被訪問的數(shù)據(jù)(這類數(shù)據(jù)稱為冷數(shù)據(jù))混合存儲在相同的存儲區(qū)域,當閃存設備被觸發(fā)垃圾回收機制時,將有大量的冷數(shù)據(jù)頁需要被重新寫到新的空白塊中,這將極大地降低閃存設備的讀寫訪問性能和使用壽命。因此,根據(jù)物理塊的實際物理性能合理的利用存儲介質,將能有效縮短存儲器的平均響應時間,提升存儲器的讀寫訪問性能和使用壽命。
基于此,請參閱圖2,圖2是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖。該閃存可具體是u盤(usb存盤,usbflashdisk)和ssd等設備,閃存可具體由閃存控制器和閃存介質組成,閃存控制器的功能可具體由控制芯片實現(xiàn),閃存介質的功能可具體由存儲芯片實現(xiàn),存儲芯片為flash芯片,flash類型的芯片可具體為nandflash芯片等。如圖2所述,該方法包括:
s101、獲取各空閑的所述物理塊的健康狀態(tài)。
該物理塊即閃存介質上的存儲數(shù)據(jù)的物理區(qū)域,物理塊是數(shù)據(jù)在磁盤上的存儲單位,是上層軟件中操作文件時使用的最小操作單元。物理塊由扇區(qū)組成,從硬件設備上讀取一個物理塊,實際是從硬件設備讀取一個或多個扇區(qū)。物理塊對應邏輯塊,邏輯塊與文件相對應。在本實施例中,預先確定每一物理塊的健康狀態(tài),當有數(shù)據(jù)存儲請求時,獲取空閑物理塊的健康狀態(tài)。
物理塊的健康狀態(tài)一定程度上能夠反映執(zhí)行本方法的閃存設備的使用壽命的長短,以及閃存設備讀數(shù)據(jù)/寫數(shù)據(jù)時的工作性能。
其中,如圖3所示,確定物理塊的健康狀態(tài)的具體過程包括:
s11、獲取所述物理塊的歷史訪問次數(shù);
s12、當所述歷史訪問次數(shù)為大于或者等于預設次數(shù)時,獲取所述物理塊最近一次被訪問時的r/b信號等待時長;
s13、根據(jù)所述r/b信號等待時長確定所述物理塊的健康狀態(tài)。
在本實施例中,每個物理塊都有相應的區(qū)域記錄歷史訪問次數(shù)。當歷史訪問次數(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)就會越好。
在本實施例中,可以結合一些數(shù)據(jù)(比如總容量、文件系統(tǒng)所占用的存儲空間、系統(tǒng)開銷占用的存儲空間以及用戶習慣等),根據(jù)獲取的r/b信號等待時長,確定物理塊的具體健康狀態(tài),并記錄該r/b信號等待時長與物理塊的具體健康狀態(tài)的對應關系。例如,r/b信號等待時長為10個cpu時鐘周期,其對應的物理塊的健康狀態(tài)為第一級別,r/b信號等待時長為7個cpu時鐘周期,其對應的物理塊的健康狀態(tài)為第二級別,r/b信號等待時長為4個cpu時鐘周期,其對應的物理塊的健康狀態(tài)為第三級別,等。其中,第一級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第一預設范圍內,第二級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第二預設范圍內,第三級別表示物理塊的r/b信號等待時長大于物理塊的初始r/b信號等待時長并且多余的時長在第三預設范圍內。其中,第一預設范圍的時長大于第二預設范圍的時長,第二預設范圍的時長大于第三預設范圍的時長。
需要說明的是,由于是獲取所述物理塊最近一次被訪問時的r/b信號等待時長,并用最近一次的r/b信號等待時長來判斷物理塊的健康狀態(tài),因此,該物理塊的健康狀態(tài)的確定結果是一個動態(tài)更新的過程,根據(jù)物理塊的使用次數(shù)以及最近一次的r/b信號等待時長,動態(tài)的更新其健康狀態(tài)。
s102、確定待存儲數(shù)據(jù)的熱度等級。
在本實施例中,可以根據(jù)數(shù)據(jù)在緩存中的訪問頻率的高低來確定待存儲數(shù)據(jù)的熱度等級,具體地,將在緩存中訪問頻率大于預設第一閾值的數(shù)據(jù)劃分為熱數(shù)據(jù),將在緩存中訪問頻率小于預設第二閾值的數(shù)據(jù)劃分為冷數(shù)據(jù)。其中,預設第一閾值大于預設第二閾值,并且預設第一閾值和預設第二閾值的大小可以根據(jù)經(jīng)驗值來確定,也可以通過多次實驗后求取的平均值來確定。而在緩存中訪問頻率小于等于預設第一閾值,并且大于等于預設第二閾值的數(shù)據(jù)被劃分為常規(guī)數(shù)據(jù)。在這里,進一步判斷常規(guī)數(shù)據(jù)中哪些是熱數(shù)據(jù),哪些是冷數(shù)據(jù)??梢曰谝褎澐殖龅臒釘?shù)據(jù)和冷數(shù)據(jù),以及常規(guī)數(shù)據(jù),分別進行特征提取,基于提取的數(shù)據(jù)特征,通過傳統(tǒng)的聚類算法對數(shù)據(jù)進行相似性度量,從而將常規(guī)數(shù)據(jù)中的數(shù)據(jù)劃分為熱數(shù)據(jù)或者冷數(shù)據(jù)。
還可以基于最近最少使用(leastrecentlyused,lru)算法來確定待存儲數(shù)據(jù)是熱數(shù)據(jù)或者冷數(shù)據(jù)。lru算法是內存頁面置換算法中的一種,它是為虛擬頁式存儲管理服務的。lru算法的提出基于著名的局部性原理:如果一個數(shù)據(jù)正在被訪問,那么近期很可能再次被訪問。因此,lru算法的思想是,一個最近訪問過的頁面很可能再次被訪問,所以當需要淘汰內存中某個頁面時,先淘汰當前一段時間內最久未使用的頁面。數(shù)據(jù)訪問時間的局部性原理同樣適用于熱數(shù)據(jù)識別。一般的,如果一個數(shù)據(jù)最近一段時間內多次被訪問,那么該數(shù)據(jù)可以判定為熱數(shù)據(jù)。因此,可以通過lru算法來識別熱數(shù)據(jù)和冷數(shù)據(jù)。進一步地,以lru為基礎,還可以通過兩級lru算法或者lru-k算法等其他算法來判斷熱數(shù)據(jù)和冷數(shù)據(jù)。
其中,兩級lru算法是維持兩個固定長度的隊列,一個隊列用于存放訪問次數(shù)較多的數(shù)據(jù)塊,另一個隊列用于存放訪問頻率相對較少的數(shù)據(jù)塊,兩個隊列中的記錄采用lru算法進行淘汰。lru-k算法是根據(jù)每個頁面最近被訪問的時間進行排序,離現(xiàn)在最晚的頁面被淘汰,其根據(jù)使用頻率近似表示概率的方式來預測未來的熱點頁面,優(yōu)先淘汰非熱點頁面。
需要說明的是,本發(fā)明實施例還可以通過其他方法來確定待存儲數(shù)據(jù)的熱度等級,在此不做限定。
s103、根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中。
在本實施例中,確定待存儲數(shù)據(jù)為熱數(shù)據(jù)或者冷數(shù)據(jù),以及空閑物理塊的健康狀態(tài)之后,將熱數(shù)據(jù)寫入健康狀態(tài)好的空閑物理塊中,將冷數(shù)據(jù)寫入健康狀態(tài)差的空閑物理塊中。
在一些實施例中,待存儲數(shù)據(jù)明確劃分為熱數(shù)據(jù)和冷數(shù)據(jù)后,還可以進一步劃分熱數(shù)據(jù)的熱度等級,以及冷數(shù)據(jù)的冷度等級。例如,將熱數(shù)據(jù)劃分為第一熱度數(shù)據(jù)、第二熱度數(shù)據(jù)以及第三熱度數(shù)據(jù),其中,第一熱度數(shù)據(jù)被訪問的頻率高于第二熱度數(shù)據(jù),第二熱度數(shù)據(jù)被訪問的頻率高于第三熱度數(shù)據(jù),此時,熱數(shù)據(jù)在物理塊中的存儲方式為,第一熱度數(shù)據(jù)存儲在健康狀態(tài)最好的物理塊中,第二熱度數(shù)據(jù)存儲在健康狀態(tài)良好的物理塊中,第三熱度數(shù)據(jù)存儲在健康較好的物理塊中。同理,冷數(shù)據(jù)也可以根據(jù)其劃分的冷度等級對應不同健康狀態(tài)的物理塊。
需要說明的是,由于本實施例根據(jù)讀數(shù)據(jù)時的r/b信號等待時間或者寫數(shù)據(jù)時的r/b信號等待時間來動態(tài)的更新物理塊的健康狀態(tài),因此,熱數(shù)據(jù)和冷數(shù)據(jù)所存儲的物理塊并不是固定不變的,當熱數(shù)據(jù)當前存儲的物理塊的健康狀態(tài)不能匹配其熱度等級時,調整該熱數(shù)據(jù)所存儲的物理塊。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲方法,該方法通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的熱度等級,然后根據(jù)待存儲數(shù)據(jù)的熱度等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù)。該實施方式能夠將經(jīng)常更新的數(shù)據(jù)(即熱數(shù)據(jù))存儲至健康狀態(tài)好的物理塊中,將不經(jīng)常更新的數(shù)據(jù)(即冷數(shù)據(jù))存儲至健康狀態(tài)差的物理塊中。一方面,使數(shù)據(jù)的讀/寫速度變快,縮短了存儲器的平均響應時間,另一方面,避免了大量壞塊的產(chǎn)生,提高了存儲器的性能。
請參閱圖4,圖4是本發(fā)明另一實施例提供的一種基于閃存的數(shù)據(jù)存儲方法的流程示意圖。如圖4所示,該方法包括:
s201、接收待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;
s202、根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;
s203、獲取各空閑的所述物理塊的健康狀態(tài);
s204、確定待存儲數(shù)據(jù)的熱度等級;
s205、根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中;
s206、將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
本實施例與上述實施例的主要區(qū)別在于,在根據(jù)待存儲數(shù)據(jù)的熱度等級,以及物理塊的健康狀態(tài)完成數(shù)據(jù)存儲之后,還根據(jù)該存儲結果,建立物理塊與待存儲數(shù)據(jù)的邏輯號之間的映射。該映射可以用于,當有讀數(shù)據(jù)請求時,可以根據(jù)讀數(shù)據(jù)請求攜帶的邏輯號,并結合物理塊與邏輯號之間的映射關系,找到該邏輯號所對應的物理塊,然后讀取該物理塊中的數(shù)據(jù)。
需要說明的是,在上述讀取數(shù)據(jù)過程中,也可以根據(jù)讀數(shù)據(jù)過程中的r/b信號等待時長來更新物理塊的健康狀態(tài),當物理塊健康狀態(tài)更新,并且數(shù)據(jù)存儲的位置變化了,相應地,對所述映射表進行更新。
其中,所述邏輯號即邏輯塊對應的編號。具體文件系統(tǒng)管理的是一個邏輯空間,該邏輯空間即類似于一個大的數(shù)組,數(shù)組中每個元素就是文件系統(tǒng)操作的基本單位,也即是邏輯塊,一般邏輯塊從0開始編號,而且,邏輯塊是連續(xù)的,與邏輯塊對應的即物理塊。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲方法,該方法通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的熱度等級,然后根據(jù)待存儲數(shù)據(jù)的熱度等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù),并且根據(jù)存儲結果建立相應的映射。該實施方式在讀數(shù)據(jù)時能夠根據(jù)映射關系來獲取相應的數(shù)據(jù),由于數(shù)據(jù)存儲時結合了數(shù)據(jù)本身被訪問的頻率以及存儲數(shù)據(jù)的物理塊的健康狀態(tài),從而使數(shù)據(jù)讀取的速度更快,整體上提高了閃存設備的性能。
請參閱圖5,圖5是本發(fā)明實施例提供的一種基于閃存的數(shù)據(jù)存儲裝置的結構示意圖。如圖5所示,該裝置30包括:獲取模塊33、確定模塊34以及存儲模塊35。
其中,獲取模塊33,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊34,用于確定待存儲數(shù)據(jù)的熱度等級;存儲模塊35,用于根據(jù)所述待存儲數(shù)據(jù)的熱度等級,以及所述物理塊的健康狀態(tài),將所述待存儲數(shù)據(jù)存儲至對應的物理塊中。
在本實施例中,獲取模塊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信號等待時長來確定的。
其中,所述物理塊最近一次被訪問包括:讀操作或者寫操作。
其中,所述確定模塊34具體用于:根據(jù)數(shù)據(jù)在緩存中的訪問頻率的高低確定所述待存儲數(shù)據(jù)的熱度等級。
在一些實施例中,請參閱圖6,圖6與圖5的主要區(qū)別在于,所述裝置30還包括:接收模塊31、搜尋模塊32以及建立模塊36。
其中,接收模塊31,用于接收待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求,所述數(shù)據(jù)存儲請求包含至少一個邏輯號;搜尋模塊32,用于根據(jù)所述數(shù)據(jù)存儲請求,搜尋空閑的物理塊;建立模塊36,用于將所述待存儲數(shù)據(jù)所存儲的物理塊,以及所述待存儲數(shù)據(jù)對應的數(shù)據(jù)存儲請求所包含的邏輯號,建立映射。
需要說明的是,本發(fā)明實施例中的基于閃存的數(shù)據(jù)存儲裝置中的各個模塊之間的信息交互、執(zhí)行過程等內容,由于與本發(fā)明方法實施例基于同一構思,具體內容同樣適用于基于閃存的數(shù)據(jù)存儲裝置。本發(fā)明實施例中的各個模塊能作為單獨的硬件或軟件來實現(xiàn),并且可以根據(jù)需要使用單獨的硬件或軟件來實現(xiàn)各個單元的功能的組合。
本發(fā)明實施例提供了一種基于閃存的數(shù)據(jù)存儲裝置,該裝置通過獲取空閑物理塊的健康狀態(tài)和待存儲數(shù)據(jù)的熱度等級,然后根據(jù)待存儲數(shù)據(jù)的熱度等級,以及物理塊的健康狀態(tài)來存儲所述待存儲數(shù)據(jù),并且根據(jù)存儲結果建立相應的映射表。該實施方式能夠根據(jù)物理塊的健康狀態(tài)將熱數(shù)據(jù)和冷數(shù)據(jù)區(qū)分存儲,使得數(shù)據(jù)的讀/寫速度變快,縮短了存儲器的平均響應時間,并且該實施方式在讀數(shù)據(jù)時能夠根據(jù)映射關系來獲取相應的數(shù)據(jù),由于數(shù)據(jù)存儲時結合了數(shù)據(jù)本身被訪問的頻率以及存儲數(shù)據(jù)的物理塊的健康狀態(tài),從而使數(shù)據(jù)讀取的速度更快,提高了存儲器的性能。
請參閱圖7,圖7是本發(fā)明實施例提供的一種閃存芯片的結構示意圖。如圖7所示,該閃存芯片40包括:控制器41和存儲器42,控制器41和存儲器42之間電性連接。
存儲器42作為一種非易失性計算機可讀存儲介質,可用于存儲非易失性軟件程序、非易失性計算機可執(zhí)行程序以及模塊,如本發(fā)明實施例中的基于閃存的數(shù)據(jù)存儲方法對應的程序指令/模塊(例如,附圖5所示的獲取模塊33、確定模塊34以及存儲模塊35)??刂破?1通過運行存儲在存儲器42中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務器的各種功能應用以及數(shù)據(jù)處理,即實現(xiàn)上述方法實施例基于閃存的數(shù)據(jù)存儲方法。
存儲器42可以包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需要的應用程序;存儲數(shù)據(jù)區(qū)可存儲根據(jù)基于閃存的數(shù)據(jù)存儲裝置的使用所創(chuàng)建的數(shù)據(jù)等。
所述一個或者多個模塊存儲在所述存儲器42中,當被所述一個或者多個控制器41執(zhí)行時,執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖4中的方法步驟s201至步驟s206,圖5中的模塊33-35,圖6中的模塊31-36的功能。
上述產(chǎn)品可執(zhí)行本發(fā)明實施例所提供的方法,具備執(zhí)行方法相應的功能模塊和有益效果。未在本實施例中詳盡描述的技術細節(jié),可參見本發(fā)明實施例所提供的方法。
本發(fā)明實施例提供了一種非易失性計算機可讀存儲介質,所述非易失性計算機可讀存儲介質存儲有計算機可執(zhí)行指令,該計算機可執(zhí)行指令被電子設備執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖4中的方法步驟s201至步驟s206,圖5中的模塊33-35,圖6中的模塊31-36的功能。
本發(fā)明實施例提供了一種計算機程序產(chǎn)品,包括存儲在非易失性計算機可讀存儲介質上的計算程序,所述計算機程序包括程序指令,當所述程序指令被計算機執(zhí)行時,使所述計算機執(zhí)行上述任意方法實施例中基于閃存的數(shù)據(jù)存儲方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖4中的方法步驟s201至步驟s206,圖5中的模塊33-35,圖6中的模塊31-36的功能。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。
通過以上的實施方式的描述,本領域普通技術人員可以清楚地了解到各實施方式可借助軟件加通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件。本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。
最后應說明的是:以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;在本發(fā)明的思路下,以上實施例或者不同實施例中的技術特征之間也可以進行組合,步驟可以以任意順序實現(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明,它們沒有在細節(jié)中提供;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。