JP2014182807A - 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム - Google Patents
限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム Download PDFInfo
- Publication number
- JP2014182807A JP2014182807A JP2014042958A JP2014042958A JP2014182807A JP 2014182807 A JP2014182807 A JP 2014182807A JP 2014042958 A JP2014042958 A JP 2014042958A JP 2014042958 A JP2014042958 A JP 2014042958A JP 2014182807 A JP2014182807 A JP 2014182807A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- limited range
- bit
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 556
- 238000000034 method Methods 0.000 title claims description 55
- 230000004044 response Effects 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 25
- 230000000873 masking effect Effects 0.000 claims description 12
- 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 71
- 238000010586 diagram Methods 0.000 description 57
- 238000006073 displacement reaction Methods 0.000 description 43
- 238000007667 floating Methods 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 15
- 230000002123 temporal effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000003416 augmentation Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 241001577299 Vindex Species 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program 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
- 230000002829 reductive effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000003607 modifier 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
- 230000000644 propagated effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000011232 storage material 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
- 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
-
- 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
- G06F12/023—Free address space management
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
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)
Abstract
【解決手段】プロセッサ100が、複数のパックドデータレジスタ107を備え、これらのパックドデータレジスタと結合された実行ロジック109も備える。この実行ロジックは、限定範囲ベクトルメモリアクセス命令103に応答して動作可能であり、8ビットメモリインデックス及び16ビットメモリインデックスから選択された複数のパックドメモリインデックスを有するソースパックドメモリインデックスを示す。実行ロジックは、限定範囲ベクトルメモリアクセス命令に応答して、メモリの限定範囲のみのメモリロケーションにアクセスするように動作可能である。
【選択図】図1
Description
幾つかの実施形態では、限定範囲120は、外部メモリ110の一部分又はサブセット(例えば、連続してインデックス可能な部分又はサブセット)のみを表すことができる。幾つかの実施形態では、命令(複数の場合もある)103は、オプションとして、外部メモリ110の限定範囲120内の場合によっては不連続なロケーションからデータ要素をプロセッサに読み出させるか、ロードさせるか、又はギャザーさせるように動作可能な1つ又は複数の限定範囲ベクトルギャザー命令104を含むことができる。幾つかの実施形態では、命令(複数の場合もある)103は、オプションとして、外部メモリ110の限定範囲120内の場合によっては不連続なロケーションにデータ要素をプロセッサに書き込ませるか、ストアさせるか、又はスキャッターさせるように動作可能な1つ又は複数の限定範囲ベクトルスキャッター命令105を含むことができる。様々な実施形態では、単一の限定範囲ベクトルメモリアクセス命令から複数又は多くのそのような命令まで存在し得る。
ベクトルギャザー命令/演算又はベクトルメモリロード命令/演算の場合、この命令は、メモリ210の限定範囲220からロード又はギャザーされたデータ要素を含む結果のパックドデータがストアされるデスティネーション記憶ロケーション215を示すことができる。ベクトルスキャッター命令/演算又はベクトルメモリストア命令/演算の場合、この命令は、メモリ210の限定範囲220に書き込まれるか又はスキャッターされる複数のデータ要素を含むソースパックドデータ214を示すことができる。図示するように、幾つかの実施形態では、ソースパックドメモリインデックス213、ソースパックドデータ214、及びデスティネーション記憶ロケーション215は、一組のパックドデータレジスタ207のうちのパックドデータレジスタとすることができる。代替的に、オプションとして、他の記憶ロケーションをこれらのうちの1つ又は複数に用いることができる。
例えば、幾つかの実施形態では、8ビットメモリインデックスに対応する限定範囲は、8ビットバイトメモリインデックスによって一意にインデックスすることが可能な僅かに256個のデータ要素又は256個の記憶ロケーションからなることができる。別の例として、幾つかの実施形態では、限定範囲は、16ビットバイトメモリインデックスによって一意にインデックスすることが可能な僅かに65536個のデータ要素又は65536個の記憶ロケーションからなることができる。他の実施形態では、インデックスすることが可能なこれらのデータ要素又は記憶ロケーションの一部分又はサブセットのみを限定範囲として用いることができる(例えば、16ビットインデックスの全範囲を用いるのではなく、その範囲の一部分のみを用いることができる)。
代替的に、他の実施形態では、16ビットワードメモリインデックス、又は32ビット未満の他のメモリインデックスをオプションとして用いることができる。その上、他の実施形態では、512ビット以外の他のパックドデータ幅、例えば、64ビット、128ビット、256ビット、又は1024ビットのパックドデータ幅等をオプションとして用いることができる。例として、64ビット幅、128ビット幅、及び256ビット幅が、それぞれ、8個、16個、及び32個の8ビットバイトメモリインデックス、又は16ビットワードメモリインデックスについてはそれぞれその半分をストアすることができる場合がある。図示した例では、メモリインデックスは、最下位位置(左側)から最上位位置(右側)に134,231,20,135,5,21,30,...186の値を有する。これらの値は例にすぎない。
1つの態様では、これらの要素を、対応するソースデータ要素及び/又は結果データ要素と1対1対応で含めることができる。図示するように、幾つかの実施形態では、各マスク要素は、単一のマスクビットとすることができる。各マスクビットの値は、演算(例えば、ギャザー演算)が実行されるか否かを制御することができる。1つの可能な規則によれば、各マスクビットは、ギャザー演算を実行するとともに結果データ要素をデスティネーション記憶ロケーションにストアすることを許可する第1の値(例えば、バイナリ1にセットされる)、又はギャザー演算を実行することを許可せず及び/又はギャザーされたデータ要素をデスティネーション記憶ロケーションにストアすることを許可しない第2の値(例えば、バイナリ0にクリアされる)を有することができる。
幾つかの実施形態では、データ要素は、より大きなメモリ710の他の部分内からではなく限定範囲720内のみのオプションとして/場合によっては不連続なメモリロケーションにスキャッターすることができる。例えば、図示した実施形態では、データ要素B1は、メモリインデックス値134によって示される限定範囲におけるロケーションに書き込むことができ、データ要素B2は、メモリインデックス値231によって示される限定範囲におけるロケーションに書き込むことができ、他のデータ要素についても以下同様である。図示した例では、メモリインデックス値20のデータ要素B3及びメモリインデックス値30のデータ要素B7は、スキャッターを実行することができないようにマスクアウトされている。これは、この説明図では、メモリインデックス値20及びメモリインデックス値30に対応するロケーションにおけるアスタリスク(*)によって示されている。幾つかの場合には、これらのメモリロケーションは、スキャッター演算前のそれらの既存の値を有する場合がある(例えば、スキャッター演算によって変更されない場合がある)。
幾つかの実施形態では、256バイトの限定範囲のうちの4つの512ビットの重ならない部分をそれぞれロードする4つの512ビットロードを用いて、256バイトの限定範囲820全体をプロセッサ内にロードすることができる。図示するように、幾つかの実施形態では、256ビットのロードされた限定範囲全体は、4つの512ビットレジスタにストアすることもできるし、代替的に8つの256ビットレジスタ又は2つの1024ビットレジスタにストアすることもできる。アーキテクチャ的又は非アーキテクチャ的な専用化されたレジスタ又は存在するレジスタを含めて、任意のオンプロセッサ記憶ロケーションが潜在的に好適である。別のオプションとして、512ビットロードではなく、それよりも狭い(例えば、128ビット、256ビット等)又はそれよりも広い(例えば、1024ビット)ロードをオプションとして用いることができる。その上、必要なデータ要素が、限定範囲の所与の部分内にない場合、これらのロードのうちの1つ又は複数をオプションとして省略することができる。
256ビットレジスタYMM0〜YMM15は、256ビットパックドデータ又は128ビットパックドデータを保持するように動作可能である。128ビットレジスタXMM0及びXMM1は、128ビットパックドデータを保持するように動作可能である。これらのレジスタのそれぞれは、パックド浮動小数点データ又はパックド整数データのいずれかをストアするのに用いることができる。少なくとも8ビットのバイトデータと、16ビットのワードデータと、32ビットのダブルワードデータ又は単精度浮動小数点データと、64ビットのクワッドワードデータ又は倍精度浮動小数点データとを含む種々のデータ要素サイズがサポートされる。パックドデータレジスタの代替の実施形態は、異なる数のレジスタ、異なるサイズのレジスタを含むことができ、小さい方のレジスタ上に大きい方のレジスタをエイリアスする場合もあるし、しない場合もある。
本明細書において説明する命令(複数の場合もある)の実施形態は、種々のフォーマットで具現化することができる。加えて、例示的なシステム、アーキテクチャ、及びパイプラインが以下に詳述される。命令(複数の場合もある)の実施形態は、そのようなシステム、アーキテクチャ、及びパイプライン上で実行することができるが、詳述されるものに限定されるものではない。
VEXエンコードによって、命令が3つ以上のオペランドを有することが可能になり、SIMDベクトルレジスタを128ビットよりも長くすることが可能になる。VEXプレフィックスの使用によって、3オペランド(又はそれよりも多くのオペランド)シンタックスが提供される。例えば、これまでの2オペランド命令は、ソースオペランドを上書きするA=A+B等の演算を実行していた。VEXプレフィックスの使用によって、オペランドは、A=B+C等の非消去的な演算を実行することが可能になる。
オペコードマップフィールド1215(VEXバイト1、ビット[4:0]−mmmmm)は、暗黙のリーディングオペコードバイトをエンコードするコンテンツを含む。Wフィールド1264(VEXバイト2、ビット[7]−W)は、VEX.Wという表記によって表され、命令に応じて異なる機能を提供する。VEX.vvvv1220(VEXバイト2、ビット[6:3]−vvvv)の役割は、次のもの、すなわち、1)VEX.vvvvが、反転された(1の補数)形式で指定された第1のソースレジスタオペランドをエンコードし、2つ以上のソースオペランドを有する命令に有効であること、2)VEX.vvvvが、或る特定のベクトルシフトについて1の補数の形式で指定されたデスティネーションレジスタオペランドをエンコードすること、又は3)VEX.vvvvがどのオペランドもエンコードしないこと、を含むことができ、このフィールドは予約され、1111bを含むべきであるる。VEX.L1268のサイズフィールド(VEXバイト2、ビット[2]−L)=0である場合、これは、128ビットベクトルを示す。VEX.L=1である場合、これは、256ビットベクトルを示す。プレフィックスエンコードフィールド1225(VEXバイト2、ビット[1:0]−pp)は、ベース演算フィールド用の追加のビットを提供する。
ベクトルフレンドリー命令フォーマットは、ベクトル命令に適した命令フォーマットである(例えば、ベクトル演算に特有のある特定のフィールドが存在する)。ベクトル演算及びスカラー演算の双方がベクトルフレンドリー命令フォーマットを通じてサポートされる実施形態が説明されるが、代替的な実施形態は、ベクトルフレンドリー命令フォーマットを通じてベクトル演算のみを用いる。
この機能のサブセットは、実行されている演算のベクトル長を制御する能力である(すなわち、要素のスパンが最初のものから最後のものに変更される)。しかしながら、変更される要素が連続的であることは必要ではない。したがって、書き込みマスクフィールド1370によって、ロード、ストア、算術、論理等を含む部分的なベクトル演算が可能になる。書き込みマスクフィールド1370の内容が、用いられる書き込みマスクを含む複数の書き込みマスクレジスタのうちの1つを選択する(したがって、書き込みマスクフィールド1370の内容が実行されるそのマスキングを間接的に識別する)本発明の実施形態が説明されているが、代替的な実施形態は、その代わりに又は付加的に、マスク書き込みフィールド1370の内容が実行されるマスキングを直接指定することを可能にする。
クラスAの非メモリアクセス1305の命令テンプレートの場合、アルファフィールド1352は、RSフィールド1352Aとして解釈され、その内容は、異なる増大演算タイプのうちのいずれが実行されるのかを区別する(例えば、ラウンド1352A.1及びデータ変換1352A.2は、それぞれ、無メモリアクセスのラウンドタイプ演算1310及び無メモリアクセスのデータ変換タイプ演算1315の命令テンプレートについて指定される)一方、ベータフィールド1354は、指定されたタイプの演算のうちのいずれが実行されるのかを区別する。無メモリアクセス1305の命令テンプレートでは、スケールフィールド1360、変位フィールド1362A、及び変位スケールフィールド1362Bは存在しない。
クラスBの命令テンプレートの場合、アルファフィールド1352は、書き込みマスク制御(Z)フィールド1352Cとして解釈され、その内容は、書き込みマスクフィールド1370によって制御される書き込みマスキングがマージングであるのか又はゼロイングであるのかを区別する。
例えば、別々のグラフィックスコア及び汎用コアを有するプロセッサでは、主としてグラフィックス及び/又は科学(スループット)コンピューティングを対象としたグラフィックスコアのうちの1つは、クラスAのみをサポートすることができる一方、汎用コアのうちの1つ又は複数は、クラスBのみをサポートする汎用コンピューティングを対象としたアウトオブオーダー実行及びレジスタリネームを有する高性能汎用コアとすることができる。別個のグラフィックスコアを有しない別のプロセッサは、クラスA及びクラスBの双方をサポートする1つ又は複数の汎用インオーダーコア又はアウトオブオーダーコアを備えることができる。もちろん、一方のクラスからの特徴は、本発明の異なる実施形態では他方のクラスにおいて実施することもできる。高水準言語で記述されるプログラムは、様々な異なる実行可能形態にされる(例えば、実行時にコンパイルされるか又は静的にコンパイルされる)。この実行可能形態には、1)実行用にターゲットプロセッサによってサポートされるクラス(複数の場合もある)の命令のみを有する形態、又は2)全てのクラスの命令の種々の組み合わせを用いて記述された代替的なルーチンを有するとともに、コードを現在実行しているプロセッサによってサポートされる命令に基づいて実行するルーチンを選択する制御フローコードを有する形態、が含まれる。
図14AからDは、本発明の実施形態による例示的な具体的なベクトルフレンドリー命令フォーマットを示すブロック図である。図14AからDは、ロケーション、サイズ、解釈、及びフィールドの順序、並びにそれらのフィールドの幾つかの値を指定しているという意味で具体的である、具体的なベクトルフレンドリー命令フォーマット1400を示している。具体的なベクトルフレンドリー命令フォーマット1400は、x86命令セットを拡張するのに用いることができ、したがって、フィールドのうちの幾つかは、既存のx86命令セット及びその拡張(例えば、AVX)において用いられるものと同様又は同じである。このフォーマットは、拡張を有する既存のx86命令セットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、及び即値フィールドと一致が保たれている。図14AからDからのフィールドがマッピングする図13A、Bからのフィールドが示されている。
図14Bは、本発明の1つの実施形態によるフルオペコードフィールド1374を構成する具体的なベクトルフレンドリー命令フォーマット1400のフィールドを示すブロック図である。具体的には、フルオペコードフィールド1374は、フォーマットフィールド1340、ベース演算フィールド1342、及びデータ要素幅(W)フィールド1364を含む。ベース演算フィールド1342は、プレフィックスエンコードフィールド1425、オペコードマップフィールド1415、及びリアルオペコードフィールド1430を含む。
図14Cは、本発明の1つの実施形態によるレジスタインデックスフィールド1344を構成する具体的なベクトルフレンドリー命令フォーマット1400のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド1344は、REXフィールド1405、REX'フィールド1410、MODR/M.regフィールド1444、MODR/M.r/mフィールド1446、VVVVフィールド1420、xxxフィールド1454、及びbbbフィールド1456を含む。
図14Dは、本発明の1つの実施形態による増大演算フィールド1350を構成する具体的なベクトルフレンドリー命令フォーマット1400のフィールドを示すブロック図である。クラス(U)フィールド1368は、0を含むとき、これは、EVEX.U0(クラスA1368A)を示す。このフィールドが1を含むとき、これは、EVEX.U1(クラスB1368B)を示す。U=0であり、MODフィールド1442が11(無メモリアクセス演算を示す)を含むとき、アルファフィールド1352(EVEXバイト3、ビット[7]−EH)は、rsフィールド1352Aとして解釈される。rsフィールド1352Aが1(ラウンド1352A.1)を含むとき、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、ラウンド制御フィールド1354Aとして解釈される。ラウンド制御フィールド1354Aは、1ビットSAEフィールド1356及び2ビットラウンド演算フィールド1358を含む。rsフィールド1352Aが0(データ変換1352A.2)を含むとき、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、3ビットデータ変換フィールド1354Bとして解釈される。U=0であり、MODフィールド1442が00、01、又は10(メモリアクセス演算を示す)とき、アルファフィールド1352(EVEXバイト3、ビット[7]−EH)は、エビクションヒント(EH)フィールド1352Bとして解釈され、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、3ビットデータ操作フィールド1354Cとして解釈される。
図15は、本発明の1つの実施形態によるレジスタアーキテクチャ1500のブロック図である。図示した実施形態には、512ビット幅である32個のベクトルレジスタ1510が存在する。これらのレジスタは、zmm0〜zmm31として参照される。下位の16個のzmmレジスタの低順序の256ビットは、レジスタymm0〜ymm16の上に重ねられている。下位の16個のzmmレジスタの低順序の128ビット(ymmレジスタの低順序の128ビット)は、レジスタxmm0〜xmm15の上に重ねられている。特定のベクトルフレンドリー命令フォーマット1400は、以下の表に示すように、これらの重ねられたレジスタファイルに対して演算を行う。
プロセッサコアは、種々の目的で種々のプロセッサにおいて種々の方法で実施することができる。例えば、そのようなコアの実施態様は、1)汎用コンピューティングを対象とした汎用インオーダーコア、2)汎用コンピューティングを対象とした高性能汎用アウトオブオーダーコア、3)主としてグラフィックス及び/又は科学(スループット)コンピューティングを対象とした専用コアを含むことができる。種々のプロセッサの実施態様は、1)汎用コンピューティングを対象とした1つ若しくは複数の汎用インオーダーコア及び/又は汎用コンピューティングを対象とした1つ若しくは複数の汎用アウトオブオーダーコアを備えるCPU、並びに2)主としてグラフィックス及び/又は科学(スループット)を対象とした1つ又は複数の専用コアを備えるコプロセッサを含むことができる。そのような種々のプロセッサは、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同じパッケージ内にある別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスロジック及び/又は科学(スループット)ロジック等の専用ロジック又は専用コアと呼ばれることがある)、並びに4)説明したCPU(アプリケーションコア(複数の場合もある)又はアプリケーションプロセッサ(複数の場合もある)と呼ばれることがある)、上述したコプロセッサ、及び追加の機能と同じダイ上に備えることができるシステムオンチップ、を備えることができる種々のコンピューターシステムアーキテクチャをもたらす。例示的なコアアーキテクチャを次に説明し、その後に例示的なプロセッサ及びコンピューターアーキテクチャを説明する。
インオーダーコア及びアウトオブオーダーコアのブロック図
図16Aは、本発明の実施形態による例示的なインオーダーパイプライン及び例示的なレジスタリネームアウトオブオーダー発行/実行パイプラインの双方を示すブロック図である。図16Bは、本発明の実施形態によるプロセッサに含まれる、インオーダーアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネームアウトオブオーダー発行/実行アーキテクチャコアの双方を示すブロック図である。図16A及び図16Bにおける実線のボックスは、インオーダーパイプライン及びインオーダーコアを示している一方、破線のボックスのオプションの追加は、レジスタリネームアウトオブオーダー発行/実行パイプライン及びコアを示している。インオーダーの態様はアウトオブオーダーの態様のサブセットであることから、アウトオブオーダーの態様を説明することにする。
これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供することができる。物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1658は、(例えば、リオーダーバッファー(複数の場合もある)及びリタイアメントレジスタファイル(複数の場合もある)を用いる;フューチャーファイル(複数の場合もある)、履歴バッファー(複数の場合もある)、及びリタイアメントレジスタファイル(複数の場合もある)を用いる;レジスタマップ及びレジスタのプールを用いる等して)レジスタリネーム及びアウトオブオーダー実行を実施することができる様々な方法を示すリタイアメントユニット1654によって重ね合わされる。リタイアメントユニット1654及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1658は、実行クラスター(複数の場合もある)1660に結合されている。実行クラスター(複数の場合もある)1660は、一組の1つ又は複数の実行ユニット1662及び一組の1つ又は複数のメモリアクセスユニット1664を備える。実行ユニット1662は、様々なタイプのデータ(例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して様々な演算(例えば、シフト、加算、減算、乗算)を実行することができる。
幾つかの実施形態は、特定の機能又は特定の数組の機能に専用の複数の実行ユニットを備えることができるが、他の実施形態は、全ての機能を全て実行する1つの実行ユニットのみ又は複数の実行ユニットを備えることができる。スケジューラユニット(複数の場合もある)1656、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1658、及び実行クラスター(複数の場合もある)1660は、場合によっては複数のものとして示される。なぜならば、或る特定の実施形態は、或る特定のタイプのデータ/演算用の別々のパイプライン(例えば、それぞれがそれ自体のスケジューラユニット、物理レジスタファイル(複数の場合もある)ユニット、及び/又は実行クラスターを有するスカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプライン。別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターのみがメモリアクセスユニット(複数の場合もある)1664を有する或る特定の実施形態が実施される)を作成するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの1つ又は複数はアウトオブオーダー発行/実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
図17A及び図17Bは、より具体的な例示的インオーダーコアアーキテクチャのブロック図を示している。このコアは、チップ内の幾つかの論理ブロック(同じタイプ及び/又は異なるタイプの他のコアを含む)のうちの1つである。これらの論理ブロックは、アプリケーションに応じて、或る固定機能ロジック、メモリI/Oインターフェース、及び他の必要なI/Oロジックと、高帯域幅相互接続ネットワーク(例えば、リングネットワーク)を通じて通信する。
図18は、本発明の実施形態による、2つ以上のコアを有することができ、統合メモリコントローラーを有することができ、統合グラフィックスを有することができるプロセッサ1800のブロック図である。図18における実線のボックスは、単一のコア1802Aと、システムエージェント1810と、一組の1つ又は複数のバスコントローラーユニット1816とを有するプロセッサ1800を示している一方、破線のボックスのオプションの追加は、複数のコア1802A〜1802Nと、システムエージェントユニット1810内の一組の1つ又は複数の統合メモリコントローラーユニット1814と、専用ロジック1808とを有する代替のプロセッサ1800を示している。
図19〜図22は、例示的なコンピューターアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラー、携帯電話、ポータブルメディアプレイヤー、ハンドヘルドデバイス、及び他の様々な電子デバイスについて当該技術分野において知られている他のシステム設計及び構成も適している。概して、本明細書において開示されるようなプロセッサ及び/又は他の実行ロジックを組み込むことができる非常に多くの様々なシステム又は電子デバイスが一般に適している。
場合によっては、命令変換器を用いて、命令をソース命令セットからターゲット命令セットに変換することができる。例えば、命令変換器は、命令を、コアによって処理される1つ又は複数の他の命令に変換(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いる)、モーフィング、エミュレート、又は別の方法で変換することができる。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組合せで実施することができる。命令変換器は、オンプロセッサ、オフプロセッサ、又は一部分がオンプロセッサ及び一部分がオフプロセッサとすることができる。
x86コンパイラー2304は、追加のリンク処理の有無を問わず、少なくとも1つのx86命令セットコア2316を有するプロセッサ上で実行することができるx86バイナリコード2306(例えば、オブジェクトコード)を生成するように動作可能なコンパイラーを表している。同様に、図23は、高水準言語2302によるプログラムを、代替の命令セットコンパイラー2308を用いてコンパイルして代替の命令セットバイナリコード2310を生成することができることを示している。この代替の命令セットバイナリコードは、少なくとも1つのx86命令セットコア2314を有しないプロセッサ(例えば、カリフォルニア州サニーベールのMIPS Technologies社のMIPS命令セットを実行するコアを有するプロセッサ及び/又はカリフォルニア州サニーベールのARM Holdings社のARM命令セットを実行するコアを有するプロセッサ)が本来的に実行することができるものである。命令変換器2312は、x86バイナリコード2306を、x86命令セットコア2314を有しないプロセッサが本来的に実行することができるコードに変換するのに用いられる。この変換されたコードは、代替の命令セットバイナリコード2310と同じである可能性は低い。なぜならば、これを行うことができる命令変換器は、作製が困難であるからである。しかしながら、変換されたコードは、一般的な演算を達成し、代替の命令セットからの命令で構成される。したがって、命令変換器2312は、エミュレーション、シミュレーション、又は他の任意のプロセスを通じて、x86命令セットプロセッサもコアも有しないプロセッサ又は他の電子デバイスがx86バイナリコード2306を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せを表している。
以下の例は、更なる実施形態に関する。それらの例における細部は、1つ又は複数の実施形態における任意の箇所に用いることができる。
Claims (25)
- 複数のパックドデータレジスタと、
前記複数のパックドデータレジスタと結合されたユニットであって、8ビットメモリインデックス及び16ビットメモリインデックスから選択された複数のパックドメモリインデックスを有するソースパックドメモリインデックスを示す限定範囲ベクトルメモリアクセス命令に応答して動作可能であり、前記限定範囲ベクトルメモリアクセス命令に応答してメモリの限定範囲内のみのメモリロケーションにアクセスするように動作可能であるユニットと、
を備える、プロセッサ。 - 前記限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックスを含む前記ソースパックドメモリインデックスを示す、請求項1に記載のプロセッサ。
- 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、256バイトのみを含む前記限定範囲内のメモリロケーションにアクセスする、請求項1または2に記載のプロセッサ。
- 前記限定範囲ベクトルメモリアクセス命令は、少なくとも32個のメモリインデックスを含む前記ソースパックドメモリインデックスを示す、請求項1から3のいずれか一項に記載のプロセッサ。
- 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、少なくとも32ビットのメモリアドレスを有する前記メモリの前記限定範囲にアクセスする、請求項1から4のいずれか一項に記載のプロセッサ。
- 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、
前記メモリインデックスのそれぞれを符号拡張し、
前記符号拡張されたメモリインデックスのそれぞれにスケールファクターを適用する、
請求項5に記載のプロセッサ。 - 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記複数のパックドメモリインデックスのうちの一メモリインデックスによって示されるメモリアドレスにおける少なくとも1つのデータ要素と、前記複数のパックドメモリインデックスのうちの一メモリインデックスによって示されないメモリアドレスにおける少なくとも1つのデータ要素とをロードする多重データ要素ロードを実行する、請求項1から6のいずれか一項に記載のプロセッサ。
- 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記メモリから前記プロセッサの記憶ロケーションに前記限定範囲全体をロードする、請求項1から7のいずれか一項に記載のプロセッサ。
- 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、
複数のデータ要素をロードする多重データ要素ロードを実行し、
(a)前記限定範囲ベクトルメモリアクセス命令がパックドデータ演算マスクを示していないとき、及び(b)前記限定範囲ベクトルメモリアクセス命令がパックドデータ演算マスクを示しているが、該パックドデータ演算マスクの対応するマスク要素がマスクされていないときの一方であるとき、複数のロードされた前記データ要素のうちの第2のものを前記限定範囲ベクトルメモリアクセス命令によって示されるデスティネーション記憶ロケーションにストアすることなく、前記複数のロードされたデータ要素のうちの第1のものを前記デスティネーション記憶ロケーションにストアする、
請求項1から8のいずれか一項に記載のプロセッサ。 - 前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記メモリから前記プロセッサの記憶ロケーションに前記限定範囲全体をロードし、前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記メモリインデックスに基づいて前記限定範囲ベクトルメモリアクセス命令によって示されるデスティネーション記憶ロケーションに前記限定範囲全体のデータ要素のサブセットを選択的に移動させる、請求項1から9のいずれか一項に記載のプロセッサ。
- 前記限定範囲ベクトルメモリアクセス命令は、デスティネーション記憶ロケーションを示し、前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、パックドデータ結果を前記デスティネーション記憶ロケーションにストアし、前記パックドデータ結果は、それぞれ対応するメモリインデックスによって示される前記限定範囲内のメモリロケーションからの複数のデータ要素を有する、請求項1から10のいずれか一項に記載のプロセッサ。
- 前記限定範囲ベクトルメモリアクセス命令は、複数のデータ要素を有するソースパックドデータを示し、前記ユニットは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記ソースパックドデータの前記複数のデータ要素の各データ要素を、対応するメモリインデックスによって示される前記限定範囲内のメモリロケーションに書き込む、請求項1から11のいずれか一項に記載のプロセッサ。
- 前記限定範囲ベクトルメモリアクセス命令は、パックドデータ演算マスクを示す、請求項1から12のいずれか一項に記載のプロセッサ。
- 限定範囲ベクトルメモリアクセス命令を受信することであって、該限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックス及び16ビットメモリインデックスから選択された複数のパックドメモリインデックスを有するソースパックドメモリインデックスを示すことと、
前記限定範囲ベクトルメモリアクセス命令に応答して、メモリの限定範囲内のみのメモリロケーションにアクセスすることと、
を含む、プロセッサにおける方法。 - 前記受信することは、8ビットメモリインデックスを含む前記ソースパックドメモリインデックスを示す前記限定範囲ベクトルメモリアクセス命令を受信することを含む、請求項14に記載の方法。
- 前記アクセスすることは、256バイトからなる前記限定範囲内のメモリロケーションにアクセスすることを含む、請求項14または15に記載の方法。
- 前記受信することは、デスティネーション記憶ロケーションを示す前記限定範囲ベクトルメモリアクセス命令を受信することを含み、前記方法は、前記限定範囲ベクトルメモリアクセス命令に応答して、パックドデータ結果を前記デスティネーション記憶ロケーションにストアすることを更に含み、前記パックドデータ結果は、それぞれ対応するメモリインデックスによって示される前記限定範囲内のメモリロケーションからの複数のデータ要素を有する、請求項14から16のいずれか一項に記載の方法。
- 前記受信することは、複数のデータ要素を有するソースパックドデータを示す前記限定範囲ベクトルメモリアクセス命令を受信することを含み、前記アクセスすることは、前記限定範囲ベクトルメモリアクセス命令に応答して、前記ソースパックドデータの前記複数のデータ要素の各データ要素を、対応するメモリインデックスによって示される前記限定範囲内のメモリロケーションに書き込むことを含む、請求項14から17のいずれか一項に記載の方法。
- 前記アクセスすることは、少なくとも32ビットメモリアドレスを用いてアクセスすることを含む、請求項14から18のいずれか一項に記載の方法。
- 前記アクセスすることは、前記複数のパックドメモリインデックスのうちの一メモリインデックスによって示されるメモリアドレスにおける少なくとも1つのデータ要素と、前記複数のパックドメモリインデックスのうちの一メモリインデックスによって示されないメモリアドレスにおける少なくとも1つのデータ要素とをロードすることを含む多重データ要素ロードを実行することを含む、請求項14から19のいずれか一項に記載の方法。
- 複数のデータ要素をロードする多重データ要素ロードを実行することと、
(a)前記限定範囲ベクトルメモリアクセス命令がパックドデータ演算マスクを用いないとき、及び(b)前記限定範囲ベクトルメモリアクセス命令がパックドデータ演算マスクを用いるが、該パックドデータ演算マスクの対応するマスク要素がマスクされていないときの一方であるとき、複数のロードされた前記データ要素のうちの第2のものを前記限定範囲ベクトルメモリアクセス命令によって示されたデスティネーション記憶ロケーションにストアすることなく、前記複数のロードされたデータ要素のうちの第1のものを前記デスティネーション記憶ロケーションにストアすることと、
を更に含む、請求項14から20のいずれか一項に記載の方法。 - 命令を処理するシステムであって、
相互接続部と、
前記相互接続部と結合されたプロセッサと、
前記相互接続部と結合されたダイナミックランダムアクセスメモリ(DRAM)と
を備え、
該DRAMは、限定範囲ベクトルメモリアクセス命令をストアし、該限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックス及び16ビットメモリインデックスから選択された複数のパックドメモリインデックスを有するソースパックドメモリインデックスを示し、前記限定範囲ベクトルメモリアクセス命令は、前記プロセッサによって実行されると、メモリの限定範囲内のみのメモリロケーションにアクセスすることを含む演算を前記プロセッサに実行させるように動作可能である、システム。 - 前記限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックスを含む前記ソースパックドメモリインデックスを示し、前記限定範囲ベクトルメモリアクセス命令は、前記プロセッサによって実行されると、前記プロセッサに、少なくとも32ビットのメモリアドレスを有する前記限定範囲にアクセスさせるように動作可能である、請求項22に記載のシステム。
- 機械により実行されると、
限定範囲ベクトルメモリアクセス命令をストアする手順と、
該限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックス及び16ビットメモリインデックスから選択された複数のパックドメモリインデックスを有するソースパックドメモリインデックスを示し、前記限定範囲ベクトルメモリアクセス命令は、モリの限定範囲内のみのメモリロケーションにアクセスする手順と
を前記機械に実行させる、プログラム。 - 前記限定範囲ベクトルメモリアクセス命令は、8ビットメモリインデックスを含む前記ソースパックドメモリインデックスを示し、該ソースパックドメモリインデックスは、少なくとも32個のメモリインデックスを含む、請求項24に記載のプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/838,544 | 2013-03-15 | ||
US13/838,544 US9244684B2 (en) | 2013-03-15 | 2013-03-15 | Limited range vector memory access instructions, processors, methods, and systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014182807A true JP2014182807A (ja) | 2014-09-29 |
JP5926754B2 JP5926754B2 (ja) | 2016-05-25 |
Family
ID=50554630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014042958A Active JP5926754B2 (ja) | 2013-03-15 | 2014-03-05 | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム |
Country Status (6)
Country | Link |
---|---|
US (3) | US9244684B2 (ja) |
JP (1) | JP5926754B2 (ja) |
KR (2) | KR101599604B1 (ja) |
CN (1) | CN104049943B (ja) |
DE (1) | DE102014003706A1 (ja) |
GB (1) | GB2513970B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018502364A (ja) * | 2014-12-11 | 2018-01-25 | インテル・コーポレーション | 実行のためのデータ要素の読み込みにおいて空間的局所性を考慮する装置および方法 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10754977B2 (en) * | 2014-09-25 | 2020-08-25 | Micro Focus Llc | Report comprising a masked value |
US9582422B2 (en) | 2014-12-24 | 2017-02-28 | Intel Corporation | Hardware prefetcher for indirect access patterns |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
KR102248846B1 (ko) * | 2015-11-04 | 2021-05-06 | 삼성전자주식회사 | 데이터를 병렬 처리하는 방법 및 이를 위한 장치 |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US20170185402A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Instructions and logic for bit field address and insertion |
CN105739919B (zh) * | 2016-01-21 | 2018-10-12 | 捷鼎创新股份有限公司 | 资料存取系统及方法 |
US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
US10838734B2 (en) * | 2018-09-24 | 2020-11-17 | Intel Corporation | Apparatus and method for processing structure of arrays (SoA) and array of structures (AoS) data |
US11237970B2 (en) * | 2018-11-07 | 2022-02-01 | Micron Technology, Inc. | Reduce data traffic between cache and memory via data access of variable sizes |
US20200364047A1 (en) * | 2019-05-16 | 2020-11-19 | Facebook, Inc. | High throughput neural network operations using inter-layer memory layout transformation |
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 |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
CN112559037B (zh) * | 2019-09-25 | 2024-04-12 | 阿里巴巴集团控股有限公司 | 一种指令执行方法、单元、装置及系统 |
CN113626081A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
TW202215238A (zh) * | 2020-09-02 | 2022-04-16 | 美商賽發馥股份有限公司 | 集中-分散操作記憶體保護 |
CN112860318A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0644292A (ja) * | 1992-06-18 | 1994-02-18 | Nec Corp | ベクトル処理装置 |
JPH0962654A (ja) * | 1995-08-22 | 1997-03-07 | Kofu Nippon Denki Kk | リストベクトル処理装置 |
JPH09231347A (ja) * | 1996-02-22 | 1997-09-05 | Nec Corp | 画像処理装置 |
JP2004355597A (ja) * | 2003-03-28 | 2004-12-16 | Seiko Epson Corp | ベクトルデータのアドレス参照方法およびベクトルプロセッサ |
JP2011134318A (ja) * | 2009-12-22 | 2011-07-07 | Intel Corp | 複数のデータ・エレメントの収集及び分散 |
US20120151156A1 (en) * | 2010-12-08 | 2012-06-14 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
JP2014164667A (ja) * | 2013-02-27 | 2014-09-08 | Nec Corp | リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678807B2 (en) * | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
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 |
GB2461850A (en) | 2008-07-10 | 2010-01-20 | Cambridge Consultants | Memory management unit with address translation for a range defined by upper and lower limits |
US8656082B2 (en) | 2008-08-05 | 2014-02-18 | Micron Technology, Inc. | Flexible and expandable memory architectures |
US8458284B2 (en) * | 2009-06-12 | 2013-06-04 | International Business Machines Corporation | Systems and methods for efficient live application migration within bandwidth constrained networks |
US8230172B2 (en) | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
JP5573134B2 (ja) | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
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 |
US9001138B2 (en) | 2011-08-29 | 2015-04-07 | Intel Corporation | 2-D gather instruction and a 2-D cache |
GB2508533B (en) | 2011-09-26 | 2020-01-01 | Intel Corp | Instruction and logic to provide vector scatter-op and gather-op functionality |
WO2013095672A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Multi-register gather instruction |
EP2831692A1 (en) * | 2012-03-30 | 2015-02-04 | Intel Corporation | Apparatus and method for selecting elements of a vector coumputation |
US8972697B2 (en) | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
US9355068B2 (en) * | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
US9785436B2 (en) | 2012-09-28 | 2017-10-10 | Intel Corporation | Apparatus and method for efficient gather and scatter operations |
KR20150064197A (ko) | 2012-12-26 | 2015-06-10 | 인텔 코포레이션 | 인접한 수집/분산 연산들의 통합 |
-
2013
- 2013-03-15 US US13/838,544 patent/US9244684B2/en active Active
-
2014
- 2014-03-05 JP JP2014042958A patent/JP5926754B2/ja active Active
- 2014-03-06 GB GB1403976.2A patent/GB2513970B/en active Active
- 2014-03-13 DE DE102014003706.1A patent/DE102014003706A1/de not_active Ceased
- 2014-03-14 KR KR1020140030543A patent/KR101599604B1/ko active IP Right Grant
- 2014-03-17 CN CN201410097314.8A patent/CN104049943B/zh active Active
-
2015
- 2015-07-20 KR KR1020150102342A patent/KR20150091448A/ko not_active Application Discontinuation
- 2015-12-15 US US14/969,249 patent/US9448795B2/en active Active
-
2016
- 2016-08-30 US US15/251,796 patent/US20160371084A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0644292A (ja) * | 1992-06-18 | 1994-02-18 | Nec Corp | ベクトル処理装置 |
JPH0962654A (ja) * | 1995-08-22 | 1997-03-07 | Kofu Nippon Denki Kk | リストベクトル処理装置 |
JPH09231347A (ja) * | 1996-02-22 | 1997-09-05 | Nec Corp | 画像処理装置 |
JP2004355597A (ja) * | 2003-03-28 | 2004-12-16 | Seiko Epson Corp | ベクトルデータのアドレス参照方法およびベクトルプロセッサ |
JP2011134318A (ja) * | 2009-12-22 | 2011-07-07 | Intel Corp | 複数のデータ・エレメントの収集及び分散 |
US20120151156A1 (en) * | 2010-12-08 | 2012-06-14 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
JP2014164667A (ja) * | 2013-02-27 | 2014-09-08 | Nec Corp | リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018502364A (ja) * | 2014-12-11 | 2018-01-25 | インテル・コーポレーション | 実行のためのデータ要素の読み込みにおいて空間的局所性を考慮する装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
US9448795B2 (en) | 2016-09-20 |
JP5926754B2 (ja) | 2016-05-25 |
KR20150091448A (ko) | 2015-08-11 |
GB2513970B (en) | 2016-03-09 |
KR101599604B1 (ko) | 2016-03-03 |
CN104049943A (zh) | 2014-09-17 |
KR20140113556A (ko) | 2014-09-24 |
US20140281425A1 (en) | 2014-09-18 |
US20160371084A1 (en) | 2016-12-22 |
US20160170749A1 (en) | 2016-06-16 |
GB201403976D0 (en) | 2014-04-23 |
US9244684B2 (en) | 2016-01-26 |
CN104049943B (zh) | 2018-07-27 |
DE102014003706A1 (de) | 2014-09-18 |
GB2513970A (en) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5926754B2 (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
JP6238497B2 (ja) | プロセッサ、方法、及びシステム | |
JP5918287B2 (ja) | 演算マスクのマスクされていない要素をコンソリデートする命令処理装置、方法、システム、及びプログラム | |
JP6371855B2 (ja) | プロセッサ、方法、システム、プログラム、及び非一時的機械可読記憶媒体 | |
JP6163171B2 (ja) | ソート加速プロセッサ、方法、システムおよび命令 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP5829714B2 (ja) | マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム | |
KR20170097018A (ko) | 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법 | |
JP2018500656A (ja) | 1組のベクトル要素にリダクション演算を実行する方法及び装置 | |
JP6708334B2 (ja) | モートン座標調整プロセッサ、方法、システム、及び命令 | |
JP6419205B2 (ja) | プロセッサ、方法、システム、コンピュータシステム、およびコンピュータ可読記憶媒体 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
JP2017529601A (ja) | ビットシャッフルプロセッサ、方法、システム、および命令 | |
JP2018500658A (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP2017529597A (ja) | ビット群インターリーブプロセッサ、方法、システムおよび命令 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
JP2017539016A (ja) | 結合した乗算−乗算命令のための装置および方法 | |
KR102528073B1 (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
JP2018506762A (ja) | 結合した加算−加算命令のための装置および方法 | |
KR20170097613A (ko) | 벡터 수평 로직 명령어를 위한 장치 및 방법 | |
JP2018503162A (ja) | スピンループジャンプを実行するための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150415 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150428 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150724 |
|
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: 20160223 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160323 |
|
R155 | Notification before disposition of declining of application |
Free format text: JAPANESE INTERMEDIATE CODE: R155 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160422 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5926754 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |