本申請涉及存儲技術(shù)領(lǐng)域,尤其涉及一種固態(tài)硬盤數(shù)據(jù)緩存方法及裝置。
背景技術(shù):
固態(tài)硬盤(英文:solidstatedrives,縮寫:ssd)通常指用固態(tài)電子存儲芯片陣列制成的硬盤,由控制單元和存儲單元組成。固態(tài)硬盤在接口的規(guī)范和定義、功能及使用方法上與普通硬盤相同,被廣泛應(yīng)用于各行各業(yè)。
固態(tài)硬盤不存在尋道時間,在隨機讀取零散小文件的時候效率較高,加載程序的速度較快。固態(tài)硬盤緩存技術(shù)即將需要頻繁讀寫的數(shù)據(jù)緩存到讀寫速度較為快速的固態(tài)硬盤中,加速這類熱點數(shù)據(jù)的讀寫速度。目前,固態(tài)硬盤主控通常采用業(yè)務(wù)無關(guān)性設(shè)計,即固態(tài)硬盤主控不理解業(yè)務(wù)數(shù)據(jù)內(nèi)容,不預(yù)估各種類型數(shù)據(jù)的數(shù)據(jù)塊大小和訪問頻率?,F(xiàn)有的固態(tài)硬盤數(shù)據(jù)緩存方法通常針對所有數(shù)據(jù)進行統(tǒng)一處理,使用有限的ram空間對所有主機類型數(shù)據(jù)進行統(tǒng)一緩存,其中,所有主機類型數(shù)據(jù)均采用相同方式存儲。
然而,在常用特征數(shù)據(jù)和非常用特征數(shù)據(jù)同時讀寫的情況下,現(xiàn)有的固態(tài)硬盤數(shù)據(jù)緩存方法,會造成非常用特征數(shù)據(jù)與常用特征數(shù)據(jù)搶占有限的緩存資源,引發(fā)常用特征數(shù)據(jù)與非常用特征數(shù)據(jù)的緩存數(shù)據(jù)交叉下刷,促使常用特征數(shù)據(jù)與非常用特征數(shù)據(jù)在閃存上交叉存放的概率提升,進一步導(dǎo)致后續(xù)垃圾回收(英文:garbagecollection,縮寫:gc)機制搬移有效數(shù)據(jù)量的增加,并且,常用特征數(shù)據(jù)的緩存命中率低,下刷率較高,容易因為頻繁訪問元數(shù)據(jù)而頻繁訪問閃存,導(dǎo)致固態(tài)硬盤的性能降低。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┮环N固態(tài)硬盤數(shù)據(jù)緩存方法及裝置,以解決現(xiàn)有的固態(tài)硬盤數(shù)據(jù)緩存方法導(dǎo)致固態(tài)硬盤的性能降低的問題。
第一方面,本申請實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,包括如下步驟:
檢測待緩存數(shù)據(jù)的數(shù)據(jù)塊大小;
判斷所述數(shù)據(jù)塊大小是否小于或等于第一閾值;
如果所述數(shù)據(jù)塊小于或等于第一閾值,查詢第一緩存資源池;
判斷所述第一緩存資源池的已用緩存區(qū)中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù);
如果所述第一緩存資源池內(nèi)不存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),對所述待緩存數(shù)據(jù)標(biāo)記時間戳;
將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū);
如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值;
如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池,所述第二緩存資源池的空間配額小于所述第一緩存資源池的空間配額。
結(jié)合本申請實施例,在本申請實施例的第一種可實施方式中,將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū)之后,包括:
判斷所述空閑緩存區(qū)的緩存資源是否小于預(yù)設(shè)資源閾值;
如果所述空閑緩存區(qū)的緩存資源小于預(yù)設(shè)資源閾值,將所述第一緩存資源池的已用緩存區(qū)中時間戳最遠的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
結(jié)合本申請實施例,在本申請實施例的第二種可實施方式中,判斷所述第一緩存資源池的已用緩存區(qū)中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù)之后,包括:
如果所述第一緩存資源池的已用緩存區(qū)中存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的已用緩存區(qū),覆蓋與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),同時刷新緩存數(shù)據(jù)時間戳。
結(jié)合本申請實施例,在本申請實施例的第三種可實施方式中,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值之后,包括:
如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第二閾值,將所述待緩存數(shù)據(jù)寫入nand-flash存儲介質(zhì)。
結(jié)合本申請實施例,在本申請實施例的第四種可實施方式中,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池,所述第二緩存資源池的空間配額小于所述第一緩存資源池的空間配額之后,包括:
判斷所述第二緩存資源池內(nèi)是否寫滿一個閃存頁;
如果所述第二緩存資源池內(nèi)寫滿一個閃存頁,將所述第二緩存資源池內(nèi)的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
第一方面,本申請還提供一種固態(tài)硬盤數(shù)據(jù)緩存裝置,包括:
檢測單元,用于檢測待緩存數(shù)據(jù)的數(shù)據(jù)塊大?。?/p>
第一判斷單元,用于判斷所述數(shù)據(jù)塊大小是否小于或等于第一閾值;
查詢單元,用于如果所述數(shù)據(jù)塊小于或等于第一閾值,查詢第一緩存資源池;
第二判斷單元,用于判斷所述第一緩存資源池的已用緩存區(qū)中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù);
標(biāo)記單元,用于如果所述第一緩存資源池內(nèi)不存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),對所述待緩存數(shù)據(jù)標(biāo)記時間戳;
第一緩存單元,用于將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū);
第三判斷單元,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值;
第二緩存單元,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池,所述第二緩存資源池的空間配額小于所述第一緩存資源池的空間配額。
結(jié)合本申請實施,在本申請實施例的第一種可實施方式中,所述裝置還包括:
第四判斷單元,用于判斷所述空閑緩存區(qū)的緩存資源是否小于預(yù)設(shè)資源閾值;
下刷單元,用于如果所述空閑緩存區(qū)的緩存資源小于預(yù)設(shè)資源閾值,將所述第一緩存資源池的已用緩存區(qū)中時間戳最遠的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
結(jié)合本申請實施,在本申請實施例的第二種可實施方式中,所述裝置還包括:
第三緩存單元,用于如果所述第一緩存資源池的已用緩存區(qū)中存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的已用緩存區(qū),覆蓋與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),同時刷新緩存數(shù)據(jù)時間戳。
結(jié)合本申請實施,在本申請實施例的第三種可實施方式中,寫入單元,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第二閾值,將所述待緩存數(shù)據(jù)寫入nand-flash存儲介質(zhì)。
結(jié)合本申請實施,在本申請實施例的第四種可實施方式中,所述裝置還包括:
第五判斷單元,用于判斷所述第二緩存資源池內(nèi)是否寫滿一個閃存頁;
第二下刷單元,用于如果所述第二緩存資源池內(nèi)寫滿一個閃存頁,將所述第二緩存資源池內(nèi)的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
由以上技術(shù)方案可知,本申請實施例提供的一種固態(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ù)的下刷率,提升其緩存命中率,從而達到提升固態(tài)硬盤性能的目的。
附圖說明
為了更清楚地說明本申請的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存方法的示意圖。
圖2為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存方法第一實施例的流程圖。
圖3為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存方法第二實施例的流程圖。
圖4為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存方法第三實施例的流程圖。
圖5為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存方法第四實施例的流程圖。
圖6為本申提供的一種固態(tài)硬盤數(shù)據(jù)緩存方法請第五實施例的流程圖。
圖7為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存裝置第一實施例的流程圖。
圖8為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存裝置第二實施例的流程圖。
圖9為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存裝置第三實施例的流程圖。
圖10為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存裝置第四實施例的流程圖。
圖11為本申請?zhí)峁┑囊环N固態(tài)硬盤數(shù)據(jù)緩存裝置第五實施例的流程圖。
具體實施方式
請參閱圖1和圖2,本申請第一實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,包括如下步驟:
步驟s101,檢測待緩存數(shù)據(jù)的數(shù)據(jù)塊1的大小。
其中,待緩存數(shù)據(jù)的數(shù)據(jù)塊大小即數(shù)據(jù)io的大小,通常情況下,小io數(shù)據(jù)為文件系統(tǒng)元數(shù)據(jù),文件系統(tǒng)元數(shù)據(jù)的讀寫頻率遠遠大于數(shù)據(jù)本身,遠超元數(shù)據(jù)本身在整個數(shù)據(jù)中的比例(元數(shù)據(jù)通常占整個數(shù)據(jù)量的6%左右)。在本實施例中被看作是常用特征數(shù)據(jù),從某些方面來講,常用特征數(shù)據(jù)在一定程度上表示熱點數(shù)據(jù),本實施例將讀/寫頻繁的數(shù)據(jù)都稱作常用特征數(shù)據(jù),需要使用盡可能多的緩存資源。
大io數(shù)據(jù)通常是采集回來的視頻數(shù)據(jù)等,在本實施例中可被看作是非常用特征數(shù)據(jù),本實施例將讀/寫相對不頻繁的數(shù)據(jù)稱作非常用特征數(shù)據(jù),需要使用少量緩存資源。
步驟s102,判斷所述數(shù)據(jù)塊1大小是否小于或等于第一閾值。
具體地,本實施例中,第一閾值為8k,即常用特征數(shù)據(jù)統(tǒng)一指小于等于8k大小的io數(shù)據(jù),非常用特征數(shù)據(jù)統(tǒng)一指大于8k大小的io數(shù)據(jù)。因此,在檢測待緩存數(shù)據(jù)的數(shù)據(jù)塊大小之后,通過判斷數(shù)據(jù)塊大小是否小于或等于8k,來劃分待緩存數(shù)據(jù)是常用特征數(shù)據(jù)還是非常用特征數(shù)據(jù)。
步驟s103,如果所述數(shù)據(jù)塊小于或等于第一閾值,查詢第一緩存資源池2。
具體地,如果待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或等于8k,則將該數(shù)據(jù)劃分為常用特征數(shù)據(jù)。將固態(tài)硬盤的緩存資源劃分為第一緩存資源池和第二緩存資源池。第一緩存資源池和第二緩存資源池的配額大于第二緩存資源池,本實施例中,第一緩存資源池的配額為總量的90%~95%。在緩存數(shù)據(jù)時,將數(shù)據(jù)塊小于或等于第一閾值的常用特征數(shù)據(jù)緩存至第一緩存資源池,將數(shù)據(jù)塊大于第一閾值的非常用特征數(shù)據(jù)緩存至第二緩存資源池。
步驟s104,判斷所述第一緩存資源池的已用緩存區(qū)21中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù)。
上步查詢第一緩存資源池的目的在于,確定第一緩存資源池的已用緩存區(qū)中是否存在與待緩存數(shù)據(jù)相匹的歷史數(shù)據(jù),即判斷待緩存數(shù)據(jù)是否是新數(shù)據(jù)。
步驟s105,如果所述第一緩存資源池內(nèi)不存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),對所述待緩存數(shù)據(jù)標(biāo)記時間戳。
第一緩存資源池內(nèi)不存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),即說明待緩存數(shù)據(jù)是新數(shù)據(jù)。對所述待緩存數(shù)據(jù)標(biāo)記時間戳,使得所緩存的數(shù)據(jù)具有時間屬性。
步驟s106,將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū)22。
第一緩存資源池2包括空閑緩存區(qū)22和已用緩存區(qū)21,待緩存數(shù)據(jù)是常用特征數(shù)據(jù),并且是新資源,則直接將該數(shù)據(jù)緩存至第一緩存資源池。
步驟s107,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值。
例如,待緩存數(shù)據(jù)的數(shù)據(jù)塊大于8k,說明待緩存數(shù)據(jù)是非常用特征數(shù)據(jù),再判斷非常用特征數(shù)據(jù)的數(shù)據(jù)塊大小,以決定后續(xù)對該非常用特征數(shù)據(jù)的具體處理方法。
步驟s108,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,但小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池3,所述第二緩存資源池3的空間配額小于所述第一緩存資源池2的空間配額。
例如,如果待緩存數(shù)據(jù)的數(shù)據(jù)塊大于8k,小于32k,使用第二緩存資源池緩存該數(shù)據(jù)。本方法可將有限的緩存資源盡量分給常用特征數(shù)據(jù),從而提升常用特征數(shù)據(jù)的緩存使用率,減少常用特征數(shù)據(jù)的下刷率,提升其緩存命中率,從而達到提升固態(tài)硬盤性能的目的。
請參閱圖1和圖3,本申請第二實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,與第一實施例的不同之處在于,將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū)之后,包括:
步驟s109,判斷所述空閑緩存區(qū)的緩存資源是否小于預(yù)設(shè)資源閾值。
本實施例中,第一緩存資源池采用的數(shù)據(jù)下刷原則為資源受限原則,又可稱為水位控制原則,即在空閑緩存區(qū)的緩存資源小于預(yù)設(shè)資源閾值,即空閑緩存區(qū)的緩存資源低于下刷淘汰水位時,將所述第一緩存資源池的已用緩存區(qū)中的數(shù)據(jù),下刷至nand-flash存儲介質(zhì),及時釋放第一緩存資源池的資源。
步驟s110,如果所述空閑緩存區(qū)的緩存資源小于預(yù)設(shè)資源閾值,將所述第一緩存資源池的已用緩存區(qū)中時間戳最遠的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
根據(jù)已用緩存區(qū)中的數(shù)據(jù)的時間屬性,選擇最早最老數(shù)據(jù)11進行下刷,實現(xiàn)第一緩存資源池中資源的釋放。
請參閱圖1和圖4,本申請第三實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,與第一實施例的不同之處在于,判斷所述第一緩存資源池的已用緩存區(qū)中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù)之后,包括:
步驟s111,如果所述第一緩存資源池的已用緩存區(qū)中存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的已用緩存區(qū),覆蓋與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),同時刷新緩存數(shù)據(jù)時間戳。
第一緩存資源池的已用緩存區(qū)中存在與待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),即說明待緩存數(shù)據(jù)不是新數(shù)據(jù),此時利用待緩存數(shù)據(jù)覆蓋與所述待緩存數(shù)據(jù)重復(fù)的歷史數(shù)據(jù),將待緩存數(shù)據(jù)緩存至所述第一緩存資源池的已用緩存區(qū),減少資源的占用。
請參閱圖1和圖5,本申請第三實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,與第一實施例的不同之處在于,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值之后,包括:
步驟s112,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第二閾值,將所述待緩存數(shù)據(jù)寫入nand-flash存儲介質(zhì)。
例如,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于32k,則不使用緩存資源緩沖該數(shù)據(jù),而是直接將其下刷至nand-flash存儲介質(zhì),減少對緩存資源的占用。
請參閱圖1和圖6,本申請第三實施例提供一種固態(tài)硬盤數(shù)據(jù)緩存方法,與第一實施例的不同之處在于,如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池,所述第二緩存資源池的空間配額小于所述第一緩存資源池的空間配額之后,包括:
步驟s113,判斷所述第二緩存資源池內(nèi)是否寫滿一個閃存頁。
該步驟中,是否寫滿一個閃存頁,即指是否寫滿一個flashdiepage。
其中,nand-flash存儲介質(zhì)內(nèi)部分為chip、die、plane、block、page。chip是指芯片,一個封裝好的芯片就是一個chip。
die是晶圓上的小方塊,一個芯片里可能封裝若干個die,由于nand-flash的工藝不同,由此產(chǎn)生了die的概念,常見的有monodie、adie、bdie等,一個chip包含n個die。
plane是nand-flash能夠根據(jù)讀、寫、擦除等命令進行操作的最小單位。一個plane就是一個存儲矩陣,一個die包含多個plane,一個plane包含若干個block。
block是nand-flash的最小擦除單位,一個block包含了若干個page。page是nand-flash的最小讀寫單位,一個page包含若干個byte。每個plane內(nèi)處于同一地址的page組合稱為flashdiepage。
步驟s114,如果所述第二緩存資源池內(nèi)寫滿一個閃存頁,將所述第二緩存資源池內(nèi)的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)4。
本實施例中,針對非常用特征數(shù)據(jù),采用及時下刷原則,即新寫入第二緩存資源池的非常用特征數(shù)據(jù)寫滿一個flashdiepage大小,立即對多余數(shù)據(jù)12進行下刷,下刷后立即釋放第二緩存資源池資源。
由以上技術(shù)方案可知,本申請實施例提供的一種固態(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ù)的下刷率,提升其緩存命中率,從而達到提升固態(tài)硬盤性能的目的。
請參閱圖7,為本申請實施例提供的一種固態(tài)硬盤數(shù)據(jù)緩存裝置的第一實施例,包括:
檢測單元71,用于檢測待緩存數(shù)據(jù)的數(shù)據(jù)塊大小。
第一判斷單元72,用于判斷所述數(shù)據(jù)塊大小是否小于或等于第一閾值。
查詢單元73,用于如果所述數(shù)據(jù)塊小于或等于第一閾值,查詢第一緩存資源池。
第二判斷單元74,用于判斷所述第一緩存資源池的已用緩存區(qū)中是否存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù)。
標(biāo)記單元75,用于如果所述第一緩存資源池內(nèi)不存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),對所述待緩存數(shù)據(jù)標(biāo)記時間戳。
第一緩存單元76,用于將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的空閑緩存區(qū)。
第三判斷單元77,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第一閾值,判斷所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大小是否小于或者等于第二閾值。
第二緩存單元78,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊小于或者等于第二閾值,將所述待緩存數(shù)據(jù)緩存至第二緩存資源池,所述第二緩存資源池的空間配額小于所述第一緩存資源池的空間配額。
請參閱圖8,為本申請實施例提供的一種固態(tài)硬盤數(shù)據(jù)緩存裝置的第二實施例,所述裝置還包括:
第四判斷單元79,用于判斷所述空閑緩存區(qū)的緩存資源是否小于預(yù)設(shè)資源閾值。
下刷單元80,用于如果所述空閑緩存區(qū)的緩存資源小于預(yù)設(shè)資源閾值,將所述第一緩存資源池的已用緩存區(qū)中時間戳最遠的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
請參閱圖9,為本申請實施例提供的一種固態(tài)硬盤數(shù)據(jù)緩存裝置的第三實施例,所述裝置還包括:
第三緩存單元81,用于如果所述第一緩存資源池的已用緩存區(qū)中存在與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),將所述待緩存數(shù)據(jù)緩存至所述第一緩存資源池的已用緩存區(qū),覆蓋與所述待緩存數(shù)據(jù)相匹配的歷史數(shù)據(jù),同時刷新緩存數(shù)據(jù)時間戳。
請參閱圖10,為本申請實施例提供的一種固態(tài)硬盤數(shù)據(jù)緩存裝置的第四實施例,所述裝置還包括:
寫入單元82,用于如果所述待緩存數(shù)據(jù)的數(shù)據(jù)塊大于第二閾值,將所述待緩存數(shù)據(jù)寫入nand-flash存儲介質(zhì)。
請參閱圖11,為本申請實施例提供的一種固態(tài)硬盤數(shù)據(jù)緩存裝置的第五實施例,所述裝置還包括:
第五判斷單元83,用于判斷所述第二緩存資源池內(nèi)是否寫滿一個閃存頁。
第二下刷單元84,用于如果所述第二緩存資源池內(nèi)寫滿一個閃存頁,將所述第二緩存資源池內(nèi)的數(shù)據(jù)下刷至nand-flash存儲介質(zhì)。
具體實現(xiàn)中,本申請還提供一種計算機存儲介質(zhì),其中,該計算機存儲介質(zhì)可存儲有程序,該程序執(zhí)行時可包括本發(fā)明提供的固態(tài)硬盤數(shù)據(jù)緩存方法的各實施例中的部分或全部步驟。所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(英文:read-onlymemory,簡稱:rom)或隨機存儲記憶體(英文:randomaccessmemory,簡稱:ram)等。
本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實施例中的技術(shù)可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明實施例中的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的。
本說明書中各個實施例之間相同相似的部分互相參見即可。尤其,對于固態(tài)硬盤數(shù)據(jù)緩存裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見實施例中的說明即可。
以上所述的本申請實施方式并不構(gòu)成對本申請保護范圍的限定。