(57)【特許請求の範囲】
【請求項１】
複数のパックドデータレジスタと、
複数のメモリインデックスを含むソースパックドメモリインデックスオペランドを示すベクトルキャッシュラインライトバック命令をデコードするデコードユニットと、
前記複数のパックドデータレジスタおよび前記デコードユニットと結合され、前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ソースパックドメモリインデックスオペランドの前記複数のメモリインデックスのいずれかによって示された複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせるキャッシュコヒーレンシシステムとを備え、
前記ソースパックドメモリインデックスオペランドは、前記複数のパックドデータレジスタのうちのパックドデータレジスタに格納される、プロセッサ。
【請求項２】
複数のパックドデータレジスタと、
複数のメモリインデックスを含むソースパックドメモリインデックスオペランドを示すベクトルキャッシュラインライトバック命令をデコードするデコードユニットと、
前記複数のパックドデータレジスタおよび前記デコードユニットと結合され、前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ソースパックドメモリインデックスオペランドの前記複数のメモリインデックスのいずれかによって示された複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせるキャッシュコヒーレンシシステムとを備え、
前記ベクトルキャッシュラインライトバック命令は、前記１または複数のメモリに格納される複数のデータ要素を含むソースパックドデータ要素オペランドを示すインデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令を含む、プロセッサ。
【請求項３】
前記キャッシュコヒーレンシシステムは、前記ベクトルキャッシュラインライトバック命令に応答して、前記コヒーレンシドメインの前記任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを内部に格納した任意のキャッシュラインの無効化を生じさせる、請求項１または２に記載のプロセッサ。
【請求項４】
前記キャッシュコヒーレンシシステムは、前記ベクトルキャッシュラインライトバック命令に応答して、前記コヒーレンシドメインの前記任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを内部に格納した前記任意のダーティキャッシュラインの状態を、未変更状態に変更させる、請求項１または２に記載のプロセッサ。
【請求項５】
前記キャッシュコヒーレンシシステムは、
前記ベクトルキャッシュラインライトバック命令に応答して、前記コヒーレンシドメインにおける前記プロセッサの１または複数の内部キャッシュのいずれかにおける、前記複数のメモリアドレスの前記いずれかの前記データを内部に格納した任意のダーティキャッシュラインの前記１または複数のメモリへのライトバックを開始する１または複数のキャッシュコントローラと、
前記ベクトルキャッシュラインライトバック命令に応答して、相互接続上で１または複数のキャッシュラインライトバック信号を送信し、前記コヒーレンシドメインにおける前記プロセッサの外部の任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを内部に格納した任意のダーティキャッシュラインを、前記１または複数のメモリにライトバックさせるバスインタフェースユニットとを備える、請求項１または２に記載のプロセッサ。
【請求項６】
前記バスインタフェースユニットは、たとえ所与のメモリアドレスのデータが前記プロセッサの前記１または複数の内部キャッシュの前記いずれかに格納されなくとも、前記相互接続上で前記１または複数のキャッシュラインライトバック信号を送信し、前記コヒーレンシドメインにおける前記プロセッサの外部の前記任意のキャッシュにおける、前記所与のメモリインデックスによって示される前記所与のメモリアドレスのデータを内部に格納した前記任意のダーティキャッシュラインを、前記１または複数のメモリにライトバックさせる、請求項５に記載のプロセッサ。
【請求項７】
前記バスインタフェースユニットは、前記コヒーレンシドメインにおける前記プロセッサの外部の前記任意のキャッシュにおける、所与のメモリインデックスによって示される所与のメモリアドレスのデータを内部に格納した前記任意のダーティキャッシュラインを前記１または複数のメモリにライトバックさせる前記１または複数のキャッシュラインライトバック信号を、前記プロセッサの前記１または複数の内部キャッシュの前記いずれかに前記所与のメモリアドレスのデータを格納する任意のキャッシュラインの状態に関係なく前記相互接続上で送信する、請求項５に記載のプロセッサ。
【請求項８】
前記デコードユニットは、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを示す前記ベクトルキャッシュラインライトバック命令をデコードする、請求項１〜７のいずれか１項に記載のプロセッサ。
【請求項９】
前記キャッシュコヒーレンシシステムは、前記ベクトルキャッシュラインライトバック命令に応答して、前記ソースパックドデータオペレーションマスクオペランドに従い、前記コヒーレンシドメインの前記任意のキャッシュにおける、前記ソースパックドデータオペレーションマスクオペランドの対応するマスク要素によってマスクをかけられない前記複数のメモリインデックスの任意の非マスクメモリインデックスのみによって示される前記複数のメモリアドレスの前記いずれかの前記データを内部に格納した前記任意のダーティキャッシュラインを選択的に、前記１または複数のメモリにライトバックさせる、請求項８に記載のプロセッサ。
【請求項１０】
前記ベクトルキャッシュラインライトバック命令は、前記１または複数のメモリに格納される複数のデータ要素を含むソースパックドデータ要素オペランドを示すインデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令を含む、請求項１、ならびに請求項１に従属する場合の請求項３〜７のいずれか１項に記載のプロセッサ。
【請求項１１】
前記インデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令に応答して、前記ソースパックドデータ要素オペランドの前記複数のデータ要素の各々を、前記ソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示される前記１または複数のメモリにおける対応するメモリアドレスに格納する、実行ユニットを更に備える、請求項２、請求項２に従属する場合の請求項３から７、および請求項１０のいずれか１項に記載のプロセッサ。
【請求項１２】
前記ベクトルキャッシュラインライトバック命令に応答して、前記ベクトルキャッシュラインライトバック命令に先行する全てのストア命令が全面的に可視になるまで、プログラム順序において前記ベクトルキャッシュラインライトバック命令の後に続く全てのストア命令が、全面的に可視になることを阻止するメモリアクセス順序付けロジックを更に備える、請求項１〜７のいずれか１項に記載のプロセッサ。
【請求項１３】
前記ベクトルキャッシュラインライトバック命令に応答して、前記任意のダーティキャッシュラインが永続性ストレージにライトバックされるまで、プログラム順序において前記ベクトルキャッシュラインライトバック命令の後に続く全ての命令が完了することを阻止するユニットを更に備える、請求項１２に記載のプロセッサ。
【請求項１４】
分岐を予測する分岐予測ユニットと、
前記分岐予測ユニットと結合され、前記ベクトルキャッシュラインライトバック命令を含む命令をプリフェッチする命令プリフェッチユニットと、
前記命令プリフェッチユニットと結合され、命令を格納するレベル１（Ｌ１）命令キャッシュと、
データを格納するＬ１データキャッシュと、
データおよび命令を格納するレベル２（Ｌ２）キャッシュと、
前記デコードユニット、前記Ｌ１命令キャッシュ、および前記Ｌ２キャッシュと結合され、前記Ｌ１命令キャッシュおよび前記Ｌ２キャッシュのうちの１つから前記ベクトルキャッシュラインライトバック命令をフェッチし、前記ベクトルキャッシュラインライトバック命令を前記デコードユニットに提供する命令フェッチユニットと、
複数のパックドデータレジスタと結合され、前記複数のパックドデータレジスタをリネームするレジスタリネームユニットと、
前記キャッシュコヒーレンシシステムによる実行のために前記ベクトルキャッシュラインライトバック命令からデコードされた１または複数のオペレーションをスケジューリングするスケジューラとを更に備える、請求項１〜７のいずれか１項に記載のプロセッサ。
【請求項１５】
プロセッサにおける方法であって、
ベクトルキャッシュラインライトバック命令を受信する段階であって、前記ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを含むソースパックドメモリインデックスオペランドを示す段階と、
前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ソースパックドメモリインデックスオペランドの前記複数のメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる段階とを備え、
前記ソースパックドメモリインデックスオペランドは、パックドデータレジスタに格納される、方法。
【請求項１６】
プロセッサにおける方法であって、
ベクトルキャッシュラインライトバック命令を受信する段階であって、前記ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを含むソースパックドメモリインデックスオペランドを示す段階と、
前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ソースパックドメモリインデックスオペランドの前記複数のメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる段階とを備え、
前記ベクトルキャッシュラインライトバック命令は、前記１または複数のメモリに格納される複数のデータ要素を含むソースパックドデータ要素オペランドを示すインデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令を含む、方法。
【請求項１７】
ライトバックさせる段階は、前記ベクトルキャッシュラインライトバック命令に応答して、前記コヒーレンシドメインの前記任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを格納する任意のキャッシュラインの無効化を生じさせる段階を有する、請求項１５または１６に記載の方法。
【請求項１８】
ライトバックさせる段階は、前記ベクトルキャッシュラインライトバック命令に応答して、前記コヒーレンシドメインの前記任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを格納する前記任意のダーティキャッシュラインの状態を、未変更状態に変更させる段階を有する、請求項１５または１６に記載の方法。
【請求項１９】
ライトバックさせる段階は、
前記コヒーレンシドメインにおける前記プロセッサの１または複数の内部キャッシュのいずれかにおける、前記複数のメモリアドレスの前記いずれかの前記データを格納する任意のダーティキャッシュラインの前記１または複数のメモリへのライトバックを開始する段階と、
相互接続上で１または複数のキャッシュラインライトバック信号を送信して、前記コヒーレンシドメインにおける前記プロセッサの外部の任意のキャッシュにおける、前記複数のメモリアドレスの前記いずれかの前記データを格納する任意のダーティキャッシュラインを、前記１または複数のメモリにライトバックさせる段階とを有する、請求項１５または１６に記載の方法。
【請求項２０】
受信する段階は、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを示すマスク命令である前記ベクトルキャッシュラインライトバック命令を受信する段階を有する、請求項１５または１６に記載の方法。
【請求項２１】
受信する段階は、複数のデータ要素を含むソースパックドデータ要素オペランドを示す前記ベクトルキャッシュラインライトバック命令を受信する段階を有し、
前記複数のデータ要素を、前記複数のメモリインデックスの対応するメモリインデックスによって示される前記１または複数のメモリにおけるメモリ位置に格納する段階を更に有する、請求項１５または１６に記載の方法。
【請求項２２】
前記ベクトルキャッシュラインライトバック命令に応答して、プログラム順序において前記ベクトルキャッシュラインライトバック命令に先行する全てのストア命令が全面的に可視になるまで、前記プログラム順序における前記ベクトルキャッシュラインライトバック命令の後に続く全てのストア命令が、全面的に可視になることを阻止する段階を更に備える、請求項１５または１６に記載の方法。
【請求項２３】
命令を処理するためのシステムであって、
相互接続と、
前記相互接続と結合され、ベクトルキャッシュラインライトバック命令および永続性コミット命令を含む命令セットを有するプロセッサと、
前記相互接続と結合され、命令のセットを格納する永続性メモリとを備え、
命令の前記セットは、前記プロセッサによって実行されると、前記プロセッサに、
ソースパックドデータ要素オペランドの複数のデータ要素を、パックドデータレジスタに格納されたソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示される前記永続性メモリ内のメモリアドレスに格納することと、
前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ベクトルキャッシュラインライトバック命令によって示される前記ソースパックドメモリインデックスオペランドの前記メモリインデックスのいずれかによって示される前記メモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、前記永続性メモリにライトバックさせることと、
前記永続性コミット命令に応答して、前記ダーティキャッシュラインの前記いずれかが前記永続性メモリにライトバックされるまで、プログラム順序において前記ベクトルキャッシュラインライトバック命令の後に続く全ての命令が、完了することを阻止することとを含むオペレーションを実行させる、システム。
【請求項２４】
命令を処理するためのシステムであって、
相互接続と、
前記相互接続と結合され、ベクトルキャッシュラインライトバック命令および永続性コミット命令を含む命令セットを有するプロセッサと、
前記相互接続と結合され、命令のセットを格納する永続性メモリとを備え、
命令の前記セットは、前記プロセッサによって実行されると、前記プロセッサに、
ソースパックドデータ要素オペランドの複数のデータ要素を、ソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示される前記永続性メモリ内のメモリアドレスに格納することと、
前記ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、前記ベクトルキャッシュラインライトバック命令によって示される前記ソースパックドメモリインデックスオペランドの前記メモリインデックスのいずれかによって示される前記メモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、前記永続性メモリにライトバックさせることと、
前記永続性コミット命令に応答して、前記ダーティキャッシュラインの前記いずれかが前記永続性メモリにライトバックされるまで、プログラム順序において前記ベクトルキャッシュラインライトバック命令の後に続く全ての命令が、完了することを阻止することとを含むオペレーションを実行させ、
前記ベクトルキャッシュラインライトバック命令は、前記永続性メモリに格納される複数のデータ要素を含むソースパックドデータ要素オペランドを示すインデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令を含む、システム。
【請求項２５】
前記ベクトルキャッシュラインライトバック命令は、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを示す、請求項２３または２４に記載のシステム。
【請求項２６】
請求項１５〜２２のいずれか１項に記載の方法を実行するための手段を備える、プロセッサ。
【請求項２７】
コンピュータに、請求項１５〜２２のいずれか１項に記載の方法を実行させる、コンピュータプログラム。
【請求項２８】
相互接続と、前記相互接続と結合された請求項１〜１４のいずれか１項に記載のプロセッサと、前記相互接続と結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを備える、電子デバイス。
【請求項２９】
請求項２７に記載のコンピュータプログラムを格納する、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に説明される実施形態は、概ねプロセッサに関する。具体的には、本明細書に説明される実施形態は、概ねプロセッサにおけるキャッシュに関する。
【背景技術】
【０００２】
性能を改善するべく、プロセッサは一般に、１または複数のキャッシュを含む。キャッシュは、システムメモリよりも比較的小さくて高速アクセスのストレージのことをいう場合がある。更に、キャッシュは、システムメモリよりもコアおよび／または命令パイプラインに比較的近いものとなり得る。キャッシュは、データへのその後のより高速なアクセスを提供するべく、システムメモリからプロセッサへともたらされたデータをキャッシュまたは格納するために用いられ得る。典型的には、キャッシュ内のデータへのアクセスは一般に、数プロセッサクロックサイクル以下しか掛らないが、システムメモリ内のデータへのアクセスは、多くの場合、数十〜数百クロックサイクル掛る場合がある。プロセッサがデータをシステムメモリから読み出す必要がある場合、プロセッサは、まずデータのコピーがキャッシュ内に格納されているか否かを確認する場合がある。データがキャッシュ内に見つかった場合、プロセッサはキャッシュからデータにアクセスし得、一般には、データがシステムメモリからアクセスされる場合よりもむしろ速く行われる。同様、プロセッサがデータをシステムメモリに書き込む必要がある場合、データは、多くの場合、最初にキャッシュ内に格納され得る。
【０００３】
１または複数のキャッシュを有するプロセッサは、システムにおける全てのコア、プロセッサ、または他のエンティティが正しい、現在のバージョンのデータをコヒーレントに見るように、キャッシュ内のデータがコヒーレントに管理され、適切な時点でメモリにライトバックされることを保証するのを支援するキャッシュコヒーレンシメカニズムまたはキャッシュコヒーレンシプロトコルを実装し得る。
【図面の簡単な説明】
【０００４】
本発明は、以下の説明および実施形態を例示するために用いられる添付の図面を参照することによって最も良く理解され得る。図面において、
【図１】プロセッサ、および１もしくは複数のメモリ、ならびに／またはストレージデバイスのセットを含む実施形態を実装するのに好適なシステムの実施形態のブロック図である。
【図２Ａ】１もしくは複数のメモリおよび／またはストレージデバイスのセットの第１の実施形態のブロック図である。
【図２Ｂ】１もしくは複数のメモリおよび／またはストレージデバイスのセットの第２の実施形態のブロック図である。
【図３】ベクトルキャッシュラインライトバック命令の実施形態を実行するように動作するプロセッサの実施形態のブロック図である。
【図４】ベクトルキャッシュラインライトバック命令の実施形態を実行する方法の実施形態のブロックフロー図である。
【図５】ベクトルキャッシュラインライトバック命令の実施形態に好適なソースパックドメモリインデックスオペランドの例示的な実施形態のブロック図である。
【図６】ベクトルキャッシュラインライトバック命令の実施形態に好適なソースパックドメモリインデックスオペランド、および対応するソースパックドデータオペレーションマスクオペランドの例示的な実施形態のブロック図である。
【図７】任意選択でマスクされたベクトルキャッシュラインライトバックオペレーションの実施形態を示すブロック図である。
【図８】任意選択でマスクされたインデックス付きベクトルストアおよびキャッシュラインライトバックオペレーションの実施形態を示すブロック図である。
【図９】本発明の実施形態を実装するのに好適なプロセッサの詳細な例示的実施形態のブロック図である。
【図１０Ａ】本発明の実施形態による一般的ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。
【図１０Ｂ】本発明の実施形態による一般的ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。
【図１０Ｃ】本発明の実施形態による一般的ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。
【図１１Ａ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびオペコードフィールドを示すブロック図である。
【図１１Ｂ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびオペコードフィールドを示すブロック図である。
【図１２Ａ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびフィールドを示すブロック図である。
【図１２Ｂ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびフィールドを示すブロック図である。
【図１２Ｃ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびフィールドを示すブロック図である。
【図１２Ｄ】本発明の実施形態による、例示的な特定ベクトル向け命令フォーマットおよびフィールドを示すブロック図である。
【図１３】レジスタアーキテクチャの実施形態のブロック図である。
【図１４Ａ】インオーダパイプラインの実施形態およびレジスタリネームアウトオブオーダ発行／実行パイプラインの実施形態を示すブロック図である。
【図１４Ｂ】実行エンジンユニットに結合されたフロントエンドユニットを含み、その両方がメモリユニットに結合されたプロセッサコアの実施形態のブロック図である。
【図１５Ａ】オンダイ相互接続ネットワークおよびレベル２（Ｌ２）キャッシュのローカルサブセットへの接続を伴うシングルプロセッサコアの実施形態のブロック図である。
【図１５Ｂ】図１５Ａにおけるプロセッサコアの一部の拡大図による実施形態のブロック図である。
【図１６】２つ以上のコアを有し得、統合メモリコントローラを有し得、統合グラフィックスを有し得るプロセッサの実施形態のブロック図である。
【図１７】コンピュータアーキテクチャの第１の実施形態のブロック図である。
【図１８】コンピュータアーキテクチャの第２の実施形態のブロック図である。
【図１９】コンピュータアーキテクチャの第３の実施形態のブロック図である。
【図２０】コンピュータアーキテクチャの第４の実施形態のブロック図である。
【図２１】本発明の実施形態による、ソース命令セットのバイナリ命令をターゲット命令セットのバイナリ命令に変換するソフトウェア命令コンバータを用いるブロック図である。
【発明を実施するための形態】
【０００５】
ベクトルキャッシュラインライトバック命令、この命令を実行するプロセッサ、命令を処理または実行するときにプロセッサによって実行される方法、および命令を処理または実行するために１または複数のプロセッサを組み込むシステムが本明細書において開示される。以下の説明において、多数の具体的な詳細（例えば、具体的な命令オペレーション、データフォーマット、プロセッサ構成、マイクロアーキテクチャの詳細、オペレーションのシーケンス等）が記載される。しかし、実施形態は、これらの具体的な詳細がなくても実施され得る。他の例において、説明の理解を不明瞭にするのを避けるべく、周知の回路、構造、および技術は詳細に示されていない。
【０００６】
図１は、プロセッサ１０２、および１もしくは複数のメモリならびに／またはストレージデバイス１２４を含むシステム１００（例えば、コンピュータシステムまたは他の電子デバイス）の実施形態のブロック図である。プロセッサは、１または複数のコア１０４を含み得る。示されるように、図示例において、プロセッサは、任意選択で第１のコア（コア１）１０４‐１〜第Ｎのコア（コアＮ）１０４‐Ｎを含み、コアＮの数は、任意の所望のコア数を表し得る。典型的には、コアの数は、１〜数百程度の範囲であり、多くの場合に１〜数十程度である。
【０００７】
コアの各々は、命令パイプライン１０６を含む。例えば、コア１は第１の命令パイプライン１０６‐１を含み、コアＮは第Ｎの命令パイプライン１０６‐Ｎを含む。命令パイプラインの各々は、命令セットの命令を処理することができる。命令セットは、コアおよび／またはプロセッサが実行するように動作するネイティブな命令を含む。命令セットの命令とは、実行のためにプロセッサに提供されるマクロ命令、アセンブリ言語命令、または機械レベル命令のことをいう。示されるように、いくつかの実施形態において、少なくとも１つのコア（例えば、この場合にはコア１  １０４‐１）の命令セット１１５は、任意選択でインデックス付きベクトルストア命令またはスキャター命令１１８を含み得る。更に示されるように、いくつかの実施形態において、少なくとも１つのコア（例えば、この場合にはコア１  １０４‐１）の命令セットは、任意選択でベクトルキャッシュラインライトバック命令１２０の実施形態を含み得る。勿論、命令セットは、他の命令（例えば、スカラロード命令、スカラストア命令、スカラ演算命令およびパックド演算命令等）を含み得る。一般に、命令パイプラインは、命令をフェッチするフェッチユニットと、命令をデコードするデコーダと、デコードされた命令を実行する実行ユニットまたは実行ロジックとを含み得る。任意選択のアウトオブオーダコアの場合、命令パイプラインは、任意選択でアロケーションユニット、リネームユニット、スケジューリングユニット、およびコミットユニット、ロジック、またはパイプラインステージも含み得るが、これは必須ではない。本発明の範囲は、いずれの特定のタイプの命令パイプラインにも限定されない。
【０００８】
プロセッサは、１または複数のキャッシュ１１０、１１２を含み得る。示されるように、図示されるプロセッサは、任意選択で異なるキャッシュレベルの複数のキャッシュを含むキャッシュ階層１０８を有する。キャッシュレベルは、コアおよび／または命令パイプラインに対する相対的な近さにおいて異なる。具体的には、コア１は、１または複数のレベルの１または複数の専用キャッシュ１１０‐１を有する。同様に、コアＮは、１または複数のレベルの１または複数の専用キャッシュ１１０‐Ｎを有する。１または複数の専用キャッシュ１１０の各々は、それを用い、および／または含む、対応するコアの専用である。一般に、１または複数の専用キャッシュ１１０のセットの各々は、第１のレベルまたはレベル１（Ｌ１）キャッシュを含み得る。Ｌ１キャッシュは、命令パイプライン（例えば、実行ユニット）に最も近いキャッシュレベルを表し得る。いくつかの場合において、１または複数の専用キャッシュ１１０のセットの各々は、第２のレベルまたはレベル２（Ｌ２）キャッシュも任意選択で／潜在的には含み得るが、これは必須ではない。Ｌ２キャッシュは、命令パイプライン（例えば、実行ユニット）の２番目に近いキャッシュレベルを表し得る。
【０００９】
示されるように、プロセッサは、任意選択で１または複数のレベルの１または複数の共有キャッシュ１１２も含み得る。１または複数の共有キャッシュは、任意のある特定のコアの専用であるものとは異なり、コアの各々（例えば、コアの各々のためのキャッシュデータ）によって共有され得る。例として、１または複数の専用キャッシュ１１０が単一レベルのキャッシュまたはＬ１キャッシュのみを含む場合、１または複数の共有キャッシュ１１２は、Ｌ２共有キャッシュ、および任意選択で／潜在的には第３のレベルの共有キャッシュまたはレベル３（Ｌ３）キャッシュを含み得るが、これは必須ではない。あるいは、１または複数の専用キャッシュ１１０がＬ１キャッシュおよびＬ２キャッシュの両方を含む場合、１または複数の共有キャッシュ１１２は、Ｌ３共有キャッシュ、および任意選択で／潜在的には第４のレベルの共有キャッシュまたはレベル４（Ｌ４）キャッシュを含み得るが、これは必須ではない。これらは、いくつかの例示に過ぎない。広くは、様々な実施形態において、プロセッサは、１または複数のキャッシュレベルの１または複数の専用キャッシュまたは共有キャッシュを有し得る。
【００１０】
プロセッサは、システム内の全ての関連するエンティティが正しい現在のバージョンのデータをコヒーレントに見るように、プロセッサの１または複数のキャッシュ１１０、１１２内に格納されたデータがコヒーレントに管理され、適切な時点でメモリ／ストレージデバイスに格納されることを保証するのを支援するキャッシュコヒーレンシメカニズムまたはキャッシュコヒーレンシプロトコルを実装し得る。例えば、キャッシュコヒーレンシメカニズムは、全てのコアが正しいバージョンのデータをコヒーレントに見ること、およびプロセッサ１０２のキャッシュ１１０、１１２と同一のコヒーレンシドメインにおいて１または複数のキャッシュ１１１を有する任意選択の追加の（例えば、外部）キャッシュコンポーネント１０３が正しいバージョンのデータをコヒーレントに見ることを保証するのに役立ち得る。例として、追加のキャッシュコンポーネントは、各々が異なるキャッシュ階層を有する１または複数の追加のプロセッサ、そのコヒーレンシドメインにおけるキャッシュを用いる入出力デバイス等を含み得る。外部キャッシュコンポーネント１０３は、例えば、ポイントツーポイント相互接続、マルチドロップバス等を介するなどしてプロセッサ１０２のバスインタフェースユニット１２６と結合され得る。好適なキャッシュコヒーレンシプロトコルの例としては、ＭＥＳＩ、ＭＯＳＩ、ＭＯＥＳＩ等が挙げられるが、これらに限定されない。ＭＥＳＩプロトコルは、４つの状態、すなわち、変更（Ｍ）、排他（Ｅ）、共有（Ｓ）、および無効（Ｉ）を含み、これらはＭＥＳＩの２ビットで示される。ＭＯＳＩプロトコルは、排他（Ｅ）状態に代えて所有（Ｏ）状態を使用する。ＭＯＥＳＩプロトコルは、排他（Ｅ）状態および所有（Ｏ）状態の両方を使用する。変更状態は、ダーティキャッシュラインを指定する。
【００１１】
再び図１を参照すると、プロセッサ１０２および１もしくは複数のメモリ、ならびに／またはストレージデバイス１２４は、介在する結合メカニズム１２２を介して結合される。プロセッサは、介在する結合メカニズムを介してプロセッサをメモリ／ストレージデバイスに結合することができるメモリサブシステムユニット１１４を含む。結合メカニズムは、プロセッサをメモリ／ストレージデバイスと結合する様々な異なるタイプの結合メカニズムを広く含むものとして解釈される。様々な実施形態において、結合メカニズム１２２は、１または複数の相互接続、１または複数のメモリコントローラ、チップセットの１または複数のコンポーネント等、およびこれらの様々な組み合わせを含み得る。例えば、いくつかの実施形態において、プロセッサは、内部メモリコントローラを有してもよく、介在するバスまたは相互接続を介してメモリ／ストレージデバイス（またはそれらの一部）と直接に結合されてもよい。別の例として、プロセッサおよびメモリ／ストレージデバイス（またはそれらの一部）は、介在チップセットコンポーネント（例えば、メモリコントローラハブ）および相互接続のセットを介して互いに結合され得る。
【００１２】
特定のコンセプトを更に示すべく、任意選択のインデックス付きベクトルストア命令またはスキャター命令１１８の実行を検討する。スキャター命令は、複数のパックドデータ要素を有する（例えば、示されないプロセッサの第１のパックドデータレジスタにおける）第１のソースパックドデータオペランドを示し得、複数のパックドメモリインデックスを有する（例えば、示されないプロセッサの第１のパックドデータレジスタにおける）第２のソースパックドメモリインデックスオペランドを示し得る。スキャター命令は、実行コア（例えば、コア１）に、第１のソースパックドデータオペランドにおけるデータ要素の各々を、第２のソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示されたメモリ／ストレージデバイス１２４における異なる対応するメモリ位置にスキャターし、書き込み、または格納させるように動作し得る。特定のフレキシブルな値のメモリインデックスに応じて、メモリ位置は、潜在的に／任意選択で非連続的メモリ位置であってもよい。しかし、最初に、スキャターされたデータ要素は、プロセッサの１または複数のキャッシュ１１０、１１２内に格納され得る。その後、適切な時点に（例えば、キャッシュコヒーレンシプロトコルに基づいて）、スキャター命令のデータ要素は、１または複数のキャッシュ１１０、１１２からメモリ／ストレージデバイス１２４にライトバックされ得る。やはり特定のフレキシブルな値のメモリインデックスに応じて、メモリ位置は、潜在的に／任意選択でメモリ／ストレージデバイスにおける非シーケンシャなキャッシュラインに対応し得る。そのようなスキャター命令は、例えば、テーブルまたは他のデータ構造体の異なる行または列におけるデータを更新し、スパースアレイまたはデータ構造体、スパース線形代数オペレーション等におけるデータを更新する等の様々な異なる目的に有用である。スキャター命令は、任意選択で必須ではない。
【００１３】
いくつかの実施形態において、ベクトルキャッシュラインライトバック命令１２０は、スキャター命令のデータ要素をキャッシュ１１０、１１２からメモリ／ストレージデバイスにライトバックするために、任意選択のスキャター命令１１８と併せて用いられ得るが、本発明の範囲はそのように限定されない。上述のように、スキャター命令に関連付けられたデータは、メモリ／ストレージデバイス内に代えて、プロセッサのキャッシュ内に最初に格納され得る。ベクトルキャッシュラインライトバック命令は、複数のパックドメモリインデックスを有するソースパックドメモリインデックスオペランドを示し得る。スキャター命令のデータをライトバックするために用いられる場合に、ベクトルキャッシュラインライトバック命令は、スキャター命令と同一のメモリインデックスを用いてもよい（例えば、既に生成された同一のパックドメモリインデックスオペランドを示してもよい）。ベクトルキャッシュラインライトバック命令は、プロセッサ１０２によって実行され得、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示されたメモリアドレスのセットのいずれかのデータを格納する、コヒーレンシドメイン内のプロセッサの任意のキャッシュレベルにおける任意のキャッシュ（例えば、キャッシュ１１０、１１２）の任意のダーティキャッシュラインを、メモリ／ストレージデバイス１２４にライトバックする。また、いくつかの実施形態において、ベクトルキャッシュラインライトバック命令は、バスまたは相互接続上で、同一のコヒーレンシドメインに１または複数のキャッシュを有する他のエンティティまたはコンポーネント（例えば、外部キャッシュコンポーネント１０３）に、信号をブロードキャストさせ、送信させ、または別の方法で提供させ、それらのキャッシュにメモリアドレスを格納し、または当該メモリアドレスによって関連付けられた任意のダーティキャッシュラインをライトバックさせ得る。
【００１４】
いくつかの実施形態において、ライトバックされるデータは、任意選択で１または複数のキャッシュにおいて無効にされ得る。更に、ソースパックドメモリインデックスオペランドのメモリインデックスによって示されるメモリアドレスのデータを格納するキャッシュラインは、ダーティであるか否かに関係なく（例えば、クリーン、未変更、共有、排他等の場合に）無効にされ得る。あるいは、他の実施形態において、ライトバックされるデータは、任意選択でキャッシュ内に保持され、未変更状態にされ得る。いくつかの実施形態において、１つの単一データ要素のみではなく、複数のデータ要素（例えば、全てダーティである場合、最大でベクトルの量まで）がベクトルキャッシュラインライトバック命令に応答してライトバックされ得る。スキャター命令におけるように、やはりメモリインデックスのフレキシブル値に応じて、ベクトルキャッシュラインライトバック命令に対応するメモリアドレスは、潜在的に／任意選択で非連続メモリアドレスを表し得、および／または潜在的に／任意選択でメモリ／ストレージデバイスにおける非シーケンシャルなキャッシュラインに対応し得る。
【００１５】
ベクトルキャッシュラインライトバック命令１２０は、スキャター命令１１８とは別個の、および／または命令セット１１５が任意選択でスキャター命令１１８を省略した場合の有用性も有する。例えば、ベクトルキャッシュラインライトバック命令は、複数の別個のスカラストア命令またはライト・トゥー・メモリ（ｗｒｉｔｅ  ｔｏ  ｍｅｍｏｒｙ）命令によって既に書き込まれた複数のメモリアドレスに対応する（例えば、これらのメモリアドレスのデータを格納する）ダーティキャッシュラインをライトバックするために、任意選択で用いられ得る。別の例として、ベクトルキャッシュラインライトバック命令は、任意選択で、キャッシュラインに対して変更がどのように行われたか（例えば、ソフトウェアプログラマの裁量で）に関係なく複数のダーティキャッシュラインをライトバックするために用いられ得る。
【００１６】
１または複数のメモリおよび／またはストレージデバイス１２４のセットを実装する異なる態様が企図される。図２Ａ〜図２Ｂは、永続性メモリを有するか、または有しない１または複数のメモリおよび／またはストレージデバイス１２４のセットを実装するための２つの異なる好適な実施形態を示す。他の実施形態は、本開示の利益を有する当業者には明らかであろう。
【００１７】
図２Ａは、１もしくは複数のメモリおよび／またはストレージデバイスのセット２２４Ａの第１の実施形態のブロック図である。メモリ／ストレージデバイス２２４Ａは、プライマリまたはメインの揮発性メモリ２２８と、セカンダリまたは補助の不揮発性メモリまたはストレージ２３０とを含む。電力が印加されない場合、揮発性メモリは、そのデータまたは内容を失う。対照的に、不揮発性メモリまたは不揮発性ストレージは、比較的長い期間、電力が印加されなくともそのデータまたは内容を保持することができる。コンピュータシステムにおいて一般に用いられる１つの例示的なタイプの揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。コンピュータシステムにおいて一般に用いられる２つの例示的なタイプの不揮発性メモリまたは不揮発性ストレージは、磁気ディスクおよびフラッシュメモリである。従来、ＤＲＡＭまたは他のタイプの揮発性メモリは、レイテンシおよび帯域幅の両方の観点においてセカンダリストレージまたは補助ストレージに用いられる磁気ディスクおよび特定の他のタイプの不揮発性メモリまたは不揮発性ストレージよりも著しく高速であった。しかし、ＤＲＡＭまたは他のタイプの揮発性メモリは一般に、磁気ディスクおよび特定の他のタイプの不揮発性大容量ストレージより１ビット毎のコストも高く、これに対応して低い容量を有する。そのような構成において、プライマリまたはメインの揮発性メモリは、多くの場合、（例えば、メモリバスを介して）より直接的またはより近くにプロセッサに結合され、プロセッサ命令セットのロード命令および／またはストア命令によって直接にアクセス可能であった。逆に、セカンダリまたは補助の不揮発性メモリまたは不揮発性大容量ストレージは、多くの場合、入出力（Ｉ／Ｏ）コントローラ（例えば、ＳＣＳＩ、ＳＡＴＡ、ＰＣＩ  Ｅｘｐｒｅｓｓ等）を介してプロセッサと結合されており、通常は命令セットのロード命令／ストア命令によらず、ファイルシステムのアプリケーションプログラミングインタフェース（ＡＰＩ）を介してオペレーティングシステム（ＯＳ）の呼出しによってアクセスされている。
【００１８】
図２Ｂは、１もしくは複数のメモリおよび／またはストレージデバイスのセット２２４Ｂの第２の実施形態のブロック図である。メモリ／ストレージデバイス２２４は、プライマリメモリもしくはメインメモリ２３２と、１もしくは複数のセカンダリもしくは補助のメモリおよび／またはストレージデバイスの任意選択のセットとを含む。プライマリメモリ／メインメモリ２３２は、いわゆる永続性メモリ２３４を含み、任意選択で／潜在的には非永続性（例えば、揮発性）メモリ２３６を含む。セカンダリ／補助メモリ／ストレージは、非永続性（例えば、揮発性）メモリ２３６および／または永続性メモリ２３４を補助し得る。例として、セカンダリ／補助メモリ／ストレージとは、補助フラッシュメモリまたは不揮発性デュアルインラインメモリモジュール（ＮＶＤＩＭＭ）のことをいう場合がある。ＮＶＤＩＭＭは、例えば、予期しない電力損失、システムクラッシュ、または通常のシステムシャットダウンにより電力がなくなった場合であっても、データを保持し得るコンピュータメモリＤＲＡＭ  ＤＩＭＭのことをいう場合がある。
【００１９】
永続性メモリは、ストレージクラスメモリ（ＳＣＭ）として呼ばれる場合がある。様々な実施形態において、永続性メモリは、不揮発性メモリもしくはストレージ、バッテリ補助揮発性メモリ、またはこれらの組み合わせと共に実装され得る。メインメモリまたはプライマリメモリに用いられるＤＲＡＭまたは他のタイプの揮発性メモリとは異なり、永続性メモリは、電源障害および／またはシステム障害、ならびに再起動の間に喪失しないようにデータを永続的に、または耐久的に格納するために用いられ得る。データが永続性メモリ内に格納されると、通常は電力損失、オペレーティングシステムの障害、システムクラッシュ等があっても保持される。いくつかの場合には、データは、プロセッサまたはコンピュータシステムハードウェアの障害においてさえも喪失しないことがある。損傷を受けなければ、永続性メモリ内のデータを回復することがなおも可能であり得るからである。データのそのような耐久性または永続性は、特定の用途および／または実装（例えば、データベースアプリケーション、トランザクション等）には非常に貴重なものとなる傾向がある。
【００２０】
永続性メモリは、ページ／ブロックのアドレス指定能力を必要とするのではなく、バイトでアドレス指定可能であり得、これにより永続性メモリがプロセッサメモリバスと直接に結合されることを可能にするのに役立ち得る。いくつかの実施形態において、永続性メモリ２３４は単独で、または非永続性（例えば、揮発性）メモリ２３６と組み合わせて、コンピュータシステムのプライマリメモリまたはメインメモリを実装するために用いられ得る。いくつかの実施形態において、永続性メモリは単独、または非永続性メモリと組み合わせて、プロセッサのアドレス指定可能な物理アドレス空間の一部となり得る。システムのソフトウェアおよびアプリケーションは、ユーザレベル命令（例えば、ロード命令、ストア命令、スキャター命令等）を実行することによって永続性メモリにアクセスすることができる場合がある。永続性メモリへのアクセスは、（例えば、キャッシュ能力、コヒーレンシ、プロセッサメモリオーダリング、メモリタイプ等に関する）ＤＲＡＭメイン／プライマリメモリへのアクセスと概ね同じプロセッサメモリモデルに従い得る。
【００２１】
異なるタイプの永続性メモリ２３４が好適である。いくつかの例のみを挙げるならば、好適なタイプの永続性メモリの例としては、相変化メモリ（ＰＣＭ）に基づくもの、メモリスタに基づくもの（例えば、電荷と磁束の関係を結びつける非線形の２端子受動電気コンポーネント）、（例えば、スピン偏極電流を用いて磁気トンネル接合またはスピンバルブにおける磁性層の向きが変更され得る効果を利用する）スピン・トランスファ・トルクに基づくものが挙げられるが、これらに限定されない。これらの技術の拡張または改良である、将来開発される他の技術、または全く異なる技術も潜在的には好適である。本発明の範囲は、いずれの特定のタイプの永続性メモリにも限定されない。更に、永続性メモリを用いない実施形態も用いられ得る（例えば、ＤＲＡＭメインメモリおよびハードディスクセカンダリメモリの構成で用いられ得る）。
【００２２】
データが永続性メモリ２３４内に永続的または耐久的に格納されることを保証するには、ソフトウェアに対する更なる課題が課される嫌いがある場合がある。一つには、プロセッサ（例えば、プロセッサ１０２）は、ストア命令、スキャター命令等に関連付けられたデータが永続性メモリの途中で一時的に格納され得る中間の様々な揮発性マイクロアーキテクチャ構造体またはコンポーネントを有し得る。そのような揮発性構造体またはコンポーネントの例としては、１または複数のコヒーレンシキャッシュ（例えば、キャッシュ１１０、１１２）、プロセッサストアバッファ、ライトバックバッファ、フィルバッファ、アンコアおよび／または相互接続キューもしくはバッファ、メモリコントローラライトペンディングバッファ、メモリサイドキャッシュ等が挙げられるが、これらに限定されない。しかし、これらの構造体またはコンポーネントは揮発性であり、一般には電源障害、システムクラッシュ等の場合にはデータ内容を喪失する。一般に、ストア命令またはスキャター命令に関連付けられたデータは、永続性メモリまたは中間電源障害保護ストレージデバイス、あるいはバッファ内に実際に格納されるまで永続性、または耐久性がない。結果として、揮発性構造体またはコンポーネントのうちの１つにデータが格納される間に電源障害、システムクラッシュ等が生じると、データは、喪失する場合があり、所望の永続性または耐久性が実現されない。いくつかの実施形態において、本明細書に開示されるベクトルキャッシュラインライトバック命令は、データの永続性または耐久性を実現するのを支援するべく、任意の関連ダーティキャッシュラインをキャッシュコヒーレンシドメインから永続性メモリへとライトバックするのを支援するために用いられ得る。いくつかの実施形態において、更なる永続性コミット命令も任意選択で用いられ、ライトバックデータが永続的または耐久的に格納されることを保証するのに役立ち得る。あるいは、以下に更に説明されるように、ベクトルキャッシュラインライトバック命令は、任意選択でそのような永続コミット機能を組み込み得る。
【００２３】
図３は、ベクトルキャッシュラインライトバック命令３２０の実施形態を実行するように動作するプロセッサ３０２の実施形態のブロック図である。いくつかの実施形態において、プロセッサは、汎用プロセッサ（例えば、デスクトップ、ラップトップ、または他のコンピュータにおいて用いられるタイプの汎用マイクロプロセッサまたは中央処理装置（ＣＰＵ））であってもよい。あるいは、プロセッサは、専用プロセッサであってもよい。好適な専用プロセッサの例としては、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、グラフィックスプロセッサ、コプロセッサ、エンベデッドプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、およびコントローラ（例えば、マイクロコントローラ）が挙げられるが、これらに限定されない。プロセッサは、様々な複合命令セットコンピューティング（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピューティング（ＲＩＳＣ）アーキテクチャ、超長命令語（ＶＬＩＷ）アーキテクチャ、ハイブリッドアーキテクチャ、他のタイプのアーキテクチャのいずれかを有し得、または異なるアーキテクチャの組み合わせを有し得る（例えば、異なるコアは、異なるアーキテクチャを有し得る）。
【００２４】
動作中に、プロセッサ３０２は、ベクトルキャッシュラインライトバック命令３２０を受信し得る。例えば、命令は、バスまたは他の相互接続を介して１もしくは複数のメモリおよび／またはストレージデバイス３２４から受信され得る。命令は、マクロ命令、アセンブリ言語命令、機械コード命令、もしくは他の命令、またはプロセッサの命令セットの制御信号を表し得る。いくつかの実施形態において、ベクトルキャッシュラインライトバック命令は、複数のパックドメモリインデックスを有するソースパックドメモリインデックスオペランド３４８を、（例えば、１もしくは複数のフィールドまたはビットのセットによって）明示的に指定し、または別の方法で示し得る（例えば、暗黙的に示す）。一例として、命令は、ソースパックドメモリインデックスオペランドの指定フィールドまたはパックドデータレジスタ３４６のパックドデータレジスタを指定するビットのセット、あるいは他の格納位置を有してもよく、これはソースパックドメモリインデックスを格納するために用いられる。あるいは、ソースパックドメモリインデックスオペランドを格納するために用いられるパックドデータレジスタまたは他の格納位置は、任意選択で命令に対して暗黙的（例えば、命令のオペコードに対して暗黙的）であってもよい。
【００２５】
プロセッサは、デコードユニットまたはデコーダ３３６を含む。デコードユニットは、ベクトルキャッシュラインライトバック命令を受信してデコードし得る。デコードユニットは、１または複数の比較的低水準の命令または制御信号（例えば、１または複数のマイクロ命令、マイクロオペレーション、マイクロコードエントリポイント、デコードされた命令または制御信号等）を出力し得、これらは、比較的高水準のベクトルキャッシュラインライトバック命令を反映し、表し、および／またはこれから派生する。いくつかの実施形態において、デコードユニットは、命令を受信する１または複数の入力構造体（例えば、ポート、相互接続、インタフェース）と、命令を認識およびデコードするために入力構造体と結合された命令認識・デコードロジックと、低水準命令または制御信号を出力するために命令認識・デコードロジックと結合された１または複数の出力構造体（例えば、ポート、相互接続、インタフェース）とを含み得る。デコードユニットは、マイクロコードリードオンリメモリ（ＲＯＭ）、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、およびデコードユニットを実装するために用いられる他のメカニズムを含むが、これらに限定されない様々な異なるメカニズムを用いて実装され得る。
【００２６】
プロセッサ３０２は、パックドデータレジスタ３４６のセットも含む。いくつかの実施形態において、ソースパックドメモリインデックスオペランド３４８は、任意選択でパックドデータレジスタのセットにおけるパックドデータレジスタ内に格納され得る。あるいは、別の格納位置が任意選択でソースパックドメモリインデックスオペランドに用いられ得る。パックドデータレジスタの各々は、パックドデータ、ベクトルデータ、または単一命令多重データ（ＳＩＭＤ）のデータを格納するように動作するオンダイ格納位置を表し得る。パックドデータレジスタは、ソフトウェアおよび／またはプログラマに可視のアーキテクチャ的に可視な、またはアーキテクチャレジスタを表し得、および／またはオペランドを識別するためにプロセッサの命令セットの命令によって示されたレジスタである。これらのアーキテクチャレジスタは、所与のマイクロアーキテクチャにおける他の非アーキテクチャレジスタ（例えば、一時的レジスタ、リオーダバッファ、リタイアメントレジスタ等）と対比される。パックドデータレジスタは、好適な技術を用いて異なるマイクロアーキテクチャに異なる態様で実装され得、いずれの特定のタイプの設計にも限定されない。好適なタイプのレジスタの例としては、専用物理レジスタ、レジスタリネームを用いて動的に割り当てられた物理レジスタ、およびこれらの組み合わせが挙げられるが、これらに限定されない。
【００２７】
プロセッサは、１または複数のキャッシュレベルの１または複数のキャッシュ３４０も含み得る。これらのキャッシュは、キャッシュコヒーレンシドメインにあってもよい。１または複数の対応するキャッシュコントローラ３４２は、対応するキャッシュ３４０を制御するように動作し得、キャッシュコヒーレンシメカニズムまたはキャッシュコヒーレンシプロトコルを実装するのを支援するために用いられ得る。好適なキャッシュコヒーレンシプロトコルの例としては、ＭＥＳＩ、ＭＯＳＩ、ＭＯＥＳＩ等が挙げられるが、これらに限定されない。ＭＥＳＩプロトコルは、４つの状態、すなわち、変更（Ｍ）、排他（Ｅ）、共有（Ｓ）、および無効（Ｉ）を含み、これらはＭＥＳＩの２ビットで表される。ＭＯＳＩプロトコルは、排他（Ｅ）状態に代えて所有（Ｏ）状態を使用する。ＭＯＥＳＩプロトコルは、排他（Ｅ）状態および所有（Ｏ）状態の両方を使用する。任意選択で、プロセッサ３０２は、１または複数の他の任意選択のプロセッサ３０３、または他のエンティティと結合され得、これらは、やはり同一のキャッシュコヒーレンシドメイン内にある１または複数のキャッシュ３１１を有する。１または複数の任意選択の他のプロセッサ３０３、または他のエンティティは、バス、相互接続、または他の結合メカニズム３５４によってプロセッサ３０２と結合され得る。
【００２８】
プロセッサは、ベクトルキャッシュラインライト命令を実行または実装するように動作するキャッシュコヒーレンシシステム３３８も含む。キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバックユニットもしくはベクトルキャッシュラインライトバックロジック、および／または実行ロジックともみなされ得る。キャッシュコヒーレンシシステムは、デコードユニット３３６の出力部およびパックドデータレジスタ３４６と結合される。キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令を表し、および／またはこれから派生した１または複数のデコードされ、または別の方法で変換された命令または制御信号を受信し得る。キャッシュコヒーレンシシステムは、ソースパックドメモリインデックスオペランド３４８も受信し得る。いくつかの実施形態において、キャッシュコヒーレンシシステムは、任意選択で例えば、メモリインデックスをメモリアドレスに変換するために用いられるべき情報を受信するべく、汎用レジスタのセット（図示せず）とも結合され得る。例として、メモリインデックスは、共通のスケールおよび共通のベースを用いてメモリアドレスに変換され得る（例えば、ｍｅｍｏｒｙ  ａｄｄｒｅｓｓ＝ｍｅｍｏｒｙ  ｉｎｄｅｘ＊ｓｃａｌｅ＋ｂａｓｅ）。インデックスをアドレスに変換する他の態様も企図される。いくつかの実施形態において、キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、および／またはこの結果として（例えば、命令からデコードされた１または複数の命令もしくは制御信号に応答して）、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを内部に格納したコヒーレンシドメインの任意のキャッシュにおける任意のダーティキャッシュラインを、１または複数のメモリ／ストレージデバイスにライトバックさせるように動作し得る。
【００２９】
いくつかの実施形態において、キャッシュコヒーレンシシステム３３８は、命令に応答して、ソースパックドメモリインデックスオペランド３４８のメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを内部に格納した、コヒーレンシドメインにおけるプロセッサ３０２の任意のキャッシュレベルにおける任意のキャッシュ３４０内の任意のダーティキャッシュラインのメモリ／ストレージデバイス３２４へのライトバック３５０を実行し得る。一態様において、ダーティキャッシュラインは、変更されたキャッシュコヒーレンシプロトコル状態にあるものであってもよい（例えば、キャッシュラインに格納された実際の値が大きさにおいて変化しないように、同一の値がそれ自体に再度書き込まれる場合でさえあり得る）。示されるように、いくつかの実施形態において、キャッシュコヒーレンシシステムは、メモリインデックスによって関連付けられたダーティキャッシュラインのライトバックを開始するための、１または複数のキャッシュコントローラ３４２、またはその各々の１または複数のキャッシュ３４０を含み得、および／またはこれを制御し得る。あるいは、プロセッサの他のユニットまたはロジックは、任意選択で特定のマイクロアーキテクチャに所望される通りにライトバックを開始し、および／または実行し得る。
【００３０】
示されるように、図示される実施形態において、ベクトルキャッシュラインライトバック命令は、潜在的には、ライトバックに、キャッシュからのデータをメモリサブシステムユニット３１４におけるストアバッファ３４８に格納させてもよく、命令は次に、キャッシュからのデータがメモリ／ストレージデバイス３２４に実際に格納される前に、完了してもよい。そのような実施形態において、メモリサブシステムユニットは、書き込み済みデータの後での読み出しをライトバッファからサービス提供する等の適切なメモリオーダリングルールが満たされることを保証するように動作し得、従って書き込みのこのポスティッド動作は、揮発性メモリへのアクセスには可視ではない。メモリ／ストレージデバイス（例えば、永続性メモリ）への書き込みが永続性メモリに実際に書き込まれる（例えば、永続性へのコミット）ことを保証することが望まれる永続性メモリ実装において、任意の揮発性バッファまたは他のマイクロアーキテクチャ構造体は、空になり得る。一態様において、永続性コミット命令は、任意選択で書き込みをコミットし、またはメモリサブシステム（例えば、メモリサブシステムユニット３１４）にキューイングされたデータを永続性メモリに格納するために用いられ得る。永続性コミット命令は、内部で受け取られたストアをメモリ／ストレージデバイスに適用し得る。あるいは、様々な他の実施形態において、ベクトルキャッシュラインライトバック命令は、ライトバックに、適切なメモリオーダリングルールが満たされることを保証することができる、プロセッサ内の他の位置またはコンポーネントに、または中間のバッテリ補助揮発性ストレージもしくはバッファに、またはシステムメモリまで、キャッシュからのデータを格納させ得る。すなわち、ベクトルキャッシュラインライトバック命令の様々な実施形態は、ダーティキャッシュラインを、メモリ／ストレージデバイス３２４に至る、またはいくつかの場合にメモリ／ストレージデバイス３２４における様々な異なる位置に、キャッシュからライトバックさせ得る。
【００３１】
いくつかの実施形態において、キャッシュコヒーレンシシステム３３８は、命令に応答して１または複数のキャッシュラインライトバック信号３５２をバス、相互接続、または他の結合メカニズム３５４にブロードキャストし、送信し、または別の方法で提供し得る。これらの信号は、同一のコヒーレンシドメイン内にある任意のキャッシュレベルの任意の他のプロセッサ３０３の任意の他のキャッシュ３１１、または他のコンポーネントにシグナリングし、メモリ／ストレージデバイス３２４（例えば、各メモリサブシステムユニット）に、ソースパックドメモリインデックスオペランド３４８のメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインをライトバックするように動作し得る。
【００３２】
いくつかの実施形態において、信号３５２は、メモリアドレスが命令を実行するプロセッサ３０２のキャッシュ３４０内でキャッシュされているか否かに関係なくメモリアドレスに提供され得る。いくつかの実施形態において、信号３５２は、命令を実行するプロセッサ３０２のキャッシュ３４０内におけるキャッシュラインの状態に関係なくメモリアドレスに提供され得る。例えば、信号３５２は、キャッシュラインがキャッシュ３４０内で変更状態にあるか、または未変更状態にあるかに関係なく提供され得る。いくつかの実施形態において、信号３５２は、メモリアドレスがプロセッサ３０２のキャッシュ３４０内でキャッシュされているか否か、およびプロセッサ３０２のキャッシュ３４０内におけるキャッシュラインの状態の両方に関係なくメモリアドレスに提供され得る。示されるように、いくつかの実施形態において、キャッシュコヒーレンシシステムは、１または複数のキャッシュラインライトバック信号をバスまたは他の相互接続に送信し、または別の方法で提供するバスインタフェースユニット３４４内にロジックを含み得、および／またはバスインタフェースユニット３４４を制御し得る。あるいは、他のユニットまたはロジックが、信号３５２を特定の設計またはマイクロアーキテクチャ実装に所望のバスまたは他の相互接続に送信し、または別の方法で提供し得る。
【００３３】
ここで、その名称が暗示するように、ベクトルキャッシュラインライトバック命令は、スカラ命令ではなくベクトル命令であり、複数のメモリアドレスの（例えば、最大でベクトルの量までの）ライトバックをさせることができる。また、ベクトルキャッシュラインライトバック命令は、単一のスカラメモリインデックスのみをではなく、複数のメモリインデックスを有するソースパックドメモリインデックスオペランドを指定し、または別の方法で示す。いくつかの実施形態において、ソースパックドメモリインデックスオペランドは、パックドデータオペランド（例えば、汎用レジスタ）を格納するためには用いられないレジスタに代えて、パックドデータレジスタ内に格納され得る。典型的に、様々な実施形態において、ソースパックドメモリインデックスオペランドは、６４ビット、１２８ビット、２５６ビット、５１２ビット、１０２４ビット、またはより大きい幅のオペランドであってもよく、少なくとも２個、４個、８個、１６個、３２個、または３２個より多いメモリインデックスを有してもよい。いくつかの実施形態において、メモリインデックスは、３２ビットのダブルワードまたは６４ビットのクワッドワードのメモリインデックスであってもよいが、本発明の範囲はそのように限定されない。様々な実施形態において、メモリインデックスは、アドレス変換が有効にされた場合に、線形メモリアドレス、仮想メモリアドレス、または論理メモリアドレスに対応し得る。あるいは、他の実施形態において、メモリインデックスは、例えば、リアルモードにおける、および／またはアドレス変換が無効にされた場合の物理アドレスに対応し得る。いくつかの実施形態において、メモリアドレスは、バイトメモリ位置に対応し得るが、これは必須ではない。いくつかの実施形態において、メモリアドレスは、潜在的に／任意選択で連続しないメモリアドレスを表し得、および／または潜在的に／任意選択でメモリ／ストレージデバイスにおける非シーケンシャルなキャッシュライン内にあってもよい。
【００３４】
いくつかの実施形態において、キャッシュラインは、任意選択で（例えば、ダーティであるか、クリーンであるかを問わず）プロセッサキャッシュからフラッシュされ、および／または無効にされ得る。あるいは、他の実施形態において、キャッシュラインは、任意選択でプロセッサキャッシュ内に保持され、未変更状態に変更され得る。キャッシュラインをキャッシュに保持することは、（プロセッサロジックによってヒントとして処理され得る）性能の最適化を表し、その後のアクセスにおけるキャッシュミスの可能性を低減し得る。一態様において、プロセッサは、キャッシュラインをキャッシュ階層におけるキャッシュレベルに保持し得、いくつかの場合にはキャッシュ階層のラインを無効にし得る。キャッシュラインから１もしくは複数のメモリ、および／またはストレージデバイスへと変更データをライトバックすることのみを必要とするが、ラインが無効にされることを必要とせず、データへのその後のアクセスが予期される用途においては、性能の向上は、キャッシュラインをプロセッサキャッシュに保持することによって実現され得る。
【００３５】
ベクトルキャッシュラインライトバック命令の１つの考えられる利点は、ベクトル化を促進するのに役立ち得、および／または複数のライトバックオペレーションを実行するべく、コードがデータ処理のベクトルモードから抜けてデータ処理のスカラモードに入る必要性を回避するのに役立ち得る。例として、コードは、所与の数のデータ要素（例えば、ベクトルの量）を所与の数のメモリインデックスによって示された所与の数のメモリアドレスに格納する、スキャターまたは他のベクトルストア命令を用いてもよい。ベクトルキャッシュラインライトバック命令が利用可能でない場合、所与の数の別個のスカラキャッシュラインフラッシュまたは他のキャッシュラインライトバック命令が各々、所与の数のデータ要素の対応する異なる１つを別個または個々にライトバックするために必要とされ得る。このように、所与の数のデータ要素、および／またはスキャター命令のメモリインデックスに応じて、複数のスカラキャッシュラインライトバック命令から潜在的には多くの別個のスカラキャッシュラインライトバック命令が必要とされ得る。更に、パックドオペランド（例えば、先行するスキャター命令によって用いられたパックドメモリインデックスオペランド）から個々のメモリインデックスを抽出し、および／または（例えば、パックドデータレジスタから１または複数の汎用レジスタへと）抽出されたメモリインデックスを移動させるために、更なる命令が概して必要とされる。しかし、ベクトルキャッシュラインライトバック命令を含めることによって、ベクトルモードから脱する必要がない場合がある。むしろ、単一のベクトルキャッシュラインライトバック命令が単一命令の実行の範囲内で所与の数のデータ要素の各々をライトバックするために用いられ得る。更に、個々のメモリインデックスを抽出し、および／またはこれらをパックドデータレジスタから他のレジスタ（例えば、汎用レジスタ）へと移動させるための更なる命令の必要性がない場合がある。従って、ベクトルキャッシュラインライトバック命令は、実行する必要がある命令の総数を低減するのに役立ち得（例えば、コードにおける命令の量の肥大を低減するのに役立ち得る）、これにより性能の向上に役立つ傾向もあり得る。
【００３６】
ベクトルキャッシュラインライトバック命令の別の考えられる利点は、プログラミングおよび／またはコンパイルを簡略化するのを支援し得るということである。ベクトルキャッシュラインライトバック命令が利用可能でない場合、データ処理のベクトルモードから抜けてデータ処理のスカラモードに入り、および／または複数のスカラキャッシュラインフラッシュ命令または他のキャッシュラインライトバック命令を用いる必要性により、プログラミングおよびコンパイルを概して複雑なものにしやすい。命令の数が増加し、および／またはベクトルオペレーションおよびスカラオペレーションをインタリーブする必要がある場合、アルゴリズムを複雑なものにする嫌いがあり得る。スカラキャッシュラインライトバック命令を実行する場合、これをスキャター命令のパックドメモリインデックスと相関させるために煩雑な管理作業を伴う嫌いがあり得る。これは、プログラミングおよび／またはコンパイルの複雑性を増大させる嫌いがあり得る。複雑性の量は、プレディケートされ、またはマスクされたスキャター命令が他のデータ要素（例えば、マスクをかけられたデータ要素）をスキャターすることなく、データ要素のうちのいくつかのみ（例えば、非マスクデータ要素）を選択的にスキャターするために用いられる場合、更に増加し得る。この場合、プログラマまたはコンパイラは、別個または個々のスカラキャッシュラインフラッシュ命令を実行するべく、マスクされたスキャター命令のマスクを更に解釈する必要があり得る。また、これによって命令数の増加が結果として生じ得、潜在的には分岐の量も増加し、性能を低下させる嫌いがあり得る。
【００３７】
これらの欠点は、例えば、データが永続的になり得るように、データをキャッシュから永続性メモリにフラッシュし、または別の方法で書き込む量が増加することによって、特に永続性メモリを用いる実装において観察され得る。しかし、ベクトルキャッシュラインライトバック命令は、永続性メモリが用いられるか否かに関わらず有用であることが理解される。例えば、永続性メモリがプライマリストレージに用いられず、および／またはプロセッサによって直接にアドレス指定可能でない実装においてさえも、ベクトルキャッシュラインライトバック命令は、プロセッサキャッシュ内のデータを管理するのを支援するのに（例えば、キャッシュの効率性または使用率を向上させるのを支援するのに）有用である。１つの例示において、スレッドは、スパースデータ構造体におけるいくつかの値を計算するために数回反復し得る。最終的な値が計算されると、スレッドは、キャッシュ階層から値に関連付けられたキャッシュラインをエビクトする必要があり得る。これは、キャッシュを管理し、キャッシュの使用率または効率性を向上させるべく、または他の目的のために行われ得る。例えば、これは、他のより関連性があるデータにキャッシュを解放するように支援するために行われ得る。別の例として、これは、将来の変更（Ｍ）から無効（Ｉ）へのライトバックバーストおよび／または変更（Ｍ）から共有（Ｓ）へのライトバックバーストを回避するのにも役立ち得る。従って、ベクトルキャッシュラインライトバック命令は、永続性メモリを用いるか否かに関わらず、キャッシュ階層からキャッシュラインをフラッシュし、または別の方法でライトバックすることは有用である。これらは実現され得る、考えられる利点のうちのいくつかの例示に過ぎず、実施形態はこれらの利点の実現に限定されるものではないことが理解される。
【００３８】
キャッシュコヒーレンシシステム、キャッシュコントローラ、バスインタフェースユニット、および／またはプロセッサは、ベクトルキャッシュラインライトバック命令を実行し、および／またはベクトルキャッシュラインライトバック命令に応答し、および／またはベクトルキャッシュラインライトバック命令の結果として（例えば、ベクトルキャッシュラインライトバック命令からデコードされた１または複数の命令もしくは制御信号に応答して）結果を格納するように動作する特定または具体的なロジック（例えば、トランジスタ、集積回路、または潜在的にはファームウェアと組み合わされた他のハードウェア（例えば、不揮発性メモリ内に格納された命令）および／またはソフトウェア）を含み得る。
【００３９】
説明を不明瞭にするのを避けるべく、比較的簡単なプロセッサ３０２が示され、説明されている。しかし、プロセッサは、任意選択で他のプロセッサコンポーネントを含んでもよい。例えば、様々な異なる実施形態は、図９のいずれか、および／または図１３〜図１６のいずれかについて示され、説明されるコンポーネントの様々な異なる組み合わせおよび構成を含み得る。意図されるように動作することを可能にするべく、プロセッサのコンポーネントの全てが互いに結合され得る。
【００４０】
図４は、ベクトルキャッシュラインライトバック命令の実施形態を実行する方法４６０の実施形態のブロックフロー図である。様々な実施形態において、方法は、プロセッサ、命令処理装置、または他のデジタルロジックデバイスによって実行され得る。いくつかの実施形態において、図４の方法は、図３のプロセッサによって、および／またはその内部で実行され得る。図３のプロセッサについて本明細書に説明されるコンポーネント、特徴、および任意選択の具体的な詳細は、任意選択で図４の方法にも適用される。あるいは、図４の方法は、類似もしくは異なるプロセッサまたは装置によって、および／またはその内部で実行され得る。更に、図３のプロセッサは、図４のものと同一であるか、類似するか、または異なる方法を実行し得る。
【００４１】
方法は、ブロック４６１においてベクトルキャッシュラインライトバック命令を受信する段階を備える。様々な態様において、命令は、プロセッサまたはその一部（例えば、命令フェッチユニット、デコードユニット、バスインタフェースユニット等）において受信され得る。様々な態様において、命令は、オフプロセッサソースおよび／もしくはオフダイソース（例えば、メモリ、相互接続等）、またはオンプロセッサソースおよび／もしくはオンダイソース（例えば、命令キャッシュ、命令キュー等）から受信され得る。ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを有するソースパックドメモリインデックスオペランドを指定し、または別の方法で示し得る。
【００４２】
方法は、ブロック４６２においてベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメイン内の任意のキャッシュにおける、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインを１もしくは複数のメモリおよび／またはストレージデバイスにライトバックさせる段階を備える。いくつかの実施形態において、方法は、任意の関連キャッシュライン（例えば、ダーティでライトバックされたもの、ならびに未変更であるもの等）を無効にする段階も備え得る。いくつかの実施形態において、方法は、未変更状態にライトバックされたダーティキャッシュラインの状態を変更する段階も備え得る。
【００４３】
図５は、ベクトルキャッシュラインライトバック命令の実施形態に好適なソースパックドメモリインデックスオペランド５４８の例示的な実施形態のブロック図である。ソースパックドメモリインデックスオペランドは、Ｎ個のパックドメモリインデックスＩ１〜ＩＮを有する。様々な実施形態において、メモリインデックスの数（Ｎ）は、少なくとも２個、少なくとも４個、少なくとも８個、少なくとも１６個、少なくとも３２個、または３２個より多くてもよい。様々な実施形態において、ソースパックドメモリインデックスオペランドの幅は、６４ビット、１２８ビット、２５６ビット、５１２ビット、１０２４ビット、または１０２４ビットより多くてもよい。あるいは、これに代えてより大きいか、より小さいか、または全く異なる幅のオペランドが任意選択で用いられてもよい。様々な実施形態において、各メモリインデックスの幅は、１６ビット、３２ビット、または６４ビットであってもよい。あるいは、これに代えてより大きいか、より小さいか、または全く異なる幅のメモリインデックスが任意選択で用いられてもよい。
【００４４】
図６は、ベクトルキャッシュラインライトバック命令の実施形態に好適なソースパックドメモリインデックスオペランド６４８、および対応するソースパックドデータオペレーションマスクオペランド６６８の例示的な実施形態のブロック図である。ソースパックドメモリインデックスオペランド６４８は、図５のソースパックドメモリインデックスオペランド５４８について上記したのと同一の特性および変形形態を有し得る。
【００４５】
ソースパックドデータオペレーションマスクオペランド６６８は、本明細書において単にオペレーションマスク、プレディケートマスク、またはマスクとも称され得る。マスクは、対応するオペレーション（例えば、対応するメモリアドレス関連ダーティキャッシュラインライトバックオペレーション）が実行されるべきか否かをマスクし、プレディケートし、または条件付きで制御するために用いられ得るプレディケートオペランドまたは条件付き制御オペランドを表し得る。いくつかの実施形態において、マスキングまたはプレディケーションは、メモリインデックス粒度当たりのものであってもよく、従って異なるメモリインデックスに対するオペレーションが別個に、および／または他とは独立してプレディケートされ、または条件付きで制御され得る。マスクは、プレディケート要素または条件付き制御要素を表し得る複数のマスク要素（Ｍ）を含み得る。一態様において、マスク要素（Ｍ）は、ソースパックドメモリインデックスオペランドの対応するメモリインデックス（Ｉ）を用いた１対１の対応関係の中に含まれ得る。示されるように、ソースパックドデータオペレーションマスクオペランド６６８は、Ｎ個の対応するマスク要素Ｍ１〜ＭＮを有し得る。各マスク要素は、オペランド内の対応する位置、または相対位置におけるメモリインデックスのうちの異なる１つに対応し得る。例えば、Ｍ１はＩ１に対応し得、Ｍ２はＩ２に対応し得る等である。
【００４６】
いくつかの実施形態において、各マスク要素は、単一のマスクビットであってもよい。そのような場合に、マスクは、各メモリインデックスに対するビットを有し得る。各マスクビットまたは各要素の値により、対応するオペレーション（例えば、対応するメモリアドレス関連ダーティキャッシュラインライトバックオペレーション）が実行されるべきか否かを制御し得る。各マスクビットは、対応するメモリインデックスを用いてオペレーションが実行されることを可能にする第１の値を有し得、あるいは対応するメモリインデックスを用いてオペレーションが実行されることを可能にしない第２の異なる値を有し得る。１つの可能な従来方式によれば、２進数のゼロ（すなわち０）にクリアされたマスクビットは、実行されるべきでない、マスクをかけられた、またはプレディケートされたオペレーションを表し得るが、２進数の１（すなわち１）にセットされたマスクビットは、実行されるべき非マスクまたは非プレディケートオペレーションを表し得る。示された例において、マスクビット値は、左から右に０、１、１、０であるが、これは一例に過ぎない。この例によれば、メモリインデックスＩ１およびＩＮを格納し、またはこれらによって関連付けられたキャッシュコヒーレンシドメインにおけるダーティキャッシュラインのライトバックがプレディケートされ、実行される必要はない。しかし、メモリインデックスＩ２およびＩ３を格納し、またはこれらによって関連付けられたキャッシュコヒーレンシドメインにおけるダーティキャッシュラインのライトバックはプレディケートされず、実行される必要がある。他の実施形態において、２またはそれより多いビットは、任意選択で各マスク要素（例えば、各マスク要素は各々の対応するメモリインデックスと同じビットの数を有し得る）に用いられ得、全てのビットまたは少なくとも１ビット（例えば、最上位ビットまたは最下位ビット）は、マスキングまたはプレディケーションに用いられ得る。
【００４７】
図７は、任意選択でマスクされたベクトルキャッシュラインライトバック命令の実施形態に応答して実行され得る任意選択でマスクされたベクトルキャッシュラインライトバックオペレーション７７０の実施形態を示すブロック図である。命令は、複数のパックドメモリインデックス（Ｉ）を有するソースパックドメモリインデックスオペランド７４８を指定し、または別の方法でこれを示し得る。図示において、ソースパックドメモリインデックスオペランドは、Ｎ個のメモリインデックスＩ１〜ＩＮを有する。ソースパックドメモリインデックスオペランドおよびメモリインデックスは、図５のソースパックドメモリインデックスオペランド５４８およびインデックスについて上記したのと同一の特性および変形形態を有し得る。図示するいくつかの例示的な実施形態において、ソースパックドメモリインデックスオペランドの幅は、６４ビット、１２８ビット、２５６ビット、５１２ビット、または１０２４ビットであってもよく、各メモリインデックスの幅は、１６ビット、３２ビット、または６４ビットであってもよいが、本発明の範囲はそのように限定されない。
【００４８】
いくつかの実施形態において、命令は、複数のマスク要素（Ｍ）を有する任意選択のソースパックドデータオペレーションマスクオペランド７６８も任意選択で指定し、または別の方法で示し得るが、これは必須ではない。命令の他の実施形態は、任意選択でそのようなマスクを示し、または用いる必要がない。図示において、マスクはＮ個のマスク要素Ｍ１〜ＭＮを有する。各々の対応するメモリインデックスに１つのマスク要素が存在し得る。一態様において、対応するマスク要素およびメモリインデックスは、オペランド内の同じ相対位置に存在し得る。例えば、Ｉ１およびＭ１が対応し得、Ｉ２およびＭ２が対応し得る等である。マスク要素の数は、メモリインデックスの数が変わり得るのと全く同様に、変わる場合がある。マスクおよびマスク要素は、図６のマスク６６８およびマスク要素（Ｍ）について上記したのと同一の特性および変形形態を有し得る。１つの可能な従来方式によれば、図示に示されるように、２進数のゼロ（すなわち０）にクリアされたマスクビットは、実行される必要がないマスクをかけられたオペレーションを表し得るが、２進数の１（すなわち１）にセットされたマスクビットは、実行されるべき非マスクオペレーションを表し得る。示された例において、Ｍ１、Ｍ２、およびＭＮに対応するマスクビットまたはマスク要素は、対応するオペレーションが実行されるようにマスクされないが、Ｍ３に対応するマスクビットまたは要素は、対応するオペレーションが実行されないようにマスクをかけられる。
【００４９】
任意選択でマスクされたベクトルキャッシュラインライトバックオペレーションは、命令に応答して、および／または命令の結果として実行され得る。任意選択でマスクされたオペレーションは、（１または複数のキャッシュ７４０を含む）キャッシュコヒーレンシドメイン内にある任意のプロセッサまたは他のエンティティ内の任意のキャッシュレベルにおける任意のキャッシュ内で任意のダーティキャッシュライン（ＣＬ）用のメモリ／ストレージデバイス７２４へのキャッシュラインライトバック７７６を実行させ得る。任意のキャッシュは、任意選択のマスク７６８の対応する任意選択のマスク要素（Ｍ）のマスキングまたはプレディケーションに従って、ソースパックドメモリインデックスオペランド７４８内のメモリインデックス（Ｉ）によって示され、および／またはこれから派生した任意のメモリアドレスのデータをに格納し、または別の方法で任意のメモリアドレスに対応する。示された例において、メモリインデックスＩ１、Ｉ２、およびＩＮは、対応するライトバックオペレーションが実行されるように、対応するマスク要素Ｍ１、Ｍ２、およびＭＮによってマスクされない。示されるように、任意のダーティキャッシュライン（ＣＬ）は、メモリインデックスＩ１、Ｉ２、およびＩＮから示され、またはこれから派生したメモリ／ストレージデバイス７２４におけるメモリ位置にライトバックされ得る。逆に、この例においてメモリインデックスＩ３は、対応するライトバックオペレーションが実行されないように、対応するマスクをかけられたマスク要素Ｍ３によってマスクをかけられる。アスタリスク（＊）によって示されるように、ダーティキャッシュラインは、メモリインデックスＩ３によって示されるメモリ位置にライトバックされるのではなく、このメモリ位置における最初のキャッシュラインは、依然として変更されない場合がある。
【００５０】
いくつかの実施形態において、最初に、ダーティキャッシュラインライトバック７７６は、命令に応答してメモリ／ストレージデバイス７２４まで行われない場合がある。むしろ、ライトバックは、最初に一時的に中間位置に対して行われ得る。示されるように、いくつかの実施形態において、中間位置は、プロセッサのメモリサブシステムユニットにおけるストアバッファ７４８であってもよい。参照７７５において示されるように、ストアバッファは、メモリインデックスＩ１、Ｉ２、およびＩＮに対応するが、マスクをかけられているのでＩ３に対応しない任意のダーティキャッシュラインを一時的にバッファ処理し、または別の方法でこれを格納し得る。メモリサブシステムユニットは、適切なメモリオーダリングルールが満されることを保証するように動作し得る。あるいは、任意選択で、ライトバックは、いくつかの例を挙げれば、例えば、メモリ／ストレージデバイス７２４までの、中間電源障害セーフバッファに対する、中間のバッテリ補助中間位置に対する、または適切なメモリオーダリングルールが満されることを保証することができる別のコンポーネントまたはストレージのような他の位置に対するものであってもよい。次に、メモリ／ストレージデバイス７２４に対するストア７７８は、ライトバックを完了するための命令の実行外で実行され得る。
【００５１】
いくつかの実施形態において、参照７７１に示されるように、メモリインデックスによって示され、またはこれに対応するメモリアドレスのデータを格納する任意のダーティキャッシュラインをライトバックすることに加えて、これらのキャッシュラインは任意選択で、キャッシュラインが格納されたコヒーレンシドメインにおける任意のキャッシュ内で無効にされてもよい。これらのダーティキャッシュラインをライトバックするオペレーション７７０に加えて、これらのダーティキャッシュラインは、これらのキャッシュラインを同時または同期間に無効にすることもできる（例えば、キャッシュコヒーレンシプロトコル状態を無効に変更する）。これは、キャッシュコヒーレンシドメイン内の任意のキャッシュからこれらのキャッシュラインをフラッシュすることを表し得る。キャッシュ内の無効にしたデータは、速やかに他のデータと置き換えられ得る。ダーティキャッシュラインに加えて、メモリインデックスによって関連付けられた他のキャッシュライン（例えば、未変更のキャッシュライン）も無効にされ得る。
【００５２】
他の実施形態において、参照７７３において示されるように、メモリインデックスによって示されたメモリアドレスのデータを格納するダーティキャッシュラインをライトバックすることに加えて、これらのキャッシュラインは任意選択で、キャッシュラインが格納されたコヒーレンシドメインにおける任意のキャッシュ内に格納された状態で保持され、または保たれ得るが、これらのキャッシュラインのキャッシュコヒーレンシプロトコル状態は、未変更状態に変更され得る。これらのダーティキャッシュラインをライトバックするオペレーション７７０に加えて、これらのダーティキャッシュラインを、同時または同期間に未変更のキャッシュコヒーレンシプロトコル状態に変更することもできる。データをキャッシュに保持することにより、データがその次にキャッシュから再び読み出されて利用されることを可能にする。
【００５３】
他の実施形態において、命令は、任意選択でインデックス付きベクトルストアまたはスキャターオペレーションをベクトルキャッシュラインライトバックオペレーションと組み合わせてもよい。典型的には、メモリインデックスのセットに基づいて、スキャターオペレーションが最初に実行され、キャッシュコヒーレンシドメインにおけるキャッシュ内にデータ要素をスキャターまたは格納し得、次にベクトルキャッシュラインライトバックオペレーションが同じメモリインデックスを用いてキャッシュコヒーレンシドメインからメモリ／ストレージデバイスへとダーティキャッシュラインをライトバックし得る。
【００５４】
図８は、任意選択でマスクされたインデックス付きベクトルストアおよびキャッシュラインライトバック命令の実施形態に応答して実行され得る任意選択でマスクされたインデックス付きベクトルストアおよびキャッシュラインライトバックオペレーション８８０の実施形態を示すブロック図である。命令は、複数のパックドメモリインデックス（Ｉ）を有するソースパックドメモリインデックスオペランド８４８を指定し、または別の方法でこれを示し得る。図示において、ソースパックドメモリインデックスオペランドは、Ｎ個のメモリインデックスＩ１〜ＩＮを有する。ソースパックドメモリインデックスオペランドおよびメモリインデックスは、図５のソースパックドメモリインデックスオペランド５４８およびインデックスについて上記したのと同一の特性および変形形態を有し得る。図示するいくつかの例示的な実施形態において、ソースパックドメモリインデックスオペランドの幅は、６４ビット、１２８ビット、２５６ビット、５１２ビット、または１０２４ビットであってもよく、各メモリインデックスの幅は、１６ビット、３２ビット、または６４ビットであってもよいが、本発明の範囲はそのように限定されない。
【００５５】
命令は、複数のパックドデータ要素（Ｂ）を有するソースパックドデータ要素オペランド８８１も指定し、または別の方法でこれを示し得る。図示において、ソースパックドデータ要素オペランドは、Ｎ個のメモリインデックスＢ１〜ＢＮを有する。各々の対応するメモリインデックスに１つのデータ要素が存在し得、データ要素の数は、メモリインデックスの数が変わり得るのと全く同様に変わり得る。図示するいくつかの例示的な実施形態において、データ要素は、３２ビットの単精度浮動小数点データ要素または６４ビットの倍精度浮動小数点データ要素であり得るが、本発明の範囲はそのように限定されない。データ要素のサイズまたは幅が対応するメモリインデックスのサイズまたは幅と同じにし、またはソースパックドデータ要素オペランドのサイズまたは幅がソースパックドメモリインデックスオペランドのサイズまたは幅と同じにするという要求はない。
【００５６】
いくつかの実施形態において、命令は、複数のマスク要素（Ｍ）を有する任意選択のソースパックドデータオペレーションマスクオペランド８６８も任意選択で指定し、または別の方法で示し得るが、これは必須ではない。命令の他の実施形態は、任意選択でそのようなマスクを用いる必要がない。図示において、マスクはＮ個のマスク要素Ｍ１〜ＭＮを有する。各々の対応するメモリインデックスおよび／または各々の対応するデータ要素に１つのマスク要素が存在し得る。一態様において、対応するマスク要素、メモリインデックス、およびデータ要素は、オペランド内の同じ相対位置に存在し得る。例えば、Ｉ１、Ｂ１、およびＭ１が全て対応し得、Ｉ２、Ｂ２、およびＭ２が全て対応し得る等である。マスク要素の数は、メモリインデックスおよび／またはデータ要素の数が変わり得るのと全く同様に、変わる場合がある。マスクおよびマスク要素は、図６のマスク６６８およびマスク要素（Ｍ）について上記したのと同一の特性および変形形態を有し得る。１つの可能な従来方式によれば、図示に示されるように、２進数のゼロ（すなわち０）にクリアされたマスクビットは、実行される必要がないマスクをかけられたオペレーションを表し得るが、２進数の１（すなわち１）にセットされたマスクビットは、実行されるべき非マスクオペレーションを表し得る。示された例において、Ｍ１、Ｍ２、およびＭＮに対応するマスクビットまたはマスク要素は、対応するオペレーションが実行されるようにマスクされないが、Ｍ３に対応するマスクビットまたはマスク要素は、対応するオペレーションが実行されないようにマスクをかけられる。
【００５７】
任意選択でマスクされたインデックス付きベクトルストアおよびキャッシュラインライトバックオペレーションは、命令に応答して、および／または命令の結果として実行され得る。任意選択でマスクされたオペレーションは、８７８で任意選択のマスク８６８の対応する任意選択のマスク要素（Ｍ）のマスクまたはプレディケーションに従って、ソースパックドメモリインデックスオペランド８４８における対応するメモリインデックス（Ｉ）によって示された１もしくは複数のメモリおよび／またはストレージデバイス８２４におけるメモリ位置へと、データ要素（Ｂ）をソースパックドデータ要素オペランド８８１からスキャターし、書き込み、または格納し得る。いくつかの実施形態において、データ要素（Ｂ）は、メモリインデックス（Ｉ）の特定のフレキシブルな値に応じて、メモリ／ストレージデバイス８２４における任意選択による／潜在的には非連続的メモリ位置、および／または任意選択による／潜在的には非シーケンシャルなキャッシュラインにスキャターまたは格納され得る。例えば、例示に示されるように、データ要素Ｂ１は、メモリインデックスＩ１によって示されるメモリ位置に格納され得、データ要素Ｂ２は、メモリインデックスＩ２によって示されたメモリ位置に格納され得、データ要素ＢＮは、メモリインデックスＩＮによって示されたメモリ位置に格納され得る。逆に、この例において、オペレーションは、マスクをかけられたマスク要素Ｍ３によってデータ要素Ｂ３についてマスクをかけられる。アスタリスク（＊）によって示されるように、データ要素Ｂ３は、このメモリ位置に格納されない場合があるが、このメモリ位置における初期値は、依然として変更されない場合がある。いくつかの実施形態において、データ要素（Ｂ）のメモリ／ストレージデバイスへの格納は、シーケンシャルに実行されてもよく、オペランドにわたって順序を付けられてもよい。例えば、最下位の非マスクデータ要素（例えばＢ１）が格納されてもよく、その後に、２番目に下位のデータ要素（例えばＢ２）が格納されてもよく、という具合に最上位の非マスクデータ要素（例えばＢＮ）が格納されるにまで続く。
【００５８】
最初に、命令を実装するためのストア８７４は、メモリ／ストレージデバイス８２４まで完全には行われない場合があり、キャッシュコヒーレンシドメインにおける１または複数のキャッシュ８４０に一時的に行われ得る。任意選択でマスクされたオペレーションは、（１または複数のキャッシュ８４０を含む）キャッシュコヒーレンシドメインにおける任意のプロセッサまたは他のエンティティ内の任意のキャッシュレベルにおける任意のキャッシュ内の任意のダーティキャッシュラインのメモリ／ストレージデバイス８２４へと、キャッシュ８４０からキャッシュラインライトバック８７６を実行する段階も備え得、任意のダーティキャッシュラインは、任意選択のマスク８６８の対応する任意選択のマスク要素（Ｍ）のマスキングまたはプレディケーションに従って、ソースパックドメモリインデックスオペランド８４８内のメモリインデックス（Ｉ）によって示されたメモリアドレスに対応するデータを格納する。示されるように、いくつかの実施形態において、キャッシュラインライトバックは、命令に応答してメモリ／ストレージデバイスまで完全に実行されない場合がある。むしろ、いくつかの実施形態において、キャッシュラインライトバックは、メモリサブシステムユニットのストアバッファ８４８に対して実行され得、これにより適切なメモリオーダリングルールが満されることを保証することができる。最初に、後でメモリ／ストレージデバイス８２４に格納される前に、データ要素Ｂ１、Ｂ２、およびＢＮは、キャッシュ８４０からこれらのストアバッファ８４８へとライトバックされ得る。他の実施形態において、任意選択で、ライトバックは、いくつかの例を挙げれば、例えば、メモリ／ストレージデバイス８２４までの、中間電源障害セーフバッファに対する、中間のバッテリ補助中間位置に対する、または適切なメモリオーダリングルールが満されることを保証することができる別のコンポーネントもしくはストレージのような他の位置に対するものであってもよい。
【００５９】
いくつかの実施形態において、メモリインデックスによって示されたメモリアドレスに対応するデータを格納するダーティキャッシュラインをライトバックすることに加えて、これらのキャッシュラインは任意選択で、キャッシュラインが格納されたコヒーレンシドメインにおける任意のキャッシュ内で無効にされてもよい。例えば、これらのキャッシュラインのキャッシュコヒーレンシプロトコル状態は、無効状態に変更され得る。これは、キャッシュコヒーレンシドメイン内の任意のキャッシュからこれらのキャッシュラインをフラッシュすることを表し得る。参照８８２に示されるように、いくつかの実施形態において、オペレーションは、Ｂ１、Ｂ２、およびＢＮをキャッシュ８４０に格納し、Ｂ１、Ｂ２、およびＢＮを有する対応するキャッシュラインを同時または同期間に無効にし得る（例えば、キャッシュコヒーレンシプロトコル状態を無効に変更する）。このアプローチは、キャッシュを純粋にバイパスするものではないが、キャッシュを完全にバイパスする非一時的格納と全く同じ効果をキャッシュに対して有する傾向が一般にある。なぜなら、キャッシュ内の無効にしたデータは、速やかに他のデータと置き換えられ得るからである。
【００６０】
他の実施形態において、メモリインデックスによって示されたメモリアドレスに関するデータを格納するダーティキャッシュラインをライトバックすることに加えて、これらのキャッシュラインは任意選択で、キャッシュラインが格納されたコヒーレンシドメインにおける任意のキャッシュ内に格納された状態で保持され、または保たれ得るが、これらのキャッシュラインのキャッシュコヒーレンシプロトコル状態は、未変更状態に変更され得る。参照８８４に示されるように、いくつかの実施形態において、オペレーションは、Ｂ１、Ｂ２、およびＢＮをキャッシュ８４０に格納し、Ｂ１、Ｂ２、およびＢＮを有する対応するキャッシュラインのキャッシュコヒーレンシプロトコル状態を同時または同期間に未変更状態に変更し得る。データをキャッシュに保持することにより、データがその次にキャッシュから再び読み出されて利用されることを可能にする。
【００６１】
有利なことに、ベクトルキャッシュラインライトバックオペレーションとスキャターまたはインデックス付きベクトルストアオペレーションをそのように組み合わせることにより、プログラミングおよびコンパイルを簡略化するのに役立ち得る。後続の別個のベクトルキャッシュラインライトバック命令、または別個のスカラキャッシュラインフラッシュ命令のセットをスキャター命令にマッピングする必要はない場合がある。むしろ、単一の命令が両方のオペレーションを共生的にマージングし得、不正確なマッピングに起因するプログラミングエラーの可能性を低減する。これにより、実行される必要がある命令の全体的な数も減少させ得、性能を向上させるのに役立ち得る。
【００６２】
一態様において、そのような命令オペレーションは、ベクトルスキャターフラッシュ／ライトバックオペレーションによるマイクロアーキテクチャの最適化の機会を提供し得る。スキャターオペレーションを実行するプロセスにおいて、コアは、スキャターオペレーションがカバーする様々なキャッシュラインの排他的オーナシップを取得し得る。当該同一コアは、もう少し多いクロックサイクル用のそれらのキャッシュラインの排他的オーナシップを保持するための貪欲なヒューリスティックアルゴリズムを実装し得る。このように、スキャターフラッシュオペレーションが十分速やかに進行するし、一般にそうであると予期される場合、スキャターフラッシュオペレーションは、全体的ハンドシェイクを実行する必要はない。なぜなら、他のコアは、その場合、現在のコアが取得して数サイクルの間保持したオーナシップにより変更（Ｍ）状態、排他（Ｅ）状態、または共有（Ｓ）状態におけるそれらのラインを有することができないからである。このように、そのようなベクトルスキャターフラッシュ／ライトバックオペレーションの限界費用は、これらのオペレーションが影響を受けたキャッシュラインをエビクトするための全体的調整を必要としないので、無視できるものであるはずである。
【００６３】
特定のプロセッサは、命令がオリジナルのプログラムまたはコードにおいて現れるオリジナルのプログラム順序に対してアウトオブオーダ（ＯｏＯ）に命令を実行することができる。ＯｏＯ実行に加えて、ウィークオーダリング（ｗｅａｋｌｙ  ｏｒｄｅｒｅｄ）のメモリタイプは、投機的読み出し、ライトコンバイニング、およびライトコラプシング等の技術によってより高いプロセッサ性能を実現するために用いられ得る。そのような態様は、１または複数のメモリにおける位置がロードおよび／またはストアによってアクセスされる場合に、一定の課題を課す場合がある。データがウィークオーダリングされていることをデータの消費者が理解し、あるいは分かる程度は、アプリケーション間で異なり、このデータの作成者は知らない場合がある。典型的に、ストア命令の結果は、ストア命令を実行するプロセッサには直ちに可視になり得る（例えば、当該プロセッサキャッシュ内に格納され得る）が、同じシステム内の他のプロセッサまたは他のエンティティには直ちに可視にならない場合がある。同じシステム内の別のプロセッサは、同じメモリ位置（例えば、そのキャッシュのうちの１つ）に書き込むことができるが、これらのストアオペレーションの結果がメモリにコミットされるのにしばらくの時間が掛かり得る。キャッシュにより、両方のプロセッサにストアオペレーションが最初に実行されたように見え得る。
【００６４】
いくつかの実施形態において、１または複数のメモリアクセスフェンス命令は、ダーティキャッシュラインライトバックに対してメモリアクセスをシリアル化するのを支援するベクトルキャッシュラインライトバック命令の前および／または後に含まれ得る。１つの好適なタイプのフェンス命令は、ロードオペレーションおよびストアオペレーションの両方をシリアル化するように動作するフルメモリアクセスフェンス命令である。例えば、いくつかの実施形態において、フルメモリフェンス命令は、メモリフェンス命令の前に発行された全てのロード・フロム・メモリ命令およびストア・トゥー・メモリ命令に対してシリアル化オペレーションを実行するように動作し得る。このシリアル化オペレーションは、プログラム順序におけるメモリフェンス命令に先行する各ロード命令およびストア命令が、プログラム順序におけるメモリフェンス命令の後に続く任意のロード命令またはストア命令の前に、全面的に可視となることを保証し得る。別の好適なタイプのフェンス命令は、ストアオペレーションをシリアル化するように動作するストアフェンス命令である。例えば、いくつかの実施形態において、ストアフェンス命令は、ストアフェンス命令の前に発行された全てのストア・トゥー・メモリ命令に対してシリアル化オペレーションを実行するように動作し得る。このシリアル化オペレーションは、プログラム順序におけるストアフェンス命令に先行する各ストア命令が、ストアフェンス命令の後に続く任意のストア命令の前に、全面的に可視となることを保証し得る。そのようなメモリアクセスフェンス命令は、ウィークオーダリングされた結果を生成するルーチンと当該データを消費するルーチンとの間のメモリアクセスのオーダリングを保証するのに役立ち得る。
【００６５】
他の実施形態において、ベクトルキャッシュラインライトバック命令は、任意選択でメモリアクセスフェンス機能を組み込み、または統合し得る。例えば、いくつかの実施形態において、ベクトルキャッシュラインライトバック命令は、命令がストア命令／オペレーションをシリアル化することを可能にするストアフェンス機能または属性を組み込み、または統合し得る。いくつかの実施形態において、上記のようにダーティキャッシュラインをライトバックさせることに加えて、ベクトルキャッシュラインライトバック命令は、プロセッサに、ベクトルキャッシュラインライトバック命令の前に発行された全てのストア・トゥー・メモリ命令に対してシリアル化オペレーションも実行させ得る。このシリアル化オペレーションは、プログラム順序におけるベクトルキャッシュラインライトバック命令に先行する各ストア命令が、ベクトルキャッシュラインライトバック命令の後に続く任意のストア命令の前に、全面的に可視となることを保証し得る。あるいは、ベクトルキャッシュラインライトバック命令は、命令がロード命令／オペレーションおよびストア命令／オペレーションの両方をシリアル化することを可能にするフルメモリアクセスフェンス機能または属性を組み込み、または統合し得る。いくつかの実施形態において、上記のようにダーティキャッシュラインをライトバックさせることに加えて、ベクトルキャッシュラインライトバック命令は、プロセッサに、ベクトルキャッシュラインライトバック命令の前に発行された全てのロード・フロム・メモリ命令およびストア・トゥー・メモリ命令に対してシリアル化オペレーションも実行させ得る。このシリアル化オペレーションは、プログラム順序におけるベクトルキャッシュラインライトバック命令に先行する各ロード命令およびストア命令が、プログラム順序におけるベクトルキャッシュラインライトバック命令の後に続く任意のロード命令またはストア命令の前に、全面的に可視となることを保証し得る。これらのフェンス属性または機能は、例えば、キャッシュ内で示されたキャッシュラインを無効にするもの、キャッシュ内で示されるが未変更状態のキャッシュラインを保持するもの、およびスキャターオペレーションを更に組み込むもの等、本明細書に開示されるベクトルキャッシュラインライトバック命令の様々な異なる実施形態と共に用いられ得る。そのようなフェンス属性または機能は、ウィークオーダリングされた結果を生成するルーチンと当該データを消費するルーチンとの間のメモリアクセスのオーダリングを保証するのに役立ち得る。更に、そのようなフェンス属性または機能は、命令の数を低減し（例えば、別個のフェンス命令をなくす）、および／または不正確なメモリアクセスのオーダリングによって生じるプログラミングエラーの可能性を低減するのに役立ち得る。
【００６６】
永続性メモリを任意選択で用いる実装において、永続性メモリへの格納は、ストアデータが永続性メモリ、または中間電源障害保護バッファもしくはストレージに到達するまでは概して永続的でない。ベクトルキャッシュラインライトバック命令は、データが揮発性キャッシュからライトバックされることを保証するのに役立ち得るが、データは、実際にそのようなデスティネーションに到着していない場合がある。例えば、上記のように、命令はいくつかの実施形態において、ライトバックデータがメモリサブシステムユニットライトバッファに到達し次第、完了し得る。これは、永続性メモリへの書き込みが確実に永続性にコミットされることを保証するべく、そのような揮発性ライトバッファまたはプロセッサの他の非永続性構造体からのデータのライトバックが永続性または耐久性に至るまで完了していることを、ソフトウェアが保証する必要が更にあり得ることを暗に示す。
【００６７】
いくつかの実施形態において、別個の永続性コミット命令は、任意選択で本明細書に開示されるベクトルキャッシュラインライトバック命令と共に用いられ得る。永続性コミット命令は、永続性メモリへのストアをコミットするように動作し得る。一態様において、永続性コミット命令は、永続性メモリレンジに対する特定のストア・トゥー・メモリ命令がメモリに受け付けられたストアを適用することによって永続的（電源障害に対して保護される）なものとするように動作し得る。一態様において、永続性メモリレンジへのストアがメモリに受け付けられた後に永続性コミット命令が実行される場合、永続性コミット命令が全面的に可視となったときに、ストアは永続的になることを保証され得る。
【００６８】
他の実施形態において、ストアまたはフルメモリアクセスフェンス属性または機能を統合し、または組み込むベクトルキャッシュラインライトバック命令は、任意選択で永続性コミット属性または機能を更に統合し、または組み込み得る。いくつかの実施形態において、上記のようにダーティキャッシュラインをライトバックさせることに加え、かつ上記のメモリアクセスフェンスに加えて、ベクトルキャッシュラインライトバック命令は、プロセッサに、ダーティキャッシュラインのライトバックを含むストアも永続性メモリにコミットさせ得る。
【００６９】
そのようなベクトルキャッシュラインライトバック命令は、永続性メモリレンジに対するダーティキャッシュラインライトバックオペレーションを含む特定のストア・トゥー・メモリ命令を、永続性メモリに受け付けられたストアを適用することによって永続的（電源障害に対して保護される）なものとするように動作し得る。一態様において、永続性コミット属性または機能を用いるベクトルキャッシュラインライトバック命令は、メモリに受け付けられた永続性メモリレンジに対する任意のダーティキャッシュラインライトバック、ならびにメモリに受け付けられた永続性メモリレンジに対する任意の先行するストアが、ベクトルキャッシュラインライトバック命令が全面的に可視となった場合に永続性となることを保証させ得る。いくつかの実施形態において、そのようなベクトルキャッシュラインライトバック命令の後に続く命令は、ベクトルキャッシュラインライトバック命令のライトバックが完了してパワーセーフ状態になったときのみ、完了することが可能とされ得る。
【００７０】
図９は、本発明の実施形態を実装するのに好適なプロセッサ９０２の詳細な例示的実施形態のブロック図である。プロセッサは、ベクトルキャッシュラインライトバック命令の実施形態を実行することができる少なくとも１つのコア９０３を含む。コアは、プログラムフローにおける分岐を予測する分岐予測ユニット９８６を含む。分岐予測ユニットは、命令プリフェッチユニット９８７と結合される。命令プリフェッチユニットは、（例えば、メモリユニット９９３を介して）ベクトルキャッシュラインライトバック命令を含む命令をメモリからプリフェッチし、または別の方法で受信し得る。レベル１（Ｌ１）命令キャッシュ９１０‐１は、命令プリフェッチユニットに結合される。Ｌ１命令キャッシュは、ベクトルキャッシュラインライトバック命令を含む命令をキャッシュし、または別の方法で格納し得る。プロセッサは、命令のためのデータ要素および／またはオペランドを含むデータをキャッシュし、または別の方法で格納するＬ１データキャッシュ９１０‐２も含む。プロセッサは、任意選択でレベル２（Ｌ２）キャッシュ９１２も含む。Ｌ２キャッシュは、コアの専用であってもよく、またはコアおよび１または複数の他の任意選択のコア（図示せず）によって共有されてもよい。Ｌ２キャッシュは、ベクトルキャッシュラインライトバック命令を含むデータおよび命令を格納し得る。命令フェッチユニット９８８は、Ｌ１命令キャッシュ、Ｌ２キャッシュ、およびデコードユニット９３６と結合される。命令フェッチユニットは、（例えば、Ｌ１命令キャッシュまたはＬ２キャッシュから）ベクトルキャッシュラインライトバック命令を含む命令をフェッチし、または別の方法で受信し得、命令をデコードユニットに提供し得る。デコードユニットは、本明細書の他の箇所で説明されるように、ベクトルキャッシュラインライトバック命令を含む命令をデコードし得る。
【００７１】
プロセッサは、１または複数のレジスタファイルユニット９９１も含む。レジスタファイルユニットは、例えば、パックドデータレジスタ、汎用レジスタ、状態またはフラグレジスタ、制御または構成レジスタ等の様々な異なるタイプのレジスタを含み得る。コアが任意選択でアウトオブオーダ（ＯＯＯ）実行をサポートする実施形態において、コアは、リソースを割り当て、レジスタ（例えば、ベクトルキャッシュラインライトバック命令に関連付けられたパックドデータレジスタ）に対してレジスタリネームを実行するためにレジスタファイルユニットに結合されたレジスタリネーム／アロケータユニット９８９も任意選択で含み得る。更に、ＯＯＯ実行において、コアは、デコードユニット、リネーム／アロケータユニットと結合された１または複数のスケジューラユニット９９０と、１または複数の実行ユニット９３８Ａ／Ｂとを任意選択で含み得る。スケジューラユニットは、実行ユニットにおいて実行するためにベクトルキャッシュラインライトバック命令からデコードされた１または複数のオペレーションを含むデコード済み命令に関連付けられた１または複数のオペレーションをスケジューリングし得る。コアは、例えば、整数実行ユニット、浮動小数点実行ユニット、ベクトル実行ユニット、１または複数のメモリアクセスユニット９３８Ｂ等の複数の異なるタイプの実行ユニットを任意選択で有し得る。ＯＯＯ実行のために、コアは、実行ユニット、レジスタファイルユニット、およびリネーム／アロケータユニットと結合されたリタイアメントまたはコミットユニット９９２を任意選択で含み得る。リタイアメントまたはコミットユニットは、命令をリタイアまたはコミットするように動作し得る。
【００７２】
これは、好適なプロセッサの１つの例示に過ぎないことを理解されたい。代替的な実施形態において、プロセッサは、より少ないか、またはより多くのコンポーネントを含み得る。任意選択で含まれ得る他のコンポーネントの例は、１または複数の命令および／またはデータトランスレーションルックアサイドバッファ（ＴＬＢ）、１または複数のリオーダバッファ（ＲＯＢ）、リザベーションステーション、アドレス生成ユニット、デバッグユニット、性能モニタユニット、電力管理ユニットである。更に、プロセッサは、複数のコア（例えば、少なくとも２個、少なくとも４個、少なくとも８個、少なくとも３０個等）を任意選択で有し得る。いくつかの場合、コアの全てが同一のコンポーネントを有し、コア９８０と同じ命令セットをサポートし得る。あるいは、コアのうちの少なくともいくつかは、異なるコンポーネントを有し得、および／または異なる命令セットをサポートし得る。
【００７３】
命令セットは、１または複数の命令フォーマットを含む。所与の命令フォーマットは、とりわけ、実行されるオペレーション（オペコード）および当該オペレーションが実行されるオペランドを指定する様々なフィールド（ビットの数、ビットの位置）を定義する。いくつかの命令フォーマットは、命令テンプレート（またはサブフォーマット）の定義により更に分類される。例えば、所与の命令フォーマットの命令テンプレートは、異なるサブセットの命令フォーマットのフィールドを有するものと定義され（含まれるフィールドは、通常は同じ順序であるが、少なくともいくつかは、より少ないフィールドが含まれているので、異なるビット位置を有する）、および／または異なる解釈をされる所与のフィールドを有するものと定義され得る。従って、ＩＳＡの各命令は、所与の命令フォーマットを用いて（および定義される場合には、当該命令フォーマットの命令テンプレートのうちの所与の１つで）表され、オペレーションおよびオペランドを指定するためのフィールドを含む。例えば、例示的なＡＤＤ命令は、特定のオペコード、ならびに当該オペコードを指定するオペコードフィールドおよびオペランド（ソース１／デスティネーション、およびソース２）を選択するオペランドフィールドを含む命令フォーマットを有する。命令ストリームにおけるこのＡＤＤ命令が生じることにより、特定のオペランドを選択するオペランドフィールドに特定の内容を有する。Ａｄｖａｎｃｅｄ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＡＶＸ）（ＡＶＸ１およびＡＶＸ２）と呼ばれ、ベクトル拡張（ＶＥＸ）符号化スキームを用いるＳＩＭＤ拡張のセットが、リリースおよび／または公開されている（例えば、Ｉｎｔｅｌ（登録商標）６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒｓ  Ｍａｎｕａｌ，Ｏｃｔｏｂｅｒ  ２０１１およびＩｎｔｅｌ（登録商標）Ａｄｖａｎｃｅｄ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｒｅｆｅｒｅｎｃｅ，Ｊｕｎｅ  ２０１１を参照されたい）。
【００７４】
例示的な命令フォーマット
本明細書に説明される命令の実施形態は、異なるフォーマットで実施され得る。更に、例示的なシステム、アーキテクチャ、およびパイプラインが以下に詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、およびパイプライン上で実行され得るが、詳述されるものに限定されない。
【００７５】
ＶＥＸ命令フォーマット
ＶＥＸエンコードは、命令が３つ以上のオペランドを有することを可能にし、ＳＩＭＤベクトルレジスタが１２８ビットより長くなることを可能にする。ＶＥＸプレフィックスを用いることにより、３つの（またはそれより多い）オペランドの構文を提供する。例えば、以前の２オペランド命令は、Ａ＝Ａ＋Ｂのようなオペレーションを実行し、これによりソースオペランドに上書きする。ＶＥＸプレフィックスを用いると、オペランドがＡ＝Ｂ＋Ｃのような非破壊オペレーションを実行することを可能にする。
【００７６】
図１０Ａは、ＶＥＸプレフィックス１００２、リアルオペコードフィールド１０３０、Ｍｏｄ  Ｒ／Ｍバイト１０４０、ＳＩＢバイト１０５０、変位フィールド１０６２、およびＩＭＭ８  １０７２を含む例示的なＡＶＸ命令フォーマットを示す。図１０Ｂは、図１０Ａのどのフィールドがフルオペコードフィールド１０７４およびベースオペレーションフィールド１０４２を構成するかを示す。図１０Ｃは、図１０Ａのどのフィールドがレジスタインデックスフィールド１０４４を構成するかを示す。
【００７７】
ＶＥＸプレフィックス（バイト０〜２）１００２は、３バイト形式でエンコードされる。第１のバイトは、フォーマットフィールド１０４０（ＶＥＸバイト０、ビット［７：０］）であり、明示的なＣ４バイト値（Ｃ４命令フォーマットを区別するために用いられる一意な値）を含む。第２〜第３のバイト（ＶＥＸバイト１〜２）は、特定の機能を提供するいくつかのビットフィールドを含む。具体的には、ＲＥＸフィールド１００５（ＶＥＸバイト１、ビット［７−５］）は、ＶＥＸ．Ｒビットフィールド（ＶＥＸバイト１、ビット［７］−  Ｒ）、ＶＥＸ．Ｘビットフィールド（ＶＥＸバイト１、ビット［６］−Ｘ）、およびＶＥＸ．Ｂビットフィールド（ＶＥＸバイト１、ビット［５］−Ｂ）からなる。命令の他のフィールドは、当技術分野で既知であるレジスタインデックスの下位３ビット（ｒｒｒ、ｘｘｘ、およびｂｂｂ）をエンコードし、従ってＲｒｒｒ、Ｘｘｘｘ、およびＢｂｂｂは、ＶＥＸ．Ｒ、ＶＥＸ．Ｘ、およびＶＥＸ．Ｂを加えることによって形成され得る。オペコードマップフィールド１０１５（ＶＥＸバイト１、ビット［４：０］−ｍｍｍｍｍ）は、暗黙に示される先頭オペコードバイトをエンコードする内容を含む。Ｗフィールド１０６４（ＶＥＸバイト２、ビット［７］−Ｗ）は、ＶＥＸ．Ｗの表記で表され、命令に応じて異なる機能を提供する。ＶＥＸ．ｖｖｖｖ１０２０（ＶＥＸバイト２、ビット［６：３］−ｖｖｖｖ）の役割は、以下を含み得る。１）ＶＥＸ.ｖｖｖｖは、反転された（１の補数）形式で指定された第１のソースレジスタオペランドをエンコードし、２またはそれより多いソースオペランドを有する命令について有効である。２）ＶＥＸ．ｖｖｖｖは、特定のベクトルシフトに対する１の補数形式で指定されたデスティネーションレジスタオペランドをエンコードする。または、３）ＶＥＸ．ｖｖｖｖは、いずれのオペランドもエンコードせず、フィールドは予約され、１０１１ｂを含むはずである。ＶＥＸ．Ｌ１０６８のサイズフィールド（ＶＥＸバイト２、ビット［２］−Ｌ）＝０である場合、１２８ビットのベクトルを示す。ＶＥＸ．Ｌ＝１である場合、２５６ビットのベクトルを示す。プレフィックスエンコードフィールド１０２５（ＶＥＸバイト２、ビット［１：０］−ｐｐ）は、ベースオペレーションフィールドの更なるビットを提供する。
【００７８】
リアルオペコードフィールド１０３０（バイト３）は、オペコードバイトとしても知られる。オペコードの一部は、このフィールドにおいて指定される。
【００７９】
ＭＯＤ  Ｒ／Ｍフィールド１０４０（バイト４）は、ＭＯＤフィールド１０４２（ビット［７−６］）、Ｒｅｇフィールド１０４４（ビット［５−３］）、およびＲ／Ｍフィールド１０４６（ビット［２−０］）を含む。Ｒｅｇフィールド１０４４の役割は、以下を含み得る。すなわち、ティネーションレジスタオペランドもしくはソースレジスタオペランド（Ｒｒｒｒのｒｒｒ）をエンコードすること、またはオペコード拡張として扱われ、いずれの命令オペランドをエンコードするためにも用いられないことである。Ｒ／Ｍフィールド１０４６の役割は、メモリアドレスを参照する命令オペランドをエンコードし、またはデスティネーションレジスタオペランドもしくはソースレジスタオペランドのいずれかをエンコードすることを含み得る。
【００８０】
スケール、インデックス、ベース（ＳＩＢ）。スケールフィールド１０５０（バイト５）の内容は、ＳＳ１０５２（ビット［７−６］）を含み、ＳＳ１０５２は、メモリアドレス生成に用いられる。ＳＩＢ．ｘｘｘ１０５４（ビット［５−３］）およびＳＩＢ．ｂｂｂ１０５６（ビット［２−０］）の内容は、レジスタインデックスＸｘｘｘおよびＢｂｂｂに関連して既に言及された。変位フィールド１０６２および即値フィールド（ＩＭＭ８）１０７２は、アドレスデータを含む。
【００８１】
一般的ベクトル向け命令フォーマット
ベクトル向け命令フォーマットは、ベクトル命令に好適な命令フォーマットである。（例えば、ベクトルオペレーションに固有の一定のフィールドが存在する）。ベクトルおよびスカラオペレーションの両方がベクトル向け命令フォーマットによりサポートされる実施形態が説明されるが、代替的な実施形態は、ベクトル向け命令フォーマットによるベクトルオペレーションのみを用いる。
【００８２】
図１１Ａ〜図１１Ｂは、本発明の実施形態による一般的ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。図１１Ａは、本発明の実施形態による、一般的ベクトル向け命令フォーマット、およびそのクラスＡ命令テンプレートを示すブロック図である。図１１Ｂは、本発明の実施形態による、一般的ベクトル向け命令フォーマット、およびそのクラスＢ命令テンプレートを示すブロック図である。具体的には、クラスＡおよびクラスＢ命令テンプレートは、一般的ベクトル向け命令フォーマット１１００に対して定義され、これらの両方は、非メモリアクセス１１０５の命令テンプレートおよびメモリアクセス１１２０の命令テンプレートを含む。ベクトル向け命令フォーマットの文脈における一般的という用語は、いずれの特定の命令セットにも関係しない命令フォーマットを指す。
【００８３】
ベクトル向け命令フォーマットが、３２ビット（４バイト）または６４ビット（８バイト）のデータ要素幅（またはサイズ）を有する６４バイトのベクトルオペランド長（またはサイズ）（従って、６４バイトのベクトルは、１６ダブルワードサイズの要素、または代替的に８クワッドワードサイズの要素のいずれかからなる）、１６ビット（２バイト）または８ビット（１バイト）のデータ要素幅（またはサイズ）を有する６４バイトのベクトルオペランド長（またはサイズ）、３２ビット（４バイト）、６４ビット（８バイト）、１６ビット（２バイト）、または８ビット（１バイト）のデータ要素幅（またはサイズ）を有する３２バイトのベクトルオペランド長（またはサイズ）、および３２ビット（４バイト）、６４ビット（８バイト）、１６ビット（２バイト）、または８ビット（１バイト）のデータ要素幅（またはサイズ）を有する１６バイトのベクトルオペランド長（またはサイズ）をサポートする本発明の実施形態が説明されるが、代替的な実施形態は、より多い、より少ない、または異なるデータ要素幅（例えば、１２８ビット（１６バイト）のデータ要素幅）を有するより多い、より少ない、および／または異なるベクトルオペランドサイズ（例えば、２５６バイトのベクトルオペランド）をサポートし得る。
【００８４】
図１１ＡにおけるクラスＡ命令テンプレートは、１）非メモリアクセス１１０５の命令テンプレート中に示される非メモリアクセス、フルラウンド制御タイプオペレーション１１１０の命令テンプレート、および非メモリアクセス、データ変換タイプオペレーション１１１５の命令テンプレート、ならびに２）メモリアクセス１１２０の命令テンプレート中に示されるメモリアクセス、一時的１１２５の命令テンプレート、およびメモリアクセス、非一時的１１３０の命令テンプレートを含む。図１１ＢのクラスＢ命令テンプレートは、１）非メモリアクセス１１０５の命令テンプレート中に示される非メモリアクセス、ライトマスク制御、部分的ラウンド制御タイプオペレーション１１１２の命令テンプレート、および非メモリアクセス、ライトマスク制御、ＶＳＩＺＥタイプオペレーション１１１７の命令テンプレート、ならびに２）メモリアクセス１１２０の命令テンプレート中に示されるメモリアクセス、ライトマスク制御１１２７の命令テンプレートを含む。
【００８５】
一般的ベクトル向け命令フォーマット１１００は、図１１Ａ〜図１１Ｂにおいて示される順序で以下に列挙される、次のフィールドを含む。
【００８６】
フォーマットフィールド１１４０。このフィールドにおける特定の値（命令フォーマット識別子の値）は、ベクトル向け命令フォーマット、従って、命令ストリーム中のベクトル向け命令フォーマットにおける命令の発生を一意に識別する。従って、このフィールドは、一般的ベクトル向け命令フォーマットのみを有する命令セットに必要とされないという意味で任意選択である。
【００８７】
ベースオペレーションフィールド１１４２。その内容は、異なるベースオペレーションを区別する。
【００８８】
レジスタインデックスフィールド１１４４。その内容は、レジスタ内であれ、メモリ内であれ、直接に、またはアドレス生成により、ソースオペランドおよびデスティネーションオペランドの位置を指定する。これらは、ＰｘＱ（例えば、３２ｘ５１２、１６ｘ１２８、３２ｘ１０２４、６４ｘ１０２４）のレジスタファイルからＮ個のレジスタを選択するのに十分な数のビットを含む。一実施形態においては、Ｎは、最大で３つのソースおよび１つのデスティネーションレジスタであり得るが、代替的な実施形態は、より多いかまたはより少ないソースおよびデスティネーションレジスタをサポートし得る（例えば、最大で２つのソースをサポートし得、この場合、これらのソースのうちの１つは、デスティネーションとしても機能し、最大で３つのソースをサポートし得、この場合、これらのソースのうちの１つは、デスティネーションとしても機能し、最大で２つのソースおよび１つのデスティネーションをサポートし得る）。
【００８９】
修飾子フィールド１１４６。その内容は、一般的ベクトル命令フォーマット中におけるメモリアクセスを指定する命令の発生とメモリアクセスを指定しない命令の発生とを、すなわち、非メモリアクセス１１０５の命令テンプレートとメモリアクセス１１２０の命令テンプレートを区別する。メモリアクセスオペレーションは、メモリ階層を読み出し、および／またはこれに書き込むが（いくつかの場合には、レジスタにおける値を用いて、ソースアドレスおよび／またはデスティネーションアドレスを指定する）、非メモリアクセスオペレーションは、これを行わない（例えば、ソースおよびデスティネーションは、レジスタである）。また、一実施形態において、このフィールドは、３つの異なる態様を選択し、メモリアドレス計算を実行するが、代替的な実施形態は、より多い、より少ない、または異なる態様をサポートし、メモリアドレス計算を実行し得る。
【００９０】
追加オペレーションフィールド１１５０。その内容は、ベースオペレーションに加えて、種々様々な異なるオペレーションのうちのどれが実行されるかを区別する。このフィールドは、コンテキストに固有である。本発明の一実施形態において、このフィールドは、クラスフィールド１１６８、アルファフィールド１１５２、およびベータフィールド１１５４に分割される。追加オペレーションフィールド１１５０は、オペレーションの共通グループが２、３、または４つの命令ではなく、単一の命令で実行されることを可能にする。
【００９１】
スケールフィールド１１６０。その内容は、メモリアドレス生成のための（例えば、２ｓｃａｌｅ＊ｉｎｄｅｘ＋ｂａｓｅを用いるアドレス生成のための）インデックスフィールドの内容のスケーリングを可能にする。
【００９２】
変位フィールド１１６２Ａ。その内容は、メモリアドレス生成の一部として（例えば、２ｓｃａｌｅ＊ｉｎｄｅｘ＋ｂａｓｅ＋ｄｉｓｐｌａｃｅｍｅｎｔを用いるアドレス生成に）用いられる。
【００９３】
変位係数フィールド１１６２Ｂ（変位係数フィールド１１６２Ｂの直ぐ上に変位フィールド１１６２Ａを並置することにより、一方または他方が使用されることを示すことに留意されたい）。その内容は、アドレス生成の一部として用いられる。変位係数フィールド１１６２Ｂは、メモリアクセス（Ｎ）のサイズに対して調整される変位係数を指定する。Ｎは、（例えば、２ｓｃａｌｅ＊ｉｎｄｅｘ＋ｂａｓｅ＋ｓｃａｌｅｄ  ｄｉｓｐｌａｃｅｍｅｎｔを用いるアドレス生成のための）メモリアクセスにおけるバイトの数である。冗長下位ビットは、無視され、従って、変位係数フィールドの内容は、有効なアドレスを計算するときに使用される最終的変位を生成するべく、メモリオペランドの合計サイズ（Ｎ）で乗算される。Ｎの値は、フルオペコードフィールド１１７４（本明細書において後述される）およびデータ操作フィールド１１５４Ｃに基づいて、ランタイムでプロセッサハードウェアにより決定される。変位フィールド１１６２Ａおよび変位係数フィールド１１６２Ｂは、非メモリアクセス１１０５の命令テンプレートに用いられず、および／または異なる実施形態が１つのみまたは２つのうちいずれも実装しない場合があるという意味で任意選択である。
【００９４】
データ要素幅フィールド１１６４。その内容は、（いくつかの実施形態において全ての命令に対して、他の実施形態において命令のうちいくつかのみに対して）いくつかのデータ要素幅のうちのどれが用いられるかを区別する。このフィールドは、１つのデータ要素幅のみがサポートされ、および／またはオペコードのいくつかの態様を用いて、データ要素幅がサポートされる場合には必要とされないという意味で任意選択である。
【００９５】
ライトマスクフィールド１１７０。その内容は、データ要素位置ベースで、デスティネーションベクトルオペランドにおける当該データ要素位置がベースオペレーションおよび追加オペレーションの結果を反映するか否かを制御する。クラスＡ命令テンプレートは、マージング・ライトマスキングをサポートするが、クラスＢ命令テンプレートは、マージングおよびゼロ書き込みマスキングの両方をサポートする。マージングする場合、ベクトルマスクは、デスティネーションにおける要素の任意のセットが（ベースオペレーションおよび追加オペレーションにより指定された）任意のオペレーションの実行中に更新から保護されることを可能にする。他の一実施形態では、対応するマスクビットが０を有するデスティネーションの各要素の古い値を保持する。対照的に、ゼロ書き込みする場合、ベクトルマスクは、デスティネーションにおける要素の任意のセットが（ベースオペレーションおよび追加オペレーションにより指定された）任意のオペレーションの実行中にゼロにされることを可能にする。一実施形態において、対応するマスクビットが０の値を有する場合、デスティネーションの要素は、０に設定される。この機能のサブセットは、実行されるオペレーションのベクトル長を制御する能力である（すなわち、要素のスパンは、最初のものから最後のものに変更される）。しかし、変更される要素が連続している必要はない。従って、ライトマスクフィールド１１７０は、ロード、ストア、演算、論理等を含む部分的ベクトルオペレーションを可能にする。本発明の実施形態は、ライトマスクフィールド１１７０の内容が、用いられるべきライトマスクを含むいくつかのライトマスクレジスタのうちの１つを選択する（従って、ライトマスクフィールド１１７０の内容が実行されるべき当該マスキングを間接的に識別する）ものとして説明されているが、代替的な実施形態はこれに代えて、または更に、マスクライトフィールド１１７０の内容が実行されるべきマスキングを直接に指定することを可能にする。
【００９６】
即値フィールド１１７２。その内容は、即値の指定を可能にする。このフィールドは、即値をサポートしない一般的ベクトル向けフォーマットの実装において存在せず、即値を用いない命令中に存在しないという意味で任意選択である。
【００９７】
クラスフィールド１１６８。その内容は、命令の異なるクラスを区別する。図１１Ａ〜図１１Ｂを参照すると、このフィールドの内容は、クラスＡ命令またはクラスＢ命令を選択する。図１１Ａ〜図１１Ｂにおいて、角が丸い四角形は、特定の値がフィールド内に存在することを示すべく用いられる（例えば、図１１Ａおよび図１１Ｂにおけるクラスフィールド１１６８のクラスＡ１１６８ＡおよびクラスＢ１１６８Ｂの各々）。
【００９８】
クラスＡの命令テンプレート
クラスＡの非メモリアクセス１１０５の命令テンプレートの場合に、アルファフィールド１１５２は、ＲＳフィールド１１５２Ａとして解釈され、その内容は、異なる追加オペレーションタイプのうちのどれが実行されるかを区別するが（例えば、ラウンド１１５２Ａ．１およびデータ変換１１５２Ａ．２は、各々、非メモリアクセス、ラウンドタイプオペレーション１１１０、および非メモリアクセス、データ変換タイプオペレーション１１１５の命令テンプレートに対して指定される）、ベータフィールド１１５４は、指定されたタイプのオペレーションのうちいずれが実行されるかを区別する。非メモリアクセス１１０５の命令テンプレートにおいて、スケールフィールド１１６０、変位フィールド１１６２Ａ、および変位スケールフィールド１１６２Ｂは、存在しない。
【００９９】
非メモリアクセス命令テンプレート‐フルラウンド制御タイプオペレーション  非メモリアクセスのフルラウンド制御タイプオペレーション１１１０の命令テンプレートにおいて、ベータフィールド１１５４は、ラウンド制御フィールド１１５４Ａとして解釈され、その内容は、静的ラウンドを提供する。本発明の説明される実施形態において、ラウンド制御フィールド１１５４Ａは、抑圧全浮動小数点例外（ＳＡＥ）フィールド１１５６およびラウンドオペレーション制御フィールド１１５８を含み、代替的な実施形態は、これら両方のコンセプトをサポートおよびエンコードして同一のフィールドとすることができ、またはこれらのコンセプト／フィールドのうち一方または他方のみを有し得る（例えば、ラウンドオペレーション制御フィールド１１５８のみを有し得る）。
【０１００】
ＳＡＥフィールド１１５６。その内容は、例外イベント報告を無効にするか否かを区別する。ＳＡＥフィールド１１５６の内容が、抑圧が有効にされたことを示す場合、所与の命令は、いずれの種類の浮動小数点例外フラグも報告せず、いずれの浮動小数点例外ハンドラも立ち上げない。
【０１０１】
ラウンドオペレーション制御フィールド１１５８。その内容は、ラウンドオペレーション（例えば、ラウンドアップ、ラウンドダウン、ゼロへのラウンド、および近似値へのラウンド）のグループのうちのどれが実行されるべきかを区別する。このように、ラウンドオペレーション制御フィールド１１５８は、命令ベースでラウンドモードの変更を可能にする。プロセッサがラウンドモードを指定する制御レジスタを含む本発明の一実施形態において、ラウンドオペレーション制御フィールド１１５０の内容は、当該レジスタの値を上書きする。
【０１０２】
非メモリアクセス命令テンプレート‐データ変換タイプオペレーション  非メモリアクセスのデータ変換タイプオペレーション１１１５の命令テンプレートにおいて、ベータフィールド１１５４は、データ変換フィールド１１５４Ｂとして解釈され、その内容は、いくつかのデータ変換のうちのどれが実行されるかを区別する（例えば、非データ変換、スウィズル、ブロードキャスト）。
【０１０３】
クラスＡのメモリアクセス１１２０の命令テンプレートの場合、アルファフィールド１１５２は、エビクションヒントフィールド１１５２Ｂとして解釈され、その内容は、エビクションヒントのうちのどれが用いられるかを区別するが（図１１Ａにおいて、一時的１１５２Ｂ．１および非一時的１１５２Ｂ．２は、各々、メモリアクセス、一時的１１２５の命令テンプレート、およびメモリアクセス、非一時的１１３０の命令テンプレートに対して指定される）、ベータフィールド１１５４は、データ操作フィールド１１５４Ｃとして解釈され、その内容は、いくつかのデータ操作オペレーション（プリミティブとしても知られる）のうちのどれが実行されるかを区別する（例えば、操作なし、ブロードキャスト、ソースのアップコンバージョン、およびデスティネーションのダウンコンバージョン）。メモリアクセス１１２０の命令テンプレートは、スケールフィールド１１６０を含み、変位フィールド１１６２Ａまたは変位スケールフィールド１１６２Ｂを任意選択で含む。
【０１０４】
ベクトルメモリ命令は、変換サポートを用いて、メモリからのベクトルロードおよびメモリへのベクトルストアを実行する。通常のベクトル命令の場合のように、ベクトルメモリ命令は、データ要素の様式で、メモリから／にデータを転送し、実際に転送される要素は、ライトマスクとして選択されるベクトルマスクの内容により規定される。
【０１０５】
メモリアクセス命令テンプレート‐一時的  一時的データは、キャッシュから利益を得るのに十分なほど速やかに再利用される可能性が高いデータである。しかし、これはヒントであり、異なるプロセッサは、ヒントを完全に無視することを含め、異なる態様で一時的データを実装してもよい。
【０１０６】
メモリアクセス命令テンプレート‐非一時的  非一時的データは、レベル１のキャッシュにおけるキャッシュから利益を得るのに十分なほど速やかに再利用される可能性が低いデータであり、エビクションの優先権を与えられるべきである。しかし、これはヒントであり、異なるプロセッサは、ヒントを完全に無視することを含め、異なる態様で非一時的データを実装してもよい。
【０１０７】
クラスＢの命令テンプレート
クラスＢの命令テンプレートの場合、アルファフィールド１１５２は、ライトマスク制御（Ｚ）フィールド１１５２Ｃとして解釈され、その内容は、ライトマスクフィールド１１７０により制御されるライトマスキングがマージングであるべきか、またはゼロ書き込みであるべきかを区別する。
【０１０８】
クラスＢの非メモリアクセス１１０５の命令テンプレートの場合、ベータフィールド１１５４の一部は、ＲＬフィールド１１５７Ａとして解釈され、その内容は、異なる追加オペレーションタイプのどれが実行されるかを区別するが（例えば、ラウンド１１５７Ａ．１およびベクトル長（ＶＳＩＺＥ）１１５７Ａ．２は各々、非メモリアクセス、ライトマスク制御、部分的ラウンド制御タイプオペレーション１１１２の命令テンプレート、および非メモリアクセス、ライトマスク制御、ＶＳＩＺＥタイプオペレーション１１１７の命令テンプレートに対して指定される）、ベータフィールド１１５４の残りは、指定されたタイプのどのオペレーションが実行されるかを区別する。非メモリアクセス１１０５の命令テンプレートにおいて、スケールフィールド１１６０、変位フィールド１１６２Ａ、および変位スケールフィールド１１６２Ｂは、存在しない。
【０１０９】
非メモリアクセス、ライトマスク制御、部分的ラウンド制御タイプオペレーション１１１０の命令テンプレートにおいて、ベータフィールド１１５４の残りは、ラウンドオペレーションフィールド１１５９Ａとして解釈され、例外イベント報告は、無効にされる（所与の命令は、いずれの種類の浮動小数点例外フラグも報告せず、いずれの浮動小数点例外ハンドラも立ち上げない）。
【０１１０】
ラウンドオペレーション制御フィールド１１５９Ａ。ちょうどラウンドオペレーション制御フィールド１１５８のように、その内容は、ラウンドオペレーション（例えば、ラウンドアップ、ラウンドダウン、ゼロへのラウンド、および近似値へのラウンド）のグループのうちのどれが実行されるべきかを区別する。このように、ラウンドオペレーション制御フィールド１１５９Ａは、命令ベースでラウンドモードの変更を可能にする。プロセッサがラウンドモードを指定する制御レジスタを含む本発明の一実施形態において、ラウンドオペレーション制御フィールド１１５０の内容は、そのレジスタの値を上書きする。
【０１１１】
非メモリアクセス、ライトマスク制御、ＶＳＩＺＥタイプオペレーション１１１７の命令テンプレートにおいて、ベータフィールド１１５４の残りは、ベクトル長フィールド１１５９Ｂとして解釈され、その内容は、いくつかのデータベクトル長のうちのどれが実行されるかを区別する（例えば、１２８、２５６、または５１２バイト）。
【０１１２】
クラスＢのメモリアクセス１１２０の命令テンプレートの場合、ベータフィールド１１５４の一部は、ブロードキャストフィールド１１５７Ｂとして解釈され、その内容は、ブロードキャストタイプのデータ操作オペレーションが実行されるべきか否かを区別するが、ベータフィールド１１５４の残りは、ベクトル長フィールド１１５９Ｂとして解釈される。メモリアクセス１１２０の命令テンプレートは、スケールフィールド１１６０を含み、変位フィールド１１６２Ａまたは変位スケールフィールド１１６２Ｂを任意選択で含む。
【０１１３】
一般的ベクトル向け命令フォーマット１１００に関連して、フォーマットフィールド１１４０、ベースオペレーションフィールド１１４２、およびデータ要素幅フィールド１１６４を含む、フルオペコードフィールド１１７４が示される。一実施形態として、フルオペコードフィールド１１７４がこれらのフィールドの全てを含むものが示されているが、これら全てをサポートしない実施形態において、フルオペコードフィールド１１７４は、これらのフィールド全てより少ないものを含む。フルオペコードフィールド１１７４は、オペレーションコード（オペコード）を提供する。
【０１１４】
追加オペレーションフィールド１１５０、データ要素幅フィールド１１６４、およびライトマスクフィールド１１７０は、一般的ベクトル向け命令フォーマットにおける命令ベースで、これらの機能が指定されることを可能にする。
【０１１５】
ライトマスクフィールドおよびデータ要素幅フィールドを組み合わせることで、マスクが異なるデータ要素幅に基づいて適用されることを可能にするように、型付き命令を生成する。
【０１１６】
クラスＡおよびクラスＢ内に見出される様々な命令テンプレートは、異なる状況において有益である。本発明のいくつかの実施形態において、異なるプロセッサまたはプロセッサ内の異なるコアは、クラスＡのみ、クラスＢのみ、または両方のクラスをサポートし得る。例えば、汎用演算用の高性能汎用アウトオブオーダコアは、クラスＢのみをサポートし得、主にグラフィックスおよび／またはサイエンティフィック（スループット）演算用のコアは、クラスＡのみをサポートし得、両方用のコアは、両方をサポートし得る（勿論、両方のクラスの全てのテンプレートおよび命令ではないが、両方のクラスのテンプレートおよび命令のいくつかのミックスを有するコアは、本発明の範囲内である）。また、シングルプロセッサは、複数のコアを含み得、これらの全てが同じクラスをサポートし、または異なるコアが異なるクラスをサポートする。例えば、別個のグラフィックスコアおよび汎用コアを有するプロセッサにおいて、主にグラフィックスおよび／またはサイエンティフィック演算用のグラフィックスコアのうちの１つは、クラスＡのみをサポートし得るが、汎用コアのうちの１または複数は、クラスＢのみをサポートする汎用演算用のアウトオブオーダ実行およびレジスタリネームを用いる高性能汎用コアであり得る。別個のグラフィックスコアを有しない別のプロセッサは、クラスＡおよびクラスＢの両方をサポートする、もう１つの汎用インオーダまたはアウトオブオーダのコアを含み得る。勿論、本発明の異なる実施形態において、あるクラスの機能は、他のクラスにおいても実装され得る。高水準言語で書かれたプログラムは、１）実行のためにターゲットプロセッサによりサポートされるクラスの命令のみを有する形式、または２）全てのクラスの命令の異なる組み合わせを用いて書かれた代替的なルーチンを有し、現在、コードを実行しているプロセッサによりサポートされる命令に基づいて、実行するルーチンを選択する制御フローコードを有する形式を含む、種々様々な実行可能な形式にされる（例えば、実行時コンパイルまたは静的コンパイル）。
【０１１７】
例示的な特定ベクトル向け命令フォーマット
図１２Ａ〜図１２Ｄは、本発明の実施形態による例示的な特定ベクトル向け命令フォーマットを示すブロック図である。図１２Ａ〜図１２Ｄは、フィールドの位置、サイズ、解釈、および順序、ならびにそれらのフィールドのいくつかに対する値を指定するという意味で具体的な特定ベクトル向け命令フォーマット１２００を示す。特定ベクトル向け命令フォーマット１２００は、ｘ８６命令セットを拡張するために用いられ得、従ってフィールドのうちのいくつかは、既存のｘ８６命令セットおよびその拡張（例えば、ＡＶＸ）において用いられるものと類似するか、または同じである。このフォーマットは、拡張された既存のｘ８６命令セットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、ＭＯＤ  Ｒ／Ｍフィールド、ＳＩＢフィールド、変位フィールド、および即値フィールドとの整合性を保つ。図１２Ａ〜図１２Ｄがフィールドにマッピングされる図１１Ａ〜図１１Ｂのフィールドが示される。
【０１１８】
本発明の実施形態は、例示目的で一般的ベクトル向け命令フォーマット１１００の文脈において、特定ベクトル向け命令フォーマット１２００を参照して説明されるが、本発明は、特許請求される場合を除き、特定ベクトル向け命令フォーマット１２００に限定されないことを理解されたい。例えば、一般的ベクトル向け命令フォーマット１１００は、様々なフィールドのために考えられる様々なサイズを企図するが、特定ベクトル向け命令フォーマット１２００は、特定サイズのフィールドを有するものとして示される。具体的な例として、データ要素幅フィールド１１６４は、特定ベクトル向け命令フォーマット１２００における１つのビットフィールドとして示されるが、本発明は、そのようには限定されない（すなわち、一般的ベクトル向け命令フォーマット１１００は、他のサイズのデータ要素幅フィールド１１６４を企図する）。
【０１１９】
一般的ベクトル向け命令フォーマット１１００は、図１２Ａにおいて示される順序で以下に列挙される、次のフィールドを含む。
【０１２０】
ＥＶＥＸプレフィックス（バイト０〜３）１２０２。４バイト形式でエンコードされる。
【０１２１】
フォーマットフィールド１１４０（ＥＶＥＸバイト０、ビット［７：０］）。最初のバイト（ＥＶＥＸバイト０）は、フォーマットフィールド１１４０であり、０ｘ６２を含む（本発明の一実施形態において、ベクトル向け命令フォーマットを区別するべく用いられる一意な値）。
【０１２２】
第２〜第４のバイト（ＥＶＥＸバイト１〜３）は、特定の能力を提供するいくつかのビットフィールドを含む。
【０１２３】
ＲＥＸフィールド１２０５（ＥＶＥＸバイト１、ビット［７−５］）は、ＥＶＥＸ．Ｒビットフィールド（ＥＶＥＸバイト１、ビット［７］−Ｒ）、ＥＶＥＸ．Ｘビットフィールド（ＥＶＥＸバイト１、ビット［６］−Ｘ）、およびＥＶＥＸバイト１、ビット［５］−Ｂ）からなる。ＥＶＥＸ．Ｒ、ＥＶＥＸ．Ｘ、およびＥＶＥＸ．Ｂのビットフィールドは、対応するＶＥＸビットフィールドと同一の機能性を提供し、１の補数形式を用いてエンコードされる。すなわち、ＺＭＭ０は、１０１１Ｂとしてエンコードされ、ＺＭＭ１５は、００００Ｂとしてエンコードされる。命令の他のフィールドは、当技術分野で既知のレジスタインデックスの下位の３つのビット（ｒｒｒ、ｘｘｘ、およびｂｂｂ）をエンコードし、従って、Ｒｒｒｒ、Ｘｘｘｘ、およびＢｂｂｂは、ＥＶＥＸ．Ｒ、ＥＶＥＸ．Ｘ、およびＥＶＥＸ．Ｂを加えることにより形成され得る。
【０１２４】
ＲＥＸ'フィールド１１１０。これはＲＥＸ'フィールド１１１０の第１の部分であり、拡張された３２個のレジスタセットの上位の１６個または下位の１６個のいずれかをエンコードするために用いられるＥＶＥＸ．Ｒ'ビットフィールド（ＥＶＥＸバイト１、ビット［４］−Ｒ'）である。本発明の一実施形態において、このビットは、以下に示される他のものと共に、（周知のｘ８６の３２ビットモードで）ＢＯＵＮＤ命令から区別するべく、ビット反転フォーマットで格納される。ＢＯＵＮＤ命令のリアルオペコードバイトは６２であるが、ＭＯＤ  Ｒ／Ｍフィールド（下記）にはＭＯＤフィールドにおける１１の値をを受け付けない。本発明の代替的な実施形態は、これおよび以下に示される他のビットを反転フォーマットで格納しない。１の値は、下位の１６個のレジスタをエンコードするべく用いられる。換言すると、Ｒ'Ｒｒｒｒは、ＥＶＥＸ．Ｒ'、ＥＶＥＸ．Ｒ、および他のフィールドの他のＲＲＲを組み合わせることにより形成される。
【０１２５】
オペコードマップフィールド１２１５（ＥＶＥＸバイト１、ビット［３：０］−ｍｍｍｍ）。その内容は、暗黙に示される先頭オペコードバイト（０Ｆ、０Ｆ３８、または０Ｆ３）をエンコードする。
【０１２６】
データ要素幅フィールド１１６４（ＥＶＥＸバイト２、ビット［７］−Ｗ）は、ＥＶＥＸ．Ｗという表記により表される。ＥＶＥＸ．Ｗは、データタイプの粒度（サイズ）（３２ビットのデータ要素または６４ビットのデータ要素のいずれか）を定義するべく用いられる。
【０１２７】
ＥＶＥＸ．ｖｖｖｖ１２２０（ＥＶＥＸバイト２、ビット［６：３］−ｖｖｖｖ）。ＥＶＥＸ．ｖｖｖｖの役割は、以下を含み得る。１）ＥＶＥＸ．ｖｖｖｖは、反転（１の補数）形式で指定された第１のソースレジスタオペランドをエンコードし、２またはそれより多いソースオペランドを用いる命令に対して有効である。２）ＥＶＥＸ．ｖｖｖｖは、一定の複数のベクトルシフトに対して１の補数形式で指定されたデスティネーションレジスタオペランドをエンコードする。または３）ＥＶＥＸ．ｖｖｖｖは、いずれのオペランドもエンコードせず、フィールドは予約され、１０１１ｂを含むはずである。従って、ＥＶＥＸ．ｖｖｖｖフィールド１２２０は、反転（１の補数）形式で格納された第１のソースレジスタ指定子の４つの下位ビットをエンコードする。命令に応じて、指定子サイズを３２個のレジスタに拡張するべく、追加の異なるＥＶＥＸビットフィールドが用いられる。
【０１２８】
ＥＶＥＸ．Ｕ１１６８クラスフィールド（ＥＶＥＸバイト２、ビット［２］−Ｕ）。ＥＶＥＸ．Ｕ＝０である場合、クラスＡまたはＥＶＥＸ．Ｕ０を示す。ＥＶＥＸ．Ｕ＝１である場合、クラスＢまたはＥＶＥＸ．Ｕ１を示す。
【０１２９】
プレフィックスエンコードフィールド１２２５（ＥＶＥＸバイト２、ビット［１：０］−ｐｐ）は、ベースオペレーションフィールドのために追加ビットを提供する。ＥＶＥＸプレフィックスフォーマットでレガシＳＳＥ命令のためのサポートを提供することに加えて、これは、ＳＩＭＤプレフィックスを圧縮するという利益も有する（ＥＶＥＸプレフィックスは、ＳＩＭＤプレフィックスを表すバイトを必要とするのではなく、２ビットのみを必要とする）。一実施形態において、レガシフォーマットおよびＥＶＥＸプレフィックスフォーマットの両方でＳＩＭＤプレフィックス（６６Ｈ、Ｆ２Ｈ、Ｆ３Ｈ）を用いるレガシＳＳＥ命令をサポートするべく、これらのレガシＳＩＭＤプレフィックスは、ＳＩＭＤプレフィックスエンコードフィールドへとエンコードされ、（ＰＬＡが変更なしにレガシフォーマットおよびこれらのレガシ命令のＥＶＥＸフォーマットの両方を実行し得るように）ランタイム時にデコーダのＰＬＡに提供される前にレガシＳＩＭＤプレフィックスへと拡張される。より新しい命令は、ＥＶＥＸプレフィックスエンコードフィールドの内容をオペコード拡張として直接に用い得るが、ある実施形態は、整合のために同様に拡張されるが、これらのレガシＳＩＭＤプレフィックスにより指定される異なる意味を可能にする。代替的な実施形態は、２ビットのＳＩＭＤプレフィックスエンコードをサポートするようにＰＬＡを再設計し得、従って拡張を必要としない。
【０１３０】
アルファフィールド１１５２（ＥＶＥＸバイト３、ビット［７］−ＥＨ。ＥＶＥＸ．ＥＨ、ＥＶＥＸ．ｒｓ、ＥＶＥＸ．ＲＬ、ＥＶＥＸ．ライトマスク制御、およびＥＶＥＸ．Ｎとしても知られる。αでも示される）。上記のように、このフィールドは、コンテキストに固有である。
【０１３１】
ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６：４］−ＳＳＳ、ＥＶＥＸ．ｓ２-０、ＥＶＥＸ．ｒ２-０、ＥＶＥＸ．ｒｒ１、ＥＶＥＸ．ＬＬ０、ＥＶＥＸ．ＬＬＢとしても知られる。βββでも示される）。上記のように、このフィールドは、コンテキストに固有である。
【０１３２】
ＲＥＸ'フィールド１１１０。これは、ＲＥＸ'フィールドの残りであり、拡張された３２個のレジスタセットの上位の１６個または下位の１６個をエンコードするべく用いられ得るＥＶＥＸ．Ｖ'ビットフィールドのいずれかである（ＥＶＥＸバイト３、ビット［３］−Ｖ'）。このビットは、ビット反転フォーマットで格納される。１の値は、下位の１６個のレジスタをエンコードするべく用いられる。換言すると、Ｖ'ＶＶＶＶは、ＥＶＥＸ．Ｖ'、ＥＶＥＸ．ｖｖｖｖを組み合わせることにより形成される。
【０１３３】
ライトマスクフィールド１１７０（ＥＶＥＸバイト３、ビット［２：０］−ｋｋｋ）。その内容は、上記のようにライトマスクレジスタにおけるレジスタのインデックスを指定する。本発明の一実施形態において、特定の値ＥＶＥＸ．ｋｋｋ＝０００は、特定の命令のために非ライトマスクが用いられることを暗に示す、特別な動作を有する（これは、全ての１に対するハードワイヤされたライトマスクの使用、またはマスキングハードウェアを迂回するハードウェアの使用を含む、様々な態様で実装され得る）。
【０１３４】
リアルオペコードフィールド１２３０（バイト４）は、オペコードバイトとしても知られる。オペコードの一部は、このフィールド内に指定される。
【０１３５】
ＭＯＤ  Ｒ／Ｍフィールド１２４０（バイト５）は、ＭＯＤフィールド１２４２、Ｒｅｇフィールド１２４４、およびＲ／Ｍフィールド１２４６を含む。上記のように、ＭＯＤフィールド１２４２の内容は、メモリアクセスオペレーションおよび非メモリアクセスオペレーションを区別する。Ｒｅｇフィールド１２４４の役割は、２つの状況に要約され得る。すなわち、デスティネーションレジスタオペランドまたはソースレジスタオペランドのいずれかをエンコードし、またはオペコード拡張として扱われ、任意の命令オペランドをエンコードするためには用いられない。Ｒ／Ｍフィールド１２４６の役割は、メモリアドレスを参照する命令オペランドをエンコードし、またはデスティネーションレジスタオペランドもしくはソースレジスタオペランドのいずれかをエンコードすることを含み得る。
【０１３６】
スケール、インデックス、ベース（ＳＩＢ）バイト（バイト６）。上記のように、スケールフィールド１１５０の内容は、メモリアドレス生成に用いられる。ＳＩＢ．ｘｘｘ１２５４およびＳＩＢ．ｂｂｂ１２５６。これらのフィールドの内容は、レジスタインデックスＸｘｘｘおよびＢｂｂｂに関連して既に言及された。
【０１３７】
変位フィールド１１６２Ａ（バイト７〜１０）。ＭＯＤフィールド１２４２が１０を含む場合、バイト７〜１０は、変位フィールド１１６２Ａであり、これはレガシ３２ビット変位（ｄｉｓｐ３２）と同様に機能し、バイト粒度で機能する。
【０１３８】
変位係数フィールド１１６２Ｂ（バイト７）。ＭＯＤフィールド１２４２が０１を含む場合、バイト７は、変位係数フィールド１１６２Ｂである。このフィールドの位置は、バイト粒度で機能するレガシｘ８６命令セットの８ビット変位（ｄｉｓｐ８）の位置と同じである。ｄｉｓｐ８は、符号拡張されるので、−１２８〜１１７バイトのオフセットのみをアドレス指定し得る。６４バイトのキャッシュラインに関しては、ｄｉｓｐ８は、４つの本当に有用な値である−１２８、−６４、０、および６４のみに設定され得る８ビットを用いる。多くの場合に、より広いレンジが必要とされるので、ｄｉｓｐ３２が用いられる。しかし、ｄｉｓｐ３２は、４バイトを必要とする。ｄｉｓｐ８およびｄｉｓｐ３２とは対照的に、変位係数フィールド１１６２Ｂは、ｄｉｓｐ８の再解釈である。変位係数フィールド１１６２Ｂを用いる場合、実際の変位は、メモリオペランドアクセスのサイズ（Ｎ）で乗算される変位係数フィールドの内容により決定される。このタイプの変位は、ｄｉｓｐ８＊Ｎと称される。これにより、平均命令長（単一バイトだが、はるかに広いレンジの変位に用いられる）を小さくする。そのような圧縮された変位は、有効な変位がメモリアクセスの粒度の倍数であり、従って、アドレスオフセットの冗長下位ビットは、エンコードされる必要がないという前提に基づく。換言すると、変位係数フィールド１１６２Ｂは、レガシｘ８６命令セットの８ビット変位に置き換わる。従って、ｄｉｓｐ８がｄｉｓｐ８＊Ｎにオーバーロードされることのみを例外として、変位係数フィールド１１６２Ｂは、ｘ８６命令セットの８ビット変位と同じ態様でエンコードされる（従って、ＭｏｄＲＭ／ＳＩＢエンコードルールに変更はない）。換言すると、エンコードルールまたはエンコードの長さに変更はないが、（バイト的アドレスオフセットを得るべく、メモリオペランドのサイズにより変位を調節する必要がある）ハードウェアによる変位値の解釈のみには変更がある。
【０１３９】
即値フィールド１１７２は、上記のように動作する。
【０１４０】
フルオペコードフィールド
図１２Ｂは、本発明の一実施形態による、フルオペコードフィールド１１７４を構成する特定ベクトル向け命令フォーマット１２００のフィールドを示すブロック図である。具体的には、フルオペコードフィールド１１７４は、フォーマットフィールド１１４０、ベースオペレーションフィールド１１４２、およびデータ要素幅（Ｗ）フィールド１１６４を含む。ベースオペレーションフィールド１１４２は、プレフィックスエンコードフィールド１２２５、オペコードマップフィールド１２１５、およびリアルオペコードフィールド１２３０を含む。
【０１４１】
レジスタインデックスフィールド
図１２Ｃは、本発明の一実施形態による、レジスタインデックスフィールド１１４４を構成する特定ベクトル向け命令フォーマット１２００のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド１１４４は、ＲＥＸフィールド１２０５、ＲＥＸ'フィールド１２１０、ＭＯＤＲ／Ｍ．ｒｅｇフィールド１２４４、ＭＯＤＲ／Ｍ．ｒ／ｍフィールド１２４６、ＶＶＶＶフィールド１２２０、ｘｘｘフィールド１２５４、およびｂｂｂフィールド１２５６を含む。
【０１４２】
追加オペレーションフィールド
図１２Ｄは、本発明の一実施形態による、追加オペレーションフィールド１１５０を構成する特定ベクトル向け命令フォーマット１２００のフィールドを示すブロック図である。クラス（Ｕ）フィールド１１６８が０を含む場合、ＥＶＥＸ．Ｕ０（クラスＡ１１６８Ａ）を意味する。１を含む場合、ＥＶＥＸ．Ｕ１（クラスＢ１１６８Ｂ）を意味する。Ｕ＝０、かつＭＯＤフィールド１２４２が１１を含む場合（非メモリアクセスオペレーションを意味する）、アルファフィールド１１５２（ＥＶＥＸバイト３、ビット［７］−ＥＨ）は、ＲＳフィールド１１５２Ａとして解釈される。ＲＳフィールド１１５２Ａが１（ラウンド１１５２Ａ．１）を含む場合、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６：４］‐ＳＳＳ）は、ラウンド制御フィールド１１５４Ａとして解釈される。ラウンド制御フィールド１１５４Ａは、１ビットのＳＡＥフィールド１１５６および２ビットのラウンドオペレーションフィールド１１５８を含む。ＲＳフィールド１１５２Ａが０（データ変換１１５２Ａ．２）を含む場合、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６：４］‐ＳＳＳ）は、３ビットのデータ変換フィールド１１５４Ｂとして解釈される。Ｕ＝０であり、かつＭＯＤフィールド１２４２が００、０１、または１０を含む場合（メモリアクセスオペレーションを意味する）、アルファフィールド１１５２（ＥＶＥＸバイト３、ビット［７］‐ＥＨ）は、エビクションヒント（ＥＨ）フィールド１１５２Ｂとして解釈され、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６：４］‐ＳＳＳ）は、３ビットのデータ操作フィールド１１５４Ｃとして解釈される。
【０１４３】
Ｕ＝１である場合、アルファフィールド１１５２（ＥＶＥＸバイト３、ビット［７］−ＥＨ）は、ライトマスク制御（Ｚ）フィールド１１５２Ｃとして解釈される。Ｕ＝１であり、かつＭＯＤフィールド１２４２が１１を含む場合（非メモリアクセスオペレーションを意味する）、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［４］−Ｓ０）の一部は、ＲＬフィールド１１５７Ａとして解釈される。１（ラウンド１１５７Ａ．１）を含む場合、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６−５］‐Ｓ２−１）の残りは、ラウンドオペレーションフィールド１１５９Ａとして解釈されるが、ＲＬフィールド１１５７Ａが０（ＶＳＩＺＥ１１５７．Ａ２）を含む場合、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６‐５］‐Ｓ２−１）の残りは、ベクトル長フィールド１１５９Ｂ（ＥＶＥＸバイト３、ビット［６‐５］‐Ｌ１−０）として解釈される。Ｕ＝１であり、ＭＯＤフィールド１２４２が００、０１、または１０を含む場合（メモリアクセスオペレーションを意味する）、ベータフィールド１１５４（ＥＶＥＸバイト３、ビット［６：４］−ＳＳＳ）は、ベクトル長フィールド１１５９Ｂ（ＥＶＥＸバイト３、ビット［６‐５］‐Ｌ１−０）およびブロードキャストフィールド１１５７Ｂ（ＥＶＥＸバイト３、ビット［４］‐Ｂ）として解釈される。
【０１４４】
例示的なレジスタアーキテクチャ
図１３は、本発明の一実施形態による、レジスタアーキテクチャ１３００のブロック図である。示される実施形態において、５１２ビット幅の３２個のベクトルレジスタ１３１０が存在する。これらのレジスタは、ｚｍｍ０〜ｚｍｍ３１として参照される。下位の１６個のｚｍｍレジスタの下位の２５６ビットは、レジスタｙｍｍ０〜１５上にオーバーレイされる下位の１６個のｚｍｍレジスタの下位の１２８ビット（ｙｍｍレジスタの下位の１２８ビット）は、レジスタｘｍｍ０〜１５上にオーバーレイされる。以下の表に示されるように、特定ベクトル向け命令フォーマット１２００は、これらのオーバーレイされたレジスタファイルで動作する。
【表１】
0006787554.tif 000002
【０１４５】
換言すると、ベクトル長フィールド１１５９Ｂは、最大長、および１もしくは複数の他のより短い長さのうちから選択され、そのような各々のより短い長さは、先述の長さの半分の長さである。ベクトル長フィールド１１５９Ｂを用いない命令テンプレートは、最大ベクトル長で動作する。更に、一実施形態において、特定ベクトル向け命令フォーマット１２００のクラスＢ命令テンプレートは、パックドもしくはスカラ単精度／倍精度浮動小数点データおよびパックドもしくはスカラ整数データで動作する。スカラオペレーションは、ｚｍｍ／ｙｍｍ／ｘｍｍレジスタにおける最下位のデータ要素位置で実行されるオペレーションである。より上位のデータ要素位置は、命令前と同じままであるか、または実施形態に応じてゼロにされる。
【０１４６】
ライトマスクレジスタ１３１５。示される実施形態において、８つのライトマスクレジスタ（ｋ０〜ｋ７）が存在し、各々は６４ビットのサイズである。代替的な実施形態において、ライトマスクレジスタ１３１５は１６ビットのサイズである。上記のように、本発明の一実施形態において、ベクトルマスクレジスタｋ０は、ライトマスクとして使用され得ない。通常、ｋ０を示すエンコードがライトマスクに用いられる場合、これは、０ｘＦＦＦＦのハードワイヤされたライトマスクを選択し、その命令に対するライトマスキングを実質的に無効にする。
【０１４７】
汎用レジスタ１３２５。示される実施形態において、メモリオペランドをアドレス指定する既存のｘ８６のアドレス指定モードと共に用いられる１６個の６４ビット汎用レジスタが存在する。これらのレジスタは、ＲＡＸ、ＲＢＸ、ＲＣＸ、ＲＤＸ、ＲＢＰ、ＲＳＩ、ＲＤＩ、ＲＳＰ、およびＲ８〜Ｒ１５の名称により参照される。
【０１４８】
スカラ浮動小数点スタックレジスタファイル（ｘ８７スタック）１３４５上に、ＭＭＸパックド整数フラットレジスタファイル１３５０がエイリアスされ、示される実施形態において、ｘ８７スタックは、ｘ８７命令セット拡張を用いて、３２／６４／８０ビット浮動小数点データにスカラ浮動小数点オペレーションを実行するべく用いられる８つの要素のスタックである。ＭＭＸレジスタは、６４ビットパックド整数データにオペレーションを実行すると共に、ＭＭＸレジスタとＸＭＭレジスタとの間で実行されるいくつかのオペレーションのためのオペランドを保持するべく用いられる。
【０１４９】
本発明の代替的な実施形態は、より広いか、またはより狭いレジスタを用い得る。更に、本発明の代替的な実施形態は、より多いか、より少ないか、または異なるレジスタファイルおよびレジスタを用い得る。
【０１５０】
例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ
プロセッサコアは、異なる態様で異なる目的のために異なるプロセッサに実装され得る。例えば、そのようなコアの実装は、１）汎用演算用の汎用インオーダコア、２）汎用演算用の高性能汎用アウトオブオーダコア、３）主にグラフィックスおよび／またはサイエンティフィック（スループット）演算用の専用コアを含み得る。異なるプロセッサの実装は、１）汎用演算用の１もしくは複数の汎用インオーダコア、および／または汎用演算用の１もしくは複数の汎用アウトオブオーダコアを含むＣＰＵ、ならびに２）主にグラフィックスおよび／またはサイエンティフィック（スループット）用の１もしくは複数の専用コアを含むコプロセッサを含み得る。そのような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、異なるコンピュータシステムアーキテクチャは、１）ＣＰＵの別個のチップ上のコプロセッサ、２）ＣＰＵと同一のパッケージにおける別個のダイ上のコプロセッサ、３）ＣＰＵと同一のダイ上のコプロセッサ（この場合、そのようなコプロセッサは、場合によっては統合グラフィックスおよび／またはサイエンティフィック（スループット）ロジック等の専用ロジック、または専用コアとして言及される）、および４）同一のダイ上に、説明されたＣＰＵ（場合によっては、アプリケーションコアもしくはアプリケーションプロセッサとして言及される）、上記のコプロセッサ、および追加の機能性を含み得るシステムオンチップを含み得る。例示的なコアアーキテクチャが次に説明され、その次に例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
【０１５１】
例示的なコアアーキテクチャ
インオーダコアおよびアウトオブオーダコアのブロック図
図１４Ａは、本発明の実施形態による、例示的なインオーダパイプラインおよび例示的なレジスタリネーム、アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。図１４Ｂは、本発明の実施形態によるプロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態および例示的なレジスタリネーム、アウトオブオーダ発行／実行アーキテクチャコアの両方を示すブロック図である。図１４Ａ〜図１４Ｂにおける実線ボックスは、インオーダパイプラインおよびインオーダコアを示すが、破線ボックスの任意選択の追加は、レジスタリネーム、アウトオブオーダ発行／実行のパイプラインおよびコアを示す。インオーダの態様がアウトオブオーダの態様のサブセットであることを考慮して、アウトオブオーダの態様が説明される。
【０１５２】
図１４Ａにおいて、プロセッサパイプライン１４００は、フェッチステージ１４０２、長さデコードステージ１４０４、デコードステージ１４０６、アロケーションステージ１４０８、リネームステージ１４１０、スケジューリング（ディスパッチまたは発行としても知られる）ステージ１４１２、レジスタ読み出し／メモリ読み出しステージ１４１４、実行ステージ１４１６、ライトバック／メモリライトステージ１４１８、例外処理ステージ１４２２、およびコミットステージ１４２４を含む。
【０１５３】
図１４Ｂは、実行エンジンユニット１４５０に結合されたフロントエンドユニット１４３０を含むプロセッサコア１４９０を示し、これら両方はメモリユニット１４７０に結合されている。コア１４９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、またはハイブリッドもしくは代替的なコアタイプであり得る。なおも別の選択肢として、コア１４９０は、例えば、ネットワークコアもしくは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理ユニット（ＧＰＧＰＵ）コア、グラフィックスコア等のような専用コアであってもよい。
【０１５４】
フロントエンドユニット１４３０は、命令キャッシュユニット１４３４に結合された分岐予測ユニット１４３２を含み、命令キャッシュユニット１４３４は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）１４３６に結合され、ＴＬＢ１４３６は、命令フェッチユニット１４３８に結合され、命令フェッチユニット１４３８は、デコードユニット１４４０に結合される。デコードユニット１４４０（もしくはデコーダ）は、命令をデコードして、出力として１または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、または元の命令からデコードされ、もしくは別の方法で元の命令を反映し、もしくは元の命令から派生した他の制御信号を生成し得る。デコードユニット１４４０は、様々な異なるメカニズムを用いて実装され得る。好適なメカニズムの例としては、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリメモリ（ＲＯＭ）等が挙げられるが、これらに限定されない。一実施形態において、コア１４９０は、特定のマクロ命令用のマイクロコードを（例えば、デコードユニット１４４０内、またはそうでなければフロントエンドユニット１４３０内に）格納するマイクロコードＲＯＭまたは他のメディアを含む。デコードユニット１４４０は、実行エンジンユニット１４５０におけるリネーム／アロケータユニット１４５２に結合される。
【０１５５】
実行エンジンユニット１４５０は、リタイアメントユニット１４５４に結合されたリネーム／アロケータユニット１４５２と、１または複数のスケジューラユニット１４５６のセットとを含む。スケジューラユニット１４５６は、リザベーションステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット１４５６は、物理レジスタファイルユニット１４５８に結合される。物理レジスタファイルユニット１４５８の各々は、１または複数の物理レジスタファイルを表し、これらの異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、状態（例えば、実行されるべき次の命令のアドレスである命令ポインタ）等のような１または複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット１４５８は、ベクトルレジスタユニット、ライトマスクレジスタユニット、およびスカラレジスタユニットを備える。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供し得る。（例えば、リオーダバッファおよびリタイアメントレジスタファイルを用い、フューチャーファイル、履歴バッファ、およびリタイアメントレジスタファイルを用い、レジスタマップおよびレジスタのプールを用いる等して）レジスタリネームおよびアウトオブオーダ実行が実装され得る様々な態様を示すべく、物理レジスタファイルユニット１４５８は、リタイアメントユニット１４５４と重ね合わされている。リタイアメントユニット１４５４および物理レジスタファイルユニット１４５８は、実行クラスタ１４６０に結合される。実行クラスタ１４６０は、１または複数の実行ユニット１４６２のセット、および１または複数のメモリアクセスユニット１４６４のセットを含む。実行ユニット１４６２は、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して様々なオペレーション（例えば、シフト、加算、減算、乗算）を実行し得る。いくつかの実施形態は、特定の関数または関数のセットに専用のいくつかの実行ユニットを含み得るが、他の実施形態は、１つの実行ユニットのみ、または全てがあらゆる関数を実行する複数の実行ユニットを含み得る。スケジューラユニット１４５６、物理レジスタファイルユニット１４５８、および実行クラスタ１４６０は、場合によっては複数のものとして示される。なぜなら、ある実施形態は、一定のタイプのデータ／オペレーションのための別個のパイプライン（例えば、各々が自身のスケジューラユニット、物理レジスタファイルユニット、および／または実行クラスタを有し、別個のメモリアクセスパイプラインの場合に、このパイプラインの実行クラスタのみがメモリアクセスユニット１４６４を有する一定の実施形態が実装される）スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／またはメモリアクセスパイプラインを生成するからである。また、別個のパイプラインが用いられる場合に、これらのパイプラインのうちの１または複数は、アウトオブオーダ発行／実行であり、残りはインオーダであり得ることを理解されたい。
【０１５６】
メモリアクセスユニット１４６４のセットは、メモリユニット１４７０に結合される。メモリユニット１４７０は、データキャッシュユニット１４７４に結合されたデータＴＬＢユニット１４７２を含み、データキャッシュユニット１４７４は、レベル２（Ｌ２）キャッシュユニット１４７６に結合される。例示的な一実施形態において、メモリアクセスユニット１４６４は、ロードユニット、ストアアドレスユニット、およびストアデータユニットを含み得、これらの各々は、メモリユニット１４７０内のデータＴＬＢユニット１４７２に結合される。命令キャッシュユニット１４３４は、メモリユニット１４７０内のレベル２（Ｌ２）キャッシュユニット１４７６に更に結合される。Ｌ２キャッシュユニット１４７６は、１つまたは複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
【０１５７】
例として、例示的なレジスタリネーム、アウトオブオーダ発行／実行コアアーキテクチャは、パイプライン１４００を以下のように実装し得る。１）命令フェッチ１４３８は、フェッチステージ１４０２および長さデコードステージ１４０４を実行する。２）デコードユニット１４４０はデコードステージ１４０６を実行する。３）リネーム／アロケータユニット１４５２は、アロケーションステージ１４０８およびリネームステージ１４１０を実行する。４）スケジューラユニット１４５６は、スケジューリングステージ１４１２を実行する。５）物理レジスタファイルユニット１４５８およびメモリユニット１４７０は、レジスタ読み出し／メモリ読み出しステージ１４１４を実行し、実行クラスタ１４６０は、実行ステージ１４１６を実行する。６）メモリユニット１４７０および物理レジスタファイルユニット１４５８は、ライトバック／メモリライトステージ１４１８を実行する。７）様々なユニットは、例外処理ステージ１４２２に関与してもよい。８）リタイアメントユニット１４５４および物理レジスタファイルユニット１４５８は、コミットステージ１４２４を実行する。
【０１５８】
コア１４９０は、本明細書において説明される命令を含む、１または複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンを追加された、いくつかの拡張を伴う）、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セット（ＮＥＯＮ等の任意選択の追加拡張を伴う）をサポートし得る。一実施形態において、コア１４９０は、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするためのロジックを含み、それにより、多くのマルチメディアアプリケーションにより用いられるオペレーションが、パックドデータを用いて実行されることを可能にする。
【０１５９】
コアは、（オペレーションまたはスレッドの２またはそれより多い並列セットを実行する）マルチスレッディングをサポートし得、時分割マルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングするスレッドの各々のための論理コアを、単一の物理コアが提供する）、またはこれらの組み合わせ（例えば、時分割フェッチおよびデコードを行い、その後にインテル（登録商標）ハイパースレッディング技術等の同時マルチスレッディングを行う）を含む様々な態様でこれを実行し得ることを理解されたい。
【０１６０】
レジスタリネームは、アウトオブオーダ実行の文脈で説明されているが、レジスタリネームは、インオーダアーキテクチャにおいて用いられ得ることを理解されたい。プロセッサの示される実施形態は、別個の命令およびデータキャッシュユニット１４３４／１４７４、ならびに共有Ｌ２キャッシュユニット１４７６も含むが、代替的な実施形態は、例えば、レベル１（Ｌ１）内部キャッシュまたは複数のレベルの内部キャッシュ等の命令およびデータの両方に対する単一の内部キャッシュを有し得る。いくつかの実施形態において、システムは、内部キャッシュ、ならびにコアおよび／またはプロセッサの外部にある外部キャッシュの組み合わせを含み得る。あるいは、キャッシュの全てがコアおよび／またはプロセッサの外部にあってもよい。
【０１６１】
具体的な例示的インオーダコアアーキテクチャ
図１５Ａ〜図１５Ｂは、より具体的な例示的なインオーダコアアーキテクチャのブロック図を示し、このコアは、チップにおける（同じタイプの他のコアおよび／または異なるタイプを含む）いくつかの論理ブロックのうちの１つである。アプリケーションに応じて、論理ブロックは、ある固定機能ロジック、メモリＩ／Ｏインタフェース、および他の必要なＩ／Ｏロジックを用いる高帯域幅の相互接続ネットワーク（例えば、リングネットワーク）を介して通信する。
【０１６２】
図１５Ａは、本発明の実施形態によるシングルプロセッサコアのブロック図であり、オンダイ相互接続ネットワーク１５０２への接続に加え、レベル２（Ｌ２キャッシュ１５０４のローカルサブセットを有する。一実施形態において、命令デコーダ１５００は、パックドデータ命令セット拡張を用いるｘ８６命令セットをサポートする。Ｌ１キャッシュ１５０６は、スカラユニットおよびベクトルユニット内のキャッシュメモリへの低レイテンシアクセスを可能にする。一実施形態において（設計を簡略化するべく）、スカラユニット１５０８およびベクトルユニット１５１０は、別個のレジスタセット（各々、スカラレジスタ１５１２およびベクトルレジスタ１５１４）を用い、それらの間で転送されるデータは、メモリに書き込まれ、次にレベル１（Ｌ１）キャッシュ１５０６からリードバックされる。本発明の代替的な実施形態は、異なるアプローチ（例えば、単一のレジスタセットを用い、またはライトバックおよびリードバックされることなく、２つのレジスタファイルの間で、データが転送されることを可能にする通信パスを含む）を用い得る。
【０１６３】
Ｌ２キャッシュ１５０４のローカルサブセットは、プロセッサコア毎に１つずつ、別個のローカルサブセットに分割される全体的なＬ２キャッシュの一部である。各プロセッサコアは、Ｌ２キャッシュ１５０４の自身のローカルサブセットへの直接のアクセス経路を有する。プロセッサコアにより読み出されたデータは、そのＬ２キャッシュサブセット１５０４に格納され、他のプロセッサコアが自身のローカルＬ２キャッシュサブセットにアクセスするのと並列して迅速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、自身のＬ２キャッシュサブセット１５０４に格納され、必要であれば他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンシを保証する。リングネットワークは、双方向であり、プロセッサコア、Ｌ２キャッシュ、および他の論理ブロック等のエージェントがチップ内で互いに通信することを可能にする。各リングのデータパスは、１方向毎に１０１２ビット幅である。
【０１６４】
図１５Ｂは、本発明の実施形態による図１５Ａのプロセッサコアの一部の拡大図である。図１５Ｂは、Ｌ１キャッシュ１５０４のＬ１データキャッシュ１５０６Ａ部分、ならびにベクトルユニット１５１０およびベクトルレジスタ１５１４に関する更なる詳細を含む。具体的には、ベクトルユニット１５１０は、１６ワイドのベクトル処理ユニット（ＶＰＵ）（１６ワイドのＡＬＵ１５２８を参照）であり、これは整数命令、単精度浮動小数点命令、および倍精度浮動小数点命令のうちの１または複数を実行する。ＶＰＵは、スウィズルユニット１５２０によるレジスタ入力のスウィズル、数値変換ユニット１５２２Ａ〜Ｂによる数値変換、およびメモリ入力時のレプリケーションユニット１５２４によるレプリケーションをサポートする。ライトマスクレジスタ１５２６は、結果として生じるベクトル書き込みをプレディケートすることを可能にする。
【０１６５】
統合メモリコントローラおよびグラフィックスを用いるプロセッサ
図１６は、本発明の実施形態による、２つ以上のコアを有し得、統合メモリコントローラを有し得、統合グラフィックスを有し得るプロセッサ１６００のブロック図である。図１６の実線ボックスは、シングルコア１６０２Ａ、システムエージェント１６１０、１または複数のバスコントローラユニット１６１６のセットを有するプロセッサ１６００を示すが、破線ボックスの任意選択の追加は、複数のコア１６０２Ａ〜Ｎ、システムエージェントユニット１６１０における１または複数の統合メモリコントローラユニット１６１４のセット、および専用ロジック１６０８を有する代替的なプロセッサ１６００を示す。
【０１６６】
従って、プロセッサ１６００の異なる実装は、１）統合グラフィックスおよび／またはサイエンティフィック（スループット）ロジック（１または複数のコアを含み得る）である専用ロジック１６０８、および１または複数の汎用コア（例えば、汎用インオーダコア、汎用アウトオブオーダコア、２つの組み合わせ）であるコア１６０２Ａ〜Ｎを用いるＣＰＵ、２）主にグラフィックスおよび／またはサイエンティフィック（スループット）用の多数の専用コアであるコア１６０２Ａ〜Ｎを有するコプロセッサ、ならびに３）多数の汎用インオーダコアであるコア１６０２Ａ〜Ｎを用いるコプロセッサを含み得る。従って、プロセッサ１６００は、例えば、ネットワークプロセッサもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ（汎用グラフィックス処理ユニット）、（３０またはそれより多いコアを含む）高スループット多集積コア（ＭＩＣ）コプロセッサ、エンベデッドプロセッサ等のような汎用プロセッサ、コプロセッサもしくは専用プロセッサであってもよい。プロセッサは、１または複数のチップ上に実装され得る。プロセッサ１６００は、１または複数の基板の一部であり得、および／または例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、またはＮＭＯＳ等のいくつかの処理技術のいずれかを用いてこれらの基板上に実装され得る。
【０１６７】
メモリ階層は、コア内の１または複数のレベルのキャッシュ、１セットまたは１もしくは複数の共有キャッシュユニット１６０６、および統合メモリコントローラユニット１６１４のセットに結合された外部メモリ（図示せず）を含む。共有キャッシュユニット１６０６のセットは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）等の１または複数の中間レベルのキャッシュ、または他のレベルのキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、および／またはこれらの組み合わせを含み得る。一実施形態において、リングベースの相互接続ユニット１６１２は、統合グラフィックスロジック１６０８、共有キャッシュユニット１６０６のセット、およびシステムエージェントユニット１６１０／統合メモリコントローラユニット１６１４を相互接続し、代替的な実施形態は、そのようなユニットを相互接続するための任意の数の周知の技術を用い得る。一実施形態において、コヒーレンシは、１または複数のキャッシュユニット１６０６とコア１６０２Ａ〜Ｎとの間で保持される。
【０１６８】
いくつかの実施形態において、コア１６０２Ａ〜Ｎのうちの１または複数は、マルチスレッディングすることができる。システムエージェント１６１０は、コア１６０２Ａ〜Ｎを調整および動作させるそれらのコンポーネントを含む。システムエージェントユニット１６１０は、例えば、電力制御ユニット（ＰＣＵ）およびディスプレイユニットを含み得る。ＰＣＵは、コア１６０２Ａ〜Ｎおよび統合グラフィックスロジック１６０８の電力状態を調整するのに必要とされるロジックおよびコンポーネントであるか、またはこれらを含み得る。ディスプレイユニットは、１または複数の外部接続ディスプレイを駆動するためのものである。
【０１６９】
コア１６０２Ａ〜Ｎは、アーキテクチャ命令セットの観点からは同種または異種であり得る。すなわち、コア１６０２Ａ〜Ｎのうちの２またはそれより多くのものは、同じ命令セットを実行することができる場合があるが、他のものは、当該命令セットまたは異なる命令セットのサブセットのみを実行することができる場合がある。
【０１７０】
例示的なコンピュータアーキテクチャ
図１７〜図２１は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、情報携帯端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスの技術分野で既知の他のシステム設計および構成も好適である。一般に、本明細書において開示されるプロセッサおよび／または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子デバイスが、概ね好適である。
【０１７１】
ここで図１７を参照すると、本発明の一実施形態によるシステム１７００のブロック図が示される。システム１７００は、１または複数のプロセッサ１７１０、１７１５を含み得、これらは、コントローラハブ１７２０に結合される。一実施形態において、コントローラハブ１７２０は、グラフィックスメモリコントローラハブ（ＧＭＣＨ）１７９０および入出力ハブ（ＩＯＨ）１７５０（別個のチップ上にあり得る）を含む。ＧＭＣＨ１７９０は、メモリコントローラおよびグラフィックスコントローラを含み、これらにメモリ１７４０およびコプロセッサ１７４５が結合される。ＩＯＨ１７５０は、入出力（Ｉ／Ｏ）デバイス１７６０をＧＭＣＨ１７９０に結合する。あるいは、メモリおよびグラフィックスコントローラの一方または両方が（本明細書に説明される）プロセッサ内に集積され、メモリ１７４０およびコプロセッサ１７４５は、プロセッサ１７１０と、ＩＯＨ１７５０を有する単一のチップのコントローラハブ１７２０とに直接に結合される。
【０１７２】
追加のプロセッサ１７１５の任意選択の性質が図１７に破線を用いて示されている。各プロセッサ１７１０、１７１５は、本明細書に説明される処理コアのうちの１または複数を含み得、プロセッサ１６００のいくつかのバージョンであり得る。
【０１７３】
メモリ１７４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、またはこれら２つの組み合わせであってもよい。少なくとも一実施形態においては、コントローラハブ１７２０は、フロントサイドバス（ＦＳＢ）等のマルチドロップバス、ＱｕｉｃｋＰａｔｈ相互接続（ＱＰＩ）等のポイントツーポイントインタフェース、または類似の接続１７９５を介してプロセッサ１７１０、１７１５と通信する。
【０１７４】
一実施形態において、コプロセッサ１７４５は、例えば、高スループットＭＩＣプロセッサ、ネットワークプロセッサもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ等のような専用プロセッサである。一実施形態において、コントローラハブ１７２０は、統合グラフィックスアクセラレータを含み得る。
【０１７５】
物理リソース１７１０と物理リソース１７１５との間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費の特性等を含む幅広い価値基準に関して様々な違いが存在し得る。
【０１７６】
一実施形態において、プロセッサ１７１０は、一般なタイプのデータ処理オペレーションを制御する命令を実行する。コプロセッサ命令は、命令中に埋め込まれ得る。プロセッサ１７１０は、取り付けられたコプロセッサ１７４５により実行されるべきタイプとしてこれらのコプロセッサ命令を認識する。従って、プロセッサ１７１０は、コプロセッサバスまたは他の相互接続においてこれらのコプロセッサ命令（またはコプロセッサ命令を表す制御信号）をコプロセッサ１７４５に発する。コプロセッサ１７４５は、受信したコプロセッサ命令を受け取って実行する。
【０１７７】
ここで図１８を参照すると、本発明の実施形態による第１のより具体的な例示的システム１８００のブロック図が示される。図１８に示されるように、マルチプロセッサシステム１８００はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１８５０を介して結合される第１のプロセッサ１８７０および第２のプロセッサ１８８０を含む。プロセッサ１８７０および１８８０の各々は、プロセッサ１６００のいくつかのバージョンであり得る。本発明の一実施形態において、プロセッサ１８７０および１８８０は各々、プロセッサ１７１０および１７１５であるが、コプロセッサ１８３８は、コプロセッサ１７４５である。別の実施形態において、プロセッサ１８７０および１８８０は各々、プロセッサ１７１０およびコプロセッサ１７４５である。
【０１７８】
統合メモリコントローラ（ＩＭＣ）ユニット１８７２および１８８２を各々含むプロセッサ１８７０および１８８０が示される。プロセッサ１８７０は、そのバスコントローラユニットの一部としてポイントツーポイント（Ｐ‐Ｐ）インタフェース１８７６および１８７８も含む。同様に、第２のプロセッサ１８８０は、Ｐ‐Ｐインタフェース１８８６および１８８８を含む。プロセッサ１８７０、１８８０は、Ｐ‐Ｐインタフェース回路１８７８、１８８８を用いて、ポイントツーポイント（Ｐ‐Ｐ）インタフェース１８５０を介して情報を交換し得る。図１８に示されるように、ＩＭＣ１８７２および１８８２は、プロセッサを各メモリ、すなわち、各プロセッサにローカルに取り付けられたメインメモリの一部であり得るメモリ１８３２およびメモリ１８３４に結合する。
【０１７９】
プロセッサ１８７０、１８８０は各々、ポイントツーポイントインタフェース回路１８７６、１８９４、１８８６、１８９８を用い、個々のＰ‐Ｐインタフェース１８５２、１８５４を介してチップセット１８９０と情報を交換し得る。任意選択で、チップセット１８９０は、高性能インタフェース１８３９を介してコプロセッサ１８３８と情報を交換し得る。一実施形態において、コプロセッサ１８３８は、例えば、高スループットＭＩＣプロセッサ、ネットワークプロセッサもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ等のような専用プロセッサである。
【０１８０】
共有キャッシュ（図示せず）は、どちらかのプロセッサに含まれ、または両方のプロセッサの外部にあり得るが、プロセッサが低電力モードにされると、どちらかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、Ｐ‐Ｐ相互接続を介してプロセッサとなおも接続され得る。
【０１８１】
チップセット１８９０は、インタフェース１８９６を介して第１のバス１８１６に結合され得る。一実施形態において、第１のバス１８１６は、周辺構成要素相互接続（ＰＣＩ）バス、またはＰＣＩ  Ｅｘｐｒｅｓｓバス等のバス、または別の第３世代Ｉ／Ｏ相互接続バスであり得るが、本発明の範囲はそのように限定されない。
【０１８２】
図１８に示されるように、様々なＩ／Ｏデバイス１８１４が、第１のバス１８１６を第２のバス１８２０に結合するバスブリッジ１８１８と共に、第１のバス１８１６に結合され得る。一実施形態において、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレータ（例えば、グラフィックスアクセラレータまたはデジタル信号処理（ＤＳＰ）ユニット等）、フィールドプログラマブルゲートアレイ、またはその他のプロセッサ等、１または複数の追加のプロセッサ１８１５は、第１のバス１８１６に結合される。一実施形態において、第２のバス１８２０は、低ピンカウント（ＬＰＣ）バスであり得る。様々なデバイスは、一実施形態において、例えば、キーボードおよび／またはマウス１８２２、通信デバイス１８２７、ならびに命令／コードおよびデータ１８３０を含み得るディスクドライブもしくは他の大容量ストレージデバイス等のストレージユニット１８２８を含む第２のバス１８２０に結合され得る。更に、オーディオＩ／Ｏ１８２４は、第２のバス１８２０に結合され得る。他のアーキテクチャが可能であることに留意されたい。例えば、図１８のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装し得る。
【０１８３】
ここで図１９を参照すると、本発明の実施形態による第２のより具体的な例示的システム１９００のブロック図を示す。図１８および図１９の同一の要素は、同一の参照番号を有し、図１９の他の態様を不明瞭にするのを避けるべく、図１８の特定の態様は、図１９から省略されている。
【０１８４】
図１９は、プロセッサ１８７０、１８８０が統合メモリおよびＩ／Ｏ制御ロジック（「ＣＬ」）１８７２および１８８２を各々含み得ることを示す。従って、ＣＬ１８７２、１８８２は、統合メモリコントローラユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１９は、メモリ１８３２、１８３４がＣＬ１８７２、１８８２に結合されていることのみならず、Ｉ／Ｏデバイス１９１４も制御ロジック１８７２、１８８２に結合されていることを示す。レガシＩ／Ｏデバイス１９１５は、チップセット１８９０に結合される。
【０１８５】
ここで図２０を参照すると、本発明の実施形態によるＳｏＣ２０００のブロック図が示される。図１６における類似の要素は、同一の参照番号を有する。また、破線ボックスは、より高度なＳｏＣの任意選択の特徴である。図２０において、相互接続ユニット２００２は、１もしくは複数のコア１６０２Ａ〜Ｎおよび共有キャッシュユニット１６０６のセットを含むアプリケーションプロセッサ２０１０、システムエージェントユニット１６１０、バスコントローラユニット１６１６、統合メモリコントローラユニット１６１４、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得る１もしくは複数のコプロセッサ２０２０のセット、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット２０３０、ダイレクトメモリアクセス（ＤＭＡ）ユニット２０３２、および１または複数の外部ディスプレイを結合するディスプレイユニット２０４０に結合される。一実施形態において、コプロセッサ２０２０は、例えば、ネットワークプロセッサもしくは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、エンベデッドプロセッサ等のような専用プロセッサを含む。
【０１８６】
本明細書に開示されるメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装アプローチの組み合わせで実装され得る。本発明の実施形態は、少なくとも１つのプロセッサ、ストレージシステム（揮発性および不揮発性メモリ、ならびに／またはストレージ要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを有するプログラマブルシステム上で実行するコンピュータプログラムまたはプログラムコードとして実装され得る。
【０１８７】
図１８に示されるコード１８３０等のプログラムコードは、本明細書に説明される機能を実行して出力情報を生成するべく、入力命令に適用され得る。出力情報は、既知の様式で１または複数の出力デバイスに適用され得る。本願の目的のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、またはマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
【０１８８】
プログラムコードは、高水準手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装され、処理システムと通信し得る。所望であれば、プログラムコードは、アセンブリ言語または機械語でも実装され得る。実際には、本明細書に説明されるメカニズムは、範囲においていずれの特定のプログラミング言語にも限定されない。いずれの場合においても、言語は、コンパイル型言語またはインタープリタ型言語であってもよい。
【０１８９】
少なくとも一実施形態の１または複数の態様は、プロセッサ内の様々なロジックを表す、機械可読媒体上に格納された代表的命令により実装され得、命令は、機械により読み出されると、当該機械に本明細書に説明される技術を実行するためのロジックを生成させる。「ＩＰコア」として知られるそのような表現は、有形機械可読媒体上に格納され、様々な顧客または製造設備に供給され、ロジックまたはプロセッサを実際に作成する製造機械にロードされ得る。
【０１９０】
そのような機械可読ストレージ媒体としては、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ‐ＲＯＭ）、書き換え可能コンパクトディスク（ＣＤ‐ＲＷ）、および光磁気ディスク等、その他のタイプのディスクを含むストレージ媒体、リードオンリメモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、および相変化メモリ（ＰＣＭ）等の半導体デバイス、磁気もしくは光カード、または電子命令を格納するのに好適なその他のタイプの媒体を含む、機械またはデバイスにより製造または形成される、非一時的で有形な構成の物品が挙げられ得るが、これらに限定されない。
【０１９１】
従って、本発明の実施形態は、命令を含み、または本明細書に説明される構造体、回路、装置、プロセッサ、および／またはシステム機能を定義するハードウェア記述言語（ＨＤＬ）等の設計データを含む非一時的有形機械可読媒体も含む。そのような実施形態は、プログラム製品と称され得る。
【０１９２】
エミュレーション（バイナリ変換、コードモーフィング等を含む）
いくつかの場合に、命令コンバータは、ソース命令セットからターゲット命令セットへと命令を変換するべく用いられ得る。例えば、命令コンバータは、（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて）命令を、コアにより処理されるべき１または複数の他の命令に翻訳し、モーフィングし、エミュレートし、または別の方法で変換し得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせで実装され得る。命令コンバータは、プロセッサにあり、プロセッサから離れ、またはプロセッサ上の一部であり、プロセッサから離れた一部であり得る。
【０１９３】
図２１は、本発明の実施形態による、ソース命令セットのバイナリ命令を、ターゲット命令セットのバイナリ命令に変換するソフトウェア命令コンバータの使用と対比するブロック図である。示された実施形態において、命令コンバータは、ソフトウェア命令コンバータであるが、あるいは、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの様々な組み合わせで実装され得る。図２１は、高水準言語２１０２によるプログラムが、少なくとも１つのｘ８６命令セットコア２１１６を有するプロセッサによりネイティブに実行され得るｘ８６バイナリコード２１０６を生成するべく、ｘ８６コンパイラ２１０４を用いてコンパイルされ得ることを示す。少なくとも１つのｘ８６命令セットコア２１１６を有するプロセッサは、少なくとも１つのｘ８６命令セットコアを用いるインテル（登録商標）プロセッサと実質的に同一の結果を実現するべく、（１）インテル（登録商標）ｘ８６命令セットコアの命令セットの実質的部分、または（２）少なくとも１つのｘ８６命令セットコアを有するインテル（登録商標）プロセッサ上で起動することを目的とする、オブジェクトコードバージョンのアプリケーションまたは他のソフトウェアを互換的に実行し、または別の方法で処理することにより、少なくとも１つのｘ８６命令セットコアを有するインテル（登録商標）プロセッサと実質的に同一の機能を実行し得る任意のプロセッサを表す。ｘ８６コンパイラ２１０４は、ｘ８６バイナリコード２１０６（例えば、オブジェクトコード）を生成するように動作可能なコンパイラを表す。ｘ８６バイナリコード２１０６は、追加のリンク処理を用いるか、または用いることなく少なくとも１つのｘ８６命令セットコア２１１６を有するプロセッサにおいて実行され得る。同様に、図２１は、高水準言語２１０２によるプログラムが、少なくとも１つのｘ８６命令セットコア２１１４を有しないプロセッサ（例えば、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行し、および／またはカリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セットを実行するコアを有するプロセッサ）によりネイティブに実行され得る代替的な命令セットバイナリコード２１１０を生成するべく、代替的な命令セットコンパイラ２１０８を用いてコンパイルされ得ることを示す。命令コンバータ２１１２は、ｘ８６バイナリコード２１０６を、ｘ８６命令セットコア２１１４を有しないプロセッサによりネイティブに実行され得るコードに変換するべく用いられる。この変換済みコードは、代替的な命令セットバイナリコード２１１０と同じである可能性が低い。なぜなら、これが可能な命令コンバータは、作成することが困難だからである。しかし、変換済みコードは、一般的なオペレーションを実現し、代替的な命令セットの命令から構成される。従って、命令コンバータ２１１２は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表し、これらは、エミュレーション、シミュレーション、またはその他の処理により、ｘ８６命令セットプロセッサまたはコアを有しないプロセッサまたは他の電子デバイスがｘ８６バイナ��コード２１０６を実行することを可能にする。
【０１９４】
図１、図２Ａ／図２Ｂ、および図５〜図９のいずれかについて説明されたコンポーネント、特徴、および詳細は、任意選択で図３〜図４のいずれかにも適用され得る。更に、装置のいずれかについて説明されるコンポーネント、機能、および詳細は、任意選択で方法のいずれかにも適用され得、方法は実施形態において、そのような装置によっておよび／または装置を用いて実行され得る。本明細書に説明されるプロセッサのいずれかは、本明細書（例えば、図１７〜図２０）に開示されるコンピュータシステムのいずれかに含まれ得る。いくつかの実施形態において、命令は、本明細書（例えば、図１０Ａ〜図１２Ｄ）に開示される命令フォーマットの機能または詳細を有し得るが、これは必須ではない。
【０１９５】
明細書および特許請求の範囲において、「結合される」および／または「接続される」という用語は、それらの派生語と共に用いられ得る。これらの用語は、互いに類義語として意図されない。むしろ、実施形態において、「接続される」は、２またはそれより多くの要素が物理的および／または電気的に直に互いに接触することを示すために用いられ得る。「結合される」は、２またはそれより多くの要素が物理的および／または電気的に直に互いに接触することを意味し得る。しかし、「結合される」は、２またはそれより多くの要素が互いに直に接触していないが、なおも互いに協働または相互作用することも意味し得る。例えば、実行ユニットは、１または複数の介在コンポーネントを介してレジスタおよび／またはデコードユニットと結合され得る。図面において、接続および結合を示すべく、矢印が用いられる。
【０１９６】
「および／または」という用語が用いられる場合がある。本明細書において用いられるように、「および／または」という用語は、一方もしくは他方、または両方を意味する（例えば、Ａおよび／またはＢは、ＡもしくはＢ、またはＡおよびＢの両方を意味する）。
【０１９７】
上記において、実施形態の完全な理解を提供するべく、具体的な詳細が記載されている。しかし、他の実施形態は、これらの具体的な詳細のうちのいくつかを用いることなく実施され得る。本発明の範囲は、上記で提供された具体的な例によってではなく、以下の特許請求の範囲のみによって決定される。他の例において、本明細書の理解を不明瞭にするのを避けるべく、周知の回路、構造体、デバイス、および動作は、ブロック図の形式で、および／または詳細なしで示されている。適切と考えられる場合、別途指定され、または明白に明らかではない限り、類似または同一の特性を任意選択で有し得る、対応または類似する要素を示すべく、符号または符号の末尾が図面間で反復される。
【０１９８】
特定のオペレーションは、ハードウェアコンポーネントによって実行され得、またはオペレーションを実行する命令でプログラミングされた機械、回路、またはハードウェアコンポーネント（例えば、プロセッサ、プロセッサの一部、回路等）を生じさせ、および／またはもたらすために用いられ得る機械実行可能命令、もしくは回路実行可能命令で実施され得る。オペレーションは、任意選択で、ハードウェアおよびソフトウェアの組み合わせによっても実行され得る。プロセッサ、機械、回路、またはハードウェアは、特定または具体的な回路を備み得、または他のロジック（例えば、ファームウェアおよび／またはソフトウェアと潜在的に組み合わされるハードウェア）は、命令を実行および／または処理し、当該命令に応答して結果を格納するように動作する。
【０１９９】
いくつかの実施形態は、機械可読媒体を含む製造物品（例えば、コンピュータプログラム製品）を含む。媒体は、機械によって可読な形式の情報を提供し、例えば、これを格納するメカニズムを含み得る。機械可読媒体は、機械によって実行されるとき、および／または場合に、機械に本明細書に開示される１または複数のオペレーション、方法、または技術を実行させ、および／またはこれらを実行する機械をもたらすように動作する命令または命令のシーケンスを提供し、または格納し得る。
【０２００】
いくつかの実施形態において、機械可読媒体は、非一時的機械可読ストレージ媒体を含み得る。例えば、非一時的機械可読ストレージ媒体としては、フロッピー（登録商標）ディスケット、光ストレージ媒体、光ディスク、光データストレージデバイス、ＣＤ‐ＲＯＭ、磁気ディスク、光磁気ディスク、リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、相変化メモリ、相変化データストレージ材料、不揮発性メモリ、不揮発性データストレージデバイス、非一時的メモリ、非一時的データストレージデバイス等が挙げられ得る。非一時的機械可読ストレージ媒体は、一時的伝播信号からなるものではない。
【０２０１】
好適な機械の例としては、汎用プロセッサ、専用プロセッサ、デジタルロジック回路、集積回路等が挙げられるが、これらに限定されない。好適な機械のなおも他の例としては、コンピュータシステム、またはプロセッサ、デジタルロジック回路もしくは集積回路を含む他の電子デバイスが挙げられる。そのようなコンピュータシステムまたは電子デバイスの例としては、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワークデバイス（例えば、ルータおよびスイッチ）、モバイルインターネットデバイス（ＭＩＤ）、メディアプレーヤ、スマートテレビ、ネットトップ、セットトップボックス、およびビデオゲームコントローラが挙げられるが、これらに限定されない。
【０２０２】
本明細書を通して、例えば「一実施形態」、「実施形態」、「１または複数の実施形態」、「いくつかの実施形態」に言及する場合、特定の機能が本発明の実施に含まれ得ることを示すが、そうであることを必ずしも必要とするものではない。同様に、本明細書において、本開示を簡素化して様々な発明上の態様の理解に役立つことを目的として、様々な機能が単一の実施形態、図面、または説明において互いにグループ化される場合がある。しかし、開示のこの方法は、本発明が各請求項において明示的に列挙されるより多くの機能を必要するという意図を反映したものと解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明上の態様は、開示される単一の実施形態の全ての機能より少ないものである。従って、詳細な説明の後に続く特許請求の範囲は、本明細書におけるこの詳細な説明に明示的に組み込まれ、各請求項は、本発明の別個の実施形態として独立している。
【０２０３】
例示的な実施形態
以下の例は、更なる実施形態に関する。例における具体的な事柄は、１または複数の実施形態のいずれかの箇所において用いられ得る。
【０２０４】
例１は、複数のパックドデータレジスタと、ベクトルキャッシュラインライトバック命令をデコードするデコードユニットとを含むプロセッサまたは他の装置である。ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを含むソースパックドメモリインデックスオペランドを示す。装置は、複数のパックドデータレジスタおよびデコードユニットと結合されたキャッシュコヒーレンシシステムも含む。キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる。
【０２０５】
例２は、例１のプロセッサを含み、キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを内部に格納した任意のキャッシュラインの無効化を任意選択で生じさせる。
【０２０６】
例３は、例１のプロセッサを含み、キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインの状態を、未変更状態に任意選択で変更させる。
【０２０７】
例４は、例１〜３のいずれかのプロセッサを含み、キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインにおけるプロセッサの１または複数の内部キャッシュのいずれかにおける、複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインの１または複数のメモリへのライトバックを開始する１または複数のキャッシュコントローラを含む。キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、相互接続上で１または複数のキャッシュラインライトバック信号を送信し、コヒーレンシドメインにおけるプロセッサの外部の任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせるバスインタフェースユニットも含む。
【０２０８】
例５は、例４のプロセッサを含み、バスインタフェースユニットは、たとえ所与のメモリアドレスのデータがプロセッサの１または複数の内部キャッシュのいずれかに格納されなくとも、任意選択で、相互接続上で１または複数のキャッシュラインライトバック信号を送信し、コヒーレンシドメインにおけるプロセッサの外部の任意のキャッシュにおける、所与のメモリインデックスによって示される所与のメモリアドレスのデータを内部に格納した任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる。
【０２０９】
例６は、例４〜５のうちのいずれか１つのプロセッサを含み、バスインタフェースユニットは、任意選択で、相互接続上で１または複数のキャッシュラインライトバック信号を送信し、コヒーレンシドメインにおけるプロセッサの外部の任意のキャッシュにおける、所与のメモリインデックスによって示される所与のメモリアドレスのデータを内部に格納した任意のダーティキャッシュラインを、プロセッサの１または複数の内部キャッシュのいずれかに所与のメモリアドレスのデータを格納する任意のキャッシュラインの状態に関係なく、１または複数のメモリにライトバックさせる。
【０２１０】
例７は、例１〜６のうちのいずれか１つのプロセッサを含み、デコードユニットは、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを任意選択で示すベクトルキャッシュラインライトバック命令をデコードする。
【０２１１】
例８は、例７のプロセッサを含み、キャッシュコヒーレンシシステムは、ベクトルキャッシュラインライトバック命令に応答して、ソースパックドデータオペレーションマスクオペランドに従い、コヒーレンシドメインの任意のキャッシュにおける、ソースパックドデータオペレーションマスクオペランドの対応するマスク要素によってマスクをかけられない複数のメモリインデックスの任意の非マスクメモリインデックスのみによって示される複数のメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを選択的に、１または複数のメモリにライトバックさせる。
【０２１２】
例９は、例１〜８のうちのいずれか１つのプロセッサを含み、ベクトルキャッシュラインライトバック命令は、１または複数のメモリに格納される複数のデータ要素を含むソースパックドデータ要素オペランドを示すインデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令を任意選択で含む。
【０２１３】
例１０は、例９のプロセッサを含み、インデックス付きベクトルストアおよびベクトルキャッシュラインライトバック命令に応答して、ソースパックドデータ要素オペランドの複数のデータ要素の各々を、ソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示される１または複数のメモリにおける対応するメモリアドレスに格納する、実行ユニットを更に含む。
【０２１４】
例１１は、例１〜１０のうちのいずれか１つのプロセッサを含み、ベクトルキャッシュラインライトバック命令に応答して、ベクトルキャッシュラインライトバック命令に先行する全てのストア命令が全面的に可視になるまで、プログラム順序においてベクトルキャッシュラインライトバック命令の後に続く全てのストア命令が、全面的に可視になることを任意選択で阻止するメモリアクセス順序付けロジックを更に含む。
【０２１５】
例１２は、例１１のプロセッサを含み、ベクトルキャッシュラインライトバック命令に応答して、任意のダーティキャッシュラインが永続性ストレージにライトバックされるまで、プログラム順序においてベクトルキャッシュラインライトバック命令の後に続く全ての命令が完了することを任意選択で阻止するユニットを更に含む。
【０２１６】
例１３は、例１〜１２のうちのいずれか１つのプロセッサを含み、任意選択で、分岐を予測する分岐予測ユニットと、任意選択で、分岐予測ユニットと結合され、ベクトルキャッシュラインライトバック命令を含む命令をプリフェッチする命令プリフェッチユニットとを更に含む。プロセッサは、任意選択で、命令プリフェッチユニットと結合され、命令を格納するレベル１（Ｌ１）命令キャッシュと、任意選択で、データを格納するＬ１データキャッシュとを更に含み得る。プロセッサは、データおよび命令を格納するレベル２（Ｌ２）キャッシュと、デコードユニット、Ｌ１命令キャッシュ、およびＬ２キャッシュと結合された命令フェッチユニットとを任意選択で更に含み得る。命令フェッチユニットは、Ｌ１命令キャッシュおよびＬ２キャッシュのうちの１つから、ベクトルキャッシュラインライトバック命令をフェッチし、ベクトルキャッシュラインライトバック命令をデコードユニットに提供し得る。プロセッサは、複数のパックドデータレジスタと結合され、複数のパックドデータレジスタをリネームするレジスタリネームユニットと、キャッシュコヒーレンシシステムによる実行のためにベクトルキャッシュラインライトバック命令からデコードされた１または複数のオペレーションをスケジューリングするスケジューラとを任意選択で更に含み得る。
【０２１７】
例１４は、ベクトルキャッシュラインライトバック命令を受信する段階を有するプロセッサにおける方法を含む。ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを有するソースパックドメモリインデックスオペランドを示し得る。方法は、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる段階を備える。
【０２１８】
例１５は、例１４の方法を含み、ライトバックさせる段階は、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを格納する任意のキャッシュラインの任意選択の無効化を生じさせる段階を有する。
【０２１９】
例１６は、例１４の方法を含み、ライトバックさせる段階は、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインの状態を、任意選択で未変更状態に変更させる段階を有する。
【０２２０】
例１７は、例１４〜１６のうちのいずれか１つの方法を含み、ライトバックさせる段階は、コヒーレンシドメインにおけるプロセッサの１または複数の内部キャッシュのいずれかにおける、複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインの１または複数のメモリへのライトバックを開始する段階を有する。ライトバックさせる段階は、相互接続上で１または複数のキャッシュラインライトバック信号を送信して、コヒーレンシドメインにおけるプロセッサの外部の任意のキャッシュにおける、複数のメモリアドレスのいずれかのデータを格納する任意のダーティキャッシュラインを、１または複数のメモリにライトバックさせる段階も任意選択で含み得る。
【０２２１】
例１８は、例１４〜１７のうちのいずれか１つの方法を含み、受信する段階は、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを任意選択で示すマスク命令であるベクトルキャッシュラインライトバック命令を受信する段階を有する。
【０２２２】
例１９は、例１４〜１８のうちのいずれか１つの方法を含み、受信する段階は、複数のデータ要素を含むソースパックドデータ要素オペランドを任意選択で示すベクトルキャッシュラインライトバック命令を受信する段階を有し、複数のデータ要素を、複数のメモリインデックスの対応するメモリインデックスによって示される１または複数のメモリにおけるメモリ位置に任意選択で格納する段階を更に有する。
【０２２３】
例２０は、例１４〜１９のうちのいずれか１つの方法を含み、ベクトルキャッシュラインライトバック命令に応答して、プログラム順序においてベクトルキャッシュラインライトバック命令に先行する全てのストア命令が全面的に可視になるまで、プログラム順序におけるベクトルキャッシュラインライトバック命令の後に続く全てのストア命令が、全面的に可視になることを任意選択で阻止する段階を更に含む。
【０２２４】
例２１は、相互接続と、相互接続と結合されたプロセッサとを含む、命令を処理するためのシステムである。プロセッサは、ベクトルキャッシュラインライトバック命令および永続性コミット命令を含む命令セットを有する。システムは、相互接続と結合された永続性メモリも含む。永続性メモリは、プロセッサによって実行されると、プロセッサにオペレーションのセットを実行させる命令のセットを格納する。オペレーションのセットは、ソースパックドメモリインデックスオペランドの対応するメモリインデックスによって示される永続性メモリにおけるメモリアドレスに、ソースパックドデータ要素オペランドの複数のデータ要素を格納することを含む。オペレーションは、ベクトルキャッシュラインライトバック命令に応答して、コヒーレンシドメインの任意のキャッシュにおける、ベクトルキャッシュラインライトバック命令によって示されるソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示されるメモリアドレスのいずれかのデータを内部に格納した任意のダーティキャッシュラインを、永続性メモリにライトバックさせることも含む。オペレーションは、永続性コミット命令に応答して、ダーティキャッシュラインのいずれかが永続性メモリにライトバックされるまで、プログラム順序においてベクトルキャッシュラインライトバック命令の後に続く全ての命令が、完了することを阻止することも含む。
【０２２５】
例２２は、例２１のシステムを含み、ベクトルキャッシュラインライトバック命令は、複数のマスク要素を含むソースパックドデータオペレーションマスクオペランドを示す。
【０２２６】
例２３は、非一時的機械可読ストレージ媒体を含む製造物品であり、非一時的機械可読ストレージ媒体は、ベクトルキャッシュラインライトバック命令を格納する。ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを有するソースパックドメモリインデックスオペランドを示す。ベクトルキャッシュラインライトバック命令は、機械によって実行されると、機械に、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する、コヒーレンシドメイン内の任意のキャッシュにおける任意のダーティキャッシュラインを１または複数のメモリにライトバックさせることを含むオペレーションを実行させる。
【０２２７】
例２４は、例２３の製造物品を含み、ベクトルキャッシュラインライトバック命令は、機械によって実行されると、機械に、メモリアドレスのいずれかのデータを内部に格納した、コヒーレンシドメインにおけるキャッシュのいずれかにおける任意のキャッシュラインを任意選択で更に無効にさせる。
【０２２８】
例２５は、例２３の製造物品を含み、ベクトルキャッシュラインライトバック命令は、機械によって実行されると、更に機械に、メモリアドレスのいずれかのデータを内部に格納した、コヒーレンシドメインにおけるキャッシュのいずれかにおけるダーティキャッシュラインのいずれかの状態を、未変更状態に任意選択で変更させる。
【０２２９】
例２６は、例１４〜２０のうちのいずれか１つの方法を実行し、または実行するように動作するプロセッサまたは他の装置である。
【０２３０】
例２７は、例１４〜２０のうちのいずれか１つの方法を実行するための手段を含むプロセッサまたは他の装置である。
【０２３１】
例２８は、例１４〜２０のうちのいずれか１つの方法を実行するためのモジュールおよび／またはユニットおよび／またはロジックおよび／または回路および／または手段のいずれかの組み合わせを含むプロセッサである。
【０２３２】
例２９は、プロセッサ、コンピュータシステム、電子デバイス、または他の機械によって実行される場合および／またはときに、機械に例１４〜２０のうちのいずれか１つの方法を実行させるように動作する命令を任意選択で格納し、または別の方法で提供する、非一時的機械可読媒体を任意選択で含む製造物品である。
【０２３３】
例３０は、バスまたは他の相互接続と、相互接続と結合された、例１〜１３のうちのいずれか１つのプロセッサと、任意選択のダイナミックランダムアクセスメモリ（ＤＲＡＭ）、任意選択のスタティックＲＡＭ、任意選択のフラッシュメモリ、任意選択のグラフィックスコントローラまたはチップ、任意選択のビデオカード、任意選択の無線通信チップ、任意選択の無線トランシーバ、任意選択の汎ヨーロッパデジタル移動通信システム（ＧＳＭ（登録商標））アンテナ、任意選択のコプロセッサ（例えば、ＣＩＳＣコプロセッサ）、任意選択のオーディオデバイス、任意選択のオーディオ入力デバイス、任意選択のオーディオ出力デバイス、任意選択のビデオ入力デバイス（例えば、ビデオカメラ）、任意選択のネットワークインタフェース、任意選択の通信インタフェース、任意選択の永続性メモリ（例えば、任意選択の相変化メモリ、メモリスタ等）、およびこれらの組み合わせから選択される、相互接続と結合された１または複数のコンポーネントを含むコンピュータシステムまたは他の電子デバイスである。
【０２３４】
例３１は、本明細書において実質的に説明されるプロセッサまたは他の装置である。
【０２３５】
例３２は、本明細書において実質的に説明されるいずれかの方法を実行するように動作するプロセッサまたは他の装置である。
【０２３６】
例３３は、本明細書において実質的に説明されるいずれかのベクトルキャッシュラインライトバック命令を実行する（例えば、実行するように構成され、または実行するように動作し、または実行するコンポーネントを有する）プロセッサまたは他の装置である。
【０２３７】
例３４は、第１の命令セットの命令をデコードするデコードユニットを含むプロセッサまたは他の装置である。デコードユニットは、ベクトルキャッシュラインライトバック命令をエミュレートする第１の命令セットの１または複数の命令を受信する。ベクトルキャッシュラインライトバック命令は、本明細書に実質的に開示される命令のいずれかであってもよく、また、第２の命令セットである。プロセッサまたは他の装置は、デコードユニットに結合され、第１の命令セットの１または複数の命令を実行または実施する１または複数の実行ユニットも含む。１または複数の実行ユニットは、第１の命令セットの１または複数の命令に応答して、ベクトルキャッシュラインライトバック命令によって指定されたアーキテクチャ的効果を有する。
【０２３８】
例３５は、第１の命令セットの命令をデコードするデコードユニットを有するプロセッサを含む、コンピュータシステムまたは他の電子デバイスである。プロセッサは、１または複数の実行ユニットも有する。電子デバイスは、プロセッサと結合されたストレージデバイスも含む。ストレージデバイスは、本明細書に実質的に開示されるベクトルキャッシュラインライトバック命令のいずれかであり得、第２の命令セットである、ベクトルキャッシュラインライトバック命令を格納する。ストレージデバイスは、ベクトルキャッシュラインライトバック命令を第１の命令セットの１または複数の命令に変換する命令を格納する。第１の命令セットの１または複数の命令は、プロセッサによって実行されると、プロセッサに、ベクトルキャッシュラインライトバック命令によって指定されたアーキテクチャ的効果を有するようにさせる。
【０２３９】
例３６は、ベクトルキャッシュラインライトバック命令を受信するための手段を有するプロセッサを含む。ベクトルキャッシュラインライトバック命令は、複数のメモリインデックスを有するソースパックドメモリインデックスオペランドを示す。プロセッサは、ベクトルキャッシュラインライトバック命令に応答して、ソースパックドメモリインデックスオペランドのメモリインデックスのいずれかによって示される複数のメモリアドレスのいずれかのデータを格納する、コヒーレンシドメイン内の任意のキャッシュにおける任意のダーティキャッシュラインを１または複数のメモリにライトバックさせるための手段を備える。
【図１】
0006787554.tif 000003
【図２Ａ】
0006787554.tif 000004
【図２Ｂ】
0006787554.tif 000005
【図３】
0006787554.tif 000006
【図４】
0006787554.tif 000007
【図５】
0006787554.tif 000008
【図６】
0006787554.tif 000009
【図７】
0006787554.tif 000010
【図８】
0006787554.tif 000011
【図９】
0006787554.tif 000012
【図１０Ａ】
0006787554.tif 000013
【図１０Ｂ】
0006787554.tif 000014
【図１０Ｃ】
0006787554.tif 000015
【図１１Ａ】
0006787554.tif 000016
【図１１Ｂ】
0006787554.tif 000017
【図１２Ａ】
0006787554.tif 000018
【図１２Ｂ】
0006787554.tif 000019
【図１２Ｃ】
0006787554.tif 000020
【図１２Ｄ】
0006787554.tif 000021
【図１３】
0006787554.tif 000022
【図１４Ａ】
0006787554.tif 000023
【図１４Ｂ】
0006787554.tif 000024
【図１５Ａ】
0006787554.tif 000025
【図１５Ｂ】
0006787554.tif 000026
【図１６】
0006787554.tif 000027
【図１７】
0006787554.tif 000028
【図１８】
0006787554.tif 000029
【図１９】
0006787554.tif 000030
【図２０】
0006787554.tif 000031
【図２１】
0006787554.tif 000032