劉 勝,陳海燕,葛磊磊,劉 仲
(國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南長(zhǎng)沙 410073)
當(dāng)前處理器架構(gòu)已經(jīng)由“單核”時(shí)代進(jìn)入“多核”時(shí)代[1]?,F(xiàn)代多核處理器設(shè)計(jì)中,普遍采用多級(jí)Cache來(lái)緩解“存儲(chǔ)墻”問(wèn)題。片上末級(jí)Cache(Last Level Cache,LLC)一般支持多個(gè)核共享地訪(fǎng)問(wèn),是多核處理器存儲(chǔ)層次的關(guān)鍵組成部分。如何有效地管理和利用LLC將會(huì)對(duì)于整個(gè)系統(tǒng)的性能產(chǎn)生重要影響。
隨著應(yīng)用需求的不斷擴(kuò)展和變化,應(yīng)用程序中訪(fǎng)問(wèn)模式的多樣性給多核處理器的LLC帶來(lái)了許多挑戰(zhàn)。文獻(xiàn)[2]將應(yīng)用程序中的訪(fǎng)存模式分為四種,即友好訪(fǎng)問(wèn)模式、流式訪(fǎng)問(wèn)模式、顛簸訪(fǎng)問(wèn)模式及混合訪(fǎng)問(wèn)模式。其中友好訪(fǎng)問(wèn)模式是指短時(shí)間內(nèi)會(huì)重復(fù)訪(fǎng)問(wèn)某一段數(shù)據(jù),這種模式具有良好的時(shí)空局部性。流式訪(fǎng)問(wèn)模式是指某段數(shù)據(jù)塊只會(huì)被訪(fǎng)問(wèn)一次,這種模式將會(huì)引起強(qiáng)制性缺失并且命中率較低。顛簸訪(fǎng)問(wèn)模式是指周期性地訪(fǎng)問(wèn)某段長(zhǎng)度的數(shù)據(jù)塊,但是其長(zhǎng)度超過(guò)Cache的容納范圍,導(dǎo)致數(shù)據(jù)塊未被訪(fǎng)問(wèn)就被替換出Cache?;旌显L(fǎng)問(wèn)模式是上述三種模式綜合混合的結(jié)果。在多核環(huán)境下由于不同的核對(duì)共享/私有數(shù)據(jù)的同時(shí)訪(fǎng)問(wèn),上述訪(fǎng)問(wèn)模式變得愈發(fā)復(fù)雜多樣,從而導(dǎo)致了LLC的性能得不到有效發(fā)揮,迫切需要更高效LLC的管理和控制策略。
劉勝等以一款自主研發(fā)的高性能多核數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)Matrix-M為背景,提出了訪(fǎng)問(wèn)模式的多核LLC優(yōu)化方法。
跟經(jīng)典的Cache機(jī)制一樣,LLC的性能依然由命中率(或缺失率)、命中開(kāi)銷(xiāo)和缺失開(kāi)銷(xiāo)所決定。該方法主要通過(guò)降低缺失率來(lái)提高性能,所有的減少命中/缺失開(kāi)銷(xiāo)的優(yōu)化方法和該方法是正交的。
基于訪(fǎng)問(wèn)模式的LLC優(yōu)化方法的三個(gè)子策略“可配置的共享私有Cache劃分”、“可配置的旁路Cache策略”和“優(yōu)先權(quán)替換策略”是協(xié)同互補(bǔ)的關(guān)系。首先,可配置的共享私有Cache劃分策略從整體上將LLC空間劃分為共享空間與私有空間,提高整個(gè)Cache的空間利用率;其次,對(duì)流式訪(fǎng)問(wèn)模式以及其他較低重用性的訪(fǎng)存行為,采用“可配置的旁路Cache策略”可以使其請(qǐng)求不緩存在Cache中,減少與正常的進(jìn)Cache請(qǐng)求間的干擾;最后,在傳統(tǒng)替換算法的基礎(chǔ)上融入優(yōu)先權(quán),通過(guò)“優(yōu)先權(quán)替換策略”可將高重用性數(shù)據(jù)塊設(shè)置優(yōu)先權(quán)使其駐留在Cache中,從而有效地減少顛簸訪(fǎng)存模式帶來(lái)的失效開(kāi)銷(xiāo)。
私有方式和共享方式是多核LLC常見(jiàn)的兩種設(shè)計(jì)方式。私有方式中,LLC的每個(gè)子體只能被就近的核訪(fǎng)問(wèn),訪(fǎng)問(wèn)LLC的網(wǎng)絡(luò)延時(shí)很小,但在訪(fǎng)存負(fù)載不均衡時(shí)可能會(huì)造成某一個(gè)子體繁忙而另一個(gè)子體空閑的情況,從而造成LLC的利用率較低。而共享Cache方式中,每個(gè)核都可以訪(fǎng)問(wèn)所有的LLC子體,可以充分地利用整個(gè)Cache空間,但是互連線(xiàn)延遲的增加也將導(dǎo)致訪(fǎng)問(wèn)延遲加大。因此,高效的LLC控制策略要充分地結(jié)合兩者的優(yōu)點(diǎn),合理地劃分共享私有空間,既要減少訪(fǎng)問(wèn)Cache網(wǎng)絡(luò)延遲,又要充分地利用共享資源。
在共享Cache的基礎(chǔ)上,通過(guò)提供給程序員控制寄存器改變雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Double Data Rate,DDR)空間的高低位地址交叉映射方式,從而實(shí)現(xiàn)可配置的共享私有Cache劃分。如圖1所示,外存空間被分界線(xiàn)劃分成兩個(gè)部分,上半部分采用高位地址交叉編址,下半部分采用低位地址交叉編址。其中,分界線(xiàn)是通過(guò)編址模式寄存器的配置來(lái)確定的,能夠上下移動(dòng)??紤]到實(shí)際應(yīng)用需求以及實(shí)現(xiàn)復(fù)雜度,整個(gè)DDR空間以2的冪分成8種高低位地址交叉區(qū)間比例。假設(shè)整個(gè)外存空間大小是S,那么對(duì)應(yīng)的高位地址交叉編址區(qū)間的大小分別為S,S/2,S/4,S/8,S/16,S/32,S/64,S/128,剩余區(qū)間采用低位地址交叉編址。
程序員可以通過(guò)設(shè)定外存空間的編址方式來(lái)實(shí)現(xiàn)共享Cache與私有Cache空間的劃分。其中,私有Cache空間可以通過(guò)高位地址交叉區(qū)間映射到LLC來(lái)實(shí)現(xiàn),即程序員將不同核的私有數(shù)據(jù)分別放置在不同的DDR上,DSP核就可以高效地通過(guò)本地LLC就近訪(fǎng)問(wèn)這一區(qū)間,不僅可以減少互連網(wǎng)絡(luò)的負(fù)擔(dān),而且可以減少訪(fǎng)問(wèn)延遲。共享Cache空間則通過(guò)低位地址交叉編址方式將共享數(shù)據(jù)段分散放置在不同的DDR,這樣的設(shè)置可以使DDR的訪(fǎng)問(wèn)比較均勻,同時(shí)能充分發(fā)揮多個(gè)LLC子體和多個(gè)DDR的帶寬。
圖1 DDR空間的高低地址交叉編址方式Fig.1 High-low interleaved mode of DDR space
上述可配置的共享私有Cache的劃分策略提高了LLC的整體空間利用率。然而應(yīng)用中普遍存在的零重用數(shù)據(jù)塊訪(fǎng)問(wèn)(如只會(huì)對(duì)數(shù)據(jù)塊訪(fǎng)問(wèn)一次的流式訪(fǎng)問(wèn)模式),將會(huì)嚴(yán)重破壞高重用數(shù)據(jù)塊的訪(fǎng)存行為,造成整個(gè)LLC性能的極大損失。為了盡可能地削弱這些低重用數(shù)據(jù)塊對(duì)整個(gè)LLC的影響,通過(guò)可配置的旁路Cache策略使之不緩存在 Cache中,并且在實(shí)際處理中,駐留Cache請(qǐng)求與旁路 Cache請(qǐng)求隔離,前臺(tái)的可Cache請(qǐng)求不會(huì)被后臺(tái)旁路Cache請(qǐng)求干擾。
圖2 可配置的旁路Cache的實(shí)現(xiàn)流程Fig.2 Flow of the configurable bypass Cache
具體實(shí)現(xiàn)如圖2所示:每一個(gè)子LLC提供一組旁路寄存器,包括旁路使能寄存器、旁路起始地址寄存器與旁路字偏移寄存器,程序員根據(jù)需求通過(guò)設(shè)置這三個(gè)寄存器來(lái)配置其旁路地址區(qū)間。每個(gè)請(qǐng)求源根據(jù)請(qǐng)求地址和旁路寄存器的內(nèi)容判斷請(qǐng)求是否旁路LLC,對(duì)于旁路Cache的請(qǐng)求直接訪(fǎng)問(wèn)DDR,可Cache的請(qǐng)求則走正常的Cache處理流水線(xiàn)判斷是否缺失,如果缺失則訪(fǎng)問(wèn)DDR控制器,否則直接訪(fǎng)問(wèn)數(shù)據(jù)體。由于外存DDR的訪(fǎng)問(wèn)速度比較慢,而旁路Cache請(qǐng)求直接訪(fǎng)問(wèn)DDR,其訪(fǎng)問(wèn)速度也較慢,如果不進(jìn)行請(qǐng)求隔離處理,則可Cache請(qǐng)求會(huì)被旁路Cache請(qǐng)求阻塞;本設(shè)計(jì)通過(guò)從源端將請(qǐng)求分離成兩條通路,讓可Cache請(qǐng)求與旁路Cache請(qǐng)求可以并行運(yùn)行,互不干擾。
除了零重用數(shù)據(jù)塊外,應(yīng)用中多個(gè)進(jìn)程之間相互干擾引起LLC訪(fǎng)問(wèn)顛簸所造成的低重用數(shù)據(jù)塊,也會(huì)影響LLC的執(zhí)行效率??紤]到盡可能地將高重用數(shù)據(jù)塊緩存在LLC中,提出了一種融入優(yōu)先權(quán)的替換策略,通過(guò)將高重用數(shù)據(jù)塊的替換優(yōu)先級(jí)設(shè)定為高,使其不能被低駐留優(yōu)先權(quán)的Cache行替換,從而在一段時(shí)間駐留在LLC中。
實(shí)現(xiàn)優(yōu)先權(quán)替換策略包含提供一組由用戶(hù)配置的控制寄存器組和硬件支持的融入優(yōu)先權(quán)的樹(shù)形最近最少訪(fǎng)問(wèn)(Least Recently Used,LRU)機(jī)制兩個(gè)方面??刂萍拇嫫鹘M包含優(yōu)先權(quán)區(qū)間的設(shè)置寄存器組和優(yōu)先權(quán)清除寄存器。優(yōu)先權(quán)區(qū)間的設(shè)置可以通過(guò)配置優(yōu)先權(quán)使能寄存器、起始地址寄存器與字偏移寄存器來(lái)實(shí)現(xiàn)。在一段程序執(zhí)行完成之后,又可以通過(guò)優(yōu)先權(quán)清除寄存器來(lái)清除優(yōu)先權(quán)。
接下來(lái)以四路組相連為例描述融入優(yōu)先權(quán)的樹(shù)形LRU機(jī)制的硬件實(shí)現(xiàn)。更多路數(shù)的融入優(yōu)先權(quán)的樹(shù)形LRU機(jī)制與之類(lèi)似,不再詳述。樹(shù)形LRU替換算法的工作原理是利用一個(gè)二叉樹(shù)結(jié)構(gòu)存儲(chǔ)歷史訪(fǎng)問(wèn)信息(B0,B1和B2),保護(hù)最近的訪(fǎng)問(wèn)塊不會(huì)被替換出Cache,如圖3所示。其中四路相連的組分別用W0~W3表示,用B0~B2來(lái)記錄歷史訪(fǎng)問(wèn)信息。該算法包含更新規(guī)則和替換規(guī)則兩個(gè)方面。當(dāng)Cache行命中或被分配之后利用更新規(guī)則(如圖3(b)所示)對(duì)其歷史訪(fǎng)問(wèn)信息進(jìn)行更新,例如,當(dāng)訪(fǎng)問(wèn)第0路時(shí),更新B0,B1的值為00,使之成為最不可能替換出去的行。當(dāng)需要Cache替換時(shí)則利用替換規(guī)則(如圖3(c)所示)選出一路被替換出Cache。如當(dāng)B0,B1的值為11時(shí),根據(jù)替換規(guī)則,第0路被替換出Cache。
圖3 樹(shù)形LRU替換算法Fig.3 Tree style LRU algorithm
如圖4所示,融入優(yōu)先權(quán)的樹(shù)形LRU替換算法需要在一組Cache中的每一路都添加一個(gè)優(yōu)先級(jí)位,用P0,P1,P2,P3表示。當(dāng) Cache行命中或分配時(shí),融入優(yōu)先權(quán)的樹(shù)形LRU算法按照表1到表3的規(guī)則更改 B0,B1,B2的值。其中 L=P0&P1,L為1代表左側(cè)一組優(yōu)先級(jí)全部為高,L為0代表其優(yōu)先級(jí)不全為高;同理R=P2&P3,R為1代表右側(cè)一組優(yōu)先級(jí)全部為高,R為0代表其優(yōu)先級(jí)不全為高;如假設(shè)當(dāng)前訪(fǎng)問(wèn)的路數(shù)為W0~W1中的一個(gè)且L=1,R=0,則B0被更新為0,代表下次被替換時(shí)右側(cè)一組被替換出Cache;而如果L=0,R=1,則B0被更新為1,代表下次被替換選擇左側(cè)一組。
圖4 融入優(yōu)先權(quán)的樹(shù)形LRU替換算法Fig.4 Tree style LRU algorithm with the priority
融入優(yōu)先權(quán)的替換機(jī)制遵循以下規(guī)則:(1)優(yōu)先級(jí)低的一路先被替換;(2)同種優(yōu)先級(jí)時(shí),按照樹(shù)形LRU算法進(jìn)行替換,其中優(yōu)先級(jí)為1的Cache行只能被其他優(yōu)先級(jí)為1的Cache行替換。融入優(yōu)先權(quán)的樹(shù)形LRU機(jī)制是在樹(shù)形LRU算法的基礎(chǔ)上實(shí)現(xiàn)的,兩者替換規(guī)則相同。前者的更新規(guī)則有所更改。
表1 B0的更新規(guī)則Tab.1 Update rule of B0
表2 B1的更新規(guī)則Tab.2 Update rule of B1
表3 B2的更新規(guī)則Tab.3 Update rule of B2
該技術(shù)已經(jīng)在本單位在研的一款多核DSP Matrix-X中的LLC中實(shí)現(xiàn)。Matrix-X的結(jié)構(gòu)如圖5所示,由八個(gè)DSP超節(jié)點(diǎn)組成,超節(jié)點(diǎn)通過(guò)用片上互連網(wǎng)絡(luò)(Network on Chip,NoC)進(jìn)行互連和通信,LLC分為八個(gè)子體,采用分布式共享結(jié)構(gòu)。每一個(gè)超節(jié)點(diǎn)可以通過(guò)節(jié)點(diǎn)訪(fǎng)問(wèn)控制器
圖5 Matrix-X的整體結(jié)構(gòu)圖Fig.5 Block diagram of Matrix-X
(Node Access Controller,NAC)和NoC 訪(fǎng)問(wèn)任一個(gè)末級(jí)Cache子體。每?jī)蓚€(gè)LLC子體和一個(gè)DDR3控制器(DDR3 Controller,DDRC)相連。LLC的總?cè)萘繛?MB,采用八路組相連機(jī)制,Cache行的寬度為1024bits,采用讀/寫(xiě)分配機(jī)制和寫(xiě)回法,支持八深度的Miss-on-Miss處理。
該訪(fǎng)問(wèn)模式的LLC優(yōu)化方法的三個(gè)層次中,可配置的共享私有Cache劃分所帶來(lái)的硬件開(kāi)銷(xiāo)非常小,僅僅增加了兩個(gè)配置寄存器以及簡(jiǎn)單的選擇邏輯;可配置的旁路Cache策略除了引入相關(guān)旁路配置寄存器外,在請(qǐng)求的源端需要增加旁路仲裁邏輯,還需要額外的旁路Cache緩沖。相比于傳統(tǒng)策略,優(yōu)先權(quán)替換策略需要為每一路組相聯(lián)增加一位優(yōu)先權(quán)位記錄分配數(shù)據(jù)塊的優(yōu)先級(jí),對(duì)于N組M路的組相聯(lián)Cache結(jié)構(gòu),需要額外的M×N bits的觸發(fā)器。此外還包括優(yōu)先權(quán)配置寄存器和分配Cache行時(shí)判斷優(yōu)先級(jí)的邏輯等。
在某廠(chǎng)家45nm工藝庫(kù)下,使用CadenceTM公司的RTL Complier工具在典型情況按照頻率1GHz對(duì)LLC子體進(jìn)行了綜合,結(jié)果見(jiàn)表4。其中可配置的旁路Cache策略引入的面積占了控制邏輯面積的12.68%,主要原因?yàn)镸atrix-X采用無(wú)緩沖NoC機(jī)制,LLC需要專(zhuān)門(mén)為不可Cache請(qǐng)求設(shè)置專(zhuān)門(mén)的輸入緩沖,如果NoC結(jié)構(gòu)不采用無(wú)緩沖結(jié)構(gòu),該面積可以減少;優(yōu)先權(quán)替換策略引入的面積占了控制邏輯面積的4.57%,主要由記錄每一個(gè)Cache行的優(yōu)先權(quán)的觸發(fā)器導(dǎo)致的??膳渲霉蚕硭接蠧ache劃分引入的面積較小。
表4 提出方法的面積開(kāi)銷(xiāo)Tab.4 Area cost of the proposed policy
選取下三角矩陣與矩陣的乘積(TRiangular Matrix Multiplication,TRMM)、通 用 矩 陣 乘 積(Generalized Matrix Multiplication,GEMM)、轉(zhuǎn)置下三角陣與矩陣的乘積(Transpose TRiangular Matrix Multiplicaion,TTRMM)作為評(píng)測(cè)激勵(lì)。這三種Kernel均是LINPACK算法中完成矩陣更新操作的算法,占據(jù)了LINPACK運(yùn)算量的80%。在評(píng)測(cè)時(shí),這三種Kernel的子塊規(guī)模均設(shè)置為384的整數(shù)倍,8個(gè)超節(jié)點(diǎn)一起參與運(yùn)算,采用雙緩沖的策略同時(shí)進(jìn)行運(yùn)算和數(shù)據(jù)搬移。此外,還選取了快速傅里葉變換(Fast Fourier Transformation,F(xiàn)FT)算法作為另外一類(lèi)評(píng)測(cè)激勵(lì),同時(shí)計(jì)算8個(gè)不相關(guān)的1M點(diǎn)FFT運(yùn)算(每一個(gè)超節(jié)點(diǎn)分別對(duì)應(yīng)一個(gè)),采用兩維轉(zhuǎn)置算法將其分成多個(gè)1K點(diǎn)FFT運(yùn)算,采用雙緩沖策略同時(shí)進(jìn)行運(yùn)算和數(shù)據(jù)搬移。
由于三種子優(yōu)化策略是相互協(xié)同的關(guān)系,測(cè)試程序不僅要進(jìn)行單個(gè)優(yōu)化策略的性能分析,而且要分析結(jié)合三種優(yōu)化策略所達(dá)到的最優(yōu)性能提升。因此每一個(gè)程序分成五組進(jìn)行測(cè)試:A組,未做任何優(yōu)化的原始程序;B組,添加合理劃分共享私有Cache空間的優(yōu)化;C組,在合理劃分共享私有Cache空間的優(yōu)化下對(duì)低重用數(shù)據(jù)設(shè)置旁路Cache的優(yōu)化;D組,在合理劃分共享私有Cache空間的優(yōu)化下,對(duì)高重用數(shù)據(jù)設(shè)置高優(yōu)先權(quán)的優(yōu)化;E組,結(jié)合三種策略進(jìn)行全面優(yōu)化。從缺失率、程序運(yùn)行時(shí)間兩個(gè)方面對(duì)提出的方法進(jìn)行評(píng)估。
首先,統(tǒng)計(jì)了可配置共享私有Cache劃分對(duì)程序性能的影響。從圖6中可以得出,合適的共享私有Cache劃分設(shè)置對(duì)程序的執(zhí)行效率影響非常大,如對(duì)于TRMM,GEMM和TTRMM算法,如果將共享私有劃分設(shè)置為高位地址交叉,應(yīng)用程序在同一段時(shí)間內(nèi)多個(gè)核將會(huì)集中訪(fǎng)問(wèn)一個(gè)LLC子體和一個(gè)DDR,即LLC的帶寬和DDR的帶寬分別只有峰值的1/8和1/4,因而和采用合適的共享私有Cache劃分設(shè)置相比,程序的節(jié)拍數(shù)將會(huì)變?yōu)?.87 ~8.36倍,缺失率會(huì)變?yōu)?.03 ~2.42 倍。對(duì)于FFT程序,如果將共享私有劃分設(shè)置為低位地址交叉,F(xiàn)FT本來(lái)只需要訪(fǎng)問(wèn)本地LLC子體的請(qǐng)求大部分將會(huì)變成網(wǎng)絡(luò)請(qǐng)求訪(fǎng)問(wèn)遠(yuǎn)程LLC子體,等價(jià)于訪(fǎng)問(wèn)LLC的延時(shí)增加了,因而和采用合適的共享私有Cache劃分設(shè)置相比,程序的節(jié)拍數(shù)將會(huì)變?yōu)?.20 倍,缺失率會(huì)變?yōu)?.77 倍。
圖6 可配置的共享私有Cache劃分對(duì)性能的提升Fig.6 Improvement to the system of the configurable shared/private partition policy
其次,在設(shè)置合適的共享/私有Cache劃分的基礎(chǔ)上評(píng)測(cè)了可配置的旁路Cache策略和優(yōu)先權(quán)替換策略對(duì)程序性能的影響。如圖7和圖8所示,相比僅設(shè)置合適的共享/私有Cache劃分,采用可配置的旁路Cache策略能夠使應(yīng)用TRMM,GEMM和TTRMM的運(yùn)行節(jié)拍和缺失率得到顯著降低;對(duì)于FFT,運(yùn)行節(jié)拍數(shù)和缺失率雖然改善相對(duì)小一些,但也有明顯改善。相比僅設(shè)置合適的共享/私有Cache劃分,采用高優(yōu)先權(quán)的優(yōu)化策略能夠使應(yīng)用程序的運(yùn)行節(jié)拍數(shù)和缺失率得到一定程度的降低。
圖7 B/C/D組的歸一化執(zhí)行節(jié)拍數(shù)Fig.7 Normalized cycles of B/C/D groups
圖8 B/C/D組的缺失率Fig.8 Miss rates of B/C/D groups
再次,當(dāng)三種子策略結(jié)合使用時(shí)(見(jiàn)表5),對(duì)于選取的應(yīng)用程序,運(yùn)行節(jié)拍數(shù)能夠降低到未優(yōu)化版本的 1/12.1 ~1/4.7。對(duì)于 TRMM,GEMM和TTRMM,采用提出的三種策略,可以基本上保證其所有的請(qǐng)求在LLC中命中,此時(shí)運(yùn)行效率是最高的;對(duì)于FFT算法,能夠?qū)⑷笔蕪?8.50%降低到18.87%。
表5 三種子策略結(jié)合使用對(duì)性能的提升Tab.5 Increase to the system of three sub policies
此外,對(duì)比圖8和表5,能夠發(fā)現(xiàn) TRMM,GEMM和TTRMM的缺失率在C組和E組中相同。這是由于TRMM,GEMM和TTRMM中計(jì)算訪(fǎng)存比較大,在采用子策略1和子策略2優(yōu)化之后已經(jīng)能夠保證絕大部分訪(fǎng)問(wèn)在LLC中命中(即只存在強(qiáng)制性缺失、不存在容量缺失和沖突缺失),因而在此基礎(chǔ)上子策略3的優(yōu)化效果不明顯。這并不意味著子策略3不重要,對(duì)比圖7和圖8可以得出,對(duì)于TRMM,GEMM和TTRMM,在子策略1的基礎(chǔ)上使用子策略3能夠使程序的執(zhí)行節(jié)拍數(shù)降低(相對(duì)值分別為從1.42到1.30、從2.05 到1.66 和從1.32 到1.21)和缺失率得到降低(分別從 10.04% 到 8.23%、從 11.15% 到9.45%和從10.24%到8.76%)。而對(duì)于 FFT程序來(lái)說(shuō)存儲(chǔ)帶寬的瓶頸效應(yīng)更加顯著,即在采用子策略1和子策略2后,LLC依然存在容量缺失和沖突缺失現(xiàn)象,因而再采用子策略3依然能夠?qū)Τ绦虍a(chǎn)生較明顯的優(yōu)化效果。
文獻(xiàn)[7]提出了一種自適應(yīng)的共享/私有Cache劃分方法,可以根據(jù)負(fù)載特征動(dòng)態(tài)調(diào)整私有和共享部分的比例,但其硬件開(kāi)銷(xiāo)比較大。文獻(xiàn)[8,9]提出了一種合作式的Cache,在LLC私有Cache的基礎(chǔ)上允許L1D間直接傳遞數(shù)據(jù),以實(shí)現(xiàn)核間通信。劉勝等提出的通過(guò)設(shè)置高低位交叉區(qū)間來(lái)實(shí)現(xiàn)“可配置的共享私有Cache劃分”的方法與之前的方案均不相同,并且軟硬件開(kāi)銷(xiāo)均更加合理。
傳統(tǒng)的LLC優(yōu)化策略,如采用調(diào)度策略?xún)?yōu)化[3],頁(yè)著色劃分[4]等減少 LLC 中并發(fā)進(jìn)程間的沖突,過(guò)分依賴(lài)操作系統(tǒng)。文獻(xiàn)[5]將替換策略融合允許程序在不同的替換策略切換,以獲得較大的性能。該方法硬件開(kāi)銷(xiāo)較大。劉勝等提出的“優(yōu)先權(quán)替換策略”與已有的替換機(jī)制均不相同,在樹(shù)形偽LRU機(jī)制上進(jìn)行了擴(kuò)展,實(shí)際上也可以擴(kuò)展到其他替換機(jī)制上去。
文獻(xiàn)[6]提出兩級(jí)重用預(yù)測(cè)器用于指導(dǎo)旁路判定數(shù)據(jù)塊是否不會(huì)再被訪(fǎng)問(wèn),若是則采用旁路技術(shù),避免該數(shù)據(jù)塊訪(fǎng)問(wèn)高速緩存??膳渲玫呐月稢ache策略借鑒了該方法,并將設(shè)置權(quán)限交給了用戶(hù)以減少預(yù)測(cè)器的軟硬件開(kāi)銷(xiāo)。
本文提出了一種基于訪(fǎng)問(wèn)模式的多核LLC優(yōu)化方法,該方法在一款自主研發(fā)的高性能多核DSPMatrix-M中進(jìn)行了實(shí)現(xiàn)和模擬評(píng)估。評(píng)估結(jié)果顯示該方法能夠靈活地改變LLC執(zhí)行行為和顯著提升應(yīng)用程序的性能。下一步將采用更多的應(yīng)用對(duì)提出的機(jī)制進(jìn)行評(píng)測(cè)和改進(jìn)。
References)
[1] Blake G,Dreslinski R G,Mudge T.A survey of multicore processors[J].IEEE Signal Processing Magazine,2009,26(6):26-37.
[2] Jaleel A, Theobald K B,Steely Jr S C, et al. High performance cache replacement using re-reference interval prediction[C]//Proceedings of Computer Architecture News,2010,38(3):60-71.
[3] Fedorova A. Operating system scheduling for chip multithreaded processors[D].USA:University of Harvard,2006.
[4] Soares L,Tam D,Stumm M.Reducing the harmful effects of last-level cache polluters with an OS-level,software-only pollute buffer[C]//Proceedings of the 41st Annual IEEE/ACM International Symposium on Microarchitecture,2008:258-269.
[5] Subramanian R,Smaragdakis Y,Loh G H.Adaptive caches:effective shaping of cache behavior to workloads[C]//Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture,2006:385-396.
[6] Xiang L X,Chen T Z,Shi Q,et al.Less reused filter:improving L2 cache performance via filtering less reused lines[C]//Proceedings of the23rd International Conference on Supercomputing,2009:68-79.
[7] Dybdahl H,Stenstrom P.An adaptive shared/private nuca cache partitioning scheme for chip multiprocessors[C]//Proceedings of IEEE 13th International Symposium on High Performance Computer Architecture,2007:2-12.
[8] Chang J, Sohi G S. Cooperative caching for chip multiprocessors[C]//Proceedings of the 33nd Annual International Symposium on Computer Architecture,2006:264-276.
[9] Herrero E,González J,Canal R.Distributed cooperative caching[C]//Proceedings of the 17th International Conference on Parallel Architectures and Compilation Techniques,2008:134-143.