用于移除緩存數(shù)據(jù)的方法和設(shè)備的制作方法
【專利摘要】本發(fā)明的實(shí)施方式提供了一種用于移除緩存數(shù)據(jù)的方法和設(shè)備。所述方法包括:確定多個(gè)分鏈表的活躍度;根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序。所述方法還包括:當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)所述排序的結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。通過本發(fā)明的實(shí)施方式,可以采用每個(gè)分鏈表的活躍度來(lái)整體衡量每個(gè)分鏈表所包括的緩存數(shù)據(jù)的訪問熱度,在移除時(shí)能夠移除整個(gè)系統(tǒng)中訪問熱度較低的緩存數(shù)據(jù)并且保留整個(gè)系統(tǒng)中訪問熱度較高的緩存數(shù)據(jù),從而提高了系統(tǒng)的讀寫速率。
【專利說(shuō)明】用于移除緩存數(shù)據(jù)的方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施方式總體涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,更具體地,涉及用于移除緩存數(shù)據(jù)的方法和設(shè)備。
【背景技術(shù)】
[0002]在計(jì)算機(jī)領(lǐng)域中,通常為設(shè)備配備一定的存儲(chǔ)裝置來(lái)存儲(chǔ)操作過程中所需的數(shù)據(jù)。相對(duì)于傳統(tǒng)的硬盤來(lái)說(shuō),閃存盤具有較高讀寫速率,并且通過閃存盤陣列技術(shù)能夠提供高達(dá)TB級(jí)別的存儲(chǔ)容量,因此其具有更廣泛的應(yīng)用。在使用閃存盤的過程中,通常會(huì)把多個(gè)磁盤分區(qū)的常用數(shù)據(jù)放入緩存區(qū),以便于下次快速訪問這些數(shù)據(jù)。
[0003]由于閃存盤的存儲(chǔ)容量大,緩存數(shù)據(jù)通常也較多。在存儲(chǔ)緩存數(shù)據(jù)時(shí),可以根據(jù)多個(gè)磁盤分區(qū)生成多個(gè)分鏈表,每個(gè)分鏈表包括其對(duì)應(yīng)的磁盤分區(qū)的緩存數(shù)據(jù),并且每個(gè)分鏈表包括的緩存數(shù)據(jù)按照其訪問熱度排序放置。當(dāng)分鏈表中的某個(gè)緩存數(shù)據(jù)最近被訪問時(shí),例如,對(duì)該緩存數(shù)據(jù)進(jìn)行讀取、寫入、移除、替換等操作時(shí),該緩存數(shù)據(jù)的訪問熱度最高,其排序位置也最靠前。由于系統(tǒng)的常用數(shù)據(jù)通常是不斷變化的,而緩存區(qū)的容量有限并且即使斷電也不會(huì)自動(dòng)釋放數(shù)據(jù),因此,需要不斷地移除緩存數(shù)據(jù),以便于提高閃存盤的讀寫速率。
[0004]當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),常規(guī)的移除緩存數(shù)據(jù)的方法是:按照循環(huán)的方式依次從每個(gè)分鏈表中移除排序最靠后的一個(gè)緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0005]然而,現(xiàn)有的技術(shù)方案存在一定的缺陷。由于無(wú)法知道整個(gè)緩存區(qū)中訪問熱度較低的緩存數(shù)據(jù),只能簡(jiǎn)單地循環(huán)移除每個(gè)分鏈表中排序較靠后的緩存數(shù)據(jù)。這將會(huì)導(dǎo)致對(duì)于活躍度較高的分鏈表,例如包括較多的相對(duì)于其他分鏈表來(lái)說(shuō)被更頻繁訪問的緩存數(shù)據(jù)的分鏈表,可能會(huì)移除該分鏈表所包括的在整個(gè)緩存區(qū)中訪問度較高的緩存數(shù)據(jù);而對(duì)于活躍度較低的分鏈表,卻并未移除其包括的訪問熱度較低的緩存數(shù)據(jù),從而使得閃存盤的讀寫速率較低。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的多種實(shí)施方式提供了一種用于移除緩存數(shù)據(jù)的方法和設(shè)備。
[0007]根據(jù)本發(fā)明的第一方面,提供了一種用于移除緩存數(shù)據(jù)的方法。所述方法包括:確定多個(gè)分鏈表的活躍度;根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序。所述方法還包括:當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序的結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0008]根據(jù)本發(fā)明的可選實(shí)施方式,其中確定多個(gè)分鏈表的活躍度包括:確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間;其中根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序包括:根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序。
[0009]根據(jù)本發(fā)明的可選實(shí)施方式,其中最近整體訪問時(shí)間戳的初始值為初始化每個(gè)分鏈表的時(shí)間。
[0010]根據(jù)本發(fā)明的可選實(shí)施方式,其中根據(jù)排序的結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)包括:從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,其中第一可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第一可移除數(shù)量的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0011]根據(jù)本發(fā)明的可選實(shí)施方式,其中確定多個(gè)分鏈表的活躍度包括:在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量;其中根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序包括:根據(jù)確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)多個(gè)分鏈表進(jìn)行排序。
[0012]根據(jù)本發(fā)明的可選實(shí)施方式,其中每個(gè)分鏈表對(duì)應(yīng)一個(gè)定位指針,在預(yù)定時(shí)間間隔的初始時(shí)刻定位指針指向每個(gè)分鏈表中排序最靠前的緩存數(shù)據(jù),其中在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量包括:針對(duì)預(yù)定時(shí)間間隔,確定定位指針?biāo)赶虻木彺鏀?shù)據(jù)在每個(gè)分鏈表中所處的排序位置;以及將每個(gè)分鏈表中從位于確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。
[0013]根據(jù)本發(fā)明的可選實(shí)施方式,其中根據(jù)排序的結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)包括:從排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0014]根據(jù)本發(fā)明的可選實(shí)施方式,其中循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù)包括:按照循環(huán)的方式每次移除每個(gè)分鏈表中排序最靠后的至少一個(gè)未被訪問的緩存數(shù)據(jù)。
[0015]根據(jù)本發(fā)明的可選實(shí)施方式,其中在多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于預(yù)定數(shù)量時(shí),進(jìn)一步包括:
[0016]確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間;根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序;以及從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0017]根據(jù)本發(fā)明的可選實(shí)施方式,其中從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)包括:從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第二可移除數(shù)量,其中第二可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、剩余移除數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第二可移除數(shù)量的緩存數(shù)據(jù),直至移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0018]根據(jù)本發(fā)明的另一方面,提供了一種用于移除緩存數(shù)據(jù)的設(shè)備。所述設(shè)備包括:確定裝置,用于確定多個(gè)分鏈表的活躍度;排序裝置,用于根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序。所述設(shè)備還包括:移除裝置,用于當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0019]根據(jù)本發(fā)明的可選實(shí)施方式,其中確定裝置還用于確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間;其中排序裝置還用于根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序。
[0020]根據(jù)本發(fā)明的可選實(shí)施方式,其中最近整體訪問時(shí)間戳的初始值為初始化每個(gè)分鏈表的時(shí)間。
[0021]根據(jù)本發(fā)明的可選實(shí)施方式,其中移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,其中第一可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第一可移除數(shù)量的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0022]根據(jù)本發(fā)明的可選實(shí)施方式,其中確定裝置還用于在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量;其中排序裝置還用于根據(jù)確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)多個(gè)分鏈表進(jìn)行排序。
[0023]根據(jù)本發(fā)明的可選實(shí)施方式,其中每個(gè)分鏈表對(duì)應(yīng)一個(gè)定位指針,在預(yù)定時(shí)間間隔的初始時(shí)刻定位指針指向每個(gè)分鏈表中排序最靠前的緩存數(shù)據(jù),其中確定裝置還用于針對(duì)預(yù)定時(shí)間間隔,確定定位指針?biāo)赶虻木彺鏀?shù)據(jù)在每個(gè)分鏈表中所處的排序位置;以及將每個(gè)分鏈表中從位于確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。
[0024]根據(jù)本發(fā)明的可選實(shí)施方式,其中移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0025]根據(jù)本發(fā)明的可選實(shí)施方式,其中移除裝置還用于按照循環(huán)的方式每次移除每個(gè)分鏈表中排序最靠后的至少一個(gè)未被訪問的緩存數(shù)據(jù)。
[0026]根據(jù)本發(fā)明的可選實(shí)施方式,其中在多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于預(yù)定數(shù)量時(shí),移除裝置進(jìn)一步包括:時(shí)間戳確定裝置,用于確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,其中最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間;時(shí)間戳排序裝置,用于根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序;以及剩余移除裝置,用于從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0027]根據(jù)本發(fā)明的可選實(shí)施方式,其中剩余移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第二可移除數(shù)量,其中第二可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、剩余移除數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第二可移除數(shù)量的緩存數(shù)據(jù),直至移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0028]根據(jù)本發(fā)明的另一方面,提供了一種設(shè)備,包括至少一個(gè)處理器以及包含計(jì)算機(jī)程序代碼的至少一個(gè)存儲(chǔ)器;處理器以及存儲(chǔ)器配置用于利用處理器,使得所述設(shè)備至少執(zhí)行:確定多個(gè)分鏈表的活躍度;根據(jù)確定的活躍度對(duì)多個(gè)分鏈表進(jìn)行排序;以及當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序后的分鏈表移除預(yù)定數(shù)量的緩存數(shù)據(jù);其中每個(gè)分鏈表包括每個(gè)分鏈表對(duì)應(yīng)的磁盤分區(qū)的緩存數(shù)據(jù),并且每個(gè)分鏈表包括的緩存數(shù)據(jù)按照緩存數(shù)據(jù)的訪問熱度排序放置。
[0029]利用根據(jù)本發(fā)明多個(gè)方面和實(shí)施方式的方法和設(shè)備,可以采用每個(gè)分鏈表的活躍度來(lái)整體衡量每個(gè)分鏈表所包括的緩存數(shù)據(jù)的訪問熱度,在移除時(shí)能夠移除整個(gè)系統(tǒng)中訪問熱度較低的緩存數(shù)據(jù)并且保留整個(gè)系統(tǒng)中訪問熱度較高的緩存數(shù)據(jù),從而提高了系統(tǒng)的讀寫速率。
【專利附圖】
【附圖說(shuō)明】
[0030]圖1示出了根據(jù)本發(fā)明的實(shí)施方式的用于移除緩存數(shù)據(jù)的方法100的流程圖;
[0031]圖2A和2B示出了根據(jù)本發(fā)明的實(shí)施方式的一種用于實(shí)施圖1的方法100的步驟SlOl和S102的實(shí)現(xiàn)方式的示意圖;
[0032]圖3A和3B示出了根據(jù)本發(fā)明的實(shí)施方式的另一種用于實(shí)施圖1的方法100的步驟SlOl和S102的實(shí)現(xiàn)方式的示意圖;
[0033]圖3C示出了根據(jù)本發(fā)明的實(shí)施方式的一種用于實(shí)施圖1的方法100的步驟S103的實(shí)現(xiàn)方式的示意圖;
[0034]圖4示出了根據(jù)本發(fā)明的實(shí)施方式的用于移除緩存數(shù)據(jù)的設(shè)備400的框圖;以及
[0035]圖5示出了適于用來(lái)實(shí)踐本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)的示意性框圖。
[0036]應(yīng)當(dāng)注意,附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(shí)施方式的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)裝置、程序段、或代碼的一部分,所述裝置、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
【具體實(shí)施方式】
[0037]下面將參考附圖中示出的若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,描述這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。
[0038]可以理解的是,雖然本公開的內(nèi)容示例性地給出可以有效地移除閃存盤或者閃存盤陣列的緩存數(shù)據(jù),但對(duì)于其他存儲(chǔ)裝置的緩存數(shù)據(jù)也可以同樣有效地移除,其他存儲(chǔ)裝置例如硬盤等。
[0039]圖1示出了根據(jù)本發(fā)明的實(shí)施方式的用于移除緩存數(shù)據(jù)的方法100的流程圖。應(yīng)理解的是,方法100中記載的各個(gè)步驟可以按照不同的順序執(zhí)行,和/或并行執(zhí)行。方法100還可以包括附加的步驟和/或省略執(zhí)行示出的步驟。本發(fā)明的范圍在此方面不受限制。
[0040]方法100開始之后,在步驟SlOl處,確定多個(gè)分鏈表的活躍度。多個(gè)分鏈表的活躍度可以從整體上反應(yīng)出每個(gè)分鏈表包括的所有緩存數(shù)據(jù)的訪問熱度。
[0041]接下來(lái),方法100行進(jìn)到步驟S102,根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序。
[0042]接下來(lái),方法100行進(jìn)到步驟S103,當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序的結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。其中,預(yù)定閾值可以是緩存區(qū)的容量上限,也可以是根據(jù)實(shí)際情況定義的容量值。預(yù)定數(shù)量與系統(tǒng)當(dāng)前操作情況有關(guān)聯(lián),當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),如果需要向緩存區(qū)存入較多的緩存數(shù)據(jù),則預(yù)定數(shù)量較大,如果需要存入的緩存數(shù)據(jù)較小,則預(yù)定數(shù)量較小,本發(fā)明的實(shí)施方式不對(duì)預(yù)定數(shù)量的大小進(jìn)行限制。
[0043]根據(jù)本發(fā)明的一個(gè)實(shí)施方式,步驟SlOl還可以包括確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,其中最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間。每個(gè)緩存數(shù)據(jù)被訪問,可以是每個(gè)緩存數(shù)據(jù)被讀取、寫入、移除、被其他緩存數(shù)據(jù)替換等等。
[0044]參照?qǐng)D2A,其中示出了確定多個(gè)分鏈表中的一個(gè)分鏈表的最近整體訪問時(shí)間戳的一種實(shí)現(xiàn)方式。
[0045]在圖2A中,具體步驟包括:(I)首先為該分鏈表設(shè)置一個(gè)時(shí)間戳指針。在初始時(shí)亥IJ,例如系統(tǒng)啟動(dòng)并且從閃存盤中重新載入緩存數(shù)據(jù)時(shí),時(shí)間戳指針指向分鏈表中當(dāng)前排序最靠前的緩存數(shù)據(jù),此時(shí),最近整體訪問時(shí)間戳Timestamp=NULL。(2)在系統(tǒng)的操作過程中,不斷有緩存數(shù)據(jù)被訪問,最新被訪問的緩存數(shù)據(jù)移動(dòng)到分鏈表中排序最靠前的位置,時(shí)間戳指針?biāo)赶虻木彺鏀?shù)據(jù)不斷向下移動(dòng)。(3)當(dāng)時(shí)間戳指針?biāo)赶虻木彺鏀?shù)據(jù)移動(dòng)到分鏈表中排序最靠后的位置時(shí),說(shuō)明此時(shí)分鏈表包括的所有緩存數(shù)據(jù)均被訪問,將當(dāng)前時(shí)間確定為該分鏈表的最近整體訪問時(shí)間戳,即Timestamp=timel (當(dāng)前時(shí)間)。(4)之后,時(shí)間戳指針改變?yōu)橹赶蛟摲宙湵碇挟?dāng)前排序最靠前的緩存數(shù)據(jù),并且返回步驟(2),繼續(xù)記錄該分鏈表的下一個(gè)最近整體訪問時(shí)間戳。
[0046]對(duì)于每個(gè)分鏈表,均可以采用圖2A中所示的實(shí)現(xiàn)方式確定其最近整體訪問時(shí)間戳。應(yīng)該知道,除了圖2A中所示的實(shí)現(xiàn)方式之外,還可以有其他實(shí)現(xiàn)方式來(lái)確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,本發(fā)明的實(shí)施方式對(duì)此不進(jìn)行具體限定。
[0047]為了防止在后續(xù)對(duì)多個(gè)分鏈表進(jìn)行排序時(shí),某個(gè)分鏈表包括的所有緩存數(shù)據(jù)沒有均被訪問,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,最近整體訪問時(shí)間戳的初始值為初始化每個(gè)分鏈表的時(shí)間。根據(jù)本發(fā)明的備選實(shí)施方式,最近整體訪問時(shí)間戳的初始值還可以是多個(gè)分鏈表中每個(gè)分鏈表包括的所有緩存數(shù)據(jù)沒有均被訪問之前的任意時(shí)間。
[0048]在確定了每個(gè)分鏈表的最近整體訪問時(shí)間戳之后,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,方法100的步驟S102還可以包括根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序。其中,如果一個(gè)分鏈表的最近整體訪問時(shí)間戳較大,也即較為接近進(jìn)行排序時(shí)的當(dāng)前時(shí)間,則說(shuō)明該分鏈表的活躍度較高,排序的位置也較為靠前;反之,如果一個(gè)分鏈表的最近整體訪問時(shí)間戳較小,則說(shuō)明該分鏈表的活躍度較低。
[0049]進(jìn)一步地,還可以將排序后的多個(gè)分鏈表以雙向鏈表的形式鏈接,以便于后續(xù)訪問多個(gè)分鏈表所包括的緩存數(shù)據(jù)。
[0050]例如,參照?qǐng)D2B,其中給出了 4個(gè)分鏈表,分別為L(zhǎng)ist_l、List_2、List_3和List_4,它們的最近整體訪問時(shí)間戳分別為time_l、time_2、time_3和time_4,其中,time_4 > time_l > time_2 > time_3。因此,在根據(jù)確定的最近整體訪問時(shí)間戳對(duì)這4個(gè)分鏈表進(jìn)行排序,并且將排序后的分鏈表以雙向鏈表的形式鏈接之后,得到如圖2B所示的排序結(jié)果。
[0051]根據(jù)本發(fā)明的一個(gè)實(shí)施方式,方法100的步驟S103還可以包括從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,其中第一可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第一可移除數(shù)量的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0052]其中,每個(gè)分鏈表的第一可移除數(shù)量與分鏈表的數(shù)量和每個(gè)分鏈表所處的排序位置有關(guān)聯(lián)。對(duì)于活躍度較高的分鏈表所包括的緩存數(shù)據(jù),它們相比較于活躍度較低的分鏈表所包括的緩存數(shù)據(jù),在后續(xù)系統(tǒng)操作過程中被訪問的概率更高。因此,在移除緩存數(shù)據(jù)時(shí),可以在活躍度較高的分鏈表中移除較少數(shù)量的緩存數(shù)據(jù),而在活躍度較低的分鏈表中移除較多數(shù)量的緩存數(shù)據(jù),從而使得緩存區(qū)中依然存儲(chǔ)被訪問概率較高的緩存數(shù)據(jù),提高了閃存盤的讀寫速率。
[0053]此外,每個(gè)分鏈表的第一可移除數(shù)量還與預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián)。在移除緩存數(shù)據(jù)時(shí),通常從排序后的分鏈表中排序最靠后的分鏈表開始移除,之后按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,并且從該分鏈表中移除第一可移除數(shù)量的緩存數(shù)據(jù)。在按照升序的方式循環(huán)時(shí),對(duì)于當(dāng)前循環(huán)到的分鏈表,當(dāng)前已移除數(shù)量為之前循環(huán)到的分鏈表的第一可移除數(shù)量之和。
[0054]應(yīng)當(dāng)指出的是,在第一次循環(huán)完畢多個(gè)分鏈表之后,可能還未移除出預(yù)定數(shù)量的緩存數(shù)據(jù),此時(shí)可以從排序最靠后的分鏈表開始繼續(xù)循環(huán)地移除,直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)為止。此外,在移除每個(gè)分鏈表的第一可移除數(shù)量的緩存數(shù)據(jù)時(shí),可以從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第一可移除數(shù)量的緩存數(shù)據(jù)。因?yàn)槊總€(gè)分鏈表中排序較為靠后的緩存數(shù)據(jù)相較于排序較為靠前的緩存數(shù)據(jù)來(lái)說(shuō),是訪問熱度較低的數(shù)據(jù),將其移除后對(duì)閃存盤的讀寫速率造成影響的概率較小。
[0055]需要注意的是,本發(fā)明的實(shí)施方式不限定于具體如何根據(jù)分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量來(lái)確定每個(gè)分鏈表的第一可移除數(shù)量,并且第一可移除數(shù)量可能僅與上述四個(gè)參數(shù)中的一個(gè)或多個(gè)相關(guān)聯(lián),只需要保證計(jì)算得到的每個(gè)分鏈表的第一可移除數(shù)量與每個(gè)分鏈表的排序位置的大小成正比例的關(guān)系,即分鏈表的排序位置越靠后,其對(duì)應(yīng)的第一可移除數(shù)量越大。
[0056]上述介紹了一種根據(jù)每個(gè)分鏈表的最近整體訪問時(shí)間戳對(duì)多個(gè)分鏈表進(jìn)行排序并且移除預(yù)定數(shù)量的緩存數(shù)據(jù)的實(shí)現(xiàn)方式。根據(jù)本發(fā)明的另一實(shí)施方式,方法100的步驟SlOl還可以包括在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量。其中,預(yù)定時(shí)間間隔可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,例如,可以設(shè)置為I小時(shí)、2個(gè)小時(shí)、24小時(shí)等等,本發(fā)明的實(shí)施方式對(duì)此不進(jìn)行具體限定。在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)是指在預(yù)定時(shí)間間隔內(nèi)未被讀取、寫入、移除、被其他緩存數(shù)據(jù)替換等等的緩存數(shù)據(jù)。
[0057]根據(jù)本發(fā)明的一個(gè)實(shí)施方式,其中每個(gè)分鏈表對(duì)應(yīng)一個(gè)定位指針,在預(yù)定時(shí)間間隔的初始時(shí)刻定位指針指向每個(gè)分鏈表中排序最靠前的緩存數(shù)據(jù)。其中在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量包括:針對(duì)預(yù)定時(shí)間間隔,確定定位指針?biāo)赶虻木彺鏀?shù)據(jù)在每個(gè)分鏈表中所處的排序位置;以及將每個(gè)分鏈表中從位于確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。
[0058]參照?qǐng)D3A,其中不出了在多個(gè)分鏈表中的一個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量的一種實(shí)現(xiàn)方式。
[0059]在圖3A中,實(shí)線指針為定位指針,虛線指針為移動(dòng)指針,用于輔助定位指針的定位。具體步驟包括:(1)在初始時(shí)刻,例如系統(tǒng)啟動(dòng)并且從閃存盤中重新載入緩存數(shù)據(jù)時(shí),移動(dòng)指針指向分鏈表中當(dāng)前排序最靠前的緩存數(shù)據(jù),此時(shí),該分鏈表未被訪問的緩存數(shù)據(jù)的數(shù)量為初始值零。(2)在系統(tǒng)的操作過程中,不斷有緩存數(shù)據(jù)被訪問,最新被訪問的緩存數(shù)據(jù)移動(dòng)到分鏈表中排序最靠前的位置,移動(dòng)指針?biāo)赶虻木彺鏀?shù)據(jù)不斷向下移動(dòng)。(3)當(dāng)經(jīng)過預(yù)定時(shí)間間隔后,定位指針指向移動(dòng)指針?biāo)赶虻木彺鏀?shù)據(jù),確定定位指針?biāo)赶虻木彺鏀?shù)據(jù)在分鏈表中的排序位置,并且將分鏈表中從位于確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。例如,如圖3A所示,確定的未被訪問的緩存數(shù)據(jù)的數(shù)量為4。(4)之后,定位指針?biāo)赶虻奈恢貌蛔?,移?dòng)指針改變?yōu)橹赶蛟摲宙湵碇挟?dāng)前排序最靠前的緩存數(shù)據(jù),并且返回步驟(2),繼續(xù)確定針對(duì)下一個(gè)預(yù)定時(shí)間間隔確定該分鏈表的未被訪問的緩存數(shù)據(jù)的數(shù)量。
[0060]對(duì)于每個(gè)分鏈表,均可以采用圖3A中所示的實(shí)現(xiàn)方式來(lái)確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量。
[0061]除了圖3A所示的實(shí)現(xiàn)方式之外,根據(jù)本發(fā)明備選的實(shí)施方式,在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量時(shí),還可以僅采用定位指針。具體是,用定位指針取代上述移動(dòng)指針進(jìn)行移動(dòng),并且在上述步驟(3)時(shí),將從定位指針?biāo)赶虻呐判蛭恢玫木彺鏀?shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量,并記錄確定的未被訪問的緩存數(shù)據(jù)的數(shù)量。之后,在步驟(4),定位指針繼續(xù)變化為指向分鏈表中當(dāng)前排序最靠前的緩存數(shù)據(jù)。
[0062]應(yīng)該知道,本發(fā)明的實(shí)施方式不限于所示例的用于在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量的實(shí)現(xiàn)方式。
[0063]在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量之后,方法100的步驟S102還可以包括根據(jù)確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)多個(gè)分鏈表進(jìn)行排序。其中,如果在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量較大,則說(shuō)明該分鏈表的活躍度較低,排序的位置也較為靠后;反之,如果在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量較小,則說(shuō)明該分鏈表的活躍度較高,排序的位置也較為靠前。
[0064]進(jìn)一步地,還可以將排序后的多個(gè)分鏈表以雙向鏈表的形式鏈接,以便于后續(xù)訪問多個(gè)分鏈表所包括的緩存數(shù)據(jù)。
[0065]例如,參照?qǐng)D3B,其中給出了 4個(gè)分鏈表,分別為L(zhǎng)ist_l、List_2、List_3和List_4,它們?cè)陬A(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量分別為1、4、2和0,在圖中用黑色方塊代表未被訪問的緩存數(shù)據(jù)。因此,在根據(jù)確定的未被訪問的緩存數(shù)據(jù)的數(shù)量對(duì)多個(gè)分鏈表進(jìn)行排序,并且將排序后的分鏈表以雙向鏈表的形式鏈接之后,得到如圖3B所示的排序結(jié)果。
[0066]在根據(jù)確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)多個(gè)分鏈表進(jìn)行排序之后根據(jù)本發(fā)明的一個(gè)實(shí)施方式,方法100的步驟S103還可以包括從排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0067]由于每個(gè)分鏈表中在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)是該分鏈表中訪問熱度較低的緩存數(shù)據(jù),在后續(xù)系統(tǒng)操作過程中再次被訪問的概率較低,因此可以在將這些緩存數(shù)據(jù)移除掉時(shí),對(duì)閃存盤的讀寫速率造成影響的概率較小。
[0068]根據(jù)本發(fā)明的又一實(shí)施方式,其中循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù)包括:按照循環(huán)的方式每次移除每個(gè)分鏈表中排序最靠后的至少一個(gè)未被訪問的緩存數(shù)據(jù)。根據(jù)本發(fā)明的備選實(shí)施方式,還可以按照循環(huán)的方式任意移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù)。根據(jù)本發(fā)明的備選實(shí)施方式,還可以從排序最靠后的分鏈表開始,按照升序的方式移除每個(gè)分鏈表包括的所有未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0069]如果多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)之和小于等于預(yù)定數(shù)量,在按照升序的方式循環(huán)移除每個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)后,可以移除預(yù)定數(shù)量的緩存數(shù)據(jù)。如果多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于預(yù)定數(shù)量,在移除完畢多個(gè)分鏈表包括的所有未被訪問的緩存數(shù)據(jù)之后,還剩余一些數(shù)量的緩存數(shù)據(jù)未被移除,剩余移除數(shù)量的大小為預(yù)定數(shù)量與多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和之間的差值。
[0070]根據(jù)本發(fā)明的一種實(shí)施方式,在多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于預(yù)定數(shù)量時(shí),步驟S103進(jìn)一步包括確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,其中最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間;根據(jù)確定的最近整體訪問時(shí)間戳,對(duì)多個(gè)分鏈表進(jìn)行排序;以及從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0071]根據(jù)本發(fā)明的又一實(shí)施方式,其中從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)包括:從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第二可移除數(shù)量,其中第二可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、剩余移除數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除確定的第二可移除數(shù)量的緩存數(shù)據(jù),直至移除剩余移除數(shù)量的緩存數(shù)據(jù)。
[0072]可以知道,上述從多個(gè)分鏈表中移除剩余移除數(shù)量的緩存數(shù)據(jù)的方式與前述根據(jù)最近整體訪問時(shí)間戳來(lái)實(shí)現(xiàn)方法100的步驟101至103的實(shí)現(xiàn)方式相同,在此不進(jìn)行贅述。應(yīng)該注意的是,在排序后的分鏈表中當(dāng)前已移除數(shù)量是指在移除剩余移除數(shù)量的緩存數(shù)據(jù)的過程中的當(dāng)前已移除數(shù)量。
[0073]例如,參照?qǐng)D3C,其中4個(gè)分鏈表中在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量之和為7,預(yù)定數(shù)量為8。首先根據(jù)圖3B中所示的排序結(jié)果,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)。其中,序號(hào)1、2.......7所標(biāo)示的緩存數(shù)據(jù)為在循環(huán)的過程中先后被移除的緩存數(shù)據(jù)。在移除掉7個(gè)緩存數(shù)據(jù)后,為了進(jìn)一步移除剩余的I個(gè)緩存數(shù)據(jù),可以根據(jù)這4個(gè)分鏈表的最近整體訪問時(shí)間戳對(duì)它們進(jìn)行排序,排序結(jié)果可以仍如圖2B所示。因此,根據(jù)前述公開的實(shí)施方式,可以從排序最靠后的分鏈表List3中移除I個(gè)排序最靠后的緩存數(shù)據(jù)。
[0074]根據(jù)本發(fā)明的實(shí)施方式,首先根據(jù)每個(gè)分鏈表中在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量來(lái)移除緩存數(shù)據(jù);當(dāng)未被訪問的緩存數(shù)據(jù)小于預(yù)定數(shù)量時(shí),再根據(jù)每個(gè)分鏈表的最近整體訪問時(shí)間戳來(lái)移除緩存數(shù)據(jù),從而保證了移除的緩存數(shù)據(jù)是整體來(lái)說(shuō)訪問熱度較低的,并且在將這些緩存數(shù)據(jù)移除之后對(duì)閃存盤的讀寫速率造成影響的概率較低。其中,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,根據(jù)每個(gè)分鏈表中在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量對(duì)多個(gè)分鏈表進(jìn)行排序以及根據(jù)每個(gè)分鏈表的最近整體訪問時(shí)間戳來(lái)對(duì)多個(gè)分鏈表進(jìn)行排序可以并行執(zhí)行。
[0075]根據(jù)本發(fā)明的備選實(shí)施方式,在多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于預(yù)定數(shù)量時(shí),還可以從按照在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量排序后的分鏈表中排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)緩存數(shù)據(jù),直至移除剩余移除數(shù)量的緩存數(shù)據(jù)。其中,每次從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除至少一個(gè)緩存數(shù)據(jù)。
[0076]根據(jù)本發(fā)明的又一實(shí)施方式,還可以直接從按照在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量排序后的分鏈表中排序最靠后的分鏈表里移除剩余移除數(shù)量的緩存數(shù)據(jù)。其中,可以從該分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。或者,從任意一個(gè)或多個(gè)分鏈表中移除至少一個(gè)緩存數(shù)據(jù),直至移除剩余移除數(shù)量的緩存數(shù)據(jù)。其中,每次從分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除至少一個(gè)緩存數(shù)據(jù)。
[0077]需要注意的是,因?yàn)橄到y(tǒng)操作過程中需要緩存的數(shù)據(jù)是不斷變化的,緩存區(qū)的容量有限,本發(fā)明的實(shí)施方式所提供的方法可以重復(fù)地使用,不斷移除訪問熱度較低的緩存數(shù)據(jù),以便于將新的緩存數(shù)據(jù)存儲(chǔ)在緩存區(qū)中。
[0078]在實(shí)現(xiàn)本發(fā)明的實(shí)施方式的過程中,上述提供的按照最近整體訪問時(shí)間戳排序分鏈表并移除緩存數(shù)據(jù)的第一種方式和按照預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量排序分鏈表并移除緩存數(shù)據(jù)的第二種方式可以交叉使用。
[0079]根據(jù)本發(fā)明的實(shí)施方式,可以在按照第一種方式移除一定數(shù)量的緩存數(shù)據(jù)之后,再按照第二種方式移除剩余數(shù)量的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。根據(jù)本發(fā)明的另一實(shí)施方式,還可以在按照第二種方式移除一定數(shù)量的緩存數(shù)據(jù)之后,再按照第一種方式移除剩余數(shù)量的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。根據(jù)本發(fā)明的實(shí)施方式,還可以按照第二種方式所提供的排序方法對(duì)多個(gè)分鏈表進(jìn)行排序,并按照第一種方式所提供的移除方法確定每個(gè)分鏈表中可移除的緩存數(shù)據(jù)的數(shù)量,從而達(dá)到從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0080]上文已經(jīng)結(jié)合若干【具體實(shí)施方式】闡釋了本發(fā)明的精神和原理。通過上述本發(fā)明的多種實(shí)施方式,可以采用每個(gè)分鏈表的活躍度來(lái)整體衡量每個(gè)分鏈表所包括的緩存數(shù)據(jù)的訪問熱度,在移除時(shí)能夠移除整個(gè)系統(tǒng)中訪問熱度較低的緩存數(shù)據(jù)并且保留整個(gè)系統(tǒng)中訪問熱度較高的緩存數(shù)據(jù),從而提高了系統(tǒng)的讀寫速率。并且,根據(jù)每個(gè)分鏈表的活躍度可以保證在活躍度較高的分鏈表中移除的緩存數(shù)據(jù)的數(shù)量較小而在活躍度較低的分鏈表中移除的緩存數(shù)據(jù)的數(shù)量較多,兼顧了每個(gè)分鏈表的公平性以及活躍度。
[0081]圖4示出了根據(jù)本發(fā)明的實(shí)施方式的用于移除緩存數(shù)據(jù)的設(shè)備400的框圖。如圖4中所示,設(shè)備400包括確定裝置401,用于確定多個(gè)分鏈表的活躍度;排序裝置402,用于根據(jù)確定的多個(gè)分鏈表的活躍度,對(duì)多個(gè)分鏈表進(jìn)行排序。設(shè)備400還包括移除裝置403,用于當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序結(jié)果,從多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0082]可以看出,圖4的設(shè)備400可以實(shí)現(xiàn)如圖1中所示的方法,并且盡管未進(jìn)一步示出,設(shè)備400可以包括更多的功能單元以實(shí)現(xiàn)結(jié)合圖1的方法100所描述的多個(gè)實(shí)施方式。進(jìn)一步,設(shè)備400可以實(shí)現(xiàn)用每個(gè)分鏈表的活躍度來(lái)整體衡量每個(gè)分鏈表所包括的緩存數(shù)據(jù)的訪問熱度,在移除時(shí)能夠移除整個(gè)系統(tǒng)中訪問熱度較低的緩存數(shù)據(jù)并且保留整個(gè)系統(tǒng)中訪問熱度較高的緩存數(shù)據(jù),從而提高了系統(tǒng)的讀寫速率。
[0083]圖5示出了適于用來(lái)實(shí)踐本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)500的示意性框圖。如圖5所示,計(jì)算機(jī)系統(tǒng)可以包括:CPU (中央處理單元)501、RAM (隨機(jī)存取存儲(chǔ)器)502、ROM (只讀存儲(chǔ)器)503、系統(tǒng)總線504、閃存盤控制器505、鍵盤控制器506、串行接口控制器507、并行接口控制器508、顯示控制器509、閃存盤510、鍵盤511、串行外部設(shè)備512、并行外部設(shè)備515和顯示器514。在這些設(shè)備中,與系統(tǒng)總線504耦合的有CPU501、RAM502、R0M503、閃存盤控制器505、鍵盤控制器506、串行控制器507、并行控制器508和顯示控制器509。閃存盤510與閃存盤控制器505耦合,鍵盤511與鍵盤控制器506耦合,串行外部設(shè)備512與串行接口控制器507耦合,并行外部設(shè)備515與并行接口控制器508耦合,以及顯示器514與顯示控制器509耦合。
[0084]圖5所示的存儲(chǔ)器中的至少一個(gè)存儲(chǔ)器包含計(jì)算機(jī)程序代碼,處理器CPU501以及存儲(chǔ)器被配置用于利用處理器CPU501,使得計(jì)算機(jī)系統(tǒng)500至少執(zhí)行:確定多個(gè)分鏈表的活躍度;根據(jù)確定的活躍度對(duì)多個(gè)分鏈表進(jìn)行排序;以及當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)排序后的分鏈表移除預(yù)定數(shù)量的緩存數(shù)據(jù);其中每個(gè)分鏈表包括每個(gè)分鏈表對(duì)應(yīng)的磁盤分區(qū)的緩存數(shù)據(jù),并且每個(gè)分鏈表包括的緩存數(shù)據(jù)按照緩存數(shù)據(jù)的訪問熱度排序放置。
[0085]應(yīng)當(dāng)理解,圖5所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。
[0086]特別地,除硬件實(shí)施方式之外,本發(fā)明的實(shí)施方式可以通過計(jì)算機(jī)程序產(chǎn)品的形式實(shí)現(xiàn)。例如,參考圖1描述的方法100可以通過計(jì)算機(jī)程序產(chǎn)品來(lái)實(shí)現(xiàn)。該計(jì)算機(jī)程序產(chǎn)品可以存儲(chǔ)在例如圖5所示的RAM502、R0M503、閃存盤510和/或任何適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中,或者通過網(wǎng)絡(luò)從適當(dāng)?shù)奈恢孟螺d到計(jì)算機(jī)系統(tǒng)500上。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)代碼部分,其包括可由適當(dāng)?shù)奶幚碓O(shè)備(例如,圖5中示出的CPU501)執(zhí)行的程序指令。所述程序指令至少可以包括:確定多個(gè)分鏈表的活躍度;根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序;以及當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)所述排序的結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
[0087]應(yīng)當(dāng)注意的是,本發(fā)明的實(shí)施方式可以通過硬件、軟件或者軟件和硬件的結(jié)合來(lái)實(shí)現(xiàn)。硬件部分可以利用專用邏輯來(lái)實(shí)現(xiàn);軟件部分可以存儲(chǔ)在存儲(chǔ)器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計(jì)硬件來(lái)執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的設(shè)備和方法可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來(lái)實(shí)現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲(chǔ)器(固件)的可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設(shè)備及其裝置可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導(dǎo)體、或者諸如現(xiàn)場(chǎng)可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實(shí)現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實(shí)現(xiàn),也可以由上述硬件電路和軟件的結(jié)合例如固件來(lái)實(shí)現(xiàn)。
[0088]應(yīng)當(dāng)注意的是,盡管在上文詳細(xì)描述中提及了設(shè)備的若干裝置或子裝置,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來(lái)具體化。
[0089]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟規(guī)約為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
[0090]雖然已經(jīng)參考若干【具體實(shí)施方式】描述了本發(fā)明,但是應(yīng)該理解,本發(fā)明并不限于所公開的【具體實(shí)施方式】。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。所附權(quán)利要求的范圍符合最寬泛的解釋,從而包含所有這樣的修改及等同結(jié)構(gòu)和功能。
【權(quán)利要求】
1.一種用于移除緩存數(shù)據(jù)的方法,包括: 確定多個(gè)分鏈表的活躍度; 根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序;以及當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)所述排序的結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中確定多個(gè)分鏈表的活躍度包括: 確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,所述最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間; 其中根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序包括: 根據(jù)所述確定的最近整體訪問時(shí)間戳,對(duì)所述多個(gè)分鏈表進(jìn)行排序。
3.根據(jù)權(quán)利要求2所述的方法,其中所述最近整體訪問時(shí)間戳的初始值為初始化每個(gè)分鏈表的時(shí)間。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其中根據(jù)所述排序的結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)包括: 從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,其中所述第一可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及 從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除所述確定的第一可移除數(shù)量的緩存數(shù)據(jù),直至移除所述預(yù)定數(shù)量的緩存數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其中確定多個(gè)分鏈表的活躍度包括: 在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量; 其中根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序包括: 根據(jù)所述確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)所述多個(gè)分鏈表進(jìn)行排序。
6.根據(jù)權(quán)利要求5所述的方法,其中每個(gè)分鏈表對(duì)應(yīng)一個(gè)定位指針,在所述預(yù)定時(shí)間間隔的初始時(shí)刻所述定位指針指向每個(gè)分鏈表中排序最靠前的緩存數(shù)據(jù), 其中在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量包括: 針對(duì)所述預(yù)定時(shí)間間隔,確定所述定位指針?biāo)赶虻木彺鏀?shù)據(jù)在每個(gè)分鏈表中所處的排序位置;以及 將每個(gè)分鏈表中從位于所述確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。
7.根據(jù)權(quán)利要求5或6所述的方法,其中根據(jù)所述排序的結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)包括: 從排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的方法,其中循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù)包括: 按照循環(huán)的方式每次移除每個(gè)分鏈表中排序最靠后的至少一個(gè)未被訪問的緩存數(shù)據(jù)。
9.根據(jù)權(quán)利要求7所述的方法,其中在所述多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于所述預(yù)定數(shù)量時(shí),進(jìn)一步包括: 確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,所述最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間; 根據(jù)所述確定的最近整體訪問時(shí)間戳,對(duì)所述多個(gè)分鏈表進(jìn)行排序;以及 從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其中從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)包括: 從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第二可移除數(shù)量,其中所述第二可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、剩余移除數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及 從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除所述確定的第二可移除數(shù)量的緩存數(shù)據(jù),直至移除所述剩余移除數(shù)量的緩存數(shù)據(jù)。
11.一種用于移除緩存數(shù)據(jù)的設(shè)備,包括: 確定裝置,用于確定多個(gè)分鏈表的活躍度; 排序裝置,用于根據(jù)確定的所述多個(gè)分鏈表的活躍度,對(duì)所述多個(gè)分鏈表進(jìn)行排序;以及 移除裝置,用于當(dāng)緩存區(qū)中已使用的容量達(dá)到預(yù)定閾值時(shí),根據(jù)所述排序結(jié)果,從所述多個(gè)分鏈表中移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述確定裝置還用于確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,所述最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間; 其中所述排序裝置還用于根據(jù)所述確定的最近整體訪問時(shí)間戳,對(duì)所述多個(gè)分鏈表進(jìn)行排序。
13.根據(jù)權(quán)利要求12所述的設(shè)備,其中所述最近整體訪問時(shí)間戳的初始值為初始化每個(gè)分鏈表的時(shí)間。
14.根據(jù)權(quán)利要求11至13中任一項(xiàng)所述的設(shè)備,其中所述移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第一可移除數(shù)量,其中所述第一可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、預(yù)定數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除所述確定的第一可移除數(shù)量的緩存數(shù)據(jù),直至移除所述預(yù)定數(shù)量的緩存數(shù)據(jù)。
15.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述確定裝置還用于在每個(gè)分鏈表中確定在預(yù)定時(shí)間間隔內(nèi)未被訪問的緩存數(shù)據(jù)的數(shù)量; 其中所述排序裝置還用于根據(jù)所述確定的未被訪問的緩存數(shù)據(jù)的數(shù)量,對(duì)所述多個(gè)分鏈表進(jìn)行排序。
16.根據(jù)權(quán)利要求15所述的設(shè)備,其中每個(gè)分鏈表對(duì)應(yīng)一個(gè)定位指針,在所述預(yù)定時(shí)間間隔的初始時(shí)刻所述定位指針指向每個(gè)分鏈表中排序最靠前的緩存數(shù)據(jù), 其中所述確定裝置還用于針對(duì)所述預(yù)定時(shí)間間隔,確定所述定位指針?biāo)赶虻木彺鏀?shù)據(jù)在每個(gè)分鏈表中所處的排序位置;以及將每個(gè)分鏈表中從位于所述確定的排序位置的緩存數(shù)據(jù)到位于排序最靠后的位置的緩存數(shù)據(jù)之間的緩存數(shù)據(jù)的數(shù)量確定為未被訪問的緩存數(shù)據(jù)的數(shù)量。
17.根據(jù)權(quán)利要求15或16所述的設(shè)備,其中所述移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)移除每個(gè)分鏈表包括的至少一個(gè)未被訪問的緩存數(shù)據(jù),直至移除預(yù)定數(shù)量的緩存數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述移除裝置還用于按照循環(huán)的方式每次移除每個(gè)分鏈表中排序最靠后的至少一個(gè)未被訪問的緩存數(shù)據(jù)。
19.根據(jù)權(quán)利要求17所述的設(shè)備,其中在所述多個(gè)分鏈表包括的未被訪問的緩存數(shù)據(jù)的數(shù)量之和小于所述預(yù)定數(shù)量時(shí),所述移除裝置進(jìn)一步包括: 時(shí)間戳確定裝置,用于確定每個(gè)分鏈表的最近整體訪問時(shí)間戳,所述最近整體訪問時(shí)間戳標(biāo)示每個(gè)分鏈表包括的所有緩存數(shù)據(jù)最近一次均被訪問的時(shí)間; 時(shí)間戳排序裝置,用于根據(jù)所述確定的最近整體訪問時(shí)間戳,對(duì)所述多個(gè)分鏈表進(jìn)行排序;以及 剩余移除裝置,用于從排序最靠后的分鏈表開始移除剩余移除數(shù)量的緩存數(shù)據(jù)。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其中所述剩余移除裝置還用于從排序最靠后的分鏈表開始,按照升序的方式循環(huán)確定每個(gè)分鏈表的第二可移除數(shù)量,其中所述第二可移除數(shù)量與分鏈表的數(shù)量、每個(gè)分鏈表所處的排序位置、剩余移除數(shù)量以及在排序后的分鏈表中當(dāng)前已移除數(shù)量相關(guān)聯(lián);以及從每個(gè)分鏈表中排序最靠后的緩存數(shù)據(jù)開始移除所述確定的第二可移除數(shù)量的緩存數(shù)據(jù),直至移除所述剩余移除數(shù)量的緩存數(shù)據(jù)。
【文檔編號(hào)】G06F12/08GK104516828SQ201310466038
【公開日】2015年4月15日 申請(qǐng)日期:2013年9月27日 優(yōu)先權(quán)日:2013年9月27日
【發(fā)明者】徐鑫磊, 吳永軍, 薛雷, 李雄成, 謝鵬 申請(qǐng)人:伊姆西公司