(57)【特許請求の範囲】
【請求項１】
複数のパックデータレジスタと、
複数のデータ要素を有する第１のソースパックデータ・オペランドと複数のマスク要素を有する第２のソースオペランドとを表示し、前記第２のソースオペランドの各マスク要素が前記第１のソースパックデータ・オペランドの同じ相対位置の異なるデータ要素に対応するデータ要素選択・統合命令を復号するための復号ユニットと、
前記復号ユニットに連結されており、前記データ要素選択・統合命令に応答して結果パックデータ・オペランドを前記データ要素選択・統合命令が表示する宛先記憶位置に記憶するための実行ユニットとを備え、前記結果パックデータ・オペランドは、前記第２のソースオペランドの未マスクの複数のマスク要素に対応する、統合された前記第１のソースパックデータ・オペランドの全てのデータ要素を前記結果パックデータ・オペランドの一部に含み、
前記実行ユニットは、前記データ要素選択・統合命令に応答して前記統合された前記第１のソースパックデータ・オペランドの前記全てのデータ要素の数を示す値を記憶するためのものである、プロセッサ。
【請求項２】
前記復号ユニットは、前記複数のマスク要素を有する前記第２のソースオペランドとして即値を有する前記データ要素選択・統合命令を復号するためのものであり、前記複数のマスク要素はマスクビットである、請求項１に記載のプロセッサ。
【請求項３】
前記復号ユニットは、前記プロセッサの一組のパックデータ操作マスクレジスタの内の任意のパックデータ操作マスクレジスタである前記第２のソースオペランドを表示する前記データ要素選択・統合命令を復号するためのものであり、前記プロセッサの命令セットの他の複数の命令は、前記一組のパックデータ操作マスクレジスタの内のレジスタを特定して記述オペランドを提供する、請求項１に記載のプロセッサ。
【請求項４】
前記復号ユニットは、マスクビットである前記複数のマスク要素を有する前記第２のソースオペランドを表示する前記データ要素選択・統合命令を復号するためのものである、請求項１に記載のプロセッサ。
【請求項５】
前記復号ユニットは、パックデータ・オペランドである前記第２のソースオペランドを表示する前記データ要素選択・統合命令を復号するためのものであり、前記複数のマスク要素はマスクデータ要素である、請求項１に記載のプロセッサ。
【請求項６】
前記実行ユニットは、前記データ要素選択・統合命令に応答して、前記結果パックデータ・オペランドの最下位ビットから始まる最下位部に前記第１のソースパックデータ・オペランドと同じ順序で共に統合されている前記全てのデータ要素を含む前記結果パックデータ・オペランドを記憶するためのものである、請求項１に記載のプロセッサ。
【請求項７】
前記実行ユニットは、前記データ要素選択・統合命令に応答して、前記結果パックデータ・オペランドの最上位ビットから始まる最上位部に前記第１のソースパックデータ・オペランドと同じ順序で共に統合されている前記全てのデータ要素を含む前記結果パックデータ・オペランドを記憶するためのものである、請求項１に記載のプロセッサ。
【請求項８】
前記実行ユニットは、前記データ要素選択・統合命令に応答して、前記第２のソースオペランドの既マスクの複数のマスク要素に対応する前記第１のソースパックデータ・オペランドの全てのデータ要素を除外する統合された前記データ要素を有する前記結果パックデータ・オペランドを記憶するためのものであり、前記第１のソースパックデータ・オペランドは、未マスクのマスク要素に対応するデータ要素間の既マスクのマスク要素に対応する少なくとも１つのデータ要素を有する、請求項１に記載のプロセッサ。
【請求項９】
前記復号ユニットは、前記第１のソースパックデータ・オペランドの前記複数のデータ要素の大きさを表示する１または複数のビットを有する前記データ要素選択・統合命令を復号するためのものである、請求項１〜８のいずれか１項に記載のプロセッサ。
【請求項１０】
前記復号ユニットは、少なくとも１２８ビットのビット幅を有すると共に、複数の８ビットデータ要素および複数の１６ビットデータ要素から選択した複数のデータ要素を表示する第１のソースパックデータ・オペランドを有する前記データ要素選択・統合命令を復号するためのものであり、前記宛先記憶位置は前記プロセッサのパックデータレジスタを含み、前記データ要素選択・統合命令は汎用レジスタを表示し、前記実行ユニットは前記値を前記汎用レジスタに記憶するためのものである、請求項１〜８のいずれか１項に記載のプロセッサ。
【請求項１１】
前記復号ユニットは、前記第２のソースオペランドの未マスクのマスク要素に対応する前記第１のソースパックデータ・オペランドの前記全てのデータ要素が、前記第１のソースパックデータ・オペランド内の前記複数のデータ要素のいかなる特定の配列にも、前記第２のソースオペランド内の前記複数のマスク要素のいかなる特定の配列にもかかわらずに前記結果パックデータ・オペランドの一部において共に統合されることを表示するオペコードを有する前記データ要素選択・統合命令を復号するためのものである、請求項１〜８のいずれか１項に記載のプロセッサ。
【請求項１２】
前記プロセッサは汎用プロセッサを含み、前記宛先記憶位置は前記プロセッサのパックデータレジスタを含み、前記データ要素選択・統合命令は汎用レジスタを表示し、前記実行ユニットは前記値を前記汎用レジスタに記憶するためのものである、請求項１〜８のいずれか１項に記載のプロセッサ。
【請求項１３】
複数のデータ要素を有している第１のソースパックデータ・オペランドと複数のマスク要素を有している第２のソースオペランドとを表示しており、前記第２のソースオペランドの各マスク要素が前記第１のソースパックデータ・オペランドの同じ相対位置の異なるデータ要素に対応するデータ要素選択・統合命令を受け取る工程と、
前記データ要素選択・統合命令に応答して結果パックデータ・オペランドを前記データ要素選択・統合命令によって表示される宛先記憶位置に記憶する工程であって、前記結果パックデータ・オペランドは、前記第２のソースオペランドの未マスクの複数のマスク要素に対応する、統合された前記第１のソースパックデータ・オペランドの全てのデータ要素を前記結果パックデータ・オペランドの一部に含む工程と、
前記データ要素選択・統合命令に応答して前記統合された前記第１のソースパックデータ・オペランドの前記全てのデータ要素の数を示す値を記憶する工程とを含む、プロセッサ内の方法。
【請求項１４】
前記受け取る工程は、前記複数のマスク要素を有する前記第２のソースオペランドとして即値を有する前記データ要素選択・統合命令を受け取る工程を含む、請求項１３に記載の方法。
【請求項１５】
前記受け取る工程は、プレディケーションに使用する一組の専用のパックデータ操作マスクレジスタの内の任意のパックデータ操作マスクレジスタである前記第２のソースオペランドを表示する前記データ要素選択・統合命令を受け取る工程を含み、
前記データ要素選択・統合命令は汎用レジスタを表示し、前記値は前記汎用レジスタに記憶される、請求項１３に記載の方法。
【請求項１６】
前記複数のマスク要素として複数のマスクビットを有する前記第２のソースオペランドにアクセスする工程をさらに含む、請求項１３に記載の方法。
【請求項１７】
前記受け取る工程は、前記第１のソースパックデータ・オペランドの前記複数のデータ要素の大きさを表示する１または複数のビットを有する前記データ要素選択・統合命令を受け取る工程を含む、請求項１３に記載の方法。
【請求項１８】
前記受け取る工程は、少なくとも１２８ビットを有すると共に複数の８ビットデータ要素および複数の１６ビットデータ要素の一方である複数のデータ要素を含む前記第１のソースパックデータ・オペランドを表示する前記データ要素選択・統合命令を受け取る工程を含み、前記記憶する工程は、前記結果パックデータ・オペランドの最下位ビットから始まる最下位部に前記第１のソースパックデータ・オペランド内に出現する順序と同じ順序で共に統合された前記全てのデータ要素を有する前記結果パックデータ・オペランドを記憶する工程を含む、請求項１３に記載の方法。
【請求項１９】
ネットワークからパケットを受け取る工程と、
前記パケットの一部を前記第１のソースパックデータ・オペランドとして記憶する工程と、
前記パケットを復号する工程と、
前記パケットの前記復号に基づき前記パケットの前記一部におけるデータフロー用の複数のフローバイトの位置を決定する工程と、
前記複数のフローバイトの各々に対する前記第２のソースオペランドに未マスクの複数のマスク要素を記憶し、前記パケットの前記一部の他のバイトに対する前記第２のソースオペランドに複数の既マスクの要素を記憶する工程をさらに含む、請求項１３に記載の方法。
【請求項２０】
前記第１のソースパックデータ・オペランドはネットワークから受け取ったパケット由来の複数のデータ要素を有し、前記結果パックデータ・オペランドの統合された前記複数のデータ要素に対して暗号化操作を実行する工程をさらに含む、請求項１３に記載の方法。
【請求項２１】
命令を処理するシステムであって、
インターコネクトと、
前記インターコネクトに連結されたプロセッサと、
前記インターコネクトに連結された動的ランダムアクセスメモリ（ＤＲＡＭ）
を備え、
前記プロセッサは、複数のデータ要素を有する第１のソースパックデータ・オペランドと複数のマスク要素を有する第２のソースオペランドとを表示するデータ要素選択・統合命令を受け取るためのものであり、第２のソースオペランドの各マスク要素は第１のソースパックデータ・オペランドの同じ相対位置の異なるデータ要素に対応し、前記命令は宛先記憶位置を表示し、
前記プロセッサは、前記命令に応答して結果パックデータ・オペランドを前記宛先記憶位置に記憶するためのものであり、前記結果パックデータ・オペランドは、前記第２のソースオペランドの未マスクの複数のマスク要素に対応する、統合された前記第１のソースパックデータ・オペランドの全てのデータ要素を前記結果パックデータ・オペランドの一部に含み、
前記プロセッサは、前記命令に応答して前記統合された前記第１のソースパックデータ・オペランドの前記全てのデータ要素の数を示す値を記憶するためのものであり、
前記ＤＲＡＭは、前記プロセッサで実行されたとき、
第１のネットワークパケットを復号することと、
前記第２のソースオペランドを生成して、前記第１のソースパックデータ・オペランドに記憶されている第２のネットワークパケットのヘッダの少なくとも一部におけるデータフロー用の複数のフロー要素を未マスクにし、当該フロー要素とは異なる複数のフロー要素を既マスクにすることを含む複数の操作を前記プロセッサに行わせる一組の復号命令を記憶するためのものである、システム。
【請求項２２】
前記第２のソースオペランドは即値を含み、
前記データ要素選択・統合命令は汎用レジスタを表示し、前記値は前記汎用レジスタに記憶される、請求項２１に記載のシステム。
【請求項２３】
請求項１３〜２０のいずれか１項に記載の方法を実行する手段を備える装置。
【請求項２４】
プロセッサに、請求項１３〜２０のいずれか１項に記載の方法を実行させるためのコンピュータプログラム。
【請求項２５】
請求項２４に記載のコンピュータプログラムを格納する機械可読記憶媒体。
【請求項２６】
前記第２のソースオペランドは、所与のビット数を有する構造的マスクレジスタに記憶され、前記第２のソースオペランドは、前記所与のビット数よりも少ない、請求項１〜８のいずれか１項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の実施形態は一般にプロセッサに関する。詳しくは、本明細書に記載の実施形態はプロセッサ内でパックデータ要素を処理することに関する。
【０００２】
多くのプロセッサは単一命令・複数データ（ＳＩＭＤ）アーキテクチャを有する。ＳＩＭＤアーキテクチャは、複数のデータ要素を１つのレジスタすなわちメモリ場所にパックデータすなわちベクトルデータとして入れることができる。パックデータでは、レジスタまたは他の記憶装置場所のビットを論理的に分割して一続きのデータ要素にすることができる。例えば、１２８ビット幅のパックデータレジスタは６４ビットデータ要素を２つ、あるいは３２ビットデータ要素を４つ、あるいは１６ビットデータ要素を８つ、あるいは８ビットデータ要素を１６個有することができる。これらのデータ要素の各々は個々の独立した部分データ（例えば画素の色、複素数の成分など）を表わすことができ、これらを別々あるいは単独に操作することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＳＩＭＤアーキテクチャでは、パックデータ命令、ベクトル命令、すなわちＳＩＭＤ命令は、パックデータ・オペランドの複数のデータ要素を同時および／または並行して操作すること、あるいは２つのパックデータ・オペランドのデータ要素の複数の対を同時および／または並行して操作することができる。プロセッサは、パックデータ命令に応答して上記操作を複数同時にあるいは並行して実行する並列実行ハードウェアを有していてもよい。
【０００４】
様々な異なる種類のパックデータ命令が当業分野で知られている。パックデータ命令の１種は並べ替え(shuffle)命令である。並べ替え命令を用いてソースパックデータ・オペランドのデータ要素を結果パックデータ・オペランドの異なる位置に並べ替えることができる。この並べ替えは、並べ替えられる各データ要素の並べ替え制御ビットの対応する組を用いて行われる。しかし、そのような並べ替え命令をある用途に使用することの１つの欠点は、並べ替えられる各データ要素が並べ替え制御用の複数のビットを必要とすることである。このことによりそのような並べ替え制御に必要なビット数が増え、特定のアプリケーションの制限を超えてしまいがちである（例えば、命令の即値に収めることが可能なビット数を超える）。また、並べ替え制御ビットを生成すなわち生成させる余計な時間が掛かる。
【図面の簡単な説明】
【０００５】
以下の記述および実施形態を説明する添付図面を参照することによって、本発明をよく理解することができる。
【０００６】
【図１】データ要素選択・統合命令の一実施形態を実行することができるプロセッサの実施形態のブロック図である。
【図２】データ要素選択・統合命令の一実施形態を実行するプロセッサ内の方法の一実施形態の流れ図である。
【図３】データ要素選択・統合操作の一実施形態のブロック図である。
【図４】ビットマスクと統合操作によるバイト選択の具体的な一例示的実施形態のブロック図である。
【図５】バイトマスクオペランドと統合操作によるバイト選択の具体的な一例示的実施形態のブロック図である。
【図６】一部の実施形態による、データ要素選択・統合命令を用いてネットワークパケットのデータ要素を処理する方法を示すブロック図である。
【図７Ａ】データ要素選択・統合命令の種々の実施形態のブロック図である。
【図７Ｂ】データ要素選択・統合命令の種々の実施形態のブロック図である。
【図７Ｃ】データ要素選択・統合命令の種々の実施形態のブロック図である。
【図８】適切な一組のパックデータレジスタの例示的実施形態のブロック図である。
【図９】適切な一組のパックデータ操作マスクレジスタの例示的実施形態のブロック図である。
【図１０】パックデータ操作マスクレジスタの一例示的実施形態およびそのビット数を示す略図である。このビット数をパックデータ操作マスクとして用い、および／あるいはパックデータ長およびデータ要素長に応じてマスク処理に用いる。
【図１１Ａ】インオーダー・パイプラインの一実施形態およびレジスタ名称変更アウトオブオーダー発行／実行パイプラインの一実施形態を説明するブロック図である。
【図１１Ｂ】実行エンジン部に連結された前段部を含むプロセッサコアの一実施形態のブロック図である。実行エンジン部と前段部は共にメモリ部に連結されている。
【図１２Ａ】ダイに搭載されたインターコネクトネットワークへの接続およびレベル２（Ｌ２）キャッシュのローカルサブセットを備える単一のプロセッサコアの一実施形態のブロック図である。
【図１２Ｂ】図１２Ａのプロセッサコアの一部の拡大図の一実施形態のブロック図である。
【図１３】プロセッサの一実施形態のブロック図である。コアを２つ以上、組込型メモリ制御器、および組込型画像機能を有していてもよい。
【図１４】コンピュータキテクチャの第１の実施形態のブロック図である。
【図１５】コンピュータキテクチャの第２の実施形態のブロック図である。
【図１６】コンピュータキテクチャの第３の実施形態のブロック図である。
【図１７】チップ搭載システムアーキテクチャの一実施形態のブロック図である。
【図１８】本発明の実施形態による、ソフトウェア命令変換器を使用してソース命令の組の二値命令を対象の命令の組の二値命令に変換するブロック図である。
【発明を実施するための形態】
【０００７】
本明細書に開示するのは、データ要素選択・統合命令と、この命令を実行するプロセッサと、上記命令を処理すなわち実行するときにこのプロセッサにより行われる方法と、１または複数のプロセッサを組み込んで上記命令を処理すなわち実行するシステムである。以下の説明の中で、多くの具体的な詳細（例えば具体的な命令操作、データ形式、プロセッサ構成、詳細なマイクロアーキテクチャ、操作順など）について述べる。しかし、これらの具体的な詳細を用いないで複数の実施形態を実践してもよい。他の例では、説明の理解を妨げないよう、既知の回路、構造、および技術の詳細は省略している。
【０００８】
図１は、データ要素選択・統合命令１０２の一実施形態を実行可能なプロセッサ１００の一実施形態のブロック図である。一部の実施形態では、このプロセッサは汎用プロセッサでよい（例えば、汎用の超小型プロセッサすなわち中央演算装置（ＣＰＵ）で、デスクトップ型コンピュータ、ノート型コンピュータ、または他のコンピュータに使用される種類のものでよい）。一側面では、このプロセッサは、ネットワークとパケットの両方あるいは片方と関連する処理が組み込まれたチップ搭載型システムの汎用のコアを表してもよい。一側面では、データ要素選択・統合命令によって、汎用プロセッサすなわちコアはネットワーク処理とパケット処理の両方あるいは片方をより効率的に実行できるようになる。あるいは、このプロセッサは専用のプロセッサでもよい。適切な専用プロセッサとしては、例えば、ネットワークプロセッサ、通信プロセッサ、パケットプロセッサ、内蔵型パケット処理エンジン、切り替えチップ、データ平面プロセッサ、暗号プロセッサ、画像プロセッサ、コプロセッサ、内蔵型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、および制御器（例えば超小型御器）などがあるがこれらに限定されない。プロセッサは任意の種々の複合命令セットコンピューティング（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピューティング（ＲＩＳＣ）アーキテクチャ、極長命令語（ＶＬＩＷ）アーキテクチャ、複合アーキテクチャ、他の種類のアーキテクチャを有していてもよく、あるいは異なるアーキテクチャを組み合わせて有していてもよい（例えば、別々のコアが別々のアーキテクチャを有していてもよい）。
【０００９】
操作中、プロセッサ１００はデータ要素選択・統合命令１０２を受け取ってもよい。例えば、この命令はインターコネクトされたメモリから受け取ってもよい。この命令は、マクロ命令、アセンブリ言語命令、機械コード命令、または他の命令を表してもよく、あるいはプロセッサの命令セットの制御信号を表してもよい。一部の実施形態では、データ要素選択・統合命令は、複数のデータ要素を有する第１のソースパックデータ・オペランド１１２を（例えば１または複数の領域または一組のビットで）明示的に特定、（例えば暗黙的に）表示、あるいは有していてもよい。一部の実施形態では、データ要素選択・統合命令は、対応する複数のマスク要素を有する第２のソースオペランド１０４を（例えば１または複数の領域または一組のビットで）明示的に特定、（例えば暗黙的に）表示、あるいは（例えば即値として）有していてもよい。ここに説明する実施形態では、第２のソースオペランド１０４は命令の即値を含み、いくつか例を挙げれば、４ビット即値（ｉｍｍ４）、８ビット即値（ｉｍｍ８）、１６ビット即値（ｉｍｍ１６）、あるいは３２ビット即値（ｉｍｍ３２）などがある。この即値はマスク要素としてマスクビットを有していてもよい。未マスクの各マスクビットは第１の値（例えば、ある潜在的規約によれば二値の「１」）を有していてもよく、既マスクのマスクビットは第２の異なる値（例えば、ある潜在的規約によれば二値の「０」）を有していてもよい。他の実施形態によれば、第２のソースオペランド１０４は必要に応じてソースパックデータ操作マスク１１６でもよく、必要に応じてこれを一組のパックデータ操作マスクレジスタ１１８に記憶してもよい。さらに別の実施形態によれば、第２のソースオペランド１０４を必要に応じて一組の汎用レジスタ１１９に記憶してもよい。さらに別の実施形態によれば、第２のソースオペランド１０４は必要に応じて第２のソースパックデータ・オペランドでもよく、必要に応じてこれを一組のパックデータレジスタ１１０に記憶してもよい。またこの命令で、結果パックデータ・オペランド１１４の宛先記憶位置を特定すなわち表示してもよい。一実施例として、命令はオペランドのレジスタ場所、メモリ場所、または他の記憶装置場所を特定するソースオペランド特定領域および／または宛先オペランド特定領域を有していてもよい。あるいは必要に応じて、これらのオペランドの１または複数は命令に暗黙的でもよい（例えば、命令の識別コードに暗黙的でもよい）。
【００１０】
再び図１を参照すると、プロセッサは復号ユニットすなわちデコーダ１０６を備える。この復号ユニットはデータ要素選択・統合命令を受け取って復号してもよい。復号ユニットは１または複数の比較的下位の命令または制御信号（例えば、１または複数のマイクロ命令、マイクロオペレーション、マイクロコード入力点、復号された命令または制御信号など）を出力してもよく、これらは比較的上位のデータ要素選択・統合命令を反映・表現するか、それから派生する。一部の実施形態では、復号ユニットはデータ要素選択・統合命令を受け取る１または複数の入力構造（例えばポート、インターコネクト、インタフェース）と、それに連結されデータ要素選択・統合命令を認識し復号する命令認識・復号論理回路と、それに連結され下位の命令または制御信号を出力する１または複数の出力構造（例えば、ポート、インターコネクト、インタフェース）を備えてもよい。復号ユニットは種々の異なる機構を用いて実装してもよく、そのような機構には、例えばマイクロコード読み取り専用メモリ（ＲＯＭ）、参照テーブル、ハードウェア実装、プログラム可能論理回路アレイ（ＰＬＡ）、および当業分野で知られている復号装置の実装に用いられている他の機構などがあるがこれらに限定されない。
【００１１】
一部の実施形態では、復号ユニットに直接設けられたデータ要素選択・統合命令の代わりに、必要に応じて命令エミュレータ、変換プログラム、変形プログラム、インタープリタ、または他の命令変換モジュールを用いてもよい。様々な種類の命令変換モジュールが当業分野で知られており、ソフトウェア、ハードウェア、ファームウェア、あるいはそれらの組み合わせに実装してもよい。一部の実施形態では、命令変換モジュールをプロセッサ以外、例えば独立したダイおよび／またはメモリなど（例えば、静的、動的、または実行時模倣モジュールとして）に配置してもよい。例えば、命令変換モジュールはデータ要素選択・統合命令を受け取り、これを第１の命令セットとし、これを模倣、変換、変形、解釈、または他の方法で１または複数の対応する中間命令または制御信号に変換してもよく、これが第２の別の命令セットでもよい。第２の命令セットの１または複数の中間命令または制御信号を復号ユニット（例えば復号ユニット１０６）に提供してもよく、復号ユニットはそれらを、プロセッサのネイティブハードウェア（例えば１または複数の実行ユニット）で実行可能な１または複数の下位の命令または制御信号に復号してもよい１または複数。
【００１２】
再び図１を参照すると、プロセッサ１００は一組のパックデータレジスタ１１０も備える。一部の実施形態では、プロセッサは一組の汎用レジスタ１１９を備えてもよい。一部の実施形態では、プロセッサは必要に応じて一組のパックデータ操作マスクレジスタ１１８も備える。これらのレジスタの各々が、データを記憶するダイ搭載記憶装置場所を表してもよい。例えばパックデータレジスタの各々は、パックデータ、ベクトルデータ、または単一命令・複数データ（ＳＩＭＤ）データを記憶してもよい。これらのレジスタは、ソフトウェアおよび／またはプログラマーには可視であるアーキテクチャ上で可視すなわち構造的レジスタを表してもよく、および／あるいはプロセッサの命令セットの命令で表示されてオペランドを識別するレジスタである。これらの構造的レジスタは、所与のマイクロアーキテクチャ内の他の非構造的レジスタ（例えば、一時レジスタ、再要求バッファ、リタイヤメントレジスタなど）と対比される。これらのレジスタは、よく知られた技術を用いて異なるマイクロアーキテクチャの異なる方法で実装してもよく、いかなる特定の種類の設計にも限定されない。適切な種類のレジスタの例は、専用物理レジスタ、レジスタ名称変更を用いて動的に割り当てられた物理レジスタ、およびその組み合わせなどだが、これらに限定されない。
【００１３】
一部の実施形態では、第１のソースパックデータ・オペランド１１２は、必要に応じてパックデータレジスタに記憶してもよく、結果パックデータ・オペランド１１４が記憶される宛先記憶位置は、同じパックデータレジスタでも、あるいは異なるパックデータレジスタのどちらでもよい。あるいは必要に応じて、これらのオペランドの１または複数に、複数のメモリ場所または他の複数の記憶装置場所を用いてもよい。一部の実施形態では、結果パックデータ・オペランド１１４の宛先記憶位置として、必要に応じてソースパックデータ・オペランド（例えば第１のソースパックデータ・オペランド１１２）に用いられるパックデータレジスタを再度用いてもよい。例えば、単一のソース・宛先レジスタをソースパックデータ・オペランドおよび結果パックデータ・オペランドの両方に使用することが、暗黙的すなわち黙示的に理解されてもよい。
【００１４】
再び図１を参照すると、実行ユニット１０８は復号ユニット１０６およびパックデータレジスタ１１０に連結されている。この実行ユニットは、１または複数の復号済あるいは別の変換済みの命令または制御信号を受け取ってもよい。この命令または制御信号はデータ要素選択・統合命令を表し、および／あるいはそれから派生したものである。実行ユニットは、複数のマスク要素を有する第１のソースパックデータ・オペランド１１２および第２のソースオペランド１０４（例えば即値１０４）も受け取ってもよい。実行ユニットは、データ要素選択・統合命令に応じておよび／またはその結果として（例えば命令から復号された１または複数の命令または制御信号に応じて）、結果パックデータ・オペランド１１４を命令が示す宛先記憶位置に記憶してもよい。一部の実施形態では、結果パックデータ・オペランド１１４は、即値１０４または他の第２のソースオペランド１０４の未マスクのマスク要素に対応し、結果パックデータ・オペランド１１４の一部に統合された第１のソースパックデータ・オペランド１１２の全てのデータ要素を含んでもよい。一部の実施形態では、結果パックデータ・オペランドは、第１のソースパックデータ・オペランドの内、第２のソースオペランドの既マスクのマスク要素に対応する全データ要素を除外してもよい。一部の実施形態では、第１のソースパックデータ・オペランドの未マスクのデータ要素は、結果パックデータ・オペランドの最下位部に統合してもよい。他の実施形態では、第１のソースパックデータ・オペランドの未マスクのデータ要素は、結果パックデータ・オペランドの最上位部に統合してもよい。一部の実施形態では、結果パックデータ・オペランドは図３〜５に示し説明したものの何れでもよい。但し本発明の範囲はそのように限定されない。
【００１５】
一部の実施形態では、未マスクのデータ要素の結果パックデータ・オペランドへの統合は、命令（例えば、命令の識別コード）に黙示的および／あるいは固定されていてよく、明示的に特定および／または定められていなくてもよい。例えば、命令はオペコードを有していてもよく、このオペコードは、未マスクのデータ要素が結果パックデータ・オペランドに統合されることを表示、すなわち特定する。すなわち、オペコードおよび／または命令は、具体的には未マスクのデータ要素を結果パックデータ・オペランドに統合するのに特化していてもよい。そのような専用および／または固定および／または暗黙的な機能をオペコードおよび／または命令に用いることにより、可変命令（例えば、完全並べ替えまたは順序変更命令）と共に使用する明示的制御（例えば明示的制御領域）を生成し使用する必要がない。一側面では、第１のソースパックデータ・オペランドのデータ要素および第２のソースオペランドのマスク要素がどのような具体的な配列にあろうとも、未マスクのデータ要素を結果パックデータ・オペランドに統合してよい。
【００１６】
有利なことに、データ要素選択・統合命令／操作によってデータ要素のサブセットを選択し、単一命令の実行の領域内で圧縮することができる。この圧縮操作は、後続処理のためにソースデータ要素から選択したサブセットのみ追加処理したい実施形態に有利である。一実施例として、最初のパケット復号の後、次のパケットのために、特定の浮動バイト（例えば、ソースアドレスおよび宛先アドレスならびにソースポートおよび宛先ポートを規定する４タプル）だけ選択・統合してもよく、そのようにするとこれらのパケットが同一の処理の流れに属していることを素早く確認することができる。他の一例として、比較的情報量が多いソースデータ要素（例えばパケット）のサブセットだけ選択し統合すると、これらの比較的情報量が多いバイトにハッシュ、チェックサム、または他の暗号関数を実行することができる。この方法では、暗号関数は、選択されないことがある比較的情報量が少ないデータ要素に実行する必要がない。他の考えられる使用法の一つには画像データのサブサンプリングがある。他の使用法は本発明の恩恵を受ける当業者には明らかである。１つの命令を用いて望ましいソースデータ要素を選択し、選択したソースデータ要素を追加の命令で統合することもできる（例えば、１または複数の命令で全てのオペランドを移動し、１または複数の命令でマスク化論理操作を実行したりできる）。しかし、とりわけデータ要素が多数の場合、単一のデータ要素選択・統合命令は、上記のような複数あるいは場合によっては多数の命令を含むソフトウェア実装の性能を向上させる一助となり得る。
【００１７】
上記の実行ユニットおよび／またはプロセッサは、特定の論理回路（例えばトランジスタ、集積回路、または潜在的にファームウェア（例えば不揮発性メモリに記憶された命令）および／またはソフトウェア）と組み合わせられている他のハードウェア）を備えてもよく、この論理回路はデータ要素選択・統合命令に応答しておよび／またはその命令の結果として、（例えば、データ要素選択・統合命令から復号した１または複数の命令または制御信号に応答して）データ要素選択・統合命令を実行し、その結果を記憶することができる。例えば、実行ユニットは数値論理回路ユニット、論理回路ユニットなどを備えてもよい。一部の実施形態では、実行ユニットは、ソースオペランドを受け取る１または複数の入力構造（例えばポート、インターコネクト、インタフェース）と、それと連結されていてソースオペランドを受け取って処理し結果オペランドを生成する回路または論理回路と、それと連結されていて結果オペランドを出力する１または複数の出力構造（例えば、ポート、インターコネクト、インタフェース）を備えてもよい。一部の実施形態では、ソースオペランドを処理し結果オペランドを生成する上記回路または論理回路は、必要に応じてデータ要素選択・経路設定論理回路を備えてもよい。例えば、データ要素を選択するマルチプレクサや選択したデータ要素を転送するインターコネクトがある。
【００１８】
説明を分かりやすくするため、比較的単純なプロセッサを図示して説明してきた。しかし、プロセッサは必要に応じて他のよく知られているプロセッサ要素を備えてもよい。そのような要素の潜在的実施例には以下のものがあるがこれらに限定されない。すなわち、汎用レジスタ、状態レジスタ（フラッグレジスタと呼ばれることがある）、システム制御レジスタ、命令取得ユニット、先取りバッファ、１次以上のキャッシュ（例えば、レベル１（Ｌ１）命令キャッシュ、Ｌ１データキャッシュ、およびＬ２データ／命令キャッシュ）、命令変換参照バッファ（ＴＬＢ）、データＴＬＢ、分岐予測ユニット、アウトオブオーダー実行ユニット（例えば、命令スケジューリング部、レジスタ名称変更および／または割り当てユニット、命令振り分けユニット、再要求バッファ（ＲＯＢ）、リザベーションステーション、メモリ要求バッファ、リタイヤメントユニットなど）、バスインタフェースユニット、アドレス生成ユニット、デバッグユニット、性能監視ユニット、電源管理ユニット、プロセッサに含まれる他の構成要素、およびこれらの種々の組み合わせがある。そのような構成要素は、種々の異なる適切な組み合わせでおよび／または当業分野で知られている構成で連結してよい。実施形態は、知られているそのような組み合わせすなわち構成のどれにも限定されない。さらに、実施形態を、少なくとも１つがデータ要素選択・統合命令を実行するよう機能する複数のコアを有するプロセッサに設けてもよい。
【００１９】
図２は、データ要素選択・統合命令の一実施形態を実行するプロセッサの方法２２０の一実施形態の流れ図である。一部の実施形態では、方法２２０を図１のプロセッサ１００あるいはその内部で実行してもよい。プロセッサ１００に関して本明細書に記載した構成要素、機能、および特定の任意選択の細部を、必要に応じて方法２２０に適用する。あるいは方法２２０を、類似または異なるプロセッサあるいは他の装置で、あるいはその内部で実行してもよい。さらにプロセッサ１００は、方法２２０の方法と同じまたは類似の、または異なる方法を実行してもよい。
【００２０】
この方法はブロック２２１でデータ要素選択・統合命令を受け取ることを含む。様々な側面において、プロセッサまたはその一部（例えば、命令取得ユニット、復号ユニット、バスインタフェースユニットなど）で命令を受け取ってもよい。様々な側面において、命令は、プロセッサの外部のおよび／またはダイに搭載されていない供給源（例えば、メモリ、インターコネクトなど）から、あるいはプロセッサ内のおよび／またはダイに搭載の供給源（例えば、命令キャッシュ、命令待ち行列など）から受け取ってもよい。データ要素選択・統合命令は複数のデータ要素を有する第１のソースパックデータ・オペランドを特定、表示、あるいは有していてもよく、複数のマスク要素を有する第２のソースオペランドを特定、表示、あるいは有していてもよい。第２のソースオペランドの各マスク要素は第１のソースパックデータ・オペランドの異なるデータ要素に対応していてもよい（例えば、オペランド内の同じビット位置、同じ相対位置にあってもよい）。
【００２１】
結果パックデータ・オペランドは、ブロック２２２でデータ要素選択・統合命令に応答しておよび／またはその結果として宛先記憶位置に記憶されてもよい。この宛先記憶位置をデータ要素選択・統合命令が特定すなわち表示してもよい。一部の実施形態では、結果パックデータ・オペランドは、第２のソースオペランドの未マスクのマスク要素に対応し、結果パックデータ・オペランドの一部に統合された第１のソースパックデータ・オペランドの全てのデータ要素を含んでもよい。
【００２２】
説明した方法はアーキテクチャ上の操作（例えば、ソフトウェアから可視の操作）を含む。他の実施形態によれば、本方法は必要に応じて１または複数のマイクロアーキテクチャ上の操作を含む。例えば、命令を取得、復号、アウトオブオーダー的に予定してもよく、ソースオペランドにアクセスしてもよく、実行ユニットはマイクロアーキテクチャ上の操作を実行してこの命令を実行してもよい。一部の実施形態では、命令を実行するマイクロアーキテクチャ上の操作は、必要に応じてビットマスクの各ビットを第１のソースパックデータ・オペランドのデータ要素と同じ大きさに拡張し、拡張されたデータ要素マスクおよび第１のソースパックデータ・オペランドに論理的操作（例えば論理的ＡＮＤ）を実行する。ただしこれは必須ではない。
【００２３】
図３は、データ要素選択・統合命令の一実施形態に応じて実行してもよいデータ要素選択・統合操作３３０の一実施形態を説明するブロック図である。この命令は、複数のパックデータ要素Ｅ０〜ＥＮを有する第１のソースパックデータ・オペランド３１２を（例えば１または複数の領域または一組のビットの中で）明示的に特定、（例えば暗黙的に）表示、あるいは有していてもよい。
【００２４】
第１のソースパックデータ・オペランド３１２内のデータ要素Ｅ０〜ＥＮの数は変化してもよい。通常、データ要素Ｅ０〜ＥＮの数は、第１のソースパックデータ・オペランドのビット数を１つのデータ要素（例えばＥ０）のビット数で分った数と同じでよい。種々の実施形態によれば、第１のソースパックデータ・オペランドの大きさすなわちビット幅は６４ビット、１２８ビット、２５６ビット、５１２ビット、あるいは１０２４ビットでもよい。ただし本発明の範囲はそのように限定されない。一部の実施形態では、各データ要素（例えばＥ０）の大きさすなわちビット幅は８ビット、１６ビット、３２ビット、あるいは６４ビットでもよい。ただし本発明の範囲はそのように限定されない。代表的実施例をいくつか挙げると、１２８ビットパック８ビットバイト形式は８ビットバイトデータ要素を１６個、１２８ビットパック１６ビットデータ要素形式は１６ビットデータ要素を８個、２５６ビットパックバイト形式は８ビットバイトデータ要素を３２個、２５６ビットパック１６ビットデータ要素形式は１６ビットデータ要素を１６個、および２５６ビットパック３２ビットデータ要素形式は３２ビットデータ要素を８個含んでもよい。一部の実施形態では、データ要素選択・統合操作の最大効率を得るべく、第１のソースパックデータ・オペランドには、少なくとも８個、少なくとも１６個、あるいは１６個より多い（例えば３２個、６４個など）データ要素Ｅ０〜ＥＮが存在し得る。
【００２５】
一部の実施形態では、命令は第１のソースパックデータ・オペランドのデータ要素の大きさすなわちビット幅を示す１または複数のビットおよび／または領域の組を有していてもよい。例えば、２ビット領域はデータ要素の４つの異なる大きさを示す４つの異なる値（例えば、８ビットには００、１６ビットには０１、３２ビットには１０、および６４ビットには１１）を有していてもよい。他の実施形態では、第１のソースパックデータ・オペランドのデータ要素の大きさすなわちビット幅を、必要に応じてレジスタ（例えばモードレジスタ）内で特定、あるいは表示してもよい。例えば、モードレジスタ内の第１の値は、パックデータレジスタのデータ要素を８ビットバイト要素であると解釈することを示し、モードレジスタ内の第２の値は、パックデータレジスタのデータ要素を１６ビットデータ要素であると解釈することを示してもよい。
【００２６】
また命令は、対応する複数のマスク要素Ｍ０〜ＭＮを有する第２のソースオペランド３０４を、（例えば１または複数の領域または一組のビットで）明示的に特定、（例えば暗黙的に）表示、あるいは（例えば即値として）有していてもよい。第２のソースオペランドは、第１のソースパックデータ・オペランドの各対応する異なるデータ要素（Ｅ）に対し異なるマスク要素（Ｍ）を有していてもよい。第２のソースオペランドの各マスク要素（Ｍ）は、第１のソースパックデータ・オペランドの異なるデータ要素（Ｅ）に対応していてもよい（例えば、オペランド内の同じビット位置、同じ相対位置にあってもよい）。例えばＥ０はＭ０に、Ｅ１はＭ１にという様に対応していてもよい。これは、対応するデータ要素およびマスク要素がオペランド内の相対的に対応する位置にある場合に都合がよいことが多い。但しこれは必須では無く、必要に応じて他の対応のための規約を用いてもよい。
【００２７】
一部の実施形態では、各マスク要素は単一マスクビットでもよい。あるいは必要に応じて、各マスク要素に２ビット以上も用いてもよい。例えば各マスク要素は、第１のソースパックデータ・オペランド内の各対応するデータ要素と同じビット数を有していてもよい（例えば、８ビット、１６ビット、３２ビットなど）。実際上、マスクビットとして認識されるがデータ要素（例えば最上位または最下位ビット）に含まれている単一ビットを含む具体的実装について望ましい場合、マスク要素にどのようなビット数も用いられ得る。一部の実施形態によれば、第２のソースオペランドはビットマスクオペランドを表してもよく、マスクビットをマスク要素として有していてもよい。そのようなビットマスクオペランドを異なる実施形態において異なる方法で提供してもよい。一部の実施形態によれば、第２のソースビットマスクオペランドは命令の即値を表してもよい。他の実施形態によれば、第２のソースビットマスクオペランドはパックデータ操作マスクレジスタ（例えば、レジスタ１１８および／または９１８の１つ）に記憶してもよい。さらに別の実施形態によれば、第２のソースビットマスクオペランドは汎用レジスタ（例えばレジスタ１１９の１つ）に記憶してもよい。あるいは、ビットマスクオペランドの代わりに、第２のソースオペランドはパックデータ要素マスクオペランドを表してもよく、データ要素をマスク要素として有していてもよい。例えば、第２のソースパックデータ要素マスクオペランドはパックデータレジスタ（例えば、パックデータレジスタ１１０および／または８１０の１つ）に記憶してもよい。
【００２８】
各マスク要素は、第１のソースパックデータ・オペランドの対応するデータ要素を結果パックデータ・オペランドに出現させるか否か、条件付きで制御すなわちマスク処理することができる。このマスク処理はデータ要素の粒度ごとに実行され、各異なるデータ要素をマスクするかあるいはマスクせず他から分離および／または切り離すようにする。未マスクの各マスク要素は第１の値（例えば、ある潜在的規約によれば値「１」）を有し、対応するデータ要素を選択して結果パックデータ・オペランド３１４のデータ要素の統合すなわちグループ化された組に含めてもよく、既マスクの各マスク要素は第２の異なる値（例えば、ある潜在的規約によれば値「０」）を有し、対応するデータ要素を結果パックデータ・オペランドのデータ要素の統合すなわちグループ化された組から除外してもよい。この説明はこの規約に当てはまる。対応するデータ要素をこの統合された組から選択あるいは除外する値に対して種々の他の規約が可能である。
【００２９】
データ要素選択・統合命令／操作に応答して、結果パックデータ・オペランド３１４を（例えば実行ユニット３０８で）生成させ、宛先記憶位置に記憶することができる。この宛先記憶位置は、命令が特定あるいは表示してもよい。一部の実施形態では、宛先記憶位置はパックデータレジスタでも、メモリ場所でも、あるいは他の記憶装置場所でもよい。一部の実施形態によれば、結果パックデータ・オペランド３１４は、第２のソースオペランド３０４の未マスクのマスク要素に対応し、結果パックデータ・オペランド３１４の一部に統合された第１のソースパックデータ・オペランド３１２の全てのデータ要素を含んでもよい。本説明に用いた規約によれば、既マスクのマスク要素は値「０」を有し、未マスクのマスク要素は値「１」を有する。ただし本発明の範囲はそのように限定されない。説明した実施例では、データ要素Ｅ１、Ｅ２、Ｅ３、およびＥ５は未マスクのマスク要素Ｍ１、Ｍ２、Ｍ３、およびＭ５に対応し、データ要素Ｅ０、Ｅ４、およびＥＮは既マスクのマスク要素Ｍ０、Ｍ４、およびＭＮに対応する。図示のように、一部の実施形態によれば、未マスクのすなわち選択されたデータ要素（例えばＥ１、Ｅ２、Ｅ３、およびＥ５）は、統合・選択されたすなわち未マスクのデータ要素の組として結果パックデータ・オペランドの最下位部に統合され、第１のソースパックデータ・オペランド内で見える順序すなわち配置順序と同じ順序で出現すなわち配置されてもよい。あるいは、未マスクのすなわち選択されたデータ要素は、必要に応じて結果パックデータ・オペランドの最上位桁に統合され、第１のソースパックデータ・オペランド内で見える順序すなわち配置順序と同じ順序で出現すなわち配置されてもよい。これを実現するために考えられる種々の方法には、未マスクのすなわち選択されたデータ要素の適切な位置への経路設定、移動、再配置、複写、あるいは記憶などがある。
【００３０】
結果パックデータ・オペランド内では、統合された未マスクのデータ要素（例えばＥ１、Ｅ２、Ｅ３、およびＥ５）は既マスクのデータ要素（例えばＥ０、Ｅ４、およびＥＮ）を全て省いてもよい。すなわち、統合された未マスクのデータ要素の間には、いかなる既マスクのデータ要素も配置されていなくてよい。例えば、第１のソースオペランドの中でＥ４はＥ３とＥ５の間に配置されているが、結果パックデータ・オペランドの中ではＥ５とＥ３は統合されて互いに隣同士にあり、その間にＥ４は配置されていない。つまり、既マスクのデータ要素が間に分散した未マスクのデータ要素のサブセットは統合すなわち圧縮され、結果オペランドの最下位部または最上位部に記憶される。一部の実施形態によれば、既マスクのデータ要素（例えばＥ０、Ｅ４、およびＥＮ）は単に廃棄すなわち消去してもよく、必ずしも上記宛先記憶位置に移動する必要はない。そのような場合、および統合された未マスクのデータ要素が結果オペランドの最下位部に記憶されたとき、未マスクのデータ要素の全数を記憶するのに必要なビットより上位のビットに、必要に応じて所定の値を記憶してもよい。例えば説明に図示したように、これらのビットすなわちデータ要素は、必要に応じて結果パックデータ・オペランドでは「０」でもよい。他の方法として、これらのビットに「０」を記憶するのではなく、既存のビットすなわちデータを変えずに残すこともできる。これはメモリ帯域幅アクセスを減らす。プロセッサは統合されるデータ要素の数を知り、それによって統合後の要素の範囲を知ってもよい。さらに別の方法として、他の実施形態によれば、既マスクのデータ要素（例えばＥ０、Ｅ４、およびＥＮ）は、必要に応じて統合された未マスクのデータ要素の記憶に使用しない結果パックデータ・オペランドの別の部分に経路を設定、移動、複写、あるいは記憶してもよい。
【００３１】
一部の実施形態では、結果の中に統合された未マスクのデータ要素の数を示す値を、必要に応じて命令に応答して（例えば汎用のまたは他のレジスタに）記憶してもよい。例えば図４では、必要に応じて８を示す値を記憶して、８つの未マスクのデータ要素が結果内に統合されていることを示してもよい。この方法によれば、結果内の統合された未マスクのデータ要素の数だけアクセスすればよく、この数を別途計算する必要がない。ただしこれは任意であって必須ではない。この側面を本明細書に開示した他の実施形態（例えば図１〜５）で使用してもよい。
【００３２】
図４は、ビットマスクおよび統合操作４３０によるバイト選択の具体的な一例示的実施形態を説明するブロック図であって、ビットマスクと統合命令によるバイト選択の一実施形態に応じて実行してもよい。図４の例示的操作には図３のより一般化した操作と類似点がある。説明を分かりやすくするため、先ず図４の例示的操作の異なる特徴事項および／または追加の特徴事項を説明し、図３のより一般化した操作に関連する任意の類似すなわち共通の全ての特徴事項および詳細は繰り返さない。しかし当然のことだが、先に説明した図３のより一般化した操作の特徴事項および詳細を、必要に応じて図４の例示的操作に適用してもよい。ただし、断りがある、あるいは明らかである場合（例えばビットマスクではなくデータ要素マスクに関連する場合など）を除く。
【００３３】
この例示的実施形態によれば、命令は、１６個の８ビットバイトデータ要素Ｂ０〜Ｂ１５を有する第１の１２８ビットソースパックバイトオペランド４１２を特定、表示、あるいは有する。これは単なる一例である。他の実施形態はもっと狭い（例えば６４ビット）オペランドあるいはもっと広い（例えば２５６ビット、５１２ビット、１０２４ビット）オペランドのどちらかを有していてもよく、他の大きさのデータ要素（例えば１６ビットデータ要素、３２ビットデータ要素、６４ビットデータ要素など）を有していてもよい。
【００３４】
図４の例示的実施形態によれば、命令は、１６個のマスクビットを有する第２の１６ビットソースビットマスクオペランド４０４を特定、表示、あるいは有していてもよい。これらのビットの各々は、オペランド内の同じ相対位置にある第１のソースパックバイトオペランドのバイト（例えば、説明の中で垂直に整列したデータ要素）に対応する。各未マスクのマスクビットは第１の値（例えば、可能な一規約によれば二値の「１」。説明はこれを採用している）を有していてもよく、各既マスクのマスクビットは第２の異なる値（例えば、説明に採用の規約によれば二値の「０」）を有していてもよい。具体的には、説明の実施例では、これらのビットの値は、右側の最下位端から左側の最上位端まで［００１１１０１０１０００１１０１］である。これはビット値の組の単なる一例である。この実施例によれば、バイトＢ０、Ｂ１、Ｂ５、Ｂ７、Ｂ９、Ｂ１０、Ｂ１１、およびＢ１４は既マスクのバイトであり、バイトＢ２、Ｂ３、Ｂ４、Ｂ６、Ｂ８、Ｂ１２、Ｂ１３、およびＢ１５は未マスクのバイトである。当然のことだが、他の実施形態はもっと狭いあるいは広いビットマスクオペランドのどちらかを使用してもよい（例えば、別のソースパックデータ・オペランドでは各データ要素に対して１ビット）。
【００３５】
データ要素マスク（例えばバイトマスク）と比較してビットマスクの考えられる利点の一つは、マスクの移送および／または利用に関連する資源の利用／消費を削減し易いことである。削減を見込める資源利用／消費の潜在的種類の代表例は、具体的な実装にもよるが、メモリバス、中央演算装置（ＣＰＵ）、画像処理部（ＧＰＵ）、チップ搭載システム（ＳｏＣ）インターコネクト、ネットワークインタフェース、汎用入力バスおよび／または出力（Ｉ／Ｏ）バス、キャッシュポート帯域幅、プロセッサ再要求バッファ、読み込みバッファ、メモリ結合バッファ、キャッシュライン、物理メモリと仮想メモリなどに関連するものであるがこれらに限定されない。
【００３６】
一部の実施形態では、第２の１６ビットソースビットマスクオペランド４０４は命令の即値を表してもよい。例えば、１６マスクビットは必要に応じて１６ビット、２０ビット、３２ビット、または他の大きさの即値に記憶してもよい。一部の実施形態によれば、即値のマスクビットは実行時に決定してもよい（例えばパケットプロトコル復号器で後述するように、あるいは実行時コンパイラで決定してもよい）。他の実施形態では、第２の１６ビットソースビットマスクオペランドは必要に応じてパックデータ操作マスクレジスタ（例えば、レジスタ１１８および／または９１８の１つ）に記憶してもよい。一側面では、パックデータ操作マスクレジスタは第一にプレディケーション関数専用でもよい。一側面では、プロセッサの命令セットの他の命令は、パックデータ操作マスクレジスタをプレディケーション関数オペランドとして示して、パックデータ操作（例えば、パック乗算操作、パック加算操作、パック回転操作、パック比較操作など）をプレディケーションしてもよい。さらに別の実施形態によれば、第２の１６ビットソースビットマスクオペランドは必要に応じて汎用レジスタ（例えばレジスタ１１９の１つ）に記憶してもよい。
【００３７】
結果パックデータ・オペランド４１４は（例えば実行ユニット４０８で）生成してもよく、命令／操作に応答して宛先記憶位置に記憶してもよい。一部の実施形態によれば、結果パックデータ・オペランドは、第２のソースビットマスクオペランド４０４の未マスクのマスクビットに対応し、結果パックデータ・オペランド４１４の一部に統合された第１のソースパックバイトオペランド４１２の全てのデータ要素を含んでもよい。図示のように、未マスクのバイト（例えば、Ｂ２、Ｂ３、Ｂ４、Ｂ６、Ｂ８、Ｂ１２、Ｂ１３、およびＢ１５）は、結果パックデータ・オペランドの最下位部（例えば、最下位の８バイト）に統合してもよい。全ての未マスクのバイト（例えばこの場合最上位の８バイト）の記憶に不要な結果パックデータ・オペランドの最上位のバイトは、必要に応じて所定の値を有していてもよい（例えば、全て「０」にする）。もう一つの選択肢として、これらのビットに「０」を記憶するのではなく、既存のビットすなわちデータのまま残すことができる。この方法はメモリ帯域幅アクセスの削減が容易になる。プロセッサは統合されるデータ要素の数を知り、それによって統合後の要素の範囲を知ってもよい。あるいは、未マスクのバイトを必要に応じて結果パックデータ・オペランドの最上位部あるいは他の部分に統合してもよい。ここに説明する実施形態では、既マスクのバイト（例えば、Ｂ０、Ｂ１、Ｂ５、Ｂ７、Ｂ９、Ｂ１０、Ｂ１１、およびＢ１４）は結果パックデータ・オペランドから省いてもよい。あるいは、他の実施形態では、既マスクのバイトを必要に応じて統合し、未マスクのバイトの記憶に使用しない結果パックデータ・オペランドの他の部分に記憶してもよい。
【００３８】
図５は、バイトマスクオペランドと統合操作５３０によるバイト選択の具体的な一例示的実施形態を説明するブロック図である。このバイトマスクオペランドと統合操作５３０は、ビットマスクと統合命令によるバイト選択の一実施形態に応じて実行してもよい。図５の例示的操作には図３のより一般化した操作と特定の類似点がある。説明を分かりやすくするため、図５の例示的操作の異なる特徴事項および／または追加の特徴事項を先ず説明し、図３のより一般化した操作に関連した任意の類似的すなわち共通の特徴事項と詳細については、その全てを繰り返すことはしない。しかし、当然のことだが、上述の図３のより一般化した操作の特徴事項と詳細を必要に応じて図５の例示的操作に適用してもよい。ただし、断りがある、あるいは明らかである場合（例えば、バイトマスクではなくビットマスクに関連するなど）を除く。
【００３９】
この例示的実施形態によれば、命令は、８ビットバイトデータ要素を１６個有する第１の１２８ビットソースパックバイトオペランド５１２を特定、表示、あるいは有する。他の実施形態は上述のように、より狭い（例えば６４ビット）またはより広い（例えば２５６ビット、５１２ビット、１０２４ビット）オペランドのどちらかを有していてもよく、他の大きさのデータ要素（例えば１６ビットデータ要素、３２ビットデータ要素、６４ビットデータ要素など）を有していてもよい。
【００４０】
この例示的実施形態によれば、命令は、マスクバイトを１６個有する第２の１２８ビットソースパックバイトマスクオペランド５０４を特定、表示、あるいは有する。これらのマスクバイトの各々は、オペランド内の同じ相対位置（例えば、説明で垂直方向に揃えて図示した同じビット位置）にある第１のソースパックバイトオペランドのバイトに対応する。各未マスクのマスクバイトは第１の値（例えば、説明に用いたある潜在的規約によれば全て「１」の［１１１１１１１１］）を有していてもよく、各既マスクのマスクビットは第２の異なる値（例えば、説明に用いたある潜在的規約によれば全て「０」の［００００００００］）を有していてもよい。説明の実施例によれば、第１のソースパックバイトオペランドのビット［７：０］の最下位バイトおよびビット［１２７：１２０］の最上位のバイトは既マスクのバイトであり、ビット［１５：８］と［２３：１６］のバイトは未マスクのバイトである。一部の実施形態によれば、第２の１２８ビットソースバイトマスクオペランド５０４は、必要に応じてパックデータレジスタ（例えば、レジスタ１１０および／または８１０の１つ）に記憶してもよい。あるいは、必要に応じてメモリ場所または他の記憶装置場所を用いてもよい。
【００４１】
結果パックデータ・オペランド５１４を（例えば実行ユニット５０８で）生成し、命令／操作に応答して宛先記憶位置に記憶してもよい。一部の実施形態によれば、結果パックデータ・オペランドは、第２のソースバイトマスクオペランド５０４の未マスクのマスクバイトに対応し、結果パックデータ・オペランド５１４の一部に統合された第１のソースパックバイトオペランド５１２の全てのデータ要素を含んでもよい。図示のように、ビット［１５：８］と［２３：１６］の未マスクのバイトは、結果パックデータ・オペランドの最下位部に統合してもよい。全ての未マスクのバイトの記憶に不要な結果パックデータ・オペランドの最上位のバイトは、必要に応じて所定の値を有していてもよい（例えば全て「０」にする）。あるいは、未マスクのバイトは、必要に応じて結果パックデータ・オペランドの最上位部または他の部分に統合してもよい。ここに説明する実施形態によれば、結果パックデータ・オペランドは既マスクのバイトを全て除外すなわち省いてもよい。あるいは、既マスクのバイトは必要に応じて統合し、未マスクのバイトの記憶に使用しない結果パックデータ・オペランドの他の部分に記憶してもよい。
【００４２】
本明細書に開示されたデータ要素選択・統合命令は汎用命令であり、種々の異なる目的に使用することができる。これらの命令を単独であるいは他の命令と組み合わせて使用して、具体的なアプリケーション、アルゴリズム、またはコードに便利な種々の異なる方法でデータ要素を選択および統合してもよい。これらの命令の考えられる一つの使用法は、ネットワークパケットのデータ要素を選択し統合することである。例えば、ネットワークパケットのデータフロー用のソースおよび宛先アドレスならびにソースおよび宛先ポートを定義する４タプルのデータ要素を表すパケットのフローデータ要素を抽出してもよい。これらのフロー要素の抽出は、例えばコンテクスト参照の実行などネットワーク利用時の種々の異なる目的に便利な場合がある。パケット処理および／またはネットワーク利用に伴う種々の他の使用法には、１または複数のヘッダーチェックサムの目的のためのパケットの様々な部分の選択と統合、部分電子署名の計算、ＡＲＰキャッシュ、パケット切り替えまたは他の転送、選別、内容に基づく負荷分散、パケットの内容の検索、パケット分類、および用途に合わせたネットワーク構築などがあるがこれらに限定されない。別の一側面では、これらの命令をネットワーク構築または他の用途に用いて、暗号関数（例えば、ハッシュ、チェックサムなど）へ入力するデータ要素（例えば、比較的情報量が多いデータ要素）を選択し統合してもよい。さらに別のこれら命令の潜在的使用法は、画像データの二段抽出用のデータ要素を選択し統合することである。さらに別の使用法は、拡張マークアップ言語（ＸＭＬ）処理、データベースアプリケーション、画像処理、および圧縮処理の速度向上である。本発明の恩恵を受ける当業者には、種々の他の用途は明らかである。特定の概念をさらに説明するため、ネットワークパケットの処理にデータ要素選択・統合命令６０２を用いる詳細な実施例を挙げる。但し、本発明の範囲はこれに限定されない。
【００４３】
図６は、プロセッサ６００の一例示的実施形態のブロック図であり、一部の実施形態によるデータ要素選択・統合命令６０２を用いてネットワークパケットのデータ要素を処理する方法を示している。本プロセッサはプロトコル復号器６６２を備える。このプロトコル復号器はネットワークパケットを（例えばネットワークインタフェースから）受け取るために連結されている。プロトコル復号器はこれらのネットワークパケットのネットワークプロトコルを復号する。これは従来の方法で実施してもよい。一部の実施形態によれば、プロトコル復号器はソフトウェアモジュールとして実装してもよい（例えば、プロセッサの外にあるメモリに記憶する）。そのようなプロトコル復号器モジュールは、より多種多様のプロトコルをさらに柔軟に復号するために使用されることが多い。他の実施形態では、プロトコル復号器はダイおよび／またはプロセッサに搭載されたハードウェアに実装してもよい。例えば、ハードウェアプロトコル復号器は、必要に応じて比較的一般的に使用されるプロトコル用に装備してもよい。
【００４４】
再び図６を参照すると、プロトコル復号器は第１のパケット６６０−１を受け取ってもよい。プロトコル復号器は第１のパケットのプロトコルを厳密に復号すなわち決定してもよい。プロトコル復号の出力は全ての関連する階層（例えばＴＣＰ／ＩＰＶ４）のプロトコルの決定である。これを元に、プロトコル復号器はマスクを生成する。例えば、プロトコル復号器は即値ビットマスク６０４（例えば即値１０４に類似）を生成して復号ユニット６０６に提供してもよい。即値ビットマスクまたは他のマスクで、同じフローのおよび／または同じネットワークプロトコルを第１のパケットとして使用する対象パケットの特定のデータ要素を選択してもよい。
【００４５】
その後、同じフローまたは接続の第２のパケット６６０−２をプロトコル復号器で受け取ってもよい。プロトコル復号器すなわちヘッダ抽出構成要素または他の構成要素（図示せず）は、第２のパケットのヘッダの少なくとも一部をパックデータ・オペランド６１２として受け取ってもよい。パックデータ・オペランド６１２は第２のパケットヘッダーの複数のパックデータ要素を有していてもよい。上述のようにオペランドは一組のパックデータレジスタ６１０に記憶してもよい。
【００４６】
パックデータ・オペランド６１２を示すデータ要素選択・統合命令６０２を、復号ユニット６０６が受け取ってもよい。また復号ユニットはマスク（例えば即値ビットマスク６０４）を受け取ってもよい。復号ユニットは命令を上述のように復号し、実行ユニット６０８を制御してソースパックデータ・オペランド６１２とマスクを用いるデータ要素選択・統合操作を実行、結果パックデータ・オペランド６１４を記憶できるようにする。結果パックデータ・オペランドは第２のパケットのヘッダの統合された選択／未マスクデータ要素を有していてもよい。
【００４７】
第２のパケットのヘッダのどの特定データ要素が選択されるかは具体的な実装によって決まる。一部の実施形態によれば、フローバイトすなわち要素を選択、統合してもよい。例えば、プロトコル復号器はプロトコル復号に基づいて第２のパケットのヘッダ内にあるフローバイトの位置（例えば、ＴＣＰ／ＩＰソース／宛先アドレスとソース／宛先ポート番号）を知ることができる。プロトコル復号器はマスクを生成して（例えば、フローバイトの各々には未マスクのマスク要素を、および他のバイトには既マスクのマスク要素を生成して）、これらのフローバイトを未マスクにすなわち選択するようにしてもよい。これらのフローバイトを抽出、統合して他の操作を容易にしてもよい。例えば、他の構成要素６６４がこれらのフローバイトを用いてＲＳＳ検索などにコンテクスト参照を実行してもよい。これにより、パケット処理中の演算的に高価な操作になり易いフロー抽出速度を上げてもよい。他の実施形態では、プロトコルバイトすなわち他の要素を選択、統合してもよい。この方法により後続パケットのプロトコルを迅速に試験することができるようにし、上記のような厳格なプロトコル復号を行う必要をなくしてもよい。さらに別の実施形態によれば、第２のパケットヘッダー内の対象の他のバイトすなわちデータ要素を選択、統合してもよい。例えば、ヘッダの比較的情報量の多い要素を抽出したら、他の構成要素６６４例えば暗号化モジュールでこの比較的情報量の多い要素にハッシュまたは他の暗号化操作を実行してもよい。
【００４８】
図７Ａは、データ要素選択・統合命令７０２Ａの第１の実施形態のブロック図である。この命令は操作コードすなわちオペコード７４０Ａを含む。このオペコードは、実行する命令および／または操作（例えばデータ要素選択・統合操作）を特定可能な複数のビットすなわち１または複数の領域を示してもよい。命令は、第１のソースパックデータ・オペランドを指定する第１のソースパックデータ・オペランド指定子７４２Ａを含んでもよい。命令は必要に応じて、結果パックデータ・オペランドを記憶する宛先記憶位置を指定する宛先指定子７４４Ａを含んでもよい。例えば、これらの指定子（７４２Ａ、７４４Ａ）の各々は一組のビットすなわち１または複数の領域を備えて、関連するオペランド用のレジスタ、メモリ場所、または他の記憶装置場所のアドレスを明示的に特定してもよい。あるいは、別の実施形態によれば、指定子の１または複数は必要に応じて命令に黙示的（例えば、オペコードに黙示的）でもよい。例えば命令が、明示的に特定する必要がないソースおよび／または宛先として黙示的固定レジスタを有していてもよい。他の実施例として、一部の実施形態では、宛先指定子７４４Ａの代わりに、第１のソースパックデータ・オペランドに使用される同じレジスタまたは他の記憶装置場所を、必要に応じて宛先記憶位置として黙示的に用いてもよい。例えば命令が、別々のソース指定子７４２Ａおよび宛先指定子７４４Ａを１つのソース／宛先指定子で置換し、この１つのソース／宛先指定子でレジスタまたは他の記憶装置場所を指定し、これらを先ずソースオペランドとして使用し、その後結果オペランドの記憶に使用してもよい。この実施形態によれば、命令は即値７０４も有するソースビットマスクオペランドを提供する。一部の実施形態によれば、命令は必要に応じてデータ要素サイズ指定子７４６Ａを有する、第１のソースパックデータ・オペランドのデータ要素量を特定あるいは少なくとも表示してもよい。データ要素サイズ指定子は１または複数のビットすなわち領域を含んでもよい。
【００４９】
図７Ｂは、データ要素選択・統合命令７０２Ｂの第２の実施形態のブロック図である。この命令は、操作コードすなわちオペコード７４０Ｂ、第１のソースパックデータ・オペランド指定子７４２Ｂ、任意選択の宛先指定子７４４Ｂ、および任意選択のデータ要素サイズ指定子７４６Ｂを含む。これらの各々は、命令７０２Ａの対応する名称の構成要素と同じでもあるいは類似でもよく、同じ変更要素や代替要素があってもよい。この実施形態によれば、即値７０４の代わりに、命令７０２Ｂは必要に応じてパックデータ操作マスク指定子７４８を含む。このパックデータ操作マスク指定子はパックデータ操作マスクレジスタを特定してもよい。あるいは、パックデータ操作マスクレジスタを暗黙的に表示してもよい。
【００５０】
図７Ｃは、データ要素選択・統合命令７０２Ｃの第３の実施形態のブロック図である。この命令は、操作コードすなわちオペコード７４０Ｃ、第１のソースパックデータ・オペランド指定子７４２Ｃ、任意選択の宛先指定子７４４Ｃ、および任意選択のデータ要素サイズ指定子７４６Ｃを含む。これらの各々は、命令７０２Ａの対応する名称の構成要素と同じでもあるいは類似でもよく、同じ変更要素や代替要素があってもよい。この実施形態によれば、即値７０４および／またはパックデータ操作マスク指定子７４８の代わりに、命令７０２Ｃは必要に応じて第２のソースパックデータ・オペランド指定子７５０を含む。第２のソースパックデータ・オペランド指定子７５０は、第２のソースパックデータレジスタまたは他のパックデータ・オペランド記憶装置場所を明示的に特定し、ここにパックデータ要素マスクを記憶してもよい。あるいは、必要に応じて黙示的記憶装置場所をパックデータ要素マスクに用いてもよい。
【００５１】
言うまでもないことだが、これらは適切な命令を説明するいくつかの単なる例示的実施形態である。別の実施形態は指定子のサブセットを備えるか、別の指定子または領域を追加してもよい。また、説明した領域の順序／配置は必須ではなく、これらの領域を様々に配列し直してもよい。さらに、領域は連続したビット配列を含む必要はなく、むしろ不連続なすなわち離散したビットなどを含んでもよい。一部の領域は重なり合うことがあってもよい。一部の実施形態では、命令形式は本明細書のどこかで説明した命令形式（例えば、ＶＥＸまたはＥＶＥＸコード化形式すなわち命令形式）を有していてもよい。但し、本発明の範囲はこれらに限定されない。
【００５２】
図８は、適切な一組のパックデータレジスタ８１０の例示的実施形態のブロック図である。このパックデータレジスタはＺＭＭ０〜ＺＭＭ３１と表示された３２個の５１２ビットパックデータレジスタを含む。ここで説明する実施形態によれば、下位１６個のレジスタすなわちＺＭＭ０〜ＺＭＭ１５の下位２５６ビットに、ＹＭＭ０〜ＹＭＭ１５と表示されたそれぞれ２５６ビットパックデータレジスタがエイリアスすなわち重ね合わせられているが、これは必須ではない。同様に、ここに説明する実施形態では、レジスタＹＭＭ０〜ＹＭＭ１５の下位１２８ビットに、ＸＭＭ０〜ＸＭＭ１５と表示されたそれぞれ１２８ビットパックデータレジスタがエイリアスすなわち重ね合わせられているが、これも必須ではない。５１２ビットレジスタＺＭＭ０〜ＺＭＭ３１は、５１２ビットパックデータ、２５６ビットパックデータ、または１２８ビットパックデータを保持することができる。２５６ビットレジスタＹＭＭ０〜ＹＭＭ１５は２５６ビットパックデータまたは１２８ビットパックデータを保持することができる。１２８ビットレジスタＸＭＭ０〜ＸＭＭ１５は１２８ビットパックデータを保持することができる。一部の実施形態では、各レジスタを用いてパック浮動小数点データまたはパック整数データを記憶してもよい。種々のデータ要素量に対応しており、少なくとも８ビットバイトデータ、１６ビットワードデータ、３２ビット倍長語、３２ビット単精度浮動小数点データ、６４ビット４倍長語、および６４ビット倍精度浮動小数点データが含まれる。別の実施形態によれば、いろいろな数のレジスタおよび／または種々の大きさのレジスタを用いてもよい。さらに別の実施形態によれば、レジスタは大きいレジスタを小さいレジスタにエイリアスして使用してもあるいはしなくてもよく、および／またはレジスタを用いて浮動小数点データを記憶してもしなくてもよい。
【００５３】
図９は、適切な一組のパックデータ操作マスクレジスタ９１８の例示的実施形態のブロック図である。ここに説明する実施形態では、この組は表示がｋ０からｋ７の８個のレジスタを含む。別の実施形態は８個未満（例えば２つ、４つの、６つなど）のレジスタを含んでもよく、あるいは８個を越える（例えば１６、３２などの）レジスタを含んでもよい。これらの各レジスタを用いてパックデータ操作マスクを記憶してもよい。ここに説明する実施形態では各レジスタは６４ビットである。別の実施形態によれば、レジスタ長は６４ビットより大きくてもよく（例えば８０ビット、１２８ビットなど）、あるいは６４ビットより小さくてもよい（例えば８ビット、１６ビット、３２ビットなど）。レジスタは既知の技術を用いて種々の方法で実装してよく、何らかの知られている特定の種類の回路に限定されない。適切なレジスタの例には、専用物理レジスタ、レジスタ名称変更を用いて動的に割り当てられた物理レジスタ、およびそれらの組み合わせがあるが、これらに限定されない。
【００５４】
一部の実施形態では、パックデータ操作マスクレジスタ９１８は、（例えば、データ要素粒度でパックデータ操作をプレディケーションする）プレディケーション専用の独立した一組の専用の構造的レジスタでもよい。一部の実施形態では、この命令で命令書式の複数ビットすなわち１または複数の領域にパックデータ操作マスクレジスタを符号化すなわち特定してもよく、これらのビットすなわち領域は他の種類のレジスタ（例えば、パックデータレジスタ、汎用レジスタなど）の符号化すなわち特定に用いるものとは別でもよい。例えば、この命令は、８つのパックデータ操作マスクレジスタｋ０〜ｋ７のうちの任意の１つを、３つのビット（例えば３ビット領域）を用いて符号化すなわち特定してもよい。別の一部の実施形態では、もっと少ないあるいは多いパックデータ操作マスクレジスタがあれば、それぞれもっと少ないあるいは多いビットを用いてもよい。特定の一実装によれば、マスク化パックデータ操作をプレディケーションするプレディケーションオペランドに、パックデータ操作マスクレジスタｋ１〜ｋ７（ｋ０以外）だけを当ててもよい。レジスタｋ０を通常のソースまたは宛先レジスタとして用い、プレディケーションオペランドとして符号化しなくてもよい（例えば、もしｋ０が特定されたら、ｋ０は「マスクなし」符号化を有する）。ただし、これは必須ではない。
【００５５】
図１０は、パックデータ操作マスクレジスタ１０１８の一例示的実施形態を説明する略図であり、パックデータ操作マスクとして用いるおよび／またはパックデータ長とデータ要素長に応じてマスク処理するために用いられるビット数を示している。説明の例示的実施形態のパックデータ操作マスクレジスタは６４ビット幅であるが、これは必須ではない。パックデータ長とデータ要素長の組み合わせにより、６４ビットの全てをマスク処理用のパックデータ操作マスクとして使用しても、あるいはそのサブセットだけを使用してもよい。一般に、要素単位マスク制御ビットを１つ使用する場合、マスク処理に使用するパックデータ操作マスクレジスタのビット数は、ビット数のパックデータ長をビット数のパックデータ要素長で割ったものに等しい。ここに説明する実施形態では、レジスタの最下位部をマスク用に用いてもよい。ただしこれは必須ではない。別の実施形態によれば、必要に応じて最上位部あるいは他の部分を使用してもよい。
【００５６】
例示的コアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ  プロセッサコアは、異なる目的に合わせ、異なる方法で、異なるプロセッサに実装してもよい。例えば、そのような実装用のコアは、１）一般演算用の汎用インオーダーコア、２）一般演算用の高性能汎用アウトオブオーダーコア、３）画像および／または科学的（高速）演算を第１目的とする専用コアでもよい。種々のプロセッサの実装には、１）一般演算用の汎用インオーダーコアを１または複数および／または一般演算用の高性能汎用アウトオブオーダーコアを１または複数備えるＣＰＵ、および２）画像および／または科学的（高速）演算を第１目的とする専用コアを１または複数備えるコプロセッサでもよい。そのような種々のプロセッサが種々のコンピュータシステム アーキテクチャになってもよく、それは次のようなものでもよい。１）ＣＰＵとは別のチップに搭載されたコプロセッサ、２）ＣＰＵと同じパッケージ内の別のダイに搭載されたコプロセッサ、３）ＣＰＵと同じダイに搭載されたコプロセッサ（この場合、そのようなコプロセッサは専用論理回路と呼ばれることがあり、例えば組込型の画像および／または科学（高速）論理回路あるいは特殊用途のコアなどがある）、および４）チップに搭載され、同じダイに上記ＣＰＵ（アプリケーションコアまたはアプリケーションプロセッサと呼ばれる）と、上記コプロセッサと、追加機能とを備えてもよいシステムが含まれる。例示的コアアーキテクチャを以下に説明し、その後例示的プロセッサおよびコンピュータアーキテクチャを説明する。
【００５７】
例示的コアアーキテクチャ  インオーダーおよびアウトオブオーダーコアブロック図  図１１Ａは、本発明の実施形態による例示的インオーダー・パイプラインと例示的レジスタ名称変更アウトオブオーダー発行／実行パイプラインの両方を説明するブロック図である。図１１Ｂは、本発明の実施形態によるプロセッサに設けられるインオーダーアーキテクチャコアと、例示的レジスタ名称変更アウトオブオーダー発行／実行アーキテクチャコアの一例示的実施形態の両方を説明するブロック図である。図１１Ａ、Ｂの実線で示す箱はインオーダー・パイプラインおよびインオーダーコアを説明し、任意選択で追加する点線で示す箱はレジスタ名称変更アウトオブオーダー発行／実行パイプラインおよびコアを説明している。このインオーダー側面はアウトオブオーダー側面の一部であることから、アウトオブオーダー側面について述べる。
【００５８】
図１１Ａでは、プロセッサパイプライン１１００は、取得段１１０２、長さ復号段１１０４、復号段１１０６、割り当て段１１０８、名称変更段１１１０、スケジューリング（別名、振り分けまたは発行）段１１１２、レジスタ読み込み／メモリ読み込み段１１１４、実行段１１１６、書き戻し／メモリ書き込み段１１１８、例外処理段１１２２、およびコミット段１１２４を備える。
【００５９】
図１１Ｂはプロセッサコア１１９０を示す。プロセッサコア１１９０は前段部１１３０を備え、これが実行エンジン部１１５０に連結されており、２つともメモリ部１１７０に連結されている。コア１１９０は少命令セット演算（ＲＩＳＣ）コアでも、複雑命令セット演算（ＣＩＳＣ）コアでも、極長命令語（ＶＬＩＷ）コアでも、あるいは複合コアあるいは別のコア類でもよい。さらに別の選択肢として、コア１１９０は専用コアでもよく、例えばネットワークすなわち通信コア、圧縮エンジン、コプロセッサコア、一般演算画像処理部（ＧＰＧＰＵ）コア、画像コアなどでもよい。
【００６０】
前段部１１３０は分岐予測部１１３２を備え、これが命令キャッシュ部１１３４に連結され、これが命令変換参照バッファ（ＴＬＢ）１１３６に連結され、これが命令取得部１１３８に連結され、これが復号ユニット１１４０に連結されている。復号ユニット１１４０（すなわち復号器）は命令を復号し、出力としてマイクロオペレーション、マイクロコード入力点、マイクロ命令、他の命令、または他の制御信号の１または複数を生成してもよく、これらはソース命令から復号され、表示され、あるいはそれらから派生する。復号ユニット１１４０は種々の異なる機構を用いて実装してもよい。適切な機構の例には、参照テーブル、ハードウェア実装、プログラム可能論理回路アレイ（ＰＬＡ）、マイクロコード読み取り専用メモリ（ＲＯＭ）などがあるがこれらに限定されない。一実施形態によれば、コア１１９０はマイクロコードＲＯＭまたは他の媒体を備え、特定のマクロ命令用のマイクロコードを（例えば復号ユニット１１４０または前段部１１３０に）記憶する。復号ユニット１１４０は実行エンジン部１１５０の名称変更／割り付け部１１５２に連結されている。
【００６１】
実行エンジン部１１５０は名称変更／割り付け部１１５２を備え、これがリタイヤメント部１１５４および一組の１または複数のスケジュール管理部１１５６に連結されている。スケジュール管理部１１５６は、予約ステーション、中央命令ウィンドウなどを含む任意の数の種々のスケジュール管理部を表す。スケジュール管理部１１５６は物理レジスタファイル部１１５８に連結されている。各物理レジスタファイル部１１５８は１または複数の物理レジスタファイルを表し、それらの異なる１つ１つは１種以上の型のデータを記憶する。そのようなデータ型には、例えばスカラー整数、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、状態（例えば、次に実行する命令のアドレスである命令ポインター）などがある。一実施形態によれば、物理レジスタファイル部１１５８はベクトルレジスタ部、書き込みマスクレジスタ部、およびスカラーレジスタ部を備える。これらのレジスタ部は、構造的ベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供してもよい。レジスタ名称変更とアウトオブオーダー実行を実装してもよい種々の方法（例えば、再要求バッファとリタイヤメントレジスタファイルを用いる方法、将来ファイルと履歴ファイルとリタイヤメントレジスタファイルを用いる方法、およびレジスタマップとレジスタのプールを用いる方法など）を説明するため、物理レジスタファイル部１１５８はリタイヤメント部１１５４に重ねられている。リタイヤメント部１１５４および物理レジスタファイル部１１５８は実行クラスター１１６０に連結されている。実行クラスター１１６０は一組の１または複数の実行ユニット１１６２および一組の１または複数のメモリアクセス部１１６４を備える。実行ユニット１１６２は種々の操作（例えば、桁送り、加算、引き算、かけ算）を種々の型のデータ（例えば、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点）に実行してもよい。一部の実施形態は特定の機能または複数機能の組を実行することに特化した複数の実行ユニットを備えてもよく、他の実施形態は全ての機能を全て実行する実行ユニットをただ１つまたは複数備えてもよい。スケジュール管理部１１５６、物理レジスタファイル部１１５８、および実行クラスター１１６０は複数ある場合があるように図示されている。その理由は、特定の実施形態では特定の型のデータ／操作用に別々のパイプラインを作るからである（例えば、スカラー整数パイプライン、スカラー浮動小数点／パック整数／パック浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／または各々独自のスケジュール管理部、物理レジスタファイル部、および／または実行クラスターを有するメモリアクセスパイプラインなど。また、別のメモリアクセスパイプラインの場合なら、特定の実施形態はこのパイプラインの実行クラスターだけがメモリアクセス部１１６４を有するように実装される）。当然のことだが、別々のパイプラインを使用する場合、これらのパイプラインの１または複数がアウトオブオーダー発行／実行で、残りはインオーダーでもよい。
【００６２】
一組のメモリアクセス部１１６４はメモリ部１１７０に連結されており、データＴＬＢ部１１７２を備え、これがデータキャッシュ部１１７４に連結され、これがレベル２（Ｌ２）キャッシュ部１１７６に連結されている。一例示的実施形態によれば、メモリアクセス部１１６４は、読み込み部、記憶アドレス部、および記憶データ部を備え、各々がメモリ部１１７０のデータＴＬＢ部１１７２に連結されていてもよい。命令キャッシュ部１１３４はさらにメモリ部１１７０のレベル２（Ｌ２）キャッシュ部１１７６に連結されている。Ｌ２キャッシュ部１１７６は１または複数の他のレベルのキャッシュに連結され、最終的に主メモリに連結されている。
【００６３】
例えば、例示的レジスタ名称変更、アウトオブオーダー発行／実行コアアーキテクチャは以下のようにパイプライン１１００を実装してもよい。すなわち、１）命令取得部１１３８が取得段１１０２および長さ復号段１１０４を実行し、２）復号ユニット１１４０が復号段１１０６を実行し、３）名称変更／割り付け部１１５２が割り当て段１１０８および名称変更段１１１０を実行し、４）スケジュール管理部１１５６がスケジュール段１１１２を実行し、５）物理レジスタファイル部１１５８およびメモリ部１１７０がレジスタ読み込み／メモリ読み込み段１１１４を実行し、実行クラスター１１６０が実行段１１１６を実行し、６）メモリ部１１７０および物理レジスタファイル部１１５８が書き戻し／メモリ書き込み段１１１８を実行し、７）種々の処理部が例外処理段１１２２に関連し、および８）リタイヤメント部１１５４および物理レジスタファイル部１１５８がコミット段１１２４を実行する。
【００６４】
コア１１９０は、本明細書に記載の命令を含め１または複数の命令セット（例えば、ｘ８６命令セット（いくつかの新しいバージョンの拡張子が追加されている）、MIPS Technologies of Sunnyvale社（カリフォルニア州）のＭＩＰＳ命令セット、ARM Holdings of Sunnyvale社（カリフォルニア州）のＡＲＭ命令セット（任意でＮＥＯＮなどの拡張子付き）に対応してもよい。一実施形態によれば、コア１１９０はパックデータ命令セット拡張子（例えば、ＡＶＸ１、ＡＶＸ２）に対応した論理回路を備え、そうすることによってマルチメディアアプリケーションで使用される複数の操作をパックデータで実行できるようにしてもよい。
【００６５】
当然だが、コアはマルチスレッディング（操作またはスレッドの組を２つ以上並行して実行する処理）に対応してもよく、それを種々の方法で実行してもよい。そのような方法には、時間分割マルチスレッディング、同時マルチスレッディング（１つの物理コアが複数スレッドの各々に論理コアを提供し、物理コアが同時にマルチスレッディング処理を行う）、あるいはそれらの組み合わせ（例えば時間分割取得と復号の後、Intel（登録商標）社のHyperthreading technologyなどで同時マルチスレッディング）などがある。
【００６６】
レジスタ名称変更をアウトオブオーダー実行の文脈で説明するが、当然だが、このレジスタ名称変更はインオーダーアーキテクチャで使用してもよい。本プロセッサについてここに説明する実施形態は独立した命令キャッシュ部１１３４およびデータキャッシュ部１１７４および共用のＬ２キャッシュ部１１７６も備え、別の実施形態は命令とデータの両方に内部キャッシュを１つ、例えばレベル１（Ｌ１）内部キャッシュまたは複数レベルの内部キャッシュなどを有していてもよい。一部の実施形態では、本システムは内部キャッシュとコアおよび／またはプロセッサの外にある外部キャッシュの組み合わせを備えてもよい。あるいは、キャッシュの全てがコアおよび／またはプロセッサの外にあってもよい。
【００６７】
具体的な例示的インオーダーコアアーキテクチャ
【００６８】
図１２Ａ、Ｂは、より具体的な例示的インオーダーコアアーキテクチャのブロック図を説明している。そのコアは１つのチップ内の複数の論理回路ブロック（同じ種類および／または異なる種類の他のコアを含む論理回路ブロック）の１つとなる。これらの論理回路ブロックは高帯域幅インターコネクトネットワーク（例えばリングネットワーク）を介していくつかの固定機能論理回路、メモリＩ／Ｏインタフェース、および他の必要なＩ／Ｏ論理回路と通信する。これはアプリケーションによって決まる。
【００６９】
図１２Ａは、本発明の実施形態による、単一プロセッサコアならびにダイ搭載型インターコネクトネットワーク１２０２との接続、およびそのレベル２（Ｌ２）キャッシュ１２０４のローカルサブセットのブロック図である。一実施形態によれば、命令復号器１２００はパックデータ命令セット拡張子が付いたｘ８６命令セットに対応する。Ｌ１キャッシュ１２０６によってキャッシュメモリのスカラー部およびベクトル部へのアクセスの待ち時間が短くなる。（設計を単純にする）一実施形態によれば、スカラー部１２０８およびベクトル部１２１０は別々のレジスタ組（それぞれスカラーレジスタ１２１２およびベクトルレジスタ１２１４）を使用し、それらの間を搬送されるデータはメモリに書き込まれた後に１次（Ｌ１）キャッシュ１２０６に読み戻されるが、本発明の別の実施形態は異なる方法を用いてもよい（例えば、単一レジスタ組を使用または通信経路を装備してデータを２つのレジスタファイル間で書き込みも読み戻しもせずに搬送するようにする）。
【００７０】
Ｌ２キャッシュ１２０４のローカルサブセットは大域Ｌ２キャッシュの一部であり、この大域Ｌ２キャッシュはプロセッサコア１つに１つずつ複数の独立したローカル部に分割されている。各プロセッサコアは、それぞれのＬ２キャッシュ１２０４のローカル部に直接アクセスする経路がある。プロセッサコアが読み込んだデータはそれぞれのＬ２キャッシュサブセット１２０４に記憶され、このデータに他のプロセッサコアがそのローカルＬ２キャッシュサブセットにアクセスしながら並行して迅速にアクセスすることができる。プロセッサコアが書き込んだデータはそのＬ２キャッシュサブセット１２０４に記憶され、必要に応じてこのデータは他のサブセットから消去される。リングネットワークによって共用データの一貫性が確保される。このリングネットワークは双方向性で、それによりプロセッサコア、Ｌ２キャッシュ、および他の論理回路ブロックなどのエージェントが互いにチップ内で通信することができる。各リングデータ経路は１方向あたり１０１２ビット幅である。
【００７１】
図１２Ｂは、本発明の実施形態による図１２Ａのプロセッサコアの一部の拡大図である。図１２ＢはＬ１キャッシュ１２０４の一部であるＬ１データキャッシュ１２０６Ａを備えるとともに、ベクトル部１２１０とベクトルレジスタ１２１４に関してさらに詳細に説明している。具体的には、ベクトル部１２１０は１６幅のベクトル処理部（ＶＰＵ）（１６幅ＡＬＵ１２２８を参照）であり、整数、単精度浮動小数点、および倍精度浮動小数点命令の１または複数を実行する。ＶＰＵは、スイズル部１２２０によるレジスタ入力のスイズル処理、数値変換部１２２２Ａ、Ｂによる数値変換、および複製部１２２４によるメモリ入力の複製に対応する。マスクレジスタ１２２６の書き込みにより、処理後のベクトルの書き込みをプレディケーションできる。
【００７２】
組込型メモリ制御器と画像処理機能を備えるプロセッサ  図１３は本発明の実施形態によるプロセッサ１３００のブロック図である。プロセッサ１３００は２つ以上のコアを有していてもよく、組込型メモリ制御器を有していてもよく、組込型画像処理機能を有していてもよい。図１３の実線で示す箱はプロセッサ１３００を説明しており、単一コア１３０２Ａ、システムエージェント部１３１０、一組の１または複数のバス制御部１３１６を備える。点線で示す箱は必要であれば付加する別のプロセッサ１３００を説明しており、複数のコア１３０２Ａ〜Ｎ、システムエージェント部１３１０内の一組の１または複数の組込型メモリ制御部１３１４、および専用の論理回路１３０８を備える。
【００７３】
その結果、プロセッサ１３００の異なる実装は、１）組込型の画像処理機能および／または科学（高速処理）論理回路である専用論理回路１３０８を有するＣＰＵ（１または複数のコアを備えてもよい）、および１または複数の汎用コアであるコア１３０２Ａ〜Ｎ（例えば、汎用インオーダーコア、汎用アウトオブオーダーコア、この２つの組み合わせ）、２）組込型の画像処理機能および／または科学（高速処理）論理回路を第１目的とする多数の専用のコアであるコア１３０２Ａ〜Ｎを有するコプロセッサ、および３）多数の汎用インオーダーコアであるコア１３０２Ａ〜Ｎを有するコプロセッサを備えてもよい。すなわち、プロセッサ１３００は汎用プロセッサでも、コプロセッサでも、あるいは専用のプロセッサでもよく、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、画像プロセッサ、ＧＰＧＰＵ（汎用画像処理部）、高処理能力多数コア（３０以上のコア）組込型（ＭＩＣ）コプロセッサ、内蔵プロセッサなどがある。プロセッサは１または複数のチップに実装してもよい。プロセッサ１３００は、ＢｉＣＭＯＳ、ＣＭＯＳ、またはＮＭＯＳなど任意数の処理技術を用い、１または複数の基板の一部でもよくおよび／または例えば１または複数の基板に実装してもよい。
【００７４】
メモリの階層は、コア内の１または複数のレベルのキャッシュ、一組または１または複数の共有キャッシュ部１３０６、および組込型メモリ制御部１３１４の組に連結された外部メモリ（図示せず）を備える。共有キャッシュ部１３０６の組は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、または他のレベルのキャッシュなど１または複数の中間レベルのキャッシュ、最終レベルのキャッシュ（ＬＬＣ）、および／またはそれらの組み合わせを備えてもよい。一実施形態によれば、リングによるインターコネクト部１３１２が、組込型画像論理回路１３０８、一組の共有キャッシュ部１３０６、およびシステムエージェント部１３１０／組込型メモリ制御部１３１４を相互に接続しているが、別の実施形態では、任意の数の既知の技術をそのような複数部のインターコネクトに用いてもよい。一実施形態によれば、一貫性は１または複数のキャッシュ部１３０６とコア１３０２Ａ〜Ｎの間で維持される。
【００７５】
一部の実施形態では、１または複数のコア１３０２Ａ〜Ｎはマルチスレッディング処理を実行することができる。システムエージェント部１３１０はコア１３０２Ａ〜Ｎを連携・操作する構成要素を備える。システムエージェント部１３１０は、例えば電源制御部（ＰＣＵ）および表示部を備えてもよい。ＰＣＵはコア１３０２Ａ〜Ｎおよび組込型画像論理１３０８の電源状態の調整に必要な論理回路および構成要素でもよく、あるいはそのような構成要素を備えてもよい。表示部は１または複数の外部接続された表示器の駆動用である。
【００７６】
コア１３０２Ａ〜Ｎはアーキテクチャ命令セットの観点で同種環境でも異種環境でもよい。すなわち、コア１３０２Ａ〜Ｎの２つ以上は同じ命令セットを実行できてもよく、他のコアはその命令セットの一部だけまたは異なる命令セットだけを実行できてもよい。
【００７７】
例示的コンピュータキテクチャ  図１４〜１７は例示的コンピュータキテクチャのブロック図である。以下の当業分野で知られている他のシステム設計および構成も適切である。ノート型ＰＣ、机上型ＰＣ、手持ち型ＰＣ、携帯情報端末、産業用ワークステーション、サーバー、ネットワーク装置、ネットワークハブ、スイッチ、内蔵プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、画像装置、ビデオゲーム装置、家庭用通信端末、小型制御器、携帯電話、携帯メディアプレーヤー、手持ち装置、および種々の他の電子器機。一般に、本明細書に開示されたプロセッサおよび／または他の実行論理を取り込むことができる多種多様なシステムまたは電子器機一般に適切である。
【００７８】
ここで図１４を参照すると、図示されているのは本発明の一実施形態によるシステム１４００ブロック図である。このシステム１４００は、制御器ハブ１４２０に連結された１または複数のプロセッサ１４１０、１４１５を備えてもよい。一実施形態によれば、制御器ハブ１４２０は画像メモリ制御器ハブ（ＧＭＣＨ）１４９０および入出力ハブ（ＩＯＨ）１４５０（これらは別々のチップにあってもよい）を備え、ＧＭＣＨ１４９０はメモリ１４４０およびコプロセッサ１４４５に連結されたメモリおよび画像制御器を備え、ＩＯＨ１４５０は入出力（Ｉ／Ｏ）装置１４６０をＭＣＨ１４９０に連結している。あるいは、メモリと画像制御器の一方または両方をプロセッサに（本明細書に記載のように）組み込んでもよく、メモリ１４４０とコプロセッサ１４４５は、プロセッサ１４１０とＩＯＨ１４５０を有する単一チップの制御器ハブ１４２０に直接連結されている。
【００７９】
図１４には、任意選択の追加プロセッサ１４１５を点線で示す。各プロセッサ１４１０、１４１５は本明細書に記載の１または複数の処理コアを備えても、プロセッサ１３００の一部のバージョンでもよい。
【００８０】
メモリ１４４０は例えば動的ランダムアクセスメモリ（ＤＲＡＭ）でも、相変化メモリ（ＰＣＭ）でも、または２つの組み合わせでもよい。少なくとも一方の実施形態では、制御器ハブ１４２０は、フロントサイドバス（ＦＳＢ）などのマルチドロップバス、クイックパスインターコネクト（ＱＰＩ：QuickPath Interconnect）などの２点間インタフェース、または類似の接続１４９５を介してプロセッサ１４１０、１４１５と通信する。
【００８１】
一実施形態によれば、コプロセッサ１４４５は専用のプロセッサであり、例えば、高速処理ＭＩＣプロセッサ、ネットワークすなわち通信プロセッサ、圧縮エンジン、画像プロセッサ、ＧＰＧＰＵ、内蔵プロセッサなどがある。一実施形態によれば、制御器ハブ１４２０は組込型画像加速装置を備えてもよい。
【００８２】
物理リソース１４１０と１４１５の間には、構造、細部構造、温度、電力消費特性など一連の利点計量に関していろいろな違いがある。
【００８３】
一実施形態によれば、プロセッサ１４１０は、一般的な種類のデータ処理操作を制御する命令を実行する。この命令に組み込まれているのはコプロセッサ命令でもよい。プロセッサ１４１０はこれらのコプロセッサ命令を、付属のコプロセッサ１４４５で実行すべき種類のものであると認識する。したがって、プロセッサ１４１０はこれらのコプロセッサ命令（あるいはコプロセッサ命令を表す制御信号）をコプロセッサ１４４５に繋がるコプロセッサバスまたは他のインターコネクトに発行する。コプロセッサ１４４５はコプロセッサ命令を受け入れ、受け取った命令を実行する。
【００８４】
ここで図１５を参照すると、ブロック図に示されているのは、本発明の一実施形態によるさらに具体的な第１の例示的システム１５００である。図１５に示すように、多重プロセッサシステム１５００は２点間インターコネクトシステムであり、２点間インターコネクト１５５０で連結された第１のプロセッサ１５７０と第２のプロセッサ１５８０を備える。プロセッサ１５７０と１５８０の各々はプロセッサ１３００の特定のバージョンでよい。本発明の一実施形態によれば、プロセッサ１５７０と１５８０はそれぞれプロセッサ１４１０と１４１５であり、コプロセッサ１５３８はコプロセッサ１４４５である。他の実施形態では、プロセッサ１５７０と１５８０はそれぞれプロセッサ１４１０とコプロセッサ１４４５である。
【００８５】
プロセッサ１５７０と１５８０は、それぞれ組込型メモリ制御器（ＩＭＣ）部１５７２と１５８２を備えるように図示されている。プロセッサ１５７０はそのバス制御部２点間（Ｐ−Ｐ）インタフェース１５７６と１５７８の一部も含み、同様に第２のプロセッサ１５８０はＰ−Ｐインタフェース１５８６と１５８８を含む。プロセッサ１５７０、１５８０は、Ｐ−Ｐインタフェース回路１５７８、１５８８を用いる２点間（Ｐ−Ｐ）インタフェース１５５０を介して情報を交換してもよい。図１５に示すように、ＩＭＣ１５７２と１５８２はプロセッサをそれぞれのメモリすなわちメモリ１５３２とメモリ１５３４に連結しており、これらはそれぞれのプロセッサに局所的に取り付けられた主メモリの一部でもよい。
【００８６】
プロセッサ１５７０、１５８０はそれぞれ、２点間インタフェース回路１５７６、１５９４、１５８６、１５９８を用いる個々のＰ−Ｐインタフェース１５５２、１５５４を介して、チップ組１５９０と情報を交換してもよい。チップ組１５９０は必要に応じて高性能インタフェース１５３９を介してコプロセッサ１５３８と情報を交換してもよい。一実施形態によれば、コプロセッサ１５３８は専用のプロセッサ、例えば、高速処理ＭＩＣプロセッサ、ネットワークすなわち通信プロセッサ、圧縮エンジン、画像プロセッサ、ＧＰＧＰＵ、内蔵プロセッサなどである。
【００８７】
プロセッサかあるいは２つのプロセッサの外部に、共有キャッシュ（図示せず）を設け、さらにこれをプロセッサとＰ−Ｐインターコネクトで接続してもよい。そのようにすると、プロセッサが低電力モードになった場合に、プロセッサの局所キャッシュ情報の片方または両方を共有キャッシュに記憶することができる。
【００８８】
チップ組１５９０を第１のバス１５１６にインタフェース１５９６を介して連結してもよい。一実施形態によれば、第１のバス１５１６は周辺構成要素インターコネクト（ＰＣＩ）バスでも、あるいはＰＣＩエクスプレス（PCI Express）バスまたは他の第３世代Ｉ／Ｏインターコネクトバスなどのバスでもよい。ただし、本発明の範囲はそれらに限定されない。
【００８９】
図１５に示すように、第１のバス１５１６を第２のバス１５２０に連結しているバスブリッジ１５１８と共に、種々のＩ／Ｏ装置１５１４を第１のバス１５１６に連結してもよい。一実施形態によれば、第１のバス１５１６には１または複数の追加のプロセッサ１５１５、例えばコプロセッサ、高速処理用ＭＩＣプロセッサ、ＧＰＧＰＵ、加速装置（例えば、画像加速装置またはデジタル信号処理（ＤＳＰ）部）、領域プログラム可能アレイ、または任意の他のプロセッサが連結される。一実施形態によれば、第２のバス１５２０はロウピンコンタクト（ＬＰＣ）バスでもよい。
【００９０】
一実施形態によれば種々の装置を第２のバス１５２０に連結することができ、そのようなものには例えば、キーボードおよび／またはマウス１５２２、通信装置１５２７、および記憶装置１５２８があり、記憶装置には例えば、ハードディスク駆動装置または他の大容量記憶装置があり、ここに命令／コードおよびデータ１５３０を収めてもよい。さらに、音声Ｉ／Ｏ１５２４を第２のバス１５２０に連結してもよい。なお、他のアーキテクチャも可能である。例えば、図１５の２点間アーキテクチャの代わりに、システムがマルチドロップバスまたは他のそのようなアーキテクチャを実装してもよい。
【００９１】
ここで図１６を参照すると、図示されているのは本発明の一実施形態によるさらに具体的な第２の例示的システム１６００のブロック図である。図１５、１６の類似の要素は同じ参照番号を持ち、図１５の特定の側面は図１６から省いて図１６の他の側面が分かりにくくならないようにした。
【００９２】
図１６は、プロセッサ１５７０、１５８０がそれぞれ組込型メモリおよびＩ／Ｏ制御論理回路（「ＣＬ」）１５８２と１５７２を備えてもよいことを説明している。すなわち、ＣＬ１５７２、１５８２は組込型メモリ制御部を備え、Ｉ／Ｏ制御論理回路を備える。図１６は、メモリ１５３２、１５３４だけがＣＬ１５７２、１５８２に連結されているのではなく、Ｉ／Ｏ装置１６１４も制御論理回路１５７２、１５８２に連結されていることを説明している。レガシーＩ／Ｏ装置１６１５がチップ組１５９０に連結されている。
【００９３】
ここで図１７を参照すると、図示されているのは本発明の一実施形態によるＳｏＣ１７００のブロック図である。図１３の類似要素は同じ参照番号を有する。また、点線で示す箱はさらに上級のＳｏＣに関するオプション機能である。図１７では、インターコネクト部１７０２が以下の要素に連結されている。すなわち、一組の１または複数のコア２０２Ａ〜Ｎおよび共有キャッシュ部１３０６を備えるアプリケーションプロセッサ１７１０と、システムエージェント部１３１０と、バス制御部１３１６と、組込型メモリ制御部１３１４と、組込型画像論理下位と画像プロセッサと音声プロセッサと画像プロセッサを備えてもよい一組すなわち１または複数のコプロセッサ１７２０と、静的ランダムアクセスメモリ（ＳＲＡＭ）部１７３０と、触接メモリアクセス（ＤＭＡ）部１７３２と、１または複数の外部表示装置に連結するための表示部１７４０とに連結されている。一実施形態によれば、コプロセッサ１７２０は専用のプロセッサを備える。例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高速処理ＭＩＣプロセッサ、内蔵プロセッサなどを備える。
【００９４】
本明細書に開示された機構の実施形態ハードウェア、ソフトウェア、ファームウェア、またはそのような実装方法を組み合わせて実装することができる。本発明の実施形態はプログラム可能なシステムで実行するコンピュータプログラムまたはプログラムコードとして実装してもよく、このプログラム可能なシステムは、少なくとも１つのプロセッサ、記憶装置システム（例えば揮発性および不揮発性メモリおよび／または記憶装置）、少なくとも１つの入力装置、および少なくとも１つの出力装置を備える。
【００９５】
図１５に説明したコード１５３０のようなプログラムコードを入力命令に適用して本明細書に記載の機能を実行し、出力情報を生成してもよい。出力情報は知られている方法で１または複数の出力装置に適用してもよい。本用途の目的の場合、処理システムはプロセッサを有する任意のシステムを含み、このプロセッサには例えばデジタル信号プロセッサ（ＤＳＰ）、超小型制御器、特定用途向け集積回路（ＡＳＩＣ）、または超小型プロセッサなどがある。
【００９６】
プログラムコードを高次の手続き型またはオブジェクト指向のプログラム言語に実装して処理システムと通信してもよい。プログラムコードは、必要に応じてアセンブリ言語または機械語に実装してもよい。実際、本明細書に記載の機構は何らかの特定のプログラム言語の範囲に限定されない。どのような場合も、これらの言語はコンパイルされたすなわち解釈された言語でよい。
【００９７】
少なくとも１つの実施形態の１または複数の側面を機械可読媒体に種々の論理を表す代表的な命令で記憶し、プロセッサに実装してもよい。機械がこれを読み取ると、その機械は論理を組み立てて本明細書に記載の技術を実行する。「ＩＰコア」として知られているそのような表現を機械可読有形媒体に記憶し、種々の顧客または製造施設に提供して製造機械に読み込んで、論理回路またはプロセッサを実際に作ってもよい。
【００９８】
機械で読み取り可能なそのような記憶媒体には、機械または装置で製造すなわち形成した有形の持続的配列の品物を無制限に含んでもよい。そのような品物には以下のような記憶媒体がある。すなわち、ハードディスク、任意の他の種類のディスク（フロッピー（登録商標）ディスク、光ディスク、小型ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、小型ディスク読み書き可能ディスク（ＣＤ−ＲＷ）、および磁気光ディスクなど）、半導体デバイス、例えば読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、例えば動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気または光カード、任意の他の種類の媒体であって電子命令の記憶に適切なものがある。
【００９９】
したがって、本発明の実施形態は、命令あるいは設計データを収容した有形の機械可読持続性媒体も含み、そのようなデータには例えばハードウェア記述言語（ＨＤＬ）があり、この記述言語が構造、回路、器機、プロセッサおよび／または本明細書に記載のシステムの特徴事項を規定している。そのような実施形態はプログラム製品と呼んでもよい。
【０１００】
エミュレーション（二値変換、コード変形など）  いくつかの例では、命令変換器を用いてソース命令の組の命令を対象の命令の組に変換してもよい。例えばこの命令変換器は、ある命令を、コアで処理する１または複数の他の命令に（例えば静的二値変換、動的編集を含む動的二値変換を用いて）翻訳、変形、模倣、または変換してもよい。命令変換器はソフトウェア、ハードウェア、ファームウェア、またはそれらを組み合わせて実装してもよい。命令変換器はプロセッサにあってもプロセッサの外にあっても、あるいは一部がプロセッサに一部がプロセッサの外にあってもよい。
【０１０１】
図１８は、本発明の実施形態によるソース命令の一組の二値命令を対象の命令セットの二値命令に変換するソフトウェア命令変換器の使用を対比したブロック図である。ここに説明する実施形態の命令変換器はソフトウェア命令変換器であるが、代わりに命令変換器はソフトウェア、ファームウェア、ハードウェア、またはそれらの種々の組み合わせで実装してもよい。図１８には高次の言語１８０２のプログラムが示されており、ｘ８６コンパイラ１８０４を用いてこのプログラムをコンパイルして、少なくとも１つのｘ８６命令セットコア１８１６を有するプロセッサでネイティブに実行してもよいｘ８６二値コード１８０６を生成させる。少なくとも１つのｘ８６命令セットコア１８１６を有するプロセッサは、少なくとも１つのｘ８６命令セットコアを有するインテル社プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表し、（１）インテル社ｘ８６命令セットコアの命令セットの大部分または（２）少なくとも１つのｘ８６命令セットコアを有するインテル社プロセッサで動作させることを目標としたアプリケーションまたは他のソフトウェアのオブジェクトコードバージョンを矛盾なく実行すなわち処理することによって、少なくとも１つのｘ８６命令セットコアを有するインテル社プロセッサと実質的に同じ結果を実現する。ｘ８６コンパイラ１８０４は、少なくとも１つのｘ８６命令セットコア１８１６を有するプロセッサが追加の連結処理を用いてあるいは用いないで実行可能なｘ８６二値コード１８０６（例えばオブジェクトコード）を生成することができるコンパイラを表す。同様に、図１８は、高次の言語１８０２で書かれたプログラムを示し、このプログラムを別の命令セットコンパイラ１８０８を用いてコンパイルして別の命令セット二値コード１８１０を生成し、それを少なくとも１つのｘ８６命令セットコア１８１４を持たないプロセッサでネイティブに実行してもよい（例えば、MIPS Technologies社（カリフォルニア州、サニーベイル）のＭＩＰＳ命令セットを実行するコア、および／あるいはARM Holdings（カリフォルニア州、サニーベイル）のＡＲＭ命令セットを実行するコアを有するプロセッサで実行してもよい）。ｘ８６二値コード１８０６を、命令変換器１８１２を用いてｘ８６命令セットコア１８１４を持たないプロセッサでネイティブに実行してもよいコードに変換する。この変換されたコードは別の命令セット二値コード１８１０と同じになり難い。同じにできる命令変換器は製作困難であるからである。しかし、この変換されたコードは一般的な操作を実行でき、別の命令セットの命令で作られている。すなわち、命令変換器１８１２は、エミュレーション、模倣、または任意の他の処理によってｘ８６命令セットプロセッサすなわちコアを持たないプロセッサまたは他の電子器機がｘ８６二値コード１８０６を実行可能にするソフトウェア、ファームウェア、ハードウェア、あるいはそれらの組み合わせを表す。
【０１０２】
図３〜１０のいずれかについて説明した構成要素、特徴事項、および詳細を、必要に応じて図１、２のどれに適用してもよい。さらに、いずれかの装置について説明した構成要素、特徴事項、および詳細を必要に応じて何らかの方法に適用し、上記のような装置が複数の実施形態で実行してもよく、および／あるいは上記のような装置を用いて実行してもよい。本明細書に記載されたどのプロセッサが本明細書に開示されたどのコンピュータシステムに含まれてもよい。一側面では、このシステムをネットワーク器機、例えばスイッチ、ルーター、他のネットワーク器機（例えば、ファイヤーウォール、スニファーなど）として用い、本明細書に開示された命令の利点をパケット処理に活かしてもよい。但し、本発明の範囲はそのように限定されない。一部の実施形態では、この命令は本明細書に開示された命令形式の特徴事項または細部を有していてもよい。ただしこれは必須ではない。
【０１０３】
本明細書および特許請求の範囲では、「連結された」および／または「接続された」ならびにその派生語を用いてきた。これらの用語は互いに同義語を意味しない。そうではなく、一部の実施形態では、「接続された」を用いて２つ以上の部品が物理的および／または電気的に互いに直接接続していることを示してもよい。「連結された」で２つ以上の部品が物理的および／または電気的に直接的に互いに接触していることを意味してもよい。しかし、「連結された」には、２つ以上の要素が互いに直接的に接触していないが、それでも連携してあるいは相互に作用し合っていることを意味する場合がある。例えば、実行ユニットはレジスタおよび／または復号ユニットと１または複数の介在構成要素を介して連結されていてもよい。図では、矢印を用いて接続および連結を示している。
【０１０４】
「および／または」を使用してきた。本明細書に使用したように、「および／または」はどちらか一方あるいは両方を意味する（例えばＡおよび／またはＢは、ＡまたはＢ、あるいはＡとＢの両方を意味する）。
【０１０５】
上記の説明の中で、実施形態が十分に理解されるよう具体的な細部を説明してきた。しかし、これらの具体的な細部のいくつかを欠く他の実施形態を実践してもよい。本発明の範囲は上記の具体的な実施例で決定されるのではなく、添付の特許請求の範囲によってのみ決定される。また説明が誤解されないよう、よく知られている回路、構造、装置、および操作をブロック図の形態でおよび／あるいは詳細を省いて示している。適切なら、複数の図の間で参照番号または参照番号の終端部を繰り返して、必要に応じて類似あるいは同じ特徴事項を有していてもよい対応要素または類似要素を示してもよい。ただし別途規定されている場合あるいは明らかな場合はその限りではない。
【０１０６】
特定の操作はハードウェア要素で実行してもよく、あるいは機械あるいは回路で実行可能な命令で具現してもよく、これを用いることによって、その操作を実行する命令でプログラムされた機械、回路、またはハードウェア要素（例えばプロセッサ、プロセッサの一部、回路など）を作ってもおよび／あるいは結果的にそのようなものになってもよい。操作は必要に応じてハードウェアとソフトウェアを組み合わせて実行してもよい。プロセッサ、機械、回路、またはハードウェアは、命令に応答して命令を実行および／ならびに処理し結果を記憶することができる具体的すなわち特定の回路または他の論理回路（例えばファームウェアおよび／またはソフトウェアと接続可能なハードウェア）を備えてもよい。
【０１０７】
一部の実施形態は、機械可読媒体を含む製造品（例えばコンピュータプログラム製品）を備える。この媒体はある機構を備え、機械で読み取ることができる形式の情報を提供、例えば記憶していてもよい。機械可読媒体は命令または一連の命令を提供してもよくあるいはそれ自体に記憶していてもよく、これらの命令が機械で実行されたときおよび／あるいはもし実行されると、この機械は本明細書に開示された操作、方法、または技術の１または複数を実行することができ、および／あるいは結果的に実行する。
【０１０８】
一部の実施形態では、機械で読み取り可能な媒体は機械で読み取り可能な持続性記憶媒体を含んでもよい。例えば、機械で読み取り可能な持続性記憶媒体は、フロッピー（登録商標）ディスク、光記憶媒体、光ディスク、光データ記憶装置、ＣＤ−ＲＯＭ、磁気ディスク、光磁気ディスク、読み出し専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能・プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能・プログラム可能ＲＯＭ（ＥＥＰＲＯＭ）、タンダムアクセスメモリ（ＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、相変化メモリ、相変化データ記憶装置材料、不揮発性メモリ、不揮発性データ記憶装置、持続性メモリ、持続性データ記憶装置などを含んでもよい。機械で読み取り可能な持続性記憶媒体は一過性の伝播信号で構成されない。一部の実施形態では、記憶媒体は固形物を含む有形媒体を含んでもよい。
【０１０９】
適切な機械の実施例は、汎用プロセッサ、専用のプロセッサ、デジタル論理回路、集積回路などを備えるがこれらに限定されない。適切な機械のさらに他の実施例は、プロセッサ、デジタル論理回路、または集積回路を備えるコンピュータシステムまたは他の電子器機を備える。そのようなコンピュータシステムまたは電子器機の実施例は、デスクトップ型コンピュータ、ラップトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ、ネットブック、スマートフォン、携帯電話、サーバー、ネットワーク器機（例えばルーターおよびスイッチ）、携帯インターネット器機（ＭＩＤ）、メディアプレーヤー、スマートテレビ、ネットトップ、セットトップボックス、およびビデオゲーム制御器を含むが、それらに限定されない。
【０１１０】
本明細書の中で「ある実施形態」、「一実施形態」、「１または複数の実施形態」、「一部の実施形態」などを参照して具体的な特徴事項を本発明の実践に含めてもよいことを示してきたが、これは必ずしも必要ではない。同様に説明の中で本開示を円滑にし、種々の発明的側面の理解を進めるため、１つの実施形態、図、またはその説明の中の種々の特徴事項を場合によっては一つにまとめた。しかしこの開示方法から本発明には特許請求の範囲に記載した以上の特徴事項が必要であると理解してはいけない。そうではなく、添付の特許請求の範囲に示すように、発明的側面は開示された１つの実施形態の全ての特徴事項より少ないことにある。すなわち、詳細の説明に続く特許請求の範囲は詳細の説明に明らかに包含され、各請求項は本発明の個々の実施形態として独立している。
【０１１１】
例示的実施形態  以下の実施例はさらに複数の実施形態に関連する。これらの実施例の細部を１または複数の実施形態のどこに用いてもよい。
【０１１２】
実施例１は、複数のパックデータレジスタおよびデータ要素選択・統合命令を復号する復号ユニットを備えるプロセッサである。このデータ要素選択・統合命令は、複数のデータ要素を有する第１のソースパックデータ・オペランドと、複数のマスク要素を有する第２のソースオペランドとを有する。第２のソースオペランドの各マスク要素は第１のソースパックデータ・オペランドの同じ相対位置にある異なるデータ要素に対応する。プロセッサは復号ユニットに連結された実行ユニットも備える。実行ユニットは、データ要素選択・統合命令に応答して、結果パックデータ・オペランドをデータ要素選択・統合命令によって表示される宛先記憶位置に記憶する。結果パックデータ・オペランドは、第２のソースオペランドの未マスクのマスク要素に対応し、結果パックデータ・オペランドの一部に統合された第１のソースパックデータ・オペランドの全てのデータ要素を含む。
【０１１３】
実施例２は実施例１のプロセッサを含み、上記復号ユニットは、マスク要素を有する第２のソースオペランドとして即値を有する命令を復号する、マスク要素はマスクビットである。
【０１１４】
実施例３は実施例１のプロセッサを含み、上記復号ユニットは、プロセッサの一組のパックデータ操作マスクレジスタの内の任意のパックデータ操作マスクレジスタである第２のソースオペランドを有する命令を復号する。また必要に応じて、プロセッサの命令セットの他の複数の命令は、一組のパックデータ操作マスクレジスタのレジスタを特定してプレディケーションオペランドを提供する。
【０１１５】
実施例４は実施例１のプロセッサを含み、上記復号ユニットは、マスクビットである複数のマスク要素を有する第２のソースオペランドを有する命令を復号。
【０１１６】
実施例５は実施例１のプロセッサを含み、上記復号ユニットは、パックデータ・オペランドである第２のソースオペランドを有する命令を復号する、上記マスク要素はマスクデータ要素になる。
【０１１７】
実施例６は実施例１のプロセッサを含み、上記実行ユニットは上記命令に応答して、結果パックデータ・オペランドの最下位部に第１のソースパックデータ・オペランドと同じ順序で統合されている前記全てのデータ要素を含む結果パックデータ・オペランドを記憶する。
【０１１８】
実施例７は実施例１のプロセッサを含み、上記実行ユニットは命令に応答して、結果パックデータ・オペランドの最上位部に第１のソースパックデータ・オペランドと同じ順序で統合されている前記全てのデータ要素を含む結果パックデータ・オペランドを記憶する。
【０１１９】
実施例８は実施例１のプロセッサを含み、上記実行ユニットは命令に応答して、第２のソースオペランドの既マスクのマスク要素に対応する第１のソースパックデータ・オペランドの全てのデータ要素を除外する統合されたデータ要素を有する結果パックデータ・オペランドを記憶する。また必要に応じて、第１のソースパックデータ・オペランドは、未マスクのマスク要素に対応するデータ要素間の既マスクのマスク要素に対応する少なくとも１つのデータ要素を有する。
【０１２０】
実施例９は実施例１〜８のいずれか１つのプロセッサを含み、上記復号ユニットは、第１のソースパックデータ・オペランドのデータ要素の大きさを表示する１または複数のビットを有する命令を復号する。
【０１２１】
実施例１０は実施例１〜８のいずれか１つのプロセッサを含み、上記復号ユニットは、少なくとも１２８ビットのビット幅を有する、必要に応じて複数の８ビットデータ要素および複数の１６ビットデータ要素から選択した複数のデータ要素を有する第１のソースパックデータ・オペランドを有する命令を復号する。また必要に応じて、宛先記憶位置はプロセッサのパックデータレジスタを含む。
【０１２２】
実施例１１は実施例１〜８のいずれか１つのプロセッサを含み、上記復号ユニットは、第２のソースオペランドの未マスクのマスク要素に対応する第１のソースパックデータ・オペランドの前記全てのデータ要素が、第１のソースパックデータ・オペランド内のデータ要素のいかなる特定の配列にも、第２のソースオペランド内のマスク要素のいかなる特定の配列にもかかわらずに結果パックデータ・オペランドの一部に統合されることを表示するオペコードを有する命令を復号する。
【０１２３】
実施例１２は実施例１〜８のいずれか１つのプロセッサを含み、このプロセッサは汎用プロセッサを含む。また必要に応じて、上記宛先記憶位置はプロセッサのパックデータレジスタを含む。
【０１２４】
実施例１３はデータ要素選択・統合命令を受け取る工程を含むプロセッサ内の方法である。データ要素選択・統合命令は、複数のデータ要素を有する第１のソースパックデータ・オペランドと複数のマスク要素を有する第２のソースオペランドを有する。第２のソースオペランドの各マスク要素は第１のソースパックデータ・オペランドの同じ相対位置にある異なるデータ要素に対応する。本方法は、データ要素選択・統合命令に応答して結果パックデータ・オペランドを宛先記憶位置に記憶する工程も含む。この宛先記憶位置は、データ要素選択・統合命令によって表示される。結果パックデータ・オペランドは、第２のソースオペランドの未マスクのマスク要素に対応し、結果パックデータ・オペランドの一部に統合された第１のソースパックデータ・オペランドの全てのデータ要素を含む。
【０１２５】
実施例１４は実施例１３の方法を含み、受け取る工程は、マスク要素を有する第２のソースオペランドとして即値を有する命令を受け取る工程を含む。
【０１２６】
実施例１５は実施例１３の方法を含み、受け取る工程は、プレディケーションに使用する一組の専用のパックデータ操作マスクレジスタの内の任意のパックデータ操作マスクレジスタである第２のソースオペランドを有する命令を受け取る工程を含む。
【０１２７】
実施例１６は実施例１３の方法を含み、この方法は、マスク要素としてマスクビットを有する第２のソースオペランドにアクセスする工程をさらに含む。
【０１２８】
実施例１７は実施例１３の方法を含み、受け取る工程は、第１のソースパックデータ・オペランドのデータ要素の大きさを表示する１または複数のビットを有する命令を受け取る工程を含む。
【０１２９】
実施例１８は実施例１３の方法を含み、受け取る工程は、少なくとも１２８ビットを有し、必要に応じて８ビットデータ要素および１６ビットデータ要素の一方であるデータ要素を含む第１のソースパックデータ・オペランドを表示する命令を受け取る工程を含む。また必要に応じて、記憶する工程は、結果パックデータ・オペランドの最下位部に第１のソースパックデータ・オペランド内に出現する順序と同じ順序で統合された前記全てのデータ要素を有する結果パックデータ・オペランドを記憶する工程を含む。
【０１３０】
実施例１９は実施例１３の方法を含み、この方法は、ネットワークからパケットを受け取る工程と、そのパケットの一部を第１のソースパックデータ・オペランドとして記憶する工程をさらに含む。この方法は必要に応じて、パケットのプロトコルを復号する工程と、必要に応じてパケットのプロトコルの復号に基づきパケットの一部のフローバイトの位置を決定する工程をさらに含んでもよい。本方法は必要に応じて、各フローバイトに対する第２のソースオペランドに未マスクのマスク要素を記憶する工程と、上記パケットの一部の他のバイトに対する第２のソースオペランドに既マスクの要素を記憶する工程をさらに含んでもよい。
【０１３１】
実施例２０は実施例１３の方法を含み、第１のソースパックデータ・オペランドはネットワークから受け取ったパケット由来のデータ要素を有する。必要に応じて本方法は、結果パックデータ・オペランドの統合されたデータ要素に対して暗号化操作を実行する工程を含んでもよい。
【０１３２】
実施例２１はインターコネクトと、インターコネクトに連結されたプロセッサを含む命令を処理するシステムである。このプロセッサは、複数のデータ要素を有する第１のソースパックデータ・オペランドを有するデータ要素選択・統合命令を受け取る。この命令は、複数のマスク要素を有する第２のソースオペランドを有する。第２のソースオペランドの各マスク要素は第１のソースパックデータ・オペランドの同じ相対位置にある異なるデータ要素に対応する。この命令は宛先記憶位置を表示することにもなっている。プロセッサはこの命令に応答して、結果パックデータ・オペランドを宛先記憶位置に記憶する。結果パックデータ・オペランドは、第２のソースオペランドの未マスクのマスク要素に対応し、結果パックデータ・オペランドの一部に統合された第１のソースパックデータ・オペランドの全てのデータ要素を含む。本システムは、インターコネクトに連結された動的ランダムアクセスメモリ（ＤＲＡＭ）も備える。ＤＲＡＭは一組のプロトコル復号命令を記憶しており、この一組の命令がプロセッサで実行されると、プロセッサは、第１のネットワークパケットのプロトコルを復号することと、第２のソースオペランドを生成させて、第１のソースパックデータ・オペランドに記憶されている第２のネットワークパケットのヘッダの少なくとも一部のフロー要素を未マスクにし、非フロー要素を既マスクにすることを含む操作を実行する。
【０１３３】
実施例２２は実施例２１のシステムを含み、第２のソースオペランドは即値を含む。
【０１３４】
実施例２３は機械で読み取り可能な持続性記憶媒体を含む製造品である。この機械で読み取り可能な持続性記憶媒体はデータ要素選択・統合命令を記憶している。この命令は、複数のデータ要素を有する第１のソースパックデータ・オペランドと複数のマスク要素を有する第２のソースオペランドを有する。第２のソースオペランドの各マスク要素は、第１のソースパックデータ・オペランドの同じ相対位置の異なるデータ要素に対応する。この命令は宛先記憶位置を表示する。この命令が機械で実行されると、機械は、結果パックデータ・オペランドを宛先記憶位置に記憶することを含む操作を実行する。結果パックデータ・オペランドは、第２のソースオペランドの未マスクのマスク要素に対応し、結果パックデータ・オペランドの一部に統合された第１のソースパックデータ・オペランドの全てのデータ要素を含む。
【０１３５】
実施例２４は実施例２３の製造品を含み、第２のソースオペランドは、プレディケーションに使用する一組の専用のパックデータ操作マスクレジスタの内の任意のパックデータ操作マスクレジスタである。
【０１３６】
実施例２５は実施例１３〜２０のいずれか１つの方法を実行するように作動するプロセッサまたは他の装置である。
【０１３７】
実施例２６は、実施例１３〜２０のいずれか１つの方法を実行する手段を含むプロセッサまたは他の装置である。
【０１３８】
実施例２７は、実施例１３〜２０のいずれか１つの方法を実行するモジュールを含むプロセッサまたは他の装置である。
【０１３９】
実施例２８は、実施例１３〜２０の任意の１つの方法を実行するモジュールおよび／または構成単位および／または論理回路および／または回路および／または手段の任意の組み合わせを含むプロセッサである。
【０１４０】
実施例２９は、機械可読持続性媒体を任意に含む製造品であり、本製造品は必要に応じて命令を記憶あるいは供給し、この命令がプロセッサ、コンピュータシステム、電子機器、または他の機械で実行されると、機械が実施例１３〜２０のいずれか１つの方法を実行するように作動する。
【０１４１】
実施例３０は、バスまたは他のインターコネクトと、このインターコネクトに連結された実施例１〜１２のいずれか１つのプロセッサと、このインターコネクトに連結された、動的ランダムアクセスメモリ（ＤＲＡＭ）、ネットワークインタフェース、画像チップ、無線通信チップ、移動通信用大域システム（ＧＳＭ（登録商標））アンテナ、相変化メモリ、および動画カメラから選択される少なくとも１つの構成要素とを含むコンピュータシステム、他の電子機器、または他の装置である。
【０１４２】
実施例３１は実質的に本明細書に記載のプロセッサまたは他の装置である。
【０１４３】
実施例３２は実質的に本明細書に記載のいずれかの方法を実行するように作動するプロセッサまたは他の装置である。
【０１４４】
実施例３３は実質的に本明細書に記載のいずれかのデータ要素選択・圧縮命令を実行するように作動するプロセッサまたは他の装置である。
【０１４５】
実施例３４は第１の命令セットの命令を復号する復号ユニットを含むプロセッサまたは他の装置である。この復号ユニットは、第１の命令をエミュレートする第１の命令セットの１または複数の命令を受け取る。第１の命令は、実質的に本明細書に開示されたいずれのデータ要素選択・圧縮命令であってもよく、第２の異なる命令セットとなるものである。このプロセッサまたは他の装置は、第１の命令セットの１または複数の命令を実行する復号ユニットに連結された１または複数の実行ユニットを含む。この１または複数の実行ユニットは、第１の命令セットの１または複数の命令に応答して結果を宛先記憶位置に記憶する。この結果は実質的に本明細書に開示されたデータ要素選択・圧縮命令のいずれの結果を含んでもよい。
【０１４６】
実施例３５は第１の命令セットの命令を復号する復号ユニットを有するプロセッサを含むコンピュータシステムまた他の電子機器である。このプロセッサは１または複数の実行ユニットも有する。この電子機器はプロセッサに連結された記憶装置も含む。この記憶装置は第１の命令を記憶する、この第１の命令は実質的に本明細書に開示されたいずれのデータ要素選択・圧縮命令であってもよく、第２の異なる命令セットとなるものである。記憶装置は、第１の命令を第１の命令セットの１または複数の命令に変換する命令を記憶することにもなっている。第１の命令セットの１または複数の命令がプロセッサで実行されたと、プロセッサが結果を宛先記憶位置に記憶するようになっている。この結果は実質的に本明細書に開示されたデータ要素選択・圧縮命令のいずれの結果を含んでもよい。
【図１】
0006465527.tif 000002
【図２】
0006465527.tif 000003
【図３】
0006465527.tif 000004
【図４】
0006465527.tif 000005
【図５】
0006465527.tif 000006
【図６】
0006465527.tif 000007
【図７Ａ】
0006465527.tif 000008
【図７Ｂ】
0006465527.tif 000009
【図７Ｃ】
0006465527.tif 000010
【図８】
0006465527.tif 000011
【図９】
0006465527.tif 000012
【図１０】
0006465527.tif 000013
【図１１Ａ】
0006465527.tif 000014
【図１１Ｂ】
0006465527.tif 000015
【図１２Ａ】
0006465527.tif 000016
【図１２Ｂ】
0006465527.tif 000017
【図１３】
0006465527.tif 000018
【図１４】
0006465527.tif 000019
【図１５】
0006465527.tif 000020
【図１６】
0006465527.tif 000021
【図１７】
0006465527.tif 000022
【図１８】
0006465527.tif 000023