JP5539432B2 - ベクトルマスク設定技術 - Google Patents

ベクトルマスク設定技術 Download PDF

Info

Publication number
JP5539432B2
JP5539432B2 JP2012087415A JP2012087415A JP5539432B2 JP 5539432 B2 JP5539432 B2 JP 5539432B2 JP 2012087415 A JP2012087415 A JP 2012087415A JP 2012087415 A JP2012087415 A JP 2012087415A JP 5539432 B2 JP5539432 B2 JP 5539432B2
Authority
JP
Japan
Prior art keywords
vector
instruction
vector mask
value
register
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
Application number
JP2012087415A
Other languages
English (en)
Other versions
JP2012142021A (ja
Inventor
エスパサ ロヘル
フラムント ロヘル
Original Assignee
インテル コーポレイション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012142021A publication Critical patent/JP2012142021A/ja
Application granted granted Critical
Publication of JP5539432B2 publication Critical patent/JP5539432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Image Analysis (AREA)

Description

本発明の実施例は、マイクロプロセッサアーキテクチャに関する。より詳細には、本発明の実施例は、命令セットアーキテクチャにより使用するためのベクトルマスクの設定に関する。
各種プロセッサにおける様々な命令セットアーキテクチャ(ISA)に使用される命令は、結果値を生成するため他の値と論理的に組み合わされるマスク値を生成する処理を含むかもしれない。マスク値は、レジスタ(ベクトルマスク)などのメモリ位置に格納されるかもしれず、他の値の対応するビット数のビットとのブール論理演算(AND演算など)に使用されるいくつかのビットを含む。例えば、図1は、結果レジスタ110に格納されている結果値を生成するため、他のレジスタ105に格納されている他の値のビットとブールAND演算を介し論理的に合成されるビットを有するベクトルマスク101を示す。
いくつかのISAでは、命令は、結果を生成するためマスク値を使用する命令として指定されるかもしれない。例えば、ある命令が「マスクにより」実行されると指定されている場合、当該命令によって使用又は生成されるデータ値は、「ベクトルレジスタ」などのプロセッサレジスタに格納されるかもしれない。次に、ベクトルレジスタの要素に格納されるデータに対して実行される演算は、「ベクトルマスクレジスタ」に格納可能なベクトルマスクの対応するビットをチェックするかもしれない。対応するビットがある値に設定されている場合、当該演算は、ベクトルマスクに関係なく実行されるかもしれない。他方、当該ビットが他の値に設定されている場合、例えば、演算は無視され、当該演算に対して例外処理も結果も生成されない。ベクトルマスク内のビット数と、ベクトルマスクの各ビットの意味は、それが実現されるプロセッサのアーキテクチャに従って変化するかもしれない。
ベクトルマスクは、命令(uop)から復号される演算などの処理又は処理シーケンスを用いて、スカラーレジスタなどの他のレジスタからのベクトルマスクを設定することを含む各種技術により初期化又は設定することが可能である。あるいは、いくつかの従来技術は、「比較」演算などの他の演算のパフォーマンスにより非明示的にベクトルマスクを設定する。1つの従来技術では、ベクトルマスクは、「ゼロ」の値のベクトルなど、他の値とマスク値を比較する第1の演算(“veq”演算など)を利用して、ベクトルマスクを設定する第2の演算(“setvm”演算など)を実行することによって、ベクトルマスクに格納可能な値を生成することにより設定される。
いくつかの従来技術は、ベクトルマスク値を生成する処理と、ベクトルマスクがそれを使用する各種命令に適用可能なレジスタなどの格納位置にベクトルマスクを格納する処理を利用している。
上述したものなどの従来技術の1つの問題は、利用可能になる前にベクトルマスクを最終的に設定するため2以上の処理が実行される必要があり、それは余計な処理サイクルを必要とし、これにより、処理パフォーマンスに影響を与えるということである。
本発明の課題は、上記問題点に鑑み、マイクロプロセッサアーキテクチャの命令セットアーキテクチャにおいて使用される効果的なベクトルマスク生成技術を提供することである。
本発明によると、上記課題は、ベクトルマスクを格納するための第1処理を検出する第1ロジックと、前記第1処理より以前のベクトルマスク値を生成するための最新の第2処理を特定する第2ロジックと、前記第2処理が特定される場合、前記第1処理の実行を回避する第3ロジックとから構成されることを特徴とするプロセッサにより解決される。
また、本発明によると、ベクトルマスク値を生成するための第1命令と、前記ベクトルマスク値をベクトルマスクレジスタに格納するための第2命令とを格納するメモリと、前記第1命令が前記第2命令と同一のベクトルマスクレジスタに対応する場合、前記第2命令の実行を回避するプロセッサとから構成されることを特徴とするシステムが提供される。
また本発明によると、ベクトルマスク値を格納するための第1処理をキューに格納するステップと、前記ベクトルマスク値を生成するための最新の第2処理について前記キューを検索するステップと、前記第2処理が検出される場合、前記第1処理を前記キューから削除するステップとを有する方法であって、前記第1処理は、前記第2処理より以前のものであることを特徴とする方法が提供される。
さらに本発明によると、少なくとも2つのソースオペランドを格納する少なくとも2つのソースレジスタを有するベクトルレジスタファイルと、前記ベクトルレジスタファイルに接続され、少なくとも1つのベクトルマスク値を格納する少なくとも1つのベクトルマスクレジスタを有するベクトルマスクレジスタファイルと、前記ベクトルレジスタファイルと前記ベクトルマスクレジスタファイルとに接続され、前記少なくとも2つのソースオペランドに対してブールAND演算を実行するALU(Arithmetic Logic Unit)とから構成される装置であって、前記実行の結果がすべてゼロを含むものでない場合、前記結果は前記ベクトルマスクレジスタに格納されることを特徴とする装置が提供される。
本発明によると、マイクロプロセッサアーキテクチャの命令セットアーキテクチャにおいて使用される効果的なベクトルマスク生成技術を提供することができる。
図1は、ベクトルマスク値を生成するための従来技術を示す。 図2は、一実施例によるベクトルマスクを設定する技術を示す。 図3は、本発明の少なくとも1つの実施例の少なくとも1つの特徴を示すフローチャートである。 図4は、本発明の少なくとも1つの実施例を参照して説明される処理の少なくとも一部を実現するのに利用可能なハードウェアロジックを示す。 図5は、本発明の一実施例が利用可能なFSBコンピュータシステムを示す。 図6は、PtP構成により構成されるコンピュータシステムを示す。
本発明の実施例は、マイクロプロセッサに関する。より詳細には、本発明の実施例は、プロセッサ又は処理システム内で1以上の命令が実行されることにより使用されるベクトルマスクを設定する技術に関する。
本発明の少なくとも1つの実施例では、マスク値を設定するための少なくとも1つの命令とベクトルマスクを設定するための少なくとも1つの命令とをマッチングすることによって、プロセッサ又は処理システム内で実行される1以上の命令と関連付けされる各種機能をイネーブル又は非イネーブルとするため、ベクトルマスクが構成(設定)される。少なくとも1つの実施例では、このマッチングは、処理リストに対してベクトルマスク値を設定する実行対象の最も早い(最新の(youngest))処理を、ベクトルマスクをこのベクトルマスク値により設定する処理の実行前に検索することによって実行される。さらに、本発明の少なくとも1つの実施例は、ベクトルマスクを設定する命令の実行を省略するか、又は少なくとも無視し、代わりにベクトルマスクを対応する値に設定するため、マスク値を設定する命令を実行する。
図2は、例えば、一実施例によるベクトルマスクを設定する技術を示す。図2では、処理ロジックによって実行される命令又はuopを格納するスケジューラなどの命令キュー200が示される。図2に示される例では、各種命令/uopが異なる時点でキューに格納され、それらがキューに入力された時点の順序により格納される(すなわち、“最も古い”から“最も新しい”)。例えば、図2において、オペコード(“opcode”)により特定される命令又はuopである“vadd”が、キューに最初に入力され、このためエントリ201に格納される。その後、オペコードにより特定される命令又はuopである“vand”がエントリ203に格納され、オペコードにより特定される命令又はuopである“vmul”がエントリ205に格納される。他の実施例では、命令又はuopは、それらのキューへの到着順により格納されてもよいし、そうでなくてもよい。あるいは、キューの先頭から最後尾になど、異なる位置に格納されるようにしてもよい。
図2のキューの各命令又はuopは、上述したような対応するオペコード207と共に、当該命令又はuopによって処理されるデータが存在するレジスタなどの格納領域内の位置を特定する対応するソース位置識別子209を有する。同様に、図2のキュー内の各命令又はuopは、対応する命令又はuopの実行により生成されるデータが格納されるレジスタなどの格納領域内の位置を特定する対応するデスティネーション位置識別子211を有する。少なくとも1つの実施例では、キュー内の各エントリはまた、命令又はuopにより生成されるベクトルマスクが格納されるレジスタなどの格納領域内の位置を特定する対応するデスティネーション位置識別子213を格納する。いくつかの命令又はuopは、特に対応する命令又はuopがその実行後にベクトルマスク値を生成しない場合には、何れの情報もそれらのキューエントリのベクトルマスクフィールド内に格納しないようにしてもよい。
図2において、vand命令又はuopは、例えば、それのエントリのソースフィールドとデスティネーションフィールドに対応するデータ間のブールAND演算を実行し、その結果をそれのキューエントリのデスティネーションフィールドによって示される位置に格納するものである。また図2において、オペコード“setvm”により特定される第4の命令又はuopが、キューのエントリ215に入力されている。setvm命令又はuopは、実行時にベクトルマスク識別子フィールドによって特定される位置のベクトルマスク値を、ソース識別子フィールドにより特定されるベクトルマスクに格納する処理である。
図2に示される例では、setvm命令又はuopに対応するマスク値の位置は、vand命令又はuopに対応するマスク値の位置と同一である。本発明の少なくとも1つの実施例は、図2のsetvmとvandとの間の関係を同一のベクトルマスク値に対応するものと認識し、その後、キューからsetvm命令又はuopを削除するか、あるいは、setvm命令又はuopを実行せず、vand命令又はuopのデスティネーション識別子を命令又はuopにより使用されるベクトルマスクの位置として利用する。
一実施例では、図2に示されるsetvm命令又はuopが図2のキュー内に検出されると、検索ロジック、検索ソフトウェア又はそれらの組み合わせが、例えば、キューの各エントリに対応するコンテンツアドレッサブルメモリ(CAM)セットを検索することによって、キューに対応するvand処理を検出することができる。一実施例では、第1の値(論理“1”など)に設定されたCAMは、setvm命令又はuopにより使用されるベクトルマスク値を生成及び格納するvand命令又はuopのキュー内における位置を示すかもしれない。他の実施例では、vand命令又はuopのキュー内の位置を特定する他の技術が、利用されるかもしれない。
図3は、本発明の少なくとも1つの実施例の少なくとも1つの特徴を示すフローチャートである。特に、図3は、setvm命令又はuopを実行する必要がなくなるように、スケジューラなどのキュー内のsetvm命令又はuopの有無を検出し、対応するマスク生成命令又はuop(一実施例ではvandなど)を検出するため実行される処理を示す。処理301において、setvm命令又はuopは、処理ロジックによって実行される命令又はuopのキューに格納される。処理303において、setvm命令又はuopより以前のキューエントリが、setvm命令又はuopと同じマスク値に対応するキュー内の最新のvand命令又はuopを検出するため検索される。最新の対応するvand命令が検出された後、setvmキューから削除されるか、あるいは、それが実行されず、vand処理の結果が処理305において他の命令又はuopに対するベクトルマスクとして利用されるようにマーク付けされる。
一実施例では、キューはプロセッサのスケジューラであり、他の実施例では、処理ロジックにより実行される命令又はuopを格納するプロセッサの内部又は外部の他のキューであってもよい。さらに、ここまではsetvmとvand命令又はuopが参照されてきたが、他の実施例では、他の命令又はuopが、本発明の実施例が利用される命令セットアーキテクチャに応じて、ベクトルマスク値を生成し、当該値によりベクトルマスクを設定するのに利用可能である。
本発明の実施例は、ソフトウェア、ハードウェア又はそれらの組み合わせを含む様々な方法により実現可能である。図4は、例えば、本発明の少なくとも1つの実施例を参照して説明される処理の少なくとも一部を実現するのに利用可能なハードウェアロジックを示す。特に、図4は、setvmやvandなどの命令又はuopに対応するオペランドと結果を格納するのに利用されるソース及びデスティネーションレジスタを有するベクトルレジスタファイル401を示す。さらに、図4は、本発明の1以上の実施例によって生成されるベクトルマスクを格納するベクトルマスクレジスタファイル405を示す。vand命令又はuopは、例えば、ALU(Arithmetic Logic Unit)410にベクトルレジスタファイルのソースレジスタの2以上に格納されているデータ間のブールAND演算を実行させ、ベクトルレジスタファイル内のデスティネーションレジスタ及び/又はベクトルマスクレジスタファイル内のベクトルマスクレジスタに当該結果を格納させるようにしてもよい。
一実施例では、vand命令又はuopの結果は、ベクトルマスク値が必ずしもすべてゼロとならない場合、比較ロジック403により比較演算を実行することによって、当該結果をベクトルマスクレジスタファイルに格納のみ実行する。一部の実施例では、ベクトルマスクレジスタファイルに格納されているベクトルマスク値は、ベクトルマスクレジスタファイルからALUへの接続によって容易にされるように、ALUにおいて実行される他の論理演算において利用されるようにしてもよい。一実施例では、vand処理により使用されるソースレジスタの1つは、生成されたベクトルマスク値が第1ソースレジスタに格納されている非ゼロのビットのレジスタ位置を反映するように、すべてゼロを含むソースレジスタ値とAND演算される少なくとも1つの非ゼロのビットを含む。このマスク値は、ベクトルマスクレジスタファイルからマスクにアクセスすることによって、以降の命令により利用可能である。
図5は、本発明の一実施例が利用可能なフロント・サイド・バス(FSB)コンピュータシステムを示す。プロセッサ505は、レベル1(L1)キャッシュメモリ510とメインメモリ515からのデータにアクセスする。本発明の他の実施例では、キャッシュメモリは、レベル2(L2)キャッシュ又はコンピュータシステムメモリ階層内の他のメモリであってもよい。さらにいくつかの実施例では、図5のコンピュータシステムは、L1キャッシュとL2キャッシュの両方を含むものであってもよい。
図5のプロセッサ内に、マシーン状態の格納領域506が示される。一実施例では、格納領域はレジスタセットであってもよいし、他の実施例では、他のメモリ構成であってもよい。また図5において、一実施例によるセーブエリアセグメントのための格納領域507が示される。他の実施例では、セーブエリアセグメントは、他の装置又はメモリ構成内にあってもよい。プロセッサは、任意数の処理コアを有するものであってもよい。しかしながら、本発明の他の実施例は、独立したバスエージェントなどのシステム内部の他の装置内で実現されてもよいし、あるいは、システム全体にハードウェア、ソフトウェア又はそれらの組み合わせにより分散されてもよい。
メインメモリは、DRAM(Dynamic Random−Access Memory)、ハードディスクドライブ(HDD)520、又は各種記憶装置及び技術を含むネットワークインタフェース530を介しコンピュータシステムからリモートに存在するメモリソースなどの各種メモリソースにより実現可能である。キャッシュメモリは、プロセッサ内部に、又はプロセッサのローカルバス507などのプロセッサに近接して配置されていてもよい。
さらに、キャッシュメモリは、6トランジスタ(6T)セルやほぼ同様又はより高速なアクセス速度の他のメモリセルなど、比較的高速なメモリセルを有するようにしてもよい。図5のコンピュータシステムは、PtP(Point−to−Point)ネットワーク上の各エージェントに専用のバス信号を介し通信するマイクロプロセッサなどのバスエージェントのPtPネットワークであってもよい。図6は、PtP構成に構成されたコンピュータシステムを示す。特に、図6は、プロセッサ、メモリ及び入出力がいくつかのPtPインタフェースにより相互接続されているシステムを示す。
図6のシステムは、複数のプロセッサを有する可能性があるが、簡単化のため、2つのプロセッサ670と680のみが示されている。プロセッサ670と680は、メモリ22と24と接続するためローカルメモリコントローラハブ(MCH)672と682を有するようにしてもよい。プロセッサ670と680は、PtPインタフェース回路678と688を用いてPtPインタフェース650を介しデータをやりとりするようにしてもよい。プロセッサ670と680は、PtPインタフェース回路676、694、686及び698を用いて、各PtPインタフェース652と654を介しチップセット690によりデータをやりとりするようにしてもよい。チップセット690はまた、ハイパフォーマンスグラフィックインタフェース639を介しハイパフォーマンスグラフィック回路638によりデータをやりとりするようにしてもよい。本発明の実施例は、任意数の処理コアを有する任意のプロセッサ内に、又は図6の各PtPバスエージェント内に配置されてもよい。
しかしながら、本発明の他の実施例は、図6のシステム内の他の回路、ロジックユニット又は装置に存在するようにしてもよい。さらに、本発明の他の実施例は、図6に示される複数の回路、ロジックユニット又は装置全体に分散されていてもよい。
本発明の様々な特徴は、CMOS(Complimentary Metal−Oxide−Semiconductor)回路及びロジック装置(ハードウェア)を用いて実現可能であるが、他の特徴はプロセッサによって実行される場合、プロセッサに本発明の実施例を実行するための方法を実行させるマシーン可読媒体に格納されている命令(ソフトウェア)を用いて実現されてもよい。さらに、本発明の一部の実施例はハードウェアのみにより実行されてもよく、他の実施例はソフトウェアのみにより実行されてもよい。
本発明が例示的な実施例を参照して説明されたが、本記載は限定的に解釈されるべきものではない。本発明が属する分野の当業者には明らかなこれら例示的な実施例と共に他の実施例の各種改良は、本発明の趣旨及び範囲内に属するとされる。
401 ベクトルレジスタファイル
405 ベクトルマスクレジスタファイル
410 ALU
403 比較ロジック
505、670、680 プロセッサ
510 キャッシュメモリ
515 メインメモリ
520 HDD
530 ネットワークインタフェース
672、682 MCH
650 PtPインタフェース
690 チップセット

Claims (10)

  1. 第1処理のソース位置識別子に対応する第1位置から取得されるベクトルマスク値をベクトルマスクレジスタに格納するための第1命令の前記第1処理を命令キューにおいて検出する第1ロジックと、
    前記第1処理より以前の第2命令の最新の第2処理を前記命令キューにおいて特定する第2ロジックであって、前記第2ロジックは、前記ベクトルマスク値を設定するため前記第1処理により以降に使用されるべき前記第1位置の値を前記第2処理が設定することを特定し、1以上の命令が、該1以上の命令が前記第1位置における値を利用しない前記命令キュー内の前記第1命令と前記第2命令との間に存在する、前記第2ロジックと、
    前記第1処理と第2処理とが特定され、前記第2命令によって前記第1位置に設定された値が、前記ベクトルマスクレジスタにおいて前記ベクトルマスク値を設定するため前記第処理により使用されるべきである場合、前記第1処理の実行を禁止し、前記1以上の命令の実行を許可し、前記値をマスクとして使用する前記第1処理に後続する何れかのベクトル処理によって前記値が利用可能になるように、前記第2処理に前記値を前記ベクトルマスクレジスタに設定させることを実現する第3ロジックと、
    を有するプロセッサ。
  2. 請求項1記載のプロセッサであって、
    前記第2処理は、ベクトルソースレジスタ識別子によって特定されるオペランドと、前記ベクトルマスクレジスタと異なるベクトルデスティネーションレジスタに格納される結果とを有するベクトルブールAND演算を含むことを特徴とするプロセッサ。
  3. 請求項1記載のプロセッサであって、
    前記第2ロジックは、最新の処理として前記第2処理を特定するビットを格納するコンテンツアドレッサブルメモリ(CAM)を有することを特徴とするプロセッサ。
  4. 請求項1乃至何れか一項記載のプロセッサを有する計算システム。
  5. ハードウェアにより実行される方法であって、
    ベクトルマスクレジスタファイルのベクトルマスクレジスタにベクトルマスク値を格納するための第1処理を有する第1命令をキューに格納するステップであって、前記ベクトルマスク値は前記第1命令において特定されるベクトルソースレジスタからわたされる、前記格納するステップと、
    前記ベクトルマスク値を生成し、前記第1処理の実行前に前記ベクトルマスク値を前記ベクトルソースレジスタに格納するための最新の第2処理を有する第2命令について前記キューを検索するステップであって、前記第1処理と前記第2処理との実行の間に前記ベクトルソースレジスタを利用しない1以上の命令が、前記キュー内の前記第1命令と前記第2命令との間に存在する、前記検索するステップと、
    前記第1命令と前記第2命令との検出に応答して、前記第1処理の実行を禁止し、前記1以上の命令の実行を許可し、前記ベクトルマスク値をマスクとして使用する前記第1処理に後続する何れかのベクトル処理によって前記ベクトルマスク値が利用可能になるように、前記第2処理に前記ベクトルマスク値を前記ベクトルマスクレジスタに格納させるステップと、
    を有する方法。
  6. 請求項5記載の方法であって、
    前記第1処理は、前記ベクトルマスク値を前記ベクトルマスクレジスタファイルに格納するためのsetvmオペコードに対応することを特徴とする方法。
  7. 請求項6記載の方法であって、
    前記第2処理は、前記ベクトルマスク値を生成するためのvandオペコードに対応することを特徴とする方法。
  8. ハードウェアにより実行される方法であって、
    第1命令と第2命令とを検索するステップであって、前記第1命令は、該第1命令において特定されたベクトルソースレジスタからわたされたベクトルマスク値をベクトルマスクレジスタファイルのベクトルマスクレジスタに格納する第1処理を有し、前記第2命令は、前記第1処理の実行前に前記ベクトルマスク値を生成し、前記ベクトルソースレジスタに格納する最新の第2処理を有し、前記第1処理と前記第2処理との実行の間に前記ベクトルソースレジスタを利用しない1以上の命令が前記第1命令と前記第2命令との間に存在する、前記検索するステップと、
    前記第1命令と前記第2命令との検出に応答して、前記第1処理の実行を禁止し、前記1以上の命令の実行を許可し、マスクとして前記ベクトルマスク値を利用する前記第1処理に後続する何れかのベクトル処理により前記ベクトルマスク値が利用可能になるように、前記第2処理に前記ベクトルマスク値を前記ベクトルマスクレジスタに格納させるステップと、
    を有する方法。
  9. 請求項8記載の方法であって、
    前記第1処理は、前記ベクトルマスク値を前記ベクトルマスクレジスタファイルに格納するためのsetvmオペコードに対応することを特徴とする方法。
  10. 請求項9記載の方法であって、
    前記第2処理は、前記ベクトルマスク値を生成するためのvandオペコードに対応することを特徴とする方法。
JP2012087415A 2005-11-22 2012-04-06 ベクトルマスク設定技術 Expired - Fee Related JP5539432B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/286,735 US9436468B2 (en) 2005-11-22 2005-11-22 Technique for setting a vector mask
US11/286,735 2005-11-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006313121A Division JP2007141246A (ja) 2005-11-22 2006-11-20 ベクトルマスク設定技術

Publications (2)

Publication Number Publication Date
JP2012142021A JP2012142021A (ja) 2012-07-26
JP5539432B2 true JP5539432B2 (ja) 2014-07-02

Family

ID=38054829

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006313121A Pending JP2007141246A (ja) 2005-11-22 2006-11-20 ベクトルマスク設定技術
JP2012087415A Expired - Fee Related JP5539432B2 (ja) 2005-11-22 2012-04-06 ベクトルマスク設定技術

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006313121A Pending JP2007141246A (ja) 2005-11-22 2006-11-20 ベクトルマスク設定技術

Country Status (4)

Country Link
US (1) US9436468B2 (ja)
JP (2) JP2007141246A (ja)
CN (1) CN1983235B (ja)
TW (1) TWI395136B (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US9009528B2 (en) * 2008-08-15 2015-04-14 Apple Inc. Scalar readXF instruction for processing vectors
US8271832B2 (en) * 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US8938642B2 (en) * 2008-08-15 2015-01-20 Apple Inc. Confirm instruction for processing vectors
US8862932B2 (en) * 2008-08-15 2014-10-14 Apple Inc. Read XF instruction for processing vectors
CN102262205B (zh) * 2010-05-31 2015-08-26 无锡中星微电子有限公司 一种测试向量源文件的测试点的屏蔽方法和屏蔽装置
WO2013095582A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Systems, apparatuses, and methods for extracting a writemask from a register
CN107908427B (zh) 2011-12-23 2021-11-09 英特尔公司 用于多维数组中的元素偏移量计算的指令
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
CN108519921B (zh) * 2011-12-23 2022-07-12 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
WO2013095630A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved extract instructions background
WO2013095661A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
WO2013095659A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
US9658850B2 (en) * 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
CN107220029B (zh) 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
CN116414459A (zh) * 2011-12-23 2023-07-11 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9778932B2 (en) * 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US20150186137A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for vector bit test
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10203955B2 (en) 2014-12-31 2019-02-12 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10977033B2 (en) * 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US20240111526A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Methods and apparatus for providing mask register optimization for vector operations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5761476A (en) * 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5634118A (en) * 1995-04-10 1997-05-27 Exponential Technology, Inc. Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation
US5940625A (en) * 1996-09-03 1999-08-17 Cray Research, Inc. Density dependent vector mask operation control apparatus and method
US5925124A (en) * 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US5903769A (en) * 1997-03-31 1999-05-11 Sun Microsystems, Inc. Conditional vector processing
JPH10301791A (ja) 1997-04-30 1998-11-13 Toshiba Corp オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems

Also Published As

Publication number Publication date
US9436468B2 (en) 2016-09-06
JP2007141246A (ja) 2007-06-07
CN1983235B (zh) 2010-06-16
CN1983235A (zh) 2007-06-20
US20070118720A1 (en) 2007-05-24
JP2012142021A (ja) 2012-07-26
TW200802083A (en) 2008-01-01
TWI395136B (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
JP5539432B2 (ja) ベクトルマスク設定技術
US8539485B2 (en) Polling using reservation mechanism
US12001842B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
JP2003523573A (ja) プロセッサにおける書き込みトラヒックを減少するシステム及び方法
EP3716055A1 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
US20070118696A1 (en) Register tracking for speculative prefetching
US8205032B2 (en) Virtual machine control structure identification decoder
JP2023526788A (ja) マスターシャドウ物理レジスタファイルを利用するための方法及びシステム
EP3543846B1 (en) Computer system and memory access technology
JP3834145B2 (ja) ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法
US9904549B2 (en) Method and apparatus for loop-invariant instruction detection and elimination
US6711670B1 (en) System and method for detecting data hazards within an instruction group of a compiled computer program
KR20080025652A (ko) 요구-기반 프로세싱 자원 할당
US6651164B1 (en) System and method for detecting an erroneous data hazard between instructions of an instruction group and resulting from a compiler grouping error
US20170371701A1 (en) Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization
US20140365751A1 (en) Operand generation in at least one processing pipeline
WO2019134376A1 (zh) 虚拟地址确定方法及装置、处理器、存储介质
WO2023239671A1 (en) Virtual memory paging system and translation lookaside buffer with pagelets
JPH05108348A (ja) 並列演算処理装置
JP2000099330A (ja) コンピュ―タ・プロセッサ・システム
JPH02148226A (ja) 情報処理装置
JPS6337457A (ja) 並列プロセッサシステムおよび並列プロセッサによる複数の命令列の実行方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131008

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: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5539432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140430

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees