TW201504941A - 使用動態埠重映射以避免指令排程期間閉鎖的方法與設備 - Google Patents

使用動態埠重映射以避免指令排程期間閉鎖的方法與設備 Download PDF

Info

Publication number
TW201504941A
TW201504941A TW103109486A TW103109486A TW201504941A TW 201504941 A TW201504941 A TW 201504941A TW 103109486 A TW103109486 A TW 103109486A TW 103109486 A TW103109486 A TW 103109486A TW 201504941 A TW201504941 A TW 201504941A
Authority
TW
Taiwan
Prior art keywords
register file
file unit
execution
entity
instructions
Prior art date
Application number
TW103109486A
Other languages
English (en)
Other versions
TWI543075B (zh
Inventor
Nelson Chan
Original Assignee
Soft Machines 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 Soft Machines Inc filed Critical Soft Machines Inc
Publication of TW201504941A publication Critical patent/TW201504941A/zh
Application granted granted Critical
Publication of TWI543075B publication Critical patent/TWI543075B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/3824Operand accessing
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

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

使用動態埠重映射以避免指令排程期間閉鎖的方法與設備
根據本發明的具體實施例一般係關於微處理器架構,特別是關於非循序微處理器的架構。
在非循序(Out-Of-Order(“OOO”))微處理器中,指令允許沒有依照其編程的順序發佈及執行。在OOO微處理器中的指令非循序地執行,同時仍保有資料相依性約束。因為指令可以任意的順序完成,因此當其完成時,OOO處理器管線中的架構暫存器檔案無法由指令修改,因為這將使其在異常或中斷事件中難以正確地恢復其數值。因此,進入管線的每一指令在實體暫存器檔案中設有臨時的項目,可將其結果儲存於其中。當指令「退休」,實體暫存器檔案中的臨時項目最後以編程的順序寫入至架構暫存器檔案。
傳統OOO微架構中的寫回模組將非循序執行的指令所產生的數值先寫回重排序緩衝器(ROB)中的實體暫存器檔案。ROB追蹤指令進入管線的編程順序,且針對這些指令的每一者,ROB維持在實體暫存器檔案中臨時的暫存器儲存。當ROB中最舊的指令產生有效的結果,該些指令可 安全地提交。亦即,該些指令的結果可為永久,因為沒有能夠引起可能取消該些指令效應之錯誤預測或異常的更早指令。當指令準備好要提交,ROB將在實體暫存器檔案中針對該些指令的對應數值移動到架構暫存器檔案,這樣指令就可以退休。因此,經由ROB的依序提交程序,架構暫存器檔案中的結果可為永久且在架構上為可見的。
某些傳統的分散式OOO處理器設計利用分散式實體暫存器檔案。將實體暫存器檔案分散到二或更多單元將降低單一單元一般所需的面積及路由。在一分散式設計中,執行埠係連結至離散實體暫存器單元。舉例來說,圖1描述具有雙翼之傳統分散式設計的方塊圖,其中實體暫存器檔案係分散在兩翼。如圖1所式,翼0 110包含執行單元0 106、架構暫存器檔案0 104、及實體暫存器檔案0 108,而翼1 130包含執行單元1 122、架構暫存器檔案1 120、及實體暫存器檔案1 124。
當指令從排程器172內的發佈佇列(圖未示)發佈,其由其中一翼內的執行單元所執行。接著,指令寫入其輸出至個別的實體暫存器檔案,且當指令退休,其暫存器目的地係移動至個別架構暫存器檔案。舉例來說,在執行單元0 106中執行的指令將其暫存器輸出寫入至實體暫存器檔案0 108。當指令退休,其暫存器目的地移動至架構暫存器檔案0 104。
圖2描述顯示用於傳統分散式設計之靜態映射技術的方塊圖,其將在排程器中的選擇埠與在OOO處理器之執行單元中的執行埠配對。傳統OOO處理器中的排程器在每一循環以靜態順序選擇並派送多個指令。舉例來說,在圖2中,排程器272可基於時期的順序而經由選擇埠0 204、選擇埠1 206、選擇埠2 220、及選擇埠3 222選擇4個指令。因此,最舊及最 優先的指令將由選擇埠0 204選擇。圖2及其他圖式所示的選擇埠也包含用以挑選適當指令的選擇邏輯。應注意到,雖然圖2的範例僅選擇4個指令,一般的排程器可具有任意數量的選擇埠來選擇指令。
圖2所示之傳統OOO處理器的選擇埠係與特定的執行埠連結。因此,選擇埠0 204係連結至執行單元埠0 208,選擇埠1 206係連結至執行單元埠2 212,選擇埠2 220係連結至執行單元埠1 210,且選擇埠3 222係連結至執行單元埠3 214。執行單元埠0 208及執行單元埠1 210為執行單元0 232的部分,其寫入其輸出至實體暫存器檔案0 281,其接著流入架構暫存器檔案0 280。類似地,執行單元埠2 212及執行單元埠3 214將其輸出寫入至實體暫存器檔案1 284,其接著流入架構暫存器檔案1 283。
如圖2所示,選擇埠1 206連接至在翼1 230中的執行單元埠2 212,而選擇埠2 220連接至在翼0 211中的執行單元埠1 210。各埠如圖2所示交聯,以平衡在翼0與翼1之間的負載。舉例來說,若在一指定循環中只有兩個就緒指令由前兩個選擇埠,即選擇埠0 204及選擇埠1 206所選擇,翼0與翼1之間的負載係藉由傳送一指令至執行單元埠0及其他指令至執行單元埠2而平衡,而非將兩個指令路由至執行單元0 232。選擇埠0一般將挑選最舊或最優先的指令,而剩餘的埠將以時期降低的順序來挑選指令。
由於在傳統複雜排程器設計中的時序限制,選擇單元及執行埠如圖2所示靜態地映射。舉例來說,在所述的設計中,選擇埠0 204係連結至執行單元埠0 208。
然而,在傳統設計中發生一個問題,例如圖1所述,當實體暫存器檔案0 281滿時而排程器中的最舊指令尚未執行。在指令以OOO方式 執行的OOO機器中,指令的退休必須完成,以維持編程順序。因為最舊指令尚未執行,排程器272無法使任何較新的指令退休,因此實體暫存器檔案0 281無法流至架構暫存器檔案0 280。同時,排程器272無法派送最舊的指令,因為用以挑選最舊指令的選擇單元係靜態地連結至翼0 211中的執行單元埠0 208。
在最佳的環境中,此結果沒有效率且將影響效能,而在最差的環境中,其可能引起閉鎖。若產生閉鎖,需要清除整體管線以復原。因此,指令從排程器272及實體暫存器檔案0 281清除並再次派送。然而,當指令重派送時,相同的閉鎖條件可能再次產生,因此靜態地映射選擇埠及執行埠可能是有問題的。
已用於解決閉鎖問題的一傳統技術係描述於圖3。圖3描述顯示用於傳統分散式設計之技術的方塊圖,其將在排程器中的選擇埠與在OOO處理器之執行單元中的執行埠配對,其中排程器係分為兩個區塊。圖3中的排程器分為排程器區塊A 372及排程器區塊B 373。選擇埠0 303及選擇埠1 305將指令從排程器區塊A選擇並派送至執行單元0 306,而選擇埠2 318及選擇埠3 322將指令從排程器區塊B選擇並派送至執行單元1 307。執行單元0 306將其輸出寫入至實體暫存器檔案0 308,其接著將其輸出流至架構暫存器檔案0 304。類似地,執行單元1 307將其輸出寫入至實體暫存器檔案1 324,其接著將其輸出流至架構暫存器檔案1 320。
圖3所示的設計解決了閉鎖問題,因為每一排程器區塊與對應的實體暫存器檔案具有相同數量的項目。舉例來說,排程器A 372與實體暫存器檔案0 308具有相同數量的項目。因此,若在對應的排程器區塊中仍 有未派送的項目,實體暫存器檔案不可能為滿。換言之,實體暫存器檔案將總是具有針對來自對應排程器區塊之任何未派送指令的空間。
即使避免了閉鎖,圖3的設計仍遺憾地會導致某些低效率。舉例來說,若排程器區塊A 372具有選擇埠需從其選擇的5個就緒指令,而排程器區塊B 373僅具有1個就緒指令,這將導致派送速率的降低。舉例來說,選擇埠0 303及選擇埠1 305一次僅可挑選5個就緒指令中的2個以供派送。同時,在排程器區塊B 373中的選擇埠並未完全利用,因為僅有1個就緒指令在排程器區塊B中。因此,相較於指令可能已均勻分佈在兩區塊之間,將需要額外的循環來執行排程器A 372中的所有5個就緒指令。因此,派送速率會受到影響。
因此,將排程器選擇埠靜態地連結至執行單元的傳統處理器技術是有問題的,因為其可能導致閉鎖或實體暫存器檔案之不同單元間的負載不平衡。
因此,需要可利用動態埠映射方法以避免在指令排程期間閉鎖的方法及裝置。此外,需要可經由動態埠映射方法相同地平衡分散式實體暫存器檔案之單元間負載的方法及裝置。
在一具體實施例中,為解決閉鎖及負載不平衡的問題,引入一虛擬埠及埠重命名技術於OOO處理器的排程器中。排程器中的選擇埠係連接到虛擬執行埠而非實體執行埠。在對應一執行單元之一特定暫存器檔案為滿的情況下,選擇埠可有利地重映射到不同的虛擬執行埠,其將指 令路由到對應沒有滿的一實體暫存器單元之一執行單元。
揭露一種用以在一非循序微處理器中在指令排程期間執行動態埠重映射的方法。方法包含在第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令。接著,方法包含判定第一實體暫存器檔案單元是否具有容量以支援在第一時脈循環中所派送的指令。此外,方法包含提供一回應到耦合於複數個選擇埠及複數個執行埠之間的邏輯電路,其中邏輯電路可操縱以基於回應而將在排程器模組中的選擇埠重映射至執行埠。最後,回應第一實體暫存器檔案單元為滿的一判定,方法包含將在第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元。
在一不同的具體實施例中,揭露組態以執行用以在指令排程期間執行動態埠重映射之方法的一非循序微處理器。方法包含在第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令。接著,方法包含判定第一實體暫存器檔案單元是否具有容量以支援在第一時脈循環中所派送的指令。此外,方法包含提供一回應到耦合於複數個選擇埠及複數個執行埠之間的邏輯電路,其中邏輯電路可操縱以基於回應而將在排程器模組中的選擇埠重映射至執行埠。最後,回應第一實體暫存器檔案單元為滿的一判定,方法包含將在第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元,其中第二實體暫存器檔案單元具有容量以支援從至少一選擇埠所派送的指令。
在另一具體實施例中,揭露用以在一非循序微處理器中於指令排程期間執行動態埠重映射的一設備。設備包含一記憶體以及通訊地 耦合至記憶體的一處理器,其中處理器係組態以非循序地處理指令,且其中處理器係組態以(a)第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令;(b)判定第一實體暫存器檔案單元是否具有容量以支援在第一時脈循環中所派送的指令;(c)提供有關第一實體暫存器檔案單元是否具有容量之判定的一回應到耦合於複數個選擇埠及複數個執行埠之間的邏輯電路,其中邏輯電路可操縱以基於回應而將在排程器模組中的選擇埠重映射至執行埠;以及(d)回應第一實體暫存器檔案單元為滿的一判定,將在第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元,其中第二實體暫存器檔案單元具有容量以支援從至少一選擇埠所派送的指令。
以下的詳細描述連同附隨的圖式將提供對本發明本質及優點的較佳理解。
104‧‧‧架構暫存器檔案0
106‧‧‧執行單元0
108‧‧‧實體暫存器檔案0
110‧‧‧翼0
120‧‧‧架構暫存器檔案1
122‧‧‧執行單元1
124‧‧‧實體暫存器檔案1
130‧‧‧翼1
172‧‧‧排程器
204‧‧‧選擇埠0
206‧‧‧選擇埠1
208‧‧‧執行單元埠0
210‧‧‧執行單元埠1
211‧‧‧翼0
212‧‧‧執行單元埠2
214‧‧‧執行單元埠3
220‧‧‧選擇埠2
222‧‧‧選擇埠3
230‧‧‧翼1
232‧‧‧執行單元0
233‧‧‧執行單元1
272‧‧‧排程器
280‧‧‧架構暫存器檔案0
281‧‧‧實體暫存器檔案0
283‧‧‧架構暫存器檔案1
284‧‧‧實體暫存器檔案1
303‧‧‧選擇埠0
304‧‧‧架構暫存器檔案0
305‧‧‧選擇埠1
306‧‧‧執行單元0
307‧‧‧執行單元1
308‧‧‧實體暫存器檔案0
318‧‧‧選擇埠2
320‧‧‧架構暫存器檔案1
322‧‧‧選擇埠3
324‧‧‧實體暫存器檔案1
372‧‧‧排程器區塊A
373‧‧‧排程器區塊B
410‧‧‧計算系統
412‧‧‧通訊設施
414‧‧‧處理器
416‧‧‧系統記憶體
418‧‧‧記憶體控制器
420‧‧‧輸入/輸出控制器
422‧‧‧通訊介面
424‧‧‧顯示裝置
426‧‧‧顯示配接器
428‧‧‧輸入裝置
430‧‧‧輸入介面
432‧‧‧主儲存裝置
433‧‧‧備用儲存裝置
434‧‧‧儲存介面
440‧‧‧資料庫
502‧‧‧提取級
504‧‧‧解碼模組
506‧‧‧發佈佇列
508‧‧‧重排序緩衝器
510‧‧‧暫存器檔案
512‧‧‧執行模組
514‧‧‧寫回模組
516‧‧‧載入儲存佇列
518‧‧‧記憶體
572‧‧‧排程器模組
580‧‧‧實體暫存器檔案
604‧‧‧選擇埠0
606‧‧‧選擇埠1
608‧‧‧執行單元埠0
610‧‧‧執行單元埠1
611‧‧‧翼0
612‧‧‧執行單元埠2
614‧‧‧執行單元埠3
620‧‧‧選擇埠2
622‧‧‧選擇埠3
630‧‧‧翼1
632‧‧‧執行單元0
633‧‧‧執行單元1
654‧‧‧虛擬埠0
656‧‧‧虛擬埠1
660‧‧‧虛擬埠2
662‧‧‧虛擬埠3
672‧‧‧排程器
679‧‧‧重映射邏輯
680‧‧‧架構暫存器檔案0
681‧‧‧實體暫存器檔案0
683‧‧‧架構暫存器檔案1
684‧‧‧實體暫存器檔案1
690‧‧‧重映射控制邏輯
691‧‧‧重映射控制邏輯
710‧‧‧表格
772‧‧‧列
774‧‧‧列
776‧‧‧列
778‧‧‧列
800‧‧‧流程圖
在附圖之圖式中以實例方式而非限定方式闡述本發明具體實施例,且在附圖中類似參考編號指類似元件。
圖1描述具有雙翼之傳統分散式設計的方塊圖,其中實體暫存器檔案係分散在兩翼;圖2描述顯示用於傳統分散式設計之靜態映射技術的方塊圖,其將在排程器中的選擇埠與在OOO處理器之執行單元中的執行埠配對;圖3描述顯示用於傳統分散式設計之技術的方塊圖,其將在排程器中的選擇埠與在OOO處理器之執行單元中的執行埠配對,其中排程 器係分為兩個區塊;圖4為根據本發明具體實施例之範例電腦系統;圖5為根據本發明一具體實施例之針對非循序微處理器之一管線的範例圖式,其中本發明具體實施例可實施於其上;圖6描述根據本發明一具體實施例之動態埠重映射技術;圖7描述根據本發明一具體實施例之一表格,其顯示當一實體暫存器檔案為滿時之範例動態埠重映射方法;以及圖8繪示根據本發明具體實施例之用以在一非循序微架構中在指令排程期間執行動態埠重映射的範例電腦控制程序的流程圖。
現在將詳細地介紹本發明之較佳實施例,其實例圖解說明於附圖中。儘管將結合較佳實施例來闡述本發明,但應瞭解,該等較佳實施例並非意欲將本發明限定至這些實施例。相反地,本發明意欲涵蓋可包含於隨附申請專利範圍所界定之本發明精神及範疇內之替代、修改及等效方案。此外,在本發明實施例之如下詳細闡述中,列舉了眾多特定細節以提供對本發明之透徹理解。然而,熟悉此項技術者應瞭解,可在不具備該等特定細節之情況下實施本發明。在其他示例中,未詳細闡述眾所周知之方法、程序、組件和電路,以避免不必要地模糊本發明實施例之各態樣。
符號和命名法
該等詳細說明的一些部份在以下係以程序、邏輯方塊、處理,以及其它對於一電腦記憶體內資料位元之作業的符號表示來呈現。這 些說明及表示為在該資料處理技術中熟此技藝者所使用的最有效地傳遞他們工作的實質內容給其他熟此技藝者的手段。在本申請案中,一程序、邏輯方塊、處理或類似者皆被視為可達到所想要結果之步驟或指令的一自我一致的序列。該等步驟利用實體數量的實體操縱。通常雖然並非必要,這些數量可採取電子或磁性信號之型式,其能夠被儲存、轉換、組合、比較,及另可在一電腦系統中操縱。主要由於是常見用法的原因,已經證明有時可方便地將這些信號稱之為交易、位元、數值、元件、符號、字元、樣本、像素或類似者。
然而,應明白,所有這些用語及相似用語係與相應物理量相關聯,且只是應用於這些物理量的便利標記。應明白,除非另有明確說明,否則如從以下討論顯而易見的,在本申請案中,利用諸如「選擇」、「判定」、「重映射」、及「饋入」等用語的討論是指電腦系統或類似處理裝置(如圖4的系統410)的動作及程序(如圖8的流程圖800)。電腦系統或類似的電子運算裝置操縱和轉換表示成在該電腦系統記憶體、暫存器、或其它這種資訊儲存器、傳輸或顯示裝置之內的實體(電子)數量的資料。
此處所述之具體實施例在電腦可執行指令的一般性內容中做討論,該指令係常駐在由一或多個電腦或其它裝置所執行的某種型式的電腦可讀取儲存媒體上,例如程式模組。例如但非限制,電腦可讀取儲存媒體可以包含非暫態電腦可讀取儲存媒體和通訊媒體;非暫態電腦可讀取媒體包括所有電腦可讀取媒體,除了一暫態傳播信號之外。一般而言,程式模組包括常式、程式、物件、組件、資料結構等,其執行特定工作或實施特定的抽象資料類型。在各種具體實施例中,一般可視需要結合或分散 程式模組的功能性。
電腦儲存媒體包括以儲存諸如電腦可讀指令、資料結構、程式模組或其他資料等資訊的任何方法或技術實施的揮發性及非揮發性、可卸除式及非可卸除式媒體。電腦儲存媒體包括但不限於:RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位影音光碟(DVDs)或其他光學儲存器、磁性卡匣、磁帶、磁碟儲存器或其他磁性儲存裝置、或可用以儲存所要資訊及可由計算裝置存取的任何其他媒體。
通信媒體可將電腦可執行指令、資料結構、及程式模組具體化且包括任何資訊遞送媒體。舉例而言且非限制性,通信媒體包括:有線媒體,諸如有線網路或直接有線連接;及無線媒體,諸如聲學、RF、紅外線及其他無線媒體。任何上述的組合亦應包括在電腦可讀媒體的範疇內。
圖4為能夠與本發明具體實施例之處理器414整合之計算系統410之範例的方塊圖。計算系統410廣義地表示能夠執行電腦可讀指令之任何單一或多處理器計算裝置或系統。計算系統410的範例包含但不限於工作站、膝上型電腦、客戶端終端、伺服器、分散式計算系統、手持裝置、或任何其他計算系統或裝置。在其最基本的組態中,計算系統410可包含本發明具體實施例的至少一處理器414以及一系統記憶體416。
處理器414併入本發明具體實施例且一般表示能夠處理資料或解譯及執行指令的任何種類或形式的處理單元。在某些具體實施例中,處理器414可從軟體應用程式或模組接收指令。這些指令可使處理器414執行本文所描述及/或說明之一或多個範例具體實施例的功能。在一具體實施例中,處理器414可為一非循序微處理器。在一不同的具體實施例中,處 理器414可為一超純量(superscalar)處理器。在另一具體實施例中,處理器414可包含多個並行操作的處理器。
系統記憶體416一般表示能夠儲存資料及/或其他電腦可讀指令的任何種類或形式的揮發性或非揮發性儲存裝置或媒體。系統記憶體416的範例包含但不限於RAM、ROM、快閃記憶體、或任何其他合適的記憶體裝置。雖然非必需,但在某些具體實施例中,計算系統410可包含揮發性記憶體單元(像是例如系統記憶體416)及非揮發性儲存裝置(像是例如主儲存裝置432)兩者。
除了處理器414及系統記憶體416之外,計算系統410也可包含一或多個組件或元件。舉例來說,在圖4的具體實施例中,計算系統410包含記憶體控制器418、輸入/輸出(I/O)控制器420、及通訊介面422,其每一者可經由通訊設施412而互連。通訊設施412通常表示能夠幫助計算裝置之一或多個組件之間通訊的任何種類或形式的設施。通訊設施412的範例包含但不限於通訊匯流排(如工業標準架構(ISA)、週邊組件互連(PCI)、PCI Express(PCIe)、或類似匯流排)及網路。
記憶體控制器418一般表示能夠處理記憶體或資料或控制計算系統410之一或多個組件之間通訊的任何種類或形式的裝置。舉例來說,記憶體控制器418可經由通訊設施412控制處理器414、系統記憶體416、及I/O控制器420之間的通訊。
I/O控制器420一般表示能夠協調及/或控制計算裝置之輸入及輸出功能的任何種類或形式的模組。舉例來說,I/O控制器420可控制或幫助計算系統410之一或多個元件(如處理器414、系統記憶體416、通訊介面 422、顯示配接器426、輸入介面430、及儲存介面434)之間的資料轉移。
通訊介面422廣義地表示能夠幫助範例計算系統410與一或多個額外裝置之間通訊的的任何種類或形式的通訊裝置或配接器。舉例來說,通訊介面422可幫助計算系統410與包含額外計算系統之私人或公用網路之間的通訊。計算介面422的範例包含但不限於有線網路介面(如網路介面卡)、無線網路介面(如無線網路介面卡)、數據機、及任何其他合適的介面。在一具體實施例中,通訊介面422經由對網路(如網際網路)的直接鏈接而提供直接連接至遠端伺服器。通訊介面422也可經由任何其他合適的連接而非直接地提供此一連接。
通訊介面422也可表示組態以經由外部匯流排或通訊通道幫助計算系統410與一或多個額外網路或儲存裝置之間通訊的主機配接器。主機配接器的範例包含但不限於小型電腦系統介面(SCSI)主機配接器、通用串列匯流排(USB)主機配接器、IEEE(電子電機工程師學會)1394主機配接器、序列先進技術附接(SATA)與外部SATA(eSATA)主機配接器、先進技術附接(ATA)與平行ATA(PATA)主機配接器、光纖通道介面配接器、乙太網路配接器或類似者。通訊介面422也可允許計算系統410進行分散或遠端計算。舉例來說,通訊介面422可接收來自遠端裝置的指令或傳送指令到遠端裝置供執行。
如圖4所示,計算系統410也可包含至少一顯示裝置424,其經由顯示配接器426耦合至通訊設施412。顯示裝置424一般表示能夠在視覺上顯示由顯示配接器426所傳送之資訊的任何種類或形式的裝置。類似地,顯示配接器426一般表示組態以傳送圖形、文字、及其他資料供顯示於顯示 裝置424上之任何種類或形式的裝置。
如圖4所示,計算系統410也可包含至少一輸入裝置428,其經由輸入介面430耦合至通訊設施412。輸入裝置428一般表示能夠提供輸入(不論是電腦或人為產生的)到計算系統410之任何種類或形式的輸入裝置。輸入裝置428的範例包含但不限於鍵盤、指向裝置、語音辨識裝置、或任何其他輸入裝置。
如圖4所示,計算系統410也可包含主儲存裝置432及備用儲存裝置433,其經由儲存介面434耦合至通訊設施412。儲存裝置432及433一般表示能夠儲存資料及/或其他電腦可讀指令之任何種類或形式的儲存裝置或媒體。舉例來說,儲存裝置432及433可為磁碟機(如所謂的硬碟機)、軟碟機、磁帶機、光碟機、隨身碟、或類似者。儲存介面434一般表示用以在儲存裝置432及433以及計算系統410之其他組件之間轉移資料的任何種類或形式的介面或裝置。
在一範例中,資料庫440可儲存於主儲存裝置432中。資料庫440可表示單一資料庫或計算裝置的部分或其可表示多個資料庫或計算裝置。舉例來說,資料庫440可表示(儲存於)計算系統410的一部分。或者,資料庫440可表示(儲存於)能夠由計算裝置(如計算裝置410)所存取之一或多個實體獨立裝置。
繼續參考圖4,儲存裝置432及433可組態以讀取及/或寫入可移式儲存單元,其組態以儲存電腦軟體、資料、或其他電腦可讀資訊。合適的可移式儲存單元包含但不限於軟磁碟、磁帶、光碟、快閃記憶體裝置或類似者。儲存裝置432及433也可包含其他類似的結構或裝置以允許電腦 軟體、資料、或其他電腦可讀指令被載入計算系統410。舉例來說,儲存裝置432及433可組態以讀取及寫入軟體、資料、或其他電腦可讀資訊。儲存裝置432及433也可為計算系統410的一部分或可為經由其他介面系統存取之獨立裝置。
許多其他裝置或子系統可連接至計算系統410。另一方面,不需呈現圖4所示的所有組件及裝置來實施本文所述的具體實施例。上述的裝置及子系統也可以不同於圖4所示的方式來連接。計算系統410也可使用任何數量的軟體、韌體、及/或硬體組態。舉例來說,本文所揭露之範例具體實施例可編碼為電腦可讀媒體上的電腦程式(亦稱為電腦軟體、軟體應用程式、電腦可讀指令、或電腦控制邏輯)。
包含電腦程式的電腦可讀媒體可載入計算系統410中。儲存於電腦可讀媒體上之電腦程式的全部或部分可接著儲存於系統記憶體416及/或儲存裝置432及433的各個部分。當由處理器414執行時,載入至計算系統410的電腦程式可造成處理器414執行及/或成為一手段用以執行本文所描述及/或說明之範例具體實施例的功能。附加地或替代地,本文所描述及/或說明之範例具體實施例可以韌體及/或硬體實施。
使用動態埠重映射以避免指令排程期間閉鎖的方法與設備
本發明具體實施例提供利用動態埠映射方法有效避免在指令排程期間閉鎖的方法及設備。本發明的其他具體實施例提供可經由動態埠映射方法相同地平衡分散式實體暫存器檔案之單元間負載的方法及設備。
在本發明一具體實施例中,為解決閉鎖及負載不平衡的問題,引入一虛擬埠及埠重映射技術於OOO處理器的排程器中。將理解到,排程器中的選擇埠係連結到虛擬執行埠而非實體執行埠。在對應一執行單元之一特定暫存器檔案為滿的情況下,選擇埠可有利地重映射到不同的虛擬執行埠,其將指令路由到對應沒有滿的一實體暫存器單元之一執行單元。因此,本發明具體實施例有利地避免閉鎖且也可均勻地分散實體暫存器檔案之不同單元間負載。
圖5為根據本發明一具體實施例之針對非循序微處理器之一管線的範例圖式,其中本發明具體實施例可實施於其上。
如圖5所示,指令在提取級502提取並放置在提取級502內的指令提取佇列(IFQ)(圖未示)。這些指令參照架構暫存器,其儲存於暫存器檔案510中。在指令從提取單元502派送後,其由解碼模組504解碼並放置於ROB 508及發佈佇列506(IQ)中。在本發明一具體實施例中,排程器模組572包含ROB 508及IQ 506。當使用排程器模組572將指令非循序地發佈出IQ 506,其將由執行模組512所執行。
在一具體實施例中,寫回模組514可先將從該些指令所產生的數值寫回ROB 508中的臨時暫存器。ROB 508追蹤指令進入管線的編程順序,且針對這些指令的每一者,ROB維持在實體暫存器檔案580中臨時的暫存器儲存。在本發明一具體實施例中,實體暫存器檔案係隨指令從排程器派送而動態地分配。因為實體暫存器檔案係隨指令派送而分配,其並非依時期的順序。實體暫存器檔案非循序地儲存項目並等待其退休以到架構暫存器檔案510。
在一具體實施例中,實體暫存器檔案580可分散至二或更多單元。此外,在一具體實施例中,在實體暫存器檔案之各個單元中項目的總數量等於在排程器572中項目的數量,因為在排程器中有效指令的數量若在一循環中被選擇及派送時也需位於實體暫存器檔案中。
當在ROB中最舊的指令產生一有效結果,該些指令可被安全地提交。亦即,該些指令的結果可為永久,因為沒有能夠引起可能取消該些指令效應之錯誤預測或異常的更早指令。當指令準備好要提交,ROB 508將在臨時暫存器中針對該些指令的對應數值移動到架構暫存器檔案510。因此,經由ROB的依序提交程序,暫存器檔案510中的結果可為永久且在架構上為可見的。
從IQ 506非循序地發佈指令也可包含載入及儲存。當載入及儲存從IQ 506非循序地發佈,在該些指令可被提交之前,在其之間有記憶體相依性需要被解決。因此,載入及儲存指令係儲存於載入儲存佇列(LSQ)516中,而在其所產生的數值可被提交到記憶體518之前,在其之間的相依性在ROB 508的幫助下解決。
圖6描述根據本發明一具體實施例之動態埠重映射技術。雖然圖6所示的具體實施例一次可僅選擇4個指令,但本發明並不受限於此。在其他具體實施例中,排程器可組態以根據需求而包含許多選擇埠。在圖6所示的具體實施例中,排程器672包含4個選擇埠,選擇埠0 604、選擇埠1 606、選擇埠2 620、選擇埠3 622。
重映射邏輯679將選擇埠映射至虛擬執行埠,其中映射係取決在個別翼中實體暫存器檔案的忙碌狀態。換言之,映射並非完全地隨機 化。若在個別翼中實體暫存器檔案未滿,則選擇埠0 604將映射至虛擬執行埠0 654,選擇埠1 606將映射至虛擬執行埠1 656,選擇埠2 620將映射至虛擬執行埠2 660,且選擇埠3 622將映射至虛擬執行埠3 662。此外,在一具體實施例中,選擇埠0 604可組態以挑選最舊或最優先的指令供派送,而剩餘的埠將以時期或優先性降低的順序來選擇指令。因此,舉例來說,最優先或最舊的指令將總是由選擇埠0所挑選並映射至執行單元埠0,除非實體暫存器檔案0為滿,在此情況中重映射邏輯679可能需要將其重映射至不同的執行埠。重映射方法將在下文結合圖7做更進一步的解釋。
在一具體實施例中,虛擬埠0 654連接至在執行單元0 632中的執行單元埠0 608,而虛擬埠1 656連接至在執行單元1 633中的執行單元埠2 612。類似地,在一具體實施例中,虛擬埠2 660連接至在執行單元0 632中的執行單元埠1 610,而虛擬埠3 662連接至在執行單元1 633中的執行單元埠3 614。虛擬埠1及虛擬埠2係分別交聯至翼1 630及翼0 611,為了上述負載平衡的理由。在一具體實施例中,重映射邏輯679及虛擬埠的電路係位於排程器672中。
執行單元0 632將其輸出寫入至實體暫存器檔案0 681,且指令從實體暫存器檔案0 681提交至架構暫存器檔案0 680。類似地,執行單元1 633將其輸出寫入至實體暫存器檔案1 684,且指令從實體暫存器檔案1 684提交至架構暫存器檔案1 683。重映射控制邏輯691及重映射控制邏輯690針對其個別翼而執行計算以判定在當前派送循環可支援多少指令並將該資訊反饋至重映射邏輯電路679。基於前瞻性的能力,重映射邏輯電路679可判定埠是否需要重命名。因此,重映射控制邏輯模組追蹤管線中的指令,且 因此可計算在個別實體暫存器檔案中是否有足夠的空間來支援在當前循環中被派送的指令。
當從重映射控制邏輯模組接收到反饋,重映射邏輯電路679判定是否將需要重映射。再者,重映射邏輯電路679判定重映射是否需要與排程器之選擇埠內的選擇邏輯平行,因此重映射邏輯完全地隱藏在時序路徑中。因此,等到所選指令到達重映射邏輯電路679,邏輯已經做好了指令是否需要被重映射到不同執行埠的決定。
在一具體實施例中,重映射可藉由埠重命名來實施。虛擬埠可重命名以將選擇埠連接至不同的實體執行單元。因此,來自實體選擇埠的指令係根據重命名的方案而路由至執行單元。
圖7描述根據本發明一具體實施例之一表格,其顯示當一實體暫存器檔案為滿時之範例動態埠重映射方法。如上文所討論,重映射邏輯679偵測例如實體暫存器檔案0 681是否為滿並相應地重映射虛擬埠。表格710描述當實體暫存器檔案0 681為滿時,重映射如何在一範例循環中發生。
當實體暫存器檔案0 681未滿,則選擇埠0 604將映射至執行單元埠0 608,如列774的行B所示。此外,選擇埠1 606將映射至執行單元埠2 612,因為禁止任何重映射,選擇埠1 606將映射至虛擬埠1 656,其接著連接至執行單元埠2 612。類似地,選擇埠2 620將映射至執行單元埠1 610。最後,選擇埠3 622將映射至執行單元埠3 614。
然而,當實體暫存器檔案0 681為滿,則重映射邏輯679需將選擇埠重映射至不同的執行埠。舉例來說,重映射邏輯679將映射選擇埠0 604至虛擬埠1 656,其連接至翼1 630中的執行單元埠2 612。因為實體暫存 器檔案1 684並不忙碌,此重映射將允許由選擇埠0 604所選擇之高優先性指令在不同翼中執行,而非導致閉鎖,同時等待實體暫存器檔案0 681釋放空間。然而,因為選擇埠0 604現在映射至執行單元埠2 612,通常映射至執行單元埠2 612的選擇埠1 606將需去能。這顯示在圖710中列774的行C中。
此外,因為實體暫存器檔案0 681為滿,通常映射至翼0 611中之執行單元埠1 610的選擇埠2 620將需被重映射。因此,如列776所示,選擇埠2 620係重映射至虛擬埠3 662,其連接至翼1 630中的執行單元埠3 614。最後,因為選擇埠2 620現在映射至執行單元埠3 614,選擇埠3 622將需去能以避免干擾。由於此方案的結果,所選之高優先性的指令將被重映射至實體暫存器檔案未被佔用之翼中的執行單元。這避免閉鎖並相等地平衡兩翼間的負載。
圖8繪示根據本發明具體實施例之用以在一非循序微架構中在指令排程期間執行動態埠重映射的範例電腦控制程序的流程圖。
在步驟802,在一當前循環中從排程器模組中的複數個選擇埠選擇並派送複數個指令(例如,如圖6所示的4個)。
在步驟804中,實體暫存器單元中的重映射控制邏輯(如圖6所示的模組691)藉由基於目前在管線中的指令數量來執行計算,而判定第一實體暫存器檔案是否將有容量支援在當前循環中被派送的指令。
在步驟806中,判定的結果從重映射控制邏輯反饋至邏輯電路,其中邏輯電路可操作以透過虛擬埠的使用而將關聯於忙碌實體暫存器檔案之選擇埠重映射至在不同實體暫存器檔案中的執行埠。
最後,在步驟808中,回應第一實體暫存器檔案不具有容量 的判定,將在第一實體暫存器檔案中關聯於執行單元的選擇埠重映射至第二實體暫存器檔案,其中第二實體暫存器檔案具有容量以支援指令。
儘管上述揭示內容使用特定方塊圖、流程圖、及實例提出各種具體實施例,但是各方塊圖組件、流程圖步驟、操作、及/或本文所說明及/或圖解的組件可使用廣泛範圍的硬體、軟體、或韌體(或其任何組合)組態個別地及/或共同地實施。此外,其他組件中所含有組件的任何揭示應視為實例,因為許多其他架構均可實施以達成相同的功能性。
本文所說明及/或圖解的程序參數及步驟順序僅以舉例方式提出。例如,儘管本文所說明及/或圖解的步驟可以特定次序顯示或討論,但這些步驟不一定要以所圖解或討論的次序執行。本文所說明及/或圖解的各種實例方法亦可省略本文所說明或圖解之步驟的一或多個,或可包括除了所揭示步驟以外的額外步驟。
儘管各種具體實施例已在全功能計算系統的背景下在本文加以說明及/或圖解,但是這些實例具體實施例的一或多個可分布為各種形式的程式產品,而不管用以實際執行分布之電腦可讀媒體的特定類型為何。本文揭示的具體實施例亦可使用執行特定工作的軟體模組來實施。這些軟體模組可包括可儲存在電腦可讀儲存媒體上或計算系統中的指令碼、批次檔或其他可執行檔。這些軟體模組可組態計算系統以執行本文揭示之實例具體實施例的一或多個。
為了解說的目的,已參考特定具體實施例做出以上說明。然而,以上闡釋之討論的目的不在詳盡窮舉或限制本發明於揭示的精確形式。可對以上揭示進行許多修改及變化。具體實施例的選擇與說明係為了 對本發明的原理及實際應用提出最好的解說,藉此讓熟習本技術者以適於所想特定用途的各種修改,充分利用本發明及各種具體實施例。
因此說明了根據本發明的具體實施例。雖然已在特定具體實施例中說明本發明,但應明白,本發明不應被視為受到此等具體實施例的限制,而是應根據以下申請專利範圍加以解釋。
800‧‧‧流程圖

Claims (20)

  1. 一種用以在一非循序微處理器中在指令排程期間執行動態埠重映射的方法,該方法包含:在一第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令;判定一第一實體暫存器檔案單元是否具有容量以支援在該第一時脈循環中所派送的指令;提供對該判定的一回應到耦合於該複數個選擇埠及複數個執行埠之間的邏輯電路,其中該邏輯電路可操縱以基於該回應將在該排程器模組中的選擇埠重映射至執行埠;以及回應該第一實體暫存器檔案單元為滿的一判定,將在該第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元,其中該第二實體暫存器檔案單元具有容量以支援從該至少一選擇埠所派送的一指令。
  2. 如申請專利範圍第1項所述之方法,其中該重映射係由虛擬執行埠所執行,其中該複數個選擇埠經由複數個虛擬執行埠與該複數個執行埠耦合,其中該複數個虛擬執行埠之每一者可重新命名以將指令從一選擇埠路由到該複數個執行埠之其中不同的一者。
  3. 如申請專利範圍第1項所述之方法,更包含:回應於該第一實體暫存器檔案單元具有容量的一判定,使用一預設的映射將該複數個選擇埠耦合至該複數個執行埠。
  4. 如申請專利範圍第1項所述之方法,更包含:回應於該第一實體暫存器檔案單元為滿的一判定,去能在該排程器模組中的至少一選擇埠。
  5. 如申請專利範圍第1項所述之方法,其中該第一實體暫存器檔案單元及該第二實體暫存器檔案單元為一分散式實體暫存器檔案的部分。
  6. 如申請專利範圍第1項所述之方法,其中該至少一選擇埠係組態以從由以下所組成之群組選擇一指令:最舊及最優先。
  7. 如申請專利範圍第1項所述之方法,其中該判定係由可操作以基於在該第一時脈循環期間針對該非循序微處理器之一管線中的指令數目而計算該第一實體暫存器檔案單元是否具有容量用於在該第一時脈循環中所派送指令之電路所執行。
  8. 一種組態以執行用以在指令排程期間執行動態埠重映射之方法的非循序微處理器,該方法包含:在一第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令;判定一第一實體暫存器檔案單元是否具有容量以支援在該第一時脈循環中所派送的指令;提供對該判定的一回應到耦合於該複數個選擇埠及複數個執行埠之間的邏輯電路,其中該邏輯電路可操縱以基於該回應將在該排程器模組中的選擇埠重映射至執行埠;以及 回應該第一實體暫存器檔案單元為滿的一判定,將在該第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元,其中該第二實體暫存器檔案單元具有容量以支援從該至少一選擇埠所派送的一指令。
  9. 如申請專利範圍第8項所述之處理器,其中該重映射係由虛擬執行埠所執行,其中該複數個選擇埠經由複數個虛擬執行埠與該複數個執行埠耦合,其中該複數個虛擬執行埠之每一者可重新命名以將指令從一選擇埠路由到該複數個執行埠之其中不同的一者。
  10. 如申請專利範圍第8項所述之處理器,其中該方法更包含:回應於該第一實體暫存器檔案單元具有容量的一判定,使用一預設的映射將該複數個選擇埠連接至該複數個執行埠。
  11. 如申請專利範圍第8項所述之處理器,其中該方法更包含:回應於該第一實體暫存器檔案單元為滿的一判定,去能在該排程器模組中的至少一選擇埠。
  12. 如申請專利範圍第8項所述之處理器,其中該第一實體暫存器檔案單元及該第二實體暫存器檔案單元為一分散式實體暫存器檔案的部分。
  13. 如申請專利範圍第8項所述之處理器,其中該至少一選擇埠係組態以從由以下所組成之群組選擇一指令:最舊及最優先。
  14. 如申請專利範圍第8項所述之處理器,其中該判定係由可操作以基於在該第一時脈循環期間針對該非循序微處理器之一管線中的指令數目而計算該第一實體暫存器檔案單元是否具有容量用於在該第一時脈循環中所派送指令之電路所執行。
  15. 一種用以在一非循序微處理器中於指令排程期間執行動態埠重映射的設備,該設備包含:一記憶體;一處理器,通訊地耦合至該記憶體,其中該處理器係組態以非循序地處理指令,且其中該處理器係組態以:在一第一時脈循環中從一排程器模組中的複數個選擇埠選擇並派送複數個指令;判定一第一實體暫存器檔案單元是否具有容量以支援在該第一時脈循環中所派送的指令;提供有關該第一實體暫存器檔案單元是否具有容量之一判定的一回應到耦合於該複數個選擇埠及複數個執行埠之間的邏輯電路,其中該邏輯電路可操縱以基於該回應將在該排程器模組中的選擇埠重映射至執行埠;以及回應該第一實體暫存器檔案單元為滿的一判定,將在該第一實體暫存器檔案中與一執行單元連接的至少一選擇埠重映射至一第二實體暫存器檔案單元,其中該第二實體暫存器檔案單元具有容量以支援從該至少一選擇埠所派送的一指令。
  16. 如申請專利範圍第15項所述之設備,其中該重映射係由虛擬執行埠所執行,其中該複數個選擇埠經由複數個虛擬執行埠與該複數個執行埠耦合,其中該複數個虛擬執行埠之每一者可重新命名以將指令從一選擇埠路由到該複數個執行埠之其中不同的一者。
  17. 如申請專利範圍第15項所述之設備,其中該處理器更組態以:回應於該第一實體暫存器檔案單元具有容量的一判定,使用一預設的映射將該複數個選擇埠耦合至該複數個執行埠。
  18. 如申請專利範圍第15項所述之設備,其中該處理器更組態以:回應於該第一實體暫存器檔案單元為滿的一判定,去能在該排程器模組中的至少一選擇埠。
  19. 如申請專利範圍第15項所述之設備,其中該第一實體暫存器檔案單元及該第二實體暫存器檔案單元為一分散式實體暫存器檔案的部分。
  20. 如申請專利範圍第15項所述之設備,其中該至少一選擇埠係組態以從由以下所組成之群組選擇一指令:最舊及最優先。
TW103109486A 2013-03-15 2014-03-14 使用動態埠重映射以避免指令排程期間閉鎖的方法與設備 TWI543075B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361793541P 2013-03-15 2013-03-15
US14/101,615 US9582322B2 (en) 2013-03-15 2013-12-10 Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping

Publications (2)

Publication Number Publication Date
TW201504941A true TW201504941A (zh) 2015-02-01
TWI543075B TWI543075B (zh) 2016-07-21

Family

ID=51534770

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103109486A TWI543075B (zh) 2013-03-15 2014-03-14 使用動態埠重映射以避免指令排程期間閉鎖的方法與設備

Country Status (6)

Country Link
US (2) US9582322B2 (zh)
EP (1) EP2972783B1 (zh)
KR (3) KR101734350B1 (zh)
CN (1) CN105190539B (zh)
TW (1) TWI543075B (zh)
WO (1) WO2014152315A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
US10310860B2 (en) 2016-07-29 2019-06-04 International Business Machines Corporation Starting and stopping instruction dispatch to execution unit queues in a multi-pipeline processor
US9798549B1 (en) 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
CN108616376B (zh) * 2016-12-12 2021-07-16 中国航空工业集团公司西安航空计算技术研究所 一种fc网络系统故障动态重构方法
CN108462660B (zh) * 2016-12-12 2020-12-29 中国航空工业集团公司西安航空计算技术研究所 用于网络交换芯片的端口重映射电路及方法
US11080055B2 (en) * 2019-08-22 2021-08-03 Apple Inc. Register file arbitration
CN113448782B (zh) * 2020-03-27 2022-05-13 长鑫存储技术有限公司 存储器的测试方法、存储介质和计算机设备
KR20230038799A (ko) * 2020-07-24 2023-03-21 사이파이브, 인크. 전력 절약을 위한 레지스터 리네이밍
CN112463217B (zh) * 2020-11-18 2022-07-12 海光信息技术股份有限公司 超标量处理器中寄存器堆共享读端口的系统、方法和介质

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5630157A (en) 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5265260A (en) 1991-06-26 1993-11-23 International Business Machines Corporation High performance sort hardware for a database accelerator in a data processing system
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
IL110181A (en) 1994-06-30 1998-02-08 Softchip Israel Ltd Install microprocessor and peripherals
US5673408A (en) 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for renamable trap-stack
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5870584A (en) 1995-09-20 1999-02-09 Fore Systems, Inc. Method and apparatus for sorting elements
US5826073A (en) 1995-10-06 1998-10-20 Advanced Micro Devices, Inc. Self-modifying code handling system
US5784638A (en) 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5892934A (en) 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
KR19990076967A (ko) 1996-11-04 1999-10-25 요트.게.아. 롤페즈 처리 장치 및 메모리내의 명령 판독
US5905876A (en) 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6052777A (en) 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for delivering precise traps and interrupts in an out-of-order processor
US6049868A (en) 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
JPH1124929A (ja) 1997-06-30 1999-01-29 Sony Corp 演算処理装置およびその方法
US5870575A (en) 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US6061785A (en) 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6167508A (en) 1998-06-02 2000-12-26 Compaq Computer Corporation Register scoreboard logic with register read availability signal to reduce instruction issue arbitration latency
US6412067B1 (en) 1998-08-11 2002-06-25 Intel Corporation Backing out of a processor architectural state
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6385676B1 (en) 1999-07-12 2002-05-07 Hewlett-Packard Company Coherent ordering queue for computer system
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US6609190B1 (en) * 2000-01-06 2003-08-19 International Business Machines Corporation Microprocessor with primary and secondary issue queue
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6757807B1 (en) * 2000-08-18 2004-06-29 Sun Microsystems, Inc. Explicitly clustered register file and execution unit architecture
US6711672B1 (en) 2000-09-22 2004-03-23 Vmware, Inc. Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US6851011B2 (en) 2001-08-09 2005-02-01 Stmicroelectronics, Inc. Reordering hardware for mass storage command queue
US6964043B2 (en) 2001-10-30 2005-11-08 Intel Corporation Method, apparatus, and system to optimize frequently executed code and to use compiler transformation and hardware support to handle infrequently executed code
US6813704B1 (en) 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7032101B2 (en) 2002-02-26 2006-04-18 International Business Machines Corporation Method and apparatus for prioritized instruction issue queue in a processor
US7113510B2 (en) 2002-03-01 2006-09-26 Xinming Allen Lin Hardware self-sorting scheduling queue
US6779092B2 (en) 2002-05-15 2004-08-17 Hewlett-Packard Development Company, L.P. Reordering requests for access to subdivided resource
US7127592B2 (en) 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
GB0309056D0 (en) 2003-04-22 2003-05-28 Transitive Technologies Ltd Block translation optimizations for program code conversion
JP4186768B2 (ja) 2003-09-16 2008-11-26 沖電気工業株式会社 マルチポート半導体メモリ
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7373637B2 (en) 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7315935B1 (en) 2003-10-06 2008-01-01 Advanced Micro Devices, Inc. Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7434031B1 (en) 2004-04-12 2008-10-07 Sun Microsystems, Inc. Execution displacement read-write alias prediction
US8443171B2 (en) 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7461237B2 (en) 2005-04-20 2008-12-02 Sun Microsystems, Inc. Method and apparatus for suppressing duplicative prefetches for branch target cache lines
JP4912016B2 (ja) 2005-05-23 2012-04-04 ルネサスエレクトロニクス株式会社 半導体記憶装置
US20070033385A1 (en) 2005-08-02 2007-02-08 Advanced Micro Devices, Inc. Call return stack way prediction repair
US7483332B2 (en) 2005-08-11 2009-01-27 Texas Instruments Incorporated SRAM cell using separate read and write circuitry
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US20070186081A1 (en) 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US20090052262A1 (en) 2006-02-08 2009-02-26 Koji Nii Semiconductor memory device
US7478190B2 (en) 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures
US20080126771A1 (en) 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
US7716460B2 (en) 2006-09-29 2010-05-11 Qualcomm Incorporated Effective use of a BHT in processor having variable length instruction set execution modes
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US7721076B2 (en) 2006-12-18 2010-05-18 Intel Corporation Tracking an oldest processor event using information stored in a register and queue entry
US7783869B2 (en) 2006-12-19 2010-08-24 Arm Limited Accessing branch predictions ahead of instruction fetching
TW200833002A (en) 2007-01-31 2008-08-01 Univ Nat Yunlin Sci & Tech Distributed switching circuit having fairness
US7813163B2 (en) 2007-09-05 2010-10-12 International Business Machines Corporation Single-ended read and differential write scheme
TWI346338B (en) 2007-10-23 2011-08-01 Nat Univ Tsing Hua Access unit for a static random accesss memory
US10020037B2 (en) * 2007-12-10 2018-07-10 Intel Corporation Capacity register file
US8782384B2 (en) 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US7945764B2 (en) 2008-01-11 2011-05-17 International Business Machines Corporation Processing unit incorporating multirate execution unit
US8015362B2 (en) 2008-02-15 2011-09-06 International Business Machines Corporation Method and system for handling cache coherency for self-modifying code
TWI368165B (en) 2008-08-13 2012-07-11 Faraday Tech Corp Processor and method for recovering global history shift register and return address stack thereof
GB2463278B (en) 2008-09-05 2012-05-16 Advanced Risc Mach Ltd Scheduling control within a data processing system
US7848131B2 (en) 2008-10-19 2010-12-07 Juhan Kim High speed ferroelectric random access memory
US8074060B2 (en) 2008-11-25 2011-12-06 Via Technologies, Inc. Out-of-order execution microprocessor that selectively initiates instruction retirement early
US8219784B2 (en) 2008-12-09 2012-07-10 International Business Machines Corporation Assigning and pre-decoding group ID and tag ID prior to dispatching instructions in out-of-order processor
US8078854B2 (en) 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US8332854B2 (en) 2009-05-19 2012-12-11 Microsoft Corporation Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
US8281110B2 (en) 2009-07-15 2012-10-02 Via Technologies, Inc. Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
US8217813B2 (en) 2010-04-29 2012-07-10 Advanced Micro Devices, Inc. System and method for low-latency data compression/decompression
CN102262590B (zh) 2010-05-31 2014-03-26 国际商业机器公司 一种用于对硬件加速器的请求队列重排的方法和系统
US8959094B2 (en) 2010-05-28 2015-02-17 Oracle International Corporation Early return of partial sort results in a database system
US20110320784A1 (en) 2010-06-24 2011-12-29 International Business Machines Corporation Verification of processor architectures allowing for self modifying code
US20120117335A1 (en) 2010-11-10 2012-05-10 Advanced Micro Devices, Inc. Load ordering queue
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
TWI518504B (zh) 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
US9690583B2 (en) * 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
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
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code

Also Published As

Publication number Publication date
WO2014152315A1 (en) 2014-09-25
US10180856B2 (en) 2019-01-15
EP2972783A4 (en) 2016-08-17
US20140282575A1 (en) 2014-09-18
EP2972783A1 (en) 2016-01-20
US9582322B2 (en) 2017-02-28
EP2972783B1 (en) 2020-01-01
KR20150128958A (ko) 2015-11-18
KR101996892B1 (ko) 2019-07-05
TWI543075B (zh) 2016-07-21
KR20170054550A (ko) 2017-05-17
CN105190539A (zh) 2015-12-23
KR101734350B1 (ko) 2017-05-12
KR20180049156A (ko) 2018-05-10
KR101853869B1 (ko) 2018-05-02
CN105190539B (zh) 2019-03-08
US20160335091A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
TWI543075B (zh) 使用動態埠重映射以避免指令排程期間閉鎖的方法與設備
TWI517044B (zh) 非對稱執行單元之有效排程的方法與設備
US20140281409A1 (en) Method and apparatus for nearest potential store tagging
US10289419B2 (en) Method and apparatus for sorting elements in hardware structures
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
US20200042321A1 (en) Low power back-to-back wake up and issue for paired issue queue in a microprocessor
US6298435B1 (en) Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor
US11451241B2 (en) Setting values of portions of registers based on bit values
US9588769B2 (en) Processor that leapfrogs MOV instructions
US10635444B2 (en) Shared compare lanes for dependency wake up in a pair-based issue queue
TW494360B (en) Instruction fetch unit in a microprocessor
US11900116B1 (en) Loosely-coupled slice target file data
US20230097390A1 (en) Tightly-coupled slice target file data