TW201643708A - 用於壓縮遮罩值的方法及裝置 - Google Patents

用於壓縮遮罩值的方法及裝置 Download PDF

Info

Publication number
TW201643708A
TW201643708A TW104139714A TW104139714A TW201643708A TW 201643708 A TW201643708 A TW 201643708A TW 104139714 A TW104139714 A TW 104139714A TW 104139714 A TW104139714 A TW 104139714A TW 201643708 A TW201643708 A TW 201643708A
Authority
TW
Taiwan
Prior art keywords
bit
mask
field
mask register
register
Prior art date
Application number
TW104139714A
Other languages
English (en)
Other versions
TWI610234B (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 TW201643708A publication Critical patent/TW201643708A/zh
Application granted granted Critical
Publication of TWI610234B publication Critical patent/TWI610234B/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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

用於遮罩壓縮的裝置及方法。舉例而言,處理器的一實施例包括:來源遮罩暫存器,其儲存多個遮罩位元,包括多個已設定位元和多個未設定位元;目的遮罩暫存器,其儲存從來源遮罩暫存器所讀取的已設定位元;以及遮罩壓縮邏輯,其從來源遮罩暫存器讀取每個已設定位元,並且在目的遮罩暫存器的一側上儲存已設定位元在鄰接的位元位置。

Description

用於壓縮遮罩值的方法及裝置
本發明大致關於電腦處理器的領域。更特別而言,本發明關於用來壓縮遮罩值的方法及裝置。
指令組或指令組架構(ISA)是電腦架構中關於程式設計的部分,包括本機資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和例外處理、外部輸入和輸出(I/O)。應注意「指令」一詞一般而言在此是指巨集指令,它是提供給處理器來執行的指令,此乃相對於微指令或微作業而言(其是處理器的解碼器將巨集指令加以解碼的結果)。微指令或微作業可以建構成指示處理器上的執行單元來進行作業以實施關聯於巨集指令的邏輯。
ISA與微架構有所區分,後者是用於實施指令組的一組處理器設計技術。具有不同微架構的處理器可以分享共同的指令組。舉例而言,雖然Intel® Pentium 4處理器、Intel® CoreTM處理器、來自加州Sunnyvale的Advanced Micro Devices公司的處理器實施幾乎相同版本 的x86指令組(某些延伸已經加入了較新的版本),但是具有不同的內部設計。舉例而言,ISA的相同暫存器架構可以使用熟知的技術而以不同方式來實施於不同的微架構,該等技術包括專屬的實體暫存器、使用暫存器更名機制(譬如使用暫存器別名表(RAT)、重排緩衝器(ROB)、退除暫存器檔案)之一或更多個動態配置的實體暫存器。除非另有指定,否則在此使用暫存器架構、暫存器檔案、暫存器等詞係用來指對於軟體/程式人員係顯而易見的以及指令用以指定暫存器的方式。當須要區分時,「邏輯的」、「架構的」或「軟體可見的」等形容詞將用於指示暫存器架構中的暫存器/檔案,而不同的形容詞將用於指定在給定之微架構中的暫存器(譬如實體暫存器、重排緩衝器、退役暫存器、暫存器集用場)。
指令組包括一或更多種指令格式。給定的指令格式定義多樣的欄位(位元的數目、位元的位置),以尤其指定所要進行的作業和上面要進行該作業的(多個)運算元。某些指令格式透過指令模板(或次格式)之定義而進一步被分解。舉例而言,給定之指令格式的指令模板可以定義為具有不同次組之指令格式的欄位(雖然所包括的欄位典型而言是在相同的次序,但是至少某些者具有不同的位元位置,因為包括較少的欄位);以及/或者定義為做不同解讀的給定欄位。給定的指令使用給定的指令格式來表達(並且如果定義的話,是在該指令格式之一給定的指令模板中),並且指定作業和運算元。指令流是特定 的一連串指令,其中該連串的每個指令是在指令格式中發生的指令(並且如果定義的話,是在該指令格式之一給定的指令模板中)。
0、1~N‧‧‧核心
100‧‧‧對一般向量友善的指令格式
105‧‧‧無記憶體存取指令模板
110‧‧‧無記憶體存取的全捨入控制類型作業指令模板
112‧‧‧無記憶體存取之寫入遮罩控制的部分捨入控制類型作業指令模板
115‧‧‧無記憶體存取的資料轉變類型作業指令模板
117‧‧‧無記憶體存取之寫入遮罩控制的VSIZE類型作業指令模板
120‧‧‧記憶體存取指令模板
125‧‧‧記憶體存取的時間指令模板
127‧‧‧記憶體存取的寫入遮罩控制指令模板
130‧‧‧記憶體存取的非時間指令模板
140‧‧‧格式欄位
142‧‧‧基礎作業欄位
144‧‧‧暫存器索引欄位
146‧‧‧修改者欄位
146A‧‧‧無記憶體存取
146B‧‧‧記憶體存取
150‧‧‧擴增作業欄位
152‧‧‧α欄位
152A‧‧‧RS欄位
152A.1‧‧‧捨入
152A.2‧‧‧資料轉變
152B‧‧‧逐出提示(EH)欄位
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‧‧‧Reg欄位
246‧‧‧R/M欄位
250‧‧‧度量、索引、基礎(SIB)
252‧‧‧SIB.ss
254‧‧‧SIB.xxx
256‧‧‧SIB.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‧‧‧L2快取
506‧‧‧階層1(L1)快取
506A‧‧‧L1資料快取
508‧‧‧純量單元
510‧‧‧向量單元
512‧‧‧純量暫存器
514‧‧‧向量暫存器
520‧‧‧攪混單元
522A、522B‧‧‧數字轉換單元
524‧‧‧複製單元
526‧‧‧寫入遮罩暫存器
528‧‧‧16寬的ALU
600‧‧‧處理器
602A~602N‧‧‧核心
604A~604N‧‧‧快取單元
606‧‧‧分享的快取單元
608‧‧‧特用邏輯
610‧‧‧系統代理器
612‧‧‧互連單元
614‧‧‧整合式記憶體控制器單元
616‧‧‧匯流排控制器單元
700‧‧‧系統
710、715‧‧‧處理器
720‧‧‧控制器集線器
740‧‧‧記憶體
745‧‧‧共同處理器
750‧‧‧輸入/輸出集線器(IOH)
760‧‧‧輸入/輸出(I/O)裝置
790‧‧‧圖形記憶體控制器集線器(GMCH)
795‧‧‧連接
800‧‧‧多處理器系統
814‧‧‧I/O裝置
815‧‧‧額外處理器
816‧‧‧第一匯流排
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤和/或滑鼠
824‧‧‧音訊I/O
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧指令/碼和資料
832、834‧‧‧記憶體
838‧‧‧共同處理器
839‧‧‧高效能介面
850‧‧‧點對點互連
852、854‧‧‧點對點(P-P)介面
870‧‧‧第一處理器
872‧‧‧整合式記憶體控制器(IMC)單元、整合式記憶體和I/O控制邏輯(CL)
876、878‧‧‧P-P介面
880‧‧‧第二處理器
882‧‧‧IMC單元、整合式記憶體和I/O控制邏輯(CL)
886、888‧‧‧P-P介面
890‧‧‧晶片組
892‧‧‧介面
894‧‧‧點對點介面電路
896‧‧‧介面
898‧‧‧點對點介面電路
900‧‧‧系統
914‧‧‧I/O裝置
915‧‧‧遺留I/O裝置
1000‧‧‧單晶片系統(SoC)
1002‧‧‧互連單元
1010‧‧‧應用程式處理器
1020‧‧‧共同處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1102‧‧‧高階語言
1104‧‧‧x86編譯器
1106‧‧‧x86二元碼
1108‧‧‧替代性指令組編譯器
1110‧‧‧替代性指令組二元碼
1112‧‧‧指令轉換器
1114‧‧‧沒有至少一x86指令組核心的處理器
1116‧‧‧具有至少一x86指令組核心的處理器
1200‧‧‧主記憶體
1201‧‧‧分支目標緩衝器(BTB)
1202‧‧‧分支預測單元
1203‧‧‧次一指令指標
1204‧‧‧指令翻譯後援緩衝器(ITLB)
1205‧‧‧通用暫存器(GPR)
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1210‧‧‧指令拿取單元
1211‧‧‧L2快取
1212‧‧‧L1快取
1216‧‧‧分享的階層3(L3)快取
1220‧‧‧指令快取
1221‧‧‧資料快取
1230‧‧‧解碼單元
1231‧‧‧遮罩壓縮解碼邏輯
1240‧‧‧執行單元
1241‧‧‧遮罩壓縮執行邏輯
1250‧‧‧寫回單元
1255‧‧‧處理器
1300‧‧‧遮罩壓縮邏輯
1301‧‧‧來源遮罩暫存器(KSRC)
1302‧‧‧目的遮罩暫存器(KDST)
1401‧‧‧來源遮罩暫存器(KSRC)
1402‧‧‧目的遮罩暫存器(KDST)
1501~1504‧‧‧壓縮遮罩暫存器的方法步驟
QAB40‧‧‧格式欄位
QAB42‧‧‧基礎作業欄位
QAB44‧‧‧暫存器索引欄位
QAB52‧‧‧α欄位
QAB54‧‧‧β欄位
QAB62A‧‧‧位移欄位
QAB62B‧‧‧位移因子欄位
QAB64‧‧‧資料元件寬度欄位
QAB68‧‧‧類別欄位
QAB70‧‧‧寫入遮罩欄位
QAB72‧‧‧立即欄位
QAB74‧‧‧全運作碼欄位
QAC42‧‧‧MOD欄位
QAC50‧‧‧SIB欄位
從後面配合以下圖式的[實施方式]可以更好了解本發明,其中:圖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指令將在選擇特定運算元的運算元欄位中具有特定的內容。已經釋出和/或出版了稱為先進向量延伸(AVX)(AVX1和AVX2)和使用向量延伸(VEX)編碼體制的一組SIMD延伸(譬如見Intel® 64 和IA-32架構軟體開發者手冊,2011年10月;以及見Intel®先進向量延伸程式化參考,2011年6月)。
<範例性指令格式>
在此所述之(多個)指令的實施例可以具體化成不同的格式。附帶而言,範例性系統、架構、管道乃詳述如下。(多個)指令的實施例可以在此種系統、架構、管道上執行,但不限於所詳列者。
A.對一般向量友善的指令格式
對向量友善的指令格式是適合向量指令的指令格式(譬如有特定於向量作業的特定欄位)。雖然在所述的實施例中,透過對向量友善的指令格式而同時支援向量作業和純量作業,但是替代性實施例僅在對向量友善的指令格式中使用向量作業。
圖1A~1B是根據本發明實施例的方塊圖,其示範對一般向量友善的指令格式及其指令模板。圖1A是根據本發明實施例的方塊圖,其示範對一般向量友善的指令格式及其類別A指令模板;而圖1B是根據本發明實施例的方塊圖,其示範對一般向量友善的指令格式及其類別B指令模板。特定而言,對一般向量友善的指令格式100定義了類別A和類別B的指令模板,此二者皆包括無記憶體存取105指令模板和記憶體存取120指令模板。在對向量友善的指令格式背景下的「一般」一詞是指指令格式不 受制於任何特定的指令組。
雖然在本發明所將描述的實施例中,對向量友善的指令格式支援以下者:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或尺寸)的64位元組向量運算元長度(或尺寸)(因此,64位元組向量是由16個雙字組尺寸元件或替代而言8個四字組尺寸元件所構成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸)的64位元組向量運算元長度(或尺寸);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸)的32位元組向量運算元長度(或尺寸);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸)的16位元組向量運算元長度(或尺寸);但是替代性實施例可以支援更多、更少和/或不同的向量運算元尺寸(譬如256位元組向量運算元)而具有更多、更少或不同的資料元件寬度(譬如128位元(16位元組)資料元件寬度)。
圖1A的類別A指令模板包括:(1)在無記憶體存取指令模板105裡,顯示的是無記憶體存取的全捨入控制類型作業指令模板110和無記憶體存取的資料轉變類型作業指令模板115;以及(2)在記憶體存取指令模板120裡,顯示的是顯示記憶體存取的時間指令模板125和記憶體存取的非時間指令模板130。圖1B的類別B指 令模板包括:(1)在無記憶體存取指令模板105裡,顯示的是無記憶體存取之寫入遮罩控制的部分捨入控制類型作業指令模板112和無記憶體存取之寫入遮罩控制的VSIZE類型作業指令模板117;以及(2)在記憶體存取指令模板120裡,顯示的是記憶體存取的寫入遮罩控制指令模板127。
對一般向量友善的指令格式100包括以圖1A~1B所示範之次序而列於下的以下欄位。
格式欄位140:這欄位的特定值(指令格式識別者值)獨特的識別出對向量友善的指令格式,因此識別出指令流中以對向量友善的指令格式所發生的指令。如此,則這欄位就以下意義來說是可選用的:對於僅具有對一般向量友善的指令格式之指令組而言,便不需要這欄位。
基礎作業欄位142:其內容分辨不同的基礎作業。
暫存器索引欄位144:其內容直接或透過位址產生而指定來源運算元和目的運算元它們在暫存器或記憶體中的位置。這些包括足夠數目的位元以從P×Q(譬如32×512、16×128、32×1024、64×1024)個暫存器檔案來選擇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而決定。位移欄位162A和位移因子欄位162B就以下意義來說是可選用的:它們不是用於無記憶體存取指令模板105,以及/或者不同的實施例可以僅實施此二者中的一者或都不實施。
資料元件寬度欄位164:其內容分辨要使用許多資料元件寬度中的哪一個(某些實施例是針對全部的指令;其他實施例是僅針對某些指令)。這欄位就以下意義來說是可選用的:如果僅支援一資料元件寬度以及/或者使用運作碼的某方面來支援資料元件寬度,則不需要這欄位。
寫入遮罩欄位170:其內容按照每個資料元件位置來控制目的向量運算元中的該資料元件位置是否反映出基礎作業和擴增作業的結果。類別A指令模板支援合併寫入遮罩,而類別B指令模板同時支援合併寫入遮罩和歸零寫入遮罩。當合併時,向量遮罩允許目的中的任一組元件在執行任何作業(由基礎作業和擴增作業所指定)的期間免於被更新;於其他一實施例,保留目的之每個元件的 舊值,其中對應的遮罩位元具有0。相對而言,當歸零時,向量遮罩允許目的中的任一組元件在執行任何作業(由基礎作業和擴增作業所指定)的期間歸零;於一實施例,當對應的遮罩位元具有0值時,目的之元件設定為0。一次組的這功能性在於能夠控制正在進行之作業的向量長度(也就是說,正在修改之元件從第一個到最後一個的跨度);然而,被修改的元件不須要是連續的。因此,寫入遮罩欄位170允許部分的向量作業,包括載入、儲存、算數、邏輯......。雖然本發明實施例所描述之寫入遮罩欄位170的內容選擇許多寫入遮罩暫存器中的一者,其包含所要使用的寫入遮罩(因此寫入遮罩欄位170的內容間接識別出所要進行的遮罩),不過替代性實施例改為或者額外允許遮罩寫入欄位170的內容直接指定所要進行的遮罩。
立即欄位172:其內容允許有立即的規格。這欄位就以下意義來說是可選用的:它不存在於不支援立即之對一般向量友善的格式的實施,並且它不存在於不使用立即的指令中。
類別欄位168:其內容分辨指令的不同類別。參考圖1A~B,這欄位的內容在類別A和類別B指令之間做選擇。於圖1A~B,圓角方形乃用於指出特定的值存在於欄位中(譬如分別在圖1A、1B用於類別欄位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和無記憶體存取之寫入遮罩控制的VSIZE類型作業指令模板 117);而其餘的β欄位154分辨要進行指定類型的哪一個作業。於無記憶體存取指令模板105,度量欄位160、位移欄位162A、位移因子欄位162B不存在。
於無記憶體存取之寫入遮罩控制的部分捨入控制類型作業指令模板110,其餘的β欄位154解讀成捨入作業欄位159A,並且例外事件報告被禁止(給定的指令不報告任何類型的浮點例外旗標,並且不提出任何浮點例外處理者)。
捨入作業控制欄位159A:就如捨入作業控制欄位158,其內容分辨要進行一組捨入作業中的哪一個(譬如向上捨入、向下捨入、朝零捨入、朝最近捨入)。因此,捨入作業控制欄位159A允許按照每個指令來改變捨入模式。本發明一實施例的處理器包括用於指定捨入模式的控制暫存器,則捨入作業控制欄位159A的內容壓過該暫存器值。
於無記憶體存取之寫入遮罩控制的VSIZE類型作業指令模板117,其餘的β欄位154解讀成向量長度欄位159B,其內容分辨要在許多資料向量長度中的哪一個上來進行(譬如128、256或512位元組)。
於類別B之記憶體存取指令模板120的情形,部分的β欄位154解讀成廣播欄位157B,其內容分辨是否要進行廣播類型的資料操控作業,而其餘的β欄位154解讀成向量長度欄位159B。記憶體存取指令模板120包括度量欄位160,並且可選用而言包括位移欄位162A 或位移因子欄位162B。
關於對一般向量友善的指令格式100,全運作碼欄位174顯示成包括格式欄位140、基礎作業欄位142、資料元件寬度欄位164。雖然一實施例顯示的是全運作碼欄位174包括所有這些欄位,但是全運作碼欄位174在不支援它們全部的實施例中包括少於所有這些欄位。全運作碼欄位174提供作業碼(運作碼)。
擴增作業欄位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欄位、位移欄位、立即欄位呈一致。示範的是圖2欄位所映射到的圖1欄位。
應了解雖然本發明的實施例為了示範而參考對特定向量友善的指令格式200並在對一般向量友善的指令格式100的背景下來描述,但是本發明除了在主張的地方以外並不限於對特定向量友善的指令格式200。舉例而言,對一般向量友善的指令格式100思及多樣欄位之各式各樣的可能尺寸,而對特定向量友善的指令格式200則顯示成具有特定尺寸的欄位。舉特定的範例來說,雖然資料元件寬度欄位164在對特定向量友善的指令格式200中示範成一位元欄位,不過本發明並不如此受限(也就是說,對一般向量友善的指令格式100思及資料元件寬度欄位164的其他尺寸)。
對特定向量友善的指令格式200包括以圖2A之次序所示範的以下欄位。
EVEX詞頭(位元組0~3)202:其編碼成四位元組形式。
格式欄位QAB40(EVEX位元組0,位元[7:0]):第一位元組(EVEX位元組0)是格式欄位QAB40,並且它包含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位元欄位相同的功能性,並且使用1s補充形式來編碼,亦即ZMM0編碼成1111B、ZMM15編碼成0000B。指令的其他欄位則將暫存器索引之下三個位元加以編碼,如此技藝所已知的(rrr、xxx、bbb),所以Rrrr、Xxxx、Bbbb可以藉由將EVEX.R、EVEX.X、EVEX.B相加而形成。
REX’欄位210:這是REX’欄位210的第一部分,並且是EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其用於將延伸之32個暫存器組的上16個或下16個加以編碼。於本發明一實施例,這位元連同下面所指出的其他者儲存成位元反轉格式以分辨(於熟知的x86 32位元模式)BOUND指令,其實際運作碼位元組是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)加以編碼。
資料元件寬度欄位QAB64(EVEX位元組2,位元[7]-W):其由標記EVEX.W所代表。EVEX.W用於定義資料類型的粒度(尺寸)(32位元資料元件或64位元資料元件)。
EVEX.vvvv 220(EVEX位元組2,位元[6:3]-vvvv):EVEX.vvvv的角色可以包括如下:(1)EVEX.vvvv將指定成反轉(1s補充者)形式的第一來源暫存器運算元加以編碼,並且對於具有2或更多個來源運算元的指令而言是有效的;(2)EVEX.vvvv將指定成1s補充者形式而用於特定向量移位之目的暫存器運算元加以編碼;或者(3)EVEX.vvvv不編碼任何運算元,該欄位被保留並且應包含1111b。因此,EVEX.vvvv欄位220將儲存成反轉(1s補充者)形式之第一來源暫存器指定者的4個低次序位元加以編碼。視指令而定,使用額外不同的EVEX位元欄位以將指定者尺寸延伸到32個暫存器。
EVEX.U類別欄位QAB68(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位元)。於一實施例,為了支援使 用SIMD詞頭(66H、F2H、F3H)而呈遺留格式和EVEX詞頭格式二者的遺留SSE指令,這些遺留SIMD詞頭編碼成SIMD詞頭編碼欄位;以及在提供給解碼器的PLA之前,在運轉時間擴充成遺留SIMD詞頭(所以PLA可以執行這些遺留指令的遺留和EVEX二種格式而無修改)。雖然較新的指令或可使用EVEX詞頭編碼欄位的內容而直接作為運作碼延伸,但是特定的實施例為了一致而以類似方式來擴充,但允許這些遺留SIMD詞頭來指定不同的意義。替代性實施例可以再設計PLA以支援2位元SIMD詞頭編碼,因此不需要擴充。
α欄位QAB52(EVEX位元組3,位元[7]-EH;也已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、EVEX.N;也以α來示範):如先前所述,這欄位乃特定於背景。
β欄位QAB54(EVEX位元組3,位元[6:4]-SSS,也已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ來示範):如先前所述,這欄位乃特定於背景。
REX’欄位210:這是剩餘的REX’欄位,並且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可以用於將延伸之32個暫存器組的上16個或下16個加以編碼。這位元儲存成位元反轉格式。1值用於編碼下16個暫存器。換言之,V’VVVV是藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位QAB70(EVEX位元組3,位元[2:0]-kkk):其內容指定寫入遮罩暫存器中之暫存器的索引,如先前所述。於本發明一實施例,特定值EVEX.kkk=000具有特殊的行為,其暗示無寫入遮罩乃用於特殊指令(這可以採取各式各樣的方式來實施,包括使用硬連線到所有遮罩的寫入遮罩或繞過遮罩硬體的硬體)。
實際運作碼欄位230(位元組4)也已知為運作碼位元組。部分的運作碼指定在這欄位。
MOD R/M欄位240(位元組5)包括MOD欄位242、Reg欄位244、R/M欄位246。如先前所述,MOD欄位242的內容分辨記憶體存取和非記憶體存取作業。Reg欄位244的角色可以綜述為二種情況:將目的暫存器運算元或來源暫存器運算元加以編碼;或者處理成運作碼延伸而不用於編碼任何指令運算元。R/M欄位246的角色可以包括如下:將參考記憶體位址的指令運算元加以編碼;或者將目的暫存器運算元或來源暫存器運算元加以編碼。
度量、索引、基礎(SIB)250(位元組6):如先前所述,度量欄位160的內容乃用於記憶體位址產生。SIB.xxx 254和SIB.bbb 256:這些欄位的內容之前已經關於暫存器索引Xxxx和Bbbb而參述。
位移欄位QAB62A(位元組7~10):當MOD欄位242包含10時,位元組7~10是位移欄位QAB62A, 並且它與遺留32位元位移(disp32)工作相同,並且在位元組粒度下工作。
位移因子欄位QAB62B(位元組7):當MOD欄位242包含01時,位元組7是位移因子欄位QAB62B。這欄位的位置相同於遺留x86指令組8位元位移(disp8),其在位元組粒度下工作。由於disp8是延伸的記號,故它可以僅定址在-128和127位元組偏移之間;就64位元組快取線來看,disp8使用8位元,其可以設定成僅四個實際有用的值-128、-64、0、64;由於常常需要較大的範圍,故使用disp32;然而,disp32需要4位元組。相較於disp8和disp32,位移因子欄位QAB62B是disp8的再解讀;當使用位移因子欄位QAB62B時,實際位移是由位移因子欄位的內容乘以記憶體運算元存取的尺寸(N)而決定。這類型的位移稱為disp8×N。這減少了平均指令長度(單一位元組用於位移而有大很多的範圍)。此種壓縮位移乃基於有效位移是記憶體存取之多倍粒度的假設,因此,位址偏移之冗餘的低次序位元不須要編碼。換言之,位移因子欄位QAB62B取代遺留x86指令組8位元位移。因此,位移因子欄位QAB62B編碼的方式相同於x86指令組8位元位移(所以ModRM/SIB編碼規則無改變),僅有的例外是disp8乃超載到disp8×N。換言之,編碼規則或編碼長度沒有改變,僅有硬體所做的位移值解讀有所改變(其須要藉由記憶體運算元的尺寸來度量位移以獲得呈位元組的位址偏移)。
立即欄位QAB72的運作如先前所述。
全運作碼欄位
圖2B是根據本發明一實施例的方塊圖,其示範組成全運作碼欄位QAB74而呈對特定向量友善的指令格式200之欄位。特定而言,全運作碼欄位QAB74包括格式欄位QAB40、基礎作業欄位QAB42、資料元件寬度(W)欄位QAB64。基礎作業欄位142包括詞頭編碼欄位225、運作碼映射欄位215、實際運作碼欄位230。
暫存器索引欄位
圖2C是根據本發明一實施例的方塊圖,其示範組成暫存器索引欄位QAB44而呈對特定向量友善的指令格式200之欄位。特定而言,暫存器索引欄位QAB44包括REX欄位205、REX’欄位210、MODR/M.reg欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254、bbb欄位256。
擴增作業欄位
圖2D是根據本發明一實施例的方塊圖,其示範組成擴增作業欄位150而呈對特定向量友善的指令格式200之欄位。當類別(U)欄位168包含0時,它表示EVEX.U0(類別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時(VSIZE 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個寬512位元的向量暫存器310;這些暫存器參考成zmm0到zmm31。下16個zmm暫存器的低次序256位元被覆蓋在暫存器ymm0~16上。下16個zmm暫存器的低次序128位元(ymm暫存器的低次序128位元)被覆蓋在暫存器xmm0~15上。對特定向量友善的指令格式200運作在這些被覆蓋的暫存器檔案上,如下表所示範。
換言之,向量長度欄位159B在最大長度和一或更多個其他較短長度之間做選擇,而每個此種較短長度 是前面長度的一半;並且沒有向量長度欄位159B的指令模板在最大向量長度上運作。此外,於一實施例,對特定向量友善的指令格式200之類別B指令模板在緊縮或純量的單/雙精準浮點資料以及緊縮或純量的整數資料上運作。純量作業是進行在zmm/ymm/xmm暫存器中之最低次序資料元件位置的作業;較高次序資料元件位置則留下來而與它們在指令或歸零之前的相同,此視實施例而定。
寫入遮罩暫存器315:於所示範的實施例,有8個寫入遮罩暫存器(k0到k7),每個尺寸為64位元。於替代性實施例,寫入遮罩暫存器315的尺寸是16位元。如先前所述,於本發明一實施例,向量遮罩暫存器k0無法使用作為寫入遮罩;當正常會指出k0的編碼用於寫入遮罩時,它選擇0xFFFF的硬連線寫入遮罩,而有效的禁止用於該指令的寫入遮罩。
通用暫存器325:於所示範的實施例,有十六個64位元通用暫存器,其連同既有的x86定址模式來使用以將記憶體運算元定址。這些暫存器是以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、R8到R15的名稱來參考。
純量浮點堆疊暫存器檔案(x87堆疊)345,其上別名為MMX緊縮整數平坦暫存器檔案350:於所示範的實施例,x87堆疊是八元件堆疊,其用於使用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顯示處理器核心490,其包括耦合於執行引擎單元450的前端單元430,而此二者皆耦合於記憶體單元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。資料快取單元474進一步耦合於記憶體單元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指令組(具有已經添加了較新版本的某些延伸);加州Sunnyvale之MIPS科技公司的MIPS指令組;加州Sunnyvale之ARM控股公司的ARM指令組(具有可選用的額外延伸,例如NEON));包括在此所述的(多個)指令。於一實施例,核心490包括邏輯以支援緊縮資料指令組延伸(譬如AVX1、AVX2),藉此允許許多多媒體應用程式所使用的作業使用緊縮資料來進行。
應了解核心可以支援多緒(執行二或更多個平行組的作業或緒),並且可以採取各式各樣的方式來這樣做,包括時間切片多緒、同時多緒(其中單一實體核心提供邏輯核心給每個緒,該實體核心則同時多緒化)或其組合(譬如時間切片的拿取和解碼而之後做同時多緒,例如於Intel® Hyperthread科技)。
雖然暫存器更名乃描述在無次序執行的背景下,不過應了解暫存器更名可以用於有次序架構。雖然示範的處理器實施例也包括分開的指令和資料快取單元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快取504、以及關於向量單元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)CPU,其具有為整合式圖形和/或科學(吞吐)邏輯的特用邏輯608(其可以包括一或更多個核心),以及具有為一或更多個通用核心的核心602A~N(譬如通用有次序核心、通用無次序核心、此二者的組合);(2)共同處理器,其具有主要打算用於圖形和/或科學(吞吐)而為大量特定用途的核心的核心602A~N;以及(3)共同處理器,其具有為大量通用有次序核心的核心602A~N。因此,處理器600可以是通用處理器、共同處理器或特用處理器,後者舉例而言例如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐多整合核心(MIC)共同處理器(包括30個或更多核心)、嵌入式處理器或類似者。處理器可以實施在一或更多個晶片上。處理器600可以實施在使用許多處理科技之任一者(舉例而言例如BiCMOS、CMOS或NMOS)的一或更多個基板上以及/或者是其一部分。
記憶體層級包括在核心裡之一或更多個階層的快取單元604A~N、一組或一或更多個分享的快取單元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直接耦合於處理器710,並且控制器集線器720是在具有IOH 750的單一晶片中。
額外處理器715的選用性質在圖7中以虛線所表示。每個處理器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所示,IMC 872和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(例如共同處理器、高吞吐MIC處理器、GPGPU、例如圖形加速器或數位訊號處理(DSP)單元的加速器、可場程式化的閘陣列、或任何其他處理器)乃耦合於第一匯流排816。於一實施例,第二匯流排820可以是低接腳計數(LPC)匯流排。於一實施例,多樣的裝置可以耦合於第二匯流排820,舉例而言包括鍵盤和/或滑鼠822、通訊裝置827、儲存單元828(例如磁碟機或其他大量儲存裝置,其可以包括指令/碼和資料830)。此外,音訊I/O 824可以耦合於第二匯流排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)、例如動態隨機存取記憶體(DRAM)和靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除程式化唯讀記憶體(EPROM)、快閃記憶體、可電抹除程式化唯讀記憶體(EEPROM)、相變記憶體(PCM);磁或光卡;或適合儲存電子指令之任何其他類型的媒體。
據此,本發明的實施例也包括非暫態之實體的機器可讀取的媒體,其包含指令或包含設計資料,例如硬體描述語言(HDL),其定義在此所述的結構、電路、裝置、處理器和/或系統特色。此種實施例也可以稱為程式產品。
於某些情形,指令轉換器可以用於將來自來源指令組的指令轉換成目標指令組。舉例而言,指令轉換器可以將指令加以翻譯(譬如使用靜態二元翻譯、包括動態編譯的動態二元翻譯)、變形、模仿、或另外轉換成要由核心所處理的一或更多個其他指令。指令轉換器可以實施於軟體、硬體、韌體或其組合。指令轉換器可以是在處理器上、不在處理器上、或者部分在和部分不在處理器上。
圖11是根據本發明實施例的方塊圖,其對照出使用軟體指令轉換器以將來源指令組中的二元指令轉換成目標指令組中的二元指令。於示範的實施例,指令轉換器是軟體指令轉換器,雖然替代而言,指令轉換器可以實施於軟體、韌體、硬體或其多樣的組合。圖11顯示呈高階語言1102的程式可以使用x86編譯器1104來編譯以產生x86二元碼1106,其可以由具有至少一x86指令組核心的處理器1116做本機執行。具有至少一x86指令組核心的處理器1116代表具有至少一x86指令組核心的任何處理器,其藉由相容的執行或另外處理以下者而進行大致相同於Intel處理器的功能:(1)Intel x86指令組核心之 指令組的實質部分;或者(2)鎖定在具有至少一x86指令組核心的Intel處理器上跑之應用程式或其他軟體的目的碼版本,以便達到與具有至少一x86指令組核心之Intel處理器大致相同的結果。x86編譯器1104代表可運作以產生x86二元碼1106(譬如目的碼)的編譯器,該碼可以有或沒有額外的鏈結處理而在具有至少一x86指令組核心的處理器1116上執行。類似而言,圖11顯示呈高階語言1102的程式,其可以使用替代性指令組編譯器1108來編譯以產生替代性指令組二元碼1110,該碼可以由沒有至少一x86指令組核心的處理器1114做本機執行(譬如具有執行加州Sunnyvale之MIPS科技公司的MIPS指令組和/或執行加州Sunnyvale之ARM控股公司的ARM指令組之核心的處理器)。指令轉換器1112用於將x86二元碼1106轉換成可以由沒有x86指令組核心之處理器1114做本機執行的碼。這轉換的碼不太可能相同於替代性指令組二元碼1110,因為能夠做到這點的指令轉換器是難以製作;然而,轉換的碼將完成一般作業,並且將由來自替代性指令組的指令所組成。因此,指令轉換器1112代表軟體、韌體、硬體或其組合,其透過模仿、模擬或任何其他過程而允許沒有x86指令組處理器或核心的處理器或其他電子裝置來執行x86二元碼1106。
<<用於壓縮遮罩值的方法及裝置>>
下面描述一組遮罩壓縮指令,其將遮罩暫存 器中已設定的位元潰縮到目的遮罩暫存器的一側,譬如最低有效位元(LSB)。這些指令所實施的功能性在許多位元操控常式中是有用的。於一特殊實施例,指令採取KCOLLAPSE{B/W/D/Q}的形式,其將遮罩位元壓縮在位元組(B)、字組(W)、雙字組(D)、四字組(Q)遮罩值上。
使用既有指令,則這功能性要求轉換遮罩暫存器的指令順序為向量暫存器、在向量暫存器上進行壓縮、然後轉換回到遮罩目的暫存器。相對而言,本發明在此所述的實施例以一個指令來實施這功能性。
如圖12所示範,上面可以實施本發明之實施例的範例性處理器1255包括一組通用暫存器(GPR)1205、一組向量暫存器1206、一組遮罩暫存器1207。於一實施例,多個向量資料元件被緊縮到每個向量暫存器1206裡,其可以具有512位元寬度來儲存二個256位元值、四個128位元值、八個64位元值、十六個32位元值......。然而,本發明的背後原理並不限於任何特殊尺寸/類型的向量資料。於一實施例,遮罩暫存器1207包括八個64位元運算元遮罩暫存器,其用於對儲存在向量暫存器1206中的值進行位元遮罩作業(譬如實施成上述的遮罩暫存器k0~k7)。然而,本發明的背後原理並不限於任何特殊的遮罩暫存器尺寸/類型。
單一處理器核心(「核心0」)的細節為了簡潔而示範於圖12。然而,將了解圖12所示的每個核心可以 具有相同於核心0的一組邏輯。舉例而言,每個核心可以包括專屬的階層1(L1)快取1212和階層2(L2)快取1211以根據指定的快取管理政策來快取指令和資料。L1快取1212包括用於儲存指令之分開的指令快取1220和用於儲存資料之分開的資料快取1221。儲存在多樣之處理器快取裡的指令和資料是在快取線的粒度下管理,該粒度可以是固定的尺寸(譬如長度為64、128、512位元組)。這範例性實施例的每個核心具有:指令拿取單元1210,其從主記憶體1200和/或分享的階層3(L3)快取1216拿取指令;解碼單元1220,其解碼指令(譬如將程式指令解碼成微作業或「uop」);執行單元1240,其執行指令;以及寫回單元1250,其退除指令和寫回結果。
指令拿取單元1210包括多樣的熟知組件,包括:次一指令指標1203,其儲存要從記憶體1200(或某一快取)拿取之次一指令的位址;指令翻譯後援緩衝器(ITLB)1204,其儲存最近使用之虛擬對實體指令位址的映射以改善位址翻譯速率;分支預測單元1202,其臆測指令分支位址;以及分支目標緩衝器(BTB)1201,其儲存分支位址和目標位址。一旦拿取,則指令便流到指令管道的剩餘階段,包括解碼單元1230、執行單元1240、寫回單元1250。這些單元之每一者的結構和功能是此技藝中之一般技術者所熟悉的,並且將不在此詳述以避免模糊了本發明之不同實施例的有關方面。
於一實施例,解碼單元1230包括遮罩壓縮解 碼邏輯1231,其將在此所述的遮罩壓縮指令加以解碼(譬如於一實施例中解碼成一系列的微作業);並且執行單元1240包括遮罩壓縮執行邏輯1241以執行指令。如所言,於一實施例,遮罩壓縮指令將遮罩暫存器中的已設定位元(譬如設定為1值的位元)潰縮到目的遮罩暫存器的一部分(譬如最低有效位元(LSB))。
圖13示範本發明的範例性實施例,其中遮罩壓縮邏輯1300將來自64位元來源遮罩暫存器KSRC 1301的已設定位元壓縮到64位元目的遮罩暫存器KDST 1302的一側。雖然圖13的來源和目的遮罩暫存器都包括64位元遮罩暫存器,不過本發明背後的原理可以用具有多樣不同的尺寸(包括但不限於8位元、16位元、32位元)的遮罩暫存器來實施。
於一實施例,遮罩壓縮邏輯讀取KSRC 1301的每個位元,並且如果位元未設定(亦即值為0),則忽略之。然而,如果位元有設定(亦即值為1),則它被複製到目的遮罩暫存器1302中之次一可得的最低有效位元位置。
於圖13所示的特定範例,忽略來自來源遮罩暫存器1301的位元b0和b1,因為它們未設定。有設定的第一位元是位元b2。如此,則來自b2的已設定位元複製到d0,其為目的遮罩暫存器1302的最低有效位元位置。雖然次一來源位元b3未設定因而忽略它,但是位元b4和b5都有設定,故複製到次一可得的最低有效位元位 置d1和d2。過程如所述的繼續,而將來自來源遮罩暫存器1301的每個已設定位元複製到目的遮罩暫存器1302中之最低有效可得的位元位置,直到所有位元都已經複製為止(譬如在示範之範例中的b63)。最後結果則是所有已設定位元壓縮到目的遮罩暫存器KDST 1302的一側(亦即具有最低有效位元位置的那一側)。
於一實施例,遮罩壓縮邏輯1300實施成一組一或更多個多工器,其由已設定位元和/或未設定位元的位置所控制。基於來自已設定/未設定位元的控制輸入,(多個)多工器從來源遮罩暫存器1301選擇已設定位元,並且將它們提供到目的遮罩暫存器1302裡的適當位元位置。當然,依據本發明的背後原理,可能有多樣的不同實施例。舉例而言,於一實施例,計數器可以用於計數來源遮罩暫存器1301裡的位元數目,並且填充邏輯然後可以依據計數值而用已設定位元來填充目的遮罩暫存器1302的最低有效位元(譬如對於計數值為10來說,設定了目的遮罩暫存器1302的10個LSB)。
圖14示範另一實施例,其利用8位元來源遮罩暫存器1401和8位元目的遮罩暫存器1402。相同的背後原理可以應用於這實施例。也就是說,遮罩壓縮邏輯1300複製第一個已設定位元b2到目的暫存器1402中的第一個最低有效位元位置d0。遮罩壓縮邏輯1300然後將來自來源遮罩暫存器1401之位元位置b4、b5、b7的每個接續已設定位元分別複製到目的遮罩暫存器1402的最低 有效位元位置d1、d2、d3。
圖15示範依據本發明一實施例之壓縮遮罩暫存器的方法。方法可以實施在上述架構的背景內,但不限於任何特定的架構。
在1501,從記憶體拿取或從快取(譬如L1、L2或L3快取)讀取遮罩壓縮指令。在1502,回應於遮罩壓縮指令的解碼/執行,包含要壓縮之輸入遮罩資料的第一運算元儲存在來源遮罩暫存器中。如所言,於一實施例,儲存在來源遮罩暫存器中的輸入遮罩資料可以包括8位元遮罩、16位元遮罩、32位元遮罩、64位元遮罩或任何其他尺寸的遮罩。本發明的背後原理並不限於任何特殊遮罩尺寸。
在1503,從來源遮罩暫存器讀取位元,並且將已設定位元複製出來到目的遮罩暫存器中之可得的最低有效位元位置。如所述,這可以由不同類型的邏輯來完成,其包括由已設定位元(1)和/或未設定位元(0)所控制的一組多工器。
一旦所有的位元已經壓縮在目的遮罩暫存器裡,則在1504,壓縮結果可以用於一或更多個後續作業(譬如位元操控常式)。
於一實施例,第一來源運算元和目的運算元是上述的遮罩暫存器k0~k7。遮罩壓縮指令可以採取以下形式,其中KSRC是目的遮罩暫存器,SRC2包括含有控制資料的來源,而SRC3包括含有要移動之資料的來源: KCOLLAPSE[B/W/D/Q] KDEST, KSRC
下面的偽碼提供依據本發明一實施例所進行之作業的代表:KCOLLAPSE[B/W/D/Q] KDEST, KSRC numbits = B ? 8, W ? 16, D ? 32, Q ? 64 j = 0 Kdest = 0 For (i = 0 to numbits) if (ksrc.bit[i]) kdest.bit[j++] = 1
numbits是指有多少位元用於來源和目的運算元,其在上面的偽碼中包括8、16、32、64位元等選項。變數i從0漸增到numbits以讀取來源遮罩暫存器KSRC中的每個值。對於已設定位元而言(其以「if(ksrc.bit[i])」所識別),最低有效的可得KDEST位元則更新為1。j的值然後便漸增。對於未設定的位元(等於0)而言,不對KDEST寫入值,並且j不漸增。
於前面的說明書,本發明的實施例已經參考其特定的範例性實施例來描述。然而,將顯然可以對它們做出多樣的修飾和改變,而不偏離本發明如所附請求項列出的較廣精神和範圍。說明書和圖式據此是要視為示範性的而非限制性的。
本發明的實施例可以包括多樣的步驟,其已經描述如上。步驟可以具體化為機器可執行的指令,其可以用來使通用或特用處理器執行該等步驟。替代而言,這些步驟可以由特定的硬體組件所進行,該等硬體組件包含 硬連線的邏輯以進行步驟,或者藉由程式化電腦組件和客製化硬體組件的任何組合來進行。
如在此所述,指令可以是指硬體的特定組態,例如特用積體電路(ASIC),其建構成進行特定作業或者具有預定的功能性或儲存在實現為非暫態電腦可讀取的媒體之記憶體中的軟體指令。因此,圖中所示的技術可以使用儲存和執行在一或更多個電子裝置(譬如終端站、網路元件......)上的碼和資料來實施。此種電子裝置使用電腦機器可讀取的媒體,例如非暫態電腦機器可讀取的儲存媒體(譬如磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶裝置、相變記憶體)、暫態電腦機器可讀取的通訊媒體(譬如電、光、聲或其他形式的傳遞訊號,例如載波、紅外線訊號、數位訊號......),以儲存和通訊碼和資料(內部而言和/或在網路而與其他電子裝置而言)。附帶而言,此種電子裝置典型而言包括一組一或更多個處理器而耦合於一或更多個其他組件,例如一或更多個儲存裝置(非暫態機器可讀取的儲存媒體)、使用者輸入/輸出裝置(譬如鍵盤、觸控螢幕和/或顯示器)、網路連接。該組處理器和其他組件的耦合典型而言是透過一或更多個匯流排和橋接器(也稱為匯流排控制器)。承載網路交通的儲存裝置和訊號分別代表一或更多個機器可讀取的儲存媒體和機器可讀取的通訊媒體。因此,給定電子裝置的儲存裝置典型而言儲存碼和/或資料以在該電子裝置的該組一或更多個處理器上執行。當然,本發明實施例的 一或更多個部分可以使用軟體、韌體和/或硬體的不同組合來實施。[實施方式]全篇為了解釋而列出了許多特定的細節以便提供對本發明的徹底理解。然而,熟於此技藝者將明白本發明可以沒有這某些特定的細節而實施。於特定情形下,熟知的結構和功能沒有以複雜細節來描述以便避免模糊了本發明的主題。據此,本發明的範圍和精神應就接下來的申請專利範圍來判斷。

Claims (21)

  1. 一種處理器,其包括:來源遮罩暫存器,其儲存多個遮罩位元,包括多個已設定位元和多個未設定位元;目的遮罩暫存器,其儲存從該來源遮罩暫存器所讀取的已設定位元;以及遮罩壓縮邏輯,其從該來源遮罩暫存器讀取該等已設定位元的每一者,並且在該目的遮罩暫存器的一側上儲存該等已設定位元在鄰接的位元位置。
  2. 如申請專利範圍第1項的處理器,其中該目的遮罩暫存器的該一側包括儲存該目的遮罩暫存器之最低有效位元的一側。
  3. 如申請專利範圍第2項的處理器,其中該遮罩壓縮邏輯是要以對應於該等已設定位元儲存在該來源遮罩暫存器裡之次序的次序來儲存該等已設定位元在該目的遮罩暫存器裡。
  4. 如申請專利範圍第1項的處理器,其中該遮罩壓縮邏輯包括一組一或更多個多工器,其由該來源遮罩暫存器裡之該等多個已設定位元和/或未設定位元的位置所控制。
  5. 如申請專利範圍第1項的處理器,其中該來源遮罩暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  6. 如申請專利範圍第5項的處理器,其中該目的遮 罩暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  7. 如申請專利範圍第6項的處理器,其中該目的遮罩暫存器和該來源遮罩暫存器有相同的尺寸。
  8. 一種方法,其包括:在來源遮罩暫存器裡儲存多個遮罩位元,包括多個已設定位元和多個未設定位元;從該來源遮罩暫存器讀取該等已設定位元的每一者;以及在目的遮罩暫存器的一側上儲存該等已設定位元在鄰接的位元位置。
  9. 如申請專利範圍第8項的方法,其中該目的遮罩暫存器的該一側包括儲存該目的遮罩暫存器之最低有效位元的一側。
  10. 如申請專利範圍第9項的方法,其進一步包括:以對應於該等已設定位元儲存在該來源遮罩暫存器裡之次序的次序來儲存該等已設定位元在該目的遮罩暫存器裡。
  11. 如申請專利範圍第8項的方法,其進一步包括:使用該來源遮罩暫存器裡之該等多個已設定位元和/或未設定位元的位置來控制一組一或更多個多工器,該等多工器回應地從該來源遮罩暫存器讀取該等已設定位元並且儲存該等已設定位元在該目的遮罩暫存器。
  12. 如申請專利範圍第8項的方法,其中該來源遮罩 暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  13. 如申請專利範圍第12項的方法,其中該目的遮罩暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  14. 如申請專利範圍第13項的方法,其中該目的遮罩暫存器和該來源遮罩暫存器有相同的尺寸。
  15. 一種系統,其包括:記憶體,其儲存程式碼和資料;快取層級,其包括多個快取階層以依據指定的快取管理政策來快取該程式碼和資料;輸入裝置,其接收來自使用者的輸入;處理器,其回應於來自該使用者的該輸入而執行該程式碼和處理該資料,該處理器包括:來源遮罩暫存器,其儲存多個遮罩位元,包括多個已設定位元和多個未設定位元;目的遮罩暫存器,其儲存從該來源遮罩暫存器所讀取的已設定位元;以及遮罩壓縮邏輯,其從該來源遮罩暫存器讀取該等已設定位元的每一者,並且在該目的遮罩暫存器的一側上儲存該等已設定位元在鄰接的位元位置。
  16. 如申請專利範圍第15項的系統,其中該目的遮罩暫存器的該一側包括儲存該目的遮罩暫存器之最低有效位元的一側。
  17. 如申請專利範圍第16項的系統,其中該遮罩壓縮邏輯是要以對應於該等已設定位元儲存在該來源遮罩暫存器裡之次序的次序來儲存該等已設定位元在該目的遮罩暫存器裡。
  18. 如申請專利範圍第15項的系統,其中該遮罩壓縮邏輯包括一組一或更多個多工器,其由該來源遮罩暫存器之該等多個已設定位元和/或未設定位元的位置所控制。
  19. 如申請專利範圍第15項的系統,其中該來源遮罩暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  20. 如申請專利範圍第19項的系統,其中該目的遮罩暫存器是8位元、16位元、32位元或64位元遮罩暫存器。
  21. 如申請專利範圍第20項的系統,其中該目的遮罩暫存器和該來源遮罩暫存器有相同的尺寸。
TW104139714A 2014-12-27 2015-11-27 用於壓縮遮罩值的方法及裝置 TWI610234B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/583,647 2014-12-27
US14/583,647 US20160188333A1 (en) 2014-12-27 2014-12-27 Method and apparatus for compressing a mask value

Publications (2)

Publication Number Publication Date
TW201643708A true TW201643708A (zh) 2016-12-16
TWI610234B TWI610234B (zh) 2018-01-01

Family

ID=56151355

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104139714A TWI610234B (zh) 2014-12-27 2015-11-27 用於壓縮遮罩值的方法及裝置

Country Status (7)

Country Link
US (1) US20160188333A1 (zh)
EP (1) EP3238037A4 (zh)
JP (1) JP2018500665A (zh)
KR (1) KR20170099864A (zh)
CN (1) CN107003851A (zh)
TW (1) TWI610234B (zh)
WO (1) WO2016105822A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911267B1 (en) * 2020-04-10 2021-02-02 Apple Inc. Data-enable mask compression on a communication bus
WO2024020761A1 (en) * 2022-07-26 2024-02-01 Huawei Technologies Co., Ltd. Register to predicate deposit

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
AU2001249122A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Processing architecture having field swapping capability
US20030105945A1 (en) * 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
US6611211B2 (en) * 2001-05-04 2003-08-26 International Business Machines Corporation Data mask coding
JP3609794B2 (ja) * 2002-03-26 2005-01-12 株式会社東芝 トレースデータ圧縮装置、トレースデータ圧縮方法及びトレースデータ圧縮回路を内蔵したマイクロコンピュータ
US8285766B2 (en) * 2007-05-23 2012-10-09 The Trustees Of Princeton University Microprocessor shifter circuits utilizing butterfly and inverse butterfly routing circuits, and control circuits therefor
US8327119B2 (en) * 2009-07-15 2012-12-04 Via Technologies, Inc. Apparatus and method for executing fast bit scan forward/reverse (BSR/BSF) instructions
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
US9354877B2 (en) * 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
CN104137054A (zh) * 2011-12-23 2014-11-05 英特尔公司 用于执行从索引值列表向掩码值的转换的系统、装置和方法
CN114721721A (zh) * 2011-12-23 2022-07-08 英特尔公司 用于混洗浮点或整数值的装置和方法
WO2013101218A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Vector frequency expand instruction
CN104011673B (zh) * 2011-12-30 2016-12-07 英特尔公司 向量频率压缩指令
KR20140003020A (ko) * 2012-06-28 2014-01-09 삼성전기주식회사 발광 다이오드 구동 장치
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9715385B2 (en) * 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks

Also Published As

Publication number Publication date
KR20170099864A (ko) 2017-09-01
TWI610234B (zh) 2018-01-01
WO2016105822A1 (en) 2016-06-30
CN107003851A (zh) 2017-08-01
US20160188333A1 (en) 2016-06-30
JP2018500665A (ja) 2018-01-11
EP3238037A4 (en) 2018-08-08
EP3238037A1 (en) 2017-11-01

Similar Documents

Publication Publication Date Title
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
TWI517041B (zh) 有條件的傳播在單一指令多重資料/向量執行中之評估值的裝置與方法
TWI617978B (zh) 用於向量索引載入和儲存之方法和設備
TWI630548B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI603208B (zh) 利用索引和立即數執行向量排列的方法和設備
TWI515650B (zh) 用於遮罩暫存器擴充操作之設備及方法
KR102462174B1 (ko) 벡터 비트 셔플을 수행하기 위한 방법 및 장치
TWI480798B (zh) 用於資料類型之向下轉換的裝置及方法
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TW201640334A (zh) 執行用以最佳化指令流的檢查之設備及方法
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
TWI610234B (zh) 用於壓縮遮罩值的方法及裝置
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
CN107077333B (zh) 用于实行向量位聚集的方法和装置
TWI737650B (zh) 用於從鏈結結構取回元件的處理器、系統和方法
TWI617977B (zh) 用於執行自旋迴路跳位的裝置及方法

Legal Events

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