TW201732554A - 毗連資料元素成對調換處理器、方法、系統、及指令 - Google Patents
毗連資料元素成對調換處理器、方法、系統、及指令 Download PDFInfo
- Publication number
- TW201732554A TW201732554A TW105137684A TW105137684A TW201732554A TW 201732554 A TW201732554 A TW 201732554A TW 105137684 A TW105137684 A TW 105137684A TW 105137684 A TW105137684 A TW 105137684A TW 201732554 A TW201732554 A TW 201732554A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- contiguous
- pair
- instruction
- source
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 47
- 238000003860 storage Methods 0.000 claims abstract description 64
- 230000004044 response Effects 0.000 claims abstract description 20
- 239000000463 material Substances 0.000 claims description 90
- 238000007667 floating Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 27
- 238000005056 compaction Methods 0.000 claims description 12
- 238000004519 manufacturing process Methods 0.000 claims description 9
- 230000008707 rearrangement Effects 0.000 claims description 7
- 230000017105 transposition Effects 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 88
- 238000010586 diagram Methods 0.000 description 46
- 239000013598 vector Substances 0.000 description 39
- 230000000873 masking effect Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 235000009854 Cucurbita moschata Nutrition 0.000 description 6
- 240000001980 Cucurbita pepo Species 0.000 description 6
- 235000009852 Cucurbita pepo Nutrition 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 235000020354 squash Nutrition 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013019 agitation Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003370 grooming effect Effects 0.000 description 1
- 238000000329 molecular dynamics simulation 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
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
處理器包含用以解碼毗連資料元素成對調換指令之解碼單元。該指令用以指示包含複數對的毗連資料元素之源緊縮資料,且用以指示目的儲存位置。執行單元係與該緊縮資料暫存器與該解碼單元相耦接。該執行單元回應於該指令用以將結果緊縮資料儲存在該目的儲存位置中,該結果緊縮資料用以包含複數對的毗連資料元素。該結果緊縮資料之各對的毗連資料元素對應於該源緊縮資料之不同對的毗連資料元素。在各對的該結果緊縮資料中之該毗連資料元素在位置上係已相對於在各對應對的該源緊縮資料中之該毗連資料元素被調換過。
Description
在本文中所述之實施例整體而言係有關處理器。詳言之,在本文中所述之實施例整體而言係有關用以回應於指令而對緊縮資料進行操作之處理器。
許多處理器具有單一指令、多資料(SIMD)架構。在SIMD架構中,多個資料元素可作為緊縮資料或向量資料而被緊縮在一個暫存器或記憶體位置內。在緊縮或向量資料中,暫存器或記憶體位置之位元可在邏輯上被劃分成資料元素之序列。例如,128位元寬之緊縮資料暫存器可具有兩個64位元資料元素、四個32位元資料元素、八個16位元資料元素或十六個8位元資料元素。該資料元素之各者可表示可分別地及/或獨立於其他資料來操作之單獨的資料片段(例如,像素顏色組件、浮點數等等)。
在此種SIMD架構中,緊縮資料指令、向量指令或SIMD指令可被使用以同時地及/或平行地對此種緊縮資料
或向量運算元之多個資料元素或兩個此種緊縮資料或向量運算元之多對資料元素進行操作。該處理器可具有回應於該指令之平行執行硬體,以同時地及/或平行地對該資料進行操作。
100‧‧‧處理器
102‧‧‧資料元素成對調換指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
110‧‧‧源緊縮資料暫存器
112‧‧‧源緊縮資料
114‧‧‧目的緊縮資料暫存器
116‧‧‧結果緊縮資料
172A-N‧‧‧一或多個核心
226‧‧‧方法
227‧‧‧方塊
228‧‧‧方塊
306‧‧‧執行單元
312‧‧‧源緊縮資料
316‧‧‧結果緊縮資料
330‧‧‧資料元素成對調換操作
332‧‧‧在相對位置調換
406‧‧‧執行單元
412‧‧‧源緊縮資料
416‧‧‧結果緊縮資料
420‧‧‧源緊縮資料操作遮罩
430‧‧‧資料元素成對調換操作
506‧‧‧執行單元
512‧‧‧源緊縮資料
516‧‧‧結果緊縮資料
520‧‧‧源緊縮資料操作遮罩
530‧‧‧資料元素成對調換操作
606‧‧‧執行單元
612‧‧‧源緊縮資料
616‧‧‧結果緊縮資料
618‧‧‧源緊縮資料操作遮罩暫存器
620‧‧‧源緊縮資料操作遮罩
630‧‧‧資料元素成對調換操作
702‧‧‧資料元素成對調換指令
740‧‧‧運算碼
742‧‧‧源緊縮資料指示符
744‧‧‧目的儲存位置指示符
746‧‧‧源緊縮資料操作遮罩指示符
748‧‧‧遮罩指示符
750‧‧‧資料元素大小指示符
752‧‧‧非運算碼調換控制位元
808‧‧‧緊縮資料暫存器
918‧‧‧緊縮資料操作遮罩暫存器
1002‧‧‧VEX前置
1005‧‧‧REX欄位
1015‧‧‧運算碼映射欄位
1020‧‧‧VEX.vvvv
1025‧‧‧前置編碼欄位
1030‧‧‧真實運算碼欄位
1030‧‧‧真實運算碼欄位
1040‧‧‧ModR/M位元組
1042‧‧‧基本運算欄位
1044‧‧‧暫存器索引欄位
1046‧‧‧R/M欄位
1050‧‧‧SIB位元組
1054‧‧‧SIB.xxx
1056‧‧‧SIB.bbb
1062‧‧‧位移欄位
1064‧‧‧W欄位
1068‧‧‧VEX.L大小欄位
1072‧‧‧立即欄位
1074‧‧‧完整運算碼欄位
1100‧‧‧暫存器架構
1110‧‧‧向量暫存器
1115‧‧‧寫入遮罩暫存器
1125‧‧‧通用暫存器
1145‧‧‧純量浮點堆疊暫存器檔案
1150‧‧‧MMX緊縮整數平面暫存器檔案
1200‧‧‧處理器管線
1202‧‧‧提取級
1204‧‧‧長度解碼級
1206‧‧‧解碼級
1208‧‧‧配置級
1210‧‧‧更名級
1212‧‧‧排程級
1214‧‧‧暫存器讀取/記憶體讀取級
1216‧‧‧執行級
1218‧‧‧寫回/記憶體寫入級
1222‧‧‧異常處置級
1224‧‧‧提交級
1230‧‧‧前端單元
1232‧‧‧分支預測單元
1234‧‧‧指令快取單元
1236‧‧‧指令轉譯後備緩衝區
1238‧‧‧指令提取單元
1240‧‧‧解碼單元
1250‧‧‧執行引擎單元
1252‧‧‧更名/配置器單元
1254‧‧‧止用單元
1256‧‧‧排程器單元
1258‧‧‧實體暫存器檔案單元
1260‧‧‧執行叢集
1262‧‧‧執行單元
1264‧‧‧記憶體存取單元
1270‧‧‧記憶體單元
1272‧‧‧資料TLB單元
1274‧‧‧資料快取單元
1276‧‧‧L2快取單元
1290‧‧‧處理器核心
1300‧‧‧指令解碼器
1302‧‧‧晶粒上的互連網路
1304‧‧‧L2快取
1306‧‧‧L1快取
1306A‧‧‧L1資料快取
1308‧‧‧純量單元
1310‧‧‧向量單元
1310‧‧‧向量單元
1312‧‧‧純量暫存器
1314‧‧‧向量暫存器
1320‧‧‧攪拌單元
1322A‧‧‧數值轉換單元
1324‧‧‧複製單元
1326‧‧‧寫入遮罩暫存器
1328‧‧‧向量處理單元
1400‧‧‧處理器
1402A‧‧‧核心
1406‧‧‧共用快取單元
1408‧‧‧專用核心
1410‧‧‧系統代理單元
1412‧‧‧環狀式互連單元
1414‧‧‧整合式記憶體控制器單元
1416‧‧‧匯流排控制器單
1500‧‧‧系統
1510‧‧‧處理器
1515‧‧‧處理器
1520‧‧‧控制器集線器
1540‧‧‧記憶體
1545‧‧‧協同處理器
1550‧‧‧輸入/輸出集線器
1560‧‧‧耦接輸入/輸出(I/O)裝置
1590‧‧‧圖形記憶體控制器集線器
1595‧‧‧連接
1600‧‧‧多處理器系統
1614‧‧‧I/O裝置
1615‧‧‧處理器
1616‧‧‧第一匯流排
1618‧‧‧匯流排橋接
1620‧‧‧第二匯流排
1622‧‧‧鍵盤及/或滑鼠
1624‧‧‧音訊I/O
1627‧‧‧通訊裝置
1628‧‧‧儲存單元
1630‧‧‧指令/碼及資料
1632‧‧‧記憶體
1634‧‧‧記憶體
1638‧‧‧協同處理器
1639‧‧‧高性能介面
1650‧‧‧點對點互連
1652‧‧‧點對點介面
1654‧‧‧點對點介面
1670‧‧‧第一處理器
1672‧‧‧整合式記憶體及I/O控制邏輯
1676‧‧‧點對點介面電路
1678‧‧‧點對點介面電路
1680‧‧‧第二處理器
1682‧‧‧整合式記憶體及I/O控制邏輯
1686‧‧‧點對點介面電路
1688‧‧‧點對點介面電路
1690‧‧‧晶片組
1694‧‧‧點對點介面電路
1696‧‧‧介面
1698‧‧‧點對點介面電路
1700‧‧‧系統
1714‧‧‧I/O裝置
1715‧‧‧舊有I/O裝置
1800‧‧‧系統晶片
1802‧‧‧互連單元
1810‧‧‧應用處理器
1820‧‧‧協同處理器
1830‧‧‧靜態隨機存取記憶體(SRAM)單元
1832‧‧‧直接記憶體存取(DMA)單元
1840‧‧‧顯示單元
1902‧‧‧高階語言
1904‧‧‧x86編譯器
1906‧‧‧x86二進制碼
1908‧‧‧指令集編譯器
1910‧‧‧指令集二進制碼
1912‧‧‧指令轉換器
1914‧‧‧不具有至少一個x86指令集核心之處理器
1916‧‧‧具有至少一個x86指令集核心之處理器
藉由參考用於繪示實施例之以下描述及附圖,可最佳地來瞭解本發明。在圖式中:圖1係可操作以執行毗連資料元素成對調換指令之實施例之處理器之實施例之方塊圖。
圖2係執行毗連資料元素成對調換指令之實施例之方法之實施例之方塊流程圖。
圖3係繪示毗連資料元素成對調換操作之範例實施例之方塊圖。
圖4係繪示被遮罩之毗連資料元素成對調換操作之第一範例實施例之方塊圖。
圖5係繪示被遮罩之毗連資料元素成對調換操作之第二範例實施例之方塊圖。
圖6係繪示被使用以調換複數之實數及虛數分量之被遮罩之毗連資料元素成對調換操作之更特定範例實施例之方塊圖。
圖7係毗連資料元素成對調換指令之範例實施例之方塊圖。
圖8係合適的一組緊縮資料暫存器之範例實施例之方
塊圖。
圖9係合適的一組緊縮資料操作遮罩暫存器之範例實施例之方塊圖。
圖10A至10C係繪示依照本發明之實施例之通用向量親和指令格式及其指令範本之方塊圖。
圖11係暫存器架構之實施例之方塊圖。
圖12A係繪示循序管線之實施例及暫存器更名亂序發出/執行管線之實施例之方塊圖。
圖12B係包含耦接至執行引擎單元之前端單元且兩者耦接至記憶體單元之處理器核心之實施例之方塊圖。
圖13A係單一處理器核心連同其至晶粒上的互連網路之連接及其2級(L2)快取之本端子集合之實施例之方塊圖。
圖13B係圖13A之處理器核心之一部分之擴展圖之實施例之方塊圖。
圖14係可具有多於一個核心、可具有整合式記憶體控制器及可具有整合式圖形之處理器之實施例之方塊圖。
圖15係電腦架構之第一實施例之方塊圖。
圖16係電腦架構之第二實施例之方塊圖。
圖17係電腦架構之第三實施例之方塊圖。
圖18係電腦架構之第四實施例之方塊圖。
圖19係依照本發明之實施例之使用軟體指令轉換器以將在源指令集中之二進位指令轉換為在目標指令集中之二進位指令之方塊圖。
在本文中所揭示的係毗連資料元素成對調換指令、用以執行該指令之處理器、當處理或執行該指令時由該處理器所執行之方法、結合有一或多個處理器以處理或執行該指令之系統,以及具有該指令之程式或機器可讀取儲存媒體。在以下的說明中,闡述了許多特定細節(例如,特定指令操作、資料格式、資料之類型、處理器組態、微架構細節、操作之序列等等)。然而,可在沒有這些特定細節的情況下來實施實施例。在其他例子中,未詳細地展示習知之電路、結構及技術以避免模糊對本說明之瞭解。
圖1為可操作以執行毗連資料元素成對調換指令102之實施例之處理器100之實施例之方塊圖。在某些實施例中,處理器可表示積體電路及/或可包含設置在半導體晶粒上之積體電路或邏輯。在某些實施例中,處理器可以為通用處理器(例如,在桌上型、膝上型或其他電腦中所使用之類型之通用微處理器或中央處理單元(CPU))。或者,處理器可以為專用處理器。合適的專用處理器之範例包含(但不限於)網路處理器、通信處理器、密碼處理器、圖形處理器、協同處理器、內嵌處理器、數位信號處理器(DSP)及控制器(例如,微控制器)。該處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、極長指令字(VLIW)架構、混合架構、其他類型之架構中之任一者,或具有不同架構之組合(例
如,不同的核心可具有不同的架構)。
在操作期間,處理器100可接收毗連資料元素成對調換指令102。例如,可從在互連上之記憶體來接收該指令。該指令可表示巨集指令、組合語言指令、機器碼指令,或該處理器之指令集之其他指令或控制信號。在某些實施例中,該毗連資料元素成對調換指令可顯式地指定(例如,透過一或多個欄位或一組位元),或以其他方式指示(例如,隱含地指示)源儲存位置(例如,源緊縮資料暫存器110),其將儲存源緊縮資料112,且可指定或以其他方式指示其中將回應於該指令而儲存之結果緊縮資料116之目的儲存位置114。在某些實施例中,該指令可指定或僅指示單一個源緊縮資料(例如,僅指示單一個源緊縮資料暫存器110),而不是具有兩個或更多個源緊縮資料。
在繪示範例中,第一緊縮資料暫存器110被使用於源緊縮資料運算元112,而第二緊縮資料暫存器114被使用於結果緊縮資料運算元116,儘管此係非必需的。在其他實施例中,記憶體位置或其他儲存位置可視情況替代地被使用於這些運算元中之一或多者。該指令可具有用以指定緊縮資料暫存器(例如,暫存器110、114)或記憶體位置,或用於此種運算元之其他儲存位置之源及/或目的運算元指定欄位。或者,這些儲存位置中之一或多者可視情況被隱含於該指令(例如,隱含於該指令之運算碼),而不是被顯式地指定。再者,在某些實施例中,被使用於該
源緊縮資料之緊縮資料暫存器或其他儲存位置可視情況被隱含地重新使用為用於該結果緊縮資料之目的儲存位置,且僅被指定一次。在一個態樣中,源/目的緊縮資料暫存器可隱含地或默示地被理解為使用於源運算元與結果運算元兩者。
再次參照圖1,該處理器包含解碼單元或解碼器104。該解碼單元可接收及解碼該毗連資料元素成對調換指令。該解碼單元可輸出一或多個相對地較低階之指令或控制信號(例如,一或多個微指令、微操作、微碼登錄點、解碼指令或控制信號等等),其反映、表示及/或係從該相對地較高階之毗連資料元素成對調換指令所導出。在某些實施例中,該解碼單元可包含:一或多個輸入結構(例如,埠、互連、介面),其用以接收該毗連資料元素成對調換指令;與其耦接之指令識別及解碼邏輯,其用以識別及解碼該毗連資料元素成對調換指令;以及與其耦接之一或多個輸出結構(例如,埠、互連、介面),其用以輸出該低階指令或控制信號。可使用各種不同的機制來實施該解碼單元,其包含(但不限於)微碼唯讀記憶體(ROM)、查找表、硬體實施方案、可編程邏輯陣列(PLA)及適合用於實施解碼單元之其他機制。在某些實施例中,該解碼單元可被包括在該處理器之晶粒上。
在某些實施例中,替代將該毗連資料元素成對調換指令直接地提供給該解碼單元,可視情況使用指令仿真器、轉譯器、變形器、解譯器或其他指令轉換模組。各種類型
之指令轉換模組可在軟體、硬體、韌體或其等之組合中來實施。在某些實施例中,該指令轉換模組可位於處理器外部,諸如,例如,位於單獨的晶粒上及/或記憶體中(例如,作為靜態的、動態的或運行時間仿真模組)。藉由範例之方式,該指令轉換模組可接收該毗連資料元素成對調換指令,其可屬於第一指令集的,且可將該毗連資料元素成對調換指令仿真、轉譯、變形、解譯或以其他方式轉換成一或多個對應的中間指令或控制信號,其可屬於第二不同指令集的。該第二指令集之一或多個中間指令或控制信號可被提供給解碼單元(例如,解碼單元104),該解碼單元可將其等解碼成可由該處理器之原有硬體(例如,一或多個執行單元)來執行的一或多個低階指令或控制信號。
再次參照圖1,處理器100亦包含一組緊縮資料暫存器108。該緊縮資料暫存器之各者可表示可操作以儲存緊縮資料、向量資料或SIMD資料之晶粒上儲存位置。該緊縮資料暫存器可表示對於軟體及/或編程器係可見的架構上可見或架構暫存器,及/或係由該處理器之該指令集之指令所指示之用以識別運算元之該暫存器。這些架構暫存器與在給定之微架構中的其他非架構暫存器(例如,臨時暫存器、重排序緩衝區、止用暫存器等等)形成對比。該緊縮資料暫存器可以以不同的方式在不同的微架構中實施,且不被限制於任何特定類型之設計。合適類型之暫存器之範例係包含(但不限於)專用實體暫存器、使用暫存
器更名來動態地配置之實體暫存器及其等之組合。
再次參照圖1,執行單元106係與解碼單元104及緊縮資料暫存器108相耦接。該執行單元可透過其他中間組件(未圖示)而與這些組件相耦接。在某些實施例中,該執行單元可與該解碼單元一起位在晶粒上。該執行單元可接收表示及/或從該毗連資料元素成對調換指令所導出之該一或多個解碼或以其他方式轉換之指令或控制信號。該執行單元亦可接收源緊縮資料112。在某些實施例中,源緊縮資料112可包含至少兩對(或在某些情況下至少四對,或至少八對,或更多對)之毗連資料元素。藉由毗連資料元素,其表示每對資料元素可以是連續的及/或相接的,及/或在每對資料元素之間可以沒有任何額外的中間資料元素或位元。例如,在每對中該較低有效資料元素中之最高有效位元可比在每對中該較高有效資料元素中之最低有效位元少一個位元。在某些實施例中,該資料元素可視情況而為8位元位元組之資料元素。在其他實施例中,該資料元素可視情況而為多位元組資料元素,其各包含兩個或更多個8位元位元組,儘管其係非必需的。例如,該資料元素可視情況而為16位元資料元素、32位元資料元素或64位元資料元素。該資料元素可以為整數、固定點或浮點。在某些實施例中,該資料元素可視情況而為浮點資料元素,諸如,例如,32位元單精度浮點資料元素或64位元倍精度浮點資料元素,儘管本發明之範圍並非受限於此。
該執行單元可回應於該毗連資料元素成對調換指令及/或作為該毗連資料元素成對調換指令之結果(例如,回應於從該指令所解碼之一或多個指令或控制信號)來操作以將結果緊縮資料116儲存在由該指令所指示之該目的儲存位置中(例如,目的緊縮資料暫存器114)。在某些實施例中,結果緊縮資料116可包含至少兩對的毗連資料元素(例如,與在源緊縮資料112中相同的對數)。該結果緊縮資料之毗連資料元素之各對可對應於該源緊縮資料之不同對的毗連資料元素。例如,該結果緊縮資料之各對的毗連資料元素可對應於在相同相對位元位置及/或另外地在該緊縮資料內之相同相對位置中的該源緊縮資料之一對毗連資料元素。在某些實施例中,在各對的該結果緊縮資料中之該毗連資料元素在資料元素的位置上係已相對於在各對應對的該源緊縮資料中之該毗連資料元素被調換過。例如,在該源緊縮資料中之各對可包含較低有效資料元素及較高有效資料元素,且在該源緊縮資料中之該對較低有效資料元素可被儲存至在該結果緊縮資料中之該對應對之最高有效資料元素位置中,而在該源緊縮資料中之該對較高有效資料元素可被儲存至在該結果緊縮資料中之該對應對之較低有效資料元素位置中。在某些實施例中,該結果可以為針對圖3至6所展示及描述的那些結果中之任一者,儘管本發明之範圍並非受限於此。
在某些實施例中,調換在該結果緊縮資料之該對中之該毗連資料元素相對於在該源緊縮資料之該對應對中之該
毗連資料元素之該位置之態樣可以為隱含於及/或固定用於該毗連資料元素成對調換指令(例如,隱含於及/或固定用於該指令之運算碼),而非為靈活的及/或顯式地來指定(例如,透過該指令之額外靈活的非運算碼控制位元)。替代的可能方法係連同表示非運算碼調換控制位元之非運算碼混洗或置換控制位元一起使用靈活的混洗或重排指令。該混洗或重排指令可被使用以根據對應用於被混洗或置換之各個資料元素之該混洗或置換控制位元,而將來自於一或多個源緊縮資料之資料元素混洗或置換至在結果緊縮資料中之不同的資料元素位置。例如,這些混洗或置換控制位元之集合可被提供在該指令之立即值中,或在通常儲存在暫存器中之另一個源運算元中。
然而,至少對於某些應用而言,使用此種靈活的混洗或重排指令之此種替代方法存在有潛在的缺點。一方面,其通常需要額外的時間及/或努力來產生混洗或置換控制位元之該集合。例如,編程器可能需要顯式地來產生它們,或編譯器可能需要透過在該編譯器上之額外工作負載來產生它們。此外,將該混洗或置換控制位元儲存在暫存器中可能會佔住該暫存器而防止其被使用於另一用途。再者,當該指令具有用以指定暫存器以儲存該混洗或置換控制位元之額外欄位時,或當該混洗或置換控制位元係由該指令之立即值所提供時,則可能會增加該指令之長度。此可能傾向於減少可在指令束中所獲取之指令之數量及/或增加解碼該指令之複雜性及/或用以解碼該指令所需要之
時間,其可傾向於減少前端處理量。此外,這可能傾向於增加代碼大小。此外,在立即值的情況下,通常僅有一定數量之控制位元能夠適配在該立即值內,其可能限制可被混洗或置換之資料元素之數量。
然而,此種缺點通常可避免,在某些實施例中,當該毗連資料元素成對調換操作或態樣係隱含於及/或固定用於該毗連資料元素成對調換指令(例如,隱含於及/或固定用於該指令之運算碼),而非為靈活的及/或顯式地來指定(例如,透過該指令之額外靈活的非運算碼調換控制位元)時。在此種實施例中,不需要該指令具有或使用此種靈活的非運算碼調換控制位元(例如,混洗或置換控制位元之集合)。而是,該處理器可顯著地或潛在地僅基於該運算碼而不是基於任何此種非運算碼額外靈活的調換控制位元來瞭解或識別待被執行之毗連資料元素成對調換操作。此可幫助避免需要產生此種靈活的非運算碼調換控制位元,其可有助於簡化編程或編譯。此外,不需要耗用暫存器來將該靈活的非運算碼調換控制位元儲存在暫存器中,其可將其釋放而用於其他目的。再者,不需要該指令具有額外欄位來指定此種暫存器以儲存該靈活的非運算碼調換控制位元,或具有立即值以提供該靈活的非運算碼調換控制位元,其可有助於減少該指令之長度。這又可能傾向於減少該代碼大小。此外,這可能傾向於藉由增加可在指令束中所獲取之指令之數量及/或減少解碼該指令之複雜性及/或用以解碼該指令所需要之時間來幫助增加前端
處理量。
該執行單元及/或該處理器可包含具體的或特定的邏輯(例如,電晶體、積體電路或可能與韌體(例如,儲存在非揮發性記憶體中之指令)及/或軟體結合之其他硬體),其可操作以執行該毗連資料元素成對調換指令及/或回應於該毗連資料元素成對調換指令及/或作為該毗連資料元素成對調換指令之結果來儲存該結果緊縮資料(例如,回應於從該毗連資料元素成對調換指令所解碼之一或多個指令或控制信號)。藉由範例之方式,該執行單元可包含算術邏輯單元、邏輯單元或數位電路,以執行邏輯或資料移動操作等等。在某些實施例中,該執行單元可包含:一或多個輸入結構(例如,埠、互連、介面),其用以接收該源運算元;與其相耦接之邏輯,其用以接收及調換該資料元素位置;以及與其相耦接之一或多個輸出結構(例如,埠、互連、介面),其用以將調換資料元素輸出至該結果運算元。
在某些實施例中,與可被使用以執行靈活的混洗或重排指令之執行單元相比,用以執行該毗連資料元素成對調換指令之該執行單元可視情況而包含相對地較不靈活及/或相對地較不複雜及/或相對地較快的邏輯。通常,執行此種靈活的混洗或重排指令所需要的邏輯量傾向於係相當大量的。此係部分地由於用以操縱、解譯及使用混洗或置換控制位元之該多個集合以選擇待被儲存至該對應結果資料元素之該源資料元素所需要之邏輯。此種邏輯在晶粒上
佔用額外的空間,且亦傾向於耗用額外的電力。再者,與操縱、解譯及使用混洗或置換控制位元之該多個集合以靈活地選擇該源資料元素相關聯之該額外操作亦通常傾向於在待被執行之處理器時鐘週期方面花費額外的時間。然而,由於用於該毗連資料元素成對調換指令所執行之該操作可大致上係固定的(例如,調換毗連資料元素之相對位置),或至少比用於該混洗或重排指令所執行之該操作更不靈活得多,與可被使用以執行靈活的混洗或重排指令之邏輯相比,其為一種可能性來使用相對地較不靈活及/或相對地較少數量及/或相對地較不複雜及/或相對地較快的邏輯。例如,可使用特定地定製的相對較簡單之邏輯用於執行資料元素相對位置調換操作,而不需要適應使用混洗或置換控制位元之集合而從多於兩個的資料元素中靈活地選擇。藉由範例之方式,可潛在地使用固定的固線式資料元素路由或調換電路或路徑,而不是由該混洗/置換控制位元所控制之多工器,或其他此種靈活的且通常較慢的選擇電路。每個元素調換控制位元及相關聯的每個元素調換控制位元所控制的選擇邏輯可視情況被省略。通常,該毗連資料元素成對調換指令可在比用以執行靈活的混洗或重排指令所需要的時脈週期數少至少一個時脈週期,或可能少兩個或更多個時脈週期內執行。
然而,該毗連資料元素成對調換指令確實執行比上述的混洗及重排指令不靈活而更特定之操作。在某些實施例中,指令集(例如,包含解碼單元能夠解碼之該指令)可
包含一或多個毗連資料元素成對調換指令以及一或多個靈活的混洗或重排指令兩者。此可允許編程器或編譯器使用毗連資料元素成對調換指令來提高性能(例如,藉由解碼較短的指令長度及/或使用較快的執行邏輯)及/或當希望執行毗連資料元素成對調換操作時減少電力,或當希望執行更靈活的資料調處操作時,使用通常較慢的(例如,由於解碼較長的指令長度且使用較慢的執行邏輯)及通常更需要電力的靈活性的混洗及重排指令。
為了避免使該描述模糊,已經展示及描述相對地簡單的處理器100。然而,該處理器可視情況包含其他處理器組件。例如,各種不同的實施例可包含針對圖11至14中之任一者所展示及描述的該組件之各種不同的組合及組態。藉由範例之方式,考慮到圖12B,指令提取單元1238可提取該指令,解碼單元1240可解碼該指令,排程器單元1256可排程該相關聯之操作,止用單元1254可止用該指令等等。該處理器之所有的組件可被耦接在一起以允許它們如預期的來操作。
圖2為執行毗連資料元素成對調換指令之實施例之方法226之實施例之方塊流程圖。在各種實施例中,該方法可由處理器、指令處理裝置、積體電路或數位邏輯裝置來予以執行。在某些實施例中,圖2之該方法可由圖1之該處理器來予以執行及/或在圖1之該處理器內來予以執行。在本文中所述之用於圖1之該處理器及/或指令102之該組件、特徵及特定可選之細節亦可選地應用於圖2之
該方法,其可視情況由該處理器來予以執行及/或及藉由指令102來予以執行。或者,圖2之該方法可由相似的或不同的處理器或裝置來予以執行及/或在相似的或不同的處理器或裝置內來予以執行。再者,圖1之該處理器可執行與圖2之處理器相同、相似或不同的方法。
該方法包含在方塊227處接收該毗連資料元素成對調換指令。在各種態樣中,可在處理器或其一部分(例如,指令提取單元、解碼單元、匯流排介面單元等等)處接收該指令。在各種態樣中,可從處理器外及/或晶粒外源(例如,從記憶體、互連等等)或從處理器上及/或晶粒上源(例如,從指令快取、指令佇列等等)來接收該指令。該毗連資料元素成對調換指令可指定或以其他方式指示源緊縮資料,且可指定或以其他方式指示其中待儲存結果緊縮資料之目的儲存位置。在某些實施例中,該源緊縮資料可包含至少兩對的毗連(例如,連續的或相接的)資料元素。在某些實施例中,該指令可僅具有單一個源緊縮資料,而非兩個或更多個源緊縮資料,或立即值。在某些實施例中,該源緊縮資料之資料元素可視情況而為多位元組資料元素,其各包含兩個或更多個8位元位元組,儘管此非必需的。例如,該資料元素可視情況而為16位元資料元素、32位元資料元素或64位元資料元素。在某些實施例中,該資料元素可視情況而為浮點資料元素,諸如,例如,32位元單精度浮點資料元素或64位元倍精度浮點資料元素,儘管本發明之範圍並非受限於此。
在方塊228處,結果緊縮資料可回應於該毗連資料元素成對調換指令及/或作為該毗連資料元素成對調換指令之結果而被儲存在該指示的目的儲存位置中。在某些實施例中,該結果緊縮資料可包含至少兩對的毗連資料元素。該結果緊縮資料之各對的毗連資料元素對應於該源緊縮資料之不同對的毗連資料元素(例如,在該緊縮資料內之相同的位元位置及/或相同的相對位置中)。在某些實施例中,在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係已相對於在該源緊縮資料之各對應對的毗連資料元素中之該毗連資料元素而被調換過。例如,在該源緊縮資料中之各對可包含較低有效資料元素及較高有效資料元素,且在該源緊縮資料中之該對較低有效資料元素可被儲存至在該結果緊縮資料中之該對應對之最高有效資料元素位置中,而在該源緊縮資料中之該對較高有效資料元素可被儲存至在該結果緊縮資料中之該對應對之較低有效資料元素位置中。在某些實施例中,其可以係隱含於及/或固定用於該毗連資料元素成對調換指令之運算碼以執行此種毗連資料元素成對調換操作。在某些實施例中,該指令可不指定或以其他方式指示任何非運算碼調換控制位元(例如,如可以在靈活的置換或混洗指令之立即值或額外源緊縮資料中來提供)及/或可產生該結果緊縮資料而不使用任何此種非運算碼調換控制位元。
該繪示方法包含架構操作(例如,從軟體角度可見者)。在其他實施例中,該方法可視情況包含一或多個微
架構操作。藉由範例之方式,該指令可被獲取、解碼、排程亂序,源緊縮資料可被存取,執行單元可執行微架構操作以實施該指令等等。
圖3為繪示可回應於毗連資料元素成對調換指令之實施例而執行之毗連資料元素成對調換操作330之實施例之方塊圖。該指令可指定或以其他方式指示具有至少兩對的毗連資料元素之源緊縮資料312。在該繪示之範例實施例中,該源緊縮資料包含至少第一最低有效對之毗連資料元素A0與A1及第二較高有效對的毗連資料元素A2與A3,且可選地可包含零個或多個其他對的毗連資料元素。
通常,在各個源緊縮資料運算元中之資料元素之數量可等於在該源緊縮資料運算元之位元中之該大小除以在單一資料元素之位元中之該大小。在各種實施例中,該源緊縮資料運算元之各者之該寬度可以為64位元、128位元、256位元、512位元或1024位元,儘管本發明之範圍並非受限於此。在各種實施例中,各個資料元素之大小可以為8位元、16位元、32位元或64位元,儘管本發明之範圍並非受限於此。其他緊縮資料運算元大小及資料元素寬度亦係合適的。在各種實施例中,在該源緊縮資料運算元之各者中可存在有至少兩個、至少四個、至少八個、至少十六個、至少三十二個或多於三十二個資料元素(例如,至少六十四個)。
在該毗連資料元素成對調換操作期間,源緊縮資料312可被提供給執行單元306。該執行單元可回應於該指
令及/或操作而產生且儲存結果緊縮資料316。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指定或以其他方式所指示之目的緊縮資料暫存器或其他目的儲存位置中。在某些實施例中,該結果緊縮資料可包含至少兩對的毗連資料元素。在某些實施例中,該結果緊縮資料可包含與在該源緊縮資料中相同數量的毗連資料元素對。該結果緊縮資料之各對的毗連資料元素可對應於該源緊縮資料之不同對的毗連資料元素(例如,在該緊縮資料內之相同的相對位元位置或另外地相同的相對位置中)。例如,在該繪示之範例實施例中,該結果緊縮資料包含至少第一最低有效(如圖示最左側)對的毗連資料元素A1與A0(例如,其可對應於該源緊縮資料之該最低有效(如圖示最左側)對的毗連資料元素A0與A1),及第二較高有效(如圖示最右側)對的毗連資料元素A3與A2(例如,其可對應於該源緊縮資料之該較高有效(如圖示最右側)對的毗連資料元素A2與A3),且可選地可以包含零個或更多個其他對的毗連資料元素。如一般由箭頭332所展示的,在某些實施例中,在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係已相對於在該源緊縮資料之各對應對的毗連資料元素中之該毗連資料元素而被調換過。
例如,在該源緊縮資料中之該最低有效對的毗連資料元素之該最低有效資料元素A0可被儲存至作為在該結果緊縮資料中之該對應最低有效對的毗連資料元素之資料元
素A0之該較高有效資料元素位置中。繼續,在該源緊縮資料中之該最低有效對的毗連資料元素之該較高有效資料元素A1可被儲存至作為在該結果緊縮資料中之該對應最低有效對的毗連資料元素之資料元素A1之該最低有效資料元素位置中。再者,在該源緊縮資料中之該緊鄰最低有效對的毗連資料元素之該最低有效資料元素A2可被儲存至作為在該結果緊縮資料中之該對應緊鄰最低有效對的毗連資料元素之資料元素A2之該較高有效資料元素位置中。繼續,在該源緊縮資料中之該緊鄰最低有效對的毗連資料元素之該較高有效資料元素A3可被儲存至作為在該結果緊縮資料中之該對應緊鄰最低有效對的毗連資料元素之資料元素A3之該最低有效資料元素位置中。任何其他可選的毗連資料元素對可類似地在位置上被調換過。
圖4為繪示可回應於遮罩毗連資料元素成對調換指令之實施例而執行之遮罩毗連資料元素成對調換操作430之實施例之方塊圖。圖4之該遮罩操作與圖3之該未遮罩操作具有某些相似性。為了避免模糊該描述,將主要地描述用於圖4之該遮罩操作之該不同的及/或額外特性,而不重複相對於圖3之該未遮罩操作之所有該可選的相似的或共同的特性及細節。然而,應理解到,除非另有說明或以其他方式清楚地顯示的,否則圖3之該未遮罩操作之該先前地所描述之特性及細節亦可視情況應用於圖4之該遮罩操作(例如,若其等與由於遮罩所導致之差異有關)。
該遮罩指令可指定或以其他方式指示具有至少兩對的
毗連資料元素之源緊縮資料412。源緊縮資料412可相似或相同於該先前所描述的源緊縮資料312,且可具有相同的變化及替換。在該繪示之範例實施例中,該源緊縮資料包含至少第一最低有效對的毗連資料元素A0與A1及第二較高有效對的毗連資料元素A2與A3,且可選地可以包含零個或更多個其他對的毗連資料元素。該源緊縮資料之大小、該資料元素之大小及資料元素之數量可與該先前所描述的源緊縮資料312相似或相同,且可具有相同的變化及替換。
該遮罩指令可視情況額外地指定(例如,顯式地指定)或以其他方式指示(例如,隱含地指示)源緊縮資料操作遮罩420。該源緊縮資料操作遮罩在本文中亦可被簡稱為操作遮罩、預測遮罩或遮罩。藉由範例之方式,該源緊縮資料操作遮罩可被儲存在一組之架構緊縮資料操作遮罩暫存器之緊縮資料操作遮罩暫存器、通用暫存器、緊縮資料暫存器(例如,每個資料元素位置之最高有效位元、最低有效位元或其他單一個位元可被使用為遮罩元素)或其他暫存器或儲存位置中。
該遮罩可表示被使用以預測、有條件地控制或遮罩是否執行對應操作及/或儲存對應結果之預測運算元或有條件之控制運算元。在某些實施例中,該遮罩或預測可以在每資料元素之粒度下,使得對不同的資料元素之操作可被單獨地及/或獨立於其他資料元素地預測或有條件地控制。該遮罩可包含多個遮罩元素、預測元素或有條件控制
元素。在一個態樣中,該遮罩元素可被包括在與對應的源資料元素及/或對應的結果資料元素之一對一對應性中。該遮罩可具有用於在該源緊縮資料中之每個資料元素及/或在該結果緊縮資料中之每個結果資料元素之不同的對應遮罩元素。對於欲位於該運算元內之對應的相對位置中之該對應的資料元素及遮罩元素而言,其通常係方便的,儘管此非嚴格地要求的,且若需要可視情況使用其他用於對應之約定。藉由範例之方式,在該遮罩中之每個遮罩元素可對應於在該各別之運算元內之相同相對位置中之該源緊縮資料中之不同的資料元素。例如,該最低有效遮罩位元可對應於該最低有效資料元素,該最低有效(如圖示最左側)遮罩位元或元素可對應於該最低有效(如圖示最左側)資料元素,等等。在該繪示之範例中,該對應的遮罩元素及資料元素係以垂直對準方式來展示。如所展示的,在某些實施例中,每個遮罩元素可視情況係單一遮罩位元。或者,可視情況為每個遮罩元素使用兩個或更多個位元(例如,每個遮罩元素可具有與每個對應的資料元素相同數量的位元,且該資料元素之一或多個位元可提供被遮罩或未遮罩之值)。
每個遮罩元素之值可控制是否欲執行對應的操作及/或欲儲存對應的結果資料元素。每個遮罩元素可具有第一值以允許執行該操作且允許該對應的結果資料元素被儲存在該結果緊縮資料中,或可具有第二不同值以不允許執行該操作及/或不允許該對應的結果資料元素被儲存在該結
果緊縮資料中。根據一個可能的約定,如在該繪示圖中所展示的,清除為二進制零(亦即,0)的遮罩位元可表示遮罩或遮蔽操作,其中,該操作之結果不被儲存在該結果緊縮資料中,而設置為二進制一(亦即,1)的遮罩位元可表示未遮罩操作,其中,該操作之結果係要儲存在該結果緊縮資料中。該相反的約定亦係可能的。在該繪示之範例中,該兩個最低有效(如圖示最左側)遮罩元素被遮罩,而該兩個較高有效(如圖示最右側)遮罩元素係未遮罩。
在遮罩毗連資料元素成對調換操作430期間,源緊縮資料412及源緊縮資料操作遮罩420可各自被提供給執行單元406。該執行單元可回應於該指令及/或操作而執行該遮罩毗連資料元素成對調換操作以產生且儲存結果緊縮資料416。可經受該源緊縮資料操作遮罩之該遮罩、預測或有條件的控制來執行該遮罩操作。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指定或以其他方式所指示之目的緊縮資料暫存器或其他目的儲存位置中。
在某些實施例中,該結果緊縮資料可包含至少兩對的毗連資料元素。在某些實施例中,該結果緊縮資料可包含與在該源緊縮資料中相同數量的毗連資料元素對。該結果緊縮資料之各對的毗連資料元素可對應於該源緊縮資料之不同對的毗連資料元素(例如,在該緊縮資料內之相同的相對位元位置或另外地相同的相對位置中)。例如,在該繪示之範例實施例中,該結果緊縮資料包含至少第一最低
有效(如圖示最左側)對的毗連資料元素(例如,其可對應於該源緊縮資料之該最低有效(如圖示最左側)對的毗連資料元素A0與A1),及一第二較高有效(如圖示最右側)對的毗連資料元素(例如,其可對應於該源緊縮資料之該較高有效(如圖示最右側)對的毗連資料元素A2與A3),且可選地可包含零個或更多個其他對的毗連資料元素。
在某些實施例中,在結果緊縮資料416之各對的毗連資料元素中之該毗連資料元素(其對應於該遮罩420之未遮罩的遮罩元素)在位置上係已相對於在源緊縮資料412之各對應對的毗連資料元素中之該毗連資料元素而被調換過。在該繪示之範例中,在源緊縮資料412中之該緊鄰最低有效(如圖示最右側)對的毗連資料元素A2與A3係對應於未遮罩之遮罩元素。針對此範例,在源緊縮資料412中之該緊鄰最低有效(如圖示最右側)對的毗連資料元素之該最低有效資料元素A2可被儲存至作為在結果緊縮資料416中之該對應緊鄰最低有效(如圖示最右側)對的毗連資料元素之資料元素A2之該較高有效資料元素位置中。繼續,在源緊縮資料412中之該緊鄰最低有效(如圖示最右側)對的毗連資料元素之該較高有效資料元素A3可被儲存至作為在結果緊縮資料416中之該對應緊鄰最低有效(如圖示最右側)對的毗連資料元素之資料元素A3之該最低有效資料元素位置中。額外未遮罩對的毗連資料元素(若有的話,未圖示)可類似地在位置上被調換
過。
相反地,在某些實施例中,在結果緊縮資料416之各對的毗連資料元素中之該毗連資料元素,其對應於遮罩420之遮罩或遮蔽的遮罩元素,其可替代地具有不取決於對在該源緊縮資料中之該對應的毗連資料元素所執行之該毗連資料元素成對調換操作之值。在某些實施例中,對應於遮蔽的遮罩元素之結果資料元素可具有固定的或預定的值。例如,不需要執行該對應的毗連資料元素成對調換操作,或若執行該對應的毗連資料元素成對調換操作,則該對應的結果元素不需要被儲存在該結果緊縮資料中。相反地,固定的或預定的值可被儲存在該對應的結果資料元素中。該特定固定的或預定的值可取決於被使用於該特定實施方案之遮罩之該類型。在某些實施例中,可使用歸零遮罩。在歸零遮罩中,該遮蔽結果資料元素可被歸零(例如,被迫具有零值)。例如,16位元結果資料元素可具有十六個歸零位元值。在其他實施例中,可使用合併遮罩。在合併遮罩中,該遮蔽結果資料元素可具有該對應的源資料元素之值(例如,在該緊縮資料內的相同相對位置中之該對應的源資料元素可被合併或傳遞穿過至該對應的遮蔽結果資料元素)。在該繪示之範例中,在源緊縮資料412中之該最低有效(如圖示最左側)對的毗連資料元素A0與A1係對應於遮罩或遮蔽的遮罩元素。如在該繪示之範例中所展示的,在結果緊縮資料416中之該最低有效(如圖示最左側)對的毗連資料元素可具有歸零值(例
如,展示為0),或其相對於在該源緊縮資料中之該A0與A1值在位置上尚未被調換過之該合併之A0與A1值。
圖5為繪示可回應於第二遮罩毗連資料元素成對調換指令之實施例而執行之遮罩毗連資料元素成對調換操作530之第二實施例之方塊圖。圖5之該操作與圖4之該操作具有某些相似性。為了避免模糊該描述,將主要地描述用於圖5之該操作之該不同的及/或額外特性,而不重複相對於圖4之該操作之所有該可選的相似的或共同的特性及細節。然而,應理解到,除非另有說明或以其他方式清楚地顯示的,否則圖4之該先前地所描述之特性及細節亦可視情況應用於圖5之該操作。
該遮罩指令可指定或以其他方式指示源緊縮資料512。源緊縮資料412及其資料元素可與該先前所描述的源緊縮資料312及/或412相似或相同,且可具有相同的變化及替換。
該遮罩指令可視情況額外地指定(例如,顯式地指定)或以其他方式指示(例如,隱含地指示)源緊縮資料操作遮罩520。除了以下所提到的差異之外,源緊縮資料操作遮罩520及其遮罩元素,可與先前所描述的源緊縮資料操作遮罩420相似或相同,且可具有相同的變化及替換。
在此繪示之實施例中,該源緊縮資料操作遮罩之各個遮罩元素可被包括在與對應對的毗連資料元素及/或對應對的毗連結果資料元素之一對一對應性中,而不是被包括
在與單一/個別之源資料元素及/或單一/個別之結果資料元素之一對一對應性中。例如,該最低有效(如圖示最左側)遮罩元素可對應於該最低有效(如圖示最左側)毗連對的源資料元素A0與A1及/或該最低有效(如圖示最左側)毗連對的結果資料元素。同樣地,該緊鄰最低有效(如圖示最右側)遮罩元素可對應於該緊鄰最低有效(如圖示最右側)毗連對的源資料元素A0與A1及/或該緊鄰最低有效(如圖示最右側)毗連對的結果資料元素A3與A2。各個遮罩元素之值可控制是否欲執行對應的毗連資料元素成對調換操作及/或欲儲存對應的位置調換對的毗連結果資料元素。
在遮罩毗連資料元素成對調換操作530期間,源緊縮資料512及源緊縮資料操作遮罩520可各自被提供給執行單元506。該執行單元可回應於該指令及/或操作而執行該遮罩毗連資料元素成對調換操作以產生且儲存結果緊縮資料516。該結果緊縮資料及其結果資料元素可與該先前所描述的源緊縮資料416相似或相同,且可具有相同的變化及替換。
在本文中所揭示之該毗連資料元素成對調換指令及/或操作之一種用途(但肯定非唯一之用途)係處理固有地配對或元組類型之資料。此種固有地配對或元組類型之資料的一個範例為複數。複數被廣泛地使用於許多應用中,諸如,例如,量子色力學、分子動力學及各種其他高性能計算應用,僅舉幾個例子。複數包含實數或分量及虛數或
分量。這些實數或虛數或分量共同地表示該複數,且通常在對該複數進行算術運算期間一起處理,諸如,例如,加法、減法、乘法等等。因此,該實數及虛數或分量通常被一起儲存及處理,例如,在毗連的兩個資料元素結構、元組或對的陣列中。這些複數之向量或陣列通常被相乘、相加、相減等等以作為兩個資料元素結構之陣列。
為了有效地對該複數執行某些此種算術運算,若能夠有效地調換該實數及虛數或分量之該相對位置則通常係有益的。作為一個範例,此可以為在複數乘法中之情況。第一複數(a+bi)及第二複數(c+di)之該乘法可被表示為方程式1:(a+bi)(c+di)=(ac-bd)+(bc+ad)i 方程式1
如所展示的,此種複數之乘法包含由實數分量乘以實數分量(例如,以產生乘積ac)以及由虛數分量乘以虛數分量(例如,以產生乘積bd),以及由虛數分量乘以實數分量(例如,以產生成乘積ad及乘積bc)。因此,從算法的角度來看,若欲執行緊縮資料乘法或SIMD乘法,則在一個點處,每個複數之該實數分量應該在相同的SIMD位置或在所謂的垂直SIMD對準中,而在其他時間該實數分量及該虛數分量應該在相同的SIMD位置或在垂直SIMD對準中。在某些實施例中,如在本文中所揭示之該毗連資料元素成對調換指令及/或操作可被使用以執行
該實數及虛數或複數之分量之該相對位置之此種調換,當與若使用靈活的混洗或重排指令相比,則通常具有改進的性能及/或較低的功耗。此外,此種指令/操作可被使用在其他類型的配對或元組資料上。然而,本發明之範圍不被限制於對固有地配對或元組類型之資料進行操作。相反地,在本文中所揭示之該指令及/或操作係通用的,且可被使用以對任何所需類型的資料進行操作,而不需要任何該毗連資料元素之間的關係。
為了進一步說明某些概念,將描述對複數進行運算之更特定的範例實施例。圖6為繪示可回應於遮罩毗連資料元素成對調換指令之實施例而執行之遮罩毗連資料元素成對調換操作630之更特定的範例實施例之方塊圖。圖6之該操作與圖3及/或圖4之該操作具有某些相似性。為了避免模糊該描述,將主要地描述用於圖6之該操作之該不同的及/或額外的特性,而不重複相對於圖3及/或圖4之該操作之所有該可選的相似的或共同的特性及細節。然而,應理解到,除非另有說明或以其他方式清楚地顯示的,否則圖3及/或圖4之該先前地所描述之特性及細節亦可視情況應用於圖6之該操作。
該指令可指定或以其他方式指示源緊縮資料612。在此範例中,該源緊縮資料為512位元寬,儘管可替代地可選地使用更寬或更窄的寬度。在此種情況下,該源緊縮資料具有四個複數。在其他實施例中,可包括更少或更多個。每個複數包含毗連對的實數或資料元素(r)及虛數
或資料元素(i)。例如,第一個複數可具有實數及虛數分量r0及i0,第二個複數可具有實數及虛數分量r1及i1等等。通常,複數通常被儲存在記憶體中,其中該實數被儲存在相對地較小有效位元位置中,且該對應的虛數被儲存在毗連的相對地較高有效位元位置中,儘管此係非必需的。因此,在該繪示之範例中,在該源緊縮資料中的各個複數之該實數被儲存在該較低有效位置中,而該虛數被儲存在該較有效位置中。在該繪示之範例中,該實數及虛數之各者被包括在64位元資料元素中(例如,64位元倍精度浮點資料元素),儘管在其他實施例中,可視情況使用其他大小的資料元素(例如,32位元單精度浮點或16位元半精度浮點)。
該指令可視情況額外地指定(例如,顯式地指定)或以其他方式指示(例如,隱含地指示)源緊縮資料操作遮罩620,儘管此係非必需的。替代的類似操作可以為在沒有此種源緊縮資料操作遮罩之情況下所執行的未遮罩操作。該源緊縮資料操作遮罩可被儲存在源緊縮資料操作遮罩暫存器618中。在此種情況下,該源緊縮資料操作遮罩為8位元之遮罩而該源緊縮資料操作遮罩暫存器為64位元之暫存器,儘管可替代地可選地使用更寬或更窄的遮罩及遮罩暫存器。該源緊縮資料操作遮罩包含用於在該源緊縮資料中的各個資料元素的不同遮罩位元。在該繪示之範例中,該對應的資料元素及遮罩位元係位在該運算元內的相同的相對位置中,且在該繪示圖中以垂直對準方式來展
示。在該繪示之範例中,僅在該遮罩之位元〔3:2〕中之該遮罩位元被遮蔽,而在位元〔1:0〕及〔7:4〕中之該遮罩位元係未遮罩。此只是一個範例。
在遮罩毗連資料元素成對調換操作630期間,源緊縮資料612及源緊縮資料操作遮罩620可各自被提供給執行單元606。該執行單元可回應於該指令及/或操作而執行該遮罩毗連資料元素成對調換操作以產生且儲存結果緊縮資料616。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指定或以其他方式所指示之目的緊縮資料暫存器或其他目的儲存位置中。
如在此範例中所展示的,對應於遮罩620之未遮罩遮罩位元之結果緊縮資料616之各個複數之該毗連實數及虛數可能在位置上已經相對於源緊縮資料612之各個複數之該毗連實數及虛數而調換。相反地,在遮罩操作之情況下,對應於遮罩620之遮罩或遮蔽的遮罩元素之結果緊縮資料616之各個複數之該毗連實數及虛數可替代地具有不取決於對該源緊縮資料612之各個複數之該對應的毗連實數及虛數所執行之該毗連資料元素成對調換操作之值。例如,該源緊縮資料之該實數及虛數r1及i1,其對應於在位元位置〔3:2〕中之該遮蔽遮罩位元,可視情況而被合併至該結果緊縮資料之相同非調換位置中。或者,這些結果資料元素可視情況而被歸零。
如先前所提到的,遮罩620可被儲存在遮罩暫存器618中。在某些實施例中,該遮罩暫存器可具有比被使用
作為實際地被使用於預測之遮罩620之該有效位元更多的位元。例如,64位元遮罩暫存器可被使用以儲存8位元遮罩、16位元遮罩或32位元遮罩。作為另一個範例,32位元遮罩暫存器可被使用以儲存8位元遮罩或16位元遮罩。在某些實施例中,在該遮罩暫存器中之這些額外的非有效位元可不被使用於遮罩,且例如可被忽略及/或可能不影響該操作。
已經展示及描述用於圖3至6之合適的毗連資料元素成對調換操作之幾個範例,儘管亦可考慮其他範例。例如,在其他實施例中,可對儲存在兩個或更多個源緊縮資料暫存器中的兩個或更多個源緊縮資料來執行該操作,以產生欲儲存在兩個或更多個目的緊縮資料暫存器中之兩個或更多個結果緊縮資料運算元。例如,該指令可指定一個源暫存器及一個目的暫存器,且其可隱含地使用下一個順序暫存器以作為另一個源暫存器及另一個目的暫存器。其他實施例可改變在該運算元中之資料元素之數量及大小。
圖7為毗連資料元素成對調換指令702之範例實施例之方塊圖。該指令包含運算碼或運算碼740。該運算碼可表示複數個位元或一或多個欄位,其可操作以識別欲執行之該指令及/或該操作(例如,毗連資料元素成對調換操作)。在某些實施例中,該運算碼可隱含地指示及/或其對於該運算碼可以係固定的,意即欲執行毗連資料元素成對調換。
該指令亦包含源緊縮資料指示符742(例如,欄位及/
或一或多個不一定是連續的位元)以指定緊縮資料暫存器、記憶體位置或源緊縮資料之其他儲存位置。在某些實施例中,該指令可僅具有非兩個或更多個的單一個源緊縮資料指示符。該指令亦包含可選的目的儲存位置指示符744(例如,欄位及/或一或多個不一定是連續的位元),以指定目的緊縮資料暫存器、記憶體位置或其中欲儲存結果緊縮資料之其他儲存位置。或者,這些儲存位置中之一或多者對於該指令(例如,該運算碼)可視情況係隱含的或固有的,而不是在此種情況下被指定為該相關聯之指示符可視情況被省略。例如,該指令可具有隱含的固定暫存器,以作為用於源及/或目的運算元之儲存位置。作為另一個範例,在某些實施例中,替代該目的指示符,被使用於該源緊縮資料之儲存位置可視情況係隱含地被重新使用於該目的緊縮資料。例如,源/目的暫存器最初可具有源緊縮資料,且隨後地可在該源/目的暫存器中之該源緊縮資料之上寫入該結果緊縮資料。
在某些實施例中,該指令亦可視情況而具有源緊縮資料操作遮罩指示符746(例如,欄位及/或一或多個不一定係連續的位元)以指定緊縮資料遮罩暫存器、通用暫存器、緊縮資料暫存器或其中欲儲存緊縮資料操作遮罩之其他儲存位置。或者,替代該顯式的源緊縮資料操作遮罩指示符,源緊縮資料操作遮罩之儲存位置可視情況係隱含的。再者,遮罩為可選的而非必需的,且當不使用遮罩時,則可省略該源緊縮資料操作遮罩指示符。
在某些實施例中,該指令可視情況包含一種類型之遮罩指示符748,以指定一種類型之遮罩操作,儘管此係非必需的。藉由範例之方式,該類型之遮罩指示符可包含一或多個位元,其可具有:第一值,以指定欲使用之第一類型的遮罩(例如,合併遮罩);或第二值,以指定欲使用之第二類型的遮罩(例如,歸零遮罩)。或者,該類型之遮罩操作可視情況被隱含地指示(例如,在隱含的控制暫存器中)或由該運算碼隱含地指示。作為另一個選項,可視情況僅使用單一類型之遮罩,至少對於該運算碼,使得可不需要任何該類型之遮罩指示符。
在某些實施例中,該指令可視情況具有資料元素大小指示符750(例如,一或多個不一定是連續的位元)以指定資料元素大小。作為一個說明性範例,2位元欄位可具有四個不同值來指示四個不同大小的資料元素(例如,用於8位元的為00,用於16位元的為01,用於32位元的為10,且用於64位元的為11)。這只是一個說明性範例。或者,對於該指令(例如,該運算碼),大小可視情況而為固定的。
如在752處所展示的,對於該指令可能不需要具有額外的非運算碼調換控制位元。例如,可能不存在有任何用以提供可被使用作為調換控制位元之混洗或置換控制位元之該指令之立即值。作為另一個範例,可不存在有任何該指令之額外位元或欄位以指示暫存器或其他儲存位置以提供可被使用作為調換控制位元之此種混洗或置換控制位
元。
該說明展示該類型之欄位之範例,其可被包括在毗連資料元素成對調換指令之實施例中。替代實施例可包含該繪示欄位之子集合及/或可添加額外的欄位。該繪示之該欄位之排列係非必需的,而是該欄位可被不同地重新排列。再者,該欄位之各者可由連續的一組位元所組成,或可包含邏輯上表示該欄位之不連續或分離的位元。在某些實施例中,該指令可具有如以下將進一步說明之指令格式,儘管此係非必需的。
圖8為緊縮資料暫存器808之合適集合之範例實施例之方塊圖。該緊縮資料暫存器包含標記為ZMM0至ZMM31之三十二個512位元緊縮資料暫存器。在所繪示的實施例中,該較低的16個暫存器之該低階256位元,即ZMM0至ZMM15,係被別名化或疊覆在標記為YMM0至YMM15之各別的256位元緊縮資料暫存器上,儘管此係非必需的。同樣地,在該繪示之實施例中,該暫存器YMM0至YMM15之該低階128位元被別名化或疊覆在標記為XMM0至XMM15之各別的128位元緊縮資料暫存器上,儘管此亦係非必需的。該512位元暫存器ZMM0至ZMM31係可操作以保存512位元緊縮資料、256位元緊縮資料或128位元緊縮資料。該256位元暫存器YMM0至YMM15係可操作以保存256位元緊縮資料或128位元緊縮資料。該128位元暫存器XMM0至XMM15係可操作以保存128位元緊縮資料。在某些實施例中,該暫存器之各
者可被使用以儲存緊縮浮點資料或緊縮整數資料。支援不同的資料元素大小,其包含至少8位元位元組資料、16位元單字資料、32位元雙字、32位元單精度浮點資料、64位元四字及64位元雙精度浮點資料。在替代性實施例中,可使用不同數量的暫存器及/或不同大小的暫存器。又在其他實施例中,暫存器可或可不使用在較小的暫存器上疊置較大暫存器的及/或可或可不被使用以儲存浮點資料。
圖9為緊縮資料操作遮罩暫存器918之合適集合之範例實施例之方塊圖。在所繪示的實施例中,該集合包含標記為k0至k7的八個暫存器。替代實施例可包含少於八個暫存器(例如,兩個、四個、六個等等),或多於八個暫存器(例如,十六個、三十二個等等)。這些暫存器中之各者可被使用以儲存緊縮資料操作遮罩。在所繪示的實施例中,該暫存器之各者為64位元。在替代性實施例中,該暫存器之寬度可寬於64位元(例如,80位元、128位元等等),或窄於64位元(例如,8位元、16位元、32位元等等)。該暫存器可以以不同的方式來實施,且不被限制於任何特定類型的電路或設計。合適的暫存器之範例包含(但不限於)專用實體暫存器、使用暫存器更名之動態配置之實體暫存器及其組合。
在某些實施例中,緊縮資料操作遮罩暫存器918可以為獨立的、專用的架構暫存器之集合。在某些實施例中,該指令可以以與那些被使用以編碼或指定其他類型的暫存
器(例如,緊縮資料暫存器)之指令格式所不同的位元或一或多個不同的欄位來編碼或指定該緊縮資料操作遮罩暫存器。藉由範例之方式,指令可使用三個位元(例如,3位元欄位)來編碼或指定該八個緊縮資料操作遮罩暫存器k0至k7中之任一者。在替代性實施例中,當存在有更少或更多的緊縮資料操作遮罩暫存器時,可分別地使用更少或更多的位元。在一個特定的實施方案中,僅緊縮資料操作遮罩暫存器k1至k7(但不是k0)可被定址作為預測運算元以預測遮罩緊縮資料操作。該暫存器k0可被使用作為常規的源或目的,但可不被編碼為預測運算元(例如,若指定k0,則其具有「無遮罩」編碼),儘管此係非必需的。
在該上述之實施例中,已經展示該指令僅具有單一個源緊縮資料(例如,單一個源緊縮資料暫存器)及單一結果緊縮資料(例如,單一目的暫存器),儘管在其他實施例中該指令可視情況具有兩個或更多個源緊縮資料(例如,兩個或更多個源緊縮資料暫存器),其各自包含成對的毗連資料元素,其將它們的相對位置調換且儲存至兩個或更多個結果緊縮資料中(例如,兩個或更多個目的暫存器)。
指令集包含一或多個指令格式。給定的指令格式可定義各種欄位(例如,位元的數量、位元的位置),除了別的,其用以指定所欲執行的操作(運算碼)及該操作所欲執行之該運算元。某些指令格式經由指令範本的定義(或
子格式)被進一步拆解。例如,給定指令格式的指令範本可被定義成具有指令格式之欄位的不同子集合(典型上,所包括的欄位按相同之順序,但由於所包括的欄位較少因而至少某些具有不同的位元位置),及/或定義成具有不同之解譯的給定欄位。因此,ISA的每一個指令係使用一給定的指令格式來表示(且若有定義,則係在該指令格式的其中一個給定指令範本中),且包含用於指定操作及運算元的欄位。例如,例示性的ADD指令具有特定的運算碼與指令格式,該指令格式包含用來指定該運算碼的運算碼欄位及用來選擇運算元(源1/目的與源2)的運算元欄位;且出現在指令流中的此ADD指令,在用以選擇特定運算元的運算元欄位中將具有特定的內容。被稱為進階向量擴充(AVX)(AVX1與AVX2)且使用向量擴充(VEX)編碼方案之一組SIMD擴充已被釋出及/或已出版(例如,見Intel® 64及IA-32架構軟體開發人員之手冊,2011年10月;及見Intel®進階向量擴充編程參考,2011年6月)。
在本文中所描述之指令的實施例可以不同的格式來實施。此外,以下詳述例示性的系統、架構及管線。指令的實施例可在此種系統、架構及管線上執行,但不限於這些細節。
VEX編碼允許指令具有多於兩個的運算元,且允許SIMD向量暫存器為長於128位元。使用VEX前置提供三個運算元(或更多)語法。例如,先前的兩個運算元指令執行諸如A=A+B的操作,其重寫源運算元。使用VEX前置使運算元能夠執行非破壞性操作,諸如A=B+C。
圖10A為繪示包含VEX前置1002、真實運算碼欄位1030、Mod R/M位元組1040、SIB位元組1050、位移欄位1062及IMM81072之例示性AVX指令格式。圖10B為繪示來自於圖10A的哪些欄位構成完整運算碼欄位1074及基本運算欄位1042。圖10C為繪示來自於圖10A的哪些欄位構成暫存器索引欄位1044。
VEX前置(位元組0至2)1002係以三位元組的形式來編碼。該第一位元組為該格式欄位1040(VEX位元組0,位元〔7:0〕),其包含顯式的C4位元組值(被使用於區分該C4指令格式之該唯一值)。該第二-第三位元組(VEX位元組1至2)包含提供特定能力之若干的位元欄位。詳言之,REX欄位1005(VEX位元組1,位元〔7-5〕)係由VEX.R位元欄位(VEX位元組1,位元〔7〕-R)、VEX.X位元欄位(VEX位元組1,位元〔6〕-X)及VEX.B位元欄位(VEX位元組1,位元〔5〕-B)所組成。如在本領域中習知的,該指令之其他欄位編碼該暫存器索引之該較低的三個位元(rrr,xxx,and bbb),使得Rrrr、Xxxx及Bbbb可藉由添加VEX.R、VEX.X及VEX.B
而形成。運算碼映射欄位1015(VEX位元組1,位元〔4:0〕-mmmmm)包含用以編碼隱含的前導運算碼位元組之內容。W欄位1064(VEX位元組2,位元〔7〕-W)係由該符號VEX.W來表示,且取決於該指令來提供不同的功能。VEX.vvvv 1020(VEX位元組2,位元〔6:3〕-vvvv)之該作用可包含以下各項:1)VEX.vvvv編碼以反轉(1s補數)形式所指定的該第一源暫存器運算元,且對於具有2個或更多個源操運算元之指令係有效的;2)VEX.vvvv編碼該目的暫存器運算元,對於某些向量移位係以補數形式來指定;或3)VEX.vvvv不編碼任何運算元,該欄位被保留且應該含有1011b。若VEX.L 1068大小欄位(VEX位元組2,位元〔2〕-L)=0,則其指示128位元向量;若VEX.L=1,則其指示256位元向量。前置編碼欄位1025(VEX位元組2,位元〔1:0〕-pp)為該基本運算欄位提供額外之位元。
真實運算碼欄位1030(位元組3)亦被習知為該運算碼位元組。該運算碼的一部分係被指定在此欄位中。
MOD R/M欄位1040(位元組4)包含MOD欄位1042(位元〔7-6〕)、Reg欄位1044(位元〔5-3〕)及R/M欄位1046(位元〔2-0〕)。Reg欄位1044之該作用可包含以下之各項:對該目的暫存器運算元或源暫存器運算元(Rrrr之該rrr)進行編碼,或將其視為運算碼擴充且不使用於對任何指令運算元進行編碼。R/M欄位1046之該作用可包含以下之各項:編碼引用記憶體位址
之該指令運算元,或編碼該目的暫存器運算元或源暫存器運算元。
縮放、索引、基本(SIB)-縮放欄位1050(位元組5)之該內容包含SS1052(位元〔7-6〕),其被使用於產生記憶體位址。SIB.xxx 1054(位元〔5-3〕)與SIB.bbb 1056(位元〔2-0〕)之該內容已於先前關於暫存器索引Xxxx與Bbbb提及。
位移欄位1062及立即欄位(IMM8)1072含有位址資料。
圖11為依照本發明之一個實施例之暫存器架構1100之方塊圖。在所繪示之該實施例中,存在有512位元寬的32個向量暫存器1110;這些暫存器被稱為zmm0至zmm31。該較低的16 zmm暫存器之該低階256位元被疊覆在暫存器ymm0-16上。該較低的16 zmm暫存器之該低階128位元(該ymm暫存器之該低階128位元)被疊覆在暫存器xmm0-15上。
寫入遮罩暫存器1115-在所繪示之該實施例中,有8個寫入遮罩暫存器(k0至k7),每個的大小為64位元。在一個替代性實施例中,寫入遮罩暫存器1115的大小為16位元。如先前所描述的,在本發明之一個實施例中,該向量遮罩暫存器k0不能被使用作為寫入遮罩;當通常指示k0的編碼被使用於寫入遮罩時,則其選擇0xFFFF之
固線式寫入遮罩,有效地將該指令的寫入遮罩停用。
通用暫存器1125-在所繪示之該實施例中,其有16個64位元的通用暫存器,其可連同現有的x86定址模式而被使用來定址記憶體運算元。這些暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來引用。
純量浮點堆疊暫存器檔案(x87堆疊)1145,MMX緊縮整數平面暫存器檔案1150疊置於其上-在所繪示之該實施例中,x87堆疊為8元素堆疊,其被使用以使用x87指令集擴充對32/64/80位元浮點資料來執行純量浮點運算;而MMX暫存器被使用以對64位元的緊縮整數資料來執行運算,以及保持用於在MMX與XMM暫存器之間所執行之某些運算的運算元。
本發明之替代的實施例可使用較寬或較窄的暫存器。此外,本發明之替代的實施例可使用較多、較少、或不同的暫存器檔案及暫存器。
例示性核心架構、處理器及電腦架構。
在不同的處理器中處理器核心可按不同之目的而以不同的方式來實施。例如,此種核心之實施方案可包含:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高性能通用亂序核心;3)意欲主要用於圖形及/或科學(處理量)計算的專用核心。不同處理器的實施方案可包含:1)包含一或多個意欲用於通用計算之通用循序核心及/或一或多個意欲用於通用計算之一或多個通用亂
序核心的CPU;以及2)包含一或多個意欲主要用於圖形及/或科學(處理量)之專用核心的協同處理器。此等不同的處理器導致不同的電腦系統架構,其可包含:1)在與CPU分離之晶片上的協同處理器;2)在與CPU同一個封裝組件內之獨立晶粒上的協同處理器;3)在與CPU同一個晶粒上的協同處理器(在此情況中,此等協同處理器有時被稱為專用核心,諸如整合式圖形及/或科學(處理量)邏輯,或諸如專用核心);以及4)晶片上系統,其可包含位在同一個晶粒上之該描述的CPU(有時被稱為應用核心或應用處理器)、上述的協同處理器及額外功能性。接下來描述例示性的核心架構,接著為例示性處理器及電腦架構的描述。
圖12A的方塊圖繪示依照本發明之實施例之例示性循序管線與例示性暫存器更名、亂序發出/執行管線兩者。圖12B的方塊圖繪示依照本發明之實施例之被包含在處理器中之循序架構核心之例示性實施例與例示性暫存器更名、亂序發出/執行架構核心兩者。圖12A至12B中的實線框繪示循序管線與循序核心,而選用的額外虛線框繪示暫存器更名、亂序發出/執行管線與核心。基於循序態樣為亂序態樣之子集合,因此將描述亂序態樣。
存圖12A中,處理器管線1200包含提取級1202、長
度解碼級1204、解碼級1206、配置級1208、更名級1210、排程(亦稱為調度或發出)級1212、暫存器讀取/記憶體讀取級1214、執行級1216、寫回/記憶體寫入級1218、異常處置級1222與提交級1224。
圖12B展示處理器核心1290,其包含被耦接至執行引擎單元1250之前端單元1230,且兩者皆被耦接至記憶體單元1270。核心1290可以為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心或混合或替代核心類型。再如另一選項,核心1290可以為專用核心,諸如,例如,網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等等。
前端單元1230包含耦接至指令快取單元1234的分支預測單元1232,指令快取單元1234係耦接至指令轉譯後備緩衝區(TLB)1236,TLB 1236係耦接至指令提取單元1238,指令提取單元1238係耦接至解碼單元1240。解碼單元1240(或解碼器)可解碼指令,且產生諸如一或多個微操作、微碼登錄點、微指令、其它指令或其他控制信號之輸出,這些係解碼自原始指令,或以其他方式反映或導出自原始指令。解碼單元1240可使用各種不同的機制來實施。適合的機制之範例包含(但不限於)查找表、硬體實施方案、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一個實施例中,核心1290包含微碼ROM或其他媒體,其儲存用於某些微指令的微碼(例
如,在解碼單元1240中或以其他方式在前端單元1230中)。解碼單元1240被耦接至執行引擎單元1250中之更名/配置器單元1252。
執行引擎單元1250包含更名/配置器單元1252,其係耦接至止用單元1254與一組的一或多個排程器單元1256。排程器單元1256代表任何數量之不同的排程器,包含保留站、中央指令視窗等等。排程器單元1256係耦接至實體暫存器檔案單元1258。每一個實體暫存器檔案單元1258代表一或多個實體暫存器檔案,每一個不同的實體暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點、狀態(例如,指令指標,其為下一個要被執行之指令的位址)等等。在一個實施例中,實體暫存器檔案單元1258包括向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元1258被止用單元1254重疊以繪示其中可實施暫存器更名或亂序執行之各種方式(例如,使用重排序緩衝區與止用暫存器檔案;使用未來檔案、歷史緩衝區及止用暫存器檔案;使用暫存器映射與暫存器池等等)。止用單元1254與實體暫存器檔案單元1258被耦接至執行叢集1260。執行叢集1260包含一組的一或多個執行單元1262與一組的一或多個記憶體存取單元1264。執行單元1262可對各種類型的資料(例如,純量浮點、緊縮的整數、緊縮的浮
點、向量整數、向量浮點)執行各種操作(例如,移位、加、減、乘)。儘管某些實施例可包含若干個專用於特定功能或功能組的執行單元,但其他實施例可包含僅一個執行單元或多個執行單元全部用來實施所有的功能。所展示的排程器單元1256、實體暫存器檔案單元1258與執行叢集1260可能有複數個,這是因為某些實施例為某些類型的資料/操作建立獨立的管線(例如,純量整數管線、純量浮點/緊縮的整數/緊縮的浮點/向量整數/向量浮點管線及/或記憶體存取管線,其各具有其等自身的排程器單元、實體暫存器檔案單元及/或執行叢集-且在獨立之記憶體存取管線的例子中,某些實施例中實施僅具有記憶體存取單元1264之此管線的執行叢集)。亦應瞭解,在使用分離之管線的情況中,這些管線中的一或多者可亂序發出/執行而其他管線則循序。
記憶體存取單元1264組被耦接至記憶體單元1270,其包含資料TLB單元1272被耦接至資料快取單元1274再被耦接至第2階(L2)快取單元1276。在一個例示性的實施例中,記憶體存取單元1264可包含載入單元、儲存位址單元及儲存資料單元,每一個單元被耦接至記憶體單元1270中之資料TLB單元1272。指令快取單元1234進一步被耦接至記憶體單元1270中之第2階(L2)快取單元1276。L2快取單元1276被耦接至一或多個其他階的快取,且最終耦接至主記憶體。
藉由範例之方式,例示性的暫存器更名、亂序發出/
執行核心架構可按接下來之各項來實施管線1200:1)指令提取1238實施提取及長度解碼級1202與1204;2)解碼單元1240實施解碼級1206;3)更名/配置器單元1252實施配置級1208與更名級1210;4)排程器單元1256實施排程級1212;5)實體暫存器檔案單元1258與記憶體單元1270執行暫存器讀取/記憶體讀取級1214;執行叢集1260執行執行級1216;6)記憶體單元1270與實體暫存器檔案單元1258執行寫回/記憶體寫入級1218;7)在異常處置級1222中可包括各種單元;以及8)止用單元1254與實體暫存器檔案單元1258執行提交級1224。
核心1290可支援包含本文所描述之指令的一或多個指令集(例如,x86指令集(含某些擴充,在較新的版本中已加入);加州森尼韋爾之MIPS Technologies的MIPS指令集;加州森尼韋爾之ARM Holdings的ARM指令集(含選用的額外擴充,諸如NEON))。在一個實施例中,核心1290包含用以支援緊縮資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉此允許由很多多媒體應用程式所使用的操作可使用緊縮資料來執行。
應瞭解,核心可支援多執行緒(執行兩個或更多個平行的操作或執行緒組),且可以多種方式來達成,包含時間切割多執行緒、同步多執行緒(在此,單一實體核心為每一個執行緒提供邏輯核心,該實體核心係同步多執行緒),或其等之組合(例如,時間分割提取及解碼與於之後同步之多執行緒,諸如Intel®的超執行緒技術)。
儘管是在亂序執行的上下文中來描述暫存器更名,但應瞭解,暫存器更名可用於循序架構中。儘管所繪示的處理器之實施例亦包含獨立的指令與資料快取單元1234/1274及共享的L2快取單元1276,但替代的實施例可具有用於指令與資料兩者的單一內部快取,諸如,例如,第1階(L1)內部快取,或多階的內部快取。在某些實施例中,系統可包含內部快取與外部快取的組合,外部快取係在核心及/或處理器的外部。或者,所有的快取都可在核心及/或處理器的外部。
圖13A至13B為繪示更特定的例示性循序核心架構的方塊圖,其核心為晶片中之數個邏輯方塊(包含相同類型及/或不同類型的其他核心)的其中一者。邏輯方塊透過高頻寬互連網路(例如,環狀網路)與某些固定的功能邏輯、記憶體I/O介面、及其他必要的I/O邏輯通訊,視應用而定。
圖13A的方塊圖為依照本發明之實施例的單一處理器核心,連同其與晶粒上的互連網路1302的連接與其第2階(L2)快取1304之本端子集合。在一個實施例中,指令解碼器1300支援具有緊縮資料指令集擴充的x86指令集。L1快取1306允許進入至純量與向量單元中之對快取記憶體的低延遲存取。儘管在一個實施例中(為簡化設計),純量單元1308與向量單元1310使用個別的暫存器
組(分別為純量暫存器1312與向量暫存器1314),且其等之間的資料傳送被寫入至記憶體且接著從第1階(L1)快取1306中讀回,但本發明的替代實施例可使用不同的方法(例如,使用單一暫存器組,或包含允許在兩個暫存器檔案之間傳送資料之通訊路徑,而不寫入與讀回)。
L2快取1304的本端子集合為整體L2快取的一部分,其被分割成分開的本端子集合,每個處理器核心一個。每一個處理器核心具有至其本身之L2快取1304之本端子集合之直接存取路徑。藉由處理器核心所讀取的資料被儲存在其L2快取子集合1304中,且可被快速地存取,與其他處理器核心平行存取其等本身之本端L2快取子集合。由處理器核心所寫的資料被儲存在其本身的L2快取子集合1304中,且若需要的話,則從其他子集合清除此資料。環狀網路確保共享資料的一致性。環狀網路為雙向以允許代理,諸如處理器核心、L2快取及其他邏輯方塊以在晶片內彼此通訊。每一環狀資料徑在每個方向的寬度為1012位元。
圖13B為依照本發明之實施例之在圖13A中之處理器核心的部分擴展圖。圖13B包含L1快取1304的L1資料快取1306A部分,以及關於向量單元1310及向量暫存器1314的更多細節。詳言之,向量單元1310為16位元寬的向量處理單元(VPU)(見16位元寬之ALU 1328),其執行整數、單精度浮點及雙精度浮點指令中之一或多者。VPU支援以攪拌單元1320攪拌暫存器的輸
入,以數值轉換單元1322A至B進行數值轉換,及以複製單元1324複製在記憶體的輸入上。寫入遮罩暫存器1326允許預測所得到的向量寫入。
圖14為依照本發明之實施例之處理器1400的方塊圖,其可具有一個以上的核心,可具有整合式記憶體控制器,且可具有整合式圖形。圖14中的實線框繪示處理器1400,其具有單一核心1402A、系統代理1410、一組的一或多個匯流排控制器單元1416,而選用的附加虛線框繪示替代的處理器1400,其具有多個核心1402A至N、系統代理單元1410中的一組的一或多個整合式記憶體控制器單元1414,以及專用核心1408。
因此,處理器1400之不同的實施方案可包含:1)CPU,其具有為整合式圖形及/或科學(處理量)邏輯(其可包含一或多個核心)的專用核心1408,以及為一或多個通用核心(例如,通用循序核心、通用亂序核心或該兩者之組合)的核心1402A至N;2)協同處理器,具有意欲主要用於圖形及/或科學(處理量)之大量的專用核心的核心1402A至N;以及,3)協同處理器,具有為大量通用循序核心的核心1402A至N。因此,處理器1400可以為通用處理器、協同處理器或專用處理器,諸如,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高處理量多整合式核心(MIC)
協同處理器(包含30個或以上的核心)、內嵌式處理器,等等。該處理器可在一或多個晶片上來實施。處理器1400可以為一或多個基板的一部分及/或使用許多處理技術中的任何技術諸如,例如,BiCMOS、CMOS或NMOS而在一或多個基板上實施。
該記憶體階層包含核心內的一或多階快取、一組或一或多個共用快取單元1406以及耦接至整合式記憶體控制器單元1414組的外部記憶體(未圖示)。共用快取單元1406組可包含一或多個中階快取,諸如第2階(L2)、第3階(L3)、第4階(L4)或其他階的快取、末階快取(LLC),及/或其等之組合。儘管在一個實施例中以環狀式互連單元1412來互連整合式圖形邏輯1408、共用快取單元1406組及系統代理單元1410/整合式記憶體控制器單元1414,但替代的實施例可使用許多習知技術來互連此種單元。在一個實施例中,在一或多個快取單元1406與核心1402A至N之間保持一致性。
在某些實施例中,核心1402A至N中之一或多者具有多執行緒能力。系統代理1410包含協調與操作核心1402A至N的那些組件。系統代理單元1410可包含例如電力控制單元(PCU)與顯示單元。PCU可為或可包含調節核心1402A至N與整合式圖形邏輯1408之電力狀態所需的邏輯與組件。顯示單元用於驅動一或多個外部連接的顯示器。
就架構指令集而言,核心1402A至N可以為同質或
異質的;亦即,兩個或更多個的核心1402A至N具有執行相同的指令集的能力,而其他的核心則僅有執行該指令集的子集合或不同的指令集的能力。
圖15至21係例示性電腦架構的方塊圖。習知技術中用於膝上型電腦、桌上型電腦、手持式PC、個人數位式助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置,及各種其他電子裝置的其他系統設計與組態亦係適用的。通言之,有能力結合如本文所揭示之處理器及/或其他執行邏輯的各種系統或電子裝置亦一體適用的。
現請參考圖15,圖中係展示依照本發明之一個實施例之系統1500的方塊圖。系統1500可包含耦接至控制器集線器1520的一或多個處理器1510、1515。在一個實施例中,控制器集線器1520包含圖形記憶體控制器集線器(GMCH)1590與輸入/輸出集線器(IOH)1550(其可在不同的晶片上);GMCH 1590包含記憶體與圖形控制器,記憶體1540與協同處理器1545與其相耦接;IOH 1550將輸入/輸出(I/O)裝置1560耦接至GMCH 1590。或者,記憶體與圖形控制器的其中一者或兩者皆被整合在處理器內(如在本文中所述),記憶體1540與協同處理
器1545直接地耦接至處理器1510,且控制器集線器1520與IOH 1550位在單一晶片中。
額外處理器1515的選用性質在圖15中以虛線來指示。每一個處理器1510、1515可包含在本文中所述的一或多個處理器核心,且可以係處理器1400的某些版本。
記憶體1540可以係例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM),或該兩者之組合。關於至少一個實施例,控制器集線器1520經由多點匯流排而與處理器1510、1515通訊,諸如前端匯流排(FSB)、點對點介面,諸如快速通道互連(QPI),或類似的連接1595。
在一個實施例中,協同處理器1545係專用處理器,諸如,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器,等等。在一個實施例中,控制器集線器1520可包含整合式圖形加速器。
就度量一系列之優點而論,在實體資源1510、1515之間有各種差異,包含架構、微架構、熱、功耗特性等等。
在一個實施例中,處理器1510執行的指令用來控制通用類型之資料處理操作。協同處理器指令可內嵌在該等指令內。處理器1510識別這些協同處理器指令係應由附接之協同處理器1545來執行的類型。因此,處理器1510在協同處理器匯流排或其他互連上將這些協同處理器指令
(或代表協同處理器指令的控制信號)發送給協同處理器1545。協同處理器1545接受且執行所接收的協同處理器指令。
現請參考圖16,圖中係展示依照本發明之一個實施例之第一更特定例示性系統1600的方塊圖。如圖16所展示的,多處理器系統1600係點對點互連系統,且包含經由點對點互連1650相耦接的第一處理器1670與第二處理器1680。處理器1670與1680之各者皆係處理器1400的某版本。在本發明的一個實施例中,處理器1670與1680分別地係處理器1510與1515,而協同處理器1638係協同處理器1545。在另一實施例中,處理器1670與1680分別地係處理器1510與協同處理器1545。
所展示的處理器1670與1680分別地包含整合式記憶體控制器(IMC)單元1672與1682。處理器1670亦包含作為其一部分的匯流排控制器單元點對點(P-P)介面1676與1678;同樣地,第二處理器1680亦包含P-P介面1686與1688。處理器1670、1680可使用P-P介面電路1678、1688經由點對點(P-P)介面1650互換資訊。如圖16所展示的,IMC 1672與1682將處理器耦接至各別的記憶體,即記憶體1632與記憶體1634,其可以係主記憶體的一部分,局部地附接至各別的處理器。
處理器1670、1680每一個皆可使用點對點介面電路1676、1694、1686、1698經由個別的P-P介面1652、1654而與晶片組1690交換資訊。晶片組1690可經由高
性能介面1639而與協同處理器1638可選地交換資訊。在一個實施例中,協同處理器1638係專用處理器,諸如,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器,等等。
共享快取(未圖示)可包括在處理器內或兩處理器的外部,此外還經由點對點(P-P)互連而與處理器連接,使得若處理器被置於低電力模式中,則其中之一或兩個處理器的局部快取資訊可被儲存在共享快取中。
晶片組1690可經由介面1696耦接至第一匯流排1616。在一個實施例中,第一匯流排1616可以係周邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一個第三代I/O互連匯流排之匯流排,僅管本發明的範圍係不限於此。
如在圖16中所展示的,各種的I/O裝置1614連同將第一匯流排1616耦接至第二匯流排1620的匯流排橋接器1618,可被耦接至第一匯流排1616。在一個實施例中,一或多個額外的處理器1615,諸如協同處理器、高處理量MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理器(DSP)單元)、欄位可編程閘極陣列或任何其他的處理器,皆可耦接至第一匯流排1616。在一個實施例中,第二匯流排1620可以係低接腳數(LPC)匯流排。各種裝置可被耦接至第二匯流排1620,在一個實施例中,例如,包含鍵盤及/或滑鼠1622、通訊裝置1627與儲存單元1628,諸如磁碟機或可
包含指令/碼與資料1630的其他大量儲存裝置。此外,音訊I/O 1624亦可耦接至第二匯流排1620。應注意,亦可能係其他的架構。例如,系統可實施多點匯流排或其他此種的架構來取代圖16的點對點架構。
現請參考圖17,圖中係展示依照本發明之一個實施例之第二更特定例示性系統1700的方塊圖。圖16與17中相似的元素使用相似的元件符號,且為了避免糢糊圖17的其他態樣,從圖17省略了圖16中的某些態樣。
圖17係繪示處理器1670、1680分別地包含整合式記憶體與I/O控制邏輯(「CL」)1672與1682。因此,CL 1672、1682包含整合式記憶體控制器單元且包含I/O控制邏輯。圖17係繪示不僅記憶體1632、1634耦接至CL1672、1682,且I/O裝置1714亦耦接至控制邏輯1672、1682。舊有I/O裝置1715耦接至晶片組1690。
現請參考圖18,圖中係展示依照本發明之一個實施例之SoC 1800的方塊圖。在圖14中相似的元素使用相似的元件符號。此外,虛線框係在更先進之SoC上之選用的特徵。在圖18中,互連單元1802耦接至:包含一組的一或多個核心172A至N與共享快取單元1406的應用處理器1810;系統代理單元1410;匯流排控制器單元1416;整合式記憶體控制器單元1414;一組或一或多個協同處理器1820,其可包含整合式圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1830;直接記憶體存取(DMA)單元1832;及用於
耦接至一或多個外部顯示器的顯示單元1840。在一個實施例中,協同處理器1820包含專用處理器,諸如,例如,網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、內嵌式處理器,等等。
在本文中所揭示之機制的實施例可在硬體、軟體、韌體或此種實施方法之組合中來實施。本發明之實施例可實施為電腦程式或程式碼,可在包括至少一個處理器、儲存系統(包含揮發性與非揮發性記憶體及/或儲存元素)、至少一個輸入裝置及至少一個輸出裝置的可編程系統上來執行。
程式碼,諸如在圖16中所繪示的碼1630,可被施加於輸入指令以執行在本文中所描述的功能,且產生輸出資訊。該輸出資訊可按習知的方式而被施加於一或多個輸出裝置。基於本申請案之目的,處理系統包含任何具有處理器的系統,諸如,例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)或微處理器。
該程式碼可在高階程序或物件導向程式語言中來實施,以與處理系統通訊。若有需要的話,則程式碼亦可在組合或機器語言中來實施。事實上,在本文中所述的機制不限於任何特定程式語言的範圍。無論如何,該語言係可被編譯或解譯的語言。
至少一個實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表指令來實施,其代表處理器內的各種邏輯,當這些指令被機器讀取時,致使機器製造用以實施在
本文中所描述之技術的邏輯。此種表示法係習知的「IP核心」,可被儲存在有形的機器可讀取媒體上,且供應給各種客戶或製造工廠,用以載入至實際製造邏輯或處理器的製造機器中。
此機器可讀取儲存媒體可包含(但不限於):藉由機器或裝置所製造或形成之物件的非暫態性有形配置,包含諸如硬式磁碟機的儲存媒體;任何其他類型的碟片,包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可覆寫光碟(CD-RW)及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡;或適合儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包含非暫態性有形機器可讀取媒體,其內包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義在本文中所描述的結構、電路、裝置、處理器及/或系統特徵。此種實施例亦被稱為程式產品。
在某些情況中,可使用指令轉換器將指令從源指令集轉換至目標指令集。例如,指令轉換器可轉譯(例如,使
用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)、變形、仿真,或以其他方式將指令轉換成能被核心處理的一或多個其他指令。該指令轉換器可在軟體、硬體、韌體或其等之組合中來實施。該指令轉換器可位在處理器上、處理器外、或部分位在處理器上而部分在處理器外。
圖19的方塊圖係依照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換至目標指令集中之二進制指令之對照。在所繪示的實施例中,指令轉換器係軟體指令轉換器,然而,可替代地在軟體、韌體、硬體或其等之各種組合中來實施指令轉換器。圖19展示,可使用x86編譯器1904編譯高階語言1902的程式,以產生可被具有至少一個x86指令集核心1916之處理器原生地執行的x86二進制碼1906。具有至少一個x86指令集核心1916的處理器代表可大致上執行與具有至少一個x86指令集核心之英特爾處理器相同功能的任何處理器,其為了獲致與具有至少一個x86指令集核心之英特爾處理器大致上相同的結果,藉由相容地執行或以其他方式處理(1)英特爾x86指令集核心之指令集的實質部分,或(2)以在具有至少一個x86指令集核心之英特爾處理器上運作為目標之應用程式或其他軟體的目的碼版本。x86編譯器1904代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心1916之處理器上執行的x86二進制碼1906(例如,目標碼)。同樣地,圖19展示高階語言1902中的程式可使用
替代性指令集編譯器1908來編譯,以產生可被不具有至少一個x86指令集核心之處理器1914(例如,具有執行加州森尼韋爾之MIPS Technologies之MIPS指令集及/或執行加州森尼韋爾之ARM Holdings之ARM指令集之核心之處理器)原生地執行之替代性指令集二進制碼1910。指令轉換器1912被使用來將x86二進制碼1906轉換成可被無x86指令集核心之處理器1914原生地執行的碼。此經轉換的碼不太可能與替代的指令集二進制碼1910相同,原因是此指令轉換器的能力很難做到;然而,經轉換的碼將可完成一般的操作,且從替代的指令集組成指令。因此,指令轉換器1912代表軟體、硬體、韌體或其等之組合,透過仿真、模擬或任何其他處理,允許不具有x86指令集處理器或核心的處理器或其他電子裝置來執行x86二進制碼1906。
針對圖3至9中之任一個描述的組件、特徵及細節亦可視情況應用於圖1至2中之任一者。再者,針對該裝置之任一者所描述的組件、特徵及細節亦可視情況應用於在實施例中可由此種裝置來執行及/或利用此種裝置來執行的任何方法。在本文中所述之任何處理器可被包括在本文中所揭示之任何電腦系統中(例如,圖15至17)或SoC(例如,圖18)。在本文中所揭示之該指令可利用在本文中所展示的具有在本文中所展示的任何微架構的任何處理器而在本文中所展示的任何系統上來執行。在本文中所揭示之該指令可具有在本文中所展示的該指令格式的任何
特徵(例如,在圖7及/或圖10A至C中)。
在說明及申請專利範圍中,可使用術語「耦接」及/或「連接」連同其等之衍生詞。這些術語不旨在作為彼此的同義詞。而是,在實施例中,「連接」可被使用以指示兩個或更多個元素係彼此直接實體及/或電接觸。「耦接」可表示兩個或更多個元素係彼此直接實體及/或電接觸。然而,「耦接」亦可表示兩個或更多個元素彼此不直接接觸,但是仍然彼此協作或交互作用。例如,執行單元可藉由一或多個中間組件而與暫存器及/或解碼單元相耦接。在附圖中,箭頭被使用以展示連接及耦接。
可使用術語「及/或」。如在本文中所使用的,術語「及/或」表示一個或另一個或兩者(例如,A及/或B表示A或B或A與B兩者)。
在以上之描述中,已經闡述了特定細節以便提供對該實施例的徹底瞭解。然而,可在沒有這些特定細節中的某些之情況下來實施其他實施例。本發明之範圍不由以上所提供之該特定實施例來判定,而僅由以下之申請專利範圍來判定。在其他範例中,已經以方塊圖形式及/或無細節的形式來展示習知的電路、結構、裝置及操作,以避免模糊對本描述之瞭解。在認為適當的情況下,元件符號或元件符號之末端部分已經在附圖之間重複,以指示對應或類似的元素,除非另有說明或清楚地顯示,否則其可視情況具有相似或相同的特性。
某些操作可由硬體組件來執行,或可被實施於機器可
執行或電路可執行的指令中,其可被使用以引起及/或導致機器、電路或硬體組件(例如,處理器、部分處理器、電路等等)利用執行操作之該指令來編程。該操作亦可視情況由硬體及軟體之組合來執行。處理器、機器、電路或硬體可包含具體或特定電路或其他邏輯(例如,可能與韌體及/或軟體組合之硬體),其可操作以執行及/或處理該指令且回應於該指令來儲存結果。
一些實施例係包含其包含機器可讀取媒體之製造物品(例如,電腦程式產品)。該媒體可包含以機器可讀的形式來提供(例如儲存資訊)的機制。該機器可讀取媒體可提供或其上已儲存有指令或指令之序列,若及/或當由機器來執行時,係可操作該指令或指令之序列而使機器執行及/或導致機器執行在本文中所揭示之一或多個操作、方法或技術。
在某些實施例中,該機器可讀取媒體可包含非暫態性機器可讀取儲存媒體。例如,該非暫態性機器可讀取儲存媒體可包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除及可編程ROM(EPROM)、電可抹除及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態性記憶體、非暫態性資料儲存裝置等等。該非暫態性機
器可讀取儲存媒體不由暫時性傳播之信號所組成。
合適的機器的範例係包含(但不限於)通用處理器、專用處理器,數位邏輯電路、整合式電路等等。合適的機器的又其他範例係包含電腦系統或包含處理器、數位邏輯電路或整合式電路之其他電子裝置。此種電腦系統或電子裝置之範例係包含(但不限於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、隨身型易網機、智慧手機、行動電話、伺服器、網路裝置(例如,路由器及交換機)、行動互聯網裝置(MID)、媒體播放器、智慧電視,桌上型易網機、機上盒及視訊遊戲控制器。
在整個本說明書中提及例如「一個實施例」、「一實施例」、「一或多個實施例」、「某些實施例」,係指示特定特徵可包括在本發明之實施中,但不一定需要是。同樣地,在描述中,為了簡化該揭示內容且幫助瞭解各種創造性態樣的目的,各種特徵有時在單一實施例、圖或其描述中被分組在一起。然而,本發明之方法不應被解譯為反映本發明需要比在各個申請專利範圍中所明確地記載之特徵更多的特徵之意圖。相反地,如以下申請專利範圍所反映的,發明態樣係在於少於單一揭示之實施例之所有特徵。因此,在具體實施方式之後的申請專利範圍係藉此被明確地併入至本具體實施方式中,其中每個申請專利範圍依據其本身而作為本發明的單獨實施例。
以下範例關於進一步之實施例。在範例中之細節可在一或多個實施例中的任何地方使用。
範例1係包含複數個緊縮資料暫存器及用以解碼毗連資料元素成對調換指令之解碼單元之處理器。該毗連資料元素成對調換指令係用以指示包含複數對的毗連資料元素之源緊縮資料,且用以指示目的儲存位置。該處理器亦包含與該複數個緊縮資料暫存器及該解碼單元相耦接之執行單元。該執行單元回應於該毗連資料元素成對調換指令,將結果緊縮資料儲存在該目的儲存位置中。該結果緊縮資料係要包含複數對的毗連資料元素。該結果緊縮資料之各對的毗連資料元素對應於該源緊縮資料之不同對的毗連資料元素。在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係已相對於在該源緊縮資料之各對應對的毗連資料元素中之該毗連資料元素被調換過。
範例2係包含範例1之處理器,其中,該解碼單元係用以解碼並非用以指示任何非運算碼調換控制位元之該指令,該非運算碼調換控制位元係用以控制資料元素之位置的調換。
範例3係包含範例1之處理器,其中,在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素而被調換過之在各對的該結果緊縮資料中之該毗連資料元素係要隱含於該指令之運算碼。
範例4係包含範例1之處理器,其中,在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素而被調
換過之在各對的該結果緊縮資料中之該毗連資料元素對於該指令之運算碼而言為固定的。
範例5係包含範例1至4中之任一者之處理器,其中,該解碼單元係用以解碼用來指示僅單一個源運算元之該指令,該單一個源運算元將要作為該源緊縮資料。
範例6係包含範例1至5中之任一者之處理器,其中,該解碼單元係用以解碼用來指示該源緊縮資料之該指令,該源緊縮資料係要包含將要作為多位元組資料元素之該對的毗連資料元素。
範例7係包含範例1至6中之任一者之處理器,其中,該解碼單元係用以解碼用來指示該源緊縮資料之該指令,該源緊縮資料係要包含將要作為浮點資料元素之該對的毗連資料元素。
範例8係包含範例1至7中之任一者之處理器,其中,該解碼單元係用以解碼用來指示源緊縮資料操作遮罩之該指令。
範例9係包含範例8之處理器,其中,該執行單元回應於該指令而儲存係要包含額外對的毗連資料元素之該結果緊縮資料,該額外對的毗連資料元素對應於該源緊縮資料之額外對的毗連資料元素,且其係對應於該源緊縮資料操作遮罩之至少一個遮蔽的遮罩元素。在該額外對的該結果緊縮資料中之該毗連資料元素係在位置上相對於在該對應額外對的毗連資料元素中之該毗連資料元素尚未被調換過。
範例10係包含範例9之處理器,其中,該至少一個遮蔽的遮罩元素係要包括單一個遮蔽的遮罩元素,該單一個遮蔽的遮罩元素對應於該結果緊縮資料之該額外對的毗連資料元素之兩個資料元素。
範例11係包含範例9之處理器,其中,該至少一個遮蔽的遮罩元素係要包括一對的遮蔽的遮罩元素,該對遮蔽的遮罩元素係各自對應於該結果緊縮資料之該額外對的毗連資料元素之該資料元素的不同者。
範例12係包含範例1至7中之任一者之處理器,其中,該執行單元包含非控制調換邏輯,其用以在位置上相對於在各對應對的該源緊縮資料中的該毗連資料元素來調換在各對的該結果緊縮資料中的該毗連資料元素而不需要解譯用於各對的該源緊縮資料之一或多個控制位元集。
範例13係包含範例1至7中之任一者之處理器,其中,該解碼單元亦係用以解碼混洗指令與重排指令的其中一者,其係屬於與該毗連資料元素成對調換指令相同的指令集。可選地,該混洗及重排指令之該其中一者係要具有比該毗連資料元素成對調換指令更長的位元指令長度。
範例14係包含範例1至7中之任一者之處理器,其中,該解碼單元亦係用以解碼混洗指令與重排指令的其中一者,其係屬於與該毗連資料元素成對調換指令相同的指令集。可選地,該處理器欲在小於執行所述之該混洗及重排指令中之一者的時間量的至少一個時脈週期中來執行該毗連資料元素成對調換指令。
範例15係在一種處理器中的方法,該處理器包含接收毗連資料元素成對調換指令。該毗連資料元素成對調換指令指示包含複數對的毗連資料元素之源緊縮資料,且指示目的儲存位置。該方法亦包含回應於該毗連資料元素成對調換指令而將結果緊縮資料儲存在該目的儲存位置中。該結果緊縮資料包含複數對的毗連資料元素。該結果緊縮資料之各對的毗連資料元素對應於該源緊縮資料之不同對的毗連資料元素。在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係相對於在該源緊縮資料之各對應對的毗連資料元素中之該毗連資料元素來調換。
範例16係包含範例15之方法,其中,接收包含接收不指示任何非運算碼調換控制位元之該指令。
範例17係包含範例15至16中之任一者之方法,其中,在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素調換在各對的該結果緊縮資料中的該毗連資料元素係隱含於及固定用於該指令之運算碼之至少一者。
範例18係包含範例15至17中之任一者之方法,其中,接收包含接收將該源緊縮資料指示為單一個源運算元之該指令。
範例19係包含範例15至18中之任一者之方法,其中,接收包含接收指示該源緊縮資料之該指令,該源緊縮資料包含係多位元組浮點資料元素之該對的毗連資料元素。
範例20係包含範例15至19中之任一者之方法,其
中,接收包含接收指示源緊縮資料操作遮罩之該指令。
範例21係包含範例15至20中之任一者之方法,其中,接收包含接收指示該源緊縮資料之該指令,該源緊縮資料包含各包含了一個包含實數及虛數之複數之該對的毗連資料元素。此外,其中儲存係包含儲存該結果緊縮資料,其中在各對的該結果緊縮資料中之該實數及虛數位置上相對於在各對應對的該源緊縮資料中之該實數及虛數已經被調換過。
範例22係用以處理指令之系統,該指令包含互連,及與該互連耦接之處理器。該處理器接收毗連資料元素成對調換指令,該毗連資料元素成對調換指令指示包含複數對的毗連多位元組資料元素之源緊縮資料,且指示目的緊縮資料暫存器。回應於該毗連資料元素成對調換指令,該處理器將結果緊縮資料儲存在該目的緊縮資料暫存器中。該結果緊縮資料包含複數對的毗連多位元組資料元素。該結果緊縮資料之各對的毗連多位元組資料元素將對應於該源緊縮資料之不同對的毗連多位元組資料元素。在該結果緊縮資料之各對的毗連多位元組資料元素中之該毗連多位元組資料元素在位置上已經相對於在該源緊縮資料之各對應對的毗連多位元組資料元素中之該毗連多位元組資料元素被調換過。該系統亦包含動態隨機存取記憶體(DRAM),其與該互連耦接。
範例23係包含範例22之系統,其中,該指令係並未指示用以控制資料元素之位置之調換的任何非運算碼調換
控制位元。
範例24係包含非暫態性機器可讀取儲存媒體之製造物品。該非暫態性機器可讀取儲存媒體係儲存毗連資料元素成對調換指令。該毗連資料元素成對調換指令指示包含複數對的毗連多位元組資料元素之源緊縮資料,且指示目的儲存位置。該毗連資料元素成對調換指令,若由機器來執行的話,則使該機器執行包含將結果緊縮資料儲存在該目的儲存位置中之操作。該結果緊縮資料將包含複數對的毗連多位元組資料元素。該結果緊縮資料之各對的毗連多位元組資料元素將對應於該源緊縮資料之不同對的毗連多位元組資料元素。在該結果緊縮資料之各對的毗連多位元組資料元素中之該毗連多位元組資料元素在位置上已經相對於在該源緊縮資料之各對應對的毗連多位元組資料元素中之該毗連多位元組資料元素被調換過。
範例25係包含範例24之製造物品,其中,該機器在位置上基於該指令之運算碼(而非基於任何額外的非運算碼調換控制位元)而欲調換相對於在各對應對的該源緊縮資料中之該毗連資料元素之在各對的該結果緊縮資料中之該毗連資料元素。
範例26係包含範例1至14中之任一者之處理器,其進一步包含用以預測分支之可選的分支預測單元,及與該分支預測單元相耦接的可選指令預取單元,該指令預取單元預取包含該毗連資料元素成對調換指令之指令。該處理器亦可視情況包含與該指令預取單元、用以儲存指令之該
L1指令快取、用以儲存資料之可選的L1資料快取及用以儲存資料及指令之可選的2階(L2)快取相耦接之可選的1階(L1)指令快取。該處理器亦可視情況包含與該解碼單元、該L1指令快取及該L2快取相耦接之指令提取單元,以在某些情況下從該L1指令快取及該L2快取中之一者提取該毗連資料元素成對調換指令,且將該毗連資料元素成對調換指令提供至該解碼單元。該處理器亦可視情況包含:暫存器更名單元,其用以更名暫存器;可選的排程器,其用以排程已經從該毗連資料元素成對調換指令解碼以用於執行的一或多個操作。
範例27包含一系統晶片,該系統晶片包含至少一個互連、與該至少一個互連耦接之範例1至14中之任一者之該處理器、與該至少一個互連耦接之可選的圖形處理單元(GPU)、與該至少一個互連耦接之可選的數位信號處理器(DSP)、與該至少一個互連耦接之可選的顯示控制器、與該至少一個互連耦接之可選的記憶體控制器、與該至少一個互連耦接之可選的無線數據機、與該至少一個互連耦接之可選的影像信號處理器、與該至少一個互連耦接之可選的通用串行匯流排(USB)兼容控制器、與該至少一個互連耦接之可選的藍牙兼容控制器,以及與該至少一個互連耦接之可選的無線收發器控制器。
範例28係用以執行(例如,可操作以執行)範例15至21中之任一者之方法的處理器或其他裝置。
範例29係包含用於執行範例15至21中之任一者之
方法之裝置的處理器或其他裝置。
範例30係包含用以執行(例如,可操作以執行)範例15至21中之任一者之方法之邏輯的處理器。
範例31係包含可選地非暫態性機器可讀取媒體之製造物品,其可選地儲存或以其他方式來提供指令,若及/或當由處理器、電腦系統、電子裝置或其他機器來執行時,則該指令係可操作以使該機器執行範例15至21中之任一者之該方法。
範例32係大致上如在本文中所述的處理器或其他裝置。
範例33係可操作以執行大致上如在本文中所述之任何方法的處理器或其他裝置。
範例34係大致上如在本文中所述之用以執行(例如,具有用以執行或可操作以執行之邏輯)任何指令的處理器或其他裝置。
範例35係電腦系統或其他電子裝置,其包含具有用以解碼第一指令集之指令之解碼單元之處理器。該處理器亦具有一或多個執行單元。該電子裝置亦包含與該處理器耦接之儲存裝置。該儲存裝置係用以儲存第一指令,該第一指令可以係大致上如在本文中所揭示的任何的該毗連資料元素成對調換指令,且其將係屬於第二指令集的。該儲存裝置亦用以儲存指令以將該第一指令轉換成該第一指令集之一或多個指令。當由該處理器執行時,則該第一指令集之該一或多個指令使該處理器仿真該第一指令。
100‧‧‧處理器
102‧‧‧資料元素成對調換指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
110‧‧‧源緊縮資料暫存器
112‧‧‧源緊縮資料
114‧‧‧目的緊縮資料暫存器
116‧‧‧結果緊縮資料
118‧‧‧緊縮資料操作遮罩暫存器(可選的)
120‧‧‧源緊縮資料操作遮罩(可選的)
Claims (25)
- 一種處理器,包括:複數個緊縮資料暫存器;解碼單元,用以解碼毗連資料元素成對調換指令,該毗連資料元素成對調換指令用以指示源緊縮資料,該源緊縮資料係要包含複數對的毗連資料元素,且用以指示目的儲存位置;及執行單元,係與該複數個緊縮資料暫存器及該解碼單元相耦接,該執行單元回應於該毗連資料元素成對調換指令而將結果緊縮資料儲存在該目的儲存位置中,該結果緊縮資料係要包含複數對的毗連資料元素,該結果緊縮資料之各對的毗連資料元素對應於該源緊縮資料之不同對的毗連資料元素,在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係已相對於在該源緊縮資料之各對應對的毗連資料元素中的該毗連資料元素被調換過。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係用以解碼並非用以指示任何非運算碼調換控制位元之指令,該非運算碼調換控制位元係用以控制資料元素之位置的調換。
- 如申請專利範圍第1項之處理器,其中,在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素被調換過之在各對的該結果緊縮資料中的該毗連資料元素係要隱含於該指令之運算碼。
- 如申請專利範圍第1項之處理器,其中,在位置 上相對於在各對應對的該源緊縮資料中之該毗連資料元素被調換過之在各對的該結果緊縮資料中的該毗連資料元素對於該指令之運算碼而言為固定的。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係用以解碼用來指示僅單一個源運算元之指令,該單一個源運算元將要作為該源緊縮資料。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係用以解碼用來指示該源緊縮資料之該指令,該源緊縮資料係要包含將要作為多位元組資料元素之該對的毗連資料元素。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係用以解碼用來指示該源緊縮資料之該指令,該源緊縮資料係要包含將要作為浮點資料元素之該對的毗連資料元素。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係用以解碼用來指示源緊縮資料操作遮罩之該指令。
- 如申請專利範圍第8項之處理器,其中,該執行單元回應於該指令而儲存係要包含額外對的毗連資料元素之該結果緊縮資料,該額外對的毗連資料元素係要對應於該源緊縮資料之額外對的毗連資料元素,且其係對應於該源緊縮資料操作遮罩之至少一個遮蔽的遮罩元素,且其中,在該額外對的該結果緊縮資料中之該毗連資料元素係在位置上相對於在該對應額外對的毗連資料元素中之該毗連資料元素尚未被調換過。
- 如申請專利範圍第9項之處理器,其中,該至少一個遮蔽的遮罩元素係要包括單一個遮蔽的遮罩元素,該單一個遮蔽的遮罩元素係要對應於該結果緊縮資料之該額外對的毗連資料元素之兩個資料元素。
- 如申請專利範圍第9項之處理器,其中,該至少一個遮蔽的遮罩元素係要包括一對遮蔽的遮罩元素,該對遮蔽的遮罩元素係各自對應於該結果緊縮資料之該額外對的毗連資料元素之該資料元素的不同者。
- 如申請專利範圍第1項之處理器,其中,該執行單元包含非控制調換邏輯,用以在位置上相對於在各對應對的該源緊縮資料中的該毗連資料元素來調換在各對的該結果緊縮資料中的該毗連資料元素而不需要解譯用於各對的該源緊縮資料之一或多個控制位元集。
- 如申請專利範圍第1項之處理器,其中,該解碼單元亦用以解碼混洗指令與重排指令的其中一者,其係欲作為具有和該毗連資料元素成對調換指令相同的指令集者,且其中,該混洗及重排指令之該其中一者在位元上係要具有比該毗連資料元素成對調換指令還要長的指令長度。
- 如申請專利範圍第1項之處理器,其中,該解碼單元亦用以解碼混洗指令與重排指令的其中一者,其係欲作為具有和該毗連資料元素成對調換指令相同的指令集者,且其中,該處理器係用以在比用以執行該混洗及重排指令之該其中一者之時間量還要少的至少一個時脈週期中 執行該毗連資料元素成對調換指令。
- 一種處理器中之方法,包括:接收毗連資料元素成對調換指令,該毗連資料元素成對調換指令指示包含複數對的毗連資料元素之源緊縮資料,且指示目的儲存位置;且回應於該毗連資料元素成對調換指令而將結果緊縮資料儲存在該目的儲存位置中,該結果緊縮資料包含複數對的毗連資料元素,該結果緊縮資料之各對的毗連資料元素係要對應於該源緊縮資料之不同對的毗連資料元素,在該結果緊縮資料之各對的毗連資料元素中之該毗連資料元素在位置上係相對於在該源緊縮資料之各對應對的毗連資料元素中的該毗連資料元素被調換過。
- 如申請專利範圍第15項之方法,其中,該接收包括接收並未指示任何非運算碼調換控制位元之該指令。
- 如申請專利範圍第15項之方法,其中,在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素調換在各對的該結果緊縮資料中的該毗連資料元素係隱含於及固定用於該指令之運算碼的至少一者。
- 如申請專利範圍第15之方法,其中,該接收包括接收指示該源緊縮資料作為單一個源運算元之該指令。
- 如申請專利範圍第15項之方法,其中,該接收包括接收指示該源緊縮資料之該指令,該源緊縮資料係包含為多位元組浮點資料元素之該對的毗連資料元素。
- 如申請專利範圍第15項之方法,其中,該接收 包括接收指示源緊縮資料操作遮罩之該指令。
- 如申請專利範圍第15項之方法,其中,該接收包括接收指示包含該對的毗連資料元素之該源緊縮資料之該指令,該對的毗連資料元素各包含複數,該複數包含實數及虛數,且其中,該儲存包括儲存該結果緊縮資料,其中,在各對的該結果緊縮資料中之該實數及虛數在位置上已相對於在各對應對的該源緊縮資料中的該實數及虛數被調換過。
- 一種用以處理指令之系統,包括:互連;處理器,係與該互連相耦接,該處理器用以接收毗連資料元素成對調換指令,該毗連資料元素成對調換指令係用以指示包含複數對的毗連多位元組資料元素之源緊縮資料,且用以指示目的緊縮資料暫存器,該處理器回應於該毗連資料元素成對調換指令而將結果緊縮資料儲存在該目的緊縮資料暫存器中,該結果緊縮資料係要包含複數對的毗連多位元組資料元素,該結果緊縮資料之各對的毗連多位元組資料元素對應於該源緊縮資料之不同對的毗連多位元組資料元素,在該結果緊縮資料之各對的毗連多位元組資料元素中之該毗連多位元組資料元素在位置上係已相對於在該源緊縮資料之各對應對的毗連多位元組資料元素中的該毗連多位元組資料元素被調換過;及動態隨機存取記憶體(DRAM),係與該互連相耦接。
- 如申請專利範圍第22項之系統,其中,該指令係並未指示用以控制資料元素之位置之調換的任何非運算碼調換控制位元。
- 一種製造物品,其包括非暫態性機器可讀取儲存媒體,該非暫態性機器可讀取儲存媒體儲存毗連資料元素成對調換指令,該毗連資料元素成對調換指令用以指示用以包含複數對毗連多位元組資料元素之源緊縮資料,且用以指示目的儲存位置,且該毗連資料元素成對調換指令若藉由機器執行時係造成該機器執行包括以下操作:儲存結果緊縮資料於該目的儲存位置中,該結果緊縮資料係用以包含複數對的毗連多位元組資料元素,該結果緊縮資料之各對的毗連多位元組資料元素對應於該源緊縮資料之不同對的毗連多位元組資料元素,在該結果緊縮資料之各對的毗連多位元組資料元素中之該毗連多位元組資料元素在位置上已相對於在該源緊縮資料之各對應對的毗連多位元組資料元素中之該毗連多位元組資料元素被調換過。
- 如申請專利範圍第24項之製造物品,其中,該機器係基於該指令之運算碼而非基於任何額外的非運算碼調換控制位元而在位置上相對於在各對應對的該源緊縮資料中之該毗連資料元素調換在各對的該結果緊縮資料中的該毗連資料元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/978,736 US20170177362A1 (en) | 2015-12-22 | 2015-12-22 | Adjoining data element pairwise swap processors, methods, systems, and instructions |
US14/978,736 | 2015-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732554A true TW201732554A (zh) | 2017-09-16 |
TWI818894B TWI818894B (zh) | 2023-10-21 |
Family
ID=59064488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137684A TWI818894B (zh) | 2015-12-22 | 2016-11-17 | 毗連資料元素成對調換處理器、方法、系統、及指令 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170177362A1 (zh) |
EP (1) | EP3394725B1 (zh) |
CN (1) | CN108351780B (zh) |
TW (1) | TWI818894B (zh) |
WO (1) | WO2017112185A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2564696B (en) | 2017-07-20 | 2020-02-05 | Advanced Risc Mach Ltd | Register-based complex number processing |
US20190272175A1 (en) * | 2018-03-01 | 2019-09-05 | Qualcomm Incorporated | Single pack & unpack network and method for variable bit width data formats for computational machines |
WO2020066375A1 (ja) * | 2018-09-25 | 2020-04-02 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859872B1 (en) * | 1999-05-12 | 2005-02-22 | Analog Devices, Inc. | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
WO2001086431A1 (en) * | 2000-05-05 | 2001-11-15 | Lee Ruby B | A method and system for performing subword permutation instructions for use in two-dimensional multimedia processing |
US7739319B2 (en) * | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US7822955B2 (en) * | 2003-01-21 | 2010-10-26 | Arm Limited | Data processing apparatus and method for utilizing endianess independent data values |
US7185182B2 (en) * | 2003-02-04 | 2007-02-27 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for generating early instruction results |
US7315261B2 (en) * | 2003-07-02 | 2008-01-01 | Texas Instruments Incorporated | Method for converting data from pixel format to bitplane format |
TWI265455B (en) * | 2005-04-21 | 2006-11-01 | King Billion Electronics Co Lt | Integrated data processor |
US7353331B2 (en) * | 2005-10-05 | 2008-04-01 | Intel Corporation | Hole-filling content addressable memory (HCAM) |
US20070156685A1 (en) * | 2005-12-28 | 2007-07-05 | Hiroshi Inoue | Method for sorting data using SIMD instructions |
CN101882127B (zh) * | 2010-06-02 | 2011-11-09 | 湖南大学 | 一种多核心处理器 |
US20120110037A1 (en) * | 2010-11-01 | 2012-05-03 | Qualcomm Incorporated | Methods and Apparatus for a Read, Merge and Write Register File |
GB2485774A (en) * | 2010-11-23 | 2012-05-30 | Advanced Risc Mach Ltd | Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field |
US20120278591A1 (en) * | 2011-04-27 | 2012-11-01 | Advanced Micro Devices, Inc. | Crossbar switch module having data movement instruction processor module and methods for implementing the same |
US10803009B2 (en) * | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
CN104126168B (zh) * | 2011-12-22 | 2019-01-08 | 英特尔公司 | 打包数据重新安排控制索引前体生成处理器、方法、系统及指令 |
US10564966B2 (en) * | 2011-12-22 | 2020-02-18 | Intel Corporation | Packed data operation mask shift processors, methods, systems, and instructions |
WO2013101232A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Packed rotate processors, methods, systems, and instructions |
US9395992B2 (en) * | 2012-11-19 | 2016-07-19 | International Business Machines Corporation | Instruction swap for patching problematic instructions in a microprocessor |
-
2015
- 2015-12-22 US US14/978,736 patent/US20170177362A1/en not_active Abandoned
-
2016
- 2016-11-17 TW TW105137684A patent/TWI818894B/zh active
- 2016-11-18 WO PCT/US2016/062867 patent/WO2017112185A1/en active Application Filing
- 2016-11-18 CN CN201680068241.7A patent/CN108351780B/zh active Active
- 2016-11-18 EP EP16879675.3A patent/EP3394725B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3394725B1 (en) | 2021-12-01 |
US20170177362A1 (en) | 2017-06-22 |
EP3394725A1 (en) | 2018-10-31 |
TWI818894B (zh) | 2023-10-21 |
CN108351780A (zh) | 2018-07-31 |
WO2017112185A1 (en) | 2017-06-29 |
EP3394725A4 (en) | 2020-04-22 |
CN108351780B (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI556165B (zh) | 位元混洗處理器、方法、系統及指令 | |
TWI575448B (zh) | 三個來源運算元浮點加法處理器、方法、系統及指令 | |
TWI630548B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
TWI512616B (zh) | 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品 | |
TWI525533B (zh) | 用以執行遮罩位元壓縮之系統、設備、及方法 | |
TWI512531B (zh) | 用以處理blake安全雜湊演算法的方法、設備、系統及製品 | |
TWI715618B (zh) | 資料元件比較處理器、方法、系統及指令 | |
TWI567645B (zh) | 位元群組交錯處理器、方法、系統及指令 | |
TWI647613B (zh) | 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(三) | |
TWI518588B (zh) | 遮罩暫存器上的廣播運算技術 | |
TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
TWI550508B (zh) | 用於複製資料結構之設備及方法 | |
JP6419205B2 (ja) | プロセッサ、方法、システム、コンピュータシステム、およびコンピュータ可読記憶媒体 | |
TWI747881B (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
CN107391086B (zh) | 改进置换指令的装置和方法 | |
KR101729424B1 (ko) | 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트 | |
TWI599951B (zh) | 用於融合乘法乘法指令的處理器、方法及系統 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
CN111831335A (zh) | 经改进的插入指令的装置和方法 | |
TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 |