TWI514267B - 用於多股亂序處理器中之指令排程的方法及裝置與系統 - Google Patents

用於多股亂序處理器中之指令排程的方法及裝置與系統 Download PDF

Info

Publication number
TWI514267B
TWI514267B TW101123731A TW101123731A TWI514267B TW I514267 B TWI514267 B TW I514267B TW 101123731 A TW101123731 A TW 101123731A TW 101123731 A TW101123731 A TW 101123731A TW I514267 B TWI514267 B TW I514267B
Authority
TW
Taiwan
Prior art keywords
instruction
interdependent
instructions
bit
operand
Prior art date
Application number
TW101123731A
Other languages
English (en)
Other versions
TW201312460A (zh
Inventor
鮑里斯 巴巴揚
凡拉狄米爾 潘高夫斯基
亞歷山大 巴圖奏夫
瑟吉 席許羅夫
亞歷克塞 席夫特索夫
尼可萊 科薩列夫
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 TW201312460A publication Critical patent/TW201312460A/zh
Application granted granted Critical
Publication of TWI514267B publication Critical patent/TWI514267B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

用於多股亂序處理器中之指令排程的方法及裝置與系統 著作權聲明
本專利文件之部分揭示內容含有受著作權保護之材料。當本專利出現在專利商標局的專利檔案或記錄時,著作權擁有者並不反對任何人複製專利文件或專利揭示文,若不然則保有全部著作權權利。
發明領域
實施例大致上係有關於計算領域,更明確言之,係有關用於多股亂序處理器中之指令排程的方法、系統、及裝置。
發明背景
發明背景章節所討論的主題不應只因係在背景章節敘述即推定為先前技術。同理,背景章節述及的或與背景章節之主題相聯結的問題不應假設為於先前技術中先前已經認知的問題。背景章節之主題僅只表示不同辦法,該等問題本身也係相對應於所揭示的實施例。
於電腦處理器內部,諸如中央處理單元(CPU),針對CPU須執行各項操作或階段來從事任一項有利工作。於CPU內部,指令提取構思係相對應於從通訊式整合CPU的程式記憶體中提取指令之操作,使得可進行額外處理(例如指令解碼、指令執行、及結果的寫回)。此等操作各自耗用時間或CPU時鐘週期,因此,妨礙處理器的速度及效率。
管線化與超尺規CPU處理的構思如此體現技藝界已知的在單一處理器或處理器核心內部之指令層面並列性(ILP)來許可比較於任何給定時鐘速率為可能的更快速的CPU之指令產出量。用來達成增加並列性的最簡單方法中之一者係在前一個指令完成執行前,開始指令提取與解碼的第一步驟,結果導致用於處理的指令之管線。並列性增高也可經由多功能單元達成來同時執行多重「提取」操作,然後置於管線,使得一指令經常性地可用於一執行週期。藉此方式,執行一指令的機會較不可能因必須等持指令被提取而浪費掉。
隨著功能單元的複雜度及冗餘增高,管理增高的CPU之指令層面並列性的額外負擔之處罰也增加。當於一連續串列週期中,處理器執行簡單提取、解碼、執行、及寫回週期時,無需擔憂對前一項或後一項敘述的依賴性。所要求的任何改變將已經處理(例如執行與回寫),因此直到若非如此則將為依賴性的指令尋找該資料為止,任何資料依賴性皆已被滿足。舉例言之,若第二指令係取決於第一指令的結果,則確定該結果係於簡單且循序提取、解碼、執行、及寫回週期為可資利用,原因在於直到前一個指令被「執行」,造成改變,且「寫回」而造成該改變為可資利用為止,後一個指令無法被「提取」。
如此,可明白瞭解於CPU內部體現指令層面並列性造成下述風險:在第一指令被執行且被「回寫」之前,接續其後的指令可能被「提取」且呈示用於執行。若第二指令 係依賴第一指令,則違反依賴性。除了前述資料依賴性實例之外,也存在有其它依賴性型別,諸如反依賴性、控制依賴性、及輸出依賴性。
計分板體現排程機制,藉此機制可避免違反依賴性(例如透過等待、拖延等),否則將導致「風險」或不正確處理的資料、指令等。
先前已知機轉許可CPU的指令層面並列性,但要求提取係有序執行,因此,指令層面並列性的程序係受限制。即便超尺規處理器許可亂序執行,指令層面並列性的程序仍然維持限於有序提取機構及相對應的有限排程窗。
因此業界現況從如此處描述之用於多股亂序處理器中之指令排程的技術、系統、方法、及裝置可獲益。
依據本發明之一實施例,係特地提出一種系統包含一顯示器;一二進制翻譯器產生一串列程式列表之一多股表示型態,該所產生的多股表示型態具有多個相互依賴性股,該等多個相互依賴性股各自係包含運算元同步化位元;一亂序指令提取單元取回該等多個相互依賴性股用於執行;及一指令排程單元至少部分基於該等運算元同步化位元而排程該等多個相互依賴性股之執行。
圖式簡單說明
實施例係舉例說明但非限制性,參考後文詳細說明部分當結合附圖考慮時將更完整明瞭,附圖中: 第1圖闡釋於缺指令層面並列性的中央處理單元(CPU) 的指令提取單元中,先前技術提取操作之架構實例;第2A圖闡釋依據可操作之實施例,用於多股亂序處理器中指令排程之架構實例;第2B圖闡釋依據可操作之實施例一多股亂序處理器之架構實例;第3圖闡釋依據可操作之實施例一具有同步化位元之指令的資料結構及指令格式實例;第4圖為流程圖例示說明之依據所揭示之實施例用於多股亂序處理器中指令排程之方法;第5圖闡釋依據一個實施例,於電腦系統之形式實例中具有多股亂序處理器的機器之圖解代表圖;第6圖闡釋依據一個實施例一電腦系統之方塊圖;第7圖闡釋依據一個實施例一電腦系統之方塊圖;及第8圖闡釋依據一個實施例一電腦系統之方塊圖。
詳細說明
此處描述用於多股亂序處理器中之指令排程的系統、方法及裝置。舉例言之,所揭示之機構包括從一亂序代碼提取機構中之多個相互依賴性股,交插或編織其中具有指令的「股」(也稱作為「條帶」)來形成單一程式片段。
舉例言之,依據一個實施例,一種用以排程於一多股亂序處理器中之指令之系統包括:一二進制翻譯器來產生一串列程式列表之一多股表示型態,其中該所產生的多股表示型態包括多個相互依賴性股,該等多個相互依賴性股 各自係包含運算元同步化位元。於此一實施例中,該系統係進一步包括一亂序指令提取單元來取回該等多個相互依賴性股用於執行,及一指令排程單元來至少部分基於該等運算元同步化位元而排程該等多個相互依賴性股之執行。此種系統可進一步包括例如,用以並列執行多個經提取的相互依賴性股之多個執行單元,接受適當排程來消除該等多個股中之任一者間之依賴性。
於另一個實施例中,一種用以排程於一多股亂序處理器中之指令之裝置包括:一亂序指令提取單元來從一串列程式列表之一多股表示型態中取回多個相互依賴性指令用於執行;一指令排程單元來至少部分基於在該等多個相互依賴性指令中之各者內部已被編碼的該等運算元同步化位元而排程該等多個相互依賴性指令之執行;及多個執行單元來並列地執行該等多個相互依賴性指令之至少一子集。
於後文詳細說明部分中,陳述無數特定細節諸如特定系統、語言、組件等之實例,以供徹底瞭解各個實施例。但熟諳技藝人士顯然易知此等特定細節無需採用來實施此處揭示之實施例。於其它情況下,眾所周知的材料及方法不曾以細節描述以免不必要地遮掩所揭示的實施例。
除了附圖中闡釋的及此處描述的各個硬體組件外,實施例更進一步包括各項操作,容後詳述。依據此等實施例描述的操作可藉硬體組件執行或可於機器可執行指令中具體實施,可用來產生以該等指令程式規劃來執行操作的一通用或特用處理器。另外,操作可由硬體與軟體之組合執 行。
實施例也係有關於一種執行此處揭示之操作的裝置。此種裝置可特別地組構用於所要求的目的,或可為通用電腦藉儲存於該電腦內的電腦程式而激勵或重新組配。此種電腦程式可儲存於電腦可讀取儲存媒體,諸如但非限於任何型別的碟片包括,軟碟、光碟、CD-ROM、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、EPROM、EEPROM、磁卡或光卡、或適用以儲存電子指令的任何型別的媒體,各自係耦接至一電腦系統匯流排。
此處呈示的演算法及顯示器並非本質上有關任何特定電腦或其它裝置。多個通用系統可用於依據此處教示的程式,或證實可方便地建構更加特化裝置用來執行所要求的方法步驟。多個系統所要求的結構將出現於後文詳細說明部分。此外,實施例並非就任何特定程式語言描述。須瞭解多個程式語言可用來體現如此處描述的實施例之教示。
實施例可提供為電腦程式產品或軟體,可包括其上儲存有指令的機器可讀取媒體,該等指令可用來程式規劃一電腦系統(或其它電子裝置)來執行依據所揭示實施例之處理。機器可讀取媒體包括用來以藉機器(例如電腦)可讀取形式儲存或傳遞資訊的任何機構。舉例言之,機器可讀取(或電腦可讀取)媒體包括機器(或電腦)可讀取儲存媒體(例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等)、機器(或電腦)可讀取儲存媒體(電氣、光學、聲學)等。
所揭示實施例中之任一者可單獨使用或以任一項組合一起使用。雖然多個實施例受習知技術及辦法之缺失所部分激勵,但其中若干者係經描述或暗示落入於本說明書之範圍內,該等實施例並非必然解決任何此等缺失,反而可能只解決部分缺失,未解決任何缺失,或針對非直接討論的不同缺失及問題。
第1圖闡釋於缺指令層面並列性的中央處理單元(CPU)的指令提取單元120中之先前技術提取操作的架構100實例。
闡釋一種指令提取單元120取一程式計數器115,且將該程式計數器透過一互連記憶體匯流排110呈示給一記憶體105作為一位址116。該呈示於記憶體105上觸發/傳訊一讀取週期117,且將從記憶體105輸出的資料118閂鎖至該指令暫存器125。
指令提取單元120更進一步處理該程式計數器115的增量而獲得下個指令(透過加法器130),及加上一相關跳躍位址(透過加法器130)用於程式計數器115的相關跳躍,或以一分支位址選擇130且取代直接分支。
程式計數器115經常性有序地拉挽下個指令。可利用更複雜的管線化緩衝器或甚至超級規模架構可用來提供此種提取操作的冗餘,雖言如此,先前技術架構100受基於有序提取的機構所限,只要程式計數器115經常性地提取增量的「下個指令」即可。
第2A圖闡釋依據可操作實施例,用以於多股亂序處理 器中之指令排程的架構200之實例。更明確言之,資料依賴性處理架構200之實例係以額外細節顯示,其中先前已知架構的有序提取及亂序執行能力係被多股亂序處理器架構勝過,後者改良指令層面並列性且相對應地擴大總指令排程窗。
依據一個實施例,描述於藉二進制翻譯器(BT)從該原先串列程序所產生的多股表示型態299中,用以編碼與檢測指令間的暫存器依賴性230及225之軟體/硬體組合解決方案。多股表示型態299提供克服前述有序提取限制的能力來提供增強的指令層面並列性。
一股(例如205、210、及215)係主要為彼此資料依賴性的一指令序列,係在程式編譯時間由二進制翻譯器所排列。如圖所示,股205包括指令220、221、222、及223。股210包括指令211、212、213、及250。股215包括指令224、227、226、及228。於股205之指令222闡釋的且表示為「add r2=0x1,r3」的真正依賴性230係使用暫存器r2的可用位元消除。於股215之指令224闡釋的且表示為「dir r0=r4,0x1」的輸出依賴性225係使用暫存器r0的忙碌位元消除。依據如此處描述的結合此種同步化位元(SB)的指令格式,於股215之指令226闡釋的且表示為「sub r0=sr1,0x2」的反依賴性235係使用附屬於暫存器r1的同步化位元消除。具有同步化位元之指令格式係以額外細節說明於第3圖之討論。
第2B圖闡釋依據可操作實施例,多股亂序處理器298之架構201實例。於一個實施例中,多股亂序處理器298係 為機器其並列地處理多股205、210、215(及指令指標器),使得來自不同股的指令(例如220、211、224等)係不依照程式順序處理。此外,亂序指令提取單元297至少部分地亂序取回或提取相互依賴性指令、股、條帶等。舉例言之,相互依賴性指令可以串列順序儲存,而亂序指令提取單元297使得相互依賴性指令係以與其被儲存的順序相異的順序被提取及取回用於執行。
依據一個實施例,多股亂序處理器298係由數個叢集260、261、262組成,各個叢集轉成透過針對個別叢集的一執行單元265集合而處理部分股205、210、215。一個叢集產生的結果270(例如來自叢集260的結果270)可透過一導線集合,稱作為叢集間資料網路285而傳輸給另一叢集(例如傳輸給261或262)。各個叢集261-262具有指令排程器單元(ISU)266,ISU 266係針對正確地處理相同之指令間的資料依賴性(例如股215之輸出依賴性225)以及不同股間之依賴性,稱作交叉股資料依賴性(例如諸如依賴性230及235)。於各個ISU 266內部為計分板280及標籤比較邏輯281。額外地陳述各個所闡釋的叢集261-262內部之暫存器290。
股累積器271、272、273、274、275及276結合共用暫存器290操作。各個股累積器271-276係只專用於一股,且係藉股識別符(股ID)所定址。舉例言之,叢集260內部的股205可透過股205的股ID 205A而與股累積器271獨特地關聯。
依據所揭示之實施例,同步化位元(SB)為附屬於一指 令之運算元位址的一位元,來支援依賴性指令間之資料反依賴性(例如第2A圖之反依賴性指令226)的正確處置。依據所揭示之實施例,同步化位元無法附屬於指向股累積器271-276的一運算元位址。於此一實施例中,一法則可體現一限制,或硬體邏輯可執行此種限制。
通過暫存器290而與另一指令具資料依賴性的一指令係稱作為消費者指令或該暫存器之消費者。舉例言之,依賴性225及230闡釋透過一暫存器290的依賴性。消除透過一暫存器290的資料依賴性如此許可消費者的簽發之該指令係稱作為生產者指令或該暫存器290的生產者。若其運算元的全部資料依賴性皆已消除,則一消費者被視為準備就緒。相對於生產者,消費者可位在相同股(例如依賴性225)以及在相異股(例如依賴性230)。
計分板280為硬體表,含有於體現多股亂序處理器298的機器中各個暫存器的即時狀態,各個暫存器對其消費者提供、指示、或暫存該個別暫存器的可用性。於一個實施例中,計分板280聯合標籤比較邏輯281操作。如圖所示,計分板280及標籤比較邏輯281係駐在各個叢集260-262的各個ISU 266內部。
依據一個實施例,股205、210、215經由暫存器之同步化係透過基於股的架構200執行,係由軟體(SW)及硬體(HW)組件二者組成,據此操作來體現所揭示的方法。於一個實施例中,軟體組件包括修正的指令集架構(ISA),其中具有功能來將同步化位元加至運算元,且其中更進一步具有功 能來在編譯時間指令之配置成股205、210、215。於一個實施例中,在編譯時間指令之配置成為股205、210、215係藉二進制翻譯器實施。
多股亂序處理器298的亂序指令提取單元297藉下述方式擴大處理器298的可用排程窗大小超越先前已知機構,例如許可未藉分支預測演算法正確地預測之一關鍵性指令的取回(提取),而無需提取全部循序地排在先前的指令。舉例言之,有序提取機構限制CPU的排程窗大小,原因在於關鍵性指令無法提取入CPU,因此直到在該執行程式中的先前指令之完整連續序列也被提取且儲存於CPU的緩衝器或佇列為止不可視為執行。因此有序提取要求在針對該執行程式的一指令序列中之全部控制流的改變可由分支預測機制正確地預測,或面對處罰,表現為無效率。如此,具有有序提取來探索指令層面並列性(ILP)的CPU之能力係受下列因素所限:分支預測準確性、CPU緩衝器或佇列的大小、及提取連續指令序列之速度。因此由一執行程式的流程控制所觸發的分支預測錯誤導致無效率瓶頸。
體現亂序提取(例如透過亂序指令提取單元297)許可一指令被提取至多股亂序處理器298,且考慮比在該程式的指令循序列表中的前一個指令更早執行。因此無需延遲程式執行,同時於該執行程式中領先該需要指令的先前指令的整個連續序列也被提取且儲存於CPU的緩衝器或佇列,諸如體現有序指令提取之先前已知機構所需。又復,多股亂序處理器298無需有夠大的緩衝器來保有該序列中的全部 先前指令,分支預測演算法無需正確地預測在該序列中的各個分支。因此亂序指令提取單元297加大多股亂序處理器298的排程窗大小,如此,導致指令層面並列性(ILP)的更大量探索。
依據一個實施例,多股亂序處理器298之亂序提取架構組成一多股架構,其中該編譯器將在指令層面之一程式分裂成二或多股或條帶,使得各股具有一相對應的硬體程式計數器。雖然各個程式計數器係串列地執行提取,但就一程式的串列列表或程式所提供的指令順序而言,同時地且彼此獨立地操作的數個程式計數器可亂序地提取指令。若編譯器在該等股中之一者的起點放置一關鍵指令,則該指令將可能被提取且考慮比其它股中位在深處的而在原先程式中係在該關鍵指令前方的的指令更早執行。
第3圖闡釋依據可操作的實施例,具有同步化位元(315、325、及335)之一指令的資料結構及指令格式300之一實例。
為了使得股205、210、215透過暫存器290而同步化,一分開位元,更明確言之同步化位元或「SB」係如圖所示附屬於該物件代碼的各個來源運算元及目的地運算元。如此所得格式包括股301內部之一指令350實例,具有運算碼305、來源運算元1位址310、針對來源運算元1之一同步化位元315、來源運算元2位址320、針對來源運算元2之一同步化位元325、目的地運算元位址330、及針對該目的地運算元之一同步化位元335。如圖所示,多個指令350...359可 存在於該股301內部,各自結合有關指令350詳細闡釋的相似格式。
於一個實施例中,資料反依賴性(例如第2A圖的反依賴性235)係明確地編碼在使用暫存器290內之一值的一指令與以一新值更新該暫存器的一第二指令間。舉例言之,二進制翻譯器設定一生產者來源運算元的一同步化位元,指示該生產者來源運算元係最後使用該資料項而造成反依賴性。二進制翻譯器更進一步設定該消費者目的地運算元之該同步化位元,指示該指令須等待直到先前資料項的全部使用皆已完成為止,如此指導該硬體排程邏輯來在該生產者之後執行該消費者。
當產生第2A圖之股301及205、210、215時,二進制翻譯器遵守若干習慣或法則,保證藉該硬體排程邏輯對股做正確排程。
依據一個實施例:一第一法則禁止屬於不同股的指令間之競爭狀況產生相同目的地暫存器;及一第二法則禁止禁止屬於不同股的指令間之競爭狀況讀取具有一同步化位元的相同來源暫存器。
於一個實施例中,為了遵守前兩個法則,二進制翻譯器確保全部此等指令被要求分派給同一股,或此等指令的執行順序須經由額外資料或控制依賴性而明確地設定。取決於程式演算法,有些情況可視為或可不視為競爭狀況處理。舉例言之,當程式演算法載明在兩個不同股內部具有相同來源運算元位址的兩個消費者係依賴在另一股內部具 有相同目的地運算元位址的兩個相對應生產者時,該二消費者須藉該二進制翻譯器禁止。若依據該程式演算法該等消費者係依賴同一個生產者,則無競爭狀況。
依據一個實施例:一第三法則禁止任何指令具有一相同來源及目的地運算元位址,該等位址各自具有一同步化位元。於此一實施例中,二進制翻譯器禁止第三法則的情況,原因在於其導致無法由排程硬體處置的模稜兩可的情況。
於一個實施例中,硬體組件體現前述第2B圖之計分板280,且更進一步體現標籤比較邏輯281。計分板280許可針對一指令之狀態、檢查、決定及運算元準備就緒的評估,如此消除資料依賴性。依據一個實施例,計分板280及標籤比較邏輯281係經組配來如此處所述,依據多股亂序處理器298的體現,允許亂序地提取、簽發、與執行來自不同股301(及第2A圖之205、210、215)的指令。於此一實施例中,計分板280儲存於多股亂序處理器298中各個暫存器290及股累積器271-276的狀態位元,每個指令詢查計分板280來決定其要求的運算元是否準備就緒。於一個實施例中,針對各個暫存器有兩個狀態位元:一可用位元及一忙碌位元。於此一實施例中,股累積器271-276各自只有一個狀態位元,標示為忙碌位元。依據一個實施例,股累積器271-276的可用位元係預先經初始化(「設定」作為內設),當設定時,指示暫存器值已經藉另一指令而寫至一暫存器檔案(RF)且可供讀取之用。忙碌位元若設定時,指示一指令係在處理 器管線中更新已經由指令排程器單元266簽發的但尚未寫入新暫存器值的一暫存器值。於一個實施例中,在簽發該指令後,計分板之狀態位元係經更新。
若一指令已經被識別為準備就緒且係從指令排程器單元266簽發,則指令排程器單元266針對具有同步化位元(315、325及335)的目的地運算元及來源運算元設定忙碌位元。若一指令完成其執行且將目的地暫存器寫入該暫存器檔案,則相對應的可用位元係經設定而忙碌位元係經清除。附屬於指令350的來源運算元位址(310或320)之一同步化位元(315或325)在從該暫存器檔案讀取運算元值後,兩個狀態位元須被清除。附屬於指令350之該目的地運算元位址330的一同步化位元335指示直到兩個指令串流器皆被清除為止不應簽發指令。具有相同來源及目的地運算元位址且二者皆有同步化位元的一指令係依據前述第三法則而被禁止,原因在於指令350無法簽發,要求相對應的位元被同時設定與清除而無模稜兩可的結果。
依據一個實施例,如第2B圖所示,針對駐在一指令排程器單元266的指令350之運算元,藉檢查計分板280的狀態位元,資料依賴性係經消除,如此允許簽發一指令。
依據一個實施例,在將產生的暫存器值寫入暫存器檔案後,藉設定相對應於生產者的目的地運算元之可用位元及清除忙碌位元,消除真正依賴性(例如230),如此允許欲簽發的指令。如此,若消費者的來源運算元具有其可用位元經設定及忙碌位元經清除,則消除依賴性。
依據一個實施例,為了消除反依賴性(例如235),使用在程式編譯時間,藉二進制翻譯器附屬至生產者的來源運算元及消費者的目的地運算元之同步化位元。藉該生產者從具有一同步化位元的該來源運算元之暫存器檔案讀取該暫存器值後,運算元的相對應可用位元及忙碌位元係經清除。如此,若消費者的具有同步化位元之目的地運算元係具有其可用位元及忙碌位元經清除,則依賴性係經消除。
依據一個實施例,為了消除輸出依賴性(例如225),相對應於生產者的目的地運算元之該忙碌位元係恰在簽發指令之後即刻經設定。如此,若相對應於消費者的目的地運算元之該忙碌位元係經清除,則依賴性係經消除。在指令配置於指令排程器單元266期間,各個指令只有一次讀取計分板280狀態來決定每個運算元的狀態位元。
依據一個實施例,標籤比較邏輯281監測由指令所產生的暫存器值,且檢測在指令排程器單元266中等待的指令之準備就緒情況。在消費者已經讀取計分板280,但其運算元尚未被識別為準備就緒(例如一生產者尚未被簽發或完成,因而尚未更新相對應的狀態位元)之後,其準備就緒情況將藉標籤比較邏輯281檢測,標籤比較邏輯281監測由指令所產生的暫存器值。
依據一個實施例,標籤比較邏輯281體現內容可定址記憶體(CAM),該CAM比較被執行的生產者之運算元位址與駐在該指令排程器單元266中的消費者的運算元位址。CAM執行四個型別的運算元位址比較:1)生產者的目的地運算 元與消費者的來源運算元;2)生產者的具有同步化位元(315、325)之來源位址(310、320)與消費者的具有同步化位元(335)之目的地運算元位址(330);3)生產者的目的地運算元位址(330)與消費者的目的地運算元位址(330);及4)生產者的具有同步化位元(315、325)之來源位址(310、320)與消費者的來源位址(310、320)。依據一個實施例,唯有當生產者及消費者皆屬同一股(例如在一個股內部的兩個指令,諸如股301實例內部的指令350及359)時,執行比較型別3)及4)。
於一個實施例中,若消費者及生產者(例如指令350及359)也屬於同一股301時,比較股累積器271-276之運算元位址。於一個實施例中,標籤比較邏輯281體現的CAM不僅係負責喚醒駐在指令排程器單元266的依賴型消費者,如此替代可用位元的功能,同時CAM額外負責於指令排程器單元266中拖延消費者,如此替代忙碌位元的功能。要求消費者的來源運算元位址(310或320)與另一消費者的來源運算元位址(310或320)之比較係屬於同一股執行且具有同步化位元(315、325),若消費者從繞道導線讀取來源運算元值,則識別相關生產者,且消除真正依賴性(例如230)。於此一實施例中,CAM執行比較或二進制翻譯器須適當配置相對應的股,如此延遲第二消費者以防此種情況。
因CPU架構發展趨勢朝向軟體/硬體共同設計機器移位,利用二進制翻譯能力,且藉詢查比較先前已知架構所支援的更寬廣指令排程,允許更進一步深入探討指令層面 並列性從結合的靜態指令排程可獲益更有效的基於ILP之架構,來比較基於例如Tomasulo氏演算法的動態指令排程,提供更有效地利用可用執行單元。
一種辦法係提供更大型指令窗,諸如藉此處所述技術及方法而變成作動的辦法,係將初始程式控制流程圖分裂成片段(例如股或條帶,如第2A圖於205、210、215闡釋),在多個處理節點(例如呈個別執行緒於例如多尺規架構)諸如第2B圖闡釋的叢集260-262上執行。可能數個股(條帶)占有相同叢集260-262。
為了支援執行緒間之資料同步化,各個執行緒係以可產生的暫存器列表註釋。此一列表係用來復置相對應暫存器290的計分板280狀態,故使得消費者為了欲產生的此等暫存器290而等待、拖延、或延遲。另一個辦法暗示從硬體動態排程器至軟體的指令排程功能之部分或完全委派,如此簡化排程硬體,且提供更有效利用多重執行通道。但當先前已知機構要求維持有序提取、解碼、及暫存器重新命名,其限制在與亂序超尺規機器的相同層面的指令窗大小,此處所述方法及技術藉完全採用亂序指令提取單元297而許可更大的排程窗,因而克服先前限制。
不似先前已知之機構,描述使用特殊同步化操作之寬廣指令串流的同步化,於該處各個串流係藉單晶片多處理器系統之一分開處理器執行,此處所述機構及技術針對相互依賴性的同步化,提供一個處理器核心內部的一個指令寬廣串流(股、條帶),涉及附屬於指令運算元位址的同步化 位元。不似先前已知之多尺規架構,此處所述機構及技術在單一指令層面維持程式順序,而非基於整個股。由於在單一指令層面的程式順序係經維持,暫存器同步化資訊係以與程式順序不同的順序提取,如此提供於多股中將來自單一程式片段的指令交插的能力。如此其中具有指令的股(或「條帶」)係經交插、交織、或編織,而於亂序代碼提取機構中從多個相互依賴性股形成單一程式片段。先前已知機構假設執行緒係以程式順序產生,新產生的執行緒接收需由先前執行緒提供的暫存器列表。相反地,不存在有此種需求來實施所此處陳述的所揭示實施例。且不似先前已知機構,所揭示的機構及技術不要求有序提取,反而相反地,所揭示的機構採用亂序代碼提取,如此許可更大的亂序排程窗,因而許可遠更深的指令層面並列性(ILP)。
第4圖為流程圖例示說明依據所揭示之實施例,一種於多股亂序處理器中之指令排程方法。方法400可藉處理邏輯執行,處理邏輯可包括硬體(例如電路、專用邏輯、可程式規劃邏輯、微代碼等)、軟體(例如在處理裝置上跑來執行此處所述方法及操作的指令,諸如於多股亂序處理器中之指令排程來提升ILP)。於一個實施例中,方法400係藉積體電路或其中具有積體電路的系統執行,諸如第2B圖闡釋之多股亂序處理器298。依據某些實施例,方法400之若干方塊及/或操作為選擇性。呈示的方塊編碼係為求清晰,而非意圖規定其中各個方塊須出現的操作順序。
方法400係始於處理邏輯,用以提取用以執行的多個相 互依賴性指令、股、或條帶,其中該等多個相互依賴性指令、股、或條帶係亂序提取(方塊405)。
於方塊410,處理邏輯決定第一相互依賴性指令與第二相互依賴性指令間存在有依賴性。
於方塊415,針對與該第一及第二相互依賴性指令相聯結的運算元,處理邏輯藉檢查計分板中的狀態位元而消除資料依賴性。
於方塊420,在寫入所產生的暫存器值後,藉設定相對應於生產者的一目的地運算元之可用位元及清除忙碌位元,處理邏輯消除真正依賴性。
於方塊425,藉由對具有同步化位元的來源運算元讀取暫存器值,及對該來源運算元清除相對應的可用位元及忙碌位元,處理邏輯消除反依賴性。
於方塊430,在簽發指令後即刻,藉設定相對應於生產者的該目的地運算元之忙碌位元,處理邏輯消除一輸出依賴性。
於方塊435,處理邏輯監測由指令產生的暫存器值。
於方塊440,處理邏輯基於計分板狀態,檢測等待在指令排程器單元中的指令之準備就緒。
於方塊445,處理邏輯比較被執行的生產者之運算元位址與駐在指令排程器單元的消費者之運算元位址。
於方塊450,處理邏輯將接受檢測運算元之準備就緒及比較的該等用以執行之多個相互依賴性指令排程。
於方塊455,處理邏輯執行並列地接受排程之該等多個 相互依賴性指令之至少一子集。
第5圖例示說明依據一個實施例,在一電腦系統之形式實例中具有多股亂序處理器之一機器500的圖解代表圖,於該機器中可執行一指令集,用以使得該機器/電腦系統500執行此處討論之方法中之一或多者。於其它實施例中,該機器可連結(例如網路連結)至區域網路(LAN)、企業內聯網路、企業外聯網路、或網際網路。該機器可於客戶端-伺服器網路環境中之伺服器或客戶機的容量操作,作為同層級(或分散式)網路環境的一同級機器,作為應需伺服環境內部的伺服器或串列伺服器。該機器之某些實施例可呈下列形式:個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理器(PDA)、小區式電話、網路設備、伺服器、網路路由器、開關或橋接器、計算系統、或任何機器其可執行一指令集(串列或其它)載明欲由該機器採行的動作。又復,雖然只例示說明單一機器,「機器」一詞也須取作為含括機器(例如電腦)的任何集合,該等機器個別地或聯合地執行一指令集(或多個集合)來執行此處討論的方法中之任一者或多者。
電腦系統500之實例包括一多股亂序處理器502、一主記憶體504(例如唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)諸如同步DRAM(SDRAM)或藍巴斯(Rambus)DRAM(RDRAM)等、靜態記憶體諸如快閃記憶體、靜態隨機存取記憶體(SRAM)、依電性但高資料率RAM等)、及一輔助記憶體518(例如持久性儲存裝置包括硬碟機),其係透過一匯流排530彼此通訊。主記憶體504包括二 進制翻譯器524來從一原先串列程式列表中提供一程式表示型態用以藉該多股亂序處理器502處理。二進制翻譯器524結合該多股亂序處理器502的亂序提取單元525及處理邏輯526操作來執行此處討論之方法。
多股亂序處理器502結合一或多個通用處理裝置諸如微處理器、中央處理單元或其類的能力。多股亂序處理器502係經組配來透過亂序提取單元525而提取指令股,及透過處理邏輯526執行所提取的指令股來執行此處討論之操作及方法。
電腦系統500可進一步包括一網路介面卡508。電腦系統500也可包括一使用者介面510(諸如視訊顯示單元、液晶顯示器(LCD)、或陰極射線管(CRT))、一文數輸入裝置512(例如鍵盤)、一游標控制裝置514(例如滑鼠)、及一信號產生裝置516(例如整合式揚聲器)。電腦系統500可更進一步包括周邊裝置536(例如無線或有線通訊裝置、記憶體裝置、儲存裝置、音訊處理裝置、視訊處理裝置、等)。
輔助記憶體518可包括非過渡機器可讀取或電腦可讀取儲存媒體531,其上儲存一或多個指令集(例如軟體522)具體實施此處所述方法或功能中之任一者或多者。於藉電腦系統500執行該等指令期間,軟體522也可完全地或至少部分地駐在主記憶體504內部及/或多股亂序處理器502內部,主記憶體504及多股亂序處理器502也組成機器可讀取媒體。軟體522可進一步透過網路介面卡508而於網路520上傳輸或接收。
現在參考第6圖,顯示依據本發明之一個實施例系統600之方塊圖。系統600可包括一或多個處理器610、615,其係耦接至圖形記憶體控制器中樞器(GMCH)620。額外處理器615的選擇性性質係以虛線標示於第6圖。
各個處理器610、615可為電腦系統500的某個版本。但須注意整合型圖形邏輯及整合型記憶體控制單元不可能存在於處理器610、615。第6圖例示說明GMCH 620可耦接至記憶體640,例如可為動態隨機存取記憶體(DRAM)。至少針對一個實施例DRAM可與非依電性快取記憶體相聯結。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊且控制處理器610、615與記憶體640間之互動。GMCH 620也可作為處理器610、615與系統600的其它元件間之一加速度匯流排介面。針對至少一個實施例,GMCH 620與處理器610、615透過多插匯流排諸如前端匯流排(FSB)695通訊。
此外,GMCH 620係耦接至顯示器645(諸如平板顯示器)。GMCH 620可包括整合型圖形加速度計。GMCH 620更進一步耦接至輸入/輸出(I/O)控制器中樞器(ICH)650,可用來耦接各個周邊裝置至系統600。例如於第6圖之實施例中顯示一外部圖形裝置660,其可為耦接至ICH 650的分開圖形裝置,連同另一周邊裝置670。
另外,額外的或不同的處理器也可存在於系統600。例如,額外處理器615可包括與處理器610相同的額外處理器,與處理器610異質性或非對稱性的額外處理器、加速度 計(例如圖形加速度計或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器。就優劣評比而言,包括架構、微架構、熱、功耗特性等,實體資源610、615間可有多種差異。此等差異可有效地表示為處理器610、615間的非對稱性及異質性。針對至少一個實施例,多個處理器610、615可駐在同一個晶粒封裝體。
現在參考第7圖,顯示依據本發明之一實施例第二系統700之方塊圖。如第7圖所示,多處理器系統700為點對點互連系統,包括透過點對點互連體750而耦接的第一處理器770及第二處理器780。各個處理器770及780可為處理器500的某個版本,呈處理器610、615中之一或多者。
雖然只以兩個處理器770、780顯示,但須瞭解本發明之範圍並非受此所限。於其它實施例中,在一給定處理器內可存在有一或多個額外處理器。
處理器770及780係顯示為分別地包括整合型記憶體控制器單元(IMC)772及782。處理器770也包括點對點(P-P)介面776及778作為其匯流排控制器單元之一部分;同理,第二處理器780包括P-P介面786及788。處理器770、780可使用P-P介面電路778、788,透過點對點(P-P)介面750交換資訊。如第7圖所示,IMC 772及782耦接處理器至個別記憶體,亦即記憶體732及記憶體734,可為本地地附接至個別處理器的主記憶體的部分。
處理器770、780可使用點對點介面電路776、794、786、798,透過個別P-P介面752、754而與晶片組790各自交換資 訊。晶片組790也可透過高效能圖形介面739而與高效能圖形電路738交換資訊。
共享快取記憶體(圖中未顯示)可含括於處理器內或在二處理器外部,但係透過P-P互連體與處理器連結,若處理器係置於低功耗模式,則使得任一個或兩個處理器的本地快取記憶體資訊可儲存於共享快取記憶體。
晶片組790可透過介面796耦接至第一匯流排716。於一個實施例中,第一匯流排716可為周邊組件互連體(PCI)匯流排,或為一匯流排諸如PCI快速匯流排或另一第三代I/O互連體匯流排,但本發明之範圍並非受如此所限。
如第7圖所示,各個I/O裝置714可耦接至第一匯流排716,連同一匯流排橋接器718,其耦接第一匯流排716至第二匯流排720。於一個實施例中,第二匯流排720可為低針腳數目(LPC)匯流排。於一個實施例中,各個裝置可耦接至第二匯流排720包括例如,鍵盤及/或滑鼠722、通訊裝置727及儲存裝置728,諸如磁碟機或其它大容量儲存裝置,包括指令/代碼及資料730。又復,音訊I/O 724可耦接至第二匯流排720。注意其它架構亦屬可能。例如,替代第7圖之點對點架構,系統可體現多插匯流排或其它此等架構。
現在參考第8圖,顯示依據本發明之一實施例第三系統800之方塊圖。第7及8圖中之相似元件具有相似的元件符號,第7圖之某些面向已經從第8圖中刪除以免遮掩第8圖之其它面向。
第8圖例示說明處理器870、880分別地可包括整合型記憶體及I/O控制邏輯(「CL」)872及882。針對至少一個實施例,CL 872、882可包括整合型記憶體控制器單元(IMC), 如前文連結第7圖所述。此外,CL 872、882也可包括I/O控制邏輯。第8圖例示說明不僅記憶體832、834係耦接至CL 872、882,同時I/O裝置814也係耦接至控制邏輯872、882。舊式I/O裝置815係耦接至晶片組890。
雖然此處揭示之主題已經以特定實施例舉例說明,但須瞭解請求專利之實施例並不限於所揭示之明確闡釋的實施例。相反地,本揭示文意圖涵蓋熟諳技藝人士顯然易知的各項修正及相似配置。因此,隨附之申請專利範圍須據此做廣義解譯來涵蓋全部此等修正及相似配置。須瞭解前文說明意圖為例示說明性而非限制性。熟諳技藝人士當研讀且瞭解前文詳細說明部分時顯然易知多個其它實施例。因此所揭示之主旨之範圍係參考隨附之申請專利範圍各項,連同此等申請專利範圍各項所擁有的相當物之完整範圍決定。
100、201‧‧‧架構
105‧‧‧記憶體
110‧‧‧記憶體匯流排
115‧‧‧程式計數器
116‧‧‧位址
117‧‧‧讀取週期
118‧‧‧資料
120‧‧‧指令提取單元
125‧‧‧指令暫存器
130‧‧‧加法器
135‧‧‧選擇
200‧‧‧資料依賴性處理架構
205、210、215、301‧‧‧股
205A‧‧‧股識別符(ID)
211-213、220-224、226-228、250、350-359‧‧‧指令
225‧‧‧輸出依賴性
230‧‧‧真正依賴性
235‧‧‧反依賴性
260-262‧‧‧叢集
265‧‧‧執行單元
266‧‧‧指令排程器單元(ISU)
270‧‧‧結果
271-276‧‧‧股累積器
280‧‧‧計分板
281‧‧‧標籤比較邏輯
285‧‧‧叢集間資料網路
290‧‧‧共用暫存器
297‧‧‧亂序指令提取單元
298、502‧‧‧多股亂序處理器
299‧‧‧多股表示型態
300‧‧‧資料結構及指令格式
305‧‧‧運算碼
310‧‧‧來源運算元1位址
315、325、335‧‧‧同步化位元(SB)
320‧‧‧來源運算元2位址
330‧‧‧目的地運算元位址
500‧‧‧電腦系統
504‧‧‧主記憶體
508‧‧‧網路介面卡
510‧‧‧使用者介面
512‧‧‧文數輸入裝置
514‧‧‧游標控制裝置
518‧‧‧輔助記憶體
520‧‧‧網路
522‧‧‧軟體
524‧‧‧二進制翻譯器524
525‧‧‧亂序提取單元
526‧‧‧處理邏輯
531‧‧‧非過渡機器可讀取或電腦可讀取儲存媒體
536‧‧‧周邊裝置
600、700、800‧‧‧系統
610、615、770、780‧‧‧處理器
620‧‧‧圖形記憶體控制器中樞器(GMCH)
640、732、734、832、834‧‧‧記憶體
650‧‧‧輸入/輸出(I/O)控制器中樞器(ICH)
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排(FSB)
714、814‧‧‧I/O裝置
716、720‧‧‧匯流排
718‧‧‧匯流排橋接器
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存裝置
730‧‧‧指令/代碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750、752、754‧‧‧點對點(P-P)介面
776、778、786、788、794、798‧‧‧點對點(P-P)介面
772、782‧‧‧整合型記憶體控制器單元(IMC)
790、890‧‧‧晶片組
796‧‧‧介面
815‧‧‧舊式I/O裝置
872、882‧‧‧整合型記憶體及I/O控制邏輯(CL)
第1圖闡釋於缺指令層面並列性的中央處理單元(CPU)的指令提取單元中,先前技術提取操作之架構實例;第2A圖闡釋依據可操作之實施例,用於多股亂序處理器中指令排程之架構實例;第2B圖闡釋依據可操作之實施例一多股亂序處理器之架構實例;第3圖闡釋依據可操作之實施例一具有同步化位元之指令的資料結構及指令格式實例;第4圖為流程圖例示說明之依據所揭示之實施例用於多股亂序處理器中指令排程之方法;第5圖闡釋依據一個實施例,於電腦系統之形式實例中 具有多股亂序處理器的機器之圖解代表圖;第6圖闡釋依據一個實施例一電腦系統之方塊圖;第7圖闡釋依據一個實施例一電腦系統之方塊圖;及第8圖闡釋依據一個實施例一電腦系統之方塊圖。
201‧‧‧架構、資料依賴性處理架構
205、210、215‧‧‧股
205A‧‧‧股識別符(ID)
260、261、262‧‧‧叢集
265‧‧‧執行單元
266‧‧‧指令排程器單元(ISU)
270‧‧‧結果
271-276‧‧‧股累積器
280‧‧‧計分板
281‧‧‧標籤比較邏輯
285‧‧‧叢集間資料網路
290‧‧‧共用暫存器、暫存器
297‧‧‧亂序指令提取單元
298‧‧‧多股亂序處理器

Claims (21)

  1. 一種系統,其係包含:一顯示器;一二進制翻譯器,用以產生一串列程式列表之一多股表示型態,該所產生的多股表示型態具有多個相互依賴性股,該等多個相互依賴性股各自係包含運算元同步化位元;一亂序指令提取單元,用以取回該等多個相互依賴性股用於執行;及一指令排程單元,用以至少部分基於該等運算元同步化位元而排程該等多個相互依賴性股之執行。
  2. 如申請專利範圍第1項之系統,其中該等多個相互依賴性股各自係包含一指令格式載明至少:運算碼;針對一第一來源運算元之一位址;針對該第一來源運算元之一同步化位元;針對一第二來源運算元之一位址;針對該第二來源運算元之一同步化位元;針對一目的地運算元之一位址;及針對該目的地運算元之一同步化位元。
  3. 如申請專利範圍第1項之系統,其中於編譯時間,該二進制翻譯器係產生且係將該同步化位元編碼成該等多個相互依賴性股中之各者。
  4. 如申請專利範圍第1項之系統,其中該等多個相 互依賴性股中之一或多者係編碼使用一值之一第一指令與以一新值更新該值之一第二指令間之一資料反依賴性。
  5. 如申請專利範圍第4項之系統,其中該值係藉一暫存器儲存及其中該新值係更新至該暫存器。
  6. 如申請專利範圍第4項之系統,其中該二進制翻譯器用以:設定於該等多個相互依賴性股中之一者的該等運算元同步化位元中之一者來指示一生產者來源運算元表示造成一反依賴性的一資料項的最後一次使用;設定於該等多個相互依賴性股中之一第二者的該等運算元同步化位元中之一者來指示一消費者目的地運算元須等待直到該資料項的全部使用皆完成為止;及其中該指令排程單元用以在該生產者來源運算元之後基於該等所設定的運算元同步化位元而執行該消費者目的地運算元。
  7. 如申請專利範圍第1項之系統,其中該二進制翻譯器係執行多個法則來保證透過該指令排程單元之該等多個相互依賴性股的正確排程,該等多個法則係包含:一第一法則,禁止屬於不同股的指令間之競爭狀況產生一相同目的地暫存器;一第二法則,禁止屬於不同股的指令間之競爭狀況讀取具有一同步化位元的一相同來源暫存器;及一第三法則,禁止任何指令具有一相同來源及目的地運算元位址,該等位址各自具有一同步化位元。
  8. 一種裝置,其係包含:一亂序指令提取單元,係從一串列程式列表之一多股表示型態取回多個相互依賴性指令用於執行;多個暫存器,用以儲存資料;一指令排程單元,用以至少部分基於用於各個運算元的編碼在該等多個相互依賴性指令中之各者內的運算元同步化位元而排程該等多個相互依賴性指令之執行,其中該指令排程單元用以包含透過硬體表實現的計分板,該計分板包含該等多個暫存器的各者的狀態並透過可用位元與忙碌位元表示該等多個相互依賴性指令的各者的運算元準備就緒,其中當該可用位元被設定時,表示該暫存器的該值已經被寫入並可用以讀取,及其中當該忙碌位元被設定時,表示指令更新並且不寫入已經為該指令排程單元所發出的暫存器值,及其中當指令的來源運算元的同步化位元被設定時,用以表示在自該暫存器檔案讀取該運算元值後,用於該運算元的該可用位元與忙碌位元將被清除,當指令的目的地運算元的同步化位元被設定時,用以表示該指令將不會被發出,直到用於該運算元的該可用位元與忙碌位元被清除為止;及多個執行單元,用以並列執行該等多個相互依賴性指令之至少一子集。
  9. 如申請專利範圍第8項之裝置,其中該裝置係包含一積體電路,其實現一多股亂序處理器。
  10. 如申請專利範圍第8項之裝置,其中該等多個相 互依賴性指令將以一序列順序儲存;及其中該亂序指令提取單元用以與其中該等多個相互依賴性指令被儲存的順序不同的一順序而取回該等多個相互依賴性指令用於執行。
  11. 如申請專利範圍第8項之裝置,其中該等多個相互依賴性指令係組成一序列程序列表之一經編譯的多股表示型態。
  12. 如申請專利範圍第8項之裝置,其係進一步包含標籤比較邏輯來監測由透過該等多個執行單元所執行的指令所產生的多個暫存器值,及針對在該指令排程單元等候執行的該等多個相互依賴性指令中之一或多者,進一步檢測指令準備就緒。
  13. 如申請專利範圍第12項之裝置,其係進一步包含一內容可定址記憶體(CAM)其係可操作聯合該標籤比較邏輯,用以比較被執行的生產者型相互依賴性指令之運算元位址與在該指令排程單元等待執行的消費者型相互依賴性指令之運算元位址,其中該生產者型相互依賴性指令係為一指令,其透過一暫存器消除資料依賴性;及該消費者型相互依賴性指令係為一指令,如果該運算元的所有資料依賴性被消除,則該指令被認為是準備就緒。
  14. 如申請專利範圍第13項之裝置,其中該CAM用以實現下列位址比較中之各者:1)一生產者型相互依賴性指令之一目的地位址係與一消費者型相互依賴性指令的一來源位址作比較; 2)一生產者型相互依賴性指令之一具有附屬同步化位元的來源位址係與一消費者型相互依賴性指令的具有附屬同步化位元的目的地位址作比較;3)一生產者型相互依賴性指令之一目的地位址係與一消費者型相互依賴性指令的一目的地位址作比較;及4)一生產者型相互依賴性指令之一具有附屬同步化位元的來源位址係與一消費者型相互依賴性指令的一來源位址作比較。
  15. 如申請專利範圍第8項之裝置,其係進一步包含多個股累積器,各自係提供一暫存器,其中各個股累積器係獨特地專用於如由各個個別相互依賴性指令之一股識別符所定址的不超過一個的股。
  16. 如申請專利範圍第15項之裝置,其係進一步包含:透過一硬體表實現的一計分板,該計分板含有該等暫存器中之各者之即時狀態;及其中該計分板指示針對該等多個相互依賴性指令中之各者的運算元準備就緒,且係聯合標籤比較邏輯而操作來監測由透過多個執行單元所執行的指令所產生的多個暫存器值,且係進一步消除在該指令排程單元等候執行的該等多個相互依賴性指令中之一或多者間的依賴性。
  17. 一種方法,該方法係包含:提取用以執行的多個相互依賴性指令,其中該等多個相互依賴性指令係被亂序提取; 基於編碼在該等多個相互依賴性指令內部的同步化位元,決定在所提取的該等多個相互依賴性指令中之一第一相互依賴性指令與一第二相互依賴性指令間存在有一依賴性;至少部分基於編碼在該等多個相互依賴性指令中之各者內部的該等同步化位元,透過該等多個相互依賴性指令之排程消除該依賴性;及並列地執行接受該排程之該等多個相互依賴性指令之至少一子集。
  18. 如申請專利範圍第17項之方法,其中至少部分基於編碼在該等多個相互依賴性指令中之各者內部的該等同步化位元,透過該等多個相互依賴性指令之排程消除該依賴性係包含:針對具有該依賴性之該第一相互依賴性指令及該第二相互依賴性指令之運算元,藉由檢查於一計分板中之狀態位元而消除一資料依賴性。
  19. 如申請專利範圍第17項之方法,其中至少部分基於編碼在該等多個相互依賴性指令中之各者內部的該等同步化位元,透過該等多個相互依賴性指令之排程消除該依賴性係包含:在寫入一被產生的暫存器值後,藉由設定可用位元及清除忙碌位元而消除一真正依賴性,該等可用位元與忙碌位元係相對應於與該第一相互依賴性指令相對應的一生產者之一目的地運算元,其中當相對應於該第二相互依賴性 指令的一消費者之一來源運算元的個別可用位元被設定及個別忙碌位元被清除時消除該依賴性,其中該生產者指令為一指令,其透過暫存器消除資料依賴性,及該消費者指令為一指令,如果其運算元的所有資料依賴性都被消除的話,則認為該指令為準備就緒。
  20. 如申請專利範圍第17項之方法,其中至少部分基於編碼在該等多個相互依賴性指令中之各者內部的該等同步化位元,透過該等多個相互依賴性指令之排程消除該依賴性係包含:藉由讀取針對相對應於該第一相互依賴性指令之具有一同步化位元的一來源運算元之一暫存器值,且消除針對該來源運算元之一相對應可用位元及忙碌位元而消除一反依賴性,其中當具有相對應於該第二相互依賴性指令之一消費者的一同步化位元的一目的地運算元令其個別可用位元被設定而其個別忙碌位元被清除時消除該依賴性。
  21. 如申請專利範圍第17項之方法,其中至少部分基於編碼在該等多個相互依賴性指令中之各者內部的該等同步化位元,透過該等多個相互依賴性指令之排程消除該依賴性係包含:恰在簽發該第一相互依賴性指令後即刻,藉由設定相對應於該第一相互依賴性指令的一生產者之一目的地運算元相對應的一忙碌位元而消除一輸出依賴性,其中該依賴性係當相對應於一消費者之目的地運算元的一忙碌位元係被清除時被消除,其中該消費者係相對應於該第二相互依 賴性指令。
TW101123731A 2011-07-01 2012-07-02 用於多股亂序處理器中之指令排程的方法及裝置與系統 TWI514267B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/175,619 US9529596B2 (en) 2011-07-01 2011-07-01 Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits

Publications (2)

Publication Number Publication Date
TW201312460A TW201312460A (zh) 2013-03-16
TWI514267B true TWI514267B (zh) 2015-12-21

Family

ID=47391881

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101123731A TWI514267B (zh) 2011-07-01 2012-07-02 用於多股亂序處理器中之指令排程的方法及裝置與系統

Country Status (3)

Country Link
US (2) US9529596B2 (zh)
TW (1) TWI514267B (zh)
WO (1) WO2013006566A2 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
WO2013147852A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Instruction scheduling for a multi-strand out-of-order processor
WO2014142704A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
KR20140126195A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치
CN106030518B (zh) 2014-03-27 2019-03-26 英特尔公司 用于整理和退出存储的处理器、方法、系统和装置
US20160011876A1 (en) * 2014-07-11 2016-01-14 Cavium, Inc. Managing instruction order in a processor pipeline
CN107408035B (zh) * 2015-03-27 2021-11-09 英特尔公司 用于缕程间通信的装置和方法
US11119903B2 (en) * 2015-05-01 2021-09-14 Fastly, Inc. Race condition testing via a scheduling test program
CN106293893B (zh) * 2015-06-26 2019-12-06 阿里巴巴集团控股有限公司 作业调度方法、装置及分布式系统
US9652235B1 (en) 2015-11-24 2017-05-16 International Business Machines Corporation Method of synchronizing independent functional unit
TWI584667B (zh) * 2015-11-27 2017-05-21 財團法人工業技術研究院 多請求的排程方法及排程裝置
WO2017168197A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Apparatus and method for improving performance of inter-strand communications
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US11567554B2 (en) 2017-12-11 2023-01-31 Advanced Micro Devices, Inc. Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics
US11709681B2 (en) * 2017-12-11 2023-07-25 Advanced Micro Devices, Inc. Differential pipeline delays in a coprocessor
CN111104169B (zh) * 2017-12-29 2021-01-12 上海寒武纪信息科技有限公司 指令列表调度方法、装置、计算机设备及存储介质
CN110928575B (zh) * 2018-09-20 2022-04-29 上海登临科技有限公司 一种多设备同步控制系统和控制方法
US10915327B2 (en) * 2018-12-14 2021-02-09 Arm Limited Apparatus and method of dispatching instructions for execution clusters based on dependencies
CN110737471B (zh) * 2019-09-12 2021-12-28 中科寒武纪科技股份有限公司 指令处理方法、装置及相关产品
CN110609705B (zh) * 2019-09-20 2021-05-11 深圳市航顺芯片技术研发有限公司 一种提高mcu总线效率的方法、智能终端、存储介质及芯片
GB2596872B (en) * 2020-07-10 2022-12-14 Graphcore Ltd Handling injected instructions in a processor
CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046698A1 (en) * 2006-08-21 2008-02-21 Kapil Ahuja Run Length Encoding in VLIW Architecture
US20080209173A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Branch predictor directed prefetch
US20100005277A1 (en) * 2006-10-27 2010-01-07 Enric Gibert Communicating Between Multiple Threads In A Processor

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2911278B2 (ja) * 1990-11-30 1999-06-23 松下電器産業株式会社 プロセッサ
IL100990A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher
US6260189B1 (en) * 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6550001B1 (en) * 1998-10-30 2003-04-15 Intel Corporation Method and implementation of statistical detection of read after write and write after write hazards
US6643762B1 (en) 2000-01-24 2003-11-04 Hewlett-Packard Development Company, L.P. Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs
US6715060B1 (en) * 2000-01-28 2004-03-30 Hewlett-Packard Development Company, L.P. Utilizing a scoreboard with multi-bit registers to indicate a progression status of an instruction that retrieves data
US7143401B2 (en) 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
US7080234B2 (en) 2000-03-08 2006-07-18 Sun Microsystems, Inc. VLIW computer processing architecture having the problem counter stored in a register file register
US20020138714A1 (en) 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6842849B2 (en) * 2001-05-21 2005-01-11 Arm Limited Locking source registers in a data processing apparatus
JP3702813B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7051191B2 (en) * 2001-12-26 2006-05-23 Intel Corporation Resource management using multiply pendent registers
US7363467B2 (en) * 2002-01-03 2008-04-22 Intel Corporation Dependence-chain processing using trace descriptors having dependency descriptors
US20040162972A1 (en) 2003-02-18 2004-08-19 Sorin Iacobovici Method for handling control transfer instruction couples in out-of-order, multi-issue, multi-stranded processor
US7600221B1 (en) * 2003-10-06 2009-10-06 Sun Microsystems, Inc. Methods and apparatus of an architecture supporting execution of instructions in parallel
US7213133B2 (en) * 2004-05-03 2007-05-01 Sun Microsystems, Inc Method and apparatus for avoiding write-after-write hazards in an execute-ahead processor
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US20090217020A1 (en) 2004-11-22 2009-08-27 Yourst Matt T Commit Groups for Strand-Based Computing
US20070113137A1 (en) * 2005-10-22 2007-05-17 Ho Seung Ryu Error Correction in Binary-encoded DNA Using Linear Feedback Shift Registers
DE102006007993B4 (de) * 2006-02-21 2007-11-08 Infineon Technologies Ag Testhilfseinrichtung in einem Speicherbaustein
US7721071B2 (en) 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
US8417919B2 (en) 2008-09-12 2013-04-09 Wisconsin Alumni Research Foundation Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US8468539B2 (en) * 2009-09-03 2013-06-18 International Business Machines Corporation Tracking and detecting thread dependencies using speculative versioning cache
US20110179254A1 (en) * 2010-01-15 2011-07-21 Sun Microsystems, Inc. Limiting speculative instruction fetching in a processor
US8650554B2 (en) * 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046698A1 (en) * 2006-08-21 2008-02-21 Kapil Ahuja Run Length Encoding in VLIW Architecture
US20100005277A1 (en) * 2006-10-27 2010-01-07 Enric Gibert Communicating Between Multiple Threads In A Processor
US20080209173A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Branch predictor directed prefetch

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Arroyo and Lee, "Dynamic Simultaneous Multithreaded Architecture", 2003, 16th International Conference on Parallel and Dustributed Computing Systems, Pages 1-8 Tariq Jamil, "RAM versus CAM", 1997, IEEE Xplore, Pages 26-29 *

Also Published As

Publication number Publication date
US20170235578A1 (en) 2017-08-17
WO2013006566A2 (en) 2013-01-10
TW201312460A (zh) 2013-03-16
US9529596B2 (en) 2016-12-27
US20130007415A1 (en) 2013-01-03
WO2013006566A3 (en) 2013-03-07

Similar Documents

Publication Publication Date Title
TWI514267B (zh) 用於多股亂序處理器中之指令排程的方法及裝置與系統
EP3449359B1 (en) Out-of-order block-based processors and instruction schedulers
CN108027767B (zh) 寄存器读取/写入排序
EP3350705B1 (en) Initiating instruction block execution using a register access instruction
TWI423123B (zh) 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體
EP3314437B1 (en) Verifying branch targets in a block based processor
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US8904153B2 (en) Vector loads with multiple vector elements from a same cache line in a scattered load operation
JP3548132B2 (ja) マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
US8650554B2 (en) Single thread performance in an in-order multi-threaded processor
TWI497412B (zh) 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置
US20170371660A1 (en) Load-store queue for multiple processor cores
US10198263B2 (en) Write nullification
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
EP3834083B1 (en) Commit logic and precise exceptions in explicit dataflow graph execution architectures
US10061584B2 (en) Store nullification in the target field
US10031756B2 (en) Multi-nullification
KR20190031494A (ko) 블록 기반의 프로세서에 대한 트랜잭션 레지스터 파일
US20170371659A1 (en) Load-store queue for block-based processor
US20180329708A1 (en) Multi-nullification
JP4420055B2 (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
EP3350690B1 (en) Implicit program order
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치

Legal Events

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