本發(fā)明涉及存儲(chǔ)器領(lǐng)域。更具體地說,本發(fā)明涉及一種通過向下遞減計(jì)數(shù)的方法來統(tǒng)計(jì)Cache結(jié)構(gòu)中數(shù)據(jù)使用次數(shù)的Cache替換算法。
背景技術(shù):
Cache是一種根據(jù)程序局部性原則,通過小容量速度快的存儲(chǔ)器緩存部分?jǐn)?shù)據(jù),以減少處理器對慢速大容量存儲(chǔ)器的訪問次數(shù),從而提升處理器取指效率的機(jī)制。Cache替換算法是指當(dāng)Cache缺失發(fā)生后,Cache按某種機(jī)制選中高速緩存中的某個(gè)地址進(jìn)行數(shù)據(jù)更新。Cache替換算法對Cache的命中率有較大的影響。目前主流的Cache替換算法有偽隨機(jī)、先進(jìn)先出(FIFO——First In First Out)和最近最少使用(LRU——Least Recently Used)等。相較于偽隨機(jī)和先進(jìn)先出算法,LRU算法更符合程序局部性原則(當(dāng)前執(zhí)行的程序代碼,在不久后會(huì)再次訪問該代碼段),Cache的命中率更高,但其硬件資源消耗非常大。
傳統(tǒng)的LRU算法對Cache的每一路進(jìn)行統(tǒng)計(jì),在需要替換時(shí),將最近最少被使用的那一路替換。由于傳統(tǒng)LRU算法的數(shù)據(jù)使用頻率統(tǒng)計(jì)為向上計(jì)數(shù),故其計(jì)數(shù)器計(jì)數(shù)位寬較大,且需要額外的機(jī)制來處理計(jì)數(shù)溢出的情況。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的一個(gè)目的是解決至少上述問題,并提供至少后面將說明的優(yōu)點(diǎn)。
本發(fā)明還有一個(gè)目的是提供硬件資源消耗低的Cache替換算法。
為了實(shí)現(xiàn)根據(jù)本發(fā)明的這些目的和其它優(yōu)點(diǎn),提供了一種Cache替換算法,適用于采用組相聯(lián)映射或全相聯(lián)映射關(guān)系的Cache結(jié)構(gòu)和存儲(chǔ)器,所述Cache結(jié)構(gòu)中設(shè)有用于存儲(chǔ)所述存儲(chǔ)器的數(shù)據(jù)的若干條路,采用向下遞減計(jì)數(shù)的方法統(tǒng)計(jì)Cache結(jié)構(gòu)中每一路的最近最多使用頻率,當(dāng)Cache結(jié)構(gòu)中無所需的存儲(chǔ)器數(shù)據(jù),將計(jì)數(shù)值為0的路中的存儲(chǔ)器的數(shù)據(jù)替換為新數(shù)據(jù)。
本發(fā)明所述的Cache替換算法具體包括以下步驟:
a、當(dāng)所述存儲(chǔ)器的數(shù)據(jù)映射前,對所有所述路從小到大進(jìn)行編號,同時(shí)對每一路增加用于記錄該路使用頻率的計(jì)數(shù)器,所有所述計(jì)數(shù)器的計(jì)數(shù)值由最大值遞減至0;
b、當(dāng)所述存儲(chǔ)器的數(shù)據(jù)映射至計(jì)數(shù)值最大的一路時(shí),所有所述計(jì)數(shù)器的計(jì)數(shù)值不變,當(dāng)所述存儲(chǔ)器數(shù)據(jù)映射至當(dāng)前計(jì)數(shù)值非0且非最大值的一路時(shí),所述當(dāng)前計(jì)數(shù)值變?yōu)樽畲笾?,同時(shí)所有計(jì)數(shù)值大于所述當(dāng)前計(jì)數(shù)值且非0的路中的計(jì)數(shù)值減1;
c、當(dāng)所述Cache結(jié)構(gòu)中無所需的存儲(chǔ)器數(shù)據(jù)時(shí),將計(jì)數(shù)值為0的路中的數(shù)據(jù)替換為所需的數(shù)據(jù),替換后該路的計(jì)數(shù)值變?yōu)樽畲笾?,其它各路的?jì)數(shù)值各自減1。
優(yōu)選地,所述計(jì)數(shù)器的位寬為log2N,其中N為路的個(gè)數(shù)。
優(yōu)選地,所述組相聯(lián)映射的Cache結(jié)構(gòu)設(shè)有若干組,每一組中含有若干路,所述計(jì)數(shù)器的位寬中N為每一組中路的個(gè)數(shù)。本發(fā)明至少包括以下有益效果:
1.硬件實(shí)現(xiàn)簡單,資源消耗減少43%:
2.硬件延時(shí)減少24%,更適合高頻率設(shè)計(jì);
3.Cache命中率與傳統(tǒng)LRU相同,性能無損失。
本發(fā)明的其它優(yōu)點(diǎn)、目標(biāo)和特征將部分通過下面的說明體現(xiàn),部分還將通過對本發(fā)明的研究和實(shí)踐而為本領(lǐng)域的技術(shù)人員所理解。
附圖說明
圖1為本發(fā)明所述Cache算法命中率統(tǒng)計(jì)流程
圖2為全相聯(lián)映射關(guān)系的Cache結(jié)構(gòu);
圖3為組相聯(lián)映射關(guān)系的Cache結(jié)構(gòu)
圖4為本發(fā)明所述Cache替換算法應(yīng)用實(shí)例圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)說明,以令本領(lǐng)域技術(shù)人員參照說明書文字能夠據(jù)以實(shí)施。
需要說明的是,下述實(shí)施方案中所述實(shí)驗(yàn)方法,如無特殊說明,均為常規(guī)方法,所述試劑和材料,如無特殊說明,均可從商業(yè)途徑獲得;在本發(fā)明的描述中,術(shù)語“橫向”、“縱向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,并不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。
本發(fā)明提供一種Cache替換算法,適用于采用組相聯(lián)映射或全相聯(lián)映射關(guān)系的Cache結(jié)構(gòu)和存儲(chǔ)器,所述Cache結(jié)構(gòu)中設(shè)有用于存儲(chǔ)所述存儲(chǔ)器的數(shù)據(jù)的若干條路,采用向下遞減計(jì)數(shù)的方法統(tǒng)計(jì)Cache結(jié)構(gòu)中每一路的最近最多使用頻率,當(dāng)Cache結(jié)構(gòu)中無所需的存儲(chǔ)器數(shù)據(jù),將計(jì)數(shù)值為0的路中的存儲(chǔ)器的數(shù)據(jù)替換為所需的新數(shù)據(jù)。全相聯(lián)映射即存儲(chǔ)器的任何一個(gè)地址可以映射到Cache緩存的任意地址。如圖2所示,存儲(chǔ)器0地址可映射到任意地址。組相聯(lián)映射是是將Cache分為若干“組”(Set),又將“組”分為若干“路”(Way),組間與存儲(chǔ)器進(jìn)行直接映射(即通過Memory的某段地址偏移選定是哪一組),組內(nèi)進(jìn)行全映射。如圖3所示,Cache結(jié)構(gòu)為“2組2路”,存儲(chǔ)器的“塊3”(地址6、7)固定對應(yīng)“組1”(3mod 2=1,2為“組”的總數(shù)),在“組1”中地址6、7可對應(yīng)任何一路。
如圖1所示,本發(fā)明所述的Cache替換算法具體包括以下步驟:
a、當(dāng)所述存儲(chǔ)器的數(shù)據(jù)映射前,對所有所述路從小到大進(jìn)行編號,同時(shí)對每一路增加用于記錄該路使用頻率的計(jì)數(shù)器,所有所述計(jì)數(shù)器的計(jì)數(shù)值由最大值遞減至0;
b、當(dāng)所述存儲(chǔ)器的數(shù)據(jù)映射至計(jì)數(shù)值最大的一路時(shí),所有所述計(jì)數(shù)器的計(jì)數(shù)值不變,當(dāng)所述存儲(chǔ)器數(shù)據(jù)映射至當(dāng)前計(jì)數(shù)值非0且非最大值的一路時(shí),所述當(dāng)前計(jì)數(shù)值變?yōu)樽畲笾?,同時(shí)所有計(jì)數(shù)值大于所述當(dāng)前計(jì)數(shù)值且非0的路中的計(jì)數(shù)值減1;
c、當(dāng)所述Cache結(jié)構(gòu)中無所需的存儲(chǔ)器數(shù)據(jù)時(shí),將計(jì)數(shù)值為0的路中的數(shù)據(jù)替換為所需的數(shù)據(jù),替換后該路的計(jì)數(shù)值變?yōu)樽畲笾?,其它各路的?jì)數(shù)值各自減1。
其中,所述計(jì)數(shù)器的位寬為log2N,其中N為路的個(gè)數(shù)。
其中,所述組相聯(lián)映射的Cache結(jié)構(gòu)設(shè)有若干組,每一組中含有若干路,所述計(jì)數(shù)器的位寬中N為每一組中路的個(gè)數(shù)。
圖4是本發(fā)明的一個(gè)應(yīng)用案例的示意圖。初始狀態(tài)如圖中Step 0所示,每路之前有2-bit(log24=2)計(jì)數(shù)器,各計(jì)數(shù)器初始值從2’b11至2’b00依次遞減,2’b11表示該路使用頻率最多,2’b00表示該路使用頻率最低。當(dāng)Cache命中發(fā)生后,如Step1所示,被命中的“Way2”其計(jì)數(shù)值變?yōu)?’b11,其它各路計(jì)數(shù)器進(jìn)行遞減;當(dāng)Cache缺失發(fā)生,如Step 2所示,“Way 3”將被替換,其計(jì)數(shù)值變?yōu)?’b11,其它各路計(jì)數(shù)器進(jìn)行遞減。
盡管本發(fā)明的實(shí)施方案已公開如上,但其并不僅僅限于說明書和實(shí)施方式中所列運(yùn)用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實(shí)現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細(xì)節(jié)和這里示出與描述的圖例。