(57)【特許請求の範囲】
【請求項１】
少なくとも第１の１次キャッシュおよび高次キャッシュを含むキャッシュ階層を有するプロセッサであって、前記プロセッサは、
物理メモリ空間の第１の部分を、前記高次キャッシュの第１の部分に対応するキャッシュアドレス空間にマップし、
少なくとも一部がマイクロコードを含む命令を実行し、
前記命令の第１の命令をデコードし、
前記第１の命令の前記デコードに応答してマイクロコードアクセス信号が検出された場合に、前記第１の命令がマイクロコードを表していると判定すると共に前記第１の命令が前記高次キャッシュの前記第１の部分のロード又はストアによってアクセスを完了するのを許可し、
前記第１の命令の前記デコードに応答してマイクロコードアクセス信号が検出されなかった場合に、前記第１の命令がマイクロコードを表していないと判定すると共に前記第１の命令が前記高次キャッシュの前記第１の部分のロード又はストアによってアクセスを完了するのを阻止するように構成されているプロセッサ。
【請求項２】
前記物理メモリ空間の前記第１の部分は、マイクロコードが使用するために恒久的に割り当てられる請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサは、
前記高次キャッシュの前記第１の部分の１つ以上のキャッシュラインを、前記高次キャッシュから前記第１の１次キャッシュの第１の部分に移動させ、
マイクロコードが、前記第１の１次キャッシュの前記第１の部分にアクセスするのを許可し、
マイクロコードを含まない命令が、前記第１の１次キャッシュの前記第１の部分にアクセスするのを阻止するように更に構成されている請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサは、前記第１の命令の１つ以上のビットが所定の状態を有しているのを検出することによって前記デコードの間に前記第１の命令がマイクロコードを表していると判定するように更に構成されている請求項１に記載のプロセッサ。
【請求項５】
変換ルックアサイドバッファ（ＴＬＢ）を更に有し、前記プロセッサは、マイクロコードを含まない命令が、前記物理メモリ空間の前記第１の部分にアクセスするのを阻止するために、前記物理メモリ空間の前記第１の部分へのＴＬＢリフィルを禁止するように更に構成されている請求項４に記載のプロセッサ。
【請求項６】
少なくとも第１のコアおよび第２のコアを更に有し、前記第２のコアは、
前記物理メモリ空間の第２の部分を、前記高次キャッシュの第２の部分に対応するキャッシュアドレス空間にマップし、少なくとも一部がマイクロコードを含む命令を実行し、
マイクロコードが、前記高次キャッシュの前記第２の部分のロード又はストアによってアクセスを完了するのを許可し、
マイクロコードを含まない命令が、前記高次キャッシュの前記第２の部分のロード又はストアによってアクセスを完了するのを阻止するように構成されている請求項１に記載のプロセッサ。
【請求項７】
前記第１のコアは前記第１の１次キャッシュを有し、前記第２のコアは第２の１次キャッシュを有し、
前記第１のコアは、
前記高次キャッシュの前記第１の部分にマップされている１つ以上のキャッシュラインを、前記高次キャッシュから前記第１の１次キャッシュの一部に移動させ、
マイクロコードが、前記第１の１次キャッシュの前記一部にアクセスするのを許可し、
マイクロコードを含まない命令が、前記第１の１次キャッシュの前記一部にアクセスするのを阻止するように更に構成され、
前記第２のコアは、
前記高次キャッシュの前記第２の部分にマップされている１つ以上のキャッシュラインを、前記高次キャッシュから前記第２の１次キャッシュの一部に移動させ、
マイクロコードが、前記第２の１次キャッシュの前記一部にアクセスするのを許可し、
マイクロコードを含まない命令が、前記第２の１次キャッシュの前記一部にアクセスするのを阻止するように構成されている請求項６に記載のプロセッサ。
【請求項８】
プロセッサのキャッシュ階層において、物理メモリ空間の第１の部分を、高次キャッシュの第１の部分に対応するキャッシュアドレス空間にマップするステップと、
第１のプロセッサコアにより、少なくとも一部がマイクロコードを含む命令を実行するステップと、
前記命令の第１の命令をデコードするステップと、
前記第１の命令の前記デコードに応答してマイクロコードアクセス信号が検出された場合に、前記第１の命令がマイクロコードを表していると判定すると共に前記第１の命令が前記高次キャッシュの前記第１の部分のロード又はストアによってアクセスを完了するのを許可するステップと、
前記第１の命令の前記デコードに応答してマイクロコードアクセス信号が検出されなかった場合に、前記第１の命令がマイクロコードを表していないと判定すると共に前記第１の命令が前記高次キャッシュの前記第１の部分のロード又はストアによってアクセスを完了するのを阻止するように構成されているステップと、を含む方法。
【請求項９】
前記物理メモリ空間の前記第１の部分をマイクロコードが使用するために恒久的に割り当てるステップを更に含む、請求項８に記載の方法。
【請求項１０】
前記高次キャッシュの前記第１の部分の１つ以上のキャッシュラインを、前記高次キャッシュから、前記プロセッサの第１の１次キャッシュの第１の部分に移動させるステップと、
マイクロコードが、前記第１の１次キャッシュの前記第１の部分にアクセスするのを許可するステップと、
マイクロコードを含まない命令が、前記第１の１次キャッシュの前記第１の部分にアクセスするのを阻止するステップとを更に含む、請求項８に記載の方法。
【請求項１１】
前記プロセッサは、前記第１の命令の１つ以上のビットが所定の状態を有しているのを検出することによって前記デコードの間に前記第１の命令がマイクロコードを表していると判定するように更に構成されているステップを更に含む、請求項８に記載の方法。
【請求項１２】
前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第１の部分にアクセスするのを阻止する前記ステップは、変換ルックアサイドバッファ（ＴＬＢ）からの前記物理メモリ空間の前記第１の部分へのリフィルを禁止するステップを更に含む、請求項１１に記載の方法。
【請求項１３】
前記物理メモリ空間の第２の部分を、前記高次キャッシュの第２の部分に対応するキャッシュアドレス空間にマップするステップと、
第２のプロセッサコアにより、少なくとも一部がマイクロコードを含む命令を実行するステップと、
前記第２のプロセッサコアにより、マイクロコードが、前記高次キャッシュの前記第２の部分のロード又はストアによってアクセスを完了するのを許可するステップと、
前記第２のプロセッサコアにより、マイクロコードを含まない命令が、前記高次キャッシュの前記第２の部分のロード又はストアによってアクセスを完了するのを阻止するステップとを更に含む、請求項８に記載の方法。
【請求項１４】
前記高次キャッシュの前記第１の部分にマップされている１つ以上のキャッシュラインを、前記高次キャッシュから第１の１次キャッシュの一部に移動させるステップと、
前記高次キャッシュの前記第２の部分にマップされている１つ以上のキャッシュラインを、前記高次キャッシュから第２の１次キャッシュの一部に移動させるステップと、
マイクロコードが、前記第１の１次キャッシュの前記一部および／または前記第２の１次キャッシュの前記一部にアクセスするのを許可するステップと、
マイクロコードを含まない命令が、前記第１の１次キャッシュの前記一部にアクセスするのを阻止するステップと、
マイクロコードを含まない命令が、前記第２の１次キャッシュの前記一部にアクセスするのを阻止するステップと、を更に有する請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、より詳細には、マイクロコードによる複合命令（complex instruction）のエミュレーションに関し、更に詳細には、このようなエミュレーション中に使用されるメモリのキャッシング（caching）に関する。
【背景技術】
【０００２】
マイクロプロセッサが複合命令セットコンピュータ（complex instruction set computer：ＣＩＳＣ）アーキテクチャとの互換性を保つことが望まれる一方で、実行速度および性能の改良がなされているアーキテクチャが他に存在する。マイクロプロセッサの設計者は、ＣＩＳＣ命令をエミュレートすることにより、ＣＩＳＣとの互換性と、高性能との両方を実現しようとしている。例えば、スーパースカラアーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャは、ＣＩＳＣ命令のエミュレーションを実行するマイクロコードを備えうる。マイクロコードは、エミュレーション処理中に、中間値を保存するためのスクラッチパッドメモリを使用する。高性能を維持するためには、マイクロプロセッサのマイクロコードが、エミュレーションメモリにできるだけ高速にアクセスできることが望ましい。
【０００３】
また、マイクロプロセッサは、一般に、階層状に配置され、複数のコアまたは実行ユニットによって共有されている複数のメモリキャッシュを有する。さまざまなキャッシングアーキテクチャが使用されており、このようなアーキテクチャでは、オンチップキャッシュとオフチップキャッシュがさまざまに組み合わされている。キャッシュまたはメモリからデータを読み出すメモリオペレーションを、ここでは省略して「ロード」と呼ぶ。キャッシュまたはメモリにデータを書き込むメモリオペレーションを、ここでは省略して「ストア」と呼ぶ。ロードまたはストアは、特定のキャッシュライン（またはキャッシュラインの一部）をターゲットとしており、ターゲットのラインを識別するアドレスを含むほか、キャッシュラインとの間でロードまたはストアするデータを含む。キャッシュアクセスはメモリアクセスより高速であるため、コアまたは実行ユニットがデータにアクセスする必要があるときに、データがキャッシュに存在している確率を上げて、これにより実行速度を改善するために、各種のキャッシング手法が使用されている。したがって、マイクロコードエミュレーションメモリをキャッシュすることにより、キャッシュメモリがシステムメモリよりもアクセス時間が比較的短いという性能上の利点が得られる。アクセス時間が最も短いのは、一般に、キャッシュ階層の最下層レベル（一般にＬ１キャッシュまたは省略してＬ１と呼ばれる）である。このため、マイクロコードエミュレーションメモリをＬ１にキャッシュすることが望ましい。このような性能上の利点は、Ｌ１の一部を、マイクロコードエミュレーションメモリ用に恒久的に割り当てることで、更に強化されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
当然、Ｌ１キャッシュの使用による性能上の利点は、他のプロセスにも資する。したがって、任意のプロセスのために、Ｌ１キャッシュ空間の利用可能性を向上させるには、Ｌ１キャッシュをできるだけ大型化することが望ましい。しかし、Ｌ１の大型化は、マイクロプロセッサのコストの上昇と共に複雑化を招く。また、マイクロコードエミュレーションメモリがＬ１内に恒久的に割り当てられると、Ｌ１のこの部分はほかのプロセスに利用できなくなる。上記の懸念に対処するために、マイクロコードエミュレーションメモリをキャッシュする利点を保つ一方で、すべてのプロセスのためにＬ１キャッシュ内に所定のサイズの空間の利用可能性を改善する方法が求められている。
【課題を解決するための手段】
【０００５】
プロセッサ、コンピュータシステムおよび方法の各種実施形態が開示される。前記プロセッサは、少なくとも第１の１次キャッシュおよび高次キャッシュを含むキャッシュ階層を有する。前記プロセッサは、物理メモリ空間の第１の部分を前記高次キャッシュの第１の部分にマップし、少なくとも一部がマイクロコードを含む命令を実行し、マイクロコードが、前記高次キャッシュの前記第１の部分にアクセスするのを許可し、マイクロコードを含まない命令が、前記高次キャッシュの前記第１の部分にアクセスするのを阻止するように構成されている。一実施形態では、前記高次キャッシュは２次キャッシュである。別の実施形態では、前記物理メモリ空間の前記第１の部分は、マイクロコードが使用するために恒久的に割り当てられる。
【０００６】
更に別の実施形態では、前記プロセッサは、前記高次キャッシュの前記第１の部分の１つ以上のキャッシュラインを、前記高次キャッシュから前記第１の１次キャッシュの第１の部分に移動させるように構成されている。前記プロセッサは、マイクロコードが、前記第１の１次キャッシュの前記第１の部分にアクセスするのを許可し、マイクロコードを含まない命令が、前記第１の１次キャッシュの前記第１の部分にアクセスするのを阻止するように更に構成されている。
【０００７】
更に別の実施形態では、前記プロセッサは、マイクロコードアクセス信号を検出するように構成されている。前記プロセッサは、前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第１の部分にアクセスするのを阻止し、前記マイクロコードアクセス信号がアサートされている場合、命令が前記物理メモリ空間の前記第１の部分にアクセスするのを許可するように更に構成されている。
【０００８】
更に別の実施形態では、前記プロセッサは、変換ルックアサイドバッファ（ＴＬＢ）を更に有し、前記プロセッサは、マイクロコードを含まない命令が、前記物理メモリ空間の前記第１の部分にアクセスするのを阻止するために、前記物理メモリ空間の前記第１の部分へのＴＬＢリフィルを禁止するように更に構成されている。
【図面の簡単な説明】
【０００９】
【図１】コンピュータシステムの一実施形態を示す一般化ブロック図。
【図２】仮想メモリおよびキャッシュアーキテクチャの一実施形態を示す図。
【図３】マイクロコードエミュレーションメモリを含むメモリ階層にアクセスするための処理の一実施形態を示す図。
【図４】１次キャッシュ内のマイクロコードエミュレーションメモリにアクセスするための処理の一実施形態を示す図。
【図５】システムの各種構成要素に接続されたＬ２データキャッシュおよびマイクロコードエミュレーションメモリを備えたコンピュータシステムの一実施形態のブロック図。
【発明を実施するための形態】
【００１０】
本発明は、種々の変形および代替形態を取り得るが、その特定の実施形態が、図面に例として図示され、ここに詳細に記載されているに過ぎない。しかしながら、図面およびその詳細な説明は、この発明を開示された特定の形状に限定するようには意図されてはおらず、むしろ逆に、この発明は、特許請求の範囲によって規定されるようなこの発明の精神および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
【００１１】
図１は、コンピュータシステム１００の一実施形態を示す一般化ブロック図である。図中の実施形態では、プロセッサ１１０は、メモリ１５０に接続されて示されている。メモリ１５０には、ＳＤＲＡＭ、ＳＲＡＭ、ＲＯＭ、ＤＲＡＭおよび／またはその他の従来のメモリデバイスが含まれてもよい。プロセッサ１１０は、コア１２０、Ｌ２データキャッシュ１３０、およびＬ２変換ルックアサイドバッファ（ＴＬＢ）１４０を有する。コア１２０は、実行ユニット１２２、ロード／ストアユニット１２４、Ｌ１データキャッシュ１２６、およびＬ１  ＴＬＢ１２８を有する。Ｌ２データキャッシュ１３０は、マイクロコードエミュレーションメモリ１３５を有する。別の実施形態では、プロセッサ１１０が、それぞれが１次データキャッシュを有する複数のコアを有し、これらのコアが１つの２次データキャッシュを共有していてもよい。１つの別の実施形態では、Ｌ１データキャッシュ１２６が、コア１２０から独立していてもよい。別の実施形態では、３次キャッシュなどの追加のキャッシュレベルがコンピュータシステム１００に設けられており、これが、プロセッサ１１０内に存在しても、またはプロセッサ１１０から独立していてもよい。上記の実施形態およびほかの別の実施形態では、マイクロコードエミュレーションメモリ１３５が、２次以上のどのようなキャッシュレベルに含まれていてもよい。また、ほかのさまざまな実施形態も考察される。しかし、理解しやすいように、以下の例では、マイクロコードエミュレーションメモリ１３５用に、２次データキャッシュ内に空間が恒久的に割り当てられるとする。
【００１２】
動作時に、実行ユニット１２２はリンク１６１を介してロード／ストアユニット１２４から、実行しようとしているロードのデータ部分を受け取り、リンク１６２を介してロード／ストアユニット１２４にストアのデータ部分を伝達しうる。ロード／ストアユニット１２４は、リンク１６３を介してＬ１データキャッシュ１２６から、実行しようとしているロードのデータ部分を受け取り、リンク１６４を介してＬ１データキャッシュ１２６にストアのデータ部分を伝達しうる。Ｌ１データキャッシュ１２６は、リンク１６５を介してＬ２データキャッシュ１３０からロードのデータ部分を受け取り、リンク１６６を介してＬ２データキャッシュ１３０にストアのデータ部分を伝達しうる。Ｌ２データキャッシュ１３０は、リンク１６７を介して、メモリ１５０からロードのデータ部分を受け取り、ストアのデータ部分をメモリ１５０に伝達しうる。Ｌ１  ＴＬＢ１２８は、リンク１７１を介してＬ１データキャッシュ１２６に、リンク１７２を介してＬ２データキャッシュ１３０に、リンク１７３を介してＬ２  ＴＬＢ１４０に、それぞれ接続されて示されている。また、Ｌ２  ＴＬＢ１４０も、リンク１７４を介してＬ２データキャッシュ１３０に接続されて示されている。
【００１３】
Ｌ１データキャッシュ１２６、Ｌ１  ＴＬＢ１２８、Ｌ２データキャッシュ１３０およびＬ２  ＴＬＢ１４０は、従来のアドレス変換機能およびキャッシュ機能を実行しうる。例えば、Ｌ１  ＴＬＢ１２８は、仮想アドレスの物理アドレスへのマッピングをキャッシュしうる。メモリアクセス要求が発生すると、Ｌ１  ＴＬＢ１２８がチェックされ、所望の仮想アドレスの物理アドレスへのマッピングがキャッシュされているかどうかが確認されうる。Ｌ１  ＴＬＢ１２８にキャッシュされているマッピングが使用され、Ｌ１データキャッシュ１２６内に所望のキャッシュラインが存在するかどうかが判定されうる。所望のキャッシュラインがＬ１データキャッシュ１２６に存在しない、すなわち、Ｌ１キャッシュミスの場合、Ｌ２  ＴＬＢ１４０がチェックされ、所望の仮想アドレスの物理アドレスへのマッピングがキャッシュされているかどうかが確認されうる。Ｌ２  ＴＬＢ１４０にキャッシュされているマッピングが使用され、Ｌ２データキャッシュ１３０内に所望のキャッシュラインが存在するかどうかが判定されうる。Ｌ１データキャッシュ１２６でキャッシュミスが発生した場合、新しいエントリを収容するための空間を確保するために、Ｌ１データキャッシュ１２６からＬ２データキャッシュ１３０にキャッシュラインがエビクト（evict）されうる。Ｌ１  ＴＬＢ１２８の対応するエントリも、Ｌ２  ＴＬＢ１４０に移動されうる。Ｌ２データキャッシュ１３０に、新しいエントリを収容するための空間を確保するために、キャッシュラインをＬ２データキャッシュ１３０からメモリ１５０にエビクトすることが必要となることがある。所望のキャッシュラインおよびＬ１  ＴＬＢ１２８内にキャッシュされた結果に対して、アドレス変換が新たに実行されうる（このプロセスは「ＴＬＢリフィル」とも呼ばれうる）。マイクロコードエミュレーションメモリ１３５の破損の原因となり、これを防止するデータキャッシュ１２６，１３０およびＴＬＢ１２８，１４０の動作の更に詳しい詳細について、以下で説明する。
【００１４】
図２は、プロセッサ１１０と使用されうる仮想メモリおよびキャッシュのアーキテクチャの一実施形態を示す。本図に、仮想メモリ空間２１０が示されており、その一部が物理メモリアドレス空間２２０にマップされている。物理メモリアドレス空間２２０の一部がＬ２キャッシュ空間２３０にマップされ、Ｌ２キャッシュ空間の一部がＬ１キャッシュ空間２４０にマップされて図示されている。プロセッサ１１０で実行される各アプリケーションは、別個の仮想メモリアドレス空間を使用しうる。図２に示すように、仮想メモリアドレス空間２１０は、仮想メモリの一部を表すブロック２１１〜２１５を有し、これらのブロックは、物理メモリアドレス空間２２０にマップされており、所定の時点でアプリケーションからアクセス可能である。同様に、物理メモリアドレス空間２２０は、Ｌ２キャッシュ空間２３０にキャッシュされている物理メモリの一部を表すブロック２２１〜２２４を有する。同様に、Ｌ２キャッシュ空間２３０は、Ｌ１キャッシュ空間２４０にキャッシュされているＬ２キャッシュの一部を表すブロック２３１〜２３３を有する。より詳細には、Ｌ２キャッシュ空間２３０のブロック２３１，２３２，２３３は、Ｌ１キャッシュ空間２４０のブロック２４２，２４３，２４１にそれぞれマップされている。さまざまな実施形態では、上記のブロックのそれぞれは、キャッシュラインの組、サイズの等しいブロック、キャッシュラインまたはブロックの群、あるいは可変サイズのブロックのいずれかを表してもよい。別の実施形態では、仮想メモリアドレス空間２１０、物理メモリアドレス空間２２０、Ｌ２キャッシュ空間２３０およびＬ１キャッシュ空間２４０のいずれに含まれるブロックの数が、図２に示すブロックより多くても少なくてもよい。
【００１５】
一実施形態では、物理メモリ空間２２０内で、ブロック２２１が、マイクロコードエミュレーションメモリとして確保されうる。更に、Ｌ２キャッシュ空間２３０のブロック２３１が、マイクロコードエミュレーションメモリの内容をキャッシュするために恒久的に確保されうる。動作時に、プロセッサ１１０がマイクロコードエミュレーションメモリにアクセスしようとすると、図２に示すブロック２４２など、１次キャッシュ内にブロック２３１がキャッシュされうる。しかし、ブロック２３１とは異なり、ブロック２４２はマイクロコードエミュレーションメモリに使用するために恒久的に確保されないことがある。Ｌ１にキャッシュされているブロックは、プログラムの実行に応じて、刻々と変化しうる。このため、マイクロコードエミュレーションメモリが、Ｌ１から、ブロック２３１が、マイクロコードエミュレーションメモリの使用のために確保されているＬ２にエビクトされうる。一実施形態では、物理メモリ空間のブロック２２１を含むＬ１  ＴＬＢのリフィルを禁止することにより、マイクロコード以外のアプリケーションまたはプロセスによる、マイクロコードエミュレーションメモリへのアクセスが阻止されうる。
【００１６】
図３は、マイクロコードエミュレーションメモリを含むメモリ階層にアクセスするための処理３００の一実施形態を示す。メモリアクセスが開始されると、実行ユニットによってデコードされた各命令に関連するマイクロコードアクセス信号（図示なし）の有無が確認されうる（判定ブロック３１０）。例えば、一実施形態では、デコードされた各命令のビットが、マイクロコードアクセス信号として使用されうる。別の実施形態では、マイクロコード命令は、マイクロコードアクセス信号として機能する特別なオペコードを含んでおり、これによってマイクロコードであることが識別されうる。命令がマイクロコード命令であるかどうかを示すために、さまざまなマイクロコードアクセス信号のいずれかが、実行ユニットからキャッシュコントローラに伝達されうる。マイクロコードアクセス信号が検出されると、マイクロコードエミュレーションメモリへのアクセスが許可され、アクセスが完了しうる（ブロック３２０）。
【００１７】
マイクロコードアクセス信号が検出されない場合、処理３００は以下のようになる。１つ以上のＴＬＢで、アクセス対象のキャッシュラインと一致するエントリが検索されうる（ブロック３３０）。Ｌ１  ＴＬＢに一致するエントリがみつかった場合（判定ブロック３４０）、対象のキャッシュラインがアクセスされ（ブロック３９０）、アクセスが完了する。一致するエントリが、Ｌ１  ＴＬＢにはみつからないが、Ｌ２  ＴＬＢにみつかった場合（判定ブロック３５０）、対象のキャッシュラインがＬ２キャッシュからＬ１キャッシュに移動され（ブロック３６０）、対象のキャッシュラインがアクセスされて（ブロック３９０）、アクセスが完了する。一致するエントリがＬ１キャッシュにもＬ２キャッシュにもみつからない場合、アドレス変換が実行されうる（ブロック３７０）。アドレス変換で得られたターゲットアドレスが、マイクロコードエミュレーションメモリに存在するアドレスである場合（判定ブロック３８０）、アクセスが阻止され（ブロック３８４）、アクセスの試みが終了する。アドレス変換ので得られたターゲットアドレスが、マイクロコードエミュレーションメモリに存在しないアドレスである場合（判定ブロック３８０）、ＴＬＢリフィルが実行され（ブロック３８２）、対象のキャッシュラインがアクセスされて（ブロック３９０）、アクセスが完了する。
【００１８】
図４は、１次キャッシュ内のマイクロコードエミュレーションメモリにアクセスするための処理４００の一実施形態を示す。マイクロコードエミュレーションメモリへのアクセス要求が開始されると、対象のキャッシュラインがＬ１キャッシュにキャッシュされているかどうかの確認が行われうる（判定ブロック４１０）。対象のキャッシュラインがＬ１キャッシュにキャッシュされている場合、対象のキャッシュラインへのアクセスが許可され（ブロック４２０）、アクセスが完了する。対象のキャッシュラインがＬ１キャッシュにキャッシュされていない場合、Ｌ２キャッシュ内の、対象のキャッシュラインの確保されている位置が取得されうる（ブロック４３０）。次に、対象のキャッシュラインがＬ２キャッシュからＬ１キャッシュに移動されうる（ブロック４４０）。対象のキャッシュラインがＬ１キャッシュに移動されると、アクセスが許可され（ブロック４２０）、アクセスが完了する。
【００１９】
次に図５を参照すると、システムの各種構成要素に接続されたＬ２データキャッシュ５６０およびマイクロコードエミュレーションメモリ１３５を備えたコンピュータシステム５００の一実施形態のブロック図である。図中のシステムでは、プロセッサ５１０が、周辺デバイス５２０と、メモリ５３０とに接続されて示されている。周辺デバイス５２０には、ネットワークインタフェース、タイミング回路、記憶媒体、入出力デバイスなどの、従来のコンピュータシステムに存在しうる各種デバイスのいずれが含まれてもよい。メモリ５３０には、ＳＤＲＡＭ、ＳＲＡＭ、ＲＯＭ、ＤＲＡＭおよび／またはその他の従来のメモリデバイスが含まれてもよい。プロセッサ５１０は、コア５４０Ａ，５４０Ｂ、ライト結合（write coalescing）キャッシュ５５０、２次データキャッシュ５６０、および入出力インターフェース５７０を有する。入出力インターフェース５７０は、コア５４０のそれぞれを、周辺デバイス５２０に接続しうる。本明細書において、後に文字を付した参照番号によって参照される複数の要素を、参照番号だけで集合的に参照することがある。例えば、コア５４０Ａ，５４０Ｂをコア５４０と呼んだり、コア５４０のうち、特に特定しないものをコア５４０と呼ぶことがある。
【００２０】
コア５４０のそれぞれは、１次データキャッシュ５４２、ストアロジックユニット５４４およびロード／ストアパイプライン５４６を有する。ストアロジックユニット５４４（あるいは「ストアユニット」とも呼ぶ）は、ロード／ストアユニットの一部でも、独立したロジックユニットでも、これらの組合せであってもよい。ストアロジック５４４は、１次データキャッシュ５４２と、ライト結合キャッシュ５５０との両方に接続されており、コア５４０がこの両方のキャッシュレベルに書き込めるようにしている。より詳細には、ストアロジック５４４は、１次データキャッシュ５４２にストア５８４を、ライト結合キャッシュ５５０にストア５８２を伝達しうる。ライト結合キャッシュ５５０は、フィル５６４およびエビクト５６６を介して２次データキャッシュ５６０に更に接続されうる。ライト結合キャッシュ５５０は、ストア５８２とフィル５６４を結合させ、生成されるエビクト５６６の数を低減させうる。２次データキャッシュ５６０は、１次データキャッシュ５４２のそれぞれに更に接続されうる。より詳細には、２次データキャッシュ５６０は、１次データキャッシュ５４２にフィル５６２を伝達しうる。また、２次データキャッシュ５６０は、メモリ５３０とも双方向的に接続されうる。
【００２１】
動作時に、コア５４０は、命令のストリームを実行し、このストリームが、デコードされると、Ｌ１データキャッシュ５４２からロード／ストアパイプライン５４６へのロード５８６、ロード／ストアパイプライン５４６からストアロジック５４４へのストア５８０、またはこの両方が生成される。コア５４０によって実行される命令には、マイクロコードの実行が含まれうる。マイクロコードを実行するために、マイクロコードエミュレーションメモリ１３５にあるキャッシュラインにアクセスする必要がある場合、対象のキャッシュラインが、アクセスされ、必要に応じて、図４において上で説明した処理を使用して、Ｌ２データキャッシュ５６０からＬ１データキャッシュ５４２に移動される。対象のキャッシュラインは、Ｌ１データキャッシュ５４２に移動されると、ロード５８６および／またはストア５８０，５８４によってアクセスされうる。
【００２２】
システム５００は、図に示すように２つのコアを有するが、別の実施形態では、３以上のコアが存在していても、各コアが実行ユニットのクラスタであっても、この両方であってもよい。また、更に別の実施形態では、追加の２次キャッシュが設けられ、３以上のコアが存在してもよい。更に、２次データキャッシュ５６０がメモリ５３０に直接接続され、メモリ５３０が、プロセッサの外部のメモリとして図示されているが、プロセッサ５１０が、メモリコントローラおよび／またはプロセッサの内部メモリを有してもよい。別の実施形態では、プロセッサの外部のメモリコントローラが、２次データキャッシュ５６０とメモリ５３０とを接続してもよい。プロセッサコアおよびメモリのさまざまな構成が、当業者にとって明らかであろう。
【００２３】
上記の実施形態には、ソフトウェアが含まれてもよい点に留意されたい。このような実施形態では、方法および／または機構を実施するプログラム命令が、伝送されても、計算機によるアクセス可能な媒体に記憶されてもよい。プログラム命令を記憶するように構成された多くのタイプの媒体を利用可能であり、これには、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラマブルＲＯＭ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、およびその他の形態の揮発性または不揮発性記憶装置などがある。コンピューティングデバイスによってアクセスされるプログラム命令を伝達するように構成された更に別の形態の媒体には、電気信号、電磁信号、光学信号またはデジタル信号を伝達可能なネットワーク、無線リンクおよび衛星リンクなどの、地上あるいは地上外の通信リンクが含まれる。このため、各種の実施形態では、計算機によるアクセス可能な媒体に対し、上記の説明に従って実装される命令および／またはデータの受信、送信または記憶が更に行われてもよい。
【００２４】
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって自明であろう。下記の特許請求の範囲は、このような変形例および変更例をすべて包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００２５】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
0005496085.tif 000002
【図２】
0005496085.tif 000003
【図３】
0005496085.tif 000004
【図４】
0005496085.tif 000005
【図５】
0005496085.tif 000006