JP2018500629A - 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 - Google Patents
3d座標から3dのz曲線インデックスを計算するための機械レベル命令 Download PDFInfo
- Publication number
- JP2018500629A JP2018500629A JP2017521494A JP2017521494A JP2018500629A JP 2018500629 A JP2018500629 A JP 2018500629A JP 2017521494 A JP2017521494 A JP 2017521494A JP 2017521494 A JP2017521494 A JP 2017521494A JP 2018500629 A JP2018500629 A JP 2018500629A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- field
- register
- source
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims description 25
- 150000001875 compounds Chemical class 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 121
- 239000013598 vector Substances 0.000 description 104
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 74
- 238000010586 diagram Methods 0.000 description 45
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000007667 floating Methods 0.000 description 19
- 238000006243 chemical reaction Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 3
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 3
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 3
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 102000001332 SRC Human genes 0.000 description 2
- 108060006706 SRC Proteins 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or 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)
Abstract
Description
或るタイプのアプリケーションは、しばしば、多数のデータアイテムに対して同じ演算(「データパラレリズム」と称される)を行うことを必要とする。シングルインストラクションマルチプルデータ(SIMD:Single Instruction Multiple Data)は、プロセッサに、複数のアイテムに対して1つの演算を行わせる、1つのタイプの命令を指す。SIMD技術は、レジスタのビットを、各々が個別の値を表すいくつかの固定サイズのデータ要素に論理的に分割することができるプロセッサに特に適している。例えば、256ビットレジスタの中のビットは、4つの別々の64ビットパックドデータ要素(クワッドワード(Q)サイズデータ要素)、8つの別々の32ビットパックドデータ要素(ダブルワード(D)サイズデータ要素)、16個の別々の16ビットパックドデータ要素(ワード(W)サイズデータ要素)、または32個の別々の8ビットデータ要素(バイト(B)サイズデータ要素)として演算されるソースオペランドとして指定することができる。このタイプのデータは、「パックド」データタイプまたは「ベクトル」データタイプと称され、このデータタイプのオペランドは、パックドデータオペランドまたはベクトルオペランドと称される。換言すれば、パックドデータ項目またはベクトルは、一連のパックドデータ要素を指し、パックドデータオペランドまたはベクトルオペランドは、SIMD命令(パックドデータ命令またはベクトル命令としても知られている)のソースまたはデスティネーションオペランドである。
図1Aは、例示される8×8マトリクス100の要素ごとの、Z順序キーマッピングを例示する。示される各要素内で、より上位のビットは、最上部にあり、より下位のビットは、最底部にある。Z曲線順序付けの1つの実装形態は、元々のインデックスの各々のビットを各次元にインターリーブする(例えば、シャッフルする)ことによって行われる。例示されるマトリクス100の各要素に示されるZ順序付けは、マトリクス100の中の各要素の次元_1 101および次元_2 102の値のビットごとのインターリーブによって生成される。
1つの実施形態において、機械命令は、プロセッサに、入力された座標値に対してビット操作演算を行うことによって3DのZ曲線インデックスを計算させる。
本明細書で説明される命令(複数可)の実施形態は、異なるフォーマットで具現化することができる。加えて、例示的なシステム、アーキテクチャ、およびパイプラインが以下で詳述される。命令(複数可)の実施形態は、そのようなシステム、アーキテクチャ、およびパイプライン上で実行することができるが、詳述されるものに限定されない。
クラスAの非メモリアクセス705の命令テンプレートの場合において、アルファフィールド752は、RSフィールド752Aとして解釈され、そのコンテンツは、異なる拡大演算タイプのうちのどれを行うのかを識別し(例えば、ラウンド752A.1およびデータ変換752A.2が、それぞれ、非メモリアクセスのラウンドタイプ演算710、および非メモリアクセスのデータ変換タイプ演算715の命令テンプレートについて指定される)、一方で、ベータフィールド754は、指定されたタイプの演算のうちのどれを行うのかを識別する。非メモリアクセス705の命令テンプレートにおいて、スケールフィールド760、変位フィールド762A、および変位スケール762Bは、存在しない。
非メモリアクセスのフルラウンド制御タイプ演算710の命令テンプレートにおいて、ベータフィールド754は、ラウンド制御フィールド754Aとして解釈され、そのコンテンツ(複数可)は、静的ラウンド処理を提供する。説明される実施形態において、ラウンド制御フィールド754Aは、全浮動小数点例外抑制(SAE:suppress all floating point exception)フィールド756およびラウンド演算制御フィールド758を含むが、代替の実施形態は、これらのコンセプトの両方をサポートすることができ、また、同じフィールドの中へ符号化することができ、またはこれらのコンセプト/フィールドのうちの一方または他方を有することができる(例えば、ラウンド演算制御フィールド758だけを有することができる)。
非メモリアクセスデータ変換タイプ演算715の命令テンプレートにおいて、ベータフィールド754は、データ変換フィールド754Bとして解釈され、そのコンテンツは、いくつかのデータ変換(例えば、非データ変換、スウィズル、ブロードキャスト)のうちのどれを行うのかを識別する。
一時的データは、キャッシングの利益を享受するために、すぐに再使用される可能性があるデータである。しかしながら、これはヒントであり、異なるプロセッサが、ヒントを完全に無視することを含む、異なる方法でそれを実装することができる。
非一時的データは、一次レベルキャッシュにおけるキャッシングの利益を享受するために、すぐに再使用される可能性がなく、エビクションに対する優先権が与えられるべきデータである。しかしながら、これはヒントであり、異なるプロセッサが、ヒントを完全に無視することを含む、異なる方法でそれを実装することができる。
クラスBの命令テンプレートの場合に、アルファフィールド752は、書き込みマスク制御(Z)フィールド752Cとして解釈され、そのコンテンツは、書き込みマスクフィールド770によって制御される書き込みマスキングを、マージするべきか、またはゼロ化するべきかを識別する。
図8Aは、一実施形態による、例示的な特有のベクトルフレンドリー命令フォーマットを例示するブロック図である。図8Aは、フィールドの場所、サイズ、解釈、および順序、ならびにそうしたフィールドのいくつかの値を特定するという意味で特有である、特有のベクトルフレンドリー命令フォーマット800を示す。特有のベクトルフレンドリー命令フォーマット800は、x86命令セットを拡張するために使用することができ、したがって、フィールドのいくつかは、既存のx86命令セットおよびその拡張(例えば、AVX)において使用されるものと類似するか、または同じである。このフォーマットは、拡張を有する既存のx86命令セットの接頭辞符号化フィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、および即値フィールドとの整合性を維持する。図8Aからの複数のフィールドをマッピングする図7A又は図7Bからのフィールドが例示される。
図8Bは、本発明の1つの実施形態による、フルオペコードフィールド774を構成する特有のベクトルフレンドリー命令フォーマット800のフィールドを例示するブロック図である。具体的には、フルオペコードフィールド774は、フォーマットフィールド740と、ベース演算フィールド742と、データ要素幅(W)フィールド764とを含む。ベース演算フィールド742は、接頭辞符号化フィールド825と、オペコードマップフィールド815と、リアルオペコードフィールド830とを含む。
図8Cは、本発明の1つの実施形態による、レジスタインデックスフィールド744を構成する特有のベクトルフレンドリー命令フォーマット800のフィールドを例示するブロック図である。具体的には、レジスタインデックスフィールド744は、REXフィールド805と、REX'フィールド810と、MODR/M.Regフィールド844と、MODR/M.r/mフィールド846と、WWフィールド820と、xxxフィールド854と、bbbフィールド856とを含む。
図8Dは、本発明の1つの実施形態による、拡大演算フィールド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は、1ビットのSAEフィールド756、および2ビットのラウンド演算フィールド758を含む。rsフィールド752Aが0を含むとき(データ変換752A.2)に、ベータフィールド754(EVEXバイト3、ビット[6:4]−SSS)は、3ビットのデータ変換フィールド754Bとして解釈される。U=0で、かつMODフィールド842が00、01、または10を含む(メモリアクセス演算を示す)ときに、アルファフィールド752(EVEXバイト3、ビット[7]−EH)は、エビクションヒント(EH)フィールド752Bとして解釈され、ベータフィールド754(EVEXバイト3、ビット[6:4]−SSS)は、3ビットのデータ操作フィールド754Cとして解釈される。
プロセッサコアは、異なる方法で、異なる目的で、および異なるプロセッサで実装することができる。例えば、そのようなコアの実装形態としては、1)汎用コンピューティングを意図する汎用インオーダーコア、2)汎用コンピューティングを意図する高性能汎用アウトオブオーダーコア、3)グラフィクスおよび/または科学的(スループット)演算を主として意図する専用コア、が挙げられる。異なるプロセッサの実装形態としては、1)汎用コンピューティングを意図する1つまたは複数の汎用インオーダーコア、および/または汎用コンピューティングを意図する1つまたは複数の汎用アウトオブオーダーコアを含むCPU、および2)グラフィクスおよび/またはサイエンス(スループット)を主として意図する1つまたは複数の専用コアを含むコプロセッサ、が挙げられる。そのような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、該アーキテクチャとしては、1)CPUとは別のチップ上のコプロセッサ、2)CPUと同じパッケージの中の別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、あるときには、統合グラフィクスおよび/または科学的(スループット)論理などの専用論理、または専用コアと称される)、および4)同じダイ上に、説明したCPU(あるときには、アプリケーションコア(複数可)またはアプリケーションプロセッサ(複数可)と称される)、上で説明したコプロセッサ、および追加の機能性を含むことができる、システムオンチップ、が挙げられる。例示的なコアアーキテクチャを次に説明し、続いて、例示的なプロセッサおよびコンピュータアーキテクチャを説明する。
図10Aは、一実施形態による、例示的なインオーダーパイプラインおよび例示的なレジスタリネーミング、アウトオブオーダー発行/実行パイプラインの両方を例示するブロック図である。図10Bは、一実施形態によるプロセッサに含まれるように、インオーダーアーキテクチャコアの例示的な実施形態、および例示的なレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの両方を例示するブロック図である。図10A〜10Bにおいて実線で囲まれたボックスは、インオーダーパイプラインおよびインオーダーコアを例示し、一方で、破線で囲まれたボックスの随意の追加は、レジスタリネーミング、アウトオブオーダー発行/実行パイプラインおよびコアを例示する。インオーダーの態様がアウトオブオーダーの態様のサブセットであることから、アウトオブオーダーの態様を説明する。
図11A〜11Bは、より具体的で例示的なインオーダーコアアーキテクチャのブロック図を示し、該コアは、チップの中のいくつかの論理ブロックのうちの1つ(同じタイプおよび/または異なるタイプの他のコアを含む)である。論理ブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を通して、いくつかの固定機能論理、メモリI/Oインターフェース、および他の必要なI/O論理と通信する。
図12は、一実施形態による、2つ以上のコアを有することができ、統合メモリコントローラを有することができ、また、統合グラフィクスを有することができる、プロセッサ1200のブロック図である。図12において実線で囲まれたボックスは、単一のコア1202Aと、システムエージェント1210と、一組の1つまたは複数のバスコントローラユニット1216とを有するプロセッサ1200を示し、一方で、破線で囲まれたボックスの随意の追加部分は、多数のコア1202A〜Nと、システムエージェントユニット1210の中の一組の1つまたは複数の統合メモリコントローラユニット(複数可)1214と、専用論理1208とを有する代替のプロセッサ1200を示す。
図13〜図16は、例示的なコンピュータアーキテクチャのブロック図である。また、ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP:digital signal processor)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤー、ハンドヘルドデバイス、および様々な他の電子デバイスのための、当技術分野において知られている他のシステム設計および構成も適している。全般に、本明細書で開示されるプロセッサおよび/または他の実行論理を組み込むことができる多様なシステムまたは電子デバイスが一般的に適している。
いくつかの場合では、命令をソース命令セットからターゲット命令セットに変換するために、命令変換器を使用することができる。例えば、命令変換器は、命令を、コアによって処理される1つまたは複数の他の命令に翻訳すること(例えば、静的バイナリ翻訳、動的コンパイルを含む動的バイナリ翻訳を使用する)、モーフィングすること、エミュレートすること、または別様には、変換することができる。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせで実装することができる。命令変換器は、プロセッサ上、プロセッサ外、あるいは一部をプロセッサ上として一部をプロセッサ外とすることができる。
Claims (25)
- プロセッサであって、
復号化された命令を生成するために多数のソースオペランドを有する命令を復号化する復号化ユニットであって、各オペランドが、第1、第2、および第3の座標のうちの1つと関連付けられる、復号化ユニットと、
前記復号化された命令を実行して、前記ソースオペランドのビットを3次元z曲線インデックスにインターリーブする実行ユニットと、
を備える、プロセッサ。 - 前記命令をフェッチする命令フェッチユニットを更に備え、前記命令が、単一の機械レベル命令である、請求項1に記載のプロセッサ。
- 前記3次元z曲線インデックスを、デスティネーションオペランドと関連付けられるレジスタにコミットするレジスタファイルユニットを更に備える、請求項1または2に記載のプロセッサ。
- 前記レジスタファイルユニットが、
第1のソースオペランドを記憶する第1のレジスタと、
第2のソースオペランドを記憶する第2のレジスタと、
第3のソースオペランドを記憶する第3のレジスタと、
を備える一組のレジスタを更に記憶する、請求項3に記載のプロセッサ。 - 前記第1のソースオペランドが、第1の次元座標を示し、
前記第2のソースオペランドが、第2の次元座標を示し、
前記第3のソースオペランドが、第3の次元座標を示す、
請求項4に記載のプロセッサ。 - 前記実行ユニットが、各ソースオペランドの10個の下位ビットを入力し、32ビットの結果を出力する、請求項1から5のいずれか一項に記載のプロセッサ。
- 前記実行ユニットが、各ソースオペランドの20個の下位ビットを入力し、64ビットの結果を出力する、請求項1から6のいずれか一項に記載のプロセッサ。
- 論理ユニットであって、
3次元z曲線インデックスを計算するための一組の演算のための多数のソース値を記憶する多数のレジスタと、
前記3次元z曲線インデックスを計算するために、前記多数のレジスタの各々の下位ビットを入力し、前記下位ビットをインターリーブする実行ユニットと、
を備える、論理ユニット。 - 前記多数のレジスタが、
第1のソース値を記憶する第1のレジスタと、
第2のソース値を記憶する第2のレジスタと、
第3のソース値を記憶する第3のレジスタと、
を含む、請求項8に記載の論理ユニット。 - 前記第1のソース値が、第1の次元座標を示し、
前記第2のソース値が、第2の次元座標を示し、
前記第3のソース値が、第3の次元座標を示す、
請求項9に記載の論理ユニット。 - 結果を記憶する第4のレジスタを更に備える、請求項9または10に記載の論理ユニット。
- 前記実行ユニットが、ソースオペランドの各々の10個の下位ビットを入力し、32ビットの結果を前記第4のレジスタに出力する、請求項11に記載の論理ユニット。
- 前記実行ユニットが、ソースオペランドの各々の20個の下位ビットを入力し、64ビットの結果を出力する、請求項11または12に記載の論理ユニット。
- 前記実行ユニットが単一命令に応じて、1つまたは複数のAND、XOR、およびシフト演算を介して、前記3次元z曲線インデックスを計算する、請求項8から13のいずれか一項に記載の論理ユニット。
- 前記シフト演算が、左シフト演算である、請求項14に記載の論理ユニット。
- 処理システムであって、
3次元z曲線インデックスを計算するための単一命令をフェッチするための手段であって、前記単一命令が、3つのソースオペランドおよび1つのデスティネーションオペランドを有する、手段と、
前記単一命令を復号化された命令に復号化するための手段と、
ソースオペランド値をフェッチするための手段と、
各ソースオペランド値の下位ビットをインターリーブすることによって、前記下位ビットに基づいて前記3次元z曲線インデックスを計算するために、前記復号化された命令を実行するための手段と、
を備える、システム。 - 前記実行するための手段が更に、1つまたは複数のAND、XOR、およびシフト演算を使用して前記3次元z曲線インデックスの計算する、請求項16に記載のシステム。
- 前記実行するための手段が、XOR論理ゲート、AND論理ゲート、およびシフタ回路を含む、請求項17に記載のシステム。
- 前記3次元z曲線インデックスを、前記デスティネーションオペランドによって示される32ビットレジスタにコミットするための手段を更に備え、前記実行するための手段が更に、少なくとも10個の下位ビットに基づいて前記3次元z曲線インデックスを計算する、請求項16から18のいずれか一項に記載のシステム。
- 前記3次元z曲線インデックスを、前記デスティネーションオペランドによって示される64ビットレジスタにコミットするための手段を更に備え、前記実行するための手段が更に、少なくとも20個の下位ビットに基づいて前記3次元z曲線インデックスを計算する、請求項16から19のいずれか一項に記載のシステム。
- 3次元z曲線インデックスを計算するための単一命令をフェッチする命令フェッチユニットであって、前記単一命令が、3つのソースオペランドおよび1つのデスティネーションオペランドを有し、各ソースオペランドが、第1、第2、および第3の座標のうちの1つと関連付けられる、命令フェッチユニットと、
前記単一命令を復号化された命令に復号化する復号化ユニットと、
前記復号化された命令のためのソース値を記憶するために多数のレジスタを含むレジスタファイルユニットと、
前記3次元z曲線インデックスを計算するために、前記多数のレジスタに記憶された値の下位ビットを取り出し、前記下位ビットをインターリーブする実行ユニットと、
を備える、装置。 - 前記実行ユニットが、XOR論理ゲート、AND論理ゲート、およびシフタ回路を含む、請求項21に記載の装置。
- 前記レジスタファイルユニットが更に、前記3次元z曲線インデックスを前記デスティネーションオペランドと関連付けられるレジスタにコミットする、請求項21または22に記載の装置。
- 前記レジスタファイルユニットが更に、前記3次元z曲線インデックスを前記デスティネーションオペランドによって示される32ビットレジスタにコミットし、前記実行ユニットが更に、少なくとも10個の下位ビットに基づいて前記3次元z曲線インデックスを計算する、請求項23に記載の装置。
- 前記レジスタファイルユニットが更に、前記3次元z曲線インデックスを前記デスティネーションオペランドによって示される64ビットレジスタにコミットし、前記実行ユニットが更に、少なくとも20個の下位ビットに基づいて前記3次元z曲線インデックスを計算する、請求項23または24に記載の装置。
Applications Claiming Priority (3)
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 |
US14/542,499 | 2014-11-14 | ||
PCT/US2015/059940 WO2016077335A1 (en) | 2014-11-14 | 2015-11-10 | Machine level instructions to compute a 3d z-curve index from 3d coordinates |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018500629A true JP2018500629A (ja) | 2018-01-11 |
JP6773378B2 JP6773378B2 (ja) | 2020-10-21 |
Family
ID=55954938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017521494A Expired - Fee Related JP6773378B2 (ja) | 2014-11-14 | 2015-11-10 | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160139919A1 (ja) |
EP (1) | EP3218798A4 (ja) |
JP (1) | JP6773378B2 (ja) |
KR (1) | KR20170059477A (ja) |
CN (1) | CN106796502A (ja) |
TW (1) | TWI603289B (ja) |
WO (1) | WO2016077335A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017534981A (ja) * | 2014-11-14 | 2017-11-24 | インテル・コーポレーション | 3次元モートン座標変換プロセッサ、方法、システム、及び命令 |
JP2018500630A (ja) * | 2014-11-14 | 2018-01-11 | インテル・コーポレーション | 4次元モートン座標変換プロセッサ、方法、システム、及び命令 |
Families Citing this family (2)
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 |
US11200167B2 (en) * | 2019-12-10 | 2021-12-14 | Pony Ai Inc. | Dynamic memory address encoding |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9509987D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US6182203B1 (en) * | 1997-01-24 | 2001-01-30 | Texas Instruments Incorporated | Microprocessor |
US6745319B1 (en) * | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
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 |
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 |
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 |
US8688723B2 (en) * | 2007-12-21 | 2014-04-01 | Hewlett-Packard Development Company, L.P. | Methods and apparatus using range queries for multi-dimensional data in a database |
US20090254736A1 (en) * | 2008-04-07 | 2009-10-08 | Arm Limited | Data processing system for performing data rearrangement operations |
US8055687B2 (en) * | 2009-01-20 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | System and method for determining intervals of a space filling curve in a query box |
US8780112B2 (en) * | 2011-06-08 | 2014-07-15 | Pacific Data Images Llc | Coherent out-of-core point-based global illumination |
US20130033507A1 (en) * | 2011-08-04 | 2013-02-07 | Nvidia Corporation | System, method, and computer program product for constructing an acceleration structure |
JP5988222B2 (ja) * | 2011-10-18 | 2016-09-07 | パナソニックIpマネジメント株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
US9100184B2 (en) * | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
US9965821B2 (en) * | 2012-03-09 | 2018-05-08 | Nvidia Corporation | Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit |
US9396512B2 (en) * | 2012-03-09 | 2016-07-19 | Nvidia Corporation | Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit |
US8694575B2 (en) * | 2012-06-11 | 2014-04-08 | The Johns Hopkins University | Data-intensive computer architecture |
US9298457B2 (en) * | 2013-01-22 | 2016-03-29 | Altera Corporation | SIMD instructions for data compression and decompression |
-
2014
- 2014-11-14 US US14/542,499 patent/US20160139919A1/en not_active Abandoned
-
2015
- 2015-10-08 TW TW104133232A patent/TWI603289B/zh not_active IP Right Cessation
- 2015-11-10 EP EP15858449.0A patent/EP3218798A4/en not_active Withdrawn
- 2015-11-10 CN CN201580055993.5A patent/CN106796502A/zh active Pending
- 2015-11-10 WO PCT/US2015/059940 patent/WO2016077335A1/en active Application Filing
- 2015-11-10 JP JP2017521494A patent/JP6773378B2/ja not_active Expired - Fee Related
- 2015-11-10 KR KR1020177011086A patent/KR20170059477A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017534981A (ja) * | 2014-11-14 | 2017-11-24 | インテル・コーポレーション | 3次元モートン座標変換プロセッサ、方法、システム、及び命令 |
JP2018500630A (ja) * | 2014-11-14 | 2018-01-11 | インテル・コーポレーション | 4次元モートン座標変換プロセッサ、方法、システム、及び命令 |
Also Published As
Publication number | Publication date |
---|---|
CN106796502A (zh) | 2017-05-31 |
US20160139919A1 (en) | 2016-05-19 |
JP6773378B2 (ja) | 2020-10-21 |
TW201626331A (zh) | 2016-07-16 |
TWI603289B (zh) | 2017-10-21 |
EP3218798A4 (en) | 2018-07-18 |
EP3218798A1 (en) | 2017-09-20 |
WO2016077335A1 (en) | 2016-05-19 |
KR20170059477A (ko) | 2017-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791488B (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
US10025591B2 (en) | Instruction for element offset calculation in a multi-dimensional array | |
JP6466388B2 (ja) | 方法及び装置 | |
TWI489381B (zh) | 多暫存器散布指令 | |
KR20170097018A (ko) | 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법 | |
CN107220029B (zh) | 掩码置换指令的装置和方法 | |
CN113885833A (zh) | 用于经融合的乘加的系统、装置和方法 | |
CN109313553B (zh) | 用于跨步加载的系统、装置和方法 | |
KR102310793B1 (ko) | Z-오더 곡선에서의 넥스트 포인트의 좌표를 계산하기 위한 벡터 명령어 | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
CN110659129A (zh) | 用于数据表示之间的一致、加速的转换的装置和方法 | |
CN108780394B (zh) | 用于转换编码格式的硬件装置和方法 | |
JP2018506096A (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP2017539014A (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
CN108292228B (zh) | 用于基于通道的步进收集的系统、设备和方法 | |
CN108351782B (zh) | 用于跨步访问的系统、装置和方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
KR20170096101A (ko) | 실행을 위해 데이터 성분들을 로딩하는데 있어서 공간 구역성을 고려하기 위한 장치 및 방법 | |
JP2017534982A (ja) | 4d座標から4dのz曲線インデックスを計算するための機械レベル命令 | |
JP6773378B2 (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
KR20170099860A (ko) | 벡터 포화된 더블워드/쿼드워드 덧셈을 수행하기 위한 명령어 및 로직 | |
JP2017539016A (ja) | 結合した乗算−乗算命令のための装置および方法 | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191029 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200129 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200901 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200929 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6773378 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |