説明

SIMDベクトルの同期

プロセッシングデバイス内のデコーダによって、第1記憶ロケーション、第2記憶ロケーション及び第3記憶ロケーションの間の複数のデータ要素に対するベクトル比較/交換オペレーションを規定する単一命令をデコードする段階と、プロセッシングデバイス内の実行ユニットによって実行するために、単一命令を発行する段階と、単一命令の実行に応答して、第1記憶ロケーションからのデータ要素と、第2記憶ロケーションにおける対応するデータ要素とを比較する段階と、一致が存在するかに応じて、第1記憶ロケーションからのデータ要素を、第3記憶ロケーションからの対応するデータ要素で置き換える段階とを実行することによって、ベクトル比較/交換オペレーションが実行される。

【発明の詳細な説明】
【背景技術】
【0001】
本開示は、マイクロプロセッサ及びその他のプロセッシングデバイスに関し、より詳細には、SIMDベクトルの同期に関する。
【0002】
例えば、マルチスレッドプロセッサ、複数のプロセッシングデバイス及び/又はマルチコアプロセッサを組み込んだシステムにおける、複数スレッド及び/又はプロセッシングユニット(以下、エージェントと称する)は、しばしば、システム内に格納されているリソース及びデータを共有する必要が生じる。エージェントが最近の及び最新のデータにアクセスすることを確実にし、また、エージェントが、別のエージェントと現在関連付けられているデータにアクセスし及び変更を行わないように対策がとられている。また、データ及びリソース共有を複雑にしている要因として、現代のプロセッシングデバイスは、1以上の専用キャッシュメモリを含むことが挙げられる。マルチプロセッサ及びマルチコアシステム内では、複数のオンチップキャッシュは、多くの場合−現実的には通常、データアイテムの複数のコピーを収容する。したがって、エージェントがデータアイテムのコピーにアクセスする場合、更新された又は有効なデータ値が読み出されることが保証される。
【0003】
これらのシステムにおいては、"キャッシュコヒーレンシ(coherency)"が維持される。キャッシュコヒーレンシとは、キャッシュメモリから書き出される又は読み込まれるデータの同期のことを指し、スレッド又はプロセッサによってアクセスされるキャッシュに格納されるあらゆるデータアイテムが、そのデータアイテムの最近(most recent)のコピーとなるように同期を行う。また、キャッシュからメインメモリへと書き戻されるあらゆるデータ値は、最新(most current)データとなる。
【0004】
キャッシュコヒーレンシを維持し、エージェントがデータアイテムを必要とする時に、そのデータアイテムの最新の値がアクセスされるのを確実にする1つの方法として、セマフォ(semaphore)(例えば、フラグ又はロック(lock))の実装がある。ロックは、例えば、(読み込みオペレーションにおいて)エージェントによるメモリからの特定のデータアイテムの要求に応答して、プロセッサ及び/又はスレッド間の同期を確かにするプロセスを含む。一般的に、ロックは、読み出し(read)/読み込み(load)命令、データアイテムを変更する命令、及び、書き込み(write)/格納(store)命令を含む、命令のセットと関連付けられる。本明細書では、"ロックシーケンス"又は"ロックオペレーション"とも称されるロックは、例えば、データを格納するメモリロケーションのオーナーシップを取得した後、その他のプロセスがそのデータの操作を行うことを防ぐと同時に、そのデータに対して不可分操作(atomic operation)を実行し、不可分操作が実行された後にメモリロケーションのオーナーシップを解除することを含んでもよい。不可分操作とは、中断されず、連続的な態様で実行されて、完結される又は全く完結されないことが保証されている(すなわち、オペレーションは分割できない)オペレーションのことである。
【図面の簡単な説明】
【0005】
【図1】コンピューティングシステムのブロック図である。
【図2】図1に示すようなプロセッシングデバイスの概略図である。
【図3】単一命令複数データ(SIMD)ベクトル比較/交換(compare-and-exchange)命令のエンコーディングスキームを示した図である。
【図4】図3に示した命令フォーマットを実装するコンピュータシステムの第1の例を示したブロック図である。
【図5】図3に示した命令フォーマットを実装するコンピュータシステムの第2の例を示したブロック図である。
【図6】図3に示した命令フォーマットを実装するコンピュータシステムの第3の例を示したブロック図である。
【図7】図3に示した命令フォーマットを実装するコンピュータシステムの第4の例を示したブロック図である。
【発明を実施するための形態】
【0006】
その他の特徴及び利点が、以下の詳細な説明、図面及び特許請求の範囲から明らかとなるであろう。
【0007】
以下の詳細な説明では、明細書に記載される例の完全な理解を提供するべく、特定の命令、命令形式、レジスタ及びメモリ等のデバイス等、多くの詳細事項が記される。しかしながら、これら詳細事項がなくとも本発明を実施可能であることは、当業者にとって明らかである。
【0008】
セマフォがロックされているか(及び/又は、ロックするようにする)を判断する1つの方法は、読み出し−変更―書き込み(read-modify-write)シーケンス(又はオペレーション)の利用である。しかしながら、読み出し−変更―書き込みの実装では、セマフォメカニズム自体の取得及び解放の問題がある。すなわち、プロセッサが共有されているメモリ空間の制御権を得ようと試みる場合、プロセッサは、最初にロック値を読み出し、その値を確認及び変更(許可される場合)した後、変更値をロックに書き戻す。別のプロセッサがロック値を変更してしまうことを防ぐには、通常、読み出し−変更―書き込みオペレーションを不可分操作(すなわち、一旦実行を開始したら、中断されることなく完了される)として実行されることが望ましい。不可分操作を使用することにより、プロセスは、セマフォを取得(読み出し)して、値を変更し(許可される場合)、書き込みを開始することによりセマフォを解放して、別のプロセスがロックを取得するのを試みる前にオペレーションを完結させる。
【0009】
図1に示すように、コンピュータシステム10は、バス13によってメモリ12(例えば、レジスタ、キャッシュ、RAM等)と結合された複数のプロセッシングユニット11(例えば、プロセッサ、コア、実行ユニット等)を有する。複数のプロセッシングユニット11のうちの1以上が、1以上のスレッドと関連付けられる。コンピュータシステム10は、好適な数のプロセッシングユニット11を含み、プロセッシングユニットはそれぞれ、好適な数のスレッドを有する。複数のプロセッシングユニット11はそれぞれ、別個の集積回路デバイスの一部を構成してもよい、又は、複数のプロセッシングユニット11の全て(又はその一部)が、1つのダイ上に形成されていてもよい。特定のコンピュータシステムでは、4つのプロセッシングユニット11(P1、P2、P3及びP4と称される)が、システム10の一部として示されている。4つのプロセッシングユニット11の全てが、メモリ12、具体的には、メモリ12内の共有メモリ空間15と結合される。
【0010】
メモリ12は、様々な態様で構成することができる。図では1つのメモリとして示されているが、メモリ12は、複数の内部メモリ及び外部メモリを含んでもよい。具体的な例として、4つのプロセッシングユニット11の全てがメモリ12にアクセスし、及び、共有空間15と称されるメモリ12の部分は、1以上のプロセッシングユニット11によってアクセスされる。メモリ12内にその他の共有空間が存在してもよく、2以上のプロセッシングユニット11が、このような共有空間にアクセスする能力を有する。メモリ12の共有されない空間は、通常は、1つのプロセッシングユニット11のみによってアクセスされる空間として分類される。
【0011】
図1に示すコンピュータシステム10は、コンピュータシステムの一例であり、簡略化のために図示されていない別の構成要素を含んでもよい。例えば、コンピュータシステム10は、ダイレクト・メモリ・アクセス(DMA)コントローラ、ネットワークインターフェース(例えば、ネットワークカード)、1以上のプロセッシングユニット11と関連付けられたチップセット、及び、更なる信号ライン及びバスを含んでもよい。コンピュータシステム10は、図1に示されている全ての構成要素を必ずしも含まなくてもよい。
【0012】
図1において、採用されているセマフォはロック(又はロック変数)16であり、ロック16は、1以上の対応する共有空間15(点線14で示されている)への制御アクセスに割り当てられている。ロック16は、共有空間15へのアクセスの取得と関連付けられている値を収容するべく割り当てられているメモリ内の特定のロケーションである。そして、複数のプロセッシングユニット11のうちの1つが共有スペース15へアクセスするためには、当該プロセッシングユニットは、最初に対応するロック16にアクセスした後に、ロックロケーション16に格納されているデータのステート(値)を検証(test)する。2つの値が、単純な形式で、ロック16に割り当てられる。第1の値は、共有スペースがアクセス可能であることを示し、第2の値は、共有スペースが現在使用されておりアクセス不可能であることを示す。単純な実施形態では、ビットステータス1及び0を使用して、ロック16についてロックされている状態とロックされていない状態とを表すことができる。
【0013】
実際のロック値及びロック16に対するロックステートは、設計の一つの選択肢であり、様々な変形例が考えられることは明らかである。ロック16のロケーションは、必ずしもメモリ12内にある必要はない。更に、図1に示すように、メモリ12は、様々なメモリデバイスのうちの1つであってもよい。また、複数のプロセッシングユニット11の1以上を、メモリにアクセスするメモリアクセスデバイス(ダイレクト・メモリ・アクセス・コントローラ等のデバイス)と置き換えることもできる。これらの例において、デバイスは、共有スペース15へのアクセスを取得するために、本命令書に記載される複数のプロセッシングユニット11と同様に機能する。また、1つのバス13のみが示されているが、バス13が様々なデバイスを結合させることから、複数のバスが同じ階層レベル又は異なる階層レベルに存在してもよい。
【0014】
データ転送のために、複数のプロセッシングユニット11がメモリ12へのアクセスを行う場合は、通常、読み込み(ロード)及び格納(ストア)オペレーションが使用される。ロードオペレーションは、アクセスされるメモリにおけるロケーションからメモリの内容を転送し、ストアオペレーションは、アクセスされるメモリロケーションへとデータを転送する。したがって、ロード/ストアオペレーションは、メモリ12及びロック16にアクセスし、複数のプロセッシングユニット11とメモリ12との間のデータ転送に使用される。ロードアクセス及びストアアクセスは、それぞれ、読み出し(リード)アクセス及び(書き込み(ライト)アクセスとも称される。
【0015】
図1及び図2に示すように、コンピュータシステム10は、システムバス22を介して、複数のプロセッシングユニット11と結合されるリードオンリーメモリ(ROM)31及びメインメモリ18を含み、メインメモリ18としては、例えば、好適な種類のランダムアクセスメモリ(RAM)が含まれる。プロセッシングユニット11はまた、システムバス22によって接続されるデータ記憶デバイス30を含む。データ記憶デバイス30は、例えば、ハードディスクドライブのような、あらゆる好適な不揮発性メモリを含む。コンピュータシステム10は更に、フロッピー(登録商標)ディスクドライブ、CD ROMドライブ、及び/又は、USBドライブのような取り外し可能記憶媒体32を含む。
【0016】
図2では、プロセッシングユニット11が、1以上のバスによって相互接続される複数の構成要素を含み、これらのバスは、図2では、ローカルバス19として記号で示されている。ローカルバス19、すなわち、プロセッシングユニット11の構成要素は、バスインターフェースユニット23と結合される。バスインターフェースユニット23は、プロセッシングユニット11をシステムバス22と接続し、プロセッシングユニット11とメインメモリ18との間、及び、プロセッシングユニット11と外部キャッシュ20との間の情報伝達を可能としている。
【0017】
プロセッシングユニット11は、ローカルバス19と結合された命令デコーダ21を含む。命令デコーダ21は、プロセッシングユニット11において実行されるプログラム又はコードと関連付けられた命令(又は複数の命令)を受信し、受信した命令を、1以上の機械レベル命令/オペレーション(μオペレーション)に分解する。プロセッシングユニット11は、プログラムと関連付けられた1以上の命令を受信してもよく、コンピュータシステム10の別のプロセッシングユニット11は、同じプログラムと関連付けられた1以上の命令を受信してもよい。そして、プログラムは、複数のプロセッシングユニット11上で実行されてもよい。
【0018】
プロセッシングユニット11は更に、例えば、データアクセス制御ユニット(DAC)24、メモリオーダリングバッファ(MOB)26、レジスタファイルユニット29及び機能ユニット27を含む複数の実行ユニットを含む。
【0019】
レジスタファイルユニット29は、複数のレジスタを含み、それぞれが、16、32、64、128、256又は512ビットの記憶領域を有する。さらに、レジスタファイル29は、それぞれが1以上のレジスタを有する1以上のレジスタファイルを含んでもよい。機能ユニット27は、例えば、算術ユニット、論理ユニット及び/又は浮動小数点ユニットのような1以上の機能ユニットを含む。MOB26は、ロード命令及びストア命令が適切な順番になるようにし、メモリ階層構造(すなわち、コンピュータシステム10内の様々なレベルのメモリ、L0キャッシュ25、L1キャッシュ28、外部キャッシュ20、メインメモリ18及びデータ記憶デバイス30を含む)内におけるこれらのトランザクションの適切なシーケンスを提供する。L0キャッシュ25及びL1キャッシュ28のそれぞれは、機能ユニット27によって最近アクセスされたデータ又はアクセスされると期待される最近のデータを格納することができる。機能ユニット27が要求するデータのアイテムが、キャッシュメモリ25、28の一方に存在する場合には、キャッシュ"ヒット(hit)"が発生するが、要求されたデータがキャッシュに存在しない場合には、キャッシュ"ミス"が発生する。キャッシュメモリの1以上(例えば、L0キャッシュ25)が、DAC24と結合されてもよい。DAC24は、キャッシュミスになる全てのトランザクション、及び、特別な扱いを必要とするその他のトランザクションを制御する。上記したロックは、DAC24及びプロセッシングユニット11のその他の構成要素によって特別な対応が必要なトランザクションの一種である。μオペレーションが、例えば、算術操作に対応する場合には、μオペレーションが機能ユニット27に送信されて、機能ユニットが算術操作を実行する。μオペレーションが、例えば、メモリ参照命令、例えば、ロード又はストア、に対応する場合には、そのμオペレーションはMOB26に送信される。
【0020】
図2に示したプロセッシングユニット11は、プロセッシングデバイスの一例を示すことを目的としており、プロセッシングユニットは、図に示されていないその他の数多くの構成要素を含んでもよい。理解を容易にするために、これらの構成要素については、図示を省略している。例えば、プロセッシングユニット11は、アドレス生成ユニット、リザベーションステーション(reservation station)、リオーダバッファ(reorder buffer)、スケジューラ、セグメント及びアドレス変換ユニット、トランスレーション・ルックアサイド・バッファ、ページミスハンドラ、及び/又は、内部クロック回路を含んでもよい。図2では別々の要素として示されている構成要素を、組み合わせる及び/又は共有回路としてもよい。本明細書に記載される実施形態は、特定のアーキテクチャ又は配置に限定されず、また、これらのアーキテクチャ又は配置を説明するのに使用される特定の言葉によっても限定されない。また、開示される実施形態は、そのアーキテクチャ又は言葉に関係なく、あらゆる種類のプロセッシングデバイス上で実行可能であると考えられる。
【0021】
実行されるべくスケジュールされたμオペレーションの1以上は、ロックされたμオペレーションを含んでもよい。上記したように、ロック(lock)は、プロセッサ及び/又はスレッド間の同期を確実にする態様で実行されるオペレーション(例えば、ロード、変更及びストア)のシーケンスに対応する。
【0022】
図3には、読み出し(read)−変更(modify)−書き込み(write)オペレーションを実行する命令が示されている。命令40は、5つのオペランド41−45を含む1つの不可分命令である。オペコード(Opコード)オペランド41は、これが、VCMPXCHG命令であることを特定する。オペランド42−44は、SRC1/DEST、SRC2、SRC3と関連付けられるソース及び宛先(destination)オペランド、及び、ある実装形態では、マスク・ストレージ・ロケーション(MSK)オペランド及び/又はオフセット(又は"即値(immediate)")オペランド45に対応している。オフセット又は即値は、メモリ12を呼び出す時に、(SRC1のような)ベースアドレスからのオフセットを提供するのに使用される。以下に記す命令は、このようなオフセットを有してもよいが、オフセットは図示していない。マスク記憶ロケーション45を規定する実装は、SRC1/DESTオペランドによって参照される記憶ロケーションに格納されている各データ要素に対応するマスク要素を格納するレジスタ又はメモリロケーションを参照する。
【0023】
命令40に応答して、プロセッシングユニット11は、第1ソースデータを読み出し、読み出したデータを別のソースデータと比較して、比較結果が予め定められた条件(真又は一致の条件等)を満たす場合には、ある変更値が第1ソースデータの元のロケーションであってもよいロケーションに書き込まれる。予め定められた条件を満たさない場合には、そのロケーションにおける元のデータは、変更されない。命令はこれら3つのソースオペランド(SRC1、SRC2及びSRC3のようなオペランド)及び1つの宛先オペランド(DESTのようなオペランド)を使用して、命令の実行において使用される様々な情報のロケーションを提供する。オペレーション固有レジスタ使用して、命令が実行される時に宛先データを格納する及び1以上のソースデータを提供してもよく、これにより、実際の命令フォーマットにおいて明示的にオペランドを規定する必要がなくなる。更に、一例では、SRC1オペランド及びDESTオペランドとは、同じ記憶ロケーション(SRC1/DEST)を参照する。
【0024】
命令40の実行の前に、SRC1、SRC2及びSRC3が、レジスタファイルユニット29内のレジスタにロードされる(読み込まれる)。例えば、SRC1/DESTオペランドによって規定される1ロケーションに格納される値を安全に更新するために、値がSRC2オペランドによって規定されるロケーションに最初に読み込まれて、SRC3オペランドによって規定されるロケーションに置き換え値が読み込まれる。そして、不可分比較/交換オペレーションが実行されて、SRC1/DESTオペランドと関連付けられている現在の値と、SRC2オペランドと関連付けられている値とが比較される(すなわち、別のエージェントによる変更のために、現在の値は最初にコピーされた値とは異なっている可能性がある)。値の変更がなかった場合には、その値は、SRC3オペランドと関連付けられている値で置き換えられて、更新が成功したことを示すべく、ゼロフラグが設定される。最初のコピーと比較/交換(compare-exchange)オペレーションとの間に、別のエージェントが値を変更していた場合には、現在の値は置き換えられず、更新が失敗したことを示すべくゼロフラグがクリアされる。
【0025】
図4のブロック図には、命令40が実行される時の情報のフローが示されている。プロセッシングユニット11は、実行ユニット46(例えば、図2のDAC24)、レジスタファイル29、BIU23及びデコーダ21を含み、これらは全てローカルバス19によって結合されている。レジスタファイル29は、様々なオペレーションを実行するために、実行ユニット46によってアクセスされる複数のレジスタを含む。図4に示すように、VCMPXCHG命令40は、実行ユニット46内に存在するように示されており、点線が、命令のオペランドから対応するSRC1、SRC2、SRC3及びDESTと関連付けられているレジスタに向かって示されている。複数のレジスタが、レジスタファイル29内に存在する。実行ユニット46がオペレーションを実行するために、デコーダ21を使用して、(VCMPXCHG命令40を含む)様々な命令をデコードする。
【0026】
図1及び図2で記載したメモリ12が、バス19及び/又はバス22によってBIU23と結合されている様子が示されている。また、プロセッシングユニット11とメモリ12との間のデータ転送が、BIU54a又はローカルバス19を介して発生してもよい。VCMPXCHG命令40を利用したプログラムルーチンは、メモリ12であってもよい、又は、メモリ12を含むメモリ内に存在してもよい。
【0027】
次の表に示す疑似コードには、VCMPXCHG命令40がどのように動作するかの例が示されている。その他の疑似コード、言語、オペレーション、オペレーションの順番及び/又は数を使用してもよい。
【表1】

【0028】
表には、VEX.128及びVEX.256の具体的な例が示されており、ロック値が、SRC1/DESTによって参照される512ビット記憶ロケーション(例えば、64バイトキャッシュライン又はレジスタ)のビット[127:0]及びビット[255:0]にそれぞれ格納される。一実施形態において、SRC1/DESTによって参照されるロック値と、これらに対応する共有記憶ロケーション15との間には、1対1の関係が存在する。例えば、SRC1/DESTは、16個の8ビットロック値(128ビット)を参照して、ロック値各々は、キャッシュライン又はSIMDレジスタ内の16個の記憶ロケーションのうちの1つに対応している。これに替えて、SRC1/DESTは、32個の8ビットロック値(256ビット)を参照してもよく、8ビットロック値の各々は、キャッシュライン又はSIMDレジスタ内の32個の記憶ロケーションのうちの1つに対応する。
【0029】
上記の例に戻り、SRC1/DESTとSRC2との比較結果は、ロック値が変更されたかを示す。真(true)の条件は、ロックが変更されて、ロックがアンロック状態であることを示す。この条件を満たす場合、SRC3によって参照される値が、SRC1/DESTに書き込まれて、ロック値がロックされた状態に変更され、その他のエージェントが共有空間へアクセスするのを防ぐ。その後、オペレーションが成功したことを示すべく、ゼロフラグ(ZF)が設定される。
【0030】
偽(false)の条件は、1以上のロックが変更され(ロックされて)、別のエージェントが共有スペースのオーナーシップを取得したことを示す。条件が偽である場合、SRC1/DESTによって参照される値が、SRC2に格納されて、オペレーションが成功しなかったことを示すべくゼロフラグがクリアされる。そして、オペレーションから戻る前に、SRC2の上位バイトがクリアされる。
【0031】
一般的に、アクセスが最初に拒否され、問い合わせを行っているエージェントが、アクセスを取得するまでアクセスへのリトライを継続する。ある実装形態では、外側ループが、不可分でないロードを含み、VCMPXCHG命令40を再実行する前に検証を行う。プロセッサが共有メモリ空間15へのアクセスを一旦完了させると、プロセッサは、共有メモリ空間15に対する制御を解放して、ロック16の書き込みサイクルでアンロックし、その他のエージェントが共有メモリ空間15へのエントリを取得できるようにする。しかしながら、プロセッサがこのように共有メモリ空間を開放する構成は設計選択事項であり、システム構成によって決定されてもよい。
【0032】
ある実装形態では、VCMPXCHG命令40は、それぞれが、複数のマスク要素を有するマスクベクトルを含み、マスク要素各々はSRC1/DESTによって参照される複数のデータ要素のうちの1つに対応する。マスクベクトル記憶ロケーションは、レジスタファイルユニット29内のレジスタであってもよく、例えば、シャドウレジスタ(shadow register)、制御レジスタ、フラグレジスタ、汎用レジスタ、SIMDレジスタ又はその他の好適なレジスタであってもよい。一実施形態において、SRC1/DESTによって参照されるデータ要素と、マスクレジスタ格納されている対応するマスク要素との間には、一対一の関係が存在する。マスク要素又はマスク値は、(例えば、対応する又は示されたレジスタロケーションにおける)対応するデータ要素が比較された及び/又は変更されたことを示す、フラグ、マーカー、タブ、インジケータ及び/又はその他の数、ビット及び/又はコードを含んでもよい。例えば、値"1"を有するマスク要素は、対応するデータ要素が変更されることを示し、それ以外の場合には、値"0"が使用されてもよい。無論、その他の数又はフラグを使用してもよい。
【0033】
表2には、マスクされたVCMPXCHGD及びVCMPXCHGQ命令の例がそれぞれ、16幅の512バイトベクトル、及び8幅の512バイトベクトルの疑似コードで示されている。マスクされたコンペア(比較)実装では、アクティブな要素のみが比較及び更新される。
【表2】

【0034】
表2に示した具体的なVCMPXCHGD及びVCMPXCHGQの例において、変数ALL CMPS SUCCEEDが最初に1にプリセットされる(すなわち、真の状態)。設定されると、アクティブなマスク要素の各々(例えば、例えば、2進数の1、又は、16進数の0x01、0xFF又は0x80を含む格納されている特定の値を有するマスク要素)に対して、SRC1/DESTが参照する対応する記憶ロケーションと、SRC2における対応するビットによって参照される値との比較が行われる。マスクが使用されない場合、SRC1/DESTによって参照される記憶ロケーションの各々は、SRC2における対応するビットによって参照される値と比較される。
【0035】
SRC1/DESTの値と、SRC2の対応する値との間の比較結果は、特定のロック値が変更されたか否かを示す。上記の例では、真の条件(すなわち、一致しない条件)は、ロックが変更され、別のエージェントが、共有記憶ロケーションのオーナーシップを取ったことを示す。参照される記憶ロケーションのうちの何れか1つがこの条件を満たす場合、ALL CMPS SUCCEEDがクリアされて、全ての比較が成功しなかったことが示される。その後、ゼロフラグがクリアされて、アクティブなマスク要素各々に対して、SRC1/DESTによって参照される対応する記憶ロケーションに格納されている値が、SRC2の対応するビットにロードされる。
【0036】
比較結果が偽である(すなわち、アクティブなマスク要素の各々について、SRC1/DESTによって参照される対応する値が、SRC2における対応する値と一致する)場合には、ALL CMPS SUCCEEDは、変わることなく設定され続ける。その後、ゼロフラグ(ZF)が設定されて、アクティブなマスク要素各々について、SRC3における対応する記憶ロケーションに格納された値が、SRC1/DESTにおける対応するビットにロードされ、その他のエージェントが共有空間へアクセスすることを防ぐべく、ロック値がロックされた状態に変更される。
【0037】
図5のブロック図は、命令40が実行される時の情報のフローの別の例を示している。図5に示すように、VCMPXCHG命令40は、実行ユニット46内に存在するように示されており、点線が、命令のオペランドから対応するSRC2、SRC3及びMSKと関連付けられているレジスタに向かって示されている。この例では、マスク記憶ロケーション(MSK)は、マスクレジスタであり、SRC1/DESTと関連付けられている記憶ロケーションは、L1キャッシュである。レジスタは、レジスタファイルユニット29内に存在する。
【0038】
命令40の実行の前に、SRC1がL1キャッシュにプリフェッチされて、SRC2、SRC3及びMSKのデータが、レジスタファイルユニット29内のレジスタにロードされる。マスクレジスタは、SRC1/DESTオペランドと関連付けられている記憶ロケーションにおけるデータ要素各々に対応する複数のマスク要素を格納する。また、比較値が、最初にSRC2オペランドによって規定されるロケーションに読み込まれて、置換値が、SRC3オペランドによって規定されるロケーションに読み込まれる。そして、命令40が実行されて、実行ユニット46は、SRC1/DESTと関連付けられた対応するデータ要素とSRC2オペランドと関連付けられた対応するデータ要素とを比較し、一致する場合には、SRC1/DESTからのデータ要素を、SRC3からの対応するデータ要素で置き換える。一致しない場合には、命令40の実行により、実行ユニット46がSRC2データ要素を、対応するSRC1/DESTデータ要素で置き換える。
【0039】
ある実装形態では、SRC1/DESTデータ要素とSRC2データ要素との比較は、対応するマスク要素がアクティブである場合にのみ実行される。ある実装形態では、実行ユニット46は更に、対応するマスク要素がアクティブである対応するデータ要素の各組において一致が存在する場合にはフラグを設定し、対応するマスク要素がアクティブである対応するデータ要素の複数の組のうちの何れかにおいて一致が存在しない場合には、フラグをクリアする。また、ある実装形態では、SRC1/DESTデータ要素の、対応するSRC3データ要素による置き換えは、各SRC1/DESTデータ要素に対応するマスク要素がアクティブである場合にのみ実行される。また、ある実装形態では、SRC2データ要素の対応するSRC1/DESTデータ要素での置き換えは、SRC1/DESTデータ要素に対応するマスク要素がアクティブである場合にのみ実行される。
【0040】
ある実施形態では、ロックされている状態を示すロック値は、アクティブであるマスク要素を示すマスク値と同様であってもよい(例えば、2進数の1)。この場合、SRC3を、マスクベクトル及びロック値置換ベクトルの両方として使用してもよい。
【0041】
ある実装形態では、比較/交換オペレーションは、SRC2オペランドと関連付けられている値の更新を行わずに、実行を完了してもよい。その後、フラグ(例えば、ゼロフラグ)の検証が行われ、フラグが、SRC1/DESTオペランドと関連付けられている値に対して更新オペレーションが失敗したことを示している場合には、比較/交換オペレーションの前の段階が繰り返されて、比較/交換オペレーションを再度行う前に、SRC2及びSRC3と関連付けられている値を更新する。
【0042】
1以上の実施形態が、SIMD命令を格納する有形機械アクセス可能媒体及び/又は機械可読媒体を含む製造物品を含み、SIMD命令は、複数のデータ要素に対するベクトル比較/交換オペレーションを規定しており、複数のデータ要素の各々は、対応するテスト要素、置換要素及びマスク要素を有し、機械(例えば、実行ユニット)によって実行されると、機械に、マスク要素各々がアクティブである場合には、データ要素と対応するテスト要素とを比較させ、全ての比較結果が一致を示しているとの判断に応答して、フラグを設定し、比較されたデータ要素を対応する置換要素で置き換え、全ての比較結果が一致を示していないとの判断に応答して、フラグをクリアし、比較されたテストデータ要素を対応するデータ要素で置き換える。有形媒体は、1以上の固形材料を含んでもよい。媒体は、例えば、機械によってアクセス可能な形式で状態を格納することを提供するメカニズムを含んでもよい。媒体としては、必要に応じて、フロッピー(登録商標)ディスケット、光記憶媒体、光ディスク、CD−ROM、磁気ディスク、磁気光学ディスク、リードオンリーメモリ(ROM)、プログラム可能ROM(PROM)、消去可能−プログラム可能ROM(EPROM)、電気的消去可能−プログラム可能リードオンリーメモリ(EEPROM)、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、及びこれらの組み合わせを含んでもよい。
【0043】
好適な機械としては、これに限定されないが、例えば、汎用プロセッサ、特殊用途プロセッサ(例えば、グラフィックスプロセッサ及び暗号化プロセッサ)、暗号化アクセラレータ、ネットワーク通信プロセッサ、コンピュータシステム、ネットワークデバイス、モデム、パーソナル・デジタル・アシスタンス(PDA)、携帯電話、及び、1以上の実行ユニットを有するその他様々な電子デバイスが含まれる。また、その他の実施形態は、コンピュータシステム、組み込みシステム、又は、実行ユニットを有する及び/又は本明細書に開示される方法を実行するその他の電子デバイスに関する。
【0044】
図6には、プロセッサ51を含む好適なコンピュータシステム50の一例が示されている。プロセッサは、少なくとも1つのベクトル比較/交換オペレーション53を実行可能な少なくとも1つの実行ユニット52を含む。
【0045】
プロセッサは、バス(例えば、フロントサイドバス)又はその他のインターコネクト55を介して、チップセット54と結合される。チップセットを介してプロセッサとシステム内のその他の構成要素との間でデータ信号を送信するのに、インターコネクトを使用してもよい。
【0046】
チップセットは、メモリコントローラハブ(MCH)56として知られるシステムロジックチップを含む。MCHは、フロントサイドバス又はその他のインターコネクト55と結合される。
【0047】
メモリ58が、MCHと結合される。様々な実施形態において、メモリは、ランダムアクセスメモリ(RAM)を含む。DRAMは、コンピュータシステムの一部で使用されているRAMの一種の例であり、全てのコンピュータシステムで使用されているわけではない。図に示すように、メモリは、1以上の乗算命令及びデータ60のような命令59を格納するのに使用されてもよい。
【0048】
コンポーネントインターコネクト61も、MCHと結合される。1以上の実施形態において、コンポーネントインターコネクトは、1以上の周辺コンポーネントインターコネクトエクスプレス(PCIe)を含んでもよい。コンポーネントインターコネクトは、チップセットを介した、その他の構成要素とシステムの残りの部分との結合を可能にする。このようなコンポーネントの一例として、グラフィックスチップ又はその他のグラフィックスデバイスが挙げられ、これは必要に応じて設けられる構成であり、必須の構成ではない。
【0049】
また、チップセットは、入出力(I/O)コントローラハブ(ICH)62を含む。ICHは、ハブインターフェースバス又はその他のインターコネクト63を通じて、MCHと結合する。1以上の実施形態において、バス又はその他のインターコネクト63は、ダイレクト・メディア・インターフェース(DMI)を含んでもよい。
【0050】
データストレージ(記憶装置)64が、ICHと結合される。様々な実施形態において、データストレージは、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス等、又は、これらの組み合わせを含んでもよい。
【0051】
第2コンポーネントインターコネクト65も、ICHと結合される。1以上の実施形態において、第2コンポーネントインターコネクトは、1以上の周辺コンポーネント・インターコネクト・エクスプレス(PCIe)インターフェースを含んでもよい。第2コンポーネントインターコネクト65は、チップセットを介した、様々な種類の構成要素とシステムの残りの部分との結合を可能にする。
【0052】
シリアル拡張ポート66も、ICHに結合される。1以上の実施形態において、シリアル拡張ポートは、1以上のユニバーサル・シリアル・バス(USB)ポートを含んでもよい。シリアル拡張ポートは、チップセットを介した、その他の様々な種類の入出力デバイスとシステムの残りの部分との結合を可能にしてもよい。
【0053】
必要に応じてICHと結合されてもよいその他の構成要素の例としては、これに限定されないが、オーディオコントローラ、無線送受信機、及び、ユーザー入力デバイス(例えば、キーボード、マウス)が含まれる。
【0054】
ネットワークコントローラ67も、ICHに結合されてもよい。ネットワークコントローラは、システムをネットワークに接続することを可能にする。
【0055】
一以上の実施形態において、コンピュータシステムは、ワシントン、リッチモンドに本社を置くマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)オペレーティングシステムの1バージョンを実行可能であってもよい。これに替えて、例えば、UNIX(登録商標)、リナックス(登録商標)又は組み込みシステムのようなその他のオペレーティングシステムを使用してもよい。
【0056】
これは、好適なコンピュータシステムの特定の一例に過ぎない。例えば、1以上の別の実施形態において、プロセッサは、複数のコアを有してもよい。その他の例として、1以上の別の実施形態では、MCH56は、物理的にプロセッサ51とオンダイで一体化されていてもよく、プロセッサが、一体化されたMCHを介して、メモリ58と直接結合されていてもよい。更なる例として、1以上の別の実施形態では、その他の構成要素は、例えば、システムオンチップ(SoC)設計を提供するような態様で、プロセッサとオンダイで集積化されていてもよい。更なる別の例として、1以上の別の実施形態では、コンピュータシステムは複数のプロセッサを有してもよい。
【0057】
図7には、好適なコンピュータシステム70の別の例が示されている。第2の例示的実施形態は、上記のコンピュータシステム50と一部、同様な構成を有する。明瞭化のため、以下では、同様な構成の全てを繰り返して説明せず、違う構成に注目して説明する。
【0058】
コンピュータシステム50と同様に、コンピュータシステム70は、プロセッサ71、及び、I/Oコントローラハブ(ICH)72を有するチップセット74を含む。コンピュータシステム70はまた、チップセット74と結合された第1コンポーネントインターコネクト81、ICHと結合された第2コンポーネントインターコネクト85、ICHと結合されたシリアル拡張ポート86、ICHと結合されたネットワークコントローラ87、及び、ICHと結合されたデータストレージ84を含む。
【0059】
プロセッサ71は、マルチコアプロセッサであって、複数のプロセッサコア72−1〜72−Mを含み、ここで、Mは、2以上の整数である(例えば、2、4、7等)。コアはそれぞれ、本明細書に開示したような命令の少なくとも1つの実施形態を実行可能な少なくとも1つの実行ユニットを含んでもよい。図に示すように、コア1は、キャッシュ88(例えば、L1キャッシュ)を含む。その他の複数のコアはそれぞれ同様に、専用キャッシュを含んでもよい。プロセッサコアは、1つの集積回路(IC)チップに実装されてもよい。
【0060】
プロセッサはまた、少なくとも1つの共有キャッシュ89を含む。共有キャッシュは、コアのようなプロセッサの1以上の構成要素によって使用されるデータ(例えば、命令)を格納してもよい。例えば、共有キャッシュは、プロセッサの構成要素によるアクセスを高速にするために、メモリ78に格納されるデータをローカルにキャッシュしてもよい。1以上の実施形態において、共有キャッシュは、レベル2(L2)、レベル3(L3)、レベル4(L4)又はその他のレベルのキャッシュのような中間レベルのキャッシュ、ラストレベルキャッシュ(LLC)及び/又はこれらの組み合わせを含んでもよい。
【0061】
プロセッサコア及び共有キャッシュはそれぞれ、バス又はその他のインターコネクト90と結合される。バス又はその他のインターコネクトは、コアと共有キャッシュとを結合して、通信を可能としてもよい。
【0062】
プロセッサはまた、メモリコントローラハブ(MCH)76を含む。例示した実施形態に示されるように、MCHは、プロセッサ71と集積される。例えば、MCHは、プロセッサコアと共に、オンダイで配置されてもよい。プロセッサは、MCHを介してメモリ78と結合される。1以上の実施形態において、メモリは、DRAMを含んでもよいが、必ずしも必須の構成ではない。
【0063】
チップセットは、入出力(I/O)ハブ91を含む。I/Oハブは、バス(例えば、クイックパスインターコネクト:QuickPath Interconnect(QPI))又はその他のインターコネクト75を介してプロセッサと結合される。第1コンポーネントインターコネクト81が、I/Oハブ91と結合される。
【0064】
これは、好適なシステムの1つの特定な例である。当技術分野において、ラップトップ、デスクトップ、携帯型PC、パーソナル・デジタル・アシスタント、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤー、携帯デバイス、及び、その他の電子デバイスにおいて知られているシステム設計及び構成が好適である。一般的に、本明細書に開示されるようなプロセッサ及び/又は実行ユニットを組みこむことが可能な多様なシステム又は電子デバイスが、好適である。
【0065】
上記の説明では、説明の目的から、本発明の実施形態の完全な理解を提供するべく、数多くの詳細事項が記載されている。しかしながら、当業者であれば、これら詳細事項の一部がなくとも1以上のその他の実施形態を実施可能であることは理解できる。上記の特定の実施形態は、本発明を限定するのでなく、本発明の実施形態を例示するために提供されている。本発明の範囲は、上記で提供された具体的な例によって決定されるのではなく、添付の特許請求の範囲によってのみ決定される。また、説明を不明瞭にしない目的から、他の場合においては、周知の回路、構造、デバイス及びオペレーションについては、ブロック図の形式で示され、その詳細な説明を省略している。さらに、適切であると考えられる場合、同様な特性を有する場合がある対応する又は類似する要素を示すのに、参照番号及び参照番号の末尾部分が図面間で繰り返し使用されている。
【0066】
あるオペレーションは、ハードウェアコンポーネントによって実行されてもよい、又は、命令でプログラムされた回路又はハードウェアにオペレーションを実行させる機械実行可能命令に実現されてもよい。回路は、例を挙げると、汎用プロセッサ、特殊用途プロセッサ又はロジック回路を含んでもよい。オペレーションは、必要に応じて、ハードウェア及びソフトウェアの組み合わせによって実行されてもよい。実行ユニット及び/又はプロセッサは、機械命令から導出された1以上の信号又は機械命令に応答して、命令が特定した結果のオペランドを格納する固有の又は特定の回路又はその他のロジックを含んでもよい。
【0067】
また、「一実施形態」、「ある実施形態」、「1以上の実施形態」等は、本発明の実施形態の実行において、特定の特徴が含まれてもよいことを意味する。同様に、開示を簡潔にし、様々な発明の側面の理解を助けるべく、記載される様々な特徴は、1つの実施形態、図面又はその説明に共に組み込まれている場合がある。しかしながら、開示の方法は、本発明が、請求項各々に明示的に記載されるよりも多い数の特徴を必要とすることを意図していると解釈されるべきではない。添付の特許請求の範囲は、開示された1つの実施形態の全ての特徴よりも少ない発明の側面を反映している。したがって、詳細な説明に続く特許請求の範囲は、明示的に詳細な説明の章に組み込まれ、請求項の各々は、発明の別個の実施形態として独立している。
【0068】
本発明の複数の実施形態が記載された。しかしながら、本発明の範囲及び精神の範囲内において、様々な変形が可能であることは明らかである。例えば、コンピュータシステムは、複数のプロセッサ又はメモリアクセスデバイスを有するコンピュータシステムに限定されない。本発明は、読み出し−修正−書き込み命令が実装される1つのプロセッサシステムにおいて、容易に利用される。
【0069】
また、メモリの共有空間へのアクセス制御は、上記の例で説明した検証及び設定シーケンス以外の手段によっても達成可能である。例えば、アクセス毎に特定のカウント値でインクリメントされる単純なカウンタを使用することができる。
【0070】
好ましい実施形態のVCMPXCHG命令は、読み出し−変換−書き込みオペレーションを実行するが、変換及び書き込み段階は、基本的に1つの段階で達成されることは理解される。元のデータを読み出した後に変更値を計算して、変更値を書き込む替わりに、VCMPXCHG命令の変更値が、命令による使用のために、予め設定される。変更値を使用するか否かは、比較によって取得される決定に依存するが、現在の変更値(SRC3)を、すぐに、宛先に書き込んで、宛先値を変更してもよい。
【0071】
そして、マスクを利用するベクトル比較/交換オペレーションを実装する技術が記載された。本明細書に記載されたVCMPXCHG命令及び実装は、別の可能性においても利用することができ、共有メモリ空間へのアクセス制御機能に必ずしも限定される必要はない。例えば、VCMPXCHG命令は、SIMDオペレーションが複数のデータ要素について実行され、オペレーションの間に別のエージェントによってデータ要素が変更されていない場合には、共有メモリ空間にその結果が書き込まれるだけである投機的実行に適用してもよい。その他の実施形態が、添付の特許請求の範囲内に含まれる。

【特許請求の範囲】
【請求項1】
プロセッシングデバイス内のデコーダによって、第1記憶ロケーション、第2記憶ロケーション及び第3記憶ロケーションの間の複数のデータ要素に対するベクトル比較/交換オペレーションを規定する単一命令をデコードする段階と、
前記プロセッシングデバイス内の実行ユニットによって実行するために、前記単一命令を発行する段階と、
前記単一命令の前記実行に応答して、前記第1記憶ロケーションからのデータ要素と、前記第2記憶ロケーションにおける対応するデータ要素とを比較する段階と、
一致が存在するかに応じて、前記第1記憶ロケーションからの前記データ要素を、前記第3記憶ロケーションからの対応するデータ要素で置き換える段階と
を備える方法。
【請求項2】
前記単一命令は更に、前記第1記憶ロケーションにおけるデータ要素各々に対応する複数のマスク要素を格納するマスク記憶ロケーションを規定する請求項1に記載の方法。
【請求項3】
前記第1記憶ロケーションからのデータ要素と、前記第2記憶ロケーションにおける対応するデータ要素とを比較する段階は、
前記第1記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第1記憶ロケーションからのデータ要素と、前記第2記憶ロケーションにおける対応するデータ要素とを比較することを含む請求項2に記載の方法。
【請求項4】
前記第1記憶ロケーションからの前記データ要素を、前記第3記憶ロケーションからの対応するデータ要素で置き換える段階は、
前記第1記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第1記憶ロケーションからの前記データ要素を、前記第3記憶ロケーションからの対応するデータ要素で置き換えることを含む請求項2に記載の方法。
【請求項5】
一致が存在しない場合に、前記第2記憶ロケーションからの前記データ要素を、前記第1記憶ロケーションからの対応するデータ要素で置き換える段階を更に備える請求項1に記載の方法。
【請求項6】
前記単一命令は更に、前記第1記憶ロケーションにおけるデータ要素各々に対応する複数のマスク要素を格納するマスク記憶ロケーションを規定する請求項5に記載の方法。
【請求項7】
前記第1記憶ロケーションからのデータ要素と、前記第2記憶ロケーションにおける対応するデータ要素とを比較する段階は、
前記第1記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第1記憶ロケーションからのデータ要素と、前記第2記憶ロケーションにおける対応するデータ要素とを比較することを含む請求項6に記載の方法。
【請求項8】
前記第1記憶ロケーションからの前記データ要素を、前記第3記憶ロケーションからの対応するデータ要素で置き換える段階は、
前記第1記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第1記憶ロケーションからの前記データ要素を、前記第3記憶ロケーションからの対応するデータ要素で置き換えることを含む請求項6に記載の方法。
【請求項9】
前記第2記憶ロケーションからの前記データ要素を、前記第1記憶ロケーションからの対応するデータ要素で置き換える段階は、
前記第1記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第2記憶ロケーションからの前記データ要素を、前記第1記憶ロケーションからの対応するデータ要素で置き換えることを含む請求項6に記載の方法。
【請求項10】
第1の複数のデータ要素と、前記第1の複数のデータ要素のうちの1つとそれぞれ対応している第2の複数のデータ要素及び第3の複数のデータ要素とを格納する記憶ロケーションと、
前記第1の複数のデータ要素、前記第2の複数のデータ要素及び前記第3の複数のデータ要素に対するベクトル比較/交換オペレーションを規定する単一命令をデコードするデコーダと、
デコードされた命令を受信するべく前記デコーダと結合され、前記ベクトル比較/交換オペレーションを実行するべく前記記憶ロケーションと結合される実行ユニットと
を備え、
前記ベクトル比較/交換オペレーションの実行に応答して、前記実行ユニットは、
前記第1の複数のデータ要素からのデータ要素と、前記第2の複数のデータ要素からの対応するデータ要素とを比較し、
一致が存在するとの判断に応答して、前記第1の複数のデータ要素からのデータ要素を、前記第3の複数のデータ要素からの対応するデータ要素で置き換える、プロセッサ。
【請求項11】
前記ベクトル比較/交換オペレーションの実行に応答して、前記実行ユニットは更に、
一致が存在しない場合に、前記第2の複数のデータ要素からのデータ要素を、前記第1の複数のデータ要素からの対応するデータ要素で置き換える請求項10に記載のプロセッサ。
【請求項12】
前記単一命令は更に、前記第1の複数のデータ要素におけるデータ要素各々に対応する複数のマスク要素を格納するマスク記憶ロケーションを規定する請求項11に記載のプロセッサ。
【請求項13】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第1の複数のデータ要素からのデータ要素と、前記第2の複数のデータ要素からの対応するデータ要素とを比較する請求項12に記載のプロセッサ。
【請求項14】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第1の複数のデータ要素からの前記データ要素を、前記第3の複数のデータ要素からの対応するデータ要素で置き換える請求項12に記載のプロセッサ。
【請求項15】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第2の複数のデータ要素からのデータ要素を、前記第1の複数のデータ要素からの対応するデータ要素で置き換える請求項12に記載のプロセッサ。
【請求項16】
前記実行ユニットは、前記ベクトル比較/交換オペレーションを不可分操作として実行する請求項12に記載のプロセッサ。
【請求項17】
前記ベクトル比較/交換オペレーションの実行に応答して、前記実行ユニットは更に、
対応するマスク要素がアクティブである対応するデータ要素の各組において一致が存在する場合には、フラグを設定し、
一致が存在しない場合には、前記フラグをクリアする請求項12に記載のプロセッサ。
【請求項18】
第1の複数のデータ要素を格納する第1記憶ロケーションと結合されるメモリコントローラと、
前記メモリコントローラと結合されるプロセッサとを備え、
前記プロセッサは、
前記第1の複数のデータ要素のうちの1つとそれぞれ対応している第2の複数のデータ要素及び第3の複数のデータ要素を格納するレジスタファイルと、
前記第1の複数のデータ要素、前記第2の複数のデータ要素及び前記第3の複数のデータ要素に対するベクトル比較/交換オペレーションを規定する単一命令をデコードするデコーダと、
デコードされた命令を受信するべく前記デコーダと結合され、前記ベクトル比較/交換オペレーションを実行するべく前記記憶ロケーションと結合される実行ユニットと
を有し、
前記ベクトル比較/交換オペレーションの実行に応答して、前記実行ユニットは、
前記第1の複数のデータ要素からのデータ要素と、前記第2の複数のデータ要素からの対応するデータ要素とを比較し、
一致が存在するとの判断に応答して、前記第1の複数のデータ要素からのデータ要素を、前記第3の複数のデータ要素からの対応するデータ要素で置き換え、
一致が存在しないとの判断に応答して、前記第2の複数のデータ要素からのデータ要素を、前記第1の複数のデータ要素からの対応するデータ要素で置き換える、システム。
【請求項19】
前記単一命令は更に、前記第1の複数のデータ要素におけるデータ要素各々に対応する複数のマスク要素を格納するマスクレジスタを規定する請求項18に記載のシステム。
【請求項20】
前記実行ユニットは更に、
マスク要素各々がアクティブである場合に、前記第1の複数のデータ要素からの対応するデータ要素及び前記第2の複数のデータ要素からの対応するデータ要素の複数の組を比較し、
比較結果がそれぞれ一致である場合には、フラグを設定し、
比較結果がそれぞれ一致でない場合には、前記フラグをクリアする請求項19に記載のシステム。
【請求項21】
前記実行ユニットは、前記ベクトル比較/交換オペレーションを不可分操作として実行する請求項20に記載のシステム。
【請求項22】
命令を格納するコンピュータ可読媒体であって、
前記命令により、プロセッサは、
各々が対応するテスト要素、置換要素及びマスク要素を有する複数のデータ要素に対するベクトル比較/交換オペレーションを規定する単一命令をデコードし、
マスク要素各々がアクティブである場合には、データ要素と対応するテスト要素とを比較し、
全ての比較結果が一致を示しているとの判断に応答して、フラグを設定し、比較されたデータ要素を対応する置換要素で置き換え、
全ての比較結果が一致を示していないとの判断に応答して、フラグをクリアし、比較されたテストデータ要素を対応するデータ要素で置き換えるコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2012−531682(P2012−531682A)
【公表日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2012−517936(P2012−517936)
【出願日】平成22年11月29日(2010.11.29)
【国際出願番号】PCT/US2010/058238
【国際公開番号】WO2011/087590
【国際公開日】平成23年7月21日(2011.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】