本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中的末級(jí)高速緩存管理領(lǐng)域,尤其涉及一種末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理系統(tǒng)及管理方法。
背景技術(shù):
高速緩存處于處理器訪問(wèn)的關(guān)鍵路徑。隨著處理器和存儲(chǔ)器之間速度差距的不斷擴(kuò)大,高速緩存尤其是末級(jí)高速緩存失效產(chǎn)生的系統(tǒng)開(kāi)銷逐漸增大,成為制約計(jì)算機(jī)整體性能提高的重要瓶頸之一。
程序內(nèi)部不同數(shù)據(jù)區(qū)域可能存在不同的訪問(wèn)模式和局部性特征。但是,當(dāng)前處理器高速緩存通常采用單純基于硬件實(shí)現(xiàn)的最近最少使用(LRU)替換算法。該算法不能有效識(shí)別訪問(wèn)數(shù)據(jù)的局部性特征并根據(jù)數(shù)據(jù)局部性的變化及時(shí)調(diào)整管理策略。未來(lái)不會(huì)被使用到的數(shù)據(jù)如果不能被有效識(shí)別并同局部性良好的數(shù)據(jù)相區(qū)分,就可能會(huì)將復(fù)用度高的數(shù)據(jù)替換出高速緩存,從而引發(fā)高速緩存污染問(wèn)題。在采用多級(jí)高速緩存的系統(tǒng)中,由于上級(jí)高速緩存的過(guò)濾作用,使得末級(jí)高速緩存污染更加嚴(yán)重?,F(xiàn)代計(jì)算機(jī)普遍采用虛擬存儲(chǔ)系統(tǒng)。在支持分頁(yè)機(jī)制的虛擬存儲(chǔ)系統(tǒng)中,程序地址空間被劃分為若干大小相同的頁(yè)。在程序運(yùn)行過(guò)程中,不同頁(yè)之間的局部性特征可能存在較大差異。限制局部性差數(shù)據(jù)頁(yè)的末級(jí)高速緩存訪問(wèn)空間可以減少其對(duì)其他數(shù)據(jù)頁(yè)高速緩存空間的搶占,在高速緩存中保護(hù)局部性良好的數(shù)據(jù),從而提高末級(jí)高速緩存的性能。
針對(duì)末級(jí)高速緩存污染問(wèn)題,當(dāng)前解決方案通常采用末級(jí)高速緩存軟件劃分的方法。該方法缺少軟硬件交互接口,只能將末級(jí)高速緩存劃分為若干區(qū)域,通過(guò)將失效率高、局部性差的數(shù)據(jù)頁(yè)限制在范圍較小的區(qū)域內(nèi),提高末級(jí)高速緩存命中率。此類方法在進(jìn)行高速緩存劃分時(shí)需要修改虛擬地址和物理地址的映射關(guān)系,從而引入大量的數(shù)據(jù)拷貝等開(kāi)銷,同時(shí)還需要預(yù)留一定的物理頁(yè)框,占用較多的內(nèi)存資源。
末級(jí)高速緩存相關(guān)硬件優(yōu)化方法通過(guò)增加性能監(jiān)視模塊,分析并預(yù)測(cè)單個(gè)數(shù)據(jù)行的使用頻率和局部性強(qiáng)度。在預(yù)測(cè)信息的指導(dǎo)下,該系列方法采用旁路等技術(shù)隔離局部性差的數(shù)據(jù),在末級(jí)高速緩存中保護(hù)局部性良好的數(shù)據(jù),從而提高末級(jí)高速緩存利用率,減少處理器訪存延遲。但是,以高速緩存行為單位的、細(xì)粒度的優(yōu)化方法實(shí)現(xiàn)較為復(fù)雜并且需要大量額外的存儲(chǔ)空間,同時(shí)具有較高的設(shè)計(jì)開(kāi)銷和延遲代價(jià)。動(dòng)態(tài)插入策略(DIP)采用錦標(biāo)賽機(jī)制(Set Dueling),在兩種不同的插入策略之間動(dòng)態(tài)切換。該方法僅采用少量硬件邏輯就可以檢測(cè)程序的訪存行為。但是,由于記錄的訪存信息有限,該方法在面對(duì)混合模式(即,LRU友好模式、流模式、顛簸模式中任意模式的組合)時(shí)不能有效檢測(cè)局部性差的數(shù)據(jù),存在一定的誤判現(xiàn)象。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是:如何共同使用硬件和軟件來(lái)有效管理末級(jí)高速緩存以提高處理器的訪存性能,從而有效降低限制局部性差數(shù)據(jù)的末級(jí)高速緩存訪問(wèn)空間并降低末級(jí)高速緩存污染和系統(tǒng)開(kāi)銷。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理系統(tǒng),包括:
分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器,用于在線統(tǒng)計(jì)操作系統(tǒng)的應(yīng)用程序內(nèi)每個(gè)數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息,并控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置;
分區(qū)域訪存行為剖視分析模塊,用于讀取所述末級(jí)高速緩存訪問(wèn)信息并根據(jù)所述末級(jí)高速緩存訪問(wèn)信息來(lái)分析每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征;以及
分區(qū)域旁路及插入策略決策模塊,用于根據(jù)每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征來(lái)為每個(gè)所述數(shù)據(jù)區(qū)域選擇旁路策略或插入策略。
進(jìn)一步地,所述末級(jí)高速緩存訪問(wèn)信息包括:末級(jí)高速緩存失效次數(shù)和末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:
末級(jí)高速緩存失效計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存失效次數(shù);以及
末級(jí)高速緩存命中計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:旁路控制位和插入策略控制位,
并且所述管理系統(tǒng)還包括:
策略選擇寄存器,用于與所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器配合來(lái)控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的插入位置;以及
插入策略控制邏輯電路,包括:反向器,用于對(duì)插入策略控制位執(zhí)行取反操作;以及與門(mén)控制邏輯,用于對(duì)經(jīng)過(guò)取反操作的插入策略控制位和策略選擇寄存器的最高位進(jìn)行與操作,
并且所述控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置包括:
在選擇所述旁路策略情況下通過(guò)所述旁路控制位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域被旁路,使得所述數(shù)據(jù)區(qū)域中的數(shù)據(jù)不訪問(wèn)末級(jí)高速緩存;以及
在選擇所述插入策略情況下通過(guò)所述插入策略控制位和策略選擇寄存器的最高位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域中的數(shù)據(jù)被插入到末級(jí)高速緩存中的位置。
進(jìn)一步地,所述訪存行為包括:最近最少使用友好模式、流模式、顛簸模式和混合模式。
進(jìn)一步地,在所述訪存行為是流模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇旁路策略。
進(jìn)一步地,在所述訪存行為是最近最少使用友好模式、顛簸模式和混合模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇插入策略。
進(jìn)一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果經(jīng)過(guò)與操作的運(yùn)算結(jié)果為1,則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最多使用位置,否則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最少使用位置。
為了解決上述技術(shù)問(wèn)題,本發(fā)明還提供了一種末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理方法,包括:
由分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器在線統(tǒng)計(jì)操作系統(tǒng)的應(yīng)用程序內(nèi)每個(gè)數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息,并控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置;
由分區(qū)域訪存行為剖視分析模塊讀取所述末級(jí)高速緩存訪問(wèn)信息并根據(jù)所述末級(jí)高速緩存訪問(wèn)信息來(lái)分析每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征;以及
由分區(qū)域旁路及插入策略決策模塊根據(jù)每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征來(lái)為每個(gè)所述數(shù)據(jù)區(qū)域選擇旁路策略或插入策略。
進(jìn)一步地,所述末級(jí)高速緩存訪問(wèn)信息包括:末級(jí)高速緩存失效次數(shù)和末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:
末級(jí)高速緩存失效計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存失效次數(shù);以及
末級(jí)高速緩存命中計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:旁路控制位和插入策略控制位,
并且所述管理方法還包括:
由策略選擇寄存器與所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器配合來(lái)控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的插入位置;
由反向器對(duì)插入策略控制位執(zhí)行取反操作;以及
由與門(mén)控制邏輯對(duì)經(jīng)過(guò)取反操作的插入策略控制位和策略選擇寄存器的最高位進(jìn)行與操作,
并且所述控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置包括:
在選擇所述旁路策略情況下通過(guò)所述旁路控制位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域被旁路,使得所述數(shù)據(jù)區(qū)域中的數(shù)據(jù)不訪問(wèn)末級(jí)高速緩存;以及
在選擇所述插入策略情況下通過(guò)所述插入策略控制位和策略選擇寄存器的最高位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域中的數(shù)據(jù)被插入到末級(jí)高速緩存中的位置。
進(jìn)一步地,所述訪存行為包括:最近最少使用友好模式、流模式、顛簸模式和混合模式。
進(jìn)一步地,在所述訪存行為是流模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇旁路策略。
進(jìn)一步地,在所述訪存行為是最近最少使用友好模式、顛簸模式和混合模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇插入策略。
進(jìn)一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果經(jīng)過(guò)與操作的運(yùn)算結(jié)果為1,則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最多使用位置,否則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最少使用位置。
本發(fā)明的有益效果是:本發(fā)明提出的末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理系統(tǒng)和管理方法降低了末級(jí)高速緩存失效,提高了末級(jí)高速緩存命中率,使得未來(lái)經(jīng)常被訪問(wèn)到的數(shù)據(jù)不會(huì)被替換出末級(jí)高速緩存,從而可以有效降低末級(jí)高速緩存造成的性能損失;軟硬件協(xié)作還可以有效減少單純基于硬件實(shí)現(xiàn)的DIP誤判現(xiàn)象,進(jìn)一步提高程序的性能;本發(fā)明在實(shí)現(xiàn)區(qū)域級(jí)軟件控制末級(jí)高速緩存管理策略上僅需要在DIP基礎(chǔ)上添加一個(gè)反向器和一個(gè)與門(mén)控制邏輯,較為簡(jiǎn)單;本發(fā)明設(shè)計(jì)的分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器具有較小的硬件和性能開(kāi)銷,對(duì)系統(tǒng)的整體功耗影響不大;在性能提升的同時(shí),本發(fā)明還可以減少末級(jí)高速緩存動(dòng)態(tài)能耗,提高系統(tǒng)的能耗有效性;本發(fā)明提出的分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器不在末級(jí)高速緩存訪問(wèn)的關(guān)鍵路徑上,可以和末級(jí)高速緩存訪問(wèn)并發(fā)執(zhí)行,從而本發(fā)明不增加末級(jí)高速緩存訪問(wèn)時(shí)延;采用本發(fā)明提出的分區(qū)域旁路和插入策略控制接口對(duì)局部性差的數(shù)據(jù)區(qū)域進(jìn)行隔離時(shí)不需要調(diào)整操作系統(tǒng)物理頁(yè)框分配策略,僅需要根據(jù)剖視信息設(shè)置區(qū)域一級(jí)旁路或插入策略控制位,軟件改動(dòng)較小。
附圖說(shuō)明
圖1是本發(fā)明的末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明的末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理方法的流程圖;
圖3是本發(fā)明的分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器的結(jié)構(gòu)示意圖;
圖4是本發(fā)明的末級(jí)高速緩存分區(qū)域插入策略控制邏輯的邏輯示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
如圖1所示,本發(fā)明實(shí)施例提供了一種末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理系統(tǒng),包括:
分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器,用于在線統(tǒng)計(jì)操作系統(tǒng)的應(yīng)用程序內(nèi)每個(gè)數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息,并控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置;
分區(qū)域訪存行為剖視分析模塊,用于讀取所述末級(jí)高速緩存訪問(wèn)信息并根據(jù)所述末級(jí)高速緩存訪問(wèn)信息來(lái)分析每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征;以及
分區(qū)域旁路及插入策略決策模塊,用于根據(jù)每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征來(lái)為每個(gè)所述數(shù)據(jù)區(qū)域選擇旁路策略或插入策略。
進(jìn)一步地,所述末級(jí)高速緩存訪問(wèn)信息包括:末級(jí)高速緩存失效次數(shù)和末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:
末級(jí)高速緩存失效計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存失效次數(shù);以及
末級(jí)高速緩存命中計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:旁路控制位和插入策略控制位,
并且所述管理系統(tǒng)還包括:
策略選擇寄存器,用于與所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器配合來(lái)控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的插入位置;以及
插入策略控制邏輯電路,包括:反向器,用于對(duì)插入策略控制位執(zhí)行取反操作;以及與門(mén)控制邏輯,用于對(duì)經(jīng)過(guò)取反操作的插入策略控制位和策略選擇寄存器的最高位進(jìn)行與操作,
并且所述控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置包括:
在選擇所述旁路策略情況下通過(guò)所述旁路控制位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域被旁路,使得所述數(shù)據(jù)區(qū)域中的數(shù)據(jù)不訪問(wèn)末級(jí)高速緩存;以及
在選擇所述插入策略情況下通過(guò)所述插入策略控制位和策略選擇寄存器的最高位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域中的數(shù)據(jù)被插入到末級(jí)高速緩存中的位置。
進(jìn)一步地,所述訪存行為包括:最近最少使用友好模式、流模式、顛簸模式和混合模式。
進(jìn)一步地,在所述訪存行為是流模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇旁路策略。
進(jìn)一步地,在所述訪存行為是最近最少使用友好模式、顛簸模式和混合模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇插入策略。
進(jìn)一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果經(jīng)過(guò)與操作的運(yùn)算結(jié)果為1,則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最多使用位置,否則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最少使用位置。
如圖2所示,本發(fā)明實(shí)施例還提供了一種末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理方法,包括:
步驟1:由分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器在線統(tǒng)計(jì)操作系統(tǒng)的應(yīng)用程序內(nèi)每個(gè)數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息,并控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置;
步驟2:由分區(qū)域訪存行為剖視分析模塊讀取所述末級(jí)高速緩存訪問(wèn)信息并根據(jù)所述末級(jí)高速緩存訪問(wèn)信息來(lái)分析每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征;以及
步驟3:由分區(qū)域旁路及插入策略決策模塊根據(jù)每個(gè)所述數(shù)據(jù)區(qū)域的訪存行為和局部性特征來(lái)為每個(gè)所述數(shù)據(jù)區(qū)域選擇旁路策略或插入策略。
進(jìn)一步地,所述末級(jí)高速緩存訪問(wèn)信息包括:末級(jí)高速緩存失效次數(shù)和末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:
末級(jí)高速緩存失效計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存失效次數(shù);以及
末級(jí)高速緩存命中計(jì)數(shù)器,用于計(jì)數(shù)所述末級(jí)高速緩存命中次數(shù)。
進(jìn)一步地,所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器包括:旁路控制位和插入策略控制位,
并且所述管理方法還包括:
由策略選擇寄存器與所述分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器配合來(lái)控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的插入位置;
由反向器對(duì)插入策略控制位執(zhí)行取反操作;以及
由與門(mén)控制邏輯對(duì)經(jīng)過(guò)取反操作的插入策略控制位和策略選擇寄存器的最高位進(jìn)行與操作,
并且所述控制所述數(shù)據(jù)區(qū)域相對(duì)于末級(jí)高速緩存的旁路或插入位置包括:
在選擇所述旁路策略情況下通過(guò)所述旁路控制位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域被旁路,使得所述數(shù)據(jù)區(qū)域中的數(shù)據(jù)不訪問(wèn)末級(jí)高速緩存;以及
在選擇所述插入策略情況下通過(guò)所述插入策略控制位和策略選擇寄存器的最高位來(lái)控制相應(yīng)的數(shù)據(jù)區(qū)域中的數(shù)據(jù)被插入到末級(jí)高速緩存中的位置。
進(jìn)一步地,所述訪存行為包括:最近最少使用友好模式、流模式、顛簸模式和混合模式。
進(jìn)一步地,在所述訪存行為是流模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇旁路策略。
進(jìn)一步地,在所述訪存行為是最近最少使用友好模式、顛簸模式和混合模式或所述局部性特征較差的情況下為相應(yīng)的所述數(shù)據(jù)區(qū)域選擇插入策略。
進(jìn)一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果經(jīng)過(guò)與操作的運(yùn)算結(jié)果為1,則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最多使用位置,否則將相應(yīng)的所述數(shù)據(jù)區(qū)域中的輸入插入到末級(jí)高速緩存中的最近最少使用位置。
為簡(jiǎn)化分析,本發(fā)明實(shí)施例在圖1中僅采用兩級(jí)高速緩存結(jié)構(gòu),即一級(jí)高速緩存(L1Cache)和末級(jí)高速緩存(L2Cache)。在圖1中,處理器發(fā)出訪存操作,訪問(wèn)一級(jí)高速緩存失效后,會(huì)繼續(xù)訪問(wèn)末級(jí)高速緩存。在訪問(wèn)末級(jí)高速緩存前,系統(tǒng)會(huì)查詢分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器,判斷該數(shù)據(jù)所在區(qū)域表項(xiàng)的旁路位是否被設(shè)置。如果該區(qū)域旁路位被設(shè)置,則處理器不再訪問(wèn)末級(jí)高速緩存,直接發(fā)起內(nèi)存設(shè)備訪問(wèn)操作。否則,處理器繼續(xù)訪問(wèn)末級(jí)高速緩存,并在分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器中記錄該次訪問(wèn)的狀態(tài)計(jì)數(shù)。由于末級(jí)高速緩存容量有限,當(dāng)所查找到的數(shù)據(jù)不在末級(jí)高速緩存時(shí)就會(huì)產(chǎn)生失效,在訪問(wèn)末級(jí)高速緩存失效后,系統(tǒng)會(huì)從內(nèi)存中讀取相應(yīng)數(shù)據(jù)進(jìn)入末級(jí)高速緩存。數(shù)據(jù)進(jìn)入末級(jí)高速緩存時(shí)的插入位置由策略選擇寄存器(PSEL)最高位同該區(qū)域的插入策略控制位共同決定。
每個(gè)數(shù)據(jù)區(qū)域的旁路和插入策略由軟件基于在程序運(yùn)行時(shí)刻通過(guò)在線剖視分析的方法進(jìn)行配置。本發(fā)明將訪存密集型程序虛擬地址空間劃分為若干數(shù)據(jù)區(qū)域,并通過(guò)讀取分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器來(lái)獲得不同數(shù)據(jù)區(qū)域的訪存信息。同時(shí),本發(fā)明采用比較判定的方法,根據(jù)單個(gè)數(shù)據(jù)區(qū)域選擇不同的旁路和插入策略前后系統(tǒng)性能的變化來(lái)決定單個(gè)數(shù)據(jù)區(qū)域的訪存行為和局部性特征,并為該數(shù)據(jù)區(qū)域選擇合理的旁路和插入策略。程序地址空間由代碼段、數(shù)據(jù)段、堆和棧組成。不同段之間的訪存行為具有較大差異。本發(fā)明首先以段為單位劃分為四個(gè)大的區(qū)域(分別對(duì)應(yīng)代碼段、數(shù)據(jù)段、堆和棧);然后,將每個(gè)段又進(jìn)一步劃分為多個(gè)大小相等的區(qū)域,每個(gè)區(qū)域的大小、起始地址和結(jié)束地址由所在段決定。在程序運(yùn)行過(guò)程中,堆和棧的大小會(huì)發(fā)生動(dòng)態(tài)變化。操作系統(tǒng)等系統(tǒng)軟件可以通過(guò)監(jiān)控brk系統(tǒng)調(diào)用來(lái)獲得堆的大小變化信息,而通過(guò)定時(shí)讀取棧指針寄存器獲得棧的變化信息。當(dāng)堆或棧的大小發(fā)生變化時(shí),需要計(jì)算每個(gè)區(qū)域的起始地址和結(jié)束地址,并根據(jù)功能不同依據(jù)堆和棧大小的動(dòng)態(tài)變化來(lái)重新配置分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器,以適應(yīng)程序運(yùn)行狀態(tài)的變化。同時(shí),程序執(zhí)行具有階段性的特點(diǎn),不同運(yùn)行階段的訪存行為存在較大差異。本發(fā)明將程序運(yùn)行過(guò)程劃分為若干片段。每個(gè)片段由預(yù)熱、檢測(cè)和執(zhí)行三個(gè)階段組成。在預(yù)熱階段,本發(fā)明將每個(gè)區(qū)域的旁路控制位和插入策略控制位置零,統(tǒng)計(jì)每個(gè)區(qū)域的末級(jí)高速緩存訪問(wèn)信息;在檢測(cè)階段,分別判斷每個(gè)數(shù)據(jù)區(qū)域設(shè)置旁路控制位和插入策略控制位后系統(tǒng)整體性能的變化。本發(fā)明將單指令周期數(shù)(IPC)作為衡量系統(tǒng)性能的指標(biāo),通過(guò)判斷IPC是否增大,作為評(píng)價(jià)旁路和插入策略是否設(shè)置成功的標(biāo)準(zhǔn)。單指令數(shù)周期數(shù)可以通過(guò)讀取指令高速緩存性能監(jiān)視器的訪問(wèn)計(jì)數(shù)獲得。指令高速緩存性能監(jiān)視器已經(jīng)被現(xiàn)代處理器廣泛采用,關(guān)于該設(shè)備的實(shí)現(xiàn)細(xì)節(jié)不再詳述;在執(zhí)行階段,根據(jù)檢測(cè)階段的分析結(jié)果確定每個(gè)區(qū)域的旁路和插入策略,并配置分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器。設(shè)置每個(gè)階段的時(shí)間長(zhǎng)度需要權(quán)衡精度和時(shí)間代價(jià)。相關(guān)研究表明統(tǒng)計(jì)周期設(shè)置為500萬(wàn)個(gè)時(shí)鐘周期可以在準(zhǔn)確性和開(kāi)銷之間達(dá)到較好的平衡。因此,在本發(fā)明中執(zhí)行階段設(shè)置為500萬(wàn)個(gè)時(shí)鐘周期,而預(yù)熱和檢測(cè)階段設(shè)置為50萬(wàn)個(gè)時(shí)鐘周期。
分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器主要用于記錄不同數(shù)據(jù)區(qū)域在末級(jí)高速緩存中的訪問(wèn)信息,并提供旁路和插入策略控制位由軟件根據(jù)單個(gè)數(shù)據(jù)區(qū)域的訪存行為進(jìn)行配置。具體結(jié)構(gòu)如圖3所示。該設(shè)備由多個(gè)數(shù)據(jù)行組成。每個(gè)行表示一個(gè)數(shù)據(jù)區(qū)域,主要由以下六個(gè)域組成:
1)start_addr:標(biāo)識(shí)該數(shù)據(jù)區(qū)域的起始地址;
2)end_addr:標(biāo)識(shí)該數(shù)據(jù)區(qū)域的結(jié)束地址;
3)llc_miss:末級(jí)高速緩存失效計(jì)數(shù)器;
4)llc_hit:末級(jí)高速緩存命中計(jì)數(shù)器;
5)bypass_bit:旁路控制位;
6)insert_bit:插入策略控制位。
在系統(tǒng)運(yùn)行過(guò)程中,每個(gè)末級(jí)高速緩存訪問(wèn)操作會(huì)同時(shí)訪問(wèn)該控制器。通過(guò)比較末級(jí)高速緩存訪問(wèn)地址和每個(gè)數(shù)據(jù)行起始地址及結(jié)束地址之間的大小關(guān)系,可以確定該地址所在的數(shù)據(jù)區(qū)域。如果該區(qū)域所在行的旁路控制位沒(méi)有置1,說(shuō)明該區(qū)域中的數(shù)據(jù)可以訪問(wèn)末級(jí)高速緩存,并根據(jù)訪問(wèn)狀態(tài)更新末級(jí)高速緩存命中或失效計(jì)數(shù)器。否則,該次訪問(wèn)將被旁路。本文提出的分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器不在末級(jí)高速緩存訪問(wèn)的關(guān)鍵路徑上(即不需要串行訪問(wèn)),可以和末級(jí)高速緩存訪問(wèn)并發(fā)執(zhí)行。因此,本發(fā)明不增加末級(jí)高速緩存訪問(wèn)時(shí)延。
分區(qū)域旁路控制實(shí)現(xiàn)較為簡(jiǎn)單,由分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器所在行的旁路控制位決定。當(dāng)該位置1時(shí),表示該區(qū)域中的數(shù)據(jù)將會(huì)被旁路。插入策略控制應(yīng)該考慮PSEL的狀態(tài),因此需要添加新的控制邏輯。具體結(jié)構(gòu)如圖4所示。本發(fā)明在DIP基礎(chǔ)上添加了插入策略控制邏輯電路,其包括一個(gè)反向器和一個(gè)與門(mén)控制邏輯,用于實(shí)現(xiàn)分區(qū)域末級(jí)高速緩存插入策略控制。單個(gè)數(shù)據(jù)進(jìn)入末級(jí)高速緩存時(shí)采用的插入策略,由PSEL最高位和該數(shù)據(jù)所在區(qū)域的插入策略控制位insert_bit位共同決定。采用該方式可以將兩種不同粒度的插入策略控制方法相結(jié)合,更加有效地檢測(cè)和隔離局部性差的數(shù)據(jù)。相關(guān)控制邏輯為插入策略控制位insert_bit執(zhí)行取反操作后同PSEL最高位進(jìn)行與操作。當(dāng)運(yùn)算結(jié)果為1時(shí)執(zhí)行LRU替換算法,將進(jìn)入末級(jí)高速緩存的數(shù)據(jù)放入到替換鏈表的MRU位置;否則執(zhí)行BIP插入策略,將進(jìn)入末級(jí)高速緩存的數(shù)據(jù)以較大的概率放入到LRU位置。
與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計(jì)了輕量級(jí)的末級(jí)高速緩存分區(qū)域性能監(jiān)視器,在線統(tǒng)計(jì)程序內(nèi)不同數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息,例如命中次數(shù)和失效次數(shù)。同時(shí),本發(fā)明還設(shè)計(jì)了末級(jí)高速緩存分區(qū)域旁路和插入策略控制接口。在運(yùn)行時(shí)刻剖視分析不同數(shù)據(jù)區(qū)域訪存行為的基礎(chǔ)上,軟件可以確定每個(gè)數(shù)據(jù)區(qū)域所采用的旁路和插入策略。通過(guò)配置相關(guān)的旁路和插入策略控制接口,軟件可以控制單個(gè)數(shù)據(jù)區(qū)域中的數(shù)據(jù)是否訪問(wèn)末級(jí)高速緩存以及進(jìn)入末級(jí)高速緩存后的插入位置,從而影響單個(gè)數(shù)據(jù)區(qū)域的末級(jí)高速緩存空間。
大體上,本發(fā)明提出的末級(jí)高速緩存軟硬件協(xié)作分區(qū)域管理策略主要包括管理策略配置和實(shí)際運(yùn)行兩個(gè)階段。在管理策略配置階段,本方法首先利用分區(qū)域性能監(jiān)視及末級(jí)高速緩存控制器統(tǒng)計(jì)程序內(nèi)不同數(shù)據(jù)區(qū)域的末級(jí)高速緩存訪問(wèn)信息。軟件可以通過(guò)讀取該控制器中的數(shù)據(jù)來(lái)分析不同數(shù)據(jù)區(qū)域的訪存行為和局部性特征;其次,在確定單個(gè)數(shù)據(jù)區(qū)域的訪存行為后,軟件通過(guò)旁路和插入策略決策模塊為該區(qū)域選擇合理的旁路和插入策略;最后,利用該控制器提供的控制接口設(shè)置單個(gè)數(shù)據(jù)區(qū)域的旁路和插入策略。
現(xiàn)有技術(shù)通常是離線方法即讓程序先運(yùn)行一遍,搜集訪問(wèn)蹤跡,然后進(jìn)行判定;而本發(fā)明是在程序運(yùn)行階段,根據(jù)前一階段的訪問(wèn)信息,判定下一階段的訪存行為,更具有普適性。
在實(shí)際運(yùn)行過(guò)程中,一級(jí)高速緩存失效后的數(shù)據(jù)在進(jìn)入末級(jí)高速緩存前會(huì)被判斷其所在的數(shù)據(jù)區(qū)域是否被旁路。如果旁路位置1,則該數(shù)據(jù)被旁路,直接訪問(wèn)主存不進(jìn)入末級(jí)高速緩存中。此外,本發(fā)明還設(shè)置末級(jí)高速緩存分區(qū)域插入策略控制位及控制邏輯。本發(fā)明以DIP為基礎(chǔ)在LRU和BIP兩種插入策略中選擇。DIP靜態(tài)劃分末級(jí)高速緩存,通過(guò)PSEL動(dòng)態(tài)記錄采用LRU替換算法測(cè)試組和采用雙模式插入策略(BIP(Bimodal Insertion Policy))策略測(cè)試組的末級(jí)高速緩存失效次數(shù)比較結(jié)果。BIP策略在芯片內(nèi)部維護(hù)一個(gè)偽隨機(jī)數(shù)生成器用于決定該頁(yè)中數(shù)據(jù)的首次插入位置。該策略以較小概率(本文設(shè)定為1/32)將新放入末級(jí)高速緩存中的數(shù)據(jù)插入到最近最多使用位置,其他情況下插入到替換鏈表的最近最少使用位置,從而滿足顛簸模式的要求。該方法根據(jù)PSEL最高位變化動(dòng)態(tài)調(diào)整其他末級(jí)高速緩存組的插入策略。在引入?yún)^(qū)域一級(jí)插入策略控制位后,末級(jí)高速緩存新加入數(shù)據(jù)所在替換鏈表中的插入位置將由該位同PSEL最高位共同決定。
作為存儲(chǔ)層次結(jié)構(gòu)的重要一級(jí),末級(jí)高速緩存同其他高速緩存一樣由硬件進(jìn)行組織和管理。單純基于硬件的末級(jí)高速緩存管理策略具有一定的問(wèn)題,不能解決末級(jí)高速緩存污染,存在性能優(yōu)化的空間。本發(fā)明在現(xiàn)有處理器末級(jí)高速緩存的結(jié)構(gòu)上,添加少量硬件邏輯和存儲(chǔ)單元,建立軟硬件協(xié)作的末級(jí)高速緩存分區(qū)域管理策略。本發(fā)明可以根據(jù)程序內(nèi)不同數(shù)據(jù)區(qū)域的訪存行為針對(duì)性地配置每個(gè)數(shù)據(jù)區(qū)域的旁路或插入策略。本方法采用旁路技術(shù)將具有流訪問(wèn)模式的數(shù)據(jù)不經(jīng)過(guò)末級(jí)高速緩存,直接訪問(wèn)內(nèi)存設(shè)備。同時(shí),本方法還通過(guò)配置單個(gè)數(shù)據(jù)區(qū)域的插入策略,影響不同高速緩存行的替換優(yōu)先級(jí),進(jìn)而影響高速緩存中的數(shù)據(jù)。采用上述措施,可以有效降低限制局部性差數(shù)據(jù)的末級(jí)高速緩存訪問(wèn)空間,降低末級(jí)高速緩存污染。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。