TW201643692A - 用於執行自旋迴路跳位的裝置及方法 - Google Patents

用於執行自旋迴路跳位的裝置及方法 Download PDF

Info

Publication number
TW201643692A
TW201643692A TW104137895A TW104137895A TW201643692A TW 201643692 A TW201643692 A TW 201643692A TW 104137895 A TW104137895 A TW 104137895A TW 104137895 A TW104137895 A TW 104137895A TW 201643692 A TW201643692 A TW 201643692A
Authority
TW
Taiwan
Prior art keywords
instruction
processor
field
spin
value
Prior art date
Application number
TW104137895A
Other languages
English (en)
Other versions
TWI617977B (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 TW201643692A publication Critical patent/TW201643692A/zh
Application granted granted Critical
Publication of TWI617977B publication Critical patent/TWI617977B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一種執行自旋迴路跳位之設備及方法。例如,處理器之一實施例包含:跳位-暫停執行邏輯,用以執行跳位-暫停指令,跳位-暫停指令指明狀況及識別目的地指令;其中,回應於跳位-暫停指令之執行,跳位-暫停執行邏輯提供跳位-暫停指令及目的地指令間之迴路包含自旋-等候迴路之暗示,並測試狀況,若狀況滿足,則跳位-暫停執行邏輯於跳位至目的地指令之前,延遲執行達指定量。

Description

用於執行自旋迴路跳位的裝置及方法
本發明大體上關於電腦處理器之領域。更特定地,本發明關於用於執行自旋迴路跳位的方法及設備。
指令集或指令集架構(ISA)為關於編程之電腦架構的一部分,包括原始資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、及外部輸入及輸出(I/O)。應注意的是「指令」用詞文中一般係指巨集指令-係提供至處理器供執行之指令-與微指令或微運算相反-係處理器之解碼器解碼巨集指令之結果。微指令或微運算可組配而指示處理器上之執行單元,以執行作業而實施與巨集指令相關聯之邏輯。
ISA與微架構區分,其係用以實施指令集之處理器設計技術集。具不同微架構之處理器可共用共同指令集。例如,Intel® Pentium 4處理器、Intel®核心TM處理器及來自加州桑尼維爾先進微裝置公司之處理器實施幾乎相同版本之x86指令集(具已附加較新版本之若干延伸), 但具有不同內部設計。例如,可於使用熟知技術之不同微架構中以不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器更名機構(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)、及止用暫存器檔案)之一或更多個動態配置實體暫存器等。除非指明,文中使用暫存器架構、暫存器檔案、及暫存器用語,係指軟體/程式可見及指令指定暫存器之方式。在需要特異性處,形容邏輯、架構、或軟體可見將用以表示暫存器架構中暫存器/檔案,同時不同形容詞將用於特定微架構中之指定暫存器(例如實體暫存器、重排序緩衝器、止用暫存器、暫存器集區)。
指令集包括一或更多指令格式。特定指令格式定義各式欄位(位元數、位元位置),而在其他方面指定將實施之作業及其上將實施作業之運算元。儘管指令模板(或次格式)之定義,若干指令格式被進一步打破。例如,可定義特定指令格式之指令模板,而具有指令格式欄位之不同子集(所包括之欄位典型地為相同順序,但因包括較少欄位,至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。使用特定指令格式表達特定指令(若加以定義,則為指令格式之一特定指令模板),並指定作業及運算元。指令流為特定指令序列,其中序列中每一指令為以指令格式出現之指令(若加以定義,則為指令格式之一特定指令模板)。
100‧‧‧通用向量友善指令格式
105、146A‧‧‧無記憶體存取指令模板
110‧‧‧REX’欄位
112‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板
115‧‧‧無記憶體存取、資料變換類型運算指令模板
117‧‧‧無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板
120、146B‧‧‧記憶體存取指令模板
125‧‧‧記憶體存取、瞬態指令模板
127‧‧‧記憶體存取、寫入遮罩控制指令模板
130‧‧‧記憶體存取、非瞬態指令模板
140‧‧‧格式欄位
142‧‧‧基礎運算欄位
144‧‧‧暫存器索引欄位
146‧‧‧修飾符欄位
150‧‧‧增強運算欄位
152‧‧‧甲種欄位
152A‧‧‧RS欄位
152A.1‧‧‧捨入
152A.2‧‧‧資料變換
152B‧‧‧逐出暗示欄位
152B.1‧‧‧瞬態
152B.2‧‧‧非瞬態
152C‧‧‧寫入遮罩控制(Z)欄位
154‧‧‧乙種欄位
154A‧‧‧捨入控制欄位
154B‧‧‧資料變換欄位
154C‧‧‧資料操作欄位
156‧‧‧抑制所有浮點異常(SAE)欄位
157A‧‧‧RL欄位
157A.1‧‧‧捨入
157A.2‧‧‧向量長度(VSIZE)
157B‧‧‧廣播欄位
158、159A‧‧‧捨入運算控制欄位
159B‧‧‧向量長度欄位
160‧‧‧縮放欄位
162A‧‧‧位移欄位
162B‧‧‧位移因數欄位
164‧‧‧資料元件寬度欄位
168‧‧‧級別欄位
168A‧‧‧A級
168B‧‧‧B級
170‧‧‧寫入遮罩欄位
172‧‧‧立即欄位
174‧‧‧全作業碼欄位
200‧‧‧特定向量友善指令格式
202‧‧‧EVEX前置
205‧‧‧REX欄位
210‧‧‧REX’欄位
215‧‧‧作業碼映射圖欄位
220‧‧‧EVEX.vvvv
225‧‧‧前置編碼欄位
230‧‧‧實際作業碼欄位
240‧‧‧MOD R/M欄位
242‧‧‧MOD欄位
244‧‧‧暫存器指標欄位
246‧‧‧R/M欄位
254‧‧‧xxx欄位
256‧‧‧bbb欄位
300‧‧‧暫存器架構
310‧‧‧向量暫存器
315‧‧‧寫入遮罩暫存器
325‧‧‧通用暫存器
345‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
350‧‧‧MMX封裝整數平坦暫存器檔案
400‧‧‧處理器管線
402‧‧‧提取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧配置級
410‧‧‧更名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧寫回/記憶體寫入級
422‧‧‧異常處置級
424‧‧‧確定級
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取記憶體單元
436‧‧‧指令翻譯後備緩衝器(TLB)
438‧‧‧指令提取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧更名/配置器單元
454‧‧‧止用單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料翻譯後備緩衝器(TLB)單元
474‧‧‧資料快取記憶體單元
476‧‧‧2級(L2)快取記憶體單元
490‧‧‧處理器核心
500‧‧‧指令解碼器
502‧‧‧晶粒上互連網路
504‧‧‧2級(L2)快取記憶體
506‧‧‧1級(L1)快取記憶體
506A‧‧‧L1資料快取記憶體
508‧‧‧純量單元
510‧‧‧向量單元
512‧‧‧純量暫存器
514‧‧‧向量暫存器
520‧‧‧拌和單元
522A-B‧‧‧數字轉換單元
524‧‧‧複製單元
526‧‧‧寫入遮罩暫存器
528‧‧‧16寬向量算術邏輯單元
600、710、715、815、1255‧‧‧處理器
602A-N‧‧‧核心
604A-N‧‧‧快取記憶體單元
606‧‧‧共用快取記憶體單元
608‧‧‧專用邏輯
610‧‧‧系統代理器
612‧‧‧環形互連單元
614‧‧‧整合記憶體控制器單元
616‧‧‧匯流排控制器單元
700‧‧‧系統
720‧‧‧控制器集線器
740、832、834‧‧‧記憶體
745、838、820‧‧‧協處理器
750‧‧‧輸入/輸出集線器(IOH)
760、814、914‧‧‧輸入/輸出(I/O)裝置
790‧‧‧圖形記憶體控制器集線器(GMCH)
795‧‧‧連接
800‧‧‧第一特定示例系統
816‧‧‧第一匯流排
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
824‧‧‧音頻輸入/輸出(I/O)
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧指令/碼及資料
839‧‧‧高性能介面
850‧‧‧點對點互連
852、854、886、888‧‧‧點對點(P-P)介面
870‧‧‧第一處理器
872、882‧‧‧整合記憶體控制器(IMC)單元
876、878‧‧‧匯流排控制器單元點對點(P-P)介面
880‧‧‧第二處理器
890‧‧‧晶片組
894、898‧‧‧點對點介面電路
892、896‧‧‧介面
900‧‧‧第二特定示例系統
915‧‧‧舊有輸入/輸出(I/O)裝置
1000‧‧‧系統晶片
1002‧‧‧互連單元
1010‧‧‧應用處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1102‧‧‧高階語言
1104‧‧‧x86編譯器
1106‧‧‧x86二元碼
1108‧‧‧替代指令集編譯器
1110‧‧‧替代指令集二元碼
1112‧‧‧指令轉換器
1114、1116‧‧‧x86指令集核心
1200‧‧‧主記憶體
1201‧‧‧分支目標緩衝區
1202‧‧‧分支預測單元
1203‧‧‧下一指令指示器
1204‧‧‧指令轉譯後備緩衝區
1205‧‧‧通用暫存器
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1210‧‧‧指令提取單元
1211‧‧‧2級(L2)快取記憶體
1212‧‧‧1級(L1)快取記憶體
1216‧‧‧3級(L3)快取記憶體
1220‧‧‧指令快取記憶體
1221‧‧‧資料快取記憶體
1230‧‧‧解碼單元
1231‧‧‧跳位-暫停解碼邏輯
1232‧‧‧測試-減法解碼邏輯
1240‧‧‧執行單元
1241‧‧‧跳位-暫停執行邏輯
1242‧‧‧測試-減法執行邏輯
1250‧‧‧寫回單元
從下列詳細描述結合附圖,可獲得本發明之較佳了解,其中:圖1A及1B為方塊圖,描繪依據本發明之實施例之通用向量友好指令格式及其指令模板;圖2A-D為方塊圖,描繪依據本發明之實施例之示例特定向量友好指令格式;圖3為依據本發明之一實施例之暫存器架構的方塊圖;圖4A為方塊圖,描繪依據本發明之實施例之示例依序提取、解碼止用管線,及示例暫存器更名、亂序發布/執行管線;圖4B為方塊圖,描繪依據本發明之實施例之依序提取、解碼、止用核心之示例實施例及示例暫存器更名、亂序發布/執行架構核心,將包括於處理器中;圖5A為單一處理器核心連同其至晶粒上互連網路之連接的方塊圖;圖5B描繪依據本發明之實施例之圖5A中部分處理器核心之擴展圖;圖6為依據本發明之實施例之單一核心處理器及具積體記憶體控制器及圖形之多核心處理器的方塊圖;圖7描繪依據本發明之一實施例之系統的方塊圖;圖8描繪依據本發明之實施例之第二系統的方塊圖; 圖9描繪依據本發明之實施例之第三系統的方塊圖;圖10描繪依據本發明之實施例之系統晶片(SoC)的方塊圖;圖11描繪依據本發明之實施例之方塊圖,對比使用軟體指令轉換器將原始指令集中二元指令轉換為目標指令集中二元指令;圖12描繪示例處理器,其上可實施本發明之實施例;圖13描繪顯示示例自旋迴路之方法;圖14描繪由跳位-暫停指令之一實施例執行的複數作業;以及圖15描繪依據測試減法指令之一實施例之方法。
【發明內容與實施方式】
在下列描述中,為予說明,提出許多特定細節以便提供以下所描述之本發明之實施例的徹底了解。然而,對熟悉本技藝之人士而言,顯然可實現本發明之實施例,而無該些特定細節。在其他狀況下,熟知結構及裝置係以方塊圖形式顯示,以避免混淆本發明之實施例的基本原理。
示例處理器架構及資料類型
指令集包括一或更多指令格式。特定指令格式定義各式欄位(位元數量、位元位置),而在其他方面 指明將執行之作業(作業碼)及其上將執行作業之運算元。儘管指令模板(或次格式)之定義,若干指令格式被進一步打破。例如,可定義特定指令格式之指令模板,而具有指令格式欄位之不同子集(所包括之欄位典型地為相同順序,但因包括較少欄位,至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。因而,使用特定指令格式表達ISA之每一指令(若加以定義,則為指令格式之一特定指令模板),並包括用於指定作業及運算元之欄位。例如,示例ADD指令具有特定作業碼及指令格式,其包括作業碼欄位以指定作業碼及運算元欄位而選擇運算元(來源/目的地1及來源2);且指令流中ADD指令之出現將於運算元欄位中具有特定內容,其選擇特定運算元。SIMD延伸組係指先進向量延伸(AVX)(AVX1及AVX2),使用已發行及/或公告之向量延伸(VEX)編碼方案(例如詳見2011年10月之Intel® 64及IA-32架構軟體開發者手冊;及詳見2011年6月之Intel®先進向量延伸編程參考)。
示例指令格式
文中所描述之指令實施例可以不同格式體現。此外,以下詳述示例系統、架構、及管線。指令之實施例可於該等系統、架構、及管線上執行,但不侷限於該些細節。
A.通用向量友善指令格式
向量友善指令格式為適於向量指令之指令格式(例如向量運算專用之某些欄位)。雖然描述之實施例中,經由向量友善指令格式支援向量及純量運算,替代實施例僅使用向量運算向量友善指令格式。
圖1A-1B為方塊圖,描繪依據本發明之實施例之通用向量友善指令格式及其指令模板。圖1A為方塊圖,描繪依據本發明之實施例之通用向量友善指令格式及其A級指令模板;同時圖1B為方塊圖,描繪依據本發明之實施例之通用向量友善指令格式及其B級指令模板。具體地,通用向量友善指令格式100定義A級及B級指令模板,二者包括無記憶體存取指令模板105及記憶體存取指令模板120。向量友善指令格式之上下文中,通用用詞係指未與任何特定指令集相關聯之指令格式。
雖然將描述本發明之實施例,其中向量友善指令格式支援下列:64位元組向量運算元長度(或尺寸)具32位元(4位元組)或64位元(8位元組)資料元件寬度(或尺寸)(因而,64位元組向量包含16個雙字尺寸元件或另一方面,8個四字尺寸元件);64位元組向量運算元長度(或尺寸)具16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸);32位元組向量運算元長度(或尺寸)具32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或尺寸);以及16位元組向量運 算元長度(或尺寸)具32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或尺寸);替代實施例可支援更多、更少及/或不同向量運算元尺寸(例如256位元組向量運算元)具更多、更少或不同資料元件寬度(例如128位元(16位元組)資料元件寬度)。
圖1A中A級指令模板包括:1)在無記憶體存取指令模板105內,顯示無記憶體存取、全捨入控制類型運算指令模板110,及無記憶體存取、資料變換類型運算指令模板115;及2)在記憶體存取指令模板120內,顯示記憶體存取、瞬態指令模板125,及記憶體存取、非瞬態指令模板130。圖1B中B級指令模板包括:1)在無記憶體存取指令模板105內,顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板112,及無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板117;及2)在記憶體存取指令模板120內,顯示記憶體存取、寫入遮罩控制指令模板127。
通用向量友善指令格式100包括下列欄位,以下以圖1A-1B中所描繪之順序列出。
格式欄位140-此欄位中特定值(指令格式識別符值),獨特地識別向量友善指令格式,因而於指令流中出現向量友善指令格式之指令。同樣地,此欄位係可選的,對於僅具有通用向量友善指令格式之指令集而言並非必須。
基礎運算欄位142-其內容區別不同基礎運算。
暫存器索引欄位144-其內容直接或經由位址產生指定暫存器或記憶體中來源及目的地運算元之位置。其包括充足位元數而從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N可達三個來源及一個目的地暫存器,替代實施例可支援更多或更少來源及目的地暫存器(例如可支援二個來源,其中該些來源之一亦可做為目的地,可支援三個來源,其中該些來源之一亦可做為目的地,可支援二個來源及一個目的地)。
修飾符欄位146-其內容區別指定記憶體存取與未指定者之通用向量指令格式的指令出現;即,無記憶體存取指令模板105及記憶體存取指令模板120之間。記憶體存取作業讀取及/或寫入至記憶體階層(在若干狀況下,使用暫存器中之值指定來源及/或目的地位址),同時非記憶體存取作業未讀取及/或寫入(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三不同方式之間選擇而實施記憶體位址計算,替代實施例可支援更多、更少或以不同方式實施記憶體位址計算。
增強運算欄位150-其內容區別除了基礎運算外,將實施各種不同運算之哪一者。此欄位為特定上下文。在本發明之一實施例中,此欄位劃分為級別欄位168、甲種欄位152、及乙種欄位154。增強運算欄位150 允許共同運算群組於單指令中實施,而非2、3、或4指令。
縮放欄位160-其內容允許索引欄位之內容針對記憶體位址產生進行縮放(例如針對使用2標度*索引+基底之位址產生)。
位移欄位162A-其內容用做記憶體位址產生之一部分(例如針對使用2標度*索引+基底+位移之位址產生)。
位移因數欄位162B(請注意,位移欄位162A之鄰接位置直接在位移因數欄位162B之上,表示使用二者之一)-其內容用做位址產生之一部分;其指定由記憶體存取之尺寸(N)標度的位移因數-其中N為記憶體存取中之位元組數量(例如針對使用2標度*索引+基底+標度位移之位址產生)。忽略冗餘低階位元,因此位移因數欄位之內容乘以記憶體運算元總尺寸(N),以便產生最終位移,用於計算有效位址。N值係於運行時間依據全作業碼欄位174(文中所描述)及資料操作欄位154C而由處理器硬體決定。在並非用於無記憶體存取指令模板105及/或不同實施例僅可實施二者之一或皆不實施這個意義上而言,位移欄位162A及位移因數欄位162B為可選的。
資料元件寬度欄位164-其內容區別將使用若干資料元件寬度之哪一者(在對所有指令之若干實施例中;在對僅若干指令之其他實施例中)。在若僅支援一資料元件寬度及/或使用作業碼之若干方面支援資料元件寬 度,其不是必須的這個意義上而言,此欄位為可選的。
寫入遮罩欄位170-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中資料元件位置是否反映基礎運算及增強運算的結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元件組受保護,免於在執行任何運算(由基礎運算及增強運算指定)期間更新;在一其他實施例中,保存相應遮罩位元具有0之目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中任何元件組在執行任何運算(由基礎運算及增強運算指定)期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能之子集為控制實施運算之向量長度的能力(即,從第一至最後之將修飾元件的範圍);然而,修飾之元件不必要是連續的。因而,寫入遮罩欄位170允許局部向量運算,包括載入、儲存、算術、邏輯等。雖然描述本發明之實施例,其中寫入遮罩欄位170之內容選擇若干寫入遮罩暫存器之一,其包含將使用之寫入遮罩(因而寫入遮罩欄位170之內容間接識別將實施之遮罩),替代實施例取代地允許寫入遮罩欄位170之內容直接指定將實施之遮罩。
立即欄位172-其內容允許立即值之規範。在其未呈現於不支援立即值之通用向量友善格式的實施中,及其未呈現於不使用立即值之指令中的這個意義上而言,此欄位為可選的。
級別欄位168-其內容於不同級別指令之間區別。參照圖1A-B,此欄位之內容於A級及B級指令之間選擇。在圖1A-B中,圓角方形用以表示欄位中呈現之特定值(例如圖1A-B中分別用於級別欄位168之A級168A及B級168B)。
A級指令模板
在A級無記憶體存取指令模板105之狀況下,甲種欄位152被解譯為RS欄位152A,其內容區別將實施哪一不同增強運算類型(例如捨入152A.1及資料變換152A.2分別指定用於無記憶體存取、捨入類型運算指令模板110及無記憶體存取、資料變換類型運算指令模板115),同時乙種欄位154區別將實施指定類型之哪一運算。在無記憶體存取指令模板105中,縮放欄位160、位移欄位162A、及位移因數欄位162B未呈現。
無記憶體存取指令模板-全捨入控制類型運算
在無記憶體存取全捨入控制類型運算指令模板110中,乙種欄位154被解譯為捨入控制欄位154A,其內容提供靜態捨入。雖然在所描述本發明之實施例中,捨入控制欄位154A包括抑制所有浮點異常(SAE)欄位156及捨入運算控制欄位158,替代實施例可支援編碼該些概念進入相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位158)。
SAE欄位156-其內容區別是否禁用異常事件報告;當SAE欄位156之內容表示啟用抑制時,特定指令未報告任何種類浮點異常旗標,及未引發任何浮點異常處置器。
捨入運算控制欄位158-其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位158允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位158之內容置換暫存器值。
無記憶體存取指令模板-資料變換類型運算
在無記憶體存取資料變換類型運算指令模板115中,乙種欄位154被解譯為資料變換欄位154B,其內容區別將實施若干資料變換之哪一者(例如無資料變換、拌和、廣播)。
在A級記憶體存取指令模板120之狀況下,甲種欄位152被解譯為逐出暗示欄位152B,其內容區別將使用哪一逐出暗示(在圖1A中,瞬態152B.1及非瞬態152B.2分別指定用於記憶體存取、瞬態指令模板125及記憶體存取、非瞬態指令模板130),同時乙種欄位154被解譯為資料操作欄位154C,其內容區別將實施若干資料操作作業之哪一者(亦稱為基元)(例如無操作;廣播;來源之上轉換;及目的地之下轉換)。記憶體存取指令模 板120包括縮放欄位160,及可選地包括位移欄位162A或位移因數欄位162B。
向量記憶體指令基於轉換支援而實施自記憶體之向量負載,及至記憶體之向量儲存。就正規向量指令而言,向量記憶體指令以資料元件方式轉移資料自/至記憶體,且實際轉移之元件係由選擇做為寫入遮罩之向量遮罩的內容指定。
記憶體存取指令模板-瞬態
瞬態資料為可能足以從快取獲益之快速重新使用的資料。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
記憶體存取指令模板-非瞬態
非瞬態資料為第一級快取記憶體中不可能足以從快取獲益之快速重新使用的資料,應為逐出之特定優先性。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
B級指令模板
在B級指令模板之狀況下,甲種欄位152被解譯為寫入遮罩控制(Z)欄位152C,其內容區別由寫入遮罩欄位170控制之寫入遮罩係合併或歸零。
在B級無記憶體存取指令模板105之狀況 下,部分乙種欄位154被解譯為RL欄位157A,其內容區別將實施哪一不同增強運算類型(例如捨入157A.1及向量長度(VSIZE)157A.2分別指定用於無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板112及無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板117),同時乙種欄位154之其餘部分區別將實施特定類型之哪一運算。在無記憶體存取指令模板105中,縮放欄位160、位移欄位162A、及位移因數欄位162B未呈現。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板110中,乙種欄位154被解譯為捨入運算欄位159A,並禁用異常事件報告(特定指令未報告任何種類浮點異常旗標,且未引發任何浮點異常處置器)。
捨入運算控制欄位159A-恰如捨入運算控制欄位158,其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位159A允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位158之內容置換暫存器值。
在無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板117中,乙種欄位154之其餘部分被解譯為向量長度欄位159B,其內容區別將於(例如128、256、或512位元組)上實施若干資料向量長度之哪一 者。
在B級記憶體存取指令模板120之狀況下,部分乙種欄位154被解譯為廣播欄位157B,其內容區別是否將實施廣播類型資料操作運算,同時乙種欄位154之其餘部分被解譯為向量長度欄位159B。記憶體存取指令模板120包括縮放欄位160、可選地位移欄位162A或位移因數欄位162B。
關於通用向量友善指令格式100,顯示全作業碼欄位174,包括格式欄位140、基礎運算欄位142、及資料元件寬度欄位164。雖然顯示一實施例,其中全作業碼欄位174包括所有該些欄位,在未支援所有欄位之實施例中,全作業碼欄位174包括少於所有該些欄位。全作業碼欄位174提供作業碼(opcode)。
在通用向量友善指令格式中,增強運算欄位150、資料元件寬度欄位164、及寫入遮罩欄位170允許在每一指令的基礎上指定該些部件。
寫入遮罩欄位及資料元件寬度欄位之組合創造具型式指令,其中允許依據不同資料元件寬度而施加遮罩。
於A級及B級內發現之各式指令模板有益於不同情況。在若干本發明之實施例中,處理器內不同處理器或不同核心可僅支援A級,僅支援B級,或二者。例如,希望用於通用運算之高性能通用亂序核心可僅支援B級,主要希望用於圖形及/或科學(產量)運算之核心可 僅支援A級,及希望用於二者之核心可支援二者(當然,具有若干模板混合之核心,及來自二級但非所有模板之指令,和來自二級之指令,均在本發明之範圍內)。而且,單一處理器可包括多核心,均支援相同級,或其中不同核心支援不同級。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學運算之一圖形核心可僅支援A級,同時一或更多個通用核心可為具希望用於通用運算之亂序執行及暫存器更名的高性能通用核心,僅支援B級。不具有個別圖形核心之另一處理器,可包括一個以上通用依序或亂序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級之部件亦可於其他級中實施。以高階語言所寫程式將置入(例如及時編譯或靜態編譯)不同可執行形式,包括:1)僅具有由目標處理器支援之級供執行之指令的形式;或2)具有使用所有級之指令之不同組合所寫替代常式,並具有依據目前執行碼之處理器所支援之指令而選擇執行之常式之控制流程碼的形式。
B.示例特定向量友善指令格式
圖2為方塊圖,描繪依據本發明之實施例之示例特定向量友善指令格式。圖2顯示特定向量友善指令格式200,其在指定欄位之位置、尺寸、解譯、及順序,以及若干該些欄位之值的這個意義上而言為特定的。特定向量友善指令格式200可用以延伸x86指令集,因而若干 欄位類似,或與現有x86指令集及其延伸(例如AVX)中使用者相同。此格式依然符合具延伸之現有x86指令集之前置編碼欄位、實際作業碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即值欄位。描繪來自圖1之欄位與來自圖2之欄位的映射圖。
應理解的是,儘管為描繪目的,參照通用向量友善指令格式100之上下文中特定向量友善指令格式200而描述本發明之實施例,除非有所主張,本發明不侷限於特定向量友善指令格式200。例如,通用向量友善指令格式100考量各式欄位之各種可能尺寸,同時特定向量友善指令格式200顯示為具有特定尺寸之欄位。藉由特定範例,雖然資料元件寬度欄位164被描繪為特定向量友善指令格式200中之一位元欄位,本發明不侷限於此(即,通用向量友善指令格式100考量資料元件寬度欄位164之其他尺寸)。
通用向量友善指令格式100包括以下列圖2A中所描繪之順序所列下列欄位。
EVEX前置202(位元組0-3)-以4位元組形式編碼。
格式欄位140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位140,其包含0x62(用於區別本發明之一實施例中向量友善指令格式的獨特值)。
第二至第四位元組(EVEX位元組1-3),包 括提供特定能力之若干位元欄位。
REX欄位205(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能,並使用1補數形式編碼,即ZMM0編碼為111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之下三位元為本技藝中已知之(rrr、xxx、及bbb),使得可經由附加EVEX.R、EVEX.X、及EVEX.B而形成Rrrr、Xxxx、及Bbbb。
REX’欄位110-此為REX’欄位110之第一部分,並為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),用以編碼延伸之32暫存器組的上16個或下16個。在本發明之一實施例中,此位元連同以下表示之其他者,係以位元倒置格式儲存,以與BOUND指令區別(在熟知x86 32位元模式中),其實際作業碼位元組為62,但在MOD R/M欄位(以下描述)中不接受MOD欄位之11值;本發明之替代實施例未以倒置格式儲存此位元及以下表示之其他位元。1之值用以編碼下16個暫存器。換言之,R’Rrrr係藉由組合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而形成。
作業碼映射圖欄位215(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含前導作業碼位元組 (0F,0F 38,或0F 3)。
資料元件寬度欄位164(EVEX位元組2,位元[7]-W)-係由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(尺寸)。
EVEX.vvvv 220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒置(1補數)形式指定,對於具2或更多來源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,以針對某些向量移位之1補數形式指定;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位220編碼以倒置(1補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位被用以延伸區分符尺寸至32暫存器。
EVEX.U 168級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,便表示A級或EVEX.U0;若EVEX.U=1,便表示B級或EVEX.U1。
前置編碼欄位225(EVEX位元組2,位元[1:0]-pp)-提供基礎運算欄位之其餘位元。除了提供EVEX前置格式中舊有SSE指令之支援外,其亦具有緊密SIMD前置之效益(而非需要位元組來表達SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為支援舊有SSE指令,於舊有格式及EVEX前置格式中使用SIMD前 置(66H,F2H,F3H),該些舊有SIMD前置被編碼於SIMD前置編碼欄位中;且在提供至解碼器之PLA之前,運行時間被延伸進入舊有SIMD前置(所以PLA可執行該些舊有指令之舊有及EVEX格式而不需修改)。儘管新指令可使用EVEX前置編碼欄位之內容,直接做為作業碼延伸,某些實施例為求一致而以類似方式延伸,但允許該些舊有SIMD前置指定不同意義。替代實施例可重新設計PLA來支援2位元SIMD前置編碼,因而不需要延伸。
甲種欄位152(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α描繪)-如先前所描述,此欄位為特定上下文。
乙種欄位154(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ描繪)-如先前所描述,此欄位為特定上下文。
REX’欄位110-此為REX’欄位之其餘部分,為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),可用以編碼延伸之32暫存器組的上16個或下16個。此位元係以位元倒置格式儲存。1之值用以編碼下16個暫存器。換言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位170(EVEX位元組3,位元[2:0]-kkk)-如先前所描述,其內容指定寫入遮罩暫存器 中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特定行為,暗示無寫入遮罩用於特定指令(其可以各種方式實施,包括使用固線式寫入遮罩至所有者或繞過遮罩硬體之硬體)。
實際作業碼欄位230(位元組4)-其亦已知為作業碼位元組。部分作業碼於此欄位中指定。
MOD R/M欄位240(位元組5)包括MOD欄位242、暫存器指標欄位244、及R/M欄位246。如先前所描述,MOD欄位242之內容於記憶體存取及非記憶體存取作業之間區別。暫存器指標欄位244之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或處理為作業碼延伸且未用以編碼任何指令運算元。R/M欄位246之角色可包括下列:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、索引、基底(SIB)位元組(位元組6)-如先前所描述,縮放欄位160之內容用於記憶體位址產生。SIB.xxx 254及SIB.bbb 256-該些欄位的內容先前已關於暫存器索引Xxxx及Bbbb提及。
位移欄位162A(位元組7-10)-當MOD欄位242包含10時,位元組7-10為位移欄位162A,其工作與舊有32位元位移(disp32)相同,處理位元組粒度。
位移因數欄位162B(位元組7)-當MOD欄位242包含01時,位元組7為位移因數欄位162B。此欄 位之位置與舊有x86指令集8位元位移(disp8)相同,處理位元組粒度。由於disp8為符號延伸,可僅定址於-128及127位元組偏移之間;在64位元組快取線方面,disp8使用8位元,可設定為僅4個實際有用值-128、-64、0、及64;由於通常需較大範圍,使用disp32;然而,disp32需要4位元組。對比於disp8及disp32,位移因數欄位162B為disp8之重新解譯;當使用位移因數欄位162B時,實際位移係由位移因數欄位之內容乘以記憶體運算元存取(N)之尺寸而決定。此類型位移稱為disp8*N。此減少平均指令長度(單一位元組用於位移,但具有更大範圍)。該等壓縮位移係依據有效位移為記憶體存取之粒度的倍數,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因數欄位162B取代舊有x86指令集8位元位移。因而,位移因數欄位162B以與x86指令集8位元位移之相同方式編碼(所以ModRM/SIB編碼規則無改變),唯一的例外是disp8過載至disp8*N。換言之,編碼規則或編碼長度無改變,僅硬體之位移值解譯不同(其需標度記憶體運算元之尺寸位移,而獲得位元組位址偏移)。
立即欄位172操作如先前所描述。
全作業碼欄位
圖2B為方塊圖,描繪依據本發明之一實施例之特定向量友善指令格式200的欄位,其組成全作業碼欄 位174。具體地,全作業碼欄位174包括格式欄位140、基礎運算欄位142、及資料元件寬度(W)欄位164。基礎運算欄位142包括前置編碼欄位225、作業碼映射圖欄位215、及實際作業碼欄位230。
暫存器索引欄位
圖2C為方塊圖,描繪依據本發明之一實施例之特定向量友善指令格式200的欄位,其組成暫存器索引欄位144。具體地,暫存器索引欄位144包括REX欄位205、REX’欄位210、MODR/M.暫存器指標欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254、及bbb欄位256。
增強運算欄位
圖2D為方塊圖,描繪依據本發明之一實施例之特定向量友善指令格式200的欄位,其組成增強運算欄位150。當級別(U)欄位168包含0時,便表示EVEX.U0(A級168A);當其包含1時,便表示EVEX.U1(B級168B)。當U=0及MOD欄位242包含11時(表示無記憶體存取作業),甲種欄位152(EVEX位元組3,位元[7]-EH)解譯為rs欄位152A。當rs欄位152A包含1時(捨入152A.1),乙種欄位154(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位154A。捨入控制欄位154A包括一位元SAE欄位156及二位元捨入運算欄位 158。當rs欄位152A包含0時(資料變換152A.2),乙種欄位154(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位154B。當U=0及MOD欄位242包含00、01、或10時(表示記憶體存取作業),甲種欄位152(EVEX位元組3,位元[7]-EH)解譯為逐出暗示(EH)欄位152B,及乙種欄位154(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料操作欄位154C。
當U=1時,甲種欄位152(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位152C。當U=1及MOD欄位242包含11時(表示無記憶體存取作業),部分乙種欄位154(EVEX位元組3,位元[4]-S0)解譯為RL欄位157A;當其包含1時(捨入157A.1),乙種欄位154之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為捨入運算欄位159A,同時當RL欄位157A包含0時(向量長度157.A2),乙種欄位154之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位242包含00、01、或10時(表示記憶體存取作業),乙種欄位154(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位157B(EVEX位元組3,位元[4]-B)。
C.示例暫存器架構
圖3為依據本發明之一實施例之暫存器架構 300的方塊圖。在所描繪之實施例中,存在32向量暫存器310,其為512位元寬;該些暫存器參照為zmm0至zmm31。下16zmm暫存器之低階256位元重疊於暫存器ymm0-16上。下16zmm暫存器之低階128位元(ymm暫存器之低階128位元)重疊於暫存器xmm0-15上。特定向量友善指令格式200於該些重疊暫存器檔案上操作,如下表所描繪。
換言之,向量長度欄位159B於最大長度及一或更多個其他較短長度之間選擇,其中每一較短長度為前述長度的一半長度;且無向量長度欄位159B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量友善指令格式200之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上運算。純量運算為在zmm/ymm/xmm暫存器中之最低階資料元件位置實施之運算;較高階資料元件位置與指令之前相同,或被歸零, 取決於實施例。
寫入遮罩暫存器315-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一者尺寸64位元。在替代實施例中,寫入遮罩暫存器315尺寸16位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用做寫入遮罩;當正常表示k0之編碼用於寫入遮罩時,便選擇0xFFFF之固線式寫入遮罩,有效地禁用指令之寫入遮罩。
通用暫存器325-在所描繪之實施例中,存在16個64位元通用暫存器,連同現有x86定址模式用以定址記憶體運算元。該些暫存器係以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15名稱參照。
純量浮點堆疊暫存器檔案(x87堆疊)345,其上重疊MMX封裝整數平坦暫存器檔案350-在所描繪之實施例中,x87堆疊為8元件堆疊,用以使用x87指令集延伸在32/64/80位元浮點資料上實施純量浮點運算;同時MMX暫存器用以在64位元封裝整數資料上實施運算,並保持運算元於MMX及XMM暫存器之間實施若干運算。
本發明之替代實施例可使用較寬或較窄暫存器。此外,本發明之替代實施例可使用更多、更少、或不同暫存器檔案及暫存器。
D.示例核心架構、處理器、及電腦架構
處理器核心可為不同用途,而以不同方式實 施,並在不同處理器中。例如,實施該等核心可包括:1)希望用於通用運算之通用依序核心;2)希望用於通用運算之高性能通用亂序核心;3)主要希望用於圖形及/或科學(產量)運算之專用核心。不同處理器之實施可包括:1)包括希望用於通用運算之一或更多通用依序核心及/或希望用於通用運算之一或更多通用亂序核心的CPU;及2)包括主要希望用於圖形及/或科學(產量)之一或更多專用核心的協處理器。該等不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之個別晶片上的協處理器;2)在如CPU之相同封裝中個別晶粒上的協處理器;3)在如CPU之相同晶粒上的協處理器(在此狀況下,該等協處理器有時稱為專用邏輯,諸如積體圖形及/或科學(產量)邏輯,或做為專用核心);及4)系統晶片,其可包括於所描繪CPU之相同晶粒上(有時係指應用核心或應用處理器)、以上所描繪之協處理器、及其餘功能性。其次描述示例核心架構,接著描述示例處理器及電腦架構。
圖4A為方塊圖,描繪依據本發明之實施例之示例依序管線,及示例暫存器更名、亂序發布/執行管線。圖4B為方塊圖,描繪依據本發明之實施例之依序架構核心的示例實施例,及處理器中所包括之示例暫存器更名、亂序發布/執行架構核心。圖4A-B中實線框描繪依序管線及依序核心,同時虛線框之可選附加描繪暫存器更名、亂序發布/執行管線及核心。假定依序觀點為亂序觀 點之子集,將描述亂序觀點。
在圖4A中,處理器管線400包括提取級402、長度解碼級404、解碼級406、配置級408、更名級410、排程(亦已知為調度或發送)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、異常處置級422、及確定級424。
圖4B顯示包括耦接至執行引擎單元450之前端單元430的處理器核心490,二者均耦接至記憶體單元470。核心490可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。關於另一選項,核心490可為專用核心,諸如網路或通訊核心、壓縮引擎、協處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元430包括分支預測單元432,其耦接至指令快取記憶體單元434,其耦接至指令翻譯後備緩衝器(TLB)436,其耦接至指令提取單元438,其耦接至解碼單元440。解碼單元440(或解碼器)可解碼指令,及產生一或更多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號做為輸出,其係解碼自、或反映、或源自原始指令。解碼單元440可使用各式不同機構實施。適當機構之範例包括但不侷限於查找表、硬體實施、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心490包括微碼ROM或儲存微碼用於某些 巨集指令(例如解碼單元440中或前端單元430內)的其他媒體。解碼單元440耦接至執行引擎單元450中之更名/配置器單元452。
執行引擎單元450包括更名/配置器單元452,其耦接至止用單元454及一組一或更多個排程器單元456。排程器單元456代表任何數量不同排程器,包括保留站、中央指令視窗等。排程器單元456耦接至實體暫存器檔案單元458。每一實體暫存器檔案單元458代表一或更多個實體暫存器檔案,不同者儲存一或更多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點狀態(例如指令指標,其係將執行下一指令的位址)等。在一實施例中,實體暫存器檔案單元458包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元458與止用單元454重疊,以描繪其中可實施暫存器更名及亂序執行之各種方式(例如使用重排序緩衝器及止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器映射圖及暫存器集區等)。止用單元454及實體暫存器檔案單元458耦接至執行叢集460。執行叢集460包括一組一或更多個執行單元462及一組一或更多個記憶體存取單元464。執行單元462可於各式資料類型(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)實施各式作業(例如移位、加法、減法、乘 法)。雖然若干實施例可包括專用於特定功能或功能組之數量執行單元,其他實施例可僅包括一執行單元或均實施所有功能的多個執行單元。排程器單元456、實體暫存器檔案單元458、及執行叢集460可能顯示為複數,因為某些實施例創造用於某些資料/作業類型之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且在個別記憶體存取管線之狀況下,實施某些實施例其中謹此管線之執行叢集具有記憶體存取單元464)。亦將理解的是,使用個別管線處,一或更多個該些管線可為亂序發布/執行,其餘則為依序。
記憶體存取單元464組耦接至記憶體單元470,其包括資料TLB單元472,耦接至資料快取記憶體單元474,耦接至2級(L2)快取記憶體單元476。在一示例實施例中,記憶體存取單元464可包括負載單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元470中之資料TLB單元472。指令快取記憶體單元434進一步耦接至記憶體單元470中之2級(L2)快取記憶體單元476。L2快取記憶體單元476耦接至一或更多個其他級快取記憶體,最終至主記憶體。
例如,示例暫存器更名、亂序發布/執行核心架構可實施管線400如下:1)指令提取438實施提取及長度解碼級402及404;2)解碼單元440實施解碼級 406;3)更名/配置器單元452實施配置級408及更名級410;4)排程器單元456實施排程級412;5)實體暫存器檔案單元458及記憶體單元470實施暫存器讀取/記憶體讀取級414;執行叢集460實施執行級416;6)記憶體單元470及實體暫存器檔案單元458實施寫回/記憶體寫入級418;7)各式單元可包含於異常處置級422中;及8)止用單元454及實體暫存器檔案單元458實施確定級424。
核心490可支援一或更多指令集(例如x86指令集(具已附加較新版本之若干延伸);加州桑尼維爾MIPS科技公司之MIPS指令集;加州桑尼維爾ARM國際科技之ARM指令集(具可選附加延伸,諸如NEON)),包括文中所描述之指令。在一實施例中,核心490包括邏輯以支援封裝資料指令集延伸(例如AVX1、AVX2),藉以允許使用封裝資料實施由許多多媒體應用使用之作業。
應理解的是,核心可支援多執行緒處理(執行二或更多平行作業或執行緒組),並可以各種方式進行,包括時間切割多執行緒處理、同步多執行緒處理(其中單一實體核心提供邏輯核心,用於實體核心同步多執行緒處理之每一執行緒)、或其組合(例如時間切割提取及解碼及其後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
雖然於亂序執行之上下文中描述暫存器更名,應理解的是暫存器更名可用於依序架構中。雖然描繪 之處理器實施例亦包括個別指令及資料快取記憶體單元434/474,及共用L2快取記憶體單元476,替代實施例可具有用於指令及資料二者之單一內部快取記憶體,諸如1級(L1)內部快取記憶體,或多級內部快取記憶體。在若干實施例中,系統可包括內部快取記憶體及核心及/或處理器外部之外部快取記憶體的組合。另一方面,所有快取記憶體可為核心及/或處理器外部。
圖5A-B描繪更特定示例依序核心架構之方塊圖,其核心將為晶片中若干邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊經由高頻寬互連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及其他必需I/O邏輯通訊,取決於應用。
圖5A為依據本發明之實施例之單一處理器核心連同其至晶粒上互連網路502之連接的方塊圖,具有2級(L2)快取記憶體504之其局部子集。在一實施例中,指令解碼器500支援具封裝資料指令集延伸之x86指令集。L1快取記憶體506允許針對快取記憶體記憶體之低延遲存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元508及向量單元510使用個別暫存器組(分別為純量暫存器512及向量暫存器514),並將其間轉移之資料寫入至記憶體,接著從1級(L1)快取記憶體506讀回,本發明之替代實施例可使用不同途徑(例如使用單一暫存器組或包括允許於二暫存器檔案之間轉移資料之通訊路徑,而無寫入及讀回)。
L2快取記憶體504之局部子集為整體L2快取記憶體之一部分,其劃分為個別局部子集,每一處理器核心一個子集。每一處理器核心具有至其L2快取記憶體504之本身局部子集的直接存取路徑。由處理器核心讀取之資料係儲存於其L2快取記憶體子集504中,並可與存取其本身局部L2快取記憶體子集之其他處理器核心平行地快速存取。由處理器核心寫入之資料係儲存於其本身L2快取記憶體子集504中,並視需要從其他子集清除。環形網路確保共用資料之相關性。環形網路為雙向,允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理器於晶片內相互通訊。每一環形資料路徑為每一方向1012位元寬。
圖5B為依據本發明之實施例之圖5A中部分處理器核心之展開圖。圖5B包括L1資料快取記憶體506A、部分L1快取記憶體506,更詳細地關於向量單元510及向量暫存器514。具體地,向量單元510為16寬向量處理單元(VPU)(詳16寬ALU 528),其執行一或更多個整數、單一精度浮點、及雙精度浮點指令。VPU支援暫存器輸入與拌和單元520拌和,與數字轉換單元522A-B數字轉換,與複製單元524複製記憶體輸入。寫入遮罩暫存器526允許斷定結果向量寫入。
圖6為依據本發明之實施例之處理器600的方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形。圖6中實線框描繪處理器600, 具有單一核心602A、系統代理器610、一組一或更多個匯流排控制器單元616,同時可選附加虛線框描繪替代處理器600,具有多核心602A-N、系統代理器單元610中之一組一或更多個整合記憶體控制器單元614、及專用邏輯608。
因而,處理器600之不同實施可包括:1)具有整合圖形及/或科學(產量)邏輯之專用邏輯608的CPU(其可包括一或更多個核心),且核心602A-N為一或更多個通用核心(例如通用依序核心、通用亂序核心、二者之組合);2)具有希望主要用於圖形及/或科學(產量)之大量專用核心之核心602A-N的協處理器;及3)具有大量通用依序核心之核心602A-N的協處理器。因而,處理器600可為通用處理器、協處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多整合核心(MIC)協處理器(包括30或更多核心)、嵌入處理器等。處理器可於一或更多個晶片上實施。處理器600可為使用任何數量處理技術之一或更多個基板的一部分,及/或可於該些基板上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多個級快取記憶體、一組或一或更多個共用快取記憶體單元606、及耦接至整合記憶體控制器單元614組之外部記憶體(未顯示)。共用快取記憶體單元606組可包括一或更多個中級快取記憶體,諸如2級(L2)、3級(L3)、4級(L4)、 或其他級快取記憶體、最後級快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環形互連單元612互連整合圖形邏輯608、共用快取記憶體單元606組、及系統代理器單元610/整合記憶體控制器單元614,替代實施例可使用任何數量熟知技術用於互連該等單元。在一實施例中,維持一或更多個快取記憶體單元606及核心602A-N間之相關性。
在若干實施例中,一或更多個核心602A-N可多執行緒處理。系統代理器610包括組件協調及作業核心602A-N。系統代理器單元610可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括調節核心602A-N及整合圖形邏輯608之功率狀態所需的邏輯及組件。顯示單元用於驅動一或更多個外部連接之顯示器。
在架構指令集方面,核心602A-N可為同質或異質;即,二或更多個核心602A-N可執行相同指令集,同時其他則僅可執行指令集之子集或不同指令集。
圖7-10為示例電腦架構之方塊圖。其他用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式其他電子裝置之本技藝中的已知其他系統設計及組態亦為適當。通常,如文中所揭露之可結合處理器及/或其他執行邏輯的各式系統或電子裝置一般 均適當。
現在回至圖7,顯示依據本發明之一實施例之系統700的方塊圖。系統700可包括一或更多個處理器710、715,其耦接至控制器集線器720。在一實施例中,控制器集線器720包括圖形記憶體控制器集線器(GMCH)790及輸入/輸出集線器(IOH)750(其可在個別晶片上);GMCH 790包括耦接至記憶體740及協處理器745之記憶體及圖形控制器;IOH 750將輸入/輸出(I/O)裝置760耦接至GMCH 790。另一方面,記憶體及圖形控制器之一者或二者整合於處理器內(如文中所描述),記憶體740及協處理器745以IOH 750直接耦接至處理器710及單一晶片中之控制器集線器720。
圖7中以虛線標示其餘處理器715之可選擇性。每一處理器710、715可包括文中所描述之一或更多個處理核心,並可為處理器600之若干版本。
記憶體740可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者組合。對至少一實施例而言,控制器集線器720經由諸如前側匯流排(FSB)之多落點匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接795,而與處理器710、715通訊。
在一實施例中,協處理器745為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。在一實施例 中,控制器集線器720可包括整合圖形加速器。
在優點之量度範圍方面,實體資源710、715之間存在各種差異,包括架構、微架構、熱、電力損耗特性等。
在一實施例中,處理器710執行指令,其控制一般類型之資料處理作業。協處理器指令可嵌入指令內。處理器710識別該些協處理器指令為應由附加協處理器745執行之類型。因此,處理器710於協處理器匯流排或其他互連上將該些協處理器指令(或代表協處理器指令之控制信號)發送至協處理器745。協處理器745接受及執行所接收之協處理器指令。
現在回至圖8,顯示依據本發明之實施例之第一特定示例系統800的方塊圖。如圖8中所示,多處理器系統800為點對點互連系統,包括經由點對點互連850耦接之第一處理器870及第二處理器880。每一處理器870及880可為處理器600之若干版本。在本發明之一實施例中,處理器870及880分別為處理器710及715,同時協處理器838為協處理器745。在另一實施例中,處理器870及880分別為處理器710及協處理器745。
所示處理器870及880分別包括整合記憶體控制器(IMC)單元872及882。處理器870亦包括其匯流排控制器單元點對點(P-P)介面876及878之一部分;類似地,第二處理器880包括P-P介面886及888。處理器870、880可經由使用P-P介面電路878、888之點 對點(P-P)介面850而交換資訊。如圖8中所示,IMC872及882耦接處理器至個別記憶體,即記憶體832及記憶體834,其可為局部附加至個別處理器之主記憶體的一部分。
每一處理器870、880可經由使用點對點介面電路876、894、886、898之個別P-P介面852、854,而與晶片組890交換資訊。晶片組890可選地經由高性能介面839而與協處理器838交換資訊。在一實施例中,協處理器838為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。
共用快取記憶體(未顯示)可包括於任一處理器中或二處理器外部,但經由P-P互連與處理器連接,使得若處理器處於低功率模式,則任一處理器或二處理器之局部快取記憶體資訊可儲存於共用快取記憶體中。
晶片組890可經由介面896而耦接至第一匯流排816。在一實施例中,第一匯流排816可為週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未如此限制。
如圖8中所示,各式I/O裝置814可耦接至第一匯流排816,連同匯流排橋接器818,其將第一匯流排816耦接至第二匯流排820。在一實施例中,一或更多個其餘處理器815耦接至第一匯流排816,諸如協處理 器、高產量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可程控閘陣列、或任何其他處理器。在一實施例中,第二匯流排820可為低管腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排820,包括例如鍵盤及/或滑鼠822、通訊裝置827及儲存單元828,諸如可包括指令/碼及資料830之磁碟機或其他大量儲存裝置。此外,音頻I/O824可耦接至第二匯流排820。請注意,其他架構亦可。例如,取代圖8之點對點架構,系統可實施多落點匯流排或其他該等架構。
現在回至圖9,顯示依據本發明之實施例之第二特定示例系統900的方塊圖。圖8及9中類似元件配賦相似代號,且圖9已省略圖8之某些方面,以避免混淆圖9之其他方面。
圖9描繪處理器870、880可分別包括整合記憶體及I/O控制邏輯(「CL」)872及882。因而,CL 872、882包括整合記憶體控制器單元,及包括I/O控制邏輯。圖9描繪不僅記憶體832、834耦接至CL 872、882,I/O裝置914亦耦接至控制邏輯872、882。舊有I/O裝置915耦接至晶片組890。
現在回至圖10,顯示依據本發明之實施例之SoC 1000的方塊圖。圖6中類似元件配賦相似代號。而且,虛線框為更先進SoC上之可選部件。在圖10中,互連單元1002耦接至:應用處理器1010,其包括一組一或 更多個核心202A-N及共用快取記憶體單元606;系統代理器單元610;匯流排控制器單元616;整合記憶體控制器單元614;一組或一或更多個協處理器1020,其可包括整合圖形邏輯、圖像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;及顯示單元1040,用於耦接至一或更多個外部顯示器。在一實施例中,協處理器1020包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施途徑之組合實施。本發明之實施例可實施為電腦程式或程式碼,其係於包含至少一處理器之可程控系統上執行;儲存系統(包括揮發及非揮發記憶體及/或儲存元件);至少一輸入裝置;及至少一輸出裝置。
諸如圖8中所描繪之碼830的程式碼,可施加於輸入指令,而實施文中所描述之功能並產生輸出資訊。輸出資訊可以已知方式施加於一或更多個輸出裝置。為此應用,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,而與處理系統通訊。若需要,程式碼亦可以組合或機器語言實施。事實上,文中所描述之機構不侷限於任何特 定編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或更多個方面可由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當機器讀取指令時,致使機器製造邏輯而實施文中所描述之技術。該等代表,已知為「IP核心」,可儲存於實體機器可讀取媒體上,並支援各式用戶或製造廠,載入實際製造邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括但不侷限於由機器或裝置製造或形成之物件的非暫態實體配置,包括儲存媒體,諸如硬碟;任何其他類型碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM);隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM);可抹除可程控唯讀記憶體(EPROM);快閃記憶體;電可抹除可程控唯讀記憶體(EEPROM);相變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫態實體機器可讀取媒體,包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義文中所描述之結構、電路、設備、處理器及/或系統部件。該等實施例亦可稱為程式產品。
在若干狀況下,指令轉換器可用以將指令從 來源指令集轉換至目標指令集。例如,指令轉換器可翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、轉譯、仿真、或轉換指令為將由核心處理之一或更多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖11為方塊圖,對比於依據本發明之實施例之使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。在描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖11顯示高階語言1102之程式,可使用x86編譯器1104編譯,而產生x86二元碼1106,其可由具至少一x86指令集核心1116之處理器本機執行。具有至少一x86指令集核心1116之處理器代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的實質部分,或(2)目標在具有至少一x86指令集核心之Intel處理器運行之應用或其他軟體的物件碼版本,以便實質上達成與具有至少一x86指令集核心之Intel處理器的相同結果,而實質上實施與具有至少一x86指令集核心之Intel處理器的相同功能。x86編譯器1104代表編譯器,可操作以產生x86二元碼1106(例如物件碼),具或不具其餘鏈接處理,而在具有至少一x86指令集核心1116之處理器上執行。類似地,圖11顯示高階語言1102之程式,可使用替代指 令集編譯器1108編譯,而產生可由不具有至少一x86指令集核心1114之處理器(例如具有執行加州桑尼維爾MIPS科技公司之MIPS指令集及/或執行加州桑尼維爾ARM國際科技之ARM指令集之核心的處理器)本機執行之替代指令集二元碼1110。指令轉換器1112用以將x86二元碼1106轉換為可由不具x86指令集核心1114之處理器本機執行的碼。此轉換碼幾乎不可能與替代指令集二元碼1110相同,因為此指令轉換器難以製造;然而,轉換碼將完成一般作業,並由來自替代指令集之指令組成。因而,指令轉換器1112代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他處理,而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元碼1106。
用於實施自旋迴路跳位之方法及設備
以下所描述之本發明之實施例減少自旋-等候迴路中指令數量。尤其,本發明之一實施例包括跳位-暫停指令JPAUSE(cc)DST,其暗示迴路自旋-等候,若狀況符合(例如,依據狀況碼(cc)值),則跳位(特定延遲後)至目的地指令(DST)。在一實施例中,測試-減法指令TESTSUB MEM/REG1,REG2接受做為來源監測值(記憶體位置或暫存器)及計數器(暫存器),計數器減1,測試監測值及測試計數器是否為零值。如以下所討論,該些二新指令用以減少自旋-等候迴路所需整個指令 數量。
如圖12中所描繪,其上可實施本發明之實施例的示例處理器1255包括解碼器1230具跳位-暫停(JPAUSE)解碼邏輯1231用於解碼跳位-暫停指令,及測試-減法(TESTSUB)解碼邏輯1232用於解碼測試-減法指令。亦描繪執行邏輯1240,具跳位-暫停(JPAUSE)執行邏輯1241用於執行解碼之跳位-暫停指令,及測試-減法(TESTSUB)執行邏輯1242用於執行解碼之測試-減法指令。
現在將描述示例處理器之其餘細節。然而,應注意的是本發明之基本原理不侷限於任何特定類型處理器架構。
描繪之處理器架構包括一組通用暫存器(GPR)1205、一組向量暫存器1206、及一組遮罩暫存器1207。在一實施例中,多個向量資料元件裝入每一向量暫存器1206,其可具有512位元寬度用於儲存二個256位元值、四個128位元值、八個64位元值、十六個32位元值等。然而,本發明之基本原理不侷限於任何特定尺寸/類型向量資料。在一實施例中,遮罩暫存器1207包括八個64位元運算元遮罩暫存器,用於在儲存於向量暫存器1206中之值上執行位元遮罩作業(例如,實施為以上所描述之遮罩暫存器k0-k7)。然而,本發明之基本原理不侷限於任何特定遮罩暫存器尺寸/類型。
為簡化,圖12中描繪單一處理器核心(「核 心0」)之細節。然而,將了解的是圖12中所示每一核心可具有相同邏輯組做為核心0。例如,每一核心可包括專用1級(L1)快取記憶體1212及2級(L2)快取記憶體1211,用於依據特定快取管理政策而快取指令及資料。L1快取記憶體1212包括個別指令快取記憶體1220用於儲存指令,及個別資料快取記憶體1221用於儲存資料。儲存於各式處理器快取記憶體內之指令及資料係以快取線之粒度管理,其可為固定尺寸(例如,長度64、128、512位元組)。本示例實施例之每一核心具有指令提取單元1210,用於從主記憶體1200及/或共用3級(L3)快取記憶體1216提取指令;解碼單元1230,用於解碼指令(例如,將程式指令解碼為微運算或「uops」);執行單元1240,用於執行指令;及寫回單元1250,用於止用指令並將結果寫回。
指令提取單元1210包括各式熟知組件,包括下一指令指示器1203,用於儲存將從記憶體1200(或一快取記憶體)提取之下一指令的位址;指令轉譯後備緩衝區(ITLB)1204,用於儲存最近使用之虛擬對實體指令位址之映圖,以改進位址轉譯速度;分支預測單元1202,用於不確定地預測指令分支位址;及分支目標緩衝區(BTB)1201,用於儲存分支位址及目標位址。一旦提取,指令接著流至指令管線之剩餘級,包括解碼單元1230、執行單元1240、及寫回單元1250。本技藝之一般技術人士熟悉每一該些單元之結構及功能,此處將不詳細 描述以避免混淆本發明之不同實施例的相關觀點。
圖13中描繪示例自旋-等候迴路。在1301,監測值(例如儲存於特定記憶體位置)相較於退出旗標值。若相等,便於1305退出程序;若不相等,則迴路計數器於1302減量。若迴路計數器達到零,並於1303結束,接著於1305退出程序。若否,則於1304執行暫停(PAUSE)指令,以向處理器提供暗示,改進自旋-等候迴路之性能。在一實施例中,暫停指令包含Intel® 64及IA-32架構軟體開發者手冊(2014年9月)之11.4.4.4節中所描述之版本。
下列為使用具自旋-等候迴路之暫停指令的示例指令序列:spin_loop: cmp[mem],exit_flag je exit sub rcx,1 je exit pause jmp spin_loop exit:
此處,監測值於[mem]退出序列,等於exit_flag。若減1運算(sub rcx,1)導致計數器值為0,亦退出序列。除非執行暫停指令,程序將跳回至自旋迴路之頂端。
如上述,本發明之實施例包括二個新指令,在該些類型自旋-等候迴路中,減少整體指令數量。在一實施例中,若以與指令相關聯之狀況碼(cc)指定之狀況 滿足,並提供此指令及目的地指令間之迴路為自旋-等候迴路之暗示,則JPAUSE(cc)DST指令於指定之硬體延遲之後,將程式控制轉移至目的地(DST)指令。在一實施例中,若狀況未滿足,則無延遲。
下列範例顯示依據本發明之一實施例可如何實施JPAUSE(cc)DST,並假定自旋迴路將循環I_MPI_SPIN_COUNT遍:rcx=I_MPI_SPIN_COUNT+1 spin_loop: cmp[mem],flag je exit sub rcx,1 jpausenz spin_loop exit:
在上述範例中,JPAUSENZ SPIN_LOOP使用「非零」狀況碼,其測試非零值是否存在於RCX中。若然,便致使跳位至自旋_迴路開端(即cmp[mem],flag)。若狀況未滿足(即零值),則無延遲,且迴路退出。因而,達成以上範例中之相同結果,其使用PAUSE指令,但執行較少指令。
圖14描繪跳位-暫停指令之一實施例執行的複數作業。在1400,解碼及/或執行跳位-暫停指令。在1401,提供暗示至處理器,表示跳位-暫停指令即目的地指令間之迴路包含自旋-等候迴路(例如,以與PAUSE指令類似之方式)。若狀況碼(cc)指定之狀況滿足,於1403決定,接著實施指定延遲,繼而跳位至目的地指 令。例如,在以上碼中,jpausenz延遲達指定期間,接著跳位至自旋迴路開端(cmp[mem],flag)。若狀況未滿足,則於1405退出程序。
測試-減法指令可採取TESTSUB MEM/REG1,REG2形式,其從記憶體位置(MEM)或暫存器(REG1)接受監測值做為第一來源,及計數器做為第二來源(REG2)。在一實施例中,測試-減法指令將計數器減量1,並測試監測值及計數器是否為零值。
下列範例顯示測試-減法指令可如何為跳位-暫停指令而附加至以上所示之程式碼:spin_loop: mov rax,[mem] sub rax,flag testsub rax,rcx jpausenz spin_loop
因而,在以上範例中,TESTSUB RAX,RCX將RCX中計數器值減量1,測試RAX中監測值(例如,退出旗標),以決定是否退出,亦測試計數器是否為零值。圖15描繪依據測試-減法指令之一實施例的方法。在1500,解碼及/或執行測試-減法指令。在1501,第二來源暫存器(例如REG2)中計數器值減量1。在1502,測試監測值。在一實施例中,此係藉由決定監測值是否等於指定值(例如0或指定退出旗標值)而簡單地實施。此外,測試計數器值是否為零值。
若計數器值為零及/或若監測值等於指定退出 值,於1503決定,接著於1505,程序退出。若否,則執行自旋迴路(或其他指令序列)中下一指令(例如,以上提供之範例中跳位-暫停指令)。
下列範例使用測試-減法及跳位-暫停指令,提供針對以上程式碼序列之另一修改。
spin_loop: testsub[mem],rcx jpausenz spin_loop
當監測記憶體位置[mem]中之值而等候0值時,可使用此序列,其係常見狀況。因而,基於該些參數,僅需2個指令,明顯減少執行時間,減少可執行尺寸,減少應用尺寸,及/或改進碼可讀性。
在上述說明書中,已參照其特定示例實施例描述本發明之實施例。然而,將顯而易見的是可進行各式修改及改變,而未偏離如申請項中所提出之本發明的廣泛精神及範圍。因此,說明書及圖式係以描繪而非限制之態度觀之。
本發明之實施例可包括以上所描述之各式步驟。該些步驟可以機器可執行指令體現,其可用以致使通用或專用處理器實施該些步驟。另一方面,該些步驟可藉由特定硬體組件實施,包含用於實施該些步驟之固線式邏輯,或藉由程控電腦組件及客製硬體組件之任何組合。
如文中所描述,指令可指硬體之特定組態,諸如專用積體電路(ASIC)組構成而實施某些作業,或具有儲存於以非暫態電腦可讀取媒體體現之記憶體中的預 定功能或軟體指令。因而,圖中所示技術可使用儲存於一或更多個電子裝置(例如終端站、網路元件等)中並於其上執行之碼及資料實施。該等電子裝置使用電腦機器可讀取媒體(內部及/或透過網路而與其他電子裝置)儲存及通訊碼及資料,諸如非暫態電腦機器可讀取儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體),及暫態電腦機器可讀取通訊媒體(例如電力、光學、聲學或其他傳播信號形式,諸如載波、紅外線信號、數位信號等)。此外,該等電子裝置典型地包括耦接至一或更多個其他組件之一組一或更多個處理器,諸如一或更多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器組及其他組件之耦接典型地經由一或更多個匯流排組及橋接器(亦稱為匯流排控制器)。儲存裝置及攜帶網路訊務之信號分別代表一或更多個機器可讀取儲存媒體及機器可讀取通訊媒體。因而,特定電子裝置之儲存裝置典型地儲存碼及/或資料,在電子裝置之一或更多個處理器組上執行。當然,本發明之實施例之一或更多個部件可使用軟體、韌體、及/或硬體之不同組合實施。貫穿此詳細描述,為說明之故,提出許多特定細節以便提供本發明之徹底了解。然而,對熟悉本技藝之人士將顯而易見的是,可無若干該些特定細節而實現本發明。在某些狀況下,未詳細描述熟知結構及功能,以避免混淆本發明之技術主題。因此,應從下列申請 項判斷本發明之範圍及精神。

Claims (20)

  1. 一種處理器,包含:跳位-暫停執行邏輯,用以執行跳位-暫停指令,該跳位-暫停指令用以指明狀況及識別目的地指令;其中,回應於該跳位-暫停指令之該執行,該跳位-暫停執行邏輯用以提供該跳位-暫停指令及該目的地指令間之迴路包含自旋-等候迴路之暗示,並用以測試該狀況,若該狀況滿足,則該跳位-暫停執行邏輯於跳位至該目的地指令之前,用以延遲執行達指定量。
  2. 如申請專利範圍第1項之處理器,其中,若該狀況未滿足,則該跳位-暫停執行邏輯用以退出該自旋-等候迴路。
  3. 如申請專利範圍第1項之處理器,其中,該指定量大於或等於零。
  4. 如申請專利範圍第1項之處理器,其中,該目的地指令包含於該自旋-等候迴路中之指令。
  5. 如申請專利範圍第1項之處理器,進一步包含測試-減法執行邏輯,用以執行測試-減法指令,該測試-減法執行邏輯用以回應地減量計數器值達1,測試監測值及測試該計數器值。
  6. 如申請專利範圍第5項之處理器,其中,該測試-減法執行邏輯係用以決定該監測值是否表示退出狀況,及該計數器值是否具有零值,其中,若該監測值表示退出狀況或該計數器值具有零值,則該測試-減法執行邏輯用以退 出該自旋-等候迴路。
  7. 如申請專利範圍第6項之處理器,其中,若該監測值不表示退出狀況,或該計數器值不具有零值,則該測試-減法執行邏輯致使執行該自旋-等候迴路中之下一指令。
  8. 一種處理器,包含:第一來源暫存器或記憶體,用以儲存監測值;第二來源暫存器,用以儲存計數器值;以及測試-減法執行邏輯,用以執行測試-減法指令,該測試-減法指令用以減量該第二來源暫存器中該計數器值,該測試-減法執行邏輯進一步用以測試該第一來源暫存器或記憶體中之該監測值,及該第二來源暫存器中之該計數器值,其中,若該監測值具有表示退出狀況之值,或若該計數器值等於零,則該測試-減法執行邏輯用以退出自旋-等候迴路。
  9. 如申請專利範圍第8項之處理器,其中,若該監測值不具有表示退出狀況之值,或若該計數器值不等於零,則該測試-減法執行邏輯用以致使執行該自旋-等候迴路中之下一指令。
  10. 如申請專利範圍第9項之處理器,其中,該自旋-等候迴路中之該下一指令包含跳位-暫停指令,其中,回應於該跳位-暫停指令之該執行,該跳位-暫停執行邏輯用以提供該跳位-暫停指令及該目的地指令間之迴路包含自旋-等候迴路之暗示,並用以測試該狀況,若該狀況滿足,則該跳位-暫停執行邏輯於跳位至該目的地指令之 前,用以延遲執行達指定量。
  11. 如申請專利範圍第10項之處理器,其中,若該狀況未滿足,則該跳位-暫停執行邏輯用以退出該自旋-等候迴路。
  12. 如申請專利範圍第10項之處理器,其中,該指定量大於或等於零。
  13. 如申請專利範圍第10項之處理器,其中,該目的地指令包含該自旋-等候迴路中之指令。
  14. 一種方法,包含:由處理器執行跳位-暫停指令,該跳位-暫停指令指明狀況及識別目的地指令;提供該跳位-暫停指令及該目的地指令間之迴路包含自旋-等候迴路之暗示;回應於該跳位-暫停指令之該執行,測試該狀況;以及若該狀況滿足,則於跳位至該目的地指令之前,延遲執行達指定量。
  15. 如申請專利範圍第14項之方法,進一步包含:若該狀況未滿足,則退出該自旋-等候迴路。
  16. 如申請專利範圍第14項之方法,其中,該指定量大於或等於零。
  17. 如申請專利範圍第14項之方法,其中,該目的地指令包含於該自旋-等候迴路中之指令。
  18. 如申請專利範圍第14項之方法,進一步包含: 執行測試-減法指令,以回應地減量計數器值達1,測試監測值及測試該計數器值。
  19. 如申請專利範圍第18項之方法,進一步包含:決定該監測值是否表示退出狀況,及該計數器值是否具有零值;以及若該監測值表示退出狀況或該計數器值具有零值,則退出該自旋-等候迴路。
  20. 如申請專利範圍第19項之方法,進一步包含:若該監測值不表示退出狀況,或該計數器值不具有零值,則致使執行於該自旋-等候迴路中之下一指令。
TW104137895A 2014-12-17 2015-11-17 用於執行自旋迴路跳位的裝置及方法 TWI617977B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??PCT/IB2014/002984 2014-12-17
PCT/IB2014/002984 WO2016097782A1 (en) 2014-12-17 2014-12-17 Apparatus and method for performing a spin-loop jump

Publications (2)

Publication Number Publication Date
TW201643692A true TW201643692A (zh) 2016-12-16
TWI617977B TWI617977B (zh) 2018-03-11

Family

ID=52450526

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104137895A TWI617977B (zh) 2014-12-17 2015-11-17 用於執行自旋迴路跳位的裝置及方法

Country Status (7)

Country Link
US (1) US20170329609A1 (zh)
EP (1) EP3234765A1 (zh)
JP (1) JP2018503162A (zh)
KR (1) KR102321941B1 (zh)
CN (1) CN106922186A (zh)
TW (1) TWI617977B (zh)
WO (1) WO2016097782A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2779032B2 (ja) * 1990-01-23 1998-07-23 株式会社日立製作所 情報処理装置
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US8806183B1 (en) * 2006-02-01 2014-08-12 Ixys Ch Gmbh Blank bit and processor instructions employing the blank bit
US8230203B2 (en) * 2007-03-30 2012-07-24 Intel Corporation Detecting spin loops in a virtual machine environment
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN103493023A (zh) * 2011-04-26 2014-01-01 富士通株式会社 系统以及检测方法
US10157061B2 (en) * 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
CN102968293B (zh) * 2012-11-28 2014-12-10 中国人民解放军国防科学技术大学 基于指令队列的程序循环代码动态检测及执行方法
CN104781803B (zh) * 2012-12-26 2018-06-15 英特尔公司 用于架构不同核的线程迁移支持
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions

Also Published As

Publication number Publication date
WO2016097782A1 (en) 2016-06-23
KR102321941B1 (ko) 2021-11-05
KR20170094147A (ko) 2017-08-17
EP3234765A1 (en) 2017-10-25
TWI617977B (zh) 2018-03-11
US20170329609A1 (en) 2017-11-16
CN106922186A (zh) 2017-07-04
JP2018503162A (ja) 2018-02-01

Similar Documents

Publication Publication Date Title
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI483183B (zh) 混洗浮點或整數值的裝置與方法
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
TWI489381B (zh) 多暫存器散布指令
TWI544411B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI637276B (zh) 執行向量位元混洗的方法與裝置
TWI663545B (zh) 執行置換運算的處理器
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
TWI599952B (zh) 用於執行衝突檢測的方法及裝置
TW201810070A (zh) 利用索引和立即數執行向量排列的方法和設備
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
JP6738579B2 (ja) 命令フローを最適化するチェックを実行するための装置および方法
KR20170097015A (ko) 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TW201349106A (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TWI610234B (zh) 用於壓縮遮罩值的方法及裝置
TWI617977B (zh) 用於執行自旋迴路跳位的裝置及方法
CN107003841B (zh) 用于融合加法-加法指令的装置和方法
KR20170098806A (ko) 벡터 비트 수집을 수행하기 위한 방법 및 장치
TW201730756A (zh) 用於從鏈結結構取回元件的設備和方法

Legal Events

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