TW201643696A - 用於熔合累加指令的設備和方法 - Google Patents

用於熔合累加指令的設備和方法 Download PDF

Info

Publication number
TW201643696A
TW201643696A TW104138531A TW104138531A TW201643696A TW 201643696 A TW201643696 A TW 201643696A TW 104138531 A TW104138531 A TW 104138531A TW 104138531 A TW104138531 A TW 104138531A TW 201643696 A TW201643696 A TW 201643696A
Authority
TW
Taiwan
Prior art keywords
data elements
field
instruction
bit
processor
Prior art date
Application number
TW104138531A
Other languages
English (en)
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 TW201643696A publication Critical patent/TW201643696A/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/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/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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Landscapes

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

Abstract

在本發明的一項實施例中,一處理器包括一儲存位置,該儲存位置經組態以儲存一組來源緊縮資料運算元,該等運算元之各者具有複數個緊縮資料元件,該等緊縮資料元件根據該等運算元其中一者內的一立即位元值而為正或負。該處理器亦包括:用以解碼要求複數個來源運算元之一輸入之一指令的一解碼器;以及用以接收該等解碼指令以及用以產生係為該等來源運算元之一總和之一結果的一執行單元。在一項實施例中,該結果係往回儲存到該等來源運算元的其中一者內,或該結果係儲存到獨立於該等來源運算元的一運算元內。

Description

