TWI517044B - 非對稱執行單元之有效排程的方法與設備 - Google Patents

非對稱執行單元之有效排程的方法與設備 Download PDF

Info

Publication number
TWI517044B
TWI517044B TW103109880A TW103109880A TWI517044B TW I517044 B TWI517044 B TW I517044B TW 103109880 A TW103109880 A TW 103109880A TW 103109880 A TW103109880 A TW 103109880A TW I517044 B TWI517044 B TW I517044B
Authority
TW
Taiwan
Prior art keywords
instructions
type
instruction
execution
execution unit
Prior art date
Application number
TW103109880A
Other languages
English (en)
Other versions
TW201506784A (zh
Inventor
尼爾森N 詹
Original Assignee
軟體機器公司
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 軟體機器公司 filed Critical 軟體機器公司
Publication of TW201506784A publication Critical patent/TW201506784A/zh
Application granted granted Critical
Publication of TWI517044B publication Critical patent/TWI517044B/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/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/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/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

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(“OOO”))微處理器中,指令允許沒有依照其編程的順序發佈及執行。OOO微處理器的排程器非循序地選擇並派送就緒指令至執行單元。某些微處理器架構具有兩種類型的指令A及E。A類型指令的範例為整數運算,例如加法及減法,而E類型指令的範例為浮點運算,例如浮點加法、浮點減法、及浮點乘法。然而,應注意,A及E類型的指令並不僅限於上述範例。
然而,支援兩種類型指令的傳統架構並不具有可支援兩種類型指令的執行單元。舉例來說,傳統處理器一般具有用以執行A類型指令的專屬執行單元以及用以處理E類型指令的專屬單元,其中兩種類型的執行單元是彼此互斥的。
在此架構中之排程器的目的一般為在給定非均勻指令類型及非對稱執行單元下最佳化派送傳輸量。此外,排程器的另一目的為使較 舊的指令優先於較新的指令。最後,最後的目的為在執行排程程序時維持具競爭力的潛時。
傳統架構是受限的,因為其沒有成功地達成所有上述目的。舉例來說,如上述,傳統架構可能採取選擇A類型指令供僅在A類型執行單元中執行並挑選E類型指令供僅在E類型執行單元中執行的原始策略。這允許執行可並行地進行而有較佳的潛時,但若沒有足夠的指令區塊供特定的執行單元類型,其將導致未使用的執行單元埠及較低的整體派送傳輸量。
舉例來說,若有5個A類型指令以及3個E類型指令在具有4個A類型執行單元以及4個E類型執行單元的架構中,至少一個E類型執行單元將為閒置,因為A類型指令無法在E類型執行單元中執行。此方案的另一問題為只有在個別的類別(A或E)中為時期最佳化而非針對整體時期優先性最佳化。舉例來說,在上述範例中,只有7個指令將被派送。第五個A類型指令將必需等待下一循環。因此,傳統架構是受限的且並非設計以完成排程器之所有上述想要的目的。
因此,需要一種方法及設備,其中執行單元可執行多個類型的指令,例如A及E類型的指令。此外,需要用於非對稱執行單元之更有效排程的方法與設備,其最佳化派送傳輸量、使較舊的指令區塊優先於較新的、以及維持具競爭力的潛時。
本發明具體實施例支援非對稱執行單元類型A及E,其中A 類型執行單元僅可支援A類型的指令,但E類型執行單元可支援A類型及E類型的指令兩者。因此,A類型的指令可在A及E兩單元中執行,但E指令僅能在E單元中執行。因此,A類型執行單元可為E類型執行單元的一子集。
在一具體實施例中,為了執行非對稱執行單元的排程,排程器先填充A執行單元埠,接著以未被A執行單元所選擇的所有其他指令區塊填充E執行單元埠。在一具體實施例中,排程器包含“Find-8”及“Find-4”邏輯電路。Find-8電路針對符合選擇標準的前8個最舊指令搜尋排程器中的派送範圍。同時,Find-4電路與Find-8電路並行地使用以搜尋前4個最舊的A類型指令區塊。Find-4電路的結果係用以排程A類型執行單元。未被Find-4電路所選擇的剩餘指令中,最舊的4個係接著排程用於E類型執行單元。舉例來說,若Find-8電路選擇3個A及5個E類型的指令且Find-4電路選擇3個A類型的指令(與Find-8邏輯所選的3個A類型指令相同),則3個A類型的指令係排程用於A埠,而剩餘的5個E類型指令中最舊的4個係排程用於E埠。然而,本發明並不受限於此具體實施例。舉例來說,若排程器在一循環可派送16個指令,則“Find-16”及“Find-8”邏輯電路將並行地使用,如此等等。
因此,本發明具體實施例具有高派送效率的優點,因為其將嘗試填充A類型及E類型兩種埠。此外,本發明具體實施例在兩類型區塊之間具有較佳的整體時期優先性。最後,因為Find-8及Find-4電路並行地使用,本發明具體實施例也維持執行排程程序上具競爭力的潛時。
在一具體實施例中,揭露一種用以在一非循序微處理器管線中排程指令的方法。方法包含選擇一第一組指令以從一排程器派送,其中排程器可操作以派送兩種類型的指令,其中執行模組包含兩種類型的執 行單元。第一類型的執行單元執行第一類型的指令及第二類型的指令兩者,且第二類型的執行單元僅執行第二類型的指令。方法也包含選擇一第二組指令以派送,其中第二組為第一組的一子集,且其中第二組僅包含第二類型的指令。接著,方法包含判定一第三組指令,其中第三組指令為第一組指令的一子集,且其中第三組包含未被選擇作為部分之第二組的指令。最後,方法包含派送第二組指令至執行模組供使用第二類型的執行單元加以執行,以及進一步派送第三組指令至執行模組供使用第一類型的執行單元加以執行。
在另一具體實施例中,揭露一種組態以執行用以在一非循序微處理器管線中排程指令之方法的處理器單元。方法包含選擇一第一組指令以從一排程器派送,其中排程器可操作以派送兩種類型的指令,其中執行模組包含兩種類型的執行單元。第一類型的執行單元執行第一類型的指令及第二類型的指令兩者,且第二類型的執行單元僅執行第二類型的指令。方法也包含選擇一第二組指令以派送,其中第二組為第一組的一子集,且其中第二組僅包含第二類型的指令。接著,方法包含判定一第三組指令,其中第三組指令為第一組指令的一子集,且其中第三組包含未被選擇作為部分之第二組的指令。最後,方法包含派送第二組指令至執行模組供使用第二類型的執行單元加以執行,以及進一步派送第三組指令至執行模組供使用第一類型的執行單元加以執行。
在一不同的具體實施例中,揭露一種組態以執行用以在一非循序微處理器管線中排程指令之方法的設備。設備包含一記憶體、通訊地耦合至記憶體的處理器,其中處理器係組態以非循序地處理指令。處理 器更組態以:(a)選擇一第一組指令以從一排程器派送至一執行模組,其中排程器可操作以派送兩種類型的指令,其中執行模組包含兩種類型的執行單元,其中第一類型的執行單元執行第一類型的指令以及第二類型的指令兩者,且其中第二類型的執行單元僅執行第二類型的指令;(b)選擇一第二組指令以從排程器派送,其中第二組為第一組的一子集,且其中第二組僅包含第二類型的指令;(c)判定一第三組指令,其中第三組指令為第一組指令的一子集,且其中第三組指令包含未被選擇作為部分之第二組的指令;以及(d)派送第二組指令至執行模組供使用第二類型的執行單元加以執行,以及進一步派送第三組指令至執行模組供使用第一類型的執行單元加以執行。
以下的詳細描述連同附隨的圖式將提供對本發明本質及優點的較佳理解。
110‧‧‧計算系統
112‧‧‧通訊設施
114‧‧‧處理器
116‧‧‧系統記憶體
118‧‧‧記憶體控制器
120‧‧‧輸入/輸出控制器
122‧‧‧通訊介面
124‧‧‧顯示裝置
126‧‧‧顯示配接器
128‧‧‧輸入裝置
130‧‧‧輸入介面
132‧‧‧主儲存裝置
133‧‧‧備用儲存裝置
134‧‧‧儲存介面
140‧‧‧資料庫
252‧‧‧A類型執行單元
254‧‧‧A類型執行單元
256‧‧‧A類型執行單元
258‧‧‧A類型執行單元
260‧‧‧E類型執行單元
262‧‧‧E類型執行單元
264‧‧‧E類型執行單元
266‧‧‧E類型執行單元
272‧‧‧A類型指令
274‧‧‧E類型指令
276‧‧‧A類型指令
278‧‧‧A類型指令
279‧‧‧排程器
280‧‧‧E類型指令
282‧‧‧E類型指令
284‧‧‧A類型指令
286‧‧‧A類型指令
302‧‧‧提取級
304‧‧‧解碼模組
306‧‧‧發佈佇列
308‧‧‧重排序緩衝器
310‧‧‧暫存器檔案
312‧‧‧執行模組
314‧‧‧寫回模組
316‧‧‧載入儲存佇列
318‧‧‧記憶體
372‧‧‧排程器模組
380‧‧‧實體暫存器檔案
404‧‧‧Find-8模組
406‧‧‧Find-4模組
408‧‧‧E類型執行單元
410‧‧‧A類型執行單元
472‧‧‧排程器
474‧‧‧執行模組
572‧‧‧指令
574‧‧‧指令
576‧‧‧指令
578‧‧‧指令
580‧‧‧指令
582‧‧‧指令
584‧‧‧指令
586‧‧‧指令
588‧‧‧指令
590‧‧‧指令
592‧‧‧指令
594‧‧‧指令
596‧‧‧指令
598‧‧‧指令
599‧‧‧指令
600‧‧‧流程圖
在附圖之圖式中以實例方式而非限定方式闡述本發明具體實施例,且在附圖中相似的參考編號係指類似元件。
圖1為根據本發明具體實施例之範例電腦系統;圖2描述可針對非對稱執行單元選擇非均勻指令之方式的一範例;圖3為根據本發明具體實施例之用於非循序微處理器之管線的範例圖式,其中本發明具體可實施於其上;圖4為根據本發明具體實施例之一方塊圖,其描述用以針對 非對稱執行單元排程指令的一方案;圖5為根據本發明具體實施例之一表格,其描述以每循環派送8個指令之一排程器針對非對稱執行單元排程指令的一方案;以及圖6繪示根據本發明具體實施例之用於在一非循序微架構中之指令排程的範例電腦控制程序的流程圖。
現在將詳細地介紹本發明之各種具體實施例,其實例圖解說明於附圖中。儘管將結合這些具體實施例來闡述本發明,但應瞭解,該等具體實施例並非意欲將本發明限定至這些具體實施例。相反地,本發明意欲涵蓋可包含於隨附申請專利範圍所界定之本發明精神及範疇內之替代、修改及等效方案。此外,在本發明之如下詳細闡述中,列舉了眾多特定細節以提供對本發明之透徹理解。然而,將理解到,可在不具備該等特定細節之情況下實施本發明。在其他示例中,未詳細闡述眾所周知之方法、程序、組件和電路,以避免不必要地模糊本發明實施例之各態樣。
符號和命名法
詳細說明的一些部份在以下係以程序、邏輯方塊、處理,以及其它對於一電腦記憶體內資料位元之作業的符號表示來呈現。這些說明及表示為在資料處理技術中熟此技藝者所使用的最有效地傳遞他們工作的實質內容給其他熟此技藝者的手段。在本申請案中,程序、邏輯方塊、處理或類似者皆被視為可達到所想要結果之步驟或指令的一自我一致的序列。該等步驟利用實體數量的實體操縱。通常雖然並非必要,這些數量可 採取電子或磁性信號之型式,其能夠被儲存、轉換、組合、比較,及另可在一電腦系統中操縱。主要由於是常見用法的原因,已經證明有時可方便地將這些信號稱之為交易、位元、數值、元件、符號、字元、樣本、像素或類似者。
然而,應注意,所有這些及其他類似用語係與適當的物理量相關聯,且僅為應用於此等量的便利符號。於下討論中除非有特別指明,應理解本發明的討論中使用例如「選擇」、「派送」、「判定」、「儲存」、「發佈」、「判定」、「生效」或類似者之用語之討論係表示電腦系統或類似電子計算裝置或處理器(如圖1的系統110)的動作及程序(如圖6的流程圖600)。電腦系統或類似的電子計算裝置操縱和轉換表示成在電腦系統記憶體、暫存器、或其它這種資訊儲存器、傳輸或顯示裝置之內的實體(電子)數量的資料。
此處所述之具體實施例在電腦可執行指令的一般性內容中做討論,該指令係常駐在由一或多個電腦或其它裝置所執行的某種型式的電腦可讀取儲存媒體上,例如程式模組。例如但非限制,電腦可讀取儲存媒體可以包含非過渡性電腦可讀取儲存媒體和通訊媒體;非過渡性電腦可讀取媒體包括所有電腦可讀取媒體,除了一過渡性傳播信號之外。概言之,程式模組包括例式、程式、物件、組件、資料結構等,其可執行特殊工作或實施特定的抽象資料型態。該等程式模組的功能在多種具體實施例中可視需要組合或分散。
電腦儲存媒體包括揮發性與非揮發性、可移除與不可移除媒體,其可用任何方法或技術實施來儲存資訊,例如電腦可讀取指令、資料結構、程式模組或其它資料。電腦儲存媒體包括但不限於隨機存取記憶 體(RAM)、唯讀記憶體(ROM)、電性可抹除可程式化ROM(EEPROM)、快閃記憶體或其它記憶體技術、光碟ROM(CD-ROM)、數位多功能碟片(DVD)、或其它光學儲存器、磁帶盒、磁帶、磁碟儲存器、或其它磁性儲存裝置,或任何其它可用於儲存所需要資訊以及可被存取來擷取該資訊的媒體。
通訊媒體能夠實現電腦可執行指令、資料結構及程式模組,並包括任何資訊傳遞媒體。例如但非限制,通訊媒體包括有線媒體,像是有線網路或直接線路連接,以及無線媒體,像是聲波、射頻(RF)、紅外線及其它無線媒體。任何上述的組合亦可包括在電腦可讀取媒體的範圍內。
圖1為能夠與本發明具體實施例之處理器114整合之計算系統110之範例的方塊圖。計算系統110廣義地表示能夠執行電腦可讀指令之任何單一或多處理器計算裝置或系統。計算系統110的範例包含但不限於工作站、膝上型電腦、客戶端終端、伺服器、分散式計算系統、手持裝置、或任何其他計算系統或裝置。在其最基本的組態中,計算系統110可包含本發明具體實施例的至少一處理器114以及一系統記憶體116。
處理器114併入本發明具體實施例且一般表示能夠處理資料或解譯及執行指令的任何種類或形式的處理單元。在某些具體實施例中,處理器114可從軟體應用程式或模組接收指令。這些指令可使處理器114執行本文所描述及/或說明之一或多個範例具體實施例的功能。在一具體實施例中,處理器114可為一非循序微處理器。在一不同的具體實施例中,處理器114可為一超純量(superscalar)處理器。在另一具體實施例中,處理器114可包含多個並行操作的處理器。
系統記憶體116一般表示能夠儲存資料及/或其他電腦可讀 指令的任何種類或形式的揮發性或非揮發性儲存裝置或媒體。系統記憶體116的範例包含但不限於RAM、ROM、快閃記憶體、或任何其他合適的記憶體裝置。雖然非必需,但在某些具體實施例中,計算系統110可包含揮發性記憶體單元(像是例如系統記憶體116)及非揮發性儲存裝置(像是例如主儲存裝置132)兩者。
除了處理器114及系統記憶體116之外,計算系統110也可包含一或多個組件或元件。舉例來說,在圖1的具體實施例中,計算系統110包含記憶體控制器118、輸入/輸出(I/O)控制器120、及通訊介面122,其每一者可經由通訊設施112而互連。通訊設施112通常表示能夠幫助計算裝置之一或多個組件之間通訊的任何種類或形式的設施。通訊設施112的範例包含但不限於通訊匯流排(如工業標準架構(ISA)、週邊組件互連(PCI)、PCI Express(PCIe)、或類似匯流排)及網路。
記憶體控制器118一般表示能夠處理記憶體或資料或控制計算系統110之一或多個組件之間通訊的任何種類或形式的裝置。舉例來說,記憶體控制器118可經由通訊設施112控制處理器114、系統記憶體116、及I/O控制器120之間的通訊。
I/O控制器120一般表示能夠協調及/或控制計算裝置之輸入及輸出功能的任何種類或形式的模組。舉例來說,I/O控制器120可控制或幫助計算系統110之一或多個元件(如處理器114、系統記憶體116、通訊介面122、顯示配接器126、輸入介面130、及儲存介面134)之間的資料轉移。
通訊介面122廣義地表示能夠幫助範例計算系統110與一或多個額外裝置之間通訊的的任何種類或形式的通訊裝置或配接器。舉例來 說,通訊介面122可幫助計算系統110與包含額外計算系統之私人或公用網路之間的通訊。計算介面122的範例包含但不限於有線網路介面(如網路介面卡)、無線網路介面(如無線網路介面卡)、數據機、及任何其他合適的介面。在一具體實施例中,通訊介面122經由對網路(如網際網路)的直接鏈接而提供直接連接至遠端伺服器。通訊介面122也可經由任何其他合適的連接而非直接地提供此一連接。
通訊介面122也可表示組態以經由外部匯流排或通訊通道幫助計算系統110與一或多個額外網路或儲存裝置之間通訊的主機配接器。主機配接器的範例包含但不限於小型電腦系統介面(SCSI)主機配接器、通用串列匯流排(USB)主機配接器、IEEE(電子電機工程師學會)1394主機配接器、序列先進技術附接(SATA)與外部SATA(eSATA)主機配接器、先進技術附接(ATA)與平行ATA(PATA)主機配接器、光纖通道介面配接器、乙太網路配接器或類似者。通訊介面122也可允許計算系統110進行分散或遠端計算。舉例來說,通訊介面122可接收來自遠端裝置的指令或傳送指令到遠端裝置供執行。
如圖1所示,計算系統110也可包含至少一顯示裝置124,其經由顯示配接器126耦合至通訊設施112。顯示裝置124一般表示能夠在視覺上顯示由顯示配接器126所傳送之資訊的任何種類或形式的裝置。類似地,顯示配接器126一般表示組態以傳送圖形、文字、及其他資料供顯示於顯示裝置124上之任何種類或形式的裝置。
如圖1所示,計算系統110也可包含至少一輸入裝置128,其經由輸入介面130耦合至通訊設施112。輸入裝置128一般表示能夠提供輸入 (不論是電腦或人為產生的)到計算系統110之任何種類或形式的輸入裝置。輸入裝置128的範例包含但不限於鍵盤、指向裝置、語音辨識裝置、或任何其他輸入裝置。
如圖1所示,計算系統110也可包含主儲存裝置132及備用儲存裝置133,其經由儲存介面134耦合至通訊設施112。儲存裝置132及133一般表示能夠儲存資料及/或其他電腦可讀指令之任何種類或形式的儲存裝置或媒體。舉例來說,儲存裝置132及133可為磁碟機(如所謂的硬碟機)、軟碟機、磁帶機、光碟機、隨身碟、或類似者。儲存介面134一般表示用以在儲存裝置132及133以及計算系統110之其他組件之間轉移資料的任何種類或形式的介面或裝置。
在一範例中,資料庫140可儲存於主儲存裝置132中。資料庫140可表示單一資料庫或計算裝置的部分或其可表示多個資料庫或計算裝置。舉例來說,資料庫140可表示(儲存於)計算系統110的一部分。或者,資料庫140可表示(儲存於)能夠由計算裝置(如計算裝置110)所存取之一或多個實體獨立裝置。
繼續參考圖1,儲存裝置132及133可組態以讀取及/或寫入可移式儲存單元,其組態以儲存電腦軟體、資料、或其他電腦可讀資訊。合適的可移式儲存單元包含但不限於軟磁碟、磁帶、光碟、快閃記憶體裝置或類似者。儲存裝置132及133也可包含其他類似的結構或裝置以允許電腦軟體、資料、或其他電腦可讀指令被載入計算系統110。舉例來說,儲存裝置132及133可組態以讀取及寫入軟體、資料、或其他電腦可讀資訊。儲存裝置132及133也可為計算系統110的一部分或可為經由其他介面系統存取 之獨立裝置。
許多其他裝置或子系統可連接至計算系統110。另一方面,不需呈現圖1所示的所有組件及裝置來實施本文所述的具體實施例。上述的裝置及子系統也可以不同於圖1所示的方式來連接。計算系統110也可使用任何數量的軟體、韌體、及/或硬體組態。舉例來說,本文所揭露之範例具體實施例可編碼為電腦可讀媒體上的電腦程式(亦稱為電腦軟體、軟體應用程式、電腦可讀指令、或電腦控制邏輯)。
包含電腦程式的電腦可讀媒體可載入計算系統110中。儲存於電腦可讀媒體上之電腦程式的全部或部分可接著儲存於系統記憶體116及/或儲存裝置132及133的各個部分。當由處理器114執行時,載入至計算系統110的電腦程式可造成處理器114執行及/或成為一手段用以執行本文所描述及/或說明之範例具體實施例的功能。附加地或替代地,本文所描述及/或說明之範例具體實施例可以韌體及/或硬體實施。
非對稱執行單元之有效排程的方法與設備
本發明具體實施例提供一種方法及設備,其中執行單元可執行多種類型的指令,如A類型及E類型兩種指令。此外,本發明具體實施例提供非對稱執行單元之更有效率的排程,其最佳化派送傳輸量、使較舊的指令區塊優先於較新者、並維持有競爭力的潛時。
本發明具體實施例支援非對稱執行單元類型A及E,其中A類型執行單元僅可支援A類型的指令,而E類型執行單元可支援A類型及E類型的指令兩者。因此,A類型的指令可在A及E兩單元中執行,但E指令僅能 在E單元中執行。因此,A類型執行單元可視為E類型執行單元的一子集。
在一具體實施例中,排程器先填充A執行單元埠,接著以未被A執行單元所選擇的所有其他指令區塊填充E執行單元埠。在一具體實施例中,排程器包含“Find-8”及“Find-4”邏輯電路。Find-8電路針對符合選擇標準的前8個最舊指令搜尋排程器中的派送範圍。同時,Find-4電路與Find-8電路並行地使用以搜尋前4個最舊的A類型指令區塊。Find-4電路的結果係用以排程A類型執行單元。未被Find-4電路所選擇的剩餘指令中,最舊的4個係接著排程用於E類型執行單元。舉例來說,若Find-8電路選擇3個A及5個E類型的指令且Find-4電路選擇3個A類型的指令(與Find-8邏輯所選的3個A類型指令相同),則3個A類型的指令係排程用於A埠,而剩餘的5個E類型指令中最舊的4個係排程用於E埠。然而,本發明並不受限於此具體實施例。舉例來說,若排程器在一循環可派送16個指令,則“Find-16”及“Find-8”電路將並行地使用,如此等等。
因此,本發明具體實施例具有高派送效率的優點,因為其將嘗試填充A類型及E類型兩種埠。此外,本發明具體實施例具有在兩類型區塊之間較佳的整體時期優先性。最後,因為Find-8及Find-4電路並行地使用,本發明具體實施例也維持執行排程程序上具競爭力的潛時。
圖2描述可針對非對稱執行單元選擇非均勻指令之方式的一範例。A類型的指令可在A及E兩單元中執行,但E指令僅能在E單元中執行。因此,如上述,A類型執行單元可視為E類型執行單元的一子集。圖2描述可如何針對非對稱執行單元選擇非均勻指令的一範例。指令272、276、278、284、及286為A類型指令,而指令274、280、及282為E類型指令。排 程器279派送指令至非對稱執行單元,其中執行單元252、254、256、及258為A類型執行單元,而260、262、264、及266為E類型執行單元。排程器279包含5個A類型指令及3個E類型指令。所有E類型指令僅在E類型執行單元中執行,而A類型指令係派送至A類型及E類型指令單元兩者。舉例來說,如圖2所示,指令284(A類型指令)在執行單元258(A類型執行單元)中執行,而指令286(A類型指令)在執行單元266(E類型執行單元)中執行。
如前述,A類型指令的範例為整數運算,例如加法及減法,而E類型指令的範例為浮點運算,例如浮點加法、浮點減法、及浮點乘法。因此,根據本發明一具體實施例,E類型執行單元可些微地改變以支援A類型指令。如此做使得E類型執行單元在邏輯上稍加複雜,然而付出的代價是最小的且在靈活度及潛時上所獲得的益處將更大。
圖3為根據本發明一具體實施例之針對非循序微處理器之一管線的範例圖式,其中本發明具體實施例可實施於其上。
如圖3所示,指令在提取級302提取並放置在提取級302內的指令提取佇列(IFQ)(圖未示)。這些指令參照架構暫存器,其儲存於暫存器檔案310中。在指令從提取單元302派送後,其由解碼模組304解碼並放置於ROB 308及發佈佇列306(IQ)中。在本發明一具體實施例中,排程器模組372包含ROB 308及IQ 306。當使用排程器模組372將指令非循序地發佈出IQ 3506,其將由執行模組312所執行。
如上述,在本發明一具體實施例中,執行模組312包含非對稱執行單元A及E,其中A類型執行單元僅可支援A類型的指令,而E類型執行單元可支援A類型及E類型的指令兩者。因此,A類型的指令可在A及E兩 單元中執行,但E指令僅能在E單元中執行。因此,A類型執行單元可為E類型執行單元的一子集。
在一具體實施例中,寫回模組314可先將從該些指令所產生的數值寫回ROB 308中的臨時暫存器。ROB 308追蹤指令進入管線的編程順序,且針對這些指令的每一者,ROB維持在實體暫存器檔案380中臨時的暫存器儲存。在本發明一具體實施例中,實體暫存器檔案係隨指令從排程器派送而動態地分配。因為實體暫存器檔案係隨指令派送而分配,其並非依時期的順序。實體暫存器檔案非循序地儲存項目並等待其退休以到架構暫存器檔案310。
當在ROB中最舊的指令產生一有效結果,該些指令可被安全地提交。亦即,該些指令的結果可為永久,因為沒有能夠引起可能取消該些指令效應之錯誤預測或異常的更早指令。當指令準備好要提交,ROB 308將在臨時暫存器中針對該些指令的對應數值移動到架構暫存器檔案310。因此,經由ROB的依序提交程序,暫存器檔案310中的結果可為永久且在架構上為可見的。
從IQ 306非循序地發佈指令也可包含載入及儲存。當載入及儲存從IQ 306非循序地發佈,在該些指令可被提交之前,在其之間有記憶體相依性需要被解決。因此,載入及儲存指令係儲存於載入儲存佇列(LSQ)316中,而在其所產生的數值可被提交到記憶體318之前,在其之間的相依性在ROB 308的幫助下解決。
圖4為根據本發明具體實施例之一方塊圖,其描述用以針對非對稱執行單元排程指令的一方案。
有許多方式針對非對稱執行單元排程指令。如上述,一種方式為針對A類型執行單元挑選A類型指令且針對E類型執行單元挑選E類型指令。此類型的原始排程方案的缺點已於前文討論。
另一個排程指令的方式為先選擇E類型指令來填充E類型執行單元,且若沒有足夠的E類型指令區塊,則選擇更多A類型指令區塊來填充E單元並接著填充A單元。此方案的第一個問題為兩步驟程序需以串行的方式來執行,這表示其對潛時並不利。第二,此程序並不具有整體的時期優先性。舉例來說,在某些例子中,此程序將挑選較新的E指令來填充E執行單元,而跳過較舊A的指令。
最後,第三個排程指令的方式為(a)先填充A執行埠,接著,(b)以未被較早步驟挑選的所有其他指令區塊來填充E埠。換言之,此程序將對開始的A類型指令區塊給予優先性,舉例來說,在每循環派送8個指令並包含4個A類型執行單元的排程器中,將對前4個A類型指令區塊給予優先性。因為E執行單元可採用A或E類型的指令,其可在嘗試填充A類型執行單元後被填充。
此程序具有高效率,因為其將嘗試填充兩種類型的執行埠A及E。此程序在兩類型區塊之間的整體時期優先性方面表現良好。雖然當A類型區塊比E類型區塊更新時其看起來似乎給予A類型區塊太多的優先性,但情況並非如此。舉例來說,在每循環派送8個指令並包含4個A類型及4個E類型執行單元的排程器中,僅可選擇高達4個E類型指令區塊。因此,第五個或之上的E類型區塊是否具有比A類型區塊更舊的時期是無關緊要的。它們根本無法被挑選。換言之,因為在任一給定循環中只有4個E類型指令可 被挑選,即使程序先填充A執行埠也不影響整體的時期優先性。
為了最大化派送機會,本發明具體實施例因此根據上述的第三種方式組態以先排程A埠接著再排程E埠。然而,此程序的一個缺點為因為是兩步驟的實施,所以在時間上並不利。這是個問題,因為在較高效能的處理器中,派送搜尋邏輯的潛時是關鍵的。為解決這個問題,本發明具體實施例將使程序中的某些步驟並行,如下文所討論。
圖4為根據本發明具體實施例之一方塊圖,其描述用以針對非對稱執行單元排程指令的一方案。為了平行化上述的程序,Find-4邏輯結構406係組態以與排程器472中的Find-8邏輯404並行。Find-8邏輯為可操作以選擇符合選擇標準之前8個最舊指令以進行派送的結構。Find-4邏輯結構可操作以選擇符合選擇標準之前4個最舊指令以進行派送。
Find-8結構404經由排程器中的派送範圍搜尋8個候選者。所使用的標準為指令候選者的就緒位元。若就緒位元被設定,則指令準備好被派送。在遮蔽E類型指令下,Find-4結構406經由派送範圍搜尋4個A類型區塊。這與Find-8操作並行地執行。Find-4邏輯類似於Find-8邏輯,除了其僅搜尋A類型指令區塊的額外標準。Find-8及Find-4邏輯結構搜尋派送範圍中最優先的區塊。在一具體實施例中,邏輯結構使用指令的重排序緩衝器ID(ROB ID)以判定優先性。在另一具體實施例中,索引數目可指派給排程器中的每一項目,其也可用以判定優先性。
Find-4模組406遮蔽E類型指令並僅選擇A類型指令所產生的結果,係傳送至執行模組474中的A類型執行單元410。換言之,Find-4模組406遮蔽E類型指令並經由派送範圍搜尋4個A類型區塊。同時,Find-8模 組404選擇A及E兩類型中最舊的8個指令,其與Find-4模組並行。Find-4結構406所產生的結果接著由Find-8模組404使用以派送未被Find-4結構406所選擇之剩餘指令中最舊的指令至E類型執行單元408。換言之,由Find-4結構406所選的指令被由Find-8模組404所選之指令所遮蔽,且剩餘指令中最舊的4個係派送至E類型執行單元408。此程序的淨效應為使較舊的A類型區塊優先於E類型區塊。
舉例來說,Find-8模組404可選擇其判定為最高優先指令的5個A類型指令及3個E類型指令。在此例中的Find-4模組406將挑選5個A類型指令中最舊的4個以派送至A類型執行單元410。這4個最舊的A指令將接著從由Find-8模組404所選擇之指令組中被遮蔽。剩下的3個E類型指令以及1個最新的A類型指令將接著被派送至E類型執行單元408。
在另一範例中,Find-8模組404可選擇其判定為最高優先指令的3個A類型指令及5個E類型指令。在此例中的Find-4模組406將挑選3個A類型指令以派送至A類型執行單元410。這3個A指令將接著從由Find-8模組404所選擇之指令組中被遮蔽。由Find-8模組所選擇之剩下的5個E類型指令中,最舊的4個E類型指令將被選擇以派送至E類型執行單元408。
在一具體實施例中,用以優先化排程器中指令的索引數目或ROB ID也用以計算執行模組474內用以執行指令之執行單元的埠數目。
使用Find-4模組結合Find-8模組以並行化操作將省下大量的時間。如前述,在高效能處理器中,基本派送搜尋邏輯的潛時是關鍵的。舉例來說,若A執行埠的填充接著E執行埠的填充為序列化,則每個操作可能需要1ns,使得派送搜尋邏輯需要2ns。藉由將Find-8操作(其例如可能需 要1.2ns)與Find-4操作(其可能需要1ns)並行,本發明具體實施例在每一循環中的派送期間可省下0.8ns,其從處理器設計的角度來看是相當重要的。此外,將Find-4結構所產生的結果與Find-8結構所產生的結果分開的遮蔽操作所花費的時間量相較於Find-4或Find-8操作本身的潛時並不大。
圖5為根據本發明具體實施例之一表格,其描述以每循環派送8個指令之一排程器針對非對稱執行單元排程指令的一方案。如上述,雖然範例係基於每循環選擇並派送8個指令的排程器,但本發明具體實施例可簡單地縮放以符合派送多於或少於8個指令之排程器的需求。
指令572到599係依照優先性的順序,基於其ROB ID數目或維持以排序及優先化指令的任何其他索引數目。Find-8模組搜尋8個最高優先性(或最舊)的指令,其具有其就緒位元組。因此,Find-8模組選擇指令572、574、576、578、580、588、590、及592,其分別如圖5之表格中的計數值0到7所示。就緒位元未肯定的指令(如582、584、及586)將被忽略。此外,超過最高優先性8的指令(如指令594、596、598、及599)將被忽略。
如前述,Find-4邏輯經由派送範圍搜尋A類型區塊,且若找到超過4個則飽和計數。如圖5之表格的行3所示,在選擇前4個A類型指令(572、574、580、及590)後,Find-4模組飽和且無法選擇也被Find-8模組所選擇之最後的A類型指令592。如前文所解釋,第五個A類型指令係傳輸以供在E類型執行單元408中排程。
如圖5之表格的行4所示,針對A類型指令的遮罩係用於Find-4邏輯模組以能夠選擇A類型指令。此遮罩致能Find-4模組選擇Find-8計數範圍(如行2所示)0到7內的前4個A類型指令(572、574、580及590)。
此外,如行5所示,對E類型指令使用一遮罩-遮罩也挑選未被Find-4模組所選擇之A類型指令。此遮罩係由Find-8模組使用以判定應派送至E執行單元的指令。因此,由此遮罩所遮蔽的指令為在0到7計數範圍中的3個E類型指令576、578、及588、以及單一A類型指令592,其未被Find-4模組所選擇因為其已經飽和。
圖6繪示根據本發明具體實施例之用於在一非循序微架構中之指令排程的範例電腦控制程序的流程圖。雖然在此流程圖的各個步驟係依序介紹及描述,但熟此技藝者將了解到某些或全部步驟可以不同的順序執行且某些或全部步驟可並行地執行。此外,在本發明一或多個具體實施例中,下文所述的一或多個步驟可省略、重複、及/或以不同順序執行。因此,圖6所示步驟之特定安排不應解釋為限制本發明範疇。相反地,熟習相關領域技術者從本文所提供的教示將理解到其他的功能性流程係在本發明的範疇及精神內。流程圖600可參照上述範例具體實施例進行描述,但方法並不受限於該些具體實施例。
在步驟602,選擇第一組指令以從排程器472派送到執行模組474。在一具體實施例中,Find-8結構404可選擇高達8個高優先性指令以一次從排程器派送。如上述,排程器可操作以派送兩種類型的指令A及E。執行模組也包含兩種類型的執行單元,其中A類型執行單元僅可執行A類型指令,而E類型執行單元可執行A及E類型指令兩種。
在步驟604,另一個尋找及選擇模組(如Find-4模組406)可組態以選擇第二組指令以從排程器派送。第二組指令為第一組指令的一子集,例如Find-4模組選擇4個指令,其為由Find-8模組所選擇之8個指令的一 子集。然而,第二子集僅包含一種類型的指令,如A類型的指令。
在步驟606,判定第三組指令,其包含第一組指令中未被第二組指令挑選的指令。
在步驟608,派送第二組指令以供使用第二類型執行單元加以執行。舉例來說,Find-4結構派送A類型指令供在A類型執行單元中執行。最後,在步驟610,第三組指令派送至執行模組供在第一類型執行單元中執行。舉例來說,Find-8模組派送未被Find-4模組挑選之指令以供在E類型執行單元中執行。
儘管上述揭示內容使用特定方塊圖、流程圖、及實例提出各種具體實施例,但是各方塊圖組件、流程圖步驟、操作、及/或本文所說明及/或圖解的組件可使用廣泛範圍的硬體、軟體、或韌體(或其任何組合)組態個別地及/或共同地實施。此外,其他組件中所含有組件的任何揭示應視為實例,因為許多其他架構均可實施以達成相同的功能性。
本文所說明及/或圖解的程序參數及步驟順序僅以舉例方式提出。例如,儘管本文所說明及/或圖解的步驟可以特定次序顯示或討論,但這些步驟不一定要以所圖解或討論的次序執行。本文所說明及/或圖解的各種實例方法亦可省略本文所說明或圖解之步驟的一或多個,或可包括除了所揭示步驟以外的額外步驟。
儘管各種具體實施例已在全功能計算系統的背景下在本文加以說明及/或圖解,但是這些實例具體實施例的一或多個可分布為各種形式的程式產品,而不管用以實際執行分布之電腦可讀媒體的特定類型為何。本文揭示的具體實施例亦可使用執行特定工作的軟體模組來實施。這 些軟體模組可包括可儲存在電腦可讀儲存媒體上或計算系統中的指令碼、批次檔或其他可執行檔。這些軟體模組可組態計算系統以執行本文揭示之實例具體實施例的一或多個。
為了解說的目的,已參考特定具體實施例做出以上說明。然而,以上闡釋之討論的目的不在詳盡窮舉或限制本發明於揭示的精確形式。可對以上揭示進行許多修改及變化。具體實施例的選擇與說明係為了對本發明的原理及實際應用提出最好的解說,藉此讓熟習本技術者以適於所想特定用途的各種修改,充分利用本發明及各種具體實施例。
因此說明了根據本發明的具體實施例。雖然已在特定具體實施例中說明本發明,但應明白,本發明不應被視為受到此等具體實施例的限制,而是應根據以下申請專利範圍加以解釋。
600‧‧‧流程圖

