第1の複数のデータフィールドを含み、該第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応し、該第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリからまだ収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示す、第1のレジスタと、収集演算を指定するとともに第2の演算を指定する第1の命令をデコードするデコードステージと、デコードされた前記第1の命令に応答して、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれの値を読み出し、前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、一部分が収集された前記データ要素をストアする第2の複数のデータフィールドを有する第2のレジスタ内に前記対応するデータ要素をストアし、前記第1のレジスタ内の対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記第2の複数のデータフィールドにストアされた前記データ要素のそれぞれを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する、1つ又は複数の実行ユニットと、を備える、プロセッサ。前記第1の値は1である、請求項1に記載のプロセッサ。前記第2の値は0である、請求項1または2に記載のプロセッサ。前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する、請求項1から3の何れか1項に記載のプロセッサ。前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項4に記載のプロセッサ。前記第2の演算は単項である、請求項1から5の何れか1項に記載のプロセッサ。前記第2の演算は2項である、請求項1から5の何れか1項に記載のプロセッサ。前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項1から7の何れか1項に記載のプロセッサ。前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項1から7の何れか1項に記載のプロセッサ。前記第2のレジスタは、512ビットベクトルレジスタである、請求項1から9の何れか1項に記載のプロセッサ。コンピューターに、第1のレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出す手順であって、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応し、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示す、読み出す手順と、前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、一部分が収集された前記データ要素をストアする第2の複数のデータフィールドを有する第2のレジスタ内に前記対応するデータ要素をストアし、前記第1のレジスタ内の対応するデータフィールドの値を前記第1の値から前記第2の値に変更する手順と、次に、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記第2の複数のデータフィールドにストアされた前記データ要素のそれぞれを用いて第2の演算を実行して、対応する結果のデータ要素を生成する手順と、を実行させるためのプログラム。前記コンピューターにさらに、前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する手順、を行わせるための、請求項11に記載のプログラム。前記コンピューターにさらに、前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する手順、を行わせるための、請求項11または12に記載のプログラム。前記第2の演算は単項である、請求項11から13の何れか1項に記載のプログラム。前記第2の演算は2項である、請求項11から13の何れか1項に記載のプログラム。前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項11から15の何れか1項に記載のプログラム。前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項11から15の何れか1項に記載のプログラム。前記第2のレジスタは、512ビットベクトルレジスタである、請求項11から17の何れか1項に記載のプログラム。収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データSIMD命令をデコードするデコードステージと、デコードされた前記第1のSIMD命令に応答して、マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示し、前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の前記対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する1つ又は複数の実行ユニットと、を備える、プロセッサ。前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の複数のデータフィールドを複製する、請求項19に記載のプロセッサ。前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項20に記載のプロセッサ。前記デスティネーションレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項21に記載のプロセッサ。前記デスティネーションレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項21に記載のプロセッサ。前記デスティネーションレジスタは、512ビットベクトルレジスタである、請求項21から23の何れか1項に記載のプロセッサ。機械によって実施される方法であって、収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データSIMD命令をデコードすることと、前記第1のSIMD命令に応答して、マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示すことと、前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の対応する前記データフィールドの前記値を前記第1の値から前記第2の値に変更することと、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行し、対応する結果のデータ要素を生成することと、を含む、機械によって実施される方法。前記第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の複数のデータフィールドを複製すること、を更に含む、請求項25に記載の機械によって実施される方法。前記第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの値が前記第1の値から前記第2の値に変更されたときに複製すること、を更に含む、請求項26に記載の機械によって実施される方法。前記デスティネーションレジスタは、512ビットベクトルレジスタである、請求項25から27の何れか1項に記載の機械によって実施される方法。処理システムであって、メモリと、複数のプロセッサとを備え、前記複数のプロセッサのそれぞれは、収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データSIMD命令をデコードするデコードステージと、デコードされた前記第1のSIMD命令に応答して、マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出して、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、前記メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示し、前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の前記対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する1つ又は複数の実行ユニットと、を有する、処理システム。前記1つ又は複数の実行ユニットは、さらに前記第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの値が前記第1の値から前記第2の値に変更されたときに複製する、請求項29に記載の処理システム。これらの収集演算がページフォールト又は他の或る理由によって割り込みを受けた場合、幾つかのアーキテクチャでは、機械の状態が保存されない場合があり、これによって、収集演算が割り込みを受けた箇所で再開するのではなく、収集演算全体を繰り返すことが必要となる。繰り返されるいずれかの収集演算に関して、複数のメモリアクセスが必要とされる場合があるので、完了するには多くのクロックサイクルが必要とされる場合があり、そのために、後続のいずれの従属算術演算も必然的に待機しなければならない。そのような遅延は、ボトルネックを表し、このボトルネックは、例えば、幅広の、すなわち大きな幅のベクトルアーキテクチャから当該ボトルネックがない場合には予想される性能の利点を制限するおそれがある。これまで、そのような性能を制限する問題及びボトルネックに対する可能性のある解決策は、十分に探求されてこなかった。本発明は、添付図面の図に限定ではなく例として示されている。以下の説明は、プロセッサ、コンピューターシステム、又は他の処理装置内において又はこれらに関連して、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する命令及び処理ロジックを開示する。幾つかの実施形態では、例えば、収集演算及び第2の演算、デスティネーションレジスタ、オペランドレジスタ、並びにメモリアドレスを指定する命令に応答して、実行ユニットは、マスクレジスタ内の値を読み出す。マスクレジスタ内のフィールドは、メモリ内のデータ要素へのインデックスレジスタ内のオフセットインデックスに対応する。第1のマスク値は、要素がメモリから収集されていないことを示し、第2の値は、要素を収集する必要がないか又は要素が既に収集されていることを示す。各データ要素が第1の値を有する場合、そのデータ要素は、メモリから対応するデスティネーションレジスタのロケーション内に収集され、マスクレジスタ内の対応する値は、第2の値に変更される。全てのマスクレジスタフィールドが第2の値を有するとき、デスティネーションレジスタ及びオペランドレジスタ内の対応するデータを用いて第2の演算を実行し、結果を生成することができる。幾つかの代替の実施形態では、例えば、散乱演算及び第1の演算、デスティネーションレジスタ、オペランドレジスタ、並びにメモリアドレスを指定する命令に応答して、実行ユニットは、マスクレジスタを用いて又は用いることなく第1の演算を実行することができ、マスク値は、結果として得られた要素がメモリに散乱されていないかどうか、又はその要素をメモリに散乱する必要がないこと若しくはその要素がメモリに既に散乱されていることを示すのに用いることができる。以下の説明では、本発明の実施形態のより完全な理解を提供するために、処理ロジック、プロセッサタイプ、マイクロアーキテクチャ条件、イベント、有効化enablementメカニズム等の多数の具体的な詳細が述べられる。しかしながら、本発明は、そのような具体的な詳細がなくても実施することができることが当業者によって認識されるであろう。加えて、幾つかのよく知られた構造、回路等は、本発明の実施形態を不必要に分かりにくくしないようにするために詳細には示されていない。以下の実施形態は、プロセッサに関して説明されるが、他の実施形態は、他のタイプの集積回路及びロジックデバイスに適用可能である。本発明の実施形態の同様の技法及び教示内容は、より高いパイプラインスループット及び改善された性能から利益を受けることができる他のタイプの回路又は半導体デバイスに適用することができる。本発明の実施形態の教示内容は、データ操作を実行する任意のプロセッサ又は機械に適用可能である。しかしながら、本発明は、512ビット、256ビット、128ビット、64ビット、32ビット、又は16ビットのデータ演算を実行するプロセッサ又は機械に限定されるものではなく、データの操作又は管理が実行される任意のプロセッサ及び機械に適用することができる。加えて、以下の説明は例を提供し、添付図面は、例示の目的で様々な例を示している。しかしながら、これらの例は、本発明の実施形態の全ての可能な実施態様を網羅的に列挙したものを提供するものではなく、単に本発明の実施形態の例を提供することを意図したものにすぎないので、限定する意味に解釈されるべきではない。以下の例は、実行ユニット及びロジック回路に関する命令のハンドリング及び配信を説明しているが、本発明の他の実施形態は、機械によって実行されると、当該機械に、本発明の少なくとも1つの実施形態と一致した機能を実行させる機械可読有形媒体上にストアされたデータ又は命令として達成することができる。1つの実施形態では、本発明の実施形態に関連付けられた機能が、機械実行可能命令に具現化される。これらの命令は、命令を用いてプログラムされた汎用プロセッサ又は専用プロセッサに本発明のステップを実行させるのに用いることができる。本発明の実施形態は、本発明の実施形態による1つ又は複数の演算を実行するようにコンピューター又は他の電子デバイスをプログラムするのに用いることができる命令をストアしている機械又はコンピューター可読媒体を含むことができるコンピュータープログラム製品又はソフトウェアとして提供することができる。代替的に、本発明の実施形態のステップは、ステップを実行するための固定機能ロジックを含む特定のハードウェア構成要素によって、又はプログラムされたコンピューター構成要素及び固定機能ハードウェア構成要素の任意の組み合わせによって実行することができる。本発明の実施形態を実行するようにロジックをプログラムするのに用いられる命令は、DRAM、キャッシュ、フラッシュメモリ、又は他の記憶装置等の、システムのメモリ内にストアすることができる。さらに、命令は、ネットワークを介して又は他のコンピューター可読媒体によって配布することもできる。したがって、機械可読媒体は、機械例えば、コンピューターによって可読な形態で情報をストア又は伝送するための任意のメカニズムを含むことができるが、フロッピー登録商標ディスケット、光ディスク、コンパクトディスク読み出し専用メモリCD-ROM、及び光磁気ディスク、読み出し専用メモリROM、ランダムアクセスメモリRAM、消去可能プログラマブル読み出し専用メモリEPROM、電気的消去可能プログラマブル読み出し専用メモリEEPROM、磁気カード若しくは光カード、フラッシュメモリ、又は電気、光、音響、若しくは他の形態の伝播信号例えば、搬送波、赤外信号、デジタル信号等を介したインターネットによる情報の伝送に用いられる有形の機械可読記憶装置に限定されるものではない。したがって、コンピューター可読媒体は、機械例えば、コンピューターによって可読な形態で電子的な命令又は情報をストア又は伝送するのに好適な任意のタイプの有形の機械可読媒体を含む。設計は、創出からシミュレーション、製造に至る様々なステージを通る場合がある。設計を表すデータは、複数の方法で設計を表すことができる。まず、シミュレーションにおいて役立つように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を用いて表すことができる。加えて、ロジック及び/又はトランジスタゲートを有する回路レベルモデルを設計プロセスの或るステージにおいて作成することができる。さらに、或るステージにおけるほとんどの設計は、ハードウェアモデルにおける様々なデバイスの物理的配置を表すデータのレベルに達している。従来の半導体製造技法が用いられる場合、ハードウェアモデルを表すデータは、集積回路を作製するのに用いられるマスク用の種々のマスク層上の様々な特徴部の有無を指定するデータとすることができる。設計のいずれの表現においても、データは、任意の形態の機械可読媒体にストアすることができる。メモリ、又はディスク等の磁気記憶装置若しくは光記憶装置は、そのような情報を伝送するために変調又は別の方法で生成された光波又は電波を介して伝送される情報をストアする機械可読媒体とすることができる。コード又は設計を示すか又は搬送する電気搬送波が伝送されるとき、この電気信号のコピー、バッファリング、又は再送が実行される範囲において、新たなコピーが作成される。このように、通信プロバイダー又はネットワークプロバイダーは、本発明の実施形態の技法を具現化する、搬送波内にエンコーディングされた情報等のアーティクルを少なくとも一時的に有形の機械可読媒体上にストアすることができる。現代のプロセッサでは、複数の異なる実行ユニットが、様々なコード及び命令を処理及び実行するのに用いられる。命令には、即座に完了するものもあれば、完了するのに複数のクロックサイクルを要する可能性があるものもあるので、全ての命令が等しく作成されるとは限らない。命令のスループットが高速であるほど、プロセッサの全体的な性能はより良好となる。したがって、多くの命令が可能な限り高速に実行されるようにすることが有利である。しかしながら、或る特定の命令は、複雑さがより大きく、実行時間及びプロセッサリソースの観点でより多くを要する。例えば、浮動小数点命令、ロード/ストア演算、データムーブ等がある。より多くのコンピューターシステムがインターネット、テキスト、及びマルチメディアアプリケーションにおいて用いられるにつれて、追加のプロセッササポートが徐々に導入されてきた。1つの実施形態では、命令セットは、データタイプ、命令、レジスタアーキテクチャ、アドレス指定モード、メモリアーキテクチャ、割り込み及び例外ハンドリング、並びに外部の入力及び出力I/Oを含む1つ又は複数のコンピューターアーキテクチャに関連付けることができる。1つの実施形態では、命令セットアーキテクチャISAは、1つ又は複数の命令セットを実装するのに用いられるプロセッサロジック及び回路を備える1つ又は複数のマイクロアーキテクチャによって実装することができる。したがって、異なるマイクロアーキテクチャを有するプロセッサは、共通の命令セットの少なくとも一部を共有することができる。例えば、Intel登録商標Pentium登録商標4プロセッサ、Intel登録商標Core商標プロセッサ、及びカリフォルニア州サニーベールのAdvancedMicroDevices社からのプロセッサは、x86命令セットより新しいバージョンとともに追加された幾つかの拡張を有するのほぼ同一のバージョンを実装するが、異なる内部設計を有する。同様に、ARMHoldings社、MIPS社、又はそれらのライセンシー若しくは採用者等の他のプロセッサ開発会社によって設計されたプロセッサも、共通の命令セットの少なくとも一部を共有することができるが、異なるプロセッサ設計を備える場合がある。例えば、ISAの同じレジスタアーキテクチャは、専用の物理レジスタ、レジスタリネーミングメカニズム例えば、レジスタエイリアステーブルRAT、リオーダ―バッファーROB及びリタイアメントレジスタファイルの使用を用いた1つ又は複数の動的にアロケートされる物理レジスタを含む新しい技法又はよく知られた技法を用いて異なるマイクロアーキテクチャにおいて異なる方法で実装される場合がある。1つの実施形態では、レジスタは、ソフトウェアプログラマーによってアドレス指定可能な場合もあるし、可能でない場合もある1つ若しくは複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、又は他のレジスタセットを含むことができる。1つの実施形態では、命令は、1つ又は複数の命令フォーマットを含むことができる。1つの実施形態では、命令フォーマットは、特に、実行される演算と、その演算が実行される対象のオペランド複数の場合もあるとを指定する様々なフィールドビット数、ビットのロケーション等を示すことができる。幾つかの命令フォーマットは、命令テンプレート又はサブフォーマットによって更に分割して定義される場合がある。例えば、所与の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを有するように定義される場合があり、及び/又は異なって解釈される所与のフィールドを有するように定義される場合がある。1つの実施形態では、命令は、命令フォーマットを用いて定義される場合、その命令フォーマットの命令テンプレートのうちの所与の1つに表され、演算と、その演算が行われる対象のオペランドとを指定又は指示する。科学アプリケーション、金融アプリケーション、自動ベクトル化汎用アプリケーション、RMS認識、マイニング、及び合成アプリケーション、並びにビジュアルアプリケーション及びマルチメディアアプリケーション例えば、2D/3Dグラフィックス、画像処理、ビデオ圧縮/伸長、音声認識アルゴリズム、及びオーディオ操作は、多数のデータ項目に対して同じ演算を実行することが必要な場合がある。1つの実施形態では、単一命令複数データSIMDは、プロセッサに、複数のデータ要素に対して演算を実行させるタイプの命令を指す。SIMD技術は、レジスタ内のビットを複数の固定サイズ又は可変サイズのデータ要素に論理的に分割することができるプロセッサにおいて用いることができる。分割されたデータ要素のそれぞれは、別々の値を表す。例えば、1つの実施形態では、64ビットレジスタ内のビットを、4つの別々の16ビットデータ要素を含むソースオペランドとして編成することができる。これらの16ビットデータ要素のそれぞれは、別々の16ビット値を表す。このタイプのデータは、パックドデータタイプ又はベクトルデータタイプと呼ばれる場合があり、このデータタイプのオペランドは、パックドデータオペランド又はベクトルオペランドと呼ばれる。1つの実施形態では、パックドデータ項目又はベクトルは、単一のレジスタ内にストアされる一続きのパックドデータ要素とすることができ、パックドデータオペランド又はベクトルオペランドは、SIMD命令又はパックドデータ命令若しくはベクトル命令のソースオペランド又はデスティネーションオペランドとすることができる。1つの実施形態では、SIMD命令は、2つのソースベクトルオペランドに対して実行されて、同じ又は異なる数のデータ要素を有するとともに同じ又は異なるデータ要素順序にある同じ又は異なるサイズのデスティネーションベクトルオペランド結果ベクトルオペランドとも呼ばれるを生成する単一のベクトル演算を指定する。x86命令、MMX商標命令、ストリーミングSIMD拡張SSE命令、SSE2命令、SSE3命令、SSE4.1命令、及びSSE4.2命令を含む命令セットを有するIntel登録商標Core商標プロセッサと、ベクトル浮動小数点VFP命令及び/又はNEON命令を含む命令セットを有するARMCortex登録商標ファミリーのプロセッサ等のARMプロセッサと、中国科学アカデミーのコンピューティング技術協会ICTによって開発されたLoongsonファミリーのプロセッサ等のMIPSプロセッサによって用いられるようなSIMD技術は、アプリケーション性能の大幅な改善を可能にしたCore商標及びMMX商標は、カリフォルニア州サンタクララのIntelCorporation社の登録商標又は商標である。1つの実施形態では、デスティネーションレジスタ/データ及びソースレジスタ/データは、対応するデータ又は演算のソース及びデスティネーションを表す一般的な用語である。幾つかの実施形態では、これらのレジスタ/データは、描写するもの以外の名称又は機能を有するレジスタ、メモリ、又は他の記憶エリアによって実施することができる。例えば、1つの実施形態では、DEST1は、一時的な記憶レジスタ又は他の記憶エリアとすることができるのに対して、SRC1及びSRC2は、第1のソース記憶レジスタ及び第2のソース記憶レジスタ又は他の記憶エリアとすることができ、他のものについても同様である。他の実施形態では、SRC記憶エリア及びDEST記憶エリアのうちの2つ以上のものは、同じ記憶エリア例えば、SIMDレジスタ内の異なるデータ記憶要素に対応することができる。1つの実施形態では、ソースレジスタのうちの1つは、例えば、第1のソースデータ及び第2のソースデータに対して実行される演算の結果を、デスティネーションレジスタとしての機能を果たす、これらの2つのソースレジスタうちの一方にライトバックすることによって、デスティネーションレジスタとしても機能することができる。図1Aは、本発明の1つの実施形態による、命令を実行する実行ユニットを備えるプロセッサを用いて形成された一例示のコンピューターシステムのブロック図である。システム100は、本明細書で説明する実施形態におけるように、本発明による、ロジックを備える実行ユニットを用いて、データを処理するためのアルゴリズムを実行するプロセッサ102等の構成要素を備える。システム100は、カリフォルニア州サンタクララのIntelCorporation社から入手可能なPENTIUM登録商標IIIマイクロプロセッサ、PENTIUM登録商標4マイクロプロセッサ、Xeon商標マイクロプロセッサ、Itanium登録商標マイクロプロセッサ、XScale商標マイクロプロセッサ、及び/又はStrongARM商標マイクロプロセッサに基づく処理システムを表すが、他のシステム他のマイクロプロセッサを有するPC、エンジニアリングワークステーション、セットトップボックス等を含むも用いることができる。1つの実施形態では、サンプルシステム100は、ワシントン州レドモンドのMicrosoft社から入手可能なWINDOWS登録商標オペレーティングシステムの或るバージョンを実行することができるが、他のオペレーティングシステム例えば、UNIX登録商標及びLinux登録商標、組み込みソフトウェア、及び/又はグラフィカルユーザーインターフェースも用いることができる。したがって、本発明の実施形態は、ハードウェア回路部及びソフトウェアのどの特定の組み合わせにも限定されるものではない。実施形態は、コンピューターシステムに限定されるものではない。本発明の代替の実施形態は、ハンドヘルドデバイス及び組み込みアプリケーション等の他のデバイスにおいて用いることができる。ハンドヘルドデバイスの幾つかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末PDA、及びハンドヘルドPCが含まれる。組み込みアプリケーションは、マイクロコントローラー、デジタル信号プロセッサDSP、システムオンチップ、ネットワークコンピューターNetPC、セットトップボックス、ネットワークハブ、ワイドエリアネットワークWANスイッチ、又は少なくとも1つの実施形態による1つ若しくは複数の命令を実行することができる他の任意のシステムを含むことができる。図1Aは、本発明の1つの実施形態による少なくとも1つの命令を実行するアルゴリズを実行する1つ又は複数の実行ユニット108を備えるプロセッサ102を用いて形成されたコンピューターシステム100のブロック図である。1つの実施形態は、単一プロセッサのデスクトップシステム又はサーバーシステムに関して説明することができるが、代替の実施形態をマルチプロセッサシステムに含めることができる。システム100は、ハブシステムアーキテクチャの一例である。コンピューターシステム100は、データ信号を処理するプロセッサ102を備える。プロセッサ102は、複合命令セットコンピューターCISCマイクロプロセッサ、縮小命令セットコンピューティングRISCマイクロプロセッサ、超長命令語VLIWマイクロプロセッサ、命令セットの組み合わせを実装するプロセッサ、又は例えばデジタル信号プロセッサ等の他の任意のプロセッサデバイスとすることができる。プロセッサ102は、プロセッサ102とシステム100内の他の構成要素との間でデータ信号を伝送することができるプロセッサバス110に結合される。システム100の要素は、当該技術に精通している者によく知られているそれらの要素の通常の機能を実行する。1つの実施形態では、プロセッサ102は、レベル1L1内部キャッシュメモリ104を備える。アーキテクチャに応じて、プロセッサ102は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有することができる。代替的に、別の実施形態では、キャッシュメモリは、プロセッサ102の外部に存在することができる。他の実施形態は、特定の実施態様及びニーズに応じて内部キャッシュ及び外部キャッシュの双方の組み合わせも備えることができる。レジスタファイル106は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、及び命令ポインターレジスタを含む様々なレジスタに異なるタイプのデータをストアすることができる。整数演算及び浮動小数点演算を実行するロジックを備える実行ユニット108も、プロセッサ102に存在する。プロセッサ102は、或る特定のマクロ命令用のマイクロコードμコードをストアするマイクロコードROMも備える。1つの実施形態について、実行ユニット108は、パックド命令セット109をハンドリングするロジックを備える。パックド命令セット109を、それらの命令を実行する関連回路部とともに汎用プロセッサ102の命令セットに含めることによって、多くのマルチメディアアプリケーションによって用いられる演算は、汎用プロセッサ102内のパックドデータを用いて実行することができる。したがって、パックドデータに対して演算を実行するためにプロセッサのデータバスの全幅を用いることによって、多くのマルチメディアアプリケーションを高速化することができるとともに、より効率的に実行することができる。これによって、1つのデータ要素に対して一時に1つ又は複数の演算を実行するためにプロセッサのデータバスにわたってより小さなデータの単位を転送する必要が無くなる。実行ユニット108の代替の実施形態は、マイクロコントローラー、組み込みプロセッサ、グラフィックスデバイス、DSP、及び他のタイプのロジック回路において用いことができる。システム100はメモリ120を備える。メモリ120は、ダイナミックランダムアクセスメモリDRAMデバイス、スタティックランダムアクセスメモリSRAMデバイス、フラッシュメモリデバイス、又は他のメモリデバイスとすることができる。メモリ120は、プロセッサ102が実行することができる命令及び/又はデータ信号によって表されるデータをストアすることができる。システムロジックチップ116は、プロセッサバス110及びメモリ120に結合されている。図示した実施形態におけるシステムロジックチップ116は、メモリコントローラーハブMCHである。プロセッサ102は、プロセッサバス110を介してMCH116に通信することができる。MCH116は、命令及びデータのストア、並びにグラフィックスコマンド、グラフィックスデータ、及びグラフィックステクスチャのストアのためのメモリ120への高帯域幅メモリパス118を提供する。MCH116は、システム100内のプロセッサ102、メモリ120、及び他の構成要素の間でデータ信号を誘導するとともに、プロセッサバス110、メモリ120、及びシステムI/O122の間でデータ信号をブリッジするためのものである。幾つかの実施形態では、システムロジックチップ116は、グラフィックスコントローラー112に結合するためのグラフィックスポートを提供することができる。MCH116は、メモリインターフェース118を通じてメモリ120に結合されている。グラフィックスカード112は、アクセラレーテッドグラフィックスポートAGP相互接続114を通じてMCH116に結合されている。システム100は、独自のハブインターフェースバス122を用いて、MCH116をI/OコントローラーハブICH130に結合する。ICH130は、ローカルI/Oバスを介して幾つかのI/Oデバイスに直接接続を提供する。このローカルI/Oバスは、周辺装置をメモリ120、チップセット、及びプロセッサ102に接続するための高速I/Oバスである。幾つかの例は、オーディオコントローラー、ファームウェアハブフラッシュBIOS128、無線送受信機126、データ記憶装置124、ユーザー入力インターフェース及びキーボードインターフェースを含むレガシーI/Oコントローラー、ユニバーサルシリアルバスUSB等のシリアル拡張ポート、並びにネットワークコントローラー134である。データ記憶デバイス124は、ハードディスクドライブ、フロッピー登録商標ディスクドライブ、CD-ROMデバイス、フラッシュメモリデバイス、又は他のマスストレージデバイスを含むことができる。システムの別の実施形態では、1つの実施形態による命令は、システムオンチップとともに用いることができる。システムオンチップの1つの実施形態は、プロセッサ及びメモリから構成される。1つのそのようなシステム用のメモリはフラッシュメモリである。フラッシュメモリは、プロセッサ及び他のシステム構成要素と同じダイ上に配置することができる。加えて、メモリコントローラー又はグラフィックスコントローラー等の他のロジックブロックも、システムオンチップ上に配置することができる。図1Bは、本発明の1つの実施形態の原理を実施するデータ処理システム140を示している。本明細書において説明する実施形態は、本発明の実施形態の範囲から逸脱することなく代替の処理システムとともに用いることができることが当業者によって容易に認識されるであろう。コンピューターシステム140は、1つの実施形態による少なくとも1つの命令を実行することができる処理コア159を備える。1つの実施形態では、処理コア159は、任意のタイプのアーキテクチャの処理ユニットを表す。この任意のタイプのアーキテクチャには、CISCタイプ、RISCタイプ、又はVLIWタイプのアーキテクチャが含まれるが、これらに限定されるものではない。処理コア159は、1つ又は複数のプロセス技術における製造に好適な場合もあり、機械可読媒体上で十分詳細に表現されることによって上記製造を容易にするのに好適な場合もある。処理コア159は、実行ユニット142、一組のレジスタファイル複数の場合もある145、及びデコーダー144を備える。処理コア159は、本発明の実施形態の理解には必要でない追加の回路部図示せずも備える。実行ユニット142は、処理コア159によって受信された命令を実行するのに用いられる。実行ユニット142は、通常のプロセッサ命令を実行することに加えて、パックドデータフォーマットに対して演算を実行するためのパックド命令セット143内の命令を実行することができる。パックド命令セット143は、本発明の実施形態を実行するための命令と、他のパックド命令とを含む。実行ユニット142は、内部バスによってレジスタファイル145に結合されている。レジスタファイル145は、データを含む情報をストアするための処理コア159上の記憶エリアを表す。前述したように、パックドデータをストアするのに用いられる記憶エリアは重要ではないことが理解される。実行ユニット142は、デコーダー144に結合されている。デコーダー144は、処理コア159によって受信された命令を制御信号及び/又はマイクロコードエントリーポイントにデコードするのに用いられる。これらの制御信号及び/又はマイクロコードエントリーポイントに応答して、実行ユニット142は適切な演算を実行する。1つの実施形態では、デコーダーは、命令の演算コードを解釈するのに用いられる。この演算コードは、命令内に示された対応するデータに対してどのような演算を実行すべきかを示す。処理コア159は、様々な他のシステムデバイスと通信するためのバス141と結合されている。これらの様々な他のシステムデバイスは、例えば、同期式ダイナミックランダムアクセスメモリSDRAM制御部146、スタティックランダムアクセスメモリSRAM制御部147、バーストフラッシュメモリインターフェース148、パーソナルコンピューターメモリカード国際協会PCMCIA/コンパクトフラッシュ登録商標CFカード制御部149、液晶ディスプレイLCD制御部150、ダイレクトメモリアクセスDMAコントローラー151、及び代替のバスマスターインターフェース152を含むことができるが、これらに限定されるものではない。1つの実施形態では、データ処理システム140は、I/Oバス153を介して様々なI/Oデバイスと通信するためのI/Oブリッジ154も備えることができる。そのようなI/Oデバイスは、例えば、ユニバーサル非同期受信機/送信機UART155、ユニバーサルシリアルバスUSB156、Bluetooth登録商標無線UART157、及びI/O拡張インターフェース158を含むことができるが、これらに限定されるものではない。データ処理システム140の1つの実施形態は、移動通信、ネットワーク通信及び/又は無線通信と、テキスト文字列比較演算を含むSIMD演算を実行することができる処理コア159とを提供する。処理コア159は、様々なオーディオアルゴリズム、ビデオアルゴリズム、画像化アルゴリズム、及び通信アルゴリズムを用いてプログラムすることができる。これらのアルゴリズムには、ウォルシュアダマール変換、高速フーリエ変換FFT、離散コサイン変換DCT、及びそれらのそれぞれの逆変換等の離散変換と、色空間変換、ビデオエンコード動き推定又はビデオデコード動き補償等の圧縮/伸長技法と、パルス符号変調PCM等の変調/復調MODEM機能とが含まれる。図1Cは、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する命令を実行することができるデータ処理システムの別の代替の実施形態を示している。1つの代替の実施形態によれば、データ処理システム160は、メインプロセッサ166、SIMDコプロセッサ161、キャッシュメモリ167、及び入力/出力システム168を備えることができる。入力/出力システム168は、任意選択で無線インターフェース169に結合することができる。SIMDコプロセッサ161は、1つの実施形態による命令を含む演算を実行することができる。処理コア170は、1つ又は複数のプロセス技術における製造に好適な場合があり、機械可読媒体上で十分詳細に表現されることによって、処理コア170を備えるデータ処理システム160の全て又は一部の製造を容易にするのに好適な場合がある。1つの実施形態について、SIMDコプロセッサ161は、実行ユニット162及び一組のレジスタファイル複数の場合もある164を備える。メインプロセッサ166の1つの実施形態は、実行ユニット162による実行のために1つの実施形態による命令を含む命令セット163の命令を認識するデコーダー165を備える。代替の実施形態について、SIMDコプロセッサ161は、命令セット163の命令をデコードするデコーダーの少なくとも一部165Bも備える。処理コア170は、本発明の実施形態の理解に必要でない追加の回路部図示せずも備える。動作中、メインプロセッサ166は、キャッシュメモリ167及び入力/出力システム168とのインタラクションを含む一般的なタイプのデータ処理演算を制御するデータ処理命令のストリームを実行する。このデータ処理命令のストリーム内には、SIMDコプロセッサ命令が組み込まれている。メインプロセッサ166のデコーダー165は、これらのSIMDコプロセッサ命令を、アタッチされたSIMDコプロセッサ161によって実行されるべきタイプであるとして認識する。したがって、メインプロセッサ166は、これらのSIMDコプロセッサ命令又はSIMDコプロセッサ命令を表す制御信号をコプロセッサバス171上に発行する。このコプロセッサバスから、これらのSIMDコプロセッサ命令は、任意のアタッチされたSIMDコプロセッサによって受信される。この場合、SIMDコプロセッサ161は、当該SIMDコプロセッサ用の任意の受信されたSIMDコプロセッサ命令を受け取って実行する。データは、SIMDコプロセッサ命令による処理のために、無線インターフェース169を介して受信することができる。1つの例として、音声通信をデジタル信号の形で受信することができ、このデジタル信号は、SIMDコプロセッサ命令によって処理されて、音声通信を表すデジタルオーディオサンプルを再生成することができる。別の例として、圧縮されたオーディオ及び/又はビデオを、デジタルビットストリームの形で受信することができ、このデジタルビットストリームは、SIMDコプロセッサ命令によって処理されて、デジタルオーディオサンプル及び/又は動画ビデオフレームを再生成することができる。処理コア170の1つの実施形態について、メインプロセッサ166及びSIMDコプロセッサ161は、実行ユニット162と、一組のレジスタファイル複数の場合もある164と、1つの実施形態による命令を含む命令セット163の命令を認識するデコーダー165とを備える単一の処理コア170内に統合される。図2は、本発明の1つの実施形態による命令を実行するロジック回路を備えるプロセッサ200のマイクロアーキテクチャのブロック図である。幾つかの実施形態では、1つの実施形態による命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズと、単精度及び倍精度の整数及び浮動小数点のデータタイプ等のデータタイプとを有するデータ要素に対して演算するように実施することができる。1つの実施形態では、インオーダーフロントエンド201は、実行される命令をフェッチし、それらの命令をプロセッサパイプラインにおいて後に用いられるように準備するプロセッサ200の部分である。このフロントエンド201は、幾つかのユニットを備えることができる。1つの実施形態では、命令プリフェッチャー226がメモリから命令をフェッチし、これらの命令を命令デコーダー228に供給し、次に、この命令デコーダーが、これらの命令をデコード又は解釈する。例えば、1つの実施形態では、デコーダーは、受信された命令を、機械が実行することができるマイクロ命令又はマイクロ演算マイクロop又はμopとも呼ばれると呼ばれる1つ又は複数の演算にデコードする。他の実施形態では、デコーダーは、命令を演算コード及び対応するデータと、1つの実施形態による演算を実行するマイクロアーキテクチャによって用いられる制御フィールドとにパースparseする。1つの実施形態では、トレースキャッシュ230は、デコードされたμopを取り出し、それらを実行のためにμopキュー234内のプログラム順序付きシーケンス又はトレースにアセンブルする。トレースキャッシュ230が複合命令に遭遇すると、マイクロコードROM232は、演算を完了するのに必要とされるμopを提供する。命令の中には、単一のマイクロopに変換されるものもあれば、全演算を完了するのに数個のマイクロopを必要とするものもある。1つの実施形態では、命令を完了するのに5つ以上のマイクロopが必要とされる場合、デコーダー228は、マイクロコードROM232にアクセスして命令を行う。1つの実施形態について、命令は、命令デコーダー228における処理のために少数のマイクロopにデコードすることができる。別の実施形態では、複数のマイクロopが演算を達成するのに必要とされる場合、命令をマイクロコードROM232内にストアすることができる。トレースキャッシュ230は、エントリーポイントプログラマブルロジックアレイPLAを参照して、1つの実施形態による1つ又は複数の命令を完了するマイクロコードシーケンスをマイクロコードROM232から読み出すための正しいマイクロ命令ポインターを決定する。マイクロコードROM232が、命令用のマイクロopのシーケンス化を終了した後、機械のフロントエンド201は、トレースキャッシュ230からのマイクロopのフェッチを再開する。アウトオブオーダー実行エンジン203は、命令が実行用に準備される箇所である。アウトオブオーダー実行ロジックは、命令が実行のためにパイプラインを進んでスケジューリングされるとき、命令の流れの円滑化及びリオーダ―を行って性能を最適化する複数のバッファーを有する。アロケーターロジックは、各μopが実行に必要とする機械バッファー及びリソースをアロケートする。レジスタリネーミングロジックは、ロジックレジスタをリネームしてレジスタファイル内のエントリー上に置く。アロケーターは、命令スケジューラの前に、メモリ演算用に1つと非メモリ演算用に1つとの2つのμopキューのうちの一方に各μopのエントリーもアロケートする。上記命令スケジューラは、メモリスケジューラ、高速スケジューラ202、低速/一般浮動小数点スケジューラ204、及び単純浮動小数点スケジューラ206である。μopスケジューラ202、204、206は、μopが実行の準備がいつできるのかを、それらの従属する入力レジスタオペランドソースの準備ができていることと、μopがそれらの演算を完了する必要がある実行リソースが利用可能であることとに基づいて判断する。1つの実施形態の高速スケジューラ202は、メインクロックサイクルの各2分の1においてスケジューリングすることができる一方、他のスケジューラは、メインプロセッサクロックサイクルごとに1回のみスケジューリングすることができる。これらのスケジューラは、μopを実行のためにスケジューリングするディスパッチポートをアービトレートする。レジスタファイル208、210は、スケジューラ202、204、206と、実行ブロック211内の実行ユニット212、214、216、218、220、222、224との間に位置している。それぞれ整数演算用及び浮動小数点演算用の別々のレジスタファイル208、210が存在する。1つの実施形態の各レジスタファイル208、210は、レジスタファイル内にまだ書き込まれていない完了したばかりの結果を従属する新たなμopにバイパス又は転送することができるバイパスネットワークも備える。整数レジスタファイル208及び浮動小数点レジスタファイル210は、互いとのデータの通信も行うことができる。1つの実施形態について、整数レジスタファイル208は、下位32ビットのデータ用の1つのレジスタファイルと、上位32ビットのデータ用の第2のレジスタファイルとの2つの別々のレジスタファイルに分割される。1つの実施形態の浮動小数点レジスタファイル210は、128ビット幅エントリーを有する。なぜならば、浮動小数点命令は、通常、幅が64ビット~128ビットのオペランドを有するからである。実行ブロック211は、命令が実際に実行される実行ユニット212、214、216、218、220、222、224を含む。このセクションは、マイクロ命令が実行に必要とする整数データオペランド値及び浮動小数点データオペランド値をストアするレジスタファイル208、210を備える。1つの実施形態のプロセッサ200は、アドレス生成ユニットAGU212、AGU214、高速ALU216、高速ALU218、低速ALU220、浮動小数点ALU222、浮動小数点ムーブユニット224の複数の実行ユニットから構成される。1つの実施形態について、浮動小数点実行ブロック222、224は、浮動小数点演算、MMX演算、SIMD演算、SSE演算、又は他の演算を実行する。1つの実施形態の浮動小数点ALU222は、除算マイクロop、平方根マイクロop、及び剰余マイクロopを実行する64ビット対64ビットの浮動小数点除算器を備える。本発明の実施形態について、浮動小数点値を伴う命令は、浮動小数点ハードウェアを用いてハンドリングすることができる。1つの実施形態では、ALU演算は、高速ALU実行ユニット216、218に進む。1つの実施形態の高速ALU216、218は、クロックサイクルの2分の1の実効レイテンシーを有する高速演算を実行することができる。1つの実施形態について、ほとんどの複雑な整数演算は、低速ALU220に進む。なぜならば、低速ALU220は、乗算器、シフト、フラグロジック、及び分岐処理等の長いレイテンシータイプの演算用の整数実行ハードウェアを備えるからである。メモリロード/ストア演算は、AGU212、214によって実行される。1つの実施形態について、整数ALU216、218、220は、64ビットデータオペランドに対する整数演算の実行に関して説明される。代替の実施形態では、ALU216、218、220は、16ビット、32ビット、128ビット、256ビット等を含む様々なデータビットをサポートするように実装することができる。同様に、浮動小数点ユニット222、224は、様々な幅のビットを有するオペランドの範囲をサポートするように実装することができる。1つの実施形態について、浮動小数点ユニット222、224は、SIMD命令及びマルチメディア命令とともに128ビット幅のパックドデータオペランドに対して演算を行うことができる。1つの実施形態では、μopスケジューラ202、204、206は、親ロードが実行を終了する前に従属演算をディスパッチする。μopは、推測でスケジューリングされてプロセッサ200において実行されるので、プロセッサ200は、メモリミスをハンドリングするロジックも備える。データロードがデータキャッシュにおいて失敗した場合、一時的に正しくないデータをスケジューラに残した従属演算がパイプラインにおいてインフライトである可能性がある。リプレイメカニズムが、正しくないデータを用いる命令を追跡して再実行する。従属演算のみをリプレイする必要があり、独立演算は完了することが可能である。プロセッサの1つの実施形態のスケジューラ及びリプレイメカニズムは、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する命令を捕捉するようにも設計される。レジスタという用語は、オペランドを識別する命令の一部として用いられるオンボードプロセッサ記憶ロケーションを指すことができる。換言すれば、レジスタは、プログラマーからの視点からプロセッサの外部から使用可能なものとすることができる。しかしながら、一実施形態のレジスタは、意味が特定のタイプの回路に限定されるべきではない。逆に、一実施形態のレジスタは、データをストア及び提供することができるとともに、本明細書において説明する機能を実行することができる。本明細書において説明するレジスタは、専用の物理レジスタ、レジスタリネーミングを用いた動的にアロケートされた物理レジスタ、専用の物理レジスタ及び動的にアロケートされた物理レジスタの組み合わせ等の任意の数の異なる技法を用いてプロセッサ内の回路部によって実装することができる。1つの実施形態では、整数レジスタは、32ビット整数データをストアする。1つの実施形態のレジスタファイルは、パックドデータ用の8つのマルチメディアSIMDレジスタも含む。以下の議論のために、レジスタは、カリフォルニア州サンタクララのIntelCorporation社からのMMX技術を用いて可能にされるマイクロプロセッサ内の64ビット幅MMX商標レジスタ場合によっては、mmレジスタとも呼ばれる等の、パックドデータを保持するように設計されたデータレジスタであると理解される。整数及び浮動小数点の双方の形で利用可能なこれらのMMXレジスタは、SIMD命令及びSSE命令に付随するパックドデータ要素を用いて動作することができる。同様に、SSE2、SSE3、SSE4、又はこれ以降の技術SSExと総称されるに関係した128ビット幅XMMレジスタも、そのようなパックドデータオペランドを保持するのに用いることができる。1つの実施形態では、パックドデータ及び整数データをストアする際に、レジスタは、2つのデータタイプを区別する必要はない。1つの実施形態では、整数及び浮動小数点は、同じレジスタファイル又は異なるレジスタファイルのいずれかに含まれる。さらに、1つの実施形態では、浮動小数点データ及び整数データは、異なるレジスタ又は同じレジスタにストアすることができる。次の図の例では、複数のデータオペランドが説明される。図3Aは、本発明の1つの実施形態によるマルチメディアレジスタ内の様々なパックドデータタイプ表現を示している。図3Aは、パックドバイト310、パックドワード320、及び128ビット幅オペランド用のパックドダブルワードdword330のデータタイプを示している。この例のパックドバイトフォーマット310は、128ビット長であり、16個のパックドバイトデータ要素を含む。バイトは、ここでは、データの8ビットとして定義されている。各バイトデータ要素の情報は、バイト0用のビット7~ビット0、バイト1用のビット15~ビット8、バイト2用のビット23~ビット16、及び最後にバイト15用のビット120~ビット127にストアされる。したがって、利用可能な全てのビットがレジスタ内で用いられる。この記憶配置は、プロセッサの記憶効率を高める。その上、16個のデータ要素がアクセスされる場合、1つの演算を16個のデータ要素に対して並列に実行することができる。一般に、データ要素は、同じ長さの他のデータ要素とともに単一のレジスタ又はメモリロケーションにストアされる個々のデータ片である。SSEx技術に関係したパックドデータシーケンスでは、XMMレジスタにストアされるデータ要素の数は、128ビットを個々のデータ要素のビット長によって除算したものである。同様に、MMX及びSSE技術に関係したパックドデータシーケンスでは、MMXレジスタにストアされるデータ要素の数は、64ビットを個々のデータ要素のビット長によって除算したものである。図3Aに示すデータタイプは、128ビット長であるが、本発明の実施形態は、64ビット幅、256ビット幅、512ビット幅、又は他のサイズのオペランドを用いて演算することもできる。この例のパックドワードフォーマット320は、128ビット長であり、8つのパックドワードデータ要素を含む。各パックドワードは、16ビットの情報を含む。図3Aのパックドダブルワードフォーマット330は、128ビット長であり、4つのパックドダブルワードデータ要素を含む。各パックドダブルワードデータ要素は、32ビットの情報を含む。パックドクワッドワードは、128ビット長であり、2つのパックドクワッドワードデータ要素を含む。図3Bは、代替のレジスタ内データ記憶フォーマットを示している。各パックドデータは、2つ以上の独立データ要素を含むことができる。パックドハーフ341、パックドシングル342、及びパックドダブル343の3つのパックドデータフォーマットが示されている。パックドハーフ341、パックドシングル342、及びパックドダブル343の1つの実施形態は、固定小数点データ要素を含む。代替の実施形態について、パックドハーフ341、パックドシングル342、及びパックドダブル343のうちの1つ又は複数は、浮動小数点データ要素を含むことができる。パックドハーフ341の1つの代替の実施形態は、8つの16ビットデータ要素を含む128ビット長である。パックドシングル342の1つの実施形態は、128ビット長であり、4つの32ビットデータ要素を含む。パックドダブル343の1つの実施形態は、128ビット長であり、2つの64ビットデータ要素を含む。そのようなパックドデータフォーマットは、他のレジスタ長、例えば、96ビット、160ビット、192ビット、224ビット、256ビット、512ビット、又はそれよりも長いビットに更に拡張することができることが認識されるであろう。図3Cは、本発明の1つの実施形態によるマルチメディアレジスタにおける様々な符号付きパックドデータタイプ及び符号なしパックドデータタイプ表現を示している。符号なしパックドバイト表現344は、SIMDレジスタ内で記憶されている符号なしパックドバイトを示している。各バイトデータ要素の情報は、バイト0用のビット7~ビット0、バイト1用のビット15~ビット8、バイト2用のビット23~ビット16等、及び最後にバイト15用のビット120~ビット127にストアされる。したがって、利用可能な全てのビットがレジスタ内で用いられる。この記憶配置は、プロセッサの記憶効率を高める。その上、16個のデータ要素がアクセスされる場合、1つの演算を16個のデータ要素に対して並列形式で実行することができる。符号付きパックドバイト表現345は、記憶されている符号付きパックドバイトを示している。各バイトのデータ要素の第8ビットが符号指示子であることに留意されたい。符号なしパックドワード表現346は、ワード7~ワード0がSIMDレジスタにどのようにストアされているのかを示している。符号付きパックドワード表現347は、符号なしパックドワードレジスタ内表現346と類似している。各ワードのデータ要素の第16ビットが符号指示子であることに留意されたい。符号なしパックドダブルワード表現348は、ダブルワードデータ要素がどのようにストアされているのかを示している。符号付きパックドダブルワード表現349は、符号なしパックドダブルワードレジスタ内表現348と類似している。必要な符号ビットは、各ダブルワードデータ要素の第32ビットであることに留意されたい。図3Dは、32ビット以上と、ワールドワイドウェブwwwのintelcomproductsprocessormanualsにおいてカリフォルニア州サンタクララのIntelCorporation社から入手可能なIntel64andIA32IntelArchitectureSoftwareDevelopersManualCombinedVolumes2Aand2BInstructionSetReferenceAZに記載されているタイプの演算コードフォーマットと一致するレジスタ/メモリオペランドアドレス指定モードとを有する演算エンコーディング演算コードフォーマット360の1つの実施形態の図である。1つの実施形態では、命令は、フィールド361及び362のうちの1つ又は複数によってエンコーディングすることができる。最大で2つのソースオペランド識別子364及び365を含む、命令当たり最大で2つのオペランドロケーションを識別することができる。1つの実施形態について、デスティネーションオペランド識別子366は、ソースオペランド識別子364と同じであるのに対して、他の実施形態では、それらは異なる。代替の実施形態について、デスティネーションオペランド識別子366は、ソースオペランド識別子365と同じであるのに対して、他の実施形態では、それらは異なる。1つの実施形態では、ソースオペランド識別子364及び365によって識別されるソースオペランドのうちの一方は、命令の結果によって上書きされるのに対して、他の実施形態では、識別子364は、ソースレジスタ要素に対応し、識別子365は、デスティネーションレジスタ要素に対応する。1つの実施形態について、オペランド識別子364及び365は、32ビット又は64ビットのソースオペランド及びデスティネーションオペランドを識別するのに用いることができる。図3Eは、40ビット以上を有する別の代替の演算エンコーディング演算コードフォーマット370の図である。演算コードフォーマット370は、演算コードフォーマット360と一致し、オプションのプレフィックスバイト378を含む。1つの実施形態による命令は、フィールド378、371、及び372のうちの1つ又は複数によってエンコーディングすることができる。命令当たり最大で2つのオペランドロケーションをソースオペランド識別子374及び375並びにプレフィックスバイト378によって識別することができる。1つの実施形態について、プレフィックスバイト378は、32ビット又は64ビットのソースオペランド及びデスティネーションオペランドを識別するのに用いることができる。1つの実施形態について、デスティネーションオペランド識別子376は、ソースオペランド識別子374と同じであるのに対して、他の実施形態では、それらは異なる。代替の実施形態について、デスティネーションオペランド識別子376は、ソースオペランド識別子375と同じであるのに対して、他の実施形態では、それらは異なる。1つの実施形態では、命令は、オペランド識別子374及び375によって識別されるオペランドのうちの1つ又は複数に対して演算し、オペランド識別子374及び375によって識別される1つ又は複数のオペランドが、命令の結果によって上書きされるのに対して、他の実施形態では、識別子374及び375によって識別されるオペランドは、別のレジスタ内の別のデータ要素に書き込まれる。演算コードフォーマット360及び370によって、MODフィールド363及び373並びにオプションのスケールインデックスベースscaleindexbase及び変位バイトによって部分的に指定された、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリのアドレス指定が可能になる。次に図3Fを参照すると、幾つかの代替の実施形態では、64ビット又は128ビット、若しくは256ビット、若しくは512ビット、若しくはそれよりも多くのビットの単一命令複数データSIMD算術演算を、コプロセッサデータ処理CDP命令を通じて実行することができる。演算エンコーディング演算コードフォーマット380は、CDP演算コードフィールド382及び389を有する1つのそのようなCDP命令を示している。このタイプのCDP命令、代替の実施形態の場合CDP演算は、フィールド383、384、387、及び388のうちの1つ又は複数によってエンコーディングすることができる。最大で2つのソースオペランド識別子385及び390並びに1つのデスティネーションオペランド識別子386を含む、命令当たり最大で3つのオペランドロケーションを識別することができる。コプロセッサの1つの実施形態は、8ビット値、16ビット値、32ビット値、及び64ビット値に対して演算することができる。1つの実施形態について、命令は、整数データ要素に対して実行される。幾つかの実施形態では、命令は、条件フィールド381を用いて条件付きで実行することができる。幾つかの実施形態について、ソースデータサイズをフィールド383によってエンコーディングすることができる。幾つかの実施形態では、ゼロZ、負N、キャリーC、及びオーバーフローVの検出をSIMDフィールド上で行うことができる。幾つかの命令については、飽和のタイプをフィールド384によってエンコーディングすることができる。次に図3Gを参照すると、ワールドワイドウェブwwwのintelcomproductsprocessormanualsにおいてカリフォルニア州サンタクララのIntelCorporation社から入手可能なIntelAdvancedVectorExtensionsProgrammingReferenceに記載されているタイプの演算コードフォーマットと一致する別の実施形態によるベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する別の代替の演算エンコーディング演算コードフォーマット397の図が示されている。オリジナルのx86命令セットは、その存在が最初の演算コードバイトから判明している付加バイトに含まれるアドレスシラブル及び即値オペランドの様々なフォーマットを有する1バイト演算コードを提供していた。加えて、演算コードに対する変更子命令の前に配置しなければならないので、プレフィックスと呼ばれるとして保存される或る特定のバイト値が存在していた。256個の演算コードバイトこれらの特殊なプレフィックス値を含むのオリジナルのパレットが使い尽くされると、単一のバイトが新たな一組の256個の演算コードへのエスケープとして専用化される。ベクトル命令例えば、SIMDが追加されたので、より多くの演算コードの必要性が生じ、2バイト演算コードマップも、プレフィックスを用いることによって拡張されても不十分となった。このため、2バイトに、オプションのプレフィックスを識別子として加えたものを用いる新たな命令が付加マップに追加された。加えて、64ビットモードで追加のレジスタの使用を容易にするために、プレフィックスと演算コード及び演算コードを決定するのに必要な任意のエスケープバイトとの間に追加のプレフィックスREXと呼ばれるを用いることができる。1つの実施形態では、REXは、64ビットモードでの追加のレジスタの使用を示す4つのペイロードビットを有することができる。他の実施形態では、REXは、4ビットよりも少ないビット又は4ビットよりも多くのビットを有することができる。少なくとも1つの命令セットの一般的なフォーマット一般にフォーマット360及び/又はフォーマット370と一致するは、一般的に以下によって示される。[プレフィックス][rex]エスケープ[エスケープ2]演算コードmodrm等演算コードフォーマット397は、演算コードフォーマット370と一致し、ほとんどの他の一般に用いられるレガシー命令プレフィックスバイト及びエスケープコードの代わりに用いられるオプションのVEXプレフィックスバイト3911つの実施形態ではC4hexから開始するを含む。例えば、以下は、2つのフィールドを用いて命令をエンコーディングする一実施形態を示している。これは、第2のエスケープコードがオリジナルの命令に存在するとき、又はREXフィールド内のエキストラビット例えば、XBフィールド及びWフィールドを用いる必要があるときに用いることができる。以下に示す実施形態では、レガシーエスケープが新たなエスケープ値によって表され、レガシープレフィックスがペイロードバイトの一部として十分に圧縮され、レガシープレフィックスが再利用され、今後の拡張用に利用可能であり、第2のエスケープコードが、今後のマップ又は特徴空間が利用可能であるマップフィールドに圧縮され、新たな特徴例えば、増大されたベクトル長及び追加のソースレジスタ指定子が追加される。1つの実施形態による命令は、フィールド391及び392のうちの1つ又は複数によってエンコーディングすることができる。フィールド391をソースオペランド識別子374及び375と組み合わせるとともに、オプションのスケールインデックスベースSIB識別子393、オプションの変位識別子394、及びオプションの即値バイト395と組み合わせることによって、命令当たり最大で4つのオペランドロケーションを識別することができる。1つの実施形態について、VEXプレフィックスバイト391は、32ビット若しくは64ビットのソースオペランド及びデスティネーションオペランド及び/又は128ビット若しくは256ビットのSIMDレジスタオペランド若しくはメモリオペランドを識別するのに用いることができる。1つの実施形態について、演算コードフォーマット397によって提供される機能は、演算コードフォーマット370と冗長である場合があるのに対して、他の実施形態では、それらは異なる。演算コードフォーマット370及び397によって、MODフィールド373、並びにオプションのSIB識別子393、オプションの変位識別子394、及びオプションの即値バイト395によって部分的に指定された、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリのアドレス指定が可能になる。次に図3Hを参照すると、別の実施形態によるベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する別の代替の演算エンコーディング演算コードフォーマット398が示されている。演算コードフォーマット398は、演算コードフォーマット370及び397と一致し、ほとんどの他の一般に用いられるレガシー命令プレフィックスバイト及びエスケープコードの代わりに用いられて追加の機能を提供するオプションのEVEXプレフィックスバイト3961つの実施形態では62hexから開始するを含む。1つの実施形態による命令は、フィールド396及び392のうちの1つ又は複数によってエンコーディングすることができる。フィールド396をソースオペランド識別子374及び375と組み合わせるとともに、オプションのスケールインデックスベースSIB識別子393、オプションの変位識別子394、及びオプションの即値バイト395と組み合わせることによって、命令当たり最大で4つのオペランドロケーション及びマスクを識別することができる。1つの実施形態について、EVEXプレフィックスバイト396は、32ビット若しくは64ビットのソースオペランド及びデスティネーションオペランド及び/又は128ビット、256ビット、若しくは512ビットのSIMDレジスタオペランド若しくはメモリオペランドを識別するのに用いることができる。1つの実施形態について、演算コードフォーマット398によって提供される機能は、演算コードフォーマット370又は397と冗長である場合があるのに対して、他の実施形態では、それらは異なる。演算コードフォーマット398によって、MODフィールド373、並びにオプションのSIB識別子393、オプションの変位識別子394、及びオプションの即値バイト395によって部分的に指定された、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリの、マスクを用いたアドレス指定が可能になる。少なくとも1つの命令セットの一般的なフォーマット一般にフォーマット360及び/又はフォーマット370と一致するは、一般的に以下によって示される。evexlRXBmmmmmWvvvLppevex4演算コードmodrm[sib][disp][imm]1つの実施形態について、EVEXフォーマット398に従ってエンコーディングされる命令は、例えば、ユーザー構成可能マスクレジスタ、又は追加のオペランド、又は128ビットベクトルレジスタ、256ビットベクトルレジスタ、若しくは512ビットベクトルレジスタ、若しくはより多くのレジスタの中から選択したもの等、追加の新たな特徴とともに、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供するのに用いることができる追加のペイロードビットを有することができる。例えば、暗黙的なマスクとともに、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供するのにVEXフォーマット397を用いることができる場合、又は追加の演算がタイプ変換等の単項である場合、追加の演算が、追加のオペランドを必要とする加算又は乗算等の2項である場合、EVEXフォーマット398は、明示的なユーザー構成可能マスクとともに、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供するのに用いることができる。追加の演算が3項である場合、EVEXフォーマット398の幾つかの実施形態は、ベクトル散乱演算機能及び/又はベクトル収集演算機能と、暗黙的な完了マスクとを提供するのに用いることもできる。加えて、VEXフォーマット397が、128ビット又は256ビットのベクトルレジスタ上でベクトル散乱演算機能及び/又はベクトル収集演算機能を提供するのに用いることができる場合、EVEXフォーマット398は、128ビット、256ビット、512ビット、又はそれよりも大きな又はそれよりも小さなベクトルレジスタ上でベクトル散乱演算機能及び/又はベクトル収集演算機能を提供するのに用いることができる。したがって、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する命令は、追加の演算用の命令と、データの収集又は散乱等のメモリ演算用の命令との間の従属関係をなくすことができる。ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する例示の命令を、以下の例によって示す。図4Aは、本発明の少なくとも1つの実施形態によるインオーダーパイプライン及びレジスタリネーミングステージアウトオブオーダー発行/実行パイプラインを示すブロック図である。図4Bは、本発明の少なくとも1つの実施形態によるプロセッサに含まれるインオーダーアーキテクチャコア及びレジスタリネーミングロジックアウトオブオーダー発行/実行ロジックを示すブロック図である。図4A内の実線のボックスは、インオーダーパイプラインを示す一方、破線のボックスは、レジスタリネーミングアウトオブオーダー発行/実行パイプラインを示す。同様に、図4B内の実線のボックスは、インオーダーアーキテクチャロジックを示す一方、破線のボックスは、レジスタリネーミングロジック及びアウトオブオーダー発行/実行ロジックを示す。図4Aにおいて、プロセッサパイプライン400は、フェッチステージ402、レングスデコードステージ404、デコードステージ406、アロケーションステージ408、リネーミングステージ410、スケジューリングディスパッチ又は発行としても知られているステージ412、レジスタ読み出し/メモリ読み出しステージ414、実行ステージ416、ライトバック/メモリ書き込みステージ418、例外ハンドリングステージ422、及びコミットステージ424を備える。図4Bにおいて、矢印は、2つ以上のユニット間の結合を示し、矢印の方向は、それらのユニット間のデータフローの方向を示す。図4Bは、実行エンジンユニット450に結合されたフロントエンドユニット430を備えるプロセッサコア490を示し、これらのフロントエンドユニット430及び実行エンジンユニット450の双方は、メモリユニット470に結合されている。コア490は、縮小命令セットコンピューティングRISCコア、複合命令セットコンピューティングCISCコア、超長命令語VLIWコア、又はハイブリッド若しくは代替のコアタイプとすることができる。更に別の選択肢として、コア490は、例えば、ネットワークコア若しくは通信コア、圧縮エンジン、グラフィックスコア等の専用コアとすることができる。フロントエンドユニット430は、命令キャッシュユニット434に結合された分岐予測ユニット432を備える。この命令キャッシュユニット434は、命令変換ルックアサイドバッファーTLB436に結合されている。このTLB436は、命令フェッチユニット438に結合されている。この命令フェッチユニット438は、デコードユニット440に結合されている。デコードユニット、すなわちデコーダーは、命令をデコードし、出力として1つ又は複数のマイクロ演算、マイクロコードエントリーポイント、マイクロ命令、他の命令、又は他の制御信号を生成することができる。これらは、オリジナルの命令からデコードされるか、又はオリジナルの命令を別の方法で反映しているか、又はオリジナルの命令から導出される。デコーダーは、様々な異なるメカニズムを用いて実施することができる。好適なメカニズムの例には、ルックアップテーブル、ハードウェア実施、プログラマブルロジックアレイPLA、マイクロコード読み出し専用メモリROM等が含まれるが、これらに限定されるものではない。命令キャッシュユニット434は、メモリユニット470内のレベル2L2キャッシュユニット476に更に結合されている。デコードユニット440は、実行エンジンユニット450内のリネーム/アロケーターユニット452に結合されている。実行エンジンユニット450は、リタイアメントユニット454に結合されたリネーム/アロケーターユニット452と、一組の1つ又は複数のスケジューラユニット456を備える。スケジューラユニット複数の場合もある456は、リザベーションステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット複数の場合もある456は、物理レジスタファイル複数の場合もあるユニット複数の場合もある458に結合されている。物理レジスタファイル複数の場合もあるユニット458のそれぞれは、1つ又は複数の物理レジスタファイルを表し、これらの物理レジスタファイルの異なるものは、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等の1つ又は複数の異なるデータタイプ、ステータス例えば、実行される次の命令のアドレスである命令ポインター等をストアする。レジスタリネーミング及びアウトオブオーダー実行を例えば、リオーダ―バッファー複数の場合もある及びリタイアメントレジスタファイル複数の場合もあるを用いるか、フューチャーファイル複数の場合もある、履歴バッファー複数の場合もある、及びリタイアメントレジスタファイル複数の場合もあるを用いるか、レジスタマップ及びレジスタのプールを用いる等して実施することができる様々な方法を示すために、物理レジスタファイル複数の場合もあるユニット複数の場合もある458は、リタイアメントユニット454によってオーバーラップされている。一般に、アーキテクチャレジスタは、プロセッサの外部又はプログラマーの視点から可視である。レジスタは、任意の既知の特定のタイプの回路に限定されるものではない。様々な異なるタイプのレジスタは、本明細書において説明するようなデータをストア及び提供することができる限り、好適である。好適なレジスタの例には、専用の物理レジスタ、レジスタリネーミングを用いて動的にアロケートされる物理レジスタ、専用の物理レジスタ及び動的にアロケートされる物理レジスタの組み合わせ等が含まれるが、これらに限定されるものではない。リタイアメントユニット454及び物理レジスタファイル複数の場合もあるユニット複数の場合もある458は、実行クラスター複数の場合もある460に結合されている。実行クラスター複数の場合もある460は、一組の1つ又は複数の実行ユニット462及び一組の1つ又は複数のメモリアクセスユニット464を備える。実行ユニット462は、様々なタイプのデータ例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点に対して様々な演算例えば、シフト、加算、減算、乗算を実行することができる。実施形態の中には、特定の機能又は機能のセットに専用の複数の実行ユニットを備えることができるものもあれば、全ての機能を全て実行する1つのみの実行ユニット又は複数の実行ユニットを備えることができるものもある。スケジューラユニット複数の場合もある456、物理レジスタファイル複数の場合もあるユニット複数の場合もある458、及び実行クラスター複数の場合もある460は、場合によっては複数のものとして示される。なぜならば、或る特定の実施形態は、或る特定のタイプのデータ/演算用に別々のパイプライン例えば、スカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はそれぞれがそれ自身のスケジューラユニット、物理レジスタファイル複数の場合もあるユニット、及び/又は実行クラスターを有するメモリアクセスパイプライン、並びに別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターのみがメモリアクセスユニット複数の場合もある464を有する或る特定の実施形態が実施されるを作製するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの1つ又は複数は、アウトオブオーダー発行/実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。一組のメモリアクセスユニット464は、メモリユニット470に結合されている。このメモリユニット470は、レベル2L2キャッシュユニット476に結合されたデータキャッシュユニット474に結合されたデータTLBユニット472を備える。1つの例示の実施形態では、メモリアクセスユニット464は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを備えることができ、これらのそれぞれは、メモリユニット470内のデータTLBユニット472に結合されている。L2キャッシュユニット476は、1つ又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。例として、例示のレジスタリネーミングアウトオブオーダー発行/実行コアアーキテクチャは、次のようにパイプライン400を実施することができる。1命令フェッチ438が、フェッチステージ402及びレングスデコードステージ404を実行し、2デコードユニット440がデコードステージ406を実行し、3リネーム/アロケーターユニット452がアロケーションステージ408及びリネーミングステージ410を実行し、4スケジューラユニット複数の場合もある456がスケジュールステージ412を実行し、5物理レジスタファイル複数の場合もあるユニット複数の場合もある458及びメモリユニット470がレジスタ読み出し/メモリ読み出しステージ414を実行し、実行クラスター460が実行ステージ416を実行し、6メモリユニット470及び物理レジスタファイル複数の場合もあるユニット複数の場合もある458がライトバック/メモリ書き込みステージ418を実行し、7様々なユニットが例外ハンドリングステージ422に関与することができ、8リタイアメントユニット454及び物理レジスタファイル複数の場合もあるユニット複数の場合もある458がコミットステージ424を実行する。コア490は、1つ又は複数の命令セット例えば、x86命令セットより新しいバージョンとともに追加された幾つかの拡張を有する、カリフォルニア州サニーベールのMIPSTechnologies社のMIPS命令セット、カリフォルニア州サニーベールのARMHoldings社のARM命令セットNEON等のオプションの追加拡張を有するをサポートすることができる。コアは、マルチスレッディング並列の2以上の組の演算又はスレッドを実行するをサポートすることができ、タイムスライスされたマルチスレッディング、同時のマルチスレッディング単一の物理コアが、当該物理コアが同時にマルチスレッディングしているスレッドのそれぞれについて論理コアを提供する、又はそれらの組み合わせ例えば、Intel登録商標ハイパースレッディング技術におけるようなタイムスライスされたフェッチ及びデコード並びにその後の同時のマルチスレッディングを含む様々な方法でそうすることができることが理解されるべきである。レジスタリネーミングは、アウトオブオーダー実行に関して説明されるが、レジスタリネーミングは、インオーダーアーキテクチャにおいて用いることができることが理解されるべきである。プロセッサの図示した実施形態は、別々の命令キャッシュユニット434/データキャッシュユニット474及び共有されたL2キャッシュユニット476も備えるが、代替の実施形態は、例えば、レベル1L1内部キャッシュ、又は複数レベルの内部キャッシュ等の、命令及びデータの双方の単一の内部キャッシュを有することができる。幾つかの実施形態では、システムは、コア及び/又はプロセッサの外部にある内部キャッシュ及び外部キャッシュの組み合わせを備えることができる。代替的に、キャッシュの全てを、コア及び/又はプロセッサの外部にすることができる。図5は、本発明の実施形態による、統合メモリコントローラー及びグラフィックスを有するシングルコアプロセッサ及びマルチコアプロセッサ500のブロック図である。図5における実線のボックスは、シングルコア502A、システムエージェント510、一組の1つ又は複数のバスコントローラーユニット516を有するプロセッサ500を示している一方、破線のボックスのオプションの追加は、複数のコア502A~502N、システムエージェントユニット510内の一組の1つ又は複数の統合メモリコントローラーユニット複数の場合もある514、及び統合グラフィックスロジック508を有する代替のプロセッサ500を示している。メモリ階層構造は、一組の統合メモリコントローラーユニット514に結合された、コア内の1つ又は複数のレベルのキャッシュと、一組の1つ若しくは複数の共有キャッシュユニット506、及び外部メモリ図示せずとを含む。この一組の共有キャッシュユニット506は、レベル2L2、レベル3L3、レベル4L4、又は他のレベルのキャッシュ等の1つ又は複数の中間レベルキャッシュ、ラストレベルキャッシュLLC、及び/又はそれらの組み合わせを含むことができる。1つの実施形態では、リングベースの相互接続ユニット512が、統合グラフィックスロジック508、一組の共有キャッシュユニット506、及びシステムエージェントユニット510を相互接続するが、代替の実施形態は、そのようなユニットを相互接続するための任意の数のよく知られた技法を用いることができる。幾つかの実施形態では、コア502A~502Nのうちの1つ又は複数は、マルチスレッディングすることができる。システムエージェント510は、コア502A~502Nを協調及び動作させる構成要素を備える。システムエージェントユニット510は、例えば、電力制御ユニットPCU及びディスプレイユニットを備えることができる。PCUは、コア502A~502N及び統合グラフィックスロジック508の電力状態を調整するのに必要とされるロジック及び構成要素とすることもできるし、それらを備えることもできる。ディスプレイユニットは、1つ又は複数の外部に接続されたディスプレイを駆動するためのものである。コア502A~502Nは、アーキテクチャ及び/又は命令セットに関して、同種とすることもできるし、異種とすることもできる。例えば、コア502A~502Nのうちの幾つかはインオーダーとすることができ、他のものはアウトオブオーダーである。別の例として、コア502A~502Nのうちの2つ以上は、同じ命令セットを実行することができる一方、他のものは、その命令セットのサブセットのみ又は異なる命令セットを実行することができる。プロセッサは、カリフォルニア州サンタクララのIntelCorporation社から入手可能なCore商標i3プロセッサ、i5プロセッサ、i7プロセッサ、2Duoプロセッサ及びQuadプロセッサ、Xeon商標プロセッサ、Itanium商標プロセッサ、XScale商標プロセッサ、又はStrongARM商標プロセッサ等の汎用プロセッサとすることができる。代替的に、プロセッサは、ARMHoldings社、MIPS社等の別の会社からのものとすることができる。プロセッサは、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、コプロセッサ、組み込みプロセッサ等の専用プロセッサとすることができる。プロセッサは、1つ又は複数のチップ上に実装することができる。プロセッサ500は、例えば、BiCMOS、CMOS、又はNMOS等の複数のプロセス技術のうちの任意のものを用いた1つ又は複数の基板のうちの一部とすることができ、及び/又はそれらの1つ又は複数の基板上に実装することができる。図6~図8は、プロセッサ500を備えるのに好適な例示のシステムである一方、図9は、コア502のうちの1つ又は複数を備えることができる一例示のシステムオンチップSoCである。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサDSP、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラー、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスの技術分野において知られている他のシステム設計及び構成も好適である。一般的に、本明細書において開示するようなプロセッサ及び/又は他の実行ロジックを組み込むことができる膨大な様々のシステム又は電子デバイスが一般に好適である。次に図6を参照すると、本発明の1つの実施形態によるシステム600のブロック図が示されている。システム600は、グラフィックスメモリコントローラーハブGMCH620に結合された1つ又は複数のプロセッサ610、615を備えることができる。追加のプロセッサ615の性質がオプションであることは、図6に破線で示されている。各プロセッサ610、615は、プロセッサ500の或るバージョンとすることができる。しかしながら、統合グラフィックスロジック及び統合メモリ制御ユニットがプロセッサ610、615に存在する可能性が低いことに留意すべきである。図6は、GMCH620が、例えば、ダイナミックランダムアクセスメモリDRAMとすることができるメモリ640に結合することができることを示している。DRAMは、少なくとも1つの実施形態については、不揮発性キャッシュに関連付けることができる。GMCH620は、チップセット、又はチップセットの一部とすることができる。GMCH620は、プロセッサ複数の場合もある610、615と通信することができ、プロセッサ複数の場合もある610、615とメモリ640との間のインタラクションを制御することができる。GMCH620は、プロセッサ複数の場合もある610、615とシステム600の他の要素との間の高速バスインターフェースとしても機能することができる。少なくとも1つの実施形態について、GMCH620は、フロントサイドバスFSB695等のマルチドロップバスを介してプロセッサ複数の場合もある610、615と通信する。さらに、GMCH620は、ディスプレイ645フラットパネルディスプレイ等に結合されている。GMCH620は、統合グラフィックスアクセラレーターを備えることができる。GMCH620は、様々な周辺デバイスをシステム600に結合するのに用いることができる入力/出力I/OコントローラーハブICH650に更に結合されている。例えば、図6の実施形態には、外部のグラフィックスデバイス660が示される。この外部のグラフィックスデバイスは、別の周辺デバイス670とともにICH650に結合される別個のグラフィックスデバイスとすることができる。代替的に、追加の又は異なるプロセッサも、システム600に存在することができる。例えば、追加のプロセッサ複数の場合もある615は、プロセッサ610と同じ追加のプロセッサ複数の場合もある、プロセッサ610とは異種又は非対称的である追加のプロセッサ複数の場合もある、アクセラレーター例えば、グラフィックスアクセラレーター又はデジタル信号処理DSPユニット等、フィールドプログラマブルゲートアレイ、又は他の任意のプロセッサを含むことができる。物理リソース610、615間には、アーキテクチャ上の特性、マイクロアーキテクチャ上の特性、熱的特性、電力消費特性等を含む、或る範囲の利点というメトリックから、様々な相違が存在する可能性がある。これらの相違は、プロセッサ610、615間の非対称性及び異種性として効果的に表すことができる。少なくとも1つの実施形態について、様々なプロセッサ610、615は、同じダイパッケージに存在することができる。次に図7を参照すると、本発明の一実施形態による第2のシステム700のブロック図が示されている。図7に示すように、マルチプロセッサシステム700は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続750を介して結合された第1のプロセッサ770及び第2のプロセッサ780を備える。プロセッサ770及び780のそれぞれは、プロセッサ610、615のうちの1つ又は複数としてプロセッサ500の或るバージョンとすることができる。2つのプロセッサ770、780のみを有するものが示されているが、本発明の範囲はそのように限定されるものではないことが理解されるべきである。他の実施形態では、1つ又は複数の追加のプロセッサが、所与のプロセッサに存在することができる。統合メモリコントローラーユニット772及び782をそれぞれ備えるプロセッサ770及び780が示されている。プロセッサ770は、そのバスコントローラーユニットの一部として、ポイントツーポイントP-Pインターフェース776及び778も備える。同様に、第2のプロセッサ780は、P-Pインターフェース786及び788を備える。プロセッサ770、780は、P-Pインターフェース回路778、788を用いたポイントツーポイントP-Pインターフェース750を介して情報を交換することができる。図7に示すように、IMC772及び782は、プロセッサをそれぞれのメモリ、すなわち、メモリ732及びメモリ734に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリの一部とすることができる。プロセッサ770、780はそれぞれ、ポイントツーポイントインターフェース回路776、794、786、798を用いて、個々のP-Pインターフェース752、754を介してチップセット790と情報を交換することができる。チップセット790は、高性能グラフィックスインターフェース739を介して高性能グラフィックス回路738と情報を交換することもできる。プロセッサが低電力モードになる場合に、いずれか又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュにストアすることができるように、いずれかのプロセッサ内、又は、双方のプロセッサの外部にあるがP-Pインターコネクトで接続されるように、共有キャッシュ図示せずを備えることができる。チップセット790は、インターフェース796を介して第1のバス716に結合することができる。1つの実施形態では、第1のバス716は、ペリフェラルコンポーネントインターコネクトPCIバス、又はPCIエクスプレスバス若しくは別の第3世代I/O相互接続バス等のバスとすることができるが、本発明の範囲はそのように限定されるものではない。図7に示すように、第1のバス716を第2のバス720に結合するバスブリッジ718とともに、様々なI/Oデバイス714を第1のバス716に結合することができる。1つの実施形態では、第2のバス720は、ローピンカウントLPCバスとすることができる。例えば、キーボード及び/又はマウス722、通信デバイス727、並びに1つの実施形態では命令/コード及びデータ730を含むことができるディスクドライブ又は他のマスストレージデバイス等の記憶ユニット728を含む様々なデバイスを第2のバス720に結合することができる。さらに、オーディオI/O724を第2のバス720に結合することができる。他のアーキテクチャが可能であることに留意されたい。例えば、図7のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実装することができる。次に図8を参照すると、本発明の一実施形態による第3のシステム800のブロック図が示されている。図7及び図8における同様の要素は、同様の参照符号を有し、図7の幾つかの態様は、図8の他の態様を分かりにくくすることを回避するために、図8から省かれている。図8は、プロセッサ870、880がそれぞれ統合メモリI/O制御ロジックCL872及び882を備えることができることを示している。少なくとも1つの実施形態について、CL872、882は、図5及び図7に関して上述したような統合メモリコントローラーユニットを備えることができる。加えて、CL872、882は、I/O制御ロジックも備えることができる。図8は、CL872、882に結合されているのはメモリ832、834だけでなく、I/Oデバイス814も制御ロジック872、882に結合されていることを示している。レガシーI/Oデバイス815は、チップセット890に結合されている。次に図9を参照すると、本発明の一実施形態によるSoC900のブロック図が示されている。図5における同様の要素は、同様の参照符号を有する。また、破線のボックスは、更に高度化したSoC上のオプションの特徴部である。図9において、相互接続ユニット複数の場合もある902は、一組の1つ又は複数のコア502A~502N及び共有キャッシュユニット複数の場合もある506を備えるアプリケーションプロセッサ910と、システムエージェントユニット510と、バスコントローラーユニット複数の場合もある516と、統合メモリコントローラーユニット複数の場合もある514と、一組の1つ又は複数のメディアプロセッサ920と、スタティックランダムアクセスメモリSRAMユニット930と、ダイレクトメモリアクセスDMAユニット932と、1つ又は複数の外部ディスプレイに結合するためのディスプレイユニット940とに結合されている。上記メディアプロセッサは、統合グラフィックスロジック508と、スチルカメラ機能及び/又はビデオカメラ機能を提供するための画像プロセッサ924と、ハードウェアオーディオアクセラレーションを提供するためのオーディオプロセッサ926と、ビデオエンコード/デコードアクセラレーションを提供するためのビデオプロセッサ928とを備えることができる。図10は、1つの実施形態による少なくとも1つの命令を実行することができる中央処理ユニットCPUとグラフィックス処理ユニットGPUとを含むプロセッサを示している。1つの実施形態では、少なくとも1つの実施形態による演算を実行する命令は、CPUが実行することができる。別の実施形態では、この命令は、GPUが実行することができる。更に別の実施形態では、この命令は、GPU及びCPUによって実行される演算を組み合わせることによって実行することができる。例えば、1つの実施形態では、1つの実施形態による命令を、GPU上で実行するために受信してデコードすることができる。一方、デコードされた命令内の1つ又は複数の演算は、CPUが実行することができ、その結果を、その命令の最終的なリタイアメントのためにGPUに返すことができる。逆に、幾つかの実施形態では、CPUが主プロセッサとして動作することができ、GPUがコプロセッサとして動作することができる。幾つかの実施形態では、高並列スループットプロセッサから利益を受ける命令は、GPUが実行することができる一方、深くパイプライン化されたアーキテクチャから利益を受けるプロセッサの性能から利益を受ける命令は、CPUが実行することができる。例えば、グラフィックス、科学アプリケーション、金融アプリケーション、及び他の並列作業負荷は、GPUの性能から利益を受けることができ、それに応じて実行することができるのに対して、オペレーティングシステムのカーネル又はアプリケーションコード等のより逐次的なアプリケーションは、CPUにより良く適合することができる。図10において、プロセッサ1000は、CPU1005、GPU1010、画像プロセッサ1015、ビデオプロセッサ1020、USBコントローラー1025、UARTコントローラー1030、SPI/SDIOコントローラー1035、ディスプレイデバイス1040、高精細マルチメディアインターフェースHDMI登録商標コントローラー1045、MIPIコントローラー1050、フラッシュメモリコントローラー1055、デュアルデータレートDDRコントローラー1060、セキュリティエンジン1065、及びI2S/I2C統合チップ間サウンド/集積回路間インターフェース1070を備える。より多くのCPU又はGPU及び他の周辺インターフェースコントローラーを含めて、他のロジック及び回路を図10のプロセッサに含めることができる。少なくとも1つの実施形態の1つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体上にストアされた代表データによって実施することができる。この代表データは、機械によって読み出されると、当該機械に、本明細書において説明した技法を実行するロジックを作製させる。IPコアとして知られているそのような表現は、有形の機械可読媒体テープ上にストアすることができ、様々な顧客又は製造設備に供給して、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。例えば、ARMHoldings社によって開発されたCortex商標ファミリーのプロセッサ及び中国科学アカデミーのコンピューティング技術協会ICTによって開発されたLoongsonIPコア等のIPコアは、TexasInstruments社、Qualcomm社、Apple社、又はSamsung社等の様々な顧客又はライセンシーに対して、ライセンス供与又は販売することができ、これらの顧客又はライセンシーが作製するプロセッサに実装することができる。図11は、1つの実施形態によるIPコアの開発を示すブロック図を示している。記憶装置1130は、シミュレーションソフトウェア1120及び/又はハードウェア若しくはソフトウェアモデル1110を含む。1つの実施形態では、IPコア設計を表すデータは、メモリ1140例えば、ハードディスク、有線接続例えば、インターネット1150、又は無線接続1160を介して記憶装置1130に提供することができる。シミュレーションツール及びモデルによって生成されたIPコア情報は、その後、製造設備に送信することができ、この製造設備において、サードパーティが、少なくとも1つの実施形態による少なくとも1つの命令を実行するようにIPコアを製造することができる。幾つかの実施形態では、1つ又は複数の命令は、第1のタイプ又はアーキテクチャ例えば、x86に対応することができ、異なるタイプ又はアーキテクチャ例えば、ARMのプロセッサ上で変換又はエミュレートすることができる。したがって、1つの実施形態による命令は、ARM、x86、MIPS、GPU、又は他のプロセッサタイプ若しくはアーキテクチャを含む任意のプロセッサ又はプロセッサタイプ上で実行することができる。図12は、1つの実施形態による、第1のタイプの命令が異なるタイプのプロセッサによってどのようにエミュレートされるのかを示している。図12において、プログラム1205は、1つの実施形態による命令と同じ又は実質的に同じ機能を実行することができる幾つかの命令を含む。しかしながら、プログラム1205の命令は、プロセッサ1215と異なるか又は互換性のないタイプ及び/又はフォーマットである場合があり、このことは、プログラム1205内のタイプの命令がプロセッサ1215によってネイティブに実行することができない場合があることを意味する。しかしながら、エミュレーションロジック1210の援助によって、プログラム1205の命令は、プロセッサ1215がネイティブに実行することができる命令に変換される。1つの実施形態では、エミュレーションロジックは、ハードウェアに具現化される。別の実施形態では、エミュレーションロジックは、プログラム1205内のタイプの命令をプロセッサ1215がネイティブに実行可能なタイプに変換するソフトウェアを含む有形の機械可読媒体に具現化される。他の実施形態では、エミュレーションロジックは、固定機能又はプログラマブルハードウェアと、有形の機械可読媒体上にストアされたプログラムとの組み合わせである。1つの実施形態では、プロセッサがエミュレーションロジックを含むのに対して、他の実施形態では、エミュレーションロジックは、プロセッサの外部に存在し、サードパーティによって提供される。1つの実施形態では、プロセッサは、当該プロセッサ内に含まれるか又は当該プロセッサに関連付けられたマイクロコード又はファームウェアを実行することによって、ソフトウェアを含む有形の機械可読媒体に具現化されたエミュレーションロジックをロードすることができる。図13は、本発明の実施形態による、ソフトウェア命令変換器を用いて、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換することを対比したブロック図である。図示した実施形態では、命令変換器は、ソフトウェア命令変換器であるが、代替的に、命令変換器は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの様々な組み合わせで実施することができる。図13は、高級言語1302によるプログラムを、x86コンパイラー1304を用いてコンパイルしてx86バイナリコード1306を生成することができることを示している。このx86バイナリコード1306は、少なくとも1つのx86命令セットコアを有するプロセッサ1316がネイティブに実行することができるものである。少なくとも1つのx86命令セットコアを有するプロセッサ1316は、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ結果を達成するために、1Intelx86命令セットコアの命令セットの大部分、又は2少なくとも1つのx86命令セットコアを有するIntelプロセッサ上で実行されることを目的としたアプリケーション又は他のソフトウェアのオブジェクトコードバージョン、を矛盾なく実行又は別の方法で処理することによって、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表す。x86コンパイラー1304は、追加のリンク処理の有無を問わず、少なくとも1つのx86命令セットコアを有するプロセッサ1316上で実行することができるx86バイナリコード1306例えば、オブジェクトコードを生成するように動作可能なコンパイラーを表している。同様に、図13は、高級言語1302によるプログラムを、代替の命令セットコンパイラー1308を用いてコンパイルして代替の命令セットバイナリコード1310を生成することができることを示している。この代替の命令セットバイナリコードは、少なくとも1つのx86命令セットコアを有しないプロセッサ1314例えば、カリフォルニア州サニーベールのMIPSTechnologies社のMIPS命令セットを実行するコアを有するプロセッサ及び/又はカリフォルニア州サニーベールのARMHoldings社のARM命令セットを実行するコアを有するプロセッサがネイティブに実行することができるものである。命令変換器1312は、x86バイナリコード1306を、x86命令セットコアを有しないプロセッサ1314がネイティブに実行することができるコードに変換するのに用いられる。この変換されたコードは、代替の命令セットバイナリコード1310と同じである可能性は低い。なぜならば、これを行うことができる命令変換器は、作製が困難であるからである。しかしながら、変換されたコードは、一般的な演算を達成し、代替の命令セットからの命令で構成される。したがって、命令変換器1312は、エミュレーション、シミュレーション、又は他の任意のプロセスを通じて、x86命令セットプロセッサもコアも有しないプロセッサ又は他の電子デバイスがx86バイナリコード1306を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを表している。図14は、ベクトル収集演算機能を提供するプロセス1401の1つの実施形態の流れ図を示している。プロセス1401及び本明細書において開示する他のプロセスは、専用のハードウェア、又は汎用機械若しくは専用機械若しくは双方の組み合わせによって実行可能なソフトウェア若しくはファームウェアの演算コードを含むことができる処理ブロックによって実行される。プロセス1401の処理ブロック1409において、第2の演算が実行されるときに用いられるマスクから、複製がオプションとして作成される。次に、処理は、処理ブロック1410に進み、この処理ブロック1410において、次の値が、マスクレジスタ内の複数のマスクフィールドの各フィールドから読み出される。プロセス1401は、反復的なものとして示されているが、可能な場合には、演算のうちの多くのものを並列に実行することが好ましい場合があることが認識されるであろう。マスクレジスタ内の複数のマスクフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応することができ、マスクレジスタ内の各フィールドについて、1つの値は、対応する要素がメモリから収集されていないことを示し、第2の値は、対応するデータ要素を収集する必要がないか、又はメモリから既に収集されていることを示す。1つの実施形態では、マスクレジスタは、アーキテクチャ的に可視であるレジスタである。別の実施形態では、マスクレジスタは、例えば、全てのフィールドが、対応する要素がメモリから収集されていないことを初期値として示す暗黙的なものとすることができる。処理ブロック1420において、マスクレジスタのフィールドが、対応する要素がメモリから収集されていないことを示す第1の値と比較される。このフィールドが第1の値に等しくない場合、処理は、処理ブロック1450に進み、収集演算が、完了するまで反復される。上記フィールドが第1の値に等しい場合、処理ブロック1430において、対応するデータ要素がメモリから収集され、複数のデータフィールドを有するベクトルレジスタ内にストアされる。これらの複数のデータフィールドの一部分は、収集されたデータ要素をストアするためのものである。処理ブロック1430の完了が成功すると、マスクレジスタ内の対応するフィールドが、処理ブロック1440において、対応するデータ要素がメモリから既に収集されていることを示す第2の値に変更される。1つの代替の実施形態では、処理ブロック1409の複製マスクは、マスクレジスタ内の対応するフィールドが処理ブロック1440において第2の値に変更されるときに、第2の演算によって用いられる第1の値に、複製マスクレジスタ内のフィールドを設定することによって構築することができることが認識されるであろう。このように、部分的に複製されたマスクに基づく第2の演算の完了を可能にするとともに、メモリ障害後に新たなマスクを用いて収集演算命令を再開することを行って、収集演算命令の実行を依然として必要とする要素のみを追跡することができる。処理ブロック1450において、収集演算が終了したすなわち、マスクレジスタ内の複数のマスクフィールドの各フィールドが第2の値を有するか否かの判断が行われる。終了していない場合、処理は、処理ブロック1410における開始を再度反復する。終了した場合、処理は、処理ブロック1460に進み、この処理ブロック1460において、第2の演算が実行される。1つの実施形態では、第2の演算は、オプションの処理ブロック1409からの複製マスクを用いて実行することができる。別の実施形態では、第2の演算は、マスクを用いることなく実行することができる。次に、処理ブロック1470において、SIMD収集演算命令の結果が、ベクトルレジスタにストアされる。図15は、ベクトル収集演算機能を提供するプロセス1501の別の実施形態の流れ図を示している。プロセス1501の処理ブロック1505において、収集演算命令がデコードされる。処理は、処理ブロック1509に進み、この処理ブロック1509において、第2の演算が実行されるときに用いられるマスクから、複製がオプションとして作成される。次に、処理は、処理ブロック1510に進み、この処理ブロック1510において、次の値が、マスクレジスタ内の複数のマスクフィールドの各フィールドから読み出される。ここでも、プロセス1501は、反復的なものとして示されているが、可能な場合には、演算のうちの多くのものを並列に実行することができる。処理ブロック1520において、マスクレジスタの次のフィールドが、対応する要素がメモリから収集されていないことを示す第1の値と比較される。このフィールドが第1の値と等しくない場合、処理は、処理ブロック1550に進み、収集演算が、完了するまで反復される。このフィールドが第1の値と等しい場合、処理ブロック1530において、対応するデータ要素がメモリから収集され、処理ブロック1535において、複数のデータフィールドを有するベクトルデスティネーションレジスタ内にストアされる。これらの複数のデータフィールドの一部分は、収集されたデータ要素をストアするためのものである。処理ブロック1535の完了が成功すると、マスクレジスタ内の対応するフィールドが、処理ブロック1540において、対応するデータ要素がメモリから既に収集されていることを示す第2の値に変更される。ここでも、代替の実施形態では、処理ブロック1509の複製マスクは、マスクレジスタ内の対応するフィールドが処理ブロック1540において第2の値に変更されるときに、第2の演算によって用いられる第1の値に、複製マスクレジスタ内のフィールドを設定することによって構築することができることが認識されるであろう。このように、部分的に複製されたマスクに基づく第2の演算の完了を可能にするとともに、メモリ障害後に新たなマスクを用いて収集演算gatherop命令を再開して、収集演算命令の実行を依然として必要とする要素のみを追跡することができる。処理ブロック1550において、収集演算が終了したすなわち、マスクレジスタ内の複数のマスクフィールドの各フィールドが第2の値を有するか否かの判断が行われる。終了していない場合、処理は、処理ブロック1510における開始を再度反復する。終了した場合、処理は、処理ブロック1565に進み、この処理ブロック1565において、第2の演算がデスティネーションレジスタからの要素と、第2のオペランドレジスタからの要素とに対して実行される。1つの実施形態では、第2の演算は、オプションの処理ブロック1509からの複製マスクを用いて実行することができる。別の実施形態では、第2の演算は、マスクを用いることなく実行することができる。次に、処理ブロック1570において、SIMD収集演算命令の結果が、ベクトルデスティネーションレジスタにストアされる。収集演算と第2の演算との間の従属関係は、ハードウェアによって、特に、アウトオブオーダーマイクロアーキテクチャにおいて、効率的にハンドリングすることができ、それによって、更なるコンパイラー最適化及び改善された命令スループットが可能になることが認識されるであろう。図16は、ベクトル散乱演算機能を提供するプロセス1601の1つの実施形態の流れ図を示している。プロセス1601の処理ブロック1610において、第1の演算が、第1のオペランドレジスタからの要素と、第2のオペランドレジスタからの対応する要素とに対して実行される。次に、処理は、処理ブロック1620に進み、この処理ブロック1620において、次の値が、マスクレジスタ内の複数のマスクフィールドのうちの或るフィールドから読み出される。プロセス1601は、反復的なものとして示されているが、可能な場合には、演算のうちの多くのものを並列に実行することが好ましい場合があることが認識されるであろう。マスクレジスタ内の複数のマスクフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応することができ、マスクレジスタ内の各フィールドについて、1つの値は、対応する要素がメモリに散乱されていないことを示し、第2の値は、対応するデータ要素を散乱する必要がないか、又はメモリに既に散乱されていることを示す。1つの実施形態では、マスクレジスタは、アーキテクチャ的に可視であるレジスタである。別の実施形態では、マスクレジスタは、例えば、全てのフィールドが、対応する要素がメモリに散乱されていないことを初期値として示す暗黙的なものとすることができる。処理ブロック1630において、マスクレジスタのフィールドが、対応する要素がメモリに散乱されていないことを示す第1の値と比較される。このフィールドが第1の値に等しくない場合、処理は、処理ブロック1660に進み、散乱演算が、終了するまで反復される。上記フィールドが第1の値に等しい場合、処理ブロック1640において、対応するデータ要素がメモリに散乱される。処理ブロック1640の完了が成功すると、マスクレジスタ内の対応するフィールドが、処理ブロック1650において、対応するデータ要素がメモリに既に散乱されていることを示す第2の値に変更される。処理ブロック1660において、散乱演算が終了したすなわち、マスクレジスタ内の複数のマスクフィールドの各フィールドが第2の値を有するか否かの判断が行われる。終了していない場合、処理は、処理ブロック1620における開始を再度反復する。終了した場合、処理は、処理ブロック1670に進み、この処理ブロック1670において、SIMD散乱演算命令の結果がベクトルレジスタ内にストアされる。図17は、ベクトル散乱演算機能を提供するプロセス1701の別の実施形態の流れ図を示している。プロセス1701の処理ブロック1705において、散乱演算命令がデコードされる。処理は、処理ブロック1720に進み、この処理ブロック1720において、次の値が、マスクレジスタ内の複数のマスクフィールドの或るフィールドから読み出される。プロセス1701は、反復的なものとして示されているが、可能な場合には、演算のうちの多くのものを並列に実行することが好ましい場合があることに想到するであろう。1つの実施形態では、マスクレジスタは、アーキテクチャ的に可視であるレジスタである。別の実施形態では、マスクレジスタは、例えば、全てのフィールドが、対応する要素がメモリに散乱されていないことを初期値として示す暗黙的なものとすることができる。処理ブロック1730において、マスクレジスタのフィールドが、対応する要素がメモリに散乱されていないことを示す第1の値と比較される。このフィールドが第1の値に等しくない場合、処理は、処理ブロック1760に進み、散乱演算が、終了するまで反復される。上記フィールドが第1の値に等しい場合、処理ブロック1710において、第1の演算が、第1のオペランド/デスティネーションレジスタからの対応する要素と、第2のオペランドレジスタからの対応する要素とに対して実行される。処理ブロック1740において、対応するデータ要素がメモリに散乱される。処理ブロック1740の完了が成功すると、マスクレジスタ内の対応するフィールドが、処理ブロック1750において、対応するデータ要素がメモリに既に散乱されていることを示す第2の値に変更される。処理ブロック1760において、散乱演算が終了したすなわち、マスクレジスタ内の複数のマスクフィールドの各フィールドが第2の値を有するか否かの判断が行われる。終了していない場合、処理は、処理ブロック1720における開始を再度反復する。終了した場合、処理は、処理ブロック1770に進み、この処理ブロック1770において、SIMD散乱演算命令の結果が、ベクトルレジスタ内にストアされる。本発明の実施形態は、収集演算又は散乱演算と別の演算との間の従属関係を、ハードウェアによって、特に、アウトオブオーダーマイクロアーキテクチャにおいて、効率的にハンドリングすることができ、それによって、更なるコンパイラー最適化及び改善された命令スループットが可能になる、ベクトル散乱演算機能及び/又はベクトル収集演算機能を提供する命令を含む。本明細書において開示したメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような実施手法の組み合わせで実施することができる。本発明の実施形態は、少なくとも1つのプロセッサ、記憶システム揮発性メモリ及び不揮発性メモリ及び/又は記憶要素を含む、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを備えるプログラマブルシステム上で実行されるコンピュータープログラム又はプログラムコードとして実施することができる。プログラムコードは、入力命令に適用されて、本明細書において説明した機能を実行し、出力情報を生成することができる。この出力情報は、1つ又は複数の出力デバイスに既知の方法で適用することができる。この用途のために、処理システムは、例えば、デジタル信号プロセッサDSP、マイクロコントローラー、特定用途向け集積回路ASIC、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。プログラムコードは、処理システムと通信するように高級手続型プログラム言語又はオブジェクト指向型言語で実施することができる。プログラムコードは、所望の場合には、アセンブリ言語又は機械語で実施することもできる。実際に、本明細書において説明したメカニズムは、どの特定のプログラム言語にも範囲が限定されるものではない。いずれにしても、この言語は、コンパイル型言語又は解釈型言語とすることができる。少なくとも1つの実施形態の1つ又は複数の態様は、機械によって読み出されると、当該機械に、本明細書において説明した技法を実行するロジックを作製させるプロセッサ内の様々なロジックを表す機械可読媒体上にストアされた代表的な命令によって実施することができる。IPコアとして知られているそのような表現は、有形の機械可読媒体上にストアすることができ、様々な顧客又は製造設備に供給して、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。そのような機械可読記憶媒体は、機械又はデバイスによって製造又は形成された物品の非一時的な有形の構成を含むことができるが、これに限定されるものではない。これらの物品は、ハードディスク、フロッピー登録商標ディスク、光ディスク、コンパクトディスク読み出し専用メモリCD-ROM、再書込み可能コンパクトディスクCD-RW、及び光磁気ディスクを含む他の任意のタイプのディスク、読み出し専用メモリROM、ダイナミックランダムアクセスメモリDRAM、スタティックランダムアクセスメモリSRAM等のランダムアクセスメモリRAM、消去可能プログラマブル読み出し専用メモリEPROM、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリEEPROM、磁気カード若しくは光カード、又は電子命令をストアするのに好適な他の任意のタイプの媒体等の半導体デバイス等の記憶媒体を含む。したがって、本発明の実施形態は、命令を含む非一時的な有形の機械可読媒体、又は本明細書において説明した構造、回路、装置、プロセッサ及び/又はシステムの特徴を定義するハードウェア記述言語HDL等の設計データを含む非一時的な有形の機械可読媒体も含む。そのような実施形態は、プログラム製品と呼ばれる場合もある。場合によっては、命令変換器を用いて、命令をソース命令セットからターゲット命令セットに変換することができる。例えば、命令変換器は、命令を、コアによって処理される1つ又は複数の他の命令に変換例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いる、モーフィング、エミュレート、又は別の方法で変換することができる。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせで実施することができる。命令変換器は、オンプロセッサ、オフプロセッサ、又は一部分がオンプロセッサ及び一部分がオフプロセッサとすることができる。上記のように、少なくとも1つの実施形態による1つ又は複数の命令を実行するための技法が開示されている。或る特定の例示の実施形態が、説明され、添付図面に示されているが、そのような実施形態は、広範な本発明の単なる例示にすぎず、広範な本発明を制限するものではないこと、及び、本発明は、図示及び説明された特定の構造及び構成に限定されるものではないことが理解されるべきである。なぜならば、この開示を検討すると、他の様々な変更が当業者には思い浮かべることができるからである。このような技術の分野では、成長が速く、更なる進歩が容易に予見されない場合、開示された実施形態は、本開示の原理又は添付の特許請求の範囲の範囲から逸脱することなく技術的進歩を可能にすることによって容易にされるように、構成及び細部が容易に変更可能な場合がある。