TWI502347B - 分支預測功率縮減 - Google Patents

分支預測功率縮減 Download PDF

Info

Publication number
TWI502347B
TWI502347B TW102114411A TW102114411A TWI502347B TW I502347 B TWI502347 B TW I502347B TW 102114411 A TW102114411 A TW 102114411A TW 102114411 A TW102114411 A TW 102114411A TW I502347 B TWI502347 B TW I502347B
Authority
TW
Taiwan
Prior art keywords
branch
instruction
cache
prediction unit
branch prediction
Prior art date
Application number
TW102114411A
Other languages
English (en)
Other versions
TW201405310A (zh
Inventor
Aneesh Aggarwal
Ross Segelken
Kevin Koschoreck
Paul Wasson
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201405310A publication Critical patent/TW201405310A/zh
Application granted granted Critical
Publication of TWI502347B publication Critical patent/TWI502347B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

分支預測功率縮減
本發明係關於微處理器中分支預測功率縮減。
微處理器通常運用一分支預測單元,做出指令執行期間是否將採用一分支指令之預測,並且預測一預測採用(predicted-taken)分支的目標。該分支預測改善流動並且減少在指令管線內形成氣泡(bubbles)的可能性。尤其是利用一分支預測,該微處理器不必等待到一分支指令已經通過該管線的執行階段,下一個指令就可進入該管線的擷取階段。該分支預測單元預測一附條件的跳躍(conditional jump)是否最有可能採用或不採用,然後擷取並推測執行該分支預測目標上的該等指令。若該分支預測正確,該指令管線繼續執行指令,而降低在該管線內產生氣泡的可能性,並且提高該管線的效能。在另一方面,若該分支預測不正確,則忽略該推測執行或部分執行的指令,並且該管線以正確分支目標重新開始,而有所延遲。
在一個範例實施當中,當已經執行一指令擷取時,一分支預測單元與一指令快取同時啟動。針對已經從該指令快取擷取的該指令資料,啟動該分支預測單元來查找一分支預測。換言之,每次查找該指令快取內的指令資料時,也會啟動該分支預測單元。
不過,此種控制該分支預測單元的方式具有許多限制,例如:在先前已經從一指令快取擷取的一快取線上執行該指令擷取之情況下,而 該擷取的指令資料並未包含分支,則因為該指令資料並未包含一分支指令,所以會浪費在該分支預測單元內查找該分支預測所耗用的電力。換言之,在此方式中該分支預測單元會在每次指令擷取操作期間啟動,而不管該擷取的指令資料是否包含一分支指令。因此,在啟動該分支預測單元對不含一分支指令的指令資料進行指令擷取時,此種控制該分支預測單元的方式產生不必要的功率消耗。
本發明揭示控制一微處理器的一分支預測單元之創新系統及方法,其可在未顯著降低該微處理器效能之下減少功率消耗。尤其是,本發明係關於利用追蹤先前擷取的指令資料是否儲存在包含任何分支的一指令快取內,最佳化控制一分支預測單元來降低耗電量。例如:當之前已經從該指令快取擷取一指令時,則在該微處理器的該處理管線內一點上,驗證該指令包含一分支指令或未包含一分支指令。此追蹤資訊可儲存在該指令快取內,並且用於在稍後從該指令快取擷取該指令期間控制該分支預測單元。尤其是,當從該指令快取擷取未包含分支指令的先前擷取快取線時,該分支預測單元的電源關閉(或維持在電源關閉狀態)。因此,則可降低該分支預測單元不必要的啟動。如此,相較於每次從該指令快取擷取一指令時一分支預測單元都會啟動,可降低功率消耗。
更進一步,該追蹤資訊可儲存在該分支預測單元內,並且用於決定在一採用分支目標位址上的一快取線是否包含一分支指令。例如:當該分支預測單元預測發生一採用分支,而發生了該目標位址的重新導向(redirection),則該追蹤資訊可用來控制該分支預測單元,讓該初始指令在該重新導向之後擷取。尤其是,若在該重新導向之後的該初始快取線未包含分支指令時,該分支預測單元的電源關閉(或維持在電源關閉狀態)。若不啟動該分支預測單元且接在該重新導向之後的該相關指令內無分支,則相 對於每次從該指令快取擷取一指令時都會啟動該分支預測單元的方式,可在不影響效能之下節省電力。
再者,利用追蹤目標指令是否包含分支資訊,則在可從該指令快取獲得資訊之前,就在一重新導向之後該分支預測單元立刻可選擇關閉電源(或維持在電源關閉狀態)。因此,即使就在一重新導向之後的一或多個時脈週期期間,還是可降低功率消耗。相較之下,若只根據儲存在該指令快取內的該追蹤資訊控制該分支預測單元,則在該重新導向之後會產生控制上的延遲,同時等待來自該指令快取的該追蹤資訊。
100‧‧‧微處理器
110‧‧‧記憶體階層
112‧‧‧L1處理器快取
114‧‧‧L2處理器快取
116‧‧‧L3處理器快取
118‧‧‧主要記憶體
120‧‧‧次要儲存體
122‧‧‧第三儲存體
124‧‧‧記憶體控制器
126‧‧‧擷取邏輯
128‧‧‧解碼邏輯
130‧‧‧執行邏輯
132‧‧‧記憶邏輯
134‧‧‧寫回邏輯
200‧‧‧處理管線
202‧‧‧程式計數器
204‧‧‧指令記憶體
206‧‧‧指令快取
208‧‧‧LRU陣列
212‧‧‧標籤陣列
214‧‧‧資料陣列
216‧‧‧快取控制器
218‧‧‧較高等級記憶體儲存體
218‧‧‧較高等級記憶體儲存介面
218‧‧‧主要記憶體
220‧‧‧分支預測單元
222‧‧‧分支資訊緩衝區
224‧‧‧分支目標緩衝區
226‧‧‧分支存在位元
228‧‧‧間接目標緩衝區
230‧‧‧條件方向預測器
232‧‧‧分支控制器
234‧‧‧分支預測驗證單元
302‧‧‧快取線
304‧‧‧快取線集合
306‧‧‧LRU位元
308‧‧‧分支存在位元
310‧‧‧標籤位元
312‧‧‧資料位元
400‧‧‧重新導向
402‧‧‧快取線
404‧‧‧分支指令
圖1顯示根據本發明的計算裝置之微處理器具體實施例。
圖2顯示根據本發明的電腦處理管線之具體實施例。
圖3圖解顯示一指令快取具體實施例的一部分。
圖4顯示一快取線中間發生重新導向之案例。
圖5至圖10顯示一微處理器控制方法之具體實施例。
圖11顯示根據本發明的範例分支預測單元操作之時間軸。
圖1圖解說明可與本說明書中所述系統及方法結合利用的微處理器100。微處理器100可包含一記憶體階層110及/或與之通訊,而該階層可包含一L1處理器快取112、一L2處理器快取114、一L3處理器快取116、主要記憶體118(例如一或多個DRAM晶片)、次要儲存體120(例如磁性及/或光學儲存單元)及/或第三儲存體122(例如一磁帶庫)。吾人將了解,這些記憶體/儲存體組件都以存取時間與容量遞增的順序列出,不過可以有例外。一記憶體控制器124掌控該通訊協定,並且提供主要記憶體118所需的信號介面,並且通常用於排定記憶體存取。在該處理器晶粒上或一 個別晶粒上可實施該記憶體控制器。吾人要瞭解,上面提供的該記憶體階層並無限制,並且在不背離本發明範疇之下可使用其他記憶體階層。該描述的記憶體階層為示範例示,並且吾人將了解在不背離本發明精神之下可使用其他階層。
微處理器100包含擷取邏輯126、解碼邏輯128、執行邏輯130、記憶邏輯132以及寫回邏輯134。擷取邏輯126與指令記憶體互動,從該記憶體階層110取得指令(通常來自由L2-L3快取以及主要記憶體構成的專屬L1指令快取)。操作上與擷取邏輯126耦合的一分支預測單元220(顯示於圖2內)選擇性提供從指令快取206擷取的指令之分支預測。分支預測單元220可根據本說明書內描述的系統及方法來控制,以便在執行指令擷取操作以及其他操作時,降低微處理器100的功率消耗。
解碼邏輯128將擷取的指令解碼,例如利用解析運算碼(parsing opcodes)、運算元(operands)以及定址模式。一旦被解析之後,該等指令由執行邏輯130執行。針對產生一結果的操作(例如相對於執行一分支至該執行程式內另一個位置的操作),寫回邏輯134將該結果寫至適當位置,例如一處理器暫存器。在載入/儲存架構中,記憶邏輯132執行載入與儲存操作,例如從主要記憶體將一運算元載入一處理器暫存器。
吾人應該了解,上面五種階段有時指定給並且包含在一典型的精簡指令集計算(RISC,reduced instruction set computing)實施之內。尤其是,一微處理器可包含擷取、解碼以及執行邏輯,而由該執行邏輯執行記憶與寫回功能。本發明同樣適用於這些與其他微處理器實施。
在描述的範例中,可一次擷取並執行一個指令,不過可能需要多個時脈週期。在此期間,可能並未使用到資料路徑的具體部分。除了或取代單一指令擷取,可使用預先擷取方法來改善效能,並且避免讀取與儲存操作伴隨的潛伏瓶頸(即是指令的讀取以及載入這種指令進入處理器暫存器及/或執行佇列)。再者,在任何已知時間上可擷取多個指令來改善效 能。
為了達成較高效能,該等示範微處理器可管線化以利用指令等級並行處理,並且更有效率運用該資料路徑,如此同時在不同執行階段內有多個指令。圖2顯示處理管線200的具體實施例,可利用在根據本發明的微處理器100內(顯示於圖1內)。尤其是,圖2聚焦在處理管線200的一部分指令擷取(IF,instruction fetch)階段126上。本發明聚焦在指令擷取操作期間控制IF階段126內的組件,以便降低該處理管線的功率消耗。IF階段126包含一程式計數器202,持續追蹤要以處理管線200指令順序執行的一指令之記憶體位址。程式計數器202將要執行的指令之位址傳送至一指令記憶體204和一分支預測單元220。指令記憶體204包含一指令快取206和至較高等級記憶體儲存體218(例如較高等級快取以及其他記憶體子系統)的介面。請注意,該指令記憶體與分支預測單元係以簡化形式呈現,並且吾人將了解,這些邏輯單元可額外或另外包含許多其他結構與可能的多管線階段。例如在某些具體實施例內,該指令記憶體可包含晶片上記憶體,其中包含位於一處理器核心上的許多快取。進一步,一較高等級記憶體介面可與非晶片上記憶體互動,例如不在該處理器核心上的主要記憶體,以從主要記憶體或其他非晶片上儲存體,將指令資料載入該指令記憶體。
指令快取206作為較高等級記憶體儲存介面218與處理管線200的階段間之一緩衝記憶體。當指令被擷取時,由該等指令所要求位置上(參照程式計數器202位置)的資料,被複製到指令快取206以待被經由處理管線200傳送。若在一組程式指令內經常使用該相同的指令資料,則將這些指令儲存在指令快取206內可提高產量(throughput),因為減少透過介面218從較高等級記憶體儲存體擷取指令。若一指令的資料並未儲存在指令快取206內,則透過介面218存取較高等級記憶體儲存體來擷取該資料。
圖3顯示一部分指令快取206,並且本說明書將參照來討論指令快取206。指令快取206包含一記憶體空間,該空間分成複數個稱為快 取線的記憶體位置,如標號302所示。在一個特定範例中,每一快取線都為六十四位元組。該等複數個快取線在邏輯上區分成複數個快取線集合,如標號304所示。在一個特定範例中,該指令快取包含512個快取線集合,圖3內顯示其中四個(即集合N-N+3)。吾人將了解,該指令快取可包含任何合適數量的快取線集合,每一快取線都可為任何合適大小,並且在不背離本發明範疇之下可改變該等快取線。
快取線集合內快取線的數量可定義該指令快取內可映射主要記憶體內任何特定位置的位置數量。在例示的範例中,該指令快取包含一四通道集合相關陣列,其中每一組快取線都相關聯,並且包含可儲存指令資料的四個通道。吾人將了解,在不背離本發明範疇之下,該指令快取可包含一快取線集合內任何合適數量的通道(way)或資料位置(例如雙通道、八通道、完整相關聯等等)。
指令快取206的每一快取線分成不同位元欄位,提供不同資訊。LRU位元306指示一快取線集合內最近最少用(或已存取)通道。分支存在位元(presence bit)308提供一分支存在指示,指出一快取線集合內最近最常用通道是否包含一分支指令。請注意,該等分支存在位元依照集合方式(per-set basis)實施,以便降低儲存需求。不過,吾人將了解,在不背離本發明範疇之下,該等分支存在位元可依照快取線方式(per-cacheline basis)實施或當成另一個合適的分支存在指示。在一個特定範例中,該等分支存在位元設定成指出最近最常用通道內儲存的指令資料包含一分支指令,而該等分支存在位元被清空以指出一最近最常用通道內儲存的指令資料不包含一分支指令。標籤位元310識別一指定通道,其中儲存對應至該位址的指令位元組。資料位元312儲存對應至該位址的該指令位元組。在例示的範例中,每一快取線的資料位元312都分成下半段以及上半段,因為若有命中時,讀取該指令快取的每一指令擷取都取得一資料快取線的一半。吾人將了解,在不背離本發明範疇之下,在一指令擷取讀取期間可取得任何合 適的資料量。
每一快取線的不同位元欄位組織成不同陣列,由快取控制器216控制。尤其是,指令快取206包含一LRU陣列208、一標籤陣列212以及一資料陣列214。LRU陣列208包含用於指令快取206內每一快取線集合的LRU位元306以及存在位元308。標籤陣列212包含用於指令快取206內每一快取線的標籤位元310。資料陣列214包含用於指令快取206內每一快取線的資料位元312。請注意,在不背離本發明範疇之下,該等分支存在位元應該儲存在任何合適的指令快取陣列或其他位置內。
快取控制器216在整個指令擷取操作內,查找(又名存取或啟動)任何LRU陣列208、標籤陣列212及/或資料陣列214內任何指定位置以取得該對應位元。吾人將了解,以簡化形式提供該指令快取,並且在某些實施例當中,在不背離本發明範疇之下,該指令快取可包含保存額外資料的替代或額外陣列結構。請注意,在某些實施例當中,指令快取206的預設狀態為電源關閉狀態(power-down date)或關閉狀態(off state),並且快取控制器216選擇性開啟該指令快取電源,或更特別是開啟該指令快取內的陣列來查找資料。
分支預測單元220在處理管線200內執行一分支指令時,預測是否將採用一分支。分支預測單元220包含預測結構,其儲存一狀態用來預測該擷取資料內分支的存在與方向。分支預測單元220的預測結構可與指令快取206的陣列平行啟動。分支預測單元220提供所有分支的存在性與方向之預測,以及從指令快取206擷取的該指令資料內第一採用分支之目標。該分支預測由分支預測單元220在指令快取206產生該擷取指令資料的相同管線階段(或時脈週期)內產生,假設一快取命中。在一個特定範例中,指令快取206和分支預測單元220採用從查找/開啟開始的兩個時脈週期,來傳遞該指令資料/分支預測。請注意,並不需要同時存取分支預測單元220和指令快取206。吾人將了解,在不背離本發明範疇之下,可使用 任何合適的處理管線組態。
在例示的具體實施例內,分支預測單元220包含預測結構,該結構包含一分支資訊緩衝區222、一分支目標緩衝區224、一間接目標緩衝區228以及一條件方向預測器230。分支控制器232控制這些結構的操作,做出一分支預測。尤其是,分支控制器232根據本說明書所述的控制策略,命令這些結構開啟或關閉,以便降低功率消耗。請注意,在某些實施當中,分支預測單元220的預設狀態為電源關閉狀態或關閉狀態,並且分支控制器232選擇性開啟該分支預測單元,或更特別是開啟該分支預測單元內的預測結構來查找資料。
分支資訊緩衝區(BIB,branch information buffer)222儲存一位置以及儲存在一已知位址、地點、通道等等上的分支類型。可儲存在分支資訊緩衝區222內的不同分支類型之範例包含直接、間接、附條件、無條件等等。分支控制器232可查找分支資訊緩衝區222,產生一分支預測給從指令快取206擷取的一指令。分支目標緩衝區(BTB,branch target buffer)224儲存已採用的直接分支之目標位址。分支目標緩衝區224包含分支存在位元226,將對應至分支目標緩衝區224內每一目標位址的一分支存在指示特徵化。分支存在位元226指出儲存在一目標位址上的指令資料是否包含一分支指令。分支控制器232可使用分支存在位元226,針對一重新導向之後的指令擷取決定是否開啟或關閉分支預測單元220的結構。間接目標緩衝區(ITB,indirect target buffer)228儲存已採用的間接分支之目標位址。雖然例示的具體實施例顯示分支存在位元226儲存在分支目標緩衝區224內,不過在某些具體實施例內,分支存在位元226可額外儲存在間接目標緩衝區228內,或分支預測單元220中任何其他合適結構內。因此,分支控制器232可啟動許多預測結構,以查找該分支存在位元以及該分支預測。條件方向預測器(CDP,conditional direction predictor)230儲存用於條件分支的一預測方向(例如採用/不採用)。吾人將了解,以簡化形式提供該分支預測 單元,並且在某些實施當中,在不背離本發明範疇之下,該分支預測單元可包含保存額外資料的替代或額外結構。請注意,分支存在位元226保存在分支預測單元220內,與保存在指令快取206內的分支存在位元308分開。分支預測單元220可使用分支存在位元226,在由於重新導向而無法從指令快取208獲得分支存在位元308時,決定一分支目標位址上的指令資料是否包含一分支指令。
回到在高等級上指令快取的討論,在一指令擷取操作期間,當程式計數器202起始一指令擷取要求,快取控制器216根據接收自程式計數器202的位址,決定可儲存一指令的一快取線集合。在一個範例中,快取控制器216啟動該快取線集合的標籤陣列212以及資料陣列214中所有四個通道,以決定在該快取線集合內是否命中或未命中。請注意在某些實施當中,快取控制器216並行啟動標籤陣列212和資料陣列214,來查找該快取線集合的該等標籤與資料。針對快取命中,快取控制器216將來自指令快取206的該指令輸出至該處理管線中指令解碼階段128內的一暫存器。在一快取命中之後的後續時脈週期內,快取控制器216擷取來自該指令快取內依序項目的指令,直到發生一管線閒置或直到因為一分支或事件所造成的重新導向。
在一個範例中,快取控制器216根據LRU位元306,決定一指定快取線集合內最近最常用(MRU,most-recently-used)通道。快取控制器216可使用該最近最常用通道,決定已經針對分支預測產生目的擷取哪個指令資料。吾人將了解,在不背離本發明範疇之下,該快取控制器可用任何合適的方式,決定一快取線集合內最近最常用通道。
在一個範例實施當中,快取控制器216在一個時脈週期內,查找LRU陣列208的單一讀取操作內四個連續快取線集合之LRU位元。換言之,一個LRU位元的查找識別出四個快取線集合內最近最少用通道。快取線集合對應至該讀取操作的數量係根據該指令快取的實施,尤其是用 於描述快取線集合內通道以及一快取線大小的LRU位元數量。吾人將了解,在不背離本發明範疇之下,可從單一讀取操作中回傳任何合適快取線集合數量的LRU位元。
LRU陣列208的組織可使得多次依序擷取的資訊從該LRU陣列的一次查找中被儲存。此資料可用於分支預測單元220的控制策略,在不含一分支指令的指令擷取期間選擇性停止啟動分支預測單元220。在一個範例中,LRU陣列208包含用於指令快取206內每一快取線集合的分支存在位元308。分支存在位元308指出,在一對應快取線集合內之一最近最常用通道是否包含一分支指令有。在例示的範例中,分支存在位元308中每一快取線集合包含兩個分支存在位元。該兩個分支存在位元每一都代表一快取線不同的資料半邊(例如每一個資料下半部與資料上半部一個位元)。分支存在位元308使用LRU位元306查找,在大多數情況下,會在一快取線集合內最近最常用通道的一依序指令擷取之前,查找該快取線集合的分支存在位元。再者,分支控制器232可使用該等分支存在位元,決定在下一個指令的一依序指令擷取上是否開啟或關閉分支預測單元220。
在一個範例中,分支控制器232從指令快取206,接收對應至一快取線集合內最近最常用通道的分支存在位元308。在來自最近最常用通道的指令資料之指令擷取期間,若該等分支存在位元指示來自該最近最常用通道的該指令資料包含一分支指令,則分支控制器232從電源關閉狀態啟動該分支預測單元,以針對該分支指令查找一分支預測。在一個範例中,分支控制器232從電源關閉狀態啟動分支資訊緩衝區222來產生該分支預測。額外地或選擇性地,分支控制器232可啟動(power up)分支預測單元220的其他結構,來產生該分支預測。若該等分支存在位元指出,來自該最近最常用通道的該指令資料不含一分支指令,則分支控制器232在該指令擷取期間讓分支預測單元220維持在電源關閉狀態。因為該等分支存在位元指出在已經擷取的該指令資料內並無分支指令,所以不需要啟動分 支預測單元220。因此,相對於每次指令擷取操作期間都會啟動該分支預測單元的方式,分支預測單元220不必要的啟動已經減少。
在某些具體實施例內,該等分支存在位元不僅指出一快取線內存在一分支,也指出該快取線內存在分支的類型。如此,該分支控制器可根據該等存在位元所指示的分支類型,確實知道該分支預測單元內哪個預測結構應該啟動或維持關閉。在一個範例中,分支控制器232根據該等分支存在位元所指示的分支指令類型,從電源關閉狀態啟動該分支預測單元內的指定預測結構。例如:若一快取線只包含一直接無條件分支,則該等分支存在位元指出應該啟動該BIB和BTB,但是關閉該ITP和CDP。就此而言,決定該等分支存在位元所能代表的程度可取決於:增加功率消耗來儲存該額外位元以描述該分支類型以及關閉非必要BPU結構來省電之權衡。
請注意在某些情況下,在為了取代該指令快取內的一通道而查找該等LRU位元之前,查找該等LRU位元讓該分支預測單元可用該分支存在位元。在此範例中,在第一依序存取新LRU資料項目之前,查找該LRU陣列兩個時脈週期。進一步,請注意在此範例中,在利用存取一個陣列來執行查找之後兩個時脈週期,資料可供使用。吾人將了解,在不背離本發明範疇之下,為了擷取資料,時脈週期的處理速度或數量可不同。
在某些具體實施例內,快取控制器216設定該等分支存在位元,從電源關閉狀態啟動分支預測單元220,以回應填入指令資料的該指令快取內的一快取線。例如:可從主要記憶體218或另一個記憶體位置取得指令資料,在該指令快取內填入一快取線。利用當該快取線原來填入指令快取206時設定該等分支存在位元,該等分支存在位元可進入一預設狀態。換言之,利用設定該等分支存在位元,分支預測單元220可在來自該快取線的該指令資料之第一與稍後擷取時啟動,直到分支預測驗證(validation)單元234可驗證該快取線內該指令資料是否包含一分支指令。
在大多數情況下,分支控制器232可使用來自指令快取206的LRU陣列208之分支存在位元308,決定指令資料是否包含一分支指令,並據此決定在該指令資料的依序指令擷取期間是否開啟或關閉分支預測單元220。尤其是,因為在該記憶體位置上該指令資料的指令擷取之前,擷取將一記憶體位置上指令資料特性化的該等分支存在位元,該等分支存在位元可用於該快取控制器以及該分支預測單元內的該分支控制器。不過在一重新導向之後的指令擷取內,分支控制器232無法使用分支存在位元308,因為要耗費一或更多時脈週期讓LRU陣列208查找變成可用。為了在一重新導向之後的該指令擷取期間控制分支預測單元220,分支存在位元226儲存在分支預測單元220的分支目標緩衝區224內(或一不同的預測結構內)。分支存在位元226指出儲存在一預測分支目標位址上的指令資料是否包含一分支指令。分支控制器232可使用存在位元226,決定一目標位址上的資料是否包含一分支指令,並據此決定在重新導向至該目標位址之後是否開啟或關閉分支預測單元220。
在一個範例中,分支控制器232預測從指令快取206擷取的一指令將採用一分支。例如:分支控制器232可利用查找分支資訊緩衝區222內的指令做出預測。進一步,該預測可包含該採用分支的目標位址以及相關聯的存在位元226,這可在分支目標緩衝區224(或在間接分支情況內的間接目標緩衝區228)內查找。若該分支目標位址的該等分支存在位元指出該目標位址上儲存的指令資料包含一分支指令,則分支控制器232啟動分支預測單元220,以查找該分支目標上已擷取指令位元組的一分支預測。
在某些具體實施例內,該等分支存在位元可指出哪種分支指令儲存在該目標位址上,並且該分支控制器根據該存在位元所指示的分支指令類型,啟動該分支預測單元內指定的預測結構(並據此將並非分支指令指示類型所需的預測結構維持在電源關閉狀態)。若該分支的目標位址之該等分支存在位元指出,該目標位址上儲存的該指令資料不含一分支指令, 則分支控制器232在該指令擷取期間讓分支預測單元220維持在電源關閉狀態。因此,相對於每次指令擷取操作期間都會啟動該分支預測單元的方式,在一重新導向之後的指令擷取期間分支預測單元220的不必要的啟動已經減少。
在某些具體實施例內,分支控制器232設定該等分支存在位元以啟動分支預測單元220,以回應已經分配至分支目標緩衝區224的新目標位址。例如:在已經執行具有一新目標位址的一分支指令之後,該目標位址可分配給該分支目標緩衝區。利用當該新目標位址原來分配給分支目標緩衝區224時設定該等分支存在位元,該等分支存在位元可進入一預設狀態。換言之,利用設定該等分支存在位元,可在第一次從該目標位址擷取該指令資料時,啟動分支預測單元220。進一步,在已經從指令快取206擷取儲存在該新目標位址上的指令資料並且已經執行一分支預測之後,分支控制器232更新分支存在位元226,根據該分支預測指出該指令資料是否包含一分支指令。
在從指令快取206擷取指令資料之後,該指令資料移動通過處理管線200。在指令擷取階段126下游處理管線200內的一階段上,分支預測驗證單元234決定該指令資料是否包含一分支指令。進一步,分支預測驗證單元234針對該指令資料驗證分支預測單元220所產生的分支預測部分。在此範例中,分支預測驗證單元234驗證該分支存在以及可由該指令位元組決定的目標。分支預測驗證單元234將該指令資料的驗證回傳至指令快取206,以更新存在位元308。因此,可更新該等存在位元,以精確反映出先前擷取的指令資料內有分支指令,如此能夠更精準控制該分支預測單元。吾人將了解,在不背離本發明範疇之下,分支預測驗證單元234可位於該處理管線的任何合適階段內。
請注意,分支預測驗證單元234係以簡化形式表示,並且在某些實施當中,該處理管線可包含多個分支預測驗證單元,驗證一分支預 測的不同部分。
在一個範例中,分支預測驗證單元234針對一分支指令存在與否驗證擷取的指令資料。若擷取的指令資料內無分支指令,則分支預測驗證單元234更新LRU陣列208內的分支存在位元308,以及分支目標緩衝區224內的分支存在位元226,以在稍後指令資料擷取期間將分支預測單元220維持在電源關閉狀態。若擷取的指令資料內有分支指令,則分支預測驗證單元234更新LRU陣列208內的分支存在位元308,以及分支目標緩衝區224內的分支存在位元226,以在稍後指令資料擷取期間從電源關閉狀態啟動分支預測單元220來查找一分支預測。請注意,更新該等分支存在位元可包含將該等分支存在位元維持在目前狀態內。例如:若該等分支存在位元設定成指出該指令資料包含一分支指令,並且該分支預測驗證單元驗證該指令資料內該分支指令存在與否,則該分支預測驗證單元可將該驗證傳送至該快取控制器與該分支控制器,並且可將該分支存在位元維持在目前狀態內。
在某些情況下,若不啟動分支預測單元220並且在擷取的指令資料內有一分支指令,則分支預測驗證單元234可發現該分支指令。在一個範例中,分支預測驗證單元234決定在一指令擷取期間是否已經啟動分支預測單元220。若由於分支預測單元220的電源已經關閉而未預測該分支指令,則分支預測驗證單元234重新擷取該分支指令。進一步,分支預測驗證單元234啟動分支預測單元220,以針對包含該分支指令的該重新擷取指令資料查找一分支預測。分支預測驗證單元234針對該重新擷取指令驗證該分支預測,並且將該分支指令的驗證傳遞至分支預測單元220。分支控制器232根據該驗證,更新存在位元226。
請參閱圖4,在某些情況下,一分支可讓一重新導向400至快取線402中間某處的一目標位址,其中在快取線402內重新導向400的點之前有一分支指令404,並且快取線402內重新導向400的點之後並無分 支。在此情況下,分支預測驗證單元234一般回報該擷取資料內並無分支至快取控制器216,因為處理管線200內並未進一步使用重新導向400點之前的該擷取資料。若此結果用於清除LRU陣列208內的該相關聯分支存在位元308,然後若稍後以依序方式擷取該相同指令資料,其中該快取線內所有資料應該都用過,則分支預測單元220會錯誤地不啟動且不執行一分支預測。為了降低分支存在位元308假更新的可能性,在某些具體實施例內,快取控制器216若由於一重新導向而已經擷取該指令資料,則不允許LRU陣列208內分支存在位元308的更新。換言之,當分支預測驗證單元234已經考慮到已擷取指令資料內所有分支時,快取控制器216更新LRU陣列208內的分支存在位元308。
更進一步,在決定一重新導向之後已擷取的指令資料包含一分支指令並且針對該分支指令驗證一分支預測時,分支預測驗證單元234將該指令資料的驗證回傳至分支預測單元220來更新存在位元226。在一個範例中,分支預測驗證單元234從指令快取206擷取指令資料之後,針對一分支指令存在與否驗證該擷取的指令資料。若該擷取的指令資料內無分支指令,則分支預測驗證單元234更新分支存在位元226,以在該分支目標位址上指令資料的指令擷取期間將分支預測單元220維持在電源關閉狀態。若該擷取的指令資料內有分支指令,則分支預測驗證單元234更新分支存在位元226,以在該分支目標位址上指令資料的指令擷取期間啟動分支預測單元220來查找一分支預測。
在某些情況下,若不啟動分支預測單元220並且在擷取的指令資料內有一分支指令,則分支預測驗證單元234可發現該分支指令。在一個範例中,分支預測驗證單元234決定在該指令擷取期間是否已經啟動分支預測單元220。若由於分支預測單元220的電源已經關閉而未預測該分支指令,則分支預測驗證單元234重新擷取該分支指令。進一步,分支預測驗證單元234從電源關閉狀態啟動分支預測單元220,以針對包含該分支 指令的該重新擷取指令資料查找一分支預測。分支預測驗證單元234針對該重新擷取指令資料內一分支指令存在與否驗證該分支預測,並且將該分支指令的驗證傳遞至分支預測單元220。分支控制器232根據該驗證,更新存在位元226。在此情況下,會浪費在該指令資料初次擷取之後執行的該等指令擷取與預測,這樣短時間內會增加耗電量並且降低效能。不過,要承受耗電量與效能代價,以便提高未來擷取指令資料的分支預測精確度。長期下來可大幅提高效能並且降低功率消耗。換言之,可更新該等存在位元,以精確反映出先前擷取的指令資料內有分支指令,如此能夠更精準控制該分支預測單元,並且整體提高效能以及降低功率消耗。
請注意在上面的討論中,引用許多組件更新該指令快取內的該等分支存在位元以及該分支預測單元內的該等存在位元。吾人將了解,在不背離本發明範疇之下,任何合適的組件都可根據微處理器內處理管線的實施,更新該等分支存在位元。例如:該分支預測驗證單元可直接更新該指令快取內的該等分支存在位元。在另一個範例中,該分支預測驗證單元可將一驗證傳遞給該指令快取的該快取控制器,並且該快取控制器可更新該等分支存在位元。類似地,該分支預測驗證單元可直接更新該分支預測單元內的該等分支存在位元。在另一個範例中,該分支預測驗證單元可將一驗證傳遞給該分支預測單元的該分支控制器,並且該快取控制器可更新該等分支存在位元。
圖5顯示用於控制一微處理器降低功率消耗的方法500之具體實施例。尤其是,執行方法500確定當從一指令快取擷取新填入快取線時,已經啟動一分支預測單元來產生一分支預測。方法500可用來當成控制策略的一部分,在從一指令快取依序擷取指令期間,降低該微處理器的分支預測單元之耗電量。在一個範例中,圖1內顯示的微處理器100包含圖2內所示指令快取206,以執行方法500。尤其是在一個範例中,指令快取206的快取控制器216執行方法500。
在502上,方法500包含決定該指令快取內一快取線是否新填入指令資料。例如:一快取線原來已經填入來自較高等級記憶體儲存體的該指令快取內,例如來自一較高等級快取或其他記憶體子系統。若決定該指令快取內的一快取線新填入指令資料,則方法500前往504。否則,方法500回到502,檢查快取線是否已經填入該指令快取內。
在504上,方法500包含針對新填入的指令資料設定該指令快取內的分支存在位元,以啟動該分支預測單元。利用設定該指令快取內的該等存在位元來啟動該分支預測單元,則當稍後從該指令快取擷取該指令資料時可執行一分支預測。方法500確定在至少初次擷取該新填入指令資料期間啟動該分支預測單元,以便產生稍後在該處理管線內驗證的一分支預測。然後該分支預測的驗證可用來更新該等分支存在位元,並且在稍後擷取指令資料期間控制該分支預測單元。如此,當指令資料新填入該指令快取時,可維持該分支預測單元的控制精準度。
圖6顯示用於控制一微處理器降低功率消耗的方法600之具體實施例。尤其是,執行方法600,在從一指令快取依序擷取指令期間,降低該微處理器的分支預測單元之耗電量。在一個範例中,圖1內顯示的微處理器100包含圖2內所示指令快取206和分支預測單元220,以執行方法600。尤其是在一個範例中,指令快取206的快取控制器216以及分支預測單元220的分支控制器232執行方法600。
在602上,方法600包含在一指令快取的最近最少用位元內,查找該指令快取內複數個快取線集合之每一個的最近最少用位元。查找該等最近最少用位元包含針對該等複數個快取線集合,查找該等分支存在位元。在一個範例中,該等複數個快取線集合代表該指令快取內的依序項目。由一指令擷取操作提供的一位址可指定該依序項目內的指定集合。在一個特定範例內,查找該等最近最少用位元包含針對該指令快取內四個依序快取線集合的每一個,查找最近最少用位元。在從該等快取線集合之一者擷 取一指令之前,可查找依序快取線集合的該等LRU位元,以便預測儲存該指令的該集合內之通道。
在604上,方法600包含根據一指定快取線的最近最少用位元,決定該等複數個快取線集合的該指定快取線集合內最近最常用通道。在一個範例中,該指定的快取線集合為其中已經儲存目前已擷取指令的集合。請注意,該等最近最少用位元包含分支存在位元,其指出該指定快取線集合內該最近最常用通道是否包含一分支指令。
在606上,方法600包含決定該指定快取線集合內該最近最常用通道的該分支存在位元是否指出該最近最常最用通道包含一分支指令。在一個範例中,該分支控制器從該快取控制器接收該等分支存在位元,並且由該分支控制器做決定。若該等分支存在位元指出該最近最常用通道包含一分支指令,則方法600前往608。否則,方法600前往610。
在608上,方法600包含從電源關閉狀態啟動該分支預測單元,以針對該指令快取的該指定快取線集合內,該最近最常用通道中該指令資料內的該分支指令,查找一分支預測。在某些具體實施例內,該等分支存在位元指出分支指令的類型,並且方法600包含根據該等分支存在位元所指示的分支指令類型,從電源關閉狀態啟動該分支預測單元內的指定預測結構。例如:該等分支存在位元可指出一分支指令為一直接分支,並且可啟動該BTB來查找一分支預測,同時將其他預測結構維持在電源關閉狀態內。
在610上,方法600包含在該指令快取的該指定快取線集合內,該最近最常用通道中該指令資料的該指令擷取期間,關閉該分支預測單元或將該分支預測單元維持在電源關閉狀態。在某些具體實施例內,在一指令擷取期間,該分支預測單元與儲存該指令資料的該指令快取內一資料陣列之查找平行地啟動或關閉。
利用追蹤該指令快取內分支指令存在與否,當在一依序指令 擷取期間從該指令快取擷取未包含一分支指令的指令資料時,可選擇性啟動該分支預測單元。因此,相對於每次指令擷取期間都會啟動該分支預測單元的控制方式,可降低功率消耗。
圖7顯示用於控制一微處理器降低功率消耗的另一種方法700之具體實施例。尤其是,執行方法700來驗證分支預測並且更新該指令快取內的存在位元,以精確反映出先前擷取指令資料內存在分支指令。利用更新該指令快取內的分支存在位元,可提高該分支預測單元的控制精準度,造成效能增加並且功率消耗縮減。在一個範例中,圖1內顯示的微處理器100包含圖2內所示指令快取206、分支預測單元220以及分支預測驗證單元234,以執行方法700。尤其是在一個範例中,指令快取206的快取控制器216、分支預測單元220的分支控制器232以及分支預測驗證單元234執行方法700。
在702上,方法700包含針對一分支指令存在與否驗證擷取的指令資料。在一個範例中,在該指令資料的解碼期間執行驗證該擷取的指令資料。
在704上,方法700包含決定是否因為重新導向而已經擷取該指令資料。若由於重新導向而已經擷取該指令資料,則方法前往712。否則,方法700前往706。
在706上,方法700包含決定該已經擷取的指令資料是否包含一分支指令。若該已擷取指令資料內有一分支指令,則方法700前往708。否則,方法700前往710。
在708上,方法700包含更新該指令快取內的該等分支存在位元,從電源關閉狀態啟動該分支預測單元,以在稍後指令資料擷取期間查找一分支預測。在一個特定範例中,更新該等分支存在位元包含設定該等分支存在位元,指出該指令資料包含一分支指令。
在710上,方法700包含更新該指令快取內的該等分支存在 位元,以在稍後指令資料擷取期間關閉該分支預測單元或將該分支預測單元維持在電源關閉狀態。在一個特定範例中,更新該等分支存在位元包含清除該等分支存在位元,指出該指令資料未包含一分支指令。
在712上,方法700包含不允許更新該等分支存在位元。在此情況下,因為該分支指令導致的該重新導向可能發生在該指令資料的中間,所以不允許更新該等分支存在位元。尤其是,驗證該指令資料內一指令分支存在與否發生於重新導向點之後。若該已擷取的指令資料在該重新導向之前一點上有一分支指令,則無法通過驗證並且無法精準更新該存在位元。藉由因為重新導向而不允許更新已經擷取的指令資料之存在位元,則只有當驗證已擷取指令資料內所有分支時,才更新已擷取指令資料的該等存在位元。
圖8顯示用於控制一微處理器降低功率消耗的方法800之具體實施例。尤其是,執行方法800確定當從一指令快取擷取新指令資料時,針對該分支預測單元的一分支目標緩衝區內一新分配目標位址上之指令資料,啟動一分支預測單元來產生一分支預測。方法800可用來當成控制策略的一部分,以在一重新導向之後執行指令擷取期間,降低該微處理器的分支預測單元之耗電量。在一個範例中,圖1內顯示的微處理器100包含圖2內所示分支預測單元220,該微處理器100執行方法800。尤其是在一個範例中,分支預測單元220的分支控制器232執行方法800。
在802上,方法800包含決定是否已經在該分支預測單元內分配一新目標地址。在一個範例中,決定新指令資料是否已經分配至該分支預測單元的分支目標緩衝區內的一目標位址。若決定新目標位址已經分配給該分支預測單元,則方法800前往804。否則,方法800回到802,檢查新指令資料是否已經分配給該分支預測單元內的該目標位址。
在804上,方法800包含針對該目標位址上新指令資料設定分支存在位元,以便當從該指令快取擷取該目標位址上的該新指令資料時, 允許啟動該分支預測單元。利用針對該分支預測單元內目標位址上該新指令資料設定該等存在位元來啟動該分支預測單元,則稍後從該指令快取擷取該指令資料時可執行一分支預測。稍後可在該處理管線內驗證該分支預測。然後該分支預測的驗證可用來更新該等分支存在位元,並且在稍後擷取指令資料期間控制該分支預測單元。如此,當新指令資料分配給該分支預測單元內目標位址時,可維持該分支預測單元的控制精準度。
圖9顯示用於控制一微處理器降低功率消耗的方法900之具體實施例。尤其是,執行方法900,以在一重新導向之後指令擷取期間,降低該微處理器的分支預測單元之耗電量。在一個範例中,圖1內顯示的微處理器100包含圖2內所示分支預測單元220,該微處理器100執行方法900。尤其是在一個範例中,分支預測單元220的分支控制器232執行方法900。
在902上,方法900包含預測從一指令快取擷取的一指令將採用一分支。在一個範例中,利用單獨查找該分支資訊緩衝區內的一分支預測,或加上查找該分支預測單元其他結構內的資訊,該分支預測單元預測將採用一分支。
在904上,方法900包含在該分支預測單元的該分支目標緩衝區(或間接目標緩衝區)內,針對該預測分支的目標位址查找分支存在位元。
在906上,方法900包含決定來自該分支目標緩衝區的該存在位元查找是否指出該目標位址上儲存的指令資料包含一分支指令。若該分支目標位址的該等分支存在位元指出該目標位址上儲存的指令資料包含一分支指令,則方法900前往910。否則,方法900前往908。
在908上,該等存在位元指出該目標位址上的該指令資料並未包含一分支指令,並且方法900包含針對該目標位址上該指令資料的該指令擷取,關閉該分支預測單元或將該分支預測單元維持在電源關閉狀 態。
在910上,該等存在位元指出該目標位址上的該指令資料包含一分支指令,並且方法900包含針對該目標位址上該指令資料內的該分支指令,從電源關閉狀態啟動該分支預測單元來查找一分支預測。在某些具體實施例內,該等分支存在位元指出分支指令的類型,並且方法900包含根據該等分支存在位元所指示的分支指令類型,從電源關閉狀態啟動該分支預測單元內的指定預測結構。例如:該等分支存在位元可指出一分支指令為一直接分支,並且可啟動該BTB來查找一分支預測,同時將其他預測結構維持在電源關閉狀態內。
利用當預測採用一分支時查找該分支預測單元內的該等分支存在位元,就在可從該指令快取取得分支存在位元之前,一重新導向之後的該等時脈週期內精準控制該分支預測單元。因此,即使在一重新導向之後的時脈週期期間也可減少該分支預測單元的不必要啟動。
圖10顯示用於控制一微處理器降低功率消耗的另一種方法1000之具體實施例。尤其是,執行方法1000來驗證分支預測並且更新該分支預測單元內的存在位元,以精確反映出先前擷取指令資料內存在分支指令。利用更新該分支預測單元內的分支存在位元,可提高該分支預測單元的控制精準度,造成效能增加並且功率消耗縮減。在一個範例中,圖1內顯示的微處理器100包含圖2內所示分支預測單元220和分支預測驗證單元234,該微處理器100執行方法1000。尤其是在一個範例中,分支預測單元220的分支控制器232以及分支預測驗證單元234執行方法1000。
在1002上,方法1000包含針對一分支指令存在與否驗證一分支指令的目標位址上已擷取的指令資料。在一個範例中,在該指令資料的解碼期間執行驗證該擷取的指令資料。
在1004上,方法1000包含根據該已擷取指令資料的驗證,決定該已擷取指令資料是否包含一分支指令。若該已擷取指令資料內沒有 分支指令,則方法1000前往1006。否則,方法1000前往1008。
在1006上,方法1000包含更新該分支預測單元內的該等分支存在位元,以在稍後指令資料擷取期間關閉該分支預測單元或將該分支預測單元維持在電源關閉狀態。在一個特定範例中,更新該等分支存在位元包含清除該等分支存在位元,指出該指令資料未包含一分支指令。
在1008上,方法1000包含決定在包含1004所發現分支指令的該分支資料擷取期間是否已經啟動該分支預測單元。若在包含1004所發現分支指令的該指令資料的指令擷取期間已經啟動該分支預測單元,則方法1000前往1010。否則,方法1000前往1012。
在1010上,方法1000包含更新該分支預測單元內的該等分支存在位元,以在稍後指令資料擷取期間從電源關閉狀態啟動該分支預測單元。在一個特定範例中,更新該等分支存在位元包含設定該等分支存在位元,指出該指令資料包含一分支指令。
在1012上,方法1000包含重新擷取包含1004所發現分支指令的該指令資料。該指令資料經過重新擷取,如此可在該指令資料上執行一分支預測。
在1014上,方法1000包含從電源關閉狀態啟動該分支預測單元,以針對該分支指令查找一分支預測。利用再次執行方法1000(或回到1002),接著方法1000至1010的流程,驗證該重新擷取的資料。在1010上,在該分支預測單元內更新該目標位址上該重新擷取指令資料的該等分支存在位元,指出該目標位址上的該指令資料包含一分支指令。
圖11顯示根據本發明的範例微處理器操作之時間軸。該時間軸描述一個範例管線,顯示包含LRU陣列存取的指令快取查找以及分支預測單元查找。在此範例中,為了簡化與清晰起見,假設所有存取都命中。進一步,若有命中的話,該指令快取的每一指令擷取讀取都擷取資料快取線的一半。在該時間軸上,時間由左至右前進,後續指令快取存取由上往 下前進,不過某些存取可平行地執行。
在該第一時脈週期內,利用存取該指令快取的該指定快取線集合(集合3)之該下半部資料通道,執行一依序指令擷取。在包含用於下一個四依序快取線集合的該等分支存在位元之該LRU陣列內,查找集合3之後下一個四依序快取線集合群組的該等LRU位元。因為來自先前LRU陣列查找並包含該指定快取線集合的分支存在位元指出該已擷取指令資料並不含一指令分支,所以關閉或不存取該分支預測單元。在一個範例中,該等分支存在位元包含兩個位元,分別用於該MRU快取線的每一資料半邊。在此情況下,應該清除一個位元,指出該下半部資料不包含一分支指令。
在此範例中,資料可在執行一查找之後使用兩個時脈週期。在已經處理來自該第一時脈週期的該存取時,則執行該下一個依序指令擷取。尤其是,在該第二時脈週期內,在該指令快取內查找集合3的上半部資料通道。因為來自先前LRU陣列查找並包含該LRU位元的分支存在位元已經設定,指出該已擷取指令資料包含一分支指令,所以啟動該分支預測單元。在一個範例中,應該設定兩個存在位元當中一個位元,指出該資料上半部包含一分支指令。
在該第三時脈週期內,來自該第一時脈週期內執行存取的該指令資料以及該LRU資料變成可用。因為該等LRU位元可用,包含該等LRU位元的該等分支存在位元可用來決定在下一個依序指令擷取期間,是否啟動或關閉該分支預測單元。在此情況下,該等分支存在位元清楚指出該指令資料不包含一分支指令,並且在此指令擷取期間關閉或不存取該分支預測單元。更進一步,來自在該第一時脈週期內所執行指令擷取的該指令資料,可用於往下傳播通過該管線多個階段。
在該第四時脈週期中,來自該存取至0xe0的該指令資料可用。另外,0x0e0上指令資料的該分支預測可用,並且具有0x200的目標,並且用於位址0x200的分支存在位元可用於該第二時脈週期內該分支預測 單元的存取。更進一步,來自該分支預測單元中該分支目標緩衝區的該等分支存在位元指出該分支目標位址上的該指令資料並未包含一分支指令。
在該第五時脈週期內,利用查找集合8的資料下半部,執行該分支目標位址上的該指令擷取。在包含該目前快取線集合的該LRU陣列內,查找四個連續快取線集合群組(集合8-11)的該等LRU位元。在此情況下,在該分支目標緩衝區內的該等分支存在位元查找指出該已擷取指令資料內並無分支,並且關閉或不存取該分支預測單元。更進一步,來自在該第三時脈週期內所執行指令擷取的該指令資料可用,不過由於該稍早預測採用的分支而將忽略此資料。在該第五時脈週期內的該資料與LRU位元查找可用於該第七時脈週期。指令擷取可依序執行,直到發生一分支而重新導向。
在此範例中,在該管線的該第一、第三和第五時脈週期內都關閉該分支預測單元(圖11內的醒目標示)。相對於每次指令擷取期間都會啟動該分支預測單元的方式,本微處理器控制方式將該分支預測單元的操作最佳化,以在效能下降幅度最小之下縮減功率消耗。尤其是,該方式以存在位元的形式,追蹤已擷取指令資料內分支指令存在與否,並儲存在該指令快取以及該分支預測單元內。
吾人可了解,此處所揭示的組態及/或方法在本質上為示例性,且這些特定具體實施例或範例不應視為限制性,因為其有多種可能的變化。此處所述之特定例式或方法可以代表一或多個任何數目之處理策略。因此,所例示的多種動作可依例示的順序、其它順序、平行或在某些案例中被省略地執行。類似地,上述處理的順序可以改變。
本發明的標的包括此處所揭示之多種程序、系統及組態,以及其它特徵、功能、動作及/或性質之所有創新及非顯而易知性組合及次組合,以及其任何及所有同等者之組合及次組合。
100‧‧‧微處理器
110‧‧‧記憶體階層
112‧‧‧L1處理器快取
114‧‧‧L2處理器快取
116‧‧‧L3處理器快取
118‧‧‧主要記憶體
120‧‧‧次要儲存體
122‧‧‧第三儲存體
124‧‧‧記憶體控制器
126‧‧‧擷取邏輯
128‧‧‧解碼邏輯
130‧‧‧執行邏輯
132‧‧‧記憶邏輯
134‧‧‧寫回邏輯

Claims (10)

  1. 一種微處理器,包括:擷取邏輯,與指令記憶體互動來取得用於執行的指令資料;一分支預測單元,其與該擷取邏輯耦合,該分支預測單元包含:一分支控制器,用以:(1)接收一分支存在指示,其指出在來自該指令記憶體內一位置的一指令資料之擷取期間,該指令記憶體中該位置內的該指令資料是否包含一分支指令,(2)而當該分支存在指示指出該指令資料包含該分支指令時,從一電源關閉狀態啟動該分支預測單元,以及(3)而當該分支存在指示指出該指令資料不包含該分支指令時,於該指令資料之擷取期間將該分支預測單元維持在該電源關閉狀態。
  2. 如申請專利範圍第1項之微處理器,其中該指令記憶體包含一指令快取,該指令快取包含複數個快取線以及一快取控制器,該快取控制器回應該指令快取內一快取線填入指令資料,在來自該快取線的指令資料之指令擷取期間,設定該快取線的該分支存在指示,以啟動該分支預測單元來查找一分支預測。
  3. 如申請專利範圍第2項之微處理器,另包括:一分支預測驗證單元,用以:(1)在從該快取線擷取指令資料之後,針對該分支指令存在與否驗證該已擷取指令資料,以及(2)若該已擷取指令資料內並無分支指令,則在來自該快取線的指令資料之指令擷取期間,更新該分支存在指示,以將分支預測單元維持在該電源關閉狀態。
  4. 如申請專利範圍第3項之微處理器,其中若該已擷取指令資料內有一分支指令,則該分支預測驗證單元更新該分支存在指示,以在來自該快取線的指令資料之指令擷取期間啟動該分支預測單元來查找該分支預測。
  5. 如申請專利範圍第4項之微處理器,其中若來自該快取線的指令資料因為一重新導向而被擷取,則該快取控制器不允許更新該分支存在指示。
  6. 如申請專利範圍第1項之微處理器,其中該分支預測單元與儲存該指令資料的一指令快取內一資料陣列之查找平行地啟動或維持在電源關閉狀態。
  7. 如申請專利範圍第1項之微處理器,其中該分支存在指示由分支存在位元特徵化,並且其中該指令記憶體包含一指令快取,該指令快取包含一最近最少用位元陣列,該最近最少用位元陣列包含該等分支存在位元以及複數個快取線集合中每一者的最近最少用位元,而一快取線集合的該最近最少用位元係指出該快取線集合內一最近最少用通道。
  8. 如申請專利範圍第7項之微處理器,其中該指令記憶體內的該位置為該指令快取的指定快取線集合內的一最近最常用通道,並且在來自該最近最常用通道的該指令資料之指令擷取之前,擷取該指定快取線集合的該等分支存在位元。
  9. 如申請專利範圍第1項之微處理器,其中該分支存在指示指出分支指 令的類型,並且該分支控制器根據分支存在位元所指示的分支指令類型,從一電源關閉狀態啟動該分支預測單元內的指定預測結構。
  10. 如申請專利範圍第1項之微處理器,其中該分支存在指示由兩分支存在位元特徵化,該等兩分支存在位元的每一者都代表一快取線不同的資料半邊。
TW102114411A 2012-04-27 2013-04-23 分支預測功率縮減 TWI502347B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/458,542 US9552032B2 (en) 2012-04-27 2012-04-27 Branch prediction power reduction

Publications (2)

Publication Number Publication Date
TW201405310A TW201405310A (zh) 2014-02-01
TWI502347B true TWI502347B (zh) 2015-10-01

Family

ID=49323387

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102114411A TWI502347B (zh) 2012-04-27 2013-04-23 分支預測功率縮減

Country Status (4)

Country Link
US (1) US9552032B2 (zh)
CN (1) CN103377146A (zh)
DE (1) DE102013202992A1 (zh)
TW (1) TWI502347B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810450B (zh) * 2019-05-23 2023-08-01 南韓商三星電子股份有限公司 經由跳過無分歧的快取線改善分歧預測通量的設備及系統

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203959B1 (en) 2016-01-12 2019-02-12 Apple Inc. Subroutine power optimiztion
US10223123B1 (en) * 2016-04-20 2019-03-05 Apple Inc. Methods for partially saving a branch predictor state
ES2697548B2 (es) * 2018-03-20 2020-07-22 Univ Madrid Politecnica Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza
US11513801B2 (en) * 2018-09-10 2022-11-29 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups
WO2021133469A1 (en) * 2019-12-23 2021-07-01 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups
US11301251B2 (en) * 2020-03-30 2022-04-12 SiFive, Inc. Fetch stage handling of indirect jumps in a processor pipeline
US20220197657A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Segmented branch target buffer based on branch instruction type

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279107B1 (en) * 1996-11-19 2001-08-21 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US20020138700A1 (en) * 2000-04-28 2002-09-26 Holmberg Per Anders Data processing system and method
US20070162775A1 (en) * 2006-01-06 2007-07-12 Advanced Micro Devices, Inc. Dynamically self-decaying device architecture
TW201118726A (en) * 2009-08-19 2011-06-01 Qualcomm Inc Methods and apparatus to predict non-execution of conditional non-branching instructions

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168541A (en) 1978-09-25 1979-09-18 Sperry Rand Corporation Paired least recently used block replacement system
US4525780A (en) 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US4807110A (en) 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US5125085A (en) 1989-09-01 1992-06-23 Bull Hn Information Systems Inc. Least recently used replacement level generating apparatus and method
US5325503A (en) 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
US5974508A (en) 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US5544342A (en) 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5835934A (en) 1993-10-12 1998-11-10 Texas Instruments Incorporated Method and apparatus of low power cache operation with a tag hit enablement
US5623627A (en) 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
US5666514A (en) 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5640532A (en) 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5933860A (en) 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5737748A (en) 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5860127A (en) 1995-06-01 1999-01-12 Hitachi, Ltd. Cache memory employing dynamically controlled data array start timing and a microcomputer using the same
US5845317A (en) 1995-11-17 1998-12-01 Micron Technology, Inc. Multi-way cache expansion circuit architecture
US5809522A (en) 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
JP3801643B2 (ja) 1996-01-24 2006-07-26 サン・マイクロシステムズ・インコーポレイテッド スタックを用いる演算マシンのための命令フォールディング処理
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US5848428A (en) 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
US6282663B1 (en) * 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6356990B1 (en) 2000-02-02 2002-03-12 International Business Machines Corporation Set-associative cache memory having a built-in set prediction array
KR100373849B1 (ko) 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
US7487369B1 (en) 2000-05-01 2009-02-03 Rmi Corporation Low-power cache system and method
JP2002196981A (ja) 2000-12-22 2002-07-12 Fujitsu Ltd データ処理装置
JP2002236616A (ja) 2001-02-13 2002-08-23 Fujitsu Ltd キャッシュメモリシステム
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6718439B1 (en) 2001-06-01 2004-04-06 Advanced Micro Devices, Inc. Cache memory and method of operation
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
US6678792B2 (en) 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
US6948079B2 (en) 2001-12-26 2005-09-20 Intel Corporation Method and apparatus for providing supply voltages for a processor
JP2003242029A (ja) 2002-02-15 2003-08-29 Hitachi Ltd 半導体集積回路
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US20040181654A1 (en) * 2003-03-11 2004-09-16 Chung-Hui Chen Low power branch prediction target buffer
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
JP3834323B2 (ja) 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US8775740B2 (en) 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7869835B1 (en) 2005-03-02 2011-01-11 Nvidia Corporation Method and system for pre-loading and executing computer instructions within the cache memory
US7475192B2 (en) 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
US7536510B1 (en) 2005-10-03 2009-05-19 Advanced Micro Devices, Inc. Hierarchical MRU policy for data cache
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7904658B2 (en) 2005-11-30 2011-03-08 International Business Machines Corporation Structure for power-efficient cache memory
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US7689772B2 (en) 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US7657708B2 (en) 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7681021B2 (en) * 2006-09-28 2010-03-16 Freescale Semiconductor, Inc. Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch
US8335122B2 (en) 2007-11-21 2012-12-18 The Regents Of The University Of Michigan Cache memory system for a data processing apparatus
US8028180B2 (en) * 2008-02-20 2011-09-27 International Business Machines Corporation Method and system for power conservation in a hierarchical branch predictor
US8458404B1 (en) 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
CN101763249A (zh) 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US8799628B2 (en) * 2009-08-31 2014-08-05 Advanced Micro Devices, Inc. Early branch determination
JP2011081564A (ja) 2009-10-06 2011-04-21 Fujitsu Ltd 制御装置、記憶装置、演算処理装置および制御方法
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US8990506B2 (en) 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8352683B2 (en) 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device
US20120079303A1 (en) 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US8667257B2 (en) * 2010-11-10 2014-03-04 Advanced Micro Devices, Inc. Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279107B1 (en) * 1996-11-19 2001-08-21 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US20020138700A1 (en) * 2000-04-28 2002-09-26 Holmberg Per Anders Data processing system and method
US20070162775A1 (en) * 2006-01-06 2007-07-12 Advanced Micro Devices, Inc. Dynamically self-decaying device architecture
TW201118726A (en) * 2009-08-19 2011-06-01 Qualcomm Inc Methods and apparatus to predict non-execution of conditional non-branching instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810450B (zh) * 2019-05-23 2023-08-01 南韓商三星電子股份有限公司 經由跳過無分歧的快取線改善分歧預測通量的設備及系統

Also Published As

Publication number Publication date
CN103377146A (zh) 2013-10-30
US9552032B2 (en) 2017-01-24
US20130290640A1 (en) 2013-10-31
TW201405310A (zh) 2014-02-01
DE102013202992A1 (de) 2013-10-31

Similar Documents

Publication Publication Date Title
TWI502347B (zh) 分支預測功率縮減
TWI502496B (zh) 提供分支預測功率縮減的微處理器
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
CN110069285B (zh) 一种检测分支预测的方法及处理器
JP5089186B2 (ja) データ・キャッシュ・ミス予測およびスケジューリング
US7783869B2 (en) Accessing branch predictions ahead of instruction fetching
CN101495962B (zh) 用于预取不连续指令地址的方法和设备
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
US9396117B2 (en) Instruction cache power reduction
US20050066153A1 (en) Method for processing branch operations
US11687343B2 (en) Data processing apparatus and method for providing candidate prediction entries
JP7160956B2 (ja) 分岐命令のタイプに基づく先行分岐予測の選択的実行
US7797520B2 (en) Early branch instruction prediction
CN101013401A (zh) 用于预取数据线的方法和处理器
CN112579175B (zh) 分支预测方法、分支预测装置和处理器核
JP2007207246A (ja) 命令ラインのための自己プリフェッチl2キャッシュ機構
US10338923B2 (en) Branch prediction path wrong guess instruction
KR20230025409A (ko) 명령어 주소 변환 및 명령어 선인출 엔진
US10402203B2 (en) Determining a predicted behaviour for processing of instructions
KR101049319B1 (ko) 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치
US10922082B2 (en) Branch predictor
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System