TWI439930B - 具選擇性啟動早期引退功能之失序執行微處理器 - Google Patents

具選擇性啟動早期引退功能之失序執行微處理器 Download PDF

Info

Publication number
TWI439930B
TWI439930B TW098139089A TW98139089A TWI439930B TW I439930 B TWI439930 B TW I439930B TW 098139089 A TW098139089 A TW 098139089A TW 98139089 A TW98139089 A TW 98139089A TW I439930 B TWI439930 B TW I439930B
Authority
TW
Taiwan
Prior art keywords
instruction
execution unit
exception
microprocessor
result
Prior art date
Application number
TW098139089A
Other languages
English (en)
Other versions
TW201020913A (en
Inventor
Gerard M Col
Brent Bean
Bryan Wayne Pogor
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 TW201020913A publication Critical patent/TW201020913A/zh
Application granted granted Critical
Publication of TWI439930B publication Critical patent/TWI439930B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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)

Description

具選擇性啟動早期引退功能之失序執行微處理器
本發明係有關於一種失序(out-of-order)執行微處理器,且特別有關於一種處理器中之指令引退(Retirement)。
超純量微處理器(Superscalar Microprocessor)具有複數個執行單元,其用以執行微處理器的指令集。超純量微處理器藉由納入多個執行單元來改善執行效能,故在每個時脈中可平行執行多個指令。要瞭解潛在執行效能獲益的關鍵是保持指令可供給執行單元來執行,否則使用超純量(Superscalar)的執行效能不會比使用純量(Scalar)來的好,但卻增加許多的硬體成本。舉例來說,執行單元要載入與儲存微指令運算元、計算位址、執行邏輯與算術操作、並且要解析分支指令。當執行單元的數量與種類愈多,則回歸到程式指令串流(Program instruction stream)的距離就越遠,而處理器就必須有能力找到每一執行單元在每一時脈週期所將執行之指令,此即處理器的預看(lookahead)能力。
在一失序的超純量微處理器中,雖然指令可失序執行(out-of-order execution),但必須以一程序順序(program order)來引退。進行失序執行的微處理器需要一緩衝器使微指令在執行過後以一程序順序來引退。在某些微處理器中,該緩衝器稱為重排序緩衝器(reorder buffer,以下簡稱為ROB)。ROB具有固定數量的通道,並且可暫存微指令以及與每一微指令相關的狀態資訊。引退ROB中之微指令包括儲存微指令的結果至微處理器的結構暫存器,並且使微指令佔用的ROB通道被釋放(free),故可將新的微指令分派在ROB中之一通道中。
ROB的大小,亦即通道數量(number of entries),限制處理器的預看能力。特別的是,由於指令在準備好被發佈前,必須分派一ROB通道給該指令,故ROB的大小會限制可準備被發佈(issued)以被執行之指令的數量。當ROB的所有通道都已滿(full)了時,則存放最久的指令(oldest instruction)必須被引退,亦即根據其結果更新結構狀態,使得該存放最久的指令之ROB通道可被釋放以重新配置新的指令。增加微處理器之預看能力的其中一個方法是增加ROB中的通道數。然而,每一ROB通道需要微處理器中相對大量的空間與功率以儲存其資訊,例如,指令本身、儲存結果的暫存空間以及有關指令的其它資訊。因此,令ROB的尺寸變大與增加微處理器的預看能力相比,其代價是相對較高的。
因此,需要儘可能的將RBO以一較高效率的方式來使用,以在良善使用執行單的情況下改善執行效率,同時儘可能的將ROB的大小維持在小尺寸。
基於上述目的,本發明實施例揭露了一種改善失序超純量執行單元(Out-of-Order Superscalar Execution Unit)的微處理器,其係使用於一相對小之在序(in-order)指令引退(Retirement)緩衝器,並且藉由選擇性的提早初始指令引退來實現,該微處理器包括複數執行單元與一引退單元(Retire Unit)。每一執行單元用以計算一指令的結果,其中該指令係為一例外類別(excepting type)指令或一非例外類別(non-excepting type)指令,其中該例外類別指令可在被發送至該執行單元以計算其結果後,令該微處理器取得一例外狀況(exception),而該非例外類別指令無法在被發送至該執行單元以計算其結果後,令該微處理器取得一例外狀況。該引退單元耦接於該等執行單元,用以判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用其結果來更新該微處理器之結構狀態(architectural state),其中該引退單元係用以在該執行單元輸出該非例外類別指令之結果前執行該判斷操作,其中該引退單元係用以在該執行單元輸出該例外類別指令之結果後執行該判斷操作。
本發明實施例更揭露了一種改善失序超純量執行單元的方法,其係使用於一相對小之在序指令引退緩衝器,並且藉由選擇性的提早初始指令引退來實現。計算一指令的結果,其中該指令係為一例外類別指令或一非例外類別指令,其中該例外類別指令可在被發送至一執行單元以計算其結果後令該微處理器取得一例外狀況,而該非例外類別指令無法在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況。判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用其結果來更新該微處理器之結構狀態。該判斷操作包括在該執行單元輸出該非例外類別指令之結果前執行該判斷操作。該判斷操作包括在該執行單元輸出該例外類別指令之結果後執行該判斷操作。
本發明實施例更揭露了一種使用運算裝置之電腦程式產品,該電腦程式產品包括一電腦可使用儲存媒體。該電腦可使用儲存媒體包括載入至該電腦可使用儲存媒體之電腦可讀取程式碼,用以說明一種改善失序超純量執行單元的微處理器,其係使用於一相對小之在序指令引退緩衝器並且藉由選擇性的提早初始指令引退來實現。該電腦可讀取程式碼包括第一程式碼與第二程式碼。第一程式碼用以說明(specifying)複數執行單元,每一執行單元用以計算一指令的結果,其中該指令係為一例外類別指令或一非例外類別指令,其中該例外類別指令可在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況,而該非例外類別指令則無法在被發送至該執行單元後令該微處理器取得一例外狀況以計算其結果。第二程式碼用以說明一引退單元,其耦接於該等執行單元,用以判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用其結果來更新該微處理器之結構狀態,其中該引退單元係用以在該執行單元輸出該非例外類別指令之結果前執行該判斷操作,其中該引退單元係用以在該執行單元輸出該例外類別指令之結果後執行該判斷操作。
為了讓本發明之目的、特徵、及優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式第1圖至第6圖,做詳細之說明。本發明說明書提供不同的實施例來說明本發明不同實施方式的技術特徵。其中,實施例中的各元件之配置係為說明之用,並非用以限制本發明。且實施例中圖式標號之部分重複,係為了簡化說明,並非意指不同實施例之間的關聯性。
本發明實施例揭露了一種改善失序超純量執行單元的微處理器與方法,以及使用運算裝置的電腦程式產品。
第1圖係顯示本發明實施例之微處理器100的架構示意圖。微處理器100包括一重命名(rename)/分派(allocate)/派送(dispatch)單元104、耦接於重命名/分派/派送單元104之保留站(reservation stations)106、耦接於保留站106之執行單元108、耦接於保留站106與執行單元108之發佈邏輯112、耦接於重命名/分派/派送單元104、執行單元108與發佈邏輯112之重排序緩衝器(ROB)114、耦接於執行單元108與發佈邏輯112之推測暫存器(Speculative Register)116、耦接於執行單元108、重排序緩衝器114與推測暫存器116之多工器118、以及耦接於多工器118與發佈邏輯112之結構暫存器122。
在了解硬體成本與增加ROB大小相關之額外複雜性時,本案發明人也了解在微處理器中,部份從重排序緩衝器114中所引退指令所執行的操作需耗費多個時脈週期來進行。上述操作包括更新指令的狀態至其在重排序緩衝器114中的通道,並且接著分析重排序緩衝器114中存在最久之指令的狀態以分辨是否已準備好要引退命令。一般來說,重排序緩衝器114在執行單元108輸出指令之執行結果與訊號完成之後、以及在重排序緩衝器114更新結構狀態之前執行上述操作,並且釋放重排序緩衝器114中之該通道。本案發明人認為,當引退單元開始執行引退指令的程序時,只要該指令不產生一例外狀況,亦即沒有產生指令結果之時,重排序緩衝器114可在指令執行的同時,平行的執行一些上述的引退操作。
因此,本發明實施例修改微處理器100,對具有固定執行延遲(latency)之非例外指令產生一早期完成訊號(early completion signal)156。微處理器100取得該非例外指令的固定執行延遲,並且根據其執行指令的時脈週期數目產生早期完成訊號156時,可使得執行單元108提供結果144以及時更新結構狀態122,並釋放重排序緩衝器114的通道給新的指令。在一實施例中,非例外指令可比具有相同的執行延遲且在相同時脈週期被發佈的例外指令早三個時脈週期被引退。在一實施例中,發佈邏輯112發佈指令給執行單元108來執行,並且產生早期完成訊號156。
再參考第1圖,重命名/分派/派送單元104接收包括早期引退微指令126與非早期引退微指令124之微指令。如下文詳述之,發佈邏輯112產生早期引退微指令126的早期完成訊號156,並且產生非早期引退微指令124的一般完成訊號138。
早期引退微指令126在發佈給執行單元108後無法產生一例外狀況。許多指令可產生例外狀況。舉例來說,指令可產生運算元相關之例外狀況(operand-related exception)(例如,除以零(divide-by-zero)錯誤),或者指令可產生位址相關錯誤,例如,分頁錯誤。當微指令產生錯誤時,如果可能的話,微處理器100必須中斷程式以檢視例外狀況與修正錯誤。微處理器100藉由儲存微處理器100的離開狀態(away state)來管理例外狀況,包括引起例外狀況之指令的位址。微處理器100接著清除存在時間短於該例外指令之任何指令,並且將控制權轉移至與特定類別之例外狀況相關的微代碼例行程序(microcode routine)。對於結構例外狀況來說,該微代碼例行程序最終將控制權轉移給作業系統中例外類別之例外處理機例行程序(exception handler routine)。對於部分例外類別而言,例外處理機例行程序最後執行一指令(例如,IA-32結構中之IRET指令)以將控制權移轉回該例外指令、或包括該例外指令之程式中的另一指令序列。然而,在部分案例中,例外處理機例行程序不會將控制權移轉回引發例外狀況的程式,取而代之的是完全中止該程式。當引發例外狀況時,微處理器100清除存在時間短於該例外指令的指令,故不保證新的指令會不會被重新執行。此外,若新的指令被重新執行,則其接收的輸入運算元值係不同於前次執行期間所接收的輸入運算元值,故可能產生不同於初始執行之結果值。基於上述理由,微處理器100不會在早期引退例外指令。例外狀況的其中一種類別為重播(replay),其係為非結構微例外狀況(non-architectural micro-exception)。也就是,重播為微處理器之微結構(microarchitecture)所認可,但不被微處理器之巨結構(macroarchitecture)的例外狀況。當處理器執行指令重播或設定,其將自指令管線清除指令並且重新發佈上述指令以被執行。當上述指令被重新執行,則其源運算元被重新提取(re-fetch)並且提供給執行單元,且在重新執行期間的處理器狀態係不同於第一次執行時的狀態。
在一實施例中,早期引退微指令126的另一特色為需要固定的時脈週期數來執行,且在發佈邏輯112發佈指令的時間點得知指令的固定執行延遲。在產生重排序緩衝器114之早期完成訊號156之前,若有的話,發佈邏輯112精確得知有多少時脈在等待。因此,發佈邏輯112不產生具有變動執行時間之指令的早期完成訊號156,例如,執行時間係根據其輸入值而改變的指令。
重命名/分派/派送單元104收微指令124/126並且判斷其運算元相依性。重命名/分派/派送單元104亦分派重排序緩衝器114中之一釋放通道給每一微指令134,並且將微指令134寫入該分派通道之一微指令欄位204(如第2圖所示)。不幸的,若重排序緩衝器114已滿,即若重排序緩衝器114中沒有閒置的通道,則因為沒有地方可儲存微指令124/126,故重命名/分派/派送單元104無法繼續提供指令來執行,其對於執行單元108的使用可能有不好的影響。因此,本發明實施例之早期引退特色,可令重排序緩衝器114中的通道比一般使用情形被提前釋放(如上文所述),從而明顯的提高執行單元108的使用率。
在一實施例中,保留站106係為一佇列,其將指令暫存在該佇列的每一儲存位置中。
執行單元108包括個別的執行單元,用以執行微處理器100之微指令集中之每一微指令124/126。舉例來說,微處理器100可能具有用以執行整數與邏輯運算、浮點數運算、多媒體運算、資料載入運算、資料儲存運算、分支指令解析以及其它函數的個別執行單元。
重排序緩衝器114引退微指令124/126。特別的是,雖然微指令124/126可被執行單元108以失序的方式(即,非以程序順序)執行,但重排序緩衝器114可對其進行確認,並使其得以在序的方式(即,以程序順序)引退。重排序緩衝器114可暫存微指令以及與微指令相關的狀態資訊。重排序緩衝器114包括固定數目的通道,其中每一通道儲存一微指令以及與微指令相關的狀態。在一實施例中,重排序緩衝器114具有48個通道。然而,在其他實施例中,重排序緩衝器114可能具有較少或較多的通道。重排序緩衝器114亦包括控制邏輯,其用以執行與指令引退有關之不同功能,如本文所述,特別的是有關第3a圖至第5b圖之(A)階段318、(B)階段322與(C)階段324所示。
第2圖係顯示本發明實施例之第1圖之重排序緩衝器114中之微指令通道的架構示意圖。每一微指令包括一微指令欄位204、完成旗標206以及例外旗標208。重命名/分派/派送單元104分派重排序緩衝器114中之通道給每一微指令124/126,並接著將微指令124/126寫入至微指令欄位204。當完成旗標206為真(true)時,其實際上係表示微指令欄位204已完成執行且準備好自重排序緩衝器114引退,以及表示將微指令204的結果更新至微處理器100的結構狀態中是安全的。此對於非早期引退微指令124來說完全是合乎標準的,且對於早期引退微指令126來說實際上也是合乎標準的,關於這點將在後面詳加描述。當例外旗標208為真(true)時,表示微指令已產生一例外狀況。
再參考到第1圖,對應重排序緩衝器114之每一通道的是推測暫存器116中之推測暫存器148,其用以暫存對應執行微指令的結果。對於第1圖中之通道38來說,推測暫存器116中之推測暫存器148係用以儲存該結果。
若重排序緩衝器114中具有一有效通道,則重命名/分派/派送單元104將微指令134寫入重排序緩衝器114之該有效通道的微指令欄位204中。若重排序緩衝器114中不具有有效通道時,則重命名/分派/派送單元104開始等待,直到重排序緩衝器114中之一通道變成有效。在第1圖中,該有效通道如總數48個通道中之通道38所示。然而,實際上該通道可以是重排序緩衝器114中的任何通道。在平行將微指令134寫入重排序緩衝器114中的情況下,重命名/分派/派送單元104將微指令134傳送給對應將執行微指令134之執行單元之保留站106中的保留站。微指令134可以是早期引退126或非早期引退類別的微指令。
發佈邏輯112耦接於保留站106、執行單元108與重排序緩衝器114,並且當微指令具有所有有效的來源運算元且執行單元可執行該微指令時,將保留站106的微指令傳送給執行單元108。發佈邏輯112亦對微指令之早期引退進行確認、以及與重排序緩衝器114溝通以完成其早期引退,後續的圖示將針對這些內容進行討論。
微處理器100包括結構暫存器122,其可儲存常數、位址以及其它做為微指令134之運算元的資料。由執行單元108而來的中介(Intermediate)結果則是寫入推測暫存器116中。發佈邏輯112自結構暫存器122、推測暫存器116與自執行單元轉送之資料中取得微指令運算元。
對於非早期引退微指令124來說,執行單元產生一般標籤(normal tag)136給重排序緩衝器114,其表示重排序緩衝器114中的通道會被執行單元108更新。執行單元108亦當非早期引退微指令124完成執行時,產生一般完成訊號(normal completion signal)138與一般例外狀態訊號(normal exception status)142。如果例外狀況與非早期引退微指令124相關時,在執行單元108產生一般完成訊號138與一般例外狀態訊號142之時脈週期中,重排序緩衝器114會設定完成旗標206,並且寫入例外旗標208。
對於早期引退微指令126來說,執行單元產生早期標籤158給重排序緩衝器114,其表示重排序緩衝器114中的通道會被發佈邏輯更新。發佈邏輯112亦在早期引退微指令126完成執行時產生早期完成訊號(early completion signal)156與一般例外狀態訊號(early exception status)162。在發佈邏輯112產生早期完成訊號156與一般例外狀態訊號162的後續時脈週期中,由於早期引退微指令126無法引發例外狀況,故重排序緩衝器114設定完成旗標206並且清除例外旗標208。
結果144係由執行單元108基於非早期引退微指令124與早期引退微指令126而產生。結果144係寫入至推測暫存器116並且提供給多工器118。多工器118根據結果選擇168以在結果144與推測結果166兩者之間進行選擇。多工器118的輸出為選擇資料172,並且提供給結構暫存器122以更新微處理器100的結構狀態。多工器118的操作以及非早期引退微指令124與早期引退微指令126的處理將根據剩餘的圖式詳述於下文。
第3a圖係顯示本發明實施例之非早期引退微指令124之發佈與執行階段(issue and execute stage)以及引退階段(retirement stage)的架構示意圖。非早期引退微指令124之一般流程係經由6個發佈與執行階段、以及三個引退階段來完成。在時脈週期0之前,重命名/分派/派送單元104將不同的微指令134傳送至保留站106中之一保留站,其係發佈邏輯112確認微指令為非早期引退微指令124之處。
第一階段為派送階段(D)304,其係執行於時脈週期0中。發佈邏輯112自每一保留站106選擇存在最久的準備微指令並且派送該微指令。
第二階段為佇列階段(Q)306,其係執行於時脈週期1中。發佈邏輯112取得非早期引退微指令124的指令資料。指令資料包括微指令124的標籤,其係用以確認其在重排序緩衝器114中的通道,以及與該非早期引退微指令124相關之常數與確認符(identifier)。
第三階段為暫存器檔案階段(R)308,其係執行於時脈週期2中。發佈邏輯112利用佇列階段(Q)306中取得之標籤,來取得非早期引退微指令124的來源運算元。上述運算元可自結構暫存器122、推測暫存器116或轉送自執行單元108之相同或不同執行單元取得。
第四階段為發佈階段(I)312,其係執行於時脈週期3中。在發佈階段(I)312中,發佈邏輯112將非早期引退微指令124以及所提取的運算元與資料傳送至執行單元108。
第五階段為執行階段(E)314,其係執行於時脈週期4中。在執行階段(E)314中,執行單元108執行非早期引退微指令124以產生非早期引退微指令124的結果。雖然為了容易理解,執行階段314僅以單一時脈的持續期間來顯示,但實作上可以顯示為多個時脈。執行最快的微指令僅需單一時脈,但執行其它微指令則需要多個時脈。要執行有些較高複雜度的微指令更要多達10個時脈。因此,對於需要大於1個時脈之執行階段(E)314來說,後續階段將會根據執行時間而延遲一定數目的時脈。
第六階段為寫回階段(W)316,其係執行於時脈週期5中。在寫回階段(W)316中,執行單元108將非早期引退微指令124的執行結果寫回推測暫存器116中。執行單元108亦產生一般標籤136、一般完成138以及一般例外狀態訊號142給重排序緩衝器114。一般標籤136係用來確認一般完成138以及一般例外狀態訊號142會被寫回至重排序緩衝器114中的通道中。
第七階段為更新ROB階段(A)318,其係執行於時脈週期6中。重排序緩衝器114將執行單元108在寫回階段(W)316中產生的一般完成138與一般例外狀態訊號142寫回對應一般標籤136之重排序緩衝器114的通道中。當在時脈週期5接收到一般完成138時,重排序緩衝器114設定重排序緩衝器114中的完成旗標206,以表示重排序緩衝器114之通道38中的微指令已準備好引退。一般例外狀態訊號142係儲存在重排序緩衝器114之例外標籤208中,以表示非早期引退微指令124是否產生例外狀態。
第八階段為找出存在最久通道階段(B)322,其係執行於時脈週期7中。在找出存在最久通道階段(B)322中,重排序緩衝器114窺探(snoop)重排序緩衝器114中之存在最久的微指令,若有的話,則判斷有多少個微指令在後續時脈週期中被引退。可能被同時引退之最大數量的微指令,係視微處理器100的設定而定,但在一實施例中,可同時被引退之微指令的最大數量為3個。只有在設定完成旗標206且清除例外旗標208時,微指令才會被引退。所有微指令必須依序被引退。因此,若存在最久的微指令尚未準備好被引退之時,則沒有其它微指令會它在之前被引退。
第九階段為引退階段(C)324,其係執行於時脈週期8中。在引退階段(C)324中,重排序緩衝器114釋放所有正被引退之微指令的通道,並且將微指令之個別推測暫存器116中的結果寫至適當的結構暫存器122。重排序緩衝器114產生結果選擇168給多工器118以選擇推測結果166。多工器118接著輸出選擇資料172至結構暫存器122。此時,微指令已被引退,且執行的結果已被寫入至結構暫存器122。雖然引退階段A318、B322與C324係用管線階段來描述,但在一實施例中,它們可以是重排序緩衝器114之控制邏輯中的狀態機,在連續時脈週期期間所執行的操作。
第3b圖係顯示本發明實施例之早期引退微指令126之發佈與執行階段以及引退階段的架構示意圖。早期引退微指令126之早期流程,係經由6個發佈與執行階段、以及與第3a圖中之非早期引退微指令124相同之三個引退階段來完成。然而,早期引退微指令126的特色允許發佈與執行階段與某些引退階段同時發生,故可以平行方式執行之。發佈與執行階段在第3b圖中對早期引退微指令126所執行的操作,與第3a圖中對非早期引退微指令124所執行之操作相同,除了下述不同點以外。
第一個不同點為在第3b圖中,引退階段A 318、B 322與C 324在時脈週期3、4、5期間分別執行其操作,而非在第3a圖中之階段6、7、8中。第3b圖係描述早期引退微指令126為一單一時脈週期的執行指令,即早期引退微指令126在E階段314中僅需要單一時脈週期來執行。然而,對於在E階段314中需要多個時脈週期來執行的早期引退微指令126來說,引退階段A 318、B 322與C 324執行其操作的時脈週期,會根據額外時脈週期的數量及時移出。因此,舉例來說,在需要3個時脈週期來執行之早期引退微指令126的範例中,引退階段A 318、B 322與C 324在時脈週期5、6、7的期間分別執行其操作,而在需要3個時脈週期來執行之非早期引退微指令124的範例中,引退階段A 318、B 322與C 324在時脈週期8、9、10的期間分別執行其操作。因此,不管一個指令需要多少數量的時脈週期來執行,本發明實施例之早期引退的特色,令早期引退微指令126可能會比需要相同數量之時脈週期來執行的非早期引退微指令124早引退,其中在一實施例中提早3個時脈週期。
第二個不同點為在大多數的早期引退微指令126(其僅需要執行階段(E)314中之單一時脈)的範例中,暫存器檔案階段(R)308另外產生早期完成156、早期標籤158以及早期例外狀態162等訊號。暫存器檔案階段(R)308係為最早期階段(earliest stage),其中發佈邏輯112根據早期引退微指令126用來執行之時脈週期數目而產生早期完成156。發佈邏輯112持續搜尋需要用來執行每一早期引退微指令126之時脈週期數目,且若早期引退微指令126需要一個以上的時脈來執行時,發佈邏輯112依據執行早期引退微指令126所需的時脈週期數目,以延遲其產生早期完成156、早期標籤158以及早期例外狀態162的階段。因此,舉例來說,對於需要3個時脈來執行的早期引退微指令126來說,發佈邏輯112會在執行階段(E)314的第1個時脈才產生早期完成156、早期標籤158以及早期例外狀態162,並非如僅需單一時脈週期即可執行引退的微指令126一般,係在暫存器檔案階段(R)308中就產生。
第三個不同點是在寫回階段(W)316中,由於發佈邏輯112先前產生了早期引退微指令126的早期完成156、早期標籤158、以及早期例外狀態162(如上文所述,起始於暫存器檔案階段(R)308(在使用單一時脈執行指令的範例中)或後續階段(在使用多個時脈執行指令的範例中)),故執行單元108不產生早期引退微指令126之一般標籤136、一般完成138以及一般例外狀態訊號142給重排序緩衝器114。
第四個不同點為更新ROB階段(A)318根據早期引退微指令126之早期完成156、早期標籤158、以及早期例外狀態162來更新完成旗標206與例外旗標208,而不是像非早期引退微指令124,係依據一般標籤136、一般完成138以及一般例外狀態訊號142做更新。
第五個不同點為引退階段(C)324直接將經由多工器118而來、自執行單元108所取得之結果144寫入結構暫存器122,而非如寫入非早期引退微指令124一般,係寫入由推測暫存器116所取得的結果。
第4a圖係顯示本發明實施例之三個非早期引退微指令124序列的表格示意圖。三個非早期引退微指令124分別標示為m1、m2、m3,圖中亦顯示用來執行每一指令所需的時脈週期數目(亦即第3a與3b圖之執行階段(E)314中之指令的時脈週期數目),即微指令m1僅需要1個執行週期,微指令m2需要3個執行週期,微指令m3需要2個執行週期。
第4b圖係顯示本發明實施例第4a圖所述之非早期引退微指令124,在第3a圖各階段下的序列進展時序圖。第4b圖描述時脈週期1-11。在第4b圖的範例中,第1圖所示的執行單元108包括標示為EU#1 314與EU#2 314之個別執行單元。第4a圖中之微指令m1與m3為非早期引退微指令124的其中一類型,其係由執行單元EU#1 314來執行,而第4a圖中之微指令m2亦為非早期引退微指令124的其中一類型,其係由執行單元EU#2 314來執行。雖然可在微處理器100於時脈週期1-11的不同階段中,啟動比第4a圖中所示之三個微指令更多微指令來執行,但在本發明實施例僅顯示微指令m1-m3做說明。
在時脈週期1中,由於每時脈週期中只能派送一個微指令至一個執行單元,故派送階段(D)304將選擇微指令m1以分派至執行單元EU#1 314,並且選擇微指令m2以分派至執行單元EU#2 314。
在時脈週期2中,微指令m1與m2被送至佇列階段(Q)306,其中發佈邏輯112取得兩個微指令的指令資料。此外,派送階段(D)304選擇微指令m3以分派至執行單元EU#1 314。
在時脈週期3中,微指令m1與m2被送至暫存器檔案階段(R)308,其中發佈邏輯112取得非早期引退微指令124的來源運算元。此外,m3被送至佇列階段(Q)306。
在時脈週期4中,微指令m1與m2被送至發佈階段(1)312,其中發佈邏輯112將微指令m1與m2、伴隨所提取的指令資料與運算元傳送至其個別的執行單元108。此外,微指令m3被送至暫存器檔案階段(R)308。
在時脈週期5中,微指令m1開始執行於執行單元EU#1 314中,而微指令m2開始執行於執行單元EU#2 314中。此外,微指令m3被送至發佈階段(I)312。如第4a圖所示,微指令m1僅需要單一時脈即可執行,微指令m2需要3個時脈來執行,而微指令m3需要2個時脈來執行。
在時脈週期6中,微指令m1已完成執行並且進入寫回階段(W)316。在寫回階段(W)316中,執行單元EU#1 314產生微指令m1之一般標籤136、一般完成138以及一般例外狀態訊號142給重排序緩衝器114,如第4b圖所示。執行單元EU#1 314亦產生結果144。此外,微指令m2繼續在執行單元EU#2 314中執行3個時脈中的第2個時脈,而微指令m3開始在目前已可使用之執行單元EU#1 314執行。
在時脈週期7中,微指令m1進入更新ROB階段(A)318,並對重排序緩衝器114中,依據一般標籤136所指定並分派給微指令m1的通道,以更新完成旗標206與例外狀態208。此外,微指令m2進入執行單元EU#2 314中執行3個時脈中的第3個時脈,而微指令m3進入執行單元EU#1 314中執行2個時脈中的第2個時脈。
在時脈週期8中,在ROB階段(B)322中,重排序緩衝器114檢查其中之存在最久微指令(包括m1)以判斷找到的指令是否準備好引退。此外,微指令m2與m3二者都進入寫回階段(W)316,且執行單元EU#1與EU#2 314產生對應微指令m2與m3之個別的一般標籤136、一般完成138以及一般例外狀態訊號142給重排序緩衝器114,如第4b圖所示。執行單元EU#1與EU#2 314亦產生對應微指令m2與m3之個別結果144。
在時脈週期9中,微指令m1在引退階段(C)324被重排序緩衝器114引退。也就是重排序緩衝器114內的控制邏輯將產生結果選擇168的值,使得多工器118可將微指令m1的結果,從推測暫存器116寫入至結構暫存器122中,而重排序緩衝器114中先前配置給微指令m1的通道將被釋放,使得重命名/分派/派送單元104可將重排序緩衝器114中之該通道分派給另一新的微指令。微指令m2與m3二者進入更新ROB階段(A)318,其中重排序緩衝器114更新微指令m2與m3之個別旗標206/208,如上文所述。
在時脈週期10中,在ROB階段(B)322裡,重排序緩衝器114檢查其中之存在最久微指令,以判斷微指令m2與m3是否準備好引退。
在時脈週期11中,微指令m2與m3在引退階段(C)324被重排序緩衝器114引退,使得重命名/分派/派送單元104可將重排序緩衝器114中之該對應通道分派給二個新的微指令。
第5a圖係顯示本發明實施例之九個早期引退微指令126序列的表格示意圖。九個早期引退微指令126標示為m1~m9,圖中亦顯示用來執行每一指令所需的時脈週期數目,即微指令m1與m4~m9僅需要1個執行週期,微指令m2需要3個執行週期,微指令m3需要2個執行週期。
第5b圖係顯示本發明實施例中,根據第3b圖所示之階段,來呈現第5a圖之早期引退微指令126的序列進展時序圖。如第5a圖所示,其描述了時脈週期1-11。第5a圖中之微指令m1、m3、m5、m7、m9為早期引退微指令126中,由執行單元EU#1 314所執行之類型,而第4a圖中之微指令m2、m4、m6、m8為早期引退微指令126中,由執行單元EU#2 314所執行的類型。
在時脈週期1中,由於一個微指令只能以每時脈週期與每個別執行單元(per individual execution unit per clock cycle)的方式進行派送,故派送階段(D)304選擇微指令m1以分派至執行單元EU#1 314,並且選擇微指令m2以分派至執行單元EU#2 314。
在時脈週期2中,微指令m1與m2被送至佇列階段(Q)306。此外,派送階段(D)304則選擇微指令m3以分派至執行單元EU#1 314。
在時脈週期3中,微指令m1與m2被送至暫存器檔案階段(R)308。值得注意的是,發佈邏輯112產生微指令m1之早期完成156、早期標籤158以及早期例外狀態162給重排序緩衝器114,如第5b圖所示,其比第4b圖所示邏輯單元108產生非早期引退微指令124之一般標籤136、一般完成138以及一般例外狀態訊號142要早3個時脈週期。此外,微指令m3被送至佇列階段(Q)306。雖然微指令m2亦在暫存器檔案階段(R)308中,由於微指令m2需要3個時脈週期來執行,故發佈邏輯112在產生微指令m2之早期完成156、早期標籤158以及早期例外狀態162之前,必須等待2個以上的時脈週期。
在時脈週期4中,微指令m1與m2被送至發佈階段(I)312。此外,微指令m3被送至暫存器檔案階段(R)308。雖然微指令m3在暫存器檔案階段(R)308中,由於微指令m3需要2個時脈週期來執行,故發佈邏輯112在產生微指令m2之早期完成156、早期標籤158以及早期例外狀態162之前,必須等待1個以上的時脈週期。新的微指令m4與m5進入派送階段(D)304。
在時脈週期5中,微指令m1開始在執行單元EU#1 314中執行而微指令m2開始在執行單元EU#2 314中執行。此外,微指令m3被送至發佈階段(I)312。發佈邏輯112產生微指令m2與m3之早期完成156、早期標籤158以及早期例外狀態162至重排序緩衝器114中。微指令m3所延遲的1個時脈與微指令m2所延遲的2個時脈,係分別註明在上述的時脈週期3、4中。此外,微指令m1被送至階段(B)322,微指令m4與m5被送至佇列階段(Q)306,以及新的微指令m6與m7進入派送階段(D)304。
在時脈週期6中,微指令m1已完成執行並且進入寫回階段(W)316。在寫回階段(W)316中,執行單元EU#1 314產生微指令m1之結果144給推測暫存器116。同時,重排序緩衝器114亦在引退階段(C)324引退微指令m1。也就是重排序緩衝器114內的邏輯產生結果選擇168的值,使得多工器118將自執行單元108而來之微指令m1的結果144寫入至結構暫存器122。此外,微指令m2繼續在執行單元EU#2 314中執行3個時脈中的第2個時脈,而微指令m3開始在目前已可使用之執行單元EU#1 314執行。由於發佈邏輯112在時脈週期5產生微指令m2與m3的早期完成156、早期標籤158以及早期例外狀態162給重排序緩衝器114,故微指令m2與m3二者都進入更新ROB階段(A)318。此外,微指令m4與m5被送至暫存器檔案階段(R)308。發佈邏輯112產生微指令m4與m5的早期完成156、早期標籤158以及早期例外狀態162給重排序緩衝器114,如第5b圖所示。此外,微指令m4與m5被送至佇列階段(Q)306,而新的微指令m8與m9進入派送階段(D)304。
在時脈週期7中,微指令m2在執行單元EU#2 314中執行3個時脈中的第3個時脈,而微指令m3在執行單元EU#1 314中執行2個時脈中的第2個時脈。微指令m2與m3亦進入階段(B)322。此外,微指令m4與m5進入發佈階段(I)312,同時進入更新ROB階段(A)318。此外,微指令m6與m7進入暫存器檔案階段(R)308。發佈邏輯112產生微指令m6與m7的早期完成156、早期標籤158以及早期例外狀態162給重排序緩衝器114。此外,微指令m8與m9被送至佇列階段(Q)306。
在時脈週期8中,微指令m2與m3進入寫回階段(W)316,且執行單元EU#2 314與EU#1 314分別產生微指令m2與m3之結果144。此外,重排序緩衝器114引退微指令m2與m3,並且將微指令m2與m3個別在執行單元108中的結果144寫入結構暫存器122,而分別由EU#2與EU#1所執行的m4與m5則同時進入階段(B)322。此外,微指令m6與m7進入發佈階段(I)312與更新ROB階段(A)318。此外,微指令m8與m9進入暫存器檔案階段(R)308,以及發佈邏輯112產生微指令m8與m9的早期完成156、早期標籤158以及早期例外狀態162給重排序緩衝器114。
在時脈週期9中,微指令m4與m5進入寫回階段(W)316,且執行單元EU#2 314與EU#1 314分別產生微指令m4與m5之結果144。此外,重排序緩衝器114引退微指令m4與m5,並且將微指令m4與m5分別在執行單元108中的結果144寫入結構暫存器122。此外,微指令m6與m7分別由執行單元EU#2 314與EU#1 314執行,且微指令m6與m7進入階段(B)322。此外,微指令m8與m9進入發佈階段(I)312與更新ROB階段(A)318。
在時脈週期10中,微指令m6與m7進入寫回階段(W)316,且執行單元EU#2 314與EU#1 314分別產生微指令m6與m7之結果144。此外,重排序緩衝器114引退微指令m6與m7,並且將微指令m6與m7分別在執行單元108中的結果144寫入結構暫存器122。此外,微指令m8與m9分別由執行單元EU#2 314與EU#1 314執行,且微指令m8與m9進入階段(B)322。
在時脈週期11中,微指令m8與m9進入寫回階段(W)316,且執行單元EU#2 314與EU#1 314分別產生微指令m8與m9之結果1.44。此外,微指令m8與m9進入引退階段(C)324,其中重排序緩衝器114引退微指令m8與m9,並且將微指令m8與m9個別在執行單元108中的結果144寫入結構暫存器122。
比較第4b圖與第5b圖,可發現在引退微指令方面有很大的好處。在時脈週期6與11之間的6個時脈週期的執行期間,與僅引退3個非早期引退微指令124(如第4b圖所示)相比,微處理器100可引退9個早期引退微指令126(如第5b圖所示)。重排序緩衝器114中已被引退之微指令所增加的數目,使得更多微指令可被分派至重排序緩衝器114,其允許更多微指令可被看到而進行排程以發佈出去被執行,且因此明顯的將執行單元108的使用性最大化。
第6圖係顯示本發明實施例之第1圖中微處理器100操作的步驟流程圖。流程起始於步驟604。
在步驟604中,發佈邏輯112讀取保留站106的微指令,其係為了判斷該微指令為早期引退微指令126或非早期引退微指令124,接著執行步驟606。
在步驟606中,發佈邏輯112判斷微指令是否為早期引退微指令126。若微指令為非早期引退微指令124,則接著執行步驟608。若微指令為早期引退微指令126,則接著執行步驟628與648。
在步驟608中,發佈邏輯112判斷微指令為非早期引退微指令124,並且自結構暫存器122、推測暫存器116或轉送自執行單元108的資料取得非早期引退微指令124的運算元資料,接著執行步驟612。
在步驟612中,發佈邏輯112發佈非早期引退微指令124至執行單元108中之其中一執行單元,接著執行步驟614。
在步驟614中,執行單元108中被指定執行單元將執行非早期引退微指令124。執行單元執行非早期引退微指令124所需的時脈週期數量,會依據微指令的類別而有所不同。當許多微指令執行於1-3時脈週期時,某些算術指令可要求更多時脈週期來執行,接著執行步驟616。
在步驟616中,非早期引退微指令124已完成執行。執行單元108將結果144寫入推測暫存器116,並且將一般標籤136、一般完成138以及一般例外狀態訊號142寫入重排序緩衝器114,接著執行步驟618。
在步驟618中,重排序緩衝器114分別根據在步驟616所產生之一般完成138以及一般例外狀態訊號142的值,將完成旗標206與例外狀態旗標208更新至一般標籤136指定之通道,接著執行步驟622。
在步驟622中,重排序緩衝器114檢查其中之存在最久微指令以判斷是否有任何指令準備好引退。重排序緩衝器114檢查存在最久微指令之完成旗標206與例外狀態旗標208。在實施例中,將分析存在最久之三個微指令。若設定完成旗標206且清除例外狀態旗標208,則微指令已準備好被引退。只有當所有存在較久的微指令在相同時脈週期被引退時,才可引退重排序緩衝器114中之較新的微指令。若重排序緩衝器114中存在最久的微指令尚未準備引退,則重排序緩衝器114必須等待引退該微指令,直到該微指令準備好被引退,如完成旗標206所示,接著執行步驟624。
在步驟624中,藉由產生結果選擇168給多工器118,以將推測結果166傳送給選擇資料172,於是重排序緩衝器114便可將推測暫存器116中的推測結果166寫入結構暫存器122。重排序緩衝器114亦利用宣告無效(invalidate)的方式,來釋放重排序緩衝器114中正被引退之微指令的通道,故重排序緩衝器114中被宣告無效的通道可由重命名/分派/派送單元104分派給新的微指令。然而,若例外狀態旗標208表示非早期引退微指令124已產生例外狀況,則微處理器100反而要處理該例外狀況,然後結束本流程。
在步驟628中,發佈邏輯112判斷微指令為早期引退微指令126,並且自結構暫存器122、推測暫存器116或轉送自執行單元108的資料取得早期引退微指令126的運算元資料,接著執行步驟632。
在步驟632中,發佈邏輯112發佈早期引退微指令126至執行單元108,接著執行步驟634。
在步驟634中,執行單元108執行早期引退微指令124,接著執行步驟636。
在步驟636中,早期引退微指令126已完成執行。執行單元108將結果144寫入推測暫存器116,然後結束本流程。
步驟648、652、654、656可與步驟628、632、634、636以平行方式執行之。步驟間的時間相依係視執行早期引退微指令126的時脈週期數目而定,如步驟648所述。
在步驟648中,在執行單元輸出早期引退微指令126的結果144之三個時間周期前,發佈邏輯112即輸出早期完成156與早期標籤158並且清除早期例外狀態162。由於早期引退微指令126不會導致例外狀況,故要清除早期例外狀態162。發佈邏輯112繼續追蹤每一早期引退微指令126需要多少時脈週期來執行,並且在該早期引退微指令126的整個執行期間,對已執行的週期總數進行維持與記錄。在完成執行早期引退微指令126後,延遲三個時脈週期可確保早期引退微指令126將準備好被引退。在其它實施例中,可能需要比第3a與3b圖所需較多或更多的發佈與執行階段與/或引退階段。因此,對其它實施例來說,在執行單元108輸出早期引退微指令126之結果前,發佈邏輯112產生多於或少於三個時脈週期之早期完成156、早期標籤158以及早期例外狀態162的值,接著執行步驟652。
在步驟652中,重排序緩衝器114依據發佈邏輯112所產生之早期完成156、早期標籤158以及早期例外狀態162來進行資料更新,接著執行步驟654。
在步驟654中,重排序緩衝器114檢查其中之存在最久微指令,以判斷是否有任何指令準備好引退。由於早期引退微指令126不會產生例外狀況,故總是要清除早期引退微指令126的例外狀態旗標208,接著執行步驟656。
在步驟656中,重排序緩衝器114將執行單元108的結果144寫入結構暫存器122,其係藉由產生結果選擇168,以將執行單元108的結果144傳送給選擇資料172。重排序緩衝器114亦利用宣告無效(invalidate)的方式,來釋放重排序緩衝器114中正被引退之微指令的通道,故重排序緩衝器114中被宣告無效的通道可由重命名/分派/派送單元104分派給新的微指令,本流程在步驟656結束。
需注意到,為了增加失序執行之微處理器的執行效能,增加微指令引退率是有效的。藉由上文所述之早期引退微指令124,重排序緩衝器中的通道可在一般引退微指令執行之前即被釋放,故可很快的將微指令分派到重排序緩衝器中可用的通道。如此一來,藉由增加保留站中之微指令的數量、以及增加當執行單元可開始執行另一微指令時保留站中之微指令準備好執行的可能性,可增加預看能力與執行單元的使用性。
本發明所揭露之實施例已如上文所述,但這些實施例僅做說明,並非做為本發明限縮之用。從事電腦相關工作且熟習本發明技藝者,皆可在不脫離本發明精神之下,對本發明實施例進行修改、或完成相關細節。例如,除了使用硬體(例如執行於中央處理器(CPU)、微控制器、數位訊號處理器、或其他硬體裝置之中、或透過與這些硬體耦合獲得實施)之外,亦可使用軟體(例如電腦可讀取之編碼(Code)、程式碼、或以任何形式所呈現的指令、例如原始碼、目的碼或機器碼等)來實現、或透過儲存在電腦可使用(例如,讀取)媒介中的軟體等方式來實施。而這些軟體可用來啟動本發明實施例裝置或方法的功能(Function)、製造(Fabrication)、模型化(Modeling)、模擬(Simulation)、描述(Description)及/或測試(Testing)等。例如,本發明可透過一般的程式語言編碼(如C、C++)、硬體描述語言(Hardware Description Languages,HDL),包括Verilog HDL、VHDL...等等、或任何其它程式型態的程式語言來實現。相關軟體程式則可以包含於實體媒體,如半導體或磁性碟片、或光碟片中。本發明實施例可包含一實施方法,其係提供微處理器一描述本發明實施例微處理器設計架構的軟體來實施、而軟體可透過一通訊網路(communication network,例如網際網路(the Internet)或企業內部網路(intranet))傳送包含該軟體的電腦資料訊號來達成。值得注意的是,本發明所述之裝置與方法可以被包含在矽智財核心(semiconductor intellectual property core),諸如微處理器核心(microprocessor core,例如包含在HDL中)之中,其可以在積體電路製造過程中轉換成硬體。此外,本發明所述之裝置與方法亦可透過結合硬體與軟體等方式來達成。是以,本發明將不受限於任何描述於本說明書中的實施例,而應以後續的申請專利範圍以及其等效範圍來定義。本發明可實施於所有一般用途電腦系統中的微處理器之中。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...微處理器
104...重命名/分派/派送單元
106...保留站
108...執行單元
112...發佈邏輯
114...重排序緩衝器
116...推測暫存器
118...多工器
122...結構暫存器
124...非早期引退微指令
126...早期引退微指令
134...微指令
136...一般標籤
138...一般完成訊號
142...一般例外狀態訊號
144...結果
148...推測暫存器
156...早期完成訊號
158...早期標籤
162...一般例外狀態訊號
166...推測結果
168...結果選擇
172...選擇資料
204...微指令欄位
206...完成旗標欄位
208...例外旗標欄位
304...派送階段(D)
306...佇列階段(Q)
308...暫存器檔案階段(R)
312...發佈階段(I)
314...執行階段(E)
316...寫回階段(W)
318...更新ROB階段(A)
322...存在最久通道階段(B)
324...引退階段(C)
604、606、608、612、614、616、618、622、624、628、632、634、636、648、652、654、656...流程步驟
第1圖係顯示本發明實施例之微處理器的架構示意圖。
第2圖係顯示本發明實施例之第1圖之ROB中之微指令通道的架構示意圖。
第3a圖係顯示本發明實施例之非早期引退微指令之發佈與執行階段(issue and execute stage)以及引退階段(retirement stage)的架構示意圖。
第3b圖係顯示本發明實施例之早期引退微指令之發佈與執行階段以及引退階段的架構示意圖。
第4a圖係顯示本發明實施例之三個非早期引退微指令序列的表格示意圖。
第4b圖係顯示本發明實施例之第4a圖之非早期引退微指令序列之進展的時序圖。
第5a圖係顯示本發明實施例之九個早期引退微指令序列的表格示意圖。
第5b圖係顯示本發明實施例之根據第3圖之階段所呈現之第5a圖之早期引退微指令序列之進展的時序圖。
第6圖係顯示本發明實施例之第1圖中微處理器操作的步驟流程圖。
100...微處理器
104...重命名/分派/派送單元
106...保留站
108...執行單元
112...發佈邏輯
114...重排序緩衝器
116...推測暫存器
118...多工器
122...結構暫存器
124...非早期引退微指令
126...早期引退微指令
134...微指令
136...一般標籤
138...一般完成訊號
142...一般例外狀態訊號
144...結果
148...推測暫存器
156...早期完成訊號
158...早期標籤
162...一般例外狀態訊號
166...推測結果
168...結果選擇
172...選擇資料
204...微指令欄位
206...完成旗標欄位
208...例外旗標欄位

Claims (21)

  1. 一種改善失序超純量(Out-of-order superscaler)執行單元(Superscalar Execution Unit)之微處理器,其係使用於一相對小之在序(in-order)指令引退(Retirement)緩衝器並且藉由選擇性的提早初始指令引退來實現,該微處理器包括:複數執行單元,每一執行單元用以計算一指令的結果,其中該指令係為一例外類別(excepting type)指令或一非例外類別(non-excepting type)指令,其中該例外類別指令可在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況,而該非例外類別指令無法在被發送至該執行單元以計算其結果後令該微處理器取得一非例外狀況;以及一引退單元(Retire Unit),耦接於該等執行單元,用以判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用該結果來更新該微處理器之結構狀態,其中該引退單元係用以在該執行單元輸出該非例外類別指令之結果前執行該判斷操作,其中該引退單元係用以在該執行單元輸出該例外類別指令之結果後執行該判斷操作。
  2. 如申請專利範圍第1項所述的改善失序超純量執行單元之微處理器,其中,該非例外類別指令具有固定的執行延遲(execution latency)。
  3. 如申請專利範圍第1項所述的改善失序超純量執行單元之微處理器,其中執行該非例外類別指令所需之時脈週期數目,係在該非例外類別指令準備好發送給該執行單元時可得知。
  4. 如申請專利範圍第1項所述的改善失序超純量執行單元之微處理器,其中,該引退單元包括:一在序指令引退緩衝區,耦接於該等執行單元,其具有複數通道(entry),每一通道用以儲存與一指令相關之一指示器(indicator),而該指示器用以表示該指令是否準備好根據該結果更新該微處理器之結構狀態;其中該引退單元更在該執行單元輸出該非例外類別指令之該結果前更新該等通道之其中一通道;及其中該引退單元更在該執行單元輸出該例外類別指令之該結果後更新該等通道之其中一通道。
  5. 如申請專利範圍第4項所述的改善失序超純量執行單元之微處理器,其更包括:控制邏輯,耦接於該在序指令引退緩衝區,用以在該執行單元輸出該非例外類別指令之該結果之前的複數個時脈週期更新該指示器,以表示該指令已準備好根據該結果更新該微處理器之結構狀態。
  6. 如申請專利範圍第4項所述的改善失序超純量執行單元之微處理器,其中,該引退單元比該例外類別指令更早釋放(free)而重新使用(Reuse)該在序指令引退緩衝區之該等通道中,對應於該非例外類別指令之一通道。
  7. 如申請專利範圍第4項所述的改善失序超純量執行單元之微處理器,其中,當該微處理器根據該通道中之結果更新其結構時,該引退單元更釋放而重新使用該在序指令引退緩衝區之該等通道之其中一通道。
  8. 一種改善失序超純量執行單元的方法,其係使用於一相對小之在序指令引退緩衝器,並且藉由選擇性的提早初始指令引退來實現,該方法包括下列步驟:計算一指令的結果,其中該指令係為一例外類別指令或一非例外類別指令,其中該例外類別指令可在被發送至一執行單元以計算其結果後令該微處理器取得一例外狀況,而該非例外類別指令無法在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況;判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用該指令之該結果來更新該微處理器之結構狀態;其中該判斷操作包括在該執行單元輸出該非例外類別指令之該結果前執行該判斷操作;其中該判斷操作包括在該執行單元輸出該例外類別指令之該結果後執行該判斷操作。
  9. 如申請專利範圍第8項所述的改善失序超純量執行單元的方法,其中,該非例外類別指令具有固定的執行延遲。
  10. 如申請專利範圍第8項所述的改善失序超純量執行單元的方法,其中,執行該非例外類別指令所需之時脈週期數目,係在該非例外類別指令準備好發送給該執行單元時可得知。
  11. 如申請專利範圍第8項所述的改善失序超純量執行單元的方法,其中,該微處理器包括一在序指令引退緩衝區,其具有複數通道,每一通道用以儲存與一指令相關之一指示器,而該指示器用以表示該指令是否準備好根據其結果更新該微處理器之結構狀態,該方法更包括下列步驟:在該執行單元輸出該非例外類別指令之該結果前更新該等通道之其中一通道;以及在該執行單元輸出該例外類別指令之該結果後更新該等通道之其中一通道。
  12. 如申請專利範圍第11項所述的改善失序超純量執行單元的方法,其更包括下列步驟:在該執行單元輸出該非例外類別指令之該結果之前的複數個時脈週期更新該指示器,以表示該指令已準備好根據其結果更新該微處理器之結構狀態。
  13. 如申請專利範圍第11項所述的改善失序超純量執行單元的方法,其更包括下列步驟:比該例外類別指令更早釋放(free)而重新使用(reuse)該在序指令引退緩衝區之該等通道中,對應於該非例外類別指令之一通道。
  14. 如申請專利範圍第11項所述的改善失序超純量執行單元的方法,其更包括下列步驟:當該微處理器根據該通道中之結果更新其結構時,更釋放而重新使用該在序指令引退緩衝區之該等通道之其中一通道。
  15. 一種使用運算裝置之電腦程式產品,該電腦程式產品包括:一電腦可使用儲存媒體,其包括載入至該電腦可使用儲存媒體之電腦可讀取程式碼,用以說明一種改善失序超純量執行單元的微處理器,其係使用於一相對小之在序指令引退緩衝器並且藉由選擇性的提早初始指令引退來實現,該電腦可讀取程式碼包括:第一程式碼,用以說明(Specifying)複數執行單元,每一執行單元用以計算一指令的結果,其中該指令係為一例外類別指令或一非例外類別指令,其中該例外類別指令可在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況,而該非例外類別指令無法在被發送至該執行單元以計算其結果後令該微處理器取得一例外狀況;以及第二程式碼,用以說明一引退單元,耦接於該等執行單元,用以判斷一指令在該微處理器中是否為存放最久的指令,以及該指令是否已準備好利用該指令之該結果來更新該微處理器之結構狀態,其中該引退單元係用以在該執行單元輸出該非例外類別指令之該結果前執行該判斷操作,其中該引退單元係用以在該執行單元輸出該例外類別指令之該結果後執行該判斷操作。
  16. 如申請專利範圍第15項所述的使用運算裝置之電腦程式產品,其中,該非例外類別指令具有固定的執行延遲。
  17. 如申請專利範圍第15項所述的使用運算裝置之電腦程式產品,其中,執行該非例外類別指令所需之時脈週期數目,係在該非例外類別指令準備好發送給該執行單元時可得知。
  18. 如申請專利範圍第15項所述的使用運算裝置之電腦程式產品,其中,該引退單元包括:一在序指令引退緩衝區,耦接於該等執行單元,其具有複數通道,每一通道用以儲存與一指令相關之一指示器,而該指示器用以表示該指令是否準備好根據該指令之該結果更新該微處理器之該結構狀態,其中該引退單元更在該執行單元輸出該非例外類別指令之該結果前更新該等通道之其中一通道,其中該引退單元更在該執行單元輸出該例外類別指令之該結果後更新該等通道之其中一通道。
  19. 如申請專利範圍第18項所述的使用運算裝置之電腦程式產品,其更包括:控制邏輯,耦接於該在序指令引退緩衝區,用以在該執行單元輸出該非例外類別指令之該結果之前的複數個時脈週期更新該指示器,以表示該指令已準備好根據其結果更新該微處理器之結構狀態。
  20. 如申請專利範圍第18項所述的使用運算裝置之電腦程式產品,其中,該引退單元比該例外類別指令更早釋放而重新使用(Reuse)該在序指令引退緩衝區之該等通道中,對應於該非例外類別指令之一通道。
  21. 如申請專利範圍第18項所述的使用運算裝置之電腦程式產品,其中,當該微處理器根據該通道中之結果更新其結構時,該引退單元更釋放而重新使用該在序指令引退緩衝區之該等通道之其中一通道。
TW098139089A 2008-11-25 2009-11-18 具選擇性啟動早期引退功能之失序執行微處理器 TWI439930B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/277,409 US8074060B2 (en) 2008-11-25 2008-11-25 Out-of-order execution microprocessor that selectively initiates instruction retirement early

Publications (2)

Publication Number Publication Date
TW201020913A TW201020913A (en) 2010-06-01
TWI439930B true TWI439930B (zh) 2014-06-01

Family

ID=42197446

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098139089A TWI439930B (zh) 2008-11-25 2009-11-18 具選擇性啟動早期引退功能之失序執行微處理器

Country Status (3)

Country Link
US (1) US8074060B2 (zh)
CN (1) CN101706713B (zh)
TW (1) TWI439930B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
US8171345B2 (en) * 2009-04-15 2012-05-01 Vmware, Inc. Disablement of an exception generating operation of a client system
US8769247B2 (en) * 2011-04-15 2014-07-01 Advanced Micro Devices, Inc. Processor with increased efficiency via early instruction completion
US9354884B2 (en) 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
EP3087473A1 (en) * 2013-12-23 2016-11-02 Intel Corporation Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor
US10713049B2 (en) * 2014-04-25 2020-07-14 Avago Technologies International Sales Pte. Limited Stunt box to broadcast and store results until retirement for an out-of-order processor
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
US9715432B2 (en) * 2014-12-23 2017-07-25 Intel Corporation Memory fault suppression via re-execution and hardware FSM
US20170286121A1 (en) * 2016-04-01 2017-10-05 Gur Hildesheim Apparatus and method for re-execution of faulting operations
US11194584B1 (en) 2019-07-19 2021-12-07 Marvell Asia Pte, Ltd. Managing out-of-order retirement of instructions
CN112559048B (zh) * 2019-09-25 2023-12-12 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11573802B2 (en) * 2019-10-23 2023-02-07 Texas Instruments Incorporated User mode event handling
US11281582B2 (en) * 2020-01-14 2022-03-22 International Business Machines Corporation Completion logic performing early commitment of a store-conditional access based on a flag

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5923872A (en) * 1997-11-26 1999-07-13 Digital Equipment Corporation Apparatus for sampling instruction operand or result values in a processor pipeline
US7024543B2 (en) * 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor

Also Published As

Publication number Publication date
TW201020913A (en) 2010-06-01
US8074060B2 (en) 2011-12-06
CN101706713A (zh) 2010-05-12
CN101706713B (zh) 2013-02-20
US20100131742A1 (en) 2010-05-27

Similar Documents

Publication Publication Date Title
TWI439930B (zh) 具選擇性啟動早期引退功能之失序執行微處理器
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
TW531711B (en) Partitioned issue queue and allocation strategy
US5630149A (en) Pipelined processor with register renaming hardware to accommodate multiple size registers
US8843729B2 (en) Microprocessor that fuses MOV/ALU instructions
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US8856496B2 (en) Microprocessor that fuses load-alu-store and JCC macroinstructions
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US6192466B1 (en) Pipeline control for high-frequency pipelined designs
CN101281460B (zh) 处理多个线程的方法和设备
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
KR20190031494A (ko) 블록 기반의 프로세서에 대한 트랜잭션 레지스터 파일
US6289437B1 (en) Data processing system and method for implementing an efficient out-of-order issue mechanism
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
JP2004355663A (ja) 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JPH10283187A (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
KR100310798B1 (ko) 머신문맥동기화동작실행방법및프로세서
KR19990013425A (ko) 데이타 처리 시스템과, 데이타 처리 시스템의 데이타 포착 방법과, 프로그램 저장 장치
JPH11345122A (ja) プロセッサ
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US5875326A (en) Data processing system and method for completing out-of-order instructions
US7836282B2 (en) Method and apparatus for performing out of order instruction folding and retirement
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令