Claims (13)

  1. 一種用以在一非循序微處理器管線中排程指令的方法,該方法包含:選擇一第一組指令以從一排程器派送至一執行模組,其中該排程器可操作以派送兩種類型的指令,其中該執行模組包含兩種類型的執行單元,其中一第一類型的執行單元執行一第一類型的指令以及一第二類型的指令兩者,且其中一第二類型的執行單元僅執行該第二類型的指令;選擇一第二組指令以從該排程器派送,其中該第二組為該第一組的一子集,且其中該第二組僅包含該第二類型的指令;判定一第三組指令,其中該第三組指令為該第一組指令的一子集,且其中該第三組指令包含未被選擇作為部分之該第二組的指令;以及派送該第二組指令至該執行模組供使用該第二類型的執行單元加以執行,以及進一步派送該第三組指令至該執行模組供使用該第一類型的執行單元加以執行。
  2. 如申請專利範圍第1項所述之方法,其中該第三組包含該第一類型的指令以及該第二類型的指令。
  3. 如申請專利範圍第1項所述之方法,其中該第一類型的指令係選自由以下所組成的群組:浮點加法、浮點減法、及浮點乘法。
  4. 如申請專利範圍第1項所述之方法,其中該第二類型的指令係選自由以下所組成的群組:加法及減法。
  5. 如申請專利範圍第1項所述之方法,其中選擇一第一組指令之該步驟及選擇一第二組指令之該步驟係並行地執行。
  6. 如申請專利範圍第1項所述之方法,其中該第一組指令、該第二組指令、及該第三組指令係基於時期優先性而選擇,其中該時期優先性係基於選自由以下所組成的群組之一數值而判定:一重排序緩衝器ID(ROB ID)數目以及指派給在該排程器中之每一指令的一索引數目。
  7. 如申請專利範圍第6項所述之方法,其中該數值係用以判定一對應執行單元的一埠數目。
  8. 一種組態以執行用以在一非循序微處理器管線中排程指令之一方法的設備,該設備包含:一記憶體;一處理器,通訊地耦合至該記憶體,其中該處理器係組態以非循序地處理指令,且其中該處理器更組態以:選擇一第一組指令以從一排程器派送至一執行模組,其中該排程器可操作以派送兩種類型的指令,其中該執行模組包含兩種類型的執行單元,其中一第一類型的執行單元執行一第一類型的指令 以及一第二類型的指令兩者,且其中一第二類型的執行單元僅執行該第二類型的指令;選擇一第二組指令以從該排程器派送,其中該第二組為該第一組的一子集,且其中該第二組僅包含該第二類型的指令;判定一第三組指令,其中該第三組指令為該第一組指令的一子集,且其中該第三組指令包含未被選擇作為部分之該第二組的指令;以及派送該第二組指令至該執行模組供使用該第二類型的執行單元加以執行,以及進一步派送該第三組指令至該執行模組供使用該第一類型的執行單元加以執行。
  9. 如申請專利範圍第8項所述之設備,其中該第三組包含該第一類型的指令以及該第二類型的指令。
  10. 如申請專利範圍第8項所述之設備,其中該第一類型的指令係選自由以下所組成的群組:浮點加法、浮點減法、及浮點乘法。
  11. 如申請專利範圍第8項所述之設備,其中該第二類型的指令係選自由以下所組成的群組:加法及減法。
  12. 如申請專利範圍第8項所述之設備,其中選擇一第一組指令之該步驟及選擇一第二組指令之該步驟係並行地執行。
  13. 如申請專利範圍第8項所述之設備,其中該第一組指令、該第二組指令、及該第三組指令係基於時期優先性而選擇,其中該時期優先性係基於選自由以下所組成的群組之一數值而判定:一重排序緩衝器ID(ROB ID)數目以及指派給在該排程器中之每一指令的一索引數目。
TW103109880A 2013-03-15 2014-03-17 非對稱執行單元之有效排程的方法與設備 TWI517044B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361799062P 2013-03-15 2013-03-15
US14/107,116 US9632825B2 (en) 2013-03-15 2013-12-16 Method and apparatus for efficient scheduling for asymmetrical execution units

Publications (2)

Publication Number Publication Date
TW201506784A TW201506784A (zh) 2015-02-16
TWI517044B true TWI517044B (zh) 2016-01-11

Family

ID=51581196

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103109880A TWI517044B (zh) 2013-03-15 2014-03-17 非對稱執行單元之有效排程的方法與設備

Country Status (6)

Country Link
US (3) US9632825B2 (zh)
EP (1) EP2972844B1 (zh)
KR (2) KR101746018B1 (zh)
CN (1) CN105122211B (zh)
TW (1) TWI517044B (zh)
WO (1) WO2014152359A1 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
KR20150002319A (ko) * 2013-06-28 2015-01-07 삼성전자주식회사 비대칭형 클러스터 구조의 프로세서
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9367322B1 (en) 2015-07-27 2016-06-14 International Business Machines Corporation Age based fast instruction issue
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor
JP7032647B2 (ja) * 2018-04-17 2022-03-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11294678B2 (en) 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment
US11334384B2 (en) * 2019-12-10 2022-05-17 Advanced Micro Devices, Inc. Scheduler queue assignment burst mode
US11327766B2 (en) 2020-07-31 2022-05-10 International Business Machines Corporation Instruction dispatch routing
US11948000B2 (en) 2020-10-27 2024-04-02 Advanced Micro Devices, Inc. Gang scheduling for low-latency task synchronization
CN113778528B (zh) * 2021-09-13 2023-03-24 北京奕斯伟计算技术股份有限公司 指令发送方法、装置、电子设备及存储介质
KR102664020B1 (ko) * 2021-10-28 2024-05-08 연세대학교 산학협력단 분할 스케줄링을 이용한 테스트 시간 감소 방법 및 장치

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6140643A (ja) * 1984-07-31 1986-02-26 Hitachi Ltd システムの資源割当て制御方式
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
US5819088A (en) 1993-03-25 1998-10-06 Intel Corporation Method and apparatus for scheduling instructions for execution on a multi-issue architecture computer
US6948172B1 (en) 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
US5761476A (en) 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5911057A (en) 1995-12-19 1999-06-08 Texas Instruments Incorporated Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US5928356A (en) * 1997-10-11 1999-07-27 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for selectively controlling groups of registers
US6216215B1 (en) 1998-04-02 2001-04-10 Intel Corporation Method and apparatus for senior loads
JPH11338710A (ja) 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6490673B1 (en) 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
JP3842474B2 (ja) 1999-02-02 2006-11-08 株式会社ルネサステクノロジ データ処理装置
US6668316B1 (en) * 1999-02-17 2003-12-23 Elbrus International Limited Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
US6732220B2 (en) 1999-02-17 2004-05-04 Elbrus International Method for emulating hardware features of a foreign architecture in a host operating system environment
US6529928B1 (en) * 1999-03-23 2003-03-04 Silicon Graphics, Inc. Floating-point adder performing floating-point and integer operations
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US6728872B1 (en) 2000-02-04 2004-04-27 International Business Machines Corporation Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
US6944750B1 (en) * 2000-03-31 2005-09-13 Intel Corporation Pre-steering register renamed instructions to execution unit associated locations in instruction cache
US7310801B2 (en) * 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6704860B1 (en) 2000-07-26 2004-03-09 International Business Machines Corporation Data processing system and method for fetching instruction blocks in response to a detected block sequence
US7206925B1 (en) * 2000-08-18 2007-04-17 Sun Microsystems, Inc. Backing Register File for processors
US7757065B1 (en) 2000-11-09 2010-07-13 Intel Corporation Instruction segment recording scheme
US7092869B2 (en) 2001-11-14 2006-08-15 Ronald Hilton Memory address prediction under emulation
US7331040B2 (en) 2002-02-06 2008-02-12 Transitive Limted Condition code flag emulation for program code conversion
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7222218B2 (en) 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US6981083B2 (en) 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US7089374B2 (en) 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US20040268097A1 (en) * 2003-06-26 2004-12-30 International Business Machines Corporation Instruction sampling in a microprocessor
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7694304B2 (en) 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7243170B2 (en) 2003-11-24 2007-07-10 International Business Machines Corporation Method and circuit for reading and writing an instruction buffer
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US20050289530A1 (en) 2004-06-29 2005-12-29 Robison Arch D Scheduling of instructions in program compilation
US8044951B1 (en) * 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7050922B1 (en) 2005-01-14 2006-05-23 Agilent Technologies, Inc. Method for optimizing test order, and machine-readable media storing sequences of instructions to perform same
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7400548B2 (en) 2005-02-09 2008-07-15 International Business Machines Corporation Method for providing multiple reads/writes using a 2read/2write register file array
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US20060230243A1 (en) 2005-04-06 2006-10-12 Robert Cochran Cascaded snapshots
US20060230409A1 (en) 2005-04-07 2006-10-12 Matteo Frigo Multithreaded processor architecture with implicit granularity adaptation
US8010969B2 (en) 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US8423682B2 (en) 2005-12-30 2013-04-16 Intel Corporation Address space emulation
GB2435362B (en) 2006-02-20 2008-11-26 Cramer Systems Ltd Method of configuring devices in a telecommunications network
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7610571B2 (en) 2006-04-14 2009-10-27 Cadence Design Systems, Inc. Method and system for simulating state retention of an RTL design
CN100485636C (zh) 2006-04-24 2009-05-06 华为技术有限公司 一种基于模型驱动进行电信级业务开发的调试方法及装置
US8145882B1 (en) 2006-05-25 2012-03-27 Mips Technologies, Inc. Apparatus and method for processing template based user defined instructions
US8046775B2 (en) 2006-08-14 2011-10-25 Marvell World Trade Ltd. Event-based bandwidth allocation mode switching method and apparatus
TWI337495B (en) 2006-10-26 2011-02-11 Au Optronics Corp System and method for operation scheduling
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US7934179B2 (en) 2006-11-20 2011-04-26 Et International, Inc. Systems and methods for logic verification
TW200833002A (en) 2007-01-31 2008-08-01 Univ Nat Yunlin Sci & Tech Distributed switching circuit having fairness
US20080250227A1 (en) 2007-04-04 2008-10-09 Linderman Michael D General Purpose Multiprocessor Programming Apparatus And Method
US7716183B2 (en) 2007-04-11 2010-05-11 Dot Hill Systems Corporation Snapshot preserved data cloning
US9292436B2 (en) 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
US7937568B2 (en) 2007-07-11 2011-05-03 International Business Machines Corporation Adaptive execution cycle control method for enhanced instruction throughput
US8245232B2 (en) 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US7809925B2 (en) 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
US20090165007A1 (en) 2007-12-19 2009-06-25 Microsoft Corporation Task-level thread scheduling and resource allocation
US7865770B2 (en) * 2008-01-10 2011-01-04 Advanced Micro Devices, Inc. Processor including efficient signature generation for logic error protection
US7937561B2 (en) * 2008-04-03 2011-05-03 Via Technologies, Inc. Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
TWI364703B (en) 2008-05-26 2012-05-21 Faraday Tech Corp Processor and early execution method of data load thereof
JP5733860B2 (ja) 2008-07-10 2015-06-10 ロケティック テクノロジーズ リミテッド 依存問題の効率的並列計算
US9244732B2 (en) 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US7941616B2 (en) 2008-10-21 2011-05-10 Microsoft Corporation System to reduce interference in concurrent programs
EP2351325B1 (en) 2008-10-30 2018-09-26 Nokia Technologies Oy Method and apparatus for interleaving a data block
US8074060B2 (en) * 2008-11-25 2011-12-06 Via Technologies, Inc. Out-of-order execution microprocessor that selectively initiates instruction retirement early
US8200949B1 (en) 2008-12-09 2012-06-12 Nvidia Corporation Policy based allocation of register file cache to threads in multi-threaded processor
US8312268B2 (en) 2008-12-12 2012-11-13 International Business Machines Corporation Virtual machine
US20100205603A1 (en) 2009-02-09 2010-08-12 Unisys Corporation Scheduling and dispatching tasks in an emulated operating system
US8805788B2 (en) 2009-05-04 2014-08-12 Moka5, Inc. Transactional virtual disk with differential snapshots
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
US8533437B2 (en) * 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US9122487B2 (en) 2009-06-23 2015-09-01 Oracle America, Inc. System and method for balancing instruction loads between multiple execution units using assignment history
US8539486B2 (en) 2009-07-17 2013-09-17 International Business Machines Corporation Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode
US8695002B2 (en) 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
US8312258B2 (en) 2010-07-22 2012-11-13 Intel Corporation Providing platform independent memory logic
US9201801B2 (en) * 2010-09-15 2015-12-01 International Business Machines Corporation Computing device with asynchronous auxiliary execution unit
US8677355B2 (en) 2010-12-17 2014-03-18 Microsoft Corporation Virtual machine branching and parallel execution
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US20120254592A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
US8930432B2 (en) * 2011-08-04 2015-01-06 International Business Machines Corporation Floating point execution unit with fixed point functionality
KR20130119285A (ko) * 2012-04-23 2013-10-31 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 할당 장치 및 그 방법
US8904100B2 (en) * 2012-06-11 2014-12-02 International Business Machines Corporation Process identifier-based cache data transfer
US9195506B2 (en) 2012-12-21 2015-11-24 International Business Machines Corporation Processor provisioning by a middleware processing system for a plurality of logical processor partitions
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150941A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing blocks of instructions using a microprocessor architecture having a register view, source view, instruction view, and a plurality of register templates
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots

Also Published As

Publication number Publication date
US20180232237A1 (en) 2018-08-16
EP2972844B1 (en) 2021-03-10
KR101746018B1 (ko) 2017-06-13
CN105122211B (zh) 2018-10-12
EP2972844A4 (en) 2017-04-19
US9632825B2 (en) 2017-04-25
KR20170066695A (ko) 2017-06-14
US20170199744A1 (en) 2017-07-13
CN105122211A (zh) 2015-12-02
KR102074961B1 (ko) 2020-02-10
TW201506784A (zh) 2015-02-16
US10552163B2 (en) 2020-02-04
EP2972844A1 (en) 2016-01-20
US9965285B2 (en) 2018-05-08
WO2014152359A1 (en) 2014-09-25
KR20150132356A (ko) 2015-11-25
US20140373022A1 (en) 2014-12-18

Similar Documents

Publication Publication Date Title
TWI517044B (zh) 非對稱執行單元之有效排程的方法與設備
US10467010B2 (en) Method and apparatus for nearest potential store tagging
TWI543075B (zh) 使用動態埠重映射以避免指令排程期間閉鎖的方法與設備
US10289419B2 (en) Method and apparatus for sorting elements in hardware structures
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
CN104615409B (zh) 跳越mov指令的处理器和由该处理器使用的方法
US20170344378A1 (en) Managing an effective address table in a multi-slice processor
US9588769B2 (en) Processor that leapfrogs MOV instructions
US10606602B2 (en) Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees