TWI599949B - 實施動態無序處理器管線的方法與設備 - Google Patents

實施動態無序處理器管線的方法與設備 Download PDF

Info

Publication number
TWI599949B
TWI599949B TW104105377A TW104105377A TWI599949B TW I599949 B TWI599949 B TW I599949B TW 104105377 A TW104105377 A TW 104105377A TW 104105377 A TW104105377 A TW 104105377A TW I599949 B TWI599949 B TW I599949B
Authority
TW
Taiwan
Prior art keywords
bytes
vliw
order
unit
pipeline
Prior art date
Application number
TW104105377A
Other languages
English (en)
Other versions
TW201602906A (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 TW201602906A publication Critical patent/TW201602906A/zh
Application granted granted Critical
Publication of TWI599949B publication Critical patent/TWI599949B/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • 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
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

實施動態無序處理器管線的方法與設備
本發明大致關係於電腦處理器的領域。更明確地說,本發明關係於用以實施動態無序處理器管線的設備與方法。
很多主流處理器現行均根據動態無序微架構,其或多或少共享無序管線實施法的相同的高階原理。改良這些處理器的效能、電力效率、面積密度、及硬體可縮放性,隨著純硬體無序設計的每次產生而變得更加困難。
100‧‧‧處理器管線
102‧‧‧擷取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧配置級
110‧‧‧重新命名級
112‧‧‧排序級
114‧‧‧暫存器讀/記憶體讀級
116‧‧‧執行級
118‧‧‧回寫/記憶體寫級
122‧‧‧例外處理級
124‧‧‧確定級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令擷取單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令擷取單元
140‧‧‧解碼級
150‧‧‧執行引擎單元
152‧‧‧重新命名/配置器單元
154‧‧‧收回單元
156‧‧‧排序器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧L2快取單元
200‧‧‧處理器
202A-N‧‧‧核心
204A-N‧‧‧快取單元
206‧‧‧共享快取單元
208‧‧‧積體圖型邏輯
210‧‧‧系統代理單元
212‧‧‧環為主互連單元
214‧‧‧積體記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
310‧‧‧處理器
315‧‧‧處理器
320‧‧‧控制器集線器
340‧‧‧記憶體
345‧‧‧共處理器
350‧‧‧輸入/輸出集線器
360‧‧‧輸入/輸出裝置
390‧‧‧圖型記憶體控制器集線器
395‧‧‧連接
400‧‧‧多處理器系統
414‧‧‧I/O裝置
415‧‧‧處理器
416‧‧‧匯流排
418‧‧‧匯流排橋接器
420‧‧‧匯流排
422‧‧‧鍵盤/滑鼠
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/碼及資料
432‧‧‧記憶體
434‧‧‧記憶體
438‧‧‧共處理器
439‧‧‧高效介面
450‧‧‧點對點(P-P)介面
452‧‧‧P-P介面
454‧‧‧P-P介面
470‧‧‧處理器
472‧‧‧積體記憶體控制器單元
476‧‧‧P-P介面
478‧‧‧P-P介面
480‧‧‧處理器
482‧‧‧積體記憶體控制器單元
486‧‧‧P-P介面
488‧‧‧P-P介面
490‧‧‧晶片組
492‧‧‧P-P介面
494‧‧‧P-P介面
498‧‧‧P-P介面
500‧‧‧系統
514‧‧‧I/O裝置
515‧‧‧傳統I/O裝置
600‧‧‧SoC
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧共處理器
630‧‧‧SRAM單元
632‧‧‧DMA單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二進制碼
708‧‧‧指令集編譯器
710‧‧‧指令集二進制碼
711‧‧‧指令集二進制碼
712‧‧‧指令轉換器
714‧‧‧x86指令集核心
716‧‧‧x86指令集核心
800‧‧‧固定長度指令格式
801‧‧‧3-位址暫存器運算碼/運算元格式
802‧‧‧顯式指令類型資訊
803‧‧‧停止位元
901‧‧‧ALU字節
902‧‧‧ALU字節
903‧‧‧記憶體字節
904‧‧‧記憶體字節
905‧‧‧浮點向量字節
906‧‧‧浮點向量字節
907‧‧‧控制字節
1001‧‧‧超純量前端單元
1002‧‧‧資料流引擎
1003‧‧‧收回單元
1011‧‧‧前端單元
1012‧‧‧資料流引擎
1013‧‧‧收回單元
1101‧‧‧點箭頭
1102‧‧‧虛線箭頭
1103‧‧‧虛線與點箭頭
1112‧‧‧虛線箭頭
1201‧‧‧運算元比較電路
1202‧‧‧運算元置換電路
1203‧‧‧暫存器重新命名表
1213‧‧‧暫存器重新命名表
1301‧‧‧暫存器重新命名表
1302‧‧‧排序器設立邏輯
1303‧‧‧排序器邏輯
1304‧‧‧取消設立邏輯
1305‧‧‧取消邏輯
1311‧‧‧暫存器重新命名邏輯
1312‧‧‧排序器設立邏輯
1313‧‧‧排序器邏輯
1314‧‧‧取消設立邏輯
1315‧‧‧取消邏輯
1401‧‧‧縱橫式開關
1402‧‧‧縱橫式開關
1403‧‧‧縱橫式開關
1404‧‧‧重新命名/配置級
1405‧‧‧排序器級
1406‧‧‧實體暫存器檔案
1407‧‧‧執行埠
1414‧‧‧重新命名/配置級
1415‧‧‧資料流排序器的分區
1416‧‧‧暫存器檔
1417‧‧‧指令執行埠
1501‧‧‧解碼指令佇列
1502‧‧‧配置單元
1503‧‧‧保留站
1504‧‧‧選擇邏輯
1505‧‧‧實體暫存器檔
1506‧‧‧運算元值旁路
1507‧‧‧執行單元
本發明的較佳了解可以由以下詳細說明配合附圖加以取得,圖式中:圖1A為一方塊圖,顯示例示有序管線與例示暫存器重新命名、依據本發明實施例之無序發出/執行管 線;圖1B為一方塊圖,顯示有序架構核心與予以包含在依據本發明實施例處理器中之例示暫存器重新命名、無序發出/執行架構核心;圖2為單一核心處理器與具有依據本發明實施例之積體記憶體控制器與圖型的多核心處理器的方塊圖;圖3例示依據本發明實施例之系統的方塊圖;圖4例示依據本發明實施例之第二系統的方塊圖;圖5例示依據本發明實施例之第三系統的方塊圖;圖6例示依據本發明實施例之系統晶片(SoC)的方塊圖;圖7例示方塊圖,對比軟體指令轉換器的使用,以依據本發明實施例將在源指令集中的二進制指令轉換為在目標指令集中之二進制指令;圖8例示用於極長指令字(VLIW)節的指令格式的實施例;圖9例示包含多數字節的極長指令字(VLIW)的實施例;圖10A-B例示傳統無序(OOO)管線與依據本發明實施例之OOO管線; 圖11A-B例示於鄰近二進制碼的多數傳統微運算(uop)與多數字節間之相依性;圖12A-B例示傳統處理器中之暫存器重新命名及用於本發明實施例中之暫存器重新命名;圖13A-B例示依據本發明實施例之在傳統OOO處理器中之暫存器重新命名、排序器邏輯、及取消邏輯;圖14A例示傳統管線,其包含在重新命名/配置、排序及配送級間之多數縱橫式開關;圖14B例示依據本發明實施例之包含重新命名/配置級、排序級、及配送級的管線;圖15例示在解碼級後的處理器管線的實施例;及圖16例示根據指令相依性的重新安排指令順序的實施例。
【發明內容與實施方式】
在以下說明中,為了說明的目的,各種特定細節係被說明,以提供對以下所述之本發明實施例的完全了解。然而,明顯地,對於熟習於本技藝者,本發明可以在沒有這些特定細節下加以實施。在其他例子中,已知結構及裝置係被以方塊圖形式顯示,以避免模糊了本發明實施例內的原理。
例示處理器架構與資料類型
圖1A為方塊圖,顯示例示性有序管線及依據本發明實施例的例示暫存器重新命名、無序發出/執行管線。圖1B為方塊圖,例示有序架構核心的例示性實施例及依據本發明實施例予以包含在處理器中之例示性暫存器重新命名、無序發出/執行架構核心。圖1A-B中之實線方塊例示有序管線及有序核心,而選用增加的虛線方塊例示暫存器重新命名、無序發出/執行管線及核心。給定該有序態樣為無序態樣的子集,該無序態樣將加以說明。
在圖1A中,處理器管線100包含擷取級102、長度解碼級104、解碼級106、配置級108、重新命名級110、排序(也稱為配送或發出)級112、暫存器讀取/記憶體讀取級114、執行級116、回寫/記憶體寫入級118、例外處理級122、及確定(commit)級124。
圖1B顯示處理器核心190,包含耦接至執行引擎單元150的前端單元130,兩者均耦接至記憶體單元170。核心190可以為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或其他核心類型。在另一選項中,核心190可以為特殊目的核心,例如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖型處理單元(GPGPU)核心、圖型核心或類似物。
前端單元130包含分支預測單元132,其耦接至指令快取單元134,其耦接至指令轉譯後備緩衝器 (TLB)136,其係耦接至指令擷取單元138、其係耦接至解碼單元140。解碼單元140(或解碼器)可以解碼指令,並產生一或更多微運算、微碼輸入點、微指令、其他指令、或其他控制信號作為輸出,這些係由原始指令所解碼、或反映或推導得出。解碼單元140可以使用各種不同機制加以實施。適當機制的例子包含但並不限於查看表、硬體實施法、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心190包含微碼ROM或其他儲存微碼的媒體,用於某些巨指令(例如,在解碼單元140或在前端單元130內)。解碼單元140係被耦接至在執行引擎單元150內的重新命名/配置器單元152。
執行引擎單元150包含耦接至收回(retire)單元154與一組的一或更多排序器單元156的重新命名/配置器單元152。排序器單元156代表若干的不同排序器,包含保留站、中央指令窗等等。排序器單元156係耦接至實體暫存器檔案單元158。各個實體暫存器檔案單元158代表一或更多實體暫存器檔案,每個不同的實體暫存器檔案儲存一或更多資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標為下一個予以執行的指令的位址)等等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元158係為收回單 元154重疊,以例示出各種方式來實施暫存器重新命名及無序執行(例如,使用重排序緩衝器及收回暫存器檔案;使用未來檔案、歷史檔案、及收回暫存器檔案;使用暫存器圖及暫存器池等等)。收回單元154及實體暫存器檔案單元158係被耦接至執行叢集160。執行叢集160包含一組一或更多執行單元162及一組一或更多記憶體存取單元164。執行單元162可以對各種資料類型(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種運算(例如,移位、加法、減法、乘法)。雖然一些實施例可能包含若干執行單元專屬用於特定函數或函數組,但其他實施例也可以只包含一執行單元或多數執行單元,其執行所有的函數。排序器單元156、實體暫存器檔案單元158、及執行叢集160係被顯示為可以是多數的,因為某些實施例為某類型資料/運算建立分開管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各個具有其自己的排序器單元、實體暫存器檔案單元、及/或執行叢集-及,當分開記憶體存取管線時,某些實施例係被實施,其中此管線中之只有執行單元有記憶體存取單元164)。應了解的是,當使用分開管線時,一或更多這些管線可以無序發出/執行及其餘為有序。
該組記憶體存取單元164係被耦接至記憶體單元170,其係包含資料TLB單元172,耦接至資料快取單元174,該資料快取單元174耦接至第二級(L2)快取 單元176。在例示實施例中,記憶體存取單元164可以包含負載單元、儲存位址單元、及儲存資料單元,其各個單元係耦接至在記憶體單元170中的資料TLB單元172。指令快取單元134更耦接至在記憶體單元170中之第二級(L2)快取單元176。L2快取單元176係耦接至一或更多其他級的快取並且最後連接至主記憶體。
例如,例示暫存器重新命名、無序發出/執行核心架構可以如下實施管線100:1)指令擷取138,執行快取及長度解碼級102及104;2)解碼單元140執行解碼級106;3)重新命名/配置器單元152執行配置級108及重新命名級110;4)排序器單元156執行排序級112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀/記憶體讀級114;執行叢集160執行該執行級116;6)記憶體單元170及實體暫存器檔案單元158執行回寫/記憶體寫級118;7)各種單元,可能涉及例外處理級122;及8)收回單元154及實體暫存器檔案單元158執行確定級124。
核心190可以支援一或更多指令集(例如,x86指令集(具有一些擴充,其加入有最新版本);美國加州Sunnyvale的MIPS科技公司的MIPS指令集;美國加州Sunnyvale的ARM控股的ARM指令集(具有選用額外擴充,例如NEON),包含於此所述之指令。在一實施例中,核心190包含邏輯,以支援緊縮資料指令集擴充(例如,如下述的AVX1、AVX2、及/或上位向量友善指 令格式的一些形式(U=0及/或U=1)),藉以允許為很多多媒體應用所用的運算使用緊縮資料加以執行。
應了解的是,核心可以支援多線程(執行兩或更多並列集的運算或線程),並也可以以各種方式加以如此進行,包含分時多線程、同時多線程(其中單一實體核心提供邏輯核心給各個線程,實體核心被同時作多線程)、或其組合(例如,分時擷取及解碼及隨後同時多線程,例如英特爾的(超線程)Hyperthreading技術)。
雖然暫存器重新命名被描述於無序執行的文中,但應了解的是暫存器重新命名也可以用於有序架構中。雖然處理器的例示實施例也包含分開指令及資料快取單元134/174及共享L2快取單元176,但其他實施例也可以對指令與資料兩者均有單一內部快取,例如,一階(L1)內部快取、或多階的內部快取。在一些實施例中,系統可以包含內部快取與核心及/或處理器外面的外部快取的組合。或者,所有快取可以為核心及/或處理器的外面。
圖2為處理器200的方塊圖,其可以具有一個以上的核心,並可以具有積體記憶體控制器,並可以具有依據本發明實施例之積體圖形。圖2中實線方塊例示處理器200,具有單一核心202A、系統代理210、一組一或更多控制器單元216,而選用增加的虛線方塊例示替換處理器200,其具有多數核心202A-N、一組一或更多積體記憶體控制器單元214於系統代理單元210內、及特殊目 的邏輯208。
因此,處理器200的不同實施法可以包含:1)CPU具有特殊目的邏輯208,被整合有圖形及/或科學(解題能力)邏輯(其可以包含一或更多核心),及核心202A-N係為一或更多通用核心(例如通用有序核心、通用無序核心、兩者的組合);2)具有核心202A-N的共處理器,其具有大量的特殊目的核心,主要用以圖型及/或科學(解題能力);及3)具有核心202A-N的共處理器,其具有大量通用有序核心。因此,處理器200可以為通用處理器、共處理器或特殊目的處理器,例如,網路或通訊處理器、壓縮引擎、圖型處理器、GPGPU(通用圖型處理單元)、高處理量多積體核心(MIC)共處理器(包含30或更多核心)、嵌式處理器或類似物。處理器可以被實施於一或更多晶片上。處理器200可以為使用例如BiCMOS、CMOS或NMOS的若干處理技術之任一實施在一或更多基板上及/或其一部份。
記憶體階層包含在核心內的一或更多層的快取、一組或一或更多共享快取單元206、及外部記憶體(未示出)耦接至該組積體記憶體控制器單元214。該組共享快取單元206可以包含一或多個中層快取,例如2階(L2)、3階(L3)、4階(L4)、或其他階的快取、最後階快取(LLC)、及/或其組合。在一實施例中,雖然一環為主互連單元212互連至積體圖型邏輯208、該組共享快取單元206、及該系統代理單元210/積體記憶體控制單 元214,但其他實施例中也可以使用任意數量的已知技術,用以互連此等單元。在一實施例中,相干性係被維持於一或更多快取單元206及核心202-A-N之間。
在一些實施例中,一或更多核心202A-N能多線程。系統代理210包含這些元件協調與運作核心202A-N。系統代理單元210可以例如包含一電力控制單元(PCU)及顯示單元。PCU可以是或可以包含邏輯與元件,這些係需要用以調節核心202A-N及體積圖型邏輯208的電力狀態。顯示單元係用以驅動一或更多外部連接的顯示器。
核心202A-N以架構指令集看來可以為同質或異質;即,兩或更多核心202A-N可以執行相同指令集,而其他則只可以執行該指令集的次組或不同指令集。在一實施例中,核心202A-N係為異質並包含如下所述之“小”核心及“大”核心。
圖3-6為例示電腦架構的方塊圖。在本技藝中已知之其他系統設計與架構,例如膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌式處理器、數位信號處理器(DSP)、圖型裝置、視訊遊戲裝置、機頂盒、微控制器、行動電話、攜帶式媒體播放器、手持裝置、及各種其他電子裝置也是適當的。通常,各種大量能加入處理器及/或其他如此所揭露的執行邏輯的系統或電子裝置也是適用的。
現參考圖3,顯示依據本發明實施例之系統300的方塊圖。系統300可以包含一或更多處理器310、315,其係耦接至控制器集線器320。在一實施例中,控制器集線器320包含圖型記憶體控制器集線器(GMCH)390及輸入/輸出集線器(IOH)350(其可以是在分開的晶片上);GMCH390包含記憶體及圖型控制器,具有記憶體340及共處理器345耦接至其上;IOH350將輸入/輸出(I/O)裝置360耦接至GMCH390。或者,記憶體與圖型控制器之一或兩者係積集在處理器內(如於此所述),記憶體340及共處理器345係直接耦接至處理器310,以及連接至在單晶片內之具有IOH350的控制器集線器320。
在圖3中,額外處理器315的選用本質係以破折線表示。各個處理器310、315可以包含一或更多於此所述之處理核心並可以與處理器200相同版本。
記憶體340可以例如為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者的組合。至少一實施例中,控制器集線器320與處理器310、315透過多投匯流排,例如前側匯流排(FSB)、點對點介面,例如快路徑互連(QPI)或類似連接395相通訊。
在一實施例中,共處理器345為特殊目的處理器,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖型處理器、GPGPU、嵌式處理器或類似物。在一實施例中,控制器集線器320可以包含積體圖型 加速器。
以頻譜度量價值看來,在實體資源310、315間有各種不同,包含架構、微架構、熱、內力消耗特性及類似物。
在一實施例中,處理器310執行指令,其控制一般類型的資料處理運算。嵌入於指令的可以是共處理器指令。處理器310將這些共處理器指令認定為應為附接共處理器345所執行的類型。因此,處理器310發出這些在共處理器匯流排或其他互連的共處理器指令(或代表共處理器指令的控制信號)給共處理器345。共處理器345接受並執行所接收的共處理器指令。
現參考圖4,顯示依據本發明一實施例的第一更特定例示系統400的方塊圖。如圖4所示,多處理器系統400為點對點互連系統並包含第一處理器470及第二處理器480,透過點對點互連450耦接。各個處理器470及480可以為處理器200的一些版本。在本發明的一實施例中,處理器470及480係分別為處理器310及315,而共處理器438為共處理器345。在另一實施例中,處理器470及480個別為處理器310及共處理器345。
處理器470及480係被顯示為分別包含積體記憶體控制器(IMC)單元472及482。處理器470也包含其匯流排控制器單元點對點(P-P)介面476及478的一部份;類似地,第二處理器480包含P-P介面486及488。處理器470、480可以經由點對點(P-P)介面 450,使用P-P介面電路478、488交換資訊。如於圖4所示,IMC472及482將處理器耦接至個別記憶體,即記憶體432及記憶體434,其可以為局部地附接至個別處理器的主記憶體的部份。
處理器470、480可以各個與晶片組490透過個別P-P介面452、454使用點對點介面電路476、494、486、498交換資訊。晶片組490可以透過高效介面439與共處理器438選用地交換資訊。在一實施例中,共處理器438為一特殊目的處理器,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖型處理器、GPGPU、嵌式處理器或類似物。
共享快取(未示出)可以包含在處理器內或在兩處理器外、但仍透過P-P互連與處理器連接,使得如果處理器係置於低功率模式,則任一或兩個處理器的局部快取資訊被儲存在共享快取內。
晶片組490可以經由介面496耦接至第一匯流排416。在一實施例中,第一匯流排416可以為週邊元件互連(PCI)匯流排,或例如PCI Express匯流排的匯流排、或另一第三代I/O互連匯流排,但本發明的範圍並不限於此。
如於圖4所示,各種I/O裝置414可以耦接至第一匯流排416,具有匯流排橋接器將第一匯流排416耦接至第二匯流排420。在一實施例中,例如共處理器、高處理量MIC處理器、GPGPU、加速器(例如,圖型加 速器或數位信號處理(DSP)單元)、場可規劃閘陣列、或任何其他處理器的一或更多其他處理器415係被耦接至第一匯流排416。在一實施例中,第二匯流排420可以為低接腳數(LPC)匯流排。各種裝置可以耦接至第二匯流排420,其包含例如鍵盤及/或滑鼠422、通訊裝置427及儲存單元428,例如磁碟機或其他大量儲存裝置,其在一實施例中可以包含指令/碼及資料430。再者,音訊I/O424可以耦接至第二匯流排420。注意其他架構也是可能。例如,不同於圖4的點對點架構,一系統也可以實施多投匯流排或其他此等架構。
現參考圖5,顯示依據本發明實施例之第二更特定例示系統500的方塊圖。在圖4及5中之類似元件係具有類似參考符號,及圖4的某些態樣可以由圖5省略,以避免模糊圖5的其他態樣。
圖5例示該處理器470、480可以分別包含積體記憶體及I/O控制邏輯(CL)472及482。因此,CL472、482包含積體記憶體控制器單元並包含I/O控制邏輯。圖5例示不但記憶體432、434耦接至該CL472、482,I/O裝置514同樣地耦接至控制邏輯472、482。傳統I/O裝置515係耦接至晶片組490。
現參考圖6,顯示依據本發明之實施例的SoC600的方塊圖。在圖2中之類似元件具有類似元件符號。同時,虛線方塊係為更先進SoC上的選用特性。在圖6中,互連單元602係耦接至:應用處理器610,其包含 一組一或更多核心202A-N及共享快取單元206;系統代理單元210;匯流排控制器單元216;積體記憶體控制器單元214;一組或一或更多共處理器620,其可以包含積體圖型邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;及顯示單元640,用以耦接至一或更多外部顯示器。在一實施例中,共處理器620包含特殊目的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、嵌式處理器或類似物。
於此所揭露之機制的實施例可以被以硬體、軟體、韌體、或此等實施方式的組合加以實施。本發明之實施例可以被實施為被執行在可程式系統上的電腦程式或程式碼,該可程式系統包含至少一處理器、一儲存系統(包含揮發及非揮發記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖4所示之碼430的程式碼可以應用至輸入指令,以執行於此所述之功能並產生輸出資訊。以已知方式,輸出資訊可以應用至一或更多輸出裝置。為了本案的目的,處理系統包含具有一處理器的任一系統,該處理器例如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以實施為高階程序或物件導向程式語言,以與處理系統相通訊。如果想要,該程式碼也可以實施為組合或機器語言。事實上,於此所述之機制範圍上 並不限於任何特定程式語言。在任何情況下,語言可以為編譯或解譯語言。
至少一實施例的一或更多態樣可以被儲存在機器可讀取媒體上的代表指令所實施,該代表指令表示在處理器內的各種邏輯,其當為機器讀取時,使得該機器製造出邏輯,用以執行於此所述之技術。此等稱為“IP核心”的代表可以被儲存於有形機器可讀取媒體上並被供給至各種客戶或製造設施,以載入製造機器內,以實際完成該邏輯或處理器。
此機器可讀取儲存媒體可以包含但並不限於非暫時有形配置物品,其係為一機器或裝置所製造或形成,包含儲存媒體,例如硬碟機、其他任何類型碟片,包含軟碟、光碟、光碟唯讀取記憶體(CD-ROM)、可寫光碟(CD-RW)及磁光碟、半導體裝置,例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)的隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀取記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或任意其他類型的媒體,其適用以儲存電子指令者。
因此,本發明的實施例也可以包含非暫時有形機器可讀取媒體包含有指令或包含設計資料,例如硬體描述語言(HDL),其界定於此所述之結構、電路、設備、處理器及/或系統特性。此等實施例也可以稱為程式 產品。
在一些情況中,指令轉換器可以用以將一指令由來源指令集轉換為目標指令集。例如,指令轉換器可以(例如使用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)轉譯、變種、仿真或轉換指令至予以為該核心所處理的一或更多其他指令。指令轉換器可以被實施為軟體、硬體、韌體或其組合。指令轉換器可以在處理器上、處理器外、或一部份在處理器上一部份在處理器外。
圖7為依據本發明實施例的方塊圖對比顯示使用軟體指令轉換器以將源指令集中之二進制指令轉換為在目標指令集中之二進制指令。在例示實施例中,指令轉換器為軟體指令轉換器,但或許指令轉換器也可以實施為軟體、韌體、硬體或其各種組合。圖7顯示高階語言702的程式,其可以使用x86編譯器704編譯以產生x86二進制碼706,其可以具有至少一x86指令集核心716的處理器所本地執行。具有至少一x86指令集核心716的處理器代表任何處理器,其可以執行與具有至少一x86指令集核心的英特爾處理器實質相同功能,藉由相容地執行或處理(1)英特爾x86指令集核心的指令集的大部份或(2)目標碼版本的應用程式或其他軟體,其目標為用以執行於英特爾處理器上具有至少一x86指令集核心,以完成與具有至少一x86指令集核心的英特爾處理器實質一樣的結果。x86編譯器704表示一編譯器,其可操作以產生x86二進制碼706(例如目標碼),其可以在有或沒有其他鏈結處 理下,被執行於具有至少一x86指令集核心716的處理器上。同樣地,圖7顯示高階語言702的程式,其可以使用另一指令集編譯器708加以編譯,以產生另一指令集二進制碼710,其可以為處理器所本地執行,而沒有至少一x86指令集核心714(例如,一處理器,其具有核心以執行美國加州Sunnyvale的MIPS科技的MIPS指令集及/或美國加州Sunnyvale的ARM控股的ARM指令集)。
指令轉換器712被用以將x86二進制碼706轉換為替換指令集二進制碼711,其可以為沒有x86指令集核心714的處理器所本地執行。此轉換碼可以可不與由替換指令集編譯器708所造成的替換指令集二進制碼710相同;然而,轉換碼將完成相同一般操作並作成來自該替換指令集的指令。因此,指令轉換器712代表軟體、韌體、硬體或其組合,透過仿真、模擬或其他處理,允許處理器或沒有x86指令集處理器或核心的其他電子裝置執行x86二進制碼706。
實施動態無序處理器管線的設備與方法
本發明之一實施例包括一動態無序管線的最佳化實施法,其以各種方式針對現存無序及有序VLIW處理器實施法的限制。硬體改良係在特殊界定(例如私有)指令集架構(ISA)特性與共設計軟體最佳化器的協助下加以完成,該最佳化器可以為最佳化編譯器708或用於ISA的二進制轉譯器(例如轉換器712)(見圖7)。重 要的是,新的最佳化硬體管線於硬體中保持與加強所有動態無序執行的所有基本原理。本發明實施例完成的其他寶貴特性為多重發出(wide issue)無序處理器設計的重大改良的硬體縮放性。
以下所述之一些實施例係根據支援傳統ISA(例如,英特爾架構(IA))的傳統無序管線的觀察加以設計,其必須確定ISA中的每一有效碼順序的硬體的正確超純量執行。然而,如果無序微架構係被設計用於新的精簡指令集電腦(RISC)狀ISA,其界定允許硬體執行的碼順序的某些限制,類似對於極長指令字(VLIW)ISA中的某些限制,無序管線硬體的實施法可以以若干方式加以實質最佳化。
在本專利案中描述了特定最佳化成為最近相關ISA相關或ISA衍生的發明的包裝。新的ISA可以私有或公共的。動態二進制轉譯(dBT)技術選用地將現行二進制碼(例如IA)轉譯為新私有ISA,並完成與現存軟體的完全二進制相容性。例如,在圖7中,dBT技術可以為指令轉換器712所實施,以將x86二進制碼706轉換為適用於在於此所述之處理器架構上執行的本地二進制碼。或者,新公共ISA的最佳化編譯器,例如圖7中之編譯器708可以用以產生可執行的二進碼710。
重要的是,在一實施例中,新硬體最佳化並未改變無序管線的基本原理,只是其實施法。因此,最佳化管線對照指令的傳統概念流程:指令的有序超純量擷取 及配置、動態資料流排序引擎(無序)、及指令的有序超純量收回。此兩者確保硬體可行性並協助匹配高效期待於整個大範圍的通用軟體應用上。
本發明所述實施例允許大量的硬體最佳化-簡化、縮減及強化-於超純量無序管線實施法中。以下特性係為這些實施例所實施:類似於有序處理器的前端中的顯著前端硬體最佳化;在無序管線下游的無序引擎配置、排序器設定及收回單元的大小的簡化與縮減;免除在配置管線中之幾個重要級間之相依性及縮減一些管線級,使得無序管線的區段更平行;幾個重要管線級的潛候期縮減,完成無序處理器的更寬的動態操作頻率/電壓範圍;沿著管線的很多硬體結構的分區設計,及其讀/寫埠縮減超出了傳統無序處理器的可用或實際者;在無序管線的幾個級的大量縱橫式(多工)結構的免除及高並列鬆分區組織,於部份資料路徑與控制匯流排中;及相較於傳統無序設計,對給定大小的昂貴無序硬體結構(例如保留站、緩衝器等)的改良利用。
在一實施例中,上述改良利用係在無序管線之其他部份中完成,藉由在有序組織之硬體內利用無序指令擷取的作用複雜度、配置至後端、及有關原始程式順序的收回。隨後,所有特性完成多重發出無序處理器設計的 較佳硬體縮放性。
(0)介紹
用以定義硬體/軟體共設計處理器的架構的典型範例假設與軟體碼最佳化器共設計的方法係透過設殊定義ISA特性加以應用,以完成在硬體中的一些新的指令級並列(ILP)概念,這與現行主流無序管線在組織及/或ILP利用原理上有顯著差異。然而,當相較於傳統純硬體的無序管線時,先前的嘗試在效能及/或效率上均無競爭力。
本發明的實施例係基於硬體/軟體共設計的新範例,其係針對無序管線的實施法。在硬體管線實施法中之最佳化包含:
ISA最佳化具有VLIW前端與收回/確定單元的無序管線
ISA最佳化的硬體暫存器重新命名
ISA最佳化的排序器設立邏輯及管線
ISA最佳化指令取消設立邏輯及管線
組合排序器設立及取消設立邏輯
組合排序器喚醒及取消邏輯
延遲硬體暫存器重新命名
指令的非憶測早期配送
最佳化無序管線的全分區組織
分區指令配置單元
在最佳化無序管線中之配置(寫)埠的縮減
最佳化管線中之無序引擎的無序配置
用於最佳化無序管線的硬體加強VLIW碼排序
ISA最佳化指令收回單元
無序管線的ISA最佳化叢集組織
多數無序管線最佳化係直接根據新的特別定義的ISA特性。新ISA可能是私有或公共的。如所述,dBT技術可以用以由現存(例如IA)二進制碼轉譯為新私有ISA並完成與現存軟體的全二進制相容性。或者,最佳化編譯器至新公共ISA需要產生可執行的二進制碼。
在不喪失一般性之下,以下所述之實施例假設使用具有最佳化無序管線的dBT技術。本發明的實施例並未施加任何特殊要求至dBT實施法,及dBT操作的特定細節並未在以下討論,以避免模糊本發明所內涵的原理。
(1)最佳化無序管線的特殊ISA要求
如於圖8所示,在一實施例中,最佳化無序管線的私有ISA係為RISC型態的固定長度指令格式800。更明確地說,負載-儲存ISA可以利用,其中各個固定長度指令包含3位址暫存器運算碼/運算元格式801(例如,dst、src1、src2)及顯式指令類型資訊802(例如,記憶體、ALU、控制)。另外,各個指令包含停止位元803,其當設定時,顯式標示用於私有ISA中之極長指令 字(VLIW)的邊界。
私有ISA的一特性為其定義一組指令群組限制,其可以包含:個別RISC指令(例如圖8所示)必須組合為有序的順序群組,其通常被稱為極長指令字(VLIW),其一例係示於圖9。更明確地說,圖9顯示多數個別指令901-907被群組為單一VLIW格式。因此,在一實施例中,私有ISA二進制碼包含有序順序的VLIW。在VLIW中的個別RISC指令有時被稱為“字節(syllable)”。
VLIW可以包含可變數量的字節,多到架構定義的最大值。因此,各個VLIW的長度為可變,但在其中具有固定長度RISC字節的粒度。出現在各個字節編碼中的停止位元803的一設定值顯式標示VLIW的邊界並被硬體管線所使用,以識別分開的VLIW。在各個VLIW內,一限制可能特定於某類型的多數符號(例如每VLIW不超過一控制指令)。
在一實施例中,在VLIW內的字節彼此間並未具有真資料流(讀在寫後(R-A-W))或假輸出(寫在寫後(W-A-W))資料流暫存器運算元相依性。在VLIW內可能允許假反資料流相依性(例如,寫在讀後(W-A-R))(見,例如圖11A-B及以下相關文字)。這些限制有效地表示除了記憶體操作外,在VLIW中的字節間並沒有程式排序關係。
在一實施例中,VLIW遵守程式順序。即,在 給定VLIW中的字節可以對在VLIW的程式順序中,另一較舊(即早先擷取)的前一VLIW上的字節,具有任何資料流相依性(R-A-W、W-A-R、或W-A-W)。
在私有ISA的一些實施例中,在VLIW中的字節的相關位置可以界定字節的類型。例如,給定類型的指令可以相對於相同類型的指令及相對於其他類型的指令,被嚴格地排序於VLIW內。另外,符號的位置可以定義在超純量管線(例如ALU0、ALU1等)中字節必須為硬體所操縱的特定指令配送埠(即硬體管)。例如,在圖9中,指令901為加運算,其可以根據其位置指向alu0。在一些實施例中,控制指令(例如,示於圖9的分支BRC)可以只佔用在VLIW碼中之某些允許相對位置。
特殊VLIW係被顯示於圖9中,其包含多達7個字節。其顯示以具有一控制字節907,(多達)兩個浮點向量字節905-906、(多達)兩個記憶體(載入、儲存)字節903-904、及(多達)兩整數ALU字節901-902。在控制(BRC)字節中之設定停止位元803標示VLIW例子的邊界。
(2)具有VLIW前端與收回/確定單元的ISA最佳化無序管線
用於本發明一實施例中之硬體最佳化係如下相較於傳統無序管線實施法。最佳化無序管線的高階結構係呈現為邊靠邊,具有圖10A-B中之傳統無序管線。在兩 管線間之一差異為最佳化管線分別使用有序VLIW前端單元1011及收回/確定單元1013,而不是在傳統管線中之有序超純量前端單元1001及有序超純量收回單元1003。在一實施例中,最佳化無序管線的各單元於每一時鐘週期運算一VLIW。
回頭參考圖1B,前端單元1001及1011可以包含示於前端單元130中之元件;資料流引擎1002及1012可以包含來自執行引擎單元150(例如,在一實施例中,除了154外)及記憶體單元170的元件;及收回單元1003及1013可以包含來自收回單元154的元件。
在一實施例中,最佳化管線每一時鐘週期配置無序字節不多過一VLIW。不像在傳統管線中的動態產生配置uop的“線”,VLIW可以為dBT最佳化器所靜態地預定義並顯式提供硬體,保證該ISA限制在群組RISC指令字節至VLIW期間被應用。
在配置於最佳化管線中的動態資料無序引擎1012後,VLIW係被分解為分開字節,使得引擎可以獨立地以類似(並不完全相同)於資料流引擎1002排序傳統無序管線中的分開uop的方式將它們排序。
(3)在最佳化管線中的無序引擎配置的基本組織
圖11A例示在傳統無序處理器的微運算(uop)的超純量配置“線”旁邊具有在最佳化無序管線的對應實體(在圖11B中的VLIW)的例子。
uop的超純量配置線可以包含幾乎由在處理器前端中的有效巨指令(ISA)順序轉換為微碼所造成的uop間的任一R-A-W(如連接uop0輸出至uop1的輸入的虛線箭頭1101所示)、W-A-R(如連接uop2的輸出至uop1的輸入的虛線箭頭1102所示)、及W-A-W(如離開uop0到達uop3的輸出的另一虛線與點箭頭1103所示)暫存器相依性。因此,傳統無序管線必須檢查並正確地處理在uop的各個配置線中的uop所有可能線間(或“直線”)相依性。另外,傳統配置硬體必須追蹤及適當地加強在一線中之uop間的原始程式排序關係。這些要求大大地複雜化在傳統無序管線中之配置硬體的實施並嚴重地阻礙較寬無序處理器設計的硬體縮放性。
相對地,使用如圖11B所示之VLIW實施法,在最佳無序管線中的對應配置實體必須遵守在VLIW中之字節指令間的允許相依性上的早先所述私有ISA限制。限制典型用於傳統VLIW ISA,並禁止在VLIW中的字節間的真資料流(R-A-W)相依性及假輸出(W-A-W)相依性。於字節間的假反相依性(W-A-R)被允許,如在圖11B中的連接I2的輸出至I1的輸入的虛線箭頭1112所示。私有ISA定義同時表示,除了記憶體指令外,在VLIW中的不同字節間,沒有程式排序關係。因此,來自單一VLIW的字節可以為該無序管線硬體以彼此相關的任何順序加以處理,並對其無序處理的正確性沒有任何複雜化。dBT軟體的責任為將原始二進制碼轉譯為全語意 (semantic)等效及有效私有ISA碼,遵守最佳化無序管線的所有限制。
(4)ISA最佳化硬體暫存器重新命名
如於圖12B所示,類似於傳統無序管線,於此所述之最佳化管線依賴硬體暫存器重新命名單元1213,以將私有ISA邏輯暫存器運算元映射至在微架構中可用的大量的實體暫存器。暫存器重新命名的目的為消除假W-A-R及W-A-W暫存器相依性,因此,增加在執行碼中的可利用並列的層級。
圖12A-B提供傳統管線中之暫存器重新命名(圖12A)與最佳化無序管線(圖12B)間的比較。如所示,在傳統管線中,需要大量的額外電路,包含運算元比較電路1201及運算元置換(override)電路1202(典型實施為大多工器)以解決相依性。不同於圖12A,在圖12B中所示之最佳化管線,只需要暫存器重新命名表1213。簡化與改良係根據在VLIW中的字節間沒有R-A-W及W-A-W相依性的事實。因此,重新命名單元並不需要檢查相依性並執行它們(因為它們並不存在)。此簡化在暫存器重新命名的讀取階段,消除了邏輯暫存器運算元比較器1201及相關實體暫存器運算元直接插入(inlining)多工器1202。後面的硬體削減係特別重要的,因為多工器1202佔用大量的線主管區域並增加了暫存器重新命名階段的整體潛候期。所移除的多工器同時也是在較寬發出 處理器設計中的重新命名單元中的最差可縮放元件。
在一實施例中,在最佳化管線中,VLIW所允許的假W-A-R反相依性係被類似於傳統無序管線地被消除,此係藉由延遲暫存器重新命名寫入階段相對於暫存器重新命名讀取階段的時鐘週期的一半加以進行。
在最佳化無序管線中的暫存器重新命名寫入階段的硬體實施法係藉由保證在配置VLIW中的字節間沒有假W-A-W輸出相依性而加以簡化,使得暫存器重新命名硬體不需檢查相依性並在更新暫存器重新命名表1213前正確處理它們。
(5)ISA最佳化排序器設立邏輯與管線
在其配置區段中完成最佳化無序管線的下一改良為有關於資料流排序器的設立邏輯。圖13A-B提供傳統管線(圖13A)與最佳無序管線(圖13B)中之配置與設立邏輯的比較。更明確地說,圖13A例示一串列配置的暫存器重新命名邏輯1301、排序器設立邏輯1302及排序器邏輯1303,及取消設立邏輯1304及取消邏輯1305。圖13B例示用於暫存器重新命名邏輯1311、排序器設立邏輯1312及取消設立邏輯1314,及排序器邏輯1313及取消邏輯1315的改良並列配置。
如上所述,任何無序管線免除來自配置碼的假W-A-R及W-A-W,以增加可利用的並列性與只考量真資料流相依性(R-A-W)。然而,在傳統無序管線中的 uop的配置線內,檢測與免除假相依性的複雜度與時間緊迫性強迫它相對於暫存器重新命名邏輯1301串列化排序器設立邏輯1302。暫存器重新命名邏輯1301免除假相依性,及排序器設立邏輯1302使用其結果以只考量(設立)真R-A-W資料流相依性。然而,此簡化增加配置管線的長度,並當配送一配置指令時,延遲最早的時間。
相對地,示於圖13B的最佳無序管線的實施例並不需要處理任何VLIW內之暫存器相依性,使得排序器設立邏輯1312並聯於暫存器重新命名邏輯1311所執行的暫存器重新命名執行排序設立。此實施法降低配置管線的整體長度(移除多數級)並允許較早配送指令,這改良在分支誤預測回復後與在指令快取失誤後的效能。另外,較短配置管線經由降低最小資源往返潛候期,改良無序引擎資源的利用率。
在最佳配置管線的一實施例中,排序器設立邏輯1312使用字節的運算元的邏輯ISA暫存器識別碼作為輸入資訊(例如,為邏輯暫存器運算元所索引),而不是較大實體暫存器識別碼。另外,排序器設立邏輯1312甚至並不需要檢查配置VLIW中的字節間的真R-A-W資料流相依性。這些特性允許用於排序器設立的典型內容可定址記憶體(CAM)被以較簡單更小的表為主排序器設立邏輯1312加以替換。在一實施例中,設立表映射具有用於邏輯暫存器的配置順序產生器指令中的最晚的各個排序器輸入項至對應邏輯暫存器;如果用於邏輯暫存器的最後 產生器指令已經被執行,則設立表報告暫存器為對在該排序器的任何指令沒有任何相依性。改良的排序器設立邏輯1312仍將需要處理在配置字節間的假W-A-R反相依性,這可以藉由相對於排序器設立邏輯讀取階段,延遲該排序器設立邏輯寫入階段一時鐘週期的一半加以實施。另外,有關暫存器重新命名(圖12B),排序器設立邏輯1312於寫入階段並不需要處理假W-A-W輸出相依性,因為在所述私有ISA中,此等假輸出相依性係被限制。
(6)ISA最佳化指令取消設立邏輯與管線
很多現行無序管線實行指令相關於負載操作的臆測配送,假設負載將擊中資料快取,這對於負載執行為統計上最常情況。此最佳化允許消費者操作較資料被非臆測地配送為早地接收載入資料。在資料快取內的負載失誤的罕見情況下,所有臆測配送相關操作必須在無序管線中被選擇性地取消。當失誤負載由處理器的記憶體階層的較低階輸送資料時,該等操作隨後為無序引擎所非臆測地再配送(重播)。
負載消費者的臆測配送係為指令取消邏輯1305所完成,其追蹤配置給無序引擎的uop對負載的相依性,包含其透過在排序器上的其他非負載uop的間接相依性。當在資料快取中負載失誤時,相依性資訊係被用以選擇性地取消受影響配送指令。類似於資料流排序器設立,傳統無序管線在暫存器重新命名1301後執行取消邏 輯設立1304並使用來自1301的重新命名暫存器資訊及來自1302的資料流排序器設立資訊及來自1305的先前取消設立資訊,以簡化取消設立邏輯1304的功能。因為需要透過uop的配置線,決定及追蹤負載上的間接相依性,設立功能仍複雜,其包含對多數硬體結構的串列化存取及中間設立資訊的複雜合併。
很像排序器設立邏輯1312的改良,最佳化無序管線改良取消邏輯設立1314,其係被與暫存器重新命名1311與排序器設立1312並列並以表為主的以邏輯暫存器運算元方式索引的方式實行(即,如1312所討論的無CAM)。該改良係類似地根據在配置VLIW中的字節間保證沒有的R-A-W及W-A-W相依性。
於負載指令上的特定取消識別與追蹤間接相關性同時也藉由在VLIW中沒有R-A-W與W-A-W相依性而在最佳化管線中被顯著地簡化,使得設立取消邏輯1314的整體複雜性與潛候期變成等於排序器設立邏輯1312者。W-A-R相依性係藉由相對於其讀取階段延遲取消邏輯設立1314的寫入階段時鐘週期的一半而加以類似地處理。在一實施例中,取消邏輯設立1314的寫入階段可以使用取消邏輯設立1314的讀取階段的結果作為輸入之一。
(7)組合的排序器設立與取消設立邏輯
取消設立邏輯1314的整體最佳化允許其在最 佳化無序管線中被組合上排序器設立邏輯1312成為單一表,其係可以為字節的運算元的邏輯暫存器識別碼所定址(索引)。此組合係額外根據所有的間接資料流相依性係在直接資料流相依性前解決的一般事實,如同應用至包含在指令取消資訊中的負載上的間接相依性。
(8)組合排序器喚醒與取消邏輯
另外,指令取消資訊可以現在被保持在資料流排序器1313的喚醒邏輯上與用於指令的真資料流(R-A-W)相依資訊一起,而不是如同傳統無序管線中在一分開的硬體結構中。最佳化係額外根據所有間接資料流相依性永遠在直接資料流相依性前被解決的一般事實,如同應用至包含在指令取消資訊中的負載上的間接相依性。
所有這些表示最佳化無序管線完全消除分開指令取消設立與追蹤邏輯硬體的需求,這需求在傳統無序引擎中有大量的電力與佔用面積,但同時,這些仍能完全地執行選擇指令取消功能。
(9)延遲硬體暫存器重新命名
配置管線實施法的另一最佳化係根據上述的排序器1312-1313與取消設立邏輯1314的改良消除了在無序管線中的暫存器重新命名級的危急性的事實。
供參考,傳統無序管線要求暫存器重新命名1301被儘可能愈快完成。此要求係因為後續排序器設立 1302與取消邏輯設立1304功能取決於來自重新命名級的資訊。
在新最佳化無序管線中,暫存器重新命名階段1311可以被延遲直到重新命名暫存器資訊被首先需要為止,即直到在指令可以由管線中的資料流排序器首先配送之前。相較於傳統管線,延遲暫存器重新命名1311允許自由實體目的地暫存器的隨後配置,使得最小實體暫存器往返潛候期被縮短及給定大小的實體暫存器檔案可以較佳利用。暫存器重新命名危急性的消除也可以用以最佳化無序引擎的實體佈局,因為有關於在配置管線中之其他硬體結構的暫存器重新命名表的置放要求現在可以被放鬆。
(10)指令的非臆測早期配送
現行無序處理器可以實施配置指令的早期配送,這係與其管線的排序器設立及指令排序級並列執行。指令的早期配送改良處理器效能,因為很多配置指令,特別是在分支誤預測回復後或指令快取失誤後,係實際上準備在其配置時間被配送。然而,有關於指令完備的資訊,在傳統管線之此早期階段並無法獲得。結果,管線藉由假設任何配置指令在其配置時間已經完備,而臆測地作出早期配送。
隨後,在傳統管線中,處理器檢查決定是否臆測配送的指令是否確實完備,若否,則取消該指令。誤臆測的早期配送指令的取消需要特殊硬體支援並產生額外 的功率耗用。
上述排序器設立邏輯1312與配置管線的最佳化使得指令完備資訊可以足夠早地完備獲得,使得最佳化無序管線可以只對完備指令執行非臆測早期配送,如此,消除了取消的功率耗用以及相關取消硬體。
(11)最佳化無序管線的全分區組織
在無序管線的最佳化硬體實施法中之另一顯著改良為根據在VLIW中之不同類型的指令(字節)(例如ALU、記憶體、控制等)間的ISA界定嚴格相對排序的利用,以及根據在VLIW之字節間的特定程式排序關係間的預定失缺(absence),除了記憶體操作之外。
另外,私有ISA的一實施例界定在VLIW內的相同類型的指令的嚴格相對排序。即,如果相同類型的幾個指令(例如,兩ALU指令)出現在VLIW中,則ISA的一實施例界定特定配送埠,每個指令必須為硬體所操控至該等配置埠。
對於在VLIW中的多數記憶體指令,ISA的一實施例取決於指令必須操控到記憶體配送埠,界定記憶體存取的相對規劃排序。例如,在一實施例中,有關於記憶體配送埠0(MEM0)的VLIW字節一直包含記憶體指令,其相對於有關記憶體配送埠1(MEM1)的VLIW字節,在規劃順序上為較舊。
私有ISA的一實施例允許如圖14B所示之最 佳無序管線的全分區實施法。各個管線分區或硬體管係相關於一特定硬體配送埠,例如,ALU0、ALU1、MEM0、MEM1、CONTROL等。管線分區功能獨立或彼此鬆耦合,大大地簡化處理器硬體設計、驗證與製造。分區同時也對無序引擎實施完成簡單、流線式與更並列的實體佈局。
在一實施例中,編碼VLIW係以緊密形式出現在記憶體,如同在私有ISA界定。即,VLIW可能不包含所有可能字節類型,或者,可能也不會有指令類型的與硬體配送埠相同類型的那般多的字節;然而,這些失落的字節並不會佔用在指令記憶體內的任何空間。在一實施例中,前端管線1011擴充緊密VLIW並將所有其現行字節(指令)置放入對應管線分區。由此點,在最佳化無序管線中,這些指令只為指令依據私有ISA定義被操控的管線分區所處理。
在一實施例中,此管線分區相較於傳統者,在最佳化管線中允許免除大量多工器與縱橫式開關。此發生乃由於界定在用於VLIW的私有ISA中的指令的相對排序準確匹配硬體結構的相對拓樸與在無序處理器佈局中的讀/寫埠,使得對於特定硬體結構,在整個管線中並不需要額外多工、或指令操控或其控制欄位。
傳統與最佳化無序管線由解碼指令佇列讀取階段至執行階段的比較係如圖14A-B所示。更明確地說,圖14A例示經由第一縱橫式開關1401 uops0-3被切換至 重新命名/配置級1404順序。第二縱橫式開關1402將uop由該重新命名/配置級1404耦接至排序級1405,其包含單石保留站(RS)。在配送級中的第三縱橫式開關1403將排序級1405耦接至實體暫存器檔1406,以讀取被配送的uop的運算元及至uop被配送的執行埠1407。
相反的,在圖14B中,免除了幾個縱橫式開關及多工器。更明確地說,在暫存器重新命名級1404的縱橫式開關1401被免除,該重新命名級將以其規劃順序置放的指令的邏輯暫存器運算元欄配送至特定類型暫存器重新命名表(或RAT)或至在表中之特定讀取或寫入埠。此縱橫式開關在最佳化管線中為冗餘的,由於在VLIW中的字節順序係直接匹配RAT硬體拓樸。因此,在圖14B中,指令0-3係被直接饋入重新命名/配置級1414。在一些實施例中,相較於無序處理器的傳統ISA,在需要時,較少的排序限制可以被界定於私有ISA中,使得縱橫式開關並未被完全免除,而其複雜度、功率、潛候期及面積被顯著縮減。
在圖14B中也被免除的是在排序器配置級的縱橫式開關1402,排序器配置級將以其規劃順序置放的指令配送至資料流排序器1405(或保留站RS)的特定分區(或邏輯部)。此縱橫式開關1402在最佳化管線中變為冗餘,因為在VLIW中的字節的順序係直接匹配在圖14B中的資料流排序器的分區1415的硬體拓樸。在一些實施例中,相較於無序處理器的傳統ISA,當需要時,較 少的排序限制可以被界定於私有ISA中,使得縱橫式開關並未被完全免除,但其複雜度、功率、潛候期及面積被顯著縮減。
在指令配送級中同時免除的是縱橫式開關1403,該指令配送級將來自在資料流排序器(RS)1405中的其位置(分區)的配送指令再配送給特定實體暫存器檔1406與其特定讀取埠,及至特定指令執行埠1407。在最佳化管線中,此縱橫式開關變成冗餘,因為資料流排序器1415的分區的相對置放係準確地匹配暫存器檔1416的硬體拓樸與其讀取埠及指令執行埠1417。
一些現行傳統無序處理器管線同時實施資料流排序器(RS)的分區組織;然而,此特性只允許它們免除在指令配送級的較後縱橫式開關1406,而不是任意其他縱橫式開關。況且,傳統具有分區RS的無序管線必須實施額外硬體單元,以操控配置指令至適當分區並確保與各個分區相關的不同指令執行埠的平衡利用。在一實施例中,最佳化無序管線並不需要額外分區負載平衡硬體單元並依賴碼最佳化軟體以在其產生的二進制碼中完成執行埠載平衡。後者的負載平衡資訊經由在早先所述的私有ISA的VLIW的字節排序定義,被隱含地傳送至最佳化硬體管線。
免除多工器與縱橫式開關造成在最佳化無序管線中的潛候期(即,完成較高時鐘頻率)、功率及面積的顯著縮減。因為多工器與開關為線式硬體結構並且在更 細微製程中,線的縮減一直較矽裝置的縮減有相對差的情況,所以,此正面影響將對於未來細微矽製程為更重要。
因為縱橫式開關類型硬體結構的面積與潛候期隨著其輸入/輸出數目的線性增加而較差地縮減(約平方),所以縱橫式開關免除完成了最佳化無序管線的硬體實施法的較佳縮放性供較寬處理器設計。重要的是,注意最佳化無序管線仍可以在前端管線中利用多工器,以將解碼指令由一擴充VLIW輸送至適當管線分區。也可以使用多工器,用以供運算元旁路開在管線中之配送、執行及寫回級(見圖15)。在剩餘級中,最佳化無序管線變成沒有多工器與縱橫式開關。
圖15例示最佳化4-寬無序引擎具有n-輸入項資料流排序器的一實施例,其包含幾個4x分區管線級。尤其,所示實施例包含:4x分區解碼指令佇列1501,用以儲存4解碼指令(例如,來自VLIW的字節);4x分區配置單元1502,用以配置指令至處理器資源;4x分區n-輸入項排序器喚醒邏輯與保留站1503,具有4x分區組的(n/4):1指令選擇邏輯1504;一組實體暫存器檔1505;運算元旁路邏輯1506;及多數功能單元1507。在一實施例中,對於排序器喚醒邏輯與保留站1503的所有四個分區,有總數n個輸入項,用以儲存n個等待執行之指令及各個分區儲存n個指令的n/4。例如,對於n=32的值,各個分區1503儲存32/4或8個指令(以8輸入項),及各個選擇邏輯分區1504可以由管線中與其有關 的8-輸入項喚醒邏輯分區1503中,選擇多達8個完備指令中之一個。
在一實施例中,排序器喚醒邏輯1503的各個分區可以被組態以只儲存某一類型的指令,以簡化這些指令的分送至執行單元1507。例如,在圖15中,分區#2及#3可以儲存ALU指令及分區#0及#1可以儲存記憶體指令(因為這些指令係容易由這些分區分送至其個別執行單元)。
配置邏輯1502只包含一個寫入埠至在排序器喚醒邏輯中之四個分區之每一個。另外,4x分區選擇邏輯1504包含一讀取埠至各個分區1503並能每週期選擇四指令-各個分區1503一個(例如,在一實施例中,使用一組四個8:1多工器)。因此,管線的4x分區顯著地減少實行排序器喚醒邏輯1503與選擇邏輯1504所需的矽面積,因為在排序器喚醒邏輯1503的各個分區只需單一讀取埠與單一寫入埠。即,選擇邏輯1504的各個分區只需要能由四分區中之每一個選擇n/4指令中之一者,並具有4x((n/4):1)的總選擇複雜度(相對於n指令,其將造成非分區實施法,具有n:4的總選擇複雜度)。在一實施例中,選擇邏輯1504觀察所有可能被執行(即其運算元完備)的指令,並根據例如指令的配置年齡(age)與被指定執行單元的指令配送槽的可用度的變數,由各個分區選擇一指令來配送。
在圖15所例示的特定實施例中,有兩個記憶 體執行通道(例如,用以負載及/或儲存位址指令輸入至實體暫存器檔1505、運算元值旁路單元1506及記憶體位址產生單元MEM0及MEM1 1507)與兩ALU通道。
在其他潛候期、功率及面積優點中,排序器分區對更多重發出處理器設計提供較佳硬體縮放性。雖然該類型的排序器縮放性對於最佳化無序管線並不是特有並可以在一些傳統管線中找到,但其藉由該等能力而明顯促成最佳化管線,以在私有ISA中定義更長VLIW格式並藉由dBT最佳化器軟體以指令填入較長VLIW。
(12)分區指令配置單元
由最佳化無序管線的全分區組織造成的另一硬體實施法改良有關於指令配置單元1502的實施法。指令配置單元1502在無序管線的配置級中工作並且也被分區,使得其各個分區只剛好服務最佳化管線的一分區並在每一時鐘週期,將之只配置給該分區的類型的不超出一指令(例如,ALU或記憶體等)。分區配置單元1502已經縮減硬體複雜度與總面積,加上其對於較寬無序處理器設計已經有較佳縮放性。
(13)在最佳化無序管線中之配置(寫入)埠縮減
在一實施例中,私有ISA可以限制在VLIW中允許的特定類型的指令之最大數量。限制可以用於額外縮減與簡化配置硬體單元(如上述)及在最佳化無序管線 中之一些相關硬體結構。
例如,如果VLIW可能包含不超過如圖9所示之兩記憶體運算(兩負載、或一負載與一儲存、或兩儲存),則在如同負載緩衝器(LB)與儲存緩衝器(SB)的174中的記憶體排序緩衝器(MOB)中的關鍵與大結構(見圖1B)可能相較於在類似傳統無序管線中的MOB具有縮減量的配置(寫入)埠。傳統管線必須提供硬體作為相同類型的指令的最高可能配置率,因為此率並不是為現行傳統ISA(即,IA)所限制。例如,現行架構需要能同時配置(寫入)多達四負載給LB。於此所述之最佳化管線中的至MOB結構的縮減數目的寫入埠造成相當大面積與功率上的縮減。
(14)在最佳化管線中的無序引擎的無序配置
在一實施例中,硬體資源的較佳利用係在最佳化無序管線中完成,由於無序引擎的無序配置的結果。無序配置的影響本質上係由要求dBT最佳化器,遵守私有ISA限制,將字節置放於VLIW中的要求所造成。明確地說,在VLIW中的字節間不能有真資料流(R-A-W)及/或假輸出(W-A-W)相關性。dBT最佳化器藉由適當地重新排序例如IA輸入指令在將之轉譯為私有RISC字節之後但在將之群集為VLIW之前實踐該等限制。由於靜態碼重排序的結果,消費者(相依)指令係相對於其產生器指令被置放入後續VLIW;及在最佳化無序管線中的消費者 指令只有在相對於其產生器的時間配置的下一時鐘週期的一時間週期中被配置至該無序引擎。
圖16顯示一例示順序指令(例如轉譯字節)並顯示該無序碼預排序(例如藉由dBT最佳化器)的有利作用。尤其,無序指令“窗”1600係被用於給定硬體容量。字節係依據相依性被移入或移出該窗。例如,幾個相依指令1602係被顯示在窗前(即,在隨後執行時間)被移動及其他獨立指令1601係被顯示被移入該窗(在較早執行時間)。
消費者指令的延遲(無序)配置對於資料流排序器輸入項與在最佳化無序管線中的其他硬體緩衝器資源的利用有正面影響,因為一相依指令只可以在其產生器指令的最後指令被配送後的下一時鐘週期被配送(最早)。任何較早配置將只會浪費硬體資源。
相對地,傳統無序管線必須經常地在相同時鐘週期中配置產生及消費指令,使得配置用於消費者指令的硬體資源被浪費至少一時鐘週期。此發生係因為其前端單元1001不能由解碼指令流(例如,IA流)產生的微碼中重排uop;同時,對於指令流的微碼本質上具有鄰近其產生器指令的消費者指令。例如,在微碼中的uop的負載+ALU組合典型係用於程式碼並經常在相同時鐘週期中被配置給無序引擎。因此,消費者ALU指令取決於產生負載操作的潛候期,可能在傳統管線中浪費硬體資源至少3-4時鐘週期。
由於在產生器與消費者指令的相對配置中之差異的結果,在最佳無序管線的給定尺寸的硬體資料流排序器觀察到平均較傳統管線中的類似排序器為多的完備指令。因此,排序器的輸入項在最佳化管線中被較佳利用,使得排序的大小可以被縮減而沒有效能上的損失,或者,給定大小的排序器可以服務較大/較寬無序處理器,而不必限制其效能,即,無序配置的作用改良了最佳化無序管線的硬體縮放性。
重要的是,注意到最佳化無序管線完成無序配置,而不必額外硬體,因為為dBT軟體最佳化器所執行的碼預排序為VLIW的副產物遵循私有ISA限制。
類似地,最佳化無序管線有效地在例如IA輸入應用中,擷取、解碼、及甚至收回指令離開其原始規劃順序。再者,在最佳化無序管線中的前端、配置及收回單元仍執行其簡單有序功能。該等單元的硬體尺寸與複雜度係遠小或至少與傳統無序管線一樣,傳統無序管線不能利用無序擷取與配置的類似正面作用,而不會有顯著增加前端硬體與其複雜度,如在前端中之多線擷取、在前端中之指令預排序/重排序單元等等。
(15)用於最佳化無序管線的硬體加強VLIW碼程序
考量將碼(預)排序為用於最佳化無序管線的dBT軟體最佳化器所執行之VLIW,重要的是指出在所得VLIW碼程序中相對於傳統有序VLIW管線處理器的類 似VLIW碼程序的幾個重要改良。在傳統有序VLIW管線中,各個VLIW係擷取、解碼、配置(或傳送至後端管線)、配送及收回/確定的極小單元。即,有序管線的對應級作用於整個VLIW上,即同時作用在所有字節上。
相反地,在最佳化無序管線中,VLIW作為擷取、解碼、配置及收回/確定,但並非配送的極小單元。在後端配置級期間,VLIW變成分割成為個別字節(RISC指令),為了硬體資料流排序器的可能無序之其獨立動態排序與配送的目的。在最佳無序管線中的硬體資料流排序器的出現完成用於它的加強VLIW碼程序,這將解釋如下。
傳統有序VLIW管線的軟體碼最佳化器係負責建立指令的準確(與超純量,即並列)配送順序。配送順序為有序管線所精確地遵循。因此,相關指令必須遵循在傳統VLIW程序中的產生指令,至少最多產生指令的準確潛候期。對於單一週期產生器,消費者可以置放於程序中之下一VLIW。對於多週期負載的消費者,全負載潛候期(以VLIW表示,作為在有序管線中的最大配送率係為每時鐘週期一VLIW)必須在消費者可以置放於VLIW碼前跳脫。
如同多數具有高跳脫數的內環路,這對於固有高指令級並列與靜態可預測控制流的排序碼並不會造成大問題,因為在多週期產生器與其消費者間的VLIW中的所有空白字節可以容易地為軟體最佳化器以其他獨立指令 加以填入。
然而,對於具有低固有並列與很多條件分支的排序碼而言,傳統VLIW軟體最佳化器必須注入很多no-ops至碼程序中,只保證硬體管線看到在碼程序中的所有多週期產生器與消費者間的正確潛候期。no-ops在有序硬體管線中造成泡沫並造成在傳統VLIW處理器的硬體資源的欠配置(即低利用),如同在Itanium處理器系列(IPF)中者。
最佳化無序管線的一實施例包含硬體機制,其減緩在傳統VLIW碼程序中發現的低效率。明確地說,對於具有低並列的碼,dBT最佳化器取決於無序引擎的能力,以動態動容許在硬體中的整個指令的長潛候期,並假設所有指令具有單位(一時鐘週期)潛候期,而不是在其產生的加強VLIW碼程序中加強實際指令潛候期。相較於傳統VLIW程序,該單位潛候期假設使得程序更密集(緊縮)且沒有no-op,這增加後端配置率,但仍提供最佳化無序管線以在指令間的正確相依性的足夠資源。
對於具有較高並列的碼,最佳化無序管線的dBT軟體最佳化器的一實施例考量主要是負載指令的指令的實際潛候期及在轉譯碼區域中的特定指令的相對危急度,以作為其更快執行的目的。結果,對於具有高並列的碼,加強VLIW碼程序取得傳統VLIW碼程序的多數特性:產生器與消費者指令於程序中被分割,以至少部份考量產生器潛候期,及更多危急指令係經由在VLIW碼程序 中的較早置放被配置在較不危急指令前的無序引擎。即,在具有高並列的碼中的多週期指令潛候期係(部份)經由VLIW碼程序容許,而不是整個為無序引擎的硬體所容許。加強VLIW碼程序為密集(緊縮)並無no-op。最佳化無序管線的碼程序的執行造成具有高指令級並列度(ILP)碼的較佳效能,並且,如早先所述,同時相較於傳統無序管線允許無序硬體資源的較佳利用。
在一實施例中,用於最佳化無序管線的加強VLIW碼程序係被機會主義地產生:碼程序必須正確地反映於指令間的相依性(相依指令係被置放於分開的VLIW),但可能不準確地遵循產生指令的最小潛候期,以替代其消費指令。相較於依賴類似VLIW ISA特性的傳統有序硬體管線(例如,在IPF處理器中者),此加強在最佳無序管線中完成更佳碼程序密度及指令配置率。
另外,對於最佳化無序管線的加強VLIW碼程序降低典型在傳統無序管線中的無序引擎的硬體資源的過配置,藉由不將產生器與消費者指令置放於相同VLIW中,因而防止它們於相同時鐘週期中被配置於無序引擎中。
(16)ISA最佳化指令收回單元
在一實施例中,位於最佳化無序管線的收回/確定區1013中的收回單元以VLIW粒度嚴格地收回指令,多達每一時鐘週期一VLIW(為dBT最佳化器所靜態 預定義)。相對地,傳統無序管線必須在硬體中動態地選擇用於收回的uop的超純量群組(“線”)並考量在選擇時的可能進行中的中斷及/或例外,以及,在uop的“線”的收回流中的原始巨指令(ISA)間的邊界。
在一實施例中,類似於配置管線區段1502,在1013中,收回管線區段的硬體實施法係被最佳化,因為當其產生碼時,dBT軟體最佳化器遵循定義在私有ISA中的VLIW中的字節上的限制。明確地,在一實施例中,在VLIW中的字節間沒有假輸出相依性(W-A-W),在VLIW中沒有程式排序(除了記憶體操作),使得收回單元硬體可能不執行相依性檢查並可以在收回期間忽略排序,不像在傳統無序管線中的類似單元。對於多重發出無序處理器設計的傳統收回單元中,免除相依性與排序檢查邏輯典型地為最差可縮放硬體。另外,因為在一實施例中,每時鐘週期只收回一VLIW,所以,在最佳化收回管線中的例外檢測與程式計數器更新機制並不需要複製超純量(即並列)收回,因為其已完成用於典型在傳統無序管線中的uops的超純量收回,以小心地處理在uops級的“線”的巨指令(ISA)間的邊界。
所有這些特性允許具有很高尖峰處理量的ISA最佳化收回單元的簡化與鬆耦合分區硬體實施法。
為完整性,重要的是,注意在最佳化無序管線中的重排序緩衝器(ROB)也可以以全或部份分區方式實施,以完成具有最佳化分區配置與收回單元的改良積 集,並支援多重發出無序處理器設計的較大硬體縮放性。
收回單元的這些最佳化暗示在最佳化無序管線中的準確架構暫存器與記憶體狀態係被支援有每一VLIW的精確度(例如,為dBT最佳化器軟體所靜態產生的在相鄰VLIW間的邊界)。此準確狀態在一實施例中,係用於處理硬體中斷、執行例外、故障等等。
最佳化無序管線的一實施例明確地支援用於架構暫存器與記憶體狀態的私有ISA定義。dBT軟體的責任為建立準確私有ISA狀態的可靠地映射至對應準確原始二進制碼(例如,IA)狀態,並當需要執行軟體應用時,能夠重建後續正確暫存器與記憶體狀態,因為其被原始二進制碼的ISA(例如IA)所暗示。
(17)無序管線的ISA最佳化叢集組織
最佳化無序管線的一實施例完成經由私有ISA特性與dBT最佳化軟體支援的叢集無序微架構的有效實施法。叢集微架構將單石及大硬體架構與資源細分為較小部件(叢集),使得其實體實施法變得更簡單,以及,硬體縮放性改良,因為各個部件具有較低潛候期並可以以較對應單石硬體結構為高的時鐘頻率執行。
叢集微架構的典型應用為多重發出處理器設計,其將實體暫存器檔案及/或運算元旁路網路細分為兩或更多較小叢集,例如8-寬無序處理器,其係被實施為兩個4-寬單石執行叢集並以4寬處理器的時鐘頻率執行。此 叢集硬體實施法具有固有效能損耗,然而,資料存取的潛候期與在分開叢集間的轉移變成大於在叢集內者或用於較小單石無序微架構者。
當執行碼中的重要資料相依性係排序於所有叢集時,叢集間通訊的額外潛候期典型曝露於整個執行時間,並因此,加入叢集間通訊潛候期,其相對於具有類似邏輯大小及/或容量的硬體結構的假設(但不必然可行)大單石無序微架構,劣化效能。
因此,叢集無序微架構的效率取決於叢集間潛候期的曝露係如何地經由配置指令的操控適當叢集而加以減緩,以最小化執行的有效重點路徑通過叢集邊界的速率-效能劣化的主因。
在叢集微架構中的選用指令操控機制的實施法係被廣泛認為是一挑戰工作。原始指令操控技術相對於相同發出寬度的單石無序管線基準線,造成大(例如20%-30%)效能劣化,這侵蝕叢集多重發出無序處理器的硬體效率。
更智慧指令操控啟發法不只需要額外硬體,用以完成擷取碼的重要路徑分析並產生適當操控決定,但在分析範圍也很受限,因為在指令配置至無序後端前,當硬體沒有有關完成最佳操控決定的配置指令的足夠及/或可靠上下文資訊操控時,所以操控決定必須在前端管線中完成。由於固有困難,所以,傳統無序管線並沒有實際有名的叢集實施法被開發出。
相對地,在最佳化無序管線的一實施例中,dBT軟體最佳化器在其轉譯時間,分析碼的重要路徑特性,作為正常碼排序處理的一部份。dBT最佳化器本質上具有足夠上下文資訊並考量在碼的大區域中的指令相依性的重要度,允許其靜態完成足夠最佳化操控決定(在碼轉譯時間),以供在碼執行時,最佳化無序管線遵循。
用於最佳化叢集無序管線中的指令操控的這些dBT致能技術顯著地(下至1%至3%)橋接在叢集與單石無序微架構組織間的效率與效能間隙,這大大地改良高端很寬的無序處理器設計的硬體可縮放性,使得它們容易由商業產品觀點看來可行。
在一實施例中,指示操控叢集的指令的資訊係經由在私有ISA界定的操控特性,被顯式送至最佳無序管線,該私有ISA可以被實現為用於為ISA所界定的VLIW中的字節的整個排序限制的整體部份。例如,這可以使用在VLIW中的特定字節位置的靜態映射至特定硬體叢集加以完成,這係類似於早先所述該些位置如何被映射至在最佳化無序管線中的特定執行埠加以進行,或者,經由在用於雙叢集微架構組織的字節編碼中的1位元叢集操控暗示(將需要更多位元以編碼用於較大數量叢集的操控暗示)。
(18)在最佳化無序管線上的雜項標記
最佳化無序管線的實施例允許現存二進制碼 (例如,IA)的很多已知或“古典”dBT最佳化的有效實施法。此等最佳化例子包含但並不限於臆測迴路不變碼動作、臆測暫存器值溢出及填入碼最佳化(也稱為暫存器升等(promotion))、臆測控制流最佳化(免除只偏壓至一個路徑條件及/或間接分支、IF轉換、碼矯直)等等。另外,在現行無序處理器中,可用的很多唯硬體無序管線最佳化可以被實施為“如同”,或藉由實施它們而簡化與加強成為在最佳化無序管線中的硬體/軟體共設計。此等最佳化的例子包含但並不限於指令熔合、移動指令免除、零成語指令免除、早實體暫存器回收、臆測鎖定省略等等。
本發明的實施例可以包含已經描述如上的各種步驟。這些步驟可以被實施為機器可執行指令,其可以用以使通用或特殊目的處理以執行這些步驟。或者,這些步驟也可以為特定硬體元件所執行,這些硬體元件包含硬接線邏輯,用以執行這些步驟,或藉由程式電腦元件與慣用硬體元件的任意組合來執行這些步驟。
如此所述,指令可以被表示為硬體的特定架構,例如特定應用積體電路(ASIC),其被架構以執行某些運算或具有預定功能或軟體指令,其被儲存在實施為非暫態電腦可讀取媒體中的記憶體中。因此,示於圖中之技術可以使用所儲存之碼與資料實施並執行於一或更多電子裝置(例如端站、網路元件等)之上。此等電子裝置使用電腦機器可讀取媒體儲存及傳送(內部及/或透過網路與其他電子裝置)碼與資料,可讀取媒體例如非暫態電腦 機器可讀儲存媒體(例如,磁碟、光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)與暫態電腦機器可讀取通訊媒體(例如,電、光、音、或其他形式的傳遞信號-例如載波、紅外線信號、數位信號等等)。另外,此等電子裝置典型包含一組一或更多處理器,耦接至一或更多其他元件,例如,一或更多儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控板及/或顯示器)、及網路連接。該組處理器與其他元件的耦接係典型透過一或更多匯流排與橋接器(也稱為匯流排控制器)。承載網路話務的儲存裝置與信號分別代表一或更多機器可讀取儲存媒體及機器可讀取通訊媒體。因此,給定電子裝置的儲存裝置典型儲存碼及/或資料,用以執行於該電子裝置的該組一或更多處理器上。當然,本發明實施例的一或更多部份可以使用不同組合的軟體、韌體及/或硬體加以實施。在此詳細說明之後,為了解釋的目的,各種細節係被加以說明,以提供對本發明的完整了解。然而,為熟習於本技藝者所明顯,本發明可以沒有一部份這些特定細節下加以實施。在某些情況下,已知結構與功能並未被詳細描述,以模糊本發明的標的。因此,本發明之範圍與精神應以以下的申請專利範圍加以判斷。
1011‧‧‧前端單元
1012‧‧‧資料流引擎
1013‧‧‧收回單元

Claims (26)

  1. 一種設備,包含:指令擷取單元,用以由記憶體以規劃順序擷取極長指令字(VLIW),各個該VLIW包含多數精簡指令集計算(RISC)指令字節被以一順序群集為該等VLIW,該順序移除在該等字節間的資料流相依性與假輸出相依性;解碼單元,用以以規劃順序解碼該等VLIW並以並列方式輸出各個被解碼的VLIW的該等字節;無序執行引擎,用以與其他字節並列地執行至少部份的該等字節,其中該至少部份的該等字節將被以與由該解碼單元接收的順序不同的一個順序被執行,該無序執行引擎具有一或更多處理級,其當執行運算時,並未檢查資料流相依性與在該等字節間的假輸出相依性;及轉譯器,用以將程式碼由高階程式語言或公共指令集架構(ISA)格式轉譯為包含該等VLIW與字節的私有ISA格式。
  2. 如申請專利範圍第1項之設備,其中該無序執行引擎包含暫存器重新命名邏輯,用以實施讀取邏輯暫存器運算元的讀取階段,而不使用多工器與/或邏輯暫存器運算元比較器。
  3. 如申請專利範圍第2項之設備,其中該無序執行引擎更包含排序器設立邏輯,用以在排序供功能單元所執行之多數字節之前,評估該等字節間的相依性,該排序設立邏輯與該暫存器重新命名邏輯的該讀取階段並列執行。
  4. 如申請專利範圍第3項之設備,其中該排序器設立邏輯更並列於可為該無序執行引擎所用的取消設立邏輯運算各個字節,以取消部份配送字節的作用。
  5. 如申請專利範圍第1項之設備,其中該轉譯器包含最佳化編譯器或二進制轉譯器,包含但並不限於動態二進制轉譯器。
  6. 如申請專利範圍第5項之設備,其中該轉譯器當轉譯至該私有ISA格式時,解析資料流相依性與假輸出相依性,使得包含來自記憶體之包含在有序擷取各個VLIW內的該等字節不會有資料流相依性與假輸出相依性。
  7. 如申請專利範圍第6項之設備,其中該資料流相依性包含讀在寫後(R-A-W)相依性與假輸出相依性包含寫在寫後(W-A-W)相依性。
  8. 如申請專利範圍第7項之設備,其中該轉譯器允許在VLIW內的假反資料流相依性。
  9. 如申請專利範圍第8項之設備,其中該假反資料流相依性包含寫在讀後(W-A-R)相依性。
  10. 如申請專利範圍第1項之設備,其中該等字節為多重類型,包含一或更多控制字節、一或更多浮點向量字節、一或更多記憶體字節、及/或一或更多整數ALU字節的任意組合,其中各個字節可以為對應類型的RISC指令所代表。
  11. 如申請專利範圍第10項之設備,其中該字節的類型被字節在VLIW中的被允許的相對位置所界定。
  12. 如申請專利範圍第1項之設備,其中該無序執行引擎包含配送邏輯,用以執行字節的非臆測早期配送。
  13. 如申請專利範圍第1項之設備,其中該無序執行引擎係被全分區,包含具有N分區的暫存器重新命名/配置單元,及具有N分區的排序器單元。
  14. 如申請專利範圍第13項之設備,其中該等分區係被實體安排以處理部份類型的指令。
  15. 如申請專利範圍第14項之設備,其中在該排序器單元中的第一分區係相關於第一類型的執行單元,以及,在該排序器單元中的第二分區係相關於第二類型的執行單元。
  16. 如申請專利範圍第13項之設備,其中該重新命名/配置單元與該排序器單元的分區降低在該無序執行引擎及/或包含其載入及儲存緩衝器的記憶體排序緩衝器中的寫入埠數目。
  17. 如申請專利範圍第1項之設備,其中該公共ISA包含英特爾架構(IA)。
  18. 一種設備,包含:轉譯器,用以將程式碼由公共指令集架構(ISA)格式轉譯為包含極長指令字(VLIW)的私有ISA格式,各個該等VLIW包含以一順序群集為該等VLIW的多數字節,該順序移除在該等字節間的資料流相依性與假輸出相依性;及無序執行引擎,用以並列於其他字節執行至少部份的 該等字節,其中至少部份的該等字節將被以與字節由該無序執行引擎接收的順序不同的順序被執行,該無序執行引擎包含一或更多處理級,當處理該等字節時,該一或更多處理級並不檢查該等字節間的資料流相依性及假輸出相依性。
  19. 如申請專利範圍第18項之設備,其中該等級的至少一級包含暫存器重新命名級,其將用以實施用以讀取字節的實體暫存器運算元的讀取階段,而不使用多工器或邏輯暫存器運算元比較器。
  20. 如申請專利範圍第19項之設備,其中該無序執行引擎更包含排序器設立邏輯,用以在為執行單元執行多數字節的排序前,評估在該等字節間的暫存器資料流相依性,該排序器設立邏輯與該暫存器重新命名邏輯的該讀取階段並列執行。
  21. 如申請專利範圍第20項之設備,其中該排序器設立邏輯更進一步以該無序執行引擎可使用的取消設立邏輯的並列方式運算各個字節,以取消部份配送字節的作用。
  22. 如申請專利範圍第18項之設備,其中該轉譯器包含最佳化編譯器或二進制轉譯器。
  23. 如申請專利範圍第22項之設備,其中該資料流相依性包含讀在寫後(R-A-W)相依性及該假輸出相依性包含寫在寫後(W-A-W)相依性。
  24. 一種方法,包含: 將程式碼由公共指令集架構(ISA)格式轉譯成包含極長指令字(VLIW)的私有ISA格式,各個該等VLIW包含以一順序群集為該等VLIW的多數字節,該順序移除在該等字節間的資料流相依性與假輸出相依性;及與其他字節並列的方式,以無序執行引擎執行至少部份的該等字節,其中至少部份該等字節將被以它們為該無序執行引擎接收的順序不同的順序加以執行,該無序執行引擎包含一或更多處理級,其處理該等字節時,不檢查在該等字節間的資料流相依性與假輸出相依性。
  25. 如申請專利範圍第24項之方法,其中該轉譯係為最佳化編譯器或二進制轉譯器所執行。
  26. 如申請專利範圍第25項之方法,其中該資料流相依性包含讀在寫後(R-A-W)相依性與該假輸出相依性包含寫在寫後(W-A-W)相依性。
TW104105377A 2014-03-28 2015-02-16 實施動態無序處理器管線的方法與設備 TWI599949B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/228,690 US9612840B2 (en) 2014-03-28 2014-03-28 Method and apparatus for implementing a dynamic out-of-order processor pipeline

Publications (2)

Publication Number Publication Date
TW201602906A TW201602906A (zh) 2016-01-16
TWI599949B true TWI599949B (zh) 2017-09-21

Family

ID=52630858

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104105377A TWI599949B (zh) 2014-03-28 2015-02-16 實施動態無序處理器管線的方法與設備

Country Status (7)

Country Link
US (2) US9612840B2 (zh)
JP (2) JP6043374B2 (zh)
KR (1) KR101754462B1 (zh)
CN (1) CN104951281B (zh)
DE (1) DE102015002383A1 (zh)
GB (1) GB2524619B (zh)
TW (1) TWI599949B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436476B2 (en) * 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline
US11561792B2 (en) * 2015-06-08 2023-01-24 Qualcomm Incorporated System, apparatus, and method for a transient load instruction within a VLIW operation
KR102276718B1 (ko) * 2015-11-25 2021-07-13 삼성전자주식회사 Vliw 인터페이스 장치 및 제어 방법
US20170177542A1 (en) * 2015-12-16 2017-06-22 Cognitive Systems Corp. Operating a VLIW Processor in a Wireless Sensor Device
US20170315812A1 (en) 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor
US10552152B2 (en) * 2016-05-27 2020-02-04 Arm Limited Method and apparatus for scheduling in a non-uniform compute device
CN106066434B (zh) * 2016-05-31 2018-10-19 国网河北省电力公司电力科学研究院 一种电能表自动化检定流水线健康程度评价方法
US10445100B2 (en) 2016-06-09 2019-10-15 International Business Machines Corporation Broadcasting messages between execution slices for issued instructions indicating when execution results are ready
US10331454B2 (en) * 2016-09-29 2019-06-25 Intel Corporation System and method for load balancing in out-of-order clustered decoding
CN107977305B (zh) * 2016-10-24 2019-05-03 百度在线网络技术(北京)有限公司 用于检测应用的方法和装置
CN106681812B (zh) * 2016-12-14 2020-09-29 西北工业大学 一种分区调度方法
US10318433B2 (en) * 2016-12-20 2019-06-11 Texas Instruments Incorporated Streaming engine with multi dimensional circular addressing selectable at each dimension
US10489204B2 (en) 2017-01-31 2019-11-26 Samsung Electronics Co., Ltd. Flexible in-order and out-of-order resource allocation
US10672175B2 (en) * 2017-04-17 2020-06-02 Intel Corporation Order independent asynchronous compute and streaming for graphics
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
JP7102840B2 (ja) * 2018-03-26 2022-07-20 日本電気株式会社 プロセッサコア、命令制御方法、プログラム
US11188337B2 (en) * 2018-09-28 2021-11-30 The Florida State University Research Foundation, Inc. Micro-architecture designs and methods for eager execution and fetching of instructions
KR101996842B1 (ko) * 2018-12-26 2019-07-08 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
CN109918134B (zh) * 2019-03-06 2023-05-30 湖南科技大学 用于vliw基本块调度的组合启发式指令选择优化方法
US10956168B2 (en) * 2019-03-08 2021-03-23 International Business Machines Corporation Post completion execution in an out-of-order processor design
US10733016B1 (en) * 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions
US11392378B2 (en) * 2019-07-25 2022-07-19 Arm Limited Executing a set of load operations for a gather-load instruction and controlling handling of another instruction that depends on completion of the gather-load instruction
US11848980B2 (en) * 2020-07-09 2023-12-19 Boray Data Technology Co. Ltd. Distributed pipeline configuration in a distributed computing system
CN111857832B (zh) * 2020-07-15 2023-10-20 国家电网有限公司能源互联网技术研究院 一种超长指令插入判断方法及系统
CN112286456B (zh) * 2020-10-27 2022-03-08 清华大学 存储方法及装置
CN116348850A (zh) * 2020-11-06 2023-06-27 华为技术有限公司 处理指令的方法以及图计算装置
CN112463723A (zh) * 2020-12-17 2021-03-09 王志平 一种微内核阵列的实现方法
US20220206793A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor
US11593110B2 (en) * 2021-01-07 2023-02-28 Texas Instruments Incorporated Instruction packing scheme for VLIW CPU architecture
CN114925018B (zh) * 2022-07-22 2022-10-21 中科声龙科技发展(北京)有限公司 片上交叉开关系统及芯片

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
US6081884A (en) * 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US6253309B1 (en) * 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
US6539471B2 (en) 1998-12-23 2003-03-25 Intel Corporation Method and apparatus for pre-processing instructions for a processor
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US6738893B1 (en) 2000-04-25 2004-05-18 Transmeta Corporation Method and apparatus for scheduling to reduce space and increase speed of microprocessor operations
US6895494B1 (en) 2000-06-26 2005-05-17 Texas Instruments Incorporated Sub-pipelined and pipelined execution in a VLIW
US20020178360A1 (en) * 2001-02-25 2002-11-28 Storymail, Inc. System and method for communicating a secure unidirectional response message
AU2002243655A1 (en) 2001-01-25 2002-08-06 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
US6950926B1 (en) 2001-03-02 2005-09-27 Advanced Micro Devices, Inc. Use of a neutral instruction as a dependency indicator for a set of instructions
US20040268098A1 (en) * 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US7617496B2 (en) * 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7412591B2 (en) * 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor
US20070083736A1 (en) 2005-10-06 2007-04-12 Aravindh Baktha Instruction packer for digital signal processor
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US20110307688A1 (en) * 2010-06-10 2011-12-15 Carnegie Mellon University Synthesis system for pipelined digital circuits
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline

Also Published As

Publication number Publication date
TW201602906A (zh) 2016-01-16
DE102015002383A1 (de) 2015-10-01
GB2524619B (en) 2017-04-19
US20170300334A1 (en) 2017-10-19
CN104951281B (zh) 2018-08-24
GB2524619A (en) 2015-09-30
KR101754462B1 (ko) 2017-07-05
JP6043374B2 (ja) 2016-12-14
US10338927B2 (en) 2019-07-02
US9612840B2 (en) 2017-04-04
JP2015191660A (ja) 2015-11-02
GB201500942D0 (en) 2015-03-04
KR20150112774A (ko) 2015-10-07
CN104951281A (zh) 2015-09-30
JP2017027636A (ja) 2017-02-02
US20150277916A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
TWI599949B (zh) 實施動態無序處理器管線的方法與設備
CN109074260B (zh) 乱序的基于块的处理器和指令调度器
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
JP6526609B2 (ja) プロセッサ
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
TW201712544A (zh) 驗證分支目標
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
TWI515653B (zh) 指令順序執行之指令對、處理器、方法及系統
EP4020189A1 (en) Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
CN116339489A (zh) 处理器中微操作的扼制融合的系统、装置和方法
CN114489808A (zh) 高置信度多分支偏移预测器
Jung A Hardware/Software Co-reconfigurable Multimedia Architecture
Yourst Peptidal: Processor enhanced with programmable translation and integrated dynamic acceleration logic

Legal Events

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