TWI603289B - 用以從三維座標計算三維z曲線指標的機器階層指令 - Google Patents

用以從三維座標計算三維z曲線指標的機器階層指令 Download PDF

Info

Publication number
TWI603289B
TWI603289B TW104133232A TW104133232A TWI603289B TW I603289 B TWI603289 B TW I603289B TW 104133232 A TW104133232 A TW 104133232A TW 104133232 A TW104133232 A TW 104133232A TW I603289 B TWI603289 B TW I603289B
Authority
TW
Taiwan
Prior art keywords
instruction
source
field
bit
processor
Prior art date
Application number
TW104133232A
Other languages
English (en)
Other versions
TW201626331A (zh
Inventor
阿諾德 伊凡
艾蒙斯特阿法 歐德亞麥德維爾
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201626331A publication Critical patent/TW201626331A/zh
Application granted granted Critical
Publication of TWI603289B publication Critical patent/TWI603289B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros

Landscapes

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

Description

用以從三維座標計算三維Z曲線指標的機器階層指令
實施例一般係有關電腦處理器之領域。更特別地,係有關一種包括用以從三維座標計算三維Z曲線指標的機器階層指令之設備。
Z順序曲線是空間填充曲線的一種類型,該曲線是一種其域為單位間隔〔0,1〕之連續函數。Z排序(例如,摩頓排序)可提供針對其中多維局部性很重要的大資料集之顯著的性能增進,包括稀疏和緊密矩陣操作(特別是矩陣乘法)、有限元件分析、影像分析、地震分析、射線追蹤、及其他。然而,從座標計算Z順序曲線指標可能是計算上密集的。
100‧‧‧8x8矩陣
101‧‧‧維_1
102‧‧‧維_2
200‧‧‧Z曲線
202‧‧‧來源輸入
204‧‧‧temp_A
206‧‧‧temp_B
210‧‧‧單級
212‧‧‧XOR閘
214‧‧‧偏移器電路
216‧‧‧AND閘
218‧‧‧stage_out
220A‧‧‧第一邏輯級
220B‧‧‧第二邏輯級
220C‧‧‧第三邏輯級
220D‧‧‧第四邏輯級
220E‧‧‧第五邏輯級
220F‧‧‧第六邏輯級
302‧‧‧32位元來源輸入
304‧‧‧零左偏移
306‧‧‧遮蔽值
308‧‧‧輸出
314‧‧‧16位元左偏移
316‧‧‧遮蔽值
318‧‧‧輸出
324‧‧‧八位元左偏移
326‧‧‧遮蔽值
328‧‧‧輸出
334‧‧‧四位元左偏移
336‧‧‧遮蔽值
338‧‧‧輸出
344‧‧‧二位元左偏移
346‧‧‧遮蔽值
348‧‧‧輸出
402‧‧‧64位元來源輸入
404‧‧‧零左偏移
406‧‧‧遮蔽值
408‧‧‧輸出
414‧‧‧32位元左偏移
416‧‧‧遮蔽值
418‧‧‧輸出
424‧‧‧16位元左偏移
426‧‧‧遮蔽值
428‧‧‧輸出
434‧‧‧八位元左偏移
436‧‧‧遮蔽值
438‧‧‧輸出
444‧‧‧4位元左偏移
446‧‧‧遮蔽值
448‧‧‧輸出
454‧‧‧2位元左偏移
456‧‧‧遮蔽值
458‧‧‧輸出
502‧‧‧第一來源運算元
504‧‧‧第二來源運算元
506‧‧‧第三來源運算元
508‧‧‧mux
510‧‧‧z順序邏輯
512‧‧‧目的地運算元
700‧‧‧一般性向量友善指令格式
705‧‧‧無記憶體存取
710‧‧‧無記憶體存取、全捨入控制類型操作
712‧‧‧無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作
715‧‧‧無記憶體存取、資料變換類型操作
717‧‧‧無記憶體存取、寫入遮蔽控制、v大小類型操作
720‧‧‧記憶體存取
727‧‧‧記憶體存取、寫入遮蔽控制
740‧‧‧格式欄位
742‧‧‧基礎操作欄位
744‧‧‧暫存器指標欄位
746‧‧‧修飾符欄位
750‧‧‧擴增操作欄位
752‧‧‧α欄位
752A‧‧‧RS欄位
752A.1‧‧‧捨入
752A.2‧‧‧資料變換
752B‧‧‧逐出暗示欄位
752B.1‧‧‧暫時
752B.2‧‧‧非暫時
754‧‧‧β欄位
754A‧‧‧捨入控制欄位
754B‧‧‧資料變換欄位
754C‧‧‧資料調處欄位
756‧‧‧SAE欄位
757A‧‧‧RL欄位
757A.1‧‧‧捨入
757A.2‧‧‧向量長度(VSIZE)
757B‧‧‧廣播欄位
758‧‧‧捨入操作控制欄位
759A‧‧‧捨入操作欄位
759B‧‧‧向量長度欄位
760‧‧‧比例欄位
762A‧‧‧置換欄位
762B‧‧‧置換因數欄位
764‧‧‧資料元件寬度欄位
768‧‧‧類別欄位
768A‧‧‧類別A
768B‧‧‧類別B
770‧‧‧寫入遮蔽欄位
772‧‧‧即刻欄位
774‧‧‧全運算碼欄位
800‧‧‧特定向量友善指令格式
802‧‧‧EVEX前綴
805‧‧‧REX欄位
810‧‧‧REX’欄位
815‧‧‧運算碼映圖欄位
820‧‧‧VVVV欄位
825‧‧‧前綴編碼欄位
830‧‧‧真實運算碼欄位
840‧‧‧Mod R/M位元組
842‧‧‧MOD欄位
844‧‧‧Reg欄位
846‧‧‧R/M欄位
854‧‧‧SIB.xxx
856‧‧‧SIB.bbb
900‧‧‧暫存器架構
910‧‧‧向量暫存器
915‧‧‧寫入遮蔽暫存器
925‧‧‧通用暫存器
945‧‧‧純量浮點堆疊暫存器檔
950‧‧‧MMX緊縮整數平坦暫存器檔
1000‧‧‧處理器管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧配置級
1010‧‧‧重新命名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫入回/記憶體寫入級
1022‧‧‧例外處置級
1024‧‧‧確定級
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取單元
1036‧‧‧指令翻譯旁看緩衝器(TLB)
1038‧‧‧指令提取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重新命名/配置器單元
1054‧‧‧退役單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧第二階(L2)快取單元
1090‧‧‧處理器核心
1100‧‧‧指令解碼器
1102‧‧‧晶粒上互連網路
1104‧‧‧第二階(L2)快取
1106‧‧‧L1快取
1106A‧‧‧L1資料快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌合單元
1122A-B‧‧‧數值轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮蔽暫存器
1128‧‧‧16寬的ALU
1200‧‧‧處理器
1202A-N‧‧‧核心
1206‧‧‧共享快取單元
1208‧‧‧特殊用途邏輯
1210‧‧‧系統代理
1212‧‧‧環狀為基的互連單元
1214‧‧‧集成記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310,1315‧‧‧處理器
1320‧‧‧控制器集線器
1340‧‧‧記憶體
1345‧‧‧共處理器
1350‧‧‧輸入/輸出集線器(IOH)
1360‧‧‧輸入/輸出(I/O)裝置
1390‧‧‧圖形記憶體控制器集線器(GMCH)
1395‧‧‧連接
1400‧‧‧多處理器系統
1414‧‧‧I/O裝置
1415‧‧‧額外處理器
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋
1420‧‧‧第二匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音頻I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧指令/碼及資料
1432‧‧‧記憶體
1434‧‧‧記憶體
1438‧‧‧共處理器
1439‧‧‧高性能介面
1450‧‧‧點對點互連
1452,1454‧‧‧P-P介面
1470‧‧‧第一處理器
1472,1482‧‧‧集成記憶體控制器(IMC)單元
1476,1478‧‧‧點對點(P-P)介面
1480‧‧‧第二處理器
1486,1488‧‧‧P-P介面
1490‧‧‧晶片組
1494,1498‧‧‧點對點介面電路
1496‧‧‧介面
1500‧‧‧系統
1514‧‧‧I/O裝置
1515‧‧‧舊有I/O裝置
1600‧‧‧SoC
1602‧‧‧互連單元
1610‧‧‧應用程式處理器
1620‧‧‧共處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二元碼
1708‧‧‧指令集編譯器
1710‧‧‧指令集二元碼
1712‧‧‧指令轉換器
1714‧‧‧沒有至少一x86指令集核心之處理器
1716‧‧‧具有至少一x86指令集核心之處理器
從以下配合後附圖形之詳細描述可獲得對本實施例之較佳瞭解,其中:
圖1A-B闡明8x8矩陣之範例Z順序映射;圖2A-B闡明用於硬體Z曲線指標實施方式之範例多級邏輯,依據實施例。
圖3顯示用以實施32位元三維Z曲線指標指令之多級邏輯配置的方塊圖,依據實施例;圖4顯示用以實施64位元三維Z曲線指標指令之多級邏輯配置的方塊圖,依據實施例;圖5為針對用以從三個座標計算三維Z曲線指標之指令的運算元和邏輯的方塊圖,依據實施例;圖6為用以處理三維Z曲線指標指令之流程圖,依據實施例;圖7A-B為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據實施例;圖8A-D為闡明範例特定向量友善指令格式的方塊圖,依據一實施例;圖9為一暫存器架構之方塊圖,依據一實施例;圖10A為闡明範例依序提取、解碼、退役管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖;圖10B為一方塊圖,其闡明將包括於實施例中之依序提取、解碼、退役核心的範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。
圖11A-B闡明範例依序核心架構之方塊圖;圖12為一處理器之方塊圖,該處理器具有多於一核心、集成記憶體控制器、及整合圖形,依據一實施例; 圖13闡明範例計算系統之方塊圖;圖14闡明第二範例計算系統之方塊圖;圖15闡明第三範例計算系統之方塊圖;圖16闡明系統單晶片(SoC)之方塊圖,依據一實施例;及圖17為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令。
【發明內容及實施方式】
於以下說明中,為了解釋之目的,提出數個特定細節以提供下述實施例之透徹瞭解。然而,熟悉此項技術人士將清楚其實施例可被實施而無這些特定細節之部分。於其他例子中,眾所周知的結構及裝置被顯示以方塊圖形式,來避免混淆實施例之主要原則。於一實施例中,描述其延伸Intel架構(IA)之架構性延伸,但主要原則不限定於任何特定ISA。
向量及SIMD指令概述
某些類型的應用常需要相同操作被履行在大量的資料項目上(稱為「資料平行」)。單指令多資料(SIMD)係指稱一種致使處理器於多資料項目上履行操作之指令的類型。SIMD技術特別適於其可邏輯地將暫存器中之位元劃分為數個固定大小的資料元件之處理器,該資料元件各 代表分離的值。例如,256位元暫存器中之位元可被指明為來源運算元,以被操作而成為四個分離的64位元緊縮資料元件(四字元(Q)大小資料元件)、八個分離的32位元緊縮資料元件(雙字元(D)大小資料元件)、十六個分離的16位元緊縮資料元件(字元(W)大小資料元件)、或三十二個分離的8位元緊縮資料元件(位元組(B)大小資料元件)。此類型的資料被稱為「緊縮」資料類型或「向量」資料類型,而此資料類型的運算元被稱為緊縮資料運算元或向量運算元。換言之,緊縮資料項目或向量係指稱緊縮資料元件之序列,而緊縮資料運算元或向量運算元是SIMD指令之來源或目的地運算元(亦已知為緊縮資料指令或向量指令)。
SIMD技術,諸如其由具有指令集(包括x86、MMXTM、Streaming SIMD Extensions(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令)之Intel® CoreTM處理器所利用者,已致能對應用性能之顯著增進。被稱為先進向量延伸(AVX)(AVX1及AVX2)並使用向量延伸(VEX)編碼技術之一額外組SIMD延伸已被釋出(例如,參見Intel® 64及IA-32架構軟體開發商手冊,2014年九月;及參見Intel®架構指令集延伸編程參考,2014年九月)。
Z曲線指標概述
圖1A闡明針對所示的8x8矩陣100之各元件的Z順 序密鑰映射。於所顯示的各元件內,較高順序位元位於頂部而較低順序位元位於底部。Z曲線排序之一種實施方式係藉由交錯(例如,混洗)各維中之原始指標的各者之位元而被履行。所示之矩陣100的各元件中所顯示的Z排序係藉由矩陣100中之各元件的維_1 101與維_2 102之值的位元式交錯而被產生。
例如,座標〔2,3〕上之元件的Z曲線指標(例如,維_1 101中之二元010和維_2 102中之二元011)可藉由交錯各維之座標的位元來判定,導致001101之二元Z曲線指標(例如,0x0D)。範例Z曲線指標值係指示其座標〔2,3〕上之矩陣元件為範例矩陣100之Z順序曲線中的第13(零指標、基於10)指標。
圖1B為藉由依序地追蹤Z順序中之元件的矩陣元件所產生之Z曲線200的圖示。簡單的2DZ曲線及相關指標被顯示於圖1B中以供範例之目的。針對具有有限位元長度之有限數目的座標,以預計算值填入之查找表可被用以快速地判定一組座標之Z曲線指標。隨著座標之數目及大小增加,此可能變得不實際。於一實施例中,處理器包括用以計算三維Z曲線指標之32位元及64位元機器階層指令,用來減少計算負擔並增進應用性能(當分析大的資料組時)。
用以計算三維Z曲線指標的機器階層指令
於一實施例中,機器指令藉由在輸入座標值上履行位 元調處操作以致使處理器計算三維Z曲線指標。
以下的表1顯示範例32位元三維Z曲線指標之位元操作。
如表1中所示,32位元Z曲線指標指令將各來源座標之10個低階位元混洗入32位元目的地。於一實施例中,各來源之10個低階位元被交錯分配至目的地,其具有每來源三個位元的跨步及一位元偏移介於來源之間,以致該些位元被分配至零位元,接著於指明的範圍內之每第三位元。例如,src1位元被分配至位元0、3、6...27;src2位元被分配至1、4、7...28;而src3位元被分配至位元2、5、8...29。
以下的表2顯示範例64位元三維Z曲線指標指令之位元操作。
如表2中所示,64位元Z曲線指標指令將各來源座 標之20個低階位元混洗入64位元目的地。於一實施例中,各來源之20個低階位元被交錯分配至目的地,其具有每來源三個位元的跨步及一位元偏移介於來源之間,以致該些位元被分配至零位元,接著於指明的範圍內之每第三位元。例如,src1位元被分配至位元0、3、6...57;src2位元被分配至1、4、7...58;而src3位元被分配至位元2、5、8...59。
用以計算32位元Z曲線指標之高階虛擬碼被顯示於以下的表3。用以計算64位元Z曲線指標之高階虛擬碼被顯示於以下的表4。虛擬碼展示範例高階邏輯,其可被用以履行以上表1及表2中所示之位元分配。
圖2A-B闡明用於硬體Z曲線指標實施方式之範例多級邏輯,依據實施例。圖2A顯示包括XOR閘212、偏移器電路214、及AND閘216之邏輯的單級210。來源輸入202可為來自先前邏輯級之來源運算元或輸入。一組暫時暫存器(例如,temp_A 204、temp_2 306)被用以供應控制值,其中temp_A 204供應偏移值至偏移器電路而temp_B 206供應其將在資料經由stage_out 218而被輸出前被供應的位元遮罩。stage_out 218值供應SRC 202給除了最終級之外的各邏輯級。針對最終級,stage_out 218為相應於其被提供為來源(例如,SRC 202)之初始座標的目的地輸出之一部分。
圖2B顯示用以實施三維Z曲線指標指令之多級邏輯配置的方塊圖,依據實施例。於此實施例中,處理器包括 執行單元,其係組態成履行各來源輸入上之邏輯操作並將每座標組件結合成為單一輸出。於一實施例中,邏輯之單級210的多數例子220(例如,32位元之220A-E、64位元之220A-F)被配置以計算針對單一輸入座標之三維Z曲線指標的一部分除了最終級之外的所有級之stage_out 218提供後續級之來源。最終級之stage_out 218提供與單一初始輸入座標相關的Z曲線指標之部分。於一實施例中,個別座標之輸出被接著結合,在被輸出至目的地暫存器之前。
用以計算各Z曲線指標之個別組件的操作可被串列地或平行地履行於執行單元中。例如,用以計算Z曲線指標之單一巨指令可被解碼成為多數微操作,其各致使一或更多執行單元履行各來源座標之操作,在結合分離的中間值以前。
圖3顯示用以實施32位元三維Z曲線指標指令之多級邏輯配置的方塊圖,依據實施例。於一實施例中,圖2A中所示之邏輯210的多數例子可藉由如圖2B中所示之邏輯級220A-E而如圖所示般被耦合。多數級邏輯可被用以履行各座標之Z曲線指標位元混洗。第一邏輯級220A接受32位元來源輸入302,具有零左偏移304及0x000003ff之遮蔽值306。第一邏輯級220A輸出308被提供為第二邏輯級220B之來源,第二邏輯級220B係接受16位元左偏移314及0xff0000ff之遮蔽值316為輸入。第二邏輯級220B輸出318被提供為第三邏輯級220C 之來源,第三邏輯級220C係接受八位元左偏移324及0x0300f00f之遮蔽值326為輸入。第三邏輯級220C輸出328被提供為第四邏輯級220D之來源,第四邏輯級220D係接受四位元左偏移334及0x030c30c3之遮蔽值336為輸入。第四邏輯級220D輸出338被提供為第五邏輯級220E之來源,第五邏輯級220E係接受二位元左偏移344及0x030c30c3之遮蔽值346為輸入。第五邏輯級220E之輸出348被偏移並與其他來源座標之處理輸出結合並回復為三維Z曲線指標結果。各來源輸入經歷類似的邏輯管線。於一實施例中,各輸入之微操作被平行地履行。
圖4顯示用以實施64位元三維Z曲線指標指令之多級邏輯配置的方塊圖,依據實施例。圖2B中所示之各邏輯級220A-F可被用以履行各座標之Z曲線指標位元混洗。於一實施例中,邏輯級組態成履行具有至少64位元準確度之操作以產生64位元輸出。第一邏輯級220A接受64位元來源輸入402,具有零左偏移404及0x000fffff之遮蔽值406。第一邏輯級220A輸出408被提供為第二邏輯級220B之來源,第二邏輯級220B係接受32位元左偏移414及0x1f00000000ffff之遮蔽值416為輸入。第二邏輯級220B輸出418被提供為第三邏輯級220C之來源,第三邏輯級220C係接受16位元左偏移424及0x1f0000ff0000ff之遮蔽值426為輸入。第三邏輯級220C輸出428被提供為第四邏輯級220D之來源,第四邏輯級220D係接受八位元左偏移434及0x100f00f00f00f00f之 遮蔽值436為輸入。第四邏輯級220D輸出438被提供為第五邏輯級220E之來源,第五邏輯級220E係接受四位元左偏移444及0x10c30c30c30c30c3之遮蔽值446為輸入。第五邏輯級220E輸出448被提供為第五邏輯級220E之來源,第五邏輯級220E係接受2位元左偏移454及0x1249249249249249之遮蔽值456為輸入。第六邏輯級220F之輸出458被偏移並與其他來源座標之輸出結合並輸出為三維Z曲線指標。各來源輸入經歷類似的邏輯管線。於一實施例中,各輸入之微操作被平行地履行。
圖5為針對用以從三個座標計算三維Z曲線指標之指令的運算元和邏輯的方塊圖,依據實施例。指令之實施例包括三個來源運算元。第一來源運算元502係與x維相關,第二來源運算元504係與y維相關,而第三來源運算元506係與z維相關。在巨指令階層,來源運算元為儲存個別座標值之暫存器、儲存個別座標值之記憶體位址、或即刻座標值,依據實施例。在微指令階,與運算元相關的座標被儲存於處理器暫存器中,在其被執行單元所處理之前。於一實施例中,多工器(例如,mux 508)將來源暫存器耦合至處理器執行單元中之z順序邏輯510,其係從來源座標計算Z順序指標。32位元預輸出暫存器及最後結果暫存器之範例位元佈局的-表示被顯示於以下的表5中。
以上的表5顯示各來源輸入之32位元預輸出。表5中之各x、y、或z值係指示所示座標值之單一位元,其具有最低有效位元於右邊及最高有效位元於左邊。於一實施例中,SRC1’的預輸出值被產生自其由SRC1 502所指示的值,SRC2’的預輸出值被產生自其由SRC2 504所指示的值,而SRC3’的預輸出值被產生自其由SRC3 506所指示的值。於此實施例中,Z順序指標係藉由以下方式來產生:向左偏移SRC2’之預輸出一位元、向左偏移SRC3’之預輸出二位元、及履行位元式OR操作於已偏移的預輸出值上。計算出的指標被接著輸出至一由指令之目的地運算元512所指明的DEST位置。於一實施例中,所示之暫存器為SIMD/向量暫存器而指令為用以履行向量操作之SIMD指令。
圖6為用以處理三維Z曲線指標指令之流程圖,依據實施例。如區塊602所示,指令管線在當處理器提取一用以計算三維Z曲線指標之單一Z曲線指標指令時開始。該指令具有第一、第二、和第三來源運算元、以及目的地運算元,亦如區塊602所示。
如區塊604所示,處理器將Z曲線指標指令解碼成為已解碼指令。於一實施例中,已解碼指令為單一操作。於 一實施例中,已解碼指令包括用以履行指令之各子元件的一或更多邏輯微操作。微操作可為硬線或微碼操作,用以致使處理器之組件(諸如執行單元)履行各種操作來實施該指令。
於一實施例中,已解碼指令致使處理器之組件(諸如執行單元)以履行各種操作,包括用以提取由來源運算元所指示之來源運算元值的操作,如區塊606所示。於各個實施例中,來源運算元可包括暫存器、記憶體位址或即刻值。微操作可從記憶體提取值或者將值載入內部處理器暫存器。
如區塊608所示,一或更多處理器執行單元執行已解碼指令以藉由交錯來源座標值之組成位元來計算三維Z曲線指標。於一實施例中,Z曲線指標係藉由將各來源值之10個低階位元交錯入長度至少30位元之Z曲線指標來計算。於一實施例中,Z曲線指標係藉由將各來源值之20個低階位元交錯入長度至少60位元之Z曲線指標來計算。
如區塊610所示,處理器將Z曲線指標指令之結果儲存入其由目的地運算元所指示之位置內。針對32位元指令,Z曲線指標被儲存至32位元輸出暫存器。針對64位元指令,Z曲線指標被儲存於64位元輸出暫存器。
文中所述之實施例係指稱使用X、Y、及Z座標之操作,該些座標為用以界定三維空間中之位置的笛卡爾坐標。本技術中具有通常知識者將理解:所使用之座標為範 例且X、Y、及Z座標通常係指稱用以界定三維空間中之第一、第二、或第三維之位置的任何組座標,於其三維空間中Z曲線排序係可被應用的。
文中所述之實施例可被實施於處理設備或資料處理系統中。於前面說明中,提出數個特定細節以提供文中所述之實施例的透徹瞭解。然而,實施例可被實行而無這些特定細節的部分,如本技術中具有通常知識者將清楚明白的。所描述之某些架構特徵為Intel架構(IA)之延伸。然而,主要原理不限於任何特定的ISA。
文中所述之指令的實施例係操作於來源座標值內之高階或低階位元上。如文中所述,高和低階位元被定義為最高有效和最低有效位元,而無關於用以解讀其組成資料字元之位元組(當那些位元組被儲存於電腦記憶體中時)的約定。換言之,低階(或最低有效)位元可被儲存於資料字元內之最小位址或最大位址中,依據使用中的位元組順序約定。
為了提供更完整的瞭解,範例指令格式、處理器核心架構、處理器、及電腦架構之概述被提供於下。
範例指令格式
文中所述之指令的實施例可被實施以不同的格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線上,但不限定於那些細節。
向量友善指令格式是一種適於向量指令之指令格式(例如,有向量操作特定的某些欄位)。雖然實施例係描述其中向量和純量操作兩者均透過向量友善指令格式而被支援,但替代實施例僅使用具有向量友善指令格式之向量操作。
圖7A-7B為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據一實施例。圖7A為闡明一般性向量友善指令格式及其類別A指令模板的方塊圖,依據一實施例;而圖7B為闡明一般性向量友善指令格式及其類別B指令模板的方塊圖,依據一實施例。明確地,針對一般性向量友善指令格式700係定義類別A及類別B指令模板,其兩者均包括無記憶體存取705指令模板及記憶體存取720指令模板。於向量友善指令格式之背景下術語「一般性」指的是不與任何特定指令集連結的指令格式。
實施例將被描述,其中向量友善指令格式支援以下:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(而因此,64位元組向量係由16雙字元大小的元件、或替代地8四字元大小的元件所組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);及具有32位元 (4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小)。然而,替代實施例可支援具有更大、更小、或不同資料元件寬度(例如,128位元(16位元組)資料元件寬度)之更大、更小及/或不同的向量運算元大小(例如,256位元組向量運算元)。
圖7A中之類別A指令模板包括:1)於無記憶體存取705指令模板內,顯示有無記憶體存取、全捨入控制類型操作710指令模板及無記憶體存取、資料變換類型操作715指令模板;以及2)於記憶體存取720指令模板內,顯示有記憶體存取、暫時725指令模板及記憶體存取、非暫時730指令模板。圖7B中之類別B指令模板包括:1)於無記憶體存取705指令模板內,顯示有無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作712指令模板及無記憶體存取、寫入遮蔽控制、v大小類型操作717指令模板;以及2)於記憶體存取720指令模板內,顯示有記憶體存取、寫入遮蔽控制727指令模板。
一般性向量友善指令格式700包括以下欄位,依圖7A-7B中所示之順序列出如下。
格式欄位740-此欄位中之一特定值(指令格式識別符值)係獨特地識別向量友善指令格式、以及因此在指令串中之向量友善指令格式的指令之發生。如此一來,此欄位是選擇性的,因為針對一僅具有一般性向量友善指令格式 之指令集而言此欄位是不需要的。
基礎操作欄位742-其內容係分辨不同的基礎操作。
暫存器指標欄位744-其內容(直接地或透過位址產生)係指明來源及目的地運算元之位置,假設其係於暫存器中或記憶體中。這些包括足夠數目的位元以從PxQ(例如,32x512,16x128,32x1024,64x1024)暫存器檔選擇N個暫存器。雖然於一實施例中N可係高達三個來源及一個目的地暫存器,但是替代實施例可支援更多或更少的來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源之一亦作用為目的地;可支援高達三個來源,其中這些來源之一亦作用為目的地;可支援高達兩個來源及一個目的地)。
修飾符欄位746-其內容係從不指明記憶體存取之那些指令分辨出其指明記憶體存取之一般性向量指令格式的指令之發生,亦即,介於無記憶體存取705指令模板與記憶體存取720指令模板之間。記憶體存取操作係讀取及/或寫入至記憶體階層(於使用暫存器中之值以指明來源及/或目的地位址之某些情況下),而非記憶體存取操作則不會(例如,來源及目的地為暫存器)。雖然於一實施例中此欄位亦於三個不同方式之間選擇以履行記憶體位址計算,但是替代實施例可支援更多、更少、或不同方式以履行記憶體位址計算。
擴增操作欄位750-其內容係分辨多種不同操作之哪一個將被履行,除了基礎操作之外。此欄位是背景特定的。 於本發明之一實施例中,此欄位被劃分為類別欄位768、α欄位752、及β欄位754。擴增操作欄位750容許操作之共同群組將被履行以單指令而非2、3、或4指令。
比例欄位760-其內容容許指標欄位之內容的定標,以供記憶體位址產生(例如,以供其使用2比例*指標+基礎之位址產生)。
置換欄位762A-其內容被使用為記憶體位址產生之部分(例如,以供其使用2比例*指標+基礎+置換之位址產生)。
置換因數欄位762B(注意:直接在置換因數欄位762B上方之置換欄位762A的並列指示一者或另一者被使用)-其內容被使用為位址產生之部分;其指明將被記憶體存取之大小(N)所定標的置換因數-其中N為記憶體存取中之位元組數目(例如,以供其使用2比例*指標+基礎+定標置換之位址產生)。冗餘低階位元被忽略而因此,置換因數欄位之內容被乘以記憶體運算元總大小(N)來產生最終置換以供使用於計算有效位址。N之值係在運作時間由處理器硬體所判定,根據全運算碼欄位774(稍後描述於文中)及資料調處欄位754C。置換欄位762A及置換因數欄位762B是選擇性的,因為其未被使用於無記憶體存取705指令模板及/或不同的實施例可實施該兩欄位之僅一者或者兩者皆不實施。
資料元件寬度欄位764-其內容係分辨數個資料元件之哪一個將被使用(於針對所有指令之某些實施例中;於針 對僅某些指令之其他實施例中)。此欄位是選擇性的,在於其假如僅有一資料元件寬度被支援及/或資料元件寬度係使用運算碼之某形態而被支援則此欄位是不需要的。
寫入遮蔽欄位770-其內容係根據每資料元件位置以控制其目的地向量運算元中之資料元件位置是否反映基礎操作及擴增操作之結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-及歸零-寫入遮蔽兩者。當合併時,向量遮蔽容許目的地中之任何組的元件被保護自任何操作之執行期間(由基礎操作及擴增操作所指明)的更新;於另一實施例中,保留其中相應遮蔽位元具有0之目的地的各元件之舊值。反之,當歸零時,向量遮蔽容許目的地中之任何組的元件被歸零於任何操作之執行期間(由基礎操作及擴增操作所指明);於一實施例中,當相應遮蔽位元具有0值時則目的地之一元件被設為0。此功能之子集是其控制被履行之操作的向量長度(亦即,被修飾之元件的範圍,從第一者至最後者)的能力;然而,其被修飾之元件不需要是連續的。因此,寫入遮蔽欄位770容許部分向量操作,包括載入、儲存、運算、邏輯等等。雖然實施例係描述其中寫入遮蔽欄位770之內容選擇其含有待使用之寫入遮蔽的數個寫入遮蔽暫存器之一(而因此寫入遮蔽欄位770之內容間接地識別其遮蔽將被履行),但是替代實施例取代地或者額外地容許寫入遮蔽欄位770之內容直接地指明其遮蔽將被履行。
即刻欄位772-其內容容許即刻之指明。此欄位是選擇 性的,由於此欄位存在於其不支援即刻之一般性向量友善格式的實施方式中且此欄位不存在於其不使用即刻之指令中。
類別欄位768-其內容分辨於不同類別的指令之間。參考圖7A-B,此欄位之內容選擇於類別A與類別B指令之間。於圖7A-B中,圓化角落的方形被用以指示一特定值存在於一欄位中(例如,針對類別欄位768之類別A 768A及類別B 768B,個別地於圖7A-B中)。
類別A之指令模板
於類別A之非記憶體存取705指令模板的情況下,α欄位752被解讀為RS欄位752A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入752A.1及資料變換752A.2被個別地指明給無記憶體存取、捨入類型操作710及無記憶體存取、資料變換類型操作715指令模板),而β欄位754係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取705指令模板中,比例欄位760、置換欄位762A、及置換比例欄位762B不存在。
無記憶體存取指令模板-全捨入控制類型操作
於無記憶體存取全捨入類型操作710指令模板中,β欄位754被解讀為捨入控制欄位754A,其內容係提供靜態捨入。雖然於所述實施例中,捨入控制欄位754A包括抑制所有浮點例外(SAE)欄位756及捨入操作控制欄位 758,但替代實施例可支援可將這兩個觀念均編碼入相同欄位或僅具有這些觀念/欄位之一者或另一者(例如,可僅具有捨入操作控制欄位758)。
SAE欄位756-其內容係分辨是否除能例外事件報告;當SAE欄位756之內容指示抑制被致能時,則一既定指令不報告任何種類的浮點例外旗標且不引發任何浮點例外處置器。
捨入操作控制欄位758-其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位758容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位750之內容係撤銷該暫存器值。
無記憶體存取指令模板-資料變換類型操作
於無記憶體存取資料變換類型操作715指令模板中,β欄位754被解讀為資料變換欄位754B,其內容係分辨數個資料變換之哪一個將被履行(例如,無資料變換、拌合、廣播)。
在類別A之記憶體存取720指令模板情況中,α欄位752被解讀為逐出暗示欄位752B,其內容係分辨逐出暗示之哪一個將被使用(於圖7A中,暫時752B.1及非暫時752B.2被個別地指明給記憶體存取、暫時725指令模板及記憶體存取、非暫時730指令模板),而β欄位754被解 讀為資料調處欄位754C,其內容係分辨數個資料調處操作(亦已知為基元)之哪一個將被履行(例如,無調處;廣播;來源之向上轉換;及目的地之向下轉換)。記憶體存取720指令模板包括比例欄位760、及選擇性地置換欄位762A或置換比例欄位762B。
向量記憶體指令係履行向量載入自及向量儲存至記憶體,具有轉換支援。如同一般向量指令一般,向量記憶體指令係以資料元件式方式轉移資料自/至記憶體,以其被實際地轉移之元件由其被選為寫入遮蔽的向量遮蔽之內容所主宰。
記憶體存取指令模板-暫時
暫時資料為可能會夠早地被再使用以受惠自快取的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
記憶體存取指令模板-非暫時
非暫時資料為不太可能會夠早地被再使用以受惠自第一階快取中之快取且應被給予逐出之既定優先權的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
類別B之指令模板
於類別B之指令模板的情況下,α欄位752被解讀為 寫入遮蔽控制(Z)欄位752 C,其內容係分辨由寫入遮蔽欄位770所控制的寫入遮蔽是否應為合併或歸零。
於類別B之非記憶體存取705指令模板的情況下,β欄位754之部分被解讀為RL欄位757A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入757A.1及向量長度(VSIZE)757A.2被個別地指明給無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作712指令模板及無記憶體存取、寫入遮蔽控制、VSIZE類型操作717指令模板),而剩餘的β欄位754係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取705指令模板中,比例欄位760、置換欄位762A、及置換比例欄位762B不存在。
於無記憶體存取中,寫入遮蔽控制、部分捨入控制類型操作710指令模板、及剩餘的β欄位754被解讀為捨入操作欄位759A且例外事件報告被除能(既定指令則不報告任何種類的浮點例外旗標且不引發任何浮點例外處置器)。
捨入操作控制欄位759A-正如捨入操作控制欄位758,其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位759A容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位750之內容係撤銷該暫存器值。
於無記憶體存取中,寫入遮蔽控制、VSIZE類型操作717指令模板、剩餘的β欄位754被解讀為向量長度欄位759B,其內容係分辨數個資料向量長度之哪一個將被履行(例如,128、256、或512位元組)。
於類別B之記憶體存取720指令模板的情況下,β欄位754之部分被解讀為廣播欄位757B,其內容係分辨廣播類型資料調處操作是否將被履行,而剩餘的β欄位754被解讀為向量長度欄位759B。記憶體存取720指令模板包括比例欄位760、及選擇性地置換欄位762A或置換比例欄位762B。
關於一般性向量友善指令格式700,全運算碼欄位774被顯示為包括格式欄位740、基礎操作欄位742、及資料元件寬度欄位764。雖然一實施例被顯示為其中全運算碼欄位774包括所有這些欄位,全運算碼欄位774包括少於所有這些欄位在不支援其所有的實施例中。全運算碼欄位774提供操作碼(運算碼)。
擴增操作欄位750、資料元件寬度欄位764、及寫入遮蔽欄位770容許這些特徵以每指令為基被指明以一般性向量友善指令格式。
寫入遮蔽欄位與資料元件寬度欄位之組合產生類型化的指令,在於其中其容許遮蔽根據不同資料元件寬度而被施加。
類別A及類別B中所發現之各種指令模板在不同情況下是有利的。於某些實施例中,不同處理器或一處理器 中之不同核心可支援僅類別A、僅類別B、或兩類別。例如,用於通用計算之高性能通用失序核心可支援僅類別B;主要用於圖形及/或科學(通量)計算之核心可支援僅類別A;及用於兩者之核心可支援兩者(當然,一種具有來自兩類別之模板和指令的某混合但非來自兩類別之所有模板和指令的核心是落入本發明之範圍內)。
單一處理器可包括多核心,其所有均支援相同的類別或者其中不同的核心支援不同的類別。例如,於一具有分離的圖形和通用核心之處理器中,主要用於圖形及/或科學計算的圖形核心之一可支援僅類別A;而通用核心之一或更多者可為高性能通用核心,其具有用於支援僅類別B之通用計算的失序執行和暫存器重新命名。不具有分離的圖形核心之另一處理器可包括支援類別A和類別B兩者之一或更多通用依序或失序核心。
當然,來自一類別之特徵亦可被實施於另一類別中,在不同實施例中。以高階語言寫入之程式將被置入(例如,僅以時間編譯或靜態地編譯)多種不同的可執行形式,包括:1)僅具有由用於執行之處理器所支援的類別之指令的形式;或2)具有其使用所有類別之指令的不同組合所寫入之替代常式並具有控制流碼的形式,該控制流碼係根據由目前正執行該碼之處理器所支援的指令以選擇用來執行之常式。
範例特定向量友善指令格式
圖8為闡明範例特定向量友善指令格式的方塊圖,依據一實施例。圖8顯示特定向量友善指令格式800,其之特定在於其指明欄位之位置、大小、解讀、及順序,以及那些欄位之部分的值。特定向量友善指令格式800可被用以延伸x86指令集,而因此某些欄位係類似於或相同於現存x86指令集及其延伸(例如,AVX)中所使用的那些。此格式保持與下列各者一致:具有延伸之現存x86指令集的前綴編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、置換欄位、及即刻欄位。闡明來自圖7之欄位投映入來自圖8之欄位。
應理解:雖然本發明之實施例係參考為說明性目的之一般性向量友善指令格式700的背景下之特定向量友善指令格式800而描述,但除非其中有聲明否則本發明不限於特定向量友善指令格式800。例如,一般性向量友善指令格式700係考量各個欄位之多種可能大小,而特定向量友善指令格式800被顯示為具有特定大小之欄位。舉特定例而言,雖然資料元件寬度欄位764被闡明為特定向量友善指令格式800之一位元欄位,但本發明未如此限制(亦即,一般性向量友善指令格式700係考量資料元件寬度欄位764之其他大小)。
一般性向量友善指令格式700包括以下欄位,依圖8A中所示之順序列出如下。
EVEX前綴(位元組0-3)802被編碼以四位元組形式。
格式欄位740(EVEX位元組0,位元〔7:0〕)-第一位元組(EVEX位元組0)為格式欄位740且其含有0x62(用於分辨本發明之一實施例中的向量友善指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括數個提供特定能力之位元欄位
REX欄位805(EVEX位元組1,位元〔7-5〕)-係包括:EVEX.R位元欄位(EVEX位元組1,位元〔7〕-R)、EVEX.X位元欄位(EVEX位元組1,位元〔6〕-X)、及757BEX位元組1,位元〔5〕-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供如相應VEX位元欄位之相同功能,且係使用1互補形式而被編碼,亦即,ZMM0被編碼為111IB,ZMM15被編碼為0000B。指令之其他欄位編碼該些暫存器指標之較低三位元如本技術中所已知者(rrr、xxx、及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而被形成。
REX’欄位710-此為REX’欄位710之第一部分且為EVER.R’位元欄位(EVEX位元組1,位元〔4〕-R’),其被用以編碼延伸的32暫存器集之上16個或下16個。於本發明之一實施例中,此位元(連同如以下所指示之其他者)被儲存以位元反轉格式來分辨(於眾所周知的x86 32-位元模式)自BOUND指令,其真實運算碼位元組為62,但於MOD R/M欄位(描述於下)中不接受MOD欄位中之11的值;替代實施例不以反轉格式儲存此及如下 其他指示的位元。1之值被用以編碼下16暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而被形成。
運算碼映圖欄位815(EVEX位元組1,位元〔3:0〕-mmmm)-其內容係編碼一暗示的領先運算碼位元組(0F、0F 38、或0F 3)。
資料元件寬度欄位764(EVEX位元組2,位元〔7〕-W)係由記號EVEX.W所表示。EVEX.W被用以界定資料類型(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 820(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvv之角色可包括以下:1)EVEX.vvvv編碼其以反轉(1之補數)形式所指明的第一來源暫存器運算元且針對具有2或更多來源運算元為有效的;2)EVEX.vvvv針對某些向量位移編碼其以1之補數形式所指明的目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。因此,EVEX.vvvv欄位820係編碼其以反轉(1之補數)形式所儲存的第一來源暫存器指明符之4個低階位元。根據該指令,一額外的不同EVEX位元欄位被用以延伸指明符大小至32暫存器。
EVEX.U 768類別欄位(EVEX位元組2,位元〔2〕-U)-假如EVEX.U=0,則其指示類別A或EVEX.U0;假如EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位825(EVEX位元組2,位元〔1:0〕-pp)提供額外位元給基礎操作欄位。除了提供針對EVEX前綴格式之舊有SSE指令的支援,此亦具有壓縮SIMD前綴之優點(不需要一位元組來表達SIMD前綴,EVEX前綴僅需要2位元)。於一實施例中,為了支援其使用以舊有格式及以EVEX前綴格式兩者之SIMD前綴(66H、F2H、F3H)的舊有SSE指令,這些舊有SIMD前綴被編碼為SIMD前綴編碼欄位;且在運作時間被延伸入舊有SIMD前綴,在其被提供至解碼器的PLA以前(以致PLA可執行這些舊有指令之舊有和EVEX格式兩者而無須修改)。雖然較新的指令可將EVEX前綴編碼欄位之內容直接地使用為運算碼延伸,但某些實施例係以類似方式延伸以符合一致性而容許不同的意義由這些舊有SIMD前綴來指明。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,而因此不需要延伸。
α欄位752(EVEX位元組3,位元〔7〕-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮蔽控制、及EVEX.N;亦闡明以α)-如先前所描述,此欄位是背景特定的。
β欄位754(EVEX位元組3,位元〔6:4〕-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦闡明以βββ)-如先前所描述,此欄位是背景特定的。
REX’欄位710-此為REX’欄位之剩餘部分且為 EVER.V’位元欄位(EVEX位元組3,位元〔3〕-V’),其被用以編碼延伸的32暫存器集之上16個或下16個。此位元被儲存以位元反轉格式。1之值被用以編碼下16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv所形成。
寫入遮蔽欄位770(EVEX位元組3,位元〔2:0〕-kkk)-其內容係指明在如先前所述之寫入遮蔽暫存器中的暫存器之指數。於本發明之一實施例中,特定值EVEX.kkk=000具有一特殊行為,其係暗示無寫入遮蔽被用於特別指令(此可被實施以多種方式,包括使用其固線至所有各者之寫入遮蔽或者其旁路遮蔽硬體之硬體)。
真實運算碼欄位830(位元組4)亦已知為運算碼位元組。運算碼之部分被指明於此欄位。
MOD R/M欄位840(位元組5)包括MOD欄位842、Reg欄位844、及R/M欄位846。如先前所述MOD欄位842之內容係分辨於記憶體存取與非記憶體存取操作之間。Reg欄位844之角色可被概述為兩情況:編碼目的地暫存器運算元或來源暫存器運算元、或者被視為運算碼延伸而不被用以編碼任何指令運算元。R/M欄位846之角色可包括以下:編碼其參考記憶體位址之指令運算元;或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、指標、基礎(SIB)位元組(位元組6)-如先前所述,比例欄位750之內容被用於記憶體位址產生。SIB.xxx 854及SIB.bbb 856-這些欄位之內容先前已被參考 針對暫存器指標Xxxx及Bbbb。
置換欄位762A(位元組7-10)-當MOD欄位842含有10時,位元組7-10為置換欄位762A,且其工作如舊有32位元置換(disp32)之相同方式且工作以位元組粒度。
置換因數欄位762B(位元組7)-當MOD欄位842含有01時,位元組7為置換因數欄位762B。此欄位之位置係相同於舊有x86指令集8位元置換(disp8)之位置,其工作以位元組粒度。因為disp8是符號延伸的,所以其可僅定址於-128與127位元組偏移之間;關於64位元組快取線,disp8係使用其可被設為僅四個真實可用值-128、-64、0及64之8位元;因為較大範圍經常是需要的,所以disp32被使用;然而,disp32需要4位元組。相對於disp8及disp32,置換因數欄位762B為disp8之再解讀;當使用置換因數欄位762B時,實際置換係由置換因數欄位之內容乘以記憶體運算元存取之大小(N)所判定。置換欄位之類型被稱為disp8*N。此係減少平均指令長度(用於置換欄位之單一位元組但具有更大的範圍)。此壓縮置換是基於假設其有效置換為記憶體存取之粒度的數倍,而因此,位址偏移之冗餘低階位元無須被編碼。換言之,置換因數欄位762B取代舊有x86指令集8位元置換。因此,置換因數欄位762B被編碼以如x86指令集8位元置換之相同方式(以致ModRM/SIB編碼規則並無改變),唯一例外是其disp8被超載至disp8*N。換言之, 編碼規則或編碼長度沒有改變,但僅於藉由硬體之置換值的解讀(其需由記憶體運算元之大小來縮放置換以獲得位元組式的位址偏移)。
即刻欄位772係如先前所述操作。
全運算碼欄位
圖8B為闡明其組成全運算碼欄位774之特定向量友善指令格式800的欄位之方塊圖,依據本發明之一實施例。明確地,全運算碼欄位774包括格式欄位740、基礎操作欄位742、及資料元件寬度(W)欄位764。基礎操作欄位742包括前綴編碼欄位825、運算碼映圖欄位815、及真實運算碼欄位830。
暫存器指標欄位
圖8C為闡明其組成暫存器指標欄位744之特定向量友善指令格式800的欄位之方塊圖,依據本發明之一實施例。明確地,暫存器指標欄位744包括REX欄位805、REX’欄位810、MODR/M.reg欄位844、MODR/M.r/m欄位846、VVVV欄位820、xxx欄位854、及bbb欄位856。
擴增操作欄位
圖8D為闡明其組成擴增操作欄位750之特定向量友善指令格式800的欄位之方塊圖,依據本發明之一實施 例。當類別(U)欄位768含有0時,則其表示EVEX.U0(類別A 768A);當其含有1時,則其表示EVEX.U1(類別B 768B)。當U=0且MOD欄位842含有11(表示無記憶體存取操作)時,則α欄位752(EVEX位元組3,位元〔7〕-EH)被解讀為rs欄位752A。當rs欄位752A含有1(捨入752A.1)時,則β欄位754(EVEX位元組3,位元〔6:4〕-SSS)被解讀為捨入控制欄位754A。捨入控制欄位754A包括一位元SAE欄位756及二位元捨入操作欄位758。當rs欄位752A含有0(資料變換752A.2)時,則β欄位754(EVEX位元組3,位元〔6:4〕-SSS)被解讀為三位元資料變換欄位754B。當U=0且MOD欄位842含有00、01、或10(表示記憶體存取操作)時,則α欄位752(EVEX位元組3,位元〔7〕-EH)被解讀為逐出暗示(EH)欄位752B且β欄位754(EVEX位元組3,位元〔6:4〕-SSS)被解讀為三位元資料調處欄位754C。
當U=1時,則α欄位752(EVEX位元組3,位元〔7〕-EH)被解讀為寫入遮蔽控制(Z)欄位752C。當U=1且MOD欄位842含有11(表示無記憶體存取操作)時,則β欄位754之部分(EVEX位元組3,位元〔4〕-S0)被解讀為RL欄位757A;當其含有1(捨入757A.1)時,則β欄位754之剩餘部分(EVEX位元組3,位元〔6-5〕-S2-1)被解讀為捨入操作欄位759A;而當RL欄位757A含有0(VSIZE757.A2)時,則β欄位754之剩餘部 分(EVEX位元組3,位元〔6-5〕-S2-1)被解讀為向量長度欄位759B(EVEX位元組3,位元〔6-5〕-L1-0)。當U=1且MOD欄位842含有00、01、或10(表示記憶體存取操作)時,則β欄位754(EVEX位元組3,位元〔6:4〕-SSS)被解讀為向量長度欄位759B(EVEX位元組3,位元〔6-5〕-L1-0)及廣播欄位757B(EVEX位元組3,位元〔4〕-B)。
範例暫存器架構
圖9為一暫存器架構900之方塊圖,依據本發明之一實施例。於所示之實施例中,有32個向量暫存器910,其為512位元寬;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被重疊於暫存器ymm0-16上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被重疊於暫存器xmm0-15上。特定向量友善指令格式800係操作於這些重疊的暫存器檔上,如以下表6中所闡明。
換言之,向量長度欄位759B於最大長度與一或更多其他較短長度之間選擇,其中每一此較短長度為前一長度之長度的一半;而無向量長度欄位759B之指令模板係操作於最大長度上。此外,於一實施例中,特定向量友善指令格式800之類別B指令模板係操作於緊縮或純量單/雙精確度浮點資料及緊縮或純量整數資料上。純量操作為履行於zmm/ymm/xmm暫存器中之最低階資料元件上的操作;較高階資料元件位置係根據實施例而被保留如其在該指令前之相同者或者被歸零。
寫入遮蔽暫存器915-於所示之實施例中,有8個寫入遮蔽暫存器(k0至k7),大小各為64位元。於替代實施例中,寫入遮蔽暫存器915之大小為16位元。如先前所述,於本發明之一實施例中,向量遮蔽暫存器k0無法被使用為寫入遮蔽;當其通常將指示k0之編碼被用於寫入 遮蔽時,其係選擇0xFFFF之固線寫入遮蔽,有效地除能該指令之寫入遮蔽。
通用暫存器925-於所示之實施例中,有十六個64位元通用暫存器,其係連同現存的x86定址模式來用以定址記憶體運算元。這些暫存器被參照以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15.
純量浮點堆疊暫存器檔(x87堆疊)945,MMX緊縮整數平坦暫存器檔950係別名於其上-於所示之實施例中,x87堆疊為用以使用x87指令集延伸而在32/64/80位元浮點資料上履行純量浮點操作之八元件堆疊;而MMX暫存器被用以履行操作在64位元緊縮整數資料上、及用以保持運算元以供介於MMX與XMM暫存器間所履行的某些操作。
替代實施例可使用較寬或較窄的暫存器。此外,替代實施例可使用更多、更少、或不同的暫存器檔及暫存器。
範例核心架構,處理器,及電腦架構
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)核心 處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如整合圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著範例核心架構係範例處理器及電腦架構之描述。
範例核心架構
依序或失序核心方塊圖
圖10A為闡明範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據實施例。圖10B為一方塊圖,其闡明將包括於依據實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖10A-B中之實線框係闡明依序管線及依序核心,而虛線框之選擇性加入係闡明暫存器重新命名、失序問題/執行管線及核心。假設其依序形態為失序形態之子集,將描述失序形態。
於圖10A中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、配置級1008、重新命名級 1010、排程(亦已知為分派或發送)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫入回/記憶體/寫入級1018、例外處置級1022、及確定級1024。
圖10B顯示處理器核心1090,其包括一耦合至執行單元引擎單元1050之前端單元1030,且兩者均耦合至記憶體單元1070。核心1090可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心1090可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等等。
前端單元1030包括一分支預測單元1032,其係耦合至指令快取單元1034,其係耦合至指令翻譯旁看緩衝器(TLB)1036,其係耦合至指令提取單元1038,其係耦合至解碼單元1040。解碼單元1040(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元1040可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,核心1090包括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元1040中或者於前端單元1030內)。解碼單元1040被耦合至執行引擎單元 1050中之重新命名/配置器單元1052。
執行引擎單元1050包括重新命名/配置器單元1052,其係耦合至退役單元1054及一組一或更多排程器單元1056。排程器單元1056代表任何數目的不同排程器,包括保留站、中央指令窗等等。排程器單元1056被耦合至實體暫存器檔單元1058。實體暫存器檔單元1058之各者代表一或更多實體暫存器檔,其不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標)等等。於一實施例中,實體暫存器檔單元1058包含向量暫存器單元、寫入遮蔽暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器、及通用暫存器。實體暫存器檔單元1058係由退役單元1054所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用重排序緩衝器和退役暫存器檔;使用未來檔、歷史緩衝器、和退役暫存器檔;使用暫存器映圖和暫存器池等等)。退役單元1054及實體暫存器檔單元1058被耦合至執行叢集1060。執行叢集1060包括一組一或更多執行單元1062及一組一或更多記憶體存取單元1064。執行單元1062可履行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他 實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元1056、實體暫存器檔單元1058、及執行叢集1060被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元1064)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元1064被耦合至記憶體單元1070,其包括資料TLB單元1072,其耦合至資料快取單元1074,其耦合至第二階(L2)快取單元1076。於一範例實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元1070中之資料TLB單元1072。指令快取單元1034被進一步耦合至記憶體單元1070中之第二階(L2)快取單元1076。L2快取單元1076被耦合至一或更多其他階的快取且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線1000如下:1)指令提取1038履行提取和長度解碼級1002和1004;2)解碼單元1040履行解碼級1006;3)重新命名/配置器單元1052履行配置級 1008和重新命名級1010;4)排程器單元1056履行排程級1012;5)實體暫存器檔單元1058和記憶體單元1070履行暫存器讀取/記憶體讀取級1014;執行叢集1060履行執行級1016;6)記憶體單元1070和實體暫存器檔單元1058履行寫入回/記憶體寫入級1018;7)各個單元可參與例外處置級1022;及8)退役單元1054和實體暫存器檔單元1058履行確定級1024。
核心1090可支援一或更多指令集(例如,x86指令集,具有其已被加入以較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of San Jose,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心1090包括支援緊縮資料指令集延伸(例如,先前所示之AVX1、AVX2、及/或一般向量友善指令格式(U=0及/或U=1)的某形式)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器 之所述的實施例亦包括分離的指令和資料快取單元1034/1074以及共享L2快取單元1076,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
特定範例依序核心架構
圖11A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用而定。
圖11A為單處理器核心之方塊圖,連同與晶粒上互連網路1102之其連接、以及第二階(L2)快取1104之其本地子集,依據實施例。於一實施例中,指令解碼器1100支援具有緊縮資料指令集延伸之x86指令集。L1快取1106容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1108及向量單元1110使用分離的暫存器組(個別地,純量暫存器1112及向量暫存器1114),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取1106被讀 取回;但替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取1104之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取1104之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集1104中且可被快速地存取,平行於存取其本身本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1104中且被清除自其他子集,假如需要的話。環狀網路確保共享資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖11B為圖11A中之處理器核心的部分之延伸視圖,依據實施例。圖11B包括L1快取1104之L1資料快取1106A部分、以及有關向量單元1110和向量暫存器1114之更多細節。明確地,向量單元1110為16寬的向量處理單元(VPU)(參見16寬的ALU 1128),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元1120拌合暫存器輸入、以數值轉換單元1122A-B之數值轉換、及於記憶體輸入上以複製單元1124之複製。寫入遮蔽暫存器1126容許闡述結果向量寫入。
具有集成記憶體控制器及特殊用途邏輯之處理器
圖12為一種處理器1200之方塊圖,該處理器1200可具有多於一個核心、可具有集成記憶體控制器、且可具有整合圖形,依據實施例。圖12中之實線框闡明處理器1200,其具有單核心1202A、系統代理1210、一組一或更多匯流排控制器單元1216;而虛線框之選擇性加入闡明一替代處理器1200,其具有多核心1202A-N、系統代理單元1210中之一組一或更多集成記憶體控制器單元1214、及特殊用途邏輯1208。
因此,處理器1200之不同實施方式可包括:1)CPU,具有其為整合圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯1208、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心1202A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1202A-N;及3)共處理器,具有其為大量通用依序核心的核心1202A-N。因此,處理器1200可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括30或更多個核心)、嵌入式處理器等等。該處理器可被實施於一或更多晶片上。處理器1200可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者, 諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括該些核心內之一或更多階快取、一組或者一或更多共享快取單元1206、及耦合至該組集成記憶體控制器單元1214之外部記憶體(未顯示)。該組共享快取單元1206可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元1212將以下裝置互連:整合圖形邏輯1208、該組共享快取單元1206、及系統代理單元1210/集成記憶體單元1214,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元1206與核心1202-A-N之間。
於某些實施例中,一或更多核心1202A-N能夠進行多線程。系統代理1210包括協調並操作核心1202A-N之那些組件。系統代理單元1210可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1202A-N及整合圖形邏輯1208之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心1202A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心1202A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
範例電腦架構
圖13-16為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種類型之系統或電子裝置為一般性適當的。
現在參考圖13,其顯示依據本發明之一實施例的系統1300之方塊圖。系統1300可包括一或更多處理器1310、1315,其被耦合至控制器集線器1320。於一實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可於分離的晶片上);GMCH 1390包括記憶體及圖形控制器(耦合至記憶體1340及共處理器1345);IOH 1350為耦合輸入/輸出(I/O)裝置1360至GMCH 1390。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1340及共處理器1345被直接地耦合至處理器1310、及具有IOH 1350之單一晶片中的控制器集線器1320。
額外處理器1315之選擇性本質於圖13中被標示以斷線。各處理器1310、1315可包括文中所述的處理核心之一或更多者並可為處理器1200之某版本。
記憶體1340可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1320經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1395而與處理器1310、1315通訊。
於一實施例中,共處理器1345為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。於一實施例中,控制器集線器1320可包括整合圖形加速器。
於實體資源1310、1315間可有多樣差異,針對價值度量之頻譜,包括架構、微架構、熱、功率耗損特性等等。
於一實施例中,處理器1310執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器1310辨識這些共處理器指令為其應由裝附之共處理器1345所執行的類型。因此,處理器1310將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器1345。共處理器1345接受並執行該些接收的共處理器指令。
現在參考圖14,其顯示依據本發明之實施例的第一更特定範例系統1400之方塊圖。如圖14中所示,多處理器系統1400為點對點互連系統,並包括經由點對點互連 1450而耦合之第一處理器1470及第二處理器1480。處理器1470及1480之每一者可為處理器1200之某版本。於本發明之一實施例中,處理器1470及1480個別為處理器1310及1315,而共處理器1438為共處理器1345。於另一實施例中,處理器1470及1480個別為處理器1310及共處理器1345。
處理器1470及1480被顯示為個別地包括集成記憶體控制器(IMC)單元1472及1482。處理器1470亦包括其匯流排控制器單元點對點(P-P)介面1476及1478之部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可使用P-P介面電路1478、1488而經由點對點(P-P)介面1450來交換資訊。如圖14中所示,IMC 1472及1482將處理器耦合至個別記憶體,亦即記憶體1432及記憶體1434,其可為本地地裝附至個別處理器之主記憶體的部分。
處理器1470、1480可各經由個別的P-P介面1452、1454而與晶片組1490交換資訊,使用點對點介面電路1476、1494、1486、1498。晶片組1490可經由高性能介面1439而選擇性地與共處理器1438交換資訊。於一實施例中,共處理器1438為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。
共享快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,但仍經由P-P互連與處理器連接,以致處 理器之任一者或兩者的本地快取資訊可被儲存於共享快取中,假如處理器被置於低功率模式時。
晶片組1490可經由一介面1496而被耦合至第一匯流排1416。於一實施例中,第一匯流排1416可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖14中所示,各種I/O裝置1414可被耦合至第一匯流排1416,連同匯流排橋1418,其係將第一匯流排1416耦合至第二匯流排1420。於一實施例中,一或更多額外處理器1415(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1416。於一實施例中,第二匯流排1420可為低針腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1420,其包括(例如)鍵盤/滑鼠1422、通訊裝置1427、及資料儲存單元1428,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1430),於一實施例中。此外,音頻I/O 1424可被耦合至第二匯流排1420。注意:其他架構是可能的。例如,取代圖14之點對點架構,系統可實施多點分支匯流排其他此類架構。
現在參考圖15,其顯示依據本發明之實施例的第二更特定範例系統1500之方塊圖。圖14與15中之類似元 件具有類似的參考數字,且圖14之某些形態已從圖15省略以免混淆圖15之其他形態。
圖15闡明其處理器1470、1480可包括集成記憶體及I/O控制邏輯(「-CL」)1472和1482,個別地。因此,CL 1472、1482包括集成記憶體控制器單元並包括I/O控制邏輯。圖15闡明其不僅記憶體1432、1434被耦合至CL 1472、1482,同時其I/O裝置1514亦被耦合至控制邏輯1472、1482。舊有I/O裝置1515被耦合至晶片組1490。
現在參考圖16,其顯示依據本發明之一實施例的SoC 1600之方塊圖。圖12中之類似元件具有類似的參考數字。同時,虛線框為更多先進SoC上之選擇性特徵。於圖16中,互連單元1602被耦合至:應用程式處理器1610,其包括一組一或更多核心202A-N及共享快取單元1206;系統代理單元1210;匯流排控制器單元1216;集成記憶體控制器單元1214;一組一或更多共處理器1620,其可包括整合圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640,用以耦合至一或更多外部顯示。於一實施例中,共處理器1620包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器等等。
文中所揭露之機制的實施例被實施以硬體、軟體、韌 體、或此等實施方式之組合。本發明之實施例被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖14中所示之碼1430)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可被應用於一或更多輸出裝置,以已知的方式。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或物件導向的編程語言來與處理系統通訊。程式碼亦可被實施以組合或機器語言,假如想要的話。事實上,文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或 裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二元翻譯、碼變形等等)
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖17為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖17顯示一種高階語言1702之程式可使用x86編譯器1704而被編譯以產生x86二元碼1706,其可由具有至少一x86指令集核心之處理器1716來本機地執行。
具有至少一x86指令集核心之處理器1716代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1704代表一種編譯器,其可操作以產生x86二元碼1706(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1716上。類似地,圖17顯示高階語言1702之程式可使用替代的指令集編譯器1708而被編譯以產生替代的指令集二元碼1710,其可由沒有至少一x86指令集核心1714之處理器來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of San Jose,CA之ARM指令集的核心 之處理器)。
指令轉換器1712被用以將x86二元碼1706轉換為其可由沒有至少一x86指令集核心之處理器1714來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼1710,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器1712代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼1706。
於前述說明書中,本發明已參考其特定範例實施例而被描述。然而,將清楚明白的是:可對其進行各種修改而不背離如後附申請專利範圍中所提出之本發明的較寬廣範圍及精神。說明書及圖式因此將被視為說明性意義而非限制性意義。
文中所述之指令係指稱硬體之特定組態,諸如特定應用積體電路(ASIC),組態成履行某些操作或具有預定的功能。此類電子裝置通常包括一組一或更多處理器,其係耦合至一或更多其他組件,諸如一或更多儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控式螢幕、及/或顯示)、及網路連接。該組處理器與其他組件之耦合通常係透過一或更多匯流排及橋(亦稱為匯流排控制器)。攜載網路流量之儲存裝置及信號個別地代表一或更多機器可讀取儲存媒體及機器可讀 取通訊媒體。因此,既定電子裝置之儲存裝置通常係儲存編碼解碼器及/或資料以供執行於該電子裝置之該組一或更多處理器上。
當然,本發明之實施例的一或更多部分可使用軟體、韌體、及/或硬體之不同組合來實施。遍及此詳細描述,為了解釋之目的,提出數個特定細節以提供本發明之透徹瞭解。然而,熟悉此項技術人士將清楚本發明可被實行而無這些特定細節之部分。於某些例子中,眾所周知的結構及功能未被詳細地描述以免混淆本發明之請求標的。因此,本發明之範圍及精神應根據以下的申請專利範圍來判斷。
220A‧‧‧第一邏輯級
220B‧‧‧第二邏輯級
220C‧‧‧第三邏輯級
220D‧‧‧第四邏輯級
220E‧‧‧第五邏輯級
302‧‧‧32位元來源輸入
304‧‧‧零左偏移
306‧‧‧遮蔽值
308‧‧‧輸出
314‧‧‧16位元左偏移
316‧‧‧遮蔽值
318‧‧‧輸出
324‧‧‧八位元左偏移
326‧‧‧遮蔽值
328‧‧‧輸出
334‧‧‧四位元左偏移
336‧‧‧遮蔽值
338‧‧‧輸出
344‧‧‧二位元左偏移
346‧‧‧遮蔽值
348‧‧‧輸出

Claims (23)

  1. 一種處理器,包含:解碼單元,用以解碼具有多數來源運算元之指令來產生已解碼指令,各運算元係與第一、第二、及第三座標之一者關連;執行單元,用以執行該已解碼指令以將該些來源運算元之位元交錯為三維Z曲線指標;及暫存器檔單元,用以將該Z曲線指標提交至一與目的地運算元關連的暫存器。
  2. 如申請專利範圍第1項之處理器,進一步包含用以提取該指令之指令提取單元,其中該指令為單一機器階指令。
  3. 如申請專利範圍第1項之處理器,其中該暫存器檔單元進一步用以儲存包含以下之一組暫存器:第一暫存器,用以儲存第一來源運算元;第二暫存器,用以儲存第二來源運算元;及第三暫存器,用以儲存第三來源運算元。
  4. 如申請專利範圍第3項之處理器,其中:該第一來源運算元係用以指示第一維座標;該第二來源運算元係用以指示第二維座標;及該第三來源運算元係用以指示第三維座標。
  5. 如申請專利範圍第1項之處理器,其中該執行單元係用以輸入各來源運算元之10個低階位元並輸出32位元結果。
  6. 如申請專利範圍第1項之處理器,其中該執行單元係用以輸入各來源運算元之20個低階位元並輸出64位元結果。
  7. 一種邏輯單元,包含:多數暫存器,用以儲存一組微操作之多數來源值,該組微操作係用以計算三維z曲線指標;及執行單元,用以輸入該些多數暫存器之各者的低階位元並交錯該些位元以計算該三維z曲線指標;其中該執行單元係回應於單指令而經由一或更多AND、XOR、及偏移操作來計算該Z曲線指標。
  8. 如申請專利範圍第7項之邏輯單元,其中該些多數暫存器包括:第一暫存器,用以儲存第一來源值;第二暫存器,用以儲存第二來源值;及第三暫存器,用以儲存第三來源值。
  9. 如申請專利範圍第8項之邏輯單元,其中:該第一來源值係用以指示第一維座標;該第二來源值係用以指示第二維座標;及該第三來源值係用以指示第三維座標。
  10. 如申請專利範圍第8項之邏輯單元,進一步包含用以儲存結果之第四暫存器。
  11. 如申請專利範圍第10項之邏輯單元,其中該執行單元係用以輸入各來源運算元之10個低階位元並輸出32位元結果至該第四暫存器。
  12. 如申請專利範圍第10項之邏輯單元,其中該執行單元係用以輸入各來源運算元之20個低階位元並輸出64位元結果。
  13. 如申請專利範圍第7項之邏輯單元,其中該偏移操作為左偏移操作。
  14. 一種處理系統,包含:用於提取之機構,用以提取單指令來計算三維z曲線指標,該指令具有三個來源運算元及一目的地運算元;用於解碼之機構,將該單指令解碼成為已解碼指令;用於提取之機構,用以提取來源運算元值;及用於執行之機構,用以執行該已解碼指令而藉由交錯該些來源運算元值之位元來計算該三維z曲線指標。
  15. 如申請專利範圍第14項之系統,其中該用於執行之機構進一步使用一或更多AND、XOR、及偏移操作來計算該z曲線指標。
  16. 如申請專利範圍第15項之系統,其中該用於執行之機構包括XOR邏輯閘、AND邏輯閘、及偏移器電路。
  17. 如申請專利範圍第14項之系統,進一步包含用於提交之機構,用於將該z曲線指標提交至由該目的地運算元所指示之32位元暫存器。
  18. 如申請專利範圍第14項之系統,進一步包含用於提交之機構,用以將該z曲線指標提交至由該目的地運算元所指示之64位元暫存器,其中該用以執行之機構進 一步用以根據至少20個低階位元來計算該z曲線指標。
  19. 一種機器可讀取媒體,其上儲存有資料,假如由至少一機器所履行則該資料致使該至少一機器製造至少一積體電路來履行包含以下之方法:提取單指令來計算三維z曲線指標,該指令具有三個來源運算元及一目的地運算元;將該單指令解碼成為已解碼指令;提取來源運算元值;及執行該已解碼指令而藉由交錯該些來源運算元值之位元來計算該三維z曲線指標。
  20. 如申請專利範圍第19項之媒體,其中執行一或更多微操作進一步包含使用一或更多AND、XOR、及偏移操作來計算該z曲線指標。
  21. 如申請專利範圍第20項之媒體,其中該執行係使用XOR邏輯閘、AND邏輯閘、及偏移器電路。
  22. 如申請專利範圍第19項之媒體,進一步包含將該z曲線指標提交至由該目的地運算元所指示之32位元暫存器,並藉由將該些位元交錯入長度至少30位元之z曲線指標以根據各來源值之至少10個低階位元來計算該z曲線指標。
  23. 如申請專利範圍第19項之媒體,進一步包含將該z曲線指標提交至由該目的地運算元所指示之64位元暫存器,並藉由將該些位元交錯入長度至少60位元之z曲線指標以根據各來源值之至少20個低階位元來計算該 z曲線指標。
TW104133232A 2014-11-14 2015-10-08 用以從三維座標計算三維z曲線指標的機器階層指令 TWI603289B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/542,499 US20160139919A1 (en) 2014-11-14 2014-11-14 Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates

Publications (2)

Publication Number Publication Date
TW201626331A TW201626331A (zh) 2016-07-16
TWI603289B true TWI603289B (zh) 2017-10-21

Family

ID=55954938

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104133232A TWI603289B (zh) 2014-11-14 2015-10-08 用以從三維座標計算三維z曲線指標的機器階層指令

Country Status (7)

Country Link
US (1) US20160139919A1 (zh)
EP (1) EP3218798A4 (zh)
JP (1) JP6773378B2 (zh)
KR (1) KR20170059477A (zh)
CN (1) CN106796502A (zh)
TW (1) TWI603289B (zh)
WO (1) WO2016077335A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US11200167B2 (en) * 2019-12-10 2021-12-14 Pony Ai Inc. Dynamic memory address encoding

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082654A1 (en) * 2007-12-21 2010-04-01 Bin Zhang Methods And Apparatus Using Range Queries For Multi-dimensional Data In A Database
US20100185692A1 (en) * 2009-01-20 2010-07-22 Bin Zhang System and method for determining intervals of a space filling curve in a query box
US20120313944A1 (en) * 2011-06-08 2012-12-13 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US20130235050A1 (en) * 2012-03-09 2013-09-12 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
US20140181175A1 (en) * 2012-06-11 2014-06-26 Edward Givelberg Data-Intensive Computer Architecture

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
JPH10275080A (ja) * 1997-01-24 1998-10-13 Texas Instr Inc <Ti> マイクロプロセッサ
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US9557994B2 (en) * 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US20090254736A1 (en) * 2008-04-07 2009-10-08 Arm Limited Data processing system for performing data rearrangement operations
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
CN103189837B (zh) * 2011-10-18 2016-12-28 松下知识产权经营株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
CN104025502B (zh) * 2011-12-22 2017-07-11 英特尔公司 用于处理blake安全散列算法的指令处理器、方法以及系统
US9965821B2 (en) * 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9298457B2 (en) * 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082654A1 (en) * 2007-12-21 2010-04-01 Bin Zhang Methods And Apparatus Using Range Queries For Multi-dimensional Data In A Database
US20100185692A1 (en) * 2009-01-20 2010-07-22 Bin Zhang System and method for determining intervals of a space filling curve in a query box
US20120313944A1 (en) * 2011-06-08 2012-12-13 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US20130235050A1 (en) * 2012-03-09 2013-09-12 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
US20140181175A1 (en) * 2012-06-11 2014-06-26 Edward Givelberg Data-Intensive Computer Architecture

Also Published As

Publication number Publication date
KR20170059477A (ko) 2017-05-30
JP2018500629A (ja) 2018-01-11
JP6773378B2 (ja) 2020-10-21
TW201626331A (zh) 2016-07-16
EP3218798A1 (en) 2017-09-20
CN106796502A (zh) 2017-05-31
WO2016077335A1 (en) 2016-05-19
US20160139919A1 (en) 2016-05-19
EP3218798A4 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI599950B (zh) 用於摩頓座標調整之處理器,方法,系統,及製造物件
TWI590154B (zh) 在z順序曲線中計算下一點的座標的向量指令
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI663545B (zh) 執行置換運算的處理器
TW201732570A (zh) 用於聚合集中及跨步的系統、裝置及方法
TWI582692B (zh) 三維摩頓座標轉換處理器,方法,系統,及指令
TWI628593B (zh) 用以履行向量位元反轉之方法及設備
TW201342204A (zh) 用於將一表列索引值轉換成為遮罩值之系統、設備及方法
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
TWI481991B (zh) 改良型排列指令之裝置及方法
TW201732572A (zh) 用於跨步的載入(strided load)的系統、設備及方法
TW201346744A (zh) 遮蔽排列指令的裝置及方法
TW201740290A (zh) 用於轉換編碼格式的硬體設備及方法
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI603289B (zh) 用以從三維座標計算三維z曲線指標的機器階層指令
TWI590155B (zh) 用以從4維座標計算4維z曲線指標的機器階層指令
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201810034A (zh) 用於累和的系統、設備及方法
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
TW201730756A (zh) 用於從鏈結結構取回元件的設備和方法

Legal Events

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