本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種面向混合主存的多核共享末級緩存管理方法及裝置。
背景技術(shù):
隨著應(yīng)用程序(比如搜索引擎、機(jī)器學(xué)習(xí))所處理數(shù)據(jù)集的規(guī)模不斷擴(kuò)大以及片上處理器核數(shù)的不斷增多,基于SRAM/DRAM的存儲(chǔ)系統(tǒng)逐漸成為了系統(tǒng)能耗和擴(kuò)展性的瓶頸。最近出現(xiàn)的非易失性存儲(chǔ)器NVM(Non-Volatile Memory),如磁阻式隨機(jī)存儲(chǔ)器(Magnetic Random Access Memory,簡稱MRAM)、自旋轉(zhuǎn)移力矩磁阻式存儲(chǔ)器(Spin-transfer-torque Magnetic Random Access Memory,簡稱STT-MRAM)、可變電阻式存儲(chǔ)器(Resistive Random Access Memory,簡稱ReRAM)、相變存儲(chǔ)器(Phase-change Random Access Memory,簡稱PCM)被認(rèn)為是下一代存儲(chǔ)體系中非常有競爭力的一種存儲(chǔ)器。和傳統(tǒng)的存儲(chǔ)器相比,NVM具有高密度、低靜態(tài)功耗和非易失性的特點(diǎn)。然而,目前NVM由于其本身的物理特性,導(dǎo)致其訪問延遲較長和動(dòng)態(tài)功耗較高,尤其是寫操作。
鑒于DRAM和NVM各自的優(yōu)缺點(diǎn),由DRAM和NVM處于同一線性地址空間下的混合主存架構(gòu)被提出。此架構(gòu)的目標(biāo)是能夠有效利用DRAM較低的寫延遲和NVM高密度以及低靜態(tài)功耗等各自優(yōu)良的特性,以便提高系統(tǒng)的性能和降低能耗。為了上述目標(biāo),目前大多數(shù)針對混合主存架構(gòu)的研究都集中于設(shè)計(jì)不同的頁面遷移策略,以達(dá)到把寫次數(shù)較多以及讀頻繁的頁面集中到DRAM而把其余頁面放置到NVM的目的。然而,在普遍具有多級緩存Cache的現(xiàn)代處理器中,如果Cache是通過物理地址進(jìn)行訪問,在混合主存架構(gòu)中實(shí)現(xiàn)DRAM和NVM不同存儲(chǔ)空間的頁面遷移需要付出很大的代價(jià),其不僅需要主存頁面間的數(shù)據(jù)拷貝,而且也需要對片上的Cache進(jìn)行相關(guān)的操作(比如失效、寫回)。
實(shí)際上,在現(xiàn)代處理器中由多核共享的較大容量的末級緩存對系統(tǒng)的性能起著至關(guān)重要的作用。末級緩存Cache的管理策略不僅決定了Cache發(fā)生缺失和對主存訪問的數(shù)目,同時(shí)對單獨(dú)主存數(shù)據(jù)塊的缺失率也有較大的影響。因此,在混合主存系統(tǒng)中,通過設(shè)計(jì)相應(yīng)的緩存Cache管理策略可以比較高效地對DRAM數(shù)據(jù)和NVM數(shù)據(jù)的讀寫操作數(shù)目進(jìn)行控制。
目前,普遍使用的緩存Cache管理策略(比如LRU)都是以降低缺失數(shù)目為目標(biāo),認(rèn)為不同數(shù)據(jù)塊的缺失代價(jià)相一致。但在混合主存系統(tǒng)架構(gòu)下,DRAM和NVM數(shù)據(jù)的缺失代價(jià)具有明顯的差異性。Lee,B.C.等人以PCM為例,得出PCM的讀和寫延遲分別是DRAM的4.4倍和12.0倍,讀和寫能耗分別是DRAM的2.1倍和43.1倍,致使不同請求的缺失對系統(tǒng)性能的影響差異會(huì)更大(Architecting phase change memory as a scalable dram alternative.ACM SIGARCH Computer Architecture News,2009.37(3):p.2-13)。因此,在混合主存系統(tǒng)架構(gòu)下,相同的缺失數(shù)目可能并不代表相同的性能,NVM缺失數(shù)目相對少的性能要優(yōu)于另一方。
另外,在多核環(huán)境下,不同核上所跑應(yīng)用程序之間存在對末級緩存空間的競爭關(guān)系,某一核上應(yīng)用程序數(shù)據(jù)在末級緩存的插入可能導(dǎo)致另一個(gè)核上應(yīng)用程序的數(shù)據(jù)被替換出去。當(dāng)前針對多核系統(tǒng),關(guān)于末級緩存替換策略的研究主要是通過“劃分”的思想,把末級緩存按照緩存組或者緩存行粒度分配給每個(gè)核,以達(dá)到降低核間干擾和提高命中率的目的。但是,先前的劃分算法還是基于數(shù)據(jù)塊之間缺失代價(jià)不具有差異性而設(shè)計(jì)的,其不再適用于混合主存架構(gòu)系統(tǒng)。
鑒于此,需要一種改進(jìn)的多核共享末級緩存管理策略以解決現(xiàn)有的技術(shù)問題,提高系統(tǒng)的整體性能。
技術(shù)實(shí)現(xiàn)要素:
針對以上技術(shù)問題,本發(fā)明的目的是提供一種面向混合主存的多核共享末級緩存管理方法及裝置,綜合考慮了混合主存系統(tǒng)中不同主存介質(zhì)之間的物理特性差異,優(yōu)化了傳統(tǒng)以降低缺失數(shù)目為目標(biāo)的LRU替換算法,減少了存儲(chǔ)能量開銷,達(dá)到了降低核間干擾和提高命中率的目的,有效提高了末級緩存的訪存性能。
為達(dá)到上述目的,本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn):
本發(fā)明提供一種面向混合主存的多核共享末級緩存管理方法,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,管理方法包括以下步驟:
S1:獲得處理器的多核的末級緩存路數(shù)劃分方式;
S2:判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,
如果命中,則執(zhí)行緩存行提升策略;
如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接執(zhí)行緩存行插入策略,或者先執(zhí)行緩存行回收策略,然后執(zhí)行緩存行插入策略。
優(yōu)選地,步驟S1具體包括:
S11:為處理器的每個(gè)核配置一個(gè)訪問特性監(jiān)控器,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性;
S12:采用動(dòng)態(tài)抽樣機(jī)制,在每一個(gè)計(jì)數(shù)周期開始,從處理器的多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,選取的上述多個(gè)緩存組采用最近最少使用替換策略;
S13:在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值;
S14:根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)劃分方式。
優(yōu)選地,在步驟S1之后,還包括:
將末級緩存中的緩存行分成四種類型:DN、DD、CN和CD,所述DN、DD、CN和CD四種緩存行的優(yōu)先級分別用DNP、DDP、CNP和CDP代表,并設(shè)定上述四種緩存行的優(yōu)先級高低關(guān)系為DNP>DDP>CNP>CDP;
為末級緩存中的每個(gè)緩存組配置一個(gè)飽和計(jì)數(shù)器,用于動(dòng)態(tài)地調(diào)整不同緩存行的插入位置和提升幅度;
為每個(gè)緩存組中的每個(gè)緩存行設(shè)置標(biāo)記,用于指示該緩存行中的數(shù)據(jù)是來源于NVM還是DRAM。
優(yōu)選地,所述緩存行提升策略包括:判斷命中的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果命中的緩存行的數(shù)據(jù)來源于NVM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DNP)p個(gè)位置,其中(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果命中的緩存行的數(shù)據(jù)來源于DRAM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DDP)p個(gè)位置,其中(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
優(yōu)選地,所述緩存行回收策略是指選取在緩存組中處于最低優(yōu)先級位置的緩存行進(jìn)行回收。
優(yōu)選地,所述緩存行插入策略包括:判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則將存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DNP)i,其中(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DDP)i,其中(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CNP)i,其中(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CDP)i,其中(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
優(yōu)選地,所述一個(gè)計(jì)數(shù)周期是指當(dāng)處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間。
本發(fā)明還提供了基于上述的面向混合主存的多核共享末級緩存管理方法的面向混合主存的多核共享末級緩存管理裝置,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,管理裝置包括以下模塊:
末級緩存路數(shù)劃分模塊,用于獲得處理器的多核的末級緩存路數(shù)劃分方式;
判斷模塊,用于判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,如果命中,則執(zhí)行緩存行提升模塊;如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接執(zhí)行緩存行插入模塊,或者先執(zhí)行緩存行回收模塊,然后執(zhí)行緩存行插入模塊。
優(yōu)選地,末級緩存路數(shù)劃分模塊進(jìn)一步包括:
末級緩存路數(shù)劃分模塊進(jìn)一步包括:
訪問特性監(jiān)控器配置模塊,用于為每個(gè)核配置一個(gè)訪問特性監(jiān)控器,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性;
動(dòng)態(tài)抽樣模塊,用于采用動(dòng)態(tài)抽樣機(jī)制,在每一個(gè)計(jì)數(shù)周期開始,從多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,選取的上述多個(gè)緩存組采用最近最少使用替換策略;
命中權(quán)重值讀取模塊,用于在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值;
末級緩存路數(shù)獲取模塊,用于根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)劃分方式。
優(yōu)選地,還包括:
飽和計(jì)數(shù)器配置模塊,用于為末級緩存中的每個(gè)緩存組配置一個(gè)飽和計(jì)數(shù)器,以動(dòng)態(tài)地調(diào)整不同緩存行的插入位置和提升幅度;
緩存行標(biāo)記模塊,用于為每個(gè)緩存組中的每個(gè)緩存行設(shè)置標(biāo)記,以指示該緩存行中的數(shù)據(jù)是來源于NVM還是DRAM。
優(yōu)選地,所述緩存行提升模塊,用于判斷命中的緩存行是來源于NVM還是DRAM,進(jìn)行緩存行的位置提升操作。
優(yōu)選地,所述緩存行回收模塊,用于選取在緩存組中處于最低優(yōu)先級位置的緩存行進(jìn)行回收操作。
優(yōu)選地,所述緩存行插入模塊,用于判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,進(jìn)行緩存行的位置插入操作。
與現(xiàn)有技術(shù)相比,本發(fā)明一種面向混合主存的多核共享末級緩存管理方法的有益效果如下:
1.本發(fā)明針對混合主存DRAM和NVM,提供了一種改進(jìn)的多核末級緩存路數(shù)劃分方式,其為處理器的每個(gè)核設(shè)置一個(gè)訪問特性監(jiān)控器,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性,采用動(dòng)態(tài)采樣機(jī)制,并根據(jù)命中的數(shù)據(jù)類型不同(DRAM或者NVM,干凈數(shù)據(jù)或臟數(shù)據(jù))累加不同的權(quán)重值。在每個(gè)計(jì)數(shù)周期結(jié)束時(shí),根據(jù)緩存行的命中權(quán)重值,處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),從而獲得多核末級緩存路數(shù)劃分方式,既有效降低了不同核間數(shù)據(jù)的干擾,又考慮了混合主存系統(tǒng)所引入的數(shù)據(jù)差異性,使這種劃分方式更適合混合主存的架構(gòu)系統(tǒng);
2.本發(fā)明預(yù)先將緩存行分成四類,又鑒于在末級緩存中臟緩存行的命中率較高以及NVM缺失的代價(jià)高于DRAM,而設(shè)定了四類緩存行的優(yōu)先級順序,并動(dòng)態(tài)調(diào)整緩存行的優(yōu)先級順序,提供了一種提升策略和插入策略更優(yōu)化的算法,使其更適用于混合主存的架構(gòu)系統(tǒng);
3.由于在混合主存系統(tǒng)架構(gòu)下,DRAM和NVM數(shù)據(jù)的缺失代價(jià)具有明顯的差異性,而相同的缺失數(shù)目可能并不能代表相同的性能,NVM缺失數(shù)目相對少的性能要優(yōu)于另一方,而傳統(tǒng)的LLC管理策略并沒有考慮DRAM和NVM訪問之間對系統(tǒng)性能和能耗的代價(jià)差異,因此無法獲得很好的性能和較低的能耗。本發(fā)明基于多核的末級緩存路數(shù)劃分方式,對DRAM和NVM數(shù)據(jù)進(jìn)行區(qū)分,提供了一種面向混合主存的多核共享末級緩存管理方法,優(yōu)化了傳統(tǒng)以降低缺失數(shù)目為目標(biāo)的LRU替換算法,減少了存儲(chǔ)能量開銷,達(dá)到了降低核間干擾和提高命中率的目的,有效提高了末級緩存的訪存性能。
一種面向混合主存的多核共享末級緩存管理裝置的有益效果與一種面向混合主存的多核共享末級緩存管理方法的有益效果類似,在此不再贅述。
附圖說明
圖1為本發(fā)明面向混合主存的多核共享末級緩存管理方法的流程示意圖之一。
圖2為本發(fā)明面向混合主存的多核共享末級緩存管理方法的流程示意圖之二。
圖3為本發(fā)明實(shí)施例2中提供的系統(tǒng)整體架構(gòu)示意圖。
圖4為本發(fā)明實(shí)施例2中提供的AFM的內(nèi)部結(jié)構(gòu)示意圖。
圖5為本發(fā)明實(shí)施例2中提供的命中權(quán)重值曲線圖。
圖6為本發(fā)明實(shí)施例2中提供的末級緩存執(zhí)行三種管理策略的過程示意圖。
圖7為本發(fā)明面向混合主存的多核共享末級緩存管理裝置的結(jié)構(gòu)示意圖之一。
圖8為本發(fā)明面向混合主存的多核共享末級緩存管理裝置的結(jié)構(gòu)示意圖之二。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都來源于本發(fā)明保護(hù)的范圍。
下面對本發(fā)明中出現(xiàn)的部分名詞進(jìn)行解釋說明:
主存儲(chǔ)器:英文全稱Main Memory,簡稱主存,是計(jì)算機(jī)硬件的一個(gè)重要部件,其作用是存放指令和數(shù)據(jù),并能由中央處理器(CPU)直接隨機(jī)存取。現(xiàn)代計(jì)算機(jī)是為了提高性能,又能兼顧合理的造價(jià),往往采用多級存儲(chǔ)體系,即由存儲(chǔ)容量小,存取速度高的高速緩沖存儲(chǔ)器,存儲(chǔ)容量和存取速度適中的主存儲(chǔ)器是必不可少的。主存儲(chǔ)器是按地址存放信息的,存取速度一般與地址無關(guān)。
靜態(tài)隨機(jī)存取存儲(chǔ)器:英文全稱Static Random Access Memory,簡稱SRAM,它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù)。SRAM主要用于二級高速緩存(Level2Cache)。與DRAM相比,SRAM的速度快,但在相同面積中SRAM的容量要比其他類型的內(nèi)存小。
動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器:英文全稱Dynamic Random Access Memory,簡稱DRAM,是最為常見的系統(tǒng)內(nèi)存。DRAM只能將數(shù)據(jù)保持很短的時(shí)間。為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲(chǔ),所以必須隔一段時(shí)間刷新(refresh)一次,如果存儲(chǔ)單元沒有被刷新,存儲(chǔ)的信息就會(huì)丟失。
非易失存儲(chǔ)器:英文全稱Non-Volatile Memory,簡稱NVM,具有非易失、按字節(jié)存取、存儲(chǔ)密度高、低能耗、讀寫性能接近DRAM,但讀寫速度不對稱,壽命有限,指當(dāng)電流關(guān)掉后,所存儲(chǔ)的數(shù)據(jù)不會(huì)消失的計(jì)算機(jī)存儲(chǔ)器。
高速緩沖存儲(chǔ)器:也就是平??吹降囊患壘彺?L1Cache)、二級緩存(L2Cache)、三級緩存(L3Cache)這些數(shù)據(jù),它位于CPU與內(nèi)存之間,是一個(gè)讀寫速度比內(nèi)存更快的存儲(chǔ)器。當(dāng)CPU向內(nèi)存中寫入或讀出數(shù)據(jù)時(shí),這個(gè)數(shù)據(jù)也被存儲(chǔ)進(jìn)高速緩沖存儲(chǔ)器中。當(dāng)CPU再次需要這些數(shù)據(jù)時(shí),CPU就從高速緩沖存儲(chǔ)器讀取數(shù)據(jù),而不是訪問較慢的內(nèi)存,當(dāng)然,如需要的數(shù)據(jù)在Cache中沒有,CPU會(huì)再去讀取內(nèi)存中的數(shù)據(jù)。高速緩沖存儲(chǔ)器最重要的技術(shù)指標(biāo)是它的命中率。
最近最少使用(Least Recently Used)替換策略:簡稱LRU替換策略,根據(jù)數(shù)據(jù)的歷史訪問記錄來進(jìn)行淘汰數(shù)據(jù),其核心思想是“如果數(shù)據(jù)最近被訪問過,那么將來被訪問的幾率也更高”。
下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明一種面向混合主存的多核共享末級緩存管理方法及裝置作進(jìn)一步地說明:
實(shí)施例1
參考圖1,示出了本發(fā)明所提供的一種面向混合主存的多核共享末級緩存管理方法,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,該管理方法包括以下步驟:
S101:獲得處理器的多核的末級緩存路數(shù)劃分方式。
S102:判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,
如果命中,則進(jìn)行步驟S103執(zhí)行緩存行提升策略(Promotion Policy);
如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接進(jìn)行步驟S104執(zhí)行緩存行插入策略(Insertion Policy),或者先進(jìn)行步驟S105執(zhí)行緩存行回收策略(Eviction Policy),然后進(jìn)行步驟S108執(zhí)行緩存行插入策略(Insertion Policy)。
其中步驟101具體包括:
S1011:為處理器的每個(gè)核配置一個(gè)訪問特性監(jiān)控器(Access Feature Monitor,簡稱AFM),識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性。
S1012:采用動(dòng)態(tài)抽樣機(jī)制(Dynamic Sample Sampling,簡稱DSS),在每一個(gè)計(jì)數(shù)周期開始,從多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,所述一個(gè)計(jì)數(shù)周期是指當(dāng)處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間。
S1013:在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值。
S1014:根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)(cache way)劃分方式。
上述步驟S103的緩存行提升策略(Promotion Policy)包括:判斷命中的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果命中的緩存行的數(shù)據(jù)來源于NVM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DNP)p個(gè)位置,其中(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2,該緩存行的位置最大可提升至最高優(yōu)先級位置(即MRU位置);
如果命中的緩存行的數(shù)據(jù)來源于DRAM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DDP)p個(gè)位置,其中(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8,該緩存行的優(yōu)先級位置最大可提升至最高優(yōu)先級位置(即MRU位置)。
上述步驟S104的緩存行回收策略(Eviction Policy)是指選取在緩存組中處于最低優(yōu)先級位置(即LRU位置)的緩存行進(jìn)行回收。
上述步驟S105的緩存行插入策略(Insertion Policy)包括:判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則將存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DNP)i,其中(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DDP)i,其中(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CNP)i,其中(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CDP)i,其中(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
實(shí)施例2
參考圖2,示出了本發(fā)明所提供的另一種面向混合主存的多核共享末級緩存管理方法,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,該管理方法包括以下步驟:
S201:獲得處理器的多核的末級緩存路數(shù)劃分方式。
S202:將末級緩存(Last Level Cache,簡稱LLC)中的緩存行(cache line)分成四種類型:臟NVM數(shù)據(jù)(Dirty-NVM,記為DN),臟DRAM數(shù)據(jù)(Dirty-DRAM,記為DD),干凈NVM數(shù)據(jù)(Clean-NVM,記為CN)和干凈DRAM數(shù)據(jù)(Clean-DRAM,記為CD),所述DN、DD、CN和CD四種緩存行的優(yōu)先級分別用DNP、DDP、CNP和CDP代表,并設(shè)定上述四種緩存行的優(yōu)先級高低關(guān)系為DNP>DDP>CNP>CDP。
一個(gè)有效的緩存行,它的內(nèi)容沒有被修改過,我們稱這個(gè)緩存行是干凈的(clean),相反狀態(tài)是臟的(dirty)。
在多級緩存系統(tǒng)中,對末級緩存的訪問類型可分為兩種,一種是按需訪問(demand access),是指CPU發(fā)出的讀/寫請求在上幾層緩存中都沒有命中,然后產(chǎn)生對末級緩存的訪問;另一種是寫回訪問(Write Back),是指最靠近末級緩存的上層Cache替換出一個(gè)臟緩存行而導(dǎo)致的對末級緩存的訪問。其中按需訪問如果在末級緩存中發(fā)生缺失,則需要從主存中讀取數(shù)據(jù),這會(huì)導(dǎo)致CPU等待影響性能,而寫回訪問發(fā)生缺失并不會(huì)引起對主存的讀操作。因此,通常來說,按需訪問對系統(tǒng)性能的影響要大于寫回訪問。通過實(shí)驗(yàn)表明,基于最近最少使用(Least Recently Used,簡稱LRU)替換策略,平均有75.3%的末級緩存按需訪問命中的緩存行是臟Cache行。這說明臟Cache行有更高的概率被再次訪問,應(yīng)該給予較高的優(yōu)先級。
另外,因?yàn)镹VM的訪問延遲和動(dòng)態(tài)功耗大于DRAM的訪問延遲和動(dòng)態(tài)功耗,也即NVM數(shù)據(jù)缺失的代價(jià)高于DRAM數(shù)據(jù)缺失,因此,NVM的優(yōu)先級應(yīng)該高于DRAM。故設(shè)定上述四種緩存行的優(yōu)先級高低關(guān)系為DNP>DDP>CNP>CDP。
S203:為末級緩存中的每個(gè)緩存組(cache set)配置一個(gè)飽和計(jì)數(shù)器(saturating counter),用于動(dòng)態(tài)地調(diào)整不同緩存行的插入位置和提升幅度,飽和計(jì)數(shù)器的位數(shù)=log2A,其中A為末級緩存的組相聯(lián)度,則飽和計(jì)數(shù)器的數(shù)值范圍為0~(A-1)。
為了反映本發(fā)明為不同類型的緩存行設(shè)定的不同優(yōu)先級,本發(fā)明對LRU的插入策略和提升策略分別進(jìn)行了調(diào)整。比如,新插入的緩存行數(shù)據(jù)應(yīng)該根據(jù)其緩存行類型及其優(yōu)先級決定其插入位置,同時(shí)命中的緩存行數(shù)據(jù)提升的幅度也應(yīng)有不同,而不是如LRU把緩存行數(shù)據(jù)都放到最高優(yōu)先級的位置。當(dāng)發(fā)生NVM按需訪問缺失時(shí)飽和計(jì)數(shù)器值減一,而當(dāng)DRAM按需訪問缺失時(shí)進(jìn)行加一。然而針對寫回訪問,無論命中或是缺失,都不會(huì)對飽和計(jì)數(shù)器進(jìn)行更新。具體見緩存行提升策略和緩存行插入策略。
直觀上看,飽和計(jì)數(shù)器值越大表明當(dāng)前執(zhí)行階段DRAM按需訪問缺失次數(shù)越多,因此對于DRAM數(shù)據(jù)塊的插入位置和提升幅度都應(yīng)該做出相應(yīng)的提高,以增加對DRAM數(shù)據(jù)的命中率。由于寫回訪問并不是處理器主動(dòng)發(fā)出的請求,而只是上層緩存被動(dòng)的把臟數(shù)據(jù)替換出去造成的,因此不能代表程序當(dāng)前執(zhí)行階段的訪存情況,所寫回訪問不應(yīng)該對飽和計(jì)數(shù)器值做出改變。
S204:為每個(gè)緩存組中的每個(gè)緩存行設(shè)置標(biāo)記,用于指示該緩存行中的數(shù)據(jù)是來源于NVM還是DRAM。
S205:判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,
如果命中,則進(jìn)行步驟S206執(zhí)行緩存行提升策略(Promotion Policy);
如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接進(jìn)行步驟S208執(zhí)行緩存行插入策略(Insertion Policy),或者先進(jìn)行步驟S207執(zhí)行緩存行回收策略(Eviction Policy),然后進(jìn)行步驟S208執(zhí)行緩存行插入策略(Insertion Policy)。
也就是說,如果當(dāng)緩存組還有存儲(chǔ)空間,可以直接進(jìn)行緩存行插入;如果當(dāng)緩存組已寫滿數(shù)據(jù),則需要選擇一個(gè)緩存行進(jìn)行回收,以便留出空間,才能進(jìn)行緩存行插入。
其中步驟201具體包括:
S2011:為處理器的每個(gè)核配置一個(gè)訪問特性監(jiān)控器(Access Feature Monitor,簡稱AFM),識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性。
S2012:采用動(dòng)態(tài)抽樣機(jī)制(Dynamic Sample Sampling,簡稱DSS),在每一個(gè)計(jì)數(shù)周期開始,從多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,所述一個(gè)計(jì)數(shù)周期是指當(dāng)處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間。
選取的上述多個(gè)緩存組采用最近最少使用(Least Recently Used,簡稱LRU)替換策略,則每個(gè)緩存組的最高優(yōu)先級位置(即MRU位置)的位數(shù)值為A-1,最低優(yōu)先級位置(即LRU位置)的位數(shù)值為0。
由于LRU替換策略所具有棧的特性(如果在路數(shù)為N的情況下發(fā)生明中,那么在路數(shù)超過N的情形下肯定發(fā)生命中),本發(fā)明對AFM中的緩存組采取LRU替換策略,可以粗略估計(jì)出當(dāng)前核在分配不同路數(shù)時(shí)的命中情況,以便用于路數(shù)劃分的判定。
訪問特性監(jiān)控器給上述多個(gè)緩存組中的每一路設(shè)置四個(gè)標(biāo)記信息,所述標(biāo)記信息包括:(1)tag,用于指示是否命中的信息;(2)dirty,用于指示當(dāng)前數(shù)據(jù)是否是臟數(shù)據(jù)的信息;(3)isNVM,用于指示當(dāng)前數(shù)據(jù)是否來源于NVM的信息;(4)加權(quán)命中計(jì)數(shù)器(Weighted Hit Counter,簡稱WHC),用于統(tǒng)計(jì)當(dāng)前緩存行所在位置命中權(quán)重值。
在混合主存DRAM和NVM的系統(tǒng)中,由于DRAM和NVM之間讀寫的非一致性,導(dǎo)致不能再單純地以命中次數(shù)作為衡量系統(tǒng)性能的標(biāo)準(zhǔn)。比如以NVM中的相變存儲(chǔ)器(Phase Change Memory,簡稱PCM)為例,其與DRAM相比,讀延遲是DRAM是4.4倍,寫延遲是DRAM的12倍。所以在相同命中次數(shù)的情況下,命中PCM次數(shù)多的系統(tǒng)性能要優(yōu)于命中DRAM次數(shù)高的系統(tǒng)性能。因此本發(fā)明針對已有的訪存特性監(jiān)控器進(jìn)行了改進(jìn)以適應(yīng)于混合主存系統(tǒng),設(shè)置了加權(quán)命中計(jì)數(shù)器,在發(fā)生緩存行命中時(shí),本發(fā)明在其對應(yīng)位置的加權(quán)命中計(jì)數(shù)器上不再單純加1,而是根據(jù)命中的緩存行類型外加不同的權(quán)重值以體現(xiàn)DRAM和NVM之間讀寫的非一致性,比如DRAM和PCM的讀延遲比例為1:4.4,寫延遲比例為1:12。當(dāng)命中的數(shù)據(jù)為DRAM時(shí),其對應(yīng)位置的加權(quán)命中計(jì)數(shù)器加1,而當(dāng)命中的數(shù)據(jù)為NVM時(shí),如果為干凈數(shù)據(jù),其對應(yīng)位置的加權(quán)命中計(jì)數(shù)器加4.4,否則,加權(quán)命中計(jì)數(shù)器加12。這是因?yàn)閷εK緩存行發(fā)生一次命中,就相當(dāng)于減少了一次寫回操作。因此在每一個(gè)計(jì)數(shù)周期內(nèi),加權(quán)命中計(jì)數(shù)器所累加的命中權(quán)重值會(huì)有所不同。
S2013:在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值。
S2014:根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)(cache way)劃分方式,記為{a1,a2,……,an},其中每個(gè)核對應(yīng)的末級緩存路數(shù)為ai,則
上述步驟S206的緩存行提升策略(Promotion Policy)包括:判斷命中的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果命中的緩存行的數(shù)據(jù)來源于NVM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DNP)p個(gè)位置,其中(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2,該緩存行的位置最大可提升至最高優(yōu)先級位置(即MRU位置);
如果命中的緩存行的數(shù)據(jù)來源于DRAM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DDP)p個(gè)位置,其中(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8,該緩存行的優(yōu)先級位置最大可提升至最高優(yōu)先級位置(即MRU位置)。
上述步驟S207的緩存行回收策略(Eviction Policy)是指選取在緩存組中處于最低優(yōu)先級位置(即LRU位置)的緩存行進(jìn)行回收。
上述步驟S208的緩存行插入策略(Insertion Policy)包括:判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則將存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DNP)i,其中(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度,該緩存行最大可插入至最高優(yōu)先級位置(即MRU位置),最小可插入至最低優(yōu)先級位置(即LRU位置);
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DDP)i,其中(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度,該緩存行最大可插入至最高優(yōu)先級位置(即MRU位置),最小可插入至最低優(yōu)先級位置(即LRU位置);
如果是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CNP)i,其中(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度,該緩存行最大可插入至最高優(yōu)先級位置(即MRU位置),最小可插入至最低優(yōu)先級位置(即LRU位置);
如果是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CDP)i,其中(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度,該緩存行最大可插入至最高優(yōu)先級位置(即MRU位置),最小可插入至最低優(yōu)先級位置(即LRU位置)。
作為一種可實(shí)施方式,
參考圖3,示出了本可實(shí)施方式提供的系統(tǒng)整體架構(gòu)示意圖,系統(tǒng)主存由DRAM和NVM共同構(gòu)成,處于同一線性地址空間下,片上緩存系統(tǒng)呈現(xiàn)多級層次架構(gòu),較大容量的LLC由2個(gè)處理器核(core1和core2)進(jìn)行共享。另外,本發(fā)明為處理器的每個(gè)核設(shè)置了一個(gè)AFM,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性,以獲得應(yīng)用程序?qū)?yīng)的緩存行的命中情況。
參考圖4,示出了本可實(shí)施方式提供的AFM的內(nèi)部結(jié)構(gòu)示意圖,把處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間作為一個(gè)計(jì)數(shù)周期,在每一個(gè)計(jì)數(shù)周期開始,選取32緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,末級緩存的組相聯(lián)度A=8,則兩個(gè)處理器核的路數(shù)之和為8。訪問特性監(jiān)控器給上述多個(gè)緩存組中的每一路設(shè)置四個(gè)標(biāo)記信息,所述標(biāo)記信息包括:(1)tag,用于指示是否命中的信息;(2)dirty,用于指示當(dāng)前數(shù)據(jù)是否是臟數(shù)據(jù)的信息;(3)isNVM,用于指示當(dāng)前數(shù)據(jù)是否來源于NVM的信息;(4)加權(quán)命中計(jì)數(shù)器(Weighted Hit Counter,簡稱WHC),用于統(tǒng)計(jì)當(dāng)前緩存行所在位置命中權(quán)重值。當(dāng)命中的數(shù)據(jù)為DRAM時(shí),其對應(yīng)位置的加權(quán)命中計(jì)數(shù)器加1,而當(dāng)命中的數(shù)據(jù)為NVM時(shí),如果為干凈數(shù)據(jù),其對應(yīng)位置的加權(quán)命中計(jì)數(shù)器加4.4,否則,加權(quán)命中計(jì)數(shù)器加12。因此在每一個(gè)計(jì)數(shù)周期內(nèi),加權(quán)命中計(jì)數(shù)器所累加的命中權(quán)重值會(huì)不同。
上述32個(gè)緩存組采用最近最少使用替換策略,則每個(gè)緩存組的最高優(yōu)先級位置(即MRU位置)的位數(shù)值為7,最低優(yōu)先級位置(即LRU位置)的位數(shù)值為0。
在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值。
參考圖5,圖5僅用于更形象地、直觀地說明本可實(shí)施方式,實(shí)際操作中并不需要繪制,根據(jù)統(tǒng)計(jì)結(jié)果即可得出處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù)。針對某一個(gè)核,隨著命中權(quán)重值的增大,其分配路數(shù)的也增多。但從總命中權(quán)重值的曲線來看,所分配的路數(shù)呈現(xiàn)先上升后下降的趨勢。命中權(quán)重值的最大值出現(xiàn)在core1被分配5路,core2被分配3路的情況下,則雙核的末級緩存路數(shù)劃分方式為{5,3},
將LLC中的緩存行分成四種類型:DN,DD,CN,CD,四種緩存行的優(yōu)先級高低關(guān)系為DNP>DDP>CNP>CDP。
末級緩存中的每個(gè)緩存組(cache set)配置一個(gè)飽和計(jì)數(shù)器(counter),飽和計(jì)數(shù)器的位數(shù)=log2A=3,飽和計(jì)數(shù)器的數(shù)值范圍為0~7。
為每個(gè)緩存組中的每個(gè)緩存行設(shè)置標(biāo)記,用于指示該緩存行中的數(shù)據(jù)是來源于NVM還是DRAM。
參考圖6,示出了本可實(shí)施方式提供的末級緩存執(zhí)行三種管理策略的過程示意圖。基于上述雙核的末級緩存路數(shù)劃分方式{5,3},當(dāng)core1向末級緩存發(fā)起訪問請求r,則ai=a1=5,末級緩存接收到訪問請求r,當(dāng)飽和計(jì)數(shù)器的數(shù)值(counter)為3時(shí),首先判斷當(dāng)前訪問請求r是否命中末級緩存的緩存行,
(1)如果命中,假設(shè)命中的是緩存行c,則執(zhí)行提升策略,具體如下:判斷命中的緩存行c的數(shù)據(jù)是來源于NVM還是DRAM,
i)如果命中的緩存行c的數(shù)據(jù)來源于NVM,緩存行c的當(dāng)前位置(c.pos)為2,則計(jì)算出(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2=(5+(8-3))/2=5,就將該緩存行c在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升5個(gè)位置,則提升后位置(pos)=當(dāng)前位置(c.pos)+(DNP)p=2+5=7,即提升到MRU位置;
ii)如果命中的緩存行c的數(shù)據(jù)來源于DRAM,緩存行c的當(dāng)前位置(c.pos)為2,則計(jì)算出(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8=(5+3)/8=1,就將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升1個(gè)位置,則提升后位置(pos)=當(dāng)前位置(c.pos)+(DDP)p=2+1=3。
(2)如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),執(zhí)行緩存行回收策略,即選取在緩存組中處于LRU位置的緩存行進(jìn)行回收,然后執(zhí)行緩存行插入策略。如果當(dāng)緩存組還有存儲(chǔ)空間,可以直接進(jìn)行緩存行插入;如果當(dāng)緩存組已寫滿數(shù)據(jù),則需要選擇一個(gè)緩存行進(jìn)行回收,以便留出空間,才能進(jìn)行緩存行插入。具體如下:判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
i)如果訪問請求r是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則計(jì)算出(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2=5+(8-3)/2≈7,結(jié)果為小數(shù)的取其下位整數(shù),即存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值為7(MRU位置);
ii)如果訪問請求r是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則計(jì)算出(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8=5+3/8≈5,結(jié)果為小數(shù)的取其下位整數(shù),即存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值為5;
iii)如果訪問請求r是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,即飽和計(jì)數(shù)器的數(shù)值為2,然后計(jì)算出(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8=5-2/8≈5,結(jié)果為小數(shù)的取其下位整數(shù),就存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值為5;
iv)如果訪問請求是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,即飽和計(jì)數(shù)器的數(shù)值為4,然后計(jì)算出(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4=5-(8-4)/4=4,就存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值為4。
本發(fā)明只是為面向混合主存的多核共享末級緩存的管理方法提供了一種可實(shí)施的方法,基于這種管理方法,可以優(yōu)化更多的存儲(chǔ)系統(tǒng),進(jìn)而使其為用戶提供更高效的服務(wù)。
實(shí)施例3
參考圖7,一種面向混合主存的多核共享末級緩存管理裝置,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,該管理裝置包括以下模塊:
末級緩存路數(shù)劃分模塊301,用于獲得處理器的多核的末級緩存路數(shù)劃分方式;
判斷模塊302,用于判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,如果命中,則執(zhí)行緩存行提升模塊303;如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接執(zhí)行緩存行插入模塊305,或者先執(zhí)行緩存行回收模塊304,然后執(zhí)行緩存行插入模塊305。
所述緩存行提升模塊303,用于判斷命中的緩存行是來源于NVM還是DRAM,
如果命中的緩存行來源于NVM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DNP)p個(gè)位置,其中(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果命中的緩存行來源于DRAM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DDP)p個(gè)位置,其中(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
所述緩存行回收模塊304,用于選取在緩存組中處于最低優(yōu)先級位置的緩存行進(jìn)行回收操作。
所述緩存行插入模塊305,用于判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DNP)i,其中(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DDP)i,其中(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CNP)i,其中(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CDP)i,其中(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
上述末級緩存路數(shù)劃分模塊301進(jìn)一步包括:
訪問特性監(jiān)控器配置模塊3011,用于為處理器的每個(gè)核配置一個(gè)訪問特性監(jiān)控器,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性;
動(dòng)態(tài)抽樣模塊3012,用于采用動(dòng)態(tài)抽樣機(jī)制,在每一個(gè)計(jì)數(shù)周期開始,從多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,選取的上述多個(gè)緩存組采用最近最少使用替換策略,所述一個(gè)計(jì)數(shù)周期是指當(dāng)處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間;
命中權(quán)重值讀取模塊3013,用于在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值;
末級緩存路數(shù)獲取模塊3014,用于根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)劃分方式。
上述末級緩存路數(shù)劃分模塊301連接判斷模塊302,其中判斷模塊302進(jìn)一步包括緩存行提升模塊303、緩存行回收模塊304、緩存行插入模塊305,其中緩存行回收模塊304連接緩存行插入模塊305,上述訪問特性監(jiān)控器配置模塊3011依次順序連接動(dòng)態(tài)抽樣模塊3012、命中權(quán)重值讀取模塊3013和末級緩存路數(shù)獲取模塊3014后整體再與末級緩存路數(shù)劃分模塊301相連。
實(shí)施例4
參考圖7,一種面向混合主存的多核共享末級緩存管理裝置,混合主存包括DRAM和NVM,末級緩存分為多個(gè)緩存組,每個(gè)緩存組包括多個(gè)緩存行,所述混合主存和末級緩存中的數(shù)據(jù)存在多路組相聯(lián)映射關(guān)系,該管理裝置包括以下模塊:
末級緩存路數(shù)劃分模塊301,用于獲得處理器的多核的末級緩存路數(shù)劃分方式;
緩存行分類模塊306,用于將末級緩存中的緩存行分成四種類型:DN、DD、CN和CD,所述DN、DD、CN和CD四種緩存行的優(yōu)先級分別用DNP、DDP、CNP和CDP代表,并設(shè)定上述四種緩存行的優(yōu)先級高低關(guān)系為DNP>DDP>CNP>CDP;
飽和計(jì)數(shù)器配置模塊307,用于為末級緩存中的每個(gè)緩存組配置一個(gè)飽和計(jì)數(shù)器,以動(dòng)態(tài)地調(diào)整不同緩存行的插入位置和提升幅度;
緩存行標(biāo)記模塊308,用于為每個(gè)緩存組中的每個(gè)緩存行設(shè)置標(biāo)記,以指示該緩存行中的數(shù)據(jù)是來源于NVM還是DRAM;
判斷模塊302,用于判斷末級緩存接收到的訪問請求是否命中末級緩存的緩存行,如果命中,則執(zhí)行緩存行提升模塊303;如果未命中,則需要從上級緩存或主存中獲取數(shù)據(jù),直接執(zhí)行緩存行插入模塊305,或者先執(zhí)行緩存行回收模塊304,然后執(zhí)行緩存行插入模塊305。
所述緩存行提升模塊303,用于判斷命中的緩存行是來源于NVM還是DRAM,
如果命中的緩存行來源于NVM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DNP)p個(gè)位置,其中(DNP)p=(ai+(A-飽和計(jì)數(shù)器的數(shù)值))/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果命中的緩存行來源于DRAM,則將該緩存行在其當(dāng)前優(yōu)先級位置的基礎(chǔ)上再提升(DDP)p個(gè)位置,其中(DDP)p=(ai+飽和計(jì)數(shù)器的數(shù)值)/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
所述緩存行回收模塊304,用于選取在緩存組中處于最低優(yōu)先級位置的緩存行進(jìn)行回收操作。
所述緩存行插入模塊305,用于判斷未命中緩存行的訪問請求是寫回訪問還是按需訪問,以及待插入的緩存行的數(shù)據(jù)是來源于NVM還是DRAM,
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于NVM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DNP)i其中(DNP)i=ai+(A-飽和計(jì)數(shù)器的數(shù)值)/2,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是寫回訪問,并且上級緩存的數(shù)據(jù)來源于DRAM,則存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(DDP)i其中(DDP)i=ai+飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果是按需訪問,并且主存的數(shù)據(jù)來源于NVM,則先將飽和計(jì)數(shù)器的數(shù)值減一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CNP)i,其中(CNP)i=ai-飽和計(jì)數(shù)器的數(shù)值/8,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度;
如果訪問請求是按需訪問,并且主存的數(shù)據(jù)來源于DRAM,則先將飽和計(jì)數(shù)器的數(shù)值加一,然后存儲(chǔ)該數(shù)據(jù)的緩存行插入末級緩存的緩存組的位置的位數(shù)值設(shè)定為(CDP)i,其中(CDP)i=ai-(A-飽和計(jì)數(shù)器的數(shù)值)/4,其中ai為每個(gè)核對應(yīng)的末級緩存路數(shù),A為末級緩存的組相聯(lián)度。
上述末級緩存路數(shù)劃分模塊301進(jìn)一步包括:
訪問特性監(jiān)控器配置模塊3011,用于為處理器的每個(gè)核配置一個(gè)訪問特性監(jiān)控器,識(shí)別對應(yīng)核上應(yīng)用程序的內(nèi)存訪問特性;
動(dòng)態(tài)抽樣模塊3012,用于采用動(dòng)態(tài)抽樣機(jī)制,在每一個(gè)計(jì)數(shù)周期開始,從多個(gè)核對應(yīng)的末級緩存中的所有緩存組中選取多個(gè)緩存組作為訪問特性監(jiān)控器的監(jiān)控樣本,選取的上述多個(gè)緩存組采用最近最少使用替換策略,所述一個(gè)計(jì)數(shù)周期是指當(dāng)處理器的多個(gè)核運(yùn)行的指令數(shù)之和從零達(dá)到100Million的時(shí)間;
命中權(quán)重值讀取模塊3013,用于在每一個(gè)計(jì)數(shù)周期結(jié)束時(shí),讀取訪問特性監(jiān)控器所獲得的每個(gè)核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值;
末級緩存路數(shù)獲取模塊3014,用于根據(jù)上述命中權(quán)重值,得到處理器的所有核上應(yīng)用程序所對應(yīng)的緩存行的命中權(quán)重值之和最大時(shí)每個(gè)核對應(yīng)的末級緩存路數(shù),即為處理器的多核的末級緩存路數(shù)劃分方式。
上述末級緩存路數(shù)劃分模塊301依次順序連接緩存行分類模塊306、飽和計(jì)數(shù)器配置模塊307、緩存行標(biāo)記模塊308和判斷模塊302,其中判斷模塊302進(jìn)一步包括緩存行提升模塊303、緩存行回收模塊304、緩存行插入模塊305,其中緩存行回收模塊304連接緩存行插入模塊305,上述訪問特性監(jiān)控器配置模塊3011依次順序連接動(dòng)態(tài)抽樣模塊3012、命中權(quán)重值讀取模塊3013和末級緩存路數(shù)獲取模塊3014后整體再與末級緩存路數(shù)劃分模塊301相連。
對于本發(fā)明實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。而這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
以上所述僅為本發(fā)明示意性的具體實(shí)施方式,并非用以限定本發(fā)明的范圍,任何本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明構(gòu)思和原則的前提下所做出的等同變化與修改,均應(yīng)屬于本發(fā)明保護(hù)的范圍。