專利名稱:一種片上共享高速緩存的替換裝置和方法以及相應(yīng)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)芯片領(lǐng)域,尤其涉及多核或眾核處理器。
背景技術(shù):
在過去的幾年中,由于指令級(jí)并行的局限性、功耗以及芯片溫度等問題,主流芯片 制造商均由生產(chǎn)單核芯片轉(zhuǎn)向生產(chǎn)多核或眾核芯片。多核或眾核芯片的設(shè)計(jì)面臨許多單核 時(shí)代所沒有的挑戰(zhàn),其中之一就是片上共享高速緩存(cache)的設(shè)計(jì)。目前,多核/眾核的 高速緩存設(shè)計(jì)有以下兩種不同方式1私有的高速緩存每個(gè)小核私有一塊高速緩存。這種方式的優(yōu)點(diǎn)在于小核之間 是互相隔離的,一個(gè)小核的行為不會(huì)影響到其它小核的性能;缺點(diǎn)是不能有效地利用片上 的存儲(chǔ),尤其是在多個(gè)小核之間存在共享數(shù)據(jù)的情況下,會(huì)浪費(fèi)大量的存儲(chǔ)空間。2共享的高速緩存多個(gè)小核共享一塊高速緩存。這種方式的優(yōu)點(diǎn)在于可以較好 地利用片上存儲(chǔ)的容量,尤其是在多個(gè)小核共享大量數(shù)據(jù)的情況下;缺點(diǎn)是缺乏隔離機(jī)制, 容易產(chǎn)生抖動(dòng)現(xiàn)象(cache thrashing)。目前主流的多核處理器設(shè)計(jì)采用共享最后一級(jí)高速緩存(Last LevelCache),而 私有其他更高級(jí)的高速緩存。多個(gè)小核共享最后一級(jí)高速緩存雖然給小核之間的數(shù)據(jù)傳遞 提供了便利,但是也會(huì)產(chǎn)生一些問題雖然每個(gè)小核對(duì)共享高速緩存的訪問是有較強(qiáng)的時(shí) 間和空間局部性,但是很多個(gè)小核訪問總和的時(shí)空局部性很差。由于高速緩存是一種利用 訪存時(shí)間和空間局部性的裝置,這種整體缺乏時(shí)空局部性的訪問可能會(huì)造成共享高速緩存 的嚴(yán)重抖動(dòng)(cache thrashing)。圖1示意了一個(gè)基于最近最久未使用(LRU)替換策略的組相聯(lián)高速緩存替換部分 的被替換緩存塊選取模塊。每當(dāng)有一個(gè)訪存請(qǐng)求訪問該高速緩存,該訪存的地址會(huì)被分解 成3個(gè)部分標(biāo)簽(tag),索引(index)和偏移(offset)。索引用于指定具體訪問該組相聯(lián) 高速緩存的哪一個(gè)組(set),標(biāo)簽用于比較判斷訪問是否在緩存中命中。如圖1所示,高速 緩存的替換模塊首先并行地進(jìn)行如下兩個(gè)步驟通過比較對(duì)應(yīng)組(set)的標(biāo)簽來檢測(cè)訪問是否命中;檢查對(duì)應(yīng)組(set)的訪問信息存儲(chǔ)器,根據(jù)各個(gè)緩存塊過去的訪問信息找出可能 被替換的緩存塊(victim block)。然后,若訪問命中高速緩存中的緩存塊,則不對(duì)被替換的緩存塊(victim block) 進(jìn)行任何操作;若訪問沒有命中,則需要將被替換的緩存塊移出高速緩存,并讀入需要訪問 的緩存塊,與此同時(shí)被替換的緩存塊的訪問信息也需要被清除。圖2示意了一個(gè)共享高速緩存抖動(dòng)的例子。圖2的上半部分給出了一個(gè)對(duì)4組相 聯(lián)LRU高速緩存的特定組訪問序列,其中地址AO為經(jīng)常被訪問的地址,而地址B0,B1,..., B12,...為不經(jīng)常訪問的地址。而根據(jù)圖2下半部分所示,由于該高速緩存的歷史窗口太 小,具體而言4路組相聯(lián)的高速緩存的歷史窗口大小僅為4,該高速緩存無法認(rèn)出地址AO為 經(jīng)常被訪問的地址,導(dǎo)致地址AO被頻繁地替換出高速緩存,造成嚴(yán)重的抖動(dòng)現(xiàn)象。
需要說明的是,雖然圖2描述的是LRU策略的高速緩存,但是實(shí)際上抖動(dòng)問題存在 于所有的傳統(tǒng)高速緩存中。例如在一個(gè)最不經(jīng)常使用(LFU)策略的高速緩存中,地址AO需 要積累足夠多的訪問數(shù)(referencecoimt)來標(biāo)示自己經(jīng)常被訪問。但是在圖2的訪問序 列中,含有地址AO的緩存塊會(huì)被頻繁替換出高速緩存,每次被替換出的時(shí)候地址AO的訪問 數(shù)都會(huì)被清零,這導(dǎo)致LFU策略無法為地址AO積累足夠多的訪問數(shù),從而導(dǎo)致LFU策略也 無法解決圖2所示的抖動(dòng)問題。由此可見,如何解決這種片上共享高速緩存的抖動(dòng)問題在 多核/眾核處理器設(shè)計(jì)領(lǐng)域是亟需解決的難題。
發(fā)明內(nèi)容
本發(fā)明要解決如上所述的共享高速緩存抖動(dòng)的技術(shù)問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種片上共享高速緩存的替換裝置,包括局部性 打分模塊和替換選擇模塊,其中所述局部性打分模塊包括多個(gè)打分寄存器,所述打分寄存器用于存儲(chǔ)緩存塊地址和所述緩存塊地址的分?jǐn)?shù);所述局部性打分模塊用于對(duì)訪問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,并對(duì)打分寄 存器中所存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新;替換選擇模塊用于對(duì)于所述訪問地址分?jǐn)?shù)最低的情況,將所述訪問地址旁路,否 則用所述訪問地址所對(duì)應(yīng)的數(shù)據(jù)替換分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的數(shù)據(jù)。在上述裝置中,所述局部性打分模塊對(duì)打分寄存器中所存儲(chǔ)的緩存塊地址和緩存 塊地址的分?jǐn)?shù)進(jìn)行更新時(shí),判斷正在打分的是訪問地址還是已緩存數(shù)據(jù)對(duì)應(yīng)的地址;對(duì)于 訪問地址,判斷所述訪問地址是否命中打分寄存器中所存儲(chǔ)的緩存塊地址,對(duì)于沒有命中 的情況,用打分地址替換打分寄存器中所存儲(chǔ)的分?jǐn)?shù)最低的緩存塊地址并將分?jǐn)?shù)置0,并更 新該緩存塊地址的分?jǐn)?shù),否則直接更新該緩存塊地址的分?jǐn)?shù)。對(duì)于上述裝置,當(dāng)經(jīng)過常數(shù)次訪問后,所有打分寄存器中存儲(chǔ)的分?jǐn)?shù)右移一位。根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種多核/眾核處理器,包括上述片上共享 高速緩存的替換裝置。根據(jù)本發(fā)明的又一方面,還提供了一種基于上述裝置的片上共享高速緩存的替換 方法,包括下列步驟1)對(duì)訪問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分;2)對(duì)于所述訪問地址分?jǐn)?shù)最低的情況,將所述訪問地址旁路,否則用所述訪問地 址所對(duì)應(yīng)的數(shù)據(jù)替換分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的數(shù)據(jù);3)對(duì)打分寄存器中所存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新。在所述方法中,所述步驟幻進(jìn)一步包括13)判斷正在打分的是訪問地址還是已緩存數(shù)據(jù)對(duì)應(yīng)的地址;14)對(duì)于訪問地址,判斷所述訪問地址是否命中打分寄存器中所存儲(chǔ)的緩存塊地 址,對(duì)于沒有命中的情況,用打分地址替換打分寄存器中所存儲(chǔ)的分?jǐn)?shù)最低的緩存塊地址 并將分?jǐn)?shù)置0,并更新該緩存塊地址的分?jǐn)?shù),否則直接更新該緩存塊地址的分?jǐn)?shù)。在所述方法中,所述步驟幻還包括當(dāng)經(jīng)過常數(shù)次訪問后,將打分寄存器中所存 儲(chǔ)的緩存塊地址的分?jǐn)?shù)除以2。在所述方法中,所述步驟1)與步驟3)并行操作。
本發(fā)明所提供的上述方法和系統(tǒng)有效解決了共享高速緩存的抖動(dòng)問題,并且,通 過將共享高速緩存的緩存塊地址和其分?jǐn)?shù)分開存儲(chǔ),進(jìn)一步有效提高了片上共享高速緩存 的命中率。
附圖1是傳統(tǒng)高速緩存替換的被替換緩存塊選取的邏輯示意圖;附圖2是傳統(tǒng)高速緩存抖動(dòng)示例圖;附圖3是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的高速緩存替換的被替換緩存塊選取的邏 輯示意圖;附圖4是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的用于存儲(chǔ)地址訪問的歷史訪問信息的打 分寄存器的結(jié)構(gòu)示意圖;附圖5是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的高速緩存替換方法的流程圖;附圖6是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的局部性打分模塊的流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,對(duì)根據(jù)本發(fā) 明一個(gè)實(shí)施例的片上共享高速緩存的替換方法和裝置進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所 描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖3是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的組相聯(lián)高速緩存替換的準(zhǔn)備步驟的邏輯示 意圖,與圖1所給出的傳統(tǒng)高速緩存的替換的準(zhǔn)備步驟的邏輯示意圖相比較,主要存在以 下區(qū)別1)不僅僅對(duì)高速緩存里存在的已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,而且還對(duì)訪問地址打 分。如果訪問地址的分?jǐn)?shù)低于所有已緩存數(shù)據(jù)對(duì)應(yīng)的地址的分?jǐn)?shù),說明訪問地址的局部性 較差,這種情況下可以選擇將該次訪問旁路(bypass)。旁路是指直接返回?cái)?shù)據(jù),而不把該次 訪問數(shù)據(jù)寫入高速緩存的存儲(chǔ)中。2)另外,單獨(dú)存儲(chǔ)地址訪問的歷史訪問信息,也就是說在本發(fā)明中,緩存塊的訪問 信息和其數(shù)據(jù)分開存儲(chǔ)。這樣,當(dāng)一個(gè)緩存塊被替換出高速緩存的時(shí)候,其訪問的歷史信息 就得以保留。由此,可以獲得較長(zhǎng)時(shí)間內(nèi)地址的訪問情況,更好地覺察出被訪問數(shù)據(jù)的局部 性,以做出更準(zhǔn)確的替換,進(jìn)而提高高速緩存的命中率?;谌缟蠀^(qū)別,本發(fā)明的片上共享高速緩存的替換裝置相對(duì)于現(xiàn)有裝置,其包括 一個(gè)局部性打分模塊,且該局部性打分模塊中包括多個(gè)打分寄存器。該局部性打分模塊與 比較模塊一樣,不僅從標(biāo)簽存儲(chǔ)器接收已緩存數(shù)據(jù)對(duì)應(yīng)的地址的標(biāo)簽還接收訪問地址的標(biāo) 簽,從而能夠?qū)υL問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,并對(duì)打分寄存器中所存儲(chǔ)的緩存 塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新,其中的打分寄存器,存儲(chǔ)緩存塊地址和緩存塊地址 的分?jǐn)?shù)。而且,本發(fā)明的裝置中的替換選擇模塊,接收局部打分寄存器所打的分?jǐn)?shù),對(duì)于所 述訪問地址分?jǐn)?shù)最低的情況,能夠?qū)⑺鲈L問地址旁路。下面結(jié)合圖5和圖6,根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例對(duì)本發(fā)明的提高片上共享高 速緩存命中率的替換方法做進(jìn)一步的更詳細(xì)描述。在該優(yōu)選實(shí)施例中,系統(tǒng)的狀態(tài)如下
高速緩存的位內(nèi)偏移位數(shù)為6(即緩存塊大小為64byte),索引(index)位數(shù)為 11 (即該高速緩存有2048個(gè)組),標(biāo)簽位數(shù)為23。用于單獨(dú)存儲(chǔ)地址訪問的歷史訪問信息的打分寄存器的基地址偏移為14(即每 個(gè)打分寄存器對(duì)應(yīng)的地址范圍為16KB),含有256個(gè)局部性打分寄存器,失效常數(shù)(Decay Constant)為2048,失效循環(huán)計(jì)數(shù)器目前的值為2047。優(yōu)選地,多個(gè)打分寄存器位于該高速 緩存對(duì)應(yīng)的局部性打分模塊303中,該局部性打分模塊303用于不僅僅對(duì)高速緩存里存在 的已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,而且還對(duì)訪問地址打分。圖4是根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施 例的用于存儲(chǔ)地址訪問的歷史訪問信息的多個(gè)打分寄存器的結(jié)構(gòu)示意圖,其是一個(gè)類似內(nèi) 容尋址存儲(chǔ)器(CAM)的電路結(jié)構(gòu)。該局部性打分寄存器中至少包括5個(gè)打分寄存器,每個(gè) 打分寄存器含有基地址和分?jǐn)?shù)兩個(gè)域。圖5示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的高速緩存替換方法的流程圖,下面結(jié)合圖5 以訪問地址0x0123456789為例說明該替換方法的工作過程步驟501,地址拆分。具體地,把訪問地址(0x0123456789)拆分成高速緩存對(duì)應(yīng)的索引Qndex)和標(biāo)簽 (Tag)兩個(gè)部分。其中索引(Index)值為0x59E,標(biāo)簽(Tag)值為0x91A2。步驟502,訪問標(biāo)簽CTag)存儲(chǔ)器301。讀出標(biāo)簽存儲(chǔ)器301中與地址0x0123456789對(duì)應(yīng)的索引Qndex,值為0x59E)中 的所有標(biāo)簽。本發(fā)明根據(jù)步驟501和步驟502所獲得的標(biāo)簽和索引分別執(zhí)行步驟503和步驟 504。優(yōu)選地,二者是并行執(zhí)行的。步驟503,比較標(biāo)簽。比較模塊302將步驟501得到的訪問地址的標(biāo)簽(Tag,值為0x91A2)和步驟502 所讀出的標(biāo)簽相比較。根據(jù)是否有相同的標(biāo)簽判斷訪問是否命中,若沒有相同的標(biāo)簽則表 示此次訪問沒有命中,則轉(zhuǎn)步驟505 ;若有相同的標(biāo)簽則表示此次訪問命中,無需進(jìn)行緩存 塊替換操作,轉(zhuǎn)步驟508。步驟504,局部性打分。將步驟502讀出的標(biāo)簽(Tag)、步驟501得到的訪問地址的標(biāo)簽(Tag,值為 0x91A2)和索引andex,值為0x59E)輸入給局部性打分模塊303。局部性打分模塊303對(duì) 每個(gè)標(biāo)簽進(jìn)行打分并將分?jǐn)?shù)發(fā)送給替換選擇模塊304,而且更新其中的打分寄存器內(nèi)存儲(chǔ) 的分?jǐn)?shù)。步驟505,替換選擇。若步驟503中,比較標(biāo)簽的操作沒有命中,這時(shí)就需要進(jìn)行替換選擇操作。替換選 擇模塊304從局部性打分模塊303接收所有可能被替換的已緩存數(shù)據(jù)對(duì)應(yīng)的地址的局部性 分?jǐn)?shù)以及訪問地址的局部性分?jǐn)?shù),并進(jìn)行比較。根據(jù)訪問地址的分?jǐn)?shù)是否最低,發(fā)出是否需 要進(jìn)行旁路的信息,同時(shí),提供分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的路,將該路作為 被替換路。步驟506,檢查步驟505得到的旁路信息。若需要旁路,則不需要進(jìn)行替換操作,轉(zhuǎn) 步驟508 ;若不需要旁路,則轉(zhuǎn)步驟507。步驟507,進(jìn)行替換操作,根據(jù)由步驟505得到的被替換路將該路對(duì)應(yīng)的緩存塊內(nèi)
6的數(shù)據(jù)移出高速緩存,用訪問地址對(duì)應(yīng)數(shù)據(jù)替換之,并且將標(biāo)簽存儲(chǔ)器301中被替換路的 標(biāo)簽修改為訪問地址的標(biāo)簽。步驟508,對(duì)于本次地址訪問,替換方法結(jié)束。上述步驟504的具體過程如圖6流程圖所示,包括如下步驟步驟5041,重新生成完整地址。如圖3所示,局部性打分模塊303的輸入是查找地址的標(biāo)簽,而不是完整的訪問地 址,所以局部性打分模塊303需要將地址的標(biāo)簽和地址的索引(index,值為0x59E)重新組 合成為完整的地址,其中,查找地址包括高速緩存中緩存塊的地址和訪問地址。例如,對(duì)于 訪問地址,重新生成的完整地址為0x0123456780。步驟5042,對(duì)步驟5041生成的完整地址進(jìn)行打分。由于打分寄存器的基地址偏移為14,所以將完整地址的低14位置為0,得到其對(duì) 應(yīng)打分寄存器的基地址,例如完整地址0x0123456780的基地址為0x0123454000。若基地 址命中某一個(gè)打分寄存器的基地址部分,則返回該打分寄存器的分?jǐn)?shù);若沒有命中,則返回 O0步驟5043,將步驟5042得到的局部性分?jǐn)?shù)發(fā)送給替換選擇模塊304。步驟5044,判斷目前正在進(jìn)行局部性打分的地址是訪問地址還是可能被替換的已 緩存數(shù)據(jù)對(duì)應(yīng)的地址。若為訪問地址,則需要對(duì)其進(jìn)行替換和更新操作,即轉(zhuǎn)步驟5045 ;若 不為訪問地址,即該地址是目前hdex對(duì)應(yīng)的緩存塊中的地址,這些緩存塊都是可能被替 換的緩存塊,則對(duì)于本次訪問,局部性打分模塊的操作結(jié)束。步驟5045,判斷該訪問地址是否在局部性打分模塊303中的打分寄存器中命中。在本實(shí)施例中,即查找是否有打分寄存器的基地址等于訪問請(qǐng)求地址 0x0123454000。如果該地址沒有命中,進(jìn)行步驟5046 ;如果命中,則直接進(jìn)行步驟5047。步驟5046,局部性打分模塊進(jìn)行替換操作。選擇分?jǐn)?shù)最低的打分寄存器,將其基地址替換為本次訪問的基地址,同時(shí)將分?jǐn)?shù) 清零。假設(shè)分?jǐn)?shù)最低的打分寄存器的基地址為0x111110000,其分?jǐn)?shù)為1 ;替換操作后其基 地址就換成當(dāng)前訪問地址的基地址0x0123454000,其分?jǐn)?shù)為0。然后進(jìn)行步驟5046。步驟5047,局部性打分模塊進(jìn)行更新操作,對(duì)于本次訪問,局部性打分模塊的操作結(jié)束。更新操作包括兩個(gè)部分第一,當(dāng)經(jīng)過了失效常數(shù)次訪問,失效循環(huán)計(jì)數(shù)器值更新 后的值為0時(shí),將所有打分寄存器的分?jǐn)?shù)右移一位,其中失效循環(huán)計(jì)數(shù)器值=(失效循環(huán)計(jì) 數(shù)器值+1)%失效常數(shù);第二,當(dāng)本次訪問的地址命中某個(gè)打分寄存器,該打分寄存器的分 數(shù)加1,尤其值得注意,該打分寄存器包括新分配的打分寄存器。在本例中,失效循換計(jì)數(shù)器 值=(2047+1) % 2048 = 0,所以所有局部性打分寄存器的值向右移一位;且該訪問命中基 地址為0x0123454000的打分寄存器,所以該打分寄存器的對(duì)應(yīng)分?jǐn)?shù)加1,最終該打分寄存 器的分?jǐn)?shù)為0+1 = 1。本領(lǐng)域的普通技術(shù)人員可以理解,步驟5047中更新操作的第一操作是為了增強(qiáng) 打分寄存器中分?jǐn)?shù)的時(shí)效性,也就是說讓當(dāng)前頻繁訪問的基地址比以前頻繁訪問的基地址 的分?jǐn)?shù)更高,該操作也可以不存在或者用其它方式來實(shí)現(xiàn)。優(yōu)選地,上述步驟5042、5043與步驟5044-5047在時(shí)間上并行操作,以有效節(jié)約時(shí)間。本發(fā)明的上述方法及裝置可以從時(shí)間空間局部性均較差的訪問數(shù)據(jù)中識(shí)別相對(duì) 局部性較強(qiáng)的數(shù)據(jù),將這些數(shù)據(jù)緩存在高速緩存中,而旁路其他時(shí)間空間局部性均很差的 數(shù)據(jù)。由此,有效克服了片上共享高速緩存的抖動(dòng)問題。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡 在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保 護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種片上共享高速緩存的替換裝置,包括局部性打分模塊和替換選擇模塊,其中 所述局部性打分模塊包括多個(gè)打分寄存器,所述打分寄存器用于存儲(chǔ)緩存塊地址和所述緩存塊地址的分?jǐn)?shù);所述局部性打分模塊用于對(duì)訪問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,并對(duì)打分寄存器 中所存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新;替換選擇模塊用于對(duì)于所述訪問地址分?jǐn)?shù)最低的情況,將所述訪問地址旁路,否則用 所述訪問地址所對(duì)應(yīng)的數(shù)據(jù)替換分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述局部性打分模塊對(duì)打分寄存器中所 存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新時(shí),判斷正在打分的是訪問地址還是已緩 存數(shù)據(jù)對(duì)應(yīng)的地址;對(duì)于訪問地址,判斷所述訪問地址是否命中打分寄存器中所存儲(chǔ)的緩 存塊地址,對(duì)于沒有命中的情況,用打分地址替換打分寄存器中所存儲(chǔ)的分?jǐn)?shù)最低的緩存 塊地址并將分?jǐn)?shù)置0,并更新該緩存塊地址的分?jǐn)?shù),否則直接更新該緩存塊地址的分?jǐn)?shù)。
3.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述打分寄存器包括基地址域和分?jǐn)?shù)域。
4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,當(dāng)經(jīng)過常數(shù)次訪問后,所有打分寄存器中 存儲(chǔ)的分?jǐn)?shù)右移一位。
5.一種多核/眾核處理器,包括權(quán)利要求1所述的片上共享高速緩存的替換裝置。
6.一種基于權(quán)利要求1的裝置的片上共享高速緩存的替換方法,包括下列步驟1)對(duì)訪問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分;2)對(duì)于所述訪問地址分?jǐn)?shù)最低的情況,將所述訪問地址旁路,否則用所述訪問地址所 對(duì)應(yīng)的數(shù)據(jù)替換分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的數(shù)據(jù);3)對(duì)打分寄存器中所存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟幻進(jìn)一步包括13)判斷正在打分的是訪問地址還是已緩存數(shù)據(jù)對(duì)應(yīng)的地址;14)對(duì)于訪問地址,判斷所述訪問地址是否命中打分寄存器中所存儲(chǔ)的緩存塊地址,對(duì) 于沒有命中的情況,用打分地址替換打分寄存器中所存儲(chǔ)的分?jǐn)?shù)最低的緩存塊地址并將分 數(shù)置0,并更新該緩存塊地址的分?jǐn)?shù),否則直接更新該緩存塊地址的分?jǐn)?shù)。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟幻還包括當(dāng)經(jīng)過常數(shù)次訪問后,將打分寄存器中所存儲(chǔ)的緩存塊地址的分?jǐn)?shù)除以2。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述常數(shù)為2048。
10.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟1)與步驟3)并行操作。
全文摘要
本發(fā)明提供一種片上共享高速緩存的替換裝置和方法以及相應(yīng)處理器,該裝置包括局部性打分模塊和替換選擇模塊,其中所述局部性打分模塊包括多個(gè)打分寄存器,所述打分寄存器用于存儲(chǔ)緩存塊地址和所述緩存塊地址的分?jǐn)?shù);所述局部性打分模塊用于對(duì)訪問地址和已緩存數(shù)據(jù)對(duì)應(yīng)的地址打分,并對(duì)打分寄存器中所存儲(chǔ)的緩存塊地址和緩存塊地址的分?jǐn)?shù)進(jìn)行更新;替換選擇模塊用于對(duì)于所述訪問地址分?jǐn)?shù)最低的情況,將所述訪問地址旁路,否則用所述訪問地址所對(duì)應(yīng)的數(shù)據(jù)替換分?jǐn)?shù)最低的已緩存數(shù)據(jù)對(duì)應(yīng)的地址所對(duì)應(yīng)的數(shù)據(jù)。本發(fā)明解決了多核/眾核處理器中共享高速緩存抖動(dòng)現(xiàn)象嚴(yán)重問題,更好地利用了共享高速緩存。
文檔編號(hào)G06F15/167GK102110073SQ201110034399
公開日2011年6月29日 申請(qǐng)日期2011年2月1日 優(yōu)先權(quán)日2011年2月1日
發(fā)明者張 浩, 張輪凱, 李海忠, 范東睿, 雷崢蒙 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所