緩存方法及裝置制造方法
【專利摘要】本發(fā)明提供一種緩存方法及裝置,方法包括:根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度;若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。通過本發(fā)明提供的緩存方法及裝置,能夠?qū)崿F(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
【專利說明】緩存方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種緩存方法及裝置。
【背景技術(shù)】
[0002]當(dāng)前,為了在提供大容量內(nèi)存的同時,有效降低內(nèi)存功耗,數(shù)據(jù)中心通常使用變相存儲器(Phase-change memory,簡稱PRAM)和動態(tài)隨機存取存儲器(Dynamic RandomAccess Memory,簡稱DRAM)共同構(gòu)建內(nèi)存系統(tǒng)。具體的,PRAM與DRAM共同構(gòu)建的內(nèi)存系統(tǒng)的結(jié)構(gòu)通常為垂直混合結(jié)構(gòu)。具體的,在垂直混合結(jié)構(gòu)中,DRAM作為PRAM的緩存,可以將PRAM中被訪問的內(nèi)存頁緩存至所述DRAM中為該內(nèi)存頁預(yù)先映射的緩存塊中。對于一個緩存塊來說,該緩存塊中緩存的內(nèi)存頁的熱度越高,則緩存塊的緩存效率和效果越高。
[0003]具體的,DRAM與PRAM的映射方法通常采用組相聯(lián)的方法,即內(nèi)存頁在DRAM中映射的緩存塊是確定的。因此,在上述方案中可能存在內(nèi)存頁分布過于集中的情形,例如,單個緩存塊對應(yīng)多個內(nèi)存頁的情形。對此,現(xiàn)有的緩存方案為,若某個需要被緩存的內(nèi)存頁,其當(dāng)前映射的緩存塊中沒有空閑的緩存空間,則將該緩存塊當(dāng)前緩存的內(nèi)存頁替換為當(dāng)前需要被緩存的內(nèi)存頁。
[0004]但是,在上述緩存方案中,存在被替換的內(nèi)存頁的熱度反而可能高于被緩存的內(nèi)存頁的熱度的現(xiàn)象,而這就會導(dǎo)致該緩存塊的緩存的效率降低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種緩存方法及裝置,用于解決現(xiàn)有的緩存方案中,因內(nèi)存頁分布過于集中導(dǎo)致的緩存塊的緩存效率降低的問題。
[0006]第一方面,本發(fā)明提供一種緩存方法,包括:根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度;若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0007]根據(jù)第一方面,在第一方面的第一種可實施方式中,所述檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,包括:檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁;所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,包括:若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0008]根據(jù)第一方面的第一種可實施方式,在第一方面的第二種可實施方式中,所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁之后,還包括:若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊;再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
[0009]根據(jù)第一方面或第一方面的前兩種可實施方式之一,在第一方面的第三種可實施方式中,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,還包括:返回執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前已緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
[0010]根據(jù)第一方面或第一方面的前三種可實施方式之一,在第一方面的第四種可實施方式中,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,包括:若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0011]根據(jù)第一方面或第一方面的前四種可實施方式之一,在第一方面的第五種可實施方式中,所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,還包括:若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
[0012]根據(jù)第一方面或第一方面的前四種可實施方式之一,在第一方面的第六種可實施方式中,所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,還包括:若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
[0013]根據(jù)第一方面或第一方面的前六種可實施方式之一,在第一方面的第七種可實施方式中,所述確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之前,還包括:根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
[0014]第二方面,本發(fā)明提供一種緩存裝置,包括:獲取模塊,用于根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;檢測模塊,用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度;第一處理模塊,用于若所述各緩存塊中緩存有待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0015]根據(jù)第二方面,在第二方面的第一種可實施方式中,所述檢測模塊,具體用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁;所述第一處理模塊,具體用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0016]根據(jù)第二方面的第一種可實施方式,在第二方面的第二種可實施方式中,所述第一處理模塊,還用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊,并指示所述檢測模塊再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
[0017]根據(jù)第二方面或第二方面的前兩種可實施方式之一,在第二方面的第三種可實施方式中,所述第一處理模塊,還用于在將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,指示所述獲取模塊執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前已緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
[0018]根據(jù)第二方面或第二方面的前三種可實施方式之一,在第二方面的第四種可實施方式中,所述第一處理模塊,具體用于若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0019]根據(jù)第二方面或第二方面的前四種可實施方式之一,在第二方面的第五種可實施方式中,所述裝置還包括:第二處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前的所述待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
[0020]根據(jù)第二方面或第二方面的前四種可實施方式之一,在第二方面的第六種可實施方式中,所述裝置還包括:第三處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
[0021 ] 根據(jù)第二方面或第二方面的前六種可實施方式之一,在第二方面的第七種可實施方式中,所述裝置還包括:統(tǒng)計模塊,用于根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
[0022]本發(fā)明提供的緩存方法及裝置,通過確定熱度最高且未被緩存的待分配內(nèi)存頁后,若各緩存塊中不存在空閑的緩存空間,則將已緩存的熱度低于所述待分配內(nèi)存頁的熱度的待替換內(nèi)存頁替換為所述待分配內(nèi)存頁的技術(shù)方案,實現(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
【專利附圖】
【附圖說明】
[0023]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0024]圖1為本發(fā)明實施例一提供的一種緩存方法的流程示意圖;
[0025]圖2為本發(fā)明實施例二提供的另一種緩存方法的流程示意圖;
[0026]圖3為本發(fā)明實施例三提供的又一種緩存方法的流程示意圖;
[0027]圖4為本發(fā)明實施例四提供的一種緩存裝置的結(jié)構(gòu)示意圖;
[0028]圖5為本發(fā)明實施例五提供的另一種緩存裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0030]圖1為本發(fā)明實施例一提供的一種緩存方法的流程示意圖,如圖1所示,所述方法包括:
[0031]101、根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁。
[0032]具體的,在101之前,所述方法還可以包括:根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
[0033]在實際應(yīng)用中,所述內(nèi)存頁的熱度可以為,在所述預(yù)設(shè)周期內(nèi)所述內(nèi)存頁的讀次數(shù)和/或?qū)懘螖?shù)。具體的,所述各內(nèi)存頁的熱度可以記錄在熱度表中,進一步具體的,可以通過內(nèi)存控制器(Memory Controller)統(tǒng)計系統(tǒng)中各內(nèi)存頁的頁面讀寫情況,從而根據(jù)所述頁面讀寫情況建立并維護所述熱度表。
[0034]102、若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度。
[0035]可選的,在101之后,若當(dāng)前的各緩存塊中存在空閑的緩存空間,則在101之后,還可以包括:
[0036]若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
[0037]可選的,在101之后,還可以包括:
[0038]若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
[0039]其中,頁面遷移的具體方法在此不再贅述。并且通過上述兩種實施方式,可以在存在有空閑的緩存空間的情況下,實現(xiàn)對所述待分配內(nèi)存頁進行緩存。
[0040]103、若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0041]其中,102中所述檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,具體可以包括:檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁;
[0042]則相應(yīng)的,103中所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,具體可以包括:若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0043]在上述實施方式中,在102之后,除103之外,可能存在的另一種場景為,所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度,則在102之后,還可以包括:
[0044]若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊;
[0045]再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
[0046]具體的,通過上述實施方式,當(dāng)待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁時,則將所述待分配內(nèi)存頁通過頁面遷移映射至另一緩存塊,并在頁面遷移后,再次檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中有沒有所述待替換內(nèi)存頁的方案,在避免降低緩存塊緩存效率的同時,提高緩存的可靠性。
[0047]可選的,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,具體可以包括:若存在一個所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0048]可選的,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,具體還可以包括:若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0049]本實施方式,通過存在多個待替換內(nèi)存頁時,則選取其中熱度最低的內(nèi)存頁與待分配內(nèi)存頁進行替換的方案,能夠有效提高緩存塊的緩存效率。
[0050]本實施例提供的緩存方法,通過確定熱度最高且未被緩存的待分配內(nèi)存頁后,若各緩存塊中不存在空閑的緩存空間,則將已緩存的熱度低于所述待分配內(nèi)存頁的熱度的待替換內(nèi)存頁替換為所述待分配內(nèi)存頁的技術(shù)方案,實現(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
[0051]圖2為本發(fā)明實施例二提供的另一種緩存方法的流程示意圖,如圖2所示,根據(jù)實施例一所述的緩存方法,在103之后,還可以包括:
[0052]201、返回執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前被緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
[0053]具體的,在本實施例中,當(dāng)完成對某個待分配內(nèi)存頁的緩存后,則再次確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁,并通過實施例一中的相關(guān)方法對重新確定的當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁進行緩存,以此循環(huán),直至當(dāng)前被緩存的內(nèi)存頁的熱度均不低于當(dāng)前未被緩存的內(nèi)存頁的熱度。
[0054]進一步具體的,確定某個內(nèi)存頁是否已被緩存的具體方法可以包括多種,具體舉例來說,在緩存該內(nèi)存頁之后,則可以在所述熱度表中為該內(nèi)存頁添加已緩存標(biāo)識,則相應(yīng)的,未攜帶所述已緩存標(biāo)識的內(nèi)存頁則為當(dāng)前未被緩存的內(nèi)存頁,本實施例不對其進行限制。
[0055]本實施例提供的緩存方法,通過在緩存某個待分配內(nèi)存頁之后,再次確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁,并通過本實施例提供的緩存方法進行緩存的方案,使得被緩存的內(nèi)存頁的熱度均不低于未被緩存的內(nèi)存頁的熱度,避免各緩存塊的緩存效率的降低,有效保證了整體緩存塊的緩存效率。
[0056]圖3為本發(fā)明實施例三提供的又一種緩存方法的流程示意圖,如圖3所示,所述方法包括:
[0057]301、根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;
[0058]302、判斷當(dāng)前被緩存的內(nèi)存頁的熱度是否均不小于所述待分配內(nèi)存頁的熱度,若是則結(jié)束,若否則執(zhí)行303;
[0059]303、檢測當(dāng)前各緩存塊中是否存在空閑的緩存空間,若是,則執(zhí)行304,否則執(zhí)行305 ;
[0060]304、將所述待分配內(nèi)存頁緩存至所述空閑的緩存空間;
[0061]305、檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁,若是,則執(zhí)行306,否則執(zhí)行307 ;
[0062]306、若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁,并返回執(zhí)行301 ;
[0063]307、通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊,并返回執(zhí)行305。
[0064]本實施例提供的緩存方法,通過確定熱度最高且未被緩存的待分配內(nèi)存頁后,若各緩存塊中不存在空閑的緩存空間,則將已緩存的熱度最低且低于所述待分配內(nèi)存頁的熱度的待替換內(nèi)存頁替換為所述待分配內(nèi)存頁的技術(shù)方案,實現(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
[0065]圖4為本發(fā)明實施例四提供的一種緩存裝置的結(jié)構(gòu)示意圖,如圖4所示,所述裝置包括:獲取模塊41、檢測模塊42和第一處理模塊43 ;其中,
[0066]獲取模塊41,用于根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;
[0067]檢測模塊42,用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度;
[0068]第一處理模塊43,用于若所述各緩存塊中緩存有待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0069]具體的,在101之前,所述方法還可以包括:根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
[0070]再具體的,在確定所述待分配內(nèi)存頁后,若當(dāng)前的各緩存塊中存在空閑的緩存空間,則所述裝置還可以包括:
[0071]第二處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前的所述待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
[0072]可選的,所述裝置還可以包括:
[0073]第三處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
[0074]通過上述兩種實施方式,可以在當(dāng)前各緩存塊中存在空閑的緩存空間的情況下,實現(xiàn)對所述待分配內(nèi)存頁進行緩存。
[0075]其中,檢測模塊42,可以具體用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁;
[0076]則相應(yīng)的,第一處理模塊43,可以具體用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0077]對應(yīng)的,在上述實施方式中,若檢測模塊42檢測到所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度,則第一處理模塊43,還用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊,并指示檢測模塊42再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
[0078]通過上述實施方式,在避免降低緩存塊緩存效率的同時,提高緩存的可靠性。
[0079]進一步的,第一處理模塊43,可以具體用于若存在一個所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0080]第一處理模塊43,還可以具體用于若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。通過本實施方式能夠有效提高緩存塊的緩存效率。
[0081]可選的,在上述任一實施方式中,第一處理模塊43,還用于在將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,指示獲取模塊41執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前被緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
[0082]具體的,在本實施例中,當(dāng)?shù)谝惶幚砟K43完成對某個待分配內(nèi)存頁的緩存后,則指示獲取模塊41再次確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁,并對重新確定的當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁進行緩存,以此循環(huán),直至當(dāng)前被緩存的內(nèi)存頁的熱度均不低于當(dāng)前未被緩存的內(nèi)存頁的熱度。
[0083]本實施例提供的緩存裝置,通過確定熱度最高且未被緩存的待分配內(nèi)存頁后,若各緩存塊中不存在空閑的緩存空間,則將已緩存的熱度低于所述待分配內(nèi)存頁的熱度的待替換內(nèi)存頁替換為所述待分配內(nèi)存頁的技術(shù)方案,實現(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
[0084]圖5為本發(fā)明實施例五提供的另一種緩存裝置的結(jié)構(gòu)示意圖,如圖5所示,所述裝置包括:
[0085]存儲器51,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機操作指令。存儲器51可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
[0086]處理器52,執(zhí)行存儲器51存放的程序,以用于:根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度;若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0087]具體的,處理器52,可以用于根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁;若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁;若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0088]可選的,基于存儲器51存放的程序,在上述實施方式中,處理器52,還用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊;再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
[0089]其中,處理器52可能是一個中央處理器(Central Processing Unit,簡稱為CPU),或者是特定集成電路(Applicat1n Specific Integrated Circuit,簡稱為 ASIC),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0090]可選的,基于存儲器51存放的程序,在上述任一實施方式中,處理器52,還用于在將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,返回執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前被緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
[0091]可選的,處理器52,具體用于若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
[0092]可選的,基于存儲器51存放的程序,在上述任一實施方式中,
[0093]處理器52,還用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊;或者,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
[0094]通過本實施方式能夠在緩存塊存在空閑的緩存空間時,實現(xiàn)對待分配內(nèi)存頁的緩存。
[0095]具體的,基于存儲器51存放的程序,在上述任一實施方式中,處理器52還用于根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
[0096]可選的,所述裝置還可以包括:通信接口 53,用于獲取所述各內(nèi)存頁的熱度。在具體實現(xiàn)上,如果存儲器51、處理器52和通信接口 53獨立實現(xiàn),則存儲器51、處理器52和通信接口 53可以通過總線相互連接并完成相互間的通信。所述總線可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture,簡稱為 ISA)總線、外部設(shè)備互連(PeripheralComponent,簡稱為PCI)總線或擴展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry StandardArchitecture,簡稱為EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖5中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0097]本實施例提供的緩存裝置,通過確定熱度最高且未被緩存的待分配內(nèi)存頁后,若各緩存塊中不存在空閑的緩存空間,則將已緩存的熱度低于所述待分配內(nèi)存頁的熱度的待替換內(nèi)存頁替換為所述待分配內(nèi)存頁的技術(shù)方案,實現(xiàn)對高熱度內(nèi)存頁的緩存,避免降低緩存塊的緩存效率。
[0098]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0099]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0100]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種緩存方法,其特征在于,包括: 根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁; 若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度; 若是,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,包括: 檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁; 所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,包括: 若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁之后,還包括: 若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊; 再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
4.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,還包括: 返回執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前已緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
5.根據(jù)權(quán)利要求1-4中任一項所述的方法,其特征在于,所述將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁,包括: 若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
6.根據(jù)權(quán)利要求1-5中任一項所述的方法,其特征在于,所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,還包括: 若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
7.根據(jù)權(quán)利要求1-5中任一項所述的方法,其特征在于,所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,還包括: 若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
8.根據(jù)權(quán)利要求1-7中任一項所述的方法,其特征在于,所述確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之前,還包括: 根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
9.一種緩存裝置,其特征在于,包括: 獲取模塊,用于根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁; 檢測模塊,用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述各緩存塊中是否緩存有待替換內(nèi)存頁,所述待替換內(nèi)存頁的熱度低于所述待分配內(nèi)存頁的熱度; 第一處理模塊,用于若所述各緩存塊中緩存有待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述檢測模塊,具體用于若當(dāng)前各緩存塊中沒有空閑的緩存空間,則檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有所述待替換內(nèi)存頁; 所述第一處理模塊,具體用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中緩存有所述待替換內(nèi)存頁,則將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述第一處理模塊,還用于若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中未緩存有所述待替換內(nèi)存頁,則通過頁面遷移將所述待分配內(nèi)存頁映射至另一緩存塊,并指示所述檢測模塊再次執(zhí)行所述檢測所述待分配內(nèi)存頁當(dāng)前映射的緩存塊中是否緩存有待替換內(nèi)存頁的步驟。
12.根據(jù)權(quán)利要求9-11任一項所述的裝置,其特征在于, 所述第一處理模塊,還用于在將所述待替換內(nèi)存頁替換為所述待分配內(nèi)存頁之后,指示所述獲取模塊執(zhí)行所述根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁的步驟,直至當(dāng)前已緩存的內(nèi)存頁的熱度均不低于所述待分配內(nèi)存頁的熱度。
13.根據(jù)權(quán)利要求9-12中任一項所述的裝置,其特征在于, 所述第一處理模塊,具體用于若所述待替換內(nèi)存頁有多個,則將所述待替換內(nèi)存頁中熱度最低的內(nèi)存頁替換為所述待分配內(nèi)存頁。
14.根據(jù)權(quán)利要求9-13中任一項所述的裝置,其特征在于,所述裝置還包括: 第二處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前的所述待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊存在空閑的緩存空間,則將所述待分配內(nèi)存頁緩存至所述待分配內(nèi)存頁當(dāng)前映射的緩存塊。
15.根據(jù)權(quán)利要求9-13中任一項所述的裝置,其特征在于,所述裝置還包括:第三處理模塊,用于在根據(jù)各內(nèi)存頁的熱度,確定當(dāng)前熱度最高且未被緩存的待分配內(nèi)存頁之后,若所述待分配內(nèi)存頁當(dāng)前映射的緩存塊不存在空閑的緩存空間,且其它緩存塊中存在空閑的緩存空間,則通過頁面遷移將所述待分配內(nèi)存頁映射至所述空閑的緩存空間所屬的緩存塊,并緩存。
16.根據(jù)權(quán)利要求9-15中任一項所述的裝置,其特征在于,所述裝置還包括: 統(tǒng)計模塊,用于根據(jù)預(yù)設(shè)周期,定時統(tǒng)計并更新所述各內(nèi)存頁的熱度。
【文檔編號】G06F12/08GK104252421SQ201310257056
【公開日】2014年12月31日 申請日期:2013年6月25日 優(yōu)先權(quán)日:2013年6月25日
【發(fā)明者】董建波, 張樂樂, 李花芳, 侯銳 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所