TW201342231A - 執行複數快速條件分支指令與兩種條件分支指令的方法以及相關之微處理器、電腦程式產品以及管線式微處理器 - Google Patents

執行複數快速條件分支指令與兩種條件分支指令的方法以及相關之微處理器、電腦程式產品以及管線式微處理器 Download PDF

Info

Publication number
TW201342231A
TW201342231A TW102123152A TW102123152A TW201342231A TW 201342231 A TW201342231 A TW 201342231A TW 102123152 A TW102123152 A TW 102123152A TW 102123152 A TW102123152 A TW 102123152A TW 201342231 A TW201342231 A TW 201342231A
Authority
TW
Taiwan
Prior art keywords
conditional branch
instruction
branch instruction
fast
instructions
Prior art date
Application number
TW102123152A
Other languages
English (en)
Other versions
TWI506550B (zh
Inventor
G Glenn Henry
Terry Parks
Brent Bean
Original Assignee
Via Tech Inc
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 Via Tech Inc filed Critical Via Tech Inc
Publication of TW201342231A publication Critical patent/TW201342231A/zh
Application granted granted Critical
Publication of TWI506550B publication Critical patent/TWI506550B/zh

Links

Classifications

    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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
    • G06F9/3802Instruction prefetching
    • 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
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)

Abstract

一種管線式微處理器,包括一管線,具有複數階段,用以處理複數指令;一正規條件分支指令,包括在一程式中,其中管線式微處理器係用以對正規條件分支指令進行預測,並且若預測隨後被認定為不正確,則管線式微處理器清除複數管線指令;以及一快速條件分支指令,包括在程式中,其中管線式微處理器一直正確地分析快速條件分支指令,並且不對快速條件分支指令進行預測。

Description

