TWI502491B - 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 - Google Patents
用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 Download PDFInfo
- Publication number
- TWI502491B TWI502491B TW101145669A TW101145669A TWI502491B TW I502491 B TWI502491 B TW I502491B TW 101145669 A TW101145669 A TW 101145669A TW 101145669 A TW101145669 A TW 101145669A TW I502491 B TWI502491 B TW I502491B
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- instruction
- value
- bit
- data element
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 25
- 238000004519 manufacturing process Methods 0.000 title claims description 14
- 238000006243 chemical reaction Methods 0.000 title description 24
- 238000003860 storage Methods 0.000 claims description 15
- 238000005538 encapsulation Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 2
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 77
- 238000006073 displacement reaction Methods 0.000 description 43
- 238000010586 diagram Methods 0.000 description 34
- 238000007667 floating Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 19
- 239000000463 material Substances 0.000 description 16
- 235000012431 wafers Nutrition 0.000 description 15
- 238000004891 communication Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000003416 augmentation Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000037452 priming Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
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)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明領域一般係關於電腦處理器結構,並且,更明確地說,係關於當被執行時導致一特定結果之指令。
一指令集,或指令集結構(ISA),是有關程式規劃之電腦結構的部份,並且可包含原始資料型式、指令、暫存器結構、定址模式、記憶體結構、中斷與異常處理、以及外部輸入與輸出(I/O)。此處之指令名稱通常指示巨指令-其是被提供至處理器(或指令轉換器,其轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、語素變形、仿效、或以不同方式轉換一指令為將利用該處理器被處理的一個或多個其他指令)以供執行之指令-如相對於微指令或微運算(micro-op)-其是一處理器之解碼器解碼巨指令的結果。
ISA不同於微結構,其是實作指令集之處理器的內部設計。具有不同微結構之處理器可共用一共用指令
集。例如,Intel®Pentium4處理器、Intel®CoreTM
處理器以及來自實作x86指令集之幾乎相同版本(具有已被添加較新版本的一些擴充功能)之美國加州森尼維耳市先進微裝置公司的處理器,但是具有不同的內部設計。例如,ISA之相同暫存器結構可使用習知的技術以不同方式被實作於不同微結構中,如包含專用實體暫存器、使用一暫存器換名機構之一個或多個動態分配實體暫存器(例如,暫存器混疊列表(RAT)、重排緩衝器(ROB)以及除役暫存器檔案之使用;複數個映製以及一暫存器池之使用)等等。除非不同地被指定,否則暫存器結構、暫存器檔案、以及暫存器之片語於此處被使用以提及其是軟體/程式者可見到的,以及指令指定暫存器之方式。在一特定性是所需之處,形容式的邏輯、結構、或軟體將被使用以指示暫存器結構中之暫存器/檔案,而不同的形容式邏輯將被使用以指定一所給的微結構中之暫存器(例如,實體暫存器、重排緩衝器、除役暫存器、暫存器池)。
一指令集包含一個或多個指令格式。一所給予的指令格式界定各種欄(位元數目、位元位置)以指明,其中包括,被進行之運算碼(opcode)以及在其上被進行運算之運算元。經指令樣型(或子格式)之定義,一些指令格式進一步地被細分。例如,一所給予的指令格式之指令樣型可被界定以具有不同子集的指令格式之欄(所包含的欄一般是於相同順序中,但是至少一些具有不同的位元位置,因為包含較少的欄)或被界定以具有不同地被詮釋之一所給予的
欄。因此,一ISA之各個指令使用一所給予的指令格式被表示(並且,如果被界定,以該指令格式之一所給予的指令樣型),並且包含用以指明運算以及運算元之欄。例如,ADD指令範例具有一特定運算碼以及包含一運算碼欄之指令格式以指定運算碼以及運算元欄而選擇運算元(來源1/目的地以及來源2);並且一指令流中之這ADD指令的事件將具有選擇特定運算元之運算元欄中的特定內容。
科學上、財政上、自動向量化一般用途、RMS(辨識、採掘、以及合成)、以及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨識演算法以及音訊操縱)時常需要於大量資料項目上(被稱為"資料排比")進行相同運算。單一指令複合資料(SIMD)指示一型式指令,其導致一處理器於複合資料項目上執行一運算。SIMD技術尤其適用於可邏輯地分割暫存器中之位元成為一些固定尺度資料元素(其各代表一分別數值)的處理器。例如,256位元暫存器中之位元可被指定作為將於下列分別的位元封裝資料元素上運算的一來源運算元,作為四個分別的64位元封裝資料元素(4字組(Q)尺度資料元素)、八個分別的32位元封裝資料元素(雙字組(D)尺度資料元素)、十六個分別的16位元封裝資料元素(字組(W)尺度資料元素)、或32個分別的8位元資料元素(位元組(B)尺度資料元素)。這資料型式被稱為封裝資料型式或向量資料型式,並且這資料型式之運算元被稱為封裝資料運算元或向量運算元。換言之,一封裝資料項目或向量指示一封裝資料元素之序列,並且一
封裝資料運算元或一向量運算元是一SIMD指令(同時也習知如一封裝資料指令或一向量指令)之來源或目的地運算元。
經由範例,一型式之SIMD指令指定將以垂直形式於二個來源向量運算元上進行的單一向量運算,以產生具有相同尺度,具有相同資料元素數目,以及相同資料元素順序之目的地向量運算元(同時也被稱為結果向量運算元)。來源向量運算元中之資料元素被稱為來源資料元素,而目的地向量運算元中之資料元素是指示目的地或結果資料元素。這些來源向量運算元是具有相同尺度並且包含相同寬度之資料元素,並且因此它們包含相同資料元素數目。於二個來源向量運算元中之相同位元位置中的來源資料元素形成資料元素對(同時也被稱為對應的資料元素;亦即,各個來源運算元之資料元素位置0中的資料元素相對應,各個來源運算元之資料元素位置1中的資料元素相對應,等等)。藉由SIMD指令指定的運算分別地被進行於來源資料元素的這些組對上各者以產生匹配數目之結果資料元素,並且因此各對來源資料元素具有一對應的結果資料元素。因為運算是垂直的以及因為結果向量運算元是相同尺度,具有相同資料元素數目,並且結果資料元素以相同資料元素順序被儲存作為來源向量運算元,該等結果資料元素是於結果向量運算元之相同位元位置,作為於來源向量運算元中之它們對應組對的來源資料元素。除了這範例型式的SIMD指令之外,有多種其他型式的SIMD指令(例
如,其僅具有一個或具有多於二個的來源向量運算元,其以水平形式運算,其產生一不同尺度之結果向量運算元,其具有一不同尺度的資料元素,及/或其具有一不同的資料元素順序)。應了解,目的地向量運算元(或目的地運算元)名稱被界定作為進行藉由一指令所指定的運算之直接結果,包含儲存該目的地運算元在一位置(其是一暫存器或在利用該指令所指定的一記憶體位址),因而其可利用另一指令被存取作為一來源運算元(藉由利用另一指令之相同位置的指定)。
SIMD技術,例如,被Intel®CoreTM
處理器所採用者,具有包含x86、MMXTM
、流動SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、以及SSE4.2指令的一指令集,能於應用性能形成顯著改進。另外一組之SIMD擴充,涉及高級向量擴充(AVX)(AVX1以及AVX2)以及使用向量擴充(VEX)編碼機構,已被發表及/或被頒布(例如,參看2011年10月之Intel®64以及IA-32結構軟體開發者手冊;以及參看2011年6月之Intel®先進向量擴充功能程式參考)。
依據本發明之一實施例,係特地提出一種回應一表列索引值成為一遮罩值指令之一單一向量封裝轉換而於一電腦處理器中將一表列索引值轉換成為一遮罩值之方法,其中該遮罩值指令包含一目的地寫入遮罩暫存器運算元、一來源向量暫存器運算元、以及一運算碼,該方法包括下列步驟:執行一表列索引值成為一遮罩值指令之該單一向
量封裝轉換以決定被儲存於該來源向量暫存器之各個封裝資料元素位置中的一數值;以及儲存一個1進入對應至所決定數值之該目的地寫入遮罩暫存器的位元位置。
101‧‧‧來源向量暫存器
103‧‧‧寫入遮罩暫存器
201-209‧‧‧指令執行步驟
301-311‧‧‧指令執行步驟
602‧‧‧VEX字首
605‧‧‧REX欄
625‧‧‧字首編碼欄
630‧‧‧真實運算碼欄
640‧‧‧Mod R/M位元組
642‧‧‧基底運算欄
644‧‧‧暫存器索引欄
646‧‧‧R/M欄
650‧‧‧SIB位元組
662‧‧‧位移欄
664‧‧‧W欄
668‧‧‧VEX.L尺度欄
672‧‧‧即時欄
674‧‧‧全運算碼欄
700‧‧‧一般向量親和性指令格式
705‧‧‧非記憶體存取
710‧‧‧全捨入控制型式運算
712‧‧‧部份捨入控制型式運算
715‧‧‧資料轉換型式運算
717‧‧‧v尺度型式運算
720‧‧‧記憶體存取
725‧‧‧暫存記憶體存取
727‧‧‧寫入遮罩控制
730‧‧‧非暫存記憶體存取
740‧‧‧格式欄
742‧‧‧基底運算欄
744‧‧‧暫存器索引欄
746‧‧‧修飾符欄
750‧‧‧捨入運算控制欄
752‧‧‧α欄
752B‧‧‧逐出示意欄
752C‧‧‧寫入遮罩控制欄
754‧‧‧β欄
754A‧‧‧捨入控制欄
754B‧‧‧資料轉換欄
754C‧‧‧資料操縱欄
756‧‧‧浮動點異常欄
757A‧‧‧RL欄
757B‧‧‧廣播欄
758‧‧‧捨入運算控制欄
759A‧‧‧捨入運算欄
759B‧‧‧向量長度欄
760‧‧‧尺度欄
762A‧‧‧位移欄
762B‧‧‧位移係數欄
764‧‧‧資料元素寬度欄
768‧‧‧類別欄
770‧‧‧寫入遮罩欄
772‧‧‧即時欄
774‧‧‧完全運算碼欄
800‧‧‧特定向量親和性指令格式
802‧‧‧EVEX字首
820‧‧‧EVEX.vvvv欄
815‧‧‧運算碼映製欄
825‧‧‧字首編碼欄
830‧‧‧真實運算碼欄
840‧‧‧MODR/M欄
842‧‧‧MOD欄
844‧‧‧Reg欄
846‧‧‧R/M欄
900‧‧‧暫存器結構
910‧‧‧向量暫存器
915‧‧‧寫入遮罩暫存器
925‧‧‧目的暫存器
945‧‧‧暫存器檔案
950‧‧‧暫存器檔案
1000‧‧‧處理器管線
1002‧‧‧擷取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧分配級
1010‧‧‧換名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧回寫/記憶體寫入級
1022‧‧‧外處理級
1024‧‧‧提交級
1030‧‧‧前端點單元
1032‧‧‧分支預測單元
1036‧‧‧指令轉譯後備緩衝器
1038‧‧‧指令擷取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧換名/分配器單元
1054‧‧‧除役單元
1056‧‧‧排程器單元
1058‧‧‧實際暫存器檔案單元
1060‧‧‧執行群集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧位準2快取單元
1090‧‧‧處理器核心
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧位準2快取
1106‧‧‧L1快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌和單元
1122A-B‧‧‧數值轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧寬度ALU
1200‧‧‧處理器
1202A‧‧‧核心
1206‧‧‧共用快取單元
1208‧‧‧特殊用途邏輯
1210‧‧‧系統媒介單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310、1315‧‧‧處理器
1320‧‧‧控制器中樞
1340‧‧‧記憶體
1345‧‧‧協同處理器
1350‧‧‧輸入/輸出中樞
1360‧‧‧輸入/輸出裝置
1390‧‧‧圖形記憶體控制器中樞
1395‧‧‧連接
1400‧‧‧多處理器系統
1414‧‧‧I/O裝置
1415‧‧‧處理器
1416‧‧‧匯流排
1418‧‧‧匯流排橋
1420‧‧‧匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音訊I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧指令/數碼以及資料
1432、1434‧‧‧記憶體
1438‧‧‧協同處理器
1439‧‧‧高性能界面
1450‧‧‧點對點互連
1452、1454‧‧‧P-P界面
1470、1480‧‧‧處理器
1472、1482‧‧‧整合記憶體控制器單元
1476、1478‧‧‧點對點界面
1486、1488‧‧‧P-P界面
1476、1494、1486、1498
‧‧‧點對點界面電路
1490‧‧‧晶片組
1496‧‧‧界面
1500‧‧‧系統
1514‧‧‧I/O裝置
1515‧‧‧遺留I/O裝置
1600‧‧‧晶片系統
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧協同處理器
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧外部顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制指令碼
1710‧‧‧指令集二進制指令碼
1712‧‧‧指令轉換器
1714‧‧‧x86指令集核心
1716‧‧‧x86指令集核心
本發明是藉由範例圖解地被說明並且不受限定於附圖,於附圖中相同之參考號碼指示相似元件,並且於其中:第1圖是圖解地說明一VPMOVINDEX2M指令範例之運算的範例。
第2圖是圖解地說明於一處理器中之VPMOVINDEX2M指令的使用之實施例。
第3(A)圖是圖解地說明用以處理VPMOVINDEX2M指令之方法的實施例。
第3(B)圖是圖解地說明用以處理VPMOVINDEX2M指令之方法的另一實施例。
第4圖是圖解地說明這指令的假性碼之實作範例。
第5圖是依據本發明一實施例圖解地說明在一個作用位元向量寫入遮罩元件數目以及向量尺度與資料元素尺度之間的相關性。
第6A圖是圖解地說明一範例AVX指令格式。
第6B圖是圖解地說明自第6A圖之哪些欄而組成一完全運算碼欄以及一基底運算欄。
第6C圖是圖解地說明自第6A圖之哪些欄而組成
一暫存器索引欄。
第7A-7B圖是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其指令樣版之方塊圖。
第8A-8D圖是圖解地說明依據本發明實施例之特定向量親和性指令格式範例的方塊圖。
第9圖是依據本發明一實施例之暫存器結構的方塊圖。
第10A圖是圖解地說明依據本發明實施例之有序管線範例以及暫存器換名、無序發出/執行管線範例的方塊圖。
第10B圖是圖解地說明依據本發明實施例之被包含於處理器中的有序結構核心以及暫存器換名、無序發出/執行結構核心範例的實施例之方塊圖。
第11A-11B圖是圖解地說明有序結構核心更多特定範例的方塊圖,該核心將是一晶片中許多邏輯區塊(包含相同型式及/或不同型式的其他核心)之一者。
第12圖是依據本發明實施例之一處理器的方塊圖,該處理器可具有多於一個核心,可具有一整合記憶體控制器以及可具有整合圖形。
第13圖是依據本發明一實施例之系統範例的方塊圖。
第14圖是依據本發明一實施例之第一更特定系統範例的方塊圖。
第15圖是依據本發明一實施例之第二更特定系
統範例的方塊圖
第16圖是依據本發明一實施例之晶片系統(SoC)的方塊圖。
第17圖是依據本發明實施例之對照使用一軟體指令轉換器以轉換一來源指令集之二進制指令為目標指令集之二進制的方塊圖。
於下面的說明中,許多特定細節被提出。但是,應了解,本發明實施例可被實施而不必這些特定細節。於其他實例中,習知的電路、結構以及技術不詳細地被展示,以免混淆這說明之了解。
說明中提及之“一實施例”、“一個實施例”、“一實施範例”等等,指示所述之實施例可包含一特定的特點、結構、或特性,但是每個實施例可以不必定得包含該特定的特點、結構、或特性。此外,此等片語不必定得是關連於相同實施例。進一步地,當一特定的特點、結構、或特性關連於一實施例被說明時,不論其是否明確地被說明,其被認為是在熟習本技術者所了解的知識之內,以使得此等特點、結構、或特性關連於其他實施例發生作用。
概觀
在下面說明中,有一些項目可能需要在說明指令集結構中之這特定指令的運算之前被說明。一個這樣的項目被稱為“寫入遮罩暫存器”,其一般被使用以闡述有條件
地控制逐個元素計算運算之運算元(在下面,遮罩暫存器名詞同時也可被使用並且其指示一寫入遮罩暫存器,例如,在下面討論之“k”暫存器)。如在下面之使用,一寫入遮罩暫存器儲存複數個位元(16、32、64,等等),於其中寫入遮罩暫存器的各個作用位元在SIMD處理期間管理向量暫存器之封裝資料元素的運算/更動。一般,有多於一個的寫入遮罩暫存器可供處理器核心所使用。
指令集結構包含至少一些SIMD指令,其指定向量運算以及其具有自這些向量暫存器以選擇來源暫存器及/或目的地暫存器之欄(一SIMD指令範例可指定將在一個或多個向量暫存器之內容上被進行的一向量運算,並且該向量運算結果被儲存於該等向量暫存器之一者中)。本發明不同實施例可具有不同尺度的向量暫存器並且支援更多/更少/不同尺度的資料元素。
利用SIMD指令所指定之多位元資料元素(例如,位元組、字組、雙字組、四字組)尺度決定在向量暫存器內之“資料元素位置”的位元位置,並且向量運算元尺度決定資料元素數目。一封裝資料元素指示被儲存於一特定位置中的資料。換言之,依據目的地運算元中之資料元素尺度以及目的地運算元尺度(目的地運算元中之位元總數)(或換句話說,依據目的地運算元尺度以及在目的地運算元內之資料元素數目),在產生的向量運算元內之多位元資料元素位置的位元位置改變(例如,如果供用於產生的向量運算元之目的地是向量暫存器,則在目的地向量暫存器內
之多位元資料元素位置的位元位置改變)。例如,多位元資料元素之位元位置,在32位元資料元素上運算的一向量運算(資料元素位置0佔用位元位置31:0,資料元素位置1佔用位元位置63:32,等等)以及在64位元資料元素上運算的向量運算(資料元素位置0佔用位元位置63:0,資料元素位置1佔用位元位置127:64,等等)之間是不同的。
另外地,依據本發明一實施例,在一作用位元向量寫入遮罩元件數目以及向量尺度與資料元素尺度之間有一相關性,如於第5圖之展示。128位元、256位元、以及512位元之向量尺度被展示,雖然其他寬度也是可能的。8位元位元組(B)、16位元字組(W)、32位元雙字組(D)或單一精確性浮動點、以及64位元四字組(Q)或雙精確性浮動點之資料元素尺度被考慮,雖然其他寬度也是可能的。如所展示,當向量尺度是128位元時,於向量之資料元素尺度是8位元時則16位元可被使用於遮罩,於向量之資料元素尺度是16位元時則8位元可被使用於遮罩,於向量之資料元素尺度是32位元時則4位元可被使用於遮罩,並且於向量之資料元素尺度是64位元時,2位元可被使用於遮罩。當向量尺度是256位元時,於封裝資料元素寬度是8位元時則32位元可被使用於遮罩,於向量之資料元素尺度是16位元時則16位元可被使用於遮罩,於向量之資料元素尺度是32位元時則8位元可被使用於遮罩,並且於向量之資料元素尺度是64位元時則4位元可被使用於遮罩。當向量尺度是512位元時,於向量之資料元素尺度是8位元時則64位元可被使用於遮罩,於向量
之資料元素尺度是16位元時則32位元可被使用於遮罩,於向量之資料元素尺度是32位元時則16位元可被使用於遮罩,並且於向量之資料元素尺度是64位元時則8位元可被使用於遮罩。
取決於向量尺度以及資料元素尺度之組合,所有64位元,或僅該等64位元之一子集,可被使用作為寫入遮罩。通常,當一單一、逐個元素遮罩控制位元被使用時,被使用於遮罩之向量寫入遮罩暫存器中的位元數目(作用位元)是等於向量尺度之位元數除以向量資料元素尺度之位元數。
如上面所提及,寫入遮罩暫存器包含遮罩位元,其對應至向量暫存器(或記憶體位置)中之元素,並且當運算將被進行時則追蹤該等元素。因此,其需要具有共同運算,其複製如供用於向量暫存器之相仿性能在這些遮罩位元上,並且大體上允許調整在寫入遮罩暫存器內的這些遮罩位元。
於某些應用中,其是有益於將被儲存於向量暫存器或記憶體中的一表列索引值轉換成為寫入遮罩暫存器中之遮罩值。對於一組數值之一條件表示的結果通常被儲存作為一索引列表,其中該條件是為真。轉換遮罩值中的這些數值允許其作為一闡述之使用。
下面是自一向量暫存器之一表列索引值轉換成為一寫入遮罩暫存器(“VPMOVINDEX2M”)指令而通常被稱為向量封裝轉換的指令之實施例以及系統、結構、指令
格式等等之實施例,其可被使用以執行此一指令,其是有益於許多不同領域。VPMOVINDEX2M指令之執行導致一遮罩值儲存進入一寫入遮罩暫存器,其中該遮罩值是被儲存於向量暫存器或記憶體中之任一者的一表列索引值之轉換。尤其是,被儲存於來源向量暫存器之一封裝資料元素位置中的各數值對應至將利用這指令之執行而被設定的寫入遮罩暫存器中之一位元位置。
第1圖是圖解地說明一範例VPMOVINDEX2M指令的運算之範例的說明。於這說明圖中,來源向量暫存器101中有8個封裝資料元素以及寫入遮罩暫存器103有16位元是可供使用的。但是,這僅是一範例。封裝資料元素之尺度以及數目可以是不同的。另外地,寫入遮罩暫存器可以是不同的尺度(例如,64位元)。
於這範例中,來源具有可供使用於位元遮罩之具有七個資料元素的數值(在資料元素位置7之資料是較大於16並且因此不能被使用作為一遮罩位元識別符)。這些資料元素之這些數值(此處被展示作為十進位數值)指示在目的地寫入遮罩暫存器中哪一位元位置被設定為“1”。例如,來源向量暫存器資料元素位置1(亦即,SRC[3])是一個“3”並且因此目的地寫入遮罩暫存器之位元位置3(亦即,DST[3])被設定為“1”。
範例格式
這指令之範例格式是“VPMOVINDEX2M{B/W/D/Q}K1,ZMM1/m512”,其中運
算元K1是目的地寫入遮罩暫存器(例如,16位元或64位元暫存器)並且來源可以是ZMM1或m512之任一者,其中ZMM1是一來源向量暫存器(例如,128、256、512位元暫存器等等)而m512是一記憶體位置,並且VPMOVINDEX2M{B/W/D/Q}是該指令之運算碼。來源暫存器中之資料元素尺度,例如,可經由資料粒度位元之一指示的使用而於指令之“字首”中被界定。於多數實施例中,這位元將指示各資料元素是32或64位元,但是,其他變化可被使用。於其他實施例中,資料元素尺度利用運算碼本身被界定。例如,{B/W/D/Q}識別符可分別地指示一位元組、字組、雙字組、或四字組。
執行方法範例
第2圖是圖解地說明於一處理器中使用一VPMOVINDEX2M指令之實施例。在201,具有一來源運算元(向量暫存器或記憶體位置之任一者)以及目的地寫入遮罩暫存器運算元之一VPMOVINDEX2M指令被擷取。
在203,該VPMOVINDEX2M指令利用解碼邏輯被解碼。依據該指令之格式,在這級有多種資料可被詮釋,例如,是否有一資料轉換,哪一些暫存器被寫入至以及取得,哪一些記憶體位址用以存取等等。
在205,來源運算元數值被取得/讀取。例如,該來源暫存器被讀取。如果來源運算元是一記憶體運算元,則關聯於運算元之資料元素被取得。於一些實施例中,來自記憶體之資料元素先前於執行級而被儲存進一暫時暫存
器內。這執行級也可包含邏輯地安排該來源暫存器進入複數個資料線道中,其中各資料線道之尺度是目的地暫存器之資料元素尺度。
在207,VPMOVINDEX2M指令(或包括此一指令之運算,例如,微運算)藉由執行資源(例如,一個或多個功能單元)被執行以決定被儲存於來源暫存器/記憶體位置之各個封裝資料元素位置中的一數值。這些數值界定寫入遮罩暫存器的那個位元位置是將被設定為“1”(或指示一遮罩位元者)。換言之,這些數值被使用以表明寫入遮罩暫存器中之位置。
在209,所決定的位元位置相應地被寫入(亦即,被設定為1)。雖然207以及209已分別地被說明,於一些實施例中,它們如指令執行之一部份而一起被進行。
第3(A)圖是圖解地說明用以處理一VPMOVINDEX2M指令之方法的實施例。於這實施例中,假設一些,如果不是所有,運算201-205已早先地被進行,但是,為了不與下面呈現的詳細說明混淆,它們不被展示。例如,擷取以及解碼不被展示,而運算元取得也不被展示。
在301,於一些實施例中,目的地寫入遮罩暫存器的所有位元被設定為“0”。此一動作可協助確保“舊的”資料不保留在目的地暫存器中。
在303,對於來源之各個封裝資料元素位置,平行地,決定資料元素之一數值(例如,一個十進位數值)。
在305,一個“1”被寫入,平行地,在目的地寫入
遮罩暫存器的各個位元位置中,其對應至被發現於來源之一封裝資料元素位置中的一數值。
第3(B)圖是圖解地說明用以處理一VPMOVINDEX2M指令之方法的實施例。於這實施例中,假設一些,如果不是所有,運算201-205已早先地被進行,但是,為了不與下面呈現之詳細說明混淆,它們不被展示。例如,擷取以及解碼不被展示,而運算元取得也不被展示。
在301,於一些實施例中,目的地寫入遮罩暫存器的所有位元被設定為“0”。此一動作可協助確保“舊的”資料不保留在目的地暫存器中。
在307,來源之一最低有效封裝資料元素位置的數值被決定。例如,於第1圖中這數值將是“1”。
在309,一個“1”被寫進入一位元位置,其對應至在307所決定之目的地寫入遮罩暫存器的數值。
依據該實施例,在310,決定是否所有資料元素位置可能已在309之後被評估。如果是,則方法被結束。
如果否,則在311決定來源之下一個最低有效封裝資料元素位置之數值。例如,於第1圖中,這SRC[1]被決定並且將是“3”。如果310之決定不形成,這步驟也發生。
在313,決定這數值是否較大於目的地遮罩暫存器位元位置之數目。如果是,則無寫入發生並且於一些實施例中,一異常被拋出。於一些實施例中,一程式可見異常被拋出。
如果否,在311,一個“1”被寫進入一位元位置,
其對應至在309所決定的目的地暫存器之數值。
當然,上面之變化被考慮。例如,於一些實施例中,該方法開始在最主要的資料元素位置並且以其之方式返回地工作。
第4圖是圖解地說明這指令的假性碼實作之範例。
指令格式範例
於此處說明之指令的實施例可以不同格式被實施。例如,此處說明之指令可以被實施如VEX、一般向量親和性、或其他格式。VEX以及一般向量親和性格式之詳細說明在下面被討論。另外地,範例系統、結構、以及管線在下面詳細地被說明。指令實施例可在此等系統、結構、以及管線上被執行,但其是不受限定於那些細節。
VEX指令格式
VEX編碼允許指令具有多於二個運算元,並且允許SIMD向量暫存器將是較長於128位元。VEX字首之使用提供三個運算元(或更多)的排列語法。例如,先前的二個運算元指令進行運算,例如,A=A+B,其重疊寫入一來源運算元。VEX字首之使用引動運算元進行非破壞性運算,例如A=B+C。
第6A圖是圖解地說明AVX指令格式範例,其包含VEX字首602、真實運算碼欄630、Mod R/M位元組640、SIB位元組650、位移欄662以及IMM8 672。第6B圖是圖解地說明一些欄,其是自第6A圖組成的一完全運算碼欄674
以及一基底運算欄642。第6C圖是圖解地說明一些欄,其是自第6A圖組成的一暫存器索引欄644。
VEX字首(位元組0-2)602以一個三位元組形式被編碼。第一位元組是格式欄640(VEX位元組0,位元[7:0]),其包含一明確的C4位元組數值(被使用以識別C4指令格式的唯一數值)。第二-第三位元組(VEX位元組1-2)包含提供特定能力的一些位元欄。明確地說,REX欄605(VEX位元組1,位元[7-5])包含一VEX.R位元欄(VEX位元組1,位元[7]-R),VEX.X位元欄(VEX位元組1,位元[6]-X)以及VEX.B位元欄(VEX位元組1,位元[5]-B)。指令之其他欄編碼較低的三位元暫存器索引,如本技術所習知(rrr、xxx、以及bbb),因而Rrrr,Xxxx,以及Bbbb可藉由增加VEX.R、VEX.X、以及VEX.B而被形成。運算碼映製欄615(VEX位元組1,位元[4:0]-mmmmm)包含編碼一隱含之引導運算碼位元組之內容。W欄664(VEX位元組2,位元[7]-W)-是利用標誌VEX.W被表示,並且依據指令而提供不同的功能。該VEX.vvvv620(VEX位元組2,位元[6:3]-vvvv)之作用可包含下面各者:1)VEX.vvvv編碼以倒反(1之補數)形式被指定之第一來源暫存器運算元,並且是有效於具有2個或更多來源運算元之指令;2)VEX.vvvv編碼目的地暫存器運算元,以對於某些向量位移之1補數形式被指定;或3)VEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。如果VEX.L 668尺度欄(VEX位元組2,位元[2]-L)=0,其指示128位元向量;如果VEX.L=1,其指示256
位元向量。字首編碼欄625(VEX位元組2,位元[1:0]-pp)提供用於基底運算欄之另外的位元。
真實運算碼欄630(位元組3)也是習知如運算碼位元組。運算碼之部份被指定於這欄中。
MOD R/M欄640(位元組4)包含MOD欄642(位元[7-6])、Reg欄644(位元[5-3])、以及R/M欄646(位元[2-0])。Reg欄644之作用可包含下面各者:編碼目的地暫存器運算元或來源暫存器運算元之任一者(Rrrr之rrr),或被視為一運算碼延伸並且不被使用於編碼任何指令運算元。R/M欄646之作用可包含下面各者:參考一記憶體位址而編碼指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元之任一者。
尺度、索引、基底(SIB)-尺度欄650(位元組5)內容包含SS652(位元[7-6]),其被使用於記憶體位址產生。SIB.xxx 654(位元[5-3])以及SIB.bbb 656(位元[2-0])之內容已關連於暫存器索引Xxxx以及Bbbb先前地被提及。
位移欄662以及即時欄(IMM8)672包含位址資料。
一般向量親和性指令格式
一向量親和性指令格式是是適用於向量指令之指令格式(例如,有某些欄特定於向量運算)。雖然實施例被說明,於其中向量以及尺度運算兩者皆由向量親和性指令格式被支援,另外的實施例則僅使用向量親和性指令格式之向量運算。
第7A-7B圖是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其指令樣版之方塊圖。第7A圖是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其類別A指令樣版的方塊圖;而第7B圖則是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其類別B指令樣版的方塊圖。明確地說,一般向量親和性指令格式700是用於界定類別A以及類別B指令樣版,其兩者皆包含非記憶體存取705指令樣版以及記憶體存取720指令樣版。於向量親和性指令格式文脈中之“一般”用詞指示該指令格式不被束縛於任何特定指令集。
雖然本發明實施例將被說明,於其中向量親和性指令格式支援下面各者:具有32位元(4位元組)之一64位元組向量運算元長度(或尺度)或64位元(8位元組)資料元素寬度(或尺度)(並且因此,一64位元組向量包含16雙字組尺度元素或另外地,8四字組尺度元素);具有16位元(2位元組)之一64位元組向量運算元長度(或尺度)或8位元(1位元組)資料元素寬度(或尺度);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)之一32位元組向量運算元長度(或尺度)、或8位元(1位元組)資料元素寬度(或尺度);以及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)之一16位元組向量運算元長度(或尺度),或8位元(1位元組)資料元素寬度(或尺度);另外的實施例可支援具有較多、較少位元之較多、較少及/或不同的向量運算元尺度(例如,256位元組向量運算元),或不同的資料元素寬度(例如,128位
元(16位元組)資料元素寬度)。
第7A圖中之類別A指令樣版包含:1)在非記憶體存取705指令樣版之內,展示一非記憶體存取、全捨入控制型式運算710指令樣版以及一非記憶體存取、資料轉換型式運算715指令樣版;以及2)在記憶體存取720指令樣版之內,展示一記憶體存取、暫存725指令樣版以及一記憶體存取、非暫存730指令樣版。第7B圖中之類別B指令樣版包含:1)在非記憶體存取705指令樣版之內,展示一非記憶體存取、寫入遮罩控制、部份捨入控制型式運算712指令樣版以及一非記憶體存取、寫入遮罩控制、v尺度型式運算717指令樣版;以及2)在記憶體存取720指令樣版之內,展示一記憶體存取、寫入遮罩控制727指令樣版。
一般向量親和性指令格式700包含第7A-7B圖中展示之順序而在下面被列表之其它欄。
格式欄740-於這欄中一特定數值(一指令格式識別符數值)唯一地辨識向量親和性指令格式,以及因此於指令流中向量親和性指令格式之指令的出現。就此而論,這欄是選擇性的,對於僅具有一般向量親和性指令格式之一指令集的意義而言,其不是需要的。
基底運算欄742-其之內容識別不同的基底運算。
暫存器索引欄744-其之內容,直接地或經由位址產生,而指定來源以及目的地運算元位置,它們是在暫存器中或在記憶體中。這些包含足量的位元數以自一
PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然於一實施例中,N可以是高至三個來源以及一個目的地暫存器,另外的實施例可支援更多或較少來源以及目的地暫存器(例如,可支援高至二個來源,這些來源之其中一者同時也作用如同目的地,可支援高至三個來源,這些來源之其中一者同時也作用如同目的地,可支援高至二個來源以及一個目的地)。
修飾符欄746-其之內容識別在一般向量指令格式中指定記憶體存取與那些不會者之指令之事件;亦即,在非記憶體存取705指令樣版以及記憶體存取720指令樣版之間。記憶體存取操作讀取及/或寫入至記憶體階系(於一些情況中,使用暫存器中之數值以指明來源及/或目的地位址),而非記憶體存取操作則不讀取及/或寫入至記憶體階系(例如,來源以及目的地是暫存器)。雖然於一實施例中,這欄同時也在三個不同的方式之間選擇以進行記憶體位址計算,另外的實施例可以支援較多、較少,或以不同的方式進行記憶體位址計算。
擴增運算欄750-其之內容識別,除了基底運算之外,多種不同運算的那一個將被進行。這欄是上下文相關。於本發明一實施例中,這欄被分離成為一類別欄768、一α(alpha)欄752、以及一β(beta)欄754。擴增運算欄750允許共通族群的運算以一單一指令而不是2、3、或4個指令被進行。
尺度欄760-其之內容允許對於記憶體位址產生
之索引欄的內容之尺度調整(例如,對於使用2scale
*索引+基底之位址產生)。
位移欄762A-其之內容被使用作為記憶體位址產生之部份(例如,對於使用2scale
*索引+基底+位移之位址產生)。
位移係數欄762B(注意到,直接地在位移係數欄762B之上的位移欄762A之並置指示一者或另一者被使用)-其之內容被使用作為位址產生之部份;其指定將利用記憶體存取之尺度(N)被尺度調整的一位移係數-其中N是記憶體存取中之位元組數目(例如,對於使用2scale
*索引+基底+尺度調整的位移之位址產生)。多餘的低階位元被忽略,並且因此,位移係數欄之內容被乘以記憶體運算元總尺度(N),以便產生將被使用於計算一有效位址中的最後位移。N數值依據完全運算碼欄774(稍後被說明)以及資料操縱欄754C在執行期間利用處理器硬體被決定。位移欄762A以及位移係數欄762B,就它們不被使用於非記憶體存取705指令樣版中及/或不同的實施例可僅實作二者中之一者或無一者之意義而言,是有選擇性的。
資料元素寬度欄764-其之內容識別一些資料元素寬度之那一個是將被使用(於一些實施例中,被使用於所有的指令;於其他實施例中,僅被使用於一些指令)。就如果僅一個資料元素寬度被支援及/或資料元素寬度使用運算碼的一些方面被支援,則其不是所需之意義而言,這欄是有選擇性的。
寫入遮罩欄770-其之內容控制,依據每一資料元素位置,目的地向量運算元中之資料元素位置是否反映基底運算以及擴增運算之結果。類別A指令樣版支援合併寫入遮罩,而類別B指令樣版則支援合併以及歸零寫入遮罩兩者。當合併時,向量遮罩允許目的地中之任何元素組被保護免於在任何運算元的執行期間(利用基底運算以及擴增運算被指定)之更新;於另一實施例中,保留所對應的遮罩位元具有一個0之目的地各元素的舊數值。相對地,當歸零時,在任何運算執行期間(藉由基底運算以及該擴增運算被指定),向量遮罩允許任何目的地中之任何元素組被歸零;於一實施例中,當所對應的遮罩位元具有一個0數值時,目的地之一元素被設定為0。這功能性之一子集是控制被進行之運算的向量長度之能力(亦即,被修改之元素的跨度,自第一至最後一個);但是,對於連貫地被修改的元素,其不是必需的。因此,寫入遮罩欄770允許部份的向量運算,包含負載、儲存、算術、邏輯運算,等等。雖然本發明實施例被說明,於其中寫入遮罩欄770之內容選擇包含將被使用之寫入遮罩的一些寫入遮罩暫存器之一者(並且因此寫入遮罩欄770之內容間接地辨識將被進行之遮罩),另外的實施例替換性或另外地允許遮罩寫入欄770之內容直接地指定將被進行之遮罩。
即時欄772-其之內容允許一即時之指定。就其是不出現於不支援即時的一般向量親和性格式之實作例中以及其是不出現於不使用一即時的指令中之意義而言,這
欄是有選擇性的。
類別欄768-其之內容在不同類別的指令之間識別。參考第7A-B圖,這欄之內容在類別A以及類別B指令之間選擇。於第7A-B圖中,圓形角落之正方形被使用以指示一特定數值是呈現於一欄中(例如,分別地供用於第7A-B圖中之類別欄768的類別A 768A以及類別B 768B)。
類別A之指令樣版
於類別A之非記憶體存取705指令樣版的情況中,α欄752被詮釋如一RS欄752A,其內容識別將被進行之不同的擴增運算型式之一者(例如,捨入752A.1以及資料轉換752A.2對於非記憶體存取、捨入型式運算710以及非記憶體存取、資料轉換型式運算715指令樣版分別地被指定),而β欄754識別將被進行之指定型式的運算。於非記憶體存取705指令樣版中,尺度欄760、位移欄762A、以及位移尺度欄762B是不出現。
非記憶體存取指令樣版-全捨入控制型式運算
於非記憶體存取完全捨入控制型式運算710指令樣版中,β欄754被詮釋如一捨入控制欄754A,其之內容提供靜態捨入。雖然於所說明的本發明實施例中,捨入控制欄754A包含一壓制所有浮動點異常(SAE)欄756以及一捨入運算控制欄758,另外的實施例可支援可編碼這兩個概念進入相同欄或僅具有這些概念/欄的一個或另一者(例如,可僅具有捨入運算控制欄758)。
SAE欄756-其之內容識別是否使異常事件報告
失效;當SAE欄756之內容指示抑制被引動時,一所給予的指令不報告任何類型之浮動點異常旗標並且不提出任何浮動點異常處理器。
捨入運算控制欄758-其之內容識別進行捨入運算族群之哪一者(例如,向上捨入、向下捨入、朝向零捨入以及捨入至最接近處)。因此,捨入運算控制欄758依據每指令而允許捨入模式之改變。於本發明一實施例中,其中一處理器包含用以指明捨入模式之一控制暫存器,捨入運算控制欄750的內容超控該暫存器數值。
非記憶體存取指令樣版-資料轉換型式運算
於非記憶體存取資料轉換型式運算715指令樣版中,β欄754被詮釋如一資料轉換欄754B,其之內容識別一些資料轉換之哪一者(例如,沒有資料轉換、拌和、廣播)將被進行。
於類別A之記憶體存取720指令樣版的情況中,α欄752被詮釋如一逐出示意欄752B,其之內容識別逐出示意之哪一者將被使用(於第7A圖中,暫時752B.1以及非暫時752B.2分別地對於記憶體存取、暫存725指令樣版以及記憶體存取、非暫存730指令樣版而被指定),而β欄754被詮釋如一資料操縱欄754C,其之內容識別一些資料操縱運算(也是習知為原始碼)之哪一者將被進行(例如,沒有操縱;廣播;一來源之上轉換;以及一目的地之下轉換)。記憶體存取720指令樣版包含尺度欄760,並且可選擇地包含位移欄762A或位移尺度欄762B。
向量記憶體指令藉由轉換支援,而進行來自記憶體之向量負載以及至記憶體之向量儲存器。如藉由正規之向量指令,向量記憶體指令藉由實際上利用被選擇作為寫入遮罩之向量遮罩內容所被指定之被轉移的元素,而以資料元素類似形式轉移資料自/至記憶體。
記憶體存取指令樣版-暫時
暫時資料是很可能將很快再被使用而充分得益於快取之資料。但是,這是一示意,並且不同的處理器可以依不同方式而實作,包含完全地無視於該示意。
記憶體存取指令樣版-非暫時
非暫時資料是不可能得益於第一位準快取中快取而充分快再被使用的資料並且將被給予逐出的優先序。但是,這是一示意,並且不同的處理器可以不同方式實作,包含完全地忽略該示意。
類別B之指令樣版
於類別B之指令樣版的此情況中,該α欄752被詮釋如一寫入遮罩控制(Z)欄752C,其之內容識別利用寫入遮罩欄770所控制的寫入遮罩是否應該是一合併或一歸零。
於類別B之非記憶體存取705指令樣版的情況中,部份β欄754被詮釋如一RL欄757A,其之內容識別不同擴增運算型式之哪一者將被進行(例如,捨入757A.1以及向量長度(VSIZE)757A.2,其分別地被指定以供用於非記憶體存取、寫入遮罩控制、部份的捨入控制型式運算712指令樣版以及非記憶體存取、寫入遮罩控制、VSIZE型式運算
717指令樣版),而β欄754之其餘部份則識別將被進行之其指定型式的運算。於非記憶體存取705指令樣版中,尺度欄760、位移欄762A、以及位移尺度欄762B是不出現。
於非記憶體存取、寫入遮罩控制、部份捨入控制型式運算710指令樣版中,β欄754之其餘部份被詮釋如捨入運算欄759A並且異常事件報告不被引動(一所給予的指令不報告任何類型之浮動點異常旗標並且不提出任何浮動點異常處理器)。
捨入運算控制欄759A-正如捨入運算控制欄758,其之內容識別捨入運算族群之哪一者(例如,向上捨入、向下捨入、朝向零捨入以及捨入至最近者)被進行。因此,捨入運算控制欄759A依據每個指令允許捨入模式之改變。於本發明一實施例中,其中一處理器包含用以指明捨入模式之一控制暫存器,捨入運算控制欄750之內容超控暫存器數值。
於非記憶體存取、寫入遮罩控制、VSIZE型式運算717指令樣版中,β欄754之剩餘部份被詮釋如一向量長度欄759B,其之內容識別一些資料向量長度之哪一者將被進行(例如,128、256、或512位元組)。
於類別B之記憶體存取720指令樣版的情況中,部份β欄754被詮釋如廣播欄757B,其之內容識別廣播型式資料操縱運算是否是將被進行,而β欄754之剩餘部份被詮釋如向量長度欄759B。記憶體存取720指令樣版包含尺度欄760、以及可選擇之位移欄762A或位移尺度欄762B。
關於一般向量親和性指令格式700,一完全運算碼欄774被展示而包含格式欄740、基底運算欄742、以及資料元素寬度欄764。雖然一實施例被展示,其中完全運算碼欄774包含所有的這些欄,於不支援它們所有者之實施例中,該完全運算碼欄774包含較少的所有這些欄。該完全運算碼欄774提供運算碼(opcode)。
擴增運算欄750、資料元素寬度欄764以及寫入遮罩欄770允許這些特點依據每個指令以一般向量親和性指令格式被指定。
寫入遮罩欄以及資料元素寬度欄之組合產生分類指令,於其中它們允許遮罩依據不同的資料元素寬度而被施加。
在類別A以及類別B內被發現之各種指令樣版是有益於不同的情況中。於本發明一些實施例中,不同的處理器或在一處理器內之不同的核心可僅支援類別A、僅支援類別B或支援兩個類別。例如,有意用於一般目的計算之高性能一般用途無序核心可以僅支援類別B,有意主要地供用於圖形及/或科學上(總產能)計算之一核心可以僅支援類別A,並且有意供用於支援類別A、類別B兩者之核心可支援其兩者(當然,具有一些樣版以及來自兩類別之指令的混合,但不是所有的樣版以及來自兩類別之指令之一核心是在本發明範圍之內)。同時,一個單一處理器也可包含複數個核心,其所有者皆支援相同類別或於其中不同的核心支援不同的類別。例如,於具有分別的圖形以及一般用途核
心之一處理器中,有意主要地供用於圖形及/或科學上計算的圖形核心之一者可以僅支援類別A,而一個或多個一般用途核心可以是具有無序執行以及暫存器換名之高性能一般用途核心,其是有意僅用於支援類別B之一般目的計算。不具有一分別的圖形核心之另一處理器,可包含支援類別A以及類別B兩者之多於一個的一般用途有序或無序核心。當然,來自一個類別之特點也可以是本發明不同實施例中之其他類別的實作例。以高階語言被編寫之程式將被輸出(例如,剛好及時地被編譯或靜態被編譯)成為多種不同的可執行形式,其包含:1)僅具有利用供執行之目標處理器所支援的類別之指令的形式;或2)具有使用所有類別指令的不同組合而被編寫之另外的程式段以及具有控制流程碼之形式,其中該流程碼依據利用目前執行程式碼之處理器所支援的指令而選擇執行之程式段。
特定向量親和性指令格式範例
第8圖是圖解地說明依據本發明實施例之特定向量親和性指令格式範例的方塊圖。第8圖展示一特定向量親和性指令格式800,就指定位置、尺度、詮釋及欄順序、以及供用於那些欄的一些欄之數值之意義而言,其是特定的。該特定向量親和性指令格式800可被使用以延伸x86指令集,並且因此一些欄是相似或相同於那些被使用於現有的x86指令集以及其延伸者(例如,AVX)。這格式與具有延伸性之現有x86指令集的字首編碼欄、實數運算碼位元組欄、MOD R/M欄、SIB欄、位移欄以及即時欄保持相容性。
來自第7圖之第8圖該等欄之映製將圖解地被說明。
應了解,雖然本發明實施例參考於用以說明目的之一般向量親和性指令格式700的脈絡中之特定向量親和性指令格式800而被說明,除了聲明之外,本發明是不受限定於該特定向量親和性指令格式800。例如,一般向量親和性指令格式700考慮供用於各種欄之多種可能尺度,而特定向量親和性指令格式800被展示如具有特定尺度之欄。藉由特定範例,雖然資料元素寬度欄764圖解地被說明如於特定向量親和性指令格式800中之一位元欄,本發明是不因此受限定(亦即,一般向量親和性指令格式700考慮其他尺度的資料元素寬度欄764)。
一般向量親和性指令格式700包含在下面以第8A圖中所說明的順序所列出之下面的欄。
EVEX字首(位元組0-3)802-以四位元組形式被編碼。
格式欄740(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄740並且其包含0x62(於本發明一實施例中被使用於識別向量親和性指令格式的唯一數值)。
第二-第四位元組(EVEX位元組1-3)-包含提供特定性能之一些位元欄。
REX欄805(EVEX位元組1,位元[7-5])-包含一EVEX.R位元欄(EVEX位元組1,位元[7]-R)、EVEX.X位元欄(EVEX位元組1,位元[6]-X)以及757BEX位元組1,位元
[5]-B)。EVEX.R,EVEX.X、以及EVEX.B位元欄提供如對應的VEX位元欄之相同功能性,並且使用1之補數形式被編碼,亦即,ZMM0被編碼如1111B,ZMM15被編碼如0000B。其他指令欄如本技術中習知地編碼暫存器索引較低的三個位元(rrr,xxx,和bbb),因而,Rrrr、Xxxx、以及Bbbb可藉由增加EVEX.R、EVEX.X以及EVEX.B被形成。
REX’欄710-這是REX’欄710的第一部份並且是EVEX.R’位元欄(EVEX位元組1,位元[4]-R’),其被使用以編碼延伸32暫存器組較高的16暫存器或較低的16暫存器之任一者。於本發明一實施例中,這位元,如下面指示地與其他者一起,以位元倒反格式被儲存以識別(以習知的x8632位元模式)BOUND指令,其之實數運算碼位元組是62,但於MOD R/M欄中(將在下面被說明)不接受於MOD欄中之數值11;本發明另外的實施例不以倒反格式儲存這以及其他被指示的位元。一數值1被使用以編碼較低的16暫存器。換言之,R’Rrrr藉由組合EVEX.R’、EVEX.R、以及來自其他欄的其他RRR而被形成。
運算碼映製欄815(EVEX位元組1,位元[3:0]-mmmm)-其之內容編碼一隱含之引導運算碼位元組(0F、0F38、或0F3)。
資料元素寬度欄764(EVEX位元組2,位元[7]-W)-藉由標誌EVEX.W被表示。EVEX.W被使用以界定資料型式之粒度(尺度)(32位元資料元素或64位元資料元素之任一者)。
EVEX.vvvv欄820(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之作用可包含下面各者:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒反(1之補數)形式被指定並且是有效於具有2個或更多來源運算元的指令;2)EVEX.vvvv編碼目的地暫存器運算元,對於某些向量位移以1的補數形式被指定;或3)EVEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。因此,EVEX.vvvv欄820編碼以倒反(1之補數)形式被儲存的第一來源暫存器指示器之4個低階位元。依據該指令,一額外之不同的EVEX位元欄被使用以延伸該指示器尺度至32暫存器。
EVEX.U 768類別欄(EVEX位元組2,位元[2]-U)-如果EVEX.U=0,其指示類別A或EVEX.U0;如果EVEX.U=1,其指示類別B或EVEX.U1。
字首編碼欄825(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字首編碼,並且因此不需要解壓縮。
α欄752(EVEX位元組3,位元[7]-EH;也是習知如EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、以及EVEX.N;同時也以α展示)-如先前之說明,這欄是上下文相關。
β(Beta)欄754(EVEX位元組3,位元[6:4]-SSS,也是習知如EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;同時也以βββ展示)-如先前之說明,這欄是上下文相關。
REX’欄710-這是REX’欄的餘項並且是EVEX.V’位元欄(EVEX位元組3,位元[3]-V’),其可被使用以編碼延伸的32暫存器組之較高的16暫存器或較低的16暫存器之任一者。這位元以倒反格式被儲存。一個1數值被使用以編碼較低的16暫存器。換言之,V’VVVV藉由組合EVEX.V’、EVEX.vvvv被形成。
寫入遮罩欄770(EVEX位元組3,位元[2:0]-kkk)-其之內容如先前所說明地指定寫入遮罩暫存器中之暫存器的索引。於本發明一實施例中,特定數值EVEX.kkk=000具有一特殊功能,其意味著沒有寫入遮罩被使用於特定指令(這可以多種方式被實作,包含有線連接至所有者的寫入遮罩或旁通遮罩硬體的硬體之使用)。
真實運算碼欄830(位元組4)也是習知如運算碼位元組。部份的運算碼被指定於這欄中。
MOD R/M欄840(位元組5)包含MOD欄842、Reg欄844、以及R/M欄846。如先前的說明,MOD欄842之內容在記憶體存取以及非記憶體存取運算之間識別。Reg欄844之作用可被概括至二個情況:編碼目的地暫存器運算元或一來源暫存器運算元,或被視為一運算碼延伸並且不被使用於編碼任何指令運算元。R/M欄846之作用可包含下列各者:編碼參考一記憶體位址的指令運算元,或編碼目的地暫存器運算元或一來源暫存器運算元之任一者。
尺度、索引、基底(SIB)位元組(位元組6)-如先前之說明,尺度欄750之內容被使用於記憶體位址產生。SIB.xxx 854以及SIB.bbb 856-這些欄之內容已先前相關於暫存器索引Xxxx以及Bbbb而被提及。
位移欄762A(位元組7-10)-當MOD欄842包含10時,位元組7-10是位移欄762A,並且其相同於遺留32位元位移(disp32)地作業並且以位元組粒度作業。
位移係數欄762B(位元組7)-當MOD欄842包含01時,位元組7是位移係數欄762B。這欄之位置是相同於遺留的x86指令集8位元位移(disp8),其以位元組粒度作業。因為disp8是符號延伸,其僅可在-128以及127位元組偏移量之間定址;就64位元組快取線而論,disp8使用8位元,其可被設定至僅四個確實有用的數值-128、-64、0、以及64;因為一較大範圍是時常需要的,disp32被使用;但是,disp32
需要4個位元組。對照disp8以及disp32,位移係數欄762B是disp8之一重新解釋;當使用位移係數欄762B時,實際的位移藉由位移係數欄乘以記憶體運算元存取(N)尺度之內容被決定。這位移型式被稱為disp8*N。這減低平均指令長度(一單一位元組被使用於位移,但是具有更大的範圍)。此壓縮位移是依據有效的位移是複數個記憶體存取粒度之假設,並且因此,位址偏移量之多餘的低階位元將不需要被編碼。換言之,位移係數欄762B替代遺留的x86指令集8位元位移。因此,藉由disp8被超載至disp8*N之一例外,位移係數欄762B以相同如x86指令集8位元位移之方式被編碼(因此於MOD RM/SIB編碼法則中沒有改變)。換言之,除了利用硬體之位移數值的說明外,編碼法則或編碼長度沒有改變(其需要利用記憶體運算元之尺度去尺度調整位移以得到一位元組方式之位址偏移量)。
即時欄772如先前說明地運算。
完全運算碼欄
第8B圖是圖解地說明依據本發明一實施例組成完全運算碼欄774之特定向量親和性指令格式800的欄之方塊圖。明確地說,完全運算碼欄774包含格式欄740、基底運算欄742、以及資料元素寬度(W)欄764。基底運算欄742包含字首編碼欄825、運算碼映製欄815以及真實運算碼欄830。
暫存器索引欄
第8C圖是圖解地說明依據本發明一實施例組成
暫存器索引欄744之特定向量親和性指令格式800的欄之方塊圖。明確地說,暫存器索引欄744包含REX欄805、REX’欄810、MOD R/M.Reg欄844、MOD R/M.R/M欄846、VVVv欄820、xxx欄854、以及bbb欄856。
擴增運算欄
第8D圖是圖解地說明依據本發明一實施例組成擴增運算欄750之特定向量親和性指令格式800的欄之方塊圖。當類別(U)欄768包含0時,其表示EVEX.U0(類別A768A);當其包含1時,其表示EVEX.U1(類別B768B)。當U=0並且MOD欄842包含11時(表示一非記憶體存取運算),α欄752(EVEX位元組3,位元[7]-EH)被詮釋如rs欄752A。當rs欄752A包含一個1(捨入752A.1)時,β欄754(EVEX位元組3,位元[6:4]-SSS)被詮釋如捨入控制欄754A。捨入控制欄754A包含一個一位元SAE欄756以及一個二位元捨入運算欄758。當rs欄752A包含一個0時(資料轉換752A.2),β欄754(EVEX位元組3,位元[6:4]-SSS)被詮釋如一個三位元資料轉換欄754B。當U=0並且MOD欄842包含00,01,或10(表示一記憶體存取運算)時,α欄752(EVEX位元組3,位元[7]-EH)被詮釋如逐出示意(EH)欄752B並且β欄754(EVEX位元組3,位元[6:4]-SSS)被詮釋如三位元資料操縱欄754C。
當U=1時,α欄752(EVEX位元組3,位元[7]-EH)被詮釋如寫入遮罩控制(Z)欄752C。當U=1並且MOD欄842包含11(表示一非記憶體存取運算)時,部份的β欄
754(EVEX位元組3,位元[4]-S0)被詮釋如RL欄757A;當其包含一個1(捨入757A.1)時,β欄754之剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋如捨入運算欄759A,而當RL欄757A包含一個0(VSIZE757.A2)時,β欄754之剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋如向量長度欄759B(EVEX位元組3,位元[6-5]-L1-0)。當U=1並且MOD欄842包含00,01,或10(表示一記憶體存取操作)時,β欄754(EVEX位元組3,位元[6:4]-SSS)被詮釋如向量長度欄759B(EVEX位元組3,位元[6-5]-L1-0)以及廣播欄757B(EVEX位元組3,位元[4]-B)。
暫存器結構範例
第9圖是依據本發明一實施例之暫存器結構900的方塊圖。於圖解說明之實施例中,有32個向量暫存器910(其是512位元寬);這些暫存器被稱為zmm0至zmm31。較低的16zmm暫存器之較低階256位元被覆蓋在暫存器ymm0-16上。較低的16zmm暫存器的較低階128位元(ymm暫存器之較低階128位元)被覆蓋在暫存器sxmm0-15上。如下面表格中說明地,特定向量親和性指令格式800在這些覆蓋暫存器檔案上操作。
換言之,向量長度欄759B在一最大長度以及一個或多個其他較短長度之間選擇,其中此較短長度各者是先前長度之一半長度;並且無向量長度欄759B之指令樣版在最大向量長度上運算。進一步地,於一實施例中,特定向量親和性指令格式800之類別B指令樣版在封裝或純量單一/雙重精確性浮動點資料以及封裝或純量整數資料上運算。純量運算是在zmm/ymm/xmm暫存器中最低階資料元素位置上進行的運算;取決於實施例,較高階資料元素位置是保留相同如指令先前之它們樣子或規零。
於圖解地說明的實施例中,寫入遮罩暫存器915有8個寫入遮罩暫存器(k0至k7),其各是64位元之尺度。於一不同實施例中,寫入遮罩暫存器915是16位元的尺度。如先前所述,於本發明一實施例中,向量遮罩暫存器k0不能被使用作為寫入遮罩;當將通常指示k0之編碼被使用於一寫入遮罩時,其選擇一有線的寫入遮罩0xFFFF,有效地使
對於那指令之寫入遮罩失效。
於圖解說明之實施例中,一般目的暫存器925有十六個64位元一般目的暫存器,其與現有的x86定址模式一起被使用以定址記憶體運算元。這些暫存器名稱被指示為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R15。
於圖解說明之實施例中,純量浮動點堆疊暫存器檔案(x87堆疊)945,在其上是失真或混疊的MMX封裝整數平的暫存器檔案950,x87堆疊是一個八元素的堆疊,其被使用以進行在使用x87指令集延伸之32/64/80位元浮動點資料上的純量浮動-點運算;而MMX暫存器則被使用以進行64位元封裝整數資料上之運算,以及保持運算元以供用於在MMX以及XMM暫存器之間執行的一些運算。
本發明另外的實施例可使用較寬或較窄的暫存器。另外地,本發明不同實施例可使用較多、較少或不同的暫存器檔案以及暫存器。
核心結構、處理器、以及電腦結構範例
對於不同用途的處理器核心,可以不同方式以及於不同的處理器中被實作。例如,此等核心之實作可包含:1)有意用於一般用途計算之一般用途的有序核心;2)有意用於一般用途計算之高性能的一般用途無序核心;3)有意主要用於圖形及/或科學(總產量)計算之特定用途核心。不同處理器之實作可包含:1)包含有意用於一般用途計算之一個或多個一般用途有序核心及/或有意用於一般用途計算
的一個或多個一般用途無序核心之CPU;以及2)包含有意主要用於圖形及/或科學(總產量)之一個或多個特定用途核心的協同處理器。此等不同處理器導致不同的電腦系統結構,其可包含:1)與CPU分別之晶片上的協同處理器;2)與CPU相同之封裝中的分別晶圓上之協同處理器;3)與CPU相同之晶圓上的協同處理器(於其實例中,此一協同處理器有時被稱為特定用途邏輯,例如,整合圖形及/或科學(總產量)邏輯,或作為特定用途核心);以及4)可包含在相同晶圓上的上述CPU(有時被稱為應用核心或應用處理器)、上述之協同處理器以及另外的功能性之晶片系統。核心結構範例接著被說明,隨後有處理器以及電腦結構範例說明。
核心結構範例
有序以及無序核心方塊圖
第10A圖是依據本發明實施例圖解地說明有序管線範例以及暫存器換名範例、無序發出/執行管線兩者的方塊圖。第10B圖是依據本發明實施例圖解地說明被包含於一處理器中的有序結構核心範例以及暫存器換名、無序發出/執行結構核心範例兩者的實施例之方塊圖。第10A-B圖之實線方塊圖解地說明有序管線以及有序核心,而虛線方塊之可選擇增加部份圖解地說明暫存器換名、無序發出/執行管線以及核心。在有序觀點是無序觀點之一子集的情況,該無序觀點將被說明。
於第10A圖中,處理器管線1000包含一擷取級1002、一長度解碼級1004、一解碼級1006、一分配級1008、
一換名級1010、一排程(也是習知如一發送或發出)級1012、一暫存器讀取/記憶體讀取級1014、一執行級1016、一回寫/記憶體寫入級1018、一異常處理級1022、以及一提交級1024。
第10B圖展示處理器核心1090,其包含耦合至一執行引擎單元1050的一前端點單元1030,並且其兩者皆被耦合至一記憶體單元1070。核心1090可以是一簡化指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一非常長指令字組(VLIW)核心、或混合或交錯的核心型式。再如另一選擇,例如,核心1090可以是一特殊用途核心,例如,一網路或通訊核心、壓縮引擎、協同處理器核心、一般用途電腦圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端點單元1030包含耦合至一指令快取單元的分支預測單元1032,其被耦合至一指令轉譯後備緩衝器(TLB)1036,其被耦合至一指令擷取單元1038,其被耦合至一解碼單元1040。解碼單元1040(或解碼器)可解碼指令,並且產生如一個或多個微運算、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或導自於原始指令。解碼單元1040可使用各種不同機構被實作。適當的機構範例包含,但是不受限定於,查詢表、硬體實作、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,該核心1090包含一微碼ROM或的其他媒體儲存用於某些巨指令的微碼(例如,於解碼單元1040或中或此外在前端點單元
1030之內)。解碼單元1040耦合至執行引擎單元1050中之一換名/分配器單元1052。
執行引擎單元1050包含耦合至除役單元1054之換名/分配器單元1052以及一組之一個或多個排程器單元1056。排程器單元1056代表任何數目之不同的排程器,其包含保留站、中央指令窗口,等等。排程器單元1056耦合至實際暫存器檔案單元1058。各個實際暫存器檔案單元1058代表一個或多個實際暫存器檔案,其不同的一者儲存一個或多個不同資料型式,例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一指令指示器,其是將被執行的下一個指令之位址)等等。於一實施例中,實際暫存器檔案單元1058包括一向量暫存器單元、一寫入遮罩暫存器單元以及一純量暫存器單元。這些暫存器單元可提供結構向量暫存器、向量遮罩暫存器、以及一般用途暫存器。實際暫存器檔案單元1058與除役單元1054重疊以說明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用重排緩衝器以及除役暫存器檔案;使用未來檔案、歷史緩衝器以及除役暫存器檔案;使用暫存器映圖以及暫存器池;等等)。除役單元1054以及以及實際暫存器檔案單元1058耦合至執行群集1060。該執行群集1060包含一組之一個或多個執行單元1062以及一組之一個或多個記憶體存取單元1064。執行單元1062可在各種型式資料(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)上進行各種運算(例如,移位、加法、
減法、乘法)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例可僅包含全部進行所有功能的一個執行單元或複數個執行單元。排程器單元1056、實際暫存器檔案單元1058以及執行群集1060被展示為可能是複數個,因為某些實施例對於某些型式之資料/操作產生分別管線(例如,純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或記憶體存取管線,其各具有它們獨有的排程器單元、實際暫存器檔案單元、及/或執行群集-並且於一分別記憶體存取管線之情況中,某些實施例被實作,於其中僅這管線之執行群集具有記憶體存取單元1064)。同時也應了解,在使用分別的管線情況,一個或多個的這些管線可以是無序發出/執行且其餘是有序。
記憶體存取單元1064集合被耦合至記憶體單元1070,其包含被耦合至一資料快取單元1074(其被耦合至位準2(L2)快取單元1076)的資料TLB單元1072。於一實施範例中,記憶體存取單元1064可包含負載單元、儲存位址單元以及儲存資料單元,其各耦合至記憶體單元1070中之資料TLB單元1072。指令快取單元1034進一步耦合至記憶體單元1070中之位準2(L2)快取單元1076。L2快取單元1076耦合至一個或多個其他快取位準並且最後至一主要記憶體。
藉由範例,範例暫存器換名、無序發出/執行核心結構可如下所示地實作管線1000:1)指令擷取1038進行擷取以及長度解碼級1002與1004;2)解碼單元1040進行解
碼級1006;3)換名/分配器單元1052進行分配級1008以及換名級1010;4)排程器單元1056進行排程級1012;5)實際暫存器檔案單元1058以及記憶體單元1070進行暫存器讀取/記憶體讀取級1014;執行聚集1060進行執行級1016;6)記憶體單元1070以及實際暫存器檔案單元1058進行回寫/記憶體寫入級1018;7)各種單元可被包含於異常處理級1022中;以及8)除役單元1054以及實際暫存器檔案單元1058進行提交級1024。
核心1090可以支援包含於此處說明之指令的一個或多個指令集(例如,x86指令集(具有被添加之較新版本的一些擴充);美國加州森尼維耳市之MIPS技術的MIPS指令集;美國加州森尼維耳市之ARM持股公司的ARM指令集(具有選擇之另外的擴充,例如NEON))。於一實施例中,核心1090包含支援一封裝資料指令集擴充的邏輯(例如,AVX1、AVX2、及/或上述一般向量親和性指令格式(U=0及/或U=1)之一些形式),因而允許藉由將使用封裝資料被進行之許多的多媒體應用所使用之運算。
應了解,核心可支援多線程(執行二個或更多個平行的操作或線程集合),並且可因此以多種方式處理,該等多種方式包含分時多線程、同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯核心),或其組合(例如,分時擷取與解碼以及隨後的同時多線程,例如,Intel®Hyperthreading技術)。
雖然暫存器換名於無序執行本文中被說明,應了
解,暫存器換名可被使用於有序結構中。雖然圖解說明的處理器實施例也包含分別的指令與資料快取單元1034/1074以及共用L2快取單元1076,另外的實施例也可具有,例如,供用於指令以及資料兩者之一單一內部快取,例如,位準1(L1)內部快取,或複數個位準內部快取。於一些實施例中,系統可包含一內部快取以及外加於該核心及/或處理器的一外部快取之組合。另外地,所有的快取可以是外加於該核心及/或該處理器。
有序結構核心特定範例
第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快取被分割成為每個處理器核心有一個之分別的局部性的子集。各處理器核心具有直接存取路線至其之自己的L2快取1104之局部性子集。利用一處理器核心所讀取的資料被儲存於其之L2快取子集1104中並且可與存取它們獨有的局部性L2快取子集的其他處理器核心快速地、平行地被存取。利用處理器核心被寫入之資料被儲存於其之自己的L2快取子集1104中,並且如果必須的話,則自其他子集被湧送。環狀網路保護共用資料之協調性。環狀網路是雙向作用以允許媒介,例如,處理器核心、L2快取以及其他邏輯區塊在晶片內彼此通訊。各環狀資料通道的每個方向是1012位元寬。
第11B圖是是依據本發明實施例之第11A圖中的處理器核心之部份展開圖。第11B圖包含L1快取1104之L1資料快取1106A部份、以及更多關於向量單元1110與向量暫存器1114之詳細說明。明確地說,向量單元1110是16寬度向量處理單元(VPU)(參看16寬度ALU 1128),其執行一個或多個整數、單精確性浮動以及雙重-精確性浮動指令。VPU支援於記憶體輸入上之利用拌和單元1120拌合暫存器輸入、利用數值轉換單元1122A-B之數值轉換、以及利用複製單元1124之複製。寫入遮罩暫存器1126允許推斷產生的向
量寫入。
具有整合記憶體控制器以及圖形之處理器
第12圖是依據本發明實施例之處理器1200的方塊圖,處理器1200可具有多於一個核心,可具有一整合記憶體控制器並且可具有整合圖形。第12圖之實線方塊圖解地說明處理器1200,處理器1200具有單一核心1202A、系統媒介單元1210、一組之一個或多個匯流排控制器單元1216,而選擇添加之虛線方塊說明不同的處理器1200,處理器1200具有複數個核心1202A-N、系統媒介單元1210中之一組的一個或多個整合記憶體控制器單元1214以及特殊用途邏輯1208。
因此,處理器1200的不同實作例可包含:1)具有整合圖形及/或科學(總產量)邏輯的特定用途邏輯1208之一CPU(其可包含一個或多個核心)、以及一般用途核心之核心1202A-N(例如,一般用途有序核心、一般用途無序核心、其二者之組合);2)一協同處理器,其具有有意主要地用於圖形及/或科學(總產量)之大量特定用途核心的核心1202A-N;以及3)一協同處理器,其具有大量之一般用途有序核心的核心1202A-N。因此,處理器1200可以是,例如,一般用途處理器、協同處理器或特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器,GPGPU(一般用途圖形處理單元),高產量多整合核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器或其類似者。該處理器可被實作於一個或多個晶片上。處理器1200可以是一個
或多個基片的一部份及/或及/或,例如,可使用任何的一些處理技術,例如,BiCMOS、CMOS、或NMOS而於一個或多個基片上被實作。
該記憶體階系包含在該等核心內之一個或多個快取位準,一組或一個或多個共用快取單元1206,以及耦合至該組整合記憶體控制器單元1214之外部記憶體(未被展示)。該組共用快取單元1206可包含一個或多個中間位準快取,例如,位準2(L2)、位準3(L3)、位準4(L4)或其他快取位準、一最後位準快取(LLC)及/或其組合。雖然於一實施例中,一環狀基礎互連單元1212互連整合圖形邏輯1208、該組共用快取單元1206以及系統媒介單元1210/整合記憶體控制器單元1214,不同的實施例可使用任何數量之習知技術以供互連此等單元。於一實施例中,協調性被保持在一個或多個快取單元1206以及核心1202-A-N之間。
於一些實施例中,一個或多個核心1202A-N是能夠多線程。系統媒介1210包含調節以及操作核心1202A-N的那些構件。系統媒介單元1210可包含,例如,電力控制單元(PCU)以及顯示單元。PCU可以是或包含用以調整核心1202A-N以及整合圖形邏輯1208之電力狀態所需的邏輯以及構件。顯示單元是用以驅動一個或多個外部連接之顯示器。
核心1202A-N可以是同質的或異質的,就結構指令集而論;亦即,二個或更多個核心1202A-N可以是能夠執行相同的指令集,而其他者則可以是僅能夠執行該指令集
之一子集或一不同的指令集。
電腦結構範例
第13-16圖是電腦結構範例之方塊圖。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至第13圖,其所展示的是依據本發明一實施例之系統1300的方塊圖。系統1300可包含一個或多個處理器1310、1315,其被耦合至控制器中樞1320。於一實施例中,控制器中樞1320包含圖形記憶體控制器中樞(GMCH)1390以及一輸入/輸出中樞(IOH)1350(其可以是在分別的晶片上);GMCH 1390包含包含耦合至記憶體1340以及協同處理器1345之記憶體以及圖形控制器;IOH 1350是耦合輸入/輸出(I/O)裝置1360至GMCH1390。另外地,記憶體以及圖形控制器之一個或兩者被整合在處理器之內(如於此處之說明),記憶體1340以及協同處理器1345直接地耦合至具有IOH1350之一晶片中的處理器1310、以及控制器中樞1320。
另外的處理器1315之可選擇的性質是第13圖中
以虛線表示者。各處理器1310、1315可包含此處說明之一個或多個處理核心並且可以是處理器1200的一些形式。
記憶體1340可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或其二者之組合。對於至少一實施例,控制器中樞1320經由多點匯流排,例如,前面匯流排(FSB)、點對點界面,例如,快速通道互連(QPI)、或相似連接1395與處理器1310、1315通訊。
於一實施例中,協同處理器1345,例如,是一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其類似者。於一實施例中,控制器中樞1320可包含一整合圖形加速裝置。
就包含結構學、微結構學、熱量學、功率消耗特性以及其類似者之價值觀而論,在實體資源1310、1315之間可以是具有多種差異性。
於一實施例中,處理器1310執行控制一般型式之資料處理操作的指令。被嵌入指令內部者可以是協同處理器指令。處理器1310確認這些協同處理器指令是將利用附帶的協同處理器1345被執行之型式。因此,處理器1310協同處理器匯流排或其他互連上發出這些協同處理器指令(或代表協同處理器指令之控制信號),至協同處理器1345。協同處理器1345接受並且執行所接收的協同處理器指令。
接著參看至第14圖,其所展示的是依據本發明一實施例之第一更特定範例系統1400的方塊圖。如於第14圖
之展示,多處理器系統1400是一點對點互連系統,並且包含經由點對點互連1450耦合的一第一處理器1470以及一第二處理器1480。處理器1470以及1480各可以處理器1200的一些版本。於本發明一實施例中,處理器1470以及1480分別地是處理器1310以及1315,而協同處理器1438則是協同處理器1345。於另一實施例中,處理器1470以及1480則分別地是處理器1310及協同處理器1345。
處理器1470以及1480被展示,而分別地包含整合記憶體控制器(IMC)單元1472以及1482。處理器1470也包含點對點(P-P)界面1476以及1478作為其之匯流排控制器單元部份;同樣地,第二處理器1480包含P-P界面1486以及1488。處理器1470、1480可使用P-P界面電路1478、1488,經由點對點(P-P)界面1450而交換資訊。如於第14圖之展示,IMC1472以及1482耦合處理器至分別的記憶體,亦即,記憶體1432以及記憶體1434,其可以是局部性被附帶至分別處理器之主記憶體部份。
處理器1470、1480各可使用點對點界面電路1476、1494、1486、1498,經由分別的P-P界面1452、1454而與一晶片組1490交換資訊。晶片組1490可經由高性能界面1439,而選擇性地與協同處理器1438交換資訊。於一實施例中,協同處理器1438,例如,是一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其類似者。
一共用快取(未被展示)可被包含在任一的處理
器中或在兩處理器之外,經由P-P互連而與處理器連接,以至於如果一處理器被安置成為低功率模式,則任一或兩處理器之局部性快取資訊可被儲存於共用快取中。
晶片組1490可經由界面1496被耦合至一第一匯流排1416。於一實施例中,第一匯流排1416可以是週邊構件互連(PCI)匯流排,或例如,一PCI快速匯流排之匯流排或另一個第三代I/O互連匯流排,然而本發明範疇是不因此受限定。
如於第14圖之展示,各種I/O裝置1414可與匯流排橋1418一起被耦合至第一匯流排1416,匯流排橋1418耦合第一匯流排1416至第二匯流排1420。於一實施例中,一個或多個另外的處理器1415,例如,協同處理器、高產量MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器,被耦合至第一匯流排1416。於一實施例中,第二匯流排1420可以是低引腳數(LPC)匯流排。各種裝置可被耦合至一第二匯流排1420,包含,例如,鍵盤及/或滑鼠1422、通訊裝置1427以及儲存單元1428,例如,碟片驅動或其他大量儲存裝置,於一實施例中,其可包含指令/數碼以及資料1430。進一步地,音訊I/O 1424可被耦合至第二匯流排1420。注意到,其他的結構也是可能。例如,取代第14圖之點對點結構,一系統可實作多點匯流排或其他此等結構。
接著參看至第15圖,其所展示的是依據本發明一實施例之第二更特定範例系統1500的方塊圖。第14圖以及
第15圖中之相同元件具有相同的參考號碼,並且第14圖之某些觀點已自第15圖被省略以避免混淆第15圖的其他觀點。
第15圖分別圖解地說明處理器1470、1480可包含整合記憶體以及I/O控制邏輯(“CL”)1472以及1482。因此,CL1472、1482包含整合記憶體控制器單元並且包含I/O控制邏輯。第15圖不只是圖解地說明耦合至CL1472、1482之記憶體1432、1434,但同時也說明耦合至控制邏輯1472、1482的I/O裝置1514。遺留I/O裝置1515耦合至晶片組1490。
接著參看至第16圖,其所展示的是依據本發明一實施例之SoC 1600的方塊圖。相似於第12圖元件中之元件具有相同的參考號碼。同時,虛線方塊是在更先進之SoC上之選擇性特點。於第16圖中,一互連單元1602耦合至:一應用處理器1610,其包含一組的一個或多個核心202A-N以及共用快取單元1206;一系統媒介單元1210;一匯流排控制器單元1216;一整合記憶體控制器單元1214;一組或一個或多個協同處理器1620,其可包含整合圖形邏輯、一影像處理器、一音訊處理器、以及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元1630;一直接記憶體存取(DMA)單元1632;以及用以耦合至一個或多個外部顯示器的一顯示單元1640。於一實施例中,協同處理器1620包含,例如,一特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器、或其類似者。
此處揭示之機構實施例可以硬體、軟體、韌體或此等實作方法之組合而被實作。本發明實施例可被實作如於包括至少一處理器、一儲存系統(包含依電性以及非依電性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置的可程控系統上執行之電腦程式或程式碼。
程式碼,例如,說明於第14圖形中之程式碼1430,可被應用至輸入指令以執行此處說明之功能並且產生輸出資訊。該輸出資訊可以習知的形式,被施加至一個或多個輸出裝置。為了這應用目的,一處理系統,例如,包含具有,例如,一處理器;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器之任何系統。
程式碼可以一高階程序或物件導向之程式語言被實作以通訊於一處理系統。如果需要的話,程式碼也可以組合或機器語言被實作。。實際上,此處說明之機構是不受限定於任何特定程式語言的範疇。於任何情況中,語言可以是一編譯或詮釋語言。
至少一實施例之一個或多個論點可藉由儲存於代表在處理器內之各種邏輯的機器可讀取媒體上之表示指令而被實作,該等指令當利用機器被讀取時,將導致機器製造邏輯以執行此處說明之技術。此等表示,習知如“IP核心”可被儲存在有實體、機器可讀取媒體上並且被供應至各種客製或廠製設施以負載進入實際上構成邏輯或處理器之製造機器內。
此等機器可讀取儲存媒體可包含,而不限制於,利用機器或裝置被製造或被形成之非暫時、有實體的物件配置,其包含儲存媒體,例如,硬碟、任何其他型式碟片,如包含軟式磁片、光碟、小型碟片唯讀記憶體(CD-ROM)、可重寫小型碟片(CD-RW)、以及磁鐵式光碟、半導體裝置,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如,動態隨機存取記憶體(DRAM),靜態隨機存取記憶體(SRAM)、可消除可程控唯讀記憶體(EPROM)、快閃記憶體、電氣地可消除可程控唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁學或光學卡或適用於儲存電子式指令之任何其他型式的媒體。
因此,本發明實施例也包含非暫時、有實體的機器可讀取媒體,其包含指令或包含設計資料,例如,硬體說明語言(HDL),其界定此處說明之結構、電路、裝置、處理器及/或系統特點。此等實施例也可被稱為程式產品。
仿效(包含二進制轉譯、指令碼變形,等等)
於一些情況中,一指令轉換器可被使用以轉換來自一來源指令集之指令至一目標指令集。例如,該指令轉換器可轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、變形、仿效、或其他不同方法,以轉換一指令為將利用核心被處理的一個或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合被實作。指令轉換器可以是在處理器上、處理器之外、或部份在處理器上以及部份在處理器之外。
第17圖是依據本發明實施例之對照軟體指令轉換器的使用以轉換來源指令集之二進制指令為目標指令集之二進制指令的方塊圖。於所說明之實施例中,指令轉換器是是一軟體指令轉換器,然而另外地,該指令轉換器也可以軟體、韌體、硬體或其各種組合被實作。第17圖展示高階語言1702中之一程式,該程式可使用x86編譯器1704被編譯以產生x86二進制指令碼1706,其可利用具有至少一個x86指令集核心1716之一處理器而自然地被執行。具有至少一個x86指令集核心1716之處理器代表任何處理器,其可進行相同如具有至少一個x86指令集核心之英特爾(Intel)處理器功能,其藉由相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體目標之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心之一英特爾處理器的相同結果。x86編譯器1704代表可操作以產生x86二進制指令碼1706(例如,目的碼)之一編譯器,該x86二進制指令碼1606可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心1716之處理器上。同樣地,第17圖展示高階語言1702之程式,其可使用不同的指令集編譯器1708被編譯以產生不同的指令集二進制指令碼1710,該指令集二進制指令碼1610可藉由不具有至少一個x86指令集核心1714之處理器(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公
司之ARM指令集)自然地被執行。指令轉換器1712被使用以轉換x86二進制指令碼1706成為可藉由不具有一x86指令集核心1714之處理器自然地被執行的一指令碼。這轉換的指令碼是不太可能相同於另外的指令集二進制指令碼1710,因為這樣的一指令轉換器可能是不容易構成;但是,該轉換的指令碼將達成一般操作並且可自不同指令集的指令被構成。因此,指令轉換器1712代表軟體、韌體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制指令碼1706。
101‧‧‧來源向量暫存器
103‧‧‧寫入遮罩暫存器
0~15‧‧‧位元位置
0~7‧‧‧資料元素位置
Claims (20)
- 一種回應一單一指令而於一電腦處理器中進行將一表列索引值轉換成為一遮罩值之方法,其中該遮罩值指令包含一目的地寫入遮罩暫存器運算元、一來源向量暫存器運算元、以及一運算碼,該方法包括下列步驟:解碼該單一指令;執行該經解碼單一指令以決定被儲存於該來源向量暫存器之各個封裝資料元素位置中的一數值;以及儲存一個1進入對應至所決定數值之該目的地寫入遮罩暫存器的位元位置。
- 如申請專利範圍第1項之方法,其中該執行進一步包括:在進行被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定之前,設定該目的地寫入遮罩暫存器的所有位元位置為0。
- 如申請專利範圍第1項之方法,其中被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定平行地被進行。
- 如申請專利範圍第1項之方法,其中該目的地寫入遮罩暫存器是16位元或64位元。
- 如申請專利範圍第1項之方法,其中該來源向量暫存器是128位元、256位元、或512位元之一尺度。
- 如申請專利範圍第1項之方法,其中該執行步驟包括:決定該來源向量暫存器之一最低有效封裝資料元 素位置之一數值;以及當該決定數值不是較大於該目的地遮罩暫存器位元位置之數目時,則寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置;決定該來源向量暫存器之所有封裝資料元素位置是否已被處理;並且當該來源向量暫存器之所有封裝資料元素位置尚未被處理時,則決定該來源向量暫存器之下一個最低有效封裝資料元素位置之一數值;以及寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置。
- 如申請專利範圍第6項之方法,進一步包括:當該來源向量暫存器之一封裝資料元素位置的決定數值是較大於該目的地寫入遮罩暫存器之尺度時,則停止該來源向量暫存器的封裝資料元素位置之決定。
- 一種製造物品,其包括:在其上儲存一指令之事件之一實體機器可讀取儲存媒體,其中該指令之格式指定一來源向量暫存器作為它的來源運算元以及指定一單一目的地寫入遮罩暫存器作為它的目的地,並且其中該指令格式包含一運算碼,其反應於該單一指令之單一事件而指示一機器以導致被儲存於該來源向量暫存器之各個封裝資料元素位置中的一數值之決定,並且儲存一個1進入對應至所決 定數值之該目的地寫入遮罩暫存器的位元位置。
- 如申請專利範圍第8項之製造物品,進一步導致:在進行被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定之前,設定該目的地寫入遮罩暫存器的所有位元位置為0。
- 如申請專利範圍第8項之製造物品,其中被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定平行地被進行。
- 如申請專利範圍第8項之製造物品,其中該目的地寫入遮罩暫存器是16位元或64位元。
- 如申請專利範圍第8項之製造物品,其中該來源向量暫存器是128位元、256位元、或512位元之一尺度。
- 如申請專利範圍第8項之製造物品,其中該決定並且儲存步驟包括:決定該來源向量暫存器之一最低有效封裝資料元素位置之一數值;以及當該決定數值不是較大於該目的地遮罩暫存器位元位置之數目時,則寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置;決定該來源向量暫存器之所有封裝資料元素位置是否已被處理;並且當該來源向量暫存器之所有封裝資料元素位置尚未被處理時,則決定該來源向量暫存器之下一個最低有效 封裝資料元素位置之一數值;以及寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置。
- 如申請專利範圍第13項之製造物品,進一步包括:當該來源向量暫存器之一封裝資料元素位置的決定數值是較大於該目的地寫入遮罩暫存器之尺度時,則停止該來源向量暫存器的封裝資料元素位置之決定。
- 一種處理器,其包括;一硬體解碼器,其用於將一單一指令解碼,該單一指令包含一目的地寫入遮罩暫存器運算元、一來源向量暫存器運算元、以及一運算碼;執行邏輯,其用於執行該經解碼單一指令以決定被儲存於該來源向量暫存器之各個封裝資料元素位置中的一數值,以及儲存一個1進入對應至所決定數值之該目的地寫入遮罩暫存器的位元位置。
- 如申請專利範圍第15項之處理器,其中該執行邏輯進一步進行:在進行被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定之前,設定該目的地寫入遮罩暫存器的所有位元位置為0。
- 如申請專利範圍第15項之處理器,其中被儲存於該來源向量暫存器之各個封裝資料元素位置中的數值之決定平行地被進行。
- 如申請專利範圍第15項之處理器,其中該目的地寫入遮 罩暫存器是16位元或64位元。
- 如申請專利範圍第15項之處理器,其中該來源向量暫存器是128位元、256位元、或512位元之一尺度。
- 如申請專利範圍第15項之處理器,其中作為決定儲存於該來源向量暫存器的各個封裝資料元素位置中之一數值,以及儲存一個1進入對應至該決定數值的目的地寫入遮罩暫存器之位元位置的步驟之一部份,該執行邏輯包括:決定該來源向量暫存器之一最低有效封裝資料元素位置之一數值;以及當該決定數值不是較大於該目的地遮罩暫存器位元位置之數目時,則寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置;決定該來源向量暫存器之所有封裝資料元素位置是否已被處理;並且當該來源向量暫存器之所有封裝資料元素位置尚未被處理時,則決定該來源向量暫存器之下一個最低有效封裝資料元素位置之一數值;以及寫入一個1進入該目的地寫入遮罩暫存器之一決定數值位元位置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067253 WO2013095661A1 (en) | 2011-12-23 | 2011-12-23 | Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342204A TW201342204A (zh) | 2013-10-16 |
TWI502491B true TWI502491B (zh) | 2015-10-01 |
Family
ID=48669299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101145669A TWI502491B (zh) | 2011-12-23 | 2012-12-05 | 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140201499A1 (zh) |
CN (1) | CN104137054A (zh) |
TW (1) | TWI502491B (zh) |
WO (1) | WO2013095661A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011649B (zh) * | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
US9946541B2 (en) * | 2015-12-18 | 2018-04-17 | Intel Corporation | Systems, apparatuses, and method for strided access |
US10409613B2 (en) * | 2015-12-23 | 2019-09-10 | Intel Corporation | Processing devices to perform a key value lookup instruction |
US20170192783A1 (en) * | 2015-12-30 | 2017-07-06 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Stride Load |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
US10289416B2 (en) * | 2015-12-30 | 2019-05-14 | Intel Corporation | Systems, apparatuses, and methods for lane-based strided gather |
US10268479B2 (en) * | 2016-12-30 | 2019-04-23 | Intel Corporation | Systems, apparatuses, and methods for broadcast compare addition |
US11175923B2 (en) | 2017-02-13 | 2021-11-16 | International Business Machines Corporation | Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200606717A (en) * | 2004-06-29 | 2006-02-16 | Intel Corp | Conditional instruction for a single instruction, multiple data execution engine |
TW200627269A (en) * | 2004-10-20 | 2006-08-01 | Intel Corp | Looping instructions for a single instruction, multiple data execution engine |
TW200802083A (en) * | 2005-11-22 | 2008-01-01 | Intel Corp | Technique for setting a vector mask |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
US20110264863A1 (en) * | 2007-12-31 | 2011-10-27 | Eric Sprangle | Device, system, and method for using a mask register to track progress of gathering elements from memory |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043867A (en) * | 1988-03-18 | 1991-08-27 | Digital Equipment Corporation | Exception reporting mechanism for a vector processor |
US6081880A (en) * | 1995-03-09 | 2000-06-27 | Lsi Logic Corporation | Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file |
US7272622B2 (en) * | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US9513905B2 (en) * | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
CN101604001B (zh) * | 2009-07-02 | 2011-05-18 | 浙江大学 | 一种基于测试向量相容的测试向量编码压缩方法 |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
-
2011
- 2011-12-23 US US13/994,445 patent/US20140201499A1/en not_active Abandoned
- 2011-12-23 CN CN201180076453.7A patent/CN104137054A/zh active Pending
- 2011-12-23 WO PCT/US2011/067253 patent/WO2013095661A1/en active Application Filing
-
2012
- 2012-12-05 TW TW101145669A patent/TWI502491B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200606717A (en) * | 2004-06-29 | 2006-02-16 | Intel Corp | Conditional instruction for a single instruction, multiple data execution engine |
TW200627269A (en) * | 2004-10-20 | 2006-08-01 | Intel Corp | Looping instructions for a single instruction, multiple data execution engine |
TW200802083A (en) * | 2005-11-22 | 2008-01-01 | Intel Corp | Technique for setting a vector mask |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
US20110264863A1 (en) * | 2007-12-31 | 2011-10-27 | Eric Sprangle | Device, system, and method for using a mask register to track progress of gathering elements from memory |
Also Published As
Publication number | Publication date |
---|---|
TW201342204A (zh) | 2013-10-16 |
US20140201499A1 (en) | 2014-07-17 |
WO2013095661A1 (en) | 2013-06-27 |
CN104137054A (zh) | 2014-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502491B (zh) | 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 | |
TWI496079B (zh) | 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI470544B (zh) | 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法 | |
TWI517031B (zh) | 用於呈現各別複數之複數共軛根之向量指令 | |
TWI518588B (zh) | 遮罩暫存器上的廣播運算技術 | |
CN107908427B (zh) | 用于多维数组中的元素偏移量计算的指令 | |
TWI473015B (zh) | 執行向量頻率擴展指令之方法、處理器核心以及製品 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
TWI498815B (zh) | 用以響應於單一指令而執行橫向部分和之系統、裝置及方法 | |
JP6635438B2 (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
TWI559219B (zh) | 用於選擇向量運算之元素的裝置及方法(二) | |
TWI517032B (zh) | 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 | |
KR102528073B1 (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
TWI617977B (zh) | 用於執行自旋迴路跳位的裝置及方法 | |
TW201730756A (zh) | 用於從鏈結結構取回元件的設備和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |