国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法

      文檔序號(hào):6334845閱讀:289來源:國知局
      專利名稱:一種嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種嵌入式設(shè)備緩沖存儲(chǔ)器的處理方法,尤其是一種嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,屬于計(jì)算機(jī)存儲(chǔ)器層次結(jié)構(gòu)設(shè)計(jì)領(lǐng)域。
      背景技術(shù)
      目前,對(duì)于以電池供電的便攜式嵌入式設(shè)備而言,降低其整體功耗具有越來越大的現(xiàn)實(shí)意義。而在這些嵌入式設(shè)備中,Cache的功耗占整體功耗的40%左右,因此研究如何降低Cache的功耗成為嵌入式設(shè)備設(shè)計(jì)者普遍關(guān)注的問題。嵌入式系統(tǒng)通常采用固定容量的指令Cache和數(shù)據(jù)Cache,但是不同程序?qū)χ噶?Cache和數(shù)據(jù)Cache的需求是不平衡的,從而導(dǎo)致某種Cache的容量不足而另一種Cache卻有空閑。而混合Cache卻不存在這種問題,但混合Cache的容量一般都比較大,訪問功耗也就比較大,降低了其普遍適用性。針對(duì)混合Cache的特點(diǎn),前人提出一種低功耗分類訪問方案,該方案通過增加一個(gè)類型指示位,將Cache的每一塊動(dòng)態(tài)化分為指令塊和數(shù)據(jù)塊,在訪問過程中,只有類型匹配的塊才被訪問,從而可以過濾對(duì)不必要的存儲(chǔ)體訪問,節(jié)省了訪問功耗。但該方案不能滿足程序運(yùn)行時(shí)對(duì)Cache容量的動(dòng)態(tài)需求。申請(qǐng)?zhí)枮?03116564. 8,200810156535. 2、200910096957. X 的中國專利申請(qǐng)分別公開了低功耗Cache實(shí)現(xiàn)的幾種方法。第一種方法只能面向指令Cache,該方法設(shè)立了索引標(biāo)志寄存器,來保存行匹配和組選擇結(jié)果,利用預(yù)測(cè)的方法和環(huán)形歷史緩沖區(qū)來減少對(duì)索引標(biāo)志寄存器的訪問,實(shí)現(xiàn)對(duì)指令Cache降低功耗。第二種方法是通過增加一個(gè)Cache控制器,實(shí)現(xiàn)了將頻繁訪問的數(shù)據(jù)拷貝到Cache中,而將引起預(yù)取時(shí)間局部下降的數(shù)據(jù),直接從主存讀出,同時(shí)根據(jù)歷史記錄,生成標(biāo)記信息表(該表可以由軟件修改),加載到Cache控制器中,控制其操作,從而降低Cache的功耗;第三種是基于程序需求改變Cache組相聯(lián)度的方法,該方法主要修改了 Cache的組相聯(lián)度,對(duì)于Cache的類型和有效性并未加以判斷,且每組的組相聯(lián)度必須相同。
      綜上所述,現(xiàn)有技術(shù)的Cache設(shè)計(jì)方案均無法滿足嵌入式設(shè)備容量小、低功耗的需求。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于針對(duì)上述現(xiàn)有技術(shù)存在的不足,提出一種可以有效降低沖突缺失、避免抖動(dòng)的嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法。本發(fā)明的嵌入式設(shè)備指其中嵌入計(jì)算機(jī)系統(tǒng)的信息電器、移動(dòng)通訊設(shè)備、網(wǎng)絡(luò)設(shè)備、以及工控仿真設(shè)備等。為達(dá)到上述目的,本發(fā)明嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法在嵌入式設(shè)備中通過以下基本步驟完成
      第一步、分別預(yù)先設(shè)置指令Cache和數(shù)據(jù)Chche的以下狀態(tài)(參見圖幻初始狀態(tài)SO、 預(yù)備大容量狀態(tài)Si、容量競(jìng)爭(zhēng)狀態(tài)S2、預(yù)備小容量狀態(tài)S3、容量調(diào)整狀態(tài)S4 ; 初始狀態(tài)SO是指=Cache容量、結(jié)構(gòu)保持不變的狀態(tài);預(yù)備大容量狀態(tài)Sl是指比目前Cache具有更大容量的Cache狀態(tài);通常若目前Cache 的容量不為最大,則定義更大Cache具有比目前更多路——例如增加1路的容量;
      容量競(jìng)爭(zhēng)狀態(tài)S2是指指令Cache和數(shù)據(jù)Cache容量需求產(chǎn)生沖突的狀態(tài);通常由于程序運(yùn)行連續(xù)缺失指令,且所有Cache路已經(jīng)全部分配完,無空閑路,即處于此狀態(tài);
      預(yù)備小容量狀態(tài)S3是指比目前Cache具有更小容量的Cache狀態(tài);通常若目前Cache 的容量不為最小,則定義更小Cache的容量為當(dāng)前容量一半的狀態(tài);
      容量調(diào)整狀態(tài)S4是指對(duì)目前的Cache容量進(jìn)行調(diào)整、重新分配指令Cache和數(shù)據(jù) Cache容量大小的狀態(tài);
      第二步、建立以下各計(jì)數(shù)器或寄存器
      A.分別用于統(tǒng)計(jì)預(yù)定時(shí)間片內(nèi)各狀態(tài)下指令Cache和數(shù)據(jù)Cache訪問次數(shù)的指令訪問計(jì)數(shù)器I-AC和數(shù)據(jù)訪問計(jì)數(shù)器D-AC ;
      B.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache有效路數(shù)的指令Cache的有效路計(jì)數(shù)器I-MC和數(shù)據(jù)Cache的有效路計(jì)數(shù)器D-MC ;
      C.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache缺失次數(shù)的指令Cache缺失次數(shù)計(jì)數(shù)器I-MC和數(shù)據(jù)Cache缺失次數(shù)計(jì)數(shù)器D-MC ;
      D.分別用于統(tǒng)計(jì)初始狀態(tài)下指令Cache和數(shù)據(jù)Cache連續(xù)缺失次數(shù)的指令Cache連續(xù)缺失計(jì)數(shù)器I-CMC和數(shù)據(jù)Cache連續(xù)缺失計(jì)數(shù)器D-CMC ;
      E.分別用于統(tǒng)計(jì)在預(yù)備大容量狀態(tài)下指令Cache和數(shù)據(jù)Cache額外路命中次數(shù)的指令 Cache額外路命中計(jì)數(shù)器I-EWHC和數(shù)據(jù)Cache額外路命中計(jì)數(shù)器D-EWHC ;
      F.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache最近最少路命中數(shù)的指令Cache最近最少路命中計(jì)數(shù)器I-LRWHC和數(shù)據(jù)Cache最近最少路命中計(jì)數(shù)器D-LRWHC ;
      G.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache除最近最少命中路外次最近最少路命中數(shù)的指令Cache次最近最少路命中計(jì)數(shù)器I-SLRWHC和數(shù)據(jù)Cache次最近最少路命中計(jì)數(shù)器D-SLRWHC;
      第三步、預(yù)置以下各邊界值
      a.作為初始狀態(tài)下Cache狀態(tài)轉(zhuǎn)換條件之一的時(shí)間片邊界值TSB;
      b.作為判斷指令Cache和數(shù)據(jù)Cache在不同狀態(tài)下是否超出最大訪問次數(shù)的訪問邊界值A(chǔ)B ;
      c.作為判斷Cache容量是否超出當(dāng)前程序需求的連續(xù)缺失邊界值CMB;
      d.作為判斷是否帶來不必要能耗的額外路命中邊界值EWHB;
      e.作為判斷關(guān)閉最近最少命中路是否會(huì)導(dǎo)致性能損失的最近最少路命中邊界數(shù) LRffHB ;
      第四步、每當(dāng)程序段發(fā)生變化且進(jìn)入下一個(gè)程序段時(shí),根據(jù)對(duì)以下條件的逐一判斷,進(jìn)入相應(yīng)狀態(tài)并進(jìn)行相應(yīng)置數(shù)和狀態(tài)設(shè)置
      條件A 如果I-CMOCMB且I-MC+D-MC<8,則將I-AC和I-CMC置零,指令Cache轉(zhuǎn)到預(yù)備大容量狀態(tài);
      條件B 如果I-CMOCMB且I-MC+D-MC==8且當(dāng)前數(shù)據(jù)Cache的狀態(tài)不為預(yù)備小容量狀態(tài),則將I-AC和I-CMC置零,指令Cache和數(shù)據(jù)Cache轉(zhuǎn)到容量競(jìng)爭(zhēng)狀態(tài),同時(shí)將D-AC和 D-CMC置零,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為指令Cache和數(shù)據(jù)Cache的容量競(jìng)爭(zhēng)狀態(tài);條件C 如果I-AOTSB且I-MOl且I_CMC<CMB,則將I-AC和I-CMC置零,指令Cache 轉(zhuǎn)到預(yù)備小容量狀態(tài);
      條件 D 如果(I-AC+D-AC) >2*AB,則將 I_AC、D_AC、I-MC 和 D-MC 置零,指令 Cache 和數(shù)據(jù)Cache轉(zhuǎn)到初始狀態(tài),同時(shí)將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);
      條件 E 如果(I-AC+D-AC)==2*AB 且 I-AOD-AC 且 I-MOD-MC,則將 I-AC、D-AC, I-MC 和D-MC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),同時(shí)將數(shù)據(jù)Cache的最近最少命中路用于指令Cache,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);
      條件F 如果I-AOAB且I-EWHC<EWHB,則將I-AC和I-EWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);
      條件G 如果I-EWHC>=EWHB,則將I-AC和I-EWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài), 激活額外路,即預(yù)備大容量狀態(tài)下,相對(duì)于原先SO狀態(tài)增加的新路;
      條件H 如果I-LRWHOLRWHB,則將I_AC、I-SLRffHC和I-LRWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);
      條件 I 如果 I-AOAB 且 I-MC>2 且 I_LRWHC<=LRWHB 且 I_SLRWHC<=LRWHB,則將 I-AC、 I-SLRWHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少和次最近最少命中路;
      條件 J 如果 I-AOAB 且 I-LRWHC<=LRWHB,且 I_MC<2 或 I-SLRWHOLRWHB,則將 I-AC、 I-SLRffHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少命中路; 條件K 如果對(duì)指令Cache和數(shù)據(jù)Cache進(jìn)行容量調(diào)整,之后均轉(zhuǎn)到初始狀態(tài)。本發(fā)明方法的理論依據(jù)是采用PBCRA算法,可以通過比較連續(xù)間隔的指令工作集簽名過程中的相對(duì)簽名距離來檢測(cè)判斷程序段變化,并優(yōu)先分配混合Cache的指令路,然后分配數(shù)據(jù)路(為表述方便,將由混合Cache中的指令路構(gòu)成的Cache稱為指令Cache,而由數(shù)據(jù)路構(gòu)成的Cache稱為數(shù)據(jù)Cache)。所謂工作集簽名最早由Dhodapkar等人提出。每個(gè)簽名包含了在IOOk指令間隔內(nèi)的指令工作集信息。指令工作集簽名是一個(gè)η位向量,向量每一位的值由程序計(jì)數(shù)器PC 的值右移b位(b=log2m,m=程序所使用的指令Cache塊大小)得到。隨機(jī)哈希函數(shù)用來選擇向量位地址。若S1和&代表相鄰間隔的兩個(gè)指令工作集簽名,則定義相對(duì)簽名距離為
      A = Is1 S2|/|S^S2(1)
      其中分子部分為兩個(gè)簽名的異或運(yùn)算;分母部分為兩個(gè)簽名的同或運(yùn)算。若A=I, 則表明兩個(gè)簽名完全不同;而Δ=0,則表明兩個(gè)簽名完全相同。為了準(zhǔn)確地判斷運(yùn)行程序段的變化,定義了一個(gè)相對(duì)簽名距離閾值A(chǔ)th。如果Δ > Ath,則表明程序的運(yùn)行段發(fā)生了變化;否則表明程序段沒有改變。但一個(gè)合適的閾值可能隨著運(yùn)行程序段的不同而變化,因此該閾值將隨程序運(yùn)行而自調(diào)整。以上內(nèi)容在相關(guān)論文中有詳細(xì)記載,本文不展開描述(詳見論文DHODAPKAR A S, SMITH JE. Managingmulti-configuration hardware via dynamicworking set analysis[C] //Proc of the 29th Annual InternationalSymposium on ComputerArchitecture. New York: ACM Press, 2002: 233-244.)。Cache的資源需求和處理器的工作負(fù)荷在同一程序段內(nèi)均不作明顯變化,PBCRA 算法可以利用程序運(yùn)行時(shí)搜集到的Cache性能參數(shù)決定各個(gè)狀態(tài)之間的轉(zhuǎn)換。由于不同的程序甚至同一程序的不同運(yùn)行階段對(duì)Cache容量的需求不一定是相同的,而且對(duì)指令Cache和數(shù)據(jù)Cache的訪問也不一定是平衡的,而上述容量聯(lián)合分配PBCRA算法較好地解決了 在滿足程序?qū)ache資源的實(shí)時(shí)需求的同時(shí),還能充分利用有限的片上Cache資源, 因此有效地避免了分離Cache中由于資源分配不均衡帶來的性能損失。換言之,本發(fā)明一方面采用分類訪問機(jī)制,避免了對(duì)不必要路的訪問;另一方面還采用了基于程序段的重構(gòu)算法(PBCRA算法),能動(dòng)態(tài)調(diào)整Cache的容量,從而合理滿足了程序運(yùn)行時(shí)不同運(yùn)行階段對(duì) Cache的資源需求,顯著降低了功耗。并且,對(duì)于性能參數(shù)AC、CMC等,因?yàn)槟壳扒度胧皆O(shè)備的處理器中已有一些計(jì)數(shù)器(如Cache缺失計(jì)數(shù)器、Cache命中計(jì)數(shù)器等),所以收集這些參數(shù)信息并不需要很大的系統(tǒng)開銷。歸納起來,本發(fā)明具有以下顯著優(yōu)點(diǎn)
      1、減少了 Cache的抖動(dòng)。采用本發(fā)明后,由于指令Cache的路數(shù)和數(shù)據(jù)Cache的路數(shù)是可變的,可以降低沖突缺失并避免抖動(dòng),保證系統(tǒng)穩(wěn)定運(yùn)行。2、性價(jià)比高。在不增加硬件的情況下,采用本發(fā)明后,功耗可以降低20. 4% 40. 7%ο


      下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說明。圖1為本發(fā)明容量配置過程的流程圖。圖2為本發(fā)明指令Cache或數(shù)據(jù)Cache各種狀態(tài)關(guān)系示意圖。圖3是本發(fā)明一個(gè)實(shí)施例基于分類訪問和有效位預(yù)測(cè)的可重構(gòu)八路組相聯(lián)混合 Cache的結(jié)構(gòu)框圖。
      具體實(shí)施例方式實(shí)施例一
      本實(shí)施例中,如圖1所示,當(dāng)一種用于建立電子病歷的嵌入式設(shè)備系統(tǒng)運(yùn)行新程序后,通過計(jì)算原程序和新程序的相對(duì)簽名距離,并加入比較,決定是否進(jìn)入以下低功耗混合 Cache,其實(shí)現(xiàn)步驟為
      第一步、分別設(shè)置指令Cache和數(shù)據(jù)Chche的圖2所示各狀態(tài)初始狀態(tài)SO、預(yù)備大容量狀態(tài)Si、容量競(jìng)爭(zhēng)狀態(tài)S2、預(yù)備小容量狀態(tài)S3、容量調(diào)整狀態(tài)S4。各狀態(tài)定義如前。第二步、建立以下各計(jì)數(shù)器
      A.分別用于統(tǒng)計(jì)預(yù)定時(shí)間片內(nèi)各狀態(tài)下指令Cache和數(shù)據(jù)Cache訪問次數(shù)的指令訪問計(jì)數(shù)器I-AC和數(shù)據(jù)訪問計(jì)數(shù)器D-AC ;
      B.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache有效路數(shù)的指令Cache的有效路計(jì)數(shù)器I-MC和數(shù)據(jù)Cache的有效路計(jì)數(shù)器D-MC ;
      C.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache缺失次數(shù)的指令Cache缺失次數(shù)計(jì)數(shù)器I-MC和數(shù)據(jù)Cache缺失次數(shù)計(jì)數(shù)器D-MC ;
      D.分別用于統(tǒng)計(jì)初始狀態(tài)下指令Cache和數(shù)據(jù)Cache連續(xù)缺失次數(shù)的指令Cache連續(xù)缺失計(jì)數(shù)器I-CMC和數(shù)據(jù)Cache連續(xù)缺失計(jì)數(shù)器D-CMC ;
      E.分別用于統(tǒng)計(jì)在預(yù)備大容量狀態(tài)下指令Cache和數(shù)據(jù)Cache額外路命中次數(shù)的指令 Cache額外路命中計(jì)數(shù)器I-EWHC和數(shù)據(jù)Cache額外路命中計(jì)數(shù)器D-EWHC ;F.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache最近最少路命中數(shù)的指令Cache最近最少路命中計(jì)數(shù)器I-LRWHC和數(shù)據(jù)Cache最近最少路命中計(jì)數(shù)器D-LRWHC ;
      G.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache除最近最少命中路外次最近最少路命中數(shù)的指令Cache次最近最少路命中計(jì)數(shù)器I-SLRWHC和數(shù)據(jù)Cache次最近最少路命中計(jì)數(shù)器D-SLRWHC;
      第三步、預(yù)置以下各邊界值
      a.作為初始狀態(tài)下Cache狀態(tài)轉(zhuǎn)換條件之一的時(shí)間片邊界值TSB;
      b.作為判斷指令Cache和數(shù)據(jù)Cache在不同狀態(tài)下是否超出最大訪問次數(shù)的訪問邊界值A(chǔ)B ;
      c.作為判斷Cache容量是否超出當(dāng)前程序需求的連續(xù)缺失邊界值CMB;
      d.作為判斷是否帶來不必要能耗的額外路命中邊界值EWHB;
      e.作為判斷關(guān)閉最近最少命中路是否會(huì)導(dǎo)致性能損失的最近最少路命中邊界數(shù) LRffHB ;
      以上各邊界值可以根據(jù)經(jīng)驗(yàn)預(yù)置,例如可以將TSB設(shè)為(80K)、AB設(shè)為(5000)、CMB設(shè)為(4)、EWHB 設(shè)為(4)、LRWHB 設(shè)為(4)。 第四步、每當(dāng)通過比較連續(xù)間隔的指令工作集簽名過程中相對(duì)簽名距離(或通過其它方法)發(fā)現(xiàn)程序段變化且進(jìn)入下一個(gè)程序段時(shí),根據(jù)對(duì)以下條件的逐一判斷,進(jìn)入相應(yīng)狀態(tài)并進(jìn)行相應(yīng)置數(shù)和狀態(tài)設(shè)置
      條件A 如果I-CMOCMB且I-MC+D-MC<8,則將I-AC和I-CMC置零,指令Cache轉(zhuǎn)到預(yù)備大容量狀態(tài);
      條件B 如果I-CMOCMB且I-MC+D-MC==8且當(dāng)前數(shù)據(jù)Cache的狀態(tài)不為預(yù)備小容量狀態(tài),則將I-AC和I-CMC置零,指令Cache和數(shù)據(jù)Cache轉(zhuǎn)到容量競(jìng)爭(zhēng)狀態(tài),同時(shí)將D-AC和 D-CMC置零,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為指令Cache和數(shù)據(jù)Cache的容量競(jìng)爭(zhēng)狀態(tài);
      條件C 如果I-AOTSB且I-MOl且I_CMC<CMB,則將I-AC和I-CMC置零,指令Cache 轉(zhuǎn)到預(yù)備小容量狀態(tài);
      條件 D 如果(I-AC+D-AC) >2*AB,則將 I_AC、D_AC、I-MC 和 D-MC 置零,指令 Cache 和數(shù)據(jù)Cache轉(zhuǎn)到初始狀態(tài),同時(shí)將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);
      條件 E 如果(I-AC+D-AC)==2*AB 且 I-AOD-AC 且 I-MOD-MC,則將 I-AC、D-AC, I-MC 和D-MC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),同時(shí)將數(shù)據(jù)Cache的最近最少命中路用于指令Cache,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);
      條件F 如果I-AOAB且I-EWHC<EWHB,則將I-AC和I-EWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);
      條件G 如果I-EWHC>=EWHB,則將I-AC和I-EWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài), 激活額外路;
      條件H 如果I-LRWHOLRWHB,則將I_AC、I-SLRffHC和I-LRWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);
      條件 I 如果 I-AOAB 且 I-MC>2 且 I_LRWHC<=LRWHB 且 I_SLRWHC<=LRWHB,則將 I-AC、 I-SLRWHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少和次最近最少命中路;條件 J 如果 I-AOAB 且 I-LRWHC<=LRWHB,且 I_MC<2 或 I-SLRWHOLRWHB,則將 I-AC、 I-SLRffHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少命中路; 條件K 如果對(duì)指令Cache和數(shù)據(jù)Cache進(jìn)行容量調(diào)整,之后均轉(zhuǎn)到初始狀態(tài)。由于以上條件窮舉了所有可能出現(xiàn)的情況,并且只會(huì)滿足其中的條件之一,因此比較判斷的順序不影響最終Cache狀態(tài)轉(zhuǎn)換的結(jié)果。如圖3所示,如果有一個(gè)程序指令工作集M,初始時(shí)M有四個(gè)指令行X和數(shù)據(jù)行 Y,其地址分別為{ XO, XI,X2,X3 }和{ YO, Yl, Y2, Y3 },X映射到指令Cache的組A (WayO_Way3)中,對(duì)應(yīng)為{ XO, XI,X2,X3 },Y 映射到數(shù)據(jù) Cache 的組 B (Way4_Way7)中, 對(duì)應(yīng)為{ Y0,Y1,Y2,Y3 },此時(shí)M對(duì)Cache的需求是可以滿足的,運(yùn)行時(shí)不會(huì)產(chǎn)生沖突缺失和抖動(dòng)現(xiàn)象,Cache容量、結(jié)構(gòu)保持不變,處于狀態(tài)SO。隨著程序的運(yùn)行,Cache的需求發(fā)生動(dòng)態(tài)變化,例如X中增加一個(gè)指令地址X4,Y 減少一個(gè)數(shù)據(jù)地址Y3,此時(shí)組B對(duì)應(yīng)的有一個(gè)空閑路way7,組A由于路數(shù)不夠,如不及時(shí)調(diào)整,將會(huì)產(chǎn)生沖突缺失和抖動(dòng)現(xiàn)象。通過計(jì)算相對(duì)簽名距離(或通過其它方法),可以發(fā)現(xiàn)前后程序需求差異的存在,且原先所有的way已經(jīng)分別分配給數(shù)據(jù)和指令Cache,I-CMC中的值為5 (由于出現(xiàn)抖動(dòng),該數(shù)值將不斷增加),I-WC的值為4,D-WC的值為4,CMB的值為 4,AB的值為5000,EffHB的值為4,LRffHB的值為4。判斷表明,此時(shí)I-CMOCMB且I_WC+D_WC==8且當(dāng)前數(shù)據(jù)Cache的狀態(tài)不為預(yù)備小容量狀態(tài)S3,滿足條件B,則將I-AC和I-CMC置零,并轉(zhuǎn)到指令Cache和數(shù)據(jù)Cache的容量競(jìng)爭(zhēng)狀態(tài)S2,同時(shí)將數(shù)據(jù)Cache的D-AC和D-CMC置零,并將數(shù)據(jù)Cache的狀態(tài)設(shè)為數(shù)據(jù) Cache和指令Cache的容量競(jìng)爭(zhēng)狀態(tài)S2。隨著程序運(yùn)行,I-AC的值變?yōu)镵(K為已經(jīng)執(zhí)行的指令條數(shù)),D_AC的值為3K/5 (因?yàn)橹噶钆c數(shù)據(jù)的比例關(guān)系為5:3),I-MC的值為K,D-MC的值為3,隨著K值的不斷增大, 通過上述第三步的逐項(xiàng)判斷,符合條件E的情形,即(I-AC+D-AC)==2*AB且I_AC>D_AC且 I-MOD-MC,則將I-AC、D-AC, I-MC和D-MC置零,并轉(zhuǎn)到指令Cache的容量調(diào)整狀態(tài)S4,同時(shí)將數(shù)據(jù)Cache的最近最少命中路(采用LRU算法可得為way7)用于指令Cache,即將組B 關(guān)閉最近最少使用的空閑路way7,并將其分配給組A,從而避免組A產(chǎn)生沖突缺失和抖動(dòng)出現(xiàn)。如設(shè)R4-R7是組B的路類型寄存器,寄存器的每一位控制相應(yīng)的一路用于指令路還是數(shù)據(jù)路當(dāng)R4-R7的某位為“1”時(shí),相應(yīng)的路為數(shù)據(jù)路,為“O”則將相應(yīng)的路用于指令路。則此時(shí),R4-R7取值為1110,路暫??刂萍拇嫫鲗?duì)應(yīng)取值為1111時(shí),表明將組B的第四路way7用于指令Cache并激活,同時(shí)將指令和數(shù)據(jù)Cache的狀態(tài)設(shè)為初始狀態(tài)SO。不難理解,當(dāng)用于只有小容量Cache并且應(yīng)用程序?qū)χ噶頒ache和數(shù)據(jù)Cache的訪問不均衡的嵌入式設(shè)備時(shí),以上方法在分別動(dòng)態(tài)調(diào)整指令Cache和數(shù)據(jù)Cache的容量的同時(shí),更多的是聯(lián)合分配兩種Cache的容量,均衡指令Cache和數(shù)據(jù)Cache的負(fù)載,因此可以顯著提高Cache的性能。而當(dāng)用于具有大容量Cache (例如指令和數(shù)據(jù)Cache的初始容量均為32 K)的設(shè)備時(shí),由于兩種Cache的最大容量均能滿足程序的需求,因此不需在兩種Cache中進(jìn)行容量的聯(lián)合分配,只要分別動(dòng)態(tài)調(diào)整兩種Cache的容量,滿足程序運(yùn)行過程中對(duì)各Cache的實(shí)時(shí)需求即可。在此過程中,由于控制了對(duì)空閑路的打開和關(guān)閉,將不用的空閑Cache路關(guān)閉,因此可以降低功耗,更好的滿足低功耗嵌入式設(shè)備的要求。
      由上述技術(shù)方案可以看出,本發(fā)明的關(guān)鍵在于采用PBCRA算法的可分類訪問的混合Cache的功耗比傳統(tǒng)混合Cache的功耗平均降低40. 7%,比采用分類訪問方案的混合 Cache的功耗平均降低20. 4%。本發(fā)明引入一種基于程序段的重構(gòu)算法——PBCRA,并提出了一種新的基于分類訪問的可重構(gòu)混合Cache結(jié)構(gòu),該方案能夠根據(jù)不同程序段對(duì)Cache容量的需求,動(dòng)態(tài)地分配混合Cache的指令路數(shù)和數(shù)據(jù)路數(shù),還能夠?qū)旌螩ache進(jìn)行分類訪問,過濾對(duì)不必要路的訪問,從而實(shí)現(xiàn)了降低混合Cache的功耗的目的。除上述實(shí)施例外,本發(fā)明還可以有其他實(shí)施方式。例如,Cache組的路徑數(shù)量可以為4等,程序段發(fā)生變化也可以通過其它方法判斷。凡采用等同替換或等效變換形成的技術(shù)方案,均落在本發(fā)明要求的保護(hù)范圍。
      權(quán)利要求
      1. 一種嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,其特征在于在嵌入式設(shè)備中通過以下步驟完成第一步、分別預(yù)先設(shè)置指令Cache和數(shù)據(jù)Chche的以下狀態(tài)初始狀態(tài)SO、預(yù)備大容量狀態(tài)Si、容量競(jìng)爭(zhēng)狀態(tài)S2、預(yù)備小容量狀態(tài)S3、容量調(diào)整狀態(tài)S4 ;所述初始狀態(tài)SO為 Cache容量、結(jié)構(gòu)保持不變的狀態(tài);所述預(yù)備大容量狀態(tài)Sl為比目前Cache具有更大容量的Cache狀態(tài);所述容量競(jìng)爭(zhēng)狀態(tài)S2為指令Cache和數(shù)據(jù)Cache容量需求產(chǎn)生沖突的狀態(tài); 所述預(yù)備小容量狀態(tài)S3為比目前Cache具有更小容量的Cache狀態(tài);所述容量調(diào)整狀態(tài)S4 為對(duì)目前的Cache容量進(jìn)行調(diào)整、重新分配指令Cache和數(shù)據(jù)Cache容量大小的狀態(tài);第二步、建立以下各計(jì)數(shù)器A.分別用于統(tǒng)計(jì)預(yù)定時(shí)間片內(nèi)各狀態(tài)下指令Cache和數(shù)據(jù)Cache訪問次數(shù)的指令訪問計(jì)數(shù)器I-AC和數(shù)據(jù)訪問計(jì)數(shù)器D-AC ;B.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache有效路數(shù)的指令Cache的有效路計(jì)數(shù)器I-MC和數(shù)據(jù)Cache的有效路計(jì)數(shù)器D-MC ;C.分別用于統(tǒng)計(jì)在容量競(jìng)爭(zhēng)狀態(tài)下指令Cache和數(shù)據(jù)Cache缺失次數(shù)的指令Cache缺失次數(shù)計(jì)數(shù)器I-MC和數(shù)據(jù)Cache缺失次數(shù)計(jì)數(shù)器D-MC ;D.分別用于統(tǒng)計(jì)初始狀態(tài)下指令Cache和數(shù)據(jù)Cache連續(xù)缺失次數(shù)的指令Cache連續(xù)缺失計(jì)數(shù)器I-CMC和數(shù)據(jù)Cache連續(xù)缺失計(jì)數(shù)器D-CMC ;E.分別用于統(tǒng)計(jì)在預(yù)備大容量狀態(tài)下指令Cache和數(shù)據(jù)Cache額外路命中次數(shù)的指令 Cache額外路命中計(jì)數(shù)器I-EWHC和數(shù)據(jù)Cache額外路命中計(jì)數(shù)器D-EWHC ;F.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache最近最少路命中數(shù)的指令Cache最近最少路命中計(jì)數(shù)器I-LRWHC和數(shù)據(jù)Cache最近最少路命中計(jì)數(shù)器D-LRWHC ;G.分別用于統(tǒng)計(jì)在預(yù)備小容量狀態(tài)下指令Cache和數(shù)據(jù)Cache除最近最少命中路外次最近最少路命中數(shù)的指令Cache次最近最少路命中計(jì)數(shù)器I-SLRWHC和數(shù)據(jù)Cache次最近最少路命中計(jì)數(shù)器D-SLRWHC;第三步、預(yù)置以下各邊界值a.作為初始狀態(tài)下Cache狀態(tài)轉(zhuǎn)換條件之一的時(shí)間片邊界值TSB;b.作為判斷指令Cache和數(shù)據(jù)Cache在不同狀態(tài)下是否超出最大訪問次數(shù)的訪問邊界值A(chǔ)B ;c.作為判斷Cache容量是否超出當(dāng)前程序需求的連續(xù)缺失邊界值CMB;d.作為判斷是否帶來不必要能耗的額外路命中邊界值EWHB;e.作為判斷關(guān)閉最近最少命中路是否會(huì)導(dǎo)致性能損失的最近最少路命中邊界數(shù) LRffHB ;第四步、每當(dāng)程序段發(fā)生變化且進(jìn)入下一個(gè)程序段時(shí),根據(jù)對(duì)以下條件的逐一判斷,進(jìn)入相應(yīng)狀態(tài)及進(jìn)行相應(yīng)置數(shù)和狀態(tài)設(shè)置條件A 如果I-CMOCMB且I-MC+D-MC<8,則將I-AC和I-CMC置零,指令Cache轉(zhuǎn)到預(yù)備大容量狀態(tài);條件B 如果I-CMOCMB且I-MC+D-MC==8且當(dāng)前數(shù)據(jù)Cache的狀態(tài)不為預(yù)備小容量狀態(tài),則將I-AC和I-CMC置零,指令Cache和數(shù)據(jù)Cache轉(zhuǎn)到容量競(jìng)爭(zhēng)狀態(tài),同時(shí)將D-AC和 D-CMC置零,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為指令Cache和數(shù)據(jù)Cache的容量競(jìng)爭(zhēng)狀態(tài);條件C 如果I-AOTSB且I-MOl且I_CMC<CMB,則將I-AC和I-CMC置零,指令Cache 轉(zhuǎn)到預(yù)備小容量狀態(tài);條件 D 如果(I-AC+D-AC) >2*AB,則將 I_AC、D_AC、I-MC 和 D-MC 置零,指令 Cache 和數(shù)據(jù)Cache轉(zhuǎn)到初始狀態(tài),同時(shí)將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);條件 E 如果(I-AC+D-AC)==2*AB 且 I-AOD-AC 且 I-MOD-MC,則將 I-AC、D-AC, I-MC 和D-MC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),同時(shí)將數(shù)據(jù)Cache的最近最少命中路用于指令Cache,并將數(shù)據(jù)Cache的當(dāng)前狀態(tài)設(shè)為數(shù)據(jù)Cache的初始狀態(tài);條件F 如果I-AOAB且I-EWHC<EWHB,則將I-AC和I-EWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);條件G 如果I-EWHC>=EWHB,則將I-AC和I-EWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài), 激活額外路;條件H 如果I-LRWHOLRWHB,則將I_AC、I-SLRffHC和I-LRWHC置零,指令Cache和數(shù)據(jù) Cache轉(zhuǎn)到初始狀態(tài);條件 I 如果 I-AOAB 且 I-MC>2 且 I_LRWHC<=LRWHB 且 I_SLRWHC<=LRWHB,則將 I-AC、 I-SLRWHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少和次最近最少命中路;條件 J 如果 I-AOAB 且 I-LRWHC<=LRWHB,且 I_MC<2 或 I-SLRWHOLRWHB,則將 I-AC、 I-SLRffHC和I-LRWHC置零,指令Cache轉(zhuǎn)到容量調(diào)整狀態(tài),關(guān)閉最近最少命中路; 條件K 如果對(duì)指令Cache和數(shù)據(jù)Cache進(jìn)行容量調(diào)整,之后均轉(zhuǎn)到初始狀態(tài)。
      2.根據(jù)權(quán)利要求1所述嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,其特征在于當(dāng)目前Cache的容量不為最大時(shí),定義預(yù)備大容量狀態(tài)Sl為具有比目前Cache增加1路的容量。
      3.根據(jù)權(quán)利要求2所述嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,其特征在于當(dāng)目前Cache的容量不為最小,定義預(yù)備小容量狀態(tài)S3為具有目前Cache —半的容量。
      4.根據(jù)權(quán)利要求3所述嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,其特征在于所述程序段發(fā)生變化通過比較連續(xù)間隔的指令工作集簽名過程中的相對(duì)簽名距離檢測(cè)判斷。
      全文摘要
      本發(fā)明涉及一種嵌入式設(shè)備低功耗混合Cache的實(shí)現(xiàn)方法,屬于計(jì)算機(jī)存儲(chǔ)器層次結(jié)構(gòu)設(shè)計(jì)領(lǐng)域。該方法在嵌入式設(shè)備進(jìn)行分別配置指令Cache和數(shù)據(jù)Chche的初始狀態(tài)S0、預(yù)備大容量狀態(tài)S1、容量競(jìng)爭(zhēng)狀態(tài)S2、預(yù)備小容量狀態(tài)S3、容量調(diào)整狀態(tài)S4;建立邊界和計(jì)數(shù)器;每當(dāng)程序段發(fā)生變化且進(jìn)入下一個(gè)程序段時(shí),根據(jù)對(duì)以下條件的逐一判斷,確定指令Cache和數(shù)據(jù)Cache的轉(zhuǎn)換狀態(tài)以及相關(guān)置數(shù)。采用本發(fā)明后,在幾乎不增加硬件的情況下,采用本發(fā)明基于程序段的PBCRA重構(gòu)算法后,功耗降低20.4%~41.7%,并且減少了Cache的抖動(dòng)。由于指令Cache的路數(shù)和數(shù)據(jù)Cache的路數(shù)是可變的,可以降低沖突缺失并避免抖動(dòng),保證系統(tǒng)穩(wěn)定運(yùn)行。
      文檔編號(hào)G06F1/20GK102455977SQ201010527889
      公開日2012年5月16日 申請(qǐng)日期2010年11月2日 優(yōu)先權(quán)日2010年11月2日
      發(fā)明者宋余慶, 楊旭東, 陳健美 申請(qǐng)人:江蘇大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1