(57)【要約】      （修正有）【課題】複数の試験ソースに対してＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングする方法及び装置を提供する。【解決手段】プロセッサ内において命令をフュージングする方法であって、第１オペランドデスティネーションを規定する第１命令と、第２オペランドソースを規定する第２命令と、分岐条件を規定する第３命令とを含む複数の命令をフェッチし、複数の命令の一部分を単一のマイクロ演算にフュージングすることを含み、第１オペランドデスティネーションと第２オペランドソースが同一であり、且つ、分岐条件が第２命令に依存している場合には、第１及び第２命令の両方を含む。【選択図】図１６Ａ
2014194755.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ内において命令をフュージングする方法であって、
第１オペランドデスティネーションを規定する第１命令と、第２オペランドソースを規定する第２命令と、分岐条件を規定する第３命令とを含む複数の命令をフェッチし、
前記複数の命令の一部分を単一のマイクロ演算にフュージングすることを含み、
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、且つ、前記分岐条件が前記第２命令に依存している場合には、前記第１及び第２命令の両方を含む方法。
【請求項２】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第２命令が試験命令である場合に、前記第１、第２、及び第３命令を含む請求項１に記載の方法。
【請求項３】
前記第１命令は、論理ＯＲ命令である請求項２に記載の方法。
【請求項４】
前記第１命令は、論理ＡＮＤ命令である請求項２に記載の方法。
【請求項５】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第２命令が論理ＡＮＤ命令である場合に、前記第１、第２、及び第３命令を含む請求項１に記載の方法。
【請求項６】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第１命令が論理ＯＲ命令である場合に、前記第１、第２、及び第３命令を含む請求項１に記載の方法。
【請求項７】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第１命令が論理ＡＮＤ命令である場合に、前記第１、第２、及び第３命令を含む請求項１に記載の方法。
【請求項８】
第１オペランドデスティネーションを規定する第１命令と、第２オペランドソースを規定する第２命令と、分岐条件を規定する第３命令とを含む複数の命令をフェッチするための第１パイプラインステージと、
前記複数の命令の一部分を単一の第１マイクロ演算として復号化するための第２パイプラインステージと
を有し、
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、且つ、前記分岐条件が前記第２命令に依存している場合に、前記第１及び第２命令の両方を含むプロセッサ。
【請求項９】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、且つ、前記第２及び第３命令が連続しており、且つ、前記第２命令が試験命令である場合に、前記第１、第２、及び第３命令を含む請求項８に記載のプロセッサ。
【請求項１０】
前記第１命令は、論理ＯＲ命令である請求項９に記載のプロセッサ。
【請求項１１】
前記第１命令は、論理ＡＮＤ命令である請求項９に記載のプロセッサ。
【請求項１２】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２命令が試験命令であり、且つ、前記第１命令が論理ＯＲ命令である場合に、前記第１及び第２命令の両方を含む請求項８に記載のプロセッサ。
【請求項１３】
前記分岐条件が前記第２命令に依存している場合に、前記単一の第１マイクロ演算と前記第３命令の第２マイクロ演算をフュージングするためのマイクロフュージョン論理を含む第３パイプラインステージを有する請求項１２に記載のプロセッサ。
【請求項１４】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第１命令が論理ＯＲ命令である場合に、前記第１、第２、及び第３命令を含む請求項８に記載のプロセッサ。
【請求項１５】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第１命令が論理ＡＮＤ命令である場合に、前記第１、第２、及び第３命令を含む請求項８に記載のプロセッサ。
【請求項１６】
プロセッサ内において命令をフュージングするシステムであって、
複数の命令を保存するためのメモリと、
プロセッサと、
を有し、
前記プロセッサは、
第１オペランドデスティネーションを規定する第１命令と、第２オペランドソースを規定する第２命令と、分岐条件を規定する第３命令とを含む前記複数の命令をフェッチするための第１パイプラインステージと、
前記複数の命令の一部分を単一の第１マイクロ演算として復号化するための第２パイプラインステージと
を有し、
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、且つ、前記分岐条件が、前記第２命令に依存する場合に、前記第１及び第２命令の両方を含むシステム。
【請求項１７】
前記部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、前記第２及び第３命令が連続しており、且つ、前記第２命令が試験命令である場合に、前記第１、第２、及び第３命令を含む請求項１６に記載のシステム。
【請求項１８】
前記第１命令は、論理ＯＲ命令である請求項１７に記載のシステム。
【請求項１９】
前記第１命令は、論理ＡＮＤ命令である請求項１７に記載のシステム。
【請求項２０】
前記プロセッサは、前記分岐条件が前記第２命令に依存している場合に、前記第３命令の第２マイクロ演算を前記単一の第１マイクロ演算とフュージングするためのマイクロフュージョン論理を含む第３パイプラインステージを有する請求項１６に記載のシステム。
【請求項２１】
第１ソース／デスティネーションデータオペランド及び第２ソースデータオペランドを規定する第１命令と、前記第１ソースデータオペランド及び第３ソースデータオペランドを規定する第２命令と、分岐ターゲットを規定する第３命令と、を復号化するための復号化ステージであって、単一のフュージングされたマイクロ演算としての実行のために前記第１命令及び前記第２命令を前記第３命令とフュージングするための復号化ステージと、
前記単一のフュージングされたマイクロ演算に応答し、前記第１ソース／デスティネーションデータオペランド及び前記第２ソースデータオペランドからのデータの間において第１論理演算を実行し、前記第３ソースデータオペランドからのデータ及び前記第１論理演算の結果の間において第２論理演算を実行して条件フラグを設定し、且つ、前記条件フラグが設定された場合に、前記分岐ターゲットに対する条件付き分岐を実行するための１つ又は複数の実行ユニットと、
を有するプロセッサ。
【請求項２２】
前記第２論理演算を実行するステップは、論理ＴＥＳＴ演算を有し、且つ、条件付きでゼロフラグを設定する請求項２１に記載のプロセッサ。
【請求項２３】
前記第１命令に従って、前記第１ソース／デスティネーションデータオペランド及び前記第２ソースデータオペランドからのデータの間において論理ＡＮＤが実行される請求項２２に記載のプロセッサ。
【請求項２４】
前記第１命令に従って、前記第１ソース／デスティネーションデータオペランド及び前記第２ソースデータオペランドからのデータの間において論理ＯＲが実行される請求項２３に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プロセッサ又はその他の処理論理によって実行された際に、論理的、数学的、又はその他の機能的な演算を実行する処理論理、マイクロプロセッサ、及び関連する命令セットアーキテクチャの分野に関する。具体的には、本開示は、複数の試験ソースに対してＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングする方法及び装置に関する。
【背景技術】
【０００２】
最近のプロセッサは、処理性能を改善すると共に／又は特殊な命令を利用するためにマイクロアーキテクチャ構造及び技法を含む場合がある。これらのマイクロアーキテクチャ構造及び技法は、例えば、アウトオブオーダー実行、複数のマクロ命令を１つのフュージングされた命令にフュージングするデコーダ、マイクロ命令もしくはマイクロ演算（又は、ｍｉｃｒｏ−ｏｐ、「μｏｐ」）キャッシュ、又はトレースキャッシュ、或いは、圧縮及び／又はフュージングされた命令又はｍｉｃｒｏ−ｏｐを処理するキューを含む場合がある。
【０００３】
命令のフュージョンとは、２つの命令を、実行時におけるプロセッサ内の１つの演算、マイクロ演算、シーケンスを結果的にもたらす単一の命令として合成する動的なプロセスである。プロセッサ命令キュー（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｑｕｅｕｅ：ＩＱ）内に保存されている命令は、ＩＱからの読出しの後に、且つ、命令デコーダへの送信の前に、或いは、命令デコーダによる復号化の後に、「フュージング」してもよい。通常、命令の復号化の前に行われる命令のフュージョンを「マクロフュージョン」と呼び、命令の（例えば、μｏｐとしての）復号化の後に行われる命令フュージョンを「マイクロフュージョン」と呼んでいる。マクロフュージョンの一例は、比較（「ＣＭＰ」）命令又は試験命令（「ＴＥＳＴ」）（「ＣＭＰ／ＴＥＳＴ」）を条件付きジャンプ（「ＪＣＣ」）命令と合成するというものである。ＣＭＰ／ＴＥＳＴとＪＣＣの命令ペアは、例えば、比較を実行し、且つ、比較の結果に基づいて、分岐を実行するか又は実行しないなどのように、ループの末尾においてプログラム内において規則的に発生することになる。マクロフュージョンは、命令のスループットを事実上増大させることになることから、命令をフュージングする機会を可能な限り多く見出すことが望ましいであろう。
【０００４】
クライアントサイドスクリプトによって、例えば、ユーザーとやり取りし、ブラウザを制御し、非同期式で通信し、且つ、文書コンテンツが表示されるのに伴って文書コンテンツを変更してもよいように、１つ又は複数のインタープリタ型コンピュータプログラム言語のサポートがウェブブラウザに含まれている場合がある。例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＪＳｃｒｉｐｔ、又はＥＣＭＡＳｃｒｉｐｔなどのインタープリタ型コンピュータプログラム又はスクリプト言語は、動的であると共に弱いタイピング型（ｗｅａｋｌｙ  ｔｙｐｅｄ）である場合があり、且つ、オブジェクト指向の命令型であると共に機能的なプログラミングスタイルをサポートしている場合がある。このようなインタープリタ型コンピュータプログラム言語は、インタープリタ型言語を機械命令のシーケンスとして動的にコンパイルするＪＩＴ（Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ）コンパイラの形態におけるブラウザサポートを見出する場合がある。ＪＩＴコンパイラは、保存されている値を処理の高速化を目的として最適化する場合があるが、この場合には、このような最適化のために、実行時にオブジェクトのタイプを動的に試験する必要がある。これらの動的な試験は、更なる処理のオーバーヘッドを導入し、これにより、相対的に大きなエネルギー消費量が必要になると共にそのような最適化に伴う任意の性能上の利点が制限される可能性がある。
【発明の概要】
【０００５】
これまでのところ、このような性能の制限の問題、エネルギー消費の懸念、及びその他の実行時のボトルネックに対する潜在的な解決策が十分に探求されてはいない。
【０００６】
本発明は、限定ではなく、一例として、添付図面の各図に示されている。
【図面の簡単な説明】
【０００７】
【図１Ａ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令を実行するシステムの一実施形態のブロック図である。
【図１Ｂ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令を実行するシステムの別の実施形態のブロック図である。
【図１Ｃ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令を実行するシステムの別の実施形態のブロック図である。
【図２】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令を実行するプロセッサの一実施形態のブロック図である。
【図３Ａ】一実施形態によるパック型データタイプを示す図である。
【図３Ｂ】一実施形態によるパック型データタイプを示す図である。
【図３Ｃ】一実施形態によるパック型データタイプを示す図である。
【図３Ｄ】一実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の符号化を示す図である。
【図３Ｅ】別の実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の符号化を示す図である。
【図３Ｆ】別の実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の符号化を示す図である。
【図３Ｇ】別の実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の符号化を示す図である。
【図３Ｈ】別の実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の符号化を示す図である。
【図４Ａ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのプロセッサマイクロアーキテクチャの一実施形態の要素を示す図である。
【図４Ｂ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのプロセッサマイクロアーキテクチャの別の実施形態の要素を示す図である。
【図５】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのプロセッサの一実施形態のブロック図である。
【図６】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのコンピュータシステムの一実施形態のブロック図である。
【図７】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのコンピュータシステムの別の実施形態のブロック図である。
【図８】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのコンピュータシステムの別の実施形態のブロック図である。
【図９】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのシステムオンチップの一実施形態のブロック図である。
【図１０】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を実行するためのプロセッサの一実施形態のブロック図である。
【図１１】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するＩＰコア開発システムの一実施形態のブロック図である。
【図１２】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するアーキテクチャエミュレーションシステムの一実施形態を示す図である。
【図１３】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を変換するためのシステムの一実施形態を示す図である。
【図１４】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングするためのプロセッサマイクロアーキテクチャの一代替実施形態の要素を示す図である。
【図１５Ａ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するためのフュージングされた命令構造の一実施形態のフロー図である。
【図１５Ｂ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するためのフュージングされた命令構造の一代替実施形態のフロー図である。
【図１５Ｃ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するためのフュージングされた命令構造の別の代替実施形態のフロー図である。
【図１６Ａ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングするためのプロセスの一実施形態のフロー図である。
【図１６Ｂ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングするためのプロセスの一代替実施形態のフロー図である。
【図１６Ｃ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングするためのプロセスの別の代替実施形態のフロー図である。
【図１６Ｄ】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングするためのプロセスの別の代替実施形態のフロー図である。
【図１７】複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令を実行するためのプロセスの一実施形態のフロー図である。
【発明を実施するための形態】
【０００８】
以下の説明は、プロセッサ、コンピュータシステム、又はその他の処理装置内において又はこれらとの関連において、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するためのフュージング可能な命令及び論理について開示している。
【０００９】
ウェブブラウザは、例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＪＳｃｒｉｐｔ、又はＥＣＭＡＳｃｒｉｐｔなどの１つ又は複数のインタープリタ型コンピュータプログラム言語のサポートを含んでいる場合があり、これらは、動的であると共に弱いタイピング型であってもよく、且つ、オブジェクト指向の命令型であり且つ機能的なプログラミングスタイルをサポートしてもよい。このようなインタープリタ型コンピュータプログラム言語は、インタープリタ型言語を機械命令のシーケンスとして動的にコンパイルするＪＩＴコンパイラの形態におけるブラウザのサポートを見出す場合がある。ＪＩＴコンパイラは、保存されている値を処理の高速化を目的として最適化することになるが、この場合には、このような最適化のために、実行時におけるオブジェクトのタイプの動的な試験が必要となる場合がある。例えば、ＪＩＴコンパイラは、機械語の１つ又は複数のビットを使用することにより、値が、相対的に一般的な浮動小数点値又はストリングではなく、最適化された整数であることを弁別すると共に／又は表してもよい。これらの１つ又は複数のビットの存在は、値にアクセスする前に、実行時に動的にチェックすることができる。このような動的なタイプ試験は、頻繁に実行されるタイプ試験命令シーケンスのイディオムの形態の更なる処理オーバーヘッドを導入し、これにより、相対的に大きなエネルギー消費量が必要になると共にそのようなコンパイラ最適化の任意の性能上の利点が制限される可能性がある。
【００１０】
これらの頻繁に実行される命令シーケンスのイディオムは、２つのソースデータオペランドを合成するための論理演算（例えば、いずれかのソース内のビットが１であるかどうかを試験する際のＯＲ、いずれかのソース内のビットがゼロであるかどうかを試験する際のＡＮＤ）と、比較又は試験命令（例えば、マスクに照らして論理演算の結果をＴＥＳＴするためのもの）と、条件付き分岐（例えば、ゼロフラグがＴＥＳＴによって設定されている／設定されていない場合に相対的に低速の一般的なコードシーケンスにジャンプするためのＪＺ／ＪＮＺなど）と、を含む場合がある。プロセッサ復号化論理は、比較命令又は試験命令（例えば、ＴＥＳＴ）を条件付き分岐命令（例えば、ＪＺ）と合成する際に、マクロフュージョンを利用してもよい。
【００１１】
複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令をフュージングする方法及び装置の実施形態が開示される。いくつかの実施形態は、フェッチ命令を含み、前記命令は、第１オペランドデスティネーションを規定する第１命令と、第２オペランドソースを規定する第２命令と、分岐条件を規定する第３命令と、を含む。複数の命令の一部分が、単一のマイクロ演算としてフュージングされ、この部分は、前記第１オペランドデスティネーションと前記第２オペランドソースが同一であり、且つ、前記分岐条件が第２命令に依存している場合に、第１及び第２命令の両方を含む。いくつかの実施形態は、１つの論理命令を従来技術の試験命令とフュージングすることにより、新しい試験命令を生成する。その他の実施形態は、動的に、但し、ＪＩＴコンパイラを通じて、試験命令を生成する。又、いくつかの実施形態は、試験命令を後続の条件付き分岐命令（例えば、ＪＺ）とフュージングし、且つ、条件フラグが設定された方式に従って分岐を実行する。従って、頻繁に実行される命令シーケンスのイディオムは、実行時においてプロセッサ内における１つのマイクロ演算シーケンスを結果的にもたらす単一の命令としてフュージング可能であってもよい。
【００１２】
複数の試験ソースに対するＯＲ試験及び／又はＡＮＤ試験機能を提供するためのフュージング可能な命令及び論理は、ほとんど、性能の制限の問題、エネルギー消費の懸念、及びＪＩＴコンパイラによって生成される頻繁に実行されるタイプ試験命令のイディオムと関連するその他の実行時のボトルネックを除去することになることを理解されたい。
【００１３】
以下の説明には、本発明の実施形態の相対的に十分な理解を提供するべく、処理論理、プロセッサタイプ、マイクロアーキテクチャ条件、イベント、イネーブルメントメカニズム、及びこれらに類似したものなどの多数の具体的な詳細が記述されている。但し、当業者には、これらの具体的な詳細を伴うことなしに、本発明を実施してもよいことが理解されよう。更には、本発明の実施形態を不必要に曖昧にすることを回避するべく、いくつかの周知の構成、回路、及びこれらに類似したものについては、詳細な図示が省略されている。
【００１４】
以下の実施形態は、プロセッサを参照して記述されているが、その他の実施形態は、その他のタイプの集積回路及び論理装置に適用可能である。本発明の実施形態の類似の技法及び教示は、更に大きなパイプラインスループット及び改善された性能の利益を享受することができるその他のタイプの回路又は半導体装置に適用することができる。本発明の実施形態の教示内容は、データ操作を実行する任意のプロセッサ又は機械に対して適用可能である。但し、本発明は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、又は１６ビットのデータ演算を実行するプロセッサ又は機械に限定されるものではなく、且つ、データの操作又は管理を実行する任意のプロセッサ及び機械に対して適用することができる。更には、以下の記述内容は、例を提供するものであり、且つ、添付図面は、例示を目的として、様々な例を示している。但し、これらの例は、本発明の実施形態の可能な実装形態のすべてを網羅したリストの提供ではなく、本発明の実施形態の例を提供することを目的としたものに過ぎないことから、これらの例は、限定の意味において解釈してはならない。
【００１５】
以下の例は、実行ユニット及び論理回路の文脈において命令の処理及び配布について記述しているが、本発明のその他の実施形態は、機械によって実行された際に本発明の少なくとも１つの実施形態による機能を機械に実行させる有体の機械可読媒体上に保存されたデータ及び／又は命令によって実現することができる。一実施形態においては、本発明の実施形態と関連する機能は、機械実行可能命令として実施されている。命令を使用することにより、命令によってプログラムされた汎用又は専用プロセッサに本発明のステップを実行させることができる。本発明の実施形態は、コンピュータプログラムプロダクト又はソフトウェアとして提供してもよく、このコンピュータプログラムプロダクト又はソフトウェアは、本発明の実施形態に従って１つ又は複数の演算を実行するようにコンピュータ（又は、その他の電子装置）をプログラムするべく使用してもよい命令をその上部に保存された状態において有する機械又はコンピュータ可読媒体を含んでもよい。或いは、この代わりに、本発明の実施形態のステップは、ステップを実行するための固定機能論理を含む特定のハードウェアコンポーネントにより、或いは、プログラムされたコンピュータコンポーネントと固定機能ハードウェアコンポーネントの任意の組合せにより、実行してもよいであろう。
【００１６】
本発明の実施形態を実行するように論理をプログラムするべく使用される命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又はその他のストレージなどのシステム内のメモリに保存することができる。更には、命令は、ネットワークを介して、又はその他のコンピュータ可読媒体により、配布することがきる。従って、機械可読媒体は、限定を伴うことなしに、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク、読出し専用メモリ（ＣＤ−ＲＯＭ）、並びに、磁気光ディスク、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気又は光カード、フラッシュメモリ、又は伝播する信号の電気的、光学的、音響的、又はその他の形態（例えば、搬送波、赤外線信号、デジタル信号など）を介したインターネット上における情報の伝送において使用される有体の機械可読ストレージなどの機械（例えば、コンピュータ）によって読み取り可能な形態で情報を保存又は伝送するための任意のメカニズムを含んでもよい。従って、コンピュータ可読媒体は、電子的な命令又は情報を機械（例えば、コンピュータ）によって読み取り可能な形態で保存又は送信するのに適した任意のタイプの有体の機械可読媒体を含む。
【００１７】
設計は、生成からシミュレーションを経て製造にまで至る様々な段階を経ることになる。設計を表すデータは、設計をいくつかの方式によって表してもよい。第１に、シミュレーションにおいて有用なように、ハードウェア記述言語又は別の機能記述言語を使用してハードウェアを表してもよい。更には、論理及び／又はトランジスタゲートを有する回路レベルのモデルを設計プロセスのいくつかの段階において生成してもよい。更には、大部分の設計は、なんらかの段階において、ハードウェアモデル内における様々な装置の物理的な配置を表す所定のレベルのデータに到達する。従来の半導体製造法を使用する場合には、ハードウェアモデルを表すデータは、集積回路を製造するために使用されるマスクの異なるマスク層上における様々な機能の存在又は不存在を規定するデータであってもよい。設計の任意の表現においては、データは、任意の形態の機械可読媒体内に保存してもよい。メモリ又はディスクなどの磁気的又は光学的ストレージは、このような情報を送信するべく変調又はその他の方法で生成された光学的又は電気的な波を介して伝送される情報を保存するための機械可読媒体であってもよい。電気的信号の複写、バッファリング、又は再伝送が実行される程度に符号又は設計を通知又は搬送する電気的な搬送波が伝送される際には、新しい複写が生成される。従って、通信プロバイダ又はネットワークプロバイダは、本発明の実施形態の技法を実施する搬送波として符号化された情報などの項目を有体の機械可読媒体上に少なくとも一時的に保存してもよい。
【００１８】
最近のプロセッサにおいては、いくつかの異なる実行ユニットを使用して様々なコード及び命令を処理及び実行している。いくつかのものは、相対的に迅速に完了し、その他のものは、完了するのにいくつかのクロックサイクルを要する可能性があることから、すべての命令が等しく生成されるわけではない。命令のスループットが大きいほど、プロセッサの全体的な性能が良好になる。従って、可能な限り高速で多くの命令を実行させることが有利であろう。但し、相対的に大きな複雑性を有すると共に実行時間及びプロセッサリソースの観点において相対的に多くのものを必要とする特定の命令が存在している。例えば、浮動小数点命令、ロード／ストア動作、データ移動などが存在している。
【００１９】
益々多くのコンピュータシステムがインターネット、テキスト、及びマルチメディアアプリケーションにおいて使用されようになるのに伴って、時間と共に更なるプロセッササポートが導入されている。一実施形態においては、命令セットは、データタイプ、命令、レジスタアーキテクチャ、アドレス指定モード、メモリアーキテクチャ、割込み及び例外処理、及び外部入出力（Ｉ／Ｏ）を含む１つ又は複数のコンピュータアーキテクチャと関連するものであってもよい。
【００２０】
一実施形態においては、命令セットアーキテクチャ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）は、１つ又は複数の命令セットを実装するために使用されるプロセッサ論理及び回路を含む１つ又は複数のマイクロアーキテクチャによって実装してもよい。従って、異なるマイクロアーキテクチャを有するプロセッサが共通命令セットの少なくとも一部分を共有することができる。例えば、Ｉｎｔｅｌ（登録商標）  Ｐｅｎｔｉｕｍ（登録商標）  ４プロセッサ、Ｉｎｔｅｌ  Ｃｏｒｅ（商標）プロセッサ、及びカリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．社からのプロセッサは、略同一のバージョンのｘ８６命令セット（相対的に新しいバージョンに伴って追加されたいくつかの拡張を有するもの）を実装しているが、異なる内部設計を有する。同様に、ＡＲＭホールディングス社、ＭＩＰＳ社、又は彼らのライセンシー又は採用者などのその他のプロセッサ開発会社によって設計されたプロセッサも、共通命令セットの少なくとも一部分を共有してもよいが、異なるプロセッサ設計を含んでもよい。例えば、専用の物理レジスタ、レジスタリネームメカニズム（例えば、ＲＡＴ（Ｒｅｇｉｓｔｅｒ  Ａｌｉａｓ  Ｔａｂｌｅ）の使用）を使用する１つ又は複数の動的に割り当てられた物理レジスタ、ＲＯＢ（Ｒｅｏｒｄｅｒ  Ｂｕｆｆｅｒ）、及びリタイアメントレジスタファイルを含む新しい又は周知の技法を使用する異なるマイクロアーキテクチャにおいて異なる方法でＩＳＡの同一のレジスタアーキテクチャを実装してもよい。一実施形態においては、レジスタは、ソフトウェアプログラマによるアドレス指定が可能であっても又は可能でなくてもよい１つ又は複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、又はその他のレジスタセットを含んでもよい。
【００２１】
一実施形態においては、命令は、１つ又は複数の命令フォーマットを含んでもよい。一実施形態においては、命令フォーマットは、例えば、実行を要する演算及びその演算が実行の対象とする１つ又は複数のオペランドを規定するための様々なフィールド（ビットの数やビットの場所など）を含んでもよい。いくつかの命令フォーマットは、命令テンプレート（又は、サブフォーマット）によって定義された状態で、更に分割してもよい。例えば、所与の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを有するように定義してもよいと共に／又は、異なる方式によって解釈される所与のフィールドを有するように定義してもよい。一実施形態においては、命令は、命令フォーマットを使用して（且つ、定義されている場合には、その命令フォーマットの命令テンプレートのうちの所与の命令テンプレートにおいて）表現され、且つ、演算及びその演算が操作する対象のオペランドを規定又は通知している。
【００２２】
科学的な、財務的な、自己ベクトル化された汎用のＲＭＳ（Ｒｅｃｏｇｎｉｔｉｏｎ，  Ｍｉｎｉｎｇ，ａｎｄ  Ｓｙｎｔｈｅｓｉｓ）の視覚的なマルチメディアアプリケーション（例えば、２Ｄ／３Ｄグラフィックス、画像処理、ビデオ圧縮／圧縮解除、音声認識アルゴリズム、及びオーディオ操作）は、同一の演算を多数のデータ項目に対して実行することを要する場合がある。一実施形態においては、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）は、プロセッサに複数のデータ要素に対して演算を実行させるタイプの命令を意味している。ＳＩＭＤ技術は、レジスタ内のビットをそれぞれが別個の値を表すいくつかの固定サイズ又は可変サイズのデータ要素に論理的に分割することができるプロセッサ内において使用してもよい。例えば、一実施形態においては、６４ビットレジスタ内のビットは、それぞれが別個の１６ビット値を表す４つの別個の１６ビットのデータ要素を収容するソースオペランドとして編成してもよい。このタイプのデータは、「パック型」データタイプ又は「ベクトル」データタイプと呼んでもよく、且つ、このデータタイプのオペランドは、パック型データオペランド又はベクトルオペランドと呼ばれる。一実施形態においては、パック型データ項目又はベクトルは、単一のレジスタ内に保存されたパック型データ要素のシーケンスであってもよく、且つ、パック型データオペランド又はベクトルオペランドは、ＳＩＭＤ命令（又は、「パック型データ命令」又は「ベクトル命令」）のソース又はデスティネーションオペランドであってもよい。一実施形態においては、ＳＩＭＤ命令は、同一の又は異なる数のデータ要素と共に、且つ、同一の又は異なるデータ要素の順序において、同一の又は異なるサイズのデスティネーションベクトルオペランド（結果ベクトルオペランドとも呼ばれる）を生成するべく、２つのソースベクトルオペランドに対して実行される単一のベクトル演算を規定している。
【００２３】
ｘ８６、ＭＭＸ（商標）、ＳＳＥ（Ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎｓ）、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４．１、及びＳＳＥ４．２命令を含む命令セットを有するＩｎｔｅｌ（登録商標）  Ｃｏｒｅ（商標）プロセッサ、ＶＦＰ（Ｖｅｃｔｏｒ  Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ）及び／又はＮＥＯＮ命令を含む命令セットを有するＡＲＭ  Ｃｏｒｔｅｘ（登録商標）ファミリーのプロセッサなどのＡＲＭプロセッサ、並びに、Ｃｈｉｎｅｓｅ  Ａｃａｄｅｍｙ  ｏｆ  ＳｃｉｅｎｃｅｓのＩＣＴ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｙ）によって開発されたＬｏｏｎｇｓｏｎファミリーのプロセッサなどのＭＩＰＳプロセッサによって利用されているものなどのＳＩＭＤ技術は、アプリケーション性能の大幅な改善を可能にする（Ｃｏｒｅ（商標）及びＭＭＸ（商標）は、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社の登録商標又は商標である）。
【００２４】
一実施形態においては、デスティネーション及びソースレジスタ／データは、対応するデータ又は演算のソース及びデスティネーションを表す一般的な用語である。いくつかの実施形態においては、これらは、レジスタ、メモリ、又は図示されているもの以外のその他の名称又は機能を有するその他のストレージエリアによって実装してもよい。例えば、一実施形態においては、「ＤＥＳＴ１」は、一時的なストレージレジスタ又はその他のストレージエリアであってもよく、「ＳＲＣ１」及び「ＳＲＣ２」は、第１及び第２ソースストレージレジスタ又はその他のストレージエリアであってもよく、以下同様である。その他の実施形態においては、ＳＲＣ及びＤＥＳＴストレージエリアのうちの複数のものは、同一のストレージエリア内の異なるデータストレージ要素（例えば、ＳＩＭＤレジスタ）に対応してもよい。又、一実施形態においては、例えば、第１及び第２ソースデータに対して実行された演算の結果を、デスティネーションレジスタとして機能する２つのソースレジスタのうちの１つに書き戻すことにより、ソースレジスタのうちの１つがデスティネーションレジスタとして機能してもよい。
【００２５】
図１Ａは、本発明の一実施形態による命令を実行するための実行ユニットを含むプロセッサを有するように形成された例示用のコンピュータシステムのブロック図である。システム１００は、本明細書に記述されている実施形態と同様に、本発明に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを利用するためのプロセッサ１０２などのコンポーネントを含む。システム１００は、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能なＰＥＮＴＩＵＭ（登録商標）  ＩＩＩ、ＰＥＮＴＩＵＭ（登録商標）  ４、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（商標）、及び／又はＳｔｒｏｎｇＡＲＭ（商標）マイクロプロセッサに基づいた処理システムを表しているが、その他のシステム（その他のマイクロプロセッサを有するＰＣ、エンジニアリングワークステーション、セットトップボックス、及びこれらに類似したものを含む）を使用してもよい。一実施形態においては、サンプルシステム１００は、ワシントン州Ｒｅｄｍｏｎｄに所在するＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社から入手可能な所定のバージョンのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムを実行してもよいが、その他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）及びＬｉｎｕｘ（登録商標））、埋込み型のソフトウェア、及び／又はグラフィカルユーザーインターフェイスを使用してもよい。従って、本発明の実施形態は、ハードウェア回路及びソフトウェアの任意の特定の組合せに限定されるものではない。
【００２６】
実施形態は、コンピュータシステムに限定されるものではない。本発明の代替実施形態は、ハンドヘルド型装置及び埋込み型アプリケーションなどのその他の装置において使用することもできる。ハンドヘルド装置のいくつかの例は、セルラー電話機、インターネットプロトコル装置、デジタルカメラ、パーソナルデジタルアシスタント（ＰＤＡ）、及びハンドヘルドＰＣを含む。埋込み型アプリケーションは、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、又は少なくとも１つの実施形態に従って１つ又は複数の命令を実行することができる任意のその他のシステムを含むことができる。
【００２７】
図１Ａは、本発明の一実施形態に従って少なくとも１つの命令を実行するアルゴリズムを実行するための１つ又は複数の実行ユニット１０８を含むプロセッサ１０２を有するように形成されたコンピュータシステム１００のブロック図である。一実施形態は、シングルプロセッサのデスクトップ又はサーバーシステムの文脈において記述されることになるが、代替実施形態は、マルチプロセッサシステム内に含むこともできる。システム１００は、「ハブ」システムアーキテクチャの一例である。コンピュータシステム１００は、データ信号を処理するためのプロセッサ１０２を含む。プロセッサ１０２は、例えば、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）マイクロプロセッサ、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ）マイクロプロセッサ、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又はデジタル信号プロセッサなどの任意のその他のプロセッサ装置であってもよい。プロセッサ１０２は、プロセッサバス１１０に結合されており、プロセッサバス１１０は、プロセッサ１０２とシステム１００内のその他のシステムコンポーネントの間においてデータ信号を送信することができる。システム１００の要素は、当業者には周知のそれぞれの従来の機能を実行する。
【００２８】
一実施形態においては、プロセッサ１０２は、レベル１（Ｌ１）内部キャッシュメモリ１０４を含む。アーキテクチャに応じて、プロセッサ１０２は、単一の内部キャッシュ又はマルチレベルの内部キャッシュを有することができる。或いは、この代わりに、別の実施形態においては、キャッシュメモリは、プロセッサ１０２の外部に存在することもできる。又、その他の実施形態は、特定の実装形態及びニーズに応じて、内部及び外部キャッシュの両方の組合せを含むこともできる。レジスタファイル１０６は、異なるタイプのデータを、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタレジスタを含む様々なレジスタ内に保存することができる。
【００２９】
又、整数及び浮動小数点演算を実行する論理を含む実行ユニット１０８も、プロセッサ１０２内に存在している。又、プロセッサ１０２は、特定のマイクロ命令のマイクロコードを保存するマイクロコード（μｃｏｄｅ）ＲＯＭをも含んでいる。一実施形態においては、実行ユニット１０８は、パック型命令セット１０９を処理するための論理を含む。命令を実行するための関連する回路と共にパック型命令セット１０９を汎用プロセッサ１０２の命令セットに含むことにより、汎用プロセッサ１０２内のパック型データを使用し、多くのマルチメディアアプリケーションによって使用される演算を実行してもよい。従って、パック型データに対して演算を実行するためのプロセッサのデータバスの幅全体を使用することにより、多くのマルチメディアアプリケーションの速度を向上させると共にそれらのアプリケーションを相対的に効率的に実行することができる。これにより、一度に１つのデータ要素に対して１つ又は複数の演算を実行するためにデータを複数の相対的に小さな単位でプロセッサのデータバスに跨って転送する必要性を除去することができる。
【００３０】
又、実行ユニット１０８の代替実施形態は、マイクロコントローラ、埋込み型プロセッサ、グラフィックス装置、ＤＳＰ、及びその他のタイプの論理回路内において使用することもできる。システム１００は、メモリ１２０を含む。メモリ１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）装置、スタティックランダムアクセスメモリ（ＳＲＡＭ）装置、フラッシュメモリ装置、又はその他のメモリ装置であってもよい。メモリ１２０は、プロセッサ１０２によって実行することができるデータ信号によって表された命令及び／又はデータを保存することができる。
【００３１】
システム論理チップ１１６がプロセッサバス１１０及びメモリ１２０に結合されている。図示の実施形態におけるシステム論理チップ１１６は、メモリコントローラハブ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ：ＭＣＨ）である。プロセッサ１０２は、プロセッサバス１１０を介してＭＣＨ１１６に対して通信することができる。ＭＣＨ１１６は、命令及びデータ保存のために、且つ、グラフィックスコマンド、データ、及びテクスチャの保存のために、メモリ１２０に対する高帯域幅のメモリ経路１１８を提供している。ＭＣＨ１１６は、データ信号をプロセッサ１０２、メモリ１２０、及びシステム１００内のその他のコンポーネントの間において移送し、且つ、データ信号をプロセッサバス１１０、メモリ１２０、及びシステムＩ／Ｏ１２２の間において橋絡するためのものである。いくつかの実施形態においては、システム論理チップ１１６は、グラフィックスコントローラ１１２に結合するためのグラフィックスポートを提供することができる。ＭＣＨ１１６は、メモリインターフェイス１１８を通じてメモリ１２０に結合されている。グラフィックスカード１１２は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）相互接続１１４を通じてＭＣＨ１１６に結合されている。
【００３２】
システム１００は、プロプライエタリなハブインターフェイスバス１２２を使用してＭＣＨ１１６をＩ／Ｏコントローラハブ（ＩＣＨ）１３０に結合している。ＩＣＨ１３０は、ローカルＩ／Ｏバスを介していくつかのＩ／Ｏ装置に対する直接的な接続を提供している。ローカルＩ／Ｏバスは、周辺装置をメモリ１２０、チップセット、及びプロセッサ１０２に対して接続するための高速Ｉ／Ｏバスである。いくつかの例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）１２８、ワイヤレストランシーバ１２６、データストレージ１２４、ユーザー入力及びキーボードインターフェイスを含むレガシーＩ／Ｏコントローラ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などのシリアル拡張ポート、及びネットワークコントローラ１３４である。データストレージ装置１２４は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭ装置、フラッシュメモリ装置、又はその他のマスストレージ装置を有することができる。
【００３３】
システムの別の実施形態においては、一実施形態による命令をシステムオンチップと共に使用することができる。システムオンチップの一実施形態は、プロセッサと、メモリと、を有する。このような１つのシステム用のメモリは、フラッシュメモリである。フラッシュメモリは、プロセッサ及びその他のシステムコンポーネントと同一のダイ上に配置することができる。更には、メモリコントローラ又はグラフィックスコントローラなどのその他の論理ブロックをシステムオンチップ上に配置することもできる。
【００３４】
図１Ｂは、本発明の一実施形態の原理を実装したデータ処理システム１４０を示している。当業者には、本明細書に記述されている実施形態は、本発明の実施形態の範囲を逸脱することなしに、代替処理システムと共に使用することができることが容易に理解されよう。
【００３５】
コンピュータシステム１４０は、一実施形態に従って少なくとも１つの命令を実行する能力を有する処理コア１５９を有する。一実施形態においては、処理コア１５９は、限定を伴うことなしに、ＣＩＳＣ、ＲＩＳＣ、又はＶＬＩＷタイプのアーキテクチャを含む任意のタイプのアーキテクチャの処理ユニットを表している。又、処理コア１５９は、１つ又は複数のプロセス技術による製造に適することにもなり、且つ、機械可読媒体上において十分詳細に表現されることにより、前記製造の円滑な実行にも適することになろう。
【００３６】
処理コア１５９は、実行ユニット１４２と、１つ又は複数のレジスタファイルの組１４５と、デコーダ１４４と、を有する。又、処理コア１５９は、本発明の実施形態の理解には不要な更なる回路（図示されてはいない）をも含む。実行ユニット１４２は、処理コア１５９が受け取った命令を実行するために使用される。通常のプロセッサ命令を実行するのに加えて、実行ユニット１４２は、パック型データフォーマットに対する演算を実行するためのパック型命令セット１４３内の命令を実行することができる。パック型命令セット１４３は、本発明の実施形態及びその他のパック型命令を実行するための命令を含む。実行ユニット１４２は、内部バスによってレジスタファイル１４５に結合されている。レジスタファイル１４５は、データを含む情報を保存するための処理コア１５９上のストレージエリアを表している。上述のように、パック型データを保存するために使用されるストレージエリアは、必須ではないことを理解されたい。実行ユニット１４２は、デコーダ１４４に結合されている。デコーダ１４４は、処理コア１５９が受け取った命令を制御信号及び／又はマイクロコードエントリポイントとして復号化するために使用される。これらの制御信号及び／又はマイクロコードエントリポイントに応答し、実行ユニット１４２は、適切な演算を実行する。一実施形態においては、デコーダを使用することにより、命令内に示されている対応するデータに対して実行するべき演算を通知することになる命令のｏｐｃｏｄｅを解釈している。
【００３７】
処理コア１５９は、様々なその他のシステム装置と通信するためのバス１４１と結合されており、その他のシステム装置は、限定を伴うことなしに、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）制御部１４６、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）制御部１４７、バーストフラッシュメモリインターフェイス１４８、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）／ＣＦ（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ）カード制御部１４９、液晶ディスプレイ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：ＬＣＤ）制御部１５０、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＤＭＡ）コントローラ１５１、及びオルタネートバスマスタインターフェイス１５２を含んでもよい。又、一実施形態においては、データ処理システム１４０は、Ｉ／Ｏバス１５３を介して様々なＩ／Ｏ装置と通信するためのＩ／Ｏブリッジ１５４を有してもよい。このようなＩ／Ｏ装置は、限定を伴うことなしに、例えば、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）１５５、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）１５６、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線ＵＡＲＴ１５７、及びＩ／Ｏ拡張インターフェイス１５８を含んでもよい。
【００３８】
データ処理システム１４０の一実施形態は、モバイル、ネットワーク、及び／又は無線通信と、テキストストリング比較演算を含むＳＩＭＤ演算を実行する能力を有する処理コア１５９と、を提供している。処理コア１５９は、Ｗａｌｓｈ−Ｈａｄａｍａｒｄ変換、高速フーリエ変換（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ：ＦＦＴ）、離散コサイン変換（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ：ＤＣＴ）などの離散変換、及びこれらの個々の逆変換、色空間変換、ビデオ符号化モーション推定、又はビデオ復号化モーション補償などの圧縮／圧縮解除法、及びＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅｄ  Ｍｏｄｕｌａｔｉｏｎ）などの変調／復調（ＭＯＤＥＭ）機能を含む様々なオーディオ、ビデオ、撮像、及び通信アルゴリズムを有するようにプログラムしてもよい。
【００３９】
図１Ｃは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令を実行する能力を有するデータ処理システムの別の代替実施形態を示している。一代替実施形態によれば、データ処理システム１６０は、主プロセッサ１６６と、ＳＩＭＤコプロセッサ１６１と、キャッシュメモリ１６７と、入出力システム１６８と、を含んでもよい。入出力システム１６８は、任意選択により、無線インターフェイス１６９に結合してもよい。ＳＩＭＤコプロセッサ１６１は、一実施形態による命令を含む演算を実行する能力を有する。処理コア１７０は、１つ又は複数のプロセス技術による製造に適することになり、且つ、機械可読媒体上において十分詳細に表現されることにより、処理コア１７０を含むデータ処理システム１６０のすべて又は一部の製造を円滑に実行するのに適することなる。
【００４０】
一実施形態においては、ＳＩＭＤコプロセッサ１６１は、実行ユニット１６２と、１つ又は複数のレジスタファイルの組１６４と、有する。主プロセッサ１６６の一実施形態は、実行ユニット１６２による実行のために一実施形態による命令を含む命令セット１６３の命令を認識するためのデコーダ１６５を有する。又、代替実施形態においては、ＳＩＭＤコプロセッサ１６１は、命令セット１６３の命令を復号化するためにデコーダ１６５Ｂの少なくとも一部分を有する。又、処理コア１７０は、本発明の実施形態の理解のためには不要な更なる回路（図示されてはいない）をも含む。
【００４１】
動作の際には、主プロセッサ１６６は、キャッシュメモリ１６７及び入出力システム１６８とのやり取りを含む一般的なタイプのデータ処理演算を制御するデータ処理命令のストリームを実行する。データ処理命令のストリームには、ＳＩＭＤコプロセッサ命令が組み込まれている。主プロセッサ１６６のデコーダ１６５は、これらのＳＩＭＤコプロセッサ命令を、装着されているＳＩＭＤコプロセッサ１６１によって実行するべきタイプであるものとして認識する。相応して、主プロセッサ１６６は、これらのＳＩＭＤコプロセッサ命令（又は、ＳＩＭＤコプロセッサ命令を表す制御信号）をコプロセッサバス１７１上において発行し、任意の装着されているＳＩＭＤコプロセッサが、このバスから、これらの命令を受け取る。このケースにおいては、ＳＩＭＤコプロセッサ１６１は、受け取った自身を宛先とする任意のＳＩＭＤコプロセッサ命令を受け付けると共に実行することになる。
【００４２】
ＳＩＭＤコプロセッサ命令による処理のために、データを無線インターフェイス１６９を介して受け取ってもよい。一例として、音声通信をデジタル信号の形態で受け取ってもよく、このデジタル信号をＳＩＭＤコプロセッサ命令によって処理し、音声通信を表すデジタルオーディオサンプルを再生してもよい。別の例として、圧縮されたオーディオ及び／又はビデオをデジタルビットストリームの形態で受け取ってもよく、このデジタルビットストリームをＳＩＭＤコプロセッサ命令によって処理し、デジタルオーディオサンプル及び／又はモーションビデオフレームを再生してもよい。処理コア１７０の一実施形態においては、主プロセッサ１６６及びＳＩＭＤコプロセッサ１６１を単一の処理コア１７０として統合しており、この処理コア１７０は、実行ユニット１６２と、１つ又は複数のレジスタファイルの組１６４と、一実施形態による命令を含む命令セット１６３の命令を認識するためのデコーダ１６５と、を有する。
【００４３】
図２は、本発明の一実施形態による命令を実行するための論理回路を含むプロセッサ２００のマイクロアーキテクチャのブロック図である。いくつかの実施形態においては、一実施形態による命令は、バイト、ワード、ダブルワード、クアドワード（ｑｕａｄｗｏｒｄ）などのサイズと、単精度及び倍精度の整数及び浮動小数点データタイプなどのデータタイプと、を有するデータ要素に対して動作するように実装することができる。一実施形態においては、インオーダーフロントエンド２０１は、プロセッサ２００の一部分であり、実行対象の命令をフェッチし、且つ、後からプロセッサパイプライン内において使用されるようにそれらの命令の準備を行う。フロントエンド２０１は、いくつかのユニットを含んでもよい。一実施形態においては、命令プリフェッチャ２２６が、メモリから命令をフェッチし、且つ、それらの命令を命令デコーダ２２８に供給し、次いで、命令デコーダ２２８が、それらの命令を復号化及び解釈する。例えば、一実施形態においては、デコーダは、受け取った命令を、機械が実行することができる「マイクロ命令」又は「マイクロ演算」と呼ばれる（ｍｉｃｒｏ−ｏｐ又はμｏｐとも呼ばれる）１つ又は複数の演算として復号化する。その他の実施形態においては、デコーダは、命令を、一実施形態に従って演算を実行するためにマイクロアーキテクチャによって使用されるｏｐｃｏｄｅ及び対応するデータ及び制御フィールドとして解析する。一実施形態においては、トレースキャッシュ２３０が、復号化されたμｏｐを取得し、且つ、実行のために、それらのμｏｐをμｏｐキュー２３４内においてプログラム順序付けシーケンス又はトレースとして取り纏める。トレースキャッシュ２３０が複雑な命令に遭遇した際には、マイクロコードＲＯＭ２３２が、演算を完成させるのに必要なμｏｐを提供する。
【００４４】
いくつかの命令は、単一のｍｉｃｒｏ−ｏｐに変換され、その他のものは、演算の全体を完了させるために、いくつかのｍｉｃｒｏ−ｏｐを必要としている。一実施形態においては、命令を完成させるために４つを上回る数のｍｉｃｒｏ−ｏｐが必要である場合には、デコーダ２２８は、マイクロコードＲＯＭ２３２にアクセスし、命令を完成させる。一実施形態においては、命令は、命令デコーダ２２８における処理のために、少数のｍｉｃｒｏ−ｏｐとして復号化することができる。別の実施形態においては、演算を実現するためにいくつかのｍｉｃｒｏ−ｏｐが必要とされる場合には、命令をマイクロコードＲＯＭ２３２内に保存することができる。トレースキャッシュ２３０は、一実施形態による１つ又は複数の命令を完成させるためにマイクロコードＲＯＭ２３２からマイクロコードシーケンスを読み取るべく正しいマイクロ命令ポインタを判定するためのエントリポイントＰＬＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  ａｒｒａｙ）を表している。マイクロコードＲＯＭ２３２が１つの命令のｍｉｃｒｏ−ｏｐの順序付けを終了した後に、機械のフロントエンド２０１は、トレースキャッシュ２３０からのｍｉｃｒｏ−ｏｐのフェッチを再開する。
【００４５】
アウトオブオーダー実行エンジン２０３は、実行のために命令の準備が行われるところである。アウトオブオーダー実行論理は、命令がパイプラインを下ると共に実行のためにスケジューリングされるのに伴って、性能の最適化のために命令の流れを滑らかにすると共に再順序付けするために、いくつかのバッファを有する。アロケータ論理は、実行のためにそれぞれのμｏｐが必要としている機械バッファ及びリソースを割り当てる。レジスタリネーム論理は、論理レジスタをレジスタファイル内のエントリ上にリネームする。又、アロケータは、メモリスケジューラ、高速スケジューラ２０２、低速／一般的浮動小数点スケジューラ２０４、及び単純浮動小数点スケジューラ２０６からなる命令スケジューラの前において、メモリ演算用のキューと非メモリ演算用のキューからなる２つのμｏｐキューのうちの１つのキュー内のそれぞれのμｏｐごとにエントリを割り当てる。μｏｐスケジューラ２０２、２０４、２０６は、μｏｐの実行の準備が整うタイミングを、その従属する入力レジスタオペランドソースの準備完了状態と、μｏｐがその演算を完了させるのに必要とする実行リソースの可用性と、に基づいて、判定する。一実施形態の高速スケジューラ２０２は、主クロックサイクルのそれぞれの半分ごとに、スケジューリングすることが可能であり、その他のスケジューラは、主プロセッサクロックサイクルごとに、スケジューリングするのみである。スケジューラは、μｏｐの実行をスケジューリングするためにディスパッチポートの間の調整を行う。
【００４６】
レジスタファイル２０８、２１０は、スケジューラ２０２、２０４、２０６と実行ブロック２１１内の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４の間に位置している。それぞれ、整数演算と浮動小数点演算のために別個のレジスタファイル２０８、２１０が存在している。又、一実施形態のそれぞれのレジスタファイル２０８、２１０は、バイパスネットワークをも含んでおり、バイパスネットワークは、レジスタファイバ内にまだ書き込まれていない完了したばかりの結果をバイパスするか又は新しい従属μｏｐに対して転送することができる。又、整数レジスタファイル２０８及び浮動小数点レジスタファイル２１０は、他方との間においてデータを通信する能力をも有する。一実施形態においては、整数レジスタファイル２０８は、データの下位の３２ビット用の１つのレジスタファイルと、データの上位の３２ビット用の第２レジスタファイルと、からなる２つの別個のレジスタファイルに分割される。浮動小数点命令は、通常、幅が６４〜１２８ビットのオペランドを有しているため、一実施形態の浮動小数点レジスタファイル２１０は、１２８ビット幅のエントリを有する。
【００４７】
実行ブロック２１１は、実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４を収容しており、命令は、これらの実行ユニットにおいて実際に実行される。このセクションは、マイクロ命令が実行を要する整数及び浮動小数点データオペランド値を保存するレジスタファイル２０８、２１０を含む。一実施形態のプロセッサ２００は、アドレス生成ユニット（Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｉｏｎ  Ｕｎｉｔ：ＡＧＵ）２１２、ＡＧＵ２１４、高速ＡＬＵ２１６、高速ＡＬＵ２１８、低速ＡＬＵ２２０、浮動小数点ＡＬＵ２２２、及び浮動小数点移動ユニット２２４からなるいくつかの実行ユニットから構成されている。一実施形態においては、浮動小数点実行ブロック２２２、２２４は、浮動小数点、ＭＭＸ、ＳＩＭＤ、及びＳＳＥ、或いは、その他の動作を実行する。一実施形態の浮動小数点ＡＬＵ２２２は、除算、平方根、及び残りのｍｉｃｒｏ−ｏｐを実行するための６４ビット×６４ビットの浮動小数点除算器を含む。本発明の実施形態においては、浮動小数点値を伴う命令は、浮動小数点ハードウェアによって処理してもよい。一実施形態においては、ＡＬＵ演算は、高速ＡＬＵ実行ユニット２１６、２１８に進む。一実施形態の高速ＡＬＵ２１６、２１８は、クロックサイクルの半分の有効レイテンシーを伴って高速演算を実行することができる。一実施形態においては、低速ＡＬＵ２２０が、乗算器、シフト、フラグ論理、及び分岐処理などの長レイテンシータイプの演算用の整数実行ハードウェアを含んでいることから、大部分の複雑な整数演算は、低速ＡＬＵ２２０に進む。メモリロード／ストア演算は、ＡＧＵ２１２、２１４によって実行される。一実施形態においては、整数ＡＬＵ２１６、２１８、２２０は、６４ビットのデータオペランドに対する整数演算を実行するという文脈において記述されている。代替実施形態においては、ＡＬＵ２１６、２１８、２２０は、１６、３２、１２８、２５６などを含む様々なデータビットをサポートするように実装することができる。同様に、浮動小数点ユニット２２２、２２４は、様々な幅のビットを有する一連のオペランドをサポートするように実装することができる。一実施形態においては、浮動小数点ユニット２２２、２２４は、ＳＩＭＤ及びマルチメディア命令との関連においては、１２８ビット幅のパック型データオペランドに対して実行することができる。
【００４８】
一実施形態においては、μｏｐスケジューラ２０２、２０４、２０６は、親の読込みの実行が終了する前に、従属演算をディスパッチする。又、μｏｐは、プロセッサ２００内において推測によってスケジューリング及び実行されることから、プロセッサ２００は、メモリ誤りを処理するための論理をも含む。データキャッシュ内におけるデータの読込みに誤りが発生した場合には、一時的に誤ったデータをスケジューラが有する状態でパイプラインにおいて稼働中である従属演算が存在する可能性がある。再生メカニズムは、誤ったデータを使用している命令を追跡し、且つ、それらの命令を再実行する。再生を要するのは、従属演算のみであり、且つ、独立演算は、完了することが許容される。又、プロセッサの一実施形態のスケジューラ及び再生メカニズムは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供する命令を捕捉するように設計されている。
【００４９】
「レジスタ」という用語は、オペランドを識別するための命令の一部分として使用されるオンボードプロセッサのストレージ場所を意味してもよい。換言すれば、レジスタは、（プログラマの観点において）プロセッサの外部から使用可能なものであってもよい。但し、一実施形態のレジスタは、意味において、特定のタイプの回路に限定されるべきではない。むしろ、一実施形態のレジスタは、データを保存及び提供する能力を有し、且つ、本明細書に記述されている機能を実行する能力を有する。本明細書に記述されているレジスタは、専用の物理レジスタ、レジスタのリネームを使用して動的に割り当てられる物理レジスタ、専用の且つ動的に割り当てられる物理レジスタの組合せなどの任意の数の異なる技法を使用するプロセッサ内の回路によって実装することができる。一実施形態においては、整数レジスタは、３２ビットの整数データを保存している。又、一実施形態のレジスタファイルは、パック型データ用の８つのマルチメディアＳＩＭＤレジスタを収容している。以下の説明においては、レジスタは、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社のＭＭＸ技術に対応したマイクロプロセッサ内の６４ビット幅のＭＭＸ（商標）レジスタ（いくつかの例においては、「ｍｍ」レジスタとも呼ばれる）などのパック型データを保持するように設計されたデータレジスタであるものとして理解されたい。整数の形態と浮動小数点の形態の両方において入手可能なこれらのＭＭＸレジスタは、ＳＩＭＤ及びＳＳＥ命令を伴うパック型データ要素と共に動作することができる。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、又はこれを上回る次数の（一般に、「ＳＳＥｘ」と呼ばれる）技術に関係する１２８ビット幅のＸＭＭレジスタを使用することにより、このようなパック型データオペランドを保持することもできる。一実施形態においては、パック型データ及び整数データの保存の際に、レジスタは、２つのデータタイプを弁別する必要がない。一実施形態においては、整数及び浮動小数点は、同一のレジスタファイル内に、又は異なるレジスタファイル内に、収容される。更には、一実施形態においては、浮動小数点及び整数データは、異なるレジスタ内に、又は同一のレジスタ内に、保存してもよい。
【００５０】
以下の図面の例には、いくつかのデータオペランドが示されている。図３Ａは、本発明の一実施形態によるマルチメディアレジスタ内における様々なパック型データタイプの表現を示している。図３Ａは、１２８ビット幅のオペランドにおけるパック型バイト３１０、パック型ワード３２０、及びパック型ダブルワード（ｄｗｏｒｄ）３３０のデータタイプを示している。この例のパック型バイトフォーマット３１０は、長さが１２８ビットであり、且つ、１６個のパック型バイト要素を収容している。１バイトは、ここでは、データの８ビットとして定義されている。それぞれのバイトデータ要素の情報は、バイト０の場合には、ビット７〜ビット０内に、バイト１の場合には、ビット１５〜ビット８内に、バイト２の場合には、ビット２３〜ビット１６内に、且つ、最後に、バイト１５の場合には、ビット１２０〜ビット１２７内に、保存される。従って、すべての利用可能なビットがレジスタ内において使用されている。このストレージ構成によれば、プロセッサのストレージ効率が向上する。同様に、１６個のデータ要素に対してアクセスが実行されることにより、この場合には、１つの演算を並行して１６個のデータ要素に対して実行することができる。
【００５１】
一般に、データ要素とは、同一の長さのその他のデータ要素と共に、単一のレジスタ又はメモリ場所内に保存される個々のデータ片である。ＳＳＥｘ技術に関係するパック型データシーケンスにおいては、ＸＭＭレジスタ内に保存されているデータ要素の数は、１２８ビットを個々のデータ要素のビット長によって除算したものである。同様に、ＭＭＸ及びＳＳＥ技術に関係するパック型データシーケンスにおいては、ＭＭＸレジスタ内に保存されているデータ要素の数は、６４ビットを個々のデータ要素のビット長によって除算したものである。図３Ａに示されているデータタイプは、１２８ビット長であるが、本発明の実施形態は、６４ビット幅、２５６ビット幅、５１２ビット幅、又はその他のサイズのオペランドと共に動作することもできる。この例のパック型ワードフォーマット３２０は、１２８ビット長であり、且つ、８つのパック型ワードデータ要素を収容している。それぞれのパック型ワードは、１６ビットの情報を収容している。図３Ａのパック型ダブルワードフォーマット３３０は、１２８ビット長であり、且つ、４つのパック型ダブルワードデータ要素を収容している。それぞれのパック型ダブルワードデータ要素は、３２ビットの情報を収容している。パック型クアドワードは、長さが１２８ビットであり、且つ、２つのパック型クアドワードデータ要素を収容している。
【００５２】
図３Ｂは、代替インレジスタデータ保存フォーマットを示している。それぞれのパック型データは、複数の独立したデータ要素を含むことできる。パック型ハーフ３４１、パック型シングル３４２、及びパック型ダブル３４３という３つのパック型データフォーマットが図示されている。パック型ハーフ３４１、パック型シングル３４２、及びパック型ダブル３４３の一実施形態は、固定小数点データ要素を収容している。一代替実施形態においては、パック型ハーフ３４１、パック型シングル３４２、及びパック型ダブル３４３のうちの１つ又は複数は、浮動小数点データ要素を収容してもよい。パック型ハーフ３４１の一代替実施形態は、１２８ビット長であり、８つの１６ビットのデータ要素を収容している。パック型シングル３４２の一実施形態は、１２８ビット長であり、且つ、４つの３２ビットのデータ要素を収容している。パック型ダブル３４３の一実施形態は、１２８ビット長であり、且つ、２つの６４ビットのデータ要素を収容している。このようなパック型データフォーマットは、例えば、９６ビット、１６０ビット、１９２ビット、２２４ビット、２５６ビット、５１２ビット、又はこれを上回るものなどのその他のレジスタ長に更に拡張してもよいことを理解されたい。
【００５３】
図３Ｃは、本発明の一実施形態によるマルチメディアレジスタ内における様々な符号付き及び符号なしパック型データタイプの表現を示している。符号なしパック型バイト表現３４４は、ＳＩＭＤレジスタ内の符号なしパック型バイトの保存状態を示している。それぞれのバイトデータ要素の情報は、例えば、バイト０の場合には、ビット７〜ビット０内に、バイト１の場合には、ビット１５〜ビット８内に、バイト２の場合には、ビット２３〜ビット１６内に、且つ、最後に、バイト１５の場合には、ビット１２０〜ビット１２７内に、保存される。従って、すべての利用可能なビットがレジスタ内において使用されている。このストレージ構成によれば、プロセッサの保存効率を向上させることができる。同様に、１６個のデータ要素に対してアクセスが実行されることにより、この場合には、１つの演算を並行して１６個のデータ要素に対して実行することができる。符号付きパック型バイト表現３４５は、符号付きパック型バイトの保存状態を示している。すべてのバイトデータ要素の第８ビットが符号インジケータであることに留意されたい。符号なしパック型ワード表現３４６は、ワード７〜ワード０がＳＩＭＤレジスタ内において保存される方式を示している。符号付きパック型ワード表現３４７は、符号なしパック型ワードインレジスタ表現３４６に類似している。それぞれのワードデータ要素の第１６ビットが符号インジケータであることに留意されたい。符号なしパック型ダブルワード表現３４８は、ダブルワードデータ要素が保存される方式を示している。符号付きパック型ダブルワード表現３４９は、符号なしパック型ダブルワードインレジスタ表現３４８に類似している。必要な符号ビットは、それぞれのダブルワードデータ要素の第３２ビットであることに留意されたい。
【００５４】
図３Ｄは、３２個以上のビットと、ｉｎｔｅｌ．ｃｏｍ／ｐｒｏｄｕｃｔｓ／ｐｒｏｃｅｓｓｏｒ／ｍａｎｕａｌｓ／においてワールドワイドウェブ（ｗｗｗ）上においてカリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能な「Ｉｎｔｅｌ（Ｒ）  ６４  ａｎｄ  ＩＡ−３２  Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ'ｓ  Ｍａｎｕａｌ  Ｃｏｍｂｉｎｅｄ  Ｖｏｌｕｍｅｓ  ２Ａ  ａｎｄ  ２Ｂ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｒｅｆｅｒｅｎｃｅ  Ａ−Ｚ」に記述されているタイプのｏｐｃｏｄｅと対応するレジスタ／メモリオペランドアドレス指定モードと、を有する演算符号化（ｏｐｃｏｄｅ）フォーマット３６０の一実施形態の図である。一実施形態においては、命令は、フィールド３６１及び３６２のうちの１つ又は複数によって符号化してもよい。１命令当たりに最大で２つのオペランド場所を識別してもよく、これには、最大で２つのソースオペランド識別子３６４及び３６５が含まれる。一実施形態においては、デスティネーションオペランド識別子３６６は、ソースオペランド識別子３６４と同一であり、その他の実施形態においては、これらは異なる。一代替実施形態においては、デスティネーションオペランド識別子３６６は、ソースオペランド識別子３６５と同一であり、その他の実施形態においては、これらは異なる。一実施形態においては、ソースオペランド識別子３６４及び３６５によって識別されるソースオペランドのうちの１つは、命令の結果によって上書きされ、その他の実施形態においては、識別子３６４は、ソースレジスタ要素に対応しており、且つ、識別子３６５は、デスティネーションレジスタ要素に対応している。一実施形態においては、オペランド識別子３６４及び３６５を使用し、３２ビット又は６４ビットのソース及びデスティネーションオペランドを識別してもよい。
【００５５】
図３Ｅは、４０個以上のビットを有する別の代替演算符号化（ｏｐｃｏｄｅ）フォーマット３７０の図である。ｏｐｃｏｄｅフォーマット３７０は、ｏｐｃｏｄｅフォーマット３６０に対応しており、且つ、任意選択の接頭辞バイト３７８を有する。一実施形態による命令は、フィールド３７８、３７１、及び３７２のうちの１つ又は複数によって符号化してもよい。ソースオペランド識別子３７４及び３７５により、且つ、接頭辞バイト３７８により、１命令当たりに最大で２つのオペランド場所を識別してもよい。一実施形態においては、接頭辞バイト３７８を使用し、３２ビット又は６４ビットのソース及びデスティネーションオペランドを識別してもよい。一実施形態においては、デスティネーションオペランド識別子３７６は、ソースオペランド識別子３７４と同一であり、その他の実施形態においては、これらは異なる。一代替実施形態においては、デスティネーションオペランド識別子３７６は、ソースオペランド識別子３７５と同一であり、その他の実施形態においては、これらは異なる。一実施形態においては、命令は、オペランド識別子３７４及び３７５によって識別されたオペランドのうちの１つ又は複数に対して動作し、且つ、オペランド識別子３７４及び３７５によって識別された１つ又は複数のオペランドは、命令の結果によって上書きされ、その他の実施形態においては、識別子３７４及び３７５によって識別されたオペランドは、別のレジスタ内の別のデータ要素に書き込まれる。ｏｐｃｏｄｅフォーマット３６０及び３７０は、ＭＯＤフィールド３６３及び３７３により、且つ、任意選択のＳＩＢ（Ｓｃａｌｅ−Ｉｎｄｅｘ−Ｂａｓｅ）及び変位バイトにより、部分的に規定された、レジスタからレジスタの、メモリからレジスタの、メモリによるレジスタの、レジスタによるレジスタの、即値によるレジスタ（ｒｅｇｉｓｔｅｒ  ｂｙ  Ｉｍｍｅｄｉａｔｅ）の、レジスタからメモリのアドレス指定を許容する。
【００５６】
次に図３Ｆを参照すれば、いくつかの代替実施形態においては、６４ビット（又は１２８ビット、又は２５６ビット、又は５１２ビット以上）のＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）算術演算は、ＣＤＰ（Ｃｏｐｒｏｃｅｓｓｏｒ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ）命令を通じて実行してもよい。演算符号化（ｏｐｃｏｄｅ）フォーマット３８０は、ＣＤＰのｏｐｃｏｄｅフィールド３８２及び３８９を有するこのような１つのＣＤＰ命令を示している。代替実施形態においては、ＣＤＰ命令のタイプ及び演算は、フィールド３８３、３８４、３８７、及び３８８のうちの１つ又は複数によって符号化してもよい。１命令当たりに最大で３つのオペランド場所を識別してもよく、これには、最大で２つのソースオペランド識別子３８５及び３９０及び１つのデスティネーションオペランド識別子３８６が含まれる。コプロセッサの一実施形態は、８、１６、３２、及び６４ビット値に対して動作することができる。一実施形態においては、命令は、整数データ要素に対して実行される。いくつかの実施形態においては、命令は、条件フィールド３８１を使用することにより、条件付きで実行してもよい。いくつかの実施形態においては、ソースデータサイズは、フィールド３８３によって符号化してもよい。いくつかの実施形態においては、ゼロ（Ｚ）、負（Ｎ）、桁上げ（Ｃ）、及びオーバーフロー（Ｖ）の検出をＳＩＭＤフィールドに対して実行することができる。いくつかの命令においては、飽和のタイプをフィールド３８４によって符号化してもよい。
【００５７】
次に図３Ｇを参照すれば、これは、ｉｎｔｅｌ．ｃｏｍ／ｐｒｏｄｕｃｔｓ／ｐｒｏｃｅｓｓｏｒ／ｍａｎｕａｌｓ／においてワールドワイドウェブ（ｗｗｗ）上においてカリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能な「Ｉｎｔｅｌ（Ｒ）  Ａｄｖａｎｃｅｄ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｒｅｆｅｒｅｎｃｅ」に記述されているｏｐｃｏｄｅフォーマットのタイプと対応する、別の実施形態による複数の試験ソースに対してＯＲ試験及びＡＮＤ試験機能を提供するための、別の代替演算符号化（ｏｐｃｏｄｅ）フォーマット３９７の図である。
【００５８】
オリジナルのｘ８６命令セットは、その存在が第１「ｏｐｃｏｄｅ」バイトから判明している更なるバイト内に収容されたアドレスシラブル及び即値オペランドの様々なフォーマットを有する１バイトのｏｐｃｏｄｅについて提供されている。更には、ｏｐｃｏｄｅに対する修飾子として予約された特定のバイト値が存在していた（命令の前に置かれなければならないことから、これらは、接頭辞と呼ばれる）。２５６個のｏｐｃｏｄｅバイトからなるオリジナルのパレット（これらの特殊な接頭辞値を含む）が尽きた際には、単一バイトを２５６個のｏｐｃｏｄｅの新しい組に対するエスケープとして振り向けている。ベクトル命令（例えば、ＳＩＭＤ）の追加に伴って、更なるｏｐｃｏｄｅに対する必要性が生じ、且つ、接頭辞の使用を通じて拡張した際にも、「２バイト」のｏｐｃｏｄｅマップでも不十分であった。この目的のために、２バイトと任意選択の接頭辞を加えたものを識別子として使用する更なるマップにおいて新しい命令を追加している。
【００５９】
更には、６４ビットモードにおいて追加レジスタを促進するために、接頭辞とｏｐｃｏｄｅ（並びに、ｏｐｃｏｄｅの判定に必要な任意のエスケープバイト）の間において、更なる接頭辞（「ＲＥＸ」と呼ばれる）を使用してもよい。一実施形態においては、ＲＥＸは、６４ビットモードにおける追加のレジスタの使用を通知するための４個の「ペイロード」ビットを有してもよい。その他の実施形態においては、これは、４つを下回る又は上回る数のビットを有してもよい。（一般的には、フォーマット３６０及び／又はフォーマット３７０に対応している）少なくとも１つの命令セットの一般的なフォーマットは、以下のフォーマットによって一般的に示される。
【００６０】
［ｐｒｅｆｉｘｅｓ］［ｒｅｘ］ｅｓｃａｐｅ［ｅｓｃａｐｅ２］ｏｐｃｏｄｅ  ｍｏｄｒｍ（ｅｔｃ．）
【００６１】
ｏｐｃｏｄｅフォーマット３９７は、ｏｐｃｏｄｅフォーマット３７０に対応しており、且つ、大部分のその他の一般に使用されるレガシー命令接頭辞バイト及びエスケープコードを置換するための任意選択のＶＥＸ接頭辞バイト３９１（一実施形態においては、１６進のＣ４によって始まっている）を有する。例えば、以下のものは、２つのフィールドを使用して命令を符号化する実施形態を示しており、これは、第２エスケープコードがオリジナルの命令内に存在している際に、又はＲＥＸフィールド内の余分なビット（例えば、ＸＢ及びＷフィールド）を使用する必要がある際に、使用してもよい。以下に示されている実施形態においては、レガシーエスケープは、新しいエスケープ値によって表されており、レガシー接頭辞は、「ペイロード」バイトの一部として十分に圧縮されており、レガシー接頭辞は、リクレームされると共に将来の拡張のために利用可能であり、第２エスケープコードは、利用可能な将来マップ及び特徴空間と共に、「マップ」フィールド内において圧縮され、且つ、新しい特徴（例えば、ベクトル長の増大及び追加のソースレジスタスペシファイア）が追加されている。
【００６２】
【数１】
2014194755.tif 000003
【００６３】
一実施形態による命令は、フィールド３９１及び３９２のうちの１つ又は複数によって符号化してもよい。ソースオペランド識別子３７４及び３７５との組合せにおいて、且つ、任意選択のＳＩＢ（Ｓｃａｌｅ−Ｉｎｄｅｘ−Ｂａｓｅ）識別子３９３、任意選択の変位識別子３９４、及び任意選択の即値バイト（ｉｍｍｅｄｉａｔｅ  ｂｙｔｅ）３９５との組合せにおいて、フィールド３９１により、１命令当たりに最大で４つのオペランド場所を識別してもよい。一実施形態においては、ＶＥＸ接頭辞バイト３９１を使用し、３２ビット又は６４ビットのソース及びデスティネーションオペランド及び／又は１２８ビット又は２５６ビットのＳＩＭＤレジスタ又はメモリオペランドを識別してもよい。一実施形態においては、ｏｐｃｏｄｅフォーマット３９７によって提供される機能は、ｏｐｃｏｄｅフォーマット３７０と冗長な関係にあるものであってもよく、その他の実施形態においては、これらは異なっている。ｏｐｃｏｄｅフォーマット３７０及び３９７は、ＭＯＤフィールド３７３により、且つ、任意選択の（ＳＩＢ）識別子３８３、任意選択の変位識別子３９４、及び任意選択の即値バイト３９５により、部分的に規定されたレジスタからレジスタの、メモリからレジスタの、メモリによるレジスタの、レジスタによるレジスタの、即値によるレジスタの、レジスタからメモリのアドレス指定を許容する。
【００６４】
次に図３Ｈを参照すれば、これは、別の実施形態による複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための別の代替演算符号化（ｏｐｃｏｄｅ）フォーマット３９８の図である。ｏｐｃｏｄｅフォーマット３９８は、ｏｐｃｏｄｅフォーマット３７０及び３９７と対応しており、且つ、大部分のその他の一般的に使用されるレガシー命令接頭辞バイト及びエスケープコードを置換すると共に追加機能を提供するための（一実施形態においては、１６進の６２によって始まる）任意選択のＥＶＥＸ接頭辞バイト３９６を有する。一実施形態による命令は、フィールド３９６及び３９２のうちの１つ又は複数によって符号化してもよい。ソースオペランド識別子３７４及び３７５との組合せにおいて、且つ、任意選択のＳＩＢ（Ｓｃａｌｅ−Ｉｎｄｅｘ−Ｂａｓｅ）識別子３９３、任意選択の変位識別子３９４、及び任意選択の即値バイト３９５との組合せにおいて、フィールド３９６により、１命令当たりに最大で４つのオペランド場所と１つのマスクを識別してもよい。一実施形態においては、ＥＶＥＸ接頭辞バイト３９６を使用し、３２ビット又は６４ビットのソース及びデスティネーションオペランド及び／又は１２８ビット、２５６ビット、又は５１２ビットのＳＩＭＤレジスタ又はメモリオペランドを識別してもよい。一実施形態においては、ｏｐｃｏｄｅフォーマット３９８によって提供される機能は、ｏｐｃｏｄｅフォーマット３７０又は３９７と冗長な関係にあるものであってもよく、その他の実施形態においては、これらは異なっている。ｏｐｃｏｄｅフォーマット３９８は、ＭＯＤフィールド３７３により、且つ、任意選択の（ＳＩＢ）識別子３９３、任意選択の変位識別子３９４、及び任意選択の即値バイト３９５により、部分的に規定された、マスクを伴う、レジスタからレジスタの、メモリからレジスタの、メモリによるレジスタの、レジスタによるレジスタの、即値によるレジスタの、レジスタからメモリのアドレス指定を許容する。（一般的には、フォーマット３６０及び／又はフォーマット３７０に対応している）少なくとも１つの命令セットの一般的なフォーマットは、以下のものによって一般的に示される。
【００６５】
ｅｖｅｘ１  ＲＸＢｍｍｍｍｍ  ＷｖｖｖＬｐｐ  ｅｖｅｘ４  ｏｐｃｏｄｅ  ｍｏｄｒｍ［ｓｉｂ］［ｄｉｓｐ］［ｉｍｍ］
【００６６】
一実施形態においては、ＥＶＥＸフォーマット３９８に従って符号化された命令は、追加の「ペイロード」ビットを有してもよく、この追加の「ペイロード」ビットは、例えば、ユーザー構成可能マスクレジスタ、又は追加のオペランド、或いは、１２８ビット、２５６ビット、又は５１２ビットのベクトルレジスタ、又は選択対象の更なるレジスタなどの中からの選択などの追加の新しい機能と共に、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために使用してもよい。
【００６７】
例えば、ＶＥＸフォーマット３９７を使用して黙示的なマスクを伴う複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供してもよい場合には、ＥＶＥＸフォーマット３９８を使用して明示的なユーザー構成可能なマスクを伴う複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供してもよい。更には、ＶＥＸフォーマット３９７を使用して１２８ビット又は２５６ビットのベクトルレジスタ上において複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供してもよい場合には、ＥＶＥＸフォーマット３９８を使用して１２８ビット、２５６ビット、５１２ビット、或いは、更に大きな（又は、更に小さな）ビット数のベクトルレジスタ上において複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供してもよい。
【００６８】
複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための例示用のフュージング可能な命令は、以下の例によって示される。
【００６９】
【表１】
2014194755.tif 000004
【００７０】
上述の例と同様に、複数の試験ソースに対するＯＲ試験及び／又はＡＮＤ試験機能を提供するためのフュージング可能な命令及び論理を使用し、動的であると共に弱いタイピング型である場合があり且つオブジェクト指向の命令型であると共に機能的なプログラムスタイルをサポートしてもよいＪａｖａＳｃｒｉｐｔ（登録商標）、ＪＳｃｒｉｐｔ、又はＥＣＭＡＳｃｒｉｐｔなどの１つ又は複数のインタープリタ型コンピュータプログラム言語をサポートするＪＩＴコンパイラによって生成される頻繁に実行されるタイプ試験命令イディオムと関連する性能の制限の問題、エネルギー消費の懸念、及びその他の実行時のボトルネックをほとんど除去してもよいことを理解されたい。
【００７１】
図４Ａは、本発明の少なくとも１つの実施形態によるインオーダーパイプライン及びレジスタリネームステージアウトオブオーダー発行／実行パイプライを示すブロック図である。図４Ｂは、本発明の少なくとも１つの実施形態によるプロセッサ内に含まれるインオーダーアーキテクチャコア及びレジスタリネーム論理アウトオブオーダー発行／実行論理を示すブロック図である。図４Ａの実線のボックスは、インオーダーパイプラインを示しており、破線のボックスは、レジスタリネームアウトオブオーダー発行／実行パイプラインを示している。同様に、図４Ｂの実線のボックスは、インオーダーアーキテクチャ論理を示しており、破線のボックスは、レジスタリネーム論理及びアウトオブオーダー発行／実行論理を示している。
【００７２】
図４Ａにおいては、プロセッサパイプライン４００は、フェッチステージ４０２と、長さ復号化ステージ４０４と、復号化ステージ４０６と、割当ステージ４０８と、リネームステージ４１０と、スケジューリング（ディスパッチ又は発行とも呼ばれる）ステージ４１２と、レジスタ読取り／メモリ読取りステージ４１４と、実行ステージ４１６と、書戻し／メモリ書込みステージ４１８と、例外処理ステージ４２２と、コミットステージ４２４と、を含む。
【００７３】
図４Ｂにおいては、矢印は、複数のユニットの間の結合を表記しており、且つ、矢印の方向は、それらのユニットの間におけるデータの流れの方向を示している。図４Ｂは、実行エンジンユニット４５０に結合されたフロントエンドユニット４３０を含むプロセッサコア４９０を示しており、且つ、これらは、いずれも、メモリユニット４７０に結合されている。
【００７４】
コア４９０は、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ）コア、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ）コア、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）コア、或いは、ハイブリッド又は代替コアタイプであってもよい。更に別の選択肢として、コア４９０は、例えば、ネットワーク又は通信コア、圧縮エンジン、グラフィックスコア、又はこれらに類似したものなどの特殊目的コアであってもよい。
【００７５】
フロントエンドユニット４３０は、命令キャッシュユニット４３４に結合された分岐予測ユニット４３２を含み、分岐予測ユニット４３２は、命令ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）４３６に結合され、命令ＴＬＢ４３６は、命令フェッチユニット４３８に結合され、命令フェッチユニット４３８は、復号化ユニット４４０に結合されている。復号化ユニット又はデコーダは、命令を復号化してもよく、且つ、出力として、１つ又は複数のマイクロ演算、マイクロコードエントリポイント、マイクロ命令、その他の命令、又はその他の制御信号を生成し、これらは、オリジナルの命令から復号化されるか、或いは、さもなければ、オリジナルの命令を反映しているか、或いは、オリジナルの命令から導出される。デコーダは、様々な異なるメカニズムを使用して実装してもよい。適切なメカニズムの例は、限定を伴うことなしに、ルックアップテーブル、ハードウェア実装形態、ＰＬＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）、マイクロコードＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などを含む。命令キャッシュユニット４３４は、メモリユニット４７０内のレベル２（Ｌ２）キャッシュユニット４７６に更に結合されている。復号化ユニット４４０は、実行エンジンユニット４５０内のリネーム／アロケータユニット４５２に結合されている。
【００７６】
実行エンジンユニット４５０は、リネーム／アロケータユニット４５２を含み、リネーム／アロケータユニット４５２は、リタイアメントユニット４５４及び１つ又は複数のスケジューラユニットの組４５６に結合されている。１つ又は複数のスケジューラユニット４５６は、予約ステーションや中央命令ウィンドウなどを含む任意の数の異なるスケジューラを表している。１つ又は複数のスケジューラユニット４５６は、１つ又は複数の物理レジスタファイルユニット４５８に結合されている。１つ又は複数の物理レジスタファイルユニット４５８のそれぞれは、１つ又は複数の物理レジスタファイルを表しており、これらのうちの異なるものは、スカラー整数、スカラー浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点などのような１つ又は複数の異なるデータタイプや状態（例えば、実行対象の次の命令のアドレスである命令ポインタ）などを保存する。１つ又は複数の物理レジスタファイルユニット４５８は、レジスタリネーム及びアウトオブオーダー実行を実装してもよい様々な方法（例えば、１つ又は複数のリオーダーバッファ及び１つ又は複数のリタイアメントレジスタファイルを使用するもの、１つ又は複数の将来ファイル、１つ又は複数の履歴ファイル、及び１つ又は複数のリタイアメントレジスタファイルを使用するもの、レジスタマップ及びレジスタのプールを使用するものなど）を示すために、リタイアメントユニット４５４によってオーバーラップされている。一般に、アーキテクチャレジスタは、プロセッサの外部から、又はプログラマの観点において、可視状態にある。レジスタは、任意の既知の特定のタイプの回路に限定されるものではない。本明細書に記述されているようにデータを保存及び提供する能力を有している限り、様々な異なるタイプのレジスタが適している。適切なレジスタの例は、限定を伴うことなしに、専用の物理レジスタ、レジスタリネームを使用する動的に割り当てられた物理レジスタ、専用の且つ動的に割り当てられた物理レジスタの組合せなどを含む。
【００７７】
リタイアメントユニット４５４及び１つ又は複数の物理レジスタファイルユニット４５８は、１つ又は複数の実行クラスタ４６０に結合されている。１つ又は複数の実行クラスタ４６０は、１つ又は複数の実行ユニットの組４６２と、１つ又は複数のメモリアクセスユニットの組４６４と、を含む。実行ユニット４６２は、様々な演算（例えば、シフト、加算、減算、乗算）を様々なタイプのデータ（例えば、スカラー浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して実行してもよい。いくつかの実施形態は、特定の機能又は機能の組に対して専用であるいくつかの実行ユニットを含んでもよいが、その他の実施形態は、１つの実行ユニットのみを含んでもよく、或いは、すべてがすべての機能を実行する複数の実行ユニットを含んでもよい。特定の実施形態は、特定のタイプのデータ／演算について別個のパイプライン（例えば、スカラー整数パイプライン、スカラー浮動小数点／パック型整数／パック型浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はその独自のスケジューラユニット、１つ又は複数の物理レジスタファイルユニット、及び／又は実行クラスタをそれぞれが有するメモリアクセスパイプライン）を生成するために（別個のメモリアクセスパイプラインの場合には、そのパイプラインの実行クラスタのみが１つ又は複数のメモリアクセスユニット４６４を有する特定の実施形態が実装される）、１つ又は複数のスケジューラユニット４５６、１つ又は複数の物理レジスタファイル４５８、及び１つ又は複数の実行クラスタ４６０が複数となる可能性が高いものとして示されている。又、別個のパイプラインが使用される場合には、それらのパイプラインのうちの１つ又は複数は、アウトオブオーダー発行／実行であってもよく、且つ、残りは、インオーダーであってもよいことを理解されたい。
【００７８】
メモリアクセスユニットの組４６４は、メモリユニット４７０に結合されており、メモリユニット４７０は、データＴＬＢユニット４７２を含み、データＴＬＢユニット４７２は、データキャッシュユニット４７４に結合されており、データキャッシュユニット４７４は、レベル２（Ｌ２）キャッシュユニット４７６に結合されている。例示用の一実施形態においては、メモリアクセスユニット４６４は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでもよく、これらのそれぞれは、メモリユニット４７０内のデータＴＬＢユニット４７２に結合されている。Ｌ２キャッシュユニット４７６は、１つ又は複数のその他のレベルのキャッシュに、且つ、最終的には、主メモリに、結合されている。
【００７９】
一例として、例示用のレジスタリネームアウトオブオーダー発行／実行コアアーキテクチャは、パイプライン４００を以下のように実装してもよい。即ち、１）命令フェッチ４３８がフェッチ及び長さ復号化ステージ４０２及び４０４を実行し、２）復号化ユニット４４０が復号化ステージ４０６を実行し、３）リネーム／アロケータユニット４５２が割当ステージ４０８及びリネームステージ４１０を実行し、４）１つ又は複数のスケジューラユニット４５６がスケジュールステージ４１２を実行し、５）１つ又は複数の物理レジスタファイルユニット４５８及びメモリユニット４７０がレジスタ読取り／メモリ読取りステージ４１４を実行し、実行クラスタ４６０が実行ステージ４１６を実行し、６）メモリユニット４７０及び１つ又は複数の物理レジスタファイルユニット４５８が書戻し／メモリ書込みステージ４１８を実行し、７）様々なユニットが例外処理ステージ４２２に関与してもよく、且つ、８）リタイアメントユニット４５４及び１つ又は複数の物理レジスタファイルユニット４５８がコミットステージ４２４を実行する。
【００８０】
コア４９０は、１つ又は複数の命令セット（例えば、（相対的に新しいバージョンに伴って追加されるいくつかの拡張を有する）ｘ８６命令セット、カリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＭＩＰＳ命令セット、カリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＡＲＭホールディングス社の（ＮＥＯＮなどの任意選択の更なる拡張を伴う）ＡＲＭ命令セット）をサポートしてもよい。
【００８１】
コアは、（演算の複数の並列セット又はスレッドを実行する）マルチスレッディングをサポートしてもよく、且つ、タイムスライス型マルチスレッディング、（物理コアが同時にマルチスレッディングしているスレッドのそれぞれごとに、単一の物理コアが論理コアを提供する）同時マルチスレッディング、或いは、これらの組合せ（例えば、Ｉｎｔｅｌ（登録商標）  Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ技術のように、タイムスライス型のフェッチ及び復号化、並びに、その後の同時マルチスレッディング）を含む様々な方法によってこれを実行してもよいことを理解されたい。
【００８２】
レジスタのリネームは、アウトオブオーダー実行の文脈において記述されているが、レジスタリネームは、インオーダーアーキテクチャにおいて使用してもよいことを理解されたい。又、図示のプロセッサの実施形態は、別個の命令及びデータキャッシュユニット４３４／４７４及び共有Ｌ２キャッシュユニット４７６をも含んでいるが、代替実施形態は、例えば、レベル１（Ｌ１）内部キャッシュ又はマルチレベルの内部キャッシュなどの命令とデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態においては、システムは、内部キャッシュ並びにコア及び／又はプロセッサの外部に位置した外部キャッシュの組合せを含んでもよい。或いは、この代わりに、キャッシュのすべてがコア及び／又はプロセッサの外部に位置してもよい。
【００８３】
図５は、本発明の実施形態による統合型のメモリコントローラ及びグラフィックスを有するシングルコアプロセッサ及びマルチコアプロセッサ５００のブロック図である。図５の実線のボックスは、シングルコア５０２Ａ、システムエージェント５１０、１つ又は複数のバスコントローラユニットの組５１６を有するプロセッサ５００を示しており、破線のボックスの任意選択の追加は、複数のコア５０２Ａ〜Ｎ、システムエージェントユニット５１０内の１つ又は複数の統合型メモリコントローラユニットの組５１４、及び統合型のグラフィックス論理５０８を有する代替プロセッサ５００を示している。
【００８４】
メモリ階層は、コア内の１つ又は複数のレベルのキャッシュと、１つ又は複数の共有キャッシュユニットの組５０６と、統合型のメモリコントローラユニットの組５１４に結合された外部メモリ（図示されてはいない）と、を含む。共有キャッシュユニットの組５０６は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又はその他のレベルのキャッシュなどの１つ又は複数の中間レベルキャッシュ、最終レベルキャッシュ（Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ：ＬＬＣ）、及び／又はこれらの組合せを含んでもよい。一実施形態においては、リングに基づいた相互接続ユニット５１２が統合型グラフィックス論理５０８、共有キャッシュユニットの組５０６、及びシステムエージェントユニット５１０を相互接続しているが、代替実施形態は、このようなユニットを相互接続するための任意の数の周知の技法を使用してもよい。
【００８５】
いくつかの実施形態においては、コア５０２Ａ〜Ｎのうちの１つ又は複数は、マルチスレッディングの能力を有する。システムエージェント５１０は、コア５０２Ａ〜Ｎを調整すると共に動作させるコンポーネントを含む。システムエージェントユニット５１０は、例えば、電力制御ユニット（Ｐｏｗｅｒ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：ＰＣＵ）と、ディスプレイユニットと、を含んでもよい。ＰＣＵは、コア５０２Ａ〜Ｎ及び統合型グラフィックス論理５０８の電力状態を調節するのに必要な論理及びコンポーネントであってもよく、或いは、これらを含んでもよい。ディスプレイユニットは、１つ又は複数の外部接続されたディスプレイを駆動するためのものである。
【００８６】
コア５０２Ａ〜Ｎは、アーキテクチャ及び／又は命令セットの観点において同種のものであっても又は異種のものであってもよい。例えば、コア５０２Ａ〜Ｎのいくつかは、インオーダーであってもよく、その他のものは、アウトオブオーダーであってもよい。別の例として、コア５０２Ａ〜Ｎのうちの複数のものは、同一の命令セットを実行する能力を有してもよく、その他のものは、その命令セット又は異なる命令セットのサブセットのみを実行する能力を有してもよい。
【００８７】
プロセッサは、カリフォルニア州Ｓａｎｔａ  Ｃｌａｒａに所在するインテル社から入手可能なＣｏｒｅ（商標）  ｉ３、ｉ５、ｉ７、２Ｄｕｏ、及びＱｕａｄ、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（商標）、ＸＳｃａｌｅ（商標）、又はＳｔｒｏｎｇＡＲＭ（商標）プロセッサなどの汎用プロセッサであってもよい。或いは、この代わりに、プロセッサは、ＡＲＭホールディングス社やＭＩＰＳ社などのような別の会社からのものであってもよい。プロセッサは、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、コプロセッサ、埋込み型プロセッサ、又はこれらに類似したものなどの特殊目的プロセッサであってもよい。プロセッサは、１つ又は複数のチップ上において実装してもよい。プロセッサ５００は、１つ又は複数の基板の一部分であってもよいと共に／又は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、又はＮＭＯＳなどのいくつかのプロセス技術のうちのいずれかを使用することにより、これらの基板上に実装してもよい。
【００８８】
図６〜図８は、プロセッサ５００を含むのに適した例示用のシステムであり、図９は、コア５０２のうちの１つ又は複数を含んでもよい例示用のシステムオンチップ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ：ＳｏＣ）である。ラップトップ、デスクトップ、ハンドヘルド型ＰＣ、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバー、ネットワーク装置、ネットワークハブ、スイッチ、埋込み型プロセッサ、デジタル信号プロセッサ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）、グラフィックス装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、セル電話機、携帯型メディアプレーヤー、ハンドヘルド型装置、及び様々なその他の電子装置用の当技術分野において既知のその他のシステム設計及び構成も適している。一般論として、本明細書に開示されているプロセッサ及び／又はその他の実行論理を内蔵する能力を有する様々なシステム又は電子装置は、一般に適している。
【００８９】
次に図６を参照すれば、本発明の一実施形態によるシステム６００のブロック図が示されている。システム６００は、グラフィックスメモリコントローラハブ（Ｇｒａｐｈｉｃｓ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ：ＧＭＣＨ）６２０に結合された１つ又は複数のプロセッサ６１０、６１５を含んでもよい。図６には、追加のプロセッサ６１５の任意選択である特性が破線によって表記されている。
【００９０】
それぞれのプロセッサ６１０、６１５は、なんらかのバージョンのプロセッサ５００であってもよい。但し、統合型グラフィックス論理及び統合型メモリ制御ユニットがプロセッサ６１０、６１５内に存在することになる可能性は低いことに留意されたい。図６は、ＧＭＣＨ６２０がメモリ６４０に結合されてもよく、メモリ６４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）であってもよいことを示している。ＤＲＡＭは、少なくとも一実施形態においては、不揮発性キャッシュと関連するものであってもよい。
【００９１】
ＧＭＣＨ６２０は、チップセットであってもよく、又はチップセットの一部であってもよい。ＧＭＣＨ６２０は、１つ又は複数のプロセッサ６１０、６１５と通信してもよく、且つ、１つ又は複数のプロセッサ６１０、６１５とメモリ６４０の間のやり取りを制御してもよい。又、ＧＭＣＨ６２０は、１つ又は複数のプロセッサ６１０、６１５とシステム６００のその他の要素の間における高速バスインターフェイスとして機能してもよい。少なくとも一実施形態においては、ＧＭＣＨ６２０は、フロントサイドバス（ＦｒｏｎｔＳｉｄｅ  Ｂｕｓ：ＦＳＢ）６９５などのマルチドロップバスを介して、１つ又は複数のプロセッサ６１０、６１５と通信している。
【００９２】
更には、ＧＭＣＨ６２０は、ディスプレイ６４５（フラットパネルディスプレイなど）に結合されている。ＧＭＣＨ６２０は、統合型グラフィックスアクセラレータを含んでもよい。ＧＭＣＨ６２０は、様々な周辺装置をシステム６００に結合するために使用してもよい入出力（Ｉ／Ｏ）コントローラハブ（Ｉｎｐｕｔ／ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ：ＩＣＨ）６５０に更に結合されている。図６の実施形態には、例えば、外部グラフィックス装置６６０が示されており、外部グラフィックス装置６６０は、別の周辺装置６７０と共に、ＩＣＨ６５０に結合された個別のグラフィックス装置であってもよい。
【００９３】
或いは、この代わりに、追加の又は異なるプロセッサがシステム６００内に存在してもよい。例えば、１つ又は複数の追加のプロセッサ６１５は、プロセッサ６１０と同一である１つ又は複数の追加のプロセッサ、プロセッサ６１０とは異種である又は非対称である１つ又は複数の追加のプロセッサ、アクセラレータ（例えば、グラフィックスアクセラレータ又はデジタル信号処理（ＤＳＰ）ユニットなど）、フィールドプログラマブルゲートアレイ、又は任意のその他のプロセッサを含んでもよい。物理リソース６１０、６１５の間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性、及びこれらに類似したものを含む所定範囲の価値測定基準の観点において、様々な差が存在する可能性がある。事実上、これらの差が、プロセッサ６１０、６１５の中におけるそれぞれの非対称性及び異種性を明示することになる。少なくとも１つの実施形態においては、様々なプロセッサ６１０、６１５は、同一のダイパッケージ内に存在してもよい。
【００９４】
次に図７を参照すれば、本発明の一実施形態による第２システム７００のブロック図が示されている。図７に示されているように、マルチプロセッサシステム７００は、ポイントツーポイント相互接続システムであり、且つ、第１プロセッサ７７０と、ポイントツーポイント相互接続７５０を介して結合された第２プロセッサ７８０と、を含む。プロセッサ７７０及び７８０のそれぞれは、プロセッサ６１０、６１５のうちの１つ又は複数のものとして、なんらかのバージョンのプロセッサ５００であってもよい。
【００９５】
２つのプロセッサ７７０、７８０のみを有するように示されているが、本発明の範囲は、これに限定されるものではないことを理解されたい。その他の実施形態においては、１つ又は複数の更なるプロセッサが所与のプロセッサ内に存在してもよい。
【００９６】
プロセッサ７７０及び７８０は、統合型のメモリコントローラユニット７７２及び７８２をそれぞれ含むものとして示されている。又、プロセッサ７７０は、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェイス７７６及び７７８をも含んでおり、同様に、第２プロセッサ７８０も、Ｐ−Ｐインターフェイス７８６及び７８８を含む。プロセッサ７７０、７８０は、Ｐ−Ｐインターフェイス回路７７８、７８８を使用することにより、ポイントツーポイント（Ｐ−Ｐ）インターフェイス７５０を介して情報を交換してもよい。図７に示されているように、ＩＭＣ７７２及び７８２は、プロセッサを個々のメモリに、即ち、メモリ７３２及びメモリ７３４に、結合しており、メモリ７３２及びメモリ７３４は、個々のプロセッサにローカルに装着された主メモリの一部分であってもよい。
【００９７】
プロセッサ７７０、７８０は、ポイントツーポイントインターフェイス回路７７６、７９４、７８６、７９８を使用することにより、それぞれ、個々のＰ−Ｐインターフェイス７５２、７５４を介して、チップセット７９０との間において情報を交換してもよい。又、チップセット７９０は、高性能グラフィックスインターフェイス７３９を介して高性能グラフィックス回路７３８との間において情報を交換してもよい。
【００９８】
１つのプロセッサが低電力モードに配置された場合に、いずれかの又は両方のプロセッサのローカルキャッシュ情報を共有キャッシュ内に保存してもよいように、共有キャッシュ（図示されてはいない）をいずれかのプロセッサ内に、又は両方のプロセッサの外部に、但し、Ｐ−Ｐインターフェイスを介してプロセッサと接続された状態において、含んでもよい。
【００９９】
チップセット７９０は、インターフェイス７９６を介して第１バス７１６に結合してもよい。一実施形態においては、第１バス７１６は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスであってもよく、或いは、ＰＣＩ  Ｅｘｐｒｅｓｓバス又は別の第３世代Ｉ／Ｏ相互接続バスなどのバスであってもよいが、本発明の範囲は、これに限定されるものではない。
【０１００】
図７に示されているように、第１バス７１６を第２バス７２０に結合するバスブリッジ７１８と共に、様々なＩ／Ｏ装置７１４を第１バス７１６に結合してもよい。一実施形態においては、第２バス７２０は、ＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バスであってもよい。一実施形態においては、例えば、キーボード及び／又はマウス７２２、通信装置７２７、及び、命令／コード及びデータ７３０を含んでもよいディスクドライブ又はその他のマスストレージ装置などのストレージユニット７２８を含む様々な装置を第２バス７２０に結合してもよい。更には、オーディオＩ／Ｏ７２４を第２バス７２０に結合してもよい。その他のアーキテクチャも可能であることに留意されたい。例えば、図７のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又はその他の類似のアーキテクチャを実装してもよい。
【０１０１】
次に図８を参照すれば、本発明の一実施形態による第３システム８００のブロック図が示されている。図７及び図８の同一の要素は、同一の参照符号を有しており、且つ、図８においては、図８のその他の側面を曖昧にすることを回避するべく、図７の特定の側面が省略されている。
【０１０２】
図８は、プロセッサ８７０、８８０が統合型のメモリ及び／又はＩ／Ｏ制御論理（「Ｃｏｎｔｒｏｌ  Ｌｏｇｉｃ：ＣＬ」）８７２及び８８２をそれぞれ含んでもよいことを示している。少なくとも１つの実施形態においては、ＣＬ８７２、８８２は、図５及び図７との関連において上述したものなどの統合型メモリコントローラユニットを含んでもよい。更には、ＣＬ８７２、８８２は、Ｉ／Ｏ制御論理を含んでもよい。図８は、メモリ８３２、８３４がＣＬ８７２、８８２に結合されているのみならず、Ｉ／Ｏ装置８１４も、制御論理８７２、８８２に結合されることを示している。レガシーＩ／Ｏ装置８１５は、チップセット８９０に結合されている。
【０１０３】
次に図９を参照すれば、本発明の一実施形態によるＳｏＣ９００のブロック図が示されている。図５の類似の要素は、同一の参照符号を有する。又、破線のボックスは、更に高度なＳｏＣ上における任意選択の機能である。図９においては、１つ又は複数の相互接続ユニット９０２が、１つ又は複数のコアの組５０２Ａ〜Ｎ及び１つ又は複数の共有キャッシュユニット５０６を含むアプリケーションプロセッサ９１０と、システムエージェントユニット５１０と、１つ又は複数のバスコントローラユニット５１６と、１つ又は複数の統合型メモリコントローラユニット５１４と、統合型グラフィックス論理５０８、スチール及び／又はビデオカメラ機能を提供する画像プロセッサ９２４、ハードウェアオーディオ高速化を提供するオーディオプロセッサ９２６、及びビデオ符号化／復号化の高速化を提供するビデオプロセッサ９２８を含んでもよい１つ又は複数のメディアプロセッサ９２０と、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット９３０と、直接メモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＤＭＡ）ユニット９３２と、１つ又は複数の外部ディスプレイに結合するためのディスプレイユニット９４０と、に結合されている。
【０１０４】
図１０は、一実施形態に従って少なくとも１つの命令を実行してもよい中央処理ユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）及びグラフィックス処理ユニット（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＧＰＵ）を収容するプロセッサを示している。一実施形態においては、少なくとも１つの実施形態に従って演算を実行するための命令をＣＰＵによって実行することができよう。別の実施形態においては、命令をＧＰＵによって実行することができよう。更に別の実施形態においては、命令は、ＧＰＵ及びＣＰＵによって実行される演算の組合せを通じて実行してもよい。例えば、一実施形態においては、ＧＰＵ上における実行のために、一実施形態による命令を受信及び復号化してもよい。但し、復号化された命令内の１つ又は複数の演算をＣＰＵによって実行してもよく、且つ、結果を命令の最終的なリタイアメントのためにＧＰＵに返してもよい。逆に、いくつかの実施形態においては、ＣＰＵが主プロセッサとして機能してもよく、且つ、ＧＰＵがコプロセッサとして機能してもよい。
【０１０５】
いくつかの実施形態においては、高度な並列スループットプロセッサの利益を享受する命令をＧＰＵによって実行してもよく、高深度のパイプライン型アーキテクチャの利益を享受するプロセッサの性能の利益を享受する命令を、ＣＰＵによって実行してもよい。例えば、グラフィックス、科学アプリケーション、財務アプリケーション、及びその他の並列ワークロードは、ＧＰＵの性能の利益を享受すると共に相応して実行してもよく、オペレーティングシステムカーネルやアプリケーションコードなどの更に逐次的なアプリケーションは、ＣＰＵに適していよう。
【０１０６】
図１０においては、プロセッサ１０００は、ＣＰＵ１００５と、ＧＰＵ１０１０と、画像プロセッサ１０１５と、ビデオプロセッサ１０２０と、ＵＳＢコントローラ１０２５と、ＵＡＲＴコントローラ１０３０と、ＳＰＩ／ＳＤＩＯコントローラ１０３５と、ディスプレイ装置１０４０と、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）コントローラ１０４５と、ＭＩＰＩコントローラ１０５０と、フラッシュメモリコントローラ１０５５と、ＤＤＲ（Ｄｕａｌ  Ｄａｔａ  Ｒａｔｅ）コントローラ１０６０と、セキュリティエンジン１０６５と、Ｉ２Ｓ／Ｉ２Ｃ（Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｔｅｒｃｈｉｐ  Ｓｏｕｎｄ／Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）インターフェイス１０７０と、を含む。更なるＣＰＵ又はＧＰＵ及びその他の周辺インターフェイスコントローラを含むその他の論理及び回路を図１０のプロセッサ内に含んでもよい。
【０１０７】
少なくとも１つの実施形態の１つ又は複数の側面は、機械によって読み取られた際に本明細書に記述されている技法を実行するための論理を機械に製造させる、プロセッサ内の様々な論理を表す、機械可読媒体上に保存されたデータ表現によって実装してもよい。このような「ＩＰコア」と呼ばれる表現は、有体の機械可読媒体（「テープ」）上に保存してもよく、且つ、論理又はプロセッサを実際に製造する製造機械に読み込まれるように、様々な顧客又は製造施設に供給してもよい。例えば、ＡＲＭホールディングス社によって開発されたＣｏｒｔｅｘ（商標）ファミリーのプロセッサ及びＣｈｉｎｅｓｅ  Ａｃａｄｅｍｙ  ｏｆ  ＳｃｉｅｎｃｅｓのＩｎｓｔｉｔｕｔｅ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｙ（ＩＣＴ）によって開発されたＬｏｏｎｇｓｏｎ  ＩＰコアなどのＩＰコアは、Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ社、Ｑｕａｌｃｏｍｍ社、Ａｐｐｌｅ社、又はＳａｍｓｕｎｇ社などの様々な顧客又はライセンシーにライセンス又は販売してもよく、且つ、これらの顧客又はライセンシーによって製造されるプロセッサ内において実装してもよい。
【０１０８】
図１１は、一実施形態によるＩＰコアの開発を示すブロック図を示している。ストレージ１１３０は、シミュレーションソフトウェア１１２０及び／又はハードウェア又はソフトウェアモデル１１１０を含む。一実施形態においては、ＩＰコア設計を表すデータは、メモリ１１４０（例えば、ハードディスク）、有線接続（例えば、インターネット）１１５０、又は無線接続１１６０を介して、ストレージ１１３０に供給することができる。次いで、シミュレーションツール及びモデルによって生成されたＩＰコア情報を製造施設に送信することが可能であり、製造施設において、少なくとも１つの実施形態に従って少なくとも１つの命令を実行するように、ＩＰコアを第三者によって製造することができる。
【０１０９】
いくつかの実施形態においては、１つ又は複数の命令は、第１のタイプ又はアーキテクチャ（例えば、ｘ８６）に対応したものであってもよく、且つ、異なるタイプ又はアーキテクチャ（例えば、ＡＲＭ）のプロセッサ上において変換又はエミュレートしてもよい。従って、一実施形態による命令は、ＡＲＭ、ｘ８６、ＭＩＰＳ、ＧＰＵ、又はその他のプロセッサタイプ又はアーキテクチャを含む任意のプロセッサ又はプロセッサタイプ上において実行してもよい。
【０１１０】
図１２は、一実施形態による第１タイプの命令が異なるタイプのプロセッサによってエミュレートされる方式を示している。図１２において、プログラム１２０５は、一実施形態による命令と同一の又は実質的に同一の機能を実行してもよいいくつかの命令を含んでいる。但し、プログラム１２０５の命令は、プロセッサ１２１５とは異なる又は互換性を有していないタイプ及び／又はフォーマットを有してもよく、これは、プログラム１２０５内のタイプの命令がプロセッサ１２１５によってネイティブで実行不能であってもよいことを意味している。但し、エミュレーション論理１２１０の支援により、プログラム１２０５の命令は、プロセッサ１２１５によって実行される能力をネイティブで有する命令に変換される。一実施形態においては、エミュレーション論理は、ハードウェアとして実施されている。別の実施形態においては、エミュレーション論理は、プログラム１２０５内のこのようなタイプの命令をプロセッサ１２１５によってネイティブで実行可能なタイプに変換するためのソフトウェアを含む有体の機械可読媒体内において実施されている。その他の実施形態においては、エミュレーション論理は、固定機能の又はプログラム可能なハードウェアと有体の機械可読媒体上に保存されたプログラムの組合せである。一実施形態においては、プロセッサは、エミュレーション論理を含み、その他の実施形態においては、エミュレーション論理は、プロセッサの外部に存在しており、且つ、第三者によって提供される。一実施形態においては、プロセッサは、プロセッサ内に収容された又はプロセッサと関連付けられたマイクロコード又はファームウェアを実行することにより、ソフトウェアを含む有体の機械可読媒体内において実施されたエミュレーション論理を読み込む能力を有する。
【０１１１】
図１３は、本発明の実施形態によるソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させたブロック図である。図示の実施形態においては、命令コンバータは、ソフトウェア命令コンバータであるが、この代わりに、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はこれらの様々な組合せにおいて実装してもよい。図１３は、ｘ８６コンパイラ１３０４を使用することにより、高級言語１３０２のプログラムをコンパイルし、少なくとも１つのｘ８６命令セットコア１３１６によってプロセッサによってネイティブで実行されてもよいｘ８６バイナリコード１３０６を生成してもよいことを示している。少なくとも１つのｘ８６命令セットコア１３１６を有するプロセッサは、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同一の結果を実現するべく、（１）Ｉｎｔｅｌ  ｘ８６命令セットコアの命令セットのかなりの部分、又は（２）少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサ上において稼働することを目的としたアプリケーション又はその他のソフトウェアのオブジェクトコードバージョンを互換性を有する状態において実行又はその他の方法で処理することにより、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同一の機能を実行することができる任意のプロセッサを表している。ｘ８６コンパイラ１３０４は、追加のリンケージ処理を伴って又は伴うことなしに、少なくとも１つのｘ８６命令セットコア１３１６を有するプロセッサ上において実行可能なｘ８６バイナリコード１３０６（例えば、オブジェクトコード）を生成するように動作可能なコンパイラを表している。同様に、図１３は、代替命令セットコンパイラ１３０８を使用することにより、高級言語のプログラム１３０２をコンパイルし、少なくとも１つのｘ８６命令セットコア１３１４を有していないプロセッサ（例えば、カリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＭＩＰＳ命令セットを実行する且つ／又はカリフォルニア州Ｓｕｎｎｙｖａｌｅに所在するＡＲＭホールディングス社のＡＲＭ命令セットを実行するコアを有するプロセッサ）によってネイティブで実行してもよい代替命令セットバイナリコード１３１０を生成してもよいことを示している。命令コンバータ１３１２は、ｘ８６バイナリコード１３０６を、ｘ８６命令セットコア１３１４を有していないプロセッサによってネイティブで実行されてもよいコードに変換するために使用される。この能力を有する命令コンバータは、製造が困難であるために、この変換されたコードは、代替命令セットバイナリコード１３１０と同一である可能性は低いが、変換されたコードは、全般的な演算を実現することになり、且つ、代替命令セットからの命令から構成されることになる。従って、命令コンバータ１３１２は、エミュレーション、シミュレーション、又は任意のその他のプロセスを通じて、ｘ８６命令セットプロセッサ又はコアを有していないプロセッサ又はその他の電子装置がｘ８６バイナリコード１３０６を実行できるよう��するソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表している。
【０１１２】
図１４は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングするためのプロセッサマイクロアーキテクチャの一代替実施形態の要素を示している。プロセッサマイクロアーキテクチャ１４００の実施形態は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令の実行のためのパイプライン４００の一部分又はコア４９０の一部分（例えば、フロントエンドユニット４３０及び実行エンジンユニット４５０）であってもよい。装置１４００の実施形態は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令を復号化するための復号化ステージ（例えば、復号化４０６）又はデコーダ（例えば、復号化ユニット４４０）と結合してもよく、命令は、第１ソースデータオペランド、第２ソースデータオペランド、第３ソースデータオペランド、及び演算タイプを規定している。１つ又は複数の実行ユニット（例えば、実行ユニット４６２及び／又は実行ユニット４６４）は、復号化された命令に応答し、第１及び第２ソースデータオペランドからのデータの間において、規定の演算タイプに従って、第１論理演算（例えば、ビット論理ＯＲ又はビット論理ＡＮＤ）を実行し、且つ、第３ソースデータオペランドからのデータと第１論理演算の結果の間において第２論理演算（例えば、試験演算、又は非破壊的ビット論理ＡＮＤ）を実行し、条件フラグを設定する。
【０１１３】
例えば、プロセッサパイプライン１４００の実施形態は、フェッチステージ１４０２、命令キューステージ１４０３、長さ復号化ステージ１４０４、マイクロ命令フュージョンステージ１４０５、復号化ステージ１４０６、ｍｉｃｒｏ−ｏｐ保存ステージ１４０７、ｍｉｃｒｏ−ｏｐフュージョンステージ１４１１、スケジューリング（ディスパッチ又は発行とも呼ばれる）ステージ１４１２、実行ステージ１４１６、及び書戻し／メモリ書込みステージ１４１８を含む。又、プロセッサパイプライン１４００の実施形態は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令のフュージングとの関係においてプロセッサパイプライン１４００の機能的側面を理解するために不要なその他のパイプラインステージ（この図には示されていない）を含んでもよい。
【０１１４】
プロセッサパイプライン１４００のいくつかの実施形態においては、復号化ステージ１４０６が複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために第１命令を復号化する際に、第１命令を、マクロ命令フュージョンステージ１４０５によって命令キューステージ１４０３からの第１命令と共にフュージング可能であると識別された分岐命令とフュージングし、且つ、プロセッサパイプライン１４００における実行のためにｍｉｃｒｏ−ｏｐ保存ステージ１４０７内に保存されるように、単一のフュージングされたマイクロ演算を生成している。
【０１１５】
プロセッサパイプライン１４００のいくつかの代替実施形態においては、フェッチステージ１４０２は、第１オペランドデスティネーションを規定する第１論理命令（例えば、ビット論理ＯＲ又はビット論理ＡＮＤ命令）と、第２オペランドソースを規定する第２命令（例えば、ビット論理ＡＮＤ又は非破壊的試験命令）と、分岐条件を規定する第３命令（例えば、ＪＺ（Ｊｕｍｐ−Ｚｅｒｏ）、ＪＮＺ（Ｊｕｍｐ−Ｎｏｔ−Ｚｅｒｏ）、又はいくつかのその他のＪＣＣ（Ｊｕｍｐ−Ｃｏｎｄｉｔｉｏｎ−Ｃｏｄｅ）命令）を含むいくつかの命令をフェッチしてもよい。フェッチステージ１４０２は、命令キューステージ１４０３に対して命令を保存し、長さ復号化ステージ１４０４及びマクロ命令フュージョンステージ１４０５の復号化前論理が、復号化ステージ１４０６内における復号化のために、命令の境界を判定し、且つ、フュージング可能な命令を識別する。復号化ステージ１４０６は、命令の一部分を単一のマイクロ演算としてフュージングしてもよく、この部分は、第１オペランドデスティネーションと前記第２オペランドソースが同一であり（例えば、シングルレジスタ）、且つ、前記分岐条件が第２命令に依存している場合には（例えば、第２命令が、分岐条件として第３命令によって使用される条件コードを変更する最後の命令である場合）、第１及び第２命令の両方を含む。いくつかの実施形態においては、フュージングされる部分は、（例えば、第１オペランドデスティネーションと前記第２オペランドソースが同一であり、第２及び第３命令が連続しており、且つ、第２命令が試験命令である場合）、第１、第２、及び第３命令を含んでもよい。いくつかの代替実施形態においては、フュージングされる部分は、第１及び第２命令のみを含んでもよく、復号化ステージ１４０６は、プロセッサパイプライン１４００における実行のためにｍｉｃｒｏ−ｏｐ保存ステージ１４０７内に保存されるように、第１及び第２命令を、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための単一のマイクロ演算として、復号化している。
【０１１６】
又、プロセッサパイプライン１４００のいくつかの代替実施形態においては、分岐条件が複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能を提供するための単一の第１マイクロ演算に依存している場合には、ｍｉｃｒｏ−ｏｐ保存ステージ１４０７をｍｉｃｒｏ−ｏｐフュージョンステージ１４１１と結合し、前記単一の第１マイクロ演算と前記第３命令の第２マイクロ演算をフュージングしてもよい。このような一実施形態においては、スケジューリングステージ１４１２は、１つのみのフュージングされたマイクロ演算を受け取り、複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能と、結果に応じた分岐と、を提供するためのこの１つのフュージングされたマイクロ演算を、実行ステージ１４１６に、且つ、次いで、書戻し／メモリ書込みステージ１４１８に、発行してもよい。
【０１１７】
いくつかの頻繁に実行される命令シーケンスのイディオムは、２つのソースデータオペランドを合成するための論理演算（例えば、いずれかのソース内のビットが１であるかどうかを試験する際のＯＲ、いずれかのソース内のビットがゼロであるかどうかを試験する際のＡＮＤ）、比較又は試験命令（例えば、マスクに照らして論理演算の結果をＴＥＳＴするためのもの）、及び条件付き分岐（例えば、ゼロフラグがＴＥＳＴによって設定されている／設定されていない場合に相対的に低速の一般的なコードシーケンスにジャンプするためのＪＺ／ＪＮＺ）を含んでもよい。プロセッサ復号化論理は、比較命令又は試験命令（例えば、ＴＥＳＴ）を条件付き分岐命令（例えば、ＪＺ）と合成する際に、マクロフュージョンを利用してもよい。
【０１１８】
又、いくつかの実施形態は、１つの論理命令（例えば、ＯＲ）を従来技術の試験命令とフュージングすることにより、試験命令を動的に生成してもよい。その他の実施形態は、試験命令を、動的に、但し、ＪＩＴコンパイラを通じて、生成している。又、いくつかの実施形態は、試験命令を後続の条件付き分岐命令（例えば、ＪＺ）とフュージングしてもよく、且つ、条件フラグが設定された方式に従って分岐を実行してもよい。従って、頻繁に実行される命令シーケンスのイディオムは、実行時においてプロセッサ内に１つのマイクロ演算シーケンスを結果的にもたらす単一の命令としてフュージング可能であってもよい。
【０１１９】
複数の試験ソースに対するＯＲ試験及び／又はＡＮＤ試験機能を提供するためのフュージング可能な命令及び論理は、ＪＩＴコンパイラによって生成される頻繁に実行されるタイプ試験命令イディオムと関連する性能の制限の問題、エネルギー消費の懸念、及びその他の実行時ボトルネックをほとんど除去することになることを理解されたい。
【０１２０】
図１５Ａは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するためのフュージングされた命令構造１５０１の一実施形態のフロー図を示している。第１オペランドデスティネーションを規定する第１論理命令（例えば、ビット論理ＯＲ又はビット論理ＡＮＤ命令）であるＴＥＭＰと、第２オペランドソースを規定する第２命令（例えば、非破壊的ＴＥＳＴ命令）であるＴＥＳＴが（例えば、フェッチステージ１４０２によって）命令キューＩＱ１５１０内に保存されている。又、分岐条件を規定する第３命令１５１４（例えば、ＪＣＣ（Ｊｕｍｐ−Ｃｏｎｄｉｔｉｏｎ−Ｃｏｄｅ）命令）も、（例えば、命令キューステージ１４０３において）ＩＱ１５１０内に保存されている。（例えば、長さ復号化ステージ１４０４及びマイクロ命令フュージョンステージ１４０５の）復号化前論理が、（例えば、復号化ステージ１４０６における）復号化のために、命令境界を判定し、且つ、フュージング可能な命令１５１２を識別している。（例えば、復号化ステージ１４０６における）復号化の際に、命令（例えば、命令１５１２）の一部分を単一のマイクロ演算１５２２としてフュージングしてもよく、この部分は、第１オペランドデスティネーション及び前記第２オペランドソースが同一であり（例えば、単一のレジスタＴＥＭＰ）、且つ、分岐条件コード（ＣＣ）が第２命令に依存している場合には（例えば、第２命令が、分岐条件として第３命令によって使用されるＣＣを変更する最後の命令である場合）、第１及び第２命令１５１２の両方を含む。いくつかの代替実施形態においては、フュージングされる部分は、第１及び第２命令１５１２のみを含んでもよく、プロセッサは、（例えば、プロセッサパイプライン１４００における実行のために、ｍｉｃｒｏ−ｏｐ保存ステージ１４０７において）ｍｉｃｒｏ−ｏｐストレージ１５２０内に保存されるように、第１及び第２命令１５１２を複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能を提供するための単一のマイクロ演算１５２２として復号化している。又、いくつかの実施形態においては、分岐条件が複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能を提供するための単一の第１マイクロ演算１５２２に依存している場合には、ｍｉｃｒｏ−ｏｐストレージ１５２０を、前記単一の第１マイクロ演算１５２２と前記第３命令１５１４の第２マイクロ演算１５２４を（例えば、ｍｉｃｒｏ−ｏｐフュージョンステージ１４１１内において）フュージングするためのｍｉｃｒｏ−ｏｐフュージョン論理と結合してもよい。このような一実施形態においては、複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能と、結果として得られるＣＣに応じた分岐と、を提供するための１つのフュージングされたマイクロ演算１５２６を（例えば、プロセッサパイプライン１４００における実行のために）ｍｉｃｒｏ−ｏｐストレージ１５２０に保存してもよい
【０１２１】
いくつかの実施形態においては、フュージングされる部分は、（例えば、第１オペランドデスティネーション及び前記第２オペランドソースが同一あり、第２及び第３命令が連続しており、且つ、第２又はミドル命令が試験命令である場合には）、第１、第２、及び第３命令を含んでもよい。
【０１２２】
図１５Ｂは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能と、結果的に得られるＣＣに応じた分岐と、を提供するためのフュージングされた命令構造１５０２の一代替実施形態のフロー図を示している。第１オペランドデスティネーションを規定する第１論理命令（例えば、ビット論理ＯＲ又はビット論理ＡＮＤ命令）であるＴＥＭＰ、第２オペランドソースを規定する第２命令（例えば、非破壊的ＴＥＳＴ命令）であるＴＥＳＴ、及び分岐条件を規定する第３命令（例えば、ＪＣＣ（Ｊｕｍｐ−Ｃｏｎｄｉｔｉｏｎ−Ｃｏｄｅ）命令）が（例えば、命令キューステージ１４０３においてフェッチステージ１４０２によって）ＩＱ１５１０内に保存されている。（例えば、長さ復号化ステージ１４０４及びマイクロ命令フュージョンステージ１４０５の）復号化前論理が、（例えば、復号化ステージ１４０６における）復号化のために、命令の境界を判定し、且つ、フュージング可能な命令１５１６を識別している。（例えば、復号化ステージ１４０６における）復号化の際に、命令（例えば、命令１５１６）の一部分を単一のマイクロ演算１５２６としてフュージングしてもよく、この部分は、第１オペランドデスティネーションと第２オペランドソースが同一であり（例えば、ＴＥＭＰ）、第２（例えば、ＴＥＳＴ）及び第３（例えば、ＪＣＣ）命令が連続しており、且つ、第２の又は中間の命令が、（例えば、プロセッサパイプライン１４００内における）実行の結果として分岐ＣＣを変更するＴＥＳＴなどの命令である場合には、第１、第２、及び第３命令１５１６を含む。
【０１２３】
いくつかの実施形態においては、プロセッサ命令セットアーキテクチャ（ＩＳＡ）は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための代替タイプのマクロ命令ＴＥＳＴ２を提供してもよい。このような一実施形態においては、単一のマイクロ演算としてフュージングすることができる命令の一部分を識別するタスクが単純化されることになろう。
【０１２４】
図１５Ｃは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能と、結果的に得られるＣＣによる分岐と、を提供するためのフュージングされた命令構造１５０３の別の代替実施形態のフロー図を示している。第１ソースデータオペランド、第２ソースデータオペランド、第３ソースデータオペランド、及び演算タイプ（例えば、ＯＲ試験又はＡＮＤ試験命令）を規定する第１命令ＴＥＳＴ２と、分岐条件を規定する第２分岐命令（例えば、ＪＣＣ（Ｊｕｍｐ−Ｃｏｎｄｉｔｉｏｎ−Ｃｏｄｅ）命令）が（例えば、命令キューステージ１４０３においてフェッチステージ１４０２によって）ＩＱ１５１１内に保存され、復号化ステージ（復号化ステージ１４０６）が第１命令を復号化する際に、複数の試験ソースに対するＯＲ試験又はＡＮＤ試験機能と、結果的に得られるＣＣに応じた分岐と、を提供するための単一のフュージングされたマイクロ演算１５２６としての実行のために、第１命令を分岐命令とフュージングしており、単一のフュージングされたマイクロ演算１５２６は、（例えば、プロセッサパイプライン１４００における実行のために、ｍｉｃｒｏ−ｏｐ保存ステージ１４０７において）ｍｉｃｒｏ−ｏｐストレージ１５２０内に保存されている。
【０１２５】
従って、フュージング可能な命令及び論理の実施形態は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供してもよい。いくつかの実施形態においては、プロセッサ復号化ステージ１４０６は、実行のために新しい試験命令（例えば、ＯＲ試験又はＡＮＤ試験など）を復号化してもよく、命令は、第１、第２、及び第３ソースデータオペランドと、演算タイプと、を規定している（例えば、ＯＲ試験又はＡＮＤ試験）。実行ユニット（例えば、実行ユニット４６２及び／又は実行ユニット４６４）は、復号化された試験命令に応答し、規定の演算タイプに従って、第１及び第２ソースデータオペランドからのデータの間において、１つの論理演算（例えば、ＯＲ）を実行してもよく、且つ、第３ソースデータオペランドからのデータと第１論理演算の結果の間において、第２論理演算（例えば、ＡＮＤ）を実行し、条件フラグを設定してもよい。いくつかの代替実施形態においては、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための処理は、専用のハードウェアによって実行してもよい。いくつかのその他の代替実施形態においては、このような処理は、汎用機械による又は特殊目的機械による又はなんらかの組合せによる実行が可能なソフトウェア又はファームウェア演算コードによって実行してもよい。
【０１２６】
図１６Ａは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングするためのプロセス１６０１の一実施形態のフロー図を示している。上述のように、本明細書に記述されているプロセス１６０１及びその他のプロセスは、汎用機械による、又は特殊目的機械による、又は両方の組合せによる実行が可能な専用ハードウェア又はソフトウェア又はファームウェア演算コードを有してもよい処理ブロックによって実行される。
【０１２７】
プロセス１６０１の処理ブロック１６１０において、第１オペランドデスティネーションを規定する第１命令がフェッチされる。処理ブロック１６２０において、第２オペランドソースを規定する第２命令がフェッチされる。処理ブロック１６３０において、第１及び第２オペランドが同一であるかどうかが判定される。判定結果が否定的である場合には、処理は、処理ブロック１６１０に進む。判定結果が肯定的である場合には、処理は、処理ブロック１６４０に進み、ここで、第１及び第２命令が単一のｍｉｃｒｏ−ｏｐ又はマイクロ演算としてフュージングされる。処理ブロック１６５０において、第２命令に依存する分岐条件を規定する第３命令がフェッチされる。次いで、処理ブロック１６６０において、第３命令も、単一のｍｉｃｒｏ−ｏｐ又はマイクロ演算としてフュージングされる。
【０１２８】
図１６Ｂは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングするためのプロセス１６０２の一代替実施形態のフロー図を示している。プロセス１６０２の処理ブロック１６１０において、第１オペランドデスティネーションを規定する第１命令がフェッチされる。処理ブロック１６２０において、第２オペランドソースを規定する第２命令がフェッチされる。処理ブロック１６５０において、第２命令に依存した分岐条件を規定する第３命令がフェッチされる。次いで、処理ブロック１６７０において、フェッチされた命令の一部分がフュージングされており、この部分は、前記第１オペランドデスティネーション及び前記第２オペランドソースが同一であり、且つ、分岐条件が第２命令に依存している場合には、第１及び第２命令の両方を含む。
【０１２９】
図１６Ｃは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングするためのプロセスの別の代替実施形態１６０３のフロー図を示している。プロセス１６０３の処理ブロック１６４５において、２つのオペランドを試験するための第１命令であって、第１オペランドソース、第２オペランドソース、第３オペランドソース、及び演算タイプを規定する第１命令が、フェッチされる。処理ブロック１６５５においては、分岐条件フラグを規定する第２命令がフェッチされ、分岐条件フラグは、第１命令に依存している。次いで、処理ブロック１６６５において、フェッチされた命令の一部分がフュージングされており、この部分は、例えば、分岐条件フラグが第１命令に依存している場合には、第１及び第２命令の両方を含む。
【０１３０】
図１６Ｄは、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するために命令をフュージングするためのプロセスの別の代替実施形態１６０４のフロー図を示している。プロセス１６０４の処理ブロック１６４７において、第１命令が実行のために復号化されており、第１命令は、第１オペランドソースデータ、第２オペランドソースデータ、第３オペランドソースデータ、及び演算タイプを規定している。処理ブロック１６４９において、第１命令について、第１ｍｉｃｒｏ−ｏｐ又はマイクロ演算が保存されている。処理ブロック１６５７において、第２命令が実行のために復号化されており、第２命令は、分岐条件を規定している。処理ブロック１６５９において、第２命令について、第２ｍｉｃｒｏ−ｏｐ又はマイクロ演算が保存されている。処理ブロック１６６７において、分岐条件が第１命令に依存している場合に、第１及び第２ｍｉｃｒｏ−ｏｐが単一のｍｉｃｒｏ−ｏｐとしてフュージングされる。
【０１３１】
いくつかの実施形態は、新規の試験命令（例えば、ＯＲ試験又はＡＮＤ試験命令）を、動的に、但し、ＪＩＴコンパイラを通じて、生成してもよい。又、これらの実施形態は、試験命令を後続の条件付き分岐命令（例えば、ＪＺ）とフュージングしてもよく、且つ、条件フラグが設定された方式に従って分岐を実行してもよい。従って、頻繁に実行される命令シーケンスのイディオムを、実行時にプロセッサパイプライン内に単一のマイクロ演算を結果的にもたらす単一の命令としてフュージングしてもよい。
【０１３２】
図１７は、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能を提供するための命令を実行するためのプロセスの一実施形態１７０１のフロー図を示している。プロセス１７０１の処理ブロック１７１０において、第１命令が実行のために復号化されており、第１命令は、第１オペランドソースデータ、第２オペランドソースデータ、第３オペランドソースデータ、及び演算タイプを規定している。処理ブロック１７２０において、１つ又は複数の実行ユニットは、復号化された第１命令に応答し、規定の演算タイプに従って、第１及び第２オペランドソースからのデータの間において、第１論理演算を実行している。処理ブロック１７３０において、第３オペランドソースからのデータと第１論理演算の結果の間において、第２演算が実行され、条件フラグを条件付きで設定している。処理ブロック１７４０において、条件フラグが設定されている場合に、プログラムのフローが条件付きで分岐している。いくつかの実施形態においては、複数の試験ソースに対するＯＲ試験及びＡＮＤ試験機能と、結果的に得られるＣＣに応じた分岐と、を提供するための単一のフュージングされたｍｉｃｒｏ−ｏｐ又はマイクロ演算に応答し、処理ブロック１７２０〜１７４０を実行してもよい。
【０１３３】
頻繁に実行される命令シーケンスのイディオムは、しばしば、２つのソースデータオペランドを合成するための論理演算（例えば、いずれかのソース内のビットが１であるかどうかを試験する際のＯＲ、いずれかのソース内のビットがゼロであるかどうかを試験する際のＡＮＤ）、比較又は試験命令（例えば、マスクに照らして論理演算の結果をＴＥＳＴするためのもの）、及び条件付き分岐（例えば、ゼロフラグがＴＥＳＴによって設定されている／設定されていない場合に相対的に低速の一般的コードシーケンスにジャンプするためのＪＺ／ＪＮＺ）を含んでいる場合がある。プロセッサ復号化論理は、比較命令又は試験命令（例えば、ＴＥＳＴ）を条件付き分岐命令（例えば、ＪＺ）と合成する際に、マクロフュージョンを利用してもよい。
【０１３４】
複数の試験ソースに対するＯＲ試験及び／又はＡＮＤ試験機能を提供するためのフュージング可能な命令及び論理は、ＪＩＴコンパイラによって生成される頻繁に実行されるタイプ試験命令イディオムと関連する性能の制限の問題、エネルギー消費の懸念、及びその他の実行時ボトルネックをほとんど除去することになることを理解されたい。
【０１３５】
本明細書に開示されているメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこのような実装方式の組合せによって実装してもよい。本発明の実施形態は、少なくとも１つのプロセッサと、ストレージシステム（揮発性及び不揮発性メモリ及び／又はストレージ要素を含む）と、少なくとも１つの入力装置と、少なくとも１つの出力装置と、を有するプログラム可能なシステム上において稼働するコンピュータプログラム又はプログラムコードとして実装してもよい。
【０１３６】
プログラムコードを入力命令に適用し、本明細書に記述されている機能を実行すると共に出力情報を生成してもよい。出力情報は、既知の方式により、１つ又は複数の出力装置に適用してもよい。このアプリケーションの目的のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又はマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【０１３７】
プログラムコードは、処理システムと通信するために、ハイレベルな手続型の又はオブジェクト指向のプログラム言語によって実装してもよい。又、プログラムコードは、必要に応じて、アセンブリ言語又は機械語によって実装してもよい。実際に、本明細書に記述されているメカニズムは、その範囲が任意の特定のプログラム言語に限定されるものではない。いずれの場合にも、言語は、コンパイラ型又はインタープリタ型の言語であってよい。
【０１３８】
少なくとも１つの実施形態の１つ又は複数の態様は、機械によって読み取られた際に本明細書に記述されている技法を実行するための論理を機械に製造させる、プロセッサ内における様々な論理を表す、機械可読媒体上に保存された命令表現によって実装してもよい。このような「ＩＰコア」と呼ばれる表現は、有体の機械可読媒体上に保存してもよく、且つ、論理又はプロセッサを実際に製造する製造機械に読み込まれるように、様々な顧客又は製造施設に供給してもよい。
【０１３９】
このような機械可読ストレージ媒体は、限定を伴うことなしに、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｗｒｉｔａｂｌｅ）、及び磁気光ディスクを含む任意のその他のタイプのディスク、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの半導体装置、磁気又は光カード、或いは、電子的命令を保存するのに適した任意のその他のタイプの媒体などのストレージ媒体を含む機械又は装置によって製造又は形成された物品の一時的ではない有体の構成を含んでもよい。
【０１４０】
従って、本発明の実施形態は、命令を収容する又は本明細書に記述されている構造、回路、装置、プロセッサ、及び／又はシステム機能を定義するＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）などの設計データを収容する一時的ではない有体の機械可読媒体をも含む。又、このような実施形態は、プログラムプロダクトと呼ばれる場合がある。
【０１４１】
いくつかのケースにおいては、命令コンバータを使用し、命令をソース命令セットからターゲット命令セットに変換してもよい。例えば、命令コンバータは、命令を、コアによって処理される１つ又は複数のその他の命令に（静的バイナリ変換や動的コンパイルを含む動的なバイナリ変換を使用して）変換、変形、エミュレート、又はその他の方法で変換してもよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組合せによって実装してもよい。命令コンバータは、オンプロセッサ、オフプロセッサ、或いは、パートオン及びパートオフプロセッサであってもよい。
【０１４２】
従って、少なくとも１つの実施形態に従って１つ又は複数の命令を実行するための技法が開示されている。特定の例示用の実施形態について記述すると共に添付図面に図示したが、このような実施形態は、広範な本発明の限定ではなく、その例示を目的としたものに過ぎず、且つ、当業者には、本開示を参照した際に様々なその他の変更が想起されうることから、本発明は、図示及び記述されている特定の構造及び構成に限定されるものではないことを理解されたい。迅速に成長すると共に更なる進歩が容易には予想されない当技術分野などの技術分野においては、本開示の原理又は添付の請求項の範囲を逸脱することなしに、技術的な進歩の実現によって促進されるかたちで、開示されている実施形態の構成及び詳細の変更が容易であろう。
【図１Ａ】
2014194755.tif 000005
【図１Ｂ】
2014194755.tif 000006
【図１Ｃ】
2014194755.tif 000007
【図２】
2014194755.tif 000008
【図３Ａ】
2014194755.tif 000009
【図３Ｂ】
2014194755.tif 000010
【図３Ｃ】
2014194755.tif 000011
【図３Ｄ】
2014194755.tif 000012
【図３Ｅ】
2014194755.tif 000013
【図３Ｆ】
2014194755.tif 000014
【図３Ｇ】
2014194755.tif 000015
【図３Ｈ】
2014194755.tif 000016
【図４Ａ】
2014194755.tif 000017
【図４Ｂ】
2014194755.tif 000018
【図５】
2014194755.tif 000019
【図６】
2014194755.tif 000020
【図７】
2014194755.tif 000021
【図８】
2014194755.tif 000022
【図９】
2014194755.tif 000023
【図１０】
2014194755.tif 000024
【図１１】
2014194755.tif 000025
【図１２】
2014194755.tif 000026
【図１３】
2014194755.tif 000027
【図１４】
2014194755.tif 000028
【図１５Ａ】
2014194755.tif 000029
【図１５Ｂ】
2014194755.tif 000030
【図１５Ｃ】
2014194755.tif 000031
【図１６Ａ】
2014194755.tif 000032
【図１６Ｂ】
2014194755.tif 000033
【図１６Ｃ】
2014194755.tif 000034
【図１６Ｄ】
2014194755.tif 000035
【図１７】
2014194755.tif 000036
【外国語明細書】
2014194755000001.pdf