本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種緩存優(yōu)化方法和系統(tǒng)。
背景技術(shù):
參考圖1,在嵌入式等電子設(shè)備中,CPU(中央處理器,Central Processing Unit)通常有一級(jí)緩存、二級(jí)緩存。具體而言,二級(jí)緩存的出現(xiàn)是為了協(xié)調(diào)一級(jí)緩存與內(nèi)存之間的速度,主要用于一級(jí)緩存和內(nèi)存之間的數(shù)據(jù)臨時(shí)交換,二級(jí)緩存比一級(jí)緩存的速度更慢,容量更大。
隨著嵌入式等電子設(shè)備的日漸普及,人們?cè)谑褂眠@些設(shè)備時(shí)對(duì)設(shè)備功耗的要求也越來(lái)越高,其中,通過(guò)對(duì)緩存尤其是對(duì)二級(jí)緩存的優(yōu)化重構(gòu)來(lái)降低功耗,進(jìn)一步提升設(shè)備的系統(tǒng)能效有著巨大的發(fā)展空間?,F(xiàn)階段技術(shù)下在緩存重構(gòu)中挑戰(zhàn)最大的莫過(guò)于對(duì)緩存參數(shù)的優(yōu)化,緩存存在三個(gè)參數(shù),緩存塊大小(cache block size)、緩存行大小(line size)及關(guān)聯(lián)(associativity),時(shí)下對(duì)緩存參數(shù)進(jìn)行優(yōu)化以實(shí)現(xiàn)緩存重構(gòu)進(jìn)而降低設(shè)備的系統(tǒng)功耗成為本領(lǐng)域的熱門問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種緩存優(yōu)化方法和系統(tǒng),旨在通過(guò)對(duì)緩存參數(shù)進(jìn)行優(yōu)化實(shí)現(xiàn)緩存重構(gòu),進(jìn)而降低嵌入式等設(shè)備的系統(tǒng)功耗。
為此,本發(fā)明公開如下技術(shù)方案:
一種緩存優(yōu)化方法,包括:
獲得程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的預(yù)定功耗參數(shù)的不同取值;
基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值;
確定最小的運(yùn)行功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并作為所述預(yù)定緩存參數(shù)的最優(yōu)取值;
將所述預(yù)定緩存參數(shù)的值調(diào)整為所述最優(yōu)取值,使得所述程序后續(xù)基于所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行。
上述方法,優(yōu)選的,所述獲得程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的預(yù)定功耗參數(shù)的不同取值包括:
在程序運(yùn)行于所述預(yù)定緩存參數(shù)的每種取值時(shí),相應(yīng)記錄所述預(yù)定緩存參數(shù)的取值及所述預(yù)定功耗參數(shù)的取值。
上述方法,優(yōu)選的,所述基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值包括:
基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的緩存命中功耗,緩存未命中功耗及漏電電流功耗;
基于所述緩存命中功耗,緩存未命中功耗及漏電電流功耗計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值。
上述方法,優(yōu)選的,所述預(yù)定緩存參數(shù)為緩存塊大小、緩存行大小及關(guān)聯(lián)中的任意一種。
上述方法,優(yōu)選的,所述預(yù)定緩存參數(shù)具體為緩存塊大小,則所述方法在將所述預(yù)定緩存參數(shù)的值調(diào)整為所述最優(yōu)取值之后,還包括:
依次將所述預(yù)定緩存參數(shù)切換為所述緩存行大小、所述關(guān)聯(lián),并在每次對(duì)所述預(yù)定緩存參數(shù)進(jìn)行切換后,執(zhí)行所述方法對(duì)切換后的所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,使得所述程序后續(xù)基于所述緩存塊大小、緩存行大小及關(guān)聯(lián)的最優(yōu)取值運(yùn)行。
一種緩存優(yōu)化系統(tǒng),包括:
獲取模塊,用于獲得程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的預(yù)定功耗參數(shù)的不同取值;
計(jì)算模塊,用于基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值;
確定模塊,用于確定最小的運(yùn)行功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并作為所述預(yù)定緩存參數(shù)的最優(yōu)取值;
第一優(yōu)化模塊,用于將所述預(yù)定緩存參數(shù)的值調(diào)整為所述最優(yōu)取值,使得所述程序后續(xù)基于所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行。
上述系統(tǒng),優(yōu)選的,所述獲取模塊包括:
記錄單元,用于在程序運(yùn)行于所述預(yù)定緩存參數(shù)的每種取值時(shí),相應(yīng)記錄所述預(yù)定緩存參數(shù)的取值及所述預(yù)定功耗參數(shù)的取值。
上述系統(tǒng),優(yōu)選的,所述計(jì)算模塊包括:
第一計(jì)算單元,用于基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的緩存命中功耗,緩存未命中功耗及漏電電流功耗;
第二計(jì)算單元,用于基于所述緩存命中功耗,緩存未命中功耗及漏電電流功耗計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值。
上述系統(tǒng),優(yōu)選的,所述預(yù)定緩存參數(shù)具體為緩存塊大小,則所述系統(tǒng)還包括:
第二優(yōu)化模塊,用于依次將所述預(yù)定緩存參數(shù)切換為緩存行大小及關(guān)聯(lián),并在每次對(duì)所述預(yù)定緩存參數(shù)進(jìn)行切換后,觸發(fā)執(zhí)行所述系統(tǒng)中的各模塊對(duì)切換后的所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,使得所述程序后續(xù)基于所述緩存塊大小、緩存行大小及關(guān)聯(lián)的最優(yōu)取值運(yùn)行。
由以上方案可知,本申請(qǐng)公開了一種緩存優(yōu)化方法和系統(tǒng),所述方法通過(guò)計(jì)算程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的功耗值的大小,確定出最小功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并將該取值作為該預(yù)定緩存參數(shù)的最優(yōu)取值,在此基礎(chǔ)上,對(duì)所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,將其調(diào)整為所述最優(yōu)取值,以此實(shí)現(xiàn)緩存重構(gòu);從而,后續(xù)所述程序可基于優(yōu)化后的緩存參數(shù),即所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行,可有效降低嵌入式等設(shè)備的系統(tǒng)功耗。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1是CPU平臺(tái)下的緩存架構(gòu)示意圖;
圖2是本申請(qǐng)實(shí)施例一提供的緩存優(yōu)化方法的一種流程圖;
圖3是本申請(qǐng)實(shí)施例一提供的二級(jí)緩存的優(yōu)化原理示意圖;
圖4是本申請(qǐng)實(shí)施例二提供的緩存優(yōu)化方法的另一種流程圖;
圖5是本申請(qǐng)實(shí)施例二提供的緩存參數(shù)的尋優(yōu)示意圖;
圖6-圖7是本申請(qǐng)實(shí)施例三提供的緩存優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了引用和清楚起見(jiàn),下文中使用的技術(shù)名詞、簡(jiǎn)寫或縮寫總結(jié)解釋如下:
緩存塊大小:cache block size,其中,緩存塊(cache block)具體指進(jìn)行緩存處理時(shí)所采用的一邏輯操作單元,緩存塊大小即指該邏輯操作單元的大小,緩存處理會(huì)按塊進(jìn)行操作,例如在對(duì)緩存數(shù)據(jù)進(jìn)行命中時(shí),依次取出緩存中的整塊數(shù)據(jù),并在所取出的塊中進(jìn)行命中。
關(guān)聯(lián):associativity,如n-way associativity,具體指緩存可同時(shí)支持多路緩存操作,如多路緩存數(shù)據(jù)命中等。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
本申請(qǐng)實(shí)施例一公開一種緩存優(yōu)化方法,該方法主要適用于對(duì)二級(jí)緩存或三級(jí)緩存等多級(jí)緩存的緩存參數(shù)進(jìn)行優(yōu)化,從而通過(guò)對(duì)二級(jí)緩存或其他多級(jí)緩存進(jìn)行緩存重構(gòu)來(lái)降低嵌入式等設(shè)備的系統(tǒng)功耗,參考圖2示出的緩存優(yōu)化方法流程圖,所述方法可以包括以下步驟:
S101:獲得程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的預(yù)定功耗參數(shù)的不同取值。
其中,緩存存在三個(gè)參數(shù),緩存塊大小(cache block size)、緩存行大小(line size)及關(guān)聯(lián)(associativity),基于此,所述預(yù)定緩存參數(shù)具體可以是緩存塊大小、緩存行大小及關(guān)聯(lián)這三個(gè)緩存參數(shù)中的任意一個(gè)。即,具體地,本申請(qǐng)的主要構(gòu)思是:可以在所述三個(gè)緩存參數(shù)中任意兩個(gè)緩存參數(shù)的取值固定的情況下,對(duì)第三個(gè)緩存參數(shù)按程序在該參數(shù)的不同取值下進(jìn)行運(yùn)行時(shí)的功耗情況進(jìn)行緩存尋優(yōu),基于最低功耗點(diǎn)得出該參數(shù)的最優(yōu)取值,在此基礎(chǔ)上實(shí)現(xiàn)對(duì)該參數(shù)即所述第三個(gè)緩存參數(shù)進(jìn)行優(yōu)化。實(shí)際應(yīng)用中,可基于本申請(qǐng)構(gòu)思通過(guò)循環(huán)方式依次對(duì)所述三個(gè)緩存參數(shù)中的每個(gè)緩存參數(shù)進(jìn)行尋優(yōu)及優(yōu)化,從而使得程序可以在三個(gè)緩存參數(shù)均為最優(yōu)的情況下運(yùn)行。
本實(shí)施例具體以對(duì)二級(jí)緩存進(jìn)行優(yōu)化為例來(lái)對(duì)本申請(qǐng)方法進(jìn)行說(shuō)明。
上述三個(gè)緩存參數(shù)的各個(gè)可選取值一般如下:
緩存塊大小:32KB,64KB,…,4MB;
緩存行大?。?6B,32B,64B;
關(guān)聯(lián):1-way,2-way,4-way,8-way,16-way。
本實(shí)施例在假設(shè)緩存行大小及關(guān)聯(lián)這兩個(gè)緩存參數(shù)的取值固定的情況下,對(duì)緩存塊大小這一參數(shù)進(jìn)行尋優(yōu),即假設(shè)所述預(yù)定緩存參數(shù)具體為緩存塊大小。
其中,在本步驟S101中,可在程序運(yùn)行于所述預(yù)定緩存參數(shù)的每種取值時(shí),相應(yīng)記錄所述預(yù)定緩存參數(shù)的取值及所述預(yù)定功耗參數(shù)的取值。具體的,以所述預(yù)定緩存參數(shù)具體為緩存塊大小為例,在緩存行大小及關(guān)聯(lián)這兩個(gè)緩存參數(shù)的取值固定的情況下(具體可以是上述對(duì)應(yīng)列舉的多個(gè)可選取值中的之一),可在程序運(yùn)行于緩存塊大小為32KB,64KB,…,4MB中的每種取值時(shí),記錄相對(duì)應(yīng)的緩存塊大小的取值及程序的預(yù)定功耗參數(shù)的取值。
所述預(yù)定功耗參數(shù)具體可包含一系列與程序功耗計(jì)算相關(guān)的參數(shù),如緩存訪問(wèn)中命中的次數(shù)、緩存訪問(wèn)中未命中的次數(shù)、當(dāng)前訪問(wèn)的命中耗時(shí),獲取所需數(shù)據(jù)的訪問(wèn)耗時(shí)、訪問(wèn)內(nèi)存功耗、緩存置換功耗等等。
S102:基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值。
在得到cache block size的每種取值情況下相匹配的程序功耗參數(shù)值的基礎(chǔ)上,本步驟基于獲得的功耗參數(shù)值,計(jì)算程序運(yùn)行于cache block size的各種取值下的功耗值。
其中,程序的運(yùn)行功耗值具體可采用以下各式計(jì)算得出:
Etotal=Ecache-hit+Ecache-miss+Eleakage (1)
Ecache-hit=(Nhit)×(AThit)×(Ptag+Pdata+Poutput) (2)
Ecache-miss=(Nmiss)×(AThit·Ptag+ATmiss·(Pmemory+Pprocessor-stall+Pcache-refill)) (3)
在以上各式中,各字符所表示的含義具體如下:
Etotal表示總功耗,即所述程序的運(yùn)行功耗,其共包含三部分功耗數(shù)據(jù):緩存命中功耗Ecache-hit,緩存未命中功耗Ecache-miss及漏電電流功耗Eleakage;
Nhit、Nmiss分別表示緩存訪問(wèn)中命中的次數(shù)、緩存訪問(wèn)中未命中的次數(shù);
AThit、ATmiss分別表示當(dāng)前訪問(wèn)的命中耗時(shí),未命中緩存情況下通過(guò)搜索內(nèi)存獲取所需數(shù)據(jù)的耗時(shí);
Ptag、Pdata、Poutput分別表示標(biāo)簽陣列功耗、數(shù)據(jù)陣列功耗及輸出設(shè)備功耗;
Pmemory表示訪問(wèn)內(nèi)存功耗;
Pprocessor-stall表示處理器等待時(shí)消耗的功耗;
Pcache-refill表示緩存置換功耗。
S103:確定最小的運(yùn)行功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并作為所述預(yù)定緩存參數(shù)的最優(yōu)取值。
在計(jì)算出cache block size的不同取值下,程序運(yùn)行時(shí)分別對(duì)應(yīng)的不同功耗值的基礎(chǔ)上,可通過(guò)對(duì)計(jì)算得出的各功耗值進(jìn)行比較,確定出最小的運(yùn)行功耗值,即最低功耗點(diǎn),并將最低功耗點(diǎn)對(duì)應(yīng)的cache block size的取值,作為其最優(yōu)取值。
S104:將所述預(yù)定緩存參數(shù)的值調(diào)整為所述最優(yōu)取值,使得所述程序后續(xù)基于所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行。
在以上步驟的基礎(chǔ)上,本步驟將cache block size的值調(diào)整為所述最低功耗點(diǎn)對(duì)應(yīng)的cache block size的取值,即所述最優(yōu)取值,從而實(shí)現(xiàn)對(duì)cache block size這一緩存參數(shù)進(jìn)行優(yōu)化,進(jìn)而實(shí)現(xiàn)對(duì)二級(jí)緩存進(jìn)行優(yōu)化。后續(xù)所述程序可基于優(yōu)化后的cache block size的取值即所述最優(yōu)取值運(yùn)行。在其他不同的程序運(yùn)行時(shí),可利用本申請(qǐng)方法再次對(duì)該程序?qū)?yīng)的緩存參數(shù)值進(jìn)行尋優(yōu)及動(dòng)態(tài)修改,從而實(shí)現(xiàn)對(duì)該程序?qū)?yīng)采用的緩存參數(shù)進(jìn)行優(yōu)化。
實(shí)際應(yīng)用中,不限于必須采用本申請(qǐng)?zhí)岢龅乃龈鞑襟E的先后執(zhí)行次序,例如,可不必局限于在計(jì)算出預(yù)定緩存參數(shù)的所有不同取值情況下程序的不同能耗值的基礎(chǔ)上,再對(duì)各個(gè)能耗值進(jìn)行比較以及確定最低能耗點(diǎn),而是可以在每次計(jì)算出程序本次運(yùn)行對(duì)應(yīng)的能耗值后,隨即將其與程序上一次運(yùn)行時(shí)確定的最低能耗值進(jìn)行比較,每次比較均可確定出當(dāng)前的最低能耗值,從而對(duì)應(yīng)可確定出當(dāng)前的最佳緩存參數(shù)值,進(jìn)而通過(guò)多次比較即可得出預(yù)定緩存參數(shù)的所有不同取值情況下程序的最低能耗點(diǎn),以及對(duì)應(yīng)的最優(yōu)緩存參數(shù)值。
具體實(shí)施時(shí),可采用一帶有歷史信息寄存器模塊的裝置對(duì)本申請(qǐng)的方法進(jìn)行實(shí)現(xiàn),該裝置可包括一歷史信息寄存器模塊以及一緩存參數(shù)搜索模塊,其中,所述歷史信息寄存器模塊包括函數(shù)接口單元,基于歷史信息寄存器的參數(shù)緩存單元及功耗計(jì)算單元。
以圖3示出的二級(jí)緩存為例,其中,圖3中虛線左邊的部分為二級(jí)緩存結(jié)構(gòu),其當(dāng)前的緩存參數(shù)配置為cache block size:64KB,line size:64Bytes,associativity:8-way,緩存參數(shù)的配置具體通過(guò)訪問(wèn)控制器(access controller)來(lái)完成。
每個(gè)程序在運(yùn)行時(shí)都會(huì)有對(duì)應(yīng)的緩存參數(shù),函數(shù)入口地址等。當(dāng)函數(shù)入口單元比配到正在運(yùn)行的程序(subroutine)的入口地址后,參數(shù)緩存單元在歷史信息寄存器記錄此地址,并記錄當(dāng)前的緩存參數(shù)(其中包含待搜索/優(yōu)化的緩存參數(shù)以及其他兩個(gè)具有固定取值的緩存參數(shù))值以及相應(yīng)的功耗參數(shù)值,功耗計(jì)算單元基于記錄的功耗參數(shù)值計(jì)算程序本次運(yùn)行的功耗值,當(dāng)所述程序再次運(yùn)行時(shí),函數(shù)入口單元通過(guò)再次比配到該程序的入口地址獲知該程序再次運(yùn)行,并在歷史信息寄存器記錄相應(yīng)信息,且通過(guò)功耗計(jì)算單元計(jì)算此次的功耗值,在此基礎(chǔ)上,緩存參數(shù)搜索模塊采用比較器將此次運(yùn)行的功耗值與上次運(yùn)行時(shí)確定的最低功耗值進(jìn)行比較,并確定出較小的功耗值對(duì)應(yīng)的緩存參數(shù)值,歷史信息寄存器會(huì)更新記錄當(dāng)前的緩存最佳參數(shù)值,從而,通過(guò)在該程序多次運(yùn)行時(shí)的多次記錄、計(jì)算、比較,可得出該程序在待搜索/優(yōu)化的緩存參數(shù)的各取值情況下的最低功耗點(diǎn),進(jìn)而可確定出該最低功耗點(diǎn)對(duì)應(yīng)的緩存參數(shù)最優(yōu)取值,實(shí)現(xiàn)了對(duì)待搜索/優(yōu)化的緩存參數(shù)的取值進(jìn)行搜索尋優(yōu),最終可基于尋優(yōu)所得的最優(yōu)緩存值對(duì)程序運(yùn)行時(shí)采用的緩存參數(shù)進(jìn)行優(yōu)化。
實(shí)際應(yīng)用中,為簡(jiǎn)化實(shí)施復(fù)雜度并節(jié)約資源,不必針對(duì)每一程序例如每一應(yīng)用程序均采用本申請(qǐng)方法對(duì)其緩存參數(shù)進(jìn)行搜索尋優(yōu)及優(yōu)化,而可以對(duì)不同程序進(jìn)行類別劃分,將具有相似行為或相似代碼特征的程序劃分為一類,從而對(duì)于同類程序,可僅針對(duì)該類中的某一程序執(zhí)行本申請(qǐng)方法對(duì)該程序進(jìn)行緩存參數(shù)尋優(yōu),后續(xù)該類程序均可基于本次尋所確定的最優(yōu)緩存參數(shù)運(yùn)行。
由以上方案可知,本申請(qǐng)公開了一種緩存優(yōu)化方法,所述方法通過(guò)計(jì)算程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的功耗值的大小,確定出最小功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并將該取值作為該預(yù)定緩存參數(shù)的最優(yōu)取值,在此基礎(chǔ)上,對(duì)所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,將其調(diào)整為所述最優(yōu)取值,以此實(shí)現(xiàn)緩存重構(gòu);從而,后續(xù)所述程序可基于優(yōu)化后的緩存參數(shù),即所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行,可有效降低嵌入式等設(shè)備的系統(tǒng)功耗。
實(shí)施例二
本實(shí)施例二繼續(xù)對(duì)實(shí)施例一的方案進(jìn)行補(bǔ)充,本實(shí)施例中,所述預(yù)定緩存參數(shù)具體為緩存塊大小,則參考圖4,所述緩存優(yōu)化方法在所述步驟S104之后還可以包括:
S105:依次將所述預(yù)定緩存參數(shù)切換為所述緩存行大小、所述關(guān)聯(lián),并在每次對(duì)所述預(yù)定緩存參數(shù)進(jìn)行切換后,執(zhí)行所述方法對(duì)切換后的所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,使得所述程序后續(xù)基于所述緩存塊大小、緩存行大小及關(guān)聯(lián)的最優(yōu)取值運(yùn)行。
由于緩存參數(shù)包括三個(gè):cache block size、line size及associativity,從而在利用實(shí)施例一的緩存優(yōu)化方法對(duì)其中一個(gè)緩存參數(shù),如cache block size進(jìn)行優(yōu)化的基礎(chǔ)上,可繼續(xù)將所述預(yù)定緩存參數(shù)依次切換為其他兩個(gè)緩存參數(shù),并在每次切換后,循環(huán)執(zhí)行實(shí)施例一的方法對(duì)切換后的緩存參數(shù)進(jìn)行尋優(yōu),從而最終使得所述三個(gè)緩存參數(shù)的取值均被優(yōu)化。
具體地,由于cache block size相比于其他兩個(gè)參數(shù)對(duì)功耗有著更大的影響,所以,本實(shí)施例首先確定cache block size的最優(yōu)取值,之后,再依次遍歷其他兩個(gè)參數(shù)(line size及associativity)的各個(gè)取值實(shí)現(xiàn)尋優(yōu)。參考圖5示出的緩存參數(shù)的尋優(yōu)示意圖,在首先確定出cache block size的最優(yōu)取值后,在cache block size的最優(yōu)取值下,繼續(xù)對(duì)其他兩個(gè)緩存參數(shù)的各個(gè)取值進(jìn)行遍歷,并以最低功耗點(diǎn)為基準(zhǔn)實(shí)現(xiàn)尋優(yōu)。
實(shí)施例三
本申請(qǐng)實(shí)施例三公開一種緩存優(yōu)化系統(tǒng),該系統(tǒng)與以上各實(shí)施例公開的緩存優(yōu)化方法相對(duì)應(yīng)。
相應(yīng)于實(shí)施例一,參考圖6,所述緩存優(yōu)化系統(tǒng)包括獲取模塊100、計(jì)算模塊200、確定模塊300和第一優(yōu)化模塊400。
獲取模塊100,用于獲得程序運(yùn)行于預(yù)定緩存參數(shù)的不同取值時(shí)對(duì)應(yīng)的預(yù)定功耗參數(shù)的不同取值。
所述獲取模塊100包括記錄單元,用于在程序運(yùn)行于所述預(yù)定緩存參數(shù)的每種取值時(shí),相應(yīng)記錄所述預(yù)定緩存參數(shù)的取值及所述預(yù)定功耗參數(shù)的取值。
計(jì)算模塊200,用于基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值。
所述計(jì)算模塊200包括第一計(jì)算單元和第二計(jì)算單元。
第一計(jì)算單元,用于基于所述預(yù)定功耗參數(shù)的相應(yīng)取值,計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的緩存命中功耗,緩存未命中功耗及漏電電流功耗;
第二計(jì)算單元,用于基于所述緩存命中功耗,緩存未命中功耗及漏電電流功耗計(jì)算所述預(yù)定緩存參數(shù)的每種取值對(duì)應(yīng)的所述程序的運(yùn)行功耗值。
確定模塊300,用于確定最小的運(yùn)行功耗值對(duì)應(yīng)的所述預(yù)定緩存參數(shù)的取值,并作為所述預(yù)定緩存參數(shù)的最優(yōu)取值。
第一優(yōu)化模塊400,用于將所述預(yù)定緩存參數(shù)的值調(diào)整為所述最優(yōu)取值,使得所述程序后續(xù)基于所述預(yù)定緩存參數(shù)的所述最優(yōu)取值運(yùn)行。
相應(yīng)于實(shí)施例二,參考圖7,所述緩存優(yōu)化系統(tǒng)還可以包括第二優(yōu)化模塊500,用于依次將所述預(yù)定緩存參數(shù)切換為緩存行大小、關(guān)聯(lián),并在每次對(duì)所述預(yù)定緩存參數(shù)進(jìn)行切換后,觸發(fā)執(zhí)行所述系統(tǒng)中的各模塊對(duì)切換后的所述預(yù)定緩存參數(shù)的取值進(jìn)行優(yōu)化,使得所述程序后續(xù)基于所述緩存塊大小、緩存行大小及關(guān)聯(lián)的最優(yōu)取值運(yùn)行。
對(duì)于本發(fā)明實(shí)施例三公開的緩存優(yōu)化系統(tǒng)而言,由于其與實(shí)施例一至實(shí)施例二公開的緩存優(yōu)化方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)相似之處請(qǐng)參見(jiàn)實(shí)施例一至實(shí)施例二中緩存優(yōu)化方法部分的說(shuō)明即可,此處不再詳述。
需要說(shuō)明的是,本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
為了描述的方便,描述以上系統(tǒng)或裝置時(shí)以功能分為各種模塊或單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后,還需要說(shuō)明的是,在本文中,諸如第一、第二、第三和第四等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。