JP6711480B2 - ベクトルインデックスロードおよびストアのための方法および装置 - Google Patents
ベクトルインデックスロードおよびストアのための方法および装置 Download PDFInfo
- Publication number
- JP6711480B2 JP6711480B2 JP2017527721A JP2017527721A JP6711480B2 JP 6711480 B2 JP6711480 B2 JP 6711480B2 JP 2017527721 A JP2017527721 A JP 2017527721A JP 2017527721 A JP2017527721 A JP 2017527721A JP 6711480 B2 JP6711480 B2 JP 6711480B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- index
- register
- instruction
- processor
- 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.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims description 210
- 238000000034 method Methods 0.000 title claims description 26
- 230000015654 memory Effects 0.000 claims description 199
- 238000007667 floating Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 8
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 77
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 36
- 230000006870 function Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000000873 masking effect Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000013501 data transformation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 235000009499 Vanilla fragrans Nutrition 0.000 description 1
- 244000263375 Vanilla tahitensis Species 0.000 description 1
- 235000012036 Vanilla tahitensis Nutrition 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012423 maintenance 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001629 suppression Effects 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base 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/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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
本明細書に説明される命令の実施形態は、異なるフォーマットで実施され得る。更に、例示的なシステム、アーキテクチャ、およびパイプラインが以下に詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、およびパイプライン上で実行され得るが、詳述されるものに限定されない。
ベクトル向け命令フォーマットは、ベクトル命令に好適な命令フォーマットである。(例えば、ベクトルオペレーションに固有の一定のフィールドが存在する)。ベクトルおよびスカラオペレーションの両方がベクトル向け命令フォーマットによりサポートされる実施形態が説明されるが、代替的な実施形態は、ベクトル向け命令フォーマットによるベクトルオペレーションのみを用いる。
クラスAの非メモリアクセス105の命令テンプレートの場合に、アルファフィールド152は、RSフィールド152Aとして解釈され、その内容は、異なる追加オペレーションタイプのうちのどれが実行されるかを区別するが(例えば、ラウンド152A.1およびデータ変換152A.2は、各々、非メモリアクセス、ラウンドタイプオペレーション110、および非メモリアクセス、データ変換タイプオペレーション115の命令テンプレートに対して指定される)、ベータフィールド154は、指定されたタイプのオペレーションのうちいずれが実行されるかを区別する。非メモリアクセス105の命令テンプレートにおいて、スケールフィールド160、変位フィールド162A、および変位スケールフィールド162Bは、存在しない。
非メモリアクセスのフルラウンド制御タイプオペレーション110の命令テンプレートにおいて、ベータフィールド154は、ラウンド制御フィールド154Aとして解釈され、その内容は、静的ラウンドを提供する。本発明の説明される実施形態において、ラウンド制御フィールド154Aは、抑圧全浮動小数点例外(SAE)フィールド156およびラウンドオペレーション制御フィールド158を含み、代替的な実施形態は、これら両方のコンセプトをサポートおよびエンコードして同一のフィールドとすることができ、またはこれらのコンセプト/フィールドのうち一方または他方のみを有し得る(例えば、ラウンドオペレーション制御フィールド158のみを有し得る)。
一時的データは、キャッシュから利益を得るのに十分なほど速やかに再利用される可能性が高いデータである。しかし、これはヒントであり、異なるプロセッサは、ヒントを完全に無視することを含め、異なる態様で一時的データを実装してもよい。
非一時的データは、レベル1のキャッシュにおけるキャッシュから利益を得るのに十分なほど速やかに再利用される可能性が低いデータであり、追い出しの優先権を与えられるべきである。しかし、これはヒントであり、異なるプロセッサは、ヒントを完全に無視することを含め、異なる態様で非一時的データを実装してもよい。
クラスBの命令テンプレートの場合、アルファフィールド152は、ライトマスク制御(Z)フィールド152Cとして解釈され、その内容は、ライトマスクフィールド170により制御されるライトマスキングがマージングであるべきか、またはゼロ書き込みであるべきかを区別する。
図2A〜図2Dは、本発明の実施形態による例示的な特定ベクトル向け命令フォーマットを示すブロック図である。図2A〜図2Dは、フィールドの位置、サイズ、解釈、および順序、ならびにそれらのフィールドのいくつかに対する値を指定するという意味で具体的な特定ベクトル向け命令フォーマット200を示す。特定ベクトル向け命令フォーマット200は、x86命令セットを拡張するために用いられ得、従ってフィールドのうちのいくつかは、既存のx86命令セットおよびその拡張(例えば、AVX)において用いられるものと類似するか、または同じである。このフォーマットは、拡張された既存のx86命令セットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、および即値フィールドとの整合性を保つ。図2A〜図2Dがフィールドにマッピングされる図1A〜図1Bのフィールドが示される。
図2Bは、本発明の一実施形態による、フルオペコードフィールド174を構成する特定ベクトル向け命令フォーマット200のフィールドを示すブロック図である。具体的には、フルオペコードフィールド174は、フォーマットフィールド140、ベースオペレーションフィールド142、およびデータ要素幅(W)フィールド164を含む。ベースオペレーションフィールド142は、プレフィックスエンコードフィールド225、オペコードマップフィールド215、およびリアルオペコードフィールド230を含む。
図2Cは、本発明の一実施形態による、レジスタインデックスフィールド144を構成する特定ベクトル向け命令フォーマット200のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド144は、REXフィールド205、REX'フィールド210、MODR/M.regフィールド244、MODR/M.r/mフィールド246、VVVVフィールド220、xxxフィールド254、およびbbbフィールド256を含む。
図2Dは、本発明の一実施形態による、追加オペレーションフィールド150を構成する特定ベクトル向け命令フォーマット200のフィールドを示すブロック図である。クラス(U)フィールド168が0を含む場合、EVEX.U0(クラスA168A)を意味する。1を含む場合、EVEX.U1(クラスB168B)を意味する。U=0、かつMODフィールド242が11を含む場合(非メモリアクセスオペレーションを意味する)、アルファフィールド152(EVEXバイト3、ビット[7]−EH)は、RSフィールド152Aとして解釈される。RSフィールド152Aが1(ラウンド152A.1)を含む場合、ベータフィールド154(EVEXバイト3、ビット[6:4]‐SSS)は、ラウンド制御フィールド154Aとして解釈される。ラウンド制御フィールド154Aは、1ビットのSAEフィールド156および2ビットのラウンドオペレーションフィールド158を含む。RSフィールド152Aが0(データ変換152A.2)を含む場合、ベータフィールド154(EVEXバイト3、ビット[6:4]‐SSS)は、3ビットのデータ変換フィールド154Bとして解釈される。U=0であり、かつMODフィールド242が00、01、または10を含む場合(メモリアクセスオペレーションを意味する)、アルファフィールド152(EVEXバイト3、ビット[7]‐EH)は、エビクションヒント(EH)フィールド152Bとして解釈され、ベータフィールド154(EVEXバイト3、ビット[6:4]‐SSS)は、3ビットのデータ操作フィールド154Cとして解釈される。
図3は、本発明の一実施形態による、レジスタアーキテクチャ300のブロック図である。示される実施形態において、512ビット幅の32個のベクトルレジスタ310が存在する。これらのレジスタは、zmm0〜zmm31として参照される。下位の16個のzmmレジスタの下位の256ビットは、レジスタymm0〜15上にオーバーレイされる。下位の16個のzmmレジスタの下位の128ビット(ymmレジスタの下位の128ビット)は、レジスタxmm0〜15上にオーバーレイされる。以下の表に示されるように、特定ベクトル向け命令フォーマット200は、これらのオーバーレイされたレジスタファイルで動作する。
プロセッサコアは、異なる態様で異なる目的のために異なるプロセッサに実装され得る。例えば、そのようなコアの実装は、1)汎用演算用の汎用インオーダコア、2)汎用演算用の高性能汎用アウトオブオーダコア、3)主にグラフィックスおよび/またはサイエンティフィック(スループット)演算用の専用コアを含み得る。異なるプロセッサの実装は、1)汎用演算用の1もしくは複数の汎用インオーダコア、および/または汎用演算用の1もしくは複数の汎用アウトオブオーダコアを含むCPU、ならびに2)主にグラフィックスおよび/またはサイエンティフィック(スループット)用の1もしくは複数の専用コアを含むコプロセッサを含み得る。そのような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、異なるコンピュータシステムアーキテクチャは、1)CPUの別個のチップ上のコプロセッサ、2)CPUと同一のパッケージにおける別個のダイ上のコプロセッサ、3)CPUと同一のダイ上のコプロセッサ(この場合、そのようなコプロセッサは、場合によっては統合グラフィックスおよび/またはサイエンティフィック(スループット)ロジック等の専用ロジック、または専用コアとして言及される)、および4)同一のダイ上に、説明されたCPU(場合によっては、アプリケーションコアもしくはアプリケーションプロセッサとして言及される)、上記のコプロセッサ、および追加の機能性を含み得るシステムオンチップを含み得る。例示的なコアアーキテクチャが次に説明され、その次に例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
高性能コード(HPC)の重要な機能は、それが著しい数のメモリ参照を有することであり、それらのほとんどは異なるインデックスを有する同一のメモリを指す。現在の実装では、これらのメモリインデックスの各々は、「別個の」汎用レジスタ(例えば、x86アーキテクチャにおけるGPRx86‐64)を必要とする。限定されたレジスタセット(例えば、8個のx86および16個のx64レジスタ)および多数のメモリ参照により、GPRレジスタセットは、すぐにいっぱいとなってスタック上でスピル・アンド・フィル(spill‐and‐fill)をもたらすこととなり、肥大化した非効率なコードを生じる。更に、これらのインデックスは、加算、乗算、または減算等の更なる計算を必要とし、これらの全ては、GPRスカラ計算を必要とし、GPRレジスタスタックを更に消費し、計算がインデックスの全てにわたって同じであるので、不必要な重複コードの肥大化を生じさせる。
ベクトルインデックスロード。VILD[B/W/D/Q]DST_SIMD_REG{k1}{z},[MEM+VectIndex],ImmSelectForVectIndex、および
ベクトルインデックスストア。VIST[B/W/D/Q][MEM+VectIndex]{k1}{z},SRC_SIMD_REG,ImmSelectForVectIndex。
MEMはメモリベース参照であり、
VectIndexはSIMDベクトルレジスタであり、
ImmSelectForVectIndexは、VectorIndexレジスタから対応するインデックスを選択するために用いられ、
B/W/D/Qは、バイト値、ワード値、ダブルワード値、またはクワッドワード値のいずれを用いて命令が実行されるかを示す。
Struct Atom [double x,y,z];
Atom AtomArray [10000];
1.メモリは以下のように定義される。
Struct Table[double x,y,z,w];
Table f_tbl[10000];2.計算されたインデックスは、以下の表1に示されるように、本発明の一実施形態によるZMMレジスタに保持され、x86‐64GPRレジスタを用いる実装のための対応する値が示される。
Claims (27)
- 複数のインデックス値をストアするベクトルインデックスレジスタと、
複数のマスクビットをストアするマスクレジスタと、
メモリからロードされた複数のベクトルデータ要素をストアするベクトルレジスタと、
即値を用いて、前記ベクトルインデックスレジスタ内にストアされた、ロードオペレーションに用いられるべきインデックスを識別し、これに応じて、前記ロードオペレーションのためのメモリアドレスを決定するべく、前記インデックスをベースメモリアドレスと組み合わせるベクトルインデックスロードロジックであって、前記複数のマスクビットに応じて前記メモリアドレスに関係する位置から前記ベクトルレジスタへとベクトルデータ要素をロードするベクトルインデックスロードロジックとを備えるプロセッサであって、
1つの命令に含まれる前記即値を用いて識別される前記インデックスは1つであり、
前記ベクトルインデックスロードロジックは、1つの前記インデックスに対応する前記メモリアドレスに関係する前記ベクトルデータ要素であって、前記複数のマスクビットにより示される数の前記ベクトルデータ要素を、前記ベクトルレジスタへとロードするものである、プロセッサ。 - 前記複数のマスクビットは、前記メモリアドレスからロードされるべきベクトルデータ要素の数を示す、請求項1に記載のプロセッサ。
- 前記マスクレジスタは、64ビットのマスクレジスタであり、前記ベクトルインデックスレジスタおよび前記ベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタである、請求項1または2に記載のプロセッサ。
- 前記即値は、前記ベクトルインデックスレジスタ内におけるインデックスのインデックス位置を識別する整数値を含む、請求項1〜3のいずれか1項に記載のプロセッサ。
- 前記複数のインデックス値の各々を計算して前記ベクトルインデックスレジスタ内に前記複数のインデックス値をストアするメモリ管理ユニットを更に備える、請求項1〜4のいずれか1項に記載のプロセッサ。
- 前記複数のベクトルデータ要素は、倍精度浮動小数点値を含む、請求項1〜5のいずれか1項に記載のプロセッサ。
- 前記複数のベクトルデータ要素を含むデータアレイは、メモリ内にストアされ、
前記ベースメモリアドレスは、前記データアレイのベースを指し、
前記ベクトルインデックスロードロジックは、前記ベースメモリアドレスを、識別された前記インデックスと組み合わせて、前記メモリアドレスを決定することにより、前記データアレイ内におけるベクトルデータ要素を識別する、請求項1〜6のいずれか1項に記載のプロセッサ。 - インデックスを識別すること、前記インデックスをベースメモリアドレスと組み合わせること、および前記複数のベクトルデータ要素をロードすることは、ベクトルインデックスロード命令のデコードおよび実行に応答して行われる、請求項1〜7のいずれか1項に記載のプロセッサ。
- 前記ベクトルインデックスロード命令は、複数のマイクロオペレーションにデコードされる、請求項8に記載のプロセッサ。
- 複数のインデックス値をストアするベクトルインデックスレジスタと、
複数のマスクビットをストアするマスクレジスタと、
メモリにストアされるべき複数のベクトルデータ要素をストアするベクトルレジスタと、
即値を用いて、前記ベクトルインデックスレジスタ内にストアされた、ストアオペレーションに用いられるべきインデックスを識別し、これに応じて、前記ストアオペレーションのためのメモリアドレスを決定するべく、前記インデックスをベースメモリアドレスと組み合わせるベクトルインデックスストアロジックであって、前記複数のマスクビットに応じて、前記ベクトルレジスタから、システムメモリ内における前記メモリアドレスに関係する位置へと、ベクトルデータ要素をストアするベクトルインデックスストアロジックとを備えるプロセッサであって、
1つの命令に含まれる前記即値を用いて識別される前記インデックスは1つであり、
前記ベクトルインデックスストアロジックは、1つの前記インデックスに対応する前記メモリアドレスに関係する前記ベクトルデータ要素であって、前記複数のマスクビットにより示される数の前記ベクトルデータ要素を、前記ベクトルレジスタから、システムメモリ内における前記メモリアドレスに関係する位置にストアするものである、プロセッサ。 - 前記複数のマスクビットは、前記メモリアドレスにストアされるべきベクトルデータ要素の数を示す、請求項10に記載のプロセッサ。
- 前記マスクレジスタは、64ビットのマスクレジスタであり、前記ベクトルインデックスレジスタおよび前記ベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタである、請求項10または11に記載のプロセッサ。
- 前記即値は、前記ベクトルインデックスレジスタ内におけるインデックスのインデックス位置を識別する整数値を含む、請求項10〜12のいずれか1項に記載のプロセッサ。
- 前記複数のインデックス値の各々を計算して前記ベクトルインデックスレジスタ内に前記複数のインデックス値をストアするメモリ管理ユニットを更に備える、請求項10〜13のいずれか1項に記載のプロセッサ。
- 前記複数のベクトルデータ要素は、倍精度浮動小数点値を含む、請求項10〜14のいずれか1項に記載のプロセッサ。
- 前記複数のベクトルデータ要素を含むデータアレイは、メモリ内にストアされ、
前記ベースメモリアドレスは、前記データアレイのベースを指し、
前記ベクトルインデックスストアロジックは、前記ベースメモリアドレスを、識別された前記インデックスと組み合わせて、前記メモリアドレスを決定することにより、ベクトルデータ要素をストアすべき、前記データアレイ内における位置を識別する、請求項10〜15のいずれか1項に記載のプロセッサ。 - インデックスを識別すること、前記インデックスをベースメモリアドレスと組み合わせること、および前記複数のベクトルデータ要素をストアすることは、ベクトルインデックスストア命令のデコードおよび実行に応答して行われる、請求項10〜16のいずれか1項に記載のプロセッサ。
- 前記ベクトルインデックスストア命令は、複数のマイクロオペレーションにデコードされる、請求項17に記載のプロセッサ。
- 複数のインデックス値をベクトルインデックスレジスタ内にストアする段階と、
複数のマスクビットをマスクレジスタ内にストアする段階と、
メモリからロードされた複数のベクトルデータ要素をストアする段階と、
即値を用いて、前記ベクトルインデックスレジスタ内にストアされた、ロードオペレーションに用いられるべきインデックスを識別する段階と、
これに応じて、前記ロードオペレーションのためのメモリアドレスを決定するべく、前記インデックスをベースメモリアドレスと組み合わせる段階と、
前記複数のマスクビットに応じて、前記メモリアドレスに関係する位置から、複数のベクトルデータ要素をストアできるベクトルレジスタへと、ベクトルデータ要素をロードする段階とを備える方法であって、
前記インデックスを識別する段階は、1つの命令に含まれる前記即値を用いて、前記インデックスを1つのみ識別する段階を含み、
前記ロードする段階は、1つの前記インデックスに対応する前記メモリアドレスに関係する前記ベクトルデータ要素であって、前記複数のマスクビットにより示される数の前記ベクトルデータ要素を、前記ベクトルレジスタへとロードする段階を含むものである、方法。 - 前記複数のマスクビットは、前記メモリアドレスからロードされるべきベクトルデータ要素の数を示す、請求項19に記載の方法。
- 前記マスクレジスタは、64ビットのマスクレジスタであり、前記ベクトルインデックスレジスタおよび前記ベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタである、請求項19または20に記載の方法。
- 前記即値は、前記ベクトルインデックスレジスタ内におけるインデックスのインデックス位置を識別する整数値を含む、請求項19〜21のいずれか1項に記載の方法。
- 前記方法は、メモリ管理ユニットが、前記複数のインデックス値の各々を計算する段階をさらに備えるものであり、
複数のインデックス値をベクトルインデックスレジスタ内にストアする段階は、メモリ管理ユニットが行うものである、請求項19〜22のいずれか1項に記載の方法。 - 前記複数のベクトルデータ要素は、倍精度浮動小数点値を含む、請求項19〜23のいずれか1項に記載の方法。
- 前記複数のベクトルデータ要素を含むデータアレイをメモリ内にストアする段階であって、前記ベースメモリアドレスは、前記データアレイのベースを指す段階と、
前記ベースメモリアドレスを、識別された前記インデックスと組み合わせて、前記メモリアドレスを決定することにより、前記データアレイ内におけるベクトルデータ要素を識別する段階とを更に備える、請求項19〜24のいずれか1項に記載の方法。 - インデックスを識別する段階、前記インデックスをベースメモリアドレスと組み合わせる段階、および前記複数のベクトルデータ要素をロードする段階は、ベクトルインデックスロード命令のデコードおよび実行に応答して行われる、請求項19〜25のいずれか1項に記載の方法。
- 前記ベクトルインデックスロード命令は、複数のマイクロオペレーションにデコードされる、請求項26に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,289 US9830151B2 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for vector index load and store |
US14/581,289 | 2014-12-23 | ||
PCT/US2015/062057 WO2016105755A1 (en) | 2014-12-23 | 2015-11-23 | Method and apparatus for vector index load and store |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018500660A JP2018500660A (ja) | 2018-01-11 |
JP6711480B2 true JP6711480B2 (ja) | 2020-06-17 |
Family
ID=56129467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017527721A Active JP6711480B2 (ja) | 2014-12-23 | 2015-11-23 | ベクトルインデックスロードおよびストアのための方法および装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9830151B2 (ja) |
EP (1) | EP3238026B1 (ja) |
JP (1) | JP6711480B2 (ja) |
KR (1) | KR102463858B1 (ja) |
CN (1) | CN107003846B (ja) |
BR (1) | BR112017010956A2 (ja) |
SG (1) | SG11201704243UA (ja) |
TW (1) | TWI617978B (ja) |
WO (1) | WO2016105755A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023219204A1 (ko) * | 2022-05-11 | 2023-11-16 | 서울시립대학교 산학협력단 | 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9658821B2 (en) * | 2014-09-29 | 2017-05-23 | International Business Machines Corporation | Single operation array index computation |
EP3428792B1 (en) * | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US10684858B2 (en) * | 2018-06-01 | 2020-06-16 | Intel Corporation | Indirect memory fetcher |
US20200004535A1 (en) * | 2018-06-30 | 2020-01-02 | Intel Corporation | Accelerator apparatus and method for decoding and de-serializing bit-packed data |
US11175915B2 (en) * | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11327862B2 (en) * | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
US11340904B2 (en) * | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
US11507374B2 (en) * | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
CN112486980A (zh) * | 2019-09-12 | 2021-03-12 | 阿里巴巴集团控股有限公司 | 数据存储、检索方法和装置、电子设备以及计算机可读存储介质 |
CN111158757B (zh) * | 2019-12-31 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 并行存取装置和方法以及芯片 |
CN111782270B (zh) * | 2020-06-09 | 2023-12-19 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置、存储介质 |
KR20220145656A (ko) | 2021-04-22 | 2022-10-31 | 에스케이하이닉스 주식회사 | 호스트 및 이를 포함하는 컴퓨팅 시스템 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4722049A (en) * | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
JP3721129B2 (ja) * | 2000-01-18 | 2005-11-30 | ミップス テクノロジーズ インコーポレイテッド | コンピュータのロードとストア演算を改善する方法および装置 |
US7162607B2 (en) * | 2001-08-31 | 2007-01-09 | Intel Corporation | Apparatus and method for a data storage device with a plurality of randomly located data |
US20130212353A1 (en) | 2002-02-04 | 2013-08-15 | Tibet MIMAR | System for implementing vector look-up table operations in a SIMD processor |
JP3659252B2 (ja) * | 2003-03-28 | 2005-06-15 | セイコーエプソン株式会社 | ベクトルデータのアドレス参照方法およびベクトルプロセッサ |
EP1794671A2 (en) * | 2004-09-21 | 2007-06-13 | Koninklijke Philips Electronics N.V. | Micro processor device and method for shuffle operations |
US20070150697A1 (en) | 2005-05-10 | 2007-06-28 | Telairity Semiconductor, Inc. | Vector processor with multi-pipe vector block matching |
US10387151B2 (en) * | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US8060724B2 (en) * | 2008-08-15 | 2011-11-15 | Freescale Semiconductor, Inc. | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
CN102200905A (zh) * | 2010-03-26 | 2011-09-28 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
WO2013095653A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
US9354881B2 (en) * | 2011-12-27 | 2016-05-31 | Intel Corporation | Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers |
US20140189322A1 (en) | 2012-12-28 | 2014-07-03 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Masking Usage Counting |
-
2014
- 2014-12-23 US US14/581,289 patent/US9830151B2/en active Active
-
2015
- 2015-11-19 TW TW104138330A patent/TWI617978B/zh active
- 2015-11-23 EP EP15873962.3A patent/EP3238026B1/en active Active
- 2015-11-23 CN CN201580064123.4A patent/CN107003846B/zh active Active
- 2015-11-23 SG SG11201704243UA patent/SG11201704243UA/en unknown
- 2015-11-23 WO PCT/US2015/062057 patent/WO2016105755A1/en active Application Filing
- 2015-11-23 BR BR112017010956-5A patent/BR112017010956A2/pt not_active Application Discontinuation
- 2015-11-23 KR KR1020177013808A patent/KR102463858B1/ko active IP Right Grant
- 2015-11-23 JP JP2017527721A patent/JP6711480B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023219204A1 (ko) * | 2022-05-11 | 2023-11-16 | 서울시립대학교 산학협력단 | 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈 |
Also Published As
Publication number | Publication date |
---|---|
KR20170097626A (ko) | 2017-08-28 |
EP3238026B1 (en) | 2019-11-20 |
TW201640331A (zh) | 2016-11-16 |
BR112017010956A2 (pt) | 2018-02-14 |
US20160179526A1 (en) | 2016-06-23 |
KR102463858B1 (ko) | 2022-11-03 |
SG11201704243UA (en) | 2017-07-28 |
CN107003846A (zh) | 2017-08-01 |
JP2018500660A (ja) | 2018-01-11 |
US9830151B2 (en) | 2017-11-28 |
WO2016105755A1 (en) | 2016-06-30 |
CN107003846B (zh) | 2021-02-26 |
EP3238026A1 (en) | 2017-11-01 |
TWI617978B (zh) | 2018-03-11 |
EP3238026A4 (en) | 2018-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
KR102462174B1 (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
JP6849275B2 (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP2014182807A (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
JP6745021B2 (ja) | 競合検出を実行するための方法および装置 | |
CN107111554B (zh) | 用于在加载数据元素以供执行时考虑空间局部性的装置和方法 | |
JP6738579B2 (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP6374975B2 (ja) | 連続ソースエレメントを複数のマスクされていない結果エレメントにストアすると共に、複数のマスクされた結果エレメントに伝搬するプロセッサ、方法、システム、及び命令 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
KR102321941B1 (ko) | 스핀-루프 점프를 수행하기 위한 장치 및 방법 | |
CN113050994A (zh) | 用于512位操作的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181119 |
|
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: 20200123 |
|
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: 20200428 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200512 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6711480 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |