專利名稱::用于頁內(nèi)程序計數(shù)器相對或絕對地址轉(zhuǎn)移指令的轉(zhuǎn)換后備緩沖器(tlb)訪問抑制的制作方法
技術(shù)領(lǐng)域:
:
背景技術(shù):
:本發(fā)明大體而言涉及處理器領(lǐng)域,且具體而言,涉及通過抑制其中轉(zhuǎn)移目標(biāo)地址可根據(jù)轉(zhuǎn)移指令(branchinstruction)地址或轉(zhuǎn)移指令本身來確定的頁內(nèi)轉(zhuǎn)移的TLB訪問來降低處理器內(nèi)的功率消耗的方法。便攜式電子裝置已成為現(xiàn)代生活中無處不在的裝備。便攜式電子裝置的兩個經(jīng)久不變的趨勢是功能越來越強(qiáng)且尺寸越來越小。越來越強(qiáng)的功能需要越來越強(qiáng)的計算能力一具體而言,越來越快和更強(qiáng)大的處理器。除提供先進(jìn)的特征和功能(其需要更快的處理器)夕卜,便攜式電子裝置本身的尺寸和重量也不斷地縮減。該趨勢的主要影響是用于向裝置中的處理器和其他電子器件供電的電池的尺寸越來越小。盡管電池技術(shù)的前進(jìn)可部分抵消這一問題,但是越來越小的電池尺寸提出降低便攜式電子裝置電子器件的功率預(yù)算一且具體而言降低處理器所用功率的要求。相應(yīng)地,對于諸如便攜式電子裝置等許多應(yīng)用來說,需要進(jìn)行處理器改良來提高性能及/或降低功率消耗?,F(xiàn)代處理器通常采用如下存儲器體系靠近處理器布置少量快速、昂貴的存儲器,輔之以大量較慢、便宜的存儲器一其距處理器稍微遠(yuǎn)一些。通常將大的主存儲器劃分為稱為頁的邏輯單元。頁內(nèi)的所有數(shù)據(jù)或指令通常具有相同的屬性,所述相同的屬性定義共同特性,通過許可限制訪問等等。頁屬性通常存儲在轉(zhuǎn)換后備緩沖器(TranslationLookasideBuffer,TLB)內(nèi)。通常,對于每次指令提取,處理器應(yīng)通過TLB傳遞指令地址,以驗證程序具有訪問和執(zhí)行該指令的許可。檢驗諸如TLB內(nèi)的許可等屬性會消耗功率。由于一頁內(nèi)的每個指令均具有相同的屬性,且因此具有相同的許可,因此一旦該頁上的一個指令通過TLB得到驗證,則可提取同一頁上的所有其他指令而無須檢驗TLB屬性。例如,在所屬領(lǐng)域中已知,可旁路繼先前檢驗過的指令之后執(zhí)行的指令的TLB屬性檢驗,直至后繼指令跨越頁邊界為止。類似地,可有益地旁路未離開頁的轉(zhuǎn)移目標(biāo)的TLB屬性檢驗。下一條指令所取自的轉(zhuǎn)移目標(biāo)地址的計算和轉(zhuǎn)移目標(biāo)地址的選擇通常是轉(zhuǎn)移指令的關(guān)鍵路徑,且是確定機(jī)器周期時間的限制性因素。如果目標(biāo)地址與指令地址位于相同的頁內(nèi),則可避免轉(zhuǎn)移目標(biāo)地址的TLB屬性檢驗。但是,比較轉(zhuǎn)移目標(biāo)地址與TLB上次檢驗的地址以確定轉(zhuǎn)移目標(biāo)地址是否與TLB檢驗的上一個地址位于相同的頁內(nèi)可能會通過向關(guān)鍵路徑增加延時來延長周期時間。另外,由于必須在每次執(zhí)行轉(zhuǎn)移指令時進(jìn)行計算,計算所消耗的額外功率將會抵消通過旁路經(jīng)確定位于相同頁上的目標(biāo)和指令地址的TLB屬性檢驗所節(jié)省的功率消耗。對于可根據(jù)轉(zhuǎn)移指令地址及/或轉(zhuǎn)移指令本身來確定轉(zhuǎn)移目標(biāo)地址的轉(zhuǎn)移,預(yù)解碼器可計算轉(zhuǎn)移目標(biāo)地址,并將其與轉(zhuǎn)移指令地址進(jìn)行比較,以確定這兩個地址是否位于相同的存儲器頁內(nèi)??蓪⒎从吃摋l件的轉(zhuǎn)移目標(biāo)相同頁位存儲在指令高速緩存內(nèi)并將其與轉(zhuǎn)移指令關(guān)聯(lián)。在指令執(zhí)行時,如果進(jìn)行轉(zhuǎn)移,則可根據(jù)轉(zhuǎn)移目標(biāo)相同頁位來抑制檢驗轉(zhuǎn)移目標(biāo)地址的許可的TLB訪問。本發(fā)明涉及降低流水線式處理器內(nèi)的功率消耗的方法。在解碼流水線內(nèi)的轉(zhuǎn)移指令之前,檢測與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)的PC-相對或絕對地址轉(zhuǎn)移指令的目標(biāo)地址。此后在由目標(biāo)地址取指令時,根據(jù)該檢測抑制TLB訪問。本發(fā)明還涉及降低處理器內(nèi)的功率消耗的方法。對與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)的PC-相對或絕對地址轉(zhuǎn)移指令的目標(biāo)地址進(jìn)行一次檢測。存儲該檢測的指示符。在轉(zhuǎn)移指令的第一次執(zhí)行過程中,在取目標(biāo)地址時,根據(jù)該指示符抑制TLB訪問。另外,在轉(zhuǎn)移指令的第二次執(zhí)行過程中,在取目標(biāo)地址時,根據(jù)該指示符抑制TLB訪問。本發(fā)明還涉及處理器。處理器包括頁駐留檢測邏輯,其產(chǎn)生PC-相對或絕對地址轉(zhuǎn)移指令的目標(biāo)地址與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)的指示。處理器還包括存儲該指示的存儲器,以及在指令提取時產(chǎn)生存儲器訪問許可信息的TLB,其中在執(zhí)行轉(zhuǎn)移指令時,在自目標(biāo)地址取指令時根據(jù)該指示抑制TLB。本發(fā)明進(jìn)一步涉及處理器。處理器包括訪問處理器外部的存儲器的存儲器接口,所述存儲器組織成邏輯頁。處理器還包括與存儲器接口為數(shù)據(jù)傳送關(guān)系的高速緩沖存儲器,所述高速緩沖存儲器存儲指令。處理器進(jìn)一步包括置于存儲器接口和高速緩沖存儲器之間的預(yù)解碼器,所述預(yù)解碼器在將指令存儲于高速緩沖存儲器內(nèi)之前計算PC-相對或絕對地址轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址。
發(fā)明內(nèi)容圖1為流水線式處理器的功能性方塊圖。圖2為ITLB(指令側(cè)轉(zhuǎn)換后備緩沖器)、指令高速緩存和部分處理器流水線的功能性方塊圖。具體實(shí)施例方式圖1描繪代表性處理器10的功能性方塊圖。處理器10根據(jù)控制邏輯14執(zhí)行指令執(zhí)行流水線12內(nèi)的指令。所述流水線包括組織成管道階段的各種寄存器或鎖存器16,以及一個或多個算術(shù)邏輯單元(ALU)18。通用寄存器(GPR)文件20提供構(gòu)成存儲器體系的頂層的寄存器。流水線自指令高速緩存22提取指令,存儲器尋址和許可由指令側(cè)轉(zhuǎn)換后備緩沖器(ITLB)24來管理,且視情況由預(yù)解碼器21進(jìn)行指令的某些初始解碼。自數(shù)據(jù)高速緩存26訪問數(shù)據(jù),其中存儲器尋址和許可是由主轉(zhuǎn)換后備緩沖器(TLB)28來管理。在各種實(shí)施例中,ITLB可包括部分TLB的副本?;蛘撸蓪TLB與TLB集成。類似地,在處理器10的各種實(shí)施例中,可將I-高速緩存22和D-高速緩存26集成或聯(lián)合。在存儲器接口30的控制下,在I-高速緩存22及/或D-高速緩存26內(nèi)未命中會引發(fā)對主(片外)存儲器32的訪問。處理器10可包括輸入/輸出(I/O)接口34,其控制對各個外部設(shè)備36的訪問。所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,可以對處理器10進(jìn)行多種變化。例如,處理器10可包括用于I或D高速緩存二者或其中任何一者的第二級(L2)高速緩存。另外,可將所描繪的處理器10內(nèi)的一個或多個方塊自某個實(shí)施例省略。許多程序的編寫都仿佛執(zhí)行上述程序的計算機(jī)具有非常大的量的(理想的,無限的)快速存儲器。大多數(shù)的現(xiàn)代處理器通過采用存儲器類型體系來模擬這種理想條件,每個存儲器類型具有不同的速度和成本特性。所述體系中的存儲器類型從位于頂層的非??烨曳浅YF的存儲類型變化為位于較低層的逐漸減慢但是更為經(jīng)濟(jì)的存儲類型。典型的處理器存儲器體系可包括以下各者位于頂層的在處理器(門)內(nèi)的寄存器20;輔之以一個或多個片上高速緩存22、26(SRAM);可能有片外高速緩存(SRAM)(未示出);主存儲器32(DRAM);磁盤存儲(磁媒體)(未示出);及位于最低層的磁帶或CD(磁或光媒體)。大多數(shù)便攜式電子裝置具有有限的(如果有)磁盤存儲,且因此主存儲器32(通常尺寸有限)在存儲器體系中處于最低層。在計算機(jī)存儲器體系中,每個較低的層均保持駐留在較高層內(nèi)的數(shù)據(jù)的完整(但是可能失效)的副本。即,存儲在較高層內(nèi)的數(shù)據(jù)重復(fù)存儲在較低層內(nèi)的數(shù)據(jù)。由于較小、較高層的存儲可映射至較大、較低層存儲器內(nèi)的多個位置,因此需要映射方案,以在體系的層之間轉(zhuǎn)換地址。大多數(shù)處理器在非常大、概念上連續(xù)的虛擬地址空間內(nèi)運(yùn)行。主存儲器32通過由硬件和系統(tǒng)參數(shù)來約束的物理地址空間來訪問。置于處理器核和主存儲器之間的高速緩存22、26可完全通過虛擬地址、完全通過物理地址或組合方式(例如通過使用虛擬索引和物理標(biāo)簽)來訪問。然而,無論高速緩存的配置如何,最終必須將地址由虛擬地址空間轉(zhuǎn)換為物理地址空間。另外,許多操作系統(tǒng)通過給予各程序單獨(dú)的虛擬地址空間而將各程序彼此隔離,在所述單獨(dú)的虛擬地址空間內(nèi),允許程序使用由指令集架構(gòu)所規(guī)定的整個地址范圍。然而,在系統(tǒng)中可獲得的實(shí)際物理存儲器的大小通常遠(yuǎn)遠(yuǎn)小于程序在其虛擬地址空間內(nèi)可尋址的大小。所屬領(lǐng)域的技術(shù)人員熟知,地址的虛擬-物理映射可用于以程序可在有限的物理存儲器內(nèi)運(yùn)行的方式來管理對有限的物理存儲器的訪問。由操作系統(tǒng)進(jìn)行的存儲器管理與諸如TLB等專門的存儲器管理硬件相結(jié)合可阻止程序蓋寫彼此的數(shù)據(jù)。存儲器管理還可通過阻止一個進(jìn)程讀取另一個程序的數(shù)據(jù)來提供安全。存儲器管理可通過拒絕用戶級程序訪問管理級數(shù)據(jù)結(jié)構(gòu)來提高可靠性。如果蓋寫諸如操作系統(tǒng)分配表和參數(shù)等管理級數(shù)據(jù)結(jié)構(gòu),則可導(dǎo)致系統(tǒng)崩潰。虛擬及物理地址空間均劃分為稱為頁的單元且以稱為頁的單元來管理。通常在每頁基礎(chǔ)上將許可屬性賦值給存儲器32。TLB28執(zhí)行虛擬-物理存儲器地址轉(zhuǎn)換,且另外保持虛擬地址所映射的物理存儲器頁的許可信息和其他屬性。對于指令,相同的任務(wù)由ITLB24執(zhí)行。布髙速緩存以物理方式進(jìn)行索引及/或標(biāo)記的情況下,必須為每個高速緩存訪問進(jìn)行處理器虛擬地址轉(zhuǎn)換。對于以虛擬方式進(jìn)行索引和標(biāo)記的高速緩存,不需要為每個高速緩存訪問進(jìn)行地址轉(zhuǎn)換,但是,通常在處理器10每次訪問存儲器32時均會咨詢TLB28,以檢驗與其中駐留所請求的數(shù)據(jù)的頁相關(guān)聯(lián)的許可信息,并獲取映射至請求虛擬地址的物理地址。這包括為提取指令而檢驗ITLB24,以驗證程序具有該頁的執(zhí)行許可。在所屬領(lǐng)域內(nèi)已知幾種用于減少ITLB訪問的技術(shù),這些技術(shù)可相應(yīng)地節(jié)省功率。例如,在順序訪問中,所有的訪問將位于相同的頁內(nèi),直至跨越頁邊界。順序訪問檢測取決于頁尺寸。在邏輯上可將存儲器地址劃分成頁號和頁偏移,如以下在表l中所描繪<table>tableseeoriginaldocumentpage8</column></row><table>頁號由ITLB24進(jìn)行轉(zhuǎn)換。頁偏移是相對于頁的偏移,其對于虛擬和物理地址而言是相同的;通常不對頁偏移位進(jìn)行轉(zhuǎn)換。頁偏移包括頁尺寸內(nèi)的地址存儲器所必需的多個位。例如,對于4K頁的32-位地址,頁號將包括地址位[31:12]和頁偏移位[11:0]。在一系列的順序訪問期間,對頁號字段的最低位(LSB)進(jìn)行監(jiān)視,以檢測頁邊界跨越。在上述實(shí)例中,在順序訪問期間,當(dāng)?shù)刂肺?2切換時,處理器10確定已跨越頁邊界,且使用切換后的地址位12的第一次存儲器訪問將通過ITLB24來轉(zhuǎn)換,以檢驗新頁的訪問許可。對于可能轉(zhuǎn)移以從不同的頁上提取指令但是頁號字段的LSB(即位12)相同的轉(zhuǎn)移指令而言,頁跨越更難以斷定。因此,監(jiān)視頁號字段的LSB不足以確定轉(zhuǎn)移指令是否已跨越頁邊界。在計算轉(zhuǎn)移目標(biāo)地址(BTA)時,可將對應(yīng)于頁號的位字段(即BTA[31:12])與轉(zhuǎn)移指令地址(BIA)的對應(yīng)位(即BIA[31:12])進(jìn)行比較。如果兩個地址字段相同,則轉(zhuǎn)移目標(biāo)與轉(zhuǎn)移指令位于相同的頁內(nèi),且不需要咨詢ITLB24來獲取BTA的許可信息,因為其將與BIA的許可信息相同。然而,在將BTA呈現(xiàn)給ITLB24之前,為下一個指令地址計算BTA并在無數(shù)個選擇中對其進(jìn)行選取通常是在處理器數(shù)據(jù)流內(nèi)的關(guān)鍵定時路徑上進(jìn)行。執(zhí)行另一個20-位比較會要求增加機(jī)器周期時間,如果BTA和BIA位于相同的頁內(nèi),則由此導(dǎo)致的性能降低幅度要大于避免ITLB24檢查所產(chǎn)生的潛在的功率節(jié)省的調(diào)整幅度。在轉(zhuǎn)移目標(biāo)地址與轉(zhuǎn)移指令本身的地址位于相同的存儲器頁內(nèi)時,可根據(jù)轉(zhuǎn)移指令地址及/或轉(zhuǎn)移指令本身來確定轉(zhuǎn)移目標(biāo)地址,根據(jù)本發(fā)明的實(shí)施例,對于上述轉(zhuǎn)移指令,將抑制對ITLB24的訪問。在本文中所揭示和主張的處理器和方法通過抑制大量的用于轉(zhuǎn)移指令執(zhí)行的ITLB24訪問來降低功率消耗。在某些程序中,在每4到6個指令中就會遇到轉(zhuǎn)移,因此僅這一個方面即意味著顯著的功率管理改善。另外,本發(fā)明通過對轉(zhuǎn)移目標(biāo)地址可根據(jù)轉(zhuǎn)移指令地址或轉(zhuǎn)移指令本身來確定的任何指令僅執(zhí)行一次BTA/BIA比較來節(jié)省功率,而不是在每次從指令高速緩存22向外執(zhí)行該指令時都進(jìn)行BTA/BIA比較。最后,本發(fā)明通過消除下一條指令的計算和選擇的關(guān)鍵路徑的BTA/BIA比較實(shí)現(xiàn)上述功率節(jié)省,而不影響機(jī)器周期時間。預(yù)解碼器21在流水線式處理器10中的使用是眾所周知的。通過在主存儲器32訪問指令時對指令進(jìn)行檢查可進(jìn)行某些初步的解碼操作,且可將所得到的關(guān)于該指令的某些信息與指令一起存儲在指令高速緩存22內(nèi)。在隨后將指令提取到流水線12內(nèi)且對其進(jìn)行解碼時,預(yù)解碼信息可通過卸載某些指令解碼任務(wù)來實(shí)現(xiàn)解碼器的簡化。在本發(fā)明的一個實(shí)施例中,指令預(yù)解碼器21計算轉(zhuǎn)移目標(biāo)地址可根據(jù)轉(zhuǎn)移指令地址及/或轉(zhuǎn)移指令本身來確定的轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址或BTA。預(yù)解碼器21將BTA與轉(zhuǎn)移指令地址或BIA進(jìn)行比較,并將"轉(zhuǎn)移目標(biāo)相同頁"位46(BTSP)與轉(zhuǎn)移指令一起存儲在指令高速緩存22內(nèi),且可能存儲其他預(yù)解碼信息44。在轉(zhuǎn)移指令隨后由指令高速緩存22提取且執(zhí)行(通常多次)時,BTSP位46抑制ITLB24且排除ITLB24先前提供的許可信息的更新。轉(zhuǎn)移目標(biāo)地址可根據(jù)轉(zhuǎn)移指令地址及/或轉(zhuǎn)移指令本身來確定的轉(zhuǎn)移指令包括程序計數(shù)器(PC)相對轉(zhuǎn)移和絕對地址轉(zhuǎn)移。PC-相對轉(zhuǎn)移指令包括轉(zhuǎn)移位移(BDSP)字段一其為轉(zhuǎn)移指令本身的部分。PC-相對轉(zhuǎn)移指令的BTA通過將BDSP與轉(zhuǎn)移指令的BIA相加來計算。艮口,BTA=BIA+BDSP(1)絕對地址轉(zhuǎn)移包含一個字段內(nèi)的轉(zhuǎn)移目標(biāo)地址部分,所述字段是指令本身的一部分。通常需要將該字段擴(kuò)展到地址總線的尺寸,然后將其與地址總線對齊,以產(chǎn)生BTA。圖2以功能性方塊圖的形式描繪指令高速緩存22、ITLB24和處理器10的部分流水線12的細(xì)節(jié)。當(dāng)在指令高速緩存22內(nèi)出現(xiàn)指令提取未命中且從主存儲器32找回指令時(見圖1),預(yù)解碼器21可在將指令置于指令高速緩存22內(nèi)之前部分地解碼該指令。預(yù)解碼器可預(yù)解碼包含在行填充緩沖器40內(nèi)的一組指令。預(yù)解碼器21還可自LFA寄存器42接收行填充地址。這些寄存器可構(gòu)成存儲器接口30的一部分(見圖1。)預(yù)解碼器21為所述領(lǐng)域的技術(shù)人員所知。預(yù)解碼器部分地解碼指令,并可將關(guān)于指令的部分解碼信息置于指令高速緩存22內(nèi),如預(yù)解碼位44所示。預(yù)解碼信息可包括(例如)可變長度指令的長度。預(yù)解碼位44協(xié)助流水線12中的解碼邏輯48將指令完全解碼。根據(jù)本發(fā)明的一個實(shí)施例,在預(yù)解碼器21中計算PC-相對或絕對地址轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址(BTA),并將其與轉(zhuǎn)移指令的轉(zhuǎn)移指令地址(BIA)進(jìn)行比較??筛鶕?jù)以下方程式由行填充地址(LFA)和轉(zhuǎn)移行索引(BLI)或轉(zhuǎn)移指令相對于高速緩存行的偏移(例如行填充緩沖器的內(nèi)容)來計算BIA:BIA=LFA+BLI(2)預(yù)解碼器21還自PC-相對轉(zhuǎn)移指令提取轉(zhuǎn)移位移(BDSP),并根據(jù)方程式(1)計算BTA,或根據(jù)指令本身內(nèi)的用于絕對地址轉(zhuǎn)移的字段形成BTA。然后通過比較BTA和BIA的包括頁號的部分來判斷BTA和BIA是否位于相同的存儲器頁內(nèi)。例如,在頁尺寸為4K的32位存儲器系統(tǒng)中,頁號包括高20位(見表I)??衫靡韵路匠淌絹泶_定轉(zhuǎn)移目標(biāo)相同頁(BTSP)位(或可賦予其相反的含意)如果(BTA[32:12]==BIA[32:12])貝廿BTSP二1;否貝ljBTSP=0(3)表示方程式(3)的一種硬件描述語言為BTSP=~I(BTA[32:12]-BIA[32:12])(4)即,當(dāng)頁號的數(shù)字差值為零時,頁號相等。在方程式(4)中利用歸約-OR運(yùn)算和逆運(yùn)算來描繪零檢測。預(yù)解碼器21將BTSP位46與Pq-相對或絕對地址轉(zhuǎn)移指令一起置于指令高速緩存22內(nèi),并將位46與該指令關(guān)聯(lián)。對于根據(jù)寄存器的內(nèi)容來獲取或計算BTA的指令(即,非PC-相對或絕對地址轉(zhuǎn)移指令),在流水線12內(nèi)實(shí)際產(chǎn)生BTA的執(zhí)行階段之前,無法得知關(guān)于BTA的任何情況。相應(yīng)地,對于非PC-相對或絕對地址轉(zhuǎn)移指令,預(yù)解碼器21可強(qiáng)制BTSP位46指示頁跨越,如果轉(zhuǎn)移評價為進(jìn)行且己提取轉(zhuǎn)移目標(biāo)指令,則預(yù)解碼器21強(qiáng)制BTSP位46指示頁跨越將產(chǎn)生ITLB24訪問。由此確保檢驗此類轉(zhuǎn)移的訪問許可。當(dāng)從指令高速緩存22提取PC-相對或絕對地址轉(zhuǎn)移指令時,也提取其關(guān)聯(lián)的BTSP位46,并存儲在例如解碼管道階段鎖存器50內(nèi)。BTSP位46隨后當(dāng)在提取目標(biāo)地址時將BTA提供給ITLB24時,例如在啟動輸入端處抑制ITLB24。解碼鎖存器50內(nèi)跟隨在BTSP位46之后的斷行指示在運(yùn)行中,BTSP位46隨轉(zhuǎn)移指令流下流水線,且實(shí)際在執(zhí)行管道階段呈現(xiàn)給ITLB24啟動輸入。流水線12的具體構(gòu)架與本論述無關(guān),且因此在圖2中省略了流水線12的進(jìn)一步的階段的細(xì)節(jié)。除抑制ITLB24之夕卜,BTSP位46還阻止XLT鎖存器52的更新,XLT鎖存器52存儲自ITLB24輸出的屬性。因此,轉(zhuǎn)移目標(biāo)指令提取將使用先前鎖存的相同屬性,其對應(yīng)于位于相同存儲器頁內(nèi)的先前指令的屬性。圖2描繪虛擬地址VA[32:0],虛擬地址VA[32:0]索引ITLB24和指令高速緩存22二者。對于以虛擬方式進(jìn)行索引和標(biāo)記的指令高速緩存22,情況是這樣。或者,可以物理方式對指令高速緩存22進(jìn)行索引和標(biāo)記,在這種情況下,ITLB24將虛擬地址轉(zhuǎn)換為物理地址PA[32:0],并將所述物理地址提供給指令高速緩存22,如圖2中的虛線所示。作為另一個替代方案,在以虛擬方式對高速緩存22進(jìn)行索引且以物理方式對其進(jìn)行標(biāo)記的情況下,可存在兩個地址路徑。通過如下所述的多種方法節(jié)省功率在預(yù)解碼器21內(nèi)執(zhí)行用于PC-相對或絕對地址轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址產(chǎn)生,并執(zhí)行與轉(zhuǎn)移指令地址的頁比較;并將結(jié)果存儲在指令高速緩存22內(nèi)。首先,在自與轉(zhuǎn)移指令本身相同的頁提取轉(zhuǎn)移目標(biāo)指令時,不需要訪問1TLB24來進(jìn)行許可驗證。其次,用于執(zhí)行計算的功率僅消耗一次。將結(jié)果存儲在指令高速緩存22內(nèi)的BTSP位46內(nèi),以在每次執(zhí)行指令時都檢索該BTSP位46。由于對于指令高速緩存來說,高達(dá)90%的點(diǎn)擊率是常見的,因此有可能PC-相對和絕對地址轉(zhuǎn)移指令將執(zhí)行多次。相對于在每次執(zhí)行指令時均進(jìn)行計算,存儲單次計算的結(jié)果意味著顯著的功率節(jié)省。事實(shí)上,由于轉(zhuǎn)移指令從高速緩存向外執(zhí)行多次,因此即使在預(yù)解碼器22內(nèi)執(zhí)行地址產(chǎn)生和比較需要多個周期,該過程仍然會實(shí)現(xiàn)顯著的功率節(jié)省。最后,從轉(zhuǎn)移目標(biāo)地址產(chǎn)生和選擇的關(guān)鍵路徑中消除BTA和BIA比較,由此通過允許較短的周期時間來改善性能。所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,處理器10僅為代表性處理器。存在處理器構(gòu)架和設(shè)計的廣泛變體,且可在本發(fā)明的范圍內(nèi)進(jìn)行大量的變化。例如,可將指令高速緩存22和數(shù)據(jù)高速緩存26組合或聯(lián)合成單個髙速緩存。或者,可使用一個或多個附加高速緩存,所述一個或多個附加高速緩存可分層或與高速緩存22、26呈對等關(guān)系。類似地,可將ITLB24與TLB28組合,或處理器可使用數(shù)據(jù)側(cè)DTLB。盡管在本文中參照本發(fā)明的某些特征、方面和實(shí)施例對本發(fā)明進(jìn)行了描述,但是顯而易見的是,在本發(fā)明的廣泛范圍內(nèi)可實(shí)現(xiàn)大量的變化、修改和其他實(shí)施例,且相應(yīng)地,所有的變化、修改和實(shí)施例均視為屬于本發(fā)明的范圍。因此,在任何方面均應(yīng)將所呈現(xiàn)的實(shí)施例理解為描述性實(shí)施例而非限制性實(shí)施例,且包含在所追加的權(quán)利要求的含義和等效范圍內(nèi)的所有改變均涵蓋在所追加的權(quán)利要求范圍內(nèi)。權(quán)利要求1、一種降低流水線式處理器內(nèi)的功率消耗的方法,其包括在對流水線內(nèi)的PC-相對或絕對地址轉(zhuǎn)移指令進(jìn)行解碼之前,檢測所述轉(zhuǎn)移指令的目標(biāo)地址是與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi);及響應(yīng)于所述檢測,在自所述目標(biāo)地址提取指令時,抑制TLB訪問。2、如權(quán)利要求1所述的方法,其中檢測PC-相對或絕對轉(zhuǎn)移指令的所述目標(biāo)地址是與所述轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)包括在將所述轉(zhuǎn)移指令置于高速緩存內(nèi)之前檢測所述相同頁狀態(tài)。3、如權(quán)利要求2所述的方法,其中所述高速緩存包括與所述轉(zhuǎn)移指令相關(guān)聯(lián)的轉(zhuǎn)移目標(biāo)相同頁位,所述轉(zhuǎn)移目標(biāo)相同頁位指示所述相同頁狀態(tài)。4、如權(quán)利要求3所述的方法,其中響應(yīng)于所述檢測在自所述目標(biāo)地址提取指令時抑制TLB訪問包括響應(yīng)于所述轉(zhuǎn)移目標(biāo)相同頁位,在提取所述指令時禁用所述TLB。5、如權(quán)利要求4所述的方法,其進(jìn)一步包括響應(yīng)于所述轉(zhuǎn)移目標(biāo)相同頁位禁止對保存所述TLB的前一輸出的寄存器進(jìn)行更新。6、如權(quán)利要求1所述的方法,其中檢測PC-相對或絕對地址轉(zhuǎn)移指令的所述目標(biāo)地址是與所述轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)包括計算所述轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址;將所述轉(zhuǎn)移目標(biāo)地址的頁號部分與所述轉(zhuǎn)移指令地址的對應(yīng)的頁號部分進(jìn)行比較;及在所述轉(zhuǎn)移目標(biāo)地址與所述轉(zhuǎn)移指令地址的頁號部分相同時,檢測相同頁狀態(tài)。7、如權(quán)利要求6所述的方法,其中在所述轉(zhuǎn)移目標(biāo)地址與所述轉(zhuǎn)移指令地址的頁號部分相同時檢測相同頁狀態(tài)包括將一個所述頁號部分從另一個中減去,且對結(jié)果進(jìn)行規(guī)約OR和逆運(yùn)算。8、如權(quán)利要求6所述的方法,其中計算所述轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址包括將轉(zhuǎn)移位移加至所述轉(zhuǎn)移指令地址。9、如權(quán)利要求6所述的方法,其中計算所述轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址包括自所述轉(zhuǎn)移指令抽取所述轉(zhuǎn)移目標(biāo)地址的一部分。10、如權(quán)利要求9所述的方法,其進(jìn)一步包括擴(kuò)展所述轉(zhuǎn)移目標(biāo)地址并將其與地址總線對齊。11、如權(quán)利要求6所述的方法,其中計算所述轉(zhuǎn)移指令的轉(zhuǎn)移指令地址包括將轉(zhuǎn)移行索弓I加至行填充地址。12、一種降低處理器的功率消耗的方法,其包括檢測PC-相對或絕對地址轉(zhuǎn)移指令的目標(biāo)地址是與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi);存儲所述檢測的指示符;響應(yīng)于所述指示符,在所述轉(zhuǎn)移指令的第一次執(zhí)行期間,在提取所述目標(biāo)地址時抑制TLB訪問;及響應(yīng)于所述指示符,在所述轉(zhuǎn)移指令的第二次執(zhí)行期間,在提取所述目標(biāo)地址時抑制TLB訪問。13、如權(quán)利要求12所述的方法,其進(jìn)一步包括將所述轉(zhuǎn)移指令存儲在高速緩存內(nèi)。14、如權(quán)利要求13所述的方法,其中存儲所述檢測的指示符包括將與所述轉(zhuǎn)移指令相關(guān)聯(lián)的轉(zhuǎn)移目標(biāo)相同頁位存儲在所述高速緩存內(nèi)。15、如權(quán)利要求14所述的方法,其進(jìn)一步包括在所述轉(zhuǎn)移指令的所述第二次執(zhí)行之前,自所述高速緩存讀取所述轉(zhuǎn)移指令和所述轉(zhuǎn)移目標(biāo)相同頁位。16、一種處理器,其包括-頁駐留檢測邏輯,其產(chǎn)生對于PC-相對或絕對地址轉(zhuǎn)移指令的目標(biāo)地址是與轉(zhuǎn)移指令地址位于相同的存儲器頁內(nèi)的指示;存儲器,其存儲所述指示;及TLB,其在指令提取時產(chǎn)生存儲器訪問許可信息,在執(zhí)行所述轉(zhuǎn)移指令時,在提取位于所述目標(biāo)地址的指令時響應(yīng)于所述指示抑制所述TLB。17、如權(quán)利要求16所述的處理器,其進(jìn)一步包括高速緩存,其存儲所述轉(zhuǎn)移指令和與所述轉(zhuǎn)移指令相關(guān)聯(lián)的所述指示;及指令執(zhí)行流水線,其自所述高速緩存提取所述轉(zhuǎn)移指令和所述指示,并執(zhí)行所述轉(zhuǎn)移指令。18、一種處理器,其包括存儲器接口,其訪問所述處理器外部的存儲器,所述存儲器組織為邏輯頁;高速緩沖存儲器,其與所述存儲器接口為數(shù)據(jù)傳送關(guān)系,所述高速緩沖存儲器存儲指令;及預(yù)解碼器,其夾置于所述存儲器接口與所述高速緩沖存儲器之間,所述預(yù)解碼器在將所述指令存儲于所述高速緩沖存儲器內(nèi)之前計算PC-相對或絕對地址轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址。19、如權(quán)利要求18所述的處理器,其中所述預(yù)解碼器另外將所述轉(zhuǎn)移目標(biāo)地址的至少一部分與所述PC-相對或絕對地址轉(zhuǎn)移指令的地址的至少一部分進(jìn)行比較,以確定所述地址是否位于相同的存儲器頁內(nèi)。20、如權(quán)利要求19所述的處理器,其中所述預(yù)解碼器存儲轉(zhuǎn)移目標(biāo)相同頁位,所述轉(zhuǎn)移目標(biāo)相同頁位指示所述地址是否位于所述高速緩沖存儲器內(nèi)的相同存儲器頁內(nèi),所述位與所述PC-相對或絕對地址轉(zhuǎn)移指令相關(guān)聯(lián)。21、如權(quán)利要求20所述的處理器,其進(jìn)一步包括指令執(zhí)行流水線,以自所述高速緩沖存儲器讀取PC-相對或絕對地址轉(zhuǎn)移指令及其關(guān)聯(lián)的轉(zhuǎn)移目標(biāo)相同頁位。22、如權(quán)利要求21所述的處理器,其進(jìn)一步包括轉(zhuǎn)換后備緩沖器(TLB)以管理所述存儲器頁的許可屬性,且其中在執(zhí)行所述PC-相對或絕對地址轉(zhuǎn)移指令期間,當(dāng)在所述轉(zhuǎn)移目標(biāo)地址處提取指令時,響應(yīng)于所述轉(zhuǎn)移目標(biāo)相同頁位有選擇地抑制對所述TLB的許可屬性-檢驗訪問。全文摘要在流水線式處理器中,位于指令高速緩存之前的預(yù)解碼器計算PC-相對和絕對地址轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址(BTA)。所述預(yù)解碼器將BTA與轉(zhuǎn)移指令地址(BIA)進(jìn)行比較,以確定目標(biāo)與指令是否位于相同的存儲器頁內(nèi)。將對此進(jìn)行指示的轉(zhuǎn)移目標(biāo)相同頁(BTSP)位寫入高速緩存中并將其與所述指令關(guān)聯(lián)。在所述轉(zhuǎn)移得到執(zhí)行且評價為進(jìn)行轉(zhuǎn)移時,如果BTSP位指示BTA與BIA位于相同的頁內(nèi),則抑制對BTA的許可屬性進(jìn)行檢驗的TLB訪問。由于抑制TLB訪問且BTA/BIA比較僅在第一次提取轉(zhuǎn)移指令時執(zhí)行一次,因此這會降低功率消耗。另外,預(yù)解碼器會從BTA產(chǎn)生和選擇關(guān)鍵路徑中消除BTA/BIA比較。文檔編號G06F12/10GK101111819SQ200580047283公開日2008年1月23日申請日期2005年11月17日優(yōu)先權(quán)日2004年12月2日發(fā)明者布賴恩·邁克爾·斯坦普爾,托馬斯·安德魯·薩托里烏斯,羅德尼·韋恩·史密斯,詹姆斯·諾里斯·迪芬德爾費(fèi)爾申請人:高通股份有限公司