專利名稱:多核架構(gòu)下共享二級Cache的替換策略的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲器層次結(jié)構(gòu)設(shè)計領(lǐng)域,特別是涉及一種多核架構(gòu)下共享二級 Cache的替換策略的實(shí)現(xiàn)方法。
背景技術(shù):
對于共享二級Cache來說,發(fā)生Cache缺失的代價是相當(dāng)大的需要花費(fèi)幾百個
周期訪問主存。通常情況下,采用的Cache替換策略是最近最少使用替換策略,但是最近
最少使用替換策略存在著很多缺點(diǎn)首先,最近最少使用替換策略僅僅考慮的是Cache訪
問的最近信息,卻沒有考慮Cache訪問的頻率信息;其次,當(dāng)Cache容量小于程序的工作集
時,Cache會表現(xiàn)出抖動現(xiàn)象,發(fā)生沖突缺失,會導(dǎo)致計算機(jī)性能下降;再者,最近最少使用
替換策略的硬件實(shí)施是相當(dāng)昂貴的。為了克服最近最少使用替換策略存在的缺點(diǎn),目前提 出了不少替換策略比如說最優(yōu)替換策略,考慮將來的信息,它是把將來最遠(yuǎn)訪問的Cache
塊替換出去,但是這種實(shí)施不太實(shí)際;親密替換策略,它能夠同時考慮Cache訪問的最近信 息和Cache訪問的頻率信息,與最近最少使用替換策略和最優(yōu)替換策略相比,親密替換策 略可以減少硬件開銷,電路復(fù)雜性也明顯降低,但是目前提出的親密替換策略只是在單核 情況下實(shí)施,并沒有在多核情況下實(shí)施;等等。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是,提供一種多核架構(gòu)下共享二級Cache的替換策略的 實(shí)現(xiàn)方法。 為解決上述技術(shù)問題,本發(fā)明提供的方法如下
1)對Cache組的進(jìn)行分割 每個Cache組set分成k個小組group, k = n/m,0 < k < n+l且k、m、n為整數(shù), n為Cache的相聯(lián)度,O < m < n+l。對Cache組的進(jìn)行分割的目的在于對不同的小組實(shí)施 相應(yīng)的Cache替換策略。在多核架構(gòu)下,根據(jù)在每個核上運(yùn)行的程序的訪問模式的不同,對 不同的程序采用不同的替換策略。并不是每個程序的訪問行為都是相同的,而且分配給每 個程序的空間容量也不同,合適的采用Cache替換策略,有助于提高程序的運(yùn)行的效率。
每個小組設(shè)置一個缺失計數(shù)器和一個策略選擇器,缺失計數(shù)器用來記錄小組發(fā)生 的缺失數(shù)miss,策略選擇器決定小組所采取的Cache替換策略。 2)親近替換策略,與最近最少使用替換策略相比,除了考慮訪問的最新信息之外 還關(guān)注訪問頻率,其實(shí)施過程如下 第一步每個Cache組設(shè)置一個組命中標(biāo)簽,組命中標(biāo)簽用來決定逐出的Cache塊 是從親近隊(duì)列的頂部選擇還是從親近隊(duì)列的底部選擇,在訪問這個Cache組之前,組命中 標(biāo)簽被初始化為1 。每個Cache組也設(shè)置一個親近隊(duì)列,親近隊(duì)列中的Cache塊初始位置和 最近最少使用LRU棧中的Cache塊位置相同。 第二步當(dāng)發(fā)生Cache命中時,在該組的親近隊(duì)列中,命中的Cache塊和與其上面臨近的Cache塊交換位置,如果組命中標(biāo)簽為O,則更新為l,如果組命中標(biāo)簽為l,則不 更新仍為1,如果命中的Cache塊已經(jīng)在親近隊(duì)列的頂部,不改變其位置;當(dāng)發(fā)生Cache缺 失時,在該組的親近隊(duì)列中,如果組命中標(biāo)簽為O,親近隊(duì)列頂部的Cache塊作為要替換的 Cache塊,其余所有的Cache塊向親近隊(duì)列頂部移動一個位置,組命中標(biāo)簽的值仍為0,進(jìn)入 到Cache的Cache塊插在親近隊(duì)列的底部;如果組命中標(biāo)簽為l,則親近隊(duì)列底部的Cache 塊作為要替換的Cache塊,組命中標(biāo)簽的值更新為O,進(jìn)入到Cache的Cache塊插在親近隊(duì) 列的底部;當(dāng)有兩個小組group都采用親近替換策略時,被替換出去的候選Cache塊就有兩 個,塊選擇器從要被替換出去的候選Cache塊中隨機(jī)的選擇一個作為要被替換的Cache塊。
3)當(dāng)發(fā)生一級Cache缺失時,共享二級Cache中的Cache組的工作過程如下
當(dāng)發(fā)生共享二級Cache缺失或命中時,發(fā)生Cache缺失或命中的小組的缺失計數(shù) 器根據(jù)其所記錄的Cache缺失數(shù)目,來決定本小組所采取的Cache替換策略,如果本小組發(fā) 生的Cache缺失的數(shù)目miss不超過某個指定的值z,策略選擇器就采用最近最少使用替換 策略,反之,策略選擇器采用親近替換策略。 所述最近最少使用替換策略是指從Cache中替換出最近最少使用的Cache塊,進(jìn) 入Cache的Cache塊放在最近最多使用的位置MRU上,當(dāng)一個Cache塊發(fā)生命中時,則把該 塊放在最近最多使用的位置,其余所有的Cache塊在最近最少使用LRU棧中下移一個位置。
與背景技術(shù)相比,本發(fā)明具有的有益的效果是 在多核環(huán)境下,本發(fā)明針對最近最少使用替換策略存在的問題,對Cache組中的 Cache塊進(jìn)行分組,每個小組實(shí)施不同的替換策略,可以降低Cache缺失,大大減少了存儲 開銷,同時也降低電路的復(fù)雜性,提高系統(tǒng)的性能。在多核環(huán)境下,不同的程序或者線程可 能偏愛不同的替換策略,因此提出在不同的分割組中實(shí)施不同的Cache替換策略。
圖1是采用親近替換策略發(fā)生Cache缺失且更新組命中標(biāo)簽的實(shí)例;
圖2是采用親近替換策略發(fā)生Cache缺失且不需更新組命中標(biāo)簽的實(shí)例;
圖3是采用親近替換策略發(fā)生Cache命中且更新組命中標(biāo)簽的實(shí)例;
圖4是采用親近替換策略發(fā)生Cache命中且不需更新組命中標(biāo)簽的實(shí)例;
圖5是某Cache組中某2個小組采用親近替換策略時塊選擇器的工作過程;
圖中VICTIM為選擇的要被替換的Cache塊,VSEL為塊選擇器,D和H為候選要替 換出的Cache塊; 圖6是某Cache組中某個小組的Cache替換策略的選擇過程。
具體實(shí)施例方式
本發(fā)明中所述的缺失計數(shù)器、策略選擇器、塊選擇器均為內(nèi)置于共享二級Cache 中的軟件模塊,其實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員的基本技能,故不再贅述。
本方法的具體過程及實(shí)例如下
1)對Cache組的進(jìn)行分割 每個Cache組set分成k個小組group, k = n/m,0 < k < n+1且k、m、n為整數(shù), n為Cache的相聯(lián)度,O < m < n+l。假設(shè)Cache的相聯(lián)度n為16,當(dāng)沒m = 4時,k = 16/4
4=4,即每個Cache組分成4個小組。 每個小組設(shè)置一個缺失計數(shù)器和一個策略選擇器,缺失計數(shù)器用來記錄小組發(fā)生 的缺失數(shù)miss,策略選擇器決定小組所采取的Cache替換策略。
2)親近替換策略,其實(shí)施過程如下 第一步每個Cache組設(shè)置一個組命中標(biāo)簽和一個親近隊(duì)列,組命中標(biāo)簽用來 決定逐出的Cache塊是從親近隊(duì)列的頂部選擇還是從親近隊(duì)列的底部選擇,在訪問這個 Cache組之前,組命中標(biāo)簽被初始化為l,親近隊(duì)列中的Cache塊初始位置和最近最少使用 LRU棧中的Cache塊位置相同。 第二步當(dāng)發(fā)生Cache命中時,在該組的親近隊(duì)列中,命中的Cache塊和與其上面 臨近的Cache塊交換位置,如果組命中標(biāo)簽為O,則更新為l,如果組命中標(biāo)簽為l,則不更 新仍為l,如果命中的Cache塊已經(jīng)在親近隊(duì)列的頂部,不改變其位置,假設(shè)一個組的當(dāng)前 隊(duì)列中的Cache塊位置為A, B, C, D,當(dāng)發(fā)生Cache塊C命中時,則塊B和塊C交換位置,當(dāng) 發(fā)生Cache塊A命中時,則不改變其位置,如果組命中標(biāo)簽為O,則更新為l,如果組命中標(biāo) 簽為l,則不更新仍為1 ;當(dāng)發(fā)生Cache缺失時,在該組的親近隊(duì)列中,如果組命中標(biāo)簽為O, 親近隊(duì)列頂部的Cache塊作為要替換的Cache塊,其余所有的Cache塊向親近隊(duì)列頂部移 動一個位置,組命中標(biāo)簽的值仍為O,進(jìn)入到Cache的Cache塊插在親近隊(duì)列的底部;如果 組命中標(biāo)簽為l,則親近隊(duì)列底部的Cache塊作為要替換的Cache塊,組命中標(biāo)簽的值更新 為O,進(jìn)入到Cache的Cache塊插在親近隊(duì)列的底部,假設(shè)一個小組當(dāng)前隊(duì)列中Cache塊位 置為A, B, C, D,如果組命中標(biāo)簽值是1 ,下一次要訪問塊E,但是塊E不在當(dāng)前隊(duì)列中,就發(fā) 生缺失,塊D將是要被替換掉的塊,而且組命中標(biāo)簽要更新為0 ;如果組命中標(biāo)簽值是O,下 一次同樣要訪問塊E,但是塊E不在當(dāng)前隊(duì)列中,就發(fā)生缺失,A將是要被替換掉的塊,塊B、 塊C、塊D分別向上移動一個位置,組命中標(biāo)簽仍為0。當(dāng)有兩個小組group都采用親近替 換策略時,被替換出去的候選Cache塊就有兩個,塊選擇器從要被替換出去的候選Cache塊 中隨機(jī)的選擇一個作為要被替換的Cache塊,假設(shè)有兩個小組實(shí)施親近替換策略,其隊(duì)列 分別為Ql和Q2。 Ql :A, B, C, D和Q2 :H, I, J, K,塊D和塊H是兩個候選要替換掉的Cache 塊,塊選擇器隨機(jī)的從塊D和塊H中選擇一個做為要被替換的Cache塊。
3)在多核架構(gòu)下,根據(jù)在每個核上運(yùn)行的程序的訪問模式的不同,對不同的程序 采用不同的替換策略,當(dāng)發(fā)生一級Cache缺失時,共享二級Cache中的Cache組的工作過程 如下 當(dāng)發(fā)生共享二級Cache缺失或命中時,發(fā)生Cache缺失或命中的小組的缺失計數(shù) 器根據(jù)其所記錄的Cache缺失數(shù)目,來決定本小組所采取的Cache替換策略,如果本小組發(fā) 生的Cache缺失的數(shù)目miss不超過某個指定的值z,策略選擇器就采用最近最少使用替換 策略,反之,策略選擇器采用親近替換策略。假設(shè)z = 50,當(dāng)miss < z時,策略選擇器就采 用最近最少使用替換策略,反之,策略選擇器采用親近替換策略。 所述最近最少使用替換策略是指從Cache中替換出最近最少使用的Cache塊,進(jìn) 入Cache的Cache塊放在最近最多使用的位置MRU上,當(dāng)一個Cache塊發(fā)生命中時,則把該 塊放在最近最多使用的位置,其余所有的Cache塊在最近最少使用LRU棧中下移一個位置; 最近最少使用替換策略僅僅考慮了 Cache塊被訪問的最近最新的信息,并沒有考慮Cache 塊被訪問的頻率信息。
權(quán)利要求
一種多核架構(gòu)下共享Cache的替換策略的實(shí)現(xiàn)方法,其特征在于1)對Cache組的進(jìn)行分割每個Cache組set分成k個小組group,k=n/m,0<k<n+1且k、m、n為整數(shù),n為Cache的相聯(lián)度,0<m<n+1;每個小組設(shè)置一個缺失計數(shù)器和一個策略選擇器,缺失計數(shù)器用來記錄小組發(fā)生的缺失數(shù)miss,策略選擇器決定小組所采取的Cache替換策略;2)親近替換策略,其實(shí)施過程如下第一步每個Cache組設(shè)置一個組命中標(biāo)簽和一個親近隊(duì)列,組命中標(biāo)簽用來決定逐出的Cache塊是從親近隊(duì)列的頂部選擇還是從親近隊(duì)列的底部選擇,在訪問這個Cache組之前,組命中標(biāo)簽被初始化為1,親近隊(duì)列中的Cache塊初始位置和最近最少使用LRU棧中的Cache塊位置相同;第二步當(dāng)發(fā)生Cache命中時,在該組的親近隊(duì)列中,命中的Cache塊和與其上面臨近的Cache塊交換位置,如果組命中標(biāo)簽為0,則更新為1,如果組命中標(biāo)簽為1,則不更新仍為1,如果命中的Cache塊已經(jīng)在親近隊(duì)列的頂部,不改變其位置;當(dāng)發(fā)生Cache缺失時,在該組的親近隊(duì)列中,如果組命中標(biāo)簽為0,親近隊(duì)列頂部的Cache塊作為要替換的Cache塊,其余所有的Cache塊向親近隊(duì)列頂部移動一個位置,組命中標(biāo)簽的值仍為0,進(jìn)入到Cache的Cache塊插在親近隊(duì)列的底部;如果組命中標(biāo)簽為1,則親近隊(duì)列底部的Cache塊作為要替換的Cache塊,組命中標(biāo)簽的值更新為0,進(jìn)入到Cache的Cache塊插在親近隊(duì)列的底部;當(dāng)有兩個小組group都采用親近替換策略時,被替換出去的候選Cache塊就有兩個,塊選擇器從要被替換出去的候選Cache塊中隨機(jī)的選擇一個作為要被替換的Cache塊;3)在多核架構(gòu)下,根據(jù)在每個核上運(yùn)行的程序的訪問模式的不同,對不同的程序采用不同的替換策略,當(dāng)發(fā)生一級Cache缺失時,共享二級Cache中的Cache組的工作過程如下當(dāng)發(fā)生共享二級Cache缺失或命中時,發(fā)生Cache缺失或命中的小組的缺失計數(shù)器根據(jù)其所記錄的Cache缺失數(shù)目,來決定本小組所采取的Cache替換策略,如果本小組發(fā)生的Cache缺失的數(shù)目miss不超過某個指定的值z,策略選擇器就采用最近最少使用替換策略,反之,策略選擇器采用親近替換策略;所述最近最少使用替換策略是指從Cache中替換出最近最少使用的Cache塊,進(jìn)入Cache的Cache塊放在最近最多使用的位置MRU上,當(dāng)一個Cache塊發(fā)生命中時,則把該塊放在最近最多使用的位置,其余所有的Cache塊在最近最少使用LRU棧中下移一個位置。
全文摘要
本發(fā)明涉及存儲器層次結(jié)構(gòu)設(shè)計領(lǐng)域,旨在提供一種多核架構(gòu)下共享二級Cache的替換策略的實(shí)現(xiàn)方法。該方法包括下述步驟對Cache組的進(jìn)行分割、親近替換策略的實(shí)施、在多核架構(gòu)下根據(jù)在每個核上運(yùn)行的程序的訪問模式的不同對不同的程序采用不同的替換策略實(shí)施。本發(fā)明有益效果是在多核環(huán)境下,本發(fā)明針對最近最少使用替換策略存在的問題,對Cache組中的Cache塊進(jìn)行分組,每個小組實(shí)施不同的替換策略,可以降低Cache缺失,大大減少了存儲開銷,同時也降低電路的復(fù)雜性,提高系統(tǒng)的性能。在多核環(huán)境下,不同的程序或者線程可能偏愛不同的替換策略,因此提出在不同的分割組中實(shí)施不同的Cache替換策略。
文檔編號G06F12/12GK101694640SQ20091015402
公開日2010年4月14日 申請日期2009年10月22日 優(yōu)先權(quán)日2009年10月22日
發(fā)明者喬福明, 唐興盛, 張少斌, 胡同森, 胡威, 陳天洲 申請人:浙江大學(xué);