TWI518588B - 遮罩暫存器上的廣播運算技術 - Google Patents
遮罩暫存器上的廣播運算技術 Download PDFInfo
- Publication number
- TWI518588B TWI518588B TW101145906A TW101145906A TWI518588B TW I518588 B TWI518588 B TW I518588B TW 101145906 A TW101145906 A TW 101145906A TW 101145906 A TW101145906 A TW 101145906A TW I518588 B TWI518588 B TW I518588B
- Authority
- TW
- Taiwan
- Prior art keywords
- broadcast
- register
- source
- mask
- processor
- Prior art date
Links
- 239000000463 material Substances 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 22
- 230000000873 masking effect Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 80
- 239000013598 vector Substances 0.000 description 64
- 238000010586 diagram Methods 0.000 description 34
- 238000007667 floating Methods 0.000 description 13
- 235000012431 wafers Nutrition 0.000 description 11
- 238000003860 storage Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 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
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical 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
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 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
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 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/30098—Register arrangements
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本發明領域通常係關於電腦處理器結構,並且,更明確地說,係關於當被執行時導致一特定結果之指令。
依照控制流程資訊而合併來自向量來源的資料是向量為基礎結構之常見的議題。例如,為使下面的指令碼向量化,需要:1)產生指示a[i]>0是否為真的布爾(Boolean)向量之一方法,以及2)一種方法,其依照布爾向量,自二個來源(A[i]或B[i])選擇任何的一數值並且將該內容寫入一不同目的地(C[i])。
為了使用遮罩資料a[i],一個或多個遮罩暫存器被充填遮罩資料,該遮罩資料是陣列a[ ]之部份。如果該遮罩資料被使用以自不同的陣列(例如,A[ ]以及B[ ])選擇資料,則該遮罩資料同時也是習知為一寫入遮罩。
依據本發明之一實施例,係特地提出一種執行一電腦處理器中之遮罩廣播指令的方法,該方法包括下列步驟:提取該遮罩廣播指令,其中該遮罩廣播指令包含一目的地運算元、一來源運算元、以及廣播大小;解碼該提取遮罩廣播指令;以及執行該解碼的遮罩廣播指令以依照該廣播大小而執行自該來源運算元之一資料元素至該目的地運算元之一目的地暫存器的一廣播,其中該目的地暫存器是一遮罩暫存器。
200、252‧‧‧來源1
202、256‧‧‧寫入遮罩
254‧‧‧來源2
302、352‧‧‧假性碼
401-411‧‧‧廣播指令使用步驟
501-511、601-605‧‧‧廣播指令處理步驟
702‧‧‧VEX字首
705‧‧‧REX欄
715‧‧‧運算碼映製欄
720‧‧‧VVVV欄
725‧‧‧字首編碼欄
730‧‧‧真實運算碼欄
740‧‧‧Mod R/M位元組
742‧‧‧格式欄
744‧‧‧Reg欄
746‧‧‧R/M欄
750‧‧‧SIB位元組
752‧‧‧SS欄
754‧‧‧XXX欄
756‧‧‧BBB欄
762‧‧‧位移欄
764‧‧‧寬度欄
768‧‧‧尺度欄
772‧‧‧即時欄(IMM8)
774‧‧‧完全運算碼欄
800‧‧‧暫存器結構
810‧‧‧向量暫存器
815‧‧‧寫入遮罩暫存器
825‧‧‧一般用途暫存器
845、850‧‧‧暫存器檔案
900‧‧‧管線
902‧‧‧提取級
904‧‧‧長度解碼級
906‧‧‧解碼級
908‧‧‧分配級
910‧‧‧換名級
912‧‧‧排程級
914‧‧‧暫存器/記憶體讀取級
916‧‧‧執行級
918‧‧‧回寫/記憶體寫入級
922‧‧‧例外處理級
924‧‧‧提交級
930‧‧‧前端點單元
932‧‧‧分支預測單元
934‧‧‧指令快取單元
936‧‧‧指令轉譯後備緩衝器單元
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧換名/分配器單元
954‧‧‧除役單元
956‧‧‧排程器單元
958‧‧‧實際暫存器檔案單元
960‧‧‧執行群集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取單元
976‧‧‧L2快取單元
990‧‧‧處理器核心
1000‧‧‧指令解碼器
1002‧‧‧環狀網路
1004‧‧‧L2快取局部性子集
1006‧‧‧L1快取
1006A‧‧‧L1資料快取
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧拌和單元
1022A、1022B‧‧‧數值轉換單元
1024‧‧‧複製
1026‧‧‧寫入遮罩暫存器
1028‧‧‧16寬度ALU
1100、1215、1370、1380、1520‧‧‧處理器
1102A-N‧‧‧核心
1104A-N‧‧‧快取單元
1106‧‧‧共用快取單元
1108‧‧‧互連整合圖形邏輯
1110‧‧‧系統媒介單元
1112‧‧‧環狀基礎互連單元
1114‧‧‧整合記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200、1300、1400‧‧‧系統
1210‧‧‧單晶片處理器
1220‧‧‧控制器集線器
1240、1332、1334‧‧‧記憶體
1245‧‧‧協同處理器
1250‧‧‧輸入/輸出集線器
1260‧‧‧輸入/輸出裝置
1290‧‧‧圖形記憶體控制器集線器
1295‧‧‧連接
1314‧‧‧I/O裝置
1316、1320‧‧‧匯流排
1318‧‧‧匯流排橋
1322‧‧‧鍵盤及/或滑鼠
1324‧‧‧音訊I/O裝置
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧指令/指令碼及資料
1330‧‧‧指令碼
1338‧‧‧協同處理器
1339‧‧‧高性能界面
1350‧‧‧點對點互連
1352、1354‧‧‧P-P界面
1372、1382‧‧‧整合記憶體控制器單元
1376、1394、1386、1398‧‧‧點對點界面電路
1378、1388‧‧‧P-P界面電路
1390‧‧‧晶片組
1396‧‧‧界面
1414‧‧‧I/O裝置
1415‧‧‧遺留I/O裝置
1500‧‧‧單晶片上系統
1502‧‧‧互連單元
1510‧‧‧應用處理器
1530‧‧‧靜態隨機存取記憶體單元
1532‧‧‧直接記憶體存取單元
1540‧‧‧外部顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制指令碼
1608‧‧‧指令集編譯器
1610‧‧‧指令集二進制指令碼
1612‧‧‧指令轉換器
1614、1616‧‧‧x86指令集核心
本發明是藉由範例圖解地被說明並且不受限定於附圖,於附圖中相同之參考號碼指示相似元件,並且於其中:
第1圖是圖解地說明使用一寫入遮罩之範例。
第2A以及2B圖是圖解地說明一遮罩廣播指令之執行的
範例。
第3A以及3B圖是圖解地說明一遮罩廣播指令之假性碼的範例。
第4圖是圖解地說明一處理器中之遮罩廣播指令的使用之實施例。
第5圖是圖解地說明用以處理一遮罩廣播指令之方法的實施例。
第6圖是圖解地說明用以處理遮罩廣播指令之方法的實施例。
第7A、7B、以及7C圖是圖解地說明依照本發明實施例之特定向量親和性指令格式範例的方塊圖。
第8圖是依照本發明一實施例之暫存器結構的方塊圖。
第9A圖是圖解地說明依照本發明實施例之有序管線以及暫存器換名、無序發出/執行管線範例的方塊圖。
第9B圖是圖解地說明依照本發明實施例之被包含於處理器中的有序結構核心以及暫存器換名、無序發出/執行結構核心範例的實施例之方塊圖。
第10A以及10B圖是圖解地說明依照本發明實施例之無序結構範例的方塊圖。
第11圖是圖解地說明依照本發明實施例之可具有多於一個核心的處理器之方塊圖。
第12圖是依據本發明一實施例之系統的方塊圖。
第13圖是依據本發明一實施例之第二系統的方塊圖。
第14圖是依據本發明一實施例之第三系統的方塊圖。
第15圖是依據本發明一實施例之SoC的方塊圖。
第16圖是依據本發明實施例之對照使用一軟體指令轉換器以轉換一來源指令集之二進制指令為目標指令集之二進制的方塊圖。
於下面說明中,許多特定細節被提出。但是,應了解,本發明實施例可被實施而不必這些特定細節。於其他實例中,習知的電路、結構以及技術不詳細地被展示,
以免混淆這說明之了解。
說明中提及之“一實施例”、“一個實施例”、“一實施範例”等等,指示所述之實施例可包含一特定的特點、結構、或特性,但是每個實施例可以不必定得包含該特定的特點、結構、或特性。此外,此等詞組不必定得是關連於相同實施例。進一步地,當一特定的特點、結構、或特性關連於一實施例被說明時,不論其是否明確地被說明,其被認為是在熟習本技術者所了解的知識之內,以使得此等特點、結構、或特性關連於其他實施例發生作用。
一指令集,或指令集結構(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®先進向量擴充功能程式參考)。
遮罩廣播
下面是一般被稱為“遮罩廣播”之一指令的實施例,以及系統、結構、指令格式等等之實施例。其可被使用以執行此一指令,其是有益於包含在背景中被說明的許多不同領域中。一遮罩廣播指令之執行有效地處理具有遮罩資料之遮罩暫存器的裝載。於一實施例中,當遮罩資料被使用以選擇對於一向量暫存器之來源資料時,該遮罩資料也被稱為一寫入遮罩。換言之,遮罩廣播指令之執行導致一處理器進行自任何的一來源或複數個來源的一資料進入一遮罩暫存器之廣播。於一些實施例中,該等來源之至
少一者是一暫存器,例如,一128、256、512位元向量暫存器,等等。於一些實施例中,該等來源運算元之至少一者是關聯於一開始記憶體位置之資料元素的一集合。另外地,於一些實施例中,於任何遮罩廣播之前,一個或兩個來源之資料元素經過一資料轉換,例如,拌和、廣播、轉換等等(範例將被此處被討論)。於另一實施例中,目的地是一暫存器,例如,8位元遮罩暫存器、16位元遮罩暫存器、32位元遮罩暫存器、64位元遮罩暫存器、等等。於一實施例中,k廣播(kbroadcast)指令可以是VEX型式之指令。
這指令的範例格式是KBROADCAST{B/W/D/Q}k1,k2/記憶體{k3}”,其中該等運算元k1是目的地遮罩暫存器,k2/記憶體是第一來源以及k3是藉由第一來源被邏輯AND運算之選擇的其他來源。於一實施例中,KBROADCAST{B/W/D/Q}使用第一來源並且廣播一些或所有第一來源的內容至目的地遮罩暫存器。於一實施例中,KBROADCAST{B/W/D/Q}使用來源之最不重要的位元以廣播至遮罩暫存器。於另一實施例中,第一來源之一些或所有的內容利用第二來源內容被邏輯AND運算。此外,KBROADCAST{B/W/D/Q}廣播資料進入目的地遮罩暫存器中之連貫位元的收集中。位元廣播數目是依照指令名稱字尾。例如於一實施例中,對於在512位元向量暫存器上之產生的遮罩暫存器,“B”意謂著64位元資料被廣播、“W”意謂著32位元資料(一字組)被廣播、“D”意謂著16位元資料被廣播(雙字組)、“Q”意謂著八個位元資料被廣播(4個
字組)。於一些實施例中,目的地寫入遮罩也是一不同的大小(8位元、32位元等等)。KBROADCAST是指令之運算碼。通常,各個運算元被明確地界定於指令中。資料元素大小可於指令之“字首”中被界定,例如,經由相同於稍後被說明之“W”的資料粒度位元之一指示的使用。於多數實施例中,W將指示各資料元素是32或64位元。如果資料元素是32位元之大小,並且來源是512位元之大小,則每個來源有十六(16)個資料元素。
一寫入遮罩如何被使用之範例圖解地被說明於第1圖中。於這範例中,有二個來源,其各具有16資料元素。於多數情況中,這些來源之一者是一暫存器(對於這範例,來源1被視為一512位元暫存器,例如,具有16個32位元資料元素之ZMM暫存器,但是,其他資料元素以及暫存器大小也可被使用,例如,XMM、YMM暫存器以及16或64位元資料元素)。另一(選擇性)來源是一暫存器或一記憶體位置之任一者(於這說明來源2中是另一來源)。如果第二來源是一記憶體位置,於多數實施例中,其在任何來源廣播之前被安置於一暫時暫存器內。另外地,在安置進入暫時暫存器內之前,記憶體位置之資料元素可能經歷一資料轉換。所展示之遮罩樣型是0x5555。
於這範例中,對於具有一數值“1”(其是第二來源(來源2)之對應資料元素的一指示)之寫入遮罩的各個位元位置,應被寫入目的地暫存器之對應的資料元素位置中。因此,來源2之第一、第三、第五、等等位元位置(B0、B2、
B4、等等)被寫入目的地之第一、第三、第五、等等資料元素位置。該寫入遮罩具有一“0”數值之處,第一來源之資料元素被寫入目的地之對應的資料元素位置。當然,“1”以及“0”之使用可依據實作例而被跳換。另外地,雖然這圖形以及上面說明考慮分別的第一位置是最不重要位置,於一些實施例中該等第一位置是最重要位置。
第2A圖是圖解地說明使用一個來源之遮罩廣播指令的執行範例。於第2A圖中,來源200之內容被廣播進入寫入遮罩202中。於一實施例中,該最不重要的位元自來源200被廣播進入各個寫入遮罩。例如於一實施例中,來源200之最不重要的位元被廣播進入寫入遮罩202最不重要的位元中。如另一範例以及於另一實施例中,來源200最不重要的位元被廣播進入全體寫入遮罩202中。被寫入該寫入遮罩中之位元數是依照於指令字尾(例如,8、16、32、64位元等等)。例如於一實施例中,來源200A0最不重要的位元被廣播進入寫入遮罩202之第一個八位元中。
第2B圖是圖解地說明使用二個來源之遮罩廣播指令的執行範例。於第2B圖中,來源252內容與來源254內容被邏輯AND運算並且被廣播進入寫入遮罩256。於一實施例中,一來源之相同內容與另一來源之不同內容被邏輯AND運算。例如於一實施例中,來源252最不重要的位元與來源254的不同內容被邏輯AND運算。於這實施例中,這邏輯AND運算結果被儲存進入寫入遮罩256之一對應的位置。例如於一實施例中,來源252的最不重要位元A0與來源
254的第一個八位元之各者(例如,B7、B6、B5、B4、B3、B2、B1、以及B0)被邏輯AND運算。這些邏輯AND運算結果被寫進寫入遮罩256之對應的位元。
被使用於一程式碼序列中之kbroadcast指令範例是如下所示:for(i){bool useAlpha=bitTable[i]; for(j){…if(useAlpha){C[i][j]=Alpha[i][j]-Beta[i][j]; }Else{C[i][j]=Beta[i][j]; }}}
在上面程式碼中,純量布爾(Boolean)useAlpha決定陣列Alpha是否被使用於列i中的所有元件。使用該kbroadcast指令,一編譯器可廣播useAlpha進入遮罩暫存器
(如k1)中。if陳述在寫入遮罩k1之下藉由來源Alpha以及Beta向下翻滾至一減算成為C並且在k1的反向之下自Beta移動進入C。如果其是在“if”或“else”部份之任一者中有另一if情況(假設if B[i][j]>0),則編譯器可使用二個來源kbroadcast以合併useAlpha以及B[i][j]>0遮罩。
第3A以及3B圖是圖解地說明用於遮罩廣播指令之不同實施例中的假性碼範例。於第3A圖中,假性碼302圖解地說明來自一來源之一遮罩廣播。於第3B圖中,假性碼352圖解地說明來自一起被邏輯AND運算的二個來源之一遮罩廣播。
第4圖是圖解地說明處理器中一遮罩廣播指令之使用的實施例。在401,具有一個目的地運算元、一個二來源運算元、一偏移(如果有的話)、以及一寫入遮罩的一遮罩廣播指令被提取。於一些實施例中,目的地運算元是一個16位元暫存器(例如,稍後將詳細說明的一“k”遮罩暫存器)。來源運算元之至少一者可以是一記憶體來源運算元。於其他實施例中,一來源可以是一遮罩暫存器並且另一來源可以是記憶體,或兩個來源可以是遮罩暫存器。
在403,遮罩廣播指令被解碼。依據指令之格式,多種資料可在這步驟被詮釋,例如,是否有一資料轉換、寫入至以及取得那個暫存器、存取什麼記憶體位址,等等。
在405,來源運算元值被取得/被讀取。如果二個來源都是暫存器的話,則那些的暫存器被讀取。如果一個或兩個的來源運算元是一記憶體運算元,則關聯於運算元
之資料元素被取得。於一些實施例中,來自記憶體之資料元素被儲存進入一暫時暫存器中。
如果有任何資料元素轉換將被進行(例如一向上轉換、廣播、拌和等等,其稍後將被詳細說明),其可在407被進行。例如,來自記憶體之一個16位元資料元素可被向上轉換成為32位元資料元素或資料元素可自一個樣型被拌和至另一樣型(例如,XYZW XYZW XYZW…XYZW至XXXXXXXX YYYYYYYY ZZZZZZZZZZ WWWWWWWW)。
在409,遮罩廣播指令(或包括此一指令之運算,例如,微運算)藉由執行資源被執行。這執行導致自一個或多個來源進入目的地遮罩暫存器之資料的廣播。例如,來源運算元的資料元素之最不重要的位元被廣播經過一遮罩暫存器之位元的連貫收集上。如另一範例,一來源最不重要的位元與來自另一來源之資料被邏輯AND運算,其中邏輯AND運算結果被儲存於遮罩暫存器中的一對應位置。此一遮罩廣播範例圖解地被說明於第2AB圖中。
在411,遮罩廣播所產生的資料元素被儲存進入目的地暫存器。再次地,這範例被展示於第2AB圖中。雖然409以及411已分別地被說明,於一些實施例中,它們一起被進行作為指令之執行的一部份。
雖然上面以一型式之執行環境被說明,該執行環境是容易地被修改以符合於其他環境中,例如,將在下面詳細說明的有序以及無序環境。
第5圖是圖解地說明用以處理一遮罩廣播指令之
方法的實施例。於這實施例中,假設一些,如果不是所有,運算401-407已早先地被進行,但是,為了不混淆在下面呈現的細節,它們將不被展示。例如,提取以及解碼不被展示,運算元(來源以及目的地)取出也不被展示。
在501,第一來源資料、選擇性第二來源資料以及目的地資料大小被接收。例如,來自一第一來源運算元的第一來源資料之一第一來源資料元素被接收。於一實施例中,該第一來源資料元素是被儲存於第一來源運算元中的第一來源資料元素之最不重要的位元。如另一範例,來自一第二來源運算元之選擇的第二來源資料被接收。於一些實施例中,來自對應的指令運算元之目的地大小被接收。於另一實施例中,目的地大小依照指令名稱而被固定。於這實施例中,指令名稱之字尾決定目的地大小。例如於一實施例中,“B”意謂著64位元資料被廣播,“W”意謂著32位元資料(一個字組)被廣播,“D”意謂著16位元資料被廣播(雙字組),“Q”意謂著八位元資料被廣播(4個字組),以供用於512位元向量暫存器上之一產生的遮罩暫存器。
在503-511,一迴路被進行以廣播資料至遮罩暫存器。在505,廣播資料被設定作為第一來源資料。例如,第一來源資料之一資料元素之最不重要的位元是廣播資料。雖然於一實施例中,第一來源資料於整個迴路是相同,於一不同實施例中,第一來源資料可在迴路執行期間變化。在507,如果第二來源資料被使用,則對應的第二來源資料與廣播資料被邏輯AND運算。例如,來源252內容與來
源254內容被邏輯AND運算並且被廣播進入遮罩暫存器256,如於上面第2B圖中之說明。如果無第二來源被使用,則在507,沒有運算被進行。在509,廣播資料被複製至對應的目的地位置。例如,來源202內容被複製至適當的目的地位置204,如上面第2A圖所述。在511,迴路結束。
第6圖是圖解地說明用以處理一遮罩廣播指令之方法的實施例。於這實施例中,假設一些,如果不是全部,操作401-407已於601之前被進行。在601,對於各個目的地位元位置之數值是否需要二個來源之組合被決定。
如果在603,對於寫入遮罩之各個目的地位元位置,遮罩廣播數值是來自一個來源,則對應的數值被儲存於該目的地位元位置中。例如,如關於第2A圖所述地,來源之最不重要的位元被儲存進入寫入遮罩之對應的位元位置。如果在605,對於寫入遮罩之各個目的地位元位置,遮罩廣播數值是來源之組合,則對應的來源數值一起被邏輯AND運算並且產生的數值被儲存於目的地位元位置中。例如,來源252的最不重要位元A0與來源254的第一個八位元被邏輯AND運算,其中如第2B圖中所述地,所產生的數值被寫於寫入遮罩256之對應的位元位置。於一些實施例中,603以及605平行地被進行。
雖然第5以及6圖已依照來自一第一來源之一單一位元而討論遮罩廣播,其他實施例也可被想像(使用多於一單一者之遮罩廣播、使用一位元樣型之廣播等等)。另外地,應清楚地了解,其他型式的遮罩廣播亦可被使用。如
一單一指令地進行遮罩廣播之優點是,一程式將具有含指令快取隱示之一較小的二進制。例如於一實施例中,在執行期間,於管線中之提取、解碼、執行資源上將較無壓力。因而,這程式將可能更快地執行。
指令格式範例
此處說明之指令實施例可以不同格式被實施。另外地,系統、結構、以及管線範例將在下面詳細地被說明。指令實施例可於此等系統、結構、以及管線上被執行,但是不受那些詳細說明所限定。
VEX指令格式
VEX編碼允許指令具有多於二個運算元,並且允許SIMD向量暫存器較長於128位元。VEX字首之使用提供三個運算元(或更多)語法。例如,先前的二個運算元指令進行運算,例如,A=A+B,其重疊寫入一來源運算元。VEX字首之使用引動運算元執行非破壞性運算,例如,A=B+C。
第7A圖說明包含VEX字首702、真實運算碼欄730、Mod R/M位元組740、SIB位元組750、位移欄762、以及IMM8 772之AVX指令格式範例。第7B圖說明來自第7A圖之哪些欄組成一完全運算碼欄774以及一基底運算欄742。第7C圖說明來自第7A圖之哪些欄組成一暫存器索引欄744。
VEX字首(位元組0-2)702以一個三位元組型式被編碼。第一位元組是格式欄740(VEX位元組0,位元[7:0]),其包含一明確的C4位元組數值(被使用於識別C4指令格式
的獨特數值)。第二-第三位元組(VEX位元組1-2)包含提供特定性能的一些位元欄。明確地說,REX欄705(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而被形成。運算碼映製欄715(VEX位元組1,位元[4:0]-mmmmm)包含編碼一隱含之引導運算碼位元組的內容。W欄764(VEX位元組2,位元[7]-W)利用標誌VEX.W被表示,並且依據指令而提供不同功能。VEX.vvvv720(VEX位元組2,位元[6:3]-vvvv)之作用可包含下面者:1)VEX.vvvv編碼以反相(1之補數)形式被指定之第一來源暫存器運算元,並且是有效於具有2個或更多來源運算元之指令;2)VEX.vvvv編碼目的地暫存器運算元,對於某些向量位移以1之補數形式被指定;或3)VEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。如果VEX.L768大小欄(VEX位元組2,位元[2]-L)=0,其指示128位元向量;如果VEX.L=1,其指示256位元向量。字首編碼欄725(VEX位元組2,位元[1:0]-pp)提供用於基底運算欄之另外位元。
真實運算碼欄730(位元組3)同時也是習知如運算碼位元組。運算碼之部份被指定於這欄中。
MOD R/M欄740(位元組4)包含MOD欄742(位元
[7-6])、Reg欄744(位元[5-3])以及R/M欄746(位元[2-0])。Reg欄744之作用可包含下面者:編碼目的地暫存器運算元或來源暫存器運算元(Rrrr之rrr)的任一者,或被視為一運算碼擴充並且不被使用於編碼任何指令運算元。R/M欄746之作用可包含下面者:參考一記憶體位址而編碼指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元之任一者。
大小、索引、基底(SIB)-大小欄750(位元組5)之內容包含SS752(位元[7-6]),其被使用於記憶體位址之產生。SIB.xxx754(位元[5-3])以及SIB.bbb756(位元[2-0])之內容已關連於暫存器索引Xxxx以及Bbbb先前地被提及。
位移欄762以及即時欄(IMM8)772包含位址資料。
編碼成為VEX之範例
對於一指令編碼至VEX的範例,被說明於下面之附錄A中。
編碼為特定向量親和性指令格式之範例
暫存器結構範例
第8圖是依照本發明一實施例之暫存器結構800的方塊圖。於圖解說明之實施例中,有512位元寬之32個向量暫存器810;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被覆蓋在暫存器ymm0-16上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被覆蓋在暫存器xmm0-15上。
寫入遮罩暫存器815,於圖解說明之實施例中,
有8個寫入遮罩暫存器(k0至k7),其各是64位元之大小。於一不同實施例中,寫入遮罩暫存器815是16位元之大小。如先前所述,於本發明一實施例中,向量遮罩暫存器k0不能被使用作為一寫入遮罩;當將通常指示k0之編碼被使用於一寫入遮罩時,其選擇一有線寫入遮罩0xFFFF,有效地使對於那指令之寫入遮罩失效。
一般用途暫存器825,於圖解說明之實施例中,有十六個64位元之一般用途暫存器,其配合現有的x86位址模式一起使用以定址記憶體運算元。這些暫存器名稱被參考為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R15。
純量浮動點堆疊暫存器檔案(x87堆疊)845,於其上被混疊MMX封裝整數平面暫存器檔案850,於圖解說明之實施例中,該x87堆疊是一8個元素堆疊,其被使用以使用x87指令集擴充進行32/64/80位元浮動點資料上之純量浮動點運算;而MMX暫存器則被使用以進行64位元封裝整數資料上之運算,以及保持運算元以供用於在MMX以及XMM暫存器之間執行的一些運算。
本發明另外的實施例可使用較寬或較窄的暫存器。另外地,本發明不同的實施例可使用更多、更少或不同的暫存器檔案以及暫存器。
核心結構、處理器、以及電腦結構範例
對於不同用途的處理器核心,可以不同方式以及於不同的處理器中被實作。例如,此等核心之實作可包含:
1)有意用於一般用途計算之一般用途的有序核心;2)有意用於一般用途計算之高性能的一般用途無序核心;3)有意主要用於圖形及/或科學(總產量)計算之特定用途核心。不同處理器之實作可包含:1)包含有意用於一般用途計算之一個或多個一般用途有序核心及/或有意用於一般用途計算的一個或多個一般用途無序核心之CPU;以及2)包含有意主要用於圖形及/或科學(總產量)之一個或多個特定用途核心的協同處理器。此等不同處理器導致不同的電腦系統結構,其可包含:1)與CPU分別之晶片上的協同處理器;2)與CPU相同之封裝中的分別晶圓上之協同處理器;3)與CPU相同之晶圓上的協同處理器(於其實例中,此一協同處理器有時被稱為特定用途邏輯,例如,整合圖形及/或科學(總產量)邏輯,或作為特定用途核心);以及4)可包含在相同晶圓上的上述CPU(有時被稱為應用核心或應用處理器)、上述之協同處理器以及另外的功能性之單晶片系統。核心結構範例接著被說明,隨後有處理器以及電腦結構範例說明。
第9A圖是依照本發明實施例圖解說明有序管線範例以及暫存器換名、無序發出/執行管線範例之方塊圖。第9B圖是依照本發明實施例圖解說明將被包含在處理器中之有序結構核心範例以及暫存器換名、無序發出/執行結構核心範例之兩實施例的方塊圖。第9A-B圖中之實線方形圖解地說明有序管線以及有序核心,而虛線方形之選擇增加
部份圖解說明暫存器換名、無序發出/執行管線以及核心。在有序論點是無序論點之一子集的情況,該無序論點將被說明。
於第9A圖中,處理器管線900包含一提取級902、一長度解碼級904、一解碼級906、一分配級908、一換名級910、一排程(也習知如發送或發出)級912、一暫存器讀取/記憶體讀取級914、一執行級916、一回寫/記憶體寫入級918、一例外處理級922、以及一提交級924。
第9B圖展示包含耦合至一執行引擎單元950之一前端點單元930的處理器核心990,並且其兩者皆被耦合至一記憶體單元970。核心990可以是簡化指令集計算(RISC)核心、複雜指令集計算(CISC)核心、非常長指令字組(VLIW)核心或一混合或交錯的核心型式。再如另一選擇,例如,核心990可以是一特殊用途核心,例如,一網路或通訊核心、壓縮引擎、協同處理器核心、一般用途電腦圖形處理單元(GPGPU)核心、圖形核心、或其類似者。
前端點單元930包含耦合至一指令快取單元934的分支預測單元932,其被耦合至一指令轉譯後備緩衝器(TLB)936,其被耦合至一指令提取單元938,其被耦合至一解碼單元940。解碼單元940(或解碼器)可解碼指令,並且產生如一個或多個微運算、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或導自於原始指令。解碼單元940可使用各種不同機構被實作。適當的機構範例包含,但
是不受限定於,查詢表、硬體實作、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,核心990包含一微碼ROM或的其他媒體儲存用於某些巨指令的微碼(例如,於解碼單元940中或此外在前端點單元930之內)。解碼單元940被耦合至執行引擎單元950中之換名/分配器單元952。
執行引擎單元950包含耦合至一除役單元954之換名/分配器單元952以及一組之一個或多個排程器單元956。該等排程器單元956代表任何數目的不同排程器,其包含保留站、中央指令窗口,等等。排程器單元956耦合至實體暫存器檔案單元958。各個實際暫存器檔案單元958代表一個或多個實際暫存器檔案,其不同的一者儲存一個或多個不同資料型式,例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一指令指示器,其是將被執行的下一個指令之位址)等等。於一實施例中,實際暫存器檔案單元958包括向量暫存器單元、寫入遮罩暫存器單元以及純量暫存器單元。這些暫存器單元可提供建構向量暫存器、向量遮罩暫存器、以及一般用途暫存器。該實際暫存器檔案單元958被除役單元954重疊以說明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用一重排緩衝器以及一除役暫存器檔案;使用一未來檔案、一歷史緩衝器、以及一除役暫存器檔案;使用一暫存器映圖以及一暫存器池;等等)。除役單元954以及實際暫存器檔案單元958被耦合至執行群集960。執行
群集960包含一組的一個或多個執行單元962以及一組的一個或多個記憶體存取單元964。執行單元962可以在各種型式資料上(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)進行各種操作(例如,移位、加法、減法、乘法)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例可僅包含全部進行所有功能的一個執行單元或複數個執行單元。排程器單元956、實際暫存器檔案單元958以及執行群集960被展示為可能是複數,因為某些實施例對於某些型式之資料/操作產生分別管線(例如,一純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或記憶體存取管線,其各具有它們獨有的排程器單元、實際暫存器檔案單元、及/或執行群集-並且於一分別記憶體存取管線之情況中,某些實施例被實作,於其中僅這管線之執行群集具有記憶體存取單元964)。同時也應了解,在使用分別的管線情況,一個或多個的這些管線可以是無序發出/執行且其餘是有序。
記憶體存取單元964集合被耦合至記憶體單元970,其包含被耦合至一資料快取單元974(其被耦合至位準2(L2)快取單元976)的資料TLB單元972。於一實施範例中,記憶體存取單元964可包含負載單元、儲存位址單元以及儲存器資料單元,其各被耦合至記憶體單元970中之資料TLB單元972。指令快取單元934進一步被耦合至記憶體單元970中之位準2(L2)快取單元976。L2快取單元976被耦合至一個
或多個的其他快取位準並且最後至一主記憶體。
藉由範例,範例暫存器換名、無序發出/執行核心結構可如下所示地實作管線900:1)指令提取938進行提取以及長度解碼級902與904;2)解碼單元940進行解碼級906;3)換名/分配器單元952進行分配級908以及換名級910;4)排程器單元956進行排程級912;5)實際暫存器檔案單元958以及記憶體單元970進行暫存器讀取/記憶體讀取級914;執行群集960進行執行級916;6)記憶體單元970以及實際暫存器檔案單元958進行回寫/記憶體寫入級918;7)各種單元可被包含於例外處理級922中;以及8)除役單元954以及實際暫存器檔案單元958進行提交級924。
核心990可支援包含於此處說明之指令的一個或多個指令集(例如,x86指令集(具有被添加之較新版本的一些擴充);美國加州森尼維耳市之MIPS技術的MIPS指令集;美國加州森尼維耳市之ARM持股公司的ARM指令集(具有選擇之另外的擴充,例如NEON))。於一實施例中,核心990包含支援一封裝資料指令集擴充的邏輯(例如,AVX1、AVX2、等等),因而允許被許多多媒體應用所使用的操作將使用封裝資料被進行。
應了解,該核心可支援多線程(執行二個或更多個平行的操作或線程集合),並且可因此以多種方式處理,該等多種方式包含分時多線程、同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯核心)、或其組合(例如,分時提取與解碼以及隨後的同時
多線程,例如,Intel®Hyperthreading技術)。
雖然暫存器換名被說明於無序執行之脈絡中,應了解,暫存器換名可被使用於有序結構中。雖然說明之處理器實施例也包含分別的指令與資料快取單元934/974以及一共用L2快取單元976,另外實施例可具有,例如,供用於指令以及資料兩者之單一內部快取,例如,位準1(L1)內部快取、或複數個位準內部快取。於一些實施例中,系統可包含一內部快取以及外加於該核心及/或處理器的一外部快取之組合。另外地,所有的快取可以是外加於該核心及/或該處理器。
第10A-B圖是圖解地說明有序核心結構之更多特定範例的方塊圖,其核心將是一晶片中許多邏輯區塊(包含相同型式及/或不同型式的其他核心)之一者。該等邏輯區塊經由高頻寬互連網路(例如,環狀網路),取決於應用,而與一些固定功能邏輯、記憶體I/O界面、以及其他必須I/O邏輯通訊。
第10A圖是依照本發明實施例,單一處理器核心與其連接之晶圓上的互連網路1002以及其位準2(L2)快取1004之局部性子集的方塊圖。於一實施例中,指令解碼器1000支援具有封裝資料指令集擴充功能的x86指令集。L1快取1006允許低潛伏期存取快取記憶體進入純量以及向量單元。雖然於一實施例中(以簡化其設計),一純量單元1008以及一向量單元1010使用分別的暫存器集合(分別是,純量
暫存器1012以及向量暫存器1014)並且在它們之間轉移的資料被寫入至記憶體並且接著自位準1(L1)快取1006中被回讀,本發明另外的實施例可使用不同的方法(例如,使用單一暫存器集合或包含允許資料在二個暫存器檔案之間轉移而不必被寫入以及回讀的通訊路線)。
L2快取1004之局部性子集是廣域L2快取之部份,該廣域L2快取被分割成為每個處理器核心有一個之分別的局部性的子集。各處理器核心具有直接存取路線至其之自己的L2快取1004之局部性子集。利用一處理器核心所讀取的資料被儲存於其之L2快取子集1004中並且可與存取它們獨有的局部性L2快取子集的其他處理器核心快速地、平行地被存取。利用處理器核心被寫入之資料被儲存於其之自己的L2快取子集1004中並且如果必須的話,則自其他子集被湧送。環狀網路保護共用資料之協調性。環狀網路是雙向作用以允許媒介,例如,處理器核心、L2快取以及其他邏輯區塊在晶片內彼此通訊。各環狀資料通道的每個方向是1012位元寬。
第10B圖是依照本發明實施例之第10A圖中的處理器核心之部份展開圖。第10B圖包含L1快取1004之L1資料快取1006A部份,以及更多關於向量單元1010以及向量暫存器1014之詳細說明。明確地說,向量單元1010是16寬度向量處理單元(VPU)(參看16寬度ALU 1028),其執行一個或多個整數、單精確性浮動、以及雙重精確性浮動指令。VPU支援於記憶體輸入上之利用拌和單元1020拌合暫存器輸
入、利用數值轉換單元1022A-B之數值轉換、以及利用複製單元1024之複製。寫入遮罩暫存器1026允許推斷產生的向量寫入。
第11圖是依照本發明實施例之處理器1100的方塊圖,處理器1100可具有多於一個核心、可具有一整合記憶體控制器、以及可具有整合圖形。第11圖中之實線方塊說明具有單一核心1102A、系統媒介1110、一組的一個或多個集線器控制器單元1116之處理器1100,而選擇添加之虛線方塊說明具有複數個核心1102A-N、系統媒介單元1110中之一組的一個或多個整合記憶體控制器單元1114、以及特定用途邏輯1108之不同處理器1100。
因此,處理器1100的不同實作例可包含:1)具有整合圖形及/或科學(總產量)邏輯的特定用途邏輯1108之一CPU(其可包含一個或多個核心)、以及一個或多個一般用途核心之核心1102A-N(例如,一般用途有序核心、一般用途無序核心、其二者之組合);2)一協同處理器,其具有有意主要地用於圖形及/或科學(總產量)之大量特定用途核心的核心1102A-N;以及3)一協同處理器,其具有大量之一般用途有序核心的核心1102A-N。因此,處理器1100可以是,例如,一個一般用途處理器、協同處理器或特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、高產量多整合核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器、或其類
似者。處理器可被實作於一個或多個晶片上。處理器1100可以是一個或多個基片的一部份及/或,例如,可使用任何的一些處理技術,例如,BiCMOS、CMOS、或NMOS而被實作於一個或多個基片上。
記憶體階系包含在該等核心內之一個或多個快取位準、一組或一個或多個共用快取單元1106以及耦合至該組整合記憶體控制器單元1114之外部記憶體(未被展示)。該組共用快取單元1106可包含一個或多個中間位準快取,例如,位準2(L2)、位準3(L3)、位準4(L4)或其他快取位準、一最後位準快取(LLC)及/或其組合。雖然於一實施例中,一環狀基礎互連單元1112互連整合圖形邏輯1108、該組共用快取單元1106、以及系統媒介單元1110/整合記憶體控制器單元1114,不同的實施例可使用任何數量之習知技術以供互連此等單元。於一實施例中,協調性被保持在一個或多個快取單元1106以及核心1102-A-N之間。
於一些實施例中,一個或多個核心1102A-N是能夠多重排程。系統媒介1110包含調節以及操作核心1102A-N的那些構件。系統媒介單元1110可包含,例如,電力控制單元(PCU)以及顯示單元。PCU可以是或包含用以調整核心1102A-N以及整合圖形邏輯1108之電力狀態所需的邏輯以及構件。顯示單元是用以驅動一個或多個外部地連接顯示器。
核心1102A-N可以是同質的或異質的,就結構指令集而論;亦即,二個或更多個核心1102A-N可以是能夠執行相同指令集,而其他者則可以是僅能夠執行該指令集之
一子集或一不同的指令集。
第12-15圖是電腦結構範例之方塊圖。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至第12圖,其所展示的是依據本發明一實施例之系統1200的方塊圖。系統1200可包含一個或多個處理器1210,1215,其被耦合至一控制器集線器1220。於一實施例中,控制器集線器1220包含一圖形記憶體控制器集線器(GMCH)1290以及一輸入/輸出集線器(IOH)1250(其可以是在分別的晶片上);GMCH1290包含耦合至記憶體1240以及協同處理器1245的記憶體以及圖形控制器;IOH1250耦合輸入/輸出(I/O)裝置1260至GMCH 1290。另外地,記憶體以及圖形控制器之一者或兩者被整合在處理器之內(如此處之說明),記憶體1240以及協同處理器1245直接地耦合至具有IOH 1250之一單晶片中的處理器1210、以及控制器集線器1220。
另外的處理器1215之選擇性質是第12圖中以虛
線表示者。各個處理器1210、1215可包含此處說明之一個或多個處理核心並且可以是處理器1100的一些形式。
記憶體1240可以是,例如,動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或其二者之組合。對於至少一個實施例,控制器集線器1220經由多點匯流排,例如,前面匯流排(FSB)、點對點界面,例如,快速通道互連(QPI)、或相似連接1295與處理器1210、1215通訊。
於一實施例中,協同處理器1245是,例如,一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。於一實施例中,控制器集線器1220可包含一整合圖形加速裝置。
就包含建構學、微建構學、熱量學、功率消耗特性以及其類似者之價值觀而論,在實體資源1210、1215之間可以是具有多種差異性。
於一實施例中,處理器1210執行控制一般型式之資料處理操作的指令。被嵌入指令內部者可以是協同處理器指令。處理器1210確認這些協同處理器指令是將利用附帶的協同處理器1245被執行之型式。因此,處理器1210在協同處理器匯流排或其他互連上發出這些協同處理器指令(或代表協同處理器指令之控制信號),至協同處理器1245。協同處理器1245接受以及執行所接收的協同處理器指令。
接著參看至第13圖,其所展示的是依據本發明一實施例之第一更特定範例系統1300的方塊圖。如於第13圖
之展示,多處理器系統1300是一點對點互連系統,並且包含經由點對點互連1350耦合的第一處理器1370以及第二處理器1380。處理器1370以及1380各可以是處理器1100的某些版本。於本發明一實施例中,處理器1370以及1380分別地是處理器1210以及1215,而協同處理器1338是協同處理器1245。於另一實施例中,處理器1370以及1380分別地是處理器1210及協同處理器1245。
處理器1370以及1380被展示,而分別地包含整合記憶體控制器(IMC)單元1372以及1382。處理器1370同時也包含點對點(P-P)界面1376以及1378作為其之匯流排控制器單元之部份;同樣地,第二處理器1380包含P-P界面1386以及1388。處理器1370、1380可使用P-P界面電路1378、1388經由點對點(P-P)界面1350而交換資訊。如於第13圖之展示,IMC1372以及1382耦合處理器至分別的記憶體,亦即,記憶體1332以及記憶體1334,其可以是局部性被附帶至分別處理器之主記憶體部份。
處理器1370、1380各可使用點對點界面電路1376、1394、1386、1398,經由分別的P-P界面1352、1354而與一晶片組1390交換資訊。晶片組1390可經由高性能界面1339,而選擇性地與協同處理器1338交換資訊。於一實施例中,協同處理器1338是,例如,一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。
一共用快取(未被展示)可被包含在任一的處理
器中或在兩處理器之外,經由P-P互連而與處理器連接,以至於如果一處理器被安置成為低功率模式,則任一或兩處理器之局部性快取資訊可被儲存於共用快取中。
晶片組1390可經由界面1396被耦合至一第一匯流排1316。於一實施例中,第一匯流排1316可以是週邊構件互連(PCI)匯流排,或例如,一PCI快速匯流排之匯流排或另一個第三代I/O互連匯流排,然而本發明範疇是不因此受限定。
如於第13圖之展示,各種I/O裝置1314可與匯流排橋1318一起耦合至第一匯流排716,該匯流排橋1318耦合第一匯流排716至第二匯流排1320。於一實施例中,一個或多個另外的處理器1315,例如,協同處理器、高產量MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器,被耦合至第一匯流排1316。於一實施例中,第二匯流排1320可以是低引腳數(LPC)匯流排。各種裝置可被耦合至一第二匯流排1320,包含,例如,鍵盤及/或滑鼠1322、通訊裝置1327以及儲存單元1328,例如,碟片驅動器或其他大量儲存裝置,於一實施例中,其可包含指令/指令碼以及資料1330。進一步地,一音訊I/O 1324可被耦合至第二匯流排1320。注意到,其他的結構是可能。例如,取代第13圖之點對點結構,一系統可實作多點匯流排或其他的此等結構。
接著參看至第14圖,其所展示的是依據本發明一實施例之第二更特定範例系統1400的方塊圖。第13以及14
圖中之相同元件具有相同的參考號碼,並且第13圖之某些觀點已從第14圖中被省略,以便避免混淆第14圖之其他觀點。
第14圖分別地展示處理器1370、1380可包含整合記憶體以及I/O控制邏輯(“CL”)1372以及1382。因此,CL1372、1382包含整合記憶體控制器單元並且包含I/O控制邏輯。第14圖不只是展示被耦合至CL 1372、1382之記憶體1332、1334,但是同時也展示耦合至控制邏輯1372、1382之I/O裝置1414。遺留I/O裝置1415被耦合至晶片組1390。
接著參看至第15圖,其所展示的是依據本發明一實施例之SoC的方塊圖。相似於第11圖中之元件具有相同的參考號碼。同時,虛線方塊是在更先進之SoC上之選擇性特點。於第15圖中,一互連單元1502耦合至:一應用處理器1510,其包含一組的一個或多個核心202A-N以及共用快取單元1106;一系統媒介單元1110;一匯流排控制器單元1116;一整合記憶體控制器單元1114;一組或一個或多個協同處理器1520,其可包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器;靜態隨機存取記憶體(SRAM)單元1530;一直接記憶體存取(DMA)單元1532;以及用以耦合至一個或多個外部顯示器之一顯示單元1540。於一實施例中,協同處理器1520包含一特殊用途處理器,例如,一網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器,或其類似者。
此處揭示之機構實施例可以硬體、軟體,韌體或此等實作方法之組合而被實作。本發明實施例可被實作如
於包括至少一處理器、一儲存系統(包含依電性以及非依電性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置的可程控系統上執行之電腦程式或程式碼。
程式碼,例如,說明於第13圖形中之程式碼1330,可被應用至輸入指令以執行此處說明之功能並且產生輸出資訊。輸出資訊可以習知的形式,被施加至一個或多個輸出裝置。為了這應用目的,一處理系統,例如,包含具有,例如,一處理器;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器之任何系統。
程式碼可以一高階程序或物件導向之程式語言被實作以通訊於一處理系統。如果需要的話,程式碼也可以組合或機器語言被實作。實際上,此處說明之機構是不受限定於任何特定程式語言的範疇。於任何情況中,語言可以是一編譯或詮釋語言。
至少一實施例之一個或多個論點可藉由儲存於代表在處理器內之各種邏輯的機器可讀取媒體上之表示指令而被實作,該等指令當利用機器被讀取時,將導致機器製造邏輯以執行此處說明之技術。此等表示,習知如“IP核心”可被儲存在有實體、機器可讀取媒體上並且被供應至各種客製或廠製設施以負載進入實際上構成邏輯或處理器之製造機器內。
此等機器可讀取儲存媒體可包含,而不限制於,利用機器或裝置被製造或被形成之非暫時、有實體的物件
配置,其包含儲存媒體,例如,硬碟、任何其他型式碟片,如包含軟式磁片、光碟、小型碟片唯讀記憶體(CD-ROM)、可重寫小型碟片(CD-RW)、以及磁鐵式光碟、半導體裝置,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如,動態隨機存取記憶體(DRAM),靜態隨機存取記憶體(SRAM)、可消除可程控唯讀記憶體(EPROM)、快閃記憶體、電氣地可消除可程控唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁學或光學卡或適用於儲存電子式指令之任何其他型式的媒體。
因此,本發明實施例也包含非暫時、有實體的機器可讀取媒體,其包含指令或包含設計資料,例如,硬體說明語言(HDL),其界定此處說明之結構、電路、裝置、處理器及/或系統特點。此等實施例也可被稱為程式產品。
於一些情況中,一指令轉換器可被使用以轉換來自一來源指令集之指令至一目標指令集。例如,該指令轉換器可轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、變形、仿效、或其他之不同方法,以轉換一指令為將利用核心被處理的一個或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合被實作。指令轉換器可以是在處理器上、處理器之外、或部份在處理器上以及部份在處理器之外。
第16圖是依照本發明實施例之對照軟體指令轉換器的使用以轉換來源指令集之二進制指令為目標指令集
之二進制指令的方塊圖。於所說明之實施例中,指令轉換器是一軟體指令轉換器,然而另外地,該指令轉換器也可以軟體、韌體、硬體或其各種組合被實作。第16圖展示高階語言1602中之一程式,該程式可使用x86編譯器1604被編譯以產生x86二進制指令碼1606,其可利用具有至少一個x86指令集核心1616之一處理器而自然地被執行。具有至少一個x86指令集核心1616之處理器代表任何處理器,其可大致地進行相同如具有至少一個x86指令集核心之英特爾(Intel)處理器功能,其藉由相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體目標之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心之一英特爾處理器的相同結果。該x86編譯器1604代表可操作以產生x86二進制指令碼1606(例如,目的碼)之一編譯器,該x86二進制指令碼1606可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心1616之處理器上。同樣地,第16圖展示展示高階語言1602之程式,其可使用一不同的指令集編譯器1608被編譯以產生不同的指令集二進制指令碼1610,該指令集二進制指令碼1610可藉由不具有至少一個x86指令集核心1614之處理器(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公司之ARM指令集)自然地被執行。指令轉換器1612被使用,以轉換該x86二進制1606成
為可藉由不具有一x86指令集核心1614之處理器自然地被執行的一指令碼。這轉換的指令碼是不太可能相同於另外的指令集二進制指令碼1610,因為這樣的一指令轉換器可能是不容易構成;但是,該轉換的指令碼將達成一般操作並且可自不同指令集的指令被構成達成。因此,該指令轉換器1612代表軟體、韌體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制指令碼1606。
此處揭示的向量親和性指令格式中之指令的某些操作可利用硬體構件被進行並且可以機器可執行指令被實施,該等機器可執行指令被使用以導致,或至少導致,一電路或其他硬體構件藉由進行該等操作之指令被程式化。該電路可包含指定一些範例之一般用途或特殊用途處理器、或邏輯電路。該等操作也可選擇地利用硬體以及軟體之組合被執行。執行邏輯及/或處理器可包特殊或特定電路或其他邏輯,其回應於一機器指令或導自於該機器指令之一個或多個控制信號以儲存指定結果運算元之一指令。例如,此處揭示之指令實施例可於第12-15圖之一個或多個系統中被執行,並且向量親和性指令格式中之指令實施例可以利用將於系統中被執行之程式碼方式被儲存。另外地,這些圖形之處理元件可採用此處詳細說明的詳細管線及/或結構(例如,有序以及無序結構)之一者。例如,有序結構之解碼單元可解碼指令,傳送該解碼的指令至一向量
或純量單元,等等。
上面之說明是欲說明本發明之較佳實施例。從上面之討論,將可了解尤其在此一技術領域中,其成長是快速的,並且進一步的進展不是容易地可預知的,熟習本技術者應明白,本發明之配置以及細節可被修改,而不脫離本發明之附加申請專利範圍範疇以及它們的等效者內之原理。例如,方法之一個或多個操作可被組合或進一步被分離。
雖然實施例已被說明,其將自然地執行向量親和性指令格式,本發明的另外實施例可透過一仿效層而執行向量親和性指令格式,該仿效層是在一不同指令集的處理器(例如,執行美國加州森尼維耳市之MIPS技術的MIPS指令集之一處理器、執行美國加州森尼維耳市之ARM持股公司的ARM指令集之一處理器)上執行。同時,雖然圖形中之流程圖也展示利用本發明某些實施例被進行的一特定操作順序,應了解,此順序僅是範例(例如,不同的實施例可以不同順序進行操作、組合某些操作、重疊某些操作等等)。
於上面之說明中,為了說明目的,許多特定細節被敘述,以便提供本發明實施例之全面的了解。但是,熟習本技術者應明白,一個或多個其他實施例可被實施,而不必一些的這些特定細節。上述本發明之特定實施例不欲被提供用以限制本發明而是說明本發明實施例。本發明範疇是不藉由上面提供之特定範例被決定,而是僅藉由下面之申請專利範圍所決定。
A0-A15‧‧‧來源1
B0-B15‧‧‧來源2
Claims (27)
- 一種在一電腦處理器中執行一遮罩廣播指令的方法,該方法包含下列步驟:提取該遮罩廣播指令,其中該遮罩廣播指令包括一目的地運算元、一來源運算元、以及一廣播大小;解碼該提取的遮罩廣播指令;以及執行該解碼的遮罩廣播指令以依照該廣播大小而執行該來源運算元之一資料元素至該目的地運算元之一目的地暫存器的一廣播,其中該目的地暫存器是一遮罩暫存器。
- 如申請專利範圍第1項之方法,其中該資料元素是該來源運算元中之一最不主要資料位元。
- 如申請專利範圍第1項之方法,其中該廣播大小是導自於該遮罩暫存器指令之名稱。
- 如申請專利範圍第3項之方法,其中該廣播大小是選自由8、16、32、以及64位元所構成之群組。
- 如申請專利範圍第1項之方法,其中該來源運算元是一512位元暫存器。
- 如申請專利範圍第1項之方法,其中該廣播平行地被完成。
- 如申請專利範圍第1項之方法,其中執行一廣播之步驟進一步包含組合該來源運算元之該資料元素與另一來源之另一資料元素成為一結果,並且廣播該結果至該目 的地暫存器。
- 一種非暫時性機器可讀取媒體,其具有可執行的指令以導致一個或多個處理單元執行一方法來廣播資料,該方法包含下列步驟:回應於包括一目的地運算元、一第一來源運算元、以及一廣播大小之一遮罩廣播指令,擷取該第一來源運算元的一資料元素作為一廣播資料,對於該目的地運算元之各個目的地位置,依照該廣播大小將該廣播資料儲存至該目的地位置之中,其中該目的地運算元是一遮罩暫存器。
- 如申請專利範圍第8項之非暫時機器可讀取媒體,其進一步包含對於該各個目的地位置:組合該廣播資料與一第二來源運算元之另一資料元素。
- 如申請專利範圍第9項之非暫時機器可讀取媒體,其中該組合是一邏輯AND運算。
- 如申請專利範圍第9項之非暫時機器可讀取媒體,其中該第二運算元是一512位元暫存器。
- 如申請專利範圍第9項之非暫時機器可讀取媒體,其中該組合是平行地被完成。
- 如申請專利範圍第8項之非暫時機器可讀取媒體,其中該目的地運算元是一16位元遮罩暫存器。
- 如申請專利範圍第8項之非暫時機器可讀取媒體,其中 該資料元素是該來源運算元中之一最不主要資料位元。
- 如申請專利範圍第8項之非暫時機器可讀取媒體,其中該廣播大小是導自於該遮罩暫存器指令之名稱。
- 如申請專利範圍第15項之非暫時機器可讀取媒體,其中該廣播大小是選自由8、16、32、以及64位元所構成之群組。
- 如申請專利範圍第8項之非暫時機器可讀取媒體,其中該第二來源運算元是一512位元暫存器。
- 一種處理器,其包含;一硬體解碼器,其用以解碼一遮罩廣播指令,其中該遮罩廣播指令具有一目的地運算元、一來源運算元、以及一廣播大小;以及一執行單元,其用以依照該廣播大小而執行該來源運算元之一資料元素至一目的地暫存器的一廣播,該目的地暫存器對應該目的地運算元,其中該目的地暫存器是一遮罩暫存器。
- 如申請專利範圍第18項之處理器,進一步包含:用以儲存該第一資料元素之一來源暫存器;以及用以儲存該廣播資料元素之該目的地暫存器。
- 如申請專利範圍第18至19項中任一項之處理器,其中該資料元素是該來源運算元的一單一位元。
- 如申請專利範圍第20項之處理器,其中該單一位元是該來源運算元的一單一最不主要位元。
- 如申請專利範圍第20項之處理器,其中該執行單元係用 以將該單一位元廣播至該遮罩暫存器的至少16個連續的位元,且其中該來源運算元是一遮罩暫存器。
- 一種處理器,其包含:一解碼器,其用以解碼一遮罩廣播指令,其中該遮罩廣播指令具有一目的地遮罩暫存器、一第一來源運算元、以及一第二來源運算元;及一執行單元,其用以執行該解碼的遮罩廣播指令,其中該執行單元係用以對該第一來源運算元的一單一位元與該第二來源運算元的複數個位元的每一者進行AND邏輯運算,並且用以將對應的結果位元儲存至該目的地遮罩暫存器的對應位置之中。
- 如申請專利範圍第23項之處理器,其中該單一位元是一最不重要位元。
- 如申請專利範圍第23項之處理器,其中該第一來源運算元是一遮罩暫存器。
- 如申請專利範圍第23至25項中任一項之處理器,其中該第二來源運算元是一遮罩暫存器。
- 如申請專利範圍第23至25項中任一項之處理器,其中該等複數個位元為8位元、16位元、32位元、及64位元其中之一者。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067035 WO2013095575A1 (en) | 2011-12-22 | 2011-12-22 | Broadcast operation on mask register |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201344563A TW201344563A (zh) | 2013-11-01 |
TWI518588B true TWI518588B (zh) | 2016-01-21 |
Family
ID=48669216
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104137009A TWI622929B (zh) | 2011-12-22 | 2012-12-06 | 遮罩暫存器上的廣播運算技術(二) |
TW101145906A TWI518588B (zh) | 2011-12-22 | 2012-12-06 | 遮罩暫存器上的廣播運算技術 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104137009A TWI622929B (zh) | 2011-12-22 | 2012-12-06 | 遮罩暫存器上的廣播運算技術(二) |
Country Status (4)
Country | Link |
---|---|
US (1) | US20130326192A1 (zh) |
CN (1) | CN104011663B (zh) |
TW (2) | TWI622929B (zh) |
WO (1) | WO2013095575A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179520A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for variably expanding between mask and vector registers |
US20160179521A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US10268479B2 (en) * | 2016-12-30 | 2019-04-23 | Intel Corporation | Systems, apparatuses, and methods for broadcast compare addition |
US10846087B2 (en) * | 2016-12-30 | 2020-11-24 | Intel Corporation | Systems, apparatuses, and methods for broadcast arithmetic operations |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10732858B2 (en) * | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US11010159B2 (en) * | 2018-08-31 | 2021-05-18 | Arm Limited | Bit processing involving bit-level permutation instructions or operations |
CN112579168B (zh) * | 2020-12-25 | 2022-12-09 | 成都海光微电子技术有限公司 | 指令执行单元、处理器以及信号处理方法 |
CN113867802B (zh) * | 2021-12-03 | 2022-04-15 | 芯来科技(武汉)有限公司 | 一种中断分发装置、芯片和电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US7155601B2 (en) * | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
US7739319B2 (en) * | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
US7228401B2 (en) * | 2001-11-13 | 2007-06-05 | Freescale Semiconductor, Inc. | Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
TWI442236B (zh) * | 2008-10-20 | 2014-06-21 | Mosaid Technologies Inc | 串聯連接裝置之資料的選擇性廣播 |
US20130212354A1 (en) * | 2009-09-20 | 2013-08-15 | Tibet MIMAR | Method for efficient data array sorting in a programmable processor |
-
2011
- 2011-12-22 US US13/995,430 patent/US20130326192A1/en not_active Abandoned
- 2011-12-22 CN CN201180075791.9A patent/CN104011663B/zh active Active
- 2011-12-22 WO PCT/US2011/067035 patent/WO2013095575A1/en active Application Filing
-
2012
- 2012-12-06 TW TW104137009A patent/TWI622929B/zh active
- 2012-12-06 TW TW101145906A patent/TWI518588B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TWI622929B (zh) | 2018-05-01 |
WO2013095575A1 (en) | 2013-06-27 |
CN104011663B (zh) | 2018-01-26 |
TW201344563A (zh) | 2013-11-01 |
US20130326192A1 (en) | 2013-12-05 |
TW201638773A (zh) | 2016-11-01 |
CN104011663A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI518588B (zh) | 遮罩暫存器上的廣播運算技術 | |
TWI496079B (zh) | 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體 | |
TWI502491B (zh) | 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI467477B (zh) | 向量親合的指令格式及其執行 | |
TWI502492B (zh) | 封裝資料重整控制索引產生處理器、方法、系統及指令 | |
TWI544411B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
TWI473015B (zh) | 執行向量頻率擴展指令之方法、處理器核心以及製品 | |
TWI647613B (zh) | 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(三) | |
TWI644256B (zh) | 用以執行向量飽和雙字/四字加法的指令及邏輯 | |
CN107220029B (zh) | 掩码置换指令的装置和方法 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
TW201337748A (zh) | 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TW201342221A (zh) | 用於在多維度陣列中之元件偏移計算的指令 | |
TW201738733A (zh) | 執行指令以排列遮罩的系統及方法 | |
TW201636827A (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
TW201741868A (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
TWI559219B (zh) | 用於選擇向量運算之元素的裝置及方法(二) | |
TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 | |
TW201730756A (zh) | 用於從鏈結結構取回元件的設備和方法 | |
US20140068227A1 (en) | Systems, apparatuses, and methods for extracting a writemask from a register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |