一種Cache的分配方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于高速緩存領(lǐng)域,尤其涉及一種Cache的分配方法和裝置。
【背景技術(shù)】
[0002]隨著現(xiàn)代化電子設(shè)備對(duì)處理器性能的要求越來越高,使得優(yōu)化處理器的內(nèi)部結(jié)構(gòu)變得越來越重要。為了提高處理器的運(yùn)行效率,減少處理器訪問主存的時(shí)間,在處理器與主存之間引入了高速緩存存儲(chǔ)器(Cache)。通過將處理器使用次數(shù)較多數(shù)據(jù)暫時(shí)存儲(chǔ)放在Cache,由于Cache的讀寫速度比主存要高得多,接近于處理器的速度,從而對(duì)于提高處理器的效率有極其重要的效果。
[0003]通過引入Cache,使得處理器可以更高效率的獲取數(shù)據(jù),能夠提高處理器的運(yùn)算效率。然而,由于Cache的容量遠(yuǎn)遠(yuǎn)小于主存的容量,而在Cache中只能存放主存的一部分?jǐn)?shù)據(jù),使得Cache與主存間需要建立一定的映射關(guān)系,在處理器訪問主存前,會(huì)先在Cache中確定是否有數(shù)據(jù)命中,如果不命中則需要訪問主存。因此,要盡可能減少Cache中的數(shù)據(jù)缺失,從而提高處理器獲取數(shù)據(jù)的速度。
[0004]目前使用較多的Cache與主存間的映射方式為路組關(guān)聯(lián)映射策略,將Cache按照與主存相同行大小劃分多個(gè)大小相同的存儲(chǔ)組,一行主存中的數(shù)據(jù)只能存儲(chǔ)到固定的幾個(gè)Cache存儲(chǔ)組中,但可存儲(chǔ)在存儲(chǔ)組內(nèi)任意的Cache行中,由于處理器處理不同的程序的數(shù)據(jù)時(shí),對(duì)主存的訪問不是均勻的,容易造成Cache中的一部分?jǐn)?shù)據(jù)經(jīng)常被替換,而某些部分的數(shù)據(jù)卻很少訪問,不利于增加Cache的命中率和提高處理器的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種Cache的分配方法,以解決現(xiàn)有技術(shù)由于處理器處理不同的程序的數(shù)據(jù)時(shí),對(duì)主存的訪問不均勻,容易造成Cache中的一部分?jǐn)?shù)據(jù)經(jīng)常被替換,而某些部分的數(shù)據(jù)很少訪問的問題,從而增加Cache的命中率和提高處理器的性能。
[0006]本發(fā)明的實(shí)現(xiàn)方法如下:一種Cache的分配方法,將Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,所述存儲(chǔ)組中包括數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)、地址標(biāo)簽存儲(chǔ)區(qū)和寄存器組區(qū),所述寄存器組區(qū)包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器,所述方法包括:
[0007]獲取所述Cache缺失率寄存器所記錄的進(jìn)程號(hào)的Cache缺失率;
[0008]判斷所述進(jìn)程號(hào)的Cache缺失率是否高于預(yù)設(shè)的Cache缺失率閾值;
[0009]如果所述進(jìn)程號(hào)的Cache缺失率高于預(yù)設(shè)的Cache缺失率閾值,調(diào)整Cache組標(biāo)記寄存器、進(jìn)程號(hào)寄存器增加所述進(jìn)程號(hào)對(duì)應(yīng)存儲(chǔ)組。
[0010]本發(fā)明的另一目的在于提供一種Cache的分配裝置,其特征在于,Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,所述存儲(chǔ)組中包括數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)、地址標(biāo)簽存儲(chǔ)區(qū)和寄存器組區(qū),所述寄存器組區(qū)包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器,所述裝置包括:
[0011]獲取單元,用于獲取所述Cache缺失率寄存器所記錄的進(jìn)程號(hào)的Cache缺失率;
[0012]判斷單元,用于判斷所述進(jìn)程號(hào)的Cache缺失率是否高于預(yù)設(shè)的Cache缺失率閾值;
[0013]第一調(diào)整單元,用于如果所述進(jìn)程號(hào)的Cache缺失率高于預(yù)設(shè)的Cache缺失率閾值,調(diào)整Cache組標(biāo)記寄存器、進(jìn)程號(hào)寄存器增加所述進(jìn)程號(hào)對(duì)應(yīng)存儲(chǔ)組。
[0014]在本發(fā)明中,Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,在每個(gè)存儲(chǔ)組中包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器,通過由Cache缺失率寄存器所記錄的進(jìn)程號(hào)的Cache缺失率,判斷所述進(jìn)程號(hào)的Cache缺失率是否高于預(yù)設(shè)的Cache缺失率閾值,如果所述進(jìn)程號(hào)的Cache缺失率高于預(yù)設(shè)的Cache缺失率閾值,調(diào)整Cache組標(biāo)記寄存器、進(jìn)程號(hào)寄存器增加所述進(jìn)程號(hào)對(duì)應(yīng)存儲(chǔ)組。本發(fā)明通過基于硬件內(nèi)部進(jìn)程號(hào)來識(shí)別不同的進(jìn)程,根據(jù)每個(gè)進(jìn)程的缺失率分配Cache空間的大小,可以有效減少同一個(gè)進(jìn)程的數(shù)據(jù)因存放在無序的不同的組內(nèi)而被經(jīng)常替換的情況;其次,本發(fā)明通過在硬件內(nèi)部設(shè)置寄存器組區(qū),通過硬件內(nèi)部寄存器組區(qū)數(shù)據(jù)來調(diào)整每個(gè)進(jìn)程的Cache的大小,相對(duì)于軟件根據(jù)應(yīng)用程序來調(diào)整Cache的方法響應(yīng)更加及時(shí),調(diào)整效率更高。
【附圖說明】
[0015]圖1是本發(fā)明第一實(shí)施例提供Cache存儲(chǔ)器的數(shù)據(jù)劃分示意圖;
[0016]圖2是本發(fā)明第一實(shí)施例提供的Cache的分配方法的實(shí)現(xiàn)流程圖;
[0017]圖3是本發(fā)明第二實(shí)施例提供的Cache的分配方法的實(shí)現(xiàn)流程圖;
[0018]圖4是本發(fā)明第三實(shí)施例提供的Cache的分配裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]本發(fā)明實(shí)施例中所述Cache缺失率,是指處理器讀取指令或者數(shù)據(jù)時(shí),數(shù)據(jù)未能在Cache中命中的概率。本發(fā)明實(shí)施例所述處理器在處理實(shí)際程序時(shí),處理器內(nèi)部按照硬件內(nèi)部進(jìn)程號(hào)轉(zhuǎn)換進(jìn)程號(hào)的有效地址為實(shí)際地址,其中,所述硬件內(nèi)部進(jìn)程號(hào)可用于讀取指令與數(shù)據(jù)存儲(chǔ),與主存中實(shí)際運(yùn)行的程序的地址存在對(duì)應(yīng)關(guān)系。由于一個(gè)應(yīng)用程序往往會(huì)占用一個(gè)或者幾個(gè)硬件內(nèi)部進(jìn)程號(hào),通過硬件內(nèi)部進(jìn)程號(hào)為整體來調(diào)整其占用Cache的資源,可以有效減少同一個(gè)進(jìn)程的數(shù)據(jù)因放置在無序的不同的組內(nèi)而被經(jīng)常替換的情況。本發(fā)明所述Cache的分配方法,Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,所述存儲(chǔ)組中包括數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)、地址標(biāo)簽存儲(chǔ)區(qū)和寄存器組區(qū),所述寄存器組區(qū)包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器,所述方法包括:
[0021]獲取所述Cache缺失率寄存器所記錄的進(jìn)程號(hào)的Cache缺失率;
[0022]判斷所述進(jìn)程號(hào)的Cache缺失率是否高于預(yù)設(shè)的Cache缺失率閾值;
[0023]如果所述進(jìn)程號(hào)的Cache缺失率高于預(yù)設(shè)的Cache缺失率閾值,調(diào)整Cache組標(biāo)記寄存器、進(jìn)程號(hào)寄存器增加所述進(jìn)程號(hào)對(duì)應(yīng)存儲(chǔ)組。
[0024]Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,在每個(gè)存儲(chǔ)組中包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器,由Cache缺失率寄存器所記錄的進(jìn)程號(hào)的Cache缺失率,判斷所述進(jìn)程號(hào)的Cache缺失率是否高于預(yù)設(shè)的Cache缺失率閾值,如果所述進(jìn)程號(hào)的Cache缺失率高于預(yù)設(shè)的Cache缺失率閾值,調(diào)整Cache組標(biāo)記寄存器、進(jìn)程號(hào)寄存器增加所述進(jìn)程號(hào)對(duì)應(yīng)存儲(chǔ)組。本發(fā)明通過基于硬件內(nèi)部進(jìn)程號(hào)來識(shí)別不同的進(jìn)程,根據(jù)每個(gè)進(jìn)程的缺失率分配Cache空間的大小,可以有效減少同一個(gè)進(jìn)程的數(shù)據(jù)因存放在無序的不同的組內(nèi)而被經(jīng)常替換的情況;其次,本發(fā)明通過在硬件內(nèi)部設(shè)置寄存器組區(qū),通過硬件內(nèi)部寄存器組區(qū)數(shù)據(jù)來調(diào)整每個(gè)進(jìn)程的Cache的大小,相對(duì)于軟件根據(jù)應(yīng)用程序來調(diào)整Cache的方法響應(yīng)更加及時(shí),調(diào)整效率更高。
[0025]實(shí)施例一:
[0026]在本發(fā)明實(shí)施例中,Cache存儲(chǔ)器包括若干個(gè)大小相同的存儲(chǔ)組,所述存儲(chǔ)組中包括數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)、地址標(biāo)簽存儲(chǔ)區(qū)和寄存器組區(qū),所述寄存器組區(qū)包括處理器進(jìn)程號(hào)寄存器、Cache缺失率寄存器和Cache組標(biāo)記寄存器。
[0027]如圖1所示,將Cache存儲(chǔ)器分成數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)、地址標(biāo)簽存儲(chǔ)區(qū)和相應(yīng)的三個(gè)寄存器組區(qū),其中,數(shù)據(jù)及狀態(tài)存儲(chǔ)區(qū)用于存儲(chǔ)數(shù)據(jù)與存儲(chǔ)器狀態(tài),地址標(biāo)簽存儲(chǔ)區(qū)用于地址的命中比較,三個(gè)寄存器定義如下:
[0028]I)處理器進(jìn)程號(hào)寄存器:用于存儲(chǔ)當(dāng)前Cache的存儲(chǔ)組的處理器進(jìn)程號(hào),用于區(qū)分不同的進(jìn)程的標(biāo)記。
[0029]2) Cache缺失率寄存器:實(shí)時(shí)記錄當(dāng)前存儲(chǔ)組的Cache缺失率值,可用于計(jì)算當(dāng)前進(jìn)程對(duì)應(yīng)多個(gè)存儲(chǔ)組時(shí)的平均C