TWI436273B - 預測條件非分支指令之不執行之方法及裝置 - Google Patents
預測條件非分支指令之不執行之方法及裝置 Download PDFInfo
- Publication number
- TWI436273B TWI436273B TW099127797A TW99127797A TWI436273B TW I436273 B TWI436273 B TW I436273B TW 099127797 A TW099127797 A TW 099127797A TW 99127797 A TW99127797 A TW 99127797A TW I436273 B TWI436273 B TW I436273B
- Authority
- TW
- Taiwan
- Prior art keywords
- ecnb
- instruction
- prediction
- command
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 38
- 238000011156 evaluation Methods 0.000 claims description 43
- 230000009849 deactivation Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 8
- 230000000717 retained effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 description 13
- 238000012544 monitoring process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000011010 flushing procedure Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
本發明大體而言係關於處理器之領域,且詳言之係關於支援條件非分支指令之處理器。
諸如蜂巢式電話、膝上型電腦、個人資料助理(PDA)及其類似者之許多攜帶型產品利用執行諸如通信及多媒體程式之程式的處理系統。用於此等產品之處理系統可包括多個處理器、用於儲存指令及資料之複雜記憶體系統、控制器、諸如通信介面之周邊器件及組態於(例如)單晶片上之固定功能邏輯區塊。同時,攜帶型產品具有呈電池形式的有限能源,常常需要該等電池支援處理系統進行之高效能操作。為了增加電池壽命,需要儘可能有效地執行此等操作。亦正在開發具有有效設計以在總能量消耗降低情況下操作的許多個人電腦。
處理器使用具有指令集之管線式架構,該指令集大體上包括條件分支指令。程式可使用條件分支指令來控制程式操作流程。然而,執行條件分支指令可引起在相關聯分支條件之管線待決解析中出現管線泡,大體上直至處理器之管線深處方可判定相關聯分支條件。許多處理器亦包括條件非分支指令以幫助減輕條件分支指令之效能搶奪(performance robbing)性質。非分支指令之條件執行允許程式設計師基於先前產生之機器狀態來指定是否將執行指令。使用條件非分支指令幫助降低對條件分支指令之需要且藉此改良效能。
當條件指令之相關聯條件經評估且指示不執行指令時,可能已消耗與條件指令相關聯之資源。舉例而言,可能已提取執行條件非分支指令所需之暫存器運算元。又,條件非分支指令可能已不必要地將管線相依性引入處理器管線中。舉例而言,條件指令可在管線中暫停同時等待解析其條件,藉此引起暫停波動(ripple)至視該條件指令之執行而定的所有指令。另外,條件指令可存在於軟體迴圈中,其中條件指令之條件解析性質針對迴圈之每一反覆以類似方式出現,從而可引起顯著效能降級。
在本發明之若干態樣中,自本發明可認識到,提供用於預測條件非分支指令之不執行的更有效方法及裝置可改良效能且降低處理器系統中之功率要求。為達成此等目的,本發明之一實施例提出一種用於不執行一已發出之條件非分支指令之方法。將一條件非分支指令識別為適合於預測,該預測指示將不執行該入選條件非分支(ECNB)指令。該ECNB指令回應於將不執行該ECNB指令之該預測而執行為無操作(NOP)指令。
另一實施例提出一種用於預測將不執行一條件非分支指令之裝置。該裝置具有一第一電路,其用於將一條件非分支指令識別為適合於一預測。該裝置具有一第二電路,其用於回應於滿足一評估準則而預測是否將執行該入選條件非分支(ECNB)指令。
另一實施例提供一種用於預測將不執行一條件非分支指令之方法。識別一適合於預測是否將執行之條件非分支指令。回應於滿足一評估準則而預測將不執行該入選條件非分支(ECNB)指令。
應理解,對於熟習此項技術者而言,本發明之其他實施例將自以下詳細描述而變得容易顯而易見,在以下詳細描述中,以說明之方式來展示及描述本發明之各種實施例。應瞭解,本發明能夠實踐其他及不同實施例且其若干細節能夠在其他各方面加以修改,以上所有皆不偏離本發明之精神及範疇。因此,應將圖式及詳細描述視為本質上說明性而非限制性的。
在隨附圖式中藉由實例而非藉由限制來說明本發明之各種態樣。
下文結合隨附圖式所闡述之詳細描述意欲作為對本發明之各種例示性實施例的描述,且不意欲表示可實踐本發明之僅有實施例。詳細描述包括出於提供對本發明之澈底理解之目的的特定細節。然而,對於熟習此項技術者將顯而易見,本發明可在無此等特定細節的情況下實踐。在一些例子中,以方塊圖形式展示熟知結構及組件,以避免使本發明之概念模糊。
圖1說明可有利地使用本發明之實施例的例示性無線通信系統100。出於說明之目的,圖1展示三個遠端單元120、130及150及兩個基地台140。應認識到,常用無線通信系統可具有更多遠端單元及基地台。分別包括硬體組件、軟體組件或其兩者(由組件125A、125C、125B及125D表示)之遠端單位120、130、150及基地台140已經調適以來體現本發明,如下文進一步論述。圖1展示自基地台140至遠端單元120、130及150之前向鏈路信號180以及自遠端單元120、130及150至基地台140之反向鏈路信號190。
圖1中,遠端單元120經展示為行動電話,遠端單元130經展示為攜帶型電腦且遠端單元150經展示為無線區域迴路系統中之固定位置遠端單元。藉由實例,遠端單元或者可為蜂巢式電話、呼叫器、對講機、手持型個人通信系統(PCS)單元、諸如個人資料助理之攜帶型資料單元,或諸如儀錶讀取設備之固定位置資料單元。儘管圖1說明根據本發明之教示的遠端單元,但本發明不限於此等例示性所說明單元。本發明之實施例可適用於具有條件非分支指令之處理器中。
圖2展示預測是否執行條件非分支指令之例示性處理器系統200。處理器系統200包括處理器210、快取記憶體系統212、系統記憶體214以及輸入及輸出(I/O)系統216。舉例而言,處理器210包含指令管線220及條件非分支預測邏輯電路222。舉例而言,快取記憶體系統212包含指令快取記憶體(Icache)224、記憶體控制器226及資料快取記憶體(Dcache)228。系統記憶體214提供未在Icache 224或Dcache 228中發現之指令及資料之存取。應注意,快取記憶體系統212可與處理器210整合且可進一步包括階層式組織中之多個層級之快取記憶體。I/O系統216包含與處理器210介接之複數個I/O器件,諸如I/O器件240及242。
指令管線220由諸如提取級230、解碼級231、發出級232、執行級233及完成級234之一系列級組成。熟習此項技術者將認識到,指令管線220中之每一級230-234可(例如)視處理器之操作頻率及每一級中所需之操作的複雜性而包含許多額外管線級。又,執行級可由諸如加法器、乘法器、邏輯操作、移位與旋轉操作及其類似者的一或多個指令執行級電路組成。此等指令執行級電路可與條件非分支指令相關聯。管線級中之每一者可在不偏離本文中所描述之條件預測方法及裝置的情況下具有變化之實施。
提取級230根據電腦程式流程自指令快取記憶體(Icache)224提取指令以供執行,該等指令可包括條件分支指令及條件非分支指令。大體而言,所提取之條件分支指令使用分支預測邏輯以預測是否將進行該條件分支。所提取之非分支指令(其不為條件非分支指令)進行至解碼級231以供解碼,在發出級232中發出以供執行,在執行級233中執行且在完成級234中引退(retire)。所提取之條件非分支指令利用如本文中所描述之條件非分支預測邏輯電路222以判定是否應不執行該指令。未經執行之條件非分支指令並不改變在遇到條件非分支指令前處理器所具有之狀態。
條件非分支預測邏輯電路222包含偵測邏輯電路246、具有篩選器250及條件歷史表252之監視邏輯電路248及預測與固定邏輯電路254。在一實施例中,假設大部分條件非分支指令之條件針對軟體迴圈之大多數反覆大體上解析為相同值。
在一實施例中,偵測邏輯電路246充當軟體迴圈偵測器,其基於軟體迴圈中所使用之條件分支指令之動態特性而操作。在具有單一入口及單一出口之軟體迴圈中,迴圈結束分支大體上為條件分支指令,其針對除最後反覆外的所有迴圈反覆執行返回至軟體迴圈之開始的分支,該最後反覆退出軟體迴圈。偵測邏輯電路246可具有用於軟體迴圈之偵測的多個實施例,如下文及讓與給本申請案之受讓人之題為「Suppressing Update of a Branch History Register by Loop-Ending Branches」之美國專利申請案11/066,508中更詳細描述的,該案之全文併入本文中。
根據一實施例,假設具有小於條件分支指令位址之分支目標位址的每一條件分支指令(且因此視為反向分支)為迴圈結束分支指令。此實施例在判定分支目標位址時需要位址比較。由於並非所有反向分支均為迴圈結束分支,因此存在可能需要考慮的一定程度之不準確性。
在另一實施例中,在簡單迴圈中,可藉由辨識對相同分支指令之重複執行來偵測迴圈結束分支。藉由將最後反向分支指令之程式計數器值儲存於專用暫存器中及比較此所儲存之值與下一反向分支指令之指令位址,可在兩個指令位址匹配時辨識迴圈結束分支。由於程式碼可包括軟體迴圈內之條件分支指令,因此迴圈結束分支指令之判定可變得愈加複雜。在此情形下,可以硬體實體化多個專用暫存器以儲存每一條件分支指令之指令位址。藉由比較所有儲存值,可針對迴圈結束分支判定一匹配。
迴圈結束分支亦可由編譯器或組譯器來靜態標記。舉例而言,在一實施例中,藉由使用獨特作業碼或設定僅用於迴圈結束分支之特定格式位元欄位,編譯器產生特殊類型之分支指令。在解碼特殊分支指令後,判定迴圈結束分支。
監視邏輯電路248包含篩選器250、條件歷史表(CHT)252及相關聯監視邏輯。在一實施例中,監視程序保存預先指定之條件事件之狀態資訊,該等預先指定之條件事件可已在對軟體迴圈之一或多次先前執行中發生,該軟體迴圈具有適合於預測之條件非分支指令。在一實施例中,可能所有的條件非分支指令皆不適合於預測。舉例而言,出於實施例複雜性之原因而藉由微碼實施之條件非分支指令可能不適合於預測執行操作。又,條件分支指令將不適合於條件非分支指令預測,此係由於該等分支指令大體上具有其自身的以與本文中所描述之預測技術不同的方式操作的預測硬體及方法。
使用歷史資訊來預測何時將不執行入選條件非分支(ECNB)指令。如以下更詳細描述的,使用一些途徑來以高信賴度判定是否將執行ECNB指令。判定高置信度預測方法之途徑為有利的,此係由於預測不執行應當執行之ECNB指令的損失比預測執行不應執行之ECNB指令要嚴重得多。舉例而言,經預測不執行之ECNB指令將改變與該ECNB指令相關聯之管線操作,從而藉由不執行選定ECNB操作來最小化功率及/或改良效能,該等選定ECNB操作在預測不執行ECNB指令時為不需要的。舉例而言,若預測不執行一條件載入指令,則無需提取由該條件載入指令指定之記憶體運算元。對於經預測不執行之此ECNB指令而言,管線將在適當管線級改變,(例如)以致不提取執行該指令所需的任何暫存器或記憶體運算元,從而降低功率且改良效能。然而,若由所預測之ECNB指令指定之條件指示不正確預測,則管線必須至少清空至所提取程式碼中之可校正歸因於不正確預測之效應的點。當不應執行之ECNB指令被預測執行時無需管線清空,而是對於不正確預測之狀況而言,終止指令使得不影響處理器狀態。
條件評估程序評估預先指定之條件事件之所保存狀態資訊,且在滿足預先指定之評估準則時,針對當前入選條件非分支(ECNB)指令在迴圈中之下一次執行致能其預測。舉例而言,預先指定之條件事件可包括執行軟體迴圈之預先指定之次數及是否曾基於相關聯條件之狀態執行一或多個先前ECNB指令。舉例而言,預先指定之評估準則可包括滿足軟體迴圈之設定反覆數目及具有如下先前狀態:不執行在先前設定數目個迴圈反覆中遇到之先前ECNB指令。舉例而言,預先指定之評估準則可能需要不執行在軟體迴圈之兩次先前執行中遇到的先前ECNB指令。在此狀況下,將預測在軟體迴圈之下一次反覆中不執行當前ECNB指令。
為支援此監視邏輯電路248,篩選器250判定所提取之條件非分支指令是否適合於預測執行。若所提取之指令不適合於預測執行,則如處理器之架構在無預測資訊之輔助的情況下所指定來執行所提取之指令。若所提取之指令適合於預測執行,則啟用CHT 252。選擇CHT 252中之與ECNB指令相關聯之條目以將預測資訊提供至預測邏輯,該預測邏輯為預測與固定邏輯電路254之部分。舉例而言,當ECNB指令通過管線時,藉由管線級232-234追蹤此預測資訊。
CHT 252之條目記錄適合於預測執行之所提取指令之執行歷史。舉例而言,每一CHT條目可包含來自執行狀態計數器之計數值與狀態位元(為至預測邏輯之輸入)之組合。CHT 252亦可包含索引邏輯以允許對所提取之ECNB指令標以索引至與所提取之ECNB指令相關聯之CHT 252中的條目中,標以索引係由於軟體迴圈中可能存在多個ECNB指令。舉例而言,藉由自軟體迴圈之頂部對ECNB指令數目進行計數,計數值可用作至CHT 252中之索引。監視邏輯電路248包括迴圈計數器,以用於對軟體迴圈之反覆進行計數且確保執行狀態計數器具有在表示(例如)較強不執行狀態之指定計數值下滿值(saturate)之機會。若執行狀態計數器已滿值,則啟用預測邏輯以預測在迴圈之下一次反覆中不執行相關聯所提取之條件非分支指令。
預測與固定邏輯254產生預測資訊,該預測資訊係在發出級232、執行級233及完成級234處於追蹤暫存器發出(TrI)262、追蹤暫存器執行(TrE)263及追蹤暫存器完成(TrC)264中被追蹤。舉例而言,在預測不執行ECNB指令時,在管線級232-234中將ECNB指令有效地視為(例如)無操作(NOP)指令。藉由將ECNB指令視為NOP,不讀取通用暫存器(GPR)(若執行ECNB指令時需要),此係由於執行所預測之NOP指令不需要該等通用暫存器。若ECNB指令為載入或儲存記憶體存取指令,則不將記憶體存取操作起始為所預測之NOP指令。舉例而言,回應於不執行之預測,在執行級233中操作之運算元提取電路235將不提取執行ECNB指令所需的運算元。藉由不讀取GPR或不存取記憶體,可降低處理器210之功率。又,藉由不讀取GPR或不存取記憶體及不必等待運算元,可改良處理器效能,該等運算元在ECNB指令預測為NOP時將為不需要的。
在到達執行級233後,若針對ECNB指令所指定之執行條件經評估與其預測相對,則校正所預測之NOP指令之管線執行。舉例而言,對管線之校正可包括清空在進行預測之級處開始之管線中的指令。在一替代實施例中,可自最初提取ECNB指令之開始提取級清空管線。又,亦可在不正確預測後校正適當CHT條目。
圖3說明例示性入選條件非分支(ECNB)指令預測電路300。ECNB預測電路300說明電路及電路之間的控制信號路徑。更詳細而言,ECNB指令預測電路300包括偵測電路304、監視器電路306及預測與固定電路308。監視器電路306包含篩選器電路310及條件歷史表(CHT)電路312。預測與固定電路308包含預測電路314、追蹤電路316及校正電路318。
充當迴圈偵測器之偵測電路304操作以偵測迴圈結束分支,如上文關於偵測邏輯電路246所論述。舉例而言,迴圈結束分支大體上為條件分支指令,其針對除最後反覆外的所有迴圈反覆執行返回至迴圈開始處之分支,該最後反覆退出迴圈。將與每一所識別之迴圈有關之資訊傳遞至篩選器電路310。
在一實施例中,篩選器電路為(例如)迴圈計數器,其提供軟體迴圈已發生設定數目次反覆之指示,諸如特定迴圈之三次反覆。對於迴圈之每一反覆而言,篩選器判定條件非分支指令是否適合於預測。若迴圈中存在入選條件非分支(ECNB)指令,則將執行ECNB指令之狀態記錄於條件歷史表(CHT)電路312中。舉例而言,可使用執行狀態計數器來記錄ECNB指令之先前嘗試執行之執行歷史。可在一方向上更新執行狀態計數器以指示ECNB指令有條件地執行,且在相反方向上更新該執行狀態計數器以指示ECNB指令有條件地不執行。舉例而言,可使用兩位元執行狀態計數器,其中不執行狀態使計數器遞減且執行狀態使計數器遞增。向執行狀態計數器之輸出狀態(例如)指派「11」輸出以指示先前ECNB指令較強地指示為已執行,指派「10」輸出以指示先前ECNB指令較弱地指示為已執行,指派「01」輸出以指示先前ECNB指令較弱地指示為尚未執行且「00」輸出指示先前ECNB指令較強地指示為尚未執行。執行狀態計數器之「11」輸出及「00」輸出將為滿值之輸出值。執行狀態計數器將與所偵測到之軟體迴圈中之每一ECNB指令相關聯或提供該ECNB指令之狀態。然而,特定實施可能限制實施中所使用之執行狀態計數器之數目且因此限制可預測之ECNB指令之數目。偵測電路304大體上在首次進入一軟體迴圈時重設執行狀態計數器。
或者,停用預測旗標而非執行狀態計數器可與待預測之每一ECNB指令相關聯。若先前已判定執行相關聯ECNB指令,則將停用預測旗標設定為作用中的以停用預測。具有已執行之先前ECNB指令暗示:預測ECNB指令之不執行情形之信賴等級將低於可接受之等級。
索引計數器亦可與CHT 312結合使用以判定軟體迴圈中正在對哪一ECNB指令進行計數或評估。舉例而言,在具有五個或五個以上ECNB指令之迴圈中,第一ECNB指令可具有索引「000」且第四入選非分支指令可具有索引「011」。索引表示進入CHT 312以存取相應ECNB指令之所儲存執行狀態計數器值的位址。
預測電路314接收ECNB指令之預測資訊(諸如,執行狀態計數器之輸出值),且在(例如)圖2之解碼級231期間預測將不執行ECNB指令。在一替代實施例中,預測電路314可預測由ECNB指令所指定之條件評估為不執行狀態。預測電路314將預測決策傳遞至追蹤電路316,預測決策可包括所預測之相關聯ECNB指令及相應CHT條目內容。若未預測ECNB指令,則預測資訊指示規則執行。若預測ECNB指令執行為NOP指令,則追蹤資訊向校正電路318通知執行狀態及相關聯條件評估以判定是否產生不正確預測。若產生不正確預測,則校正電路318清空管線,更新CHT 312中之適當執行狀態計數器,且在一實施例中標記相關聯CHT條目以指示自此點開始不預測此特定ECNB指令。在另一實施例中,校正電路318亦可在判定ECNB指令被誤預測後改變預先指定之評估準則,以由此點開始使預測準則更穩妥。
應認識到,可寫碼迴圈中之入選條件非分支(ECNB)指令之序列使得每一指令視相同條件解析而定。在此狀況下,可將ECNB指令之序列視為與條件歷史表(CHT)中之單一條目有關的群組。在此狀況下,當預測指示不執行時,將ECNB指令之序列視為無操作(NOP)指令之序列。舉例而言,ECNB指令之群組可包括兩個條件載入運算元指令以及接著的條件算術指令,該條件算術指令指定對兩載入運算元執行之運算。此外,三個ECNB指令視相同條件解析而定。在管線式處理器中,可較早在管線中將此等三個指令識別為具有相同條件解析之條件群組。在一實施例中,管線中之該群組之第一條件載入指令觸發一預測評估且CHT中之條目可標記為與ECNB指令之此群組相關聯。以此方式,ECNB指令之該群組與至CHT中之單一索引相關聯,使得ECNB群組之所有指令評估為相同索引。
應認識到,可在迴圈外辨識入選條件非分支(ECNB)指令且亦可有利地將該指令預測為不執行。充當位址範圍偵測電路之偵測電路304偵測將評估ECNB指令預測所處之位址範圍。每當提取進入位址範圍之程式碼時,啟用ECNB指令預測電路300且監視並評估位址範圍內之ECNB指令。當滿足評估準則時,藉由以與先前描述類似之方式操作的追蹤及校正來預測是否執行ECNB指令。
進一步認識到,並非所有迴圈或位址範圍具有類似特性。若特殊迴圈或位址範圍提供不良預測結果,則可標記該迴圈或位址範圍以停用預測。以類似方式,特殊迴圈或位址範圍可在一操作情形集合下以優良預測操作且可在一不同操作情形集合下以不良預測操作。在此狀況下,對操作情形之辨識允許啟用預測、停用預測或在適用於操作情形之不同評估準則下啟用預測。
圖4A說明用於預測ECNB指令之執行的第一程序400。在區塊402處,監視處理器程式碼執行以偵測軟體迴圈。在決策區塊404處,做出是否已到達程式碼中已偵測到軟體迴圈之點的判定。如上所述,可(例如)藉由識別至迴圈之開始處的反向分支來判定軟體迴圈。若尚未識別到軟體迴圈,則第一程序400返回至區塊402。若已識別到軟體迴圈,則在程式碼中此點處,已執行軟體迴圈之第一循環且可準備開始軟體迴圈之下一循環。
在決策區塊406處,在軟體迴圈之下一循環中,做出在(例如)管線解碼級(諸如,圖2之解碼級231)期間是否已偵測到ECNB指令之判定。若尚未偵測到ECNB指令,則程序400進行至決策區塊408。在決策區塊408處,做出是否已完成對軟體迴圈之遍歷(pass)的判定。可藉由(例如)到達在區塊404識別軟體迴圈之反向分支來判定對軟體迴圈之第一次遍歷。若尚未完成對軟體迴圈之遍歷,則第一程序400返回至決策區塊406以繼續檢查ECNB指令。在決策區塊406處,若已偵測到ECNB指令,則第一程序400進行至決策區塊410。在決策區塊410處,在處理器解碼級231期間做出(例如)是否滿足此ECNB指令之預先指定之評估準則的判定。預先指定之評估準則可為(例如)迴圈反覆計數是否大於或等於預先指定之值(諸如,3)。若不滿足預先指定之評估準則,則第一程序400進行至區塊412。在區塊412處,執行此ECNB指令且更新此ECNB指令之執行狀態。舉例而言,若有條件地執行ECNB指令,則設定停用預測旗標。一旦設定停用預測旗標,則(例如)直至完成軟體迴圈方可對其進行重設。
在決策區塊408處,做出是否已完成對軟體迴圈之遍歷的判定。若已完成對軟體迴圈之遍歷,則第一程序400進行至決策區塊414。在決策區塊414處,做出軟體迴圈是否完結之判定。若軟體迴圈未結束,則第一程序400進行至區塊416。在區塊416處,對迴圈反覆進行計數且第一程序400返回至決策區塊406以保持檢查ECNB指令。若軟體迴圈結束,則第一程序400進行至區塊418。在區塊418處,重設第一程序400中所使用之預測電路。此重設允許在每次進入軟體迴圈時藉由重新起始之電路開始預測評估。或者,可在每當偵測到新軟體迴圈時進行重設。接著,第一程序400返回至區塊402以開始搜尋下一軟體迴圈。
返回至決策區塊410,若滿足預先指定之準則,則第一程序400進行至決策區塊420。在決策區塊420處,做出關於是否滿足此ECNB指令之執行條件的判定。舉例而言,執行條件可採用用於此ECNB指令之停用預測旗標的形式。每當有條件地執行ECNB指令之執行個體時,大體上將設定停用預測旗標。一旦設定此停用預測旗標,則(例如)直至完成軟體迴圈方可對其進行重設。返回至決策區塊420,若停用預測旗標處於指示先前曾執行ECNB指令之停用預測狀態,則第一程序400返回至區塊412。若停用預測旗標處於指示先前尚未執行ECNB指令之啟用預測狀態,則第一程序400進行至區塊421。在區塊421處,預測此ECNB指令執行為NOP指令。在區塊422處,在處理器管線中追蹤預測。在決策區塊424處,在判定與此ECNB指令相關聯之條件的管線級處,做出區塊420之預測是否正確之判定。若預測正確,則程序400返回至區塊408,此係由於可能需要評估軟體迴圈中之其他ECNB指令。若預測不正確,則第一程序400進行至區塊426。在區塊426處,起始處理器管線之清空程式以移除經不正確預測之ECNB指令及管線中可能受到預測操作影響的任何指令。在區塊426處,將管線校正至偵測此ECNB指令之點。接著,程序400返回至區塊412,其中可接著執行此ECNB指令且更新其相關聯執行狀態。
圖4B說明用於預測ECNB指令之執行的第二程序450。在區塊452處,監視處理器程式碼執行以偵測ECNB指令。在決策區塊454處,做出在(例如)管線解碼級(諸如,圖2之解碼級231)期間是否已偵測到ECNB指令之判定。若尚未偵測到ECNB指令,則第二程序450返回至區塊452。若已偵測到ECNB指令,則第二程序450進行至決策區塊456。在決策區塊456處,在處理器解碼級231期間做出(例如)是否滿足此ECNB指令之預先指定之評估準則的判定。預先指定之評估準則可為(例如)與ECNB指令相關聯之迴圈反覆計數是否大於或等於預先指定之值(諸如,3)。若尚未滿足預先指定之評估準則,則第二程序450進行至區塊458。在區塊458處,執行此ECNB指令且更新此ECNB指令之執行狀態計數器。
在決策區塊460處,做出是否已偵測到軟體迴圈之判定。如上所述,可藉由(例如)識別程式碼中之反向分支來判定軟體迴圈。若尚未偵測到軟體迴圈,則第二程序450返回至區塊452以檢查另一ECNB指令。若已偵測到軟體迴圈,則第二程序450進行至區塊462。在區塊462處,初始化不為所偵測到之迴圈之部分的ECNB指令之執行狀態計數器,此係由於在第二程序450中,僅預測軟體迴圈中之ECNB指令。圖4B涵蓋在具有迴圈外之其他ECNB指令的程式碼序列中偵測到該迴圈的預期狀況。迴圈外之其他ECNB指令影響CHT容量且可限制在所偵測到之迴圈中評估之ECNB指令之數目。因此,重新起始迴圈外之所遇到之ECNB指令的執行狀態計數器且如以下進一步詳細描述來調整CHT邏輯。
可自ECNB指令之位址及軟體迴圈之位址範圍來判定不為所偵測到之軟體迴圈之部分的ECNB指令。調整條件歷史表(CHT)之開始條目以表示軟體迴圈中偵測到之ECNB指令。亦應注意,可將不為所偵測到之迴圈之部分的ECNB指令之執行狀態計數器重新分配至CHT以增加用於軟體迴圈內ECNB指令之CHT容量。在決策區塊464處,做出軟體迴圈是否完結之判定。若軟體迴圈未結束,則第二程序450進行至區塊466。在區塊466處,對迴圈反覆進行計數且程序返回至區塊452。若軟體迴圈結束,則第二程序450進行至區塊468。在區塊468處,重設第一程序400中所使用之預測電路。此重設允許在每次進入軟體迴圈時藉由重新起始之電路開始預測評估。或者,可在每當偵測到新軟體迴圈時進行重設。
返回至決策區塊456,若滿足預先指定之準則,則第二程序450進行至決策區塊470。在決策區塊470處,做出是否將此ECNB指令執行為無操作(NOP)指令之判定。舉例而言,可預測此ECNB指令執行由該ECNB指令指定之功能。在此狀況下,第二程序450進行至區塊458。或者,可預測此ECNB指令執行為NOP指令。在區塊472處,在處理器管線中追蹤預測。在決策區塊474處,在判定與此ECNB指令相關聯之條件的管線級處,做出區塊470之預測是否正確之判定。若預測正確,第二程序450返回至區塊460。若預測不正確,則第二程序450進行至區塊476。在區塊476處,起始處理器管線之清空程式以移除經不正確預測之ECNB指令及管線中可能受到預測操作影響的任何指令。在區塊478處,由於發現正被評估之軟體迴圈中之不正確預測,重設第二程序450中所使用之預測電路。接著,第二程序450返回至區塊452。或者,可對ECNB指令狀態計數器進行校正以反映不正確預測且程序可繼續。
圖5說明用於預測ECNB指令之執行的第三程序500。在區塊502處,監視處理器程式碼執行以判定處理器是否正執行自預先指定之位址範圍提取之程式碼。舉例而言,編譯器或其他軟體工具可識別程式碼區段中之ECNB指令且使用所識別之ECNB指令之位址來一般化預先指定之位址範圍。在決策區塊504處,做出在(例如)管線提取級(諸如,圖2之提取級230)期間是否偵測到預先指定之位址範圍之判定。若尚未偵測到預先指定之位址範圍,則第三程序500返回至區塊502。若已偵測到預先指定之位址範圍,則第三程序500進行至區塊506。在區塊506處,更新位址範圍計數器以指示進入特定位址範圍之次數。在區塊508處,監視處理器程式碼以偵測ECNB指令。在決策區塊510處,做出在(例如)管線解碼級(諸如,圖2之解碼級231)期間是否已偵測到ECNB指令之判定。若尚未偵測到ECNB指令,則第三程序500進行至決策區塊512。在決策區塊512處,做出處理器是否仍在執行預先指定之位址範圍內之程式碼的判定。若處理器並非正在執行預先指定之位址範圍內之程式碼,則第三程序500進行至區塊502。若處理器正在執行預先指定之位址範圍內之程式碼,則第三程序500進行至區塊508。
返回至決策區塊510處,若已偵測到ECNB指令,則第三程序500進行至決策區塊514。在決策區塊514處,在圖2之處理器解碼級231期間做出(例如)是否滿足此ECNB指令之預先指定之評估準則的判定。選擇預先指定之評估準則以提供預測ECNB指令執行為NOP之高信賴度。舉例而言,在一實施例中,可設置預先指定之評估準則以要求ECNB指令之至少兩次先前嘗試執行具有較強不執行狀態。若不滿足預先指定之評估準則,則第三程序500進行至區塊516。在區塊516處,執行此ECNB指令且更新此ECNB指令之執行狀態計數器。接著,第三程序500返回至決策區塊512以判定處理器是否仍在執行預先指定之位址範圍內之程式碼,且若判定結果為肯定的,則返回至區塊508,否則返回至區塊502。
返回至決策區塊514,若滿足預先指定之評估準則,則第三程序500進行至區塊520。在區塊520處,此ECNB指令之執行經預測以執行為NOP指令。在區塊522處,在處理器管線中追蹤預測。在決策區塊524處,在判定與此ECNB指令相關聯之條件的管線級處,做出區塊520之預測是否正確之判定。若預測正確,則第三程序500返回至決策區塊512以判定處理器是否仍在執行預先指定之位址範圍內之程式碼,且若判定結果為肯定的,則返回至區塊508,否則返回至區塊502。
返回至決策區塊524,若預測不正確,則第三程序500進行至區塊528。在區塊528處,起始處理器管線之清空程式以移除經不正確預測之ECNB指令及管線中可能受到預測操作影響的任何指令。在區塊530處,更新用於此ECNB指令之預測電路。接著,程序500返回至區塊508。
圖6說明用於預測ECNB指令之執行的第四程序600。第四程序600評估ECNB指令是否重複地識別為在相同ECNB指令之識別之間具有相對較短或相對較長之處理器循環週期。相對較短之處理器循環週期可指示ECNB指令位於軟體迴圈中。相對較長之處理器循環週期可指示ECNB指令位於主要歸因於被叫常式而執行(諸如,當使用者下載用於顯示之視訊時)的位址範圍內。在此狀況下,可呼叫具有ECNB指令之MPEG解碼常式。
在區塊602處,監視處理器程式碼執行以偵測ECNB指令。在決策區塊604處,做出在(例如)管線解碼級(諸如,圖2之解碼級231)期間是否已偵測到ECNB指令之判定。若尚未偵測到ECNB指令,則第四程序600返回至區塊602。若已偵測到ECNB指令,則第四程序600進行至決策區塊606。在決策區塊606處,做出先前是否已識別到此ECNB指令之判定。若此識別為對此ECNB指令之第一次識別,則第四程序600進行至區塊608。在區塊608處,記錄此ECNB指令之位址。在區塊610處,將「命中」計數器起始為(例如)計數1。在區塊612處,開始一經過循環計數器(elapsed cycle counter)以對多次遇到此ECNB指令之間經過之循環的數目進行計數。應注意,在與中斷常式及直接記憶體存取操作相關聯之循環就計數之預期目的而言影響其準確性的情況下,可能需要篩選所計數之循環數目以考慮此等其他操作。在區塊614處,執行此ECNB指令且更新執行狀態計數器。接著,第四程序600返回至區塊602。
返回至決策區塊606,若先前已識別此ECNB指令,則第四程序600進行至區塊618。在區塊618處,評估已遇到此ECNB指令之次數及多次遇到之間經過之循環的數目。在區塊619處,更新「命中」計數器,儲存當前經過循環計數,且重新開始經過循環計數器以對下一週期中多次遇到之間經過之循環的數目進行計數。在決策區塊620處,做出是否評估預先指定之評估準則之判定。在一實施例中,可設置預先指定之評估準則以要求在執行狀態計數器中至少兩次先前嘗試執行具有較強不執行狀態,其中兩次遇到之間之處理器循環少於X個。在另一實施例中,可設置預先指定之評估準則以要求至少三次先前嘗試執行,每一次先前嘗試執行在執行狀態計數器中具有較強不執行狀態,其中三次遇到中之每一者之間的處理器循環至少為Y個,其中Y大於X。若不滿足預先指定之評估準則,則第四程序600返回至區塊614,其中執行此ECNB指令且更新執行狀態計數器。接著,程序返回進行至602。
返回至決策區塊620,若滿足預先指定之評估準則,則第四程序600進行至區塊624。在區塊624處,預測此ECNB指令之執行;例如,預測此ECNB指令執行為NOP指令。在區塊626處,在處理器管線中追蹤預測。在決策區塊628處,在判定與此ECNB指令相關聯之條件的管線級處,做出區塊624之預測是否正確之判定。若預測正確,則第四程序600返回至區塊602。若預測不正確,則第四程序600進行至區塊632。在區塊632處,起始處理器管線之清空程式以移除經不正確預測之ECNB指令及管線中可能受到預測操作影響的任何指令。在區塊634處,重設用於此ECNB指令之預測電路。接著,程序600返回至區塊602。
結合本文中所揭示之實施例所描述的各種說明性邏輯區塊、模組、電路、元件及/或組件可利用以下各項來實施或執行:通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯組件、離散閘或電晶體邏輯、離散硬體組件,或其經設計以執行本文中所描述之功能的任何組合。通用處理器可為微處理器,但在替代例中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。亦可將處理器實施為計算組件之組合,例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器或適於所要應用之任何其他此組態。
結合本文中所揭示之實施例所描述之方法可直接以硬體、以由處理器執行之軟體模組或以兩者之組合體現。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、抽取式碟片、CD-ROM或此項技術中已知的任何其他形式之儲存媒體中。儲存媒體可耦接至處理器,使得該處理器可自該儲存媒體讀取資訊且可將資訊寫入至該儲存媒體。在替代例中,儲存媒體可整合至處理器。
舉例而言,處理器210可經組態以在儲存於電腦可讀儲存媒體上之程式之控制下執行包括條件非分支指令之指令,該電腦可讀儲存媒體(例如)在本地與處理器直接相關聯(諸如,可經由指令快取記憶體獲得)或可經由I/O器件(諸如,I/O器件240或242中之一者)存取。I/O器件亦可存取駐留於在本地與處理器直接相關聯之記憶體器件(諸如,Dcache 228)中或可自另一處理器之記憶體存取的資料。電腦可讀儲存媒體可包括隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯獨記憶體(EPROM)、電可抹除可程式化唯獨記憶體(EEPROM)、緊密光碟(CD)、數位影音光碟(DVD)、其他類型之抽取式磁碟或任何其他合適之儲存媒體。
儘管在說明性實施例之內容中描述了本發明以在處理器系統中使用,但應認識到,熟習此項技術者可使用與上文論述及下文隨附之申請專利範圍相一致的廣泛多種實施。舉例而言,固定功能實施亦可利用本發明之各種實施例。
100...無線通信系統
120...遠端單元
125A...組件
125B...組件
125C...組件
130...遠端單元
140...基地台
150...遠端單元
180...前向鏈路信號
190...反向鏈路信號
200...處理器系統
210...處理器
212...快取記憶體系統
214...系統記憶體
216...輸入及輸出(I/O)系統
220...指令管線
222...條件非分支預測邏輯電路
224...指令快取記憶體(Icache)
226...記憶體控制器
228...資料快取記憶體(Dcache)
230...提取級
231...解碼級
232...發出級
233...執行級
234...完成級
235...運算元提取電路
240...I/O器件
242...I/O器件
246...偵測邏輯電路
248...監視邏輯電路
250...篩選器
252...條件歷史表
254...預測與固定邏輯電路
262...追蹤暫存器發出
263...追蹤暫存器執行
264...追蹤暫存器完成
300...入選條件非分支指令(ECNB)預測電路
304...偵測電路
306...監視器電路
308...預測與固定電路
310...篩選器電路
312...條件歷史表(CHT)電路
314...預測電路
316...追蹤電路
318...校正電路
400...用於預測ECNB指令之執行的第一程序
450...用於預測ECNB指令之執行的第二程序
500...用於預測ECNB指令之執行的第三程序
600...用於預測ECNB指令之執行的第四程序
圖1說明一無線通信系統;
圖2展示預測是否執行條件非分支指令之一例示性處理器系統;
圖3說明一例示性入選條件非分支(ECNB)指令預測電路;
圖4A說明預測ECNB指令之執行之第一程序;
圖4B說明預測ECNB指令之執行之第二程序;
圖5說明預測ECNB指令之執行之第三程序;及
圖6說明預測ECNB指令之執行之第四程序。
200...處理器系統
210...處理器
212...快取記憶體系統
214...系統記憶體
216...輸入及輸出(I/O)系統
220...指令管線
222...條件非分支預測邏輯電路
224...指令快取記憶體(Icache)
226...記憶體控制器
228...資料快取記憶體(Dcache)
230...提取級
231...解碼級
232...發出級
233...執行級
234...完成級
235...運算元提取電路
240...I/O器件
242...I/O器件
246...偵測邏輯電路
248...監視邏輯電路
250...篩選器
252...條件歷史表
254...預測與固定邏輯電路
262...追蹤暫存器發出
263...追蹤暫存器執行
264...追蹤暫存器完成
Claims (24)
- 一種用於不執行一已發出之條件非分支指令之方法,該方法包含:將一條件非分支指令識別為適合於一預測,該預測指示將不執行該適合條件非分支(ECNB)指令;及回應於將不執行該ECNB指令之該預測,將該ECNB指令執行為一無操作(NOP)指令。
- 如請求項1之方法,其中執行該ECNB指令所需之一源運算元回應於該預測而不被提取。
- 如請求項1之方法,其中一通用暫存器檔中之一暫存器回應於該預測而不被保留以含有該ECNB指令之結果。
- 如請求項1之方法,其進一步包含:回應於一停用預測旗標而預測不執行該ECNB指令,該停用預測旗標指示在該預測所基於之一入選週期期間未發生該ECNB指令之先前成功執行。
- 如請求項1之方法,其進一步包含:在一歷史暫存器中記錄是否曾執行該ECNB指令;及回應於該歷史暫存器指示未執行該ECNB指令之至少一先前嘗試執行而預測不執行該下一ECNB指令之發生。
- 如請求項5之方法,其中該ECNB指令之該至少一先前嘗試執行係在一軟體迴圈中遇到。
- 如請求項5之方法,其中該ECNB指令之該至少一先前嘗試執行係在一預先指定之位址範圍中遇到。
- 如請求項5之方法,其中該ECNB指令之該至少一先前嘗試執行係在一所識別數目之處理器循環內遇到。
- 如請求項1之方法,其進一步包含:比較一評估準則值與一ECNB指令執行狀態計數器之一計數值輸出以啟用該預測,其中該ECNB指令執行狀態計數器在該計數值下滿值,該計數值較強地指示該ECNB指令之先前嘗試執行未被執行。
- 如請求項9之方法,其進一步包含:在一第一方向上更新該ECNB指令執行狀態計數器以指示有條件地執行該ECNB指令之一先前嘗試執行;及在一與該第一方向相反的第二方向上更新該ECNB指令執行狀態計數器以指示有條件地不執行該ECNB指令之一先前嘗試執行。
- 如請求項9之方法,其中該評估準則值為該第一計數值。
- 如請求項9之方法,其中該ECNB指令之該先前嘗試執行係在一軟體迴圈中遇到。
- 如請求項1之方法,其進一步包含:將一條件非分支指令識別為不適合用於一預測;及不經一預測而執行該不適合用於預測之條件非分支指令。
- 一種用於預測將不執行一條件非分支指令之裝置,該裝置包含:一第一電路,其用於接收一適合用於預測之條件非分 支指令及一不適合用於預測之條件非分支指令;一第二電路,其用於識別接收之指令係該適合用於預測之條件非分支指令;及一第三電路,其經致能以回應於滿足一評估準則而預測是否將不執行該適合條件非分支(ECNB)指令。
- 如請求項14之裝置,其進一步包含:一運算元提取電路,其回應於不執行之該預測而不提取執行該ECNB指令所需之一運算元。
- 如請求項14之裝置,其進一步包含:一管線追蹤電路,其用以在一用於預測之管線級之後的管線級中追蹤該預測;及一ECNB指令執行級電路,其回應於不執行之該預測而不執行該ECNB指令。
- 如請求項14之裝置,其進一步包含:一ECNB指令執行狀態計數器,其具有一根據該評估準則與一評估值進行比較之計數值輸出,其中該計數值係在一第一方向上更新以指示有條件地執行一ECNB指令並在一指示一較強執行歷史之第一計數值下滿值,且在一第二方向上更新以指示不執行一ECNB指令並在一指示一較強不執行歷史之第二計數值下滿值。
- 如請求項17之裝置,其中該評估值為該第二計數值。
- 如請求項14之裝置,其中該評估值為一處於一非作用中狀態之停用預測旗標,其中該停用預測旗標之該非作用中狀態指示啟用預測,其中在判定曾在一與該ECNB指 令相關聯之軟體迴圈中有條件地執行該ECNB指令的情況下將該停用預測旗標設定為一停用預測狀態。
- 如請求項14之裝置,其進一步包含:該第二電路將接收之指令識別為該不適合用於預測之條件非分支指令;及一第四電路,其用於不經預測而執行該不適合用於預測之條件非分支指令。
- 一種用於預測將不執行一條件非分支指令之方法,該方法包含:接收一適合用於預測之條件非分支指令及一不適合用於預測之條件非分支指令;識別接收之指令係該適合用於預測是否將執行之條件非分支指令;及回應於滿足一評估準則而預測將不執行該適合條件非分支(ECNB)指令,其中該評估準則要求該ECNB指令之至少一先前嘗試執行在預測前具有一較強地未被執行狀態。
- 如請求項21之方法,其中執行該ECNB指令所需之一源運算元回應於滿足該評估準則而不被提取。
- 如請求項21之方法,其中該ECNB指令回應於滿足該評估準則而執行為一無操作(NOP)指令。
- 如請求項21之方法,其中滿足該評估準則包含:記錄在一軟體迴圈內遇到之該等ECNB指令之先前嘗試執行的執行狀態之一歷史;及 根據該評估準則將該歷史與一評估值進行比較以指示是否已滿足該評估準則。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/543,847 US20110047357A1 (en) | 2009-08-19 | 2009-08-19 | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201118726A TW201118726A (en) | 2011-06-01 |
TWI436273B true TWI436273B (zh) | 2014-05-01 |
Family
ID=42835737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099127797A TWI436273B (zh) | 2009-08-19 | 2010-08-19 | 預測條件非分支指令之不執行之方法及裝置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20110047357A1 (zh) |
EP (1) | EP2467776B1 (zh) |
JP (2) | JP5734980B2 (zh) |
KR (1) | KR101513953B1 (zh) |
CN (1) | CN102483696B (zh) |
ES (1) | ES2741998T3 (zh) |
HU (1) | HUE044310T2 (zh) |
TW (1) | TWI436273B (zh) |
WO (1) | WO2011022493A1 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
CN102707988B (zh) * | 2011-04-07 | 2015-09-09 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
EP2508983A1 (en) * | 2011-04-07 | 2012-10-10 | VIA Technologies, Inc. | Conditional non-branch instruction prediction |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US20120311308A1 (en) * | 2011-06-01 | 2012-12-06 | Polychronis Xekalakis | Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches |
US9268569B2 (en) | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US9552032B2 (en) * | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9891922B2 (en) | 2012-06-15 | 2018-02-13 | International Business Machines Corporation | Selectively blocking branch prediction for a predetermined number of instructions |
US9317293B2 (en) * | 2012-11-28 | 2016-04-19 | Qualcomm Incorporated | Establishing a branch target instruction cache (BTIC) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media |
US9348599B2 (en) * | 2013-01-15 | 2016-05-24 | International Business Machines Corporation | Confidence threshold-based opposing branch path execution for branch prediction |
US20140258635A1 (en) * | 2013-03-08 | 2014-09-11 | Oracle International Corporation | Invalidating entries in a non-coherent cache |
US10509725B2 (en) | 2013-03-08 | 2019-12-17 | Oracle International Corporation | Flushing by copying entries in a non-coherent cache to main memory |
US20140281391A1 (en) * | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Method and apparatus for forwarding literal generated data to dependent instructions more efficiently using a constant cache |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
GB2534522B (en) * | 2014-07-25 | 2016-12-28 | Imagination Tech Ltd | Conditional branch prediction using a long history |
CN107179935B (zh) * | 2016-03-11 | 2021-01-29 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
CN108334337B (zh) * | 2018-01-30 | 2022-02-01 | 江苏华存电子科技有限公司 | 含自动管理功能的低延迟指令调度器及过滤猜测访问方法 |
GB2577502B (en) * | 2018-09-26 | 2021-09-08 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
US11099852B2 (en) * | 2018-10-25 | 2021-08-24 | Arm Limitied | Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon |
CN112540796B (zh) * | 2019-09-23 | 2024-05-07 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
US11243766B2 (en) * | 2019-09-25 | 2022-02-08 | Intel Corporation | Flexible instruction set disabling |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01205340A (ja) * | 1988-02-12 | 1989-08-17 | Nec Corp | データ処理装置 |
JPH01258031A (ja) * | 1988-04-06 | 1989-10-16 | Mitsubishi Electric Corp | データ処理装置 |
CA2060555A1 (en) * | 1991-04-24 | 1992-10-25 | Robert J. Bullions, Iii | System and method for draining an instruction pipeline |
JPH0675769A (ja) * | 1992-05-26 | 1994-03-18 | Nec Corp | 分岐予測機構 |
JP3683968B2 (ja) * | 1996-02-09 | 2005-08-17 | 富士通株式会社 | 情報処理装置 |
US5860017A (en) * | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
JPH1185515A (ja) * | 1997-09-10 | 1999-03-30 | Ricoh Co Ltd | マイクロプロセッサ |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6367004B1 (en) * | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
JP2000305795A (ja) * | 1999-04-20 | 2000-11-02 | Nec Corp | 並列処理装置 |
JP2000322257A (ja) * | 1999-05-10 | 2000-11-24 | Nec Corp | 条件分岐命令の投機的実行制御方法 |
US6442679B1 (en) * | 1999-08-17 | 2002-08-27 | Compaq Computer Technologies Group, L.P. | Apparatus and method for guard outcome prediction |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6629238B1 (en) * | 1999-12-29 | 2003-09-30 | Intel Corporation | Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration |
US6804770B2 (en) * | 2001-03-22 | 2004-10-12 | International Business Machines Corporation | Method and apparatus for using past history to avoid flush conditions in a microprocessor |
US7114059B2 (en) * | 2001-11-05 | 2006-09-26 | Intel Corporation | System and method to bypass execution of instructions involving unreliable data during speculative execution |
TW503997U (en) | 2001-12-14 | 2002-09-21 | Hon Hai Prec Ind Co Ltd | Optical switch device |
US20040230781A1 (en) * | 2003-05-16 | 2004-11-18 | Via-Cyrix, Inc. | Method and system for predicting the execution of conditional instructions in a processor |
US20040255103A1 (en) * | 2003-06-11 | 2004-12-16 | Via-Cyrix, Inc. | Method and system for terminating unnecessary processing of a conditional instruction in a processor |
US20050015578A1 (en) * | 2003-07-14 | 2005-01-20 | Kimming So | Two-bit branch prediction scheme using reduced memory size |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US20060190710A1 (en) * | 2005-02-24 | 2006-08-24 | Bohuslav Rychlik | Suppressing update of a branch history register by loop-ending branches |
US7263577B2 (en) * | 2005-03-03 | 2007-08-28 | Qualcomm Incorporated | Power saving methods and apparatus to selectively enable comparators in a CAM renaming register file based on known processor state |
US20060200654A1 (en) * | 2005-03-04 | 2006-09-07 | Dieffenderfer James N | Stop waiting for source operand when conditional instruction will not execute |
US7278012B2 (en) * | 2005-06-02 | 2007-10-02 | Qualcomm Incorporated | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions |
JPWO2008029450A1 (ja) * | 2006-09-05 | 2010-01-21 | 富士通株式会社 | 分岐予測ミスリカバリ機構を有する情報処理装置 |
US7925868B2 (en) * | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US9946550B2 (en) * | 2007-09-17 | 2018-04-17 | International Business Machines Corporation | Techniques for predicated execution in an out-of-order processor |
US8078852B2 (en) * | 2009-05-28 | 2011-12-13 | International Business Machines Corporation | Predictors with adaptive prediction threshold |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US9274795B2 (en) * | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
-
2009
- 2009-08-19 US US12/543,847 patent/US20110047357A1/en not_active Abandoned
-
2010
- 2010-08-18 HU HUE10750200 patent/HUE044310T2/hu unknown
- 2010-08-18 ES ES10750200T patent/ES2741998T3/es active Active
- 2010-08-18 JP JP2012525670A patent/JP5734980B2/ja active Active
- 2010-08-18 WO PCT/US2010/045910 patent/WO2011022493A1/en active Application Filing
- 2010-08-18 CN CN201080036831.4A patent/CN102483696B/zh active Active
- 2010-08-18 EP EP10750200.7A patent/EP2467776B1/en active Active
- 2010-08-18 KR KR1020127007089A patent/KR101513953B1/ko active IP Right Grant
- 2010-08-19 TW TW099127797A patent/TWI436273B/zh active
-
2015
- 2015-04-15 JP JP2015083212A patent/JP6345623B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013502657A (ja) | 2013-01-24 |
EP2467776A1 (en) | 2012-06-27 |
JP2015130206A (ja) | 2015-07-16 |
CN102483696A (zh) | 2012-05-30 |
JP6345623B2 (ja) | 2018-06-20 |
KR101513953B1 (ko) | 2015-04-21 |
ES2741998T3 (es) | 2020-02-12 |
CN102483696B (zh) | 2016-10-26 |
WO2011022493A1 (en) | 2011-02-24 |
JP5734980B2 (ja) | 2015-06-17 |
KR20120058555A (ko) | 2012-06-07 |
US20110047357A1 (en) | 2011-02-24 |
TW201118726A (en) | 2011-06-01 |
EP2467776B1 (en) | 2019-05-15 |
HUE044310T2 (hu) | 2019-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI436273B (zh) | 預測條件非分支指令之不執行之方法及裝置 | |
KR101788683B1 (ko) | 루프에 대한 데이터 프리페치 요청들을 취소하기 위한 방법들 및 장치 | |
RU2375745C2 (ru) | Энергоэффективный механизм упреждающей выборки инструкций | |
JP5172942B2 (ja) | プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US7278012B2 (en) | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions | |
US7975130B2 (en) | Method and system for early instruction text based operand store compare reject avoidance | |
US20070130450A1 (en) | Unnecessary dynamic branch prediction elimination method for low-power | |
US8028180B2 (en) | Method and system for power conservation in a hierarchical branch predictor | |
US20050149781A1 (en) | System and method for soft error handling | |
US7010676B2 (en) | Last iteration loop branch prediction upon counter threshold and resolution upon counter one | |
US9489204B2 (en) | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
Hu et al. | Low-Power Branch Prediction. |