JP2014199663A - マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム - Google Patents
マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム Download PDFInfo
- Publication number
- JP2014199663A JP2014199663A JP2014058424A JP2014058424A JP2014199663A JP 2014199663 A JP2014199663 A JP 2014199663A JP 2014058424 A JP2014058424 A JP 2014058424A JP 2014058424 A JP2014058424 A JP 2014058424A JP 2014199663 A JP2014199663 A JP 2014199663A
- Authority
- JP
- Japan
- Prior art keywords
- packed data
- operand
- data
- narrow
- mask
- 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
- 238000000034 method Methods 0.000 title claims description 66
- 230000036961 partial effect Effects 0.000 title description 100
- 238000012545 processing Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 7
- 230000015654 memory Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 48
- 230000000873 masking effect Effects 0.000 description 23
- 230000004044 response Effects 0.000 description 20
- 238000007667 floating Methods 0.000 description 18
- 238000007792 addition Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000013459 approach Methods 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
- 230000010076 replication Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 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
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
Abstract
【解決手段】デコーダユニットは第1の狭いソースパックドデータオペランド及びデスティネーションオペランドを示すパックドデータ命令を、第1の狭いソースオペランドよりも広く当該第1の狭いソースオペランドを含む広いソースパックドデータオペランド及びデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする。このマスクされたパックドデータ演算に対応するパックドデータ演算マスクが生成される。マスクされた演算は、パックドデータ演算マスクを用いて実行される。パックドデータ命令の演算結果は、広いデスティネーションオペランドにストアされる。
【選択図】図1
Description
この説明図では、第1の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値A1,A2,A3,A4,A5,A6...A16を有する。この説明図では、第2の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値B1,B2,B3,B4,B5,B6...B16を有する。2つのソースパックドデータ内の同じ相対ビット位置(例えば、図示した同じ垂直位置)におけるソースデータ要素が、対応するデータ要素の対を表す。他の実施形態では、他の任意の適切な広いソースパックドデータ幅及び狭いソースパックドデータ幅を代わりに用いることができる(例えば、32ビット、64ビット、128ビット、又は256ビットの狭い幅を有する128ビット、256ビット、又は1024ビットの広い幅)。その上、他の実施形態では、例えば、幾つか例を挙げると、8ビットバイト、16ビットワード、又は64ビットダブルワード若しくは倍精度浮動小数点等の32ビット以外の他のデータ要素幅をオプションとして用いることができる。
他の全てのマスクビットはクリアされる。クリアされたマスクビットのそれぞれについて、第1の広いソースパックドデータ923−1からの対応するデータ要素の値はデスティネーションオペランド925にストアされる。詳細には、値A1は、デスティネーションオペランドのビット63:0にストアされ、値A3は、デスティネーションオペランドのビット191:128にストアされ、値A4は、デスティネーションオペランドのビット255:192にストアされる。これらの他のマスクビットは、オリジナルの部分レジスタアクセス命令/演算による単一の和A2+B2に関係していないので、マスクアウトされている。利点として、これらのクリアされた最上位マスクビットを用いて、オリジナルの部分レジスタアクセス命令(例えば、図8の命令/演算)に必要とされない広い256ビットレジスタのその部分をマスクアウトすることができ、部分レジスタアクセスの代わりにフルレジスタアクセスの実行を可能にすることができる。既に述べたように、多くの他の算術演算及び/又は論理演算も好適である。
詳細には、値A1はデスティネーションオペランドのビット63:0にストアされ、値A3はデスティネーションオペランドのビット191:128にストアされ、値A4はデスティネーションオペランドのビット255:192にストアされる。これらの他のマスクビットは、オリジナルの部分レジスタアクセス命令/演算による単一の和A2+B1に関係していないのでマスクアウトされている。利点として、これらのクリアされた最上位マスクビットは、オリジナルの部分レジスタアクセス命令(例えば、図10の命令/演算)に必要とされない広い256ビットレジスタの部分をマスクアウトするとともに部分レジスタアクセスの代わりにフルレジスタアクセスの実行を可能にするのに用いることができる。既に述べたように、加算以外の他の多くの算術演算及び/又は論理演算が、同様に/代替的に好適である。
パックドデータ幅が512ビットであり、データ要素幅が16ビットであるとき、32ビットのみがマスキングに用いられる。パックドデータ幅が512ビットであり、データ要素幅が8ビットであるとき、64ビット全てがマスキングに用いられる。プレディケートされた命令は、この命令に関連付けられたパックドデータ幅及びデータ要素幅に基づいて、マスキングに必要なビットのサブセット(例えば、ビットの下位順序又は最下位のサブセット)のみにアクセスすることができ及び/又はそのビットのサブセットを利用することができる。図示した実施形態では、レジスタの最低順序のサブセット又は部分がマスキングに用いられるが、これは必須ではない。代替の実施形態では、最高順序のサブセット又は他の或るサブセットをオプションとして用いることができる。その上、図示した実施形態では、512ビットのパックドデータ幅のみが考慮されているが、同じ原理が、例えば、256ビット幅及び128ビット幅等の他のパックドデータ幅に適用される。
そのような種々のプロセッサは、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同じパッケージ内にある別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスロジック及び/又は科学(スループット)ロジック等の専用ロジック又は専用コアと呼ばれることがある)、並びに4)説明したCPU(アプリケーションコア(複数の場合もある)又はアプリケーションプロセッサ(複数の場合もある)と呼ばれることがある)、上述したコプロセッサ、及び追加の機能と同じダイ上に備えることができるシステムオンチップ、を備えることができる種々のコンピューターシステムアーキテクチャをもたらす。例示的なコアアーキテクチャを次に説明し、その後に例示的なプロセッサ及びコンピューターアーキテクチャを説明する。
物理レジスタファイル(複数の場合もある)ユニット1558のそれぞれは、1つ又は複数の物理レジスタファイルを表し、これらの物理レジスタファイルの異なるものは、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインター)等の1つ又は複数の異なるデータタイプをストアする。1つの実施形態では、物理レジスタファイル(複数の場合もある)ユニット1558は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラーレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供することができる。物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558は、(例えば、リオーダーバッファー(複数の場合もある)及びリタイアメントレジスタファイル(複数の場合もある)を用いる;フューチャーファイル(複数の場合もある)、履歴バッファー(複数の場合もある)、及びリタイアメントレジスタファイル(複数の場合もある)を用いる;レジスタマップ及びレジスタのプールを用いる等して)レジスタリネーム及びアウトオブオーダー実行を実施することができる様々な方法を示すリタイアメントユニット1554によって重ね合わされる。
リタイアメントユニット1554及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558は、実行クラスター(複数の場合もある)1560に結合されている。実行クラスター(複数の場合もある)1560は、一組の1つ又は複数の実行ユニット1562及び一組の1つ又は複数のメモリアクセスユニット1564を備える。実行ユニット1562は、様々なタイプのデータ(例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して様々な演算(例えば、シフト、加算、減算、乗算)を実行することができる。幾つかの実施形態は、特定の機能又は特定の数組の機能に専用の複数の実行ユニットを備えることができるが、他の実施形態は、全ての機能を全て実行する1つの実行ユニットのみ又は複数の実行ユニットを備えることができる。スケジューラユニット(複数の場合もある)1556、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558、及び実行クラスター(複数の場合もある)1560は、場合によっては複数のものとして示される。
なぜならば、或る特定の実施形態は、或る特定のタイプのデータ/演算用の別々のパイプライン(例えば、それぞれがそれ自体のスケジューラユニット、物理レジスタファイル(複数の場合もある)ユニット、及び/又は実行クラスターを有するスカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターのみがメモリアクセスユニット(複数の場合もある)1564を有する或る特定の実施形態が実施される)を作成するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの1つ又は複数はアウトオブオーダー発行/実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
このx86バイナリーコードは、少なくとも1つのx86命令セットコア2216を有するプロセッサが本来的に実行することができるものである。少なくとも1つのx86命令セットコア2216を有するプロセッサは、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ結果を達成するために、(1)Intel x86命令セットコアの命令セットの実質的部分、又は(2)少なくとも1つのx86命令セットコアを有するIntelプロセッサ上で実行されることを目的としたアプリケーション又は他のソフトウェアのオブジェクトコードバージョン、を矛盾なく実行又は別の方法で処理することによって、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表している。
x86コンパイラー2204は、追加のリンク処理の有無を問わず、少なくとも1つのx86命令セットコア2216を有するプロセッサ上で実行することができるx86バイナリーコード2206(例えば、オブジェクトコード)を生成するように動作可能なコンパイラーを表している。同様に、図22は、高水準言語2202によるプログラムを、代替の命令セットコンパイラー2208を用いてコンパイルして代替の命令セットバイナリーコード2210を生成することができることを示している。
この代替の命令セットバイナリーコードは、少なくとも1つのx86命令セットコア2214を有しないプロセッサ(例えば、カリフォルニア州サニーベールのMIPS Technologies社のMIPS命令セットを実行するコアを有するプロセッサ及び/又はカリフォルニア州サニーベールのARM Holdings社のARM命令セットを実行するコアを有するプロセッサ)が本来的に実行することができるものである。命令変換器2212は、x86バイナリーコード2206を、x86命令セットコア2214を有しないプロセッサが本来的に実行することができるコードに変換するのに用いられる。この変換されたコードは、代替の命令セットバイナリーコード2210と同じである可能性は低い。なぜならば、これを行うことができる命令変換器は、作製が困難であるからである。しかしながら、変換されたコードは、一般的な演算を達成し、代替の命令セットからの命令で構成される。したがって、命令変換器2212は、エミュレーション、シミュレーション、又は他の任意のプロセスを通じて、x86命令セットプロセッサもコアも有しないプロセッサ又は他の電子デバイスがx86バイナリーコード2206を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せを表している。
Claims (21)
- プロセッサであって、
少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を、前記第1の狭いソースパックドデータオペランドよりも広く該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドよりも広く該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングするデコードユニットと、
前記デコードユニットと結合された実行ユニットであって、該実行ユニットは、パックドデータ演算マスクを用いて、前記マスクされたパックドデータ演算を実行し、前記パックドデータ演算マスクは、前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含み、前記パックドデータ命令によってストアされない前記マスクされたパックドデータ演算によってストアされる複数の結果データ要素に対応する全てのマスク要素は、マスクアウトするものであり、前記実行ユニットは、前記パックドデータ結果を前記広いデスティネーションオペランドにストアする、実行ユニットと、
を備える、プロセッサ。 - 前記実行ユニットは、前記広いデスティネーションオペランドに対応するレジスタの幅全体を書き込み、前記狭いデスティネーションオペランドは、前記レジスタの前記幅の一部分のみに対応する、請求項1に記載のプロセッサ。
- 前記実行ユニットは、前記パックドデータ命令に関連付けられた演算によって更新される複数の結果データ要素がレジスタの最下位部分と該レジスタの最上位部分との間の該レジスタの中間部分のみを占有する前記パックドデータ結果をストアする、請求項1又は2に記載のプロセッサ。
- 前記デコードユニットは、第2の狭いソースパックドデータオペランドも示す前記パックドデータ命令を受信し、前記デコードユニットは、前記パックドデータ命令を、前記第2の狭いソースパックドデータオペランドよりも広く該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示す前記マスクされたパックドデータ演算にマッピングする、請求項1から3のいずれか1項に記載のプロセッサ。
- 前記デコードユニットは、前記第1の狭いソースパックドデータオペランド及び前記第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示す前記パックドデータ命令を受信し、前記プロセッサは、前記マスクされたパックドデータ演算を実行するときに、前記対応しないデータ要素の対を、前記実行ユニットによって演算される対応するビット位置に配置する演算を更に実行する、請求項4に記載のプロセッサ。
- 前記プロセッサは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することによって、前記対応しないデータ要素の対を前記対応するビット位置に配置する前記演算を実行する、請求項5に記載のプロセッサ。
- 前記パックドデータ命令は、パックドデータ演算マスクを示さない、請求項1から6のいずれか1項に記載のプロセッサ。
- 前記パックドデータ命令は、前記マスクされたパックドデータ演算を実行するために前記実行ユニットによって用いられる前記パックドデータ演算マスクよりも少ないマスク要素を有するパックドデータ演算マスクを示す、請求項1から6のいずれか1項に記載のプロセッサ。
- 前記実行ユニットは、マスクアウトされたマスク要素に対応する前記複数の結果データ要素の各々の値が変更されないとともに、マスクされていないマスク要素に対応する前記複数の結果データ要素の各々の値が前記パックドデータ命令に関連付けられた演算によって更新される、前記パックドデータ結果をストアする、請求項1から8のいずれか1項に記載のプロセッサ。
- プロセッサにおける方法であって、
少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を受信することと、
前記パックドデータ命令を、前記第1の狭いソースパックドデータオペランドよりも広く該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドよりも広く該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングすることと、
前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含むパックドデータ演算マスクを生成することであって、前記パックドデータ命令によってストアされない前記マスクされたパックドデータ演算によってストアされる複数の結果データ要素に対応する全てのマスク要素は、マスクアウトするものであることと、
前記パックドデータ演算マスクを用いて前記マスクされたパックドデータ演算を実行することと、
前記パックドデータ結果を前記広いデスティネーションオペランドにストアすることと、
を含む、プロセッサにおける方法。 - 前記パックドデータ結果をストアすることは、前記広いデスティネーションオペランドに対応するレジスタの幅全体を書き込むことを含み、前記狭いデスティネーションオペランドは、前記レジスタの前記幅の一部分のみに対応する、請求項10に記載の方法。
- 前記ストアすることは、前記パックドデータ命令に関連付けられた演算によって更新される複数の結果データ要素がレジスタの最下位部分と該レジスタの最上位部分との間の該レジスタの中間部分のみを占有する前記パックドデータ結果をストアすることを含む、請求項10又は11に記載の方法。
- 前記受信することは、第2の狭いソースパックドデータオペランドも示す前記パックドデータ命令を受信することを含み、前記マッピングすることは、前記パックドデータ命令を、前記第2の狭いソースパックドデータオペランドよりも広く該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示す前記マスクされたパックドデータ演算にマッピングすることを含む、請求項10から12のいずれか1項に記載の方法。
- 請求項13に記載の方法であって、前記受信することは、前記第1の狭いソースパックドデータオペランド及び前記第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示す前記パックドデータ命令を受信することを含み、該方法は、前記対応しないデータ要素の対を、前記マスクされたパックドデータ演算によって演算される対応するビット位置に配置する演算を実行することを更に含む、請求項13に記載の方法。
- 前記対応しないデータ要素の対を対応するビット位置に配置する前記演算を実行することは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することを含む、請求項14に記載の方法。
- 前記受信することは、パックドデータ演算マスクを示さない前記パックドデータ命令を受信することを含む、請求項10から15のいずれか1項に記載の方法。
- 前記受信することは、前記生成されるパックドデータ演算マスクよりも少ない数のマスク要素を有する第2のパックドデータ演算マスクを示す前記パックドデータ命令を受信することを含む、請求項10から15のいずれか1項に記載の方法。
- 前記第1の狭いソースパックドデータオペランドは、レジスタにおいて前記第1の広いソースパックドデータオペランド上にエイリアスされる、請求項10から17のいずれか1項に記載の方法。
- 前記ストアすることは、マスクアウトされたマスク要素に対応する前記複数の結果データ要素の各々の値が変更されないとともに、マスクされていないマスク要素に対応する前記複数の結果データ要素の各々の値が前記パックドデータ命令に関連付けられた演算によって更新される、前記パックドデータ結果をストアすることを含む、請求項10から18のいずれか1項に記載の方法。
- 命令を処理するシステムであって、
相互接続部と、
前記相互接続部と結合されたプロセッサであって、
少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を、前記第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする第1のユニットと、
前記第1のユニットと結合された集積回路部であって、該集積回路部は、前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応するデータ要素ごとのマスクビットを含むマスクを用いて、前記マスクされたパックドデータ演算を実行し、前記パックドデータ命令によってストアされるデータ要素に対応するマスクビットのみをマスクアウトしないことが許可される、集積回路部と、
を備える、プロセッサと、
前記相互接続部と結合されて前記パックドデータ命令をストアするダイナミックランダムアクセスメモリ(DRAM)と、
を備える、命令を処理するシステム。 - 前記集積回路部は、前記第1の狭いソースパックドデータオペランドのデータ要素を前記パックドデータ結果のデータ要素と整列させるデータ再配置演算を更に実行する、請求項20に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/854,089 US9477467B2 (en) | 2013-03-30 | 2013-03-30 | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US13/854,089 | 2013-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014199663A true JP2014199663A (ja) | 2014-10-23 |
JP5829714B2 JP5829714B2 (ja) | 2015-12-09 |
Family
ID=50686951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014058424A Active JP5829714B2 (ja) | 2013-03-30 | 2014-03-20 | マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム |
Country Status (6)
Country | Link |
---|---|
US (2) | US9477467B2 (ja) |
JP (1) | JP5829714B2 (ja) |
KR (1) | KR101597774B1 (ja) |
CN (2) | CN107918546B (ja) |
DE (1) | DE102014004564A1 (ja) |
GB (1) | GB2515862B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018516400A (ja) * | 2015-06-02 | 2018-06-21 | インテル・コーポレーション | パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム |
WO2020066375A1 (ja) * | 2018-09-25 | 2020-04-02 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI681300B (zh) * | 2014-11-14 | 2020-01-01 | 美商凱為有限責任公司 | 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體 |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
US9916164B2 (en) * | 2015-06-11 | 2018-03-13 | Intel Corporation | Methods and apparatus to optimize instructions for execution by a processor |
US9779469B2 (en) | 2015-08-17 | 2017-10-03 | Qualcomm Incorporated | Register spill management for general purpose registers (GPRs) |
US11681531B2 (en) * | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US20170192789A1 (en) * | 2015-12-30 | 2017-07-06 | Rama Kishnan V. Malladi | Systems, Methods, and Apparatuses for Improving Vector Throughput |
US11204764B2 (en) * | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
GB2564853B (en) * | 2017-07-20 | 2021-09-08 | Advanced Risc Mach Ltd | Vector interleaving in a data processing apparatus |
GB2568230B (en) * | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Processing in neural networks |
CN111443948B (zh) * | 2020-03-30 | 2022-09-09 | 龙芯中科技术股份有限公司 | 指令执行方法、处理器和电子设备 |
US11494190B2 (en) * | 2021-03-31 | 2022-11-08 | Arm Limited | Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999050740A1 (en) * | 1998-03-31 | 1999-10-07 | Intel Corporation | Executing partial-width packed data instructions |
US6334183B1 (en) * | 1997-11-18 | 2001-12-25 | Intrinsity, Inc. | Method and apparatus for handling partial register accesses |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100329338B1 (ko) | 1994-12-02 | 2002-07-18 | 피터 엔. 데트킨 | 복합피연산자의팩연산을수행하는마이크로프로세서 |
US6092094A (en) * | 1996-04-17 | 2000-07-18 | Advanced Micro Devices, Inc. | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6442676B1 (en) * | 1999-06-30 | 2002-08-27 | Bull Hn Information Systems Inc. | Processor with different width functional units ignoring extra bits of bus wider than instruction width |
US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
JP3924577B2 (ja) | 2002-05-22 | 2007-06-06 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 制御ワード巻き上げ |
JP3857614B2 (ja) | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
US7251722B2 (en) * | 2004-05-11 | 2007-07-31 | Mistletoe Technologies, Inc. | Semantic processor storage server architecture |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US8549264B2 (en) * | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US20120254589A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
EP2739076B1 (en) * | 2011-08-31 | 2016-08-03 | Huawei Technologies Co., Ltd. | Method, system and device for implementing multicast in shared network |
US9100184B2 (en) * | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
US9389861B2 (en) * | 2011-12-22 | 2016-07-12 | Intel Corporation | Systems, apparatuses, and methods for mapping a source operand to a different range |
CN106445469B (zh) * | 2011-12-22 | 2019-03-08 | 英特尔公司 | 处理器、机器可读存储介质和计算机实现的系统 |
US9632777B2 (en) * | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9588766B2 (en) * | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9665368B2 (en) * | 2012-09-28 | 2017-05-30 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US9189398B2 (en) * | 2012-12-28 | 2015-11-17 | Intel Corporation | Apparatus and method for memory-mapped register caching |
US9244684B2 (en) * | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
US9990202B2 (en) * | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9442731B2 (en) * | 2014-03-13 | 2016-09-13 | Intel Corporation | Packed two source inter-element shift merge processors, methods, systems, and instructions |
-
2013
- 2013-03-30 US US13/854,089 patent/US9477467B2/en active Active
-
2014
- 2014-03-20 JP JP2014058424A patent/JP5829714B2/ja active Active
- 2014-03-26 GB GB1405413.4A patent/GB2515862B/en active Active
- 2014-03-28 KR KR1020140037312A patent/KR101597774B1/ko active IP Right Grant
- 2014-03-28 DE DE102014004564.1A patent/DE102014004564A1/de active Pending
- 2014-03-28 CN CN201711135874.8A patent/CN107918546B/zh active Active
- 2014-03-28 CN CN201410122763.3A patent/CN104077107B/zh active Active
-
2016
- 2016-10-24 US US15/331,940 patent/US9934032B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334183B1 (en) * | 1997-11-18 | 2001-12-25 | Intrinsity, Inc. | Method and apparatus for handling partial register accesses |
WO1999050740A1 (en) * | 1998-03-31 | 1999-10-07 | Intel Corporation | Executing partial-width packed data instructions |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
Non-Patent Citations (6)
Title |
---|
CSNB200600309001; 大貫広幸: TECH I vol.31 x86アセンブラ入門 , 20060101, Pages:236〜263, CQ出版株式会社 * |
CSND201000316003; 北郷達郎: 'CPU技術大全' 日経Win PC 第16巻,第10号, 20100529, Pages:122〜135, 日経BP社 * |
CSND201100050003; 塩田紳二: '詳解・Sandy Bridge アーキテクチャ' ASCII.technologies 第16巻,第4号, 20110224, Pages:28〜35, 株式会社アスキー・メディアワークス * |
JPN6015009801; 塩田紳二: '詳解・Sandy Bridge アーキテクチャ' ASCII.technologies 第16巻,第4号, 20110224, Pages:28〜35, 株式会社アスキー・メディアワークス * |
JPN6015009802; 大貫広幸: TECH I vol.31 x86アセンブラ入門 , 20060101, Pages:236〜263, CQ出版株式会社 * |
JPN6015009803; 北郷達郎: 'CPU技術大全' 日経Win PC 第16巻,第10号, 20100529, Pages:122〜135, 日経BP社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018516400A (ja) * | 2015-06-02 | 2018-06-21 | インテル・コーポレーション | パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム |
US10936312B2 (en) | 2015-06-02 | 2021-03-02 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
WO2020066375A1 (ja) * | 2018-09-25 | 2020-04-02 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
JPWO2020066375A1 (ja) * | 2018-09-25 | 2021-08-30 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
Also Published As
Publication number | Publication date |
---|---|
DE102014004564A1 (de) | 2014-10-02 |
CN107918546B (zh) | 2022-02-22 |
JP5829714B2 (ja) | 2015-12-09 |
KR101597774B1 (ko) | 2016-02-26 |
CN104077107B (zh) | 2017-12-22 |
CN104077107A (zh) | 2014-10-01 |
GB201405413D0 (en) | 2014-05-07 |
US20170109164A1 (en) | 2017-04-20 |
US9477467B2 (en) | 2016-10-25 |
GB2515862B (en) | 2016-11-02 |
KR20140118924A (ko) | 2014-10-08 |
US20140297994A1 (en) | 2014-10-02 |
GB2515862A (en) | 2015-01-07 |
CN107918546A (zh) | 2018-04-17 |
US9934032B2 (en) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5829714B2 (ja) | マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム | |
JP6351682B2 (ja) | 装置および方法 | |
US11442734B2 (en) | Packed data element predication processors, methods, systems, and instructions | |
JP6238497B2 (ja) | プロセッサ、方法、及びシステム | |
JP5918287B2 (ja) | 演算マスクのマスクされていない要素をコンソリデートする命令処理装置、方法、システム、及びプログラム | |
JP5926754B2 (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
JP6340097B2 (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
JP6466388B2 (ja) | 方法及び装置 | |
JP6419205B2 (ja) | プロセッサ、方法、システム、コンピュータシステム、およびコンピュータ可読記憶媒体 | |
KR101713841B1 (ko) | 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법 | |
JP2018500658A (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP2018506096A (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP2017534114A (ja) | Z順序曲線において次のポイントの座標を計算するためのベクトル命令 | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
JP2017534982A (ja) | 4d座標から4dのz曲線インデックスを計算するための機械レベル命令 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 | |
KR101635856B1 (ko) | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 | |
EP3798824A1 (en) | Apparatus and method for store pairing with reduced hardware requirements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150317 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150617 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150717 |
|
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: 20150825 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150924 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151022 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5829714 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 |