用於熔合累加指令的設備和方法
本揭露關於微處理器,且更特別地,關於用於在微處理器中之資料元件上之操作的指令。
為了改善多媒體應用以及具有相似特徵之其他應用的效率,單一指令多重資料(SIMD)架構已經在微處理器系統中被實施,以致使一個指令在數個運算元上並行操作。特別地,SIMD架構利用緊縮許多資料元件於一個暫存器或鄰接記憶體位置內。以平行硬體執行,多數個操作係藉由一個指令而在個別的資料元件上被施行。這一般導致明顯性能優點但卻以邏輯增加且因此更大電力耗損為代價。
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‧‧‧位階2(L2)快取單元
190‧‧‧處理器核心
200‧‧‧處理器
202A-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‧‧‧鍵盤及/或滑鼠
424‧‧‧聲音I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/碼及資料
432‧‧‧記憶體
434‧‧‧記憶體
438‧‧‧共處理器
439‧‧‧高性能介面
450‧‧‧點對點互連件
452‧‧‧P-P介面
454‧‧‧P-P介面
470‧‧‧第一處理器
472‧‧‧整合記憶體控制器單元
476‧‧‧點對點介面
478‧‧‧點對點介面
480‧‧‧第二處理器
482‧‧‧整合記憶體控制器單元
486‧‧‧P-P介面
488‧‧‧P-P介面
490‧‧‧晶片組
494‧‧‧點對點介面
496‧‧‧介面
498‧‧‧點對點介面
500‧‧‧系統
514‧‧‧裝置
515‧‧‧I/O裝置
600‧‧‧晶片上系統
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧共處理器
630‧‧‧靜態隨機存取記憶體單元
632‧‧‧直接記憶體存取單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧編譯器
706‧‧‧二進制碼
708‧‧‧指令集編譯器
710‧‧‧指令集二進制碼
712‧‧‧指令轉換器
714‧‧‧指令集核心
716‧‧‧指令集核心
800‧‧‧通用向量親合指令格式
805‧‧‧無記憶體存取
810‧‧‧無記憶體存取、全捨入控制類型操作
812‧‧‧部份捨入控制類型操作
815‧‧‧無記憶體存取、資料轉換類型操作
817‧‧‧向量尺寸類型操作
820‧‧‧記憶體存取
825‧‧‧記憶體存取、時間性
827‧‧‧寫入遮罩控制
830‧‧‧記憶體存取、非時間性
840‧‧‧格式欄位
842‧‧‧基礎操作欄位
844‧‧‧暫存器指數欄位
846‧‧‧修改器欄位
850‧‧‧增大操作欄位
852‧‧‧阿伐欄位
852A‧‧‧RS欄位
852A.1‧‧‧捨入
852A.2‧‧‧資料轉換
852B‧‧‧遷出提示欄位
852B.1‧‧‧時間性
852B.2‧‧‧非時間性
852C‧‧‧寫入遮罩控制(Z)欄位
854‧‧‧貝他欄位
854A‧‧‧捨入控制欄位
854B‧‧‧資料轉換欄位
854C‧‧‧資料操縱欄位
856‧‧‧抑制全浮點例外欄位
857A‧‧‧RL欄位
857B‧‧‧廣播欄位
858‧‧‧捨入操作控制欄位
859‧‧‧向量長度欄位
859A‧‧‧捨入操作欄位
859B‧‧‧向量長度欄位
860‧‧‧標度欄位
862A‧‧‧位移欄位
862B‧‧‧位移因子欄位
864‧‧‧資料元件寬度欄位
868‧‧‧種類欄位
868A‧‧‧種類欄位868的種類A
868B‧‧‧種類欄位868的種類B
870‧‧‧寫入遮罩欄位
872‧‧‧立即欄位
874‧‧‧全運算碼欄位
900‧‧‧向量親合指令格式
902‧‧‧EVEX字首
905‧‧‧REX欄位
915‧‧‧運算碼地圖欄位
920‧‧‧EVEX.vvvv欄位
925‧‧‧字首編碼欄位
930‧‧‧真實運算碼欄位
940‧‧‧MODR/M欄位
942‧‧‧MOD欄位
944‧‧‧Reg欄位
946‧‧‧R/M欄位
954‧‧‧xxx欄位
956‧‧‧bbb欄位
1000‧‧‧暫存器架構
1010‧‧‧向量暫存器
1015‧‧‧寫入遮罩暫存器
1025‧‧‧通用暫存器
1045‧‧‧純量浮點堆疊暫存器檔案
1050‧‧‧MMX緊縮整數平暫存器檔案
1100‧‧‧指令解碼器
1102‧‧‧晶片上互連網路
1104‧‧‧位階2(L2)快取
1106‧‧‧位階1(L1)快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧攪和單元
1122A-B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1201-1501‧‧‧來源2運算元
1203-1503‧‧‧來源3運算元
1205-1505‧‧‧來源1運算元
1207‧‧‧來源1/目的地運算元
1209‧‧‧位元
1211‧‧‧立即位元
1215‧‧‧緊縮資料元件
1307‧‧‧目的地運算元
1315‧‧‧緊縮資料元件
1309‧‧‧位元
1311‧‧‧立即位元
1407‧‧‧來源1/目的地運算元
1415‧‧‧緊縮資料元件
1419‧‧‧寫入遮罩暫存器
1421‧‧‧緊縮資料元件
1507‧‧‧目的地運算元
1515‧‧‧緊縮資料元件
1521‧‧‧緊縮資料元件
1701‧‧‧處理單元
1703‧‧‧實體暫存器檔案單元
1705‧‧‧熔合累加單元
1801‧‧‧處理單元
1803‧‧‧實體暫存器檔案單元
1805‧‧‧排程器
1807‧‧‧熔合累加單元
1901‧‧‧處理單元
1903‧‧‧實體暫存器檔案單元
1905‧‧‧熔合累加單元
1907‧‧‧熔合累加單元
本發明以舉例的方式而不是以限制的方式而繪示於附圖的圖式中,在該等附圖中,同樣的參考意指相同的元件。
圖1A係為一方塊圖,其繪示根據本發明實施例之例示性依序擷取、解碼、引退管線以及例示性暫存器重新命名、亂序發送/執行管線兩者。
圖1B係為一方塊圖,其繪示根據本發明實施例之依序擷取、解碼、引退核心以及被包括在處理器中之例示性暫存器重新命名、亂序發送/執行架構核心的例示性實施例兩者。
圖2係為根據本發明實施例之具有整合記憶體控制器與圖形之單核心處理器與多核心處理器的方塊圖;圖3繪示根據本發明一項實施例之系統的方塊圖;圖4繪示根據本發明實施例之第二系統的方塊圖;圖5繪示根據本發明實施例之第三系統的方塊圖;圖6繪示根據本發明實施例之晶片上系統(SoC)的方塊圖;圖7繪示一方塊圖,其對比於軟體指令轉換器之使用,以根據本發明實施例轉換在來源指令集中的二進制指令成在目標指令集中的二進制指令;圖8A及8B係為方塊圖,其繪示根據本發明實施例的通用向量親合指令格式以及其指令樣板;圖9A-D係為方塊圖,其繪示根據本發明實施例的例示性具體向量親合指令格式;以及圖10係為根據本發明一項實施例之暫存器架構的方塊圖;圖11A係為根據本發明實施例之單一處理器核心連同 其連接到晶片上互連網路以及位階2(L2)快取之其局部子集的方塊圖;以及圖11B係為根據本發明實施例之圖14A中處理器核心之部件的展開圖。
圖12-15係為流程圖,其繪示根據本發明實施例的熔合累加操作。
圖16係為根據本發明實施例之熔合累加操作之方法的流程圖。
圖17係為流程圖,其繪示用於在一處理裝置中之熔合累加操作之實施過程的例示性資料流。
圖18係為流程圖,其繪示用於在一處理裝置中之熔合累加操作之實施過程的第一替代例示性資料流。
圖19係為流程圖,其繪示用於在一處理裝置中之熔合累加操作之實施過程的第二替代例示性資料流。
【發明內容與實施方式】
當與SIMD資料運作時,會有有益於減少總指令數量且改善功率效率(尤其用於小核心)的情況。特別地,實施用於浮點資料類型之熔合累加操作的指令容許總指令數的減少以及工作負荷電力需求的減少。
在下列的說明,陳述許多具體細節。不過,要理解,本發明實施例可在沒有這些具體細節下實施。在其他的情形中,眾所皆知的電路、結構與技術不會被詳細顯示,以使得不混淆本說明的理解。不過,所屬技術領域中具有通 常知識者將理解,本發明可在不具有此等具體細節下被實行。所屬技術領域中具有通常知識者,以所包括的說明,將能夠在沒有不當實驗之下實施適當的功能。
在本說明書中,提及「一項實施例」、「一實施例」、「一實例實施例」等等,意指所說明的實施例可包括特定特徵、結構、或特色,但每一實施例不一定包括特定特徵、結構、或特色。更者,此等用詞不一定意指相同實施例。進一步,當結合一實施例來說明特定特徵、結構、或特色時,據指出,它是在所屬技術領域中具有通常知識者的知識範圍內,以結合其他實施例來影響此類特徵、結構、或特色,不管是否被明顯說明。
在下列的說明與申請專利範圍中,可使用用語「耦合(coupled)」以及「連接(connected)」連同它們的衍生物。應該理解,這些用語彼此不打算為同義字。「耦合(coupled)」被使用來意指二或更多個元件,該等元件可或不可彼此直接物理或電性接觸、彼此合作或互動。「連接(connected)」使用來意指彼此耦合之二或更多個元件之間通訊的建立。
指令集
指令集或指令集架構(ISA)係為與編程相關之電腦架構的部份,且可包括自然資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與例外處理、以及外部輸入與輸出(I/O)。用語指令在本文中通常意指巨集指 令-其係為提供到處理器的指令(或指令轉換器,該指令轉換器轉譯(例如,使用靜態二進制轉譯、包括動態解譯的動態二進制轉譯)、變形、模擬、或另外轉換一指令為一或多個其他指令,以由處理器處理),以用於執行-相反於微指令或微操作(micro-ops)-其係為處理器之解碼器解碼巨集指令的結果。
ISA係與微架構有所區分,其係為實施指令集之處理器的內部設計。具有不同微架構的處理器可共享一共用指令集。例如,Intel®Pentium4處理器、Intel®CoreTM處理器、以及來自Sunnyvale CA之Advanced Micro Devices,Inc.的處理器實施幾乎相同版本的x86指令集(具有已經加以較新版本的某些擴展版)但卻具有不同的內部設計。例如,ISA的相同暫存器架構可在使用眾所皆知技術的不同微架構中以不同方式實施,其包括專屬實體暫存器、使用暫存器重新命名機制(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)、以及引退暫存器檔案;使用暫存器的多數個地圖與池)的一或多個動態分配實體暫存器等等。除非另有指明,片語暫存器架構、暫存器檔案、以及暫存器在本文中被使用來意指對於軟體/編程者為可見者以及指令指明暫存器的方式。在期待特異性之處,形容詞邏輯的、架構的、或軟體可見地將被使用來意指在暫存器架構中的暫存器/檔案,而不同的形容詞則將使用於在已知微架構中的指定暫存器(例如,實體暫存器、重排序緩衝器、引退暫存器、暫存器池)。
一指令集包括一或多個指令格式。已知的指令格式定義多種欄位(位元數目、位元位置),除了其它事情以外,尤其指明欲被施行的操作(運算碼)以及在其上欲施行操作的運算元。一些指令格式則經由指令樣板(或子格式)的定義而被進一步分解。例如,已知指令格式的指令樣板可被定義以具有不同子集的指令格式欄位(所包括的欄位一般呈相同順序,但其中至少一些具有不同的位元位置,因為有較少欄位被包括)且/或被定義以具有被不同解譯的已知欄位。因此,ISA的各指令係被表達使用已知的指令格式(且,如果有定義的話,在那指令格式之指令樣板的已知樣板中)且包括用於指明該操作與運算元的欄位。例如,例示性ADD指令具有具體的運算碼以及指令格式,該指令格式包括指明那運算碼的運算碼欄位以及選擇運算元的運算元欄位(來源1/目的地以及來源2);且在一指令流中之此ADD指令的發生將在選擇具體運算元的運算元欄位中具有具體內容。
科學、金融、自動向量化通用、RMS(辨別、挖掘、以及合成)、以及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨別演算法以及聲音操縱)常常需要在大量資料項目上施行相同操作(稱為「資料平行處理」)。單一指令多重資料(SIMD)意指導致處理器在多數個資料項目上施行操作的指令類型。SIMD技術尤其適合邏輯上可將暫存器中的位元分為數個固定尺寸資料元件的處理器,其中各者代表個別值。例 如,在256位元暫存器中的位元可被指明為以四個個別64位元緊縮資料元件(四倍字(Q)尺寸資料元件)、八個個別32位元緊縮資料元件(雙字(D)尺寸資料元件)、十六個個別16位元緊縮資料元件(字(W)尺寸資料元件)、或三十二個個別8位元資料元件(位元組(B)尺寸資料元件)而被操作於上的來源運算元。此類型的資料稱為緊縮資料類型或向量資料類型,且此資料類型的運算元稱為緊縮資料運算元或向量運算元。換言之,緊縮資料項目或向量意指緊縮資料元件之序列,且緊縮資料運算元或向量運算元係為SIMD指令的來源或目的地運算元(亦稱為緊縮資料指令或向量指令)。
以舉例的方式,一種類型的SIMD指令指明單一向量操作以垂直方式在兩來源向量運算元上施行,以產生相同尺寸、具有相同數目資料元件、且呈相同資料元件順序的目的地向量運算元(亦稱為結果向量運算元)。在來源向量運算元中的資料元件稱為來源資料元件,而在目的地向量運算元中的資料元件稱為目的地或結果資料元件。這些來源向量運算元尺寸相同且含有相同寬度的資料元件,且因此它們含有相同數目的資料元件。在兩來源向量運算元中之相同位元位置中的來源資料元件形成成對的資料元件(亦稱為對應的資料元件;亦即是,各來源運算元之資料元件位置0中的資料元件對應,各來源運算元之資料元件位置1中的資料元件對應等等)。由SIMD指令指明的操作係在這些對來源資料元件的各對上個別施行,以產生匹 配數目的結果資料元件,且因此各對的來源資料元件具有對應的結果資料元件。因為該操作係為垂直且因為該結果向量運算元係為相同尺寸,具有相同數目的資料元件,且結果資料元件儲存在與來源向量運算元相同的資料元件順序中,所以結果資料元件則在與來源向量運算元中之它們對應來源資料元件對之結果向量運算元的相同位元位置中。除了此例示性類型的SIMD指令以外,有許多其他類型的SIMD指令(例如,具有只有一個或具有多於兩個的來源向量運算元,以水平方式操作,產生不同尺寸的結果向量運算元,其具有不同尺寸的資料元件,及/或具有不同資料元件順序)。應該理解的是,用語目的地向量運算元(或目的地運算元)係定義為施行由指令所指明之操作的直接結果,其包括那目的地運算元之儲存在一位置(係為暫存器或在由那指令指明的記憶體位址),使得它能夠藉由另一指令以來源運算元存取(藉由另一指令指明那相同位置)。
SIMD技術,譬如藉由具有指令集(包括x86、MMXTM、單一指令多重資料數據流擴展(SSE)、SSE2、SSE3、SSE4.1、以及SSE4.2指令)之Intel®CoreTM處理器所利用者,已經實現應用性能的明顯改善。SIMD擴展之一額外組,稱為高級向量擴展(AVX)(AVX1以及AVX2)且使用向量擴展(VEX)編碼方案已經被發行且/或出版(例如,見2011年10月的Intel®64以及IA-32 Architectures Software Developers Manual;以及見2011 年6月的Intel® Advanced Vector Extensions Programming Reference)。
圖1A係為一方塊圖,其繪示根據本發明實施例之例示性依序擷取、解碼、引退管線以及例示性暫存器重新命名、亂序發送/執行管線兩者。圖1B係為一方塊圖,其繪示根據本發明實施例之依序擷取、解碼、引退核心之例示性實施例以及被包括在處理器中之例示性暫存器重新命名、亂序發送/執行架構核心兩者。在圖1A-B中的實線框繪示管線與核心的依序部份,而虛線框的選擇性附加則繪示暫存器重新命名、亂序發送/執行管線與核心。
在圖1A中,處理器管線100包括擷取階段102、長度解碼階段104、解碼階段106、分配階段108、重新命名階段110、排程(亦稱為分派或發送)階段112、暫存器讀取/記憶體讀取階段114、執行階段116、回寫/記憶體寫入階段118、例外處理階段122、以及提交階段124。圖1B顯示包括耦合到執行引擎單元150之前端單元130的處理器核心190且兩者均耦合到記憶體單元170。核心190係為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、非常長指令字(VLIW)核心、或混合或替代核心類型。作為仍另一選項,核心190係為特殊目的核心,譬如例如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或類似物。
前端單元130包括耦合到指令快取單元134的分支預 測單元132,其耦合到指令轉譯後備緩衝器(TLB)136,其耦合到指令擷取單元138,其耦合到解碼單元140。解碼單元140(或解碼器)可解碼指令,並產生一或多個微運算、微碼進入點、微指令、其他指令、或其他控制訊號來作為輸出,其係從最初指令解碼或另外反射或從其取得。解碼單元140可使用多種不同機制來實施。適合機制的實例包括但不限於查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一項實施例中,核心190包括儲存微碼以用於特定巨集指令的微碼ROM或其他媒介(例如,在解碼單元140中或另外在前端單元130內)。解碼單元140係耦合到在執行引擎單元150中的重新命名/分派器單元152。
執行引擎單元150包括耦合到引退單元154以及一組一或多個排程器單元156的重新命名/分派器單元152。排程器單元156代表任何數目的不同排程器,包括保留站、中央指令窗口等等。排程器單元156係耦合到實體暫存器檔案單元158。實體暫存器檔案單元158之各者代表一或多個實體暫存器檔案,其中不同者儲存一或多個不同資料類型,譬如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點狀態(例如,係為欲被執行之下一指令之位址的指令指標)等等。在一項實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、以及純量暫存器單元。這些暫存器單元可提供架構性向量暫存器、向量遮罩暫存器、以及通用暫存器。實體暫 存器檔案單元158係由引退單元154所重疊,以繪示暫存器重新命名且亂序執行可實施(例如,使用重排序緩衝器以及引退暫存器檔案;使用未來檔案、歷史緩衝器、以及引退暫存器檔案:使用暫存器地圖以及暫存器池等等)的許多方式。
引退單元154以及實體暫存器檔案單元158係耦合到執行叢集160。執行叢集160包括一組一或多個執行單元162以及一組一或多個記憶體存取單元164。執行單元162可施行多種操作(例如,移位、相加、相減、相乘)且在多種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然一些實施例可包括專用於具體函數或函數組的數個執行單元,但是其他實施例卻可僅包括全部施行全部函數的一個執行單元或多個執行單元。排程器單元156、實體暫存器檔案單元158、以及執行叢集160係以可能是複數個來顯示,其係因為特定實施例產生用於具體類型資料/操作的個別管線(例如,各具有它們自己排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線-且在個別記憶體存取管線的情形中,可實施特定實施例,其中只有此管線的執行叢集具有記憶體存取單元164)。亦應該理解,在使用個別管線之處,這些管線其中一或多者可亂序發出/執行且剩下的係依序的。
該組記憶體存取單元164係耦合到記憶體單元170, 其包括耦合到資料快取單元174的資料TLB單元172,該資料快取單元則耦合到位階2(L2)快取單元176。在一項例示性實施例中,記憶體存取單元164可包括載入單元、儲存位址單元、以及儲存資料單元、其中各者耦合到在記憶體單元170中的資料TLB單元172。指令快取單元134進一步耦合到在記憶體單元170中的位階2(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指令集(具有已經加以較新版本的某些擴展版);CA,Sunnyvale之MIPS Technologies的MIPS指令集;CA,Sunnyvale之ARM Holdings的ARM指令集(具有選擇性附加擴展版,譬如NEON)),其包括本文中所說明的指令。在一項實 施例中,核心190包括支持緊縮資料指令集擴展版的邏輯(例如,AVX1、AVX2、及/或某形式的通用向量親合指令格式(U=0及/或U=1),說明於下文),因而允許由許多多媒體應用所使用的操作能夠使用緊縮資料來施行。
應該理解的是,核心可支持多線程(執行二或更多平行組操作或線程),且會以許多方式如此進行,該等方式包括分時間片多線程、同時多線程(其中,單一個實體核心提供邏輯核心給實體核心同時予以多線程的各線程)、或其組合(例如,此後譬如在Intel®Hyperthreading科技中的分時間片擷取與解碼與同時多線程)。
雖然在亂序執行的背景中說明暫存器重新命名,但是應該理解的是,暫存器重新命名可被使用於依序架構中。雖然處理器的繪示實施例亦包括個別指令與資料快取單元134/174以及共享L2快取單元176,但是替代實施例則具有用於指令與資料兩者的單一內部快取,譬如例如位階1(L1)內部快取、或多階內部快取。在一些實施例中,該系統可包括內部快取以及在核心及/或處理器外部之外部快取的組合。替代地,全部該快取可皆在核心及/或處理器外部。
圖2係為根據本發明實施例之具有多於一個核心、具有整合記憶體控制器、且具有整合圖形之處理器200的方塊圖。在圖2中的實線框繪示具有單一核心202A、系統代理器210、一組一或多個匯流排控制器單元216的處理器200,而虛線框的選擇性附加則繪示具有多個核心 202A-N、一組一或多個整合記憶體控制器單元214於系統代理器單元210中、以及特殊目的邏輯208的替代處理器200。
因此,處理器200的不同實施過程可包括:1)具有係為整合圖形及/或科學(通量)邏輯(其可包括一或多個核心)之特殊目的邏輯208以及係為一或多個通用核心(例如,通用依序核心、通用亂序核心、兩者之組合)之核心202A-N的CPU;2)具有核心202A-N的共處理器,該等核心係為主要意圖用於圖形及/或科學(通量)的大量特殊目的核心;以及3)具有核心202A-N的共處理器,該等核心係為大量通用依序核心。因此,處理器200係為通用處理器、共處理器或特殊目的處理器,譬如,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量眾多整合核心(MIC)共處理器(包括30或多個核心)、嵌入式處理器、或類似物。處理器可在一或多個晶片上實施。處理器200係為使用數個製程技術任一者之一或多個基板的一部份及/或在其上實施,譬如例如雙極互補式金氧半導體(BiCMOS)、互補式金氧半導體(CMOS)、或N型金氧半導體(NMOS)。
記憶體階層包括一或多階快取於核心內、一組或一或多個共享快取單元206、以及耦合到該組整合記憶體控制器單元214的外部記憶體(沒顯示)。該組共享快取單元206可包括一或多個中階快取,譬如位階2(L2)、位階 3(L3)、位階4(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然在一項實施例中,環狀互連單元212互連整合圖形邏輯208、該組共享快取單元206、以及系統代理器單元210/整合記憶體控制器單元214,替代實施例則可使用用於互連此等單元之任何數目的眾所皆知技術。在一項實施例中,一或多個快取單元206以及核心202A-N之間會維持一致性。
在一些實施例中,核心202A-N其中一或多個能夠多線程。系統代理器210包括協調與操作核心202A-N的那些組件。系統代理器單元210可例如包括電力控制單元(PCU)以及顯示單元。PCU係為或包括用於調節核心202A-N與整合圖形邏輯208之電力狀態所必須的邏輯與組件。顯示單元係用於驅動一或多個外部連接顯示器。就架構結構組而言,核心202A-N可以是均質或非均質;亦即是,核心202A-N其中二或更多者能夠執行相同指令集,而其他則僅能夠執行那指令集的子集或不同指令集。在一項實施例中,核心202A-N係非均質且包括下面所說明的「小」核心與「大」核心兩者。
圖3-6係為例示性電腦架構的方塊圖。在該技術中,已知用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、以及多種其他電子裝置的其他 系統設計與組態亦合適。大致上,能夠合併本文中所揭露之處理器及/或其他執行邏輯的大量多樣系統或電子裝置通常適合。
現在參考圖3,其顯示根據本發明一項實施例之系統300的方塊圖。系統300可包括一或多個處理器310、315,其係耦合到控制器集線器320。在一項實施例中,控制器集線器320包括圖形記憶體控制器集線器(GMCH)390以及輸入/輸出集線器(IOH)350(其會在個別晶片上);GMCH390包括耦合到記憶體340與共處理器345的記憶體與圖形控制器;IOH350將輸入/輸出(I/O)裝置360耦合到GMCH390。或者,記憶體與圖形控制器其中一者或兩者係被整合於處理器內(如本文中所說明),記憶體340與共處理器345直接耦合到處理器310,且控制器集線器320與IOH350在單一晶片中。
附加處理器315的選擇性本質在圖3中以虛線標示。各處理器310、315可包括本文中所說明之處理核心的其中一或多個,且可以是處理器200的某種版本。記憶體340可以例如是動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或該兩者之組合。就至少一項實施例而言,經由多點匯流排(譬如前側匯流排(FSB))、點對點介面(譬如快速路徑互連(QPI))、或類似連接395,控制器集線器320與處理器310、315通訊。在一項實施例中,共處理器345係為特殊目的處理器,譬如例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖 形處理器、GPGPU、嵌入式處理器、或類似物。在一項實施例中,控制器集線器320可包括整合圖形加速器。在包括架構、微架構、熱、電力損耗特徵、以及類似物的優值指標譜方面,物理資源310、315之間會有多種差異。
在一項實施例中,處理器310執行控制一般類型之資料處理操作的指令。共處理器指令係嵌入於指令內。處理器310識別這些共處理器指令為應該由附加共處理器345所執行的類型。據此,處理器310將在共處理器匯流排或其他互連件上的這些共處理器指令(或代表共處理器指令的控制訊號)發送到共處理器345。共處理器345接受且執行接收的共處理器指令。
現在參考圖4,其顯示根據本發明實施例之第一更具體例示性系統400的方塊圖。如圖4所示,多重處理器系統400係為點對點互連系統,且包括經由點對點互連件450耦合的第一處理器470與第二處理器480。處理器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介面電路478、488的點對點(P-P)介面450交換資訊。如圖4所示,IMC472與482將處理器耦合到各別記憶體,亦即,記憶體432與記憶體434,其會是局部附到各別處理器之主記憶體的部份。處理器470、480各者可經由使用點對點介面電路476、494、486、498的各別P-P介面452、454而與晶片組490交換資訊。晶片組490可經由高性能介面439而與共處理器438選擇性地交換資訊。在一項實施例中,共處理器438係為特殊目的處理器,譬如例如,高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似物。
共享快取(未顯示)可被包括在處理器中或兩處理器外面,可是卻經由P-P互連件而與處理器連接,使得假如處理器置於低電力模式內,處理器的局部快取資訊任一者或兩者能夠被儲存於共享快取中。晶片組490可經由介面496耦合到第一匯流排416。在一項實施例中,第一匯流排416係為週邊組件互連(PCI)匯流排或譬如PCI快速匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明的範圍不會如此受限。
如圖4所示,多種I/O裝置414可耦合到第一匯流排416,連同耦合第一匯流排416到第二匯流排420的匯流排橋接器418。在一項實施例中,一或多個額外處理器415,譬如共處理器、高通量MIC處理器、GPGPU、加速器(譬如,例如,圖形加速器或數位訊號處理(DSP)單 元)、場可編程閘極陣列、或任何其他處理器,係耦合到第一匯流排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,其顯示根據本發明實施例之晶片上系統(SoC)600的方塊圖。在圖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)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、快閃記憶體、電可拭除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁性或光學卡、或適合用於儲存電子指令的任何其他類型的媒體。
據此,本發明的實施例亦包括非暫態、有形機器可讀取媒體,該機器可讀取媒體含有指令或含有設計資料,譬如硬體描述語言(HDL),其定義本文中所說明的結構、電路、設備、處理器及/或系統特徵。此等實施例亦稱為程式產品。在一些情形中,指令轉換器可使用以將指令從來源指令集轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進 制轉譯)、變形、模擬、或另外轉換指令到欲由核心處理的一或多個其他指令。指令轉換器可實施在軟體、硬體、韌體、或其組合中。指令轉換器可在處理器上、不在處理器上、或部份在處理器上且部份不在處理器上。
圖7係為一方塊圖,其對比軟體指令轉換器之使用,以根據本發明實施例轉換在來源指令集中的二進制指令成在目標指令集中的二進制指令。在所繪示的實施例中,指令轉換器係為軟體指令轉換器,雖然替代地,指令轉換器會實施在軟體、韌體、硬體、或其多種組合中。圖7顯示在高階語言702中的程式可使用x86編譯器704來編譯,以產生本質上由具有至少一x86指令集核心之處理器716所執行的x86二進制碼706。具有至少一x86指令集核心的處理器716代表可實質施行與具有至少一x86指令集核心之Intel處理器相同功能的任何處理器,其藉由相容地執行或處理(1)Intel x86指令集核心之實質一部份的指令集或(2)目標用以在具有至少一x86指令集核心之Intel處理器上運行之應用或其他軟體的物件碼版本,以便能夠得到與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器704代表可操作來產生x86二進制碼706(例如,物件碼)的編譯器,在具有或不具有額外連結處理上,該二進制碼可在具有至少一x86指令集核心的處理器716上執行。
相同地,圖7顯示在高階語言702中的程式可使用替代指令集編譯器708來編譯,以產生替代指令集二進制碼 710,該二進制碼本質上可由不具有至少一x86指令集核心714(例如,具有核心的處理器,該等核心執行CA,Sunnyvale之MIPS Technologies的MIPS指令集及/或執行CA,Sunnyvale之ARM Holdings的ARM指令集)的處理器所執行。指令轉換器712係使用來將x86二進制碼706轉換成本質上可由不具有x86指令集核心之處理器714執行的碼。此轉換碼不大可能與替代指令集二進制碼710相同,其因為能夠如此的指令轉換器難以生產;不過,該轉換碼將完成一般操作且由來自替代指令集的指令所組成。因此,指令轉換器712代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他製程,其容許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進制碼706。
例示性指令格式
本文中所說明之指令的實施例會以不同格式實施。另外,例示性系統、架構、以及管線係在下文說明。該(等)指令的實施例可在此等系統、架構、以及管線上執行,但卻不限於那些細節。向量親合指令格式係為適合向量指令的指令格式(例如,有專用於向量操作的特定欄位)。雖然經由向量親合指令格式來支持向量與純量操作兩者的實施例係被說明,但是替代實施例則僅僅使用向量親合指令格式的向量操作。
圖8A-8B係為方塊圖,其繪示根據本發明實施例的通 用向量親合指令格式以及其指令樣板。圖8A係為一方塊圖,其繪示根據本發明實施例的通用向量親合指令格式以及其種類A指令樣板;而圖8B係為一方塊圖,其繪示根據本發明實施例的通用向量親合指令格式以及其種類B指令樣板。具體地,用於此的通用向量親合指令格式800係為定義的種類A與種類B指令樣板,其兩者包括無記憶體存取805指令樣板與記憶體存取820指令樣板。
在向量親合指令格式之背景中所通用的用語意指該指令格式不繫於任何具體指令集。雖然將說明向量親合指令格式支持下列的本發明實施例:具有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位元組向量運算元長度(或尺寸);替代實施例可支持具有更多、更少、或不同資料元件寬度(例如,128位元(16位元組)資料元件寬度)的更多、更少、及/或不同向量運算元尺寸(例如, 256位元組向量運算元)。
在圖8A中的種類A指令樣板包括:1)在無記憶體存取805指令樣板內,有顯示無記憶體存取、全捨入控制類型操作810指令樣板以及無記憶體存取、資料轉換類型操作815指令樣板;以及2)在記憶體存取820指令樣板內,有顯示記憶體存取、時間性825指令樣板以及記憶體存取、非時間性830指令樣板。在圖8B中的種類B指令樣板包括:1)在無記憶體存取805指令樣板內,有顯示無記憶體存取、寫入遮罩控制、部份捨入控制類型操作812指令樣板以及無記憶體存取、寫入遮罩控制、向量尺寸類型操作817指令樣板;以及2)在記憶體存取820指令樣板內,有顯示記憶體存取、寫入遮罩控制827指令樣板。通用向量親合指令格式800包括以圖8A-8B所繪示之順序而陳列於下文的下列欄位。
格式欄位840-在此欄位中的具體值(指令格式識別器值)唯一識別向量親合指令格式,以及因此在指令流中之向量親合指令格式之指令的發生。就其本身而言,在它對於僅具有通用向量親合指令格式的指令集而言不需要的意義中,此欄位是選擇性的。
基礎操作欄位842-其內容區別不同基礎操作。
暫存器指數欄位844-其內容,直接或經由位址產生,指明它們在暫存器或在記憶體中之來源與目的地運算元的位置。這些包括充分數目的位元,以從PxQ(例如,32×512、16×128、32×1024、64×1024)暫存器檔案選擇N 個暫存器。雖然在一項實施例中,N可多達三個來源與一個目的地暫存器,但是替代實施例卻可支持更多或更少來源與目的地暫存器(例如,可支持多達兩個來源(其中這些來源之一者亦當作目的地)、可支持多達三個來源(其中這些來源之一者亦當作目的地)、可支持多達兩個來源與一個目的地)。
修改器欄位846-其內容區別指明記憶體存取之通用向量指令格式中之指令的發生以及沒有如此的彼等;亦即是,在無記憶體存取805指令樣板與記憶體存取820指令樣板之間。記憶體存取操作讀取及/或寫入到記憶體階層(在一些情形中,指明使用暫存器中之數值的來源及/或目的地位址),然而非記憶體存取操作則沒有(例如,來源及目的地係為暫存器)。雖然在一項實施例中,此欄位亦在三種不同方式之間選擇以施行記憶體位址計算,替代實施例可支持更多、更少、或不同方式以施行記憶體位址計算。
增大操作欄位850-除了基礎操作之外,其內容區別許多不同操作其中哪一者可被施行。此欄位係為上下文特定的。在本發明的一項實施例中,此欄位分為種類欄位868、阿伐欄位852、以及貝他欄位854。增大操作欄位850容許共同組操作以單一指令而非2、3、或4指令來施行。
標度欄位860-其內容容許用於記憶體位址產生之指數欄位之內容的標度化(例如,用於使用2標度*指數+基 礎的位址產生)。
位移欄位862A-其內容使用當作記憶體位址產生的一部份(例如,用於使用2標度*指數+基礎+位移的位址產生)。
位移因子欄位862B(注意,直接在位移因子欄位862B上之位移欄位862A的毗連指示一個或另一個被使用)-其內容使用當作位址產生的一部份;它指明欲由記憶體存取(N)之尺寸所縮放的位移因子-其中,N係為記憶體存取中的位元組數目(例如,用於使用2標度*指數+基礎+縮放位移的位址產生)。冗餘低階位元會被忽略,且因此,位移因子欄位的內容會乘以記憶體運算元總尺寸(N),以便能夠產生最終位移,以使用於計算有效位址。N的值係在基於全運算碼欄位874(本文中所說明)以及資料操縱欄位854C的運行時間由處理器硬體所決定。位移欄位862A以及位移因子欄位862B在它們不使用於無記憶體存取805指令樣板及/或不同實施例可實施該兩者僅僅其中一者或沒有任何一者的意義上係為選擇性的。
資料元件寬度欄位864-其內容區別數個資料元件寬度其中那一個欲被使用(在一些實施例中,用於全部指令;在其他實施例中,只有用於一些指令)。在假如只有一個資料元件寬度被支持及/或資料元件寬度使用運算碼其中一些態樣來支持之下它並非必要的意義上,此欄位係選擇性的。
寫入遮罩欄位870-以每一資料元件位置為基礎,它的內容控制在目的地向量運算元中的資料元件位置反應基礎操作與增大操作的結果。種類A指令樣板支持合併寫入遮罩,而種類B指令樣板支持合併與歸零寫入遮罩兩者。當合併時,向量遮罩容許在目的地中的任何組元件受到保護免於在執行任何操作期間內更新(由基礎操作與增大操作所指明);在其他一項實施例中,保留其中對應遮罩位元具有0之目的地之各元件的舊值。相比之下,當歸零向量遮罩容許在目的地中的任何組元件在執行任何操作期間內被歸零時(由基礎操作與增大操作所指明);在一項實施例中,當對應遮罩位元具有0值時,目的地的元件則設定為0。此功能的子集係為控制正被施行之操作之向量長度的能力(亦即是,從第一個到最後一個之被修改之元件的跨距);不過,被修改的元件不一定是連續的。因此,寫入遮罩欄位870容許用於部份的向量操作,包括載入、儲存、算數、邏輯等等。雖然其中寫入遮罩欄位870的內容選擇含有欲被使用之寫入遮罩之數個寫入遮罩暫存器其中一個的本發明實施例被說明(且因此,寫入遮罩欄位870的內容間接識別那遮罩欲被施行),但是替代實施例替代或額外容許遮罩寫入欄位870的內容直接指明欲被施行的遮罩。
立即欄位872-其內容容許立即之指明。此欄位在它不存在於不支持立即之通用向量親合格式的實施過程以及它不存在於不使用立即之指令的意義上係為選擇性的。
種類欄位868-其內容區別不同種類的指令之間。參考圖8A-B,此欄位的內容在種類A與種類B指令之間選擇。在圖8A-B中,圓角方格使用來指示一具體值存在於一欄位中(例如,用於種類欄位868的種類A 868A與種類B868B各別在圖8A-B中)。
種類A的指令樣板
在種類A之非記憶體存取805指令樣板的情形中,阿伐欄位852以RS欄位852A解譯,其內容區別不同增大操作類型哪一個欲被施行(例如,捨入852A.1與資料轉換852A.2各別指定用於無記憶體存取、捨入類型操作810以及無記憶體存取、資料轉換類型操作815指令樣板),而貝他欄位854區別指明類型的哪操作欲被施行。在無記憶體存取805指令樣板中,標度欄位860、位移欄位862A、以及位移標度欄位862B係不存在。
無記憶體存取指令樣板-全捨入控制類型操作
在無記憶體存取全捨入控制類型操作810指令樣板中,貝他欄位854被解譯為捨入控制欄位854A,其內容提供靜態捨入。雖然在本發明所說明的實施例中,捨入控制欄位854A包括抑制全浮點例外(SAE)欄位856以及捨入操作控制欄位858,替代實施例可支持將這些概念兩者編碼到相同欄位內或者僅僅具有這些概念/欄位其中一者或另一者(例如,可僅僅具有捨入操作控制欄位 858)。
SAE欄位856-其內容區別是否將例外事件回報失效:當SAE欄位856的內容指示抑制被實現時,已知指令無法回報任何種浮點例外旗標且無法提升任何浮點例外管理器。
捨入操作控制欄位858-其內容區別一組捨入操作中要施行哪一者(例如,無條件進位、無條件捨去、捨入到零以及捨入到最接近值)。因此,捨入操作控制欄位858容許按指令為基礎來改變捨入模式。在處理器包括用於指明捨入模式之控制暫存器之本發明的一項實施例中,捨入操作控制欄位858的內容覆載暫存器值。
無記憶體存取指令樣板-資料轉換類型操作
在無記憶體存取資料轉換類型操作815指令樣板中,貝他欄位854以資料轉換欄位854B解譯,其內容區別數個資料轉換其中哪一個將被施行(例如,無資料轉換、攪和、廣播)。
在種類A之記憶體存取820指令樣板的情形中,阿伐欄位852係以遷出提示欄位852B解譯,其內容區別遷出提示中哪一者將被使用(在圖8A中,時間性852B.1與非時間性852B.2各別指明用於記憶體存取、時間性825指令樣板以及記憶體存取、非時間性830指令樣板),而貝他欄位854以資料操縱欄位854C解譯,其內容區別數個資料操縱操作(亦稱為基元)其中哪一者將被施行(例 如,無操縱;廣播;來源的上轉換;以及目的地的下轉換)。記憶體存取820指令樣板包括標度欄位860以及選擇性地,位移欄位862A或位移標度欄位862B。向量記憶體指令施行來自記憶體的向量載入以及到記憶體的向量儲存,其具有轉換支持。就規則的向量指令而言,向量記憶體指令以資料逐元件方式傳送資料往/返記憶體,真正傳送的元件係由選擇為寫入遮罩之向量遮罩的內容所指定。
記憶體存取指令樣板-時間性
時間性資料係為很可能快到足以受益於快取而可再利用的資料。不過,這是暗示,且不同處理器會以不同方式實施它,包括整個忽略暗示。
記憶體存取指令樣板-非時間性
非時間性資料係為不大可能快到足以受益於在第一階快取中之快取而可再利用的資料且應該提供優先以用於遷出。不過,這是暗示,且不同處理器會以不同方式實施它,包括整個忽略暗示。
種類B的指令樣板
在種類B之指令樣板的情形中,阿伐欄位852係以寫入遮罩控制(Z)欄位852C解譯,其內容區別由寫入遮罩欄位870所控制的寫入遮罩應該是合併或歸零。在種類B的非記憶體存取805指令樣板的情形中,貝他欄位854 的一部份係以RL欄位857A解譯,其內容區別不同增大操作類型哪一者欲被施行(例如,捨入857A.1與向量長度(VSIZE)857A.2各別指定用於無記憶體存取、寫入遮罩控制、部份捨入控制類型操作812指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型操作817指令樣板),而剩下的貝他欄位854區別指定類型的哪操作欲被施行。在無記憶體存取805指令樣板中,標度欄位860、位移欄位862A、以及位移標度欄位862B係不存在。在無記憶體存取中,寫入遮罩控制、部份捨入控制類型操作810指令樣板、剩下的貝他欄位854係以捨入操作欄位859A解譯,且例外事件回報被失效(已知指令無法回報任何種浮點例外旗標且無法提升任何浮點例外管理器)。
捨入操作控制欄位859A-正如捨入操作控制欄位858,其內容區別一組捨入操作其中哪一者要施行(例如,無條件進位、無條件捨去、捨入到零以及捨入到最接近值)。因此,捨入操作控制欄位859A容許按指令為基礎來改變捨入模式。在處理器包括用於指明捨入模式之控制暫存器之本發明的一項實施例中,捨入操作控制欄位850的內容覆載那暫存器值。在無記憶體存取中,寫入遮罩控制、VSIZE型操作817指令樣板、剩下的貝他欄位854係以向量長度欄位859B解譯,其內容區別數個資料向量長度其中哪一者欲被施行(例如,128、256、或512位元組)。
在種類B的記憶體存取820指令樣板的情形中,貝他 欄位854的一部份被解譯為廣播欄位857B,其內容區別廣播類型資料操縱操作是否被施行,而剩下的貝他欄位854則被解譯為向量長度欄位859B。記憶體存取820指令樣板包括標度欄位860、以及選擇性地位移欄位862A或位移標度欄位862B。
在種類B之記憶體存取820指令樣板的情形中,貝他欄位854的一部份被解譯為廣播欄位857B,其內容區別廣播類型資料操縱操作是否被施行,而剩下的貝他欄位854被解譯為向量長度欄位859B。記憶體存取820指令樣板包括標度欄位860、以及選擇性地位移欄位862A或位移標度欄位862B。關於通用向量親合指令格式800,全運算碼欄位874係被顯示,其包括格式欄位840、基礎操作欄位842、以及資料元件寬度欄位864。雖然全運算碼欄位874包括全部這些欄位的一項實施例係被顯示,但是在不支持全部它們的實施例中,全運算碼欄位874包括小於全部這些欄位。全運算碼欄位874提供運算碼(opcode)。增大操作欄位850、資料元件寬度欄位864、以及寫入遮罩欄位870容許這些特徵在通用向量親合指令格式中按指令為基礎被指明。寫入遮罩欄位與資料元件寬度欄位的組合產生類型化指令,其中它們容許遮罩依據不同資料元件寬度被施加。
在種類A與種類B內發現的多種指令樣板在不同情況下是有利的。在本發明的一些實施例中,不同處理器或在一處理器內的不同核心可僅支持種類A、僅支持種類 B、或兩種種類。例如,意圖用於通用計算的高性能通用亂序核心可僅僅支持種類B,主要意圖用於圖形及/或科學(通量)計算的核心僅僅支持種類A,且意圖用於兩者的核心可支持兩者(當然,具有來自兩種類之樣板與指令的某種混合但非來自兩種類之全部樣板與指令的核心係在本發明的範圍內)。同樣地,單一處理器可包括多數個核心,其中全部支持相同種類或其中不同核心支持不同種類。例如,在具有個別圖形與通用核心的處理器中,主要意圖用於圖形及/或科學計算之圖形核心的其中一者可僅僅支持種類A,而通用核心的其中一或多者係為具有意圖用於僅僅支持種類B之通用計算之亂序執行與暫存器重新命名的高性能通用核心。
不具有個別圖形核心的另一處理器可包括支持種類A與種類B兩者之一或多個通用依序或亂序核心。當然,來自一種種類的特徵亦可在本發明之不同實施例中的另一種類中實施。以高階語言撰寫的程式將處於(例如,即時編譯或靜態編譯)多種不同的可執行形式,其包括:1)只具有由用於執行的目標處理器所支持之種類之指令的形式;或2)具有使用全部種類之指令之不同組合而寫入之替代程序且具有選擇程序以基於由目前執行碼之處理器所支持之指令來執行之控制流動碼的形式。
圖9A-D係為方塊圖,其繪示根據本發明實施例的例示性具體向量親合指令格式。圖9顯示具體向量親合指令格式900,該格式在它指明欄位之位置、尺寸、解譯、及 次序、以及用於那些欄位其中一些之值的意義上是具體的。具體向量親合指令格式900可使用來擴展x86指令集,且因此該等欄位其中一些與使用於現存x86指令集與其擴展版(例如,AVX)的彼等類似或相同。此格式仍然與字首編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、以及具有擴展版之現存x86指令的立即欄位一致。來自圖9之欄位所映射入之來自圖8的欄位係被繪示。
應該理解的是,雖然為了說明性目的,本發明實施例係參考通用向量親合指令格式800之背景中的具體向量親合指令格式900來說明,但是本發明不限於具體向量親合指令格式900(除了提出申請之處以外)。例如,通用向量親合指令格式800關注多種欄位的各種各樣可能尺寸,然而具體向量親合指令格式900則以具有具體尺寸的欄位顯示。以具體舉例的方式,雖然資料元件寬度欄位864以在具體向量親合指令格式900的一位元欄位繪示,但是本發明卻不如此受限(亦即是,通用向量親合指令格式800關注其他尺寸的資料元件寬度欄位864)。通用向量親合指令格式800包括按在圖9A所繪示之次序而陳列於下文的下列欄位。
EVEX字首(位元組0-3)902-以四位元組形式編碼。
格式欄位840(EVEX位元組0,位元【7:0】)-第一位元組(EVEX位元組0)係為格式欄位840且它含有 0x62(在本發明的一項實施例中,使用於區別向量親合指令格式的唯一值)。第二-第四位元組(EVEX位元組1-3)包括提供具體性能的數個位元欄位。
REX欄位905(EVEX位元組1,位元【7-5】)-由EVEX.R位元欄位(EVEX位元組1,位元【7】-R)、EVEX.X位元欄位(EVEX位元組1,位元【6】-X)、以及(857BEX位元組1,位元【5】-B)所組成。EVEX.R、EVEX.X、以及EVEX.B位元欄位提供與對應VEX位元欄位相同的功能,且使用1s補數形式編碼,亦即,ZMM0以811B編碼,ZMM15以0000B編碼。其他欄位的指令編碼下三位元的暫存器指標,其係為在該技術中已知(rrr、xxx、以及bbb),使得Rrrr、Xxxx、以及Bbbb可藉由添加EVEX.R、EVEX.X、以及EVEX.B來形成。
REX’欄位810-這是使用以編碼擴展32暫存器組之上16或下16之REX’欄位810的第一部份以及EVEX.R’位元欄位(EVEX位元組1,位元【4】-R’)。在本發明的一項實施例中,此位元,連同在下面指出的其他者,係儲存於位元反轉格式,以從BOUND指令區別(以眾所皆知的x86 32-位元模式),其真實的運算碼位元組係為62,但卻無法在MOD R/M欄位(下文所說明)中接受11的值於MOD欄位中;本發明的替代實施例無法儲存此以及在下文以反轉格式另外指示的位元。值1係使用來將下16個暫存器編碼。換言之,R’Rrrr係藉由結合 EVEX.R’、EVEX.R、以及來自其他欄位的其他RRR所形成。
運算碼地圖欄位915(EVEX位元組1,位元【3:0】-mmmm)-其內容將隱式引導運算碼位元組(0F、0F38、或0F3)編碼。
資料元件寬度欄位864(EVEX位元組2,位元【7】-W)-其係由標記EVEX.W所代表。EVEX.W使用來定出資料類型(32位元資料元件或64位元資料元件)的粒度(尺寸)。
EVEX.vvvv920(EVEX位元組2,位元【6:3】-vvvv)-EVEX.vvvv的角色包括如下:1)EVEX.vvvv編碼以反向(1s補數)形式指明的第一來源暫存器運算元且對於具有2或多個來源運算元的指令有效;2)EVEX.vvvv編碼以1s補數形式指明的目的地暫存器運算元,以用於特定的向量移位;或3)EVEX.vvvv沒有編碼任何運算元,該欄位會被保留且應該含有811b。因此,EVEX.vvvv欄位920編碼以反轉(1s補數)形式儲存的第一來源暫存器說明符的4低階位元。依據該指令,額外不同的EVEX位元欄位係使用來將說明符尺寸擴展到32個暫存器。
EVEX.U868種類欄位(EVEX位元組2,位元【2】-U)-假如EVEX.U=0,它指示種類A或EVEX.U0;假如EVEX.U=1,它指示種類B或EVEX.U1。
字首編碼欄位925(EVEX位元組2,位元【1:0】- pp)-提供額外的位元以用於基礎操作欄位。除了提供支持給呈EVEX字首格式的舊有SSE指令,這亦具有小型化SIMD字首的好處(而非需要一位元組以加速SIMD字首,EVEX字首僅需要2位元)。在一項實施例中,為了支持使用呈舊有格式與呈EVEX字首格式兩者之SIMD字首(66H、F2H、F3H)的舊有SSE指令,這些舊有SIMD字首係被編碼成SIMD字首編碼欄位;且於運行時間,在提供到解碼器的PLA之前,被擴展到舊有的SIMD字首內(如此,PLA可在沒有修正之下執行這些舊有指令的舊有與EVEX格式兩者)。雖然較新的指令可直接使用EVEX字首編碼欄位的內容作為運算碼擴展版,但是特定實施例卻為了一致性而以相同方式擴展但允許欲由這些舊有SIMD字首所指明的不同意義。替代實施例可重新設計PLA,以支持2位元SIMD字首編碼,且因此不需要擴展。
阿伐欄位852(EVEX位元組3,位元【7】-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、以及EVEX.N;亦以α繪示)-如先前所說明,此欄位係為上下文特定的。
貝他欄位854(EVEX位元組3,位元【6:4】-SSS,亦稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ繪示)-如先前所說明,此欄位係為上下文特定的。
REX’欄位810-這是REX’欄位的餘數且是EVEX.V’ 位元欄位(EVEX位元組3,位元【3】-V’),其可被使用來將擴展32個暫存器組的上16個或下16個編碼。此位元以位元反轉格式儲存。值1被使用來編碼下16個暫存器。換句話說,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv所形成。
寫入遮罩欄位870(EVEX位元組3,位元【2:0】-kkk)-其內容指明如先前所說明之寫入遮罩暫存器中之暫存器的指數。在本發明的一項實施例中,具體值EVEX.kkk=000具有蘊含無寫入遮罩使用於特定指令的特殊行為(此會以多種方式來實施,該等方式包括硬體化成旁通遮蔽硬體之全部或硬體之寫入遮罩的使用)。
真實運算碼欄位930(位元組4)-其亦稱為運算碼位元組。部份的運算碼係在此欄位中被指明。
MODR/M欄位940(位元組5)包括MOD欄位942、Reg欄位944、以及R/M欄位946。如先前所說明的,MOD欄位942的內容區別記憶體存取與非記憶體存取操作之間。Reg欄位944的角色可歸納成兩種情況:編碼目的地暫存器運算元或來源暫存器運算元,或者視為運算碼擴展且不使用來編碼任何指令運算元。R/M欄位946的角色可包括下列:編碼參考記憶體位址的指令運算元或編碼目的地暫存器運算元或來源暫存器運算元。
標度、指數、基礎(SIB)位元組(位元組6)-如先前所說明,標度欄位850的內容係使用於記憶體位址產生。SIB.xxx954與SIB.bbb956-這些欄位的內容已經事先 被視為關於暫存器指數Xxxx以及Bbbb。
位移欄位862A(位元組7-10)-當MOD欄位942含有10時,位元組7-10係為位移欄位862A,且它的運作與舊有32-位元位移(disp32)相同且以位元組粒度運作。
位移因子欄位862B(位元組7)-當MOD欄位942含有01時,位元組7係為位移因子欄位862B。此欄位的位置與舊有x86指令集8-位元位移(disp8)的位置相同,其以位元組粒度運作。因為disp8係為符號擴展,所以它僅可解決介於-128與127位元組之間的偏移;依據64位元組快取線而言,disp8使用可設定成僅僅四個真正有用值(-128、-64、0、以及64)的8位元;因為經常需要更大的範圍,所以使用disp32;不過,disp32需要4位元組。相反於disp8與disp32,位移因子欄位862B係為disp8的重新解譯;當使用位移因子欄位862B時,真實位移係由位移因子欄位的內容乘以記憶體運算元存取(N)的尺寸所決定。此類型的位移稱為disp8*N。這減少平均指令長度(單一位元組使用於位移但卻具有更大的範圍)。此壓縮位移基於有效位移係為記憶體存取之多數粒度且因而位址偏移的冗餘低階位元不需要被編碼之假設。換言之,位移因子欄位862B替代舊有x86指令集8-位元位移。因此,位移因子欄位862B係以與x86指令集8-位元位移相同的方式被編碼(如此,在ModRM/SIB編碼規則中沒有改變),唯一的例外是disp8過載到disp8*N。 換句話說,在編碼規則或編碼長度中但卻只有在藉由硬體之位移值的解譯中沒有任何變化(其需要藉由記憶體運算元的尺寸來縮放該位移以得到逐位元組的位址偏移)。立即欄位872如先前所說明地操作。
全運算碼欄位
圖9B係為方塊圖,其繪示根據本發明一項實施例之組成全運算碼欄位874之具體向量親合指令格式900的欄位。具體地,全運算碼欄位874包括格式欄位840、基礎操作欄位842、以及資料元件寬度(W)欄位864。基礎操作欄位842包括字首編碼欄位925、運算碼地圖欄位915、以及真實運算碼欄位930。
暫存器指數欄位
圖9C係為方塊圖,其繪示根據本發明一項實施例之組成暫存器指數欄位844之具體向量親合指令格式900的欄位。具體地,暫存器指數欄位844包括REX欄位905、REX’欄位910、MODR/M.reg欄位944、MODR/M.r/m欄位946、VVVV欄位920、xxx欄位954、以及bbb欄位956。
增大操作欄位
圖9D係為方塊圖,其繪示根據本發明一項實施例之組成增大操作欄位850之具體向量親合指令格式900的欄 位。當種類(U)欄位868含有0時,它表示EVEX.U0(種類A 868A);當它含有1時,它表示EVEX.U1(種類B 868B)。當U=0且MOD欄位942含有11時(表示無記憶體存取操作),阿伐欄位852(EVEX位元組3,位元【7】-EH)以rs欄位852A解譯。當rs欄位852A含有1(捨入852A.1)時,貝他欄位854(EVEX位元組3,位元【6:4】-SSS)以捨入控制欄位854A解譯。捨入控制欄位854A包括一位元SAE欄位856以及兩位元捨入操作欄位858。當rs欄位852A含有0時(資料轉換852A.2),貝他欄位854(EVEX位元組3,位元【6:4】-SSS)以三個位元資料轉換欄位854B解譯。當U=0且MOD欄位942含有00、01、或10時(表示記憶體存取操作),阿伐欄位852(EVEX位元組3,位元【7】-EH)以逐出暗示(EH)欄位852B解譯且貝他欄位854(EVEX位元組3,位元【6:4】-SSS)以三個位元資料操縱欄位854C解譯。
當U=1時,阿伐欄位852(EVEX位元組3,位元【7】-EH)以寫入遮罩控制(Z)欄位852C解譯。當U=1且MOD欄位942含有11時(表示無記憶體存取操作),貝他欄位854(EVEX位元組3,位元【4】-S0)的一部份以RL欄位857A解譯;當它含有1(捨入857A.1)時,剩下的貝他欄位854(EVEX位元組3,位元【6-5】-S2-1)以捨入操作欄位859A解譯,而當RL欄位857A含有0(VSIZE 857.A2)時,剩下的貝他欄位 854(EVEX位元組3,位元【6-5】-S2-1)以向量長度欄位859B(EVEX位元組3,位元【6-5】-L1-0)解譯。當U=1且MOD欄位942含有00、01、或10時(表示記憶體存取操作),貝他欄位854(EVEX位元組3,位元【6:4】-SSS)以向量長度欄位859B(EVEX位元組3,位元【6-5】-L1-0)以及廣播欄位857B(EVEX位元組3,位元【4】-B)解譯。
圖10係為根據本發明一項實施例之暫存器架構1000的方塊圖。在所繪示的實施例中,有32個向量暫存器1010,該等向量暫存器係512位元寬;這些暫存器係以zmm0至zmm31參考。下16zmm暫存器的下階256位元係覆加在暫存器ymm0-16上。下16zmm暫存器的下階128位元(ymm暫存器的下階128位元)係覆加在暫存器xmm0-15上。具體向量親合指令格式900係在這些覆加暫存器檔案上操作,如下表中所繪示。
換言之,向量長度欄位859B在最大長度以及一或多個其他較短長度之間選擇,其中各此較短長度係為先前長度的一半長度,且不具有向量長度欄位859B的指令樣板在最大向量長度上操作。進一步,在一項實施例中,具體向量親合指令格式900的種類B指令樣板在緊縮或純量單一/雙倍-精度浮點資料以及緊縮或純量整數資料上操作。純量操作係為在zmm/ymm/xmm暫存器中的最低階資料元件位置上所施行的操作;取決於該實施例,較高階資料元件位置係與它們在指令或歸零之前相同。
寫入遮罩暫存器1015-在所繪示的實施例中,有8個寫入遮罩暫存器(k0至k7),各個尺寸大小為64位元。在替代實施例中,寫入遮罩暫存器1015的尺寸大小為16 位元。如先前所說明的,在本發明的一項實施例中,向量遮罩暫存器k0無法被使用當作寫入遮罩;當正常下指示為k0的編碼使用於寫入遮罩時,它選擇0xFFFF的硬體化寫入遮罩,以有效地使用於那指令的寫入遮罩無法實現。
通用暫存器1025-在所繪示的實施例中,有十六個64位元的通用暫存器,該等暫存器連同現存的x86定址模式來使用,以定址記憶體運算元。這些暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R15來參考。
純量浮點堆疊暫存器檔案(x87堆疊)1045,別名為MMX緊縮整數平暫存器檔案1050-在所繪示的實施例中,X87堆疊係為八元件堆疊,其係使用以使用x87指令集擴展來施行純量浮點操作於32/64/80-位元浮點資料上;而MMX暫存器則被使用以施行操作於64-位元緊縮整數資料上,以及保持運算元,以用於在MMX與XMM暫存器之間所施行的一些操作。本發明的替代實施例可使用較寬或較窄的暫存器。另外,本發明的替代實施例可使用更多、更少、或不同的暫存器檔案與暫存器。
圖11A-B繪示更具體的例示性依序核心架構的方塊圖,該核心係為在一晶片中之數個邏輯方塊的其中一者(包括相同類型及/或不同類型的其他核心)。依據該應用,邏輯方塊經由高頻寬互連網路(例如,環狀網路)而與一些固定功能邏輯、記憶體I/O介面、以及其他必要的I/O邏輯通訊。
圖11A係為根據本發明實施例之單一處理器核心連同其連接到晶片上互連網路1102以及位階2(L2)快取1104之其局部子集的方塊圖。在一項實施例中,指令解碼器1100支持具有緊縮資料指令集擴展的x86指令集。L1快取1106容許低潛時存取將記憶體快取到純量與向量單元內。雖然在一項實施例中(用以簡化該設計),純量單元1108與向量單元1110使用個別的暫存器組(各別地,純量暫存器1112與向量暫存器1114),且在它們之間傳送的資料係被寫入到記憶體且隨後從位階1(L1)快取1106回讀,本發明的替代實施例則可使用不同的方法(例如,使用單一暫存器組或包括通訊路徑,其容許資料在兩暫存器檔案之間傳送而沒有被寫入與回讀)。
L2快取1104的局部子集係為全球L2快取的一部份,該快取分成個別的局部子集,每一處理器核心一個。各處理器核心具有到它本身局部子集之L2快取1104的直接存取路徑。由處理器核心所讀取的資料係儲存在它的L2快取子集1104中,且可與存取它們本身局部L2快取子集的其他處理器核心並行地快速存取。由處理器核心寫入的資料係儲存在它本身的L2快取子集1104中,且假如必要的話,從其他子集沖洗。環狀網路確保共享資料的一致性。環狀網路係雙向,以容許譬如處理器核心、L2快取與其他邏輯方塊的媒介彼此在晶片內通訊。各環狀資料路徑係為每一方向1012位元寬。
圖11B係為根據本發明實施例之在圖11A中之部份 處理器核心的擴大圖。圖11B包括L1快取1104的L1資料快取1106A部份以及關於向量單元1110與向量暫存器1114的更多細節。具體地,向量單元1110係為16寬的向量處理單元(VPU)(見16-寬ALU1128),其執行整數、單一精度浮動、以及雙倍精度浮動指令的其中一者或多者。VPU支持以攪和單元1120來攪和暫存器輸入、以數字轉換單元1122A-B的數字轉換、以及在記憶體輸入上之以複製單元1124的複製。寫入遮罩暫存器1126容許預測結果所得的向量寫入。
本發明的實施例可包括多種步驟,其已經在上文說明。該等步驟會以機器可執行指令來實施,該等指令可使用來導致通用或特殊目的處理器,以施行該等步驟。替代地,這些步驟可藉由含有用於施行該等步驟之硬體化邏輯的具體硬體組件或藉由程式化電腦組件與訂製硬體組件的任何組合來施行。
如本文中所說明,指令可意指具體組態的硬體,譬如特定應用積體電路(ASIC),其組態以施行特定操作或使預定功能或軟體指令儲存在以非暫態電腦可讀取媒體來實施的記憶體中。因此,在該圖式中所顯示的技術可使用儲存且執行於一或多個電子裝置上(例如,終端站、網路元件等等)的碼與資料來實施。此等電子裝置儲存且通訊(在內部及/或與在網路上的其他電子裝置)碼與資料,其使用電腦機器可讀取媒體,譬如非暫態電腦機器可讀取儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記 憶體;快閃記憶體裝置;相位改變記憶體)以及暫態電腦機器可讀取通訊媒體(例如,電、光、吸音或其他形式的傳播訊號-譬如載波、紅外線訊號、數位訊號等等)。
此外,此等電子裝置一般包括耦合到一或多個其它組件的一組一或多個處理器,譬如一或多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕、及/或顯示器)、以及網路連接。該組處理器與其他組件的耦合一般經由一或多個匯流排與橋接器(亦稱為匯流排控制器)。攜帶網路交通的儲存裝置與訊號各別地代表一或多個機器可讀取儲存媒體以及機器可讀取通訊媒體。因此,已知電子裝置的儲存裝置一般儲存用於在那電子裝置之該組一或多個處理器上執行的碼及/或資料。當然,本發明之一實施例的一或多個部件可使用軟體、韌體、及/或硬體的不同組合來實施。
用於施行熔合累加操作的設備與方法
如上文所提及,當與向量/SIMD資料運作時,會有將有利於減少總指令數且改善電力效率(尤其就小核心而言)的情況。特別地,實施用於浮點資料類型之熔合累加操作的指令容許總指令數的減少以及工作負載電力需求的減少。
圖12-15繪示在512位元向量/SIMD運算元上之熔合累加操作的實施例,各運算元在其上操作以作為含有單一精度浮點值的16個個別的32位元緊縮資料元件。不過, 應該提及的是,在圖12-15中所繪示之具體向量與緊縮資料元件尺寸係僅僅為了繪示之目的而使用。本發明的根本原理可使用任何向量或緊縮資料元件尺寸來實施。參考圖12-15,來源1與來源2運算元(各別為1205-1505與1201-1501)係為SIMD緊縮資料暫存器,且來源3運算元1203-1503係為在記憶體中的SIMD緊縮資料暫存器或位置。回應於熔合累加操作,捨入控制係依據向量格式來設定。在本文中所說明的實施例中,捨入控制可根據圖8A之種類A的指令樣板(包括無記憶體存取、捨入類型操作810)或圖8B之種類B的指令樣板(包括無記憶體存取、寫入遮罩控制、部份捨入控制類型操作812)來設定。
如圖12所繪示,佔據來源2運算元之最不明顯32位元的最初緊縮資料元件(例如,在1201中具有值7的緊縮資料元件)係從來源3運算元(例如,在1203中具有值15的緊縮資料元件)加到對應的緊縮資料元件,以產生第一結果資料元件。第一結果資料元件係被捨入且加到來源1/目的地運算元的對應緊縮資料元件(例如,在1205中具有值8的緊縮資料元件),以產生第二結果資料元件。第二結果資料元件係被捨入且回寫到來源1/目的地運算元1207的相同緊縮資料元件位置內(例如,具有值-16的緊縮資料元件1215)。在一項實施例中,立即位元組值係以操作/指令編碼,其中立即各者的最不明顯3位元1209含有一或零,以指定正或負值到用於熔合累加 操作之各運算元之各別緊縮資料元件的各者。立即位元組的立即位元【7:3】1211將暫存器或位置編碼於來源3的記憶體中。熔合累加操作重複以用於對應來源運算元的各個各別緊縮資料元件,其中各來源運算元包括複數個緊縮資料元件(例如,就對應組運算元而言,各擁有具有向量運算元長度512位元的16個緊縮資料元件,其中各緊縮資料元件係為32位元寬)。
另一項實施例涉及四個緊縮資料運算元。與圖12相似地,圖13繪示佔據來源2運算元1301之最不明顯32位元的最初緊縮資料元件。最初緊縮資料元件係從來源3運算元1303加到對應的緊縮資料元件,以產生第一結果資料元件。第一結果資料元件係被捨入且加到來源1運算元1305的對應緊縮資料元件,以產生第二結果資料元件。相對於圖12,在被捨入之後,第二結果資料元件係被寫入於第四緊縮資料運算元的對應緊縮資料元件內,目的地運算元1307(例如,具有值-16 1315的緊縮資料元件)。在一項實施例中,立即位元組值係以操作/指令編碼,其中最不明顯的3位元1309各含有一或零,以各別指定正或負值到用於熔合累加操作之各運算元之緊縮資料元件的各者。立即位元組的立即位元【7:3】1311編碼在來源3之記憶體中的暫存器或位置。熔合累加操作重複以用於對應來源運算元的各個各別緊縮資料元件,其中各來源運算元包括複數個緊縮資料元件(例如,用於對應組運算元,各者擁有具有向量運算元長度512位元的16緊 縮資料元件,其中各緊縮資料元件係為32位元寬)。
圖14繪示一替代實施例,其包括添加具有緊縮資料元件寬度32位元的寫入遮罩暫存器K1 1419。寫入遮罩暫存器K1的下16位元包括一與零的混合。在寫入遮罩暫存器K1中之下16位元位置的各者對應緊縮資料元件位置的其中一者。就在來源1/目的地運算元1407中的各緊縮資料元件位置而言,在寫入遮罩暫存器K1中的對應位元控制是否該操作結果被寫入到目的地。例如,假如寫入遮罩為0,那麼操作的結果則無法寫入到目的地緊縮資料元件位置(例如,具有值6 1421的緊縮資料元件);假如寫入遮罩為1,那麼操作的結果則被寫入到緊縮資料元件位置(例如,具有值-16 1415的緊縮資料元件)。
在另一項實施例中,如圖15所繪示,來源1/目的地運算元1405以額外的來源運算元取代,來源1運算元1505(例如,以用於具有四個緊縮資料運算元的實施例)。在那些實施例中,目的地運算元1507含有來自在緊縮資料元件位置之那些中之操作之前的來源1運算元的內容,其中遮罩暫存器K1的對應位元位置係為零(例如,具有值6 1521的緊縮資料元件),且含有在緊縮資料元件位置之那些中之操作的結果,其中遮罩暫存器K1的對應位元位置係為1(例如,具有值-16 1515的緊縮資料元件)。
根據上文所說明之熔合累加指令的實施例,該等運算元可參考圖12-15與9A而如下列被編碼。目的地運算元 1207-1507(亦為在圖12與14中的來源1/目的地運算元)係為緊縮資料暫存器且在Reg欄位944中被編碼。來源2運算元1201-1501係為緊縮資料暫存器且在VVVV欄位920中被編碼。在一項實施例中,來源3運算元1203-1503係為緊縮資料暫存器,且在其他實施例中,它是32位元浮點緊縮資料記憶體位置。來源3運算元係在立即欄位872或在R/M欄位946中被編碼。
圖16係為一種流程圖,其繪示後面跟著處理器同時施行根據一項實施例之熔合累加操作的例示性步驟。該方法可在上文所說明之架構的背景內實施但卻不限於任何具體架構。在步驟1601,解碼單元(例如,解碼單元140)接收一指令且解碼該指令以判定熔合累加操作欲被施行。該指令可指明一組三或四個來源緊縮資料運算元,各具有N個緊縮資料元件的陣列。在該等緊縮資料運算元之各者內之各緊縮資料元件的值係根據在具有立即位元組之位元位置中的對應值而為正或負(例如,在各含有一或零之來源3運算元內之立即位元組中的最不明顯3位元,以各別指定正或負值到用於熔合累加操作之各運算元之緊縮資料元件的各者)。
在步驟1603,解碼單元140存取暫存器(例如,在實體暫存器檔案單元158中的暫存器)或記憶體(例如,記憶體單元170)內的位置。在實體暫存器檔案單元158中的暫存器或在記憶體單元170中的記憶體位置,可依據在該指令中所指明的暫存器位址來存取。例如,熔合累加 操作可包括SRC1、SRC2、SRC3、以及DEST暫存器位址,其中SRC1係為第一來源暫存器的位址,SRC2係為第二來源暫存器的位址,且SRC3係為第三來源暫存器的位址。DEST係為其中儲存結果資料之目的地暫存器的位址。在一些實施過程中,藉由SRC1來參考的儲存位置亦使用以儲存該結果且稱為SRC1/DEST。在一些實施過程中,SRC1、SRC2、SRC3、以及DEST的任一者或全部定義記憶體位置於處理器的可定址記憶體空間中。例如,SRC3可識別記憶體位置於記憶體單元170中,而SRC2以及SRC1/DEST各別地識別第一與第二暫存器於實體暫存器檔案單元158中。為了簡化本文中的說明,該等實施例將相關於存取實體暫存器檔案來說明。不過,這些存取可代替地執行至記憶體。
在步驟1605,執行單元(例如,執行引擎單元150)係被實現以在存取資料上施行熔合累加操作。根據熔合累加操作,來源2運算元的最初緊縮資料元件係從來源3運算元加到對應的緊縮資料元件,以產生第一結果資料元件。第一結果資料元件係被捨入且加到來源1/目的地運算元的對應緊縮資料元件,以產生第二結果資料元件。第二結果資料元件係被捨入且回寫到來源1/目的地運算元的相同緊縮資料元件位置內。就涉及四個緊縮資料運算元的實施例而言,在被捨入之後,第二結果資料元件係被寫入於第四緊縮資料運算元的對應緊縮資料元件內,目的地運算元。在一項實施例中,立即位元組值係以來源3運算元編 碼,其中最不明顯的3位元各含有一或零,其指定正或負值到用於熔合累加操作之各運算元之各別緊縮資料元件的各者。立即位元【7:3】將來源3的暫存器編碼。
就包括寫入遮罩暫存器的實施例而言,在來源1/目的地運算元中的各緊縮資料元件位置,含有在來源1/目的地之那緊縮資料元件位置的內容或根據在寫入遮罩暫存器中之對應位元位置的操作結果(各別為零或一)。熔合累加操作重複,以用於對應來源運算元的各個各別緊縮資料元件,其中各來源運算元包括複數個緊縮資料元件。根據該指令的必要條件,來源1/目的地運算元或目的地運算元可指明在實體暫存器檔案單元158中的暫存器,其中熔合累加操作的結果係被儲存。在步驟1607,熔合累加操作的結果可根據該指令的必要條件儲存回到實體暫存器檔案單元158內或記憶體單元170中的位置中。
圖17繪示用於熔合累加操作之實施過程的例示性資料流。在一項實施例中,處理單元1701的執行單元1705係為一熔合累加單元1705且耦合到實體暫存器檔案單元1703,以接收來自各別來源暫存器的來源運算元。在一項實施例中,熔合累加單元係可操作,以在儲存於由第一、第二、以及第三來源運算元所指明之暫存器中的緊縮資料元件上施行熔合累加操作。
熔合累加單元進一步包括子電路(亦即,算術邏輯單元),以用於在來自來源運算元之各者的緊縮資料元件上操作。各子電路將來自來源2運算元(1201-1501)的一 個緊縮資料元件加到來源3運算元(1203-1503)的對應緊縮資料元件,以產生第一結果資料元件。根據各別具有三個或四個來源運算元的指令,第一結果資料元件係被捨入且加到來源1/目的地運算元或來源1運算元(1205-1505)的對應緊縮資料元件,以產生第二結果資料元件。第二結果資料元件係被捨入且回寫到來源1/目的地運算元或目的地運算元(1207-1507)之對應緊縮資料元件位置內。在完成該操作之後,在來源1/目的地運算元或目的地運算元內的結果可回寫到例如在回寫或引退階段中的實體暫存器檔案單元1703。
圖18繪示用於熔合累加操作之實施過程的替代資料流。與圖17相似地,處理單元1801的執行單元1807係為熔合累加單元1807且可操作來在由第一、第二、以及第三來源運算元所指明之暫存器中所儲存的緊縮資料元件上施行熔合累加操作。在一項實施例中,排程器1805係耦合到實體暫存器檔案單元1803,以接收來自各別來源暫存器的來源運算元,且該排程器係耦合到熔合累加單元1807。排程器1805接收來自在實體暫存器檔案單元1803中之各別來源暫存器的來源運算元且配送來源運算元到熔合累加單元1807,以用於執行該熔合累加操作。
在一項實施例中,在沒有可用來施行單一熔合累加指令的兩累加單元也沒有兩子電路之處,排程器1805將指令兩次配送到熔合累加單元而沒有配送第二指令直到已經完成第一指令為止(亦即,排程器1805配送熔合累加指 令且等待來自來源2運算元(1201-1501)的一個緊縮資料元件被加到來源3運算元(1203-1503)的對應緊縮資料元件,以產生第一結果資料元件;根據各別具有三個或四個來源運算元的指令,排程器隨後發送熔合累加指令第二次,且第一結果資料元件被捨入且加到來源1/目的地運算元或來源1運算元(1205-1505)的對應緊縮資料元件,以產生第二結果資料元件)。第二結果資料元件係被捨入且回寫到來源1/目的地運算元或目的地運算元(1207-1507)的對應緊縮資料元件位置內。在完成操作之後,在來源1/目的地運算元或目的地運算元內的結果可回寫到例如在回寫或引退階段中的實體暫存器檔案單元1803。
圖19繪示用於熔合累加操作之實施過程的另一替代資料流。與圖18相似地,處理單元1901的執行單元1907係為熔合累加單元1907,且可操作來施行熔合累加操作於儲存在由第一、第二、以及第三來源運算元所指明之暫存器中的緊縮資料元件上。在一項實施例中,實體暫存器檔案單元1903係耦合到亦為熔合累加單元1905的額外執行單元(亦可操作來施行熔合累加操作於儲存在由第一、第二、以及第三來源運算元所指明之暫存器中的緊縮資料元件上)且兩個熔合累加單元係為串聯(亦即,熔合累加單元1905的輸出係耦合到熔合累加單元1907的輸入)。
在一項實施例中,第一熔合累加單元(亦即,熔合累 加單元1905)施行來自來源2運算元(1201-1501)之一個緊縮資料元件以及來源3運算元(1203-1503)之對應緊縮資料元件的相加,以產生第一結果資料元件。在一項實施例中,在第一結果資料元件被捨入之後,根據各別具有三個或四個來源運算元的指令,第二熔合累加單元(亦即,熔合累加單元1907)施行第一結果資料元件以及來源1/目的地運算元或來源1運算元(1205-1505)之對應緊縮資料元件的相加,以產生第二結果資料元件。第二結果資料元件係被捨入且回寫到來源1/目的地運算元或目的地運算元(1207-1507)的對應緊縮資料元件位置。在完成該操作之後,在來源1/目的地運算元或目的地運算元內的結果可回寫到例如在回寫或引退階段中的實體暫存器檔案單元1903。
於整個此詳細說明,為了解釋之目的,可陳述許多具體細節,以便提供對本發明的完整理解。不過,所屬技術領域中具有通常知識者將明瞭,本發明可在沒有這些具體細節的其中一些下實施。在特定的情況中,眾所皆知的結構與功能不會以詳盡的細節來說明,以便避免混淆本發明的主題。據此,本發明的範圍與態樣則應該依據接下來的申請專利範圍來判斷。
1201‧‧‧來源2運算元
1203‧‧‧來源3運算元
1205‧‧‧來源1運算元
1207‧‧‧來源1/目的地運算元
1209‧‧‧位元
1211‧‧‧立即位元
1215‧‧‧緊縮資料元件

Claims (24)

  1. 一種處理器,其包含:一第一來源暫存器,其用以儲存一第一運算元,該第一運算元包含一第一複數個緊縮資料元件;一第二來源暫存器,其用以儲存一第二運算元,該第二運算元包含一第二複數個緊縮資料元件;一第三來源暫存器,其用以儲存一第三運算元,該第三運算元包含一第三複數個緊縮資料元件;以及熔合累加電路,其用以根據一立即值內之一位元位置中的一對應值而解譯該複數個緊縮資料元件為正或負,該熔合累加電路用以將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,該熔合累加電路用以儲存該第二結果資料元件於一目的地。
  2. 如申請專利範圍第1項之處理器,其中該熔合累加電路包含用以解碼一熔合累加指令的一解碼單元以及用以執行該熔合累加指令的一執行單元。
  3. 如申請專利範圍第2項之處理器,其中該解碼單元係用以將一單一熔合累加指令解碼成複數個微運算,以由該執行單元所執行。
  4. 如申請專利範圍第3項之處理器,其中具有複數個子電路的該執行單元係用以使用該等微運算而根據在一立即值內之一位元位置中的一對應值而解譯該複數個緊縮 資料元件為正或負,將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,以及用以儲存該第二結果資料元件於一目的地中。
  5. 如申請專利範圍第1項之處理器,其中該第一運算元與該目的地係為儲存該第二結果資料元件之處的一單一暫存器。
  6. 如申請專利範圍第1項之處理器,其中基於該處理器之一寫入遮罩暫存器的一值,該第二結果資料元件寫入到該目的地。
  7. 如申請專利範圍第1項之處理器,其中為了解譯該複數個緊縮資料元件為正或負,該熔合累加電路係用以讀取對應於該第一複數個緊縮資料元件的該立即值之一第一位元位置中的一位元值,以決定該第一複數個緊縮資料元件為正或負、用以讀取對應於該第二複數個緊縮資料元件的該立即值之一第二位元位置中的一位元值,以決定該第二複數個緊縮資料元件為正或負、以及用以讀取對應於該第三複數個緊縮資料元件的該立即值之一第三位元位置中的一位元值,以決定該第三複數個緊縮資料元件為正或負。
  8. 如申請專利範圍第7項之處理器,其中該熔合累加電路係用以進一步讀取除了在該第一、第二、以及第三位元位置中的該等位元以外的一組一或多個位元,以決定該等運算元其中至少一者的一暫存器或記憶體位置。
  9. 一種方法,其包含:將包含一第一複數個緊縮資料元件的一第一運算元儲存在一第一來源暫存器中;將包含一第二複數個緊縮資料元件的一第二運算元儲存在一第二來源暫存器中;將包含一第三複數個緊縮資料元件的一第三運算元儲存在一第三來源暫存器中;根據在一指令的一立即值內之一位元位置中的一對應值,解譯該複數個緊縮資料元件為正或負;以及將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,以及儲存該第二結果資料元件於一目的地中。
  10. 如申請專利範圍第9項之方法,其進一步包含:藉由一處理器中的一解碼器來解碼該指令,該指令指明該第一來源暫存器、該第二來源暫存器、以及該第三來源暫存器;以及藉由根據在該立即值內之位元位置中的該對應值來解譯該複數個緊縮資料元件為正或負而藉由在該處理器中的一執行單元來執行該指令。
  11. 如申請專利範圍第10項之方法,其中該解碼器係用以將一單一指令解碼成複數個微運算,以由該執行單元執行。
  12. 如申請專利範圍第11項之方法,其進一步包 含:藉由具有複數個子電路的該執行單元,使用該等微運算,根據在一立即值內之一位元位置中的一對應值,解譯該複數個緊縮資料元件為正或負,將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,以及儲存該第二結果資料元件於一目的地中。
  13. 如申請專利範圍第9項之方法,其中該第一運算元與該目的地係為儲存該第二結果資料元件的一單一暫存器。
  14. 如申請專利範圍第9項之方法,其中基於該處理器之一寫入遮罩的一值,該第二結果資料元件被寫入到該目的地。
  15. 如申請專利範圍第9項之方法,其進一步包含:藉由讀取對應於該第一複數個緊縮資料元件的該立即值之一第一位元位置中之一位元值以決定該第一複數個緊縮資料元件為正或負、讀取對應於該第二複數個緊縮資料元件的該立即值之一第二位元位置中的一位元值以決定該第二複數個緊縮資料元件為正或負、以及讀取對應於該第三複數個緊縮資料元件的該立即值之一第三位元位置中的一位元值以決定該第三複數個緊縮資料元件為正或負的該熔合累加電路,來解譯該複數個緊縮資料元件為正或負。
  16. 如申請專利範圍第15項之方法,其進一步包 含:藉由該熔合累加電路,來讀取除了在該第一、第二、以及第三位元位置中之該等位元以外的一組一或多個位元,以決定該等運算元其中至少一者的一暫存器或記憶體位置。
  17. 一種系統,其包含:一記憶體單元,其耦合到經組態以儲存一第一複數個緊縮資料元件的一第一儲存位置;以及一處理器,其耦合到該記憶體單元,該處理器包含:一暫存器檔案單元,其經組態以儲存複數個緊縮資料運算元,其包括用以儲存包含一第一複數個緊縮資料元件之一第一運算元的一第一來源暫存器、用以儲存包含一第二複數個緊縮資料元件之一第二運算元的一第二來源暫存器、以及用以儲存包含一第三複數個緊縮資料元件之一第三運算元的一第三來源暫存器;熔合累加電路,其用以根據一立即值內之一位元位置中的一對應值,解譯該複數個緊縮資料元件為正或負,該熔合累加電路用以將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,該熔合累加電路用以儲存該第二結果資料元件於一目的地中。
  18. 如申請專利範圍第17項之系統,其中該熔合累加電路包含用以解碼一熔合累加指令的一解碼單元以及用 以執行該熔合累加指令的一執行單元。
  19. 如申請專利範圍第18項之系統,其中該解碼單元係用以將一單一熔合累加指令解碼成複數個微運算,以由該執行單元所執行。
  20. 如申請專利範圍第19項之系統,其中具有複數個子電路的該執行單元係用以使用該等微運算,以根據一立即值內之一位元位置中的一對應值來解譯該複數個緊縮資料元件為正或負,將該第一複數個的一對應資料元件加到包含該第二複數個與該第三複數個之對應資料元件之一總和的一第一結果資料元件,以產生一第二結果資料元件,以及用以儲存該第二結果資料元件於一目的地中。
  21. 如申請專利範圍第17項之系統,其中該第一運算元與該目的地係為儲存該第二結果資料元件的一單一暫存器。
  22. 如申請專利範圍第17項之系統,其中基於該處理器之一寫入遮罩暫存器的一值,將該第二結果資料元件寫入到該目的地。
  23. 如申請專利範圍第17項之系統,其中用以解譯該複數個緊縮資料元件為正或負,該熔合累加電路係用以讀取對應於該第一複數個緊縮資料元件的該立即值之一第一位元位置中的一位元值,以決定該第一複數個緊縮資料元件為正或負、用以讀取對應於該第二複數個緊縮資料元件的該立即值之一第二位元位置中的一位元值以決定該第二複數個緊縮資料元件為正或負、以及用以讀取對應於該 第三複數個緊縮資料元件的該立即值之一第三位元位置中的一位元值以決定該第三複數個緊縮資料元件為正或負。
  24. 如申請專利範圍第23項之系統,其中該熔合累加電路係用以進一步讀取除了在該第一、第二、以及第三位元位置中之該等位元以外的一組一或多個位元,以決定該等運算元其中至少一者的一暫存器或記憶體位置。
TW104138531A 2014-12-24 2015-11-20 用於熔合累加指令的設備和方法 TW201643696A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/583,050 US20160188341A1 (en) 2014-12-24 2014-12-24 Apparatus and method for fused add-add instructions

Publications (1)

Publication Number Publication Date
TW201643696A true TW201643696A (zh) 2016-12-16

Family

ID=56151346

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104138531A TW201643696A (zh) 2014-12-24 2015-11-20 用於熔合累加指令的設備和方法

Country Status (7)

Country Link
US (1) US20160188341A1 (zh)
EP (1) EP3238033A4 (zh)
JP (1) JP2018506762A (zh)
KR (1) KR20170099859A (zh)
CN (1) CN107003841B (zh)
TW (1) TW201643696A (zh)
WO (1) WO2016105804A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262721B2 (en) * 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10459726B2 (en) * 2017-11-27 2019-10-29 Advanced Micro Devices, Inc. System and method for store fusion

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6243803B1 (en) * 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US7853634B2 (en) * 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US8239439B2 (en) * 2007-12-13 2012-08-07 International Business Machines Corporation Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
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
US8909690B2 (en) * 2011-12-13 2014-12-09 International Business Machines Corporation Performing arithmetic operations using both large and small floating point values
CN104137053B (zh) * 2011-12-23 2018-06-26 英特尔公司 用于响应于单个指令来执行蝴蝶横向和交叉加法或减法的系统、装置和方法
CN103999037B (zh) * 2011-12-23 2020-03-06 英特尔公司 用于响应于单个指令来执行横向相加或相减的系统、装置和方法
US8626813B1 (en) * 2013-08-12 2014-01-07 Board Of Regents, The University Of Texas System Dual-path fused floating-point two-term dot product unit
CN106030510A (zh) * 2014-03-26 2016-10-12 英特尔公司 三源操作数浮点加法处理器、方法、系统和指令

Also Published As

Publication number Publication date
KR20170099859A (ko) 2017-09-01
EP3238033A4 (en) 2018-07-11
WO2016105804A1 (en) 2016-06-30
CN107003841B (zh) 2021-11-23
JP2018506762A (ja) 2018-03-08
CN107003841A (zh) 2017-08-01
US20160188341A1 (en) 2016-06-30
EP3238033A1 (en) 2017-11-01

Similar Documents

Publication Publication Date Title
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
JP5986688B2 (ja) Sha256アルゴリズムのメッセージスケジューリングのための命令セット
CN107741861B (zh) 用于混洗浮点或整数值的装置和方法
TWI518590B (zh) 多暫存器聚集指令
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI489381B (zh) 多暫存器散布指令
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
JP6635438B2 (ja) ベクトルビット反転およびクロスを実行するための方法および装置
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
TWI502494B (zh) 用以執行絕對差之雙塊總數之方法,製品及裝置
WO2013095581A1 (en) Apparatus and method for sliding window data access
JP6074511B2 (ja) プロセッサ、方法、データプロセッシングシステム、および装置
JP2018500658A (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
JP2018500654A (ja) ベクトルビット反転を実行するための方法および装置
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
JP6835436B2 (ja) マスクをマスク値のベクトルに拡張するための方法および装置
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201643696A (zh) 用於熔合累加指令的設備和方法
WO2013095605A1 (en) Apparatus and method for sliding window data gather
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置