JP6741006B2 - マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 - Google Patents
マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 Download PDFInfo
- Publication number
- JP6741006B2 JP6741006B2 JP2017526619A JP2017526619A JP6741006B2 JP 6741006 B2 JP6741006 B2 JP 6741006B2 JP 2017526619 A JP2017526619 A JP 2017526619A JP 2017526619 A JP2017526619 A JP 2017526619A JP 6741006 B2 JP6741006 B2 JP 6741006B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- vector
- mask
- bit
- index
- 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.)
- Expired - Fee Related
Links
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/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
命令セットは、1または複数の命令フォーマットを含む。所与の命令フォーマットは、とりわけ、実行されるオペレーション(オペコード)および当該オペレーションが実行されるオペランドを指定する様々なフィールド(ビットの数、ビットの位置)を規定する。いくつかの命令フォーマットは、命令テンプレート(またはサブフォーマット)の規定により更に分類される。例えば、所与の命令フォーマットの命令テンプレートは、異なるサブセットの命令フォーマットのフィールド(含まれるフィールドは、通常は同じ順序であるが、少なくともいくつかは、より少ないフィールドが含まれているので、異なるビット位置を有する)を有するものと規定され、および/または異なる解釈をされる所与のフィールドを有するものと規定され得る。従って、ISAの各命令は、所与の命令フォーマットを用いて(および規定される場合には、当該命令フォーマットの命令テンプレートのうちの所与の1つで)表され、オペレーションおよびオペランドを指定するためのフィールドを含む。例えば、例示的なADD命令は、特定のオペコード、ならびに当該オペコードを指定するオペコードフィールドおよびオペランド(ソース1/デスティネーション、およびソース2)を選択するオペランドフィールドを含む命令フォーマットを有する。命令ストリームにおけるこのADD命令が生じることにより、特定のオペランドを選択するオペランドフィールドに特定の内容を有する。Advanced Vector Extensions(AVX)(AVX1およびAVX2)と呼ばれ、ベクトル拡張(VEX)符号化スキームを用いるSIMD拡張のセットが、リリースおよび/または公開されている(例えば、Intel(登録商標)64 and IA−32 Architectures Software Developers Manual,October 2011およびIntel(登録商標)Advanced Vector Extensions Programming Reference,June 2011を参照されたい)。
本明細書に説明される命令の実施形態は、異なるフォーマットで実施され得る。更に、例示的なシステム、アーキテクチャ、およびパイプラインが以下に詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、およびパイプライン上で実行され得るが、詳述されるものに限定されない。
ベクトル向け命令フォーマットは、ベクトル命令に好適な命令フォーマットである。(例えば、ベクトルオペレーションに固有の一定のフィールドが存在する)。ベクトルおよびスカラオペレーションの両方がベクトル向け命令フォーマットによりサポートされる実施形態が説明されるが、代替的な実施形態は、ベクトル向け命令フォーマットによるベクトルオペレーションのみを用いる。
クラス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(場合によっては、アプリケーションコアもしくはアプリケーションプロセッサとして言及される)、上記のコプロセッサ、および追加の機能性を含み得るシステムオンチップを含み得る。例示的なコアアーキテクチャが次に説明され、その次に例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
マスクビットをベクトルデータ要素に可変に拡張し、その逆も行う可変マスク・ベクトル拡張命令が以下に説明される。特定の一実施形態において、可変マスク・ベクトル拡張命令は、結果を格納するデスティネーションベクトルレジスタと、ソースマスク値を格納するソースマスクレジスタと、デスティネーションベクトルレジスタ内の特定のベクトルデータ要素に拡張されるソースマスク値の一部を識別するインデックス値とを使用する。可変マスク・ベクトル拡張命令の別の実施形態は、結果を格納するデスティネーションマスクレジスタと、拡張されるべきベクトル値を格納するソースベクトルレジスタと、特定のソースベクトル値を識別してデスティネーションマスクレジスタ内の各ビットを設定するインデックス値とを使用する。
→SRC_MASK_REGは、1101000(ビット7からビット0の順番で並べられている)の値を有する。 →SRC_SIMD_DstIndexREGは、ZMM2=5,4,7,6,1,0,3,2である。 →DST_SIMD_REGは、ZMM1であり(すなわち、VPMASKEXPANDVECQ ZMM1,K1,ZMM2)、以下の結果がZMM1において(図14に即して)生じる。
本願によれば、以下の各項目もまた開示される。
[項目1]
複数のマスクビット値を格納するためのソースマスクレジスタと、
各々がデスティネーションベクトルレジスタにおけるベクトルデータ要素に関連付けられ、上記ソースマスクレジスタ内のビットを識別する複数のインデックス値を格納するためのインデックスレジスタと、
上記インデックスレジスタの上記複数のインデックス値を用いて、上記ソースマスクレジスタの上記複数のマスクビット値の各々を関連付けられたベクトルデータ要素に拡張するための可変マスク・ベクトル拡張ロジックとを備え、
ベクトルデータ要素の全てのビットは、該ベクトルデータ要素に関連付けられたインデックス値により識別されたマスクビット値に等しくなるように設定される、プロセッサ。
[項目2]
上記可変マスク・ベクトル拡張ロジックは、上記ソースマスクレジスタからビットを選択し、上記ビットを、上記デスティネーションベクトルレジスタにおけるデスティネーションベクトルのデータ要素の各々に拡張するべく、上記複数のインデックス値により制御される1または複数のマルチプレクサを有する、項目1に記載のプロセッサ。
[項目3]
上記ソースマスクレジスタは、64ビットのマスクレジスタを有し、
上記デスティネーションベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタを有する、項目1または2に記載のプロセッサ。
[項目4]
各インデックス値は、上記ソースマスクレジスタにおける各マスクビットを識別するための3ビットを有する、項目3に記載のプロセッサ。
[項目5]
各インデックス値は、上記ベクトルデータ要素のうちの1つに関連付けられた位置を有し、
各インデックス値は、対応する位置を有するベクトルデータ要素に拡張されるべき上記ソースマスクレジスタにおけるビットにインデックスを付ける、項目4に記載のプロセッサ。
[項目6]
上記可変マスク・ベクトル拡張ロジックは、可変マスク・ベクトル拡張命令をデコードするための可変マスク・ベクトル拡張デコードロジックと、上記可変マスク・ベクトル拡張命令を実行するための可変マスク・ベクトル拡張実行ロジックとを有する、項目1〜5のいずれか1項に記載のプロセッサ。
[項目7]
上記可変マスク・ベクトル拡張デコードロジックは、上記可変マスク・ベクトル拡張命令を複数のマイクロオペレーションにデコードする、項目6に記載のプロセッサ。
[項目8]
上記ベクトルデータ要素に拡張されるマスクビットは、条件付きテストを必要とする後続の命令シーケンスの性能を向上させるために用いられる、項目1〜6のいずれか1項に記載のプロセッサ。
[項目9]
上記可変マスク・ベクトル拡張ロジックに、上記ベクトルデータ要素に拡張されるべきマスクビットに対してライトマスキングを実行させる第2のマスクレジスタを更に備える、項目1〜7のいずれか1項に記載のプロセッサ。
[項目10]
複数のマスクビット値をソースマスクレジスタに格納する段階と、
複数のインデックス値をインデックスレジスタに格納する段階であって、各インデックス値は、デスティネーションベクトルレジスタにおけるベクトルデータ要素に関連付けられ、上記ソースマスクレジスタ内のビットを識別する段階と、
上記インデックスレジスタの上記複数のインデックス値を用いて、上記ソースマスクレジスタの上記複数のマスクビット値の各々を関連付けられたベクトルデータ要素に拡張する段階とを備え、
ベクトルデータ要素の全てのビットは、該ベクトルデータ要素に関連付けられたインデックス値により識別されたマスクビット値に等しくなるように設定される、方法。
[項目11]
拡張する段階は、上記ソースマスクレジスタからビットを選択し、上記デスティネーションベクトルレジスタにおけるデスティネーションベクトルのデータ要素の各々にビットを拡張するべく、上記複数のインデックス値を用いて1または複数のマルチプレクサを制御する段階を含む、項目10に記載の方法。
[項目12]
上記ソースマスクレジスタは、64ビットのマスクレジスタを有し、
上記デスティネーションベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタを含む、項目10または11に記載の方法。
[項目13]
各インデックス値は、上記ソースマスクレジスタにおける各マスクビットを識別するための6ビットを含む、項目12に記載の方法。
[項目14]
各インデックス値は、ベクトルデータ要素のうちの1つに関連付けられた位置を有し、
各インデックス値は、対応する位置を有するベクトルデータ要素に拡張されるべき上記ソースマスクレジスタにおけるビットにインデックスを付ける、項目13に記載の方法。
[項目15]
格納する段階および拡張する段階は、可変マスク・ベクトル拡張命令のデコードおよび実行に応答して行われる、項目10〜14のいずれか1項に記載の方法。
[項目16]
上記可変マスク・ベクトル拡張命令は、複数のマイクロオペレーションにデコードされる、項目15に記載の方法。
[項目17]
条件付きテストを必要とする後続の命令シーケンスの性能を向上させるために、上記ベクトルデータ要素に拡張されるマスクビットを用いる段階を更に備える、項目10〜16のいずれか1項に記載の方法。
[項目18]
第2のマスクレジスタを用いて上記ベクトルデータ要素に拡張されるべきマスクビットに対してライトマスキングを実行する段階を更に備える、項目10〜17のいずれか1項に記載の方法。
[項目19]
複数のベクトルデータ要素を格納するためのソースベクトルレジスタであって、上記複数のベクトルデータ要素の各々は、全て1または全て0を含むソースベクトルレジスタと、
各々がデスティネーションマスクレジスタにおけるビット位置に関連付けられ、上記ソースベクトルレジスタ内のデータ要素を識別する複数のインデックス値を格納するためのインデックスレジスタと、
上記インデックスレジスタの上記複数のインデックス値を用いて、上記ソースベクトルレジスタのベクトルデータ要素内に格納されたビット値を、上記デスティネーションマスクレジスタにおける関連付けられた上記ビット位置に拡張するための可変マスク・ベクトル拡張ロジックとを備える、プロセッサ。
[項目20]
上記可変マスク・ベクトル拡張ロジックは、上記ソースベクトルレジスタからビットを選択し、上記ビットを上記デスティネーションマスクレジスタにおける上記ビット位置の各々に拡張するべく、上記複数のインデックス値により制御される1または複数のマルチプレクサを有する、項目19に記載のプロセッサ。
[項目21]
上記ソースベクトルレジスタは、8個の64ビットベクトルデータ要素値を含む512ビットのベクトルレジスタを有し、
上記デスティネーションマスクレジスタは、64ビットのマスクレジスタを含む、項目19または20に記載のプロセッサ。
[項目22]
各インデックス値は、上記ソースベクトルレジスタにおける各ベクトルデータ要素を識別するための3ビットを有する、項目21に記載のプロセッサ。
[項目23]
各インデックス値は、上記デスティネーションマスクレジスタの上記ビット位置のうちの1つに関連付けられた位置を有し、各インデックス値は、対応する位置を有するビット位置に拡張されるべき上記ソースベクトルレジスタにおけるベクトルデータ要素にインデックスを付ける、項目22に記載のプロセッサ。
[項目24]
上記可変マスク・ベクトル拡張ロジックは、可変マスク・ベクトル拡張命令をデコードするための可変マスク・ベクトル拡張デコードロジックと、上記可変マスク・ベクトル拡張命令を実行するための可変マスク・ベクトル拡張実行ロジックとを有する、項目19〜23のいずれか1項に記載のプロセッサ。
[項目25]
上記可変マスク・ベクトル拡張デコードロジックは、上記可変マスク・ベクトル拡張命令を複数のマイクロオペレーションにデコードする、項目24に記載のプロセッサ。
Claims (27)
- 複数のマスクビット値を格納するためのソースマスクレジスタと、
各々がデスティネーションベクトルレジスタにおけるベクトルデータ要素に関連付けられ、前記ソースマスクレジスタ内のビットを識別する複数のインデックス値を格納するための第1インデックスレジスタと、
前記第1インデックスレジスタの前記複数のインデックス値を用いて、前記ソースマスクレジスタの前記複数のマスクビット値の各々を関連付けられたベクトルデータ要素に拡張するための可変マスク・ベクトル拡張ロジックとを備え、
ベクトルデータ要素の全てのビットは、該ベクトルデータ要素に関連付けられたインデックス値により識別されたマスクビット値に等しくなるように設定され、
さらに、
複数のベクトルデータ要素を格納するためのソースベクトルレジスタであって、前記複数のベクトルデータ要素の各々は、全て1または全て0を含むソースベクトルレジスタと、
各々がデスティネーションマスクレジスタにおけるビット位置に関連付けられ、前記ソースベクトルレジスタ内のデータ要素を識別する複数のインデックス値を格納するための第2インデックスレジスタとを備え、
前記可変マスク・ベクトル拡張ロジックは、前記第2インデックスレジスタの前記複数のインデックス値を用いて、前記ソースベクトルレジスタのベクトルデータ要素内に格納されたビット値を、前記デスティネーションマスクレジスタにおける関連付けられた前記ビット位置に拡張する、プロセッサ。 - 前記可変マスク・ベクトル拡張ロジックは、前記ソースマスクレジスタからビットを選択し、前記ビットを、前記デスティネーションベクトルレジスタにおけるデスティネーションベクトルのデータ要素の各々に拡張するべく、前記第1インデックスレジスタの前記複数のインデックス値により制御される1または複数のマルチプレクサを有する、請求項1に記載のプロセッサ。
- 前記ソースマスクレジスタは、64ビットのマスクレジスタを有し、
前記デスティネーションベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタを有する、請求項1または2に記載のプロセッサ。 - 前記第1インデックスレジスタの各インデックス値は、前記ソースマスクレジスタにおける各マスクビットを識別するための3ビットを有する、請求項3に記載のプロセッサ。
- 前記第1インデックスレジスタの各インデックス値は、前記ベクトルデータ要素のうちの1つに関連付けられた位置を有し、
前記第1インデックスレジスタの各インデックス値は、対応する位置を有するベクトルデータ要素に拡張されるべき前記ソースマスクレジスタにおけるビットにインデックスを付ける、請求項4に記載のプロセッサ。 - 前記可変マスク・ベクトル拡張ロジックは、可変マスク・ベクトル拡張命令をデコードするための可変マスク・ベクトル拡張デコードロジックと、前記可変マスク・ベクトル拡張命令を実行するための可変マスク・ベクトル拡張実行ロジックとを有する、請求項1〜5のいずれか1項に記載のプロセッサ。
- 前記可変マスク・ベクトル拡張デコードロジックは、前記可変マスク・ベクトル拡張命令を複数のマイクロオペレーションにデコードする、請求項6に記載のプロセッサ。
- 前記ベクトルデータ要素に拡張されるマスクビットは、条件付きテストを必要とする後続の命令シーケンスの性能を向上させるために用いられる、請求項1〜7のいずれか1項に記載のプロセッサ。
- 前記可変マスク・ベクトル拡張ロジックに、前記ベクトルデータ要素に拡張されるべきマスクビットに対してライトマスキングを実行させる第2のマスクレジスタを更に備える、請求項1〜8のいずれか1項に記載のプロセッサ。
- 複数のマスクビット値をソースマスクレジスタに格納する段階と、
複数のインデックス値を第1インデックスレジスタに格納する段階であって、各インデックス値は、デスティネーションベクトルレジスタにおけるベクトルデータ要素に関連付けられ、前記ソースマスクレジスタ内のビットを識別する段階と、
前記第1インデックスレジスタの前記複数のインデックス値を用いて、前記ソースマスクレジスタの前記複数のマスクビット値の各々を関連付けられたベクトルデータ要素に拡張する段階とを備え、
ベクトルデータ要素の全てのビットは、該ベクトルデータ要素に関連付けられたインデックス値により識別されたマスクビット値に等しくなるように設定され、
さらに、
複数のベクトルデータ要素をソースベクトルレジスタに格納する段階であって、前記複数のベクトルデータ要素の各々は、全て1または全て0を含む、段階と、
複数のインデックス値を第2インデックスレジスタに格納する段階であって、各インデックス値は、デスティネーションマスクレジスタにおけるビット位置に関連付けられ、前記ソースベクトルレジスタ内のデータ要素を識別する、段階と、
前記第2インデックスレジスタの前記複数のインデックス値を用いて、前記ソースベクトルレジスタのベクトルデータ要素内に格納されたビット値を、前記デスティネーションマスクレジスタにおける関連付けられた前記ビット位置に拡張する段階とを備える、方法。 - 拡張する段階は、前記ソースマスクレジスタからビットを選択し、前記デスティネーションベクトルレジスタにおけるデスティネーションベクトルのデータ要素の各々にビットを拡張するべく、前記第1インデックスレジスタの前記複数のインデックス値を用いて1または複数のマルチプレクサを制御する段階を含む、請求項10に記載の方法。
- 前記ソースマスクレジスタは、64ビットのマスクレジスタを有し、
前記デスティネーションベクトルレジスタは、8個の64ビット値を含む512ビットのベクトルレジスタを含む、請求項10または11に記載の方法。 - 前記第1インデックスレジスタの各インデックス値は、前記ソースマスクレジスタにおける各マスクビットを識別するための6ビットを含む、請求項12に記載の方法。
- 前記第1インデックスレジスタの各インデックス値は、ベクトルデータ要素のうちの1つに関連付けられた位置を有し、
前記第1インデックスレジスタの各インデックス値は、対応する位置を有するベクトルデータ要素に拡張されるべき前記ソースマスクレジスタにおけるビットにインデックスを付ける、請求項13に記載の方法。 - 格納する段階および拡張する段階は、可変マスク・ベクトル拡張命令のデコードおよび実行に応答して行われる、請求項10〜14のいずれか1項に記載の方法。
- 前記可変マスク・ベクトル拡張命令は、複数のマイクロオペレーションにデコードされる、請求項15に記載の方法。
- 条件付きテストを必要とする後続の命令シーケンスの性能を向上させるために、前記ベクトルデータ要素に拡張されるマスクビットを用いる段階を更に備える、請求項10〜16のいずれか1項に記載の方法。
- 第2のマスクレジスタを用いて前記ベクトルデータ要素に拡張されるべきマスクビットに対してライトマスキングを実行する段階を更に備える、請求項10〜17のいずれか1項に記載の方法。
- 複数のベクトルデータ要素を格納するためのソースベクトルレジスタであって、前記複数のベクトルデータ要素の各々は、全て1または全て0を含むソースベクトルレジスタと、
各々がデスティネーションマスクレジスタにおけるビット位置に関連付けられ、前記ソースベクトルレジスタ内のデータ要素を識別する複数のインデックス値を格納するためのインデックスレジスタと、
前記インデックスレジスタの前記複数のインデックス値を用いて、前記ソースベクトルレジスタのベクトルデータ要素内に格納されたビット値を、前記デスティネーションマスクレジスタにおける関連付けられた前記ビット位置に拡張するための可変マスク・ベクトル拡張ロジックとを備える、プロセッサ。 - 前記可変マスク・ベクトル拡張ロジックは、前記ソースベクトルレジスタからビットを選択し、前記ビットを前記デスティネーションマスクレジスタにおける前記ビット位置の各々に拡張するべく、前記複数のインデックス値により制御される1または複数のマルチプレクサを有する、請求項19に記載のプロセッサ。
- 前記ソースベクトルレジスタは、8個の64ビットベクトルデータ要素値を含む512ビットのベクトルレジスタを有し、
前記デスティネーションマスクレジスタは、64ビットのマスクレジスタを含む、請求項19または20に記載のプロセッサ。 - 各インデックス値は、前記ソースベクトルレジスタにおける各ベクトルデータ要素を識別するための3ビットを有する、請求項21に記載のプロセッサ。
- 各インデックス値は、前記デスティネーションマスクレジスタの前記ビット位置のうちの1つに関連付けられた位置を有し、各インデックス値は、対応する位置を有するビット位置に拡張されるべき前記ソースベクトルレジスタにおけるベクトルデータ要素にインデックスを付ける、請求項22に記載のプロセッサ。
- 前記可変マスク・ベクトル拡張ロジックは、可変マスク・ベクトル拡張命令をデコードするための可変マスク・ベクトル拡張デコードロジックと、前記可変マスク・ベクトル拡張命令を実行するための可変マスク・ベクトル拡張実行ロジックとを有する、請求項19〜23のいずれか1項に記載のプロセッサ。
- 前記可変マスク・ベクトル拡張デコードロジックは、前記可変マスク・ベクトル拡張命令を複数のマイクロオペレーションにデコードする、請求項24に記載のプロセッサ。
- 前記可変マスク・ベクトル拡張ロジックに、前記ビット位置に拡張されるべきベクトルデータ要素内に格納された前記ビット値に対してライトマスキングを実行させる第2のマスクレジスタを更に備える、請求項19〜25のいずれか1項に記載のプロセッサ。
- 複数のベクトルデータ要素をソースベクトルレジスタに格納する段階であって、前記複数のベクトルデータ要素の各々は、全て1または全て0を含む、段階と、
各々がデスティネーションマスクレジスタにおけるビット位置に関連付けられ、前記ソースベクトルレジスタ内のデータ要素を識別する複数のインデックス値をインデックスレジスタに格納する段階と、
前記インデックスレジスタの前記複数のインデックス値を用いて、前記ソースベクトルレジスタのベクトルデータ要素内に格納されたビット値を、前記デスティネーションマスクレジスタにおける関連付けられた前記ビット位置に拡張する段階とを備える、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,435 US20160179520A1 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for variably expanding between mask and vector registers |
US14/581,435 | 2014-12-23 | ||
PCT/US2015/062059 WO2016105756A1 (en) | 2014-12-23 | 2015-11-23 | Method and apparatus for variably expanding between mask and vector registers |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018500651A JP2018500651A (ja) | 2018-01-11 |
JP6741006B2 true JP6741006B2 (ja) | 2020-08-19 |
Family
ID=56129462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017526619A Expired - Fee Related JP6741006B2 (ja) | 2014-12-23 | 2015-11-23 | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160179520A1 (ja) |
EP (1) | EP3238027A4 (ja) |
JP (1) | JP6741006B2 (ja) |
KR (1) | KR20170099855A (ja) |
CN (1) | CN107003845B (ja) |
TW (1) | TWI575451B (ja) |
WO (1) | WO2016105756A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459843B2 (en) * | 2016-12-30 | 2019-10-29 | Texas Instruments Incorporated | Streaming engine with separately selectable element and group duplication |
EP3428792B1 (en) * | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false 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 |
US11327862B2 (en) * | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
CN112083954B (zh) * | 2019-06-13 | 2024-09-06 | 华夏芯(北京)通用处理器技术有限公司 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
CN119522416A (zh) * | 2022-07-26 | 2025-02-25 | 华为技术有限公司 | 用于寄存谓词的寄存器 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9513515D0 (en) * | 1995-07-03 | 1995-09-06 | Sgs Thomson Microelectronics | Expansion of data |
US7434028B2 (en) * | 2004-12-15 | 2008-10-07 | Intel Corporation | Hardware stack having entries with a data portion and associated counter |
US7673345B2 (en) * | 2005-03-31 | 2010-03-02 | Intel Corporation | Providing extended memory protection |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
WO2009076281A1 (en) * | 2007-12-10 | 2009-06-18 | Sandbridge Technologies, Inc. | Accelerating traceback on a signal processor |
JP5222823B2 (ja) * | 2009-10-20 | 2013-06-26 | 株式会社日立製作所 | アクセスログ管理方法 |
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 |
EP2584460A1 (en) * | 2011-10-20 | 2013-04-24 | ST-Ericsson SA | Vector processing system comprising a replicating subsystem and method |
US9697174B2 (en) * | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US20140208065A1 (en) * | 2011-12-22 | 2014-07-24 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for mask register expand operation |
CN104011663B (zh) * | 2011-12-22 | 2018-01-26 | 英特尔公司 | 掩码寄存器上的广播操作 |
US20140223138A1 (en) * | 2011-12-23 | 2014-08-07 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing conversion of a mask register into a vector register. |
CN104094218B (zh) * | 2011-12-23 | 2017-08-29 | 英特尔公司 | 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法 |
WO2013095612A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for broadcasting from a general purpose register to a vector register |
WO2013101218A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Vector frequency expand instruction |
WO2013166101A1 (en) * | 2012-05-02 | 2013-11-07 | Massachusetts Institute Of Technology | Managing buffer memory |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
-
2014
- 2014-12-23 US US14/581,435 patent/US20160179520A1/en not_active Abandoned
-
2015
- 2015-11-20 TW TW104138538A patent/TWI575451B/zh not_active IP Right Cessation
- 2015-11-23 CN CN201580063906.0A patent/CN107003845B/zh not_active Expired - Fee Related
- 2015-11-23 KR KR1020177013984A patent/KR20170099855A/ko active Pending
- 2015-11-23 JP JP2017526619A patent/JP6741006B2/ja not_active Expired - Fee Related
- 2015-11-23 EP EP15873963.1A patent/EP3238027A4/en not_active Withdrawn
- 2015-11-23 WO PCT/US2015/062059 patent/WO2016105756A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2016105756A1 (en) | 2016-06-30 |
CN107003845B (zh) | 2021-08-24 |
CN107003845A (zh) | 2017-08-01 |
EP3238027A4 (en) | 2018-08-29 |
US20160179520A1 (en) | 2016-06-23 |
JP2018500651A (ja) | 2018-01-11 |
TWI575451B (zh) | 2017-03-21 |
TW201640335A (zh) | 2016-11-16 |
EP3238027A1 (en) | 2017-11-01 |
KR20170099855A (ko) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
JP6849275B2 (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP6635438B2 (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
JP2017529601A (ja) | ビットシャッフルプロセッサ、方法、システム、および命令 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
JP6745021B2 (ja) | 競合検出を実行するための方法および装置 | |
JP6738579B2 (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
CN109947480A (zh) | 用于将紧缩四字移位并提取紧缩字的装置和方法 | |
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: 20190822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190917 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191216 |
|
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: 20200526 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20200624 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200706 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6741006 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |