(57)【特許請求の範囲】
【請求項１】
プロセッシングデバイス内のデコーダによって、第１記憶ロケーション、第２記憶ロケーション及び第３記憶ロケーションの間の複数のデータ要素に対するベクトル比較／交換オペレーションを規定する単一命令をデコードする段階と、
前記プロセッシングデバイス内の実行ユニットによって実行するために、前記単一命令を発行する段階と、
前記単一命令の実行に応答して、前記第１記憶ロケーションからのデータ要素と、前記第２記憶ロケーションにおける対応するデータ要素とを比較する段階と、
一致が存在するかに応じて、前記第１記憶ロケーションからの前記データ要素を、前記第３記憶ロケーションからの対応するデータ要素で置き換える段階と、
一致が存在しないとの判断に応じて、前記第２記憶ロケーションからの前記データ要素を、前記第１記憶ロケーションからの対応するデータ要素で置き換える段階と、
を備える方法。
【請求項２】
前記単一命令は更に、前記第１記憶ロケーションにおけるデータ要素各々に対応する複数のマスク要素を格納するマスク記憶ロケーションを規定する請求項１に記載の方法。
【請求項３】
前記第１記憶ロケーションからのデータ要素と、前記第２記憶ロケーションにおける対応するデータ要素とを比較する段階は、
前記第１記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第１記憶ロケーションからのデータ要素と、前記第２記憶ロケーションにおける対応するデータ要素とを比較することを含む請求項２に記載の方法。
【請求項４】
前記第１記憶ロケーションからの前記データ要素を、前記第３記憶ロケーションからの対応するデータ要素で置き換える段階は、
前記第１記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第１記憶ロケーションからの前記データ要素を、前記第３記憶ロケーションからの対応するデータ要素で置き換えることを含む請求項２または３に記載の方法。
【請求項５】
前記第２記憶ロケーションからの前記データ要素を、前記第１記憶ロケーションからの対応するデータ要素で置き換える段階は、
前記第１記憶ロケーションからの前記データ要素に対応するマスク要素がアクティブである場合に、前記第２記憶ロケーションからの前記データ要素を、前記第１記憶ロケーションからの対応するデータ要素で置き換えることを含む請求項２から４のいずれか一項に記載の方法。
【請求項６】
一致が存在することを条件として、フラグを設定し、
一致が存在しないことを条件として、前記フラグをクリアする
請求項１から５のいずれか一項に記載の方法。
【請求項７】
第１の複数のデータ要素と、前記第１の複数のデータ要素のうちの１つとそれぞれ対応している第２の複数のデータ要素及び第３の複数のデータ要素とを格納する記憶ロケーションと、
前記第１の複数のデータ要素、前記第２の複数のデータ要素及び前記第３の複数のデータ要素に対するベクトル比較／交換オペレーションを規定する単一命令をデコードするデコーダと、
デコードされた命令を受信するべく前記デコーダと結合され、前記ベクトル比較／交換オペレーションを実行するべく前記記憶ロケーションと結合される実行ユニットと
を備え、
前記ベクトル比較／交換オペレーションの実行に応答して、前記実行ユニットは、
前記第１の複数のデータ要素からのデータ要素と、前記第２の複数のデータ要素からの対応するデータ要素とを比較し、
一致が存在するとの判断に応答して、前記第１の複数のデータ要素からのデータ要素を、前記第３の複数のデータ要素からの対応するデータ要素で置き換え、
一致が存在しない場合に、前記第２の複数のデータ要素からのデータ要素を、前記第１の複数のデータ要素からの対応するデータ要素で置き換える、プロセッサ。
【請求項８】
前記単一命令は更に、前記第１の複数のデータ要素におけるデータ要素各々に対応する複数のマスク要素を格納するマスク記憶ロケーションを規定する請求項７に記載のプロセッサ。
【請求項９】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第１の複数のデータ要素からのデータ要素と、前記第２の複数のデータ要素からの対応するデータ要素とを比較する請求項８に記載のプロセッサ。
【請求項１０】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第１の複数のデータ要素からの前記データ要素を、前記第３の複数のデータ要素からの対応するデータ要素で置き換える請求項８または９に記載のプロセッサ。
【請求項１１】
前記実行ユニットは、マスク要素各々がアクティブの場合に、前記第２の複数のデータ要素からのデータ要素を、前記第１の複数のデータ要素からの対応するデータ要素で置き換える請求項８から１０のいずれか一項に記載のプロセッサ。
【請求項１２】
前記実行ユニットは、前記ベクトル比較／交換オペレーションを不可分操作として実行する請求項８から１１のいずれか一項に記載のプロセッサ。
【請求項１３】
前記ベクトル比較／交換オペレーションの実行に応答して、前記実行ユニットは更に、
対応するマスク要素がアクティブである対応するデータ要素の各組において一致が存在する場合には、フラグを設定し、
一致が存在しない場合には、前記フラグをクリアする請求項７から１２のいずれか一項に記載のプロセッサ。
【請求項１４】
第１の複数のデータ要素を格納する第１記憶ロケーションと結合されるメモリコントローラと、
前記メモリコントローラと結合されるプロセッサとを備え、
前記プロセッサは、
前記第１の複数のデータ要素のうちの１つとそれぞれ対応している第２の複数のデータ要素及び第３の複数のデータ要素を格納するレジスタファイルと、
前記第１の複数のデータ要素、前記第２の複数のデータ要素及び前記第３の複数のデータ要素に対するベクトル比較／交換オペレーションを規定する単一命令をデコードするデコーダと、
デコードされた命令を受信するべく前記デコーダと結合され、前記ベクトル比較／交換オペレーションを実行するべく前記記憶ロケーションと結合される実行ユニットと
を有し、
前記ベクトル比較／交換オペレーションの実行に応答して、前記実行ユニットは、
前記第１の複数のデータ要素からのデータ要素と、前記第２の複数のデータ要素からの対応するデータ要素とを比較し、
一致が存在するとの判断に応答して、前記第１の複数のデータ要素からのデータ要素を、前記第３の複数のデータ要素からの対応するデータ要素で置き換え、
一致が存在しないとの判断に応答して、前記第２の複数のデータ要素からのデータ要素を、前記第１の複数のデータ要素からの対応するデータ要素で置き換える、システム。
【請求項１５】
前記単一命令は更に、前記第１の複数のデータ要素におけるデータ要素各々に対応する複数のマスク要素を格納するマスクレジスタを規定する請求項１４に記載のシステム。
【請求項１６】
前記実行ユニットは更に、
マスク要素各々がアクティブである場合に、前記第１の複数のデータ要素からの対応するデータ要素及び前記第２の複数のデータ要素からの対応するデータ要素の複数の組を比較し、
比較結果がそれぞれ一致である場合には、フラグを設定し、
比較結果がそれぞれ一致でない場合には、前記フラグをクリアする請求項１５に記載のシステム。
【請求項１７】
前記実行ユニットは、前記ベクトル比較／交換オペレーションを不可分操作として実行する請求項１４から１６のいずれか一項に記載のシステム。
【請求項１８】
プロセッサに、
各々に対応するテスト要素、置換要素及びマスク要素がある複数のデータ要素に対するベクトル比較／交換オペレーションを規定する単一命令をデコードする段階、
前記単一命令の実行に応答して、マスク要素各々がアクティブである場合には、データ要素と対応するテスト要素とを比較する段階、
全ての比較結果が一致を示しているとの判断に応答して、フラグを設定し、比較されたデータ要素を対応する置換要素で置き換える段階、
全ての比較結果が一致を示していないとの判断に応答して、フラグをクリアし、比較されたテスト要素を対応するデータ要素で置き換える段階
を実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示は、マイクロプロセッサ及びその他のプロセッシングデバイスに関し、より詳細には、ＳＩＭＤベクトルの同期に関する。
【０００２】
例えば、マルチスレッドプロセッサ、複数のプロセッシングデバイス及び／又はマルチコアプロセッサを組み込んだシステムにおける、複数スレッド及び／又はプロセッシングユニット（以下、エージェントと称する）は、しばしば、システム内に格納されているリソース及びデータを共有する必要が生じる。エージェントが最近の及び最新のデータにアクセスすることを確実にし、また、エージェントが、別のエージェントと現在関連付けられているデータにアクセスし及び変更を行わないように対策がとられている。また、データ及びリソース共有を複雑にしている要因として、現代のプロセッシングデバイスは、１以上の専用キャッシュメモリを含むことが挙げられる。マルチプロセッサ及びマルチコアシステム内では、複数のオンチップキャッシュは、多くの場合−現実的には通常、データアイテムの複数のコピーを収容する。したがって、エージェントがデータアイテムのコピーにアクセスする場合、更新された又は有効なデータ値が読み出されることが保証される。
【０００３】
これらのシステムにおいては、"キャッシュコヒーレンシ（coherency）"が維持される。キャッシュコヒーレンシとは、キャッシュメモリから書き出される又は読み込まれるデータの同期のことを指し、スレッド又はプロセッサによってアクセスされるキャッシュに格納されるあらゆるデータアイテムが、そのデータアイテムの最近（most recent）のコピーとなるように同期を行う。また、キャッシュからメインメモリへと書き戻されるあらゆるデータ値は、最新（most current）データとなる。
【０００４】
キャッシュコヒーレンシを維持し、エージェントがデータアイテムを必要とする時に、そのデータアイテムの最新の値がアクセスされるのを確実にする１つの方法として、セマフォ（semaphore）（例えば、フラグ又はロック（lock））の実装がある。ロックは、例えば、（読み込みオペレーションにおいて）エージェントによるメモリからの特定のデータアイテムの要求に応答して、プロセッサ及び／又はスレッド間の同期を確かにするプロセスを含む。一般的に、ロックは、読み出し（read）／読み込み（load）命令、データアイテムを変更する命令、及び、書き込み（write）／格納（store）命令を含む、命令のセットと関連付けられる。本明細書では、"ロックシーケンス"又は"ロックオペレーション"とも称されるロックは、例えば、データを格納するメモリロケーションのオーナーシップを取得した後、その他のプロセスがそのデータの操作を行うことを防ぐと同時に、そのデータに対して不可分操作（atomic operation）を実行し、不可分操作が実行された後にメモリロケーションのオーナーシップを解除することを含んでもよい。不可分操作とは、中断されず、連続的な態様で実行されて、完結される又は全く完結されないことが保証されている（すなわち、オペレーションは分割できない）オペレーションのことである。
【図面の簡単な説明】
【０００５】
【図１】コンピューティングシステムのブロック図である。
【図２】図１に示すようなプロセッシングデバイスの概略図である。
【図３】単一命令複数データ（ＳＩＭＤ）ベクトル比較／交換（compare-and-exchange）命令のエンコーディングスキームを示した図である。
【図４】図３に示した命令フォーマットを実装するコンピュータシステムの第１の例を示したブロック図である。
【図５】図３に示した命令フォーマットを実装するコンピュータシステムの第２の例を示したブロック図である。
【図６】図３に示した命令フォーマットを実装するコンピュータシステムの第３の例を示したブロック図である。
【図７】図３に示した命令フォーマットを実装するコンピュータシステムの第４の例を示したブロック図である。
【発明を実施するための形態】
【０００６】
その他の特徴及び利点が、以下の詳細な説明、図面及び特許請求の範囲から明らかとなるであろう。
【０００７】
以下の詳細な説明では、明細書に記載される例の完全な理解を提供するべく、特定の命令、命令形式、レジスタ及びメモリ等のデバイス等、多くの詳細事項が記される。しかしながら、これら詳細事項がなくとも本発明を実施可能であることは、当業者にとって明らかである。
【０００８】
セマフォがロックされているか（及び／又は、ロックするようにする）を判断する１つの方法は、読み出し−変更―書き込み（read-modify-write）シーケンス（又はオペレーション）の利用である。しかしながら、読み出し−変更―書き込みの実装では、セマフォメカニズム自体の取得及び解放の問題がある。すなわち、プロセッサが共有されているメモリ空間の制御権を得ようと試みる場合、プロセッサは、最初にロック値を読み出し、その値を確認及び変更（許可される場合）した後、変更値をロックに書き戻す。別のプロセッサがロック値を変更してしまうことを防ぐには、通常、読み出し−変更―書き込みオペレーションを不可分操作（すなわち、一旦実行を開始したら、中断されることなく完了される）として実行されることが望ましい。不可分操作を使用することにより、プロセスは、セマフォを取得（読み出し）して、値を変更し（許可される場合）、書き込みを開始することによりセマフォを解放して、別のプロセスがロックを取得するのを試みる前にオペレーションを完結させる。
【０００９】
図１に示すように、コンピュータシステム１０は、バス１３によってメモリ１２（例えば、レジスタ、キャッシュ、ＲＡＭ等）と結合された複数のプロセッシングユニット１１（例えば、プロセッサ、コア、実行ユニット等）を有する。複数のプロセッシングユニット１１のうちの１以上が、１以上のスレッドと関連付けられる。コンピュータシステム１０は、好適な数のプロセッシングユニット１１を含み、プロセッシングユニットはそれぞれ、好適な数のスレッドを有する。複数のプロセッシングユニット１１はそれぞれ、別個の集積回路デバイスの一部を構成してもよい、又は、複数のプロセッシングユニット１１の全て（又はその一部）が、１つのダイ上に形成されていてもよい。特定のコンピュータシステムでは、４つのプロセッシングユニット１１（Ｐ１、Ｐ２、Ｐ３及びＰ４と称される）が、システム１０の一部として示されている。４つのプロセッシングユニット１１の全てが、メモリ１２、具体的には、メモリ１２内の共有メモリ空間１５と結合される。
【００１０】
メモリ１２は、様々な態様で構成することができる。図では１つのメモリとして示されているが、メモリ１２は、複数の内部メモリ及び外部メモリを含んでもよい。具体的な例として、４つのプロセッシングユニット１１の全てがメモリ１２にアクセスし、及び、共有空間１５と称されるメモリ１２の部分は、１以上のプロセッシングユニット１１によってアクセスされる。メモリ１２内にその他の共有空間が存在してもよく、２以上のプロセッシングユニット１１が、このような共有空間にアクセスする能力を有する。メモリ１２の共有されない空間は、通常は、１つのプロセッシングユニット１１のみによってアクセスされる空間として分類される。
【００１１】
図１に示すコンピュータシステム１０は、コンピュータシステムの一例であり、簡略化のために図示されていない別の構成要素を含んでもよい。例えば、コンピュータシステム１０は、ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ、ネットワークインターフェース（例えば、ネットワークカード）、１以上のプロセッシングユニット１１と関連付けられたチップセット、及び、更なる信号ライン及びバスを含んでもよい。コンピュータシステム１０は、図１に示されている全ての構成要素を必ずしも含まなくてもよい。
【００１２】
図１において、採用されているセマフォはロック（又はロック変数）１６であり、ロック１６は、１以上の対応する共有空間１５（点線１４で示されている）への制御アクセスに割り当てられている。ロック１６は、共有空間１５へのアクセスの取得と関連付けられている値を収容するべく割り当てられているメモリ内の特定のロケーションである。そして、複数のプロセッシングユニット１１のうちの１つが共有スペース１５へアクセスするためには、当該プロセッシングユニットは、最初に対応するロック１６にアクセスした後に、ロックロケーション１６に格納されているデータのステート（値）を検証（test）する。２つの値が、単純な形式で、ロック１６に割り当てられる。第１の値は、共有スペースがアクセス可能であることを示し、第２の値は、共有スペースが現在使用されておりアクセス不可能であることを示す。単純な実施形態では、ビットステータス１及び０を使用して、ロック１６についてロックされている状態とロックされていない状態とを表すことができる。
【００１３】
実際のロック値及びロック１６に対するロックステートは、設計の一つの選択肢であり、様々な変形例が考えられることは明らかである。ロック１６のロケーションは、必ずしもメモリ１２内にある必要はない。更に、図１に示すように、メモリ１２は、様々なメモリデバイスのうちの１つであってもよい。また、複数のプロセッシングユニット１１の１以上を、メモリにアクセスするメモリアクセスデバイス（ダイレクト・メモリ・アクセス・コントローラ等のデバイス）と置き換えることもできる。これらの例において、デバイスは、共有スペース１５へのアクセスを取得するために、本命令書に記載される複数のプロセッシングユニット１１と同様に機能する。また、１つのバス１３のみが示されているが、バス１３が様々なデバイスを結合させることから、複数のバスが同じ階層レベル又は異なる階層レベルに存在してもよい。
【００１４】
データ転送のために、複数のプロセッシングユニット１１がメモリ１２へのアクセスを行う場合は、通常、読み込み（ロード）及び格納（ストア）オペレーションが使用される。ロードオペレーションは、アクセスされるメモリにおけるロケーションからメモリの内容を転送し、ストアオペレーションは、アクセスされるメモリロケーションへとデータを転送する。したがって、ロード／ストアオペレーションは、メモリ１２及びロック１６にアクセスし、複数のプロセッシングユニット１１とメモリ１２との間のデータ転送に使用される。ロードアクセス及びストアアクセスは、それぞれ、読み出し（リード）アクセス及び（書き込み（ライト）アクセスとも称される。
【００１５】
図１及び図２に示すように、コンピュータシステム１０は、システムバス２２を介して、複数のプロセッシングユニット１１と結合されるリードオンリーメモリ（ＲＯＭ）３１及びメインメモリ１８を含み、メインメモリ１８としては、例えば、好適な種類のランダムアクセスメモリ（ＲＡＭ）が含まれる。プロセッシングユニット１１はまた、システムバス２２によって接続されるデータ記憶デバイス３０を含む。データ記憶デバイス３０は、例えば、ハードディスクドライブのような、あらゆる好適な不揮発性メモリを含む。コンピュータシステム１０は更に、フロッピー（登録商標）ディスクドライブ、ＣＤ  ＲＯＭドライブ、及び／又は、ＵＳＢドライブのような取り外し可能記憶媒体３２を含む。
【００１６】
図２では、プロセッシングユニット１１が、１以上のバスによって相互接続される複数の構成要素を含み、これらのバスは、図２では、ローカルバス１９として記号で示されている。ローカルバス１９、すなわち、プロセッシングユニット１１の構成要素は、バスインターフェースユニット２３と結合される。バスインターフェースユニット２３は、プロセッシングユニット１１をシステムバス２２と接続し、プロセッシングユニット１１とメインメモリ１８との間、及び、プロセッシングユニット１１と外部キャッシュ２０との間の情報伝達を可能としている。
【００１７】
プロセッシングユニット１１は、ローカルバス１９と結合された命令デコーダ２１を含む。命令デコーダ２１は、プロセッシングユニット１１において実行されるプログラム又はコードと関連付けられた命令（又は複数の命令）を受信し、受信した命令を、１以上の機械レベル命令／オペレーション（μオペレーション）に分解する。プロセッシングユニット１１は、プログラムと関連付けられた１以上の命令を受信してもよく、コンピュータシステム１０の別のプロセッシングユニット１１は、同じプログラムと関連付けられた１以上の命令を受信してもよい。そして、プログラムは、複数のプロセッシングユニット１１上で実行されてもよい。
【００１８】
プロセッシングユニット１１は更に、例えば、データアクセス制御ユニット（ＤＡＣ）２４、メモリオーダリングバッファ（ＭＯＢ）２６、レジスタファイルユニット２９及び機能ユニット２７を含む複数の実行ユニットを含む。
【００１９】
レジスタファイルユニット２９は、複数のレジスタを含み、それぞれが、１６、３２、６４、１２８、２５６又は５１２ビットの記憶領域を有する。さらに、レジスタファイル２９は、それぞれが１以上のレジスタを有する１以上のレジスタファイルを含んでもよい。機能ユニット２７は、例えば、算術ユニット、論理ユニット及び／又は浮動小数点ユニットのような１以上の機能ユニットを含む。ＭＯＢ２６は、ロード命令及びストア命令が適切な順番になるようにし、メモリ階層構造（すなわち、コンピュータシステム１０内の様々なレベルのメモリ、Ｌ０キャッシュ２５、Ｌ１キャッシュ２８、外部キャッシュ２０、メインメモリ１８及びデータ記憶デバイス３０を含む）内におけるこれらのトランザクションの適切なシーケンスを提供する。Ｌ０キャッシュ２５及びＬ１キャッシュ２８のそれぞれは、機能ユニット２７によって最近アクセスされたデータ又はアクセスされると期待される最近のデータを格納することができる。機能ユニット２７が要求するデータのアイテムが、キャッシュメモリ２５、２８の一方に存在する場合には、キャッシュ"ヒット（hit）"が発生するが、要求されたデータがキャッシュに存在しない場合には、キャッシュ"ミス"が発生する。キャッシュメモリの１以上（例えば、Ｌ０キャッシュ２５）が、ＤＡＣ２４と結合されてもよい。ＤＡＣ２４は、キャッシュミスになる全てのトランザクション、及び、特別な扱いを必要とするその他のトランザクションを制御する。上記したロックは、ＤＡＣ２４及びプロセッシングユニット１１のその他の構成要素によって特別な対応が必要なトランザクションの一種である。μオペレーションが、例えば、算術操作に対応する場合には、μオペレーションが機能ユニット２７に送信されて、機能ユニットが算術操作を実行する。μオペレーションが、例えば、メモリ参照命令、例えば、ロード又はストア、に対応する場合には、そのμオペレーションはＭＯＢ２６に送信される。
【００２０】
図２に示したプロセッシングユニット１１は、プロセッシングデバイスの一例を示すことを目的としており、プロセッシングユニットは、図に示されていないその他の数多くの構成要素を含んでもよい。理解を容易にするために、これらの構成要素については、図示を省略している。例えば、プロセッシングユニット１１は、アドレス生成ユニット、リザベーションステーション（reservation station）、リオーダバッファ（reorder buffer）、スケジューラ、セグメント及びアドレス変換ユニット、トランスレーション・ルックアサイド・バッファ、ページミスハンドラ、及び／又は、内部クロック回路を含んでもよい。図２では別々の要素として示されている構成要素を、組み合わせる及び／又は共有回路としてもよい。本明細書に記載される実施形態は、特定のアーキテクチャ又は配置に限定されず、また、これらのアーキテクチャ又は配置を説明するのに使用される特定の言葉によっても限定されない。また、開示される実施形態は、そのアーキテクチャ又は言葉に関係なく、あらゆる種類のプロセッシングデバイス上で実行可能であると考えられる。
【００２１】
実行されるべくスケジュールされたμオペレーションの１以上は、ロックされたμオペレーションを含んでもよい。上記したように、ロック（lock）は、プロセッサ及び／又はスレッド間の同期を確実にする態様で実行されるオペレーション（例えば、ロード、変更及びストア）のシーケンスに対応する。
【００２２】
図３には、読み出し(read）−変更（modify）−書き込み（write）オペレーションを実行する命令が示されている。命令４０は、５つのオペランド４１−４５を含む１つの不可分命令である。オペコード（Ｏｐコード）オペランド４１は、これが、ＶＣＭＰＸＣＨＧ命令であることを特定する。オペランド４２−４４は、ＳＲＣ１／ＤＥＳＴ、ＳＲＣ２、ＳＲＣ３と関連付けられるソース及び宛先（destination）オペランド、及び、ある実装形態では、マスク・ストレージ・ロケーション（ＭＳＫ）オペランド及び／又はオフセット（又は"即値（immediate）"）オペランド４５に対応している。オフセット又は即値は、メモリ１２を呼び出す時に、（ＳＲＣ１のような）ベースアドレスからのオフセットを提供するのに使用される。以下に記す命令は、このようなオフセットを有してもよいが、オフセットは図示していない。マスク記憶ロケーション４５を規定する実装は、ＳＲＣ１／ＤＥＳＴオペランドによって参照される記憶ロケーションに格納されている各データ要素に対応するマスク要素を格納するレジスタ又はメモリロケーションを参照する。
【００２３】
命令４０に応答して、プロセッシングユニット１１は、第１ソースデータを読み出し、読み出したデータを別のソースデータと比較して、比較結果が予め定められた条件（真又は一致の条件等）を満たす場合には、ある変更値が第１ソースデータの元のロケーションであってもよいロケーションに書き込まれる。予め定められた条件を満たさない場合には、そのロケーションにおける元のデータは、変更されない。命令はこれら３つのソースオペランド（ＳＲＣ１、ＳＲＣ２及びＳＲＣ３のようなオペランド）及び１つの宛先オペランド（ＤＥＳＴのようなオペランド）を使用して、命令の実行において使用される様々な情報のロケーションを提供する。オペレーション固有レジスタ使用して、命令が実行される時に宛先データを格納する及び１以上のソースデータを提供してもよく、これにより、実際の命令フォーマットにおいて明示的にオペランドを規定する必要がなくなる。更に、一例では、ＳＲＣ１オペランド及びＤＥＳＴオペランドとは、同じ記憶ロケーション（ＳＲＣ１／ＤＥＳＴ）を参照する。
【００２４】
命令４０の実行の前に、ＳＲＣ１、ＳＲＣ２及びＳＲＣ３が、レジスタファイルユニット２９内のレジスタにロードされる（読み込まれる）。例えば、ＳＲＣ１／ＤＥＳＴオペランドによって規定される１ロケーションに格納される値を安全に更新するために、値がＳＲＣ２オペランドによって規定されるロケーションに最初に読み込まれて、ＳＲＣ３オペランドによって規定されるロケーションに置き換え値が読み込まれる。そして、不可分比較／交換オペレーションが実行されて、ＳＲＣ１／ＤＥＳＴオペランドと関連付けられている現在の値と、ＳＲＣ２オペランドと関連付けられている値とが比較される（すなわち、別のエージェントによる変更のために、現在の値は最初にコピーされた値とは異なっている可能性がある）。値の変更がなかった場合には、その値は、ＳＲＣ３オペランドと関連付けられている値で置き換えられて、更新が成功したことを示すべく、ゼロフラグが設定される。最初のコピーと比較／交換（compare-exchange）オペレーションとの間に、別のエージェントが値を変更していた場合には、現在の値は置き換えられず、更新が失敗したことを示すべくゼロフラグがクリアされる。
【００２５】
図４のブロック図には、命令４０が実行される時の情報のフローが示されている。プロセッシングユニット１１は、実行ユニット４６（例えば、図２のＤＡＣ２４）、レジスタファイル２９、ＢＩＵ２３及びデコーダ２１を含み、これらは全てローカルバス１９によって結合されている。レジスタファイル２９は、様々なオペレーションを実行するために、実行ユニット４６によってアクセスされる複数のレジスタを含む。図４に示すように、ＶＣＭＰＸＣＨＧ命令４０は、実行ユニット４６内に存在するように示されており、点線が、命令のオペランドから対応するＳＲＣ１、ＳＲＣ２、ＳＲＣ３及びＤＥＳＴと関連付けられているレジスタに向かって示されている。複数のレジスタが、レジスタファイル２９内に存在する。実行ユニット４６がオペレーションを実行するために、デコーダ２１を使用して、（ＶＣＭＰＸＣＨＧ命令４０を含む）様々な命令をデコードする。
【００２６】
図１及び図２で記載したメモリ１２が、バス１９及び／又はバス２２によってＢＩＵ２３と結合されている様子が示されている。また、プロセッシングユニット１１とメモリ１２との間のデータ転送が、ＢＩＵ５４ａ又はローカルバス１９を介して発生してもよい。ＶＣＭＰＸＣＨＧ命令４０を利用したプログラムルーチンは、メモリ１２であってもよい、又は、メモリ１２を含むメモリ内に存在してもよい。
【００２７】
次の表に示す疑似コードには、ＶＣＭＰＸＣＨＧ命令４０がどのように動作するかの例が示されている。その他の疑似コード、言語、オペレーション、オペレーションの順番及び／又は数を使用してもよい。
【表１】
0005421458.tif 000002
【００２８】
表には、ＶＥＸ．１２８及びＶＥＸ．２５６の具体的な例が示されており、ロック値が、ＳＲＣ１／ＤＥＳＴによって参照される５１２ビット記憶ロケーション（例えば、６４バイトキャッシュライン又はレジスタ）のビット［１２７：０］及びビット［２５５：０］にそれぞれ格納される。一実施形態において、ＳＲＣ１／ＤＥＳＴによって参照されるロック値と、これらに対応する共有記憶ロケーション１５との間には、１対１の関係が存在する。例えば、ＳＲＣ１／ＤＥＳＴは、１６個の８ビットロック値（１２８ビット）を参照して、ロック値各々は、キャッシュライン又はＳＩＭＤレジスタ内の１６個の記憶ロケーションのうちの１つに対応している。これに替えて、ＳＲＣ１／ＤＥＳＴは、３２個の８ビットロック値（２５６ビット）を参照してもよく、８ビットロック値の各々は、キャッシュライン又はＳＩＭＤレジスタ内の３２個の記憶ロケーションのうちの１つに対応する。
【００２９】
上記の例に戻り、ＳＲＣ１／ＤＥＳＴとＳＲＣ２との比較結果は、ロック値が変更されたかを示す。真（true）の条件は、ロックが変更されて、ロックがアンロック状態であることを示す。この条件を満たす場合、ＳＲＣ３によって参照される値が、ＳＲＣ１／ＤＥＳＴに書き込まれて、ロック値がロックされた状態に変更され、その他のエージェントが共有空間へアクセスするのを防ぐ。その後、オペレーションが成功したことを示すべく、ゼロフラグ（ＺＦ）が設定される。
【００３０】
偽（false）の条件は、１以上のロックが変更され（ロックされて）、別のエージェントが共有スペースのオーナーシップを取得したことを示す。条件が偽である場合、ＳＲＣ１／ＤＥＳＴによって参照される値が、ＳＲＣ２に格納されて、オペレーションが成功しなかったことを示すべくゼロフラグがクリアされる。そして、オペレーションから戻る前に、ＳＲＣ２の上位バイトがクリアされる。
【００３１】
一般的に、アクセスが最初に拒否され、問い合わせを行っているエージェントが、アクセスを取得するまでアクセスへのリトライを継続する。ある実装形態では、外側ループが、不可分でないロードを含み、ＶＣＭＰＸＣＨＧ命令４０を再実行する前に検証を行う。プロセッサが共有メモリ空間１５へのアクセスを一旦完了させると、プロセッサは、共有メモリ空間１５に対する制御を解放して、ロック１６の書き込みサイクルでアンロックし、その他のエージェントが共有メモリ空間１５へのエントリを取得できるようにする。しかしながら、プロセッサがこのように共有メモリ空間を開放する構成は設計選択事項であり、システム構成によって決定されてもよい。
【００３２】
ある実装形態では、ＶＣＭＰＸＣＨＧ命令４０は、それぞれが、複数のマスク要素を有するマスクベクトルを含み、マスク要素各々はＳＲＣ１／ＤＥＳＴによって参照される複数のデータ要素のうちの１つに対応する。マスクベクトル記憶ロケーションは、レジスタファイルユニット２９内のレジスタであってもよく、例えば、シャドウレジスタ（shadow register）、制御レジスタ、フラグレジスタ、汎用レジスタ、ＳＩＭＤレジスタ又はその他の好適なレジスタであってもよい。一実施形態において、ＳＲＣ１／ＤＥＳＴによって参照されるデータ要素と、マスクレジスタ格納されている対応するマスク要素との間には、一対一の関係が存在する。マスク要素又はマスク値は、（例えば、対応する又は示されたレジスタロケーションにおける）対応するデータ要素が比較された及び／又は変更されたことを示す、フラグ、マーカー、タブ、インジケータ及び／又はその他の数、ビット及び／又はコードを含んでもよい。例えば、値"１"を有するマスク要素は、対応するデータ要素が変更されることを示し、それ以外の場合には、値"０"が使用されてもよい。無論、その他の数又はフラグを使用してもよい。
【００３３】
表２には、マスクされたＶＣＭＰＸＣＨＧＤ及びＶＣＭＰＸＣＨＧＱ命令の例がそれぞれ、１６幅の５１２バイトベクトル、及び８幅の５１２バイトベクトルの疑似コードで示されている。マスクされたコンペア（比較）実装では、アクティブな要素のみが比較及び更新される。
【表２】
0005421458.tif 000003
【００３４】
表２に示した具体的なＶＣＭＰＸＣＨＧＤ及びＶＣＭＰＸＣＨＧＱの例において、変数ＡＬＬ ＣＭＰＳ ＳＵＣＣＥＥＤが最初に１にプリセットされる（すなわち、真の状態）。設定されると、アクティブなマスク要素の各々（例えば、例えば、２進数の１、又は、１６進数の０ｘ０１、０ｘＦＦ又は０ｘ８０を含む格納されている特定の値を有するマスク要素）に対して、ＳＲＣ１／ＤＥＳＴが参照する対応する記憶ロケーションと、ＳＲＣ２における対応するビットによって参照される値との比較が行われる。マスクが使用されない場合、ＳＲＣ１／ＤＥＳＴによって参照される記憶ロケーションの各々は、ＳＲＣ２における対応するビットによって参照される値と比較される。
【００３５】
ＳＲＣ１／ＤＥＳＴの値と、ＳＲＣ２の対応する値との間の比較結果は、特定のロック値が変更されたか否かを示す。上記の例では、真の条件（すなわち、一致しない条件）は、ロックが変更され、別のエージェントが、共有記憶ロケーションのオーナーシップを取ったことを示す。参照される記憶ロケーションのうちの何れか１つがこの条件を満たす場合、ＡＬＬ ＣＭＰＳ ＳＵＣＣＥＥＤがクリアされて、全ての比較が成功しなかったことが示される。その後、ゼロフラグがクリアされて、アクティブなマスク要素各々に対して、ＳＲＣ１／ＤＥＳＴによって参照される対応する記憶ロケーションに格納されている値が、ＳＲＣ２の対応するビットにロードされる。
【００３６】
比較結果が偽である（すなわち、アクティブなマスク要素の各々について、ＳＲＣ１／ＤＥＳＴによって参照される対応する値が、ＳＲＣ２における対応する値と一致する）場合には、ＡＬＬ ＣＭＰＳ ＳＵＣＣＥＥＤは、変わることなく設定され続ける。その後、ゼロフラグ（ＺＦ）が設定されて、アクティブなマスク要素各々について、ＳＲＣ３における対応する記憶ロケーションに格納された値が、ＳＲＣ１／ＤＥＳＴにおける対応するビットにロードされ、その他のエージェントが共有空間へアクセスすることを防ぐべく、ロック値がロックされた状態に変更される。
【００３７】
図５のブロック図は、命令４０が実行される時の情報のフローの別の例を示している。図５に示すように、ＶＣＭＰＸＣＨＧ命令４０は、実行ユニット４６内に存在するように示されており、点線が、命令のオペランドから対応するＳＲＣ２、ＳＲＣ３及びＭＳＫと関連付けられているレジスタに向かって示されている。この例では、マスク記憶ロケーション（ＭＳＫ）は、マスクレジスタであり、ＳＲＣ１／ＤＥＳＴと関連付けられている記憶ロケーションは、Ｌ１キャッシュである。レジスタは、レジスタファイルユニット２９内に存在する。
【００３８】
命令４０の実行の前に、ＳＲＣ１がＬ１キャッシュにプリフェッチされて、ＳＲＣ２、ＳＲＣ３及びＭＳＫのデータが、レジスタファイルユニット２９内のレジスタにロードされる。マスクレジスタは、ＳＲＣ１／ＤＥＳＴオペランドと関連付けられている記憶ロケーションにおけるデータ要素各々に対応する複数のマスク要素を格納する。また、比較値が、最初にＳＲＣ２オペランドによって規定されるロケーションに読み込まれて、置換値が、ＳＲＣ３オペランドによって規定されるロケーションに読み込まれる。そして、命令４０が実行されて、実行ユニット４６は、ＳＲＣ１／ＤＥＳＴと関連付けられた対応するデータ要素とＳＲＣ２オペランドと関連付けられた対応するデータ要素とを比較し、一致する場合には、ＳＲＣ１／ＤＥＳＴからのデータ要素を、ＳＲＣ３からの対応するデータ要素で置き換える。一致しない場合には、命令４０の実行により、実行ユニット４６がＳＲＣ２データ要素を、対応するＳＲＣ１／ＤＥＳＴデータ要素で置き換える。
【００３９】
ある実装形態では、ＳＲＣ１／ＤＥＳＴデータ要素とＳＲＣ２データ要素との比較は、対応するマスク要素がアクティブである場合にのみ実行される。ある実装形態では、実行ユニット４６は更に、対応するマスク要素がアクティブである対応するデータ要素の各組において一致が存在する場合にはフラグを設定し、対応するマスク要素がアクティブである対応するデータ要素の複数の組のうちの何れかにおいて一致が存在しない場合には、フラグをクリアする。また、ある実装形態では、ＳＲＣ１／ＤＥＳＴデータ要素の、対応するＳＲＣ３データ要素による置き換えは、各ＳＲＣ１／ＤＥＳＴデータ要素に対応するマスク要素がアクティブである場合にのみ実行される。また、ある実装形態では、ＳＲＣ２データ要素の対応するＳＲＣ１／ＤＥＳＴデータ要素での置き換えは、ＳＲＣ１／ＤＥＳＴデータ要素に対応するマスク要素がアクティブである場合にのみ実行される。
【００４０】
ある実施形態では、ロックされている状態を示すロック値は、アクティブであるマスク要素を示すマスク値と同様であってもよい（例えば、２進数の１）。この場合、ＳＲＣ３を、マスクベクトル及びロック値置換ベクトルの両方として使用してもよい。
【００４１】
ある実装形態では、比較／交換オペレーションは、ＳＲＣ２オペランドと関連付けられている値の更新を行わずに、実行を完了してもよい。その後、フラグ（例えば、ゼロフラグ）の検証が行われ、フラグが、ＳＲＣ１／ＤＥＳＴオペランドと関連付けられている値に対して更新オペレーションが失敗したことを示している場合には、比較／交換オペレーションの前の段階が繰り返されて、比較／交換オペレーションを再度行う前に、ＳＲＣ２及びＳＲＣ３と関連付けられている値を更新する。
【００４２】
１以上の実施形態が、ＳＩＭＤ命令を格納する有形機械アクセス可能媒体及び／又は機械可読媒体を含む製造物品を含み、ＳＩＭＤ命令は、複数のデータ要素に対するベクトル比較／交換オペレーションを規定しており、複数のデータ要素の各々は、対応するテスト要素、置換要素及びマスク要素を有し、機械（例えば、実行ユニット）によって実行されると、機械に、マスク要素各々がアクティブである場合には、データ要素と対応するテスト要素とを比較させ、全ての比較結果が一致を示しているとの判断に応答して、フラグを設定し、比較されたデータ要素を対応する置換要素で置き換え、全ての比較結果が一致を示していないとの判断に応答して、フラグをクリアし、比較されたテストデータ要素を対応するデータ要素で置き換える。有形媒体は、１以上の固形材料を含んでもよい。媒体は、例えば、機械によってアクセス可能な形式で状態を格納することを提供するメカニズムを含んでもよい。媒体としては、必要に応じて、フロッピー（登録商標）ディスケット、光記憶媒体、光ディスク、ＣＤ−ＲＯＭ、磁気ディスク、磁気光学ディスク、リードオンリーメモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能−プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能−プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、及びこれらの組み合わせを含んでもよい。
【００４３】
好適な機械としては、これに限定されないが、例えば、汎用プロセッサ、特殊用途プロセッサ（例えば、グラフィックスプロセッサ及び暗号化プロセッサ）、暗号化アクセラレータ、ネットワーク通信プロセッサ、コンピュータシステム、ネットワークデバイス、モデム、パーソナル・デジタル・アシスタンス（ＰＤＡ）、携帯電話、及び、１以上の実行ユニットを有するその他様々な電子デバイスが含まれる。また、その他の実施形態は、コンピュータシステム、組み込みシステム、又は、実行ユニットを有する及び／又は本明細書に開示される方法を実行するその他の電子デバイスに関する。
【００４４】
図６には、プロセッサ５１を含む好適なコンピュータシステム５０の一例が示されている。プロセッサは、少なくとも１つのベクトル比較／交換オペレーション５３を実行可能な少なくとも１つの実行ユニット５２を含む。
【００４５】
プロセッサは、バス（例えば、フロントサイドバス）又はその他のインターコネクト５５を介して、チップセット５４と結合される。チップセットを介してプロセッサとシステム内のその他の構成要素との間でデータ信号を送信するのに、インターコネクトを使用してもよい。
【００４６】
チップセットは、メモリコントローラハブ（ＭＣＨ）５６として知られるシステムロジックチップを含む。ＭＣＨは、フロントサイドバス又はその他のインターコネクト５５と結合される。
【００４７】
メモリ５８が、ＭＣＨと結合される。様々な実施形態において、メモリは、ランダムアクセスメモリ（ＲＡＭ）を含む。ＤＲＡＭは、コンピュータシステムの一部で使用されているＲＡＭの一種の例であり、全てのコンピュータシステムで使用されているわけではない。図に示すように、メモリは、１以上の乗算命令及びデータ６０のような命令５９を格納するのに使用されてもよい。
【００４８】
コンポーネントインターコネクト６１も、ＭＣＨと結合される。１以上の実施形態において、コンポーネントインターコネクトは、１以上の周辺コンポーネントインターコネクトエクスプレス（ＰＣＩｅ）を含んでもよい。コンポーネントインターコネクトは、チップセットを介した、その他の構成要素とシステムの残りの部分との結合を可能にする。このようなコンポーネントの一例として、グラフィックスチップ又はその他のグラフィックスデバイスが挙げられ、これは必要に応じて設けられる構成であり、必須の構成ではない。
【００４９】
また、チップセットは、入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）６２を含む。ＩＣＨは、ハブインターフェースバス又はその他のインターコネクト６３を通じて、ＭＣＨと結合する。１以上の実施形態において、バス又はその他のインターコネクト６３は、ダイレクト・メディア・インターフェース（ＤＭＩ）を含んでもよい。
【００５０】
データストレージ（記憶装置）６４が、ＩＣＨと結合される。様々な実施形態において、データストレージは、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス等、又は、これらの組み合わせを含んでもよい。
【００５１】
第２コンポーネントインターコネクト６５も、ＩＣＨと結合される。１以上の実施形態において、第２コンポーネントインターコネクトは、１以上の周辺コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インターフェースを含んでもよい。第２コンポーネントインターコネクト６５は、チップセットを介した、様々な種類の構成要素とシステムの残りの部分との結合を可能にする。
【００５２】
シリアル拡張ポート６６も、ＩＣＨに結合される。１以上の実施形態において、シリアル拡張ポートは、１以上のユニバーサル・シリアル・バス（ＵＳＢ）ポートを含んでもよい。シリアル拡張ポートは、チップセットを介した、その他の様々な種類の入出力デバイスとシステムの残りの部分との結合を可能にしてもよい。
【００５３】
必要に応じてＩＣＨと結合されてもよいその他の構成要素の例としては、これに限定されないが、オーディオコントローラ、無線送受信機、及び、ユーザー入力デバイス（例えば、キーボード、マウス）が含まれる。
【００５４】
ネットワークコントローラ６７も、ＩＣＨに結合されてもよい。ネットワークコントローラは、システムをネットワークに接続することを可能にする。
【００５５】
一以上の実施形態において、コンピュータシステムは、ワシントン、リッチモンドに本社を置くマイクロソフトコーポレーションから入手可能なＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムの１バージョンを実行可能であってもよい。これに替えて、例えば、ＵＮＩＸ（登録商標）、リナックス（登録商標）又は組み込みシステムのようなその他のオペレーティングシステムを使用してもよい。
【００５６】
これは、好適なコンピュータシステムの特定の一例に過ぎない。例えば、１以上の別の実施形態において、プロセッサは、複数のコアを有してもよい。その他の例として、１以上の別の実施形態では、ＭＣＨ５６は、物理的にプロセッサ５１とオンダイで一体化されていてもよく、プロセッサが、一体化されたＭＣＨを介して、メモリ５８と直接結合されていてもよい。更なる例として、１以上の別の実施形態では、その他の構成要素は、例えば、システムオンチップ（ＳｏＣ）設計を提供するような態様で、プロセッサとオンダイで集積化されていてもよい。更なる別の例として、１以上の別の実施形態では、コンピュータシステムは複数のプロセッサを有してもよい。
【００５７】
図７には、好適なコンピュータシステム７０の別の例が示されている。第２の例示的実施形態は、上記のコンピュータシステム５０と一部、同様な構成を有する。明瞭化のため、以下では、同様な構成の全てを繰り返して説明せず、違う構成に注目して説明する。
【００５８】
コンピュータシステム５０と同様に、コンピュータシステム７０は、プロセッサ７１、及び、Ｉ／Ｏコントローラハブ（ＩＣＨ）７２を有するチップセット７４を含む。コンピュータシステム７０はまた、チップセット７４と結合された第１コンポーネントインターコネクト８１、ＩＣＨと結合された第２コンポーネントインターコネクト８５、ＩＣＨと結合されたシリアル拡張ポート８６、ＩＣＨと結合されたネットワークコントローラ８７、及び、ＩＣＨと結合されたデータストレージ８４を含む。
【００５９】
プロセッサ７１は、マルチコアプロセッサであって、複数のプロセッサコア７２−１〜７２−Ｍを含み、ここで、Ｍは、２以上の整数である（例えば、２、４、７等）。コアはそれぞれ、本明細書に開示したような命令の少なくとも１つの実施形態を実行可能な少なくとも１つの実行ユニットを含んでもよい。図に示すように、コア１は、キャッシュ８８（例えば、Ｌ１キャッシュ）を含む。その他の複数のコアはそれぞれ同様に、専用キャッシュを含んでもよい。プロセッサコアは、１つの集積回路（ＩＣ）チップに実装されてもよい。
【００６０】
プロセッサはまた、少なくとも１つの共有キャッシュ８９を含む。共有キャッシュは、コアのようなプロセッサの１以上の構成要素によって使用されるデータ（例えば、命令）を格納してもよい。例えば、共有キャッシュは、プロセッサの構成要素によるアクセスを高速にするために、メモリ７８に格納されるデータをローカルにキャッシュしてもよい。１以上の実施形態において、共有キャッシュは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）又はその他のレベルのキャッシュのような中間レベルのキャッシュ、ラストレベルキャッシュ（ＬＬＣ）及び／又はこれらの組み合わせを含んでもよい。
【００６１】
プロセッサコア及び共有キャッシュはそれぞれ、バス又はその他のインターコネクト９０と結合される。バス又はその他のインターコネクトは、コアと共有キャッシュとを結合して、通信を可能としてもよい。
【００６２】
プロセッサはまた、メモリコントローラハブ（ＭＣＨ）７６を含む。例示した実施形態に示されるように、ＭＣＨは、プロセッサ７１と集積される。例えば、ＭＣＨは、プロセッサコアと共に、オンダイで配置されてもよい。プロセッサは、ＭＣＨを介してメモリ７８と結合される。１以上の実施形態において、メモリは、ＤＲＡＭを含んでもよいが、必ずしも必須の構成ではない。
【００６３】
チップセットは、入出力（Ｉ／Ｏ）ハブ９１を含む。Ｉ／Ｏハブは、バス（例えば、クイックパスインターコネクト：QuickPath Interconnect（ＱＰＩ））又はその他のインターコネクト７５を介してプロセッサと結合される。第１コンポーネントインターコネクト８１が、Ｉ／Ｏハブ９１と結合される。
【００６４】
これは、好適なシステムの１つの特定な例である。当技術分野において、ラップトップ、デスクトップ、携帯型ＰＣ、パーソナル・デジタル・アシスタント、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤー、携帯デバイス、及び、その他の電子デバイスにおいて知られているシステム設計及び構成が好適である。一般的に、本明細書に開示されるようなプロセッサ及び／又は実行ユニットを組みこむことが可能な多様なシステム又は電子デバイスが、好適である。
【００６５】
上記の説明では、説明の目的から、本発明の実施形態の完全な理解を提供するべく、数多くの詳細事項が記載されている。しかしながら、当業者であれば、これら詳細事項の一部がなくとも１以上のその他の実施形態を実施可能であることは理解できる。上記の特定の実施形態は、本発明を限定するのでなく、本発明の実施形態を例示するために提供されている。本発明の範囲は、上記で提供された具体的な例によって決定されるのではなく、添付の特許請求の範囲によってのみ決定される。また、説明を不明瞭にしない目的から、他の場合においては、周知の回路、構造、デバイス及びオペレーションについては、ブロック図の形式で示され、その詳細な説明を省略している。さらに、適切であると考えられる場合、同様な特性を有する場合がある対応する又は類似する要素を示すのに、参照番号及び参照番号の末尾部分が図面間で繰り返し使用されている。
【００６６】
あるオペレーションは、ハードウェアコンポーネントによって実行されてもよい、又は、命令でプログラムされた回路又はハードウェアにオペレーションを実行させる機械実行可能命令に実現されてもよい。回路は、例を挙げると、汎用プロセッサ、特殊用途プロセッサ又はロジック回路を含んでもよい。オペレーションは、必要に応じて、ハードウェア及びソフトウェアの組み合わせによって実行されてもよい。実行ユニット及び／又はプロセッサは、機械命令から導出された１以上の信号又は機械命令に応答して、命令が特定した結果のオペランドを格納する固有の又は特定の回路又はその他のロジックを含んでもよい。
【００６７】
また、「一実施形態」、「ある実施形態」、「１以上の実施形態」等は、本発明の実施形態の実行において、特定の特徴が含まれてもよいことを意味する。同様に、開示を簡潔にし、様々な発明の側面の理解を助けるべく、記載される様々な特徴は、１つの実施形態、図面又はその説明に共に組み込まれている場合がある。しかしながら、開示の方法は、本発明が、請求項各々に明示的に記載されるよりも多い数の特徴を必要とすることを意図していると解釈されるべきではない。添付の特許請求の範囲は、開示された１つの実施形態の全ての特徴よりも少ない発明の側面を反映している。したがって、詳細な説明に続く特許請求の範囲は、明示的に詳細な説明の章に組み込まれ、請求項の各々は、発明の別個の実施形態として独立している。
【００６８】
本発明の複数の実施形態が記載された。しかしながら、本発明の範囲及び精神の範囲内において、様々な変形が可能であることは明らかである。例えば、コンピュータシステムは、複数のプロセッサ又はメモリアクセスデバイスを有するコンピュータシステムに限定されない。本発明は、読み出し−修正−書き込み命令が実装される１つのプロセッサシステムにおいて、容易に利用される。
【００６９】
また、メモリの共有空間へのアクセス制御は、上記の例で説明した検証及び設定シーケンス以外の手段によっても達成可能である。例えば、アクセス毎に特定のカウント値でインクリメントされる単純なカウンタを使用することができる。
【００７０】
好ましい実施形態のＶＣＭＰＸＣＨＧ命令は、読み出し−変換−書き込みオペレーションを実行するが、変換及び書き込み段階は、基本的に１つの段階で達成されることは理解される。元のデータを読み出した後に変更値を計算して、変更値を書き込む替わりに、ＶＣＭＰＸＣＨＧ命令の変更値が、命令による使用のために、予め設定される。変更値を使用するか否かは、比較によって取得される決定に依存するが、現在の変更値（ＳＲＣ３）を、すぐに、宛先に書き込んで、宛先値を変更してもよい。
【００７１】
そして、マスクを利用するベクトル比較／交換オペレーションを実装する技術が記載された。本明細書に記載されたＶＣＭＰＸＣＨＧ命令及び実装は、別の可能性においても利用することができ、共有メモリ空間へのアクセス制御機能に必ずしも限定される必要はない。例えば、ＶＣＭＰＸＣＨＧ命令は、ＳＩＭＤオペレーションが複数のデータ要素について実行され、オペレーションの間に別のエージェントによってデータ要素が変更されていない場合には、共有メモリ空間にその結果が書き込まれるだけである投機的実行に適用してもよい。その他の実施形態が、添付の特許請求の範囲内に含まれる。
【図１】
0005421458.tif 000004
【図２】
0005421458.tif 000005
【図３】
0005421458.tif 000006
【図４】
0005421458.tif 000007
【図５】
0005421458.tif 000008
【図６】
0005421458.tif 000009
【図７】
0005421458.tif 000010