欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

降低指令高速緩沖存儲器功耗的方法及裝置的制作方法

文檔序號:6377863閱讀:190來源:國知局
專利名稱:降低指令高速緩沖存儲器功耗的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及處理器領(lǐng)域,尤其涉及一種降低指令高速緩沖存儲器功耗的方法及裝置。
背景技術(shù)
隨著集成電路技術(shù)的飛速發(fā)展,處理器芯片的速度和集成度都得到了很大的提升,由此帶來的功耗問題也變得很突出。大量的功耗消耗會降低便攜式設(shè)備中電池的使用壽命,而且會給處理器的供電、散熱和可靠性帶來很多問題。在目前數(shù)字信號處理器的設(shè)計中,功耗已經(jīng)成為了一個很重要的指標(biāo)。指令高速緩沖存儲器(簡稱指令Cache)作為提高處理器內(nèi)核取指速度的關(guān)鍵部件,是程序運行時最活躍的部分,因此有效降低指令Cache的功耗對于低功耗處理器的設(shè)計有著重要的意義。
直接相聯(lián)方式的指令Cache結(jié)構(gòu)如圖I所示,它主要由標(biāo)志(tag)存儲器、數(shù)據(jù)(data)存儲器和狀態(tài)位(state)組成。當(dāng)內(nèi)核訪問指令Cache時,tag存儲器根據(jù)內(nèi)核地址的Index位作為地址讀出標(biāo)志位tag,并與內(nèi)核地址中的Tag位比較,如果相等則表示命中,內(nèi)核直接從指令Cache中讀取數(shù)據(jù);如果不相等則表示沒有命中,這時會啟動一個訪問主存的操作。內(nèi)核在取指令的過程中會進行大量的讀tag存儲器操作和比較操作,這個過程需要消耗大量的功耗。如果能夠減少訪問tag存儲器的次數(shù),則可以有效降低指令Cache的功耗。在2002年8月12-14號的低功耗電子學(xué)與設(shè)計(ISLPED)會議上Koji Inoue等人發(fā)表的文章《A History-Based I-Cache for Low-Energy Multimedia Applications》中提出了一種基于程序運行歷史信息的低功耗指令Cache設(shè)計方法,該方法與分支預(yù)測技術(shù)緊密結(jié)合。它的工作原理是當(dāng)分支目標(biāo)指令曾經(jīng)執(zhí)行過并且執(zhí)行這條分支目標(biāo)指令與上次執(zhí)行這條分支目標(biāo)指令期間沒有發(fā)生過指令Cache缺失時,可以停止訪問tag存儲器。但是,這項技術(shù)是與分支目標(biāo)緩沖器緊密結(jié)合的,當(dāng)分支預(yù)測與程序運行歷史信息更新同時發(fā)生時,處理器流水線會出現(xiàn)停頓,導(dǎo)致處理器性能下降;當(dāng)出現(xiàn)指令Cache訪問缺失或分支目標(biāo)緩沖器內(nèi)容被替換時,需要清除全部的程序運行歷史信息,這就要求處理器在后續(xù)的取指過程中重新記錄程序運行的歷史信息,而在程序運行歷史信息的重新記錄過程中,處理器由于無法利用本來已經(jīng)記錄的有效歷史信息消除不必要的tag存儲器的訪問功耗,從而降低了程序運行歷史信息的使用效率;對于沒有采用分支預(yù)測機制的數(shù)字信號處理器,建立一個分支預(yù)測器需要增加很大的硬件代價,而且分支預(yù)測器本身也需要消耗一部分功耗。在2011年3月的浙江大學(xué)學(xué)報(工學(xué)版)第45卷第3期中龔帥帥等人發(fā)表的文章《基于歷史鏈接關(guān)系的指令高速緩存低功耗方法》中提出了一種基于指令Cache歷史訪問鏈接關(guān)系的低功耗指令Cache設(shè)計方法,該方法需要在指令Cache中建立一個歷史訪問鏈接關(guān)系表。它的工作原理是在程序執(zhí)行的過程中會根據(jù)歷史鏈接表中記錄的歷史鏈接關(guān)系,直接從鏈接的數(shù)據(jù)存儲器中讀取指令,減少不必要的tag存儲器的訪問。但是,該方法存在如下不足它需要在指令Cache單元中增加一個歷史鏈接關(guān)系表,這樣會增加指令Cache的面積和設(shè)計復(fù)雜度,而且歷史鏈接關(guān)系表也會消耗一部分功耗。

發(fā)明內(nèi)容
本發(fā)明實施例提出了一種降低指令高速緩沖存儲器功耗的方法及裝置,可以減少程序執(zhí)行過程中對標(biāo)志存儲器的訪問次數(shù),從而降低指令高速緩沖存儲器的整體功耗。在第一方面,本發(fā)明實施例提供了一 種降低指令高速緩沖存儲器功耗的裝置,包括標(biāo)志存儲器控制模塊,用于記錄分支指令執(zhí)行的歷史信息,并根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號;指令高速緩沖存儲器模塊,包括指令高速緩沖存儲器控制器、與所述指令高速緩沖存儲器控制器相連接的標(biāo)志存儲器和數(shù)據(jù)存儲器;其中,所述第一片選信號和所述指令高速緩沖存儲器控制器輸出的第二片選信號經(jīng)過處理得到標(biāo)志存儲器的片選控制信號,通過所述標(biāo)志存儲器的片選控制信號控制是否對所述標(biāo)志存儲器進行訪問。在第二方面,本發(fā)明實施例提供了一種降低指令高速緩沖存儲器功耗的方法,所述方法用于如本發(fā)明第一方面所述的裝置,所述方法包括記錄分支指令執(zhí)行的歷史信息;根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號;根據(jù)所述第一片選信號和指令高速緩沖存儲器控制器輸出的第二片選信號經(jīng)過處理得到標(biāo)志存儲器的片選控制信號,通過所述標(biāo)志存儲器的片選控制信號控制是否對所述標(biāo)志存儲器進行訪問。本發(fā)明提供的方法和裝置可以減少程序執(zhí)行過程中對標(biāo)志存儲器的訪問次數(shù),從而降低指令高速緩沖存儲器的整體功耗。


圖I為現(xiàn)有技術(shù)指令Cache結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例提供的指令代碼片段;圖3為本發(fā)明實施例提供的降低指令Cache功耗的裝置的示意圖;圖4為本發(fā)明實施例提供的圖3中裝置的工作過程示意圖;圖5為本發(fā)明實施例提供的降低指令Cache功耗的方法流程圖;圖6為本發(fā)明實施例提供的tag存儲器控制模塊工作過程流程圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明具體實施例作進一步的詳細描述。首先,結(jié)合圖2對本發(fā)明實施例中的重要概念做明確闡述,圖2為本發(fā)明實施例提供的指令代碼片段。如圖2所示分支指令是指在程序執(zhí)行過程中,遇到的需要跳轉(zhuǎn)到其他地方執(zhí)行的指令,包括分支跳轉(zhuǎn)指令、循環(huán)跳轉(zhuǎn)指令和函數(shù)調(diào)用等,如圖2所示,執(zhí)行流程I和2表示指令執(zhí)行到BRANCH1后跳轉(zhuǎn)到分支目標(biāo)指令L00P2處執(zhí)行,則BRANCH1為分支指令。分支指令跳轉(zhuǎn)成功是指程序執(zhí)行過程中,遇到分支指令,并且跳轉(zhuǎn)到該分支目標(biāo)指令處執(zhí)行,如圖2所示,執(zhí)行流程I和2表示指令執(zhí)行到BRANCH1后跳轉(zhuǎn)到分支目標(biāo)指令L00P2處執(zhí)行,此時稱分支指令BRANCH1跳轉(zhuǎn)成功。分支指令跳轉(zhuǎn)失敗是指程序執(zhí)行過程中,遇到分支指令,沒有跳轉(zhuǎn)到該分支目標(biāo)指令處執(zhí)行,而是順序執(zhí)行后面的指令。如圖2中的執(zhí)行流程3,當(dāng)指令執(zhí)行到分支指令BRANCH1后,沒有跳轉(zhuǎn)到分支目標(biāo)指令L00P2處執(zhí)行,而是順序執(zhí)行后面的指令,此時稱分支指令BRANCH1跳轉(zhuǎn)失敗。圖3為本發(fā)明實施例提供的降低指令Cache功耗的裝置的示意圖。如圖3所示,所述裝置主要由tag存儲器控制模塊和指令Cache模塊組成。tag存儲器控制模塊用于記錄分支指令執(zhí)行的歷史信息,并根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生 成第一片選信號。指令Cache模塊包括指令Cache控制器、與所述指令Cache控制器相連接的tag存儲器和數(shù)據(jù)存儲器;其中,所述第一片選信號和所述指令Cache控制器輸出的第二片選信號經(jīng)過處理得到tag存儲器的片選控制信號,通過所述tag存儲器的片選控制信號控制是否對所述tag存儲器進行訪問。圖3中各個信號意義如下bt用于表示分支指令當(dāng)前跳轉(zhuǎn)成功的信息,bt=l表示分支指令當(dāng)前跳轉(zhuǎn)成功;bnt用于表示分支指令當(dāng)前跳轉(zhuǎn)失敗的信息,bnt=l表示分支指令當(dāng)前跳轉(zhuǎn)失??;b用于表示是否有分支指令,b=l表示有分支指令^用于表示分支指令之前跳轉(zhuǎn)成功的信息,T=I表示有該分支指令之前跳轉(zhuǎn)成功的信息;NT用于表示分支指令之前跳轉(zhuǎn)失敗的信息,NT=I表示有該分支指令之前跳轉(zhuǎn)失敗的信息。需要說明的是,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況定義各個信號的取值意義。圖3中各個器件的意義如下D1-D4為或門,D5-D7為與門,D8為非門,D9為D觸
發(fā)器,其中,與門D7起反饋作用,可以起到保持第一片選信號的作用。tag存儲器控制模塊的輸入包括分支指令跳轉(zhuǎn)成功信號、分支指令跳轉(zhuǎn)失敗信號和分支指令地址,輸出為第一片選信號。tag存儲器控制模塊包括分支指令地址隊列(BIAQ)、分支指令歷史表(BIH)和控制電路,其中BIAQ深度為N,數(shù)據(jù)寬度為M (指令地址寬度),用于存儲分支指令地址。BIH深度為N,數(shù)據(jù)寬度為2bits,用于記錄分支指令之前跳轉(zhuǎn)成功的信息和分支指令之前跳轉(zhuǎn)失敗的信息。需要說明的是,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況定義BIAQ和BIH中參數(shù)的大小。需要說明的是,BIAQ中記錄的之前分支指令地址、BIH中記錄的分支指令之前跳轉(zhuǎn)成功的信息和分支指令之前跳轉(zhuǎn)失敗的信息共同構(gòu)成了分支指令執(zhí)行的歷史信息。本發(fā)明實施例提供的裝置的工作原理為在程序的執(zhí)行過程中,如果遇到了分支指令,處理器內(nèi)核會向tag存儲器控制模塊發(fā)送該分支指令跳轉(zhuǎn)成功或者跳轉(zhuǎn)失敗的信號,同時會發(fā)送該分支指令的地址。當(dāng)tag存儲器控制模塊檢測到有分支指令時,它會根據(jù)該分支指令的地址查詢BIAQ,如果與BIAQ中的某一項相等則表示命中,如果全部不相等則表示沒有命中。若分支指令的地址沒有命中BIAQ,tag存儲器控制模塊會將該分支指令的地址存入BIAQ中,同時將該分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息記錄在BIH中。BIAQ采用“先進先出”的寫入方式,即當(dāng)BIAQ的內(nèi)容需要替換時會將最先寫入BIAQ的分支指令地址替換。若分支指令的地址命中BIAQ,BIH會根據(jù)命中信號讀出該分支指令之前的信息T和NT,如果滿足下列條件之一( I)該分支指令當(dāng)前跳轉(zhuǎn)成功且T=I ;(2)該分支指令當(dāng)前跳轉(zhuǎn)失敗且NT=I, 則表示該分支指令的目標(biāo)指令在指令Cache中已經(jīng)存在,此時可以停止對tag存儲器的訪問,直接從指令Cache中取指令。若分支指令的地址命中BIAQ,但是不滿足上面兩個條件中的一個,則如果(I)分支指令當(dāng)前跳轉(zhuǎn)成功,則將對應(yīng)的BIH中的T更新為I ;(2)分支指令當(dāng)前跳轉(zhuǎn)失敗,則將對應(yīng)的BIH中的NT更新為1,同時使tag存儲器工作在正常狀態(tài)。為便于理解,下面以圖4為例,對上述工作原理做具體闡述。圖4為本發(fā)明實施例提供的圖3中裝置的工作過程示意圖,圖4中的工作過程對應(yīng)的代碼片段如圖2所示。如圖4所示,其中m-BRANCHn表示分支指令BRANCHn在第m次執(zhí)行流中的時間點。下面結(jié)合圖4以及圖3對本發(fā)明實施例提供的裝置的工作過程做詳細闡述假設(shè)tag存儲器控制模塊中BIAQ的深度為2,指令地址寬度為32bits,并且假設(shè)初始狀態(tài)時BIAQ和BIH中均為空,tag存儲器的片選控制信號低電平有效。則圖4中表示的工作過程如下1-BRANCH1 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)沒有命中,從圖3可知,與門D5的一個輸入信號bt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D6的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,從而D觸發(fā)器D9輸出的第一片選信號為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令的地址BRANCH1寫入BIAQ,將跳轉(zhuǎn)成功的信息記錄到BIH中。2-BRANCH1 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)命中,并且通過查詢BIH發(fā)現(xiàn)有該分支指令之前跳轉(zhuǎn)成功的信息記錄,如圖4所示,BIAQ中BRANCH1對應(yīng)的BIH中的T=I,從圖3可知,與門D5的兩個輸入信號均為高電平,可知其輸出為高電平。與門D5的輸出信號為或門D2的輸入信號,可知或門D2輸出為高電平。或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出為高電平。因此經(jīng)過D觸發(fā)器D9后,輸出的第一片選信號也為高電平,或門D4的輸出為高電平,關(guān)閉tag存儲器。3-BRANCH1 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)失敗,通過查詢BIAQ發(fā)現(xiàn)命中,但是通過查詢BIH發(fā)現(xiàn)沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,從圖3可知,與門D6的一個輸入信號bnt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D5的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,從而D觸發(fā)器D9輸出的第一片選信號為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令跳轉(zhuǎn)失敗的信息記錄到BIH中。3-BRANCH2 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)沒有命中,從圖3可知,與門D5的一個輸入信號bt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D6的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門 D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,從而D觸發(fā)器D9輸出的第一片選信號為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令的地址BRANCH2寫入BIAQ,將跳轉(zhuǎn)成功的信息記錄到BIH中。4-BRANCH1 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)失敗,通過查詢BIAQ發(fā)現(xiàn)命中,并且通過查詢BIH發(fā)現(xiàn)有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,如圖4所示,BIAQ中BRANCH1對應(yīng)的BIH中的NT=I,從圖3可知,與門D6的兩個輸入信號均為高電平,可知其輸出為高電平。與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為高電平?;蜷TD2的輸出信號為或門D3的輸入信號,可知或門D3輸出為高電平。因此通過D觸發(fā)器D9后,輸出的第一片選信號也為高電平,或門D4的輸出為高電平,關(guān)閉tag存儲器。4-BRANCH2 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)命中,并且通過查詢BIH發(fā)現(xiàn)有該分支指令之前跳轉(zhuǎn)成功的信息記錄,如圖4所示,BIAQ中BRANCH2對應(yīng)的BIH中的T=I,從圖3可知,與門D5的兩個輸入信號均為高電平,可知其輸出為高電平。與門D5的輸出信號為或門D2的輸入信號,可知或門D2輸出為高電平?;蜷TD2的輸出信號為或門D3的輸入信號,可知或門D3輸出為高電平。因此經(jīng)過D觸發(fā)器D9后,輸出的第一片選信號也為高電平,或門D4的輸出為高電平,關(guān)閉tag存儲器。5-BRANCH1 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)失敗,通過查詢BIAQ發(fā)現(xiàn)命中,并且通過查詢BIH發(fā)現(xiàn)有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,如圖4所示,BIAQ中BRANCH1對應(yīng)的BIH中的NT=I,從圖3可知,與門D6的兩個輸入信號均為高電平,可知其輸出為高電平。與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為高電平?;蜷TD2的輸出信號為或門D3的輸入信號,可知或門D3輸出為高電平。因此通過D觸發(fā)器D9后,輸出的第一片選信號也為高電平,或門D4的輸出為高電平,關(guān)閉tag存儲器。
5-BRANCH2 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)失敗,通過查詢BIAQ發(fā)現(xiàn)命中,但是通過查詢BIH發(fā)現(xiàn)沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,從圖3可知,與門D6的一個輸入信號bnt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D5的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,因此,經(jīng)過D觸發(fā)器D9后,輸出的第一片選信號也為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令跳轉(zhuǎn)失敗的信息記錄到BIH中。5-BRANCH3 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)沒有命中,從圖3可知,與門D5的一個輸入信號bt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D6的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出 為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,從而可知D觸發(fā)器D9輸出的第一片選信號為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令的地址BRANCH3寫入BIAQ,將跳轉(zhuǎn)成功的信息記錄到BIH中。由于此時BIAQ已經(jīng)處于滿的狀態(tài),需要將其中一行替換出去,本實施例采用“先進先出”的方式(也可以采用其他方式),即將BRANCH1替換出去,并清除BRANCH1對應(yīng)的BIH中的信息。6-BRANCH3 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)成功,通過查詢BIAQ發(fā)現(xiàn)命中,并且通過查詢BIH發(fā)現(xiàn)有該分支指令之前跳轉(zhuǎn)成功的信息記錄,如圖4所示,BIAQ中BRANCH3對應(yīng)的BIH中的T=I,從圖3可知,與門D5的兩個輸入信號均為高電平,可知其輸出為高電平。與門D5的輸出信號為或門D2的輸入信號,可知或門D2輸出為高電平?;蜷TD2的輸出信號為或門D3的輸入信號,可知或門D3輸出為高電平。因此經(jīng)過D觸發(fā)器D9后,輸出的第一片選信號也為高電平,或門D4的輸出為高電平,關(guān)閉tag存儲器。7-BRANCH3 tag存儲器控制模塊檢測到有分支指令,并且分支指令當(dāng)前跳轉(zhuǎn)失敗,通過查詢BIAQ發(fā)現(xiàn)命中,但是通過查詢BIH發(fā)現(xiàn)沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,從圖3可知,與門D6的一個輸入信號bnt為高電平,另一個輸入信號為低電平,可知其輸出為低電平。與門D5的兩個輸入信號均為低電平,可知其輸出為低電平。與門D5的輸出信號和與門D6的輸出信號為或門D2的輸入信號,可知或門D2輸出為低電平。另外,由于b為高電平,經(jīng)過非門D8后輸出低電平,因此,與門D7輸出為低電平。與門D7的輸出信號和或門D2的輸出信號為或門D3的輸入信號,可知或門D3輸出低電平,因此,經(jīng)過D觸發(fā)器D9后,輸出的第一片選信號也為低電平,或門D4的輸出由指令Cache控制器輸出的第二片選信號控制,tag存儲器處于正常工作狀態(tài)。此時tag存儲器控制模塊將該分支指令跳轉(zhuǎn)失敗的信息記錄到BIH中。綜合上述過程可知當(dāng)執(zhí)行一條分支指令時,若該分支指令當(dāng)前跳轉(zhuǎn)成功并且有該分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若該分支指令當(dāng)前跳轉(zhuǎn)失敗并且有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則說明該分支指令的目標(biāo)指令在指令Cache中已經(jīng)存在,可以直接從指令Cache中取指令,而不需要對tag存儲器進行訪問;若該分支指令當(dāng)前跳轉(zhuǎn)成功并且沒有該分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若該分支指令當(dāng)前跳轉(zhuǎn)失敗并且沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則說明該分支指令的目標(biāo)指令在指令Cache中不存在,此時需要對tag存儲器進行訪問。在當(dāng)前執(zhí)行分支指令和上 一次執(zhí)行該分支指令期間如果出現(xiàn)目標(biāo)指令塊被新的指令塊替換出指令Cache的情況,程序可能執(zhí)行出錯,因此在使用本發(fā)明時,需要滿足一個條件程序的指令塊大小不能大于指令Cache的大小。滿足這個條件后,在當(dāng)前執(zhí)行分支指令和上一次執(zhí)行該分支指令期間就不會出現(xiàn)目標(biāo)指令塊被新的指令塊替換出指令Cache的情況,程序就不會執(zhí)行出錯。需要說明的是,本領(lǐng)域技術(shù)人員也可以采用其它電路實現(xiàn)上述功能,并不限于本發(fā)明實施例圖3中提供的電路。上述實施例描述的為tag存儲器控制模塊根據(jù)輸入信號、分支指令命中BIAQ的情況及BIH中分支指令的信息輸出第一片選信號,該第一片選信號與指令Cache模塊中的指令Cache控制器輸出的第二片選信號經(jīng)過處理得到tag存儲器的片選控制信號,通過該片選控制信號控制是否需要對tag存儲器進行訪問,由此可以減少程序執(zhí)行過程中對tag存儲器的訪問,從而可以有效降低指令Cache的功耗。下述實施例描述的為降低指令Cache功耗的方法。圖5為本發(fā)明實施例提供的降低指令Cache功耗的方法流程圖。如圖5所示,本發(fā)明實施例包括以下步驟步驟501,tag存儲器控制模塊記錄分支指令執(zhí)行的歷史信息。具體地,若輸入的分支指令地址沒有命中BIAQ,則將該分支指令地址存入BIAQ中,并且記錄該分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息。若輸入的分支指令地址命中BIAQ,若該分支指令當(dāng)前跳轉(zhuǎn)成功并且沒有該分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若該分支指令當(dāng)前跳轉(zhuǎn)失敗并且沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則更新BIH中該分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息。步驟502,根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號。分支指令執(zhí)行的歷史信息是指之前分支指令地址、所述分支指令之前跳轉(zhuǎn)成功的信息和所述分支指令之前跳轉(zhuǎn)失敗的信息。分支指令當(dāng)前信息是指當(dāng)前分支指令地址、所述分支指令當(dāng)前跳轉(zhuǎn)成功的信息或所述分支指令當(dāng)前跳轉(zhuǎn)失敗的信息。步驟503,根據(jù)tag存儲器控制模塊輸出的第一片選信號和指令Cache控制器輸出的第二片選信號經(jīng)過處理得到tag存儲器的片選控制信號,通過所述tag存儲器的片選控制信號控制是否對所述tag存儲器進行訪問。下面結(jié)合圖6對上述步驟502和步驟503做進一步闡述,圖6為本發(fā)明實施例提供的tag存儲器控制模塊工作過程流程圖。如圖6所示,所述方法包括以下步驟步驟601,程序執(zhí)行過程中,遇到分支指令。步驟602,tag存儲器控制模塊接收處理器內(nèi)核發(fā)送的該分支指令的跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗信號、該分支指令地址,并檢測該分支指令地址是否命中BIAQ。
步驟603,若分支指令地址沒有命中BIAQ,tag存儲器控制模塊會將該分支指令地址存入BIAQ中,同時將該分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息記錄在BIH中。BIAQ采用“先進先出”的寫入方式,即當(dāng)BIAQ的內(nèi)容需要替換時會將最先寫入BIAQ的分支地址替換,BIAQ也可以采用其他寫入方式。步驟604,若分支指令地址命中BIAQ,BIH會根據(jù)命中信號讀出該分支指令之前的信息,判讀是否可以關(guān)閉對tag存儲器的訪問。步驟605,如果滿足下列條件之一 ( I)該分支指令當(dāng)前跳轉(zhuǎn)成功且有該分支指令之前跳轉(zhuǎn)成功的信息記錄;(2)該分支指令當(dāng)前跳轉(zhuǎn)失敗且有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則表示該分支指令的目標(biāo)指令在指令Cache中已經(jīng)存在,此時tag存儲器控制模塊生成一個可以關(guān)閉tag存儲器的控制信號并輸出,關(guān)閉tag存儲器。步驟606,如果分支指令地址命中BIAQ,但是不滿足上面兩個條件中的一個,則如果(I)分支指令當(dāng)前跳轉(zhuǎn)成功,則將該分支指令跳轉(zhuǎn)成功的信息記錄到BI H中;(2)分支指令當(dāng)前跳轉(zhuǎn)失敗,則將該分支指令跳轉(zhuǎn)失敗的信息記錄到BIH中,此時tag存儲器控制器模塊生成一個無效的控制信號并輸出,tag存儲器正常工作。綜合上述過程可知若分支指令當(dāng)前跳轉(zhuǎn)成功并且有該分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若分支指令當(dāng)前跳轉(zhuǎn)失敗并且有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則說明該分支指令的目標(biāo)指令在指令Cache中已經(jīng)存在,可以直接從指令Cache中取指令,而不需要對tag存儲器進行訪問;若分支指令當(dāng)前跳轉(zhuǎn)成功并且沒有該分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若分支指令當(dāng)前跳轉(zhuǎn)失敗并且沒有該分支指令之前跳轉(zhuǎn)失敗的信息記錄,則說明該分支指令的目標(biāo)指令在指令Cache中不存在,此時需要對tag存儲器進行訪問。上述實施例描述的為降低指令Cache功耗的方法,tag存儲器控制模塊根據(jù)輸入信號、分支指令命中BIAQ的情況及BIH中分支指令的信息輸出第一片選信號,該第一片選信號與指令Cache模塊中的指令Cache控制器輸出的第二片選信號經(jīng)過處理得到tag存儲器的片選控制信號,通過該片選控制信號控制是否需要對tag存儲器進行訪問,該方法可以減少程序執(zhí)行過程中對tag存儲器的訪問,從而可以有效降低指令Cache的整體功耗。專業(yè)人員應(yīng)該還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。結(jié)合本文中所公開的實施例描述的方法步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上所述的具體實施方式
,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式
而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)?!?br> 權(quán)利要求
1.一種降低指令高速緩沖存儲器功耗的裝置,其特征在于,包括 標(biāo)志存儲器控制模塊,用于記錄分支指令執(zhí)行的歷史信息,并根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號; 指令高速緩沖存儲器模塊,包括指令高速緩沖存儲器控制器、與所述指令高速緩沖存儲器控制器相連接的標(biāo)志存儲器和數(shù)據(jù)存儲器; 其中,所述第一片選信號和所述指令高速緩沖存儲器控制器輸出的第二片選信號經(jīng)過處理得到標(biāo)志存儲器的片選控制信號,通過所述標(biāo)志存儲器的片選控制信號控制是否對所述標(biāo)志存儲器進行訪問。
2.如權(quán)利要求I所述的裝置,其特征在于,所述分支指令執(zhí)行的歷史信息是指之前分支指令地址、所述分支指令之前跳轉(zhuǎn)成功的信息和所述分支指令之前跳轉(zhuǎn)失敗的信息。
3.如權(quán)利要求I所述的裝置,其特征在于,所述分支指令當(dāng)前信息是指當(dāng)前分支指令地址、所述分支指令當(dāng)前跳轉(zhuǎn)成功的信息或所述分支指令當(dāng)前跳轉(zhuǎn)失敗的信息。
4.如權(quán)利要求1、2或3所述的裝置,其特征在于,所述標(biāo)志存儲器控制模塊包括存儲分支指令地址的分支指令地址隊列、記錄所述分支指令地址隊列中分支指令跳轉(zhuǎn)成功和跳轉(zhuǎn)失敗信息的分支指令歷史表和控制電路; 若輸入的分支指令地址沒有命中所述分支指令地址隊列,所述標(biāo)志存儲器控制模塊將所述分支指令地址存入所述分支指令地址隊列中,并且將所述分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息記錄在所述分支指令歷史表中; 若輸入的分支指令地址命中所述分支指令地址隊列,若所述分支指令當(dāng)前跳轉(zhuǎn)成功并且有所述分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若所述分支指令當(dāng)前跳轉(zhuǎn)失敗并且有所述分支指令之前跳轉(zhuǎn)失敗的信息記錄,則所述分支指令地址隊列和所述分支指令歷史表保持不變;若所述分支指令當(dāng)前跳轉(zhuǎn)成功并且沒有所述分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若所述分支指令當(dāng)前跳轉(zhuǎn)失敗并且沒有所述分支指令之前跳轉(zhuǎn)失敗的信息記錄,則所述標(biāo)志存儲器控制模塊更新所述分支指令歷史表中所述分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息。
5.一種降低指令高速緩沖存儲器功耗的方法,所述方法用于如權(quán)利要求I至4任一項所述的裝置,其特征在于,所述方法包括 記錄分支指令執(zhí)行的歷史信息; 根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號; 根據(jù)所述第一片選信號和指令高速緩沖存儲器控制器輸出的第二片選信號經(jīng)過處理得到標(biāo)志存儲器的片選控制信號,通過所述標(biāo)志存儲器的片選控制信號控制是否對所述標(biāo)志存儲器進行訪問。
6.如權(quán)利要求5所述的方法,其特征在于,所述分支指令執(zhí)行的歷史信息是指之前分支指令地址、所述分支指令之前跳轉(zhuǎn)成功的信息和所述分支指令之前跳轉(zhuǎn)失敗的信息。
7.如權(quán)利要求5或6所述的方法,其特征在于,所述分支指令當(dāng)前信息是指當(dāng)前分支指令地址、所述分支指令當(dāng)前跳轉(zhuǎn)成功的信息或所述分支指令當(dāng)前跳轉(zhuǎn)失敗的信息。
8.如權(quán)利要求7所述的方法,其特征在于,所述記錄分支指令執(zhí)行的歷史信息進一步包括 若所述分支指令地址沒有命中分支指令地址隊列,則將所述分支指令地址存入所述分支指令地址隊列中,并且記錄所述分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息; 若所述分支指令地址命中所述分支指令地址隊列,若所述分支指令當(dāng)前跳轉(zhuǎn)成功并且沒有所述分支指令之前跳轉(zhuǎn)成功的信息記錄,或者若所述分支指令當(dāng)前跳轉(zhuǎn)失敗并且沒有所述分支指令之前跳轉(zhuǎn)失敗的信息記錄,則更新所述分支指令歷史表中所述分支指令跳轉(zhuǎn)成功或跳轉(zhuǎn)失敗的信息。
全文摘要
本發(fā)明涉及一種降低指令高速緩沖存儲器功耗的方法及裝置。記錄分支指令執(zhí)行的歷史信息;根據(jù)所述分支指令執(zhí)行的歷史信息和分支指令當(dāng)前信息生成第一片選信號;根據(jù)所述第一片選信號和指令高速緩沖存儲器控制器輸出的第二片選信號經(jīng)過處理得到標(biāo)志存儲器的片選控制信號,通過所述標(biāo)志存儲器的片選控制信號控制是否對所述標(biāo)志存儲器進行訪問。因此,本發(fā)明提供的方法和裝置可以減少程序執(zhí)行過程中對標(biāo)志存儲器的訪問次數(shù),從而降低指令高速緩沖存儲器的整體功耗。
文檔編號G06F13/16GK102902346SQ20121036585
公開日2013年1月30日 申請日期2012年9月27日 優(yōu)先權(quán)日2012年9月27日
發(fā)明者張鐵軍, 李泉泉, 王東輝, 洪纓, 侯朝煥 申請人:中國科學(xué)院聲學(xué)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蒙城县| 教育| 益阳市| 新密市| 江西省| 金平| 太仓市| 宜川县| 巫山县| 兴安盟| 长子县| 衡阳县| 马尔康县| 梁山县| 厦门市| 原平市| 乌鲁木齐市| 肇源县| 西城区| 吉林市| 淳化县| 永顺县| 奉新县| 新平| 竹山县| 龙州县| 黎平县| 公主岭市| 夏津县| 开远市| 安多县| 望奎县| 革吉县| 迭部县| 洛隆县| 固阳县| 泸州市| 湖口县| 萨迦县| 临泽县| 满城县|