(57)【要約】      （修正有）【課題】命令がエミュレーションされることを決定する復号化ロジックを含むプロセッサを提供する。【解決手段】エミュレーションモードアウェア復号化後命令プロセッサロジックは、命令から復号化された１つまたは複数の制御信号を処理する。命令は、第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットのうちの１つである。１つまたは複数の制御信号は、エミュレーションモードアウェア復号化後命令プロセッサロジックによって、エミュレーションモードにあるときはエミュレーションモードにないときと異なって処理される。【選択図】図２
2014194770.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令を受信し、前記第１の命令がエミュレーションされることを決定する復号化ロジックと、
前記復号化ロジックと結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックであって、前記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときはエミュレーションモードにないときと異なって処理するエミュレーションモードアウェア復号化後命令プロセッサロジックと
を備えるプロセッサ。
【請求項２】
前記第１の命令は、より多くの動作が実施されることを前記第１の命令を伴うことから、前記セットの各命令より複雑である、請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサは、命令セットの任意の命令の実装にマイクロコードを使用しない、請求項２に記載のプロセッサ。
【請求項４】
前記１つまたは複数の命令からなるセットの各命令は、前記第１の命令と同じ命令セットの命令である、請求項１に記載のプロセッサ。
【請求項５】
前記エミュレーションモードアウェア復号化後命令プロセッサロジックは、前記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを有する、請求項１から４のいずれか１項に記載のプロセッサ。
【請求項６】
前記エミュレーションモードアウェア例外条件ハンドラロジックは、前記第１の命令のアドレスをスタック内に格納する、請求項５に記載のプロセッサ。
【請求項７】
前記エミュレーションモードアウェア例外条件ハンドラロジックは、前記例外条件のインジケータ、および前記例外条件のためのエラーコードを前記エミュレーションロジックに結合された１つまたは複数のレジスタ内に格納する、請求項５に記載のプロセッサ。
【請求項８】
前記エミュレーションモードアウェア例外条件ハンドラロジックは、前記例外条件に応答して例外条件ハンドラに対して制御を直接移すことを回避し、前記エミュレーションロジックの１つまたは複数の命令が前記例外条件ハンドラに制御を移す、請求項５に記載のプロセッサ。
【請求項９】
前記エミュレーションモードアウェア復号化後命令プロセッサロジックは、エミュレーションモードアウェアアクセス制御ロジックを有し、前記１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つへのアクセスを、前記エミュレーションモードにあるときには前記エミュレーションモードにないときとは異なって制御する、請求項１から４のいずれか１項に記載のプロセッサ。
【請求項１０】
前記エミュレーションモードアウェアアクセス制御ロジックは、前記エミュレーションモードにあるときには前記リソースおよび前記情報のうちの前記少なくとも１つへのアクセスを許可し、前記エミュレーションモードにないときには前記リソースおよび前記情報のうちの前記少なくとも１つへのアクセスを防止する、請求項９に記載のプロセッサ。
【請求項１１】
前記リソースおよび前記情報のうちの前記少なくとも１つは、セキュリティロジック、安全情報、暗号化ロジック、解読ロジック、乱数発生器ロジック、オペレーティングシステムによるアクセスのために確保されたロジック、オペレーティングシステムによるアクセスのために確保されたメモリの部分、およびオペレーティングシステムによるアクセスのために確保された情報のうちの少なくとも１つを含む、請求項１０に記載のプロセッサ。
【請求項１２】
前記リソースおよび前記情報のうちの前記少なくとも１つは、他のロジックプロセッサおよび他の物理プロセッサのうちの１つにおけるリソースおよび情報のうちの少なくとも１つを含む、請求項１０に記載のプロセッサ。
【請求項１３】
前記１つまたは複数からなる命令のセットは、少なくとも３つの命令を含む、請求項１から４のいずれか１項に記載のプロセッサ。
【請求項１４】
第１の命令を受信することと、
前記第１の命令のエミュレーションを行なうことを決定することと、
前記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットを受信することと、
前記セットの命令から引き出される１つまたは複数の制御信号をエミュレーションモードにあるときには前記エミュレーションモードにないときと異なって処理することと
を備えるプロセッサ内における方法。
【請求項１５】
前記第１の命令を受信することは、前記１つまたは複数からなる命令のセットの各命令より複雑な前記第１の命令を受信することを有する、請求項１４に記載の方法。
【請求項１６】
前記１つまたは複数からなる命令のセットを受信することは、前記第１の命令と同じ命令セットの各命令である１つまたは複数の命令を受信することを有する、請求項１４に記載の方法。
【請求項１７】
前記処理することは、
前記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートすることと、
前記エミュレーションロジックの１つまたは複数の命令を実行し、例外条件ハンドラに制御を移すことと
を有する、請求項１４に記載の方法。
【請求項１８】
前記レポートすることは、
１つまたは複数のレジスタ内に前記例外条件のインジケータを格納することと、
スタック内に前記第１の命令のアドレスを格納することと
を含む、請求項１７に記載の方法。
【請求項１９】
前記処理することは、前記１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つに対するアクセスを、エミュレーションモードにあるときは前記エミュレーションモードにないときと異なって制御することを含む、請求項１４に記載の方法。
【請求項２０】
前記アクセスを異なって制御することは、
前記エミュレーションモードにあるときには前記リソースおよび前記情報の前記少なくとも１つに対するアクセスを許可することと、
前記エミュレーションモードにないときには前記リソースおよび前記情報の前記少なくとも１つに対するアクセスを防止することと
を含む、請求項１９に記載の方法。
【請求項２１】
相互接続と、
前記相互接続に結合されたプロセッサであって、
第１の命令を受信し、前記第１の命令がエミュレーションされることを決定する復号化ロジックと、
前記復号化ロジックと結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックであって、前記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときはエミュレーションモードにないときと異なって処理するエミュレーションモードアウェア復号化後命令プロセッサロジックと
を有するプロセッサと、
前記相互接続に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）と
を備える、命令を処理するシステム。
【請求項２２】
前記エミュレーションモードアウェア復号化後命令プロセッサロジックは、前記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを含む、請求項２１に記載のシステム。
【請求項２３】
請求項１４から２０のいずれか１項に記載の方法を実施する装置。
【請求項２４】
請求項１４から２０のいずれか１項に記載の方法を実施するための手段を備える装置。
【請求項２５】
請求項１から４のいずれか１項に記載のプロセッサと、
前記プロセッサに結合されたダイナミックランダムアクセスメモリと
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に述べられている実施形態は、概してプロセッサに関する。特に本明細書に述べられている実施形態は、プロセッサ内の命令エミュレーションに関する。
【背景技術】
【０００２】
プロセッサは、通常、命令セットアーキテクチャ（ＩＳＡ）を有する。ＩＳＡは、概して、プログラミングに関係するプロセッサのアーキテクチャの部分を表わす。ＩＳＡは、プロセッサの、ネイティブ命令、アーキテクチャ上のレジスタ、データ型、アドレシングモード、およびこの類を一般に含む。ＩＳＡの１つの部分は、命令セットである。命令セットは、実行のためにプロセッサに提供されるマクロ命令またはＩＳＡレベルの命令を概して含む。実行ロジックおよびその他のパイプラインロジックが、命令セットの命令の処理のために含められる。しばしば、その種の実行およびその他のパイプラインロジックが、無視できない量となることがある。一般に、命令セット内の命令が多いほど、また命令セット内の命令が複雑および／または特化されているほど、その種のロジックの量が多くなる。その種のハードウエアは、プロセッサの製造コスト、サイズ、および／またはパワー消費を増加する傾向を持つことがある。
【図面の簡単な説明】
【０００３】
以下の説明および本発明の実施形態の図解に使用される付随する図面を参照することによって本発明の最良の理解が得られるであろう。図面には上記のものが含まれる。
【０００４】
【図１】コンピュータシステムの実施形態のブロック図である。
【０００５】
【図２】プロセッサ内の命令をエミュレーションする方法の実施形態のブロックフロー図である。
【０００６】
【図３】１つまたは複数の命令からなるセットを用いて命令をエミュレーションするロジックの実施形態を図解したブロック図である。
【０００７】
【図４】エミュレーションモードの場合にはエミュレーションモードでない場合と比較して異なる例外条件の処理をプロセッサに可能にするロジックの実施形態を図解したブロック図である。
【０００８】
【図５】エミュレーションモードの場合にはエミュレーションモードでない場合と比較して異なるリソース（１つまたは複数）および／または情報へのアクセスをプロセッサに可能にするロジックの実施形態を図解したブロック図である。
【０００９】
【図６】プロセッサ内および／またはそれによって実施される方法の実施形態のブロックフロー図である。
【００１０】
【図７】所定のオペコードが異なる意味を有することを可能にするロジックの実施形態を図解したブロック図である。
【００１１】
【図８】オペレーティングシステムモジュールによって実施できる方法の実施形態のブロックフロー図である。
【００１２】
【図９】１つまたは複数の関数、サブルーチン、またはソフトウエアライブラリのその他の部分のセットであって、それらを使用するソフトウエアに適した所定のオペコードの意味を有するものを選択するべく動作可能な選択モジュールを含むプログラムローダモジュールの実施形態のブロック図である。
【００１３】
【図１０Ａ】本発明の実施形態に係る例示的なインオーダパイプライン、およびレジスタリネーム、アウトオブオーダ発行／実行パイプラインの両方を図解したブロック図である。
【００１４】
【図１０Ｂ】本発明の実施形態に係るプロセッサ内に含まれるインオーダアーキテクチャコア、および例示的なレジスタリネーム、アウトオブオーダ発行／実行アーキテクチャコアの両方の例示的な実施形態を図解したブロック図である。
【００１５】
【図１１Ａ】本発明の実施形態に従ってシングルプロセッサコアを、それのオンダイ相互接続回路網への接続とともに、およびそれのレベル２（Ｌ２）キャッシュのローカルサブセットとともに示したブロック図である。
【００１６】
【図１１Ｂ】本発明の実施形態に係る図１１Ａのプロセッサコアの一部の拡大図である。
【００１７】
【図１２】本発明の実施形態に係る内蔵型メモリコントローラを有することができ、かつ内蔵型グラフィックを有することができる１より多くの数のコアを有することができるプロセッサのブロック図である。
【００１８】
【図１３】本発明の一実施形態に係るシステムのブロック図である。
【００１９】
【図１４】本発明の実施形態に係るより詳細な第１の例示的なシステムのブロック図である。
【００２０】
【図１５】本発明の実施形態に係るより詳細な第２の例示的なシステムのブロック図である。
【００２１】
【図１６】本発明の実施形態に係るＳｏＣのブロック図である。
【００２２】
【図１７】本発明の実施形態に係るターゲット命令セット内のバイナリ命令に対してソース命令セット内のバイナリ命令を変換するソフトウエア命令変換器の使用を対比させたブロック図である。
【発明を実施するための形態】
【００２３】
ここでは、命令エミュレーションのプロセッサ、方法、およびシステムについて開示する。以下の説明においては、多くの特定の詳細（例えば、特定のエミュレーションモードアウェアロジック、例外条件を処理するためのアプローチ、特権リソースのタイプおよび情報、ロジック実装、マイクロアーキテクチャ詳細、動作のシーケンス、ロジックパーティショニング／統合の詳細、ハードウエア／ソフトウエアパーティショニングの詳細、プロセッサ構成、システム構成要素のタイプおよび相互関係、およびこれらの類）が示される。しかしながら、理解されるように、本発明の実施形態は、これらの特定の詳細なしに実施されることが許される。その逆に周知の回路、構造、および技術は、この説明の理解を不明瞭にせぬために詳細に示されていない。
【００２４】
図１は、コンピュータシステム１００の実施形態のブロック図である。多様な実施形態において、コンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯情報端末、携帯電話、サーバ、ネットワークデバイス（例えば、ルータまたはスイッチ）、モバイルインターネットデバイス（ＭＩＤ）、メディアプレーヤ、スマートテレビジョン、セットトップボックス、ビデオゲームコントローラ、またはその他のタイプの電子デバイスを表わすことができる。
【００２５】
コンピュータシステムは、プロセッサ１０１の実施形態を含む。いくつかの実施形態においては、プロセッサを汎用プロセッサとすることができる。例えばプロセッサを、中央処理装置（ＣＰＵ）等の一般に使用されているタイプの汎用プロセッサとすることができる。他の実施形態においては、プロセッサが専用プロセッサとなることがある。適切な専用プロセッサの例は、限定ではないが、コプロセッサ、グラフィックプロセッサ、通信プロセッサ、ネットワークプロセッサ、暗号プロセッサ、埋込み型プロセッサ、およびデジタル信号プロセッサ（ＤＳＰ）を含むが、これらは一部の例に過ぎない。プロセッサは、多様な複合命令セットコンピューティング（ＣＩＳＣ）プロセッサ、多様な縮小命令セットコンピューティング（ＲＩＳＣ）プロセッサ、多様な超長命令語（ＶＬＩＷ）プロセッサ、これらの多様なハイブリッド、またはその他のタイプのプロセッサすべてのうちのいずれであってもよい。
【００２６】
コンピュータシステムはまた、結合メカニズム１０９によってプロセッサ１０１と結合されるメモリ１１０の実施形態も含む。この分野で周知の任意の従来的な、プロセッサとメモリを結合するための結合メカニズムが適する。その種のメカニズムの例は、限定ではないが、相互接続、バス、ハブ、メモリコントローラ、チップセット、チップセット構成要素、およびこれらの類、およびこれらの組合せを含む。メモリは、同一または異なるタイプのいずれかの１つまたは複数のメモリデバイスを含むことができる。一般的に使用され、実施形態に適したメモリのタイプの１つにダイナミックランダムアクセスメモリ（ＤＲＡＭ）があるが、それに代えて他のタイプのメモリ（例えば、フラッシュメモリ）が使用されることはある。
【００２７】
メモリ１１０は、それの中にソフトウエア１１１が格納されることがある。ソフトウエアは、例えば、１つまたは複数のオペレーティングシステム（ＯＳ）および１つまたは複数のアプリケーションを含むことができる。動作の間にソフトウエアの部分がプロセッサにロードされ、プロセッサ上で実行されることがある。示されているとおり、プロセッサは、プロセッサの命令セットのＩＳＡ命令１０２を受信できる。例えば、命令フェッチユニットがＩＳＡ命令をフェッチすることができる。ＩＳＡ命令は、マクロ命令、アッセンブリ言語命令、マシンレベルの命令、またはその他の、復号化されて実行されるべくプロセッサに提供される命令を表わすことができる。示されているとおり、いくつかの実施形態においては、ＩＳＡ命令がエミュレーションなし命令１０３および１つまたは複数のタイプのエミュレーションあり命令１０４の両方を含むことがある。
【００２８】
プロセッサは、復号化ロジック１０５を含む。復号化ロジックは、復号化ユニットまたは復号器と呼ばれることもある。復号化ロジックは、ＩＳＡ命令１０２を受信できる。エミュレーションなし命令１０３の場合には、復号化ロジックが、比較的よりハイレベルの命令を復号化し、ＩＳＡ命令から引き出される１つまたは複数の比較的よりローレベルのマイクロ命令、マイクロ動作、マイクロコード入口ポイント、またはその他の比較的よりローレベルの命令または制御信号を出力できる。図解においては、これらが復号化済み命令１０６として示されている。復号器から出力される復号化済み命令は、復号器に入力されたよりハイレベルのＩＳＡ命令を反映すること、表わすこと、および／またはそれから引き出されること、および１つまたは複数のよりローレベルの（例えば、回路レベルまたはハードウエアレベルの）動作を通じてそれらのＩＳＡ命令を実装することができる。復号器は、限定ではないが、マイクロコード読出し専用メモリ（ＲＯＭ）、ルックアップテーブル、ハードウエア実装、プログラム可能ロジックアレイ（ＰＬＡ）、およびその他の、この分野において周知の復号器の実装に使用されるメカニズムを含む多様な異なるメカニズムを使用して実装できる。
【００２９】
復号化後命令プロセッサロジック１０７が復号化ロジックに結合されている。復号化後命令プロセッサロジックは、プロセッサの命令処理パイプラインの復号化後の部分を表わすことができる。復号化後命令プロセッサロジックは、復号化済み命令１０６を受信し、処理することができる。一般に、復号化後命令プロセッサロジックは、レジスタ読み出し／メモリ読み出しロジック、実行ロジック、レジスタおよび／またはメモリ書き戻しロジック、および例外ハンドラロジックを含むことができるが、このロジックは、アーキテクチャごとに異なることがあり、本発明の範囲がその種のロジックに限定されることはない。いくつかの実施形態では、例えばアウトオブオーダプロセッサパイプラインの場合において、復号化後命令プロセッサロジックがオプションとしてその他の、例えば割付けロジック、リネームロジック、スケジューリングロジック、リタイアまたはコミットロジック、またはこれらの類といったロジックを含むことができる。
【００３０】
プロセッサはまた、１つまたは複数セットのアーキテクチャ的に可視の、またはアーキテクチャ上のレジスタ１０８も含む。アーキテクチャ的に可視のレジスタは、ソフトウエアおよび／またはプログラマに可視のレジスタ、および／またはオペランドを識別するべくＩＳＡ命令１０２によって指定されるレジスタを表わす。これらのアーキテクチャ上のレジスタは、所定のマイクロアーキテクチャ内における他の非アーキテクチャ上の、または非アーキテクチャ的に可視のレジスタ（例えば、命令によって使用される一時的なレジスタ、リオーダバッファ、リタイアメントレジスタ等）と対比される。アーキテクチャ上のレジスタは、概して、データを格納するべく動作できるオンダイプロセッサの記憶位置を表わす。ここでは、これらのアーキテクチャ上のレジスタを、しばしば単にレジスタと呼ぶ。例を述べれば、アーキテクチャ上のレジスタは、汎用レジスタのセット、パックドデータレジスタのセット、浮動小数点レジスタのセット、整数レジスタのセット、またはこれらの何らかの組合せを含むことができる。アーキテクチャ上のレジスタは、周知の技術を使用し、異なる方法、異なるマイクロアーキテクチャで実装でき、特定タイプの回路に限定されない。適切なタイプのアーキテクチャ上のレジスタの例は、限定ではないが、専用物理レジスタ、レジスタリネームを使用して動的に割付けられる物理レジスタ、およびこれらの組合せを含む。
【００３１】
復号化後命令プロセッサロジック１０７は、レジスタ１０８に結合される。復号化後命令プロセッサロジックは、それらのレジスタからのデータの受信、およびそれらへのデータの書き込みまたは格納を行なう。例えば、レジスタ読み出しロジックが命令のソースオペランドとして示されたレジスタからデータを読み出すこと、および／または書き戻しロジックが命令のデスティネーションオペランドとして示されたレジスタへ結果を書き込むことまたは格納することができる。復号化後命令プロセッサロジックは、また、メモリ１１０にも結合され、メモリからのデータの受信およびそれへのデータの格納を行なうことができる。例えば、メモリ読み出しロジックが命令によって示されたメモリ位置からからデータを読み出すこと、および／またはメモリ書き戻しロジックが命令によって示されたメモリ位置へデータを書き込むことができる。
【００３２】
再度図１を参照すると、エミュレーションあり命令１０４もまた、復号化ロジック１０５に提供できる。エミュレーションなし命令１０３とは対照的に、エミュレーションあり命令１０４は、復号化ロジックによる完全な復号化が行なわれずに対応する復号化済み命令１０６として復号化後命令プロセッサロジック１０７に提供されることがある。むしろいくつかの実施形態においては、エミュレーションロジック１１５に提供されてエミュレーションあり命令（１つまたは複数）１０４のエミュレーションが行なわれる。この分野においては、この種のエミュレーションに、例えば命令変換、バイナリ翻訳、コードモーフィング、命令解釈といった多様な異なる用語が与えられる。ここでは広く、この産業において使用されるこれらの多様な異なる用語を囲い込むべくエミュレーションという用語が使用される。
【００３３】
示されているとおり、いくつかの実施形態においては、エミュレーションロジック１１５が、部分的にオンダイエミュレーションロジック１１７と、部分的にオフダイエミュレーションロジック１１３の間に分割されることがあるが、これは必須ではない。他の実施形態においては、エミュレーションロジック１１５のすべてをオプションとしてオンダイとすること、または大半をオプションとしてオフダイとすることができるが、通常は少なくともいくらかのオンダイエミュレーションロジック（例えば、エミュレーションモード１１８、パイプライン内の何らかのエミュレーションモードアウェア命令プロセッサロジック１２０等）が存在する。オンダイエミュレーションロジックは、プロセッサとともにオンダイで固定されるか、常駐するか、または永続する。一般に、オンダイエミュレーションロジックは、プロセッサがパワーオフのとき、ブートの前、および／または製造完了時においてさえ、プロセッサとともにオンダイで存在する。適切なオンダイエミュレーションロジックの例は、限定ではないが、ハードウエア（例えば、集積回路、トランジスタ等）、ファームウエア（例えば、オンダイＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、またはその他の永続的または不揮発性メモリおよびそれに格納される不揮発性の命令）、またはこれらの組合せを含む。
【００３４】
オフダイエミュレーションロジック１１３は、メモリ１１０内に含めることができる。オフダイエミュレーションロジックは、オンダイエミュレーションロジックと結合すること、またはその他の形で通信することができる。いくつかの実施形態においては、オフダイエミュレーションロジックをメモリの保護領域または部分１１２内に含めることができる。いくつかの実施形態においては、保護部分が、プロセッサ上で実行するソフトウエア１１１のためにではなく、オンダイハードウエアおよび／またはプロセッサのファームウエアロジックによる使用のみのために確保されることがある。例えば、いくつかの実施形態において、オンダイエミュレーションロジック１１７、エミュレーションモードアウェア命令プロセッサロジック１２０、および／または可能性としてはその他のオンダイプロセッサロジックは、オフダイエミュレーションロジック１１３へのアクセスおよび使用ができるが、プロセッサ上で走っているソフトウエア１１１（例えば、オペレーティングシステムまたはアプリケーション）にはオフダイエミュレーションロジック１１３へのアクセスまたは使用が可能でないことがある。いくつかの実施形態においては、オフダイエミュレーションロジックが、アプリケーション、オペレーティングシステム、仮想マシンマネージャ（存在する場合）、および／または入出力デバイスによるアクセスおよび修正から保護されること、および／またはそれらに対して不可視とされることがある。これは、セキュリティの促進を補助できる。
【００３５】
復号化ロジックは、エミュレーションあり命令１０４を検出し、または認識するロジック１１９を含む。例えば、復号器は、オペコードに基づいてエミュレーションあり命令を検出できる。いくつかの実施形態においては、エミュレーションあり命令を検出すると復号器がエミュレーションロジック１１５へエミュレーションモード信号１１６（例えば、エミュレーショントラップ信号）を提供できる。示されているとおり、エミュレーションロジックはエミュレーションモード１１８を有することができる。例として述べれば、エミュレーションモードは、１または複数のビットまたは制御をプロセッサの制御または構成レジスタ内に有して、プロセッサ（例えば、ロジック１０５、１０７等）がエミュレーションモードにあるか否かを示すことができる。いくつかの実施形態においては、エミュレーションあり命令１０４がエミュレーションされるべきであることを示すエミュレーションモード信号１１６を復号器から受信すると、エミュレーションモード１１８に入ることができる。
【００３６】
いくつかの実施形態において、復号化ロジック１０５は、エミュレーションロジック１１５へ、エミュレーションされる命令に関連付けされるその他の情報の提供も行なうことができる。その種の情報の例は、限定ではないが、可能性としてオペランド識別子（例えば、ソースまたはデスティネーションレジスタアドレスまたはメモリ位置）、メモリアドレシングモード、イミディエト、実行を加速する定数、および／またはエミュレーションあり命令１０４からの、および／またはそれに関連付けされるその他の情報を含む。例として述べるが、可能性として、エミュレーションシステムにエミュレーションあり命令１０４のエミュレーションを可能にする上で有用な、エミュレーションあり命令からの、および／またはエミュレーションあり命令に関連付けされる任意の情報を提供できる。
【００３７】
いくつかの実施形態においては、エミュレーションロジック１１５がエミュレーションあり命令１０４の各異なるタイプのエミュレーションに、１つまたは複数の命令１１４の異なるセットを含むことができる。例えば、１つまたは複数の命令１１４の第１のセットを提供して第１のオペコードを有する第１の命令１０４のエミュレーションを行ない、それとは異なる１つまたは複数の命令１１４の第２のセットを提供して異なる第２のオペコードを有する第２の異なる命令１０４のエミュレーションを行なうことができる。いくつかの実施形態においては、各セットが少なくとも３つの命令を含むことができる。図解されている実施形態においては、１つまたは複数の命令１１４のセットが、オフダイエミュレーションロジック１１３内に含められているが、これは必須ではない。他の実施形態においては、命令１１４をオンダイで（例えば、オンダイエミュレーションロジック１１７の永続または不揮発性メモリ内に）提供できる。さらに他の実施形態においては、命令１１４の一部をオンダイで（例えば、オンダイエミュレーションロジック内に）提供し、一部をオフダイで（例えば、オフダイエミュレーションロジック内に）提供することができる。
【００３８】
いくつかの実施形態においては、エミュレーションあり命令１０４のエミュレーションに使用される１つまたは複数の命令１１４のセットの命令のそれぞれが、エミュレーションロジック１１５からフェッチされるか、その他の形で回収されて復号化ロジック１０５に提供されるようにできる。いくつかの実施形態においては、エミュレーションあり命令１０４のエミュレーションに使用される１つまたは複数の命令１１４のセットの命令のそれぞれを、エミュレーションあり命令１０４と同じ命令セットのものとすることができる。復号化ロジック１０５は、１つまたは複数の命令１１４のセットのそれぞれを対応する復号化済み命令１０６に復号化するべく動作可能であるとすることができる。復号化済み命令は、復号化後命令プロセッサロジック１０７に提供できる。
【００３９】
復号化後命令プロセッサロジックは、エミュレーションモードアウェア命令プロセッサロジック１２０の実施形態を含む。示されているとおり、エミュレーションモードアウェア命令プロセッサロジックは、エミュレーションモード１１８と結合されるか、またはその他の方法でそれを認識できる。いくつかの実施形態においては、エミュレーションモードアウェア命令プロセッサロジックが、プロセッサがエミュレーションモードにあるときにはプロセッサがエミュレーションモードにないときとは少なくともいくつかの方法において異なって命令１１４の復号化済みバージョンの少なくともいくつかを処理すべく動作可能であるとすることができる。処理が異なるものとなり得る多様な異なる方法が存在する。いくつかの実施形態においては、エミュレーションモードにあるときにはエミュレーションモードにないときと比較して誤りまたはエラー処理を異なって実施できる。他の実施形態においては、エミュレーションモードにあるとき、例えば安全、特権、またはその他の形のアクセス制御付きのリソースおよび／または情報等の特定タイプのリソースおよび／または情報へのアクセスを、エミュレーションモードにないときとは異なって処理できる。例えば、エミュレーションモードにあるときにはリソースおよび／または情報へのアクセスを許可し、エミュレーションモードにないときには許可しないようにできる。
【００４０】
エミュレーションモードにあるときには復号化後命令プロセッサロジックが記憶位置１２１にアクセスできる。図解されている実施形態においては、記憶位置１２１がオンダイエミュレーションロジック１１７の一部になる。それに代えて、記憶位置をオフダイエミュレーションロジック内に含めること、または一部をオンダイエミュレーションロジック内に、一部をオフダイエミュレーションロジック内に含めることができる。記憶位置は、命令１１４のセットの実行に関連付けされる一時変数、中間結果、および／または実行状態の格納に使用できる。これは、エミュレーションあり命令１０４を有するオリジナルのプログラムの実行状態を保存する必要性を回避する補助となるか、かつ／または命令１１４のセットの処理によってその種の実行状態（例えば、アーキテクチャ上のレジスタ１０８内の内容）が改変されることを防止する補助となり得る。いくつかの実施形態においては、記憶位置１２１がアーキテクチャ上のレジスタをエミュレーションできるが、これは必須ではない。いくつかの実施形態においては、記憶位置１２１の内容が、アプリケーション、オペレーティングシステム、仮想マシンマネージャ、入出力デバイスによるアクセス、割り込み、およびその類から独立、隔離、および／または保護されているとすることができる。命令１１４のセットが完了すると、プロセッサのアーキテクチャ上の状態を更新できる（例えば、結果を記憶位置１２１からレジスタ１０８へ格納できる）。これは、低レイテンシーアクセスを伴って行なうことができる。一般にこれは、エミュレーションあり命令１０４が実際に直接実行された場合に発生したであろうアーキテクチャ上の状態における変化、および／または生じたであろうプロセッサの挙動を近似するか、模倣するか、似せるか、またはその他の形でエミュレーションするために使用できる。
【００４１】
説明の不明瞭化を回避するために、比較的単純なプロセッサ１０１を示し、説明してきた。その他の実施形態においては、プロセッサが、オプションとしてその他の周知の構成要素を含むことができる。プロセッサには、異なる構成要素の組合せおよび構成が文字どおり多数存在し、実施形態がいずれかの特定の組合せまたは構成に限定されることはない。プロセッサは、集積回路あるいは１つまたは複数の半導体ダイまたはチップのセット（例えば、単一のダイまたはチップ、または２またはそれより多くのダイまたはチップを組み込んだパッケージ）を表わしているとすることができる。いくつかの実施形態においては、プロセッサがシステムオンチップ（ＳｏＣ）および／またはチップマルチプロセッサ（ＣＭＰ）を表わすとすることができる。
【００４２】
いくつかのプロセッサは、比較的複雑な動作を用いる。例えば、いくつかの命令は、単一のメモリアクセスのみではなく複数のメモリアクセスを行なう。その例は、メモリからデータ要素のベクトルを集めるベクトルギャザ命令である。他の例として、単一のペアのデータ要素または２つのパックドデータ内の対応するデータ要素のペアの比較に代えて、特定の命令は多くのデータ要素の比較を行なう。その例は、ベクトルコンフリクト命令および文字列処理命令である。１つのアプローチは、その種の複雑な動作をハードウエア内に完全に実装することである。しかしながら、しばしば、必要とされるハードウエアの量が無視できないものとなる傾向を有することがあり、それが製造コスト、ダイのサイズ、およびパワー消費を増加する傾向を有し得る。他のアプローチは、その種の複雑な動作を少なくとも部分的にマイクロコードで実装することである。マイクロコードの使用は、その種の複雑な動作の実装に必要とされるハードウエアの量の低減の補助となるか、かつ／または特定の既存のハードウエアの再使用を可能にする補助となり得る。しかしながら、いくつかのプロセッサはマイクロコードを使用しない（例えば、命令セットの命令の実装にマイクロコードを使用しない）。
【００４３】
いくつかの実施形態においては、１つまたは複数の比較的より単純な命令セットを用いて比較的より複雑な命令をエミュレーションできる。より複雑およびより単純という用語は、絶対的な用語ではなく、互いに関する相対的な用語である。好都合なことにこれは、より複雑な命令の実装に必要とされるハードウエアの量の低減を潜在的に補助すること、および／またはより複雑な命令のエミュレーションに使用される１つまたは複数の命令によって使用された既存のハードウエアの再使用を可能にする補助となることができる。いくつかの実施形態においては、より単純な１つまたは複数の命令を用いたより複雑な命令のエミュレーションを使用して、いくつかの実施形態においてプロセッサがマイクロコードを使用するべく構成されてないことがある場合、および／またはより複雑な命令の実装にマイクロコードを使用するべく構成されてない場合であってさえ、より複雑な命令のマイクロコード類似の実装を提供できる。
【００４４】
図２は、プロセッサ内の命令をエミュレーションする方法２３０の実施形態のブロックフロー図である。いくつかの実施形態においては、図２の動作および／または方法を、図１のプロセッサによって、および／またはそれの中で実施できる。図１のプロセッサについて本明細書に述べられている構成要素、特徴、および特定のオプションの詳細もまた、図２の動作および／または方法にオプションとして適用される。それに代えて、図２の動作および／または方法を、類似の、または完全に異なるプロセッサによって、および／またはそれの中で実施することができる。さらにまた、図１のプロセッサは、図２と類似の、またはそれとは異なる動作および／または方法を実施できる。
【００４５】
この方法は、ブロック２３１において第１の命令を受信することを含む。いくつかの実施形態では、第１の命令を復号器において受信できる。この方法は、ブロック２３２において第１の命令をエミュレーションすることを決定することを含む。いくつかの実施形態においては、復号器が、エミュレーションされるべき命令のための１つまたは複数のオペコードのセットの中に第１の命令のオペコードがあると決定することによって第１の命令をエミュレーションすることを決定できる。この方法は、ブロック２３３において第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットを受信することを含む。いくつかの実施形態では、復号器においてこの命令（１つまたは複数）のセットを、オンダイエミュレーションロジック、またはオフダイエミュレーションロジック、またはこれらの組合せから受信できる。いくつかの実施形態においては、そのセットの命令（１つまたは複数）のそれぞれを第１の命令と同じ命令セットのものとすることができる。この方法は、ブロック２３４において、そのセットの命令から引き出される１つまたは複数の制御信号をエミュレーションモードにあるときにエミュレーションモードにないときとは異なって処理することを含む。
【００４６】
これは、異なる実施形態において異なる方法で行なうことができる。いくつかの実施形態においては、そのセットの命令を処理する間に遭遇した例外条件に、異なる処理を行なうことができる。いくつかの実施形態においては、そのセットの命令の処理が、エミュレーションモードで行なわれていない場合には同一の命令（すなわち、同一オペコードを有する命令）に利用可能でない情報および／またはリソースへのアクセスを可能にできる。
【００４７】
図３は、１つまたは複数の命令（例えば、より単純な命令）のセット３１４を用いて命令（例えば、複雑な命令）３０４をエミュレーションするロジック３０１の実施形態を図解したブロック図である。いくつかの実施形態においては、図３のロジックを図１のプロセッサおよび／またはコンピュータシステム内に含めることができる。それに代えて図３のロジックを類似の、または異なるプロセッサまたはコンピュータシステム内に含めることができる。さらにまた、図１のプロセッサおよび／またはコンピュータシステムは、図３に類似の、または異なるロジックを含むことができる。
【００４８】
エミュレーションされるべき命令（例えば、複雑な命令）３０４は、復号化ロジック３０５に提供できる。復号化ロジックは、命令３０４を検出するロジック３１９、例えばエミュレーションされるべき命令のオペコードのセットの中に命令３０４のオペコードがあることを検出するロジックを含むことができる。示されているとおり、いくつかの実施形態においては、プロセッサがマイクロコード３３０を有していないことがある。復号化ロジックは、エミュレーションロジック３１５にエミュレーションモード信号３１６を提供できる。多様な実施形態においては、エミュレーションロジック３１５が、オンダイロジック、オフダイロジック、またはオンダイロジックおよびオフダイロジックの両方を含むことができる。エミュレーションロジックは、エミュレーションモード信号に応答してエミュレーションモード３１８に入ることができる。
【００４９】
エミュレーションロジックはまた、命令（例えば、より複雑な）３０４のエミュレーションに使用できる１つまたは複数の（例えば、より単純な）命令３１４のセットも含む。いくつかの実施形態においては、その１つまたは複数の命令３１４を命令３０４と同じ命令セットのものとすることができる。いくつかの実施形態においては、その１つまたは複数の命令３１４を、エミュレーションモードにないときに復号化されて実行される他の命令とまったく同じとすることができる。（例えば、複雑な）命令３０４をエミュレーションするために、その１つまたは複数の（例えば、より単純な）命令３１４のそれぞれを復号化ロジックに提供できる。復号化ロジックは、命令３１４のそれぞれを１つまたは複数の復号化済み命令３０６として復号化できる。
【００５０】
復号化後命令プロセッサロジック３０７は、命令３１４に対応する復号化済み命令３０６を受信できる。復号化後命令プロセッサロジックは、エミュレーションモードアウェアロジック３２０の実施形態を含むことができる。示されているとおり、いくつかの実施形態においては、エミュレーションモードアウェアロジックは、エミュレーションモード３１８と結合されるか、またはその他の方法でそれを認識できる。いくつかの実施形態においては、エミュレーションモードアウェアロジックが、プロセッサがエミュレーションモード３１８にあるときにはプロセッサがエミュレーションモードにないときとは異なって命令３１４に対応する復号化済み命令３０６を処理すべく動作可能であるとすることができる。いくつかの実施形態においては、エミュレーションモードにあるときにはエミュレーションモードにないときと比較して誤りまたはエラー処理を異なって実施できる。例えばロジック３２０は、図４について後述するオプションの態様を使用できる。他の実施形態においては、エミュレーションモードにあるときにはリソースおよび／または情報へのアクセスが選択的に提供されるが、プロセッサがエミュレーションモードにないときにはそれがなされないようにできる。例えばロジック３２０は、図５について後述するオプションの態様を使用できる。
【００５１】
好都合なことに、いくつかの実施形態においては、より複雑な命令をより単純な命令／動作のセットによって実装できる。好都合なことにこれは、より複雑な命令の実装に必要とされるハードウエアの量の低減を潜在的に補助すること、および／またはより複雑な命令のエミュレーションに使用される１つまたは複数の命令によって使用された既存のハードウエアの再使用を可能にする補助となることができる。いくつかの実施形態においては、より単純な１つまたは複数の命令を用いたより複雑な命令のエミュレーションを使用して、いくつかの実施形態においてプロセッサがマイクロコードを使用するべく構成されてないことがある場合、および／またはより複雑な命令の実装にマイクロコードを使用するべく構成されてない場合であってさえ、より複雑な命令のマイクロコード類似の実装を提供できる。いくつかの実施形態においては、より単純な命令／動作を、より複雑な命令と同じ命令セットのものとすることさえできる。
【００５２】
その種の、より単純な命令を用いたより複雑な命令のエミュレーションは、命令をエミュレーションする理由として考え得るものの単なる１つの例に過ぎない。他の実施形態においては、エミュレーションあり命令を比較的使用頻度の低い（例えば、稀に使用される）命令とし、比較的より頻繁に使用される１つまたは複数の命令を用いてエミュレーションできる。好都合なことにこれは、稀に使用される命令の実装に必要とされるハードウエアの量の低減を潜在的に補助すること、および／または稀に使用される命令のエミュレーションに使用される１つまたは複数の命令によって使用された既存のハードウエアの再使用を可能にする補助となることができる。さら他の実施形態においては、エミュレーションあり命令を、より古い、および／または陳腐化した命令とすること、および／または非推奨のプロセス中のものとすること、および１つまたは複数の他の命令を用いてエミュレーションすることができる。好都合なことにエミュレーションは、非推奨の命令がそれにもかかわらず実行されることを可能にし、それによってソフトウエアに後方互換性を提供する補助となる一方、同時に、非推奨の命令の実装に必要とされるハードウエアの量の低減を潜在的に補助し、かつ／または非推奨の命令のエミュレーションに使用される１つまたは複数の命令によって使用された既存のハードウエアの再使用を可能にする補助となることができる。この開示から恩典を受ける当業者には、本明細書に開示されているエミュレーションのさらに他の用途が明らかになるであろう。
【００５３】
図４は、エミュレーションモードの場合にはエミュレーションモードでない場合と比較して異なる例外条件の処理をプロセッサに可能にするロジック４０１の実施形態を図解したブロック図である。いくつかの実施形態においては、図４のロジックを、図１のプロセッサおよび／またはコンピュータシステム内および／または図３のロジック内に含めることができる。それに代えて図４のロジックを類似の、または異なるプロセッサまたはコンピュータシステム内に含めることができる。さらにまた、図１のプロセッサおよび／またはコンピュータシステムおよび／または図３のロジックは、図４に類似の、または異なるロジックを含むことができる。
【００５４】
プロセッサがエミュレーションモード４１８にないとき、所定の命令（例えば、所定のオペコードを有する命令）の第１のインスタンス４０３−１が復号化ロジック４０５に提供される。プロセッサがエミュレーションモード４１８で動作しているとき、同じ所定の命令（例えば、同じ所定のオペコードを有する他の命令）の第２のインスタンス４０３−２が復号化ロジックに提供される。その所定の命令の第２のインスタンス４０３−２は、復号器のエミュレーションあり命令の受信に応答して、エミュレーションあり命令のエミュレーションに使用される１つまたは複数の命令４１４のセットから提供できる。その命令セットは、オンダイ、オフダイ、または一部をオンダイおよび一部をオフダイとすることができるエミュレーションロジック４１５に含まれるとすることができる。エミュレーションロジック４１５は、エミュレーションロジックについて本明細書のいずれかの箇所で述べているオプションの特性の任意のものを有することができる。復号化ロジックは、所定の命令の第１のインスタンス４０３−１および第２のインスタンス４０３−２のそれぞれのための１つまたは複数の復号化済み命令セット（例えば、まったく等しいセット）を提供できる。
【００５５】
復号化後命令処理ロジック４０７は、復号化済み命令（１つまたは複数）４０６を受信できる。復号化後命令処理ロジックは、エミュレーションモードアウェア例外条件ハンドラロジック４２０を含む。エミュレーションモードアウェア例外条件ハンドラロジックは、エミュレーションモードアウェアな方法で例外条件の取り扱い／処理を行なうべく動作できる。本明細書で使用される場合、用語「例外条件」は、広く、命令の処理の間に生じ得る多様な異なるタイプの例外条件を言う。その種の例外条件の例は、限定ではないが、例外、割り込み、誤り、トラップ、およびこれらの類を含む。しばしばこの分野においては、例外、割り込み、誤り、およびトラップという用語が種々の異なる形で使用される。用語「例外」は、特権違反、特権例外、ページフォルト、メモリ保護誤り、ゼロ除算、不正オペコードの実行の試み、およびその他のこの種の例外条件に応答するハンドラルーチンへの自動的に生成される制御の移行を指して、おそらくはより一般的に使用される。
【００５６】
いくつかの実施形態においては、プロセッサがエミュレーションモード４１８になく、所定の命令の第１のインスタンス４０３−１が処理されているときに特権違反、ページフォルト、メモリ保護誤り、ゼロ除算、不正オペコードの実行の試み、またはその他の例外条件が発生すると、プロセッサが、実質的に従来的な例外条件の処理を行なうことができる。例えば、いくつかの実施形態においては、直接４４０で例外条件が受け取られ、例外条件ハンドラルーチン４４１へ制御が移される。一般に、例外条件ハンドラルーチンは、オペレーティングシステム、仮想マシンモニタ、またはその他の特権ソフトウエアの一部とすることができる。その種のハンドラルーチンの例は、限定ではないが、ページフォルトハンドラ、エラーハンドラ、割り込みハンドラ、およびこれらの類を含む。
【００５７】
これに対し、いくつかの実施形態においては、プロセッサがエミュレーションモード４１８にあり、所定の命令の第２のインスタンス４０３−２が処理されているときに特権違反、ページフォルト、メモリ保護誤り、ゼロ除算、不正オペコードの実行の試み、またはその他の例外条件が発生すると、プロセッサが、実質的に非従来的な例外条件の処理を行なうことができる。例えば、いくつかの実施形態においては、例外条件が直接受け取られない。いくつかの実施形態においては、ロジック４２０が、例外条件の結果としてもたらされる例外条件ハンドラルーチンへの自動的な制御の移行を抑制するメカニズムを含むことができる。制御は、エミュレーションプログラムから例外条件ハンドラルーチン４４１へ直接移されなくてもよい。むしろ、いくつかの実施形態においては、エミュレーションモードアウェア例外条件ハンドラロジック４２０が、例外条件ハンドラ４４１への制御の移行を一時的に抑制し、４４２で間接的に例外条件をレポートする。いくつかの実施形態においては、エミュレーションモードアウェア例外条件ハンドラロジック４２０が、１つまたは複数のエミュレーション伝達レジスタ（１つまたは複数）４４３を通じて例外条件を間接的にレポートできる。この１つまたは複数の伝達レジスタは、エミュレーションロジックとエミュレーションされているオリジナルの命令を有するプログラムの間における情報の伝達に使用できる。
【００５８】
いくつかの実施形態においては、エミュレーションモード４１８にあるときに発生する例外条件に応答して、エミュレーションモードアウェア例外条件ハンドラロジック４２０が、その例外条件のインジケータを例外条件またはエラーステータスフラグ（１つまたは複数）、フィールド、またはレジスタ４４４内に格納できる。例えば、単一ビットまたはフラグが、例外条件が発生したことを示す第１の値（例えば、バイナリの１にセットされる）を有すること、または例外条件が発生していないことを示す第２の値（例えば、バイナリのゼロにクリアされる）を有することができる。いくつかの実施形態においては、エミュレーションモード４１８にあるときに発生する例外条件に応答して、エミュレーションモードアウェア例外条件ハンドラロジック４２０が、その例外条件のためのエラーコードをエラーコードフィールドまたはレジスタ４４５内に格納できる。エラーコードは、例えば、エラーのタイプおよび例外条件の性質を伝える補助となるオプションの追加の詳細といったエラーについての追加の情報を提供できる。代替として、伝達レジスタの使用に代えて、その他の形で情報を通知または提供できる（例えば、メモリ内への格納、電気信号を通じたレポート等）。
【００５９】
いくつかの実施形態においては、エミュレーションモードアウェア例外条件ハンドラロジック４２０が、エミュレーションされている命令（すなわち、復号化ロジック４０５に送られる第２のインスタンス４０３−２を生じさせた命令）のアドレス（例えば、命令ポインタ）のインジケータも提供できる。例えば、いくつかの実施形態においては、エミュレーションされている命令のアドレス４４６をスタック４４７のトップに格納できる。エミュレーションされている所定の命令のアドレスを、その所定の命令のエミュレーションに使用されている命令の１つに代えてスタックに格納することは、例外ハンドラからのリターンが、エミュレーションされている命令のエミュレーションに使用されている命令の１つへ戻ることに代えて、エミュレーションされている命令へ戻ることを生じさせることができる。それに代えて例外ハンドラからのリターンが、その命令のエミュレーションに使用されている命令の１つへ戻った場合には、それが問題を生じさせる可能性がある。例えば、ソフトウエア（例えば、アプリケーション、オペレーティングシステム等）は、その所定の命令のエミュレーションに使用されている命令を承知していないことがあり、関連付けされたアドレスを認識できないことがある。オペレーティングシステムは、未知の、不正な、リスクのある、または許可されていない場所へ制御フローが移されると理解することがあり、潜在的に移行の防止を試みることがある。
【００６０】
いくつかの実施形態においては、命令４１４のセットがエラーステータス４４４および／またはエラーコード４４５を監視できる。例えば、いくつかの実施形態においては、命令４１４がエラーステータス４４４およびエラーコード４４５をエミュレーション伝達レジスタ４４３から読み出し、例外条件を聞きつけ、例外条件について学習できる。エラーステータス４４４が例外条件を示すときに、いくつかの実施形態においては、命令４１４のセットが例外条件４４９を取ることができる。例えば、命令４１４のうちの１つまたは複数が実行されてエラーステータスをチェックし、エラーが示される場合には、例外条件ハンドラへ制御を移すことができる。いくつかの実施形態においては、これが例外条件ハンドラ４４１に制御を移す命令４１４のセットを含むことができる。いくつかの実施形態においては、例外条件についての情報（例えば、エラーコード４４５）を例外条件ハンドラ４４１に提供できる。いくつかの実施形態においては、エミュレーションあり命令のアドレス４４６を例外条件ハンドラ４４１に提供することもでき、かつ／またはスタックのトップに少なくとも保存することができる。エミュレーションあり命令のアドレス４４６は、例外条件の処理からのリターン時に例外条件ハンドラ４４１によって使用できる。好都合なことに、エミュレーションされている命令のアドレスをスタック上に格納することによって、オペレーティングシステムまたはその他のエラーハンドラルーチンが、エラーを生じさせたものはエミュレーションされている命令であると見なすことができる。
【００６１】
いくつかの実施形態においては、エミュレーションロジックが、命令内のメモリアクセスが正しく働くか否か、または結果としてもたらされ得る例外条件のタイプをテストし、レポートするロジックを含むことができる。例えば、特殊な命令を含めて、エミュレーションされるアクセス権とともにメモリアドレスをテストし、そのメモリアドレスが有効か否か（例えば、ページが存在するか否か）、およびプログラムがそのメモリ位置の読み出しおよび／または修正を行なうための充分なアクセス権を有しているか否かを調べることができる。テストが失敗した場合にエミュレーションロジックは、エミュレーションされている命令が例外ハンドラに対して直接制御を渡したかのように、適切な割り込みハンドラに制御をリターンアドレスとともに渡すことができる。他の例としては、状態マシンが、メモリ動作が有効か否かを示す条件付きメモリトランザクションを実施できる。これは、結果として例外がもたらされないことを前提としてメモリ動作を実施できるときの決定に使用できる。これは、例外を伴うことなく安全に読み出すことができる命令情報の文字列または命令ストリームのバイト数の決定にも使用できる。例えば、これを使用して命令長を読み取ることができるか否か、または命令長の一部がページフォルトを生じさせるか否かをテストし、決定できる。エミュレーションロジックは、複数のページにわたる命令および／またはページがメモリ内にないときを扱うロジックを含むことができる。
【００６２】
いくつかの実施形態においては、エミュレーションロジックが、中間ポイントにおいてエミュレーションの実行が停止し、その後再開するように中間実行割り込みステータスを提供するロジックを含むことができる。これは、長いデュレーションまたは実行時間を伴う命令のエミュレーション時に特に好都合となり得る。いくつかの実施形態においては、特定タイプの命令（例えば、ムーブストリング命令、ギャザ命令、およびその他の長い動作を伴う命令）のエミュレーションに使用される命令セットが、エミュレーションされている命令を有するソフトウエアの実行状態を更新して、現在の進捗度を反映させることができる。例えば、中間ポイントにおいて動作の割り込みが行なわれて、エミュレーションに使用される命令セットが例外条件ハンドラによって保存されたマシン状態内（例えば、プロセッサステータスレジスタ内）のフラグまたはステータスビットをセットすることができ、その結果、リターン時に、中間状態から実行を再開していることを決定するべくエミュレーションコードによるフラグまたはステータスビットのテストを可能にできる。フラグまたはステータスビットは、割り込みの生じた実行を示すことができる。この方法により、例外条件が処理された後の例外条件ハンドラからのリターン時に、プログラムは、それが中断されたときの中間の進捗度において実行を再開できる。いくつかの場合においては、割り込みの後に中間状態から実行を再開できるように、命令（例えば、ムーブストリング命令）が動作の中間状態を反映するべくレジスタを修正できる。
【００６３】
図５は、エミュレーションモードの場合にはエミュレーションモードでない場合と比較して異なるリソース（１つまたは複数）および／または情報へのアクセスをプロセッサに可能にするロジック５０１の実施形態を図解したブロック図である。いくつかの実施形態においては、図５のロジックを、図１のプロセッサおよび／またはコンピュータシステム内および／または図３のロジック内に含めることができる。それに代えて図５のロジックを類似の、または異なるプロセッサまたはコンピュータシステム内に含めることができる。さらにまた、図１のプロセッサおよび／またはコンピュータシステムおよび／または図３のロジックは、図５に類似の、または異なるロジックを含むことができる。
【００６４】
プロセッサがエミュレーションモード５１８にないとき、所定の命令（例えば、所定のオペコードを有する命令）の第１のインスタンス５０３−１が復号化ロジック５０５に提供される。プロセッサがエミュレーションモード５１８で動作しているとき、同じ所定の命令（例えば、同じ所定のオペコードを有する他の命令）の第２のインスタンス５０３−２が復号化ロジックに提供される。その所定の命令の第２のインスタンス５０３−２は、復号器のエミュレーションあり命令の受信に応答して、エミュレーションあり命令のエミュレーションに使用される１つまたは複数の命令５１４のセットから提供できる。その命令セットは、オンダイ、オフダイ、または一部をオンダイおよび一部をオフダイとすることができるエミュレーションロジック５１５に含まれるとすることができる。エミュレーションロジック５１５は、エミュレーションロジックについて本明細書のいずれかの箇所で述べているオプションの特性の任意のものを有することができる。
【００６５】
復号化後命令プロセッサロジック５０７は、第２のインスタンス５０３−２に対応する復号化済み命令（１つまたは複数）５０６を受信できる。復号化後命令プロセッサロジックは、エミュレーションモードアウェアアクセス制御ロジック５２０を含むことができる。エミュレーションモードアウェアアクセス制御ロジックは、エミュレーションモードアウェアな方法で１つまたは複数のリソースおよび／または情報５５０へのアクセスを制御するべく動作できる。いくつかの実施形態においては、プロセッサがエミュレーションモードで動作していないとき、復号化後命令プロセッサロジック５０７が、リソース（１つまたは複数）および／または情報５５０への実質的に従来的なアクセスを伴って所定の命令の第１のインスタンス５０３−１を処理できる。示されているとおり、いくつかの実施形態においては、エミュレーションモードになく、その所定の命令の第１のインスタンス５０３−１を処理するとき、リソース（１つまたは複数）および／または情報５５０へのアクセスを防止５５１できる。エミュレーションモードにないときのリソース（１つまたは複数）および／または情報へのアクセスを防止することは、所定の命令が、概してそれらのリソース（１つまたは複数）および／または情報へのアクセスを必要とせず、また必要ベースでのみリソース（１つまたは複数）および／または情報の提供が望まれることから、またはその他の理由のために、例えば情報および／またはリソース（１つまたは複数）のセキュリティの保護等の可能性のある多様な理由のいずれかにとって適切であるとし得る。
【００６６】
これに対して、いくつかの実施形態においては、エミュレーションモード５１８での動作時に所定の命令の第２のインスタンス５０３−２が処理されているとき、復号化後命令プロセッサロジックが、リソース（１つまたは複数）および／または情報５５０への実質的に非従来的なアクセスを（例えば、非エミュレーションモードにあるときとは異なる方法で）使用できる。例えば、図解の実施形態に示されているとおり、リソース（１つまたは複数）および／または情報５５０へのアクセスは、エミュレーションモード５１８にあって、所定の命令の第２のインスタンス５０３−２を処理するときに許可５５２されるようにできる。例として述べるが、エミュレーションモード５１８は、ロジック５０７および／またはロジック５２０が、エミュレーションモードにあるときにその所定の命令のための情報および／またはリソース（１つまたは複数）への選択的なアクセスを可能にする特殊なハードウエア状態を有することを許可できる。例えば、１つまたは複数のアクセス特権ビットを提供し、エミュレーションモードにあるときに状態マシンによる情報への選択的なアクセスを可能にするべく構成できる。
【００６７】
多様な異なるタイプの情報および／またはリソース（１つまたは複数）５５０が企図される。適切なリソース（１つまたは複数）および／または情報の例は、限定ではないが、セキュリティ関連のリソース（１つまたは複数）および／または情報（例えば、セキュリティロジック）、暗号化および／または解読関連のリソース（１つまたは複数）および／または情報（例えば、暗号化ロジックおよび／または解読ロジック）、乱数発生器リソース（１つまたは複数）および／または情報（例えば、乱数発生器ロジック）、オペレーティングシステムおよび／または仮想マシンモニタに対応する特権またはリングレベルのために確保されているリソース（１つまたは複数）および／または情報、およびこれらの類を含む。
【００６８】
適切なリソース（１つまたは複数）および／または情報の他の例は、限定ではないが、復号化後命令プロセッサロジック５０７を有する物理プロセッサまたはロジックプロセッサとは異なる物理プロセッサまたはロジックプロセッサ（例えば、コア、ハードウエアスレッド、スレッドコンテキスト等）内のリソース（１つまたは複数）および／または情報を含む。これらの異なる物理またはロジックプロセッサは、同一または異なるソケット内にあるとすることができる。例として述べるが、エミュレーションモードにあるときにエミュレーションモードアウェア制御ロジック５２０は、エミュレーションモードにないときには復号化後命令プロセッサロジック５０７に利用可能とならない他のソケットの他のコアの情報および／またはリソース（１つまたは複数）へのアクセス（例えば、コアのステータスのクエリ）が可能になることがある。
【００６９】
好都合なことに、エミュレーションモードアウェアアクセス制御ロジック５２０は、エミュレーションモードにないときには命令セットの同じ命令に通常は利用可能とならないリソース（１つまたは複数）および／または情報へのアクセスを、命令５１４の少なくともいくつかがエミュレーションモードにあるときに選択的に有することを可能にする補助となり得る。それにもかかわらずセキュリティは、エミュレーションロジックをオンダイとするか、かつ／またはメモリの保護された部分内とすることができるので維持できる。
【００７０】
いくつかの実施形態においては、いくつかの実行レベル、例えばセキュリティ実行状態が、その種のエミュレーションを使用してそれらのリソース（１つまたは複数）および／または情報にアクセスすることを禁止できる。例えば、エミュレーションされたオペコードの使用がすべての実行状態に許可されなくてもよい。特殊なセキュリティ実行状態は、その種の割り込みまたはよりローレベルの実行が許可されると証明可能に安全でないことがある。それに代えて、その種の実行レベルまたはセキュリティ実行状態が類似のアクセスを必要とする場合に、それらは、エミュレーションソフトウエアに利用可能なハードウエアプリミティブを使用することによって代わりにそれを実装できる。
【００７１】
いくつかの実施形態においては、命令エミュレーションを、命令の所定のオペコードのための異なる意味の提供を補助するべく使用できる。命令セットのマクロ命令、マシン語命令、およびその他の命令は、しばしばオペレーションコードまたはオペコードを含む。オペコードは、概して、命令に応答して実施されるべき特定の命令および／または動作の指定に使用される命令の一部を表わす。例えば、パックド乗算命令のオペコードは、パックド加算命令のオペコードと異なるものとすることができる。概して言えば、オペコードは、物理的にグループ化されないのであれば論理的になされる１つまたは複数のフィールド内のいくつかのビットを含む。しばしば、望ましい数の命令／動作を可能にする一方でオペコードを比較的短く、または可能な限り短く保つべく試みることが望ましい。比較的長いオペコードは、復号器のサイズおよび／または複雑性を増加する傾向を有し、また概して、より命令を長くする傾向も有する。オペコード内の固定数のビットの場合には、概して固定数の異なる命令／動作のみが識別できる。この分野には、例えばエスケープコードの使用およびこの類によってオペコードの最大限の活用を試みる多様な技が存在する。それにもかかわらず、オペコードを用いて一意的に識別可能な命令の数は、概して、しばしば望まれるより限定される。概して言えば、最終的にいずれかのポイントで利用可能なオペコードをがなくなることを伴わずに、プロセッサのオペコード空間に新しい命令を追加し続けることは不可能である。
【００７２】
作業負荷は時間とともに変化する。同様に、望ましい命令および望ましい命令機能も時間とともに変化する。新しい命令機能は、一般に、進行基準でプロセッサに追加される。同様に、いくつかの命令／動作は、時間とともに比較的あまり有用でなくなるか、かつ／またはあまり頻繁に使用されなくなるか、かつ／またはあまり重要でなくなる。いくつかの場合においては、命令／動作が有する有用性または重要性が充分に限られるとき、それらを非推奨とすることができる。非推奨は、この分野において、構成要素、特徴、特性、または実施に適用されるステータスを指して、しばしば、それが破棄されるかまたは取って代わられる過程にあること、および／または将来においては利用できないか、またはサポートされないことから、概してそれを避けるべきであることを示すために一般に使用されている用語である。
【００７３】
一般に、その種の命令／動作は、一時的な後方互換性（例えば、既存の、またはレガシーコードの継続的な実行を可能にする）の提供を補助するために、直ちに削除される代わりに非推奨とされる。これは、コードが取って代わる命令／動作に適合する時間を与えること、および／または既存の、またはレガシーコードが段階的に廃止される時間を与えることができる。しばしば、命令セットからの命令／動作を非推奨にすることは、古いプログラムを充分に排除することが可能になるまで長時間、例えば数十年ではないとしても多くの年数を必要とする。従来的に、非推奨の命令／動作のオペコードの値は、その種の長い時間期間が経過するまで、異なる命令／動作のために取り戻すこと、または再使用することが可能でない。そのようにしなければ、レガシーソフトウエアを実行したとき、意図された非推奨の動作ではなく、そのオペコード値を有する命令が、取って代わる動作をプロセッサに実施させる可能性があり、誤った結果を生じさせる可能性がある。
【００７４】
いくつかの実施形態においては、命令エミュレーションを、命令の所定のオペコードのための異なる意味の提供を補助するべく使用できる。いくつかの実施形態においては、命令の所定のオペコードが異なる意味に解釈されることがある。いくつかの実施形態においては、所定のオペコードのために複数のオペコードの定義がサポートされていることがある。例えば、所定のオペコードを、その命令を有するソフトウエアプログラムが意図する意味を用いて解釈できる。例として述べるが、いくつかの実施形態においては、より古い、またはレガシーソフトウエアプログラムが、所定のオペコードを伴う命令が、より古い、レガシーの、または非推奨の意味を有することを示し、より新しいソフトウエアプログラムが、その所定のオペコードを伴う命令がより新しい意味を有することを示すことができる。いくつかの実施形態においては、より古い、または非推奨の意味がエミュレーションされ、より新しい意味が制御信号に復号化され、プロセッサのパイプラインで直接実行されるようにできる。好都合なことに、いくつかの実施形態においては、このことが、より古いプログラムが非推奨のオペコードを伴って走ることを可能にする一方で、その非推奨のオペコードが異なる意味を伴うより新しいプログラムのために使用されて性能の向上を補助することを可能にする後方互換性を提供しつつ、非推奨とされているオペコードのより早い取り戻しおよび再使用を可能にする補助となり得る。
【００７５】
図６は、プロセッサ内および／またはそれによって実施される方法６６０の実施形態のブロックフロー図である。いくつかの実施形態においては、図６の動作および／または方法を、図１のプロセッサおよび／または図３もしくは図７のロジックによって、および／またはそれの中で実施できる。プロセッサおよびロジックについて本明細書に述べられている構成要素、特徴、および特定のオプションの詳細もまた、図６の動作および／または方法にオプションとして適用される。それに代えて、図６の動作および／または方法を、類似の、または完全に異なるプロセッサまたはロジックによって、および／またはそれの中で実施することができる。さらにまた、図１のプロセッサおよび／または図３もしくは図７のロジックは、図６に類似の、または異なる動作および／または方法を実施できる。
【００７６】
この方法は、ブロック６６１において、所定のオペコードを有する第１の命令を受信することを含む。いくつかの実施形態では、第１の命令を復号器において受信できる。ブロック６６２においては、その所定のオペコードが第１の意味または第２の意味を有するか否かの決定を行なうことができる。いくつかの実施形態においては、第１の意味を第１のオペコード定義とし、第２の意味をそれとは異なる第２のオペコード定義とすることができる。以下においてさらに説明するとおり、いくつかの実施形態においては、これが、復号器によるインジケータ、例えば、フラグ、ステータスレジスタ、またはその他のオンダイ記憶位置の読み出し、および所定のオペコードが第１の意味または第２の意味を有するか否かのチェックを伴うことがある。以下においてさらに説明するとおり、いくつかの実施形態においては、プロセッサによって実行されるソフトウエアのロード時にソフトウエア（例えば、オペレーティングシステムモジュールのプログラムローダモジュール）が、フラグ、ステータスレジスタ、またはその他のオンダイ記憶位置にそのインジケータを格納できる。例として述べるが、ソフトウエアは、所定のオペコードが第１の意味または第２の意味を有することをソフトウエアが期待または指定するか否かを示すメタデータ（例えば、オブジェクトモジュールフォーマット）を含むことができる。
【００７７】
再度図６を参照すると、ブロック６６２における決定が、その所定のオペコードは第１の意味を有するというものであれば、この方法は、ブロック６６３に進むことができる。ブロック６６３においては、第１の命令を１つまたは複数のマイクロ命令、マイクロオペレーション、またはその他のよりローレベルの命令または制御信号に復号化できる。いくつかの実施形態においては、復号器が、これらの命令（１つまたは複数）または制御信号（１つまたは複数）を復号化後命令プロセッサロジック（例えば、実行ユニット等）に出力できる。復号化後命令プロセッサロジックは、これらの命令を、通常、エミュレーションが使用される場合よりはるかに高速に処理できる。いくつかの実施形態においては、非推奨でないオペコードの意味、比較的より新しいオペコードの意味、比較的より頻繁に使用されるオペコードの意味、より強く性能に影響するオペコードの意味、またはこれらの類のために第１の意味を使用できる。
【００７８】
その逆に、ブロック６６２における決定が、その所定のオペコードは第２の意味を有するというものであれば、この方法はブロック６６４に進むことができる。ブロック６６４においては、第１の命令のエミュレーションを誘導できる。例えば、復号器がエミュレーションロジックに、エミュレーショントラップを提供すること、またはその他の形でエミュレーションモードを通知することができる。その後に続いて、第２の意味を有するオペコードとともに第１の命令のエミュレーションに使用されるエミュレーションロジックの１つまたは複数の命令からなるセットを復号器に提供し、エミュレーションモードで処理させることができる。これは、実質的に本明細書のいずれかの箇所で述べたとおりに行なうことができる。いくつかの実施形態においては、非推奨のオペコードの意味、非推奨になる過程にあるか非推奨になる直前のオペコードの意味、比較的より古いオペコードの意味、あまり頻繁に使用されないオペコードの意味、あまり強く性能に影響しないオペコードの意味、またはこれらの類のために第２の意味を使用できる。
【００７９】
図７は、所定のオペコードが異なる意味を有することを可能にするロジック７０１の実施形態を図解したブロック図である。いくつかの実施形態においては、図７のロジックを、図１のプロセッサおよび／またはコンピュータシステム内および／または図３のロジック内に含めることができる。それに代えて図７のロジックを類似の、または異なるプロセッサまたはコンピュータシステム内に含めることができる。さらにまた、図１のプロセッサおよび／またはコンピュータシステムおよび／または図３のロジックは、図７に類似の、または異なるロジックを含むことができる。
【００８０】
メモリ７１０は、第１のソフトウエアモジュール７１１−１、第２のソフトウエアモジュール７１１−２、およびプログラムローダモジュール７７０を有するオペレーティングシステムモジュール７９７を含む。いくつかの実施形態においては、第１のソフトウエアモジュールが、所定のオペコードについて第１の意味の使用を示すインジケータ７７２を含み、第２のソフトウエアモジュールが、所定のオペコードについてそれとは異なる第２の意味の使用を示すインジケータ７７３を含む。例として述べるが、第１および第２のソフトウエアモジュールは、それぞれ、これらのインジケータ７７２、７７３を含むオブジェクトモジュールフォーマット、その他のメタデータ、または１つまたは複数のデータ構造を含むことができる。プログラムローダモジュールは、プロセッサ上での実行のために第１のソフトウエアモジュールおよび第２のソフトウエアモジュールをプロセッサにロードするべく動作可能であるとし得る。示されているとおり、いくつかの実施形態においては、プログラムローダモジュールが、特定のソフトウエアモジュールによって示される所定のオペコードの意味をプロセッサ状態としてプロセッサ上にロードするモジュール７７１を含むことができる。いくつかの実施形態においては、モジュール７７１が、所定のオペコードのために第１または第２の意味を使用するか否かを示すインジケータ７７５としてオンダイ記憶位置７７４に、第１のソフトウエアモジュールのロード時にインジケータ７７２をロードするか、第２のソフトウエアモジュールのロード時にインジケータ７７３をロードするべく動作可能であるとし得る。オンダイ記憶位置は、復号器７０５と結合されているか、またはその他の形でアクセス可能である。
【００８１】
いくつかの実施形態においては、例えば古いソフトウエアモジュールの場合に、そのソフトウエアモジュールが所定のオペコードのために所定の意味を使用するという明示的なインジケータを有していないことがある。例えば、より新しい意味の存在の前にソフトウエアが記述されることがある。いくつかの実施形態においては、モジュール７７１および／またはプログラムローダ７７０が、ソフトウエアモジュールは所定のオペコードの第１または第２の意味を使用する必要があるか否かを推論するべく動作可能であるとすることができる。例えばこれは、プログラム内に埋め込まれた特徴リスト、プログラムのフォーマット、プログラムの古さまたはプログラムの作成された年、またはその他の、メタデータおよび／またはソフトウエアモジュール内のその種の情報から推論できる。例えば、第２のソフトウエアモジュール７１１−２が古いソフトウエアであり、所定のオペコードの第１の意味の導入／定義の前に作成されたものである場合には、プログラムローダモジュールおよび／またはオペレーティングシステムモジュールが、第２のソフトウエアモジュールはその所定のオペコードのために第１の意味ではなく、第２の意味を使用する必要があると推論するべく動作可能であるとすることができる。モジュール７７１は、ソフトウエアの切り換えまたは交換のときに記憶エリア内のインジケータ７７５を切り換えまたは交換するべく動作可能であるとすることができる。
【００８２】
さらに例証するために、第１のソフトウエアモジュール７１１−１から復号器７０５に提供される所定のオペコードを伴う命令の第１のインスタンス７０３−１を考える。第１のソフトウエアモジュールは、所定のオペコードに対して第１の意味を使用することを示すインジケータ７７２を含み、モジュール７７１はそれを記憶位置７７４内に保存しておくことができる。復号器は、記憶位置７７４に結合されて所定のオペコードのために第１または第２の意味を使用するか否かについてのインジケータ７７５をチェックするチェックロジック７７６を含む。チェックロジックは、記憶位置にアクセスするか、またはそれを読み出し、第１のソフトウエアモジュールからの命令の第１のインスタンスの処理時に、所定のオペコードのために第１の意味が使用されるべきであると決定できる。いくつかの実施形態においては、記憶位置７７４が、それぞれが異なるオペコードに対応する複数のインジケータを格納する複数の異なる記憶位置を含むことができる。それに応答して復号器の復号化ロジック７７７が、所定のオペコードの第１の意味を前提として命令を復号化できる。１つまたは複数の復号化済み命令７０６または１つまたは複数のその他の制御信号を、復号器から、それらを処理できる復号化後命令処理ロジック７０７へ提供できる。
【００８３】
同じ所定のオペコードを伴う命令の第２のインスタンス７０３−２を、第２のソフトウエアモジュール７１１−２から復号器７０５へ提供することができる。第２のソフトウエアモジュールは、所定のオペコードに対して第２の意味を使用することを示すインジケータ７７３を含み、モジュール７７１はそれを記憶位置７７４内に保存しておくことができる。チェックロジック７７６は、インジケータ７７５をチェックし、第２のソフトウエアモジュールからの命令の第２のインスタンスの処理時に、所定のオペコードのために第２の意味が使用されるべきであると決定できる。それに応答して、エミュレーション誘導ロジック７７８が、命令の第２のインスタンス７０３−２のエミュレーションを誘導できる。例えば、エミュレーション誘導ロジックは、エミュレーショントラップを行なうか、またはその他の形でエミュレーションモード７１８を通知できる。第２の意味を伴う所定のオペコードを有する命令の第２のインスタンスのエミュレーションに使用される１つまたは複数の命令７１４のセットを、エミュレーションロジック７１５から復号器に提供できる。エミュレーションロジックは、オンダイ、オフダイ、または一部をオンダイおよび一部をオフダイとすることができる。エミュレーションロジック７１５は、エミュレーションロジックについて本明細書のいずれかの箇所で述べているオプションの特性の任意のものを有することができる。
【００８４】
いくつかの実施形態においては、命令（１つまたは複数）７１４は、所定のオペコードを有する命令と同じ命令セットのものとすることができる。いくつかの実施形態においては、復号器が、これらの命令のそれぞれを復号化し、それらを、復号化済み命令７０６として、またはその他の制御信号として復号化後命令処理ロジックに提供できる。いくつかの実施形態においては、復号化後命令処理ロジックが、本明細書のいずれかの箇所で述べているもの（例えば、図１または３〜５のいずれか）に類似または同じとすることができるエミュレーションモードアウェア命令プロセッサロジック７２０を含むことができる。示されているとおり、いくつかの実施形態においては、エミュレーションモードアウェア命令処理ロジックは、エミュレーションモード７１８と結合されるか、またはその他の方法でそれを認識できる。さらにまた、エミュレーションモードアウェア命令処理ロジックは、エミュレーションロジックの記憶位置７２１と結合され、そこからのデータの読み出し、およびそこへの書き込みができる。
【００８５】
いくつかの実施形態においては、ロジック７９６を含めてプロセッサ特徴識別レジスタ７９５を、記憶位置７７４内のインジケータ７７５に基づいて更新することができる。適切なプロセッサ特徴識別レジスタの例に、ＣＰＵＩＤ（ＣＰＵアイデンティフィケーション（ＣＰＵ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ））のために使用されるものがある。ロジック７９６は、記憶位置７７４およびプロセッサ特徴識別レジスタ７９５と結合できる。プロセッサ特徴識別レジスタは、プロセッサの命令セットのプロセッサ特徴識別命令（例えば、ＣＰＵＩＤ命令）により読み出し可能であるとすることができる。ソフトウエアは、プロセッサ特徴識別命令を実行することによってプロセッサ特徴識別レジスタからオペコードの意味のインジケータを読み出すことができる。
【００８６】
いくつかの実施形態においては、特権レベルおよび／またはリングレベルロジック７９４を復号器７０５と結合し、特権レベルおよび／またはリングレベルに基づいて復号器にオペコードの所定の意味の使用を強制するか、またはその他の形で使用させることができる。例えば、第１の意味がより新しい意味であり、第２の意味が非推奨の意味である実施形態においてはこれが有用となり得る。オペレーティングシステムは、通常、ユーザアプリケーションとは異なる特定の特権レベルおよび／またはリングレベルにおいて動作する。さらにまた、オペレーティングシステムは、通常、所定のオペコードのより古い意味ではなく、その所定のオペコードのより新しい意味を、一般にそれらが頻繁に更新されることから使用する。その種の場合においては、特権レベルおよび／またはリングレベルロジック７９４が、オペレーティングシステムのものに対応する特権レベルおよび／またはリングレベルにあるとき所定のオペコードのより新しい意味を復号器に使用させることができる。
【００８７】
説明の簡潔性のため、ここでは、オペコードの２つの異なる意味を代表的に説明している。しかしながら、所定のオペコードのために３またはそれより多くの異なる意味が他の実施様態において使用できることは認識されるであろう。例として述べれば、記憶位置７７４は、複数のその種の異なる意味のいずれが所定のオペコードのために使用されるべきであるかを示す２またはそれより多くのビットを含むことができる。同様にプロセッサ特徴識別レジスタは、その所定のオペコードのための複数のその種の意味を反映できる。
【００８８】
図８は、オペレーティングシステムモジュールによって実施できる方法８８０の実施形態のブロックフロー図である。いくつかの実施形態においては、この方法をプログラムローダモジュールによって実施できる。
【００８９】
この方法は、所定のオペコードを有する第１の命令が、ソフトウエアプログラムからプロセッサによって実行されるときに第１の意味に代えて第２の意味を有するという決定をブロック８８１に含む。これは、異なる実施形態において異なる方法で行なうことができる。いくつかの実施形態においては、ソフトウエアプログラムが、所定のオペコードのために所定の意味を使用することのインジケータを明示的に指定できる。例えば、オペレーティングシステムモジュールがソフトウエアプログラムのメタデータを調べることができる。例えば、いずれの意味を使用するかを示すフラグがオブジェクトモジュールフォーマット内に存在することがある。他の実施形態において、例えばレガシーソフトウエアの場合には、いずれの意味を使用するかを示すインジケータをソフトウエアプログラムが明示的に指定しないことがある。いくつかの実施形態においては、いずれの意味を使用するかを推論するロジックをオペレーティングシステムモジュールが含むことができる。これは、多様な異なる方法で行なうことができる。
【００９０】
いくつかの実施形態においては、これが、ソフトウエアプログラムの特徴リストを調べることを含むことができる。いくつかの場合において、特徴リストは、命令のいずれのバージョンが期待されているかを指定できる。いくつかの実施形態においては、これが、ソフトウエアプログラムの作成日を調べることを含むことができる。特定の日付、例えばより新しい取って代わる意味の命令の日付より古い作成日は、そのソフトウエアプログラムがより古いか、または非推奨の意味を使用することのインジケータであるとして推論できる。いくつかの実施形態においては、これが、ソフトウエアプログラムのフォーマットを調べることを含むことができる。例えば、特定のレベルの前の特定の改訂のプログラムフォーマットを、より古いまたは非推奨の意味の推論に使用できる。いくつかの実施形態においては、これが、特定の意味の使用が既知のソフトウエアプログラムの明示的なリスト（例えば、例外リスト）を調べることを含むことができる。例として述べるが、このリストは、履歴情報に基づいて更新できる（例えば、一方の意味からエラーがもたらされた場合には、他方の意味をリストに追加できる）。これは単なる１つの例に過ぎない。意味を推論するこの他の方法も企図されている。
【００９１】
この方法は、ブロック８８２において、所定のオペコードを有する第１の命令は第１の意味に代えて第２の意味を有するというインジケータをプロセッサの状態に格納することを含む。例えば、オペレーティングシステムモジュールは、本明細書のいずれかの箇所で述べたとおり、復号器に結合された記憶位置のビットを修正できる。
【００９２】
図９は、１つまたは複数の関数、サブルーチン、またはソフトウエアライブラリ９８３のその他の部分のセットであって、それらを使用するソフトウエアに適した所定のオペコードの意味を有するものを選択するべく動作可能な選択モジュール９８５を含むプログラムローダモジュール９７０の実施形態のブロック図である。ソフトウエアライブラリは、概して、多様なソフトウエアモジュールが使用することができるソフトウエアの集合を表わし、サブルーチン、関数、クラス、プロシージャ、スクリプト、構成データ、およびこれらの類の形式の既存のソフトウエアを含むことができる。ソフトウエアモジュールは、多様な機能を含むべく、ライブラリのこれらの多様な部分を使用できる。例として、ソフトウエアモジュールは、多様な数学的関数またはサブルーチンを有する数学ソフトウエアライブラリまたはそれの一部を組み込むことができる。
【００９３】
示されているとおり、いくつかの実施形態においては、ライブラリが、所定のオペコードの第１の意味を使用するライブラリの関数、サブルーチン、またはその他の部分の第１のセットを含むことができる。またライブラリは、その所定のオペコードの異なる第２の意味を使用するライブラリの関数、サブルーチン、またはその他の部分の第２のセットを含むことができる。オプションとして、オペコードの意味が２つより多い場合には、３つまたはそれより多くの異なる意味のそれぞれについて同様にライブラリの異なる部分が存在し得る。いくつかの場合においては、異なる意味を使用する部分が、異なるコード部分となることがある。その他の場合においては、それらの部分を同一コードの異なる部分とすることができ、分岐またはその他の条件付きの移動を使用して第１の意味または第２の意味を使用する部分のいずれかにも適宜移動することができる。
【００９４】
再度図を参照するが、プログラムローダモジュール９７０は、所定のオペコードの第１の意味を使用する第１のソフトウエアモジュール９１１−１、および所定のオペコードの第２の意味を使用する第２のソフトウエアモジュール９１１−２の両方のためにライブラリの部分をロードできる。プログラムローダモジュールは、１つまたは複数の関数、サブルーチン、またはソフトウエアライブラリのその他の部分のセットであって、それらを使用するソフトウエアに適した所定のオペコードの意味を有するものを選択するべく動作可能な選択モジュール９８５を含む。例えば、選択モジュールは、ライブラリの部分であって、それらを使用するソフトウエアと同じ所定のオペコードの意味を有する部分を選択できる。例えば、図に示されているとおり、選択モジュールは、第１のソフトウエアモジュール９１１−１のために、それが所定のオペコードの第１の意味を使用することから、第１のセット９８４−１を選択できる。同様に選択モジュールは、第２のソフトウエアモジュール９１１−２のために、それが所定のオペコードの第２の意味を使用することから、第２のセット９８４−２を選択できる。第１のソフトウエア９１１−１が古いソフトウエアであり、所定のオペコードの第１の意味が非推奨の意味である１つの特定の実施形態においては、選択モジュールが、所定のオペコードのための同じ非推奨の意味を使用するライブラリの部分の第１のセット９８４を選択するべく動作可能であるとし得る。したがって、選択モジュールは、ソフトウエアと一貫しているか、または同じである所定のオペコードの意味を使用するライブラリの部分を選択でき、ライブラリのその部分をソフトウエアは使用する。  例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ
【００９５】
プロセッサコアは、異なる方法で、異なる目的のために、異なるプロセッサ内に実装することができる。例えば、その種のコアの実装には（１）汎用コンピューティングのために意図された汎用インオーダコア、（２）汎用コンピューティングのために意図された高性能汎用アウトオブオーダコア、（３）主としてグラフィックおよび／または科学（スループット）コンピューティングのために意図された専用コアを含めることができる。異なるプロセッサの実装には（１）汎用コンピューティングのために意図された１つまたは複数の汎用インオーダコアおよび／または汎用コンピューティングのために意図された１つまたは複数の汎用アウトオブオーダコアを含むＣＰＵ、および（２）主としてグラフィックおよび／または科学（スループット）のために意図された１つまたは複数の専用コアを含むコプロセッサを含めることができる。その種の異なるプロセッサにより、異なるコンピュータシステムアーキテクチャが実施され得る。それには（１）ＣＰＵとは別のチップ上のコプロセッサ、（２）ＣＰＵと同一パッケージ内の別々のダイ上のコプロセッサ、（３）ＣＰＵと同一のダイ上のコプロセッサ（この場合においては、しばしばその種のコプロセッサが、内蔵型グラフィックおよび／または科学（スループット）ロジック等の専用ロジック、または専用コアと呼ばれる）、および（４）同一ダイ上に前述のＣＰＵ（しばしば、アプリケーションコア（１つまたは複数）またはアプリケーションプロセッサ（１つまたは複数）と呼ばれる）、前述のコプロセッサおよび追加の機能を含むことができるシステムオンチップを含めることができる。次に例示的なコアアーキテクチャを説明し、その後、例示的なプロセッサおよびコンピュータアーキテクチャを説明する。  例示的なコアアーキテクチャ  インオーダおよびアウトオブオーダコアのブロック図
【００９６】
図１０Ａは、本発明の実施形態に係る例示的なインオーダパイプライン、およびレジスタリネーム、アウトオブオーダ発行／実行パイプラインの両方を図解したブロック図である。図１０Ｂは、本発明の実施形態に係るプロセッサ内に含まれるインオーダアーキテクチャコア、および例示的なレジスタリネーム、アウトオブオーダ発行／実行アーキテクチャコアの両方の例示的な実施形態を図解したブロック図である。図１０Ａ−Ｂ内の実線のボックスはインオーダパイプラインおよびインオーダコアを図解し、オプションの破線のボックスの追加は、レジスタリネーム、アウトオブオーダ発行／実行パイプラインおよびコアを図解している。インオーダ態様がアウトオブオーダ態様のサブセットであるとしてアウトオブオーダ態様を説明する。
【００９７】
図１０Ａにおいて、プロセッサパイプライン１０００は、フェッチ段階１００２、長さ復号化段階１００４、復号化段階１００６、割付けステージ１００８、リネーム段階１０１０、スケジューリング（ディスパッチまたは発行としても知られる）段階１０１２、レジスタ読み出し／メモリ読み出し段階１０１４、実行段階１０１６、書き戻し／メモリ書き込み段階１０１８、例外処理段階１０２２、コミット段階１０２４を含む。
【００９８】
図１０Ｂは、実行エンジンユニット１０５０に結合されたフロントエンドユニット１０３０を含み、それら両方がメモリユニット１０７０に結合されるプロセッサコア１０９０を示している。コア１０９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、またはハイブリッドまたは代替コアタイプとすることができる。さらに他のオプションとして、コア１０９０は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィック処理ユニット（ＧＰＧＰＵ）コア、グラフィックコア、またはこれらの類の専用コアとすることができる。
【００９９】
フロントエンドユニット１０３０は分岐予測ユニット１０３２を含み、それが命令キャッシュユニット１０３４に結合され、それが命令翻訳ルックアサイドバッファ（ＴＬＢ）１０３６に結合され、それが命令フェッチユニット１０３８に結合され、それが復号化ユニット１０４０に結合されている。復号化ユニット１０４０（または復号器）は、命令を復号化し、出力として、オリジナルの命令から復号化されるか、またはその他の形でそれらを反映するか、それらから引き出される１つまたは複数のマイクロ動作、マイクロコードの入口ポイント、マイクロ命令、その他の命令、またはその他の制御信号を生成する。復号化ユニット１０４０は、多様な異なるメカニズムを使用して実装できる。適切なメカニズムの例は、限定ではないが、ルックアップテーブル、ハードウエア実装、プログラム可能ロジックアレイ（ＰＬＡ）、マイクロコード読出し専用メモリ（ＲＯＭ）等を含む。一実施形態においては、コア１０９０が、マイクロコードＲＯＭまたはその他の、特定のマクロ命令のためのマイクロコードを格納する媒体を含む（例えば、復号化ユニット１０４０内またはフロントエンドユニット１０３０内）。復号化ユニット１０４０は、実行エンジンユニット１０５０内のリネーム／割付け器ユニット１０５２に結合されている。
【０１００】
実行エンジンユニット１０５０は、リタイアメントユニット１０５４に結合されたリネーム／割付け器ユニット１０５２および１つまたは複数のスケジューラユニット１０５６のセットを含む。スケジューラユニット１０５６（１つまたは複数）は、確保ステーション、中央命令ウインドウ等を含む任意数の異なるスケジューラを表わす。スケジューラユニット１０５６（１つまたは複数）は、物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）に結合される。物物理レジスタファイル（１つまたは複数）ユニット１０５８のそれぞれは、異なるものが１つまたは複数の異なるデータ型、例えばスカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス（例えば、命令ポインタ、すなわち次に実行されるべき命令のアドレス）等を格納する１つまたは複数の物理レジスタファイルを表わす。一実施形態においては、物理レジスタファイル（１つまたは複数）ユニット１０５８が、ベクトルレジスタユニット、書き込みマスクレジスタユニット、およびスカラーレジスタユニットを包含する。これらのレジスタユニットは、アーキテクチャ上のベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供できる。物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）の上には、リタイアメントユニット１０５４が重ねられており、レジスタリネームおよびアウトオブオーダ実行を実装できる多様な方法（例えば、リオーダバッファ（１つまたは複数）およびリタイアメントレジスタファイル（１つまたは複数）の使用、将来ファイル（１つまたは複数）、履歴バッファ（１つまたは複数）、およびリタイアメントレジスタファイル（１つまたは複数）の使用、レジスタマップおよびレジスタのプールの使用）を説明する。リタイアメントユニット１０５４および物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）は、実行クラスタ１０６０（１つまたは複数）に結合される。実行クラスタ１０６０（１つまたは複数）は、１つまたは複数の実行ユニット１０６２のセットおよび１つまたは複数のメモリアクセスユニット１０６４のセットを含む。実行ユニット１０６２は、多様な型のデータ（例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して多様な動作（例えば、シフト、加算、減算、乗算）を行なうことができる。
【０１０１】
いくつかの実施形態は、特定の機能または機能のセットに専用の多数の実行ユニットを含むことができるが、他の実施形態は、すべての機能をすべて行なう１つの実行ユニットまたは複数の実行ユニットだけを含むことができる。スケジューラユニット１０５６（１つまたは複数）、物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）、および実行クラスタ１０６０（１つまたは複数）は、特定の実施形態が特定の型のデータ／動作のために別々のパイプラインを作り出すことから可能性として複数であるとして示されている（例えば、スカラー整数パイプライン、スカラー浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／またはメモリアクセスパイプラインはそれぞれが自身のスケジューラユニット、物理レジスタファイル（１つまたは複数）ユニット、および／または実行クラスタを有し、また別々のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみがメモリアクセスユニット１０６４（１つまたは複数）を有する特定の実施形態が実装される）。これについても理解されるように、別々のパイプラインが使用される場合には、これらのパイプラインのうちの１つまたは複数がアウトオブオーダ発行／実行となり、残りがインオーダとなることがある。
【０１０２】
メモリアクセスユニット１０６４のセットは、レベル２（Ｌ２）キャッシュユニット１０７６に結合されたデータキャッシュユニット１０７４に結合されデータＴＬＢユニット１０７２を含むメモリユニット１０７０に結合される。１つの例示的な実施形態においては、メモリアクセスユニット１０６４が、それぞれがメモリユニット１０７０内のデータＴＬＢユニット１０７２に結合されたロードユニット、格納アドレスユニット、および格納データユニットを含むことができる。命令キャッシュユニット１０３４は、さらにメモリユニット１０７０内のレベル２（Ｌ２）キャッシュユニット１０７６に結合される。Ｌ２キャッシュユニット１０７６は、１つまたは複数の他のレベルのキャッシュに、最終的にはメインメモリに結合される。
【０１０３】
例として述べるが、例示的なレジスタリネーム、アウトオブオーダ発行／実行コアのアーキテクチャは、次のとおりにパイプライン１０００を実装できる。（１）命令フェッチユニット１０３８がフェッチ段階１００２および長さ復号化段階１００４を実施し、（２）復号化ユニット１０４０が復号化段階１００６を実施し、（３）リネーム／割付け器ユニット１０５２が割付けステージ１００８およびリネーム段階１０１０を実施し、（４）スケジューラユニット１０５６（１つまたは複数）がスケジューリング段階１０１２を実施し、（５）物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）およびメモリユニット１０７０がレジスタ読み出し／メモリ読み出し段階１０１４を実施し、実行クラスタ１０６０が実行段階１０１６を実施し、（６）メモリユニット１０７０および物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）が書き戻し／メモリ書き込み段階１０１８を実施し、（７）多様なユニットが例外処理段階１０２２にかかわり合うことがあり、（８）リタイアメントユニット１０５４および物理レジスタファイル（１つまたは複数）ユニット１０５８（１つまたは複数）がコミット段階１０２４を実施する。
【０１０４】
コア１０９０は、本明細書に述べられている命令（１つまたは複数）を含め、１つまたは複数の命令からなるセット（例えば、ｘ８６命令セット（より新しいバージョンに追加されたいくつかの拡張を伴う）、カリフォルニア州サニーベイルのＭＩＰＳテクノロジのＭＩＰＳ命令セット、カリフォルニア州サニーベイルのＡＲＭホーディングスのＡＲＭ命令セット（ＮＥＯＮ等のオプションの追加の拡張を伴う））をサポートできる。一実施形態においては、コア１０９０が、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするロジックを含み、それにより、多くのマルチメディアアプリケーションによって使用される動作がパックドデータを使用して実施されることを可能にする。
【０１０５】
理解されるように、コアは、マルチスレッドをサポートすること（動作またはスレッドの２つまたはそれより多くの並列セットを実行すること）、およびそれを、タイムスライスマルチスレッド、同時マルチスレッド（単一の物理コアが、その物理コアが同時にマルチスレッディングするスレッドのそれぞれのためにロジックコアを提供する）、またはこれらの組合せ（例えば、インテル（Ｉｎｔｅｌ（登録商標））のハイパースレッディング（Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ）テクノロジにおけるようなタイムスライスフェッチおよび復号化およびその後の同時マルチスレッド）を含む多様な方法で行なうことができる。
【０１０６】
レジスタリネームがアウトオブオーダ実行の文脈で述べられているが、レジスタリネームは、インオーダアーキテクチャにおいても使用できることは理解されるべきである。図解されているプロセッサの実施形態は、別々の命令およびデータキャッシュユニット１０３４／１０７４および共有Ｌ２キャッシュユニット１０７６も含んでいるが、代替の実施形態が、命令およびデータ両方のために単一の内部キャッシュ、例えばレベル１（Ｌ１）内部キャッシュを、または複数レベルの内部キャッシュを有し得る。いくつかの実施形態においては、システムが、内部キャッシュ、およびコアおよび／またはプロセッサの外部となる外部キャッシュの組合せを含むことができる。それに代えて、キャッシュのすべてをコアおよび／またはプロセッサの外部とすることができる。  特定の例示的なインオーダコアアーキテクチャ
【０１０７】
図１１Ａ−Ｂは、より具体的な例示のインオーダコアアーキテクチャのブロック図であり、コアは、チップ内のいくつかのロジックブロック（同一タイプおよび／または異なるタイプの他のコアも含む）の１つとなる。これらのロジックブロックは、高帯域相互接続ネットワーク（例えば、リングネットワーク）を通じ、いくつかの固定関数ロジック、メモリ入出力インタフェース、およびその他の必要な入出力ロジックとアプリケーションに応じて通信する。
【０１０８】
図１１Ａは、本発明の実施形態に従ってシングルプロセッサコアを、それのオンダイ相互接続回路網１１０２への接続とともに、およびそれのレベル２（Ｌ２）キャッシュ１１０４のローカルサブセットとともに示したブロック図である。一実施形態においては、命令復号器１１００がパックドデータ命令セット拡張付きのｘ８６命令セットをサポートする。Ｌ１キャッシュ１１０６は、スカラーおよびベクトルユニットへのキャッシュメモリに対する低レイテンシーアクセスを可能にする。一実施形態においては（設計を簡潔にするために）スカラーユニット１１０８およびベクトルユニット１１１０が別々のレジスタセット（それぞれ、スカラーレジスタ１１１２およびベクトルレジスタ１１１４）を使用し、それらの間において転送されるデータがメモリに書き込まれ、その後、レベル１（Ｌ１）キャッシュ１１０６から読み戻されるが、本発明の代替の実施形態は、異なるアプローチ（例えば、単一のレジスタセットを使用するか、または２つのレジスタファイルの間において書き込みおよび読み戻しなしにデータが転送されることを可能にする通信路を含む）を使用できる。
【０１０９】
Ｌ２キャッシュ１１０４のローカルサブセットは、プロセッサコアごとに１つの独立したローカルサブセットに分割されるグローバルＬ２キャッシュの部分である。各プロセッサコアは、それ自身のＬ２キャッシュ１１０４のローカルサブセットへの直接アクセスパスを有する。プロセッサコアによって読み出されたデータは、それのＬ２キャッシュサブセット１１０４内に格納され、それぞれ自身のローカルＬ２キャッシュサブセットにアクセスしている他のプロセッサコアと並行した迅速なアクセスが可能である。プロセッサコアによって書き込まれたデータは、それのＬ２キャッシュサブセット１１０４内に格納され、必要な場合には、他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンスを確保する。リングネットワークは、双方向であり、プロセッサコア、Ｌ２キャッシュ、およびその他のロジックブロック等のエージェントが、チップ内において互いに通信することを可能にする。各リングデータ路は、方向当たり１０１２ビットの幅である。
【０１１０】
図１１Ｂは、本発明の実施形態に係る図１１Ａのプロセッサコアの一部の拡大図である。図１１Ｂは、Ｌ２キャッシュ１１０６のＬ１データキャッシュ１１０６Ａ部分をはじめ、ベクトルユニット１１１０およびベクトルレジスタ１１１４に関してのより詳細を含んでいる。特に、ベクトルユニット１１１０は、整数、単精度浮動小数点、および倍精度浮動小数点命令のうちの１つまたは複数を実行する１６ワイドのベクトル処理ユニット（ＶＰＵ）（１６ワイドＡＬＵ  １１２８参照）である。ＶＰＵは、メモリ入力に対する、スウィズルユニット１１２０を用いたレジスタ入力のスウィズル、数値化ユニット１１２２Ａ−Ｂを用いた数値化、および複製ユニット１１２４を用いたメモリ入力の複製をサポートする。書き込みマスクレジスタ１１２６は、結果のベクトル書き込みの修飾を可能にする。  内蔵型メモリコントローラおよびグラフィックを伴うプロセッサ
【０１１１】
図１２は、本発明の実施形態に係る内蔵型メモリコントローラを有することができ、かつ内蔵型グラフィックを有することができる１より多くの数のコアを有することができるプロセッサ１２００のブロック図である。図１２内の実線のボックスは、シングルコア１２０２Ａ、システムエージェント１２１０、１つまたは複数のバスコントローラユニット１２１６のセットを伴うプロセッサ１２００を図解しており、オプションで追加される破線のボックスは、複数のコア１２０２Ａ〜Ｎ、システムエージェントユニット１２１０内の１つまたは複数の内蔵型メモリコントローラユニット１２１４のセット、および専用ロジック１２０８を伴う代替プロセッサ１２００を図解している。
【０１１２】
したがって、プロセッサ１２００の種々の異なる実装には（１）内蔵型グラフィックおよび／または科学（スループット）ロジック（１つまたは複数のコアを含むことができる）となる専用ロジック１２０８、および１つまたは複数の汎用コア（例えば、汎用インオーダコア、汎用アウトオブオーダコア、これら２つの組合せ）となるコア１２０２Ａ〜Ｎを伴うＣＰＵ、（２）主としてグラフィックおよび／または科学（スループット）のために意図された多数の専用コアとなるコア１２０２Ａ〜Ｎを伴うコプロセッサ、および（３）多数の汎用インオーダコアとなるコア１２０２Ａ〜Ｎを伴うコプロセッサを含めることができる。したがって、プロセッサ１２００は、汎用プロセッサ、コプロセッサ、または、例えばネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ（汎用グラフィック処理ユニット）、高スループット多集積コア（ＭＩＣ）コプロセッサ（３０またはそれを超えるコアを含む）、埋込み型プロセッサ、またはこれらの類の専用プロセッサとすることができる。プロセッサは、１つまたは複数のチップ上に実装できる。プロセッサ１２００は、例えばＢｉＣＭＯＳ、ＣＭＯＳ、またはＮＭＯＳ等の多くのプロセステクノロジのうちのいずれかを使用して１つまたは複数の基板上に実装されるか、かつ／またはそれの一部とすることができる。
【０１１３】
メモリ階層は、コア内の１つまたは複数のレベルのキャッシュ、１つまたは複数の共有キャッシュユニット１２０６のセット、および内蔵型メモリコントローラユニット１２１４のセットに結合された外部メモリ（図示せず）を含む。共有キャッシュユニット１２０６のセットは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、またはその他のレベルのキャッシュ等の１つまたは複数の中レベルキャッシュ、最終レベルのキャッシュ（ＬＬＣ）、および／またはこれらの組合せを含むことができる。一実施形態においては、リングベースの相互接続ユニット１２１２が内蔵型グラフィックロジック１２０８、共有キャッシュユニット１２０６のセット、およびシステムエージェントユニット１２１０／内蔵型メモリコントローラユニット１２１４（１つまたは複数）を相互接続するが、代替の実施形態は、その種のユニットの相互接続のための周知の技術を任意数使用することができる。一実施形態においては、１つまたは複数のキャッシュユニット１２０６とコア１２０２Ａ〜Ｎの間においてコヒーレンスが維持される。
【０１１４】
いくつかの実施形態においては、コア１２０２Ａ〜Ｎのうちの１つまたは複数がマルチスレッドの能力を有する。システムエージェントユニット１２１０は、コア１２０２Ａ〜Ｎを調和させ、動作させる構成要素を含む。システムエージェントユニット１２１０は、例えば、パワー制御ユニット（ＰＣＵ）およびディスプレイユニットを含むことができる。ＰＣＵは、コア１２０２Ａ〜Ｎおよび内蔵型グラフィックロジック１２０８のパワー状態を調整するために必要なロジックおよび構成要素であるとすること、またはそれを含むとすることができる。ディスプレイユニットは、外部的に接続された１つまたは複数のディスプレイを駆動するためのものである。
【０１１５】
コア１２０２Ａ〜Ｎは、アーキテクチャ命令セットという見地から同種または異種とすることができ、言い換えると、コア１２０２Ａ〜Ｎのうちの２つまたはそれより多くが同一命令セットを実行する能力を持つ一方で、その他がその命令セットまたは異なる命令セットのサブセットを実行する能力しか持たないとすることができる。  例示的なコンピュータアーキテクチャ
【０１１６】
図１３〜１６は、例示的なコンピュータアーキテクチャのブロック図である。その他の、ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、工学ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋込み型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および多様なその他の電子デバイスについてこの分野で周知のシステム設計および構成もまた適している。概して言えば、本明細書に開示されているプロセッサおよび／またはその他の実行ロジックを組み込むことができる非常に多様なシステムまたは電子デバイスが一般に適している。
【０１１７】
ここで図１３を参照すると、本発明の一実施形態に係るシステム１３００のブロック図が示されている。システム１３００は、コントローラハブ１３２０に結合された１つまたは複数のプロセッサ１３１０、１３１５を含むことができる。一実施形態においては、コントローラハブ１３２０が、グラフィックメモリコントローラハブ（ＧＭＣＨ）１３９０および入出力ハブ（ＩＯＨ）１３５０（別々のチップ上とすることができる）を含み、ＧＭＣＨ  １３９０は、メモリならびにメモリ１３４０およびコプロセッサ１３４５が結合されるグラフィックコントローラを含み、ＩＯＨ  １３５０は、入力／出力（入出力）デバイス１３６０をＧＭＣＨ  １３９０と結合する。その代替としては、メモリおよびグラフィックコントローラのうちの１つまたは両方を（ここで述べているとおり）プロセッサ内に統合し、メモリ１３４０およびコプロセッサ１３４５をプロセッサ１３１０、およびＩＯＨ  １３５０を伴うシングルチップ内のコントローラハブ１３２０と直接結合する。
【０１１８】
図１３には、追加のプロセッサ１３１５のオプションの性質が破線を用いて示されている。各プロセッサ１３１０、１３１５は、本明細書で述べている処理コアのうちの１つまたは複数を含むこと、および何らかのバージョンのプロセッサ１２００とすることができる。
【０１１９】
メモリ１３４０は、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、またはこれら２つの組合せとすることができる。少なくとも一実施形態については、コントローラハブ１３２０が、プロセッサ（１つまたは複数）１３１０、１３１５と、フロントサイドバス（ＦＳＢ）等のマルチドロップバス、クイックパス相互接続（ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  （ＱＰＩ））等のポイントツーポイントインタフェース、および類似の接続１３９５を介して通信する。
【０１２０】
一実施形態においては、コプロセッサ１３４５が、例えば、高スループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、埋込み型プロセッサ、またはこれらの類の専用プロセッサになる。一実施形態においては、コントローラハブ１３２０が、内蔵型グラフィックアクセラレータを含むことができる。
【０１２１】
アーキテクチャ上の特性、マイクロアーキテクチャ上の特性、温度特性、パワー消費特性およびこれらの類を含む利点の一連のメトリクスの観点から物理的リソース１３１０、１３１５の間には多様な差が存在し得る。
【０１２２】
一実施形態においては、プロセッサ１３１０が、一般的なタイプのデータ処理動作を制御する命令を実行する。命令の中には、コプロセッサ命令を埋め込むことができる。プロセッサ１３１０は、これらのコプロセッサ命令を、アタッチされたコプロセッサ１３４５によって実行されるべきタイプのものであるとして認識する。したがって、プロセッサ１３１０は、コプロセッサバスまたはその他の相互接続上において、それらのコプロセッサ命令（または、コプロセッサ命令を表わす制御信号）をコプロセッサ１３４５に向けて発行する。コプロセッサ（１つまたは複数）１３４５は、それを受け入れ、受信したコプロセッサ命令を実行する。
【０１２３】
次に図１４を参照すると、本発明の実施形態に係るより詳細な第１の例示的なシステム１４００のブロック図が示されている。図１４に示されているとおり、マルチプロセッサシステム１４００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１４５０を介して結合された第１のプロセッサ１４７０および第２のプロセッサ１４８０を含む。プロセッサ１４７０および１４８０のそれぞれは、プロセッサ１２００のいずれかのバージョンとすることができる。本発明の一実施形態においては、プロセッサ１４７０および１４８０がそれぞれプロセッサ１３１０および１３１５になり、コプロセッサ１４３８がコプロセッサ１３４５になる。他の実施形態においては、プロセッサ１４７０および１４８０がそれぞれプロセッサ１３１０およびコプロセッサ１３４５になる。
【０１２４】
プロセッサ１４７０および１４８０は、それぞれが内蔵型メモリコントローラ（ＩＭＣ）ユニット１４７２および１４８２を含むとして示されている。プロセッサ１４７０は、また、それのバスコントローラユニットの一部としてポイントツーポイント（Ｐ−Ｐ）インタフェース１４７６および１４７８を含み、同様に第２のプロセッサ１４８０もＰ−Ｐインタフェース１４８６および１４８８を含む。プロセッサ１４７０、１４８０は、ポイントツーポイント（Ｐ−Ｐ）インタフェース１４５０を介し、Ｐ−Ｐインタフェース回路１４７８、１４８８を使用して情報を交換できる。図１４に示されているとおり、ＩＭＣ  １４７２および１４８２は、プロセッサをそれぞれのメモリに、すなわち、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部とすることができるメモリ１４３２およびメモリ１４３４に結合する。
【０１２５】
プロセッサ１４７０および１４８０は、それぞれ個別のＰ−Ｐインタフェース１４５２、１４５４を介し、ポイントツーポイントインタフェース回路１４７６、１４９４、１４８６、および１４９８を使用してチップセット１４９０と情報を交換できる。チップセット１４９０は、高性能インタフェース１４３９を介してコプロセッサ１４３８と情報を交換できる。一実施形態においては、コプロセッサ１４３８が、例えば、高スループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、埋込み型プロセッサ、またはこれらの類の専用プロセッサになる。
【０１２６】
プロセッサが低パワーモードに置かれている場合にいずれかまたは両方のプロセッサのローカルキャッシュの情報を共有キャッシュ内に格納できるように、共有キャッシュ（図示せず）はいずれかのプロセッサ内または両方のプロセッサの外に、Ｐ−Ｐ相互接続を介してプロセッサと接続されるが、含めることができる。
【０１２７】
チップセット１４９０は、インタフェース１４９６を介して第１のバス１４１６と結合できる。一実施形態においては、第１のバス１４１６がＰＣＩ（ペリフェラルコンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ））バスまたはＰＣＩエクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ）バスまたはその他の第３ジェネレーション入出力相互接続バス等のバスとすることができるが、本発明の範囲がそのように限定されることはない。
【０１２８】
図１４に示されているとおり、第１のバス１４１６には、第１のバス１４１６を第２のバス１４２０に結合するバスブリッジ１４１８とともに多様な入出力デバイス１４１４を結合できる。一実施形態においては、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレータ（例えば、グラフィックアクセラレータまたはデジタル信号処理（ＤＳＰ）ユニット等）、フィールドプログラマブルゲートアレイ、またはその他のプロセッサ等の１つまたは複数の追加のプロセッサ１４１５が第１のバス１４１６に結合される。一実施形態においては、第２のバス１４２０をＬＰＣ（ローピンカウント（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ））バスとすることができる。第２のバス１４２０には、例えば、キーボードおよび／またはマウス１４２２、通信デバイス１４２７、および一実施形態においては命令／コードおよびデータ１４３０を含むことができるディスクドライブまたはその他の大容量記憶デバイス等の記憶ユニット１４２８を含めた多様なデバイスを結合できる。さらに第２のバス１４２０には、オーディオ入出力１４２４を結合できる。なお、この他のアーキテクチャも可能である。例えば、図１４のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバスまたはその他のその種のアーキテクチャを実装できる。
【０１２９】
次に図１５を参照すると、本発明の実施形態に係るより詳細な第２の例示的なシステム１５００のブロック図が示されている。図１４および１５における類似の要素は、類似の参照番号を有しており、図１４の特定の態様は、図１５の他の態様の不明瞭化を回避するために図１５から省略されている。
【０１３０】
図１５は、プロセッサ１４７０および１４８０が、それぞれ、内蔵型メモリおよび入出力制御ロジック（「ＣＬ」）１４７２および１４８２を含むことができることを図解している。ＣＬ  １４７２、１４８２は、内蔵型メモリコントローラユニットを含み、かつ入出力制御ロジックを含む。図１５は、メモリ１４３２、１４３４だけがＣＬ  １４７２、１４８２に結合されるのではなく、入出力デバイス１５１４もまた制御ロジック１４７２、１４８２に結合されることを図解している。レガシー入出力デバイス１５１５は、チップセット１４９０に結合される。
【０１３１】
次に図１６を参照すると、本発明の実施形態に係るＳｏＣ  １６００のブロック図が示されている。図１２に類似の要素は類似の参照番号を有する。また、破線のボックスは、より高度なＳｏＣのオプションの特徴である。図１６において、相互接続ユニット（１つまたは複数）１６０２は、１つまたは複数のコア１２０２Ａ〜Ｎおよび共有キャッシュユニット（１つまたは複数）１２０６のセットを含むアプリケーションプロセッサ１６１０、システムエージェントユニット１２１０、バスコントローラユニット（１つまたは複数）１２１６、内蔵型メモリコントローラユニット（１つまたは複数）１２１４、内蔵型グラフィックロジック、画像処理プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含むことができる１つまたは複数のコプロセッサ１６２０のセット、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１６３０、ダイレクトメモリアクセス（ＤＭＡ）ユニット１６３２、および１つまたは複数の外部ディスプレイに結合するためのディスプレイユニット１６４０に結合される。一実施形態においては、コプロセッサ（１つまたは複数）１６２０が、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、埋込み型プロセッサ、またはこれらの類の専用プロセッサを含む。
【０１３２】
本明細書に開示されているメカニズムの実施形態は、ハードウエア、ソフトウエア、ファームウエア、またはその種の実装アプローチの組合せにおいて実装できる。本発明の実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性および不揮発性メモリおよび／または記憶要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを包含するプログラム可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装できる。
【０１３３】
図１４に図解されているコード１４３０等のプログラムコードを、入力命令に適用して本明細書で述べている機能を実施し、出力情報を生成することができる。出力情報は、周知の態様で１つまたは複数の出力デバイスに適用できる。この出願の目的のために、処理システムは、例えばデジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、またはマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
【０１３４】
処理システムと通信するべくプログラムコードをハイレベルのプロシージャまたはオブジェクト指向プログラミング言語において実装できる。望ましければ、プログラムコードは、アッセンブリまたはマシン語において実装することもできる。実際、本明細書に述べられているメカニズムは、いずれかの特定のプログラミング言語の範囲に限定されない。いずれの場合においても、言語は、コンパイラ型またはインタプリタ型の言語とすることができる。
【０１３５】
少なくとも一実施形態の１つまたは複数の態様は、プロセッサ内の多様なロジックを表わし、マシンによって読み出されたときにそのマシンに、本明細書に述べられている技術を実施するロジックを作らせるマシン可読媒体上に格納された代表的な命令によって実装できる。その種の表現は「ＩＰコア」として知られるが、有体のマシン可読媒体上に格納して多様なカスタマまたは製造設備に供給し、ロジックまたはプロセッサを実際に作成する製造マシン内にロードすることができる。
【０１３６】
その種のマシン可読記憶媒体は、限定ではないが、ハードディスク、その他のタイプのフロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク再書き込み可能（ＣＤ−ＲＷ）を含むディスク、および光磁気ディスク、読出し専用メモリ（ＲＯＭ）およびランダムアクセスメモリ（ＲＡＭ）等の半導体デバイス、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラマブル読出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）等、磁気または光カード、または電子的な命令の格納に適した任意のその他のタイプの媒体等の記憶媒体を含むマシンまたはデバイスによって製造されるかまたは形成される非一時的な物品の有体アレンジメントを含むことができる。
【０１３７】
したがって、本発明の実施形態は、命令が入っているか、または本明細書に述べられている構造、回路、装置、プロセッサ、および／またはシステムの特徴を定義するハードウエア記述言語（ＨＤＬ）等の設計データが入っている非一時的な有体のマシン可読媒体も含む。その種の実施形態はまた、プログラム製品と呼ぶこともできる。  エミュレーション（バイナリ翻訳、コードモーフィング等を含む）
【０１３８】
いくつかの場合においては、命令変換器を使用してソース命令セットからターゲット命令セットへ命令を変換できる。例えば、命令変換器は、コアによって処理されるべき１つまたは複数の他の命令への命令の翻訳（例えば、静的なバイナリ翻訳、動的コンパイルを含む動的なバイナリ翻訳を使用する）、モーフィング、エミュレーション、またはその他の変換を行なうことができる。命令変換器は、ソフトウエア、ハードウエア、ファームウエア、またはこれらの組合せにおいて実装することができる。命令変換器は、プロセッサ上、プロセッサ外、または一部をプロセッサ上および一部をプロセッサ外とすることができる。
【０１３９】
図１７は、本発明の実施形態に係るターゲット命令セット内のバイナリ命令に対してソース命令セット内のバイナリ命令を変換するソフトウエア命令変換器の使用を対比させたブロック図である。図解されている実施形態においては、命令変換器がソフトウエア命令変換器であるが、それに代えて、命令変換器をソフトウエア、ファームウエア、ハードウエア、またはこれらの多様な組合せにおいて実装できる。
【０１４０】
図１７は、少なくとも１つのｘ８６命令セットコアを伴うプロセッサ１７１６によってネイティブ実行できるｘ８６バイナリコード１７０６を生成するｘ８６コンパイラ１７０４を使用してコンパイルできるハイレベル言語１７０２のプログラムを示している。少なくとも１つのｘ８６命令セットコアを伴うプロセッサ１７１６は、少なくとも１つのｘ８６命令セットコアを伴うインテルプロセッサと実質的に等しい結果を達成するために、（１）インテルｘ８６命令セットコアの命令セットの実質的な部分、または（２）少なくとも１つのｘ８６命令セットコアを伴うインテルプロセッサ上において走ることをねらいとするアプリケーションまたはその他のソフトウエアのオブジェクトコードバージョンを互換的に実行するかまたはその他の形で処理することによって、少なくとも１つのｘ８６命令セットコアを伴うインテルプロセッサと実質的に等しい機能を実施可能な任意のプロセッサを表わす。ｘ８６コンパイラ１７０４は、追加のリンケージ処理を伴うか、または伴わずに少なくとも１つのｘ８６命令セットコアを伴うプロセッサ１７１６上において実行可能なｘ８６バイナリコード１７０６（例えば、オブジェクトコード）を生成するべく動作可能なコンパイラを表わす。
【０１４１】
同様に図１７は、代替命令セットコンパイラ１７０８を使用してコンパイルされ、少なくとも１つのｘ８６命令セットコアを伴わないプロセッサ１７１４（例えば、カリフォルニア州サニーベイルのＭＩＰＳテクノロジーズ（ＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ）のＭＩＰＳ命令セットを実行するコアおよび／またはカリフォルニア州サニーベイルのＡＲＭホーディングス（ＡＲＭ  Ｈｏｌｄｉｎｇｓ）のＡＲＭ命令セットを実行するコアを伴うプロセッサ）によってネイティブ実行できる代替命令セットのバイナリコード１７１０を生成することができるハイレベル言語１７０２のプログラムを示している。命令変換器１７１２が使用されてｘ８６バイナリコード１７０６が、ｘ８６命令セットコアを伴わないプロセッサ１７１４によってネイティブ実行できるコードに変換される。この変換後のコードは、代替命令セットのバイナリコード１７１０と同じになりがちではなく、それは、これを行なう能力を有する命令変換器を作成することが困難なことによるが、変換後のコードは、一般的な動作を達成することになり、かつ代替命令セットからの命令から構成される。したがって、命令変換器１７１２は、ソフトウエア、ファームウエア、ハードウエア、またはこれらの組合せを表わし、エミュレーション、シミュレーション、またはその他のプロセスを通じて、ｘ８６命令セットプロセッサまたはコアを有していないプロセッサまたはその他の電子デバイスがｘ８６バイナリコード１７０６を実行することを可能にする。
【０１４２】
他の実施形態においては、ライブラリ自体が、ソフトウエアモジュールに適切なライブラリの部分のセットを選択するロジックを含むことができる。例えば、ライブラリは、プロセッサの特徴ステータスレジスタを読み出してソフトウエアモジュールが所定のオペコードのためにどのような意味を有するかを決定し、その後その部分を選択し、提供することができる。
【０１４３】
図１、４、および５のいずれかについて述べた構成要素、特徴、および詳細は、図２および３のいずれにおいてもオプションとして使用できる。さらにまた、装置のいずれかについて本明細書に述べられている構成要素、特徴、および詳細もまた、本明細書に述べられている方法のうちのいずれかにおいてオプションとして使用でき、実施形態においてはそれを、その種の装置によって、および／またはその種の装置を用いて実施できる。  例示的な実施形態
【０１４４】
以下の例は、さらなる実施形態に関係する。これらの例の中に示されている詳細は、１つまたは複数の実施形態のいずれに使用してもよい。
【０１４５】
例１は、第１の命令を受信し、その第１の命令がエミュレーションされることを決定する復号化ロジックを含むプロセッサである。プロセッサは、また、復号化ロジックに結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックも含む。エミュレーションモードアウェア復号化後命令プロセッサロジックは、第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときにエミュレーションモードにないときとは異なって処理する。
【０１４６】
例２は、先行するいずれかの例のプロセッサを含み、オプションとして、第１の命令は、より多くの動作が実施されることをその第１の命令を伴うことから、そのセットの各命令より複雑であるとする。
【０１４７】
例３は、先行するいずれかの例のプロセッサを含み、オプションとして、プロセッサは、命令セットの任意の命令の実装にマイクロコードを使用しないこととする。
【０１４８】
例４は、先行するいずれかの例のプロセッサを含み、オプションとして、上記の１つまたは複数の命令からなるセットの各命令は、第１の命令と同じ命令セットの命令とする。
【０１４９】
例５は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェア復号化後命令プロセッサロジックは、１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを包含する。
【０１５０】
例６は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェア例外条件ハンドラロジックは、第１の命令のアドレスをスタック内に格納する。
【０１５１】
例７は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェア例外条件ハンドラロジックは、例外条件のインジケータ、およびその例外条件のためのエラーコードをエミュレーションロジックに結合された１つまたは複数のレジスタ内に格納する。
【０１５２】
例８は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェア例外条件ハンドラロジックは、例外条件に応答して例外条件ハンドラに対して制御を直接移すことを回避し、エミュレーションロジックの１つまたは複数の命令が例外条件ハンドラに制御を移す。
【０１５３】
例９は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェア復号化後命令プロセッサロジックは、エミュレーションモードアウェアアクセス制御ロジックを包含し、１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つへのアクセスを、エミュレーションモードにあるときにエミュレーションモードにないときとは異なって制御する。
【０１５４】
例１０は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションモードアウェアアクセス制御ロジックは、エミュレーションモードにあるときにはリソースおよび情報のうちの前記少なくとも１つへのアクセスを許可し、エミュレーションモードにないときにはリソースおよび情報のうちの前記少なくとも１つへのアクセスを防止する。
【０１５５】
例１１は、先行するいずれかの例のプロセッサを含み、オプションとして、リソースおよび情報のうちの少なくとも１つは、セキュリティロジック、安全情報、暗号化ロジック、解読ロジック、乱数発生器ロジック、オペレーティングシステムによるアクセスのために確保されたロジック、オペレーティングシステムによるアクセスのために確保されたメモリの部分、およびオペレーティングシステムによるアクセスのために確保された情報のうちの少なくとも１つを包含する。
【０１５６】
例１２は、先行するいずれかの例のプロセッサを含み、オプションとして、リソースおよび情報のうちの少なくとも１つは、他のロジックプロセッサおよび他の物理プロセッサのうちの１つにおけるリソースおよび情報のうちの少なくとも１つを包含する。
【０１５７】
例１３は、先行するいずれかの例のプロセッサを含み、オプションとして、１つまたは複数の命令からなるセットは、少なくとも３つの命令を含む。
【０１５８】
例１４は、プロセッサ内における方法であり、第１の命令を受信すること、およびその第１の命令のエミュレーションを行なうことを決定することを含む。この方法はまた、第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットを受信することも含む。さらにこの方法は、そのセットの命令から引き出される１つまたは複数の制御信号を、エミュレーションモードにあるときにエミュレーションモードにないときとは異なって処理することも含む。
【０１５９】
例１５は、先行するいずれかの例の方法を含み、オプションとして、第１の命令を受信することは、１つまたは複数の命令からなるセットの各命令より複雑な第１の命令を受信することを包含する。
【０１６０】
例１６は、先行するいずれかの例の方法を含み、オプションとして、１つまたは複数の命令からなるセットを受信することは、第１の命令と同じ命令セットの各命令である１つまたは複数の命令を受信することを包含する。
【０１６１】
例１７は、先行するいずれかの例の方法を含み、オプションとして、処理することは、１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートすることを包含する。またオプションとして、エミュレーションロジックの１つまたは複数の命令を実行し、例外条件ハンドラに制御を移す。
【０１６２】
例１８は、先行するいずれかの例の方法を含み、オプションとして、レポートすることは、１つまたは複数のレジスタ内に例外条件のインジケータを格納することを包含する。またオプションとして、スタック内に第１の命令のアドレスを格納する。
【０１６３】
例１９は、先行するいずれかの例の方法を含み、オプションとして、処理することは、１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つに対するアクセスを、エミュレーションモードにあるときにエミュレーションモードにないときと異なって制御することを包含する。
【０１６４】
例２０は、先行するいずれかの例の方法を含み、オプションとして、アクセスを異なって制御することは、エミュレーションモードにあるときにはリソースおよび情報の前記少なくとも１つに対するアクセスを許可することを包含する。またオプションとして、エミュレーションモードにないときにはリソースおよび情報の前記少なくとも１つに対するアクセスを防止する。
【０１６５】
例２１は、相互接続および相互接続に結合されたプロセッサを含む命令を処理するシステムである。プロセッサは、第１の命令を受信し、その第１の命令がエミュレーションされることを決定する復号化ロジックを含む。プロセッサは、また、復号化ロジックに結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックも含む。エミュレーションモードアウェア復号化後命令プロセッサロジックは、第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときにエミュレーションモードにないときとは異なって処理する。またシステムは、相互接続に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）も含む。
【０１６６】
例２２は、例２１のシステムを含み、オプションとして、エミュレーションモードアウェア復号化後命令プロセッサロジックは、１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを包含する。
【０１６７】
例１は、所定のオペコードを有する第１の命令を受信する復号器を含むプロセッサである。復号器は、所定のオペコードが第１の意味または第２の意味を有するか否かをチェックするチェックロジックを含む。また復号器は、第１の命令を復号化し、所定のオペコードが第１の意味を有するとき、１つまたは複数の対応する制御信号を出力する復号化ロジックも含む。また復号器は、所定のオペコードが第２の意味を有するとき、第１の命令のエミュレーションを誘導するエミュレーション誘導ロジックも含む。
【０１６８】
例２は、先行するいずれかの例のプロセッサを含み、オプションとして、第２の意味は第１の意味より古いとする。
【０１６９】
例３は、先行するいずれかの例のプロセッサを含み、オプションとして、第２の意味は、非推奨となりつつあるプロセス中にあるオペコード定義を包含する。
【０１７０】
例４は、先行するいずれかの例のプロセッサを含み、オプションとして、さらに、所定のオペコードが第１の意味または第２の意味を有するか否かのインジケータを格納する復号器に結合された記憶位置を包含し、チェックロジックは、その記憶位置をチェックしてインジケータを決定する。
【０１７１】
例５は、先行するいずれかの例のプロセッサを含み、オプションとして、記憶位置は、プログラムローダモジュールにアクセス可能であり、プログラムローダモジュールが記憶位置にインジケータを格納することを可能にする。
【０１７２】
例６は、先行するいずれかの例のプロセッサを含み、オプションとして、さらに、記憶位置からプロセッサ特徴レジスタへインジケータを格納する記憶位置に結合されたロジックを包含し、プロセッサ特徴レジスタは、第１の命令の命令セットのプロセッサ特徴識別命令によって読み出し可能である。
【０１７３】
例７は、先行するいずれかの例のプロセッサを含み、オプションとして、さらに、復号器に結合された複数のインジケータを格納する複数の記憶位置を包含し、それぞれのインジケータは複数のオペコードのうちの異なるオペコードに対応し、インジケータのそれぞれは、それぞれのオペコードが第１の意味または第２の意味を有するか否かを示す。
【０１７４】
例８は、先行するいずれかの例のプロセッサを含み、オプションとして、エミュレーションを誘導するロジックは、エミュレーションモードを設定するロジックを包含する。
【０１７５】
例９は、先行するいずれかの例のプロセッサを含み、オプションとして、さらに、復号器に結合されたエミュレーションロジックを包含し、エミュレーションロジックは、エミュレーション誘導ロジックがエミュレーションを誘導することに応答して、所定のオペコードが第２の意味を有するとき第１の命令のエミュレーションを行なう１つまたは複数の命令からなるセットを復号器に提供する。
【０１７６】
例１０は、先行するいずれかの例のプロセッサを含み、オプションとして、セットの各命令は、第１の命令と同一命令セットのものである。
【０１７７】
例１１は、先行するいずれかの例のプロセッサを含み、オプションとして、プロセッサは、命令セットの任意の命令の実装にマイクロコードを使用しないこととする。
【０１７８】
例１２は、先行するいずれかの例のプロセッサを含み、オプションとして、さらに、特権レベルロジックおよびリングレベルロジックのうちの１つがオペレーティングシステムモードを示すとき、所定のオペコードのために非推奨の意味に代えてより新しい意味を使用することを復号器に強制するロジックを包含する。
【０１７９】
例１３は、プロセッサ内における方法であり、所定のオペコードを有する第１の命令を受信すること、およびその所定のオペコードが第１の意味に代えて第２の意味を有することを決定することを含む。この方法は、また、所定のオペコードが第２の意味を有するという決定に応答して第１の命令のエミュレーションを決定することも含む。
【０１８０】
例１４は、先行するいずれかの例の方法を含み、オプションとして、決定することは、所定のオペコードが第１の意味より古い第２の意味を有すると決定することを包含し、第２の意味は、非推奨になりつつあるプロセス中にある。
【０１８１】
例１５は、先行するいずれかの例の方法を含み、オプションとして、決定することは、記憶位置から所定のオペコードが第２の意味を有することのインジケータを読み出すことを包含する。
【０１８２】
例１６は、先行するいずれかの例の方法を含み、オプションとして、さらに、プロセッサの命令セットのプロセッサ特徴識別命令によって読み出し可能なプロセッサ特徴レジスタ内へ所定のオペコードが第２の意味を有することのインジケータを格納することを包含する。
【０１８３】
例１７は、先行するいずれかの例の方法を含み、オプションとして、さらに、第１の命令のエミュレーションは、所定のオペコードが第２の意味を有するときに第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットを復号化することを包含する。
【０１８４】
例１８は、先行するいずれかの例の方法を含み、オプションとして、命令セットの復号化は、第１の命令と同じ命令セットの命令である１つまたは複数の命令を復号化することを包含する。
【０１８５】
例１９は、先行するいずれかの例の方法を含み、オプションとして、命令セットのいずれの命令の実装にもマイクロコードを使用しないプロセッサ内において実施される。
【０１８６】
例２０は、マシンによって実行されたときにそのマシンに動作を実施させる命令を格納している非一時的なマシン可読記憶媒体を含む製品である。動作は、ソフトウエアモジュールのメタデータを調べることによって、所定のオペコードを有する第１の命令が、ソフトウエアモジュールからプロセッサによって実行されるときに第１の意味に代えて第２の意味を有すると決定することを含む。動作はまた、所定のオペコードを有する第１の命令は第２の意味を有するというインジケータをプロセッサの状態に格納することを含む。
【０１８７】
例２１は、先行するいずれかの例の製品を含み、オプションとして、マシン可読記憶媒体が、さらにマシンによって実行されたときにそのマシンに、所定のオペコードの第２の意味を使用するソフトウエアライブラリの部分を所定のオペコードの第１の意味を使用するソフトウエアライブラリの他の部分に代えて選択すること、およびソフトウエアライブラリの選択した部分をソフトウエアモジュールに提供することを含む動作を実施させる命令を格納しており、第２の意味は非推奨とされる意味である。
【０１８８】
例２２は、先行するいずれかの例の製品を含み、オプションとして、マシン可読記憶媒体が、さらにマシンによって実行されたときにそのマシンに、ソフトウエアモジュールの古さに基づいて所定のオペコードが第２の意味を有すると決定することを含む動作を実施させる命令を格納している。
【０１８９】
例２３は、先行するいずれかの例の製品を含み、オプションとして、マシン可読記憶媒体が、さらにマシンによって実行されたときにそのマシンに、オブジェクトモジュールフォーマット内のフラグを調べること、およびフラグ内のインジケータをプロセッサのレジスタ内に格納することを含む動作を実施させる命令を格納している。
【０１９０】
例２４は、相互接続およびその相互接続に結合されたプロセッサを含む命令を処理するシステムである。プロセッサは、所定のオペコードを有する第１の命令を受信する。プロセッサは、所定のオペコードが第１の意味または第２の意味を有するか否かをチェックするチェックロジックを含む。プロセッサは、第１の命令を復号化し、所定のオペコードが第１の意味を有するとき、１つまたは複数の対応する制御信号を出力する復号化ロジックも含む。プロセッサは、所定のオペコードが第２の意味を有するとき、第１の命令のエミュレーションを誘導するエミュレーション誘導ロジックも含む。またシステムは、相互接続に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）も含む。
【０１９１】
例２５は例２４の内容を含み、オプションとして、さらに、所定のオペコードが第２の意味を有するときに第１の命令のエミュレーションを行なうべく復号器に第１の命令と同じ命令セットの１つまたは複数の命令からなるセットを提供するエミュレーションロジックを包含する。
【０１９２】
例２６は、例１３〜１９のうちのいずれかの方法を実施する装置を含む。
【０１９３】
例２７は、例１３〜１９のうちのいずれかの方法を実施するための手段を包含する装置を含む。
【０１９４】
例２８は、実質的に本明細書に述べられているとおりの方法を実施する装置を含む。
【０１９５】
例２９は、実質的に本明細書に述べられているとおりの方法を実施するための手段を包含する装置を含む。
【０１９６】
説明および特許請求の範囲においては、用語「結合される」および「接続される」が、それらの派生語とともに使用されている。これらの用語は、互いについての同義語として意図されていないことは理解されるべきである。むしろ、特定の実施形態において「接続される」は、２つまたはそれより多くの要素が、直接物理的に、または電気的に互いに接触することを示すために使用されているとみてよい。「結合される」は、２つまたはそれより多くの要素が、直接物理的に、または電気的に接触することを意味することができる。しかしながら「結合される」は、２つまたはそれより多くの要素が、互いに直接接触していないが、それでもなお互いに協働すること、または相互作用することも意味することができる。例えば、第１の構成要素および第２の構成要素が、介在する構成要素を通じて互いに結合されることがある。図においては、双方向矢印が、双方向接続および結合を示すために使用されている。
【０１９７】
説明および特許請求の範囲においては、用語「ロジック」が使用されている。本明細書で使用される場合に、ロジックは、ハードウエア、ファームウエア、ソフトウエア、またはこれらの組合せを含むことができる。ロジックの例は、集積回路、特定用途向け集積回路、アナログ回路、デジタル回路、プログラマブルロジックデバイス、命令を含むメモリデバイス等を含む。いくつかの実施形態においては、ハードウエアロジックがトランジスタおよび／またはゲートを、おそらくはその他の回路構成要素とともに含むことができる。
【０１９８】
用語「および／または」も使われている。本明細書で使用される場合に「および／または」は、一方または他方または両方を意味する（例えば、Ａおよび／またはＢは、ＡまたはＢまたはＡおよびＢ両方を意味する）。
【０１９９】
上記の説明においては、説明を目的として、本発明の実施形態の完全な理解を提供するために、多くの具体的な詳細が示されている。しかしながら、当業者には明らかになるであろうが、１つまたは複数のその他の実施形態をこれらの具体的な詳細のいくつかを使用することなく実施できる。論じられている特定の実施形態は、本発明の限定ではなく、例示的な実施形態を通じてそれを例証するために提供されている。本発明の範囲は、特定の例ではなく、特許請求の範囲によってのみ決定される。その他の場合においては、周知の回路、構造、デバイス、および動作は、説明の理解の不明瞭化を回避するためにブロック図形式で、または詳細を伴わずに示されている。
【０２００】
適切と考えられる場合には、参照番号または参照番号の末尾部分が、対応するかまたは類似の要素を示すべく複数図面にわたって反復して使用されているが、それらはオプションとして、別段の指定があるか、または明らかにそれ以外となる場合を除いて類似の、または同一の特性を有することがあり得る。複数の構成要素について述べられている場合には、概してそれらを単一の構成要素に統合できる。それに対し、単一の構成要素について述べられている場合には、概してそれを複数の構成要素に分割できる。
【０２０１】
以上、多様な動作および方法を述べてきた。方法のいくつかは、比較的基本的なフロー図形式で述べられたが、オプションとして動作の追加および／または削除をそれらの方法に対して行なうことができる。それに加えてフロー図は、例示的な実施形態に従って動作の特定の順序を示しているが、その特定の順序は例示である。代替の実施形態は、オプションとして、異なる順序で動作を実施すること、特定の動作を結合すること、特定の動作を重ねること等ができる。
【０２０２】
いくつかの実施形態は、マシン可読媒体を含む製品（例えば、コンピュータプログラム製品）を含む。この媒体は、マシンによる読み出しが可能な形式で情報を提供、例えば格納するメカニズムを含む。マシン可読媒体は、マシンによって実行される場合および／または実行されたときに、本明細書に開示されている１つまたは複数の動作、方法、または技術をそのマシンに実施させるか、かつ／または結果としてそれを実施するマシンをもたらすべく動作可能な１つまたは複数の命令を提供するか、またはその上に格納できる。適切なマシンの例は、限定ではないが、プロセッサ、命令処理装置、デジタルロジック回路、集積回路、およびこれらの類を含む。さらにその他の適切なマシンの例は、コンピューティングデバイスおよびその他の、その種のプロセッサ、命令処理装置、デジタルロジック回路、または集積回路を組み込んだ電子デバイスを含む。その種のコンピューティングデバイスおよび電子デバイスの例は、限定ではないが、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワークデバイス（例えば、ルータおよびスイッチ）、モバイルインターネットデバイス（ＭＩＤ）、メディアプレーヤ、スマートテレビジョン、ネットトップ、セットトップボックス、およびビデオゲームコントローラを含む。
【０２０３】
いくつかの実施形態においては、マシン可読媒体が有体の、および／または非一時的なマシン可読記憶媒体を含むことができる。例えば、有体の、および／または非一時的なマシン可読記憶媒体は、フロッピー（登録商標）ディスク、光記憶媒体、光ディスク、光データ記憶デバイス、ＣＤ−ＲＯＭ、磁気ディスク、光磁気ディスク、読出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、相変化メモリ、相変化データ記憶材料、不揮発性メモリ、不揮発性データ記憶デバイス、非一過性メモリ、非一過性データ記憶デバイス、またはこれらの類を含むことができる。非一時的なマシン可読記憶媒体は、一時的な伝播信号から構成されない。
【０２０４】
これも認識されるように、この明細書全体を通じて使用されている「一実施形態」、「実施形態」、または「１つまたは複数の実施形態」は、例えば特定の特徴が本発明の実施に含まれることがあるという意味である。同様に、これも認識されるように、説明の中では、開示を効率化し、本発明の多様な態様の理解を補助する目的のために多様な特徴がしばしば単一の実施形態、図面、またはそれの記述にグループ化されている。しかしながら、この開示の方法は、本発明が各請求項の中で明示的に言及されているより多くの特徴を必要とする意図を反映するとして解釈されるものではない。むしろ、以下の特許請求の範囲は、発明的態様が単一の開示された実施形態のすべての特徴より少ないところにある得ることを反映している。したがって、発明を実施するための形態に続く特許請求の範囲は、ここに明示的にこの発明を実施するための形態に組み込まれる。各請求項はそれ自身が本発明の別個の実施形態として実施され得る。
（項目１）
第１の命令を受信し、上記第１の命令がエミュレーションされることを決定する復号化ロジックと、
上記復号化ロジックと結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックであって、上記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときはエミュレーションモードにないときと異なって処理するエミュレーションモードアウェア復号化後命令プロセッサロジックと
を備えるプロセッサ。
（項目２）
上記第１の命令は、より多くの動作が実施されることを上記第１の命令を伴うことから、上記セットの各命令より複雑である、項目１に記載のプロセッサ。
（項目３）
上記プロセッサは、命令セットの任意の命令の実装にマイクロコードを使用しない、項目２に記載のプロセッサ。
（項目４）
上記１つまたは複数の命令からなるセットの各命令は、上記第１の命令と同じ命令セットの命令である、項目１に記載のプロセッサ。
（項目５）
上記エミュレーションモードアウェア復号化後命令プロセッサロジックは、上記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを有する、項目１に記載のプロセッサ。
（項目６）
上記エミュレーションモードアウェア例外条件ハンドラロジックは、上記第１の命令のアドレスをスタック内に格納する、項目５に記載のプロセッサ。
（項目７）
上記エミュレーションモードアウェア例外条件ハンドラロジックは、上記例外条件のインジケータ、および上記例外条件のためのエラーコードを上記エミュレーションロジックに結合された１つまたは複数のレジスタ内に格納する、項目５に記載のプロセッサ。
（項目８）
上記エミュレーションモードアウェア例外条件ハンドラロジックは、上記例外条件に応答して例外条件ハンドラに対して制御を直接移すことを回避し、上記エミュレーションロジックの１つまたは複数の命令が上記例外条件ハンドラに制御を移す、項目５に記載のプロセッサ。
（項目９）
上記エミュレーションモードアウェア復号化後命令プロセッサロジックは、エミュレーションモードアウェアアクセス制御ロジックを有し、上記１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つへのアクセスを、上記エミュレーションモードにあるときには上記エミュレーションモードにないときとは異なって制御する、項目１に記載のプロセッサ。
（項目１０）
上記エミュレーションモードアウェアアクセス制御ロジックは、上記エミュレーションモードにあるときには上記リソースおよび上記情報のうちの上記少なくとも１つへのアクセスを許可し、上記エミュレーションモードにないときには上記リソースおよび上記情報のうちの上記少なくとも１つへのアクセスを防止する、項目９に記載のプロセッサ。
（項目１１）
上記リソースおよび上記情報のうちの上記少なくとも１つは、セキュリティロジック、安全情報、暗号化ロジック、解読ロジック、乱数発生器ロジック、オペレーティングシステムによるアクセスのために確保されたロジック、オペレーティングシステムによるアクセスのために確保されたメモリの部分、およびオペレーティングシステムによるアクセスのために確保された情報のうちの少なくとも１つを含む、項目１０に記載のプロセッサ。
（項目１２）
上記リソースおよび上記情報のうちの上記少なくとも１つは、他のロジックプロセッサおよび他の物理プロセッサのうちの１つにおけるリソースおよび情報のうちの少なくとも１つを含む、項目１０に記載のプロセッサ。
（項目１３）
上記１つまたは複数からなる命令のセットは、少なくとも３つの命令を含む、項目１に記載のプロセッサ。
（項目１４）
第１の命令を受信することと、
上記第１の命令のエミュレーションを行なうことを決定することと、
上記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットを受信することと、
上記セットの命令から引き出される１つまたは複数の制御信号をエミュレーションモードにあるときには上記エミュレーションモードにないときと異なって処理することと
を備えるプロセッサ内における方法。
（項目１５）
上記第１の命令を受信することは、上記１つまたは複数からなる命令のセットの各命令より複雑な上記第１の命令を受信することを有する、項目１４に記載の方法。
（項目１６）
上記上記１つまたは複数からなる命令のセットを受信することは、上記第１の命令と同じ命令セットの各命令である１つまたは複数の命令を受信することを有する、項目１４に記載の方法。
（項目１７）
上記処理することは、
上記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートすることと、
上記エミュレーションロジックの１つまたは複数の命令を実行し、例外条件ハンドラに制御を移すことと
を有する、項目１４に記載の方法。
（項目１８）
上記レポートすることは、
１つまたは複数のレジスタ内に上記例外条件のインジケータを格納することと、
スタック内に上記第１の命令のアドレスを格納することと
を含む、項目１７に記載の方法。
（項目１９）
上記処理することは、上記１つまたは複数の制御信号によるリソースおよび情報のうちの少なくとも１つに対するアクセスを、エミュレーションモードにあるときは上記エミュレーションモードにないときと異なって制御することを含む、項目１４に記載の方法。
（項目２０）
上記アクセスを異なって制御することは、
上記エミュレーションモードにあるときには上記リソースおよび上記情報の上記少なくとも１つに対するアクセスを許可することと、
上記エミュレーションモードにないときには上記リソースおよび上記情報の上記少なくとも１つに対するアクセスを防止することと
を含む、項目１９に記載の方法。
（項目２１）
相互接続と、
上記相互接続に結合されたプロセッサであって、
第１の命令を受信し、上記第１の命令がエミュレーションされることを決定する復号化ロジックと、
上記復号化ロジックと結合されたエミュレーションモードアウェア復号化後命令プロセッサロジックであって、上記第１の命令のエミュレーションに使用される１つまたは複数の命令からなるセットの命令から復号化された１つまたは複数の制御信号を、エミュレーションモードにあるときはエミュレーションモードにないときと異なって処理するエミュレーションモードアウェア復号化後命令プロセッサロジックと
を有するプロセッサと、
上記相互接続に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）と
を備える、命令を処理するシステム。
（項目２２）
上記エミュレーションモードアウェア復号化後命令プロセッサロジックは、上記１つまたは複数の制御信号を処理する間にエミュレーションロジックに対して生じる例外条件をレポートするエミュレーションモードアウェア例外条件ハンドラロジックを含む、項目２１に記載のシステム。
【図１】
2014194770.tif 000003
【図２】
2014194770.tif 000004
【図３】
2014194770.tif 000005
【図４】
2014194770.tif 000006
【図５】
2014194770.tif 000007
【図６】
2014194770.tif 000008
【図７】
2014194770.tif 000009
【図８】
2014194770.tif 000010
【図９】
2014194770.tif 000011
【図１０Ａ】
2014194770.tif 000012
【図１０Ｂ】
2014194770.tif 000013
【図１１Ａ】
2014194770.tif 000014
【図１１Ｂ】
2014194770.tif 000015
【図１２】
2014194770.tif 000016
【図１３】
2014194770.tif 000017
【図１４】
2014194770.tif 000018
【図１５】
2014194770.tif 000019
【図１６】
2014194770.tif 000020
【図１７】
2014194770.tif 000021
【外国語明細書】
2014194770000001.pdf