專利名稱:一種循環(huán)緩沖裝置以及循環(huán)緩沖方法
技術(shù)領(lǐng)域:
本發(fā)明涉及指令獲取領(lǐng)域,具體涉及一種循環(huán)緩沖裝置以及循環(huán)緩沖方法。
背景技術(shù):
隨著集成電路工藝的飛速發(fā)展,嵌入式處理器芯片的速度和集成度都得到了很大的提升,由此帶來的功耗問題也越來越突出。大量的能量消耗會降低便攜式設(shè)備中電池的使用壽命,而且會給處理器的散熱和可靠性帶來很多問題。作為提高處理器內(nèi)核取指速度的關(guān)鍵部件,指令高速緩沖存儲器(Cache)由于具有很高的訪問頻率而功耗顯著。因此,有效降低指令Cache的功耗對于低功耗嵌入式處理器的設(shè)計有著重要意義。
在嵌入式應(yīng)用程序中,其核心往往是些循環(huán)代碼,通常不到10%的核心代碼占用了 90%以上的執(zhí)行時間。如果將這10%的循環(huán)代碼放入一個小的緩沖區(qū)中供取指之用,而不必頻繁訪問指令Cache,則可以有效降低指令Cache的功耗。
在1999年8月的低功耗電子學(xué)與設(shè)計(ISLPED)會議上Lea Hwang Lee等人發(fā)表的文章((Instruction Fetch Energy Reduction Using Loop Caches for EmbeddedApplications with Small Tight Loops》中提出了一種 Loop Cache 結(jié)構(gòu)。它的容量比指令Cache小,位于處理器內(nèi)核和指令Cache之間,其控制器根據(jù)一類特殊的短后向跳轉(zhuǎn)指令來檢測和裝載應(yīng)用程序中的循環(huán)。若處理器內(nèi)核需要讀取的指令處于Loop Cache中,則Loop Cache控制器會關(guān)閉指令Cache,并將處理器內(nèi)核取指通道切換到從Loop Cache中取指。
Loop Cache結(jié)構(gòu)有如下缺點:
(I)不能高效處理循環(huán)體內(nèi)包含分支的情況;
(2)對于嵌套循環(huán),如果Loop Cache控制器決定將最內(nèi)層循環(huán)裝載到Loop Cache中,則會出現(xiàn)同一段循環(huán)代碼重復(fù)裝載到Loop Cache中的情況。發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中的上述問題,本發(fā)明實施例提供一種循環(huán)緩沖裝置以及循環(huán)緩沖方法。
根據(jù)本發(fā)明實施例的一個方面,提供了一種循環(huán)緩沖裝置,所述循環(huán)緩沖裝置包括循環(huán)檢測與裝載控制模塊、狀態(tài)控制器和數(shù)據(jù)存儲器,所述循環(huán)檢測與裝載控制模塊和所述狀態(tài)控制器相連,所述狀態(tài)控制器與所述數(shù)據(jù)存儲器相連,其中:所述循環(huán)檢測與裝載控制模塊,用于接收輸入信號,所述輸入信號包括分支偏移高位、分支指令地址、分支目標地址和取指地址,以及用于在有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載控制信號置為有效,以及在有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載完成信號置為有效,以及在所述取指地址處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳入循環(huán)信號置為有效,以及在所述取指地址不處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳出循環(huán)信號置為有效;所述狀態(tài)控制器,用于:在空閑狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載控制信號有效時,將狀態(tài)轉(zhuǎn)換到裝載狀態(tài),在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳入循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài);在裝載狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,將從指令高速緩沖存儲器中返回的指令發(fā)送給處理器內(nèi)核的同時寫入所述數(shù)據(jù)存儲器中,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載完成信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài);在工作狀態(tài)下,控制處理器內(nèi)核從所述數(shù)據(jù)存儲器中讀取指令,在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳出循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。根據(jù)本發(fā)明實施例的又一方面,還提供了一種循環(huán)緩沖方法,所述循環(huán)緩沖方法用于如第一方面所述的循環(huán)緩沖裝置,所述循環(huán)緩沖方法包括:所述循環(huán)檢測與裝載控制模塊接收輸入信號,在有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載控制信號置為有效,以及在有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載完成信號置為有效,以及在所述取指地址處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳入循環(huán)信號置為有效,以及在所述取指地址不處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳出循環(huán)信號置為有效,所述輸入信號包括分支偏移高位、分支指令地址、分支目標地址和取指地址;所述狀態(tài)控制器,在空閑狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載控制信號有效時,將狀態(tài)轉(zhuǎn)換到裝載狀態(tài),在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳入循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài);在裝載狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,將從指令高速緩沖存儲器中返回的指令發(fā)送給處理器內(nèi)核的同時寫入所述數(shù)據(jù)存儲器中,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載完成信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài);在工作狀態(tài)下,控制處理器內(nèi)核從所述數(shù)據(jù)存儲器中讀取指令,在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳出循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。本發(fā)明實施例記錄已執(zhí)行有效循環(huán)分支指令地址,并利用當(dāng)前分支指令地址與已執(zhí)行有效循環(huán)分支指令地址之間的關(guān)系實現(xiàn)了應(yīng)用程序中循環(huán)的檢測與裝載。通過對取指通道的精確控制,本發(fā)明實施例能夠過濾大部分不必要的指令高速緩沖存儲器訪問,有效降低了指令高速緩沖存儲器的功耗。
下面將參照附圖對本發(fā)明的具體實施方案進行更詳細的說明,在附圖中:圖1是本發(fā)明實施例的循環(huán)緩沖應(yīng)用場景示意圖;圖2是本發(fā)明實施例的循環(huán)緩沖工作流程示意圖;圖3是本發(fā)明實施例涉及的指令代碼結(jié)構(gòu)示意圖。
具體實施例方式鑒于現(xiàn)有技術(shù)存在的問題,本發(fā)明實施例記錄已執(zhí)行有效循環(huán)分支指令地址,并利用當(dāng)前分支指令地址與已執(zhí)行有效循環(huán)分支指令地址之間的關(guān)系實現(xiàn)了應(yīng)用程序中循環(huán)的檢測與裝載。通過對取指通道的精確控制,本發(fā)明實施例能夠過濾大部分不必要的指令高速緩沖存儲器訪問,有效降低了指令高速緩沖存儲器的功耗。
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細、清楚、完整的說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的原理圖如圖1所示。它主要由循環(huán)檢測與裝載控制模塊、狀態(tài)控制器和數(shù)據(jù)存儲器組成。循環(huán)檢測與裝載控制模塊主要包括控制寄存器、五個比較單元和分支計數(shù)器。循環(huán)檢測與裝載控制模塊的輸入有分支偏移高位、分支指令地址、分支目標地址、取指地址。
下面介紹一下循環(huán)檢測與裝載控制模塊中各個部分的基本功能:
控制寄存器包括第一寄存器、第二寄存器以及第三寄存器,具體地:
第一寄存器:用于存儲有效循環(huán)分支指令地址;
第二寄存器:用于存儲循環(huán)緩沖中(數(shù)據(jù)存儲器中)循環(huán)首地址;
第三寄存器:用于存儲循環(huán)緩沖中(數(shù)據(jù)存儲器中)循環(huán)尾地址。
五個比較單元包括第一至第五比較單元,具體地:
第一比較單元:用于判斷輸入的分支偏移高位是否全為I ;
第二比較單元:用于判斷輸入的分支指令地址是否與第一寄存器的值相等;
第三比較單元:用于判斷分支計數(shù)器輸出是否為1,若是,則輸出的裝載控制信號有效;
第四比較單元:用于判斷分支計數(shù)器輸出是否為2,若是,則輸出的裝載完成信號有效;
第五比較單元:用于判斷輸入的取指地址是否處于第二寄存器的值與第三寄存器的值之間,若是,則輸出的跳入循環(huán)信號有效;若不是,則輸出的跳出循環(huán)信號有效。
分支計數(shù)器
用于記錄輸入的分支指令地址連續(xù)命中第一寄存器的次數(shù)。若輸入的分支指令地址與第一寄存器的值相等,則表示該分支指令地址命中。
下面介紹一下本發(fā)明的工作原理:
循環(huán)緩沖中數(shù)據(jù)存儲器深度為2W,能夠容納2W條指令;分支指令中分支偏移量位寬為K,則分支偏移高位為分支偏移量高(K-W)位。當(dāng)分支偏移高位全為I時,可以保證分支偏移量小于或等于2W,若該分支指令被確定為循環(huán)分支指令,則該循環(huán)體內(nèi)包含的指令數(shù)一定小于或等于2W,即小于或等于循環(huán)緩沖的容量。這樣可以確保裝載到循環(huán)緩沖的循環(huán)大小不會超過循環(huán)緩沖的容量。
循環(huán)檢測與裝載控制模塊的工作原理:若有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令,則開始裝載循環(huán);若有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令,則循環(huán)裝載完成。
具體地,在應(yīng)用程序執(zhí)行過程中,遇到分支指令時,如果檢測到分支偏移高位為-1,即它的每一位都為1,則將該分支指令作為有效循環(huán)分支指令,此時第一比較單元輸出的有效循環(huán)分支信號有效。如果該分支指令地址與第一寄存器中的值相等,則第二比較單元輸出的命中信號有效,分支計數(shù)器加I;否則將該分支指令地址存儲到第一寄存器中,并將分支計數(shù)器清零。如果檢測到分支偏移高位不為-1,即該分支指令不為有效循環(huán)分支指令,則分支計數(shù)器清零,第一寄存器清零。若分支計數(shù)器的值為1,即有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令,則開始裝載循環(huán),此時第三比較單元輸出的裝載控制信號有效;若分支計數(shù)器的值為2,即有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令,則循環(huán)裝載完成,此時第四比較單元輸出的裝載完成信號有效。循環(huán)裝載完成后,循環(huán)檢測與裝載控制模塊會將分支目標地址(循環(huán)首地址)和分支指令地址(循環(huán)尾地址)分別存儲到第二寄存器和第三寄存器中。如果檢測到取指地址處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi),則第五比較單元輸出的跳入循環(huán)信號有效;如果檢測到取指地址不處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi),則第五比較單元輸出的跳出循環(huán)信號有效。狀態(tài)控制器的工作過程:當(dāng)循環(huán)緩沖不工作時,狀態(tài)控制器處于空閑狀態(tài),此時處理器內(nèi)核從指令Cache中讀取指令。當(dāng)循環(huán)檢測與裝載控制模塊輸出的裝載控制信號有效時,狀態(tài)機從空閑狀態(tài)轉(zhuǎn)換到裝載狀態(tài)開始裝載循環(huán);在裝載狀態(tài),處理器內(nèi)核從指令Cache中讀取指令,從指令Cache中返回的指令發(fā)送給處理器內(nèi)核的同時寫入循環(huán)緩沖中。當(dāng)循環(huán)檢測與裝載控制模塊輸出的裝載完成信號有效時,循環(huán)裝載完成,狀態(tài)機從裝載狀態(tài)裝換到工作狀態(tài),此時狀態(tài)控制器會發(fā)送禁能信號關(guān)閉指令Cache,處理器內(nèi)核直接從循環(huán)緩沖中讀取指令。當(dāng)循環(huán)檢測與裝載控制模塊輸出的跳出循環(huán)信號有效時,狀態(tài)機從工作狀態(tài)裝換到空閑狀態(tài),處理器內(nèi)核開始從指令Cache中讀取指令。在裝載狀態(tài),如果執(zhí)行了其他的分支指令,此時循環(huán)檢測與控制模塊輸出的裝載信號無效,則狀態(tài)機從裝載狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。在工作狀態(tài),如果滿足下列條件之一:執(zhí)行了其他的分支指令且分支目標地址不處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi);循環(huán)緩沖中循環(huán)執(zhí)行完成;則狀態(tài)機從工作狀態(tài)裝換到空閑狀態(tài)。在空閑狀態(tài),如果檢測到分支指令的分支目標地址處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi),則狀態(tài)機從空閑狀態(tài)裝換到工作狀態(tài)。對于嵌套循環(huán)的情況,如果循環(huán)檢測與裝載控制模塊決定將最內(nèi)層循環(huán)裝載到循環(huán)緩沖中,則本發(fā)明不會出現(xiàn)重復(fù)裝載的情況。因為在第一次裝載完成后,第二寄存器和第三寄存器已經(jīng)分別存儲了該嵌套循環(huán)中最內(nèi)層循環(huán)的首地址和尾地址,所以在后面執(zhí)行該嵌套循環(huán)中最內(nèi)層循環(huán)時,循環(huán)檢測與裝載控制模塊會檢測到該循環(huán)分支指令的分支目標地址處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi),處理器內(nèi)核直接從循環(huán)緩沖中讀取指令。圖2簡潔地展示了本發(fā)明的工作流程。參見圖2,本發(fā)明的工作流程包括:開始步驟,程序執(zhí)行過程中,遇到分支指令;步驟200,判斷分支指令是否為有效循環(huán)分支指令,在判斷結(jié)果為否時,進入步驟202,在判斷結(jié)果為是時,進入步驟204 ;步驟202,將分支計數(shù)器清零,將第一寄存器的數(shù)值清零,停止裝載循環(huán);步驟204,判斷分支目標地址是否處于循環(huán)體地址范圍內(nèi),在判斷結(jié)果為否時進入步驟206,在判斷結(jié)果為是時進入步驟218 ;
步驟206,判斷分支指令地址是否命中,在判斷結(jié)果為否時進入步驟208,否則進入步驟210 ;
步驟208,將分支指令地址存儲到第一寄存器,將分支計數(shù)器清零,停止裝載循環(huán);
步驟210,將分支計數(shù)器的值增I ;
步驟212,判斷分支計數(shù)器的值是否為1,在判斷結(jié)果為是時進入步驟214,否則進入步驟216 ;
步驟214,開始裝載循環(huán);
步驟216,完成循環(huán)裝載;
步驟218,從循環(huán)緩沖中讀取指令,進入步驟220 ;
步驟220,判斷取指地址是否不處于循環(huán)體地址范圍內(nèi),在判斷結(jié)果為是時,進入步驟222,否則返回步驟218 ;
步驟222,循環(huán)緩沖停止工作。
下面通過一個簡單的例子來說明本發(fā)明的具體應(yīng)用。假設(shè)處理器內(nèi)核一次取一條指令,循環(huán)緩沖中數(shù)據(jù)存儲器深度為25=32 (w=5),能夠容納32條指令;分支指令中分支偏移量位寬為21bits,跳轉(zhuǎn)范圍大致為-4MB +4MB ;分支偏移高位為分支偏移量高(21-5=16)位。指令代碼結(jié)構(gòu)如圖3所示。
在圖3a中,當(dāng)程序執(zhí)行到BRANCH1時,由于循環(huán)L00P1的循環(huán)體大于32,因此分支指令J的分支偏移高位不為-1,即該分支指令不為有效循環(huán)分支指令,分支計數(shù)器清零,第一寄存器清零。此時狀態(tài)控制器處理空閑狀態(tài),處理器內(nèi)核從指令Cache中讀取指令。
在圖3b中,當(dāng)程序執(zhí)行到BRANCH2時,由于循環(huán)L00P2的循環(huán)體小于32,因此分支指令J的分支偏移高位為-1,即該分支指令為有效循環(huán)分支指令,第一比較單元輸出的有效循環(huán)分支信號有效。由于程序是第一次執(zhí)行到BRANCH2,因此該分支指令地址與第一寄存器的值不相等。循環(huán)檢測與裝載控制模塊會將該分支指令地址存儲到第一寄存器中,并將分支計數(shù)器清零。當(dāng)程序第二次執(zhí)行到BRANCH2時,第一比較單元輸出的有效循環(huán)分支信號有效,第二比較單元輸出的命中信號有效,分支計數(shù)器加I。此時分支計數(shù)器的值為I,第三比較單元輸出的裝載控制信號有效,狀態(tài)機從空閑狀態(tài)轉(zhuǎn)換到裝載狀態(tài)開始裝載循環(huán),處理器內(nèi)核從指令Cache中讀取指令,從指令Cache中返回的指令發(fā)送給處理器內(nèi)核的同時存入循環(huán)緩沖中。當(dāng)程序第三次執(zhí)行到BRANCH2時,第一比較單元輸出的有效循環(huán)分支信號有效,第二比較單元輸出的命中信號有效,分支計數(shù)器加I。此時分支計數(shù)器的值為2,第四比較單元輸出的裝載完成信號有效,循環(huán)檢測與裝載控制模塊將循環(huán)首地址和循環(huán)尾地址分別存儲在第二寄存器和第三寄存器中;狀態(tài)機從裝載狀態(tài)裝換到工作狀態(tài),此時狀態(tài)控制器會發(fā)送禁能信號關(guān)閉指令Cache,處理器內(nèi)核直接從循環(huán)緩沖中讀取指令。當(dāng)L00P2執(zhí)行完成時,第五比較單元輸出的跳出循環(huán)信號有效,狀態(tài)機從工作狀態(tài)裝換到空閑狀態(tài),處理器內(nèi)核開始從指令Cache中讀取指令。
在圖3c中,當(dāng)程序執(zhí)行到BRANCH4時,由于循環(huán)L00P3的循環(huán)體小于32,因此L00P3的檢測與裝載過程與圖3b中的過程相同,只是可能會出現(xiàn)裝載過程中執(zhí)行BRANCH3的情況。如果在裝載過程中執(zhí)行了 BRANCH3,則停止裝載循環(huán),分支計數(shù)器清零,第一寄存器清零,狀態(tài)機從裝載狀態(tài)轉(zhuǎn)換到空閑狀態(tài),重新開始檢測有效循環(huán)分支指令。當(dāng)循環(huán)緩沖處于工作狀態(tài),如果執(zhí)行了 BRANCH3,由于分支目標地址LABELl不處于L00P3的地址范圍內(nèi),因此第五比較單元輸出的跳出循環(huán)信號有效,狀態(tài)機從工作狀態(tài)裝換到空閑狀態(tài),循環(huán)緩沖停止工作,處理器內(nèi)核開始從指令Cache中讀取指令。在空閑狀態(tài),當(dāng)程序執(zhí)行到BRANCH5,由于分支目標地址LABEL2處于循環(huán)緩沖中循環(huán)體的地址范圍內(nèi),因此第五比較單元輸出的跳入循環(huán)信號有效,狀態(tài)機從空閑狀態(tài)裝換到工作狀態(tài),處理器內(nèi)核直接從循環(huán)緩沖中讀取指令。當(dāng)L00P3執(zhí)行完成時,第五比較單元輸出的跳出循環(huán)信號有效,狀態(tài)機從工作狀態(tài)轉(zhuǎn)換到空閑狀態(tài),處理器內(nèi)核開始從指令Cache中讀取指令。在圖3d中,當(dāng)程序執(zhí)行到BRANCH7時,由于循環(huán)L00P7的循環(huán)體小于32,因此L00P7的檢測與裝載過程與圖3b中的過程相同。在第一次裝載完成后,L00P7的首地址和尾地址已經(jīng)分別存儲在第二寄存器和第三寄存器中。當(dāng)L00P7第一次執(zhí)行完成時,狀態(tài)機從工作狀態(tài)轉(zhuǎn)換到空閑狀態(tài),處理器內(nèi)核從指令Cache中讀取指令。在L00P7第二次執(zhí)行過程中,當(dāng)程序執(zhí)行到BRANCH7時,由于分支目標地址處于L00P7的地址范圍內(nèi),因此第五比較單元輸出的跳入循環(huán)信號有效,狀態(tài)機從空閑狀態(tài)裝換到工作狀態(tài),處理器內(nèi)核直接從循環(huán)緩沖中讀取指令。通過上面的例子可以發(fā)現(xiàn)本發(fā)明實施例能夠減少指令Cache的訪問次數(shù),從而可以有效降低指令Cache的功耗。在本申請所提供的幾個實施例中,本領(lǐng)域技術(shù)人員應(yīng)該理解到,所揭露的裝置,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或模塊的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能模塊、器件可以集成在一個處理單元中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個集成模塊中。上述模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。顯而易見,在不偏離本發(fā)明的真實精神和范圍的前提下,在此描述的本發(fā)明可以有許多變化。因此,所有對于本領(lǐng)域技術(shù)人員來說顯而易見的改變,都應(yīng)包括在本發(fā)明權(quán)利要求書所涵蓋的范圍之內(nèi)。本發(fā)明所要求保護的范圍由所述的權(quán)利要求書進行限定。
權(quán)利要求
1.一種循環(huán)緩沖裝置,所述循環(huán)緩沖裝置包括循環(huán)檢測與裝載控制模塊、狀態(tài)控制器和數(shù)據(jù)存儲器,所述循環(huán)檢測與裝載控制模塊和所述狀態(tài)控制器相連,所述狀態(tài)控制器與所述數(shù)據(jù)存儲器相連,其特征在于: 所述循環(huán)檢測與裝載控制模塊,用于接收輸入信號,所述輸入信號包括分支偏移高位、分支指令地址、分支目標地址和取指地址,以及用于在有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載控制信號置為有效,以及在有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載完成信號置為有效,以及在所述取指地址處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳入循環(huán)信號置為有效,以及在所述取指地址不處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳出循環(huán)信號置為有效; 所述狀態(tài)控制器,用于: 在空閑狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載控制信號有效時,將狀態(tài)轉(zhuǎn)換到裝載狀態(tài),在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳入循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài); 在裝載狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,將從指令高速緩沖存儲器中返回的指令發(fā)送給處理器內(nèi)核的同時寫入所述數(shù)據(jù)存儲器中,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載完成信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài); 在工作狀態(tài)下,控制處理器內(nèi)核從所述數(shù)據(jù)存儲器中讀取指令,在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳出循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。
2.根據(jù)權(quán)利要求1所述的循環(huán)緩沖裝置,其特征在于,所述循環(huán)檢測與裝載控制模塊包括第一寄存器、第二寄存器、第三寄存器、第一比較單元、第二比較單元、第三比較單元、第四比較單元、第五比較單元和分支計數(shù)器,其中: 所述第一寄存器, 用于存儲有效循環(huán)分支指令地址; 所述第二寄存器,用于存儲所述數(shù)據(jù)存儲器中循環(huán)首地址; 所述第三寄存器,用于存儲所述數(shù)據(jù)存儲器中循環(huán)尾地址; 所述第一比較單元,用于判斷所述分支偏移高位是否全為1,并將判斷結(jié)果發(fā)送給所述第二比較單元; 所述第二比較單元,用于判斷所述分支指令地址是否與所述第一寄存器的值相等,并將判斷結(jié)果發(fā)送給所述分支計數(shù)器; 所述第三比較單元,用于判斷所述分支計數(shù)器輸出是否為1,若是,則輸出的裝載控制信號有效; 所述第四比較單元,用于判斷所述分支計數(shù)器輸出是否為2,若是,則輸出的裝載完成信號有效; 所述第五比較單元,用于判斷所述取指地址是否處于所述第二寄存器的值與所述第三寄存器的值之間,若是,則輸出的跳入循環(huán)信號有效;若不是,則輸出的跳出循環(huán)信號有效; 所述分支計數(shù)器,用于記錄所述分支指令地址連續(xù)命中所述第一寄存器的次數(shù),所述命中是指所述分支指令地址與所述第一寄存器的值相等。
3.根據(jù)權(quán)利要求1或2所述的循環(huán)緩沖裝置,其特征在于,所述循環(huán)檢測與裝載控制模塊在裝載完成信號有效時將所述分支目標地址作為所述數(shù)據(jù)存儲器中循環(huán)首地址寫入所述第二寄存器中,將所述分支指令地址作為所述數(shù)據(jù)存儲器中循環(huán)尾地址寫入所述第三寄存器中。
4.根據(jù)權(quán)利要求1或2所述的循環(huán)緩沖裝置,其特征在于,所述有效循環(huán)分支指令是指所述分支偏移高位全為I的分支指令。
5.根據(jù)權(quán)利要求1或2所述的循環(huán)緩沖裝置,其特征在于,所述分支偏移高位的位寬根據(jù)分支偏移量的位寬和指令高速緩沖存儲器的容量來確定。
6.一種循環(huán)緩沖方法,所述循環(huán)緩沖方法用于如權(quán)利要求1至5之一所述的循環(huán)緩沖裝置,其特征在于,所述循環(huán)緩沖方法包括: 所述循環(huán)檢測與裝載控制模塊接收輸入信號,在有效循環(huán)分支指令第二次執(zhí)行且第一次執(zhí)行與第二次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載控制信號置為有效,以及在有效循環(huán)分支指令第三次執(zhí)行且第二次執(zhí)行與第三次執(zhí)行期間沒有執(zhí)行其他的分支指令時將裝載完成信號置為有效,以及在所述取指地址處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳入循環(huán)信號置為有效,以及在所述取指地址不處于所述數(shù)據(jù)存儲器中循環(huán)體地址范圍內(nèi)時將跳出循環(huán)信號置為有效,所述輸入信號包括分支偏移高位、分支指令地址、分支目標地址和取指地址; 所述狀態(tài)控制器,在空閑狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載控制信號有效時,將狀態(tài)轉(zhuǎn)換到裝載狀態(tài),在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳入循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài); 在裝載狀態(tài)下,控制處理器內(nèi)核從指令高速緩沖存儲器中讀取指令,將從指令高速緩沖存儲器中返回的指令發(fā)送給處理器內(nèi)核的同時寫入所述數(shù)據(jù)存儲器中,以及在檢測到所述循環(huán)檢測與裝載控制模塊輸出的裝載完成信號有效時,將狀態(tài)轉(zhuǎn)換到工作狀態(tài); 在工作狀態(tài)下,控制處理器內(nèi)核從所述數(shù)據(jù)存儲器中讀取指令,在檢測到所述循環(huán)檢測與裝載控制模塊輸出的跳出循環(huán)信號有效時,將狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。
7.根據(jù)權(quán)利要求6所述的循環(huán)緩沖方法,其特征在于,所述循環(huán)檢測與裝載控制模塊包括第一寄存器、第二寄存器、第三寄存器、第一比較單元、第二比較單元、第三比較單元、第四比較單元、第 五比較單元和分支計數(shù)器,其中: 所述第一寄存器,用于存儲有效循環(huán)分支指令地址; 所述第二寄存器,用于存儲所述數(shù)據(jù)存儲器中循環(huán)首地址; 所述第三寄存器,用于存儲所述數(shù)據(jù)存儲器中循環(huán)尾地址; 所述第一比較單元,用于判斷所述分支偏移高位是否全為1,并將判斷結(jié)果發(fā)送給所述第二比較單元; 所述第二比較單元,用于判斷所述分支指令地址是否與所述第一寄存器的值相等,并將判斷結(jié)果發(fā)送給所述分支計數(shù)器; 所述第三比較單元,用于判斷所述分支計數(shù)器輸出是否為1,若是,則輸出的裝載控制信號有效; 所述第四比較單元,用于判斷所述分支計數(shù)器輸出是否為2,若是,則輸出的裝載完成信號有效;所述第五比較單元,用于判斷所述取指地址是否處于所述第二寄存器的值與所述第三寄存器的值之間,若是,則輸出的跳入循環(huán)信號有效;若不是,則輸出的跳出循環(huán)信號有效; 所述分支計數(shù)器,用于記錄所述分支指令地址連續(xù)命中所述第一寄存器的次數(shù),所述命中是指所述分支指令地址與所述第一寄存器的值相等。
8.根據(jù)權(quán)利要求6或7所述的循環(huán)緩沖方法,其特征在于,所述循環(huán)檢測與裝載控制模塊在裝載完成信號有效時將所述分支目標地址作為所述數(shù)據(jù)存儲器中循環(huán)首地址寫入所述第二寄存器中,將所述分支指令地址作為所述數(shù)據(jù)存儲器中循環(huán)尾地址寫入所述第三寄存器中。
9.根據(jù)權(quán)利要求6或7所述的循環(huán)緩沖方法,其特征在于,所述有效循環(huán)分支指令是指所述分支偏移高位全為I的分支指令。
10.根據(jù)權(quán)利要求6或7所述的循環(huán)緩沖方法,其特征在于,所述分支偏移高位的位寬根據(jù)分支偏移量的位寬和指令高速緩沖存儲器的容量來確定。
全文摘要
本發(fā)明實施例公開一種循環(huán)緩沖裝置以及循環(huán)緩沖方法。本發(fā)明實施例記錄已執(zhí)行有效循環(huán)分支指令地址,并利用當(dāng)前分支指令地址與已執(zhí)行有效循環(huán)分支指令地址之間的關(guān)系實現(xiàn)了應(yīng)用程序中循環(huán)的檢測與裝載。通過對取指通道的精確控制,本發(fā)明實施例能夠過濾大部分不必要的指令高速緩沖存儲器訪問,有效降低了指令高速緩沖存儲器的功耗。
文檔編號G06F9/38GK103218205SQ20131010017
公開日2013年7月24日 申請日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者張鐵軍, 李泉泉, 王東輝, 洪纓, 侯朝煥 申請人:中國科學(xué)院聲學(xué)研究所