執行複數快速條件分支指令與兩種條件分支指令的方法以及相關之微處理器、電腦程式產品以及管線式微處理器
本發明係有關於管線式微處理器,特別係有關於一管線式微處理器中執行條件分支指令(conditional branch instruction)。
當沒有控制流程指令時,微處理器依序地提取指令並執行該指令。換言之,預設動作就是讓微處理器先提取一指令,接著再提取下一個循序指令,然後再提取下一個循序指令,以此類推。然而,控制流程指令會命令微處理器脫離此循序提取制度。微處理器在其指令集架構(instruction set architecture)中包括某種型式的條件分支指令,用以指定一分支條件狀態(通常是一條件旗標(condition flag)或是一通用暫存器中之數值)及一分支條件(舉例而言,位元設定、位元清除、等於零或大於一定值)。條件分支指令也指定一分支目標位址(branch target address)。微處理器根據分支條件檢查分支條件 狀態,用以決定分支條件狀態是否滿足被條件分支指令所指定的分支條件。若分支條件狀態滿足分支條件,微處理器開始提取分支目標位址上之指令,而不是提取下一個循序指令。
正如眾所皆知的微處理器技術,現今的微處理器包括一個具有複數階段之管線(a pipeline of stages),每一階段執行有關程式指令之不同工作。在標準的管線式微處理器中,包括指令提取(instruction fetch)、指令解碼(instruction decode)、運算元提取(operand fetch)、執行(execute)以及寫回結果(result write-back)這五個階段。一程式中之條件分支指令會大大地增加微處理器執行程式所需的時間。這是因為在傳統上,執行階段(execute stage)係用以分析條件分支指令,即決定分支條件狀態是否滿足分支條件。其中一個原因是因為程式中之指令在程式順序(program order)中的順序可能會比條件分支指令還要舊(older),因此,在運算元提取階段可以提取條件分支指令之來源運算元(source operands)之前,微處理器必須等待直到執行單元產生上述比較舊之指令的結果(這些比較舊之指令的結果係為條件分支指令中用以構成(constitute)分支條件狀態的來源運算元),以便發出條件分支指令用以執行。然而,特別是在高度管線化(deeply pipelined)及/或亂序執行(out-of-order execution)微處理器中,微處理器可能已經提取以及處理許多程度不同的下一個循序指令(位於條件分支指令之後),並且在執行單元分析條件分支指令時,這些循序指令在程式順序中的順序要比條件分支指令還要新(newer)。若執行單元決定分支條件狀態滿足分支條件(即會發生(taken)條件分支 指令),微處理器必須清除(flush)所有位於條件分支指令之後依序提取的指令,並開始提取分支目標位址上之指令。這大大地增加了微處理器執行程式所需的時間。
為了解決此問題,現今的微處理器包括分支預測器(branch predictors)用以預測方向(direction)(即分支條件狀態是否會滿足分支條件(稱為“發生(taken)”),或不滿足分支條件(稱為“不發生(not taken)”)。然而,分支預測器可能會誤預測(mispredict)方向,在此情況下,因為微處理器必須清除管線中錯誤提取的指令,並開始提取正確位址上之指令(即根據是否發生正確的方向來決定該正確位址係為下一個循序位址或分支目標位址),所以微處理器需要承擔一分支誤預測代價(branch misprediction penalty)。再者,這會大大地增加程式執行時間,特別是在程式中具有一些難以準確預測之條件分支指令的情況下。因此,需要一種能夠及早正確地分析管線中之條件分支指令的方法,用以置換(override)分支預測器。舉例而言,該方法已揭露於Bose et al.所獲得之美國專利第5,805,876號“一種適用於一處理器之方法與系統,用以減少平均分支解析時間及有影響的誤預測代價”。然而,Bose et al.所提出之微處理器有一個缺點,就是該微處理器會選擇性地提早分析條件分支指令。換言之,該微處理器只在分支指令滿足一組特定的條件時,才會提早分析條件分支指令,例如第一個偵測到之條件分支指令係設置在一指令緩衝器中之第一可調度位置(dispatchable position)中。
因此,需要一種具有一改良技術之微處理器,用 以允許程式條件性地分支。
本發明提供一種管線式微處理器,包括一管線,具有複數階段,用以處理複數指令;一正規條件分支指令,包括在一程式中,其中管線式微處理器係用以對正規條件分支指令進行預測,並且若預測隨後被認定為不正確,則管線式微處理器清除複數管線指令;以及一快速條件分支指令,包括在程式中,其中管線式微處理器一直正確地分析快速條件分支指令,並且不對快速條件分支指令進行預測。
本發明提供另一種管線式微處理器,包括一快速條件分支指令,包括在一程式中,其中快速條件分支指令係命令管線式微處理器正確地分析快速條件分支指令,而不需要考慮程式中比快速條件分支指令還要舊之其他指令是否更新快速條件分支指令所使用之一快速分支條件;以及一正規條件分支指令,包括在程式中,其中正規條件分支指令藉由考慮程式中比正規條件分支指令還要舊的其他指令是否更新正規條件分支指令所使用之一正規分支條件,命令管線式微處理器正確地分析正規條件分支指令。
本發明提供一種執行兩種條件分支指令的方法,應用於具有用以處理指令的複數管線階段之一管線式微處理器,上述方法包括預測一正規條件分支指令,正規條件分支指令係包括在一程式中;預測隨後被認定為不正確,則清除複數管線指令;以及一直正確地分析一快速條件分支指令,並且不對快速條件分支指令進行預測,其中快速條件分支指令係包括 在程式中。
本發明提供另一種執行兩種條件分支指令的方法,應用於具有用以處理指令的複數管線階段之一管線式微處理器,上述方法包括不考慮一程式中比一快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用之一快速分支條件;在不需考慮程式中比快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用之快速分支條件的同時,命令管線式微處理器正確地分析快速條件分支指令;以及藉由考慮程式中比一正規條件分支指令還要舊的其他指令是否更新正規條件分支指令所使用之一正規分支條件,用以命令管線式微處理器正確地分析正規條件分支指令,其中正規條件分支指令係包括於程式中。
本發明之其中一個好處是,因為提取單元(或微碼單元)可在不需將快速條件分支(fast conditional branch;FCB)指令(在此之後簡稱為FCB指令)配送至執行管線的情況下,即可分析並引退FCB指令,因此執行FCB指令的速度會比執行傳統條件分支指令的速度還要快。此外,當程式設計師使用一FCB指令而不是一傳統條件分支指令時,由於提取單元正確地執行FCB指令,因此消除了與傳統條件分支指令有關的誤預測與校正。另一個好處在於相較於傳統條件分支指令,使用微處理器中較少的資源即可分析並引退FCB指令。舉例而言,因為FCB指令沒有被配送至執行管線中,所以FCB指令不會佔用暫存器別名表中的項目(entries)、保留站、執行單元或重新排序緩衝器。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下。
100‧‧‧微處理器
104‧‧‧提取單元
106‧‧‧指令快取
108‧‧‧指令解碼器
112‧‧‧指令指位器
114、132‧‧‧多工器
116‧‧‧位址遞增電路
118‧‧‧分支預測器
122‧‧‧方向分析器
124‧‧‧快速分支條件狀態(FBCS)
126‧‧‧提取位址控制器
128‧‧‧微碼單元
134‧‧‧暫存器別名表
136‧‧‧指令排程器
138‧‧‧執行單元
142‧‧‧正規分支條件狀態(NBCS)
144‧‧‧引退單元
146、148‧‧‧正規指令
152‧‧‧多工器選擇訊號
154‧‧‧下一個指令指位器位址
156‧‧‧預測目標位址
158‧‧‧預測方向
160‧‧‧偵測指標
162‧‧‧目標位址
164‧‧‧查見指示
166‧‧‧條件
168‧‧‧提取位址
172‧‧‧方向
174‧‧‧指令結果
176‧‧‧正確目標位址
178‧‧‧誤預測指示
182‧‧‧分析指標
186‧‧‧結果
188‧‧‧指令
192‧‧‧擱置旗標
506‧‧‧微碼唯讀記憶體
第1圖係為本發明之一微處理器之方塊圖;第2圖係為本發明之第1圖中之微處理器的一操作流程圖,此流程圖用以執行一FBCSUI指令;第3圖係為本發明之第1圖中之微處理器的一操作流程圖,此流程圖用以執行一FCB指令;第4圖係為本發明之第1圖中之微處理器的一操作流程圖,此流程圖用以執行一NCB指令;第5圖係為本發明之另一微處理器之方塊圖;第6圖係為本發明之第5圖中之微處理器的一操作流程圖,此流程圖用以執行一FBCSUI指令;第7圖係為本發明之第5圖中之微處理器的一操作流程圖,此流程圖用以執行一FCB指令;第8圖係為本發明之第5圖中之微處理器的一操作流程圖,此流程圖用以執行一NCB指令。
關於上述問題,傳統方法有一個缺點就是它們依靠微處理器來決定微處理器可以提早分析管線中之一條件分支指令的情況,並且若此情況不存在,則微處理器必須要仰頼預測條件分支指令,若預測錯誤,微處理器接著要承擔與校正 (例如清除、從正確的位址中提取以及執行)有關的代價。本發明人已注意到有些時候,寫程式之程式設計師(或用以將一高階語言程式編譯/翻譯成一機器語言(machine language)程式之編譯器/翻譯器)知道或可以控制更新分支條件狀態的相關情況(circumstance),而此分支條件狀態將會被程式中之一條件分支指令所使用。本發明人利用此觀察結果將一特殊型式之條件分支指令(在這裡稱為FCB指令)包括在一微處理器中之指令集內,程式設計師會將FCB指令包括在他的程式中,用以命令微處理器非選擇性地且正確地提早分析管線中之提取單元內的FCB指令,而不是將FCB指令傳送至執行單元中被分析,再對FCB指令進行預測。為了回應偵測到FCB指令,提取單元會非選擇性且正確地分析FCB指令。換言之,提取單元會一直正確地分析FCB指令,而不是在某些情況下預測FCB指令並接著將其傳送至執行單元中被分析。這需要提取單元進行等待直到最新的狀態更新指令已經將分支條件狀態更新,並且此最新的狀態更新指令在程式順序中的順序比FCB指令還要新。若分支條件狀態已經更新,則提取單元使用更新過的狀態來分析條件分支指令。然而,微處理器之指令集中的FCB指令能夠使程式設計師將狀態更新指令安排在FCB指令之前,使得提取單元遇到FCB指令時,提取單元能夠立即地分析FCB指令。這將會有大地助益,因為避免了分支誤預測的可能性以及管線式微處理器中與此相關的伴隨代價(concomitant penalty)。FCB指令之避免誤預測的優點在缺少分支預測的情況下更為顯著,例如在一低成本及/或低功耗微處理器或微控制器中,或在一微處理器之 一微碼(microcode)單元中的微定序器(microsequencer)中,例如根據本發明之一實施例。
在程式中,FCB指令係在一狀態更新指令之後輸入,狀態更新指令係用以更新FCB指令所指定的分支條件狀態。雖然在執行單元將分支條件狀態更新之前,提取單元要等待分析FCB指令,但FCB指令能夠使程式設計師將狀態更新指令安排在FCB指令之前,使得提取單元遇到FCB指令時,執行單元已經將狀態更新,並且提取單元可以立即正確地分析FCB指令。在一實施例中,程式設計師將用以執行等待函式(wait function)之一明確等待指令(explicit wait instruction)包括在程式中之狀態更新指令與FCB指令之間,在另一實施例中,提取單元在遇到FCB指令時,暗中地執行等待函式。
請參考第1圖,第1圖係用以顯示本發明之一微處理器100之一方塊圖。
在一實施例中,微處理器100會將使用者程式儲存至一外部記憶體(圖未顯示)中。使用者程式包括作業系統、應用程式、系統基本輸入/輸出系統(system BIOS),或其他寫入/翻譯/編譯成微處理器之原生(native)指令集的程式。指令快取106會從外部記憶體中提取使用者程式指令。指令快取106係用以暫時儲存最常提取的指令。在一實施例中,指令快取106係設置於微處理器100中。在其他實施例中,指令快取106設置於微處理器100的外部。
微處理器100中之提取單元104係用以提取來自指令快取106中之指令。提取單元104包括一指令解碼器108,用 以決定被提取之指令的種類。從指令快取106中提取的指令包括FCB指令以及正規指令,正規指令包括正規條件分支(normal conditional branch;NCB)指令(在此之後簡稱NCB指令)以及快速分支條件狀態更新指令(fastbranch condition state-updating instructions;在此之後簡稱FBCSUI指令)。正規指令是由微處理器100中之執行單元所執行的正規指令。當微處理器100決定出條件分支指令之正確的方向與正確的目標位址時,微處理器100則可正確地分析一條件分支指令(即NCB指令或FCB指令)。由於微處理器100可能最後會決定預測錯誤並且必須要自我校正,因此這與預測一條件分支指令之一微處理器100截然不同。FBCSUI指令用以更新快速分支條件狀態(fast branch condition state;在此之後簡稱FBCS指令)124,相關內容係說明如下。
FCB指令係在微處理器100之提取單元104中被正確地分析與引退(retired)。微處理器100中之執行單元138用以執行正規指令(包括NCB指令以及FBCSUI指令)。微處理器100中之引退單元144用以引退正規指令(包括NCB指令以及FBCSUI指令)。條件分支指令用以指定一分支條件與一分支目標位址。處理器用以檢查所儲存之分支條件狀態,以便決定該分支條件狀態是否滿足一被條件分支指令所指定的分支條件,即決定條件分支指令的方向。若分支條件狀態滿足該分支條件,則分支方向係為“發生”;反之分支方向係為“不發生”。若發生分支,分支目標位址則用以指定下一個欲執行的指令之位址。若沒有發生分支,下一個欲執行的指令係為位於 NCB指令或FCB指令之後的下一個循序指令。關於FCB指令、NCB指令以及FBCSUI指令的處理過程,將在以下段落作更詳細的說明。
在一實施例中,指令解碼器108包括一指令翻譯器,用以將微處理器100之一巨集指令集(macroinstruction set)中之巨集指令(例如x86指令集架構),翻譯成微處理器100之一微指令集架構(microinstruction set architecture)中之微指令。指令翻譯器可將巨集指令翻譯成一FCB指令、NCB指令、FBCSUI指令,或其他這裡所描述的指令。
指令解碼器108決定所提取的指令是否係為FCB指令、NCB指令、FBCSUI指令,或其他指令。若所解碼的指令係為NCB指令或其他正規指令,則指令解碼器108將正規指令146傳送至多工器132。若被解碼的指令係為FCB指令,則指令解碼器108在一FCB指令之查見指示(FCB指令seen indication)164上產生一真值(true value),並傳送至位於提取單元104中之FCB指令之方向分析器122。此外,指令解碼器108將FCB指令所指定的FCB指令之條件166,傳送至FCB指令之方向分析器122。舉例而言,FCB指令之條件166包括位元開啟(bit on)、位元關閉(bit off)、等於、小於、大於,並且熟知本領域技藝者應能了解,欲被估算之FBCS 124中的位元或欄位也被指定在FCB指令之條件166中。指令解碼器108也將FCB指令所指定的FCB指令之目標位址162,傳送至位於提取單元104中之多工器114。
FCB指令之方向分析器122用以分析提取單元104 中之FCB指令的方向。FCB指令之方向分析器122根據FCB指令之查見指示164、FCB指令之條件166以及FBCS 124,產生FCB指令之方向172至提取位址控制器126。若FBCS 124滿足FCB指令之條件166,那麼FCB指令之方向172係為真值;反之FCB指令之方向172係為假值。提取單元104一直正確地分析並引退FCB指令。因為提取單元104本身就會執行並引退所有的FCB指令,所以提取單元104不會將FCB指令配送(dispatch)至執行單元138與引退單元144中。
若被解碼之指令係為FBCSUI指令,則指令解碼器108在FBCSUI指令之偵測指標160上產生一真值,該FBCSUI指令之偵測指標160用以設定一FBCSUI指令之擱置旗標(FBCSUI_pending flag)192。微處理器100將FBCSUI指令之擱置旗標192初始化至一清除狀態。此外,當引退單元144藉由使用FBCSUI指令之結果186將FBCS 124更新,用以引退FBCSUI指令時,引退單元144在FBCSUI指令之分析指標182上產生一真值,而該FBCSUI指令之分析指標182用以清除FBCSUI指令之擱置旗標192。再者,若微處理器100清除FBCSUI指令(例如因為誤預測之NCB指令),則微處理器100清除FBCSUI指令之擱置旗標192。FBCSUI指令之擱置旗標192係供應至提取位址控制器126,提取位址控制器126使用FBCSUI指令之擱置旗標192,用以決定是否要停止提取來自指令快取106中的指令188,如以下所述。FBCSUI指令之結果186與FBCSUI指令之分析指標182亦會被供應至微碼單元128。
藉由使用FCB指令而不是NCB指令,程式設計師暗 示微處理器100,FBCS 124(或至少一部分被FCB指令指定為分支條件狀態的FBCS 124)即將會被更新,若尚未準備就緒,則使用FBCSUI指令,而該FBCSUI指令在程式順序中的順序要比FCB指令還要舊。被FBCSUI指令所更新的FBCS 124,可能係為微處理器100中許多不同的分支條件狀態中之一者。舉例而言,FBCSUI指令會將狀態從微處理器100中的其他部分轉移至FBCS 124,例如架構狀態,像是條件程式碼暫存器(舉例而言,x86 EFLAGS暫存器)或通用暫存器。此外,雖然第1圖之實施例顯示FBCS 124係位於提取單元104中,但在其他實施例中,FBCS 124包括處理器之架構狀態,例如條件程式碼暫存器或通用暫存器。
提取單元104也包括一分支預測器118。分支預測器118根據提取單元104中之指令指位器112,產生一預測目標位址156至多工器114,以及產生一預測方向158至提取位址控制器126,其中該提取單元104用以產生一提取位址168至指令快取106。特別是,分支預測器118用以指示提取位址控制器126,若提取位址168指定一條事先包括有條件分支指令的快取線(cache line),則預測目標位址156與預測方向158係為有效的。在一實施例中,分支預測器118用以預測正規條件分支指令,其中管線式微處理器在正確地分析正規條件分支指令之後,用以將一分支預測資訊儲存至分支預測器118中,並且管線式微處理器在正確地分析快速條件分支指令之後,則不將上述分支預測資訊儲存至分支預測器118中,上述分支預測資訊包含預測目標位址156以及預測方向158。在以下所述之一實施 例中,提取單元104會禁止對FCB指令進行分支預測。
提取單元104中之提取位址控制器126產生一多工器選擇訊號152至多工器114,用以選擇提取位址168,提取位址168係用以從指令快取106中提取下一個指令。提取位址控制器126根據一NCB指令之誤預測指示178,產生多工器選擇訊號152用以選擇NCB指令之正確目標位址(NCB correct target address)176。或者,提取位址控制器126根據一FCB指令之方向172(用以指示發生FCB指令),產生多工器選擇訊號152用以選擇FCB指令之目標位址162。或者,提取位址控制器126根據一預測方向158(用以指示發生NCB指令),產生多工器選擇訊號152用以選擇預測目標位址156。或者,提取位址控制器126產生多工器選擇訊號152用以選擇下一個指令指位器位址(next sequential IP address,NSIP)154。下一個指令指位器位址154係為指令快取106中位於提取位址168之後的下一個循序位址。每當指令指位器112產生一提取位址168,一位址遞增電路116產生下一個指令指位器位址154。
在一實施例中,分支預測器118包括一分支目標快取(圖未顯示)。當提取位址168擊中(hits in)分支目標快取時,分支預測器118則會產生預測目標位址156與預測方向158至提取位址控制器126。微處理器100使用位址與事先執行之條件分支指令的分析目標位址,用以更新分支目標快取。此外,微處理器100根據先前執行的條件分支指令的分析方向,使用分支預測資訊用以更新分支目標快取。在一實施例中,由於提取單元104正確地分析並引退FCB指令,所以微處理器100不會根據 執行之FCB指令來更新分支目標快取。藉由一直正確地分析提取單元104中之FCB指令,微處理器100有利地避免承擔一與FCB指令處理有關的分支誤預測代價。然而,以下將描述微處理器100可能要承擔與NCB指令處理有關的分支誤預測代價。
指令指位器112用以接收並儲存提取單元104之多工器114所選擇的位址。指令指位器112用以提供提取位址168至指令快取106,以便提取來自指令快取106中之一快取線。
位於提取單元104外部之多工器132,從兩個來源接收指令並在這兩個來源之間做出選擇。第一個來源係為從指令快取106中提取並由提取單元104所提供的正規指令146。第二個來源係為微處理器100中之一微碼單元128所提供的正規指令148。微碼單元128包括微碼程序(microcode routines),舉例而言,微碼程序用以執行複雜指令並處理某些異常條件(exception conditions)。實施例中可考慮不將微碼單元128包括在微處理器100中。
微處理器100包括一暫存器別名表(register alias table;RAT)134,用以決定正規指令146或148之運算元相依性(operand dependencies)。分析出運算元相依性之後,暫存器別名表134將正規指令146或148傳送至微處理器100中之一指令排程器(instruction scheduler)136。在一實施例中,上述暫存器別名表134為一相依性檢查單元。在一實施例中,微處理器100也包括一重新排序緩衝器(re-order buffer;ROB),該重新排序緩衝器係包括在引退單元144內,用以儲存微處理器100中各個未引退(unretired)指令的狀態資訊。即使正規指令(146、 148)係在程式順序外執行,重新排序緩衝器也能確保正規指令(146、148)在程式順序中被引退。在將指令配送至一保留站(reservation station)之前(以下會說明),暫存器別名表134會在重新排序緩衝器中配置一項目(entry)給各個指令。指令排程器136用以將正規指令146或148安排至執行單元138加以執行。在一實施例中,微處理器100包括保留站(圖未顯示),保留站係為指令佇列(instruction queues),用以儲存正在等待其運算元之指令,所以可藉由指令排程器136,將這些正在等待其運算元之指令傳送至執行單元138(亂序執行微處理器)。在一實施例中,微處理器100會執行亂序指令,而指令排程器136使用暫存器別名表134所產生之相依性資訊,用以安排適當的指令執行。
在一實施例中,一發送邏輯單元(例如指令排程器136)耦接於提取單元104與執行單元138之間,用以從提取單元104中接收不同於上述快速條件分支指令之複數指令並且發送至執行單元138加以執行,上述發送邏輯單元更在分析出上述指令之複數相依性之前,等待用以將不同於上述快速條件分支指令之各個上述指令發送至執行單元138,其中提取單元104非選擇性地禁止將上述快速條件分支指令傳送至上述發送邏輯單元。
在一實施例中,一發送邏輯單元(例如指令排程器136)耦接至執行單元138,用以將不同於上述快速條件分支指令之複數指令,發送至執行單元138加以執行,其中上述發送邏輯單元在每一個時脈週期中包括一預定最大數量之複數發送槽,用以將不同於上述快速條件分支指令之上述指令發送至 執行單元138。由於提取單元104非選擇性且正確地分析上述快速條件分支指令,所以微處理器不需要在每一個上述時脈週期中消耗上述發送槽之任一者。
在一實施例中,一列表(例如暫存器別名表134)耦接至執行單元138,用以儲存不同於上述快速條件分支指令之複數指令所相關的複數運算元相依性資訊,以便確保上述指令之正確執行順序,其中上述指令係發送至執行單元138。由於提取單元104非選擇性且正確地分析上述快速條件分支指令,所以上述微處理器禁止將任何關於上述快速條件分支指令之上述運算元相依性資訊,儲存至上述列表中。
在一實施例中,一個或更多個指令佇列(例如指令排程器136中的指令佇列)耦接至執行單元138,用以儲存不同於上述快速條件分支指令之複數指令,其中上述指令等待被發送至執行單元138用以執行。由於提取單元104非選擇性且正確地分析上述快速條件分支指令,所以微處理器禁止將上述快速條件分支指令儲存至上述指令佇列中。
在一實施例中,一相依性檢查單元用以根據程式中之其他指令,決定正規條件分支指令之複數相依性,其中管線式微處理器用以在上述相依性檢查單元根據上述程式中之其他指令決定上述正規條件分支指令的複數正規分支條件狀態相依性之後,正確地分析上述正規條件分支指令。上述管線式微處理器正確地分析快速條件分支指令,而不需要將上述快速條件分支指令配送至上述相依性檢查單元,藉此上述管線式微處理器處理上述快速條件分支指令所花費的時脈週期小於 處理上述正規條件分支指令所花費的時脈週期。
NCB指令用以根據正規分支條件狀態(normal branch condition state;在此之後簡稱為NBCS)142指定一分支條件。NBCS 142可使用在NCB指令之前所提取之正規指令的結果來進行更新。因此,指令排程器136等待將NCB指令傳送至執行單元138,直到比較舊的指令(即用以更新NBCS 142的指令)已經產生其結果並使執行單元138可以利用此結果。NBCS 142可包括微處理器100中之結構上可見的暫存器(architecturally visible registers),舉例而言,例如通用暫存器及/或條件程式碼暫存器,或x86 EFLAGS暫存器。
在一實施例中,快速條件分支指令係命令管線式微處理器正確地分析快速條件分支指令,而不需要考慮程式中比快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用之一快速分支條件;正規條件分支指令藉由考慮上述程式中比正規條件分支指令還要舊的其他指令是否更新上述正規條件分支指令所使用之一正規分支條件,命令管線式微處理器正確地分析正規條件分支指令。
微處理器100中之執行單元138執行所有的正規指令146與148,包括NCB指令。執行單元138藉由使用NBCS 142來執行NCB指令。若NBCS 142滿足NCB指令中所指定的分支條件,則發生分支並且使用NCB指令所指定的分支目標位址來提取指令。若NBCS 142不滿足NCB指令中所指定的分支條件,則不發生分支,並且提取單元104從位於指令快取106中之NCB指令的位址之後的下一個循序位址中提取指令,亦或是微碼單元 128從位於第5圖中之微碼單元128中之微碼唯讀記憶體506的位址之後的下一個循序位址中提取指令。
執行單元138將所有執行之正規指令(包括NCB指令)的結果傳送至引退單元144。引退單元144持續追蹤被傳送至執行單元138中的指令以及其執行狀態、將執行之指令的結果寫回,並且引退程式順序中之指令。特別是,引退單元144寫入一指令結果174,該指令用以更新NBCS 142。在用以更新NBCS 142之指令已經將指令結果174寫入至NBCS 142之後,引退單元144會引退NCB指令。引退單元144會產生一NCB指令之誤預測指示178至提取單元104中之提取位址控制器126中,用以指示分支預測器118是否誤預測NCB指令。
若NCB指令係誤預測,則微處理器100會清除管線中所有在程式順序中的順序比NCB指令還要新的指令;引退單元144引退NCB指令;提取位址控制器126會產生多工器選擇訊號152用以選擇由引退單元144所提供之NCB指令之正確目標位址176,NCB指令之正確目標位址176係事先被執行單元138分析並被多工器114選擇用以載入至指令指位器112;而提取單元104則從指令快取106中提取指令指位器112所產生的提取位址168上的指令。因此,微處理器100可能要承擔一與NCB指令處理有關的分支誤預測代價,但是與FCB指令無關。
下表1描述了一程式中之程式碼片段(code snippet),包括了一FCB指令與FBCSUI指令,這將有助於說明第1圖中之微處理器100的運作。
(1)FBCSUI指令
表1中之程式的指令係按照程式順序編號。程式片段中之第一行包括一FBCSUI指令。程式片段中之最後一行包括一FCB指令。第二行到第五行包括其他指令(標記為指令1、指令2~指令N)。亦即,FCB指令並非緊接在FBCSUI指令之後。程式設計師試圖在FBCSUI指令與FCB指令之間包括一些指令,使得提取單元104只在引退單元144已將FBCS 124更新、清除FBCSUI指令之擱置旗標192時提取FCB指令。在一實施例中,介於中間之指令(intervening instructions)的數量近似於提取單元104與引退單元144之間的管線階段數量。在一實施例中,提取單元104與引退單元144之間的管線階段數量大約為10。因此,在程式設計師適當地將FCB指令安排在FBCSUI指令之後的情況下,提取單元104可能會在NCB指令被執行單元138執行以及被引退單元144引退的好幾個時脈週期之前,就能非選擇性且正確地執行並引退FCB指令。此外,在分支預測器118誤預測一NCB指令的情況下,由於程式設計師在程式中所使用為一適當安排的FCB指令(而不是誤預測之NCB指令),故可節省大量的時脈週期。
請參考第2圖,第2圖係顯示本發明之第1圖中之微 處理器100的一操作流程圖。此流程圖用以執行一FBCSUI指令。流程從步驟202開始。
在步驟202中,提取單元104會從指令快取106中提取一指令,將該指令解碼,並決定該指令係為一FBCSUI指令,例如表1中之第一行中的FBCSUI指令。流程前進至步驟204。
在步驟204中,提取單元104會設置(asserts)FBCSUI指令之偵測指標160,該FBCSUI指令之偵測指標160用以設定FBCSUI指令之擱置旗標192。流程前進至步驟206。
在步驟206中,提取單元104會將FBCSUI指令配送至執行管線(即配送至多工器132、暫存器別名表134、指令排程器136、執行單元138以及引退單元144)加以執行。流程前進至步驟208。
在步驟208中,執行單元138會執行FBCSUI指令,而引退單元144引退FBCSUI指令。換言之,引退單元144將FBCSUI指令之結果186寫入至FBCS 124,並且設置FBCSUI指令之分析指標182,用以清除FBCSUI指令之擱置旗標192。值得注意的是,在提取單元104根據介於中間之指令(例如上述表1中之第二到第五行中的指令)的數量與混合,以及微處理器100管線之組態與狀態,將表1中之第六行中的FCB指令提取並解碼(如以下第3圖中之步驟302所述)之前,步驟208中的動作可能會或不會發生。流程結束於步驟208。
請參考第3圖,第3圖為顯示本發明之第1圖中之微處理器100的一操作流程圖。此流程圖用以執行一FCB指令。 流程從步驟302開始。
在步驟302中,提取單元104會從指令快取106中提取一指令,將該指令解碼,並決定該指令係為一FCB指令,例如表1中之第六行中的FCB指令。流程前進至步驟304。
在步驟304中,提取單元104會根據用以解碼一FCB指令之指令解碼器108,藉由分支預測器118來禁止分支預測。流程前進至決定步驟306。
在決定步驟306中,提取位址控制器126會檢查FBCSUI指令之擱置旗標192,並決定FBCSUI指令是否係為擱置狀態。若FBCSUI指令係為擱置狀態,則流程前進至步驟308;反之,流程前進至步驟312。
在步驟308中,提取位址控制器126會停止從指令快取106中提取指令,直到FBCSUI指令被分析。因此,流程回到決定步驟306。
在步驟312中,提取單元104中之指令解碼器108會分析FCB指令之目標位址162,FCB指令之方向分析器122根據FCB指令之條件166與FBCS 124,用以分析FCB指令之方向172,並且若發生FCB指令之方向172,則提取位址控制器126控制多工器114選擇FCB指令之目標位址162用以載入至指令指位器112;若未發生FCB指令之方向172,則提取位址控制器126控制多工器114選擇下一個指令指位器位址154,用以載入至指令指位器112。流程前進至步驟314。
在步驟314中,提取位址控制器126會重新開始從指令快取106中提取位於提取位址168上的指令,其中該提取位 址168係由指令指位器112所提供。流程前進至步驟316。
在步驟316中,提取單元104會引退FCB指令。特別是,由於提取單元104一直非選擇性地且正確地分析FCB指令,所以提取單元104不會將FCB指令配送至執行管線加以執行與引退。流程結束於步驟316。
請參考第4圖,第4圖係顯示本發明之第1圖中之微處理器100的一操作流程圖。此流程圖用以執行一NCB指令。第4圖係用以說明微處理器100在執行FCB指令與NCB指令之操作的不同之處,以及微處理器100之指令集架構中具有FCB指令、NCB指令的好處。流程從步驟402開始。
在步驟402中,提取單元104會從指令快取106中提取一指令,將該指令解碼,並決定該指令係為一NCB指令,並將該指令配送至執行管線中。再者,提取單元104會根據分支預測器118所產生之NCB指令的預測,用以繼續提取指令。流程前進至步驟404。
在步驟404中,執行單元138會分析NCB指令,並且決定該NCB指令是否正確地被分支預測器118預測;換言之,執行單元138會比較預測方向158與執行單元138所決定之正確的方向是否一致,並且比較預測目標位址156與執行單元138所產生之正確的目標位址是否一致。若兩者一致,引退單元144則會引退NCB指令。若兩者不一致,引退單元144則會清除微處理器100管線,並致使提取單元104開始從指令快取106中提取位於NCB指令之正確目標位址176上的指令。流程結束於步驟404。
如上所述,提取單元104會分析並引退FCB指令,而不需將FCB指令配送至執行管線中。這將是有助益的,因為,如上所述,當程式設計師使用一FCB指令而不是一傳統條件分支指令時,由於消除了與傳統條件分支指令有關的誤預測與校正,因此可能具有更快的總執行時間。另一個好處就是,與傳統條件分支指令相比,使用微處理器100中較少的資源即可分析並引退FCB指令。舉例而言,因為FCB指令沒有被配送至執行管線中,所以FCB指令不會佔用暫存器別名表134中的項目、保留站、執行單元138或重新排序緩衝器。
請參考第5圖,第5圖為顯示根據本發明之另一實施例之一微處理器100之一方塊圖。第5圖在許多地方與第1圖相似。然而,第5圖中並未顯示提取單元104之細節,但顯示了微碼單元128之細節。第5圖中之微碼單元128包括了許多與第1圖中之提取單元104類似的元件,並且其中相同號碼的元件執行類似的功能。
其中一個不同點在於,微碼單元128會從一微碼唯讀記憶體506中提取指令188,而不是從第1圖中之指令快取106中提取指令188。微碼唯讀記憶體506用以儲存微碼程序指令,以便處理使用者程式之指令,其中該微碼程序指令用以執行微處理器100所需的動作。因此從這個角度來看,儲存在微碼唯讀記憶體506中的微碼程序係為非使用者程式(non-user programs),因為這些微碼程序不屬於使用者程式本身的一部分。換言之,微處理器100之設計者開發(develop)儲存在微碼唯讀記憶體506中的微碼程序,而不是微處理器100之使用者程 式,其中使用者程式係儲存在電腦系統中之系統記憶體及/或一非揮發性儲存媒體,例如一磁碟機。
微碼程序所執行的其中一個動作係為異常處理(exception handling)。微碼唯讀記憶體506包括異常處理器,用以處理使用者程式指令產生的異常以及微處理器100所提取的微異常(micro-exceptions),而不是處理微處理器100之巨集架構所定義的異常,其中上述微異常係為微處理器100之微架構所特有的。舉例而言,上述使用者程式指令所產生的異常包括無效運算碼異常(invalid opcode exceptions)、除以零異常(divide by zero exceptions)、中斷(interrupts)、分頁錯誤(page faults)。另一個例子,微碼程序包括用以執行微處理器100指令集中複雜且不常執行之指令的程式碼,例如三角函數指令(trigonometric function instructions)、讀/寫特別模組暫存器指令(read/write model specific registers instructions)、以及串列化指令(例如由《IA-32英特爾®架構軟體開發者手冊,第3A冊:系統程式設計導引,第1篇,2006年6月》中之第7.4節中的x86架構所定義的串列化指令,該參考文獻全文係以引用的方式併入本文中)。串列化指令可更新一控制值,而此控制值係使微處理器100進入一新的模式或狀態,例如改變分頁模式、使微處理器100進入一保護模式、更新描述符表(descriptor tables)、或使快取線無效,上述例子僅作為舉例說明。因此,微碼單元128係為微處理器100中之第二個提取單元,用以從微碼唯讀記憶體506中提取微碼程序指令,將這些微碼程序指令解碼,而對於FCB指令而言,微碼單元128也是一直正確地分析並引退 該FCB指令。
在一實施例中,快速條件分支指令僅包括在管線式微處理器之複數微碼程式中,而不包括在被上述管線式微處理器所處理之複數使用者程式中。其中上述微碼程式包括用以執行複數使用者程式指令之複數程式。其中上述微碼程式包括複數異常處理器用以處理複數異常,並且上述異常係由上述管線式微處理器所處理之上述使用者程式所產生。
在一實施例中,管線式微處理器藉由更新與使用者程式有關之上述管線式微處理器中之一第一指令指位器,用以正確地分析正規條件分支指令,其中上述管線式微處理器藉由更新與複數微碼程式有關之上述管線式微處理器中之一第二指令指位器,用以正確地分析快速條件分支指令。
另一個不同點在於,微碼單元128不包括第1圖中之分支預測器118。因此,在一般流程中(例如缺少FCB指令、誤預測NCB指令之校正、異常、誘使微碼(trap to microcode)執行一使用者指令等等),微碼單元128會一直“預測”不會發生一條件分支指令,例如微碼單元128提取下一個指令指位器位址154上的指令,而不是由第1圖中之分支預測器118所提供在一預測目標位址156上的指令。然而,實施例中可考慮將一個也許更小、更簡易以及更省電之分支預測器118(具有與第1圖中之分支預測器118類似的功能),包括在微碼單元128中。
然而,如同第1圖中之提取單元104,第5圖中之微碼單元128係用以提取並且非選擇性地且正確地分析並引退FCB指令,以下將配合第6~8圖作進一步的說明。值得注意的 是,在一實施例中,提取單元104與微碼單元128皆用以提取並且非選擇性地且正確地分析並引退FCB指令;而在其他實施例中,只有提取單元104與微碼單元128中之一者,用以提取並且非選擇性地且正確地分析並引退FCB指令。
第6~8圖之流程圖中的許多執行步驟,與第2~4圖之流程圖中的執行步驟類似。然而,第2~4圖中之提取單元104中之元件所執行的步驟,係由第6~8圖中之微碼單元128中之對應的元件所執行。此外,如上所述,在一實施例中,微碼單元128不會執行分支預測;因此,第7圖與第8圖中不包括與分支預測有關的步驟。
請參考第6圖,第6圖為顯示本發明之第5圖中之微處理器100的一操作流程圖。此流程圖用以執行一FBCSUI指令。流程從步驟602開始。
在步驟602中,微碼單元128會從微碼唯讀記憶體506中提取一指令,將該指令解碼,並決定該指令係為一FBCSUI指令,例如表1中之第一行中的FBCSUI指令。流程前進至步驟604。
在步驟604中,微碼單元128會設置FBCSUI指令之偵測指標160,該FBCSUI指令之偵測指標160用以設定FBCSUI指令之擱置旗標192。流程前進至步驟606。
在步驟606中,微碼單元128會將FBCSUI指令配送至執行管線(即配送至多工器132、暫存器別名表134、指令排程器136、執行單元138以及引退單元144)加以執行。流程前進至步驟608。
在步驟608中,執行單元138會執行FBCSUI指令,而引退單元144會引退FBCSUI指令。換言之,引退單元144將FBCSUI指令之結果186寫入至FBCS 124,並且設置FBCSUI指令之分析指標182,用以清除FBCSUI指令之擱置旗標192。值得注意的是,在微碼單元128根據介於中間之指令(例如表1中之第二到第五行中的指令)的數量與混合,以及微處理器100管線之組態與狀態,將表1中之第六行中的FCB指令提取並解碼(如以下第7圖中之步驟702所述)之前,步驟608中的動作可能會或不會發生。流程結束於步驟608。
請參考第7圖,第7圖為顯示本發明之第5圖中之微處理器100的一操作流程圖。此流程圖用以執行一FCB指令。流程從步驟702開始。
在步驟702中,微碼單元128會從微碼唯讀記憶體506中提取一指令,將該指令解碼,並決定該指令係為FCB指令,例如表1中之第六行中的FCB指令。流程前進至決定步驟706。
在決定步驟706中,提取位址控制器126會檢查FBCSUI指令之擱置旗標192,並決定FBCSUI指令是否係為擱置狀態。若FBCSUI指令係為擱置狀態,則流程前進至步驟708;反之,流程前進至步驟712。
在步驟708中,提取位址控制器126會停止從微碼唯讀記憶體506中提取指令,直到FBCSUI指令被分析。因此,流程回到決定步驟706。
在步驟712中,微碼單元128中之指令解碼器108會 分析FCB指令之目標位址162,而FCB指令之方向分析器122則會根據FCB指令之條件166與FBCS 124,用以分析FCB指令之方向172。若發生FCB指令之方向172,則提取位址控制器126控制多工器114選擇FCB指令之目標位址162用以載入至指令指位器112;若未發生FCB指令之方向172,則提取位址控制器126控制多工器114選擇下一個指令指位器位址154,用以載入至指令指位器112。流程前進至步驟714。
在步驟714中,提取位址控制器126會重新開始從微碼唯讀記憶體506中提取位於指令指位器112所提供之提取位址168上的指令。流程前進至步驟716。
在步驟716中,微碼單元128會引退FCB指令。特別是,由於微碼單元128一直非選擇性地且正確地分析FCB指令,所以微碼單元128不會將FCB指令配送至執行管線被執行與引退。流程結束於步驟716。
請參考第8圖,第8圖為顯示本發明之第5圖中之微處理器100的一操作流程圖。此流程圖用以執行一NCB指令。第8圖係用以說明微處理器100在執行FCB指令與NCB指令之操作的不同之處,以及微處理器100之指令集架構中具有FCB指令、NCB指令的好處。流程從步驟802開始。
在步驟802中,微碼單元128會從微碼唯讀記憶體506中提取一指令,將該指令解碼,並決定該指令係為一NCB指令,再將該指令配送至執行管線中。再者,微碼單元128會繼續提取位於下一個指令指位器位址154上的指令。流程前進至步驟804。
在步驟804中,執行單元138會分析NCB指令,並且決定是否未發生該NCB指令的正確方向。若未發生該NCB指令的正確方向,引退單元144則會引退NCB指令。若發生該NCB指令的正確方向,引退單元144則會清除微處理器100管線,並致使微碼單元128開始從微碼唯讀記憶體506中提取位於NCB指令之正確目標位址176上的指令,用以校正步驟802中之微碼單元128所提取的循序指令。流程結束於步驟804。
雖然在本發明之實施例中,FCB指令包括用以使提取單元104或微碼單元128等待直到FBCSUI指令之擱置旗標192係清除之後再分析FCB指令的隱含等待語意(implicit wait semantic),但在其他實施例中,程式設計師可在狀態更新指令與FCB指令之間,包括一執行等待函式之外顯等待指令(explicit wait instruction)。因此,在表1之程式碼片段中,外顯等待指令可設置於第五行中之指令與第六行中之指令之間。當指令解碼器108解碼等待指令時,指令解碼器108執行類似於第3圖之步驟306與308(或第7圖之步驟706與708)中所描述的動作。因此,在此實施例中,當指令解碼器108解碼FCB指令時,流程直接從第3圖中之步驟304跳至步驟312(或從第7圖中之步驟702跳至步驟712)。
雖然本文描述了本發明之許多實施例,但大家應能了解這些實施例僅作為舉例說明,並非用以限定本發明。任何熟知相關電腦領域技藝者,在不脫離本發明之精神和範圍內,當可作些許更動與潤飾。舉例而言,軟體可以致能函式(function)、製造(fabrication)、模組(modeling)、模擬 (simulation)、以及本文所描述之裝置與方法的描述及/或測試。此目的可透過使用一般程式語言(例如C、C++)、硬體描述語言(包括Verilog或VHDL硬體描述語言等等)、或其他可用的程式來實現。該軟體可被設置在任何電腦可用的媒體,例如半導體、磁碟、光碟(例如CD-ROM、DVD-ROM等等)中。本文所描述之裝置與方法的實施例,可被包括在一半導體智慧財產權核心(semiconductor intellectual property core),例如一微處理器核心(實現於硬體描述語言)中,並被轉換成硬體以便實現積體電路生產。此外,本文所描述之裝置與方法可係以結合硬體與軟體的方式實現。因此,本發明不應該被本文中之任一實施例所限定,而是只應該根據後附之申請專利範圍及其同等物來定義本發明。特別是,本發明係實現於一微處理器裝置中,該微處理器裝置可被使用在一通用電腦中。最後,任何熟知技藝者,在不脫離本發明之精神和範圍內,當可作些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧微處理器
104‧‧‧提取單元
106‧‧‧指令快取
108‧‧‧指令解碼器
112‧‧‧指令指位器
114、132‧‧‧多工器
116‧‧‧位址遞增電路
118‧‧‧分支預測器
122‧‧‧方向分析器
124‧‧‧快速分支條件狀態(FBCS)
126‧‧‧提取位址控制器
128‧‧‧微碼單元
134‧‧‧暫存器別名表
136‧‧‧指令排程器
138‧‧‧執行單元
142‧‧‧正規分支條件狀態(NBCS)
144‧‧‧引退單元
146、148‧‧‧正規指令
152‧‧‧多工器選擇訊號
154‧‧‧下一個指令指位器位址
156‧‧‧預測目標位址
158‧‧‧預測方向
160‧‧‧偵測指標
162‧‧‧目標位址
164‧‧‧查見指示
166‧‧‧條件
168‧‧‧提取位址
172‧‧‧方向
174‧‧‧指令結果
176‧‧‧正確目標位址
178‧‧‧誤預測指示
182‧‧‧分析指標
186‧‧‧結果
188‧‧‧指令
192‧‧‧擱置旗標

Claims (29)

  1. 一種管線式微處理器,包括:一管線,具有複數階段,用以處理複數指令;上述管線式微處理器接收:一正規條件分支指令,包括在一程式中,其中上述管線式微處理器係用以對上述正規條件分支指令進行預測,並且若上述預測隨後被認定為不正確,則上述管線式微處理器清除複數管線指令;以及一快速條件分支指令,包括在上述程式中,其中上述管線式微處理器一直正確地分析上述快速條件分支指令,並且不對上述快速條件分支指令進行預測。
  2. 如申請專利範圍第1項所述之管線式微處理器,更包括:一分支預測器,用以預測上述正規條件分支指令,其中上述管線式微處理器在正確地分析上述正規條件分支指令之後,用以將一分支預測資訊儲存至上述分支預測器中,並且上述管線式微處理器在正確地分析上述快速條件分支指令之後,則不將上述分支預測資訊儲存至上述分支預測器中。
  3. 如申請專利範圍第1項所述之管線式微處理器,其中上述快速條件分支指令係命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程式中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用之一快速分支條件,其中上述正規條件分支指令藉由考慮上述程式中比上述正規條件分支指令還要 舊的其他指令是否更新上述正規條件分支指令所使用之一正規分支條件,命令上述管線式微處理器正確地分析上述正規條件分支指令。
  4. 如申請專利範圍第1項所述之管線式微處理器,其中上述快速條件分支指令僅包括在上述管線式微處理器之複數微碼程式中,而不包括在被上述管線式微處理器所處理之複數使用者程式中。
  5. 如申請專利範圍第4項所述之管線式微處理器,其中上述微碼程式包括用以執行複數使用者程式指令之複數程式。
  6. 如申請專利範圍第4項所述之管線式微處理器,其中上述微碼程式包括複數異常處理器用以處理複數異常,並且上述異常係由上述管線式微處理器所處理之上述使用者程式所產生。
  7. 如申請專利範圍第1項所述之管線式微處理器,其中上述管線式微處理器藉由更新上述管線式微處理器中之一指令指位器,用以正確地分析上述正規條件分支指令與上述快速條件分支指令。
  8. 如申請專利範圍第1項所述之管線式微處理器,其中上述管線式微處理器藉由更新與上述使用者程式有關之上述管線式微處理器中之一第一指令指位器,用以正確地分析上述正規條件分支指令,其中上述管線式微處理器藉由更新與複數微碼程式有關之上述管線式微處理器中之一第二指令指位器,用以正確地分析上述快速條件分支指令。
  9. 一種管線式微處理器,接收: 一快速條件分支指令,包括在一程式中,其中上述快速條件分支指令係命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程式中比上述快速條件分支指令還要舊之其他指令是否更新上述快速條件分支指令所使用之一快速分支條件;以及一正規條件分支指令,包括在上述程式中,其中上述正規條件分支指令藉由考慮上述程式中比上述正規條件分支指令還要舊的其他指令是否更新上述正規條件分支指令所使用之一正規分支條件,命令上述管線式微處理器正確地分析上述正規條件分支指令。
  10. 如申請專利範圍第9項所述之管線式微處理器,更包括:一相依性檢查單元,用以根據上述程式中之其他指令,決定上述正規條件分支指令之複數相依性;其中上述管線式微處理器用以在上述相依性檢查單元根據上述程式中之其他指令決定上述正規條件分支指令的複數正規分支條件狀態相依性之後,正確地分析上述正規條件分支指令;其中上述管線式微處理器係用以正確地分析上述快速條件分支指令,而不需要將上述快速條件分支指令配送至上述相依性檢查單元,藉此上述管線式微處理器處理上述快速條件分支指令所花費的時脈週期,小於處理上述正規條件分支指令所花費的時脈週期。
  11. 如申請專利範圍第9項所述之管線式微處理器,更包括:一引退單元,用以引退一程式順序中之上述正規條件分支 指令,上述程式順序係有關於上述程式中之其他指令;其中上述引退單元不會引退上述快速條件分支指令。
  12. 如申請專利範圍第9項所述之管線式微處理器,其中上述快速條件分支指令僅包括在上述管線式微處理器之複數微碼程式中,而不包括在即將被上述管線式微處理器所處理之複數使用者程式中。
  13. 如申請專利範圍第12項所述之管線式微處理器,其中上述微碼程式包括用以執行複數使用者程式指令之複數程式。
  14. 如申請專利範圍第12項所述之管線式微處理器,其中上述微碼程式包括複數異常處理器用以處理複數異常,並且上述異常係由上述管線式微處理器所處理之上述使用者程式所產生。
  15. 如申請專利範圍第9項所述之管線式微處理器,更包括:一暫存器,用以儲存由上述快速條件分支指令所指定之一快速分支條件狀態;以及一微碼唯讀記憶體,用以儲存複數微碼程序,上述微碼程序包括至少一上述快速條件分支指令,而上述快速條件分支指令係用以指定儲存於上述暫存器中之上述快速分支條件狀態。
  16. 一種執行兩種條件分支指令的方法,應用於具有用以處理指令的複數管線階段之一管線式微處理器,上述方法包括:預測一正規條件分支指令,上述正規條件分支指令係包括在一程式中;上述預測隨後被認定為不正確,則清除複數管線指令;以 及一直正確地分析一快速條件分支指令,並且不對上述快速條件分支指令進行預測,其中上述快速條件分支指令係包括在上述程式中。
  17. 如申請專利範圍第16項所述之執行兩種條件分支指令的方法,其中上述預測上述正規條件分支指令之步驟係由一分支預測器所執行,上述方法更包括:在上述分支預測器正確地分析上述正規條件分支指令之後,將一分支預測資訊儲存至上述分支預測器中;以及在上述分支預測器正確地分析上述快速條件分支指令之後,不將上述分支預測資訊儲存至上述分支預測器中。
  18. 如申請專利範圍第16項所述之執行兩種條件分支指令的方法,其中上述快速條件分支指令係命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程式中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用之一快速分支條件,其中上述正規條件分支指令則藉由考慮上述程式中比上述正規條件分支指令還要舊的其他指令是否更新上述正規條件分支指令所使用之一正規分支條件,命令上述管線式微處理器正確地分析上述正規條件分支指令。
  19. 如申請專利範圍第16項所述之執行兩種條件分支指令的方法,其中上述快速條件分支指令僅包括在上述管線式微處理器之複數微碼程式中,而不包括在即將被上述管線式微處理器所處理之複數使用者程式中。
  20. 如申請專利範圍第19項所述之執行兩種條件分支指令的方法,其中上述微碼程式包括用以執行複數使用者程式指令之複數程式。
  21. 如申請專利範圍第19項所述之執行兩種條件分支指令的方法,其中上述微碼程式包括複數異常處理器用以處理複數異常,並且上述異常係為上述管線式微處理器所處理之上述使用者程式所產生。
  22. 如申請專利範圍第16項所述之執行兩種條件分支指令的方法,其中上述正確地分析上述快速條件分支指令以及正規條件分支指令之步驟,包括更新上述管線式微處理器中之一指令指位器。
  23. 如申請專利範圍第16項所述之執行兩種條件分支指令的方法,其中上述正確地分析上述正規條件分支指令之步驟,包括更新與複數使用者程式有關之上述管線式微處理器中之一第一指令指位器,其中上述正確地分析上述快速條件分支指令之步驟,包括更新與複數微碼程式有關之上述管線式微處理器中之一第二指令指位器。
  24. 一種執行兩種條件分支指令的方法,應用於具有用以處理指令的複數管線階段之一管線式微處理器,上述方法包括:不考慮一程式中比一快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用之一快速分支條件;在不需考慮上述程式中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用之上述快 速分支條件的同時,命令上述管線式微處理器正確地分析上述快速條件分支指令;以及藉由考慮上述程式中比一正規條件分支指令還要舊的其他指令是否更新上述正規條件分支指令所使用之一正規分支條件,用以命令上述管線式微處理器正確地分析上述正規條件分支指令,其中上述正規條件分支指令係包括於上述程式中。
  25. 如申請專利範圍第24項所述之執行兩種條件分支指令的方法,更包括:根據上述程式中之其他指令,用以分析上述正規條件分支指令之複數相依性;在根據上述程式中之其他指令,分析上述正規條件分支指令之上述相依性之後,正確地分析上述正規條件分支指令;正確地分析上述快速條件分支指令,而不需要將上述快速條件分支指令配送至一相依性檢查單元,藉此上述管線式微處理器處理上述快速條件分支指令所花費的時脈週期,小於處理上述正規條件分支指令所花費的時脈週期。
  26. 如申請專利範圍第24項所述之執行兩種條件分支指令的方法,其中上述快速條件分支指令僅包括在上述管線式微處理器之複數微碼程式中,而不包括在即將被上述管線式微處理器所處理之複數使用者程式中。
  27. 如申請專利範圍第26項所述之執行兩種條件分支指令的方法,其中上述微碼程式包括用以執行複數使用者程式指令之複數程式。
  28. 如申請專利範圍第26項所述之執行兩種條件分支指令的方法,其中上述微碼程式包括複數異常處理器用以處理複數異常,並且上述異常係為上述管線式微處理器所處理之上述使用者程式所產生。
  29. 如申請專利範圍第24項所述之執行兩種條件分支指令的方法,更包括:將上述快速條件分支指令所指定之一快速分支條件狀態儲存至一暫存器中;以及將複數微碼程序儲存至一微碼唯讀記憶體中,其中上述微碼程序包括至少一上述快速條件分支指令,而上述快速條件分支指令係用以指定儲存於上述暫存器中之上述快速分支條件狀態。
TW102123152A 2009-02-12 2009-12-25 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品 TWI506550B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15206509P 2009-02-12 2009-02-12
US12/481,035 US7979675B2 (en) 2009-02-12 2009-06-09 Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US12/481,511 US8521996B2 (en) 2009-02-12 2009-06-09 Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution

Publications (2)

Publication Number Publication Date
TW201342231A true TW201342231A (zh) 2013-10-16
TWI506550B TWI506550B (zh) 2015-11-01

Family

ID=42541347

Family Applications (2)

Application Number Title Priority Date Filing Date
TW098144935A TWI416407B (zh) 2009-02-12 2009-12-25 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品
TW102123152A TWI506550B (zh) 2009-02-12 2009-12-25 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW098144935A TWI416407B (zh) 2009-02-12 2009-12-25 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品

Country Status (3)

Country Link
US (2) US7979675B2 (zh)
CN (2) CN101876890B (zh)
TW (2) TWI416407B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI648624B (zh) * 2014-11-14 2019-01-21 美商凱為有限責任公司 管理用於分支預測的歷史資訊的裝置及方法
TWI658407B (zh) * 2014-07-11 2019-05-01 美商凱為有限責任公司 管理處理器流水線中的指令順序

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799628B2 (en) * 2009-08-31 2014-08-05 Advanced Micro Devices, Inc. Early branch determination
WO2012138952A1 (en) * 2011-04-07 2012-10-11 Via Technologies, Inc. Conditional store instructions in an out-of-order execution microprocessor
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9135012B2 (en) * 2012-06-14 2015-09-15 International Business Machines Corporation Instruction filtering
EP2682905A1 (en) * 2012-07-05 2014-01-08 Siemens Aktiengesellschaft Method and system for handling conditional dependencies between alternative product segments within a manufacturing execution system ANSI/ISA/95 compliant.
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
CN105718241B (zh) * 2016-01-18 2018-03-13 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
US10732979B2 (en) * 2018-06-18 2020-08-04 Advanced Micro Devices, Inc. Selectively performing ahead branch prediction based on types of branch instructions
KR102456176B1 (ko) * 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US11868773B2 (en) 2022-01-06 2024-01-09 International Business Machines Corporation Inferring future value for speculative branch resolution in a microprocessor
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions
US12067399B2 (en) 2022-02-01 2024-08-20 Apple Inc. Conditional instructions prediction

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338661A (en) 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
US4546431A (en) 1982-11-03 1985-10-08 Burroughs Corporation Multiple control stores in a pipelined microcontroller for handling jump and return subroutines
JP2772604B2 (ja) 1992-10-27 1998-07-02 シャープ株式会社 データ処理システム
US5805876A (en) 1996-09-30 1998-09-08 International Business Machines Corporation Method and system for reducing average branch resolution time and effective misprediction penalty in a processor
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
US5951678A (en) 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
JPH11259437A (ja) 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
JP3683439B2 (ja) 1999-08-24 2005-08-17 富士通株式会社 分岐予測を抑止する情報処理装置および方法
US6496975B1 (en) * 1999-10-15 2002-12-17 International Business Machines Corporation Method, system, and program for performing conditional program operations
US6598153B1 (en) 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
US6757816B1 (en) * 1999-12-30 2004-06-29 Intel Corporation Fast branch misprediction recovery method and system
US6859875B1 (en) * 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
TWI232457B (en) * 2003-12-15 2005-05-11 Ip First Llc Early access to microcode ROM
CN1270233C (zh) * 2003-12-24 2006-08-16 智慧第一公司 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法
TWI273485B (en) * 2004-02-04 2007-02-11 Via Tech Inc Pipeline microprocessor, apparatus, and method for generating early status flags
CN1326037C (zh) * 2004-02-06 2007-07-11 智慧第一公司 用于更正微处理器中的内部调用或返回堆栈的方法与装置
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer
US7536694B2 (en) 2004-11-30 2009-05-19 International Business Machines Corporation Exception handling in a multiprocessor system
US20060200654A1 (en) * 2005-03-04 2006-09-07 Dieffenderfer James N Stop waiting for source operand when conditional instruction will not execute
US7725695B2 (en) * 2005-05-31 2010-05-25 Arm Limited Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
JP4980751B2 (ja) * 2007-03-02 2012-07-18 富士通セミコンダクター株式会社 データ処理装置、およびメモリのリードアクティブ制御方法。

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI658407B (zh) * 2014-07-11 2019-05-01 美商凱為有限責任公司 管理處理器流水線中的指令順序
TWI648624B (zh) * 2014-11-14 2019-01-21 美商凱為有限責任公司 管理用於分支預測的歷史資訊的裝置及方法

Also Published As

Publication number Publication date
US20100205407A1 (en) 2010-08-12
US20100205401A1 (en) 2010-08-12
TWI416407B (zh) 2013-11-21
CN101876890A (zh) 2010-11-03
US7979675B2 (en) 2011-07-12
TWI506550B (zh) 2015-11-01
TW201030610A (en) 2010-08-16
CN101876889A (zh) 2010-11-03
US8521996B2 (en) 2013-08-27
CN101876890B (zh) 2014-05-14
CN101876889B (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
TWI506550B (zh) 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品
TWI470546B (zh) 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法
US8843729B2 (en) Microprocessor that fuses MOV/ALU instructions
CN101866280B (zh) 微处理器及其执行方法
US6754812B1 (en) Hardware predication for conditional instruction path branching
US8856496B2 (en) Microprocessor that fuses load-alu-store and JCC macroinstructions
US7895421B2 (en) Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
EP2069915B1 (en) Methods and system for resolving simultaneous predicted branch instructions
US5832260A (en) Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction
TWI506551B (zh) 一種微處理器及其執行方法與電腦程式產品
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
CN102193775B (zh) 微处理器融合搬运/算术逻辑运算/条件跳跃指令