(57)【要約】【課題】  プロセッサにおけるキャッシュ・メモリをアクセスするための方法および装置を提供する。【解決手段】  本発明の方法は、要求されたデータの要求された有効アドレスを使用して、プロセッサの１つまたは複数のレベル１キャッシュにおいてその要求されたデータがアクセスされる。プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、その要求された有効アドレスは実アドレスに変換される。ルックアサイド・バッファが、プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対して１つの対応するエントリを含む。対応するエントリは、有効アドレスからキャッシュ・ラインに対する実アドレスへの変換を表す。変換された実アドレスはレベル２キャッシュをアクセスするために使用される。【選択図】  図２
2009009571.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにおけるキャッシュ・メモリをアクセスする方法であって、
前記プロセッサの１つまたは複数のレベル１キャッシュにおける要求されたデータを、前記要求されたデータの要求された有効アドレスを使用してアクセスするステップと、
前記プロセッサの１つまたは複数のレベル１キャッシュが前記要求された有効アドレスに対応する要求されたデータを含んでいない場合、前記要求された有効アドレスを実アドレスに変換するステップであって、前記プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対してルックアサイド・バッファが１つの対応するエントリを含み、前記対応するエントリが前記キャッシュ・ラインに対して前記有効アドレスから前記実アドレスへの変換を表す、前記変換するステップと、
レベル２キャッシュをアクセスするために、前記変換するステップにおいて変換された実アドレスを使用するステップと、
を含む、方法。
【請求項２】
前記要求された有効アドレスから実アドレスに変換するために、変換ルックアサイド・バッファが使用される、請求項１に記載の方法。
【請求項３】
前記要求された有効アドレスから実アドレスに変換するために、セグメント・ルックアサイド・バッファが使用される、請求項１に記載の方法。
【請求項４】
前記ルックアサイド・バッファは、メイン・メモリに格納されたページ・テーブルの一部分をキャッシュするように構成される、請求項１に記載の方法。
【請求項５】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記プロセッサの１つまたは複数のレベル１キャッシュにおけるいずれの対応するデータも前記１つまたは複数のレベル１キャッシュを介してアクセスし得なくされ、前記データをアクセスし得なくすることは、前記１つまたは複数のレベル１キャッシュにおけるデータを無効化することおよびフラッシュすることの少なくとも一方を含む、請求項４に記載の方法。
【請求項６】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記プロセッサの１つまたは複数のレベル１キャッシュに対するいずれのディレクトリにおけるいずれの対応するエントリも前記ディレクトリから除去される、請求項４に記載の方法。
【請求項７】
前記レベル２キャッシュは前記プロセッサと同じチップ上に含まれる、請求項１に記載の方法。
【請求項８】
１つまたは複数のレベル１キャッシュと、
レベル２キャッシュと、
ルックアサイド・バッファと、
回路と、
を含み、前記回路は、
前記１つまたは複数のレベル１キャッシュにおける要求されたデータを、前記要求されたデータの要求された有効アドレスを使用してアクセスし、
前記１つまたは複数のレベル１キャッシュが前記要求された有効アドレスに対応する要求されたデータを含んでいない場合、前記要求された有効アドレスを実アドレスに変換し、前記１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対してルックアサイド・バッファが、前記キャッシュ・ラインに対して前記有効アドレスから前記実アドレスへの変換を表す１つの対応するエントリを含み、
前記レベル２キャッシュをアクセスするために、変換された実アドレスを使用する、
ように構成される、プロセッサ。
【請求項９】
前記要求された有効アドレスから実アドレスに変換するために、変換ルックアサイド・バッファが使用される、請求項８に記載のプロセッサ。
【請求項１０】
前記要求された有効アドレスから実アドレスに変換するために、セグメント・ルックアサイド・バッファが使用される、請求項８に記載のプロセッサ。
【請求項１１】
前記ルックアサイド・バッファは、メイン・メモリに格納されたページ・テーブルの一部分をキャッシュするように構成される、請求項８に記載のプロセッサ。
【請求項１２】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記１つまたは複数のレベル１キャッシュにおけるいずれの対応するデータも前記１つまたは複数のレベル１キャッシュを介してアクセスし得なくされ、前記データをアクセスし得なくすることは、前記１つまたは複数のレベル１キャッシュにおけるデータを無効化することおよびフラッシュすることの少なくとも一方を含む、請求項１１に記載のプロセッサ。
【請求項１３】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記１つまたは複数のレベル１キャッシュに対するいずれのディレクトリにおけるいずれの対応するエントリも前記ディレクトリから除去される、請求項１１に記載のプロセッサ。
【請求項１４】
レベル２キャッシュと、
プロセッサと、
を含み、前記プロセッサは、
１つまたは複数のレベル１キャッシュと、
前記１つまたは複数のレベル１キャッシュの各々に収納された各キャッシュ・ラインに対して１つの対応するエントリを含むように構成されたルックアサイド・バッファであって、前記対応するエントリが前記キャッシュ・ラインに対して有効アドレスから実アドレスへの変換を表す、前記ルックアサイド・バッファと、
回路と、
を含み、前記回路は、
前記１つまたは複数のレベル１キャッシュにおける要求されたデータを、前記要求されたデータの要求された有効アドレスを使用してアクセスし、
前記１つまたは複数のレベル１キャッシュが前記要求された有効アドレスに対応する要求されたデータを含んでいない場合、前記要求された有効アドレスを実アドレスに変換し、
前記レベル２キャッシュをアクセスするために、変換された実アドレスを使用する、
ように構成される、システム。
【請求項１５】
前記要求された有効アドレスから実アドレスに変換するために、変換ルックアサイド・バッファが使用される、請求項１４に記載のシステム。
【請求項１６】
前記要求された有効アドレスから実アドレスに変換するために、セグメント・ルックアサイド・バッファが使用される、請求項１４に記載のシステム。
【請求項１７】
前記ルックアサイド・バッファは、メイン・メモリに格納されたページ・テーブルの一部分をキャッシュするように構成される、請求項１４に記載のシステム。
【請求項１８】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記１つまたは複数のレベル１キャッシュにおけるいずれの対応するデータも前記１つまたは複数のレベル１キャッシュを介してアクセスし得なくされ、前記データをアクセスし得なくすることは、前記１つまたは複数のレベル１キャッシュにおけるデータを無効化することおよびフラッシュすることの少なくとも一方を含む、請求項１７に記載のシステム。
【請求項１９】
前記ルックアサイド・バッファからページ・テーブル・エントリが除去されるとき、前記１つまたは複数のレベル１キャッシュに対するいずれのディレクトリにおけるいずれの対応するエントリも前記ディレクトリから除去される、請求項１７に記載のシステム。
【請求項２０】
前記レベル２キャッシュは前記プロセッサと同じチップ上に含まれる、請求項１４に記載のシステム。
【請求項２１】
設計対象の設計、製造、および試験の少なくとも１つを行うためにマシン可読記憶媒体において具体化される設計構造体であって、
１つまたは複数のレベル１キャッシュと、
レベル２キャッシュと、
ルックアサイド・バッファと、
回路と
を含むプロセッサを含み、前記回路が、
前記１つまたは複数のレベル１キャッシュ内の要求されたデータを、前記要求されたデータの有効アドレスを使用してアクセスし、
前記１つまたは複数のレベル１キャッシュが、前記要求された有効アドレスに対応する要求されたデータを含まない場合、前記要求された有効アドレスを実アドレスに変換し、
前記レベル２キャッシュをアクセスするために前記変換された実アドレスを使用する
ように構成され、
前記ルックアサイド・バッファは前記１つまたは複数のレベル１キャッシュにおける各キャッシュ・ラインに対して１つの対応するエントリを含み、前記対応するエントリは前記キャッシュ・ラインに対する前記有効アドレスから前記実アドレスへの変換を表す、
設計構造体。
【請求項２２】
設計対象の設計、製造、および試験の少なくとも１つを行うためにマシン可読記憶媒体において具体化される設計構造体であって、
レベル２キャッシュと、
プロセッサと
を含むシステムを含み、前記プロセッサは、
１つまたは複数のレベル１キャッシュと、
前記１つまたは複数のレベル１キャッシュの各々に収納された各キャッシュ・ラインに対して１つの対応するエントリを含むように構成されたルックアサイド・バッファであって、前記対応するエントリは前記キャッシュ・ラインに対する前記有効アドレスから前記実アドレスへの変換を表す、ルックアサイド・バッファと、
回路と、
を含み、前記回路が、
前記１つまたは複数のレベル１キャッシュ内の要求されたデータを、前記要求されたデータの要求された有効アドレスを使用してアクセスし、
前記１つまたは複数のレベル１キャッシュが、前記要求された有効アドレスに対応する要求されたデータを含まない場合、前記要求された有効アドレスを実アドレスに変換し、
前記レベル２キャッシュをアクセスするために前記変換された実アドレスを使用する
ように構成される、
設計構造体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、プロセッサにおける命令の実行に関するものである。 
【背景技術】
【０００２】
現在のコンピュータ・システムは、一般に、コンピュータ・システムにおいて情報を処理するために使用し得るプロセッサを含む幾つもの集積回路（ＩＣ）を内蔵している。プロセッサによって処理されるデータは、プロセッサによって実行されるコンピュータ命令と、コンピュータ命令を使用してプロセッサにより操作されるデータとを含み得る。コンピュータ命令およびデータは、一般に、コンピュータ・システムにおけるメイン・メモリに格納される。
【０００３】
プロセッサは、一般に、一連の小さいステップで命令を実行することによって命令を処理する。場合によっては、プロセッサによって処理される命令の数を増加させるために（従って、プロセッサの速度を高めるために）、プロセッサがパイプライン化されることがある。パイプライン化はプロセッサ内に個別のステージを設けることを指し、その場合、各ステージが、命令を実行するために必要な１つまたは複数の小さいステップを遂行する。場合によっては、パイプラインは、（他の回路に加えて）、プロセッサ・コアと呼ばれるプロセッサの一部に設けられることもある。
【０００４】
プロセッサは、データおよび命令に対する速いアクセス並びにプロセッサの良好な利用を提供するために、幾つものキャッシュを有することがある。キャッシュは、一般にメイン・メモリよりも小さく、一般にプロセッサと同じダイ（即ち、チップ）上に作成されたメモリである。現在のプロセッサは、一般に幾つものレベルのキャッシュを有する。プロセッサのコアに最も近接して設けられる最速のキャッシュはレベル１キャッシュ（Ｌ１キャッシュ）と呼ばれる。プロセッサは、一般に、Ｌ１キャッシュのほかに、レベル２キャッシュ（Ｌ２キャッシュ）と呼ばれる二次的な大型キャッシュを有する。場合によっては、プロセッサは、他の更なるキャッシュ・レベル（例えば、Ｌ３キャッシュおよびＬ４キャッシュ）を有することもある。
【０００５】
現在のプロセッサは、大きな実アドレスのセットをアクセスするために、ソフトウェア・プログラムが１セットの有効アドレスを使用することを可能にする、アドレス変換を提供する。キャッシュへのアクセス中に、ロードまたはストア命令によって提供される有効アドレスが、実アドレスに変換され、Ｌ１キャッシュにアクセスするために使用され得る。従って、プロセッサは、Ｌ１キャッシュがロード命令またはストア命令によってアクセスされる前に、アドレス変換を行うように構成された回路を含むことがある。しかし、アドレス変換のために、Ｌ１キャッシュに対するアクセス・タイムが増加することがある。更に、各コアがアドレス変換を行うような複数のコアをプロセッサが含む場合、アドレス変換回路を設けるオーバヘッドおよび複数のプログラムを実行しながらアドレス変換を行うオーバヘッドは望ましくないものになることがある。
【０００６】
従って、必要なことは、プロセッサ・キャッシュをアクセスするための方法および装置の改良である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一般的には、プロセッサ・コアをアクセスするための方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の方法の一実施例は、要求されたデータの要求された有効アドレスを使用して、プロセッサの１つまたは複数のレベル１キャッシュにおいてその要求されたデータをアクセスする。プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、その要求された有効アドレスは実アドレスに変換される。ルックアサイド・バッファが、プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対して１つの対応するエントリを含む。対応するエントリは、有効アドレスからキャッシュ・ラインに対する実アドレスへの変換を表す。変換された実アドレスはレベル２キャッシュをアクセスするために使用される。
【０００９】
本発明の一実施例は、１つまたは複数のレベル１キャッシュ、１つのレベル２キャッシュ、およびルックアサイド・バッファを含むプロセッサも提供する。プロセッサは、更に、要求されたデータの要求された有効アドレスを使用して、プロセッサの１つまたは複数のレベル１キャッシュにおける要求されたデータをアクセスするように構成された回路を含む。プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、要求された有効アドレスは実アドレスに変換される。ルックアサイド・バッファは、プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対する対応するエントリを含んでいる。その対応するエントリは、有効アドレスからキャッシュ・ラインに対する実アドレスへの変換を表す。回路は、レベル２のキャッシュをアクセスするためにその変換された実アドレスを使用するようにも構成される。
【００１０】
本発明の一実施例は、１つのレベル２キャッシュおよびプロセッサを含むシステムを提供する。プロセッサは、１つまたは複数のレベル１キャッシュおよびルックアサイド・バッファを含み、ルックアサイド・バッファは、プロセッサの１つまたは複数のレベル１キャッシュの各々に置かれた各キャッシュ・ラインに対して１つの対応するエントリを含むように構成される。対応するエントリは、キャッシュ・ラインに対する有効アドレスから実アドレスへの変換を表す。プロセッサは、更に、要求されたデータの要求された有効アドレスを使用して、プロセッサの１つまたは複数のレベル１キャッシュにおける要求されたデータをアクセスするように構成された回路を含む。プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、要求された有効アドレスは実アドレスに変換される。変換された実アドレスはレベル２キャッシュをアクセスするために使用される。
【００１１】
本発明の一実施例は、設計対象の設計、製造、および試験の少なくとも１つを行うためにマシン可読記憶媒体において具体化された設計構造体を提供する。一般に、設計構造体はプロセッサを含む。プロセッサは、一般に、１つまたは複数のレベル１キャッシュと、レベル２キャッシュと、ルックアサイド・バッファと、回路とを含む。その回路は、プロセッサの１つまたは複数のレベル１キャッシュ内の要求されたデータを、その要求されたデータの要求された有効アドレスを使用してアクセスするように、および、プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、その要求された有効アドレスを実アドレスに変換するように構成される。なお、ルックアサイド・バッファが、プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対して１つの対応エントリを含み、その対応エントリがキャッシュ・ラインに対する有効アドレスから実アドレスへの変換を表す。更に、その回路は、レベル２キャッシュをアクセスするためにその変換された実アドレスを使用するように構成される。
【００１２】
本発明の別の実施例も、設計対象の設計、製造、および試験の少なくとも１つを行うためにマシン可読記憶媒体において具体化された設計構造体を提供する。一般に、システムはレベル２キャッシュおよびプロセッサを含む。そのプロセッサは、一般に、１つまたは複数のレベル１キャッシュと、そのプロセッサの１つまたは複数のレベル１キャッシュの各々に収納された各キャッシュ・ラインに対して１つの対応するエントリ含むように構成されたルックアサイド・バッファと、回路とを含む。なお、その対応エントリはキャッシュ・ラインに対する有効アドレスから実アドレスへの変換を表す。その回路は、プロセッサの１つまたは複数のレベル１キャッシュにおける要求されたデータを、その要求されたデータの要求された有効アドレスを使用してアクセスし、プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合にはその要求された有効アドレスを実アドレスに変換し、レベル２キャッシュをアクセスするためにその変換された実アドレスを使用するように構成される。
【発明を実施するための最良の形態】
【００１３】
本発明は、一般的には、プロセッサにおけるキャッシュ・メモリにアクセスするための方法および装置を提供する。その方法は、要求されたデータの要求された有効アドレスを使用して、プロセッサの１つまたは複数のレベル１キャッシュにおける要求されたデータをアクセスすることを含む。プロセッサの１つまたは複数のレベル１キャッシュがその要求された有効アドレスに対応する要求されたデータを含んでいない場合、要求された有効アドレスは実アドレスに変換される。ルックアサイド・バッファは、プロセッサの１つまたは複数のレベル１キャッシュの各々における各キャッシュ・ラインに対して１つの対応するエントリを含んでいる。対応するエントリは、キャッシュ・ラインに対する有効アドレスから実アドレスへの変換を表す。変換された実アドレスは、レベル２キャッシュをアクセスするために使用される。
【００１４】
以下では、本発明の実施例に対する参照が行われる。しかし、本発明が特定の記述された実施例に限定されないということは当然である。代わりに、下記の特徴および要素のいずれの組み合わせも、それが種々の実施例に関連していても或いは関連していなくても、本発明を実装および実施することを意図するものである。更に、様々な実施例において、本発明は従来技術を越えた多くの利点をもたらす。しかし、本発明の実施例は他の可能な解決法、および／または、従来技術を越えた利点を得ることが可能であるが、特定の利点が所与の実施例によって得られるか否かは本発明を限定するものではない。従って、下記のような視点、特徴、実施例、および利点は単に例示的なものであり、「特許請求の範囲」において明示的に記述される場合を除けば、本発明の要素または限定と見なされるべきではない。同様に、「発明」に対する言及は、本明細書において開示されたすべての発明的な主題を概括したものと解釈されるべきではなく、「特許請求の範囲」において明示的に記述された場合を除けば、本発明の要素または限定であると見なすべきではない。
【００１５】
以下は、添付図面に示された本発明の実施例の詳細な説明である。それらの実施例は例示的なものであって、本発明を明瞭に伝授し得る程度に詳細なものである。しかし、提示された細部の意義は、実施例の予測される変更の程度を限定することを意図するものではなく、むしろ、これの意図するところは、「特許請求の範囲」によって定義された本発明の主旨および範囲内におけるすべての修正物、均等物、および代替物をカバーすることである。
【００１６】
本発明の実施例は、システム、例えば、コンピュータ・システムにおいて利用することが可能であり、そのシステムに関連して説明される。本明細書において使用されるように、システムは、プロセッサおよびキャッシュ・メモリを利用する任意のシステムを含み、パーソナル・コンピュータ、インターネット装置、デジタル・メディア装置、ポータブル・デジタル・アシスタント（ＰＤＡ）、ポータブル音楽／ビデオ・プレーヤ、およびビデオゲーム・コンソールを含み得る。キャッシュ・メモリは、そのキャッシュ・メモリを利用するプロセッサと同じダイ（ＤＩe）上に設置されてもよいが、プロセッサおよびキャッシュ・メモリが種々のダイ（個別のモジュールにおける個別のチップまたは単一のモジュールにおける個別のチップ）の上に設置されてもよい。
【００１７】
複数のプロセッサ・コアおよび複数のＬ１キャッシュを有するプロセッサ（ここでは、各プロセッサ・コアが命令の実行のために複数のパイプラインを使用する）に関しては後述するが、本発明の実施例は、キャッシュを利用する任意のプロセッサが利用し得るものである。なお、そのプロセッサは、単一の処理コアを有するプロセッサを含む。一般に、本発明の実施例は、任意のプロセッサが利用し得るものであり、如何なる特定の構成にも制限されない。更に、Ｌ１命令キャッシュ（Ｌ１ＩキャッシュまたはＩキャッシュ）およびＬ１データ・キャッシュ（Ｌ１ＤキャッシュまたはＤキャッシュ）に分割されたＬ１キャッシュに関しても後述するが、本発明の実施例は、統合Ｌ１キャッシュが利用される構成においても利用することが可能である。更に、Ｌ１キャッシュ・ディレクトリを利用するＬ１キャッシュに関しても後述するが、本発明の実施例は、キャッシュ・ディレクトリが使用されないものにおいても利用することが可能である。
【００１８】
Ａ．例示的システムの概要
図１は、本発明の一実施例によるシステム１００を示すブロック図である。システム１００は、命令およびデータを格納するためのシステム・メモリ１０２と、図形処理のためのグラフィックス処理ユニット１０４と、外部装置と通信するためのＩ／Ｏインターフェース１０６と、命令およびデータを長期保存するための記憶装置１０８と、命令およびデータを処理するためのプロセッサ１１０とを含み得る。
【００１９】
本発明の一実施例によれば、プロセッサ１１０は、１つのＬ２キャッシュ１１２および複数のＬ１キャッシュ１１６を有し得るし、各Ｌ１キャッシュ１１６は複数のプロセッサ・コア１１４の１つによって利用される。一実施例によれば、各プロセッサ・コア１１４はパイプライン化されてもよく、その場合、各命令は一連の小さいステップで遂行され、各ステップは異なるパイプライン・ステージによって遂行される。
【００２０】
図２は、本発明の一実施例によるプロセッサ１１０を示すブロック図である。単純化するために、図２は、プロセッサ１１０の単一のコア１１４を示し、そのコア１１４に関連して説明される。一実施例では、各コア１１４は同じもの（例えば、同じパイプライン・ステージを有する同じパイプラインを含むもの）であってもよい。別の実施例では、各コア１１４は異なるもの（例えば、相異なるパイプライン・ステージを有する相異なるパイプラインを含むもの）であってもよい。
【００２１】
本発明の一実施例では、Ｌ２キャッシュ１１２は、プロセッサ１１０によって使用される命令およびデータの一部を含み得る。場合によっては、プロセッサ１１０は、Ｌ２キャッシュ１１２に含まれていない命令およびデータを要求し得る。要求された命令およびデータがＬ２キャッシュ１１２に含まれていない場合、その要求された命令およびデータは（より高いレベルのキャッシュまたはシステム・メモリ１０２のいずれかから）検索され、Ｌ２キャッシュ１１２に収納されてもよい。
【００２２】
上記ように、場合によっては、Ｌ２キャッシュ１１２は、各々が個別のＬ１キャッシュ１１６を使用する１つまたは複数のプロセッサ・コア１１４によって共有されることもある。一実施例では、プロセッサ１１０は、１つまたは複数のプロセッサ・コア１１４およびＬ１キャッシュ１１６によって共用される回路をネスト２１６内に設け得る。従って、所与のプロセッサ・コア１１４がＬ２キャッシュ１１２からの命令を要求するとき、その命令は、先ず、１つまたは複数のプロセッサ・コア１１４によって共用されるネスト２１６内のプリレデコーダ兼スケジューラ２２０によって処理され得る。ネスト２１６は、更に詳しく後述されるＬ２キャッシュ・アクセス回路２１０も含み得るし、その回路２１６は、共用のＬ２キャッシュ１１２をアクセスするために１つまたは複数のプロセッサ・コア１１４によっても使用されることもある。
【００２３】
本発明の一実施例では、命令は、Ｉラインと呼ばれるグループでＬ２キャッシュ１１２からフェッチすることが可能である。同様に、データは、Ｄラインと呼ばれるグループでＬ２キャッシュ１１２からフェッチすることが可能である。図１に示されたＬ１キャッシュ１１６は、２つの部分、即ち、Ｉラインを格納するためのＬ１命令キャッシュ（Ｉキャッシュ）２２２およびＤラインを格納するためのＬ１データ・キャッシュ（Ｄキャッシュ）２２４に分割することが可能である。ＩラインおよびＤラインは、Ｌ２キャッシュ・アクセス回路２１０を使用してＬ２キャッシュ１１２からフェッチすることが可能である。
【００２４】
Ｌ２キャッシュ１１２から検索されたＩラインは、プリデコーダ兼スケジューラ２２０によって処理され、Ｉキャッシュ２２２に収納されてもよい。プロセッサのパフォーマンスを更に改善するために、命令は、例えば、ＩラインがＬ２（または、もっと高レベルの）キャッシュから検索されるとき、および命令がＬ１キャッシュ１１６に収納される前に、プリデコードされてもよい。そのようなプリデコーディングは、アドレス生成機能、ブランチ予測機能、および、命令実行を制御するディスパッチ情報（フラッグのセット）として得られるスケジューリング機能（命令が発生されるべき順序を決定する）のような様々な機能を含み得る。例えば、本発明の実施例は、デコーディングがプロセッサにおける別のロケーションで行なわれる場合にも、例えば、命令がＬ１キャッシュ１１６から検索された後にデコーディングが行なわれる場合にも使用し得る。
【００２５】
場合によっては、プリデコーダ兼スケジューラ２２０は、複数のコア１１４とＬ１キャッシュ１１６との間で共用し得る。同様に、Ｌ２キャッシュ１１２からフェッチされるＤラインはＤキャッシュ２２４に収納可能である。各ＩラインおよびＤラインにおける１つのビットは、Ｌ２キャッシュ１１２における情報のラインがＩラインまたはＤラインのどちらであるかを追跡するためにも使用し得る。任意選択的には、Ｌ２キャッシュ１１２からＩラインおよび／またはＤラインにおけるデータをフェッチする代わりに、データは、別の方法で、例えば、少量の、多量の、または可変量のデータをフェッチすることによってＬ２キャッシュ１１２からフェッチされてもよい。
【００２６】
一実施例では、Ｉキャッシュ２２２およびＤキャッシュ２２４は、現在どのＩラインおよびＤラインがＩキャッシュ２２２およびＤキャッシュ２２４にあるかを追跡するために、それぞれ、Ｉキャッシュ・ディレクトリ２２３およびＤキャッシュ・ディレクトリ２２５を有し得る。ＩラインまたはＤラインがＩキャッシュ２２２またはＤキャッシュ２２４に加えられるとき、対応するエントリがＩキャッシュ・ディレクトリ２２３またはＤキャッシュ・ディレクトリ２２５に収納される。ＩラインまたはＤラインがＩキャッシュ２２２またはＤキャッシュ２２５から除去されるとき、Ｉキャッシュ・ディレクトリ２２３またはＤキャッシュ・ディレクトリ２２５における対応するエントリが除去される。Ｄキャッシュ・ディレクトリ２２５を利用するＤキャッシュ２２４に関しては後述されるが、本発明の実施例は、Ｄキャッシュ・ディレクトリ２２５が利用されない場合にも利用し得る。そのような場合、Ｄキャッシュ２２４自体に格納されたデータは、どのようなＤラインがＤキャッシュ２２４に存在するかを表し得る。
【００２７】
一実施例では、コア１１４のための命令をフェッチするために、命令フェッチ回路２３６が使用可能である。例えば、命令フェッチ回路２３６は、コア１１４において実行されている現在の命令を追跡するプログラム・カウンタを含み得る。ブランチ命令に遭遇するとき、プログラム・カウンタを変更するために、コア１１４内のブランチ・ユニットが使用可能である。Ｌ１Ｉキャッシュ２２２からフェッチされた命令を格納するために、Ｉライン・バッファ２３２が使用可能である。後述のようにコア１１４へ並行に送出されるＩラインバッファ２３２における命令を命令グループにグループ化するために、送出キュー２３４および関連の回路が使用可能である。場合によっては、送出キュー２３４は、適切な命令グループを形成するためにプリデコーダ兼スケジューラ２２０によって提供される情報を使用し得る。
【００２８】
送出キュー２３４からの命令を受け取ることに加えて、コア１１４は種々のロケーションからデータを受け取り得る。コア１１４がデータ・レジスタからのデータを要求する場合、データを得るためにレジスタ・ファイル２４０が使用可能である。コア１１４がメモリ・ロケーションからのデータを要求する場合、Ｄキャッシュ２２４からデータをロードするために、キャッシュ・ロードおよびストア回路２５０が使用可能である。そのようなロードが行なわれる場合、必要なデータを求める要求がＤキャッシュ２２４に送出されることが可能である。同時に、所望のデータがＤキャッシュ２２４において見つかったかどうかを決定するために、Ｄキャッシュ・ディレクトリ２２５がチェックされる。Ｄキャッシュ２２４が所望のデータを含んでいる場合、Ｄキャッシュ・ディレクトリ２２５は、Ｄキャッシュ２２４が所望のデータを含んでいるということおよびＤキャッシュ・アクセスがその後の或る時点で完了し得るということを表す。Ｄキャッシュ２２４が所望のデータを含んでいない場合、Ｄキャッシュ・ディレクトリ２２５は、Ｄキャッシュ２２４が所望のデータを含んでいないということを表す。Ｄキャッシュ・ディレクトリ２２５はＤキャッシュ２２４よりも速くアクセスされることが可能であるので、Ｄキャッシュ・アクセスが完了する前に所望のデータに対する要求を（例えば、Ｌ２アクセス回路２１０を使用して）Ｌ２キャッシュ１１２に送出し得る。
【００２９】
場合によっては、データがコア１１４において修正されることもある。修正されたデータは、レジスタ・ファイル２４０書き込まれるかまたはメモリ１０２に格納される。データをレジスタ・ファイル２４０に書き戻すために書き戻し回路２３８が使用可能である。場合によっては、書き戻し回路２３８は、データをＤキャッシュに書き戻すためにキャッシュ・ロードおよびストア回路２５０を利用し得る。任意選択的には、コア１１４が、ストアを行うためにキャッシュ・ロードおよびストア回路２５０直接アクセスし得る。場合によっては、命令をＩキャッシュ２２２に書き戻すためにも、書き戻し回路２３８が使用可能である。
【００３０】
上記のように、送出キュー２３４は、命令グループを形成し且つ形成された命令グループをコア１１４に送出するために使用し得る。送出キュー２３４は、Ｉラインおける命令を回転することおよび組み合せることによって適切な命令グループを形成するための回路も含み得る。送出グループの形成は、送出グループにおける命令相互間の従属性および、更に詳しく後述するように、命令の順序付けから達成することが可能である最適化のような幾つかの事柄を勘案し得る。一旦送出グループが形成されると、その送出グループはプロセッサ・コア１１４と並行してディスパッチされてもよい。場合によっては、命令グループはコア１１４における各パイプラインに対して１つの命令を含み得る。任選択的に、命令グループは少数の命令を含み得る。
【００３１】
本発明の一実施例によれば、１つまたは複数のプロセッサ・コア１１４はカスケード型遅延実行パイプライン構成を利用し得る。図３に示される例では、コア１１４は４つのパイプラインをカスケード型構成で含む。任意選択的には、このような構成において、少数（２つ以上）のパイプライン或いは多数（４つ以上）のパイプラインが使用可能である。更に、図３に示されるパイプラインの物理的なレイアウトは例示的なものであって、必ずしも、カスケード型遅延実行パイプライン・ユニットの実際の物理的なレイアウトを暗示するものではない。
【００３２】
一実施例では、カスケード型遅延実行パイプライン構成における各パイプライン（Ｐ０、Ｐ１、Ｐ２、およびＰ３）は実行ユニット３１０を含み得る。実行ユニット３１０は、所与のパイプラインに対して１つまたは複数の機能を遂行し得る。例えば、実行ユニット３１０は命令のフェッチおよびデコードのすべて或いは一部分を遂行し得る。実行ユニットによって遂行されるデコードは、複数のコア１１４の間で共用されるか、または任意選択的に単一のコア１１４によって利用されるプリデコーダ兼スケジューラ２２０によって共用されてもよい。実行ユニット３１０は、レジスタ・ファイル２４０からデータを読み取り、アドレスを計算し、整数演算機能を（例えば、演算論理ユニット即ちＡＬＵを使用して）遂行し、浮動小数点演算機能を遂行し、命令ブランチを実行し、データ・アクセス機能（例えば、メモリからのロードおよびストア）を遂行し、データを（例えば、レジスタ・ファイル２４０における）レジスタに書き戻すことができる。場合によっては、コア１１４は、命令フェッチ回路２３６、レジスタ・ファイル２４０、キャッシュ・ロードおよびストア回路２５０、書き戻し回路２３８、並びにこれらの機能を遂行するための任意の他の回路を利用し得る。
【００３３】
一実施例では、各実行ユニット３１０が同じ機能を遂行し得る（例えば、各実行ユニット３１０がロード／ストア機能を遂行し得る）。任意選択的に、各実行ユニット３１０（または、実行ユニットの種々のグループ）は種々の機能セットを遂行し得る。更に、場合によっては、各コア１１４における実行ユニット３１０は、他のコアに設けられた実行ユニット３１０と同じであってもよく、またはそれとは異なっていてもよい。例えば、或るコアでは、実行ユニット３１００および３１０２がロード／ストアおよび演算機能を遂行し得るし、一方、実行ユニット３１０１および３１０２が演算機能だけを遂行し得る。
【００３４】
一実施例では、図示のように、実行ユニット３１０における実行は、他の実行ユニット３１０に関して遅延態様でも遂行可能である。図示の構成は、カスケード型遅延構成とも呼ばれることもあるが、図示のレイアウトは、必ずしも、実行ユニットの実際の物理的構成を表すものではない。そのような構成では、命令グループにおける４つの命令（便宜上、Ｉ０、Ｉ１、Ｉ２、Ｉ３と呼ばれる）がパイプラインＰ０、Ｐ１、Ｐ２、Ｐ３に並行して送出される場合、各命令を他の各命令に関して遅延態様で実行することが可能である。それは、例えば、命令Ｉ０が、先ず、パイプラインＰ０に対する実行ユニット３１００において実行され、次に、命令Ｉ１が、パイプラインＰ１に対する実行ユニット３１０１において実行される、等々である。その後、命令Ｉ０が実行ユニット３１００において実行され終わった後、実行ユニット３１００が命令Ｉ１を実行し始める、等々となり、従って、コア１１４に並行して送出された命令が互いに関して遅延態様で実行される。
【００３５】
一実施例では、或る実行ユニット３１０は互いに関して遅延し得るし、一方、他の実行ユニット３１０は互いに関して遅延し得ない。第２命令の実行が第１命令の実行に従属する場合、転送パス３１２は、第１の命令から第２の命令に結果を転送するために使用可能である。図示の転送パス３１２は単に例示的なものであり、コア１１４は、実行ユニット３１０における種々のポイントから他の実行ユニット３１０への、或いは同じ実行ユニット３１０への、更なる転送パスを有してもよい。
【００３６】
一実施例では、実行ユニット３１０によって実行されていない命令は、遅延キュー３２０またはターゲット遅延キュー３３０に保持されることが可能である。遅延キュー３２０は、実行ユニット３１０によって実行されていない命令グループにおける命令を保持するために使用可能である。例えば、命令Ｉ０が実行ユニット３１００において実行されている間、命令Ｉ１、Ｉ２、およびＩ３は遅延キュー３３０に保持されることが可能である。一旦命令が遅延キュー３３０を通過してしまうと、その命令は適切な実行ユニット３１０に送出され、実行されることが可能である。ターゲット遅延キュー３３０は、実行ユニット３１０によって既に実行された命令の結果を保持するために使用し得る。場合によっては、ターゲット遅延キュー３３０における結果が処理のために実行ユニット３１０に転送され、それの無効化が適切である場合には無効化される。同様に、状況によっては、後述のように遅延キュー３２０における命令を無効化することも可能である。
【００３７】
一実施例では、命令グループにおける命令の各々が遅延キュー３２０、実行ユニット３１０、およびターゲット遅延キュー３３０を通過した後、その結果（例えば、データ、および、後述のように、命令）がレジスタ・ファイル或いはＬ１Ｉキャッシュ２２２、および／または、Ｄキャッシュ２２４のいずれかに書き戻されることがある。場合によっては、レジスタの最近修正された値を書き戻し且つ無効化された結果を廃棄するために書き戻し回路３０６を使用してもよい。
【００３８】
Ｂ．キャッシュ・メモリのアクセス
本発明の一実施例では、各プロセッサ・コア１１４に対するＬ１キャッシュ１１６は、有効アドレスを使用してアクセスされ得る。Ｌ１キャッシュ１１６が個別のＬ１Ｉキャッシュ２２２およびＬ１Ｄキャッシュ２２４を使用する場合、キャッシュ２２２および２２４の各々も有効アドレスを使用してアクセスされ得る。場合によっては、プロセッサ・コア１１４による命令の実行により直接与えられる有効アドレスを使ってＬ１キャッシュ１１６をアクセスすることによって、アドレス変換により生じた処理オーバーヘッドはＬ１キャッシュ・アクセス中に除去され、それによって、プロセッサ・コア１１４がＬ１キャッシュ１１６をアクセスする速度を増加させ、消費電力を減少させ得る。
【００３９】
場合によっては、複数のプログラムが、種々のデータをアクセスするために同じ有効アドレスを使用し得る。例えば、第１プログラムは、第１実アドレスＲＡ１に対応するデータをアクセスするために第１有効アドレスＥＡ１が使用される、ということを表す第１アドレス変換を使用し得る。第２のプログラムは、ＥＡ１が第２実アドレスＲＡ２をアクセスするために使用される、ということを表すために第２アドレス変換を使用し得る。各プログラムに対して種々のアドレス変換を使用することによって、プログラムの各々に対する有効アドレスは、大きい実アドレス空間における種々の実アドレスに変換され、それによって、種々のプログラムが間違ったデータを不注意にアクセスすることを防ぐことが可能である。アドレス変換は、例えば、システム・メモリ１０２におけるページ・テーブルおいて維持されてもよい。プロセッサ１１０によって使用されるアドレス変換の部分は、例えば、変換ルックアサイド・バッファまたはセグメント・ルックアサイド・バッファのようなルックアサイド・バッファにおいてキャッシュすることが可能である。
【００４０】
場合によっては、有効アドレスを使用してＬ１キャッシュ１１６におけるデータがアクセスされてもよいので、同じ有効アドレスを使用する種々のプログラムが間違ったデータを不注意にアクセスしないようにするという要望がある。例えば、第１プログラムがＬ１キャッシュ１１６をアクセスするためにＥＡ１、即ち、第２プログラムによっても使用されるＲＡ２と呼ぶべきアドレス、を使用する場合、第１プログラムは、ＲＡ２に対応するデータではなくＲＡ１に対応するデータをＬ１キャッシュ１１６から受け取らなければならない。
【００４１】
従って、本発明の一実施例では、プロセッサ１１０は、コア１１４に対してＬ１キャッシュ１１６をアクセスするためにプロセッサ１１０のコア１１４において使用されている各有効アドレスに対して、Ｌ１キャッシュ１１６におけるデータが、実行されているプログラムによって使用されるアドレス変換のための正しいデータである、ということを保証することができる。従って、有効アドレスＥＡ１が実アドレスＲＡ１に変換するということを表す第１プログラムに対するエントリを、プロセッサ１１０によって使用されるルックアサイド・バッファが含む場合、プロセッサ１１０は、有効アドレスＥＡ１を有するとしてマークされたＬ１キャッシュ１１６におけるいずれのデータも実アドレスＲＡ１に格納された同じデータである、ということを保証し得る。ＥＡ１に対するアドレス変換エントリがルックアサイド・バッファから除去される場合、対応するデータは、それが存在すれば、Ｌ１キャッシュ１１６から取り除かれ、それによって、Ｌ１キャッシュ１１６におけるデータがすべてルックアサイド・バッファに有効な変換エントリを有する、ということことを保証することができる。アドレス変換のために使用されるルックアサイド・バッファにおける対応するエントリによりＬ１キャッシュ１１６におけるすべてのデータがマップされる、ということを保証することによって、Ｌ１キャッシュ１１６は、所与のプログラムがＬ１キャッシュ１１６からの間違ったデータを不注意に受け取ることを防ぐと同時に、有効アドレスを使用してアクセスされることが可能である。
【００４２】
図４は、本発明の一実施例に従ってＬ１キャッシュ１１６（例えば、Ｄキャッシュ２２４）をアクセスするためのプロセス４００を示すフローチャートである。プロセス４００が開始すると、ステップ４０２において、アクセスされるべきデータの有効アドレスを含むアクセス命令が受け取られる。アクセス命令は、プロセッサ・コア１１４が受け取るロード命令或いはストア命令であってもよい。ステップ４０４において、アクセス命令は、プロセッサ・コア１１４により、例えば、ロード・ストア機能を有する実行ユニット３１０の１つにおいて実行される。
【００４３】
ステップ４０６において、プロセッサ・コア１１４に対するＬ１キャッシュ１１６が、アクセス命令の有効アドレスに対応するデータを含むかどうかを決定するために、そのアクセス命令の有効アドレスはアドレス変換なしで使用されることが可能である。ステップ４０８において、Ｌ１キャッシュ１１６が有効アドレスに対応するデータを含むという決定が行われる場合、ステップ４１０において、そのアクセスのためのデータがＬ１キャッシュ１１６から提供される。しかし、ステップ４０８において、Ｌ１キャッシュ１１６がそのデータを含まないという決定が行われる場合、ステップ４１２において、有効アドレスに対応するデータを検索する要求がＬ２キャッシュ・アクセス回路２１０に送られる。Ｌ２キャッシュ・アクセス回路２１０は、例えば、Ｌ２キャッシュ１１２からデータをフェッチするか、またはより高いレベルのキャッシュ・メモリ階層から、例えば、システム・メモリ１０２からデータを検索し、その検索されたデータをＬ２キャッシュ１１２に収納し得る。次に、ステップ４１４において、そのアクセス命令に対するデータがＬ２キャッシュ１１２から提供されることが可能である。
【００４４】
図５は、本発明の一実施例に従って、有効アドレスを使用してＬ１Ｄキャッシュ２２４にアクセスするための回路を示すブロック図である。上記のように、本発明の実施例は、統合されたＬ１キャッシュ１１６或いはＬ１Ｉキャッシュ２２２が有効アドレスによってアクセスされる場合にも使用し得る。一実施例では、Ｌ１Ｄキャッシュ２２４が、バンク０ ５０２およびバンク１ ５０４のような複数のバンクを含み得る。Ｌ１Ｄキャッシュ２２４は、例えば、Ｌ１Ｄキャッシュ２２４に適用されたロード・ストア有効アドレス（ＬＳ０、ＬＳ１、ＬＳ２、ＬＳ３）に従って２つの４倍長ワードまたは４つの２倍長ワード（ＤＷ０、ＤＷ１、ＤＷ０’、ＤＷ１’）を読取るために使用することができる複数のポートを含み得る。Ｌ１Ｄキャッシュ２２４は、ダイレクト・マップされたセット・アソシエイティブ・キャッシュまたは完全アソシエイティブ・キャッシュであってもよい。
【００４５】
一実施例では、Ｄキャッシュ・ディレクトリ２２５は、Ｌ１Ｄキャッシュ２２４をアクセスするために使用することが可能である。例えば、要求されたデータに対する有効アドレスＥＡがディレクトリ２２５に提供されることがある。ディレクトリ２２５もダイレクト・マップされたセット・アソシエイティブ・キャッシュまたは完全アソシエイティブ・キャッシュであってもよい。ディレクトリ２２５がアソシエイティブである場合、有効アドレスの一部分（ＥＡ  ＳＥＬ）は、要求されたデータに関する情報にアクセスするために、ディレクトリ２２５に対する選択回路５１０によって使用されてもよい。ディレクトリ２２５が、要求されたデータの有効アドレスに対応するエントリを含んでいない場合、ディレクトリ２２５は、例えば、より高いレベルのキャッシュ階層から（例えば、Ｌ２キャッシュ１１２或いはシステム・メモリ１０２から）データを要求するために使用されるミス信号をアサートし得る。しかし、ディレクトリ２２５が、要求されたデータの有効アドレスに対応するエントリを含んでいる場合、エントリは、要求されたデータを提供するためにＬ１Ｄキャッシュ２２４の選択回路５０６および５０８によって使用されることが可能である。
【００４６】
本発明の一実施例では、Ｌ１キャッシュ１１６、Ｌ１Ｄキャッシュ２２４、および／または、Ｌ１Ｉキャッシュ２２２もスプリット・キャッシュ・ディレクトリを使用してアクセスされることが可能である。例えば、キャッシュ・ディレクトリへのアクセスを分割することによって、ディレクトリへのアクセスはより速く行なわれ、それによって、キャッシュ・メモリ・システムをアクセスするときにプロセッサ１１０のパフォーマンスを改善し得る。有効アドレスによってキャッシュをアクセスすることに関して説明したが、スプリット・キャッシュ・ディレクトリは、任意のタイプのアドレス（例えば、実アドレスまたは有効アドレス）によってアクセスされる任意のキャッシュ・レベル（例えば、Ｌ１、Ｌ２等）を用いて使用されてもよい。
【００４７】
図６および図７は、本発明の一実施例に従って、スプリット・ディレクトリを使用してキャッシュにアクセスするためのプロセス６００を示すフローチャートである。プロセス６００が開始すると、ステップ６０２において、キャッシュをアクセスする要求が受け取られる。要求は、アクセスされるべきデータのアドレス（例えば、実アドレスまたは有効アドレス）を含み得る。次に、ステップ６０４において、そのアドレスの第１部分（例えば、上位桁ビットまたは下位桁ビット）が、キャッシュに対する第１ディレクトリへのアクセスを行うために使用される。第１ディレクトリはアドレスの一部分を用いてアクセスすることが可能であるので、第１ディレクトリのサイズは縮小され、それによって、第１ディレクトリがより大きいディレクトリよりも速くアクセスされることを可能にする。
【００４８】
ステップ６２０において、第１ディレクトリが、要求されたデータのアドレスの第１部分に対応するエントリを含んでいるかどうか、に関する決定が行われる。ディレクトリが第１部分に対するエントリを含んでいないという決定が行われる場合、ステップ６２４において、キャッシュ・ミスを表す第１信号をアサートすることが可能である。キャッシュ・ミスを表す第１信号を検知したことに応答して、ステップ６２８において、要求されたデータをフェッチするという要求がより高いレベルのキャッシュ・メモリに送られる。上記のように、第１ディレクトリが小さく且つ大きいディレクトリより速くアクセスされ得るので、キャッシュ・ミスを表す第１信号をアサートし、より高いレベルのキャッシュからメモリをフェッチし始めるべきであるかどうかに関するの決定をより速く行うことができる。第１ディレクトリに対するアクセス・タイムが短いために、第１信号は早期ミス信号とも呼ばれ得る。
【００４９】
第１ディレクトリが第１部分に対するエントリを含んでいる場合、ステップ６０８において、第１ディレクトリへのアクセスからの結果を使用してキャッシュからのデータを選択することが可能である。上記のように、第１ディレクトリは小さく且つ大きなディレクトリより速くアクセスされるので、キャッシュからのデータの選択はより速く行うことが可能である。従って、キャッシュ・アクセスは、大きい統合ディレクトリを利用するシステムの場合よりも速く完了し得る。
【００５０】
場合によっては、アドレスの一部分（例えば、アドレスの上位桁ビット）を使用して、キャッシュからのデータの選択が行なわれるので、キャッシュから選択されたデータは、実行されているプログラムによって要求されたデータと一致しないことがある。例えば、２つのアドレスが同じ上位桁ビットを持つことがあり得るが、下位桁ビットは異なることがある。選択されたデータが、要求されたデータに対するアドレスの下位桁ビットとは異なる下位桁ビットを有するアドレスを持つ場合、選択されたデータは要求されたデータと一致し得ない。従って、場合によっては、選択されたデータがその要求されたデータであるという高い確率は存在するが、それの絶対的な確信は存在しないので、キャッシュからのデータの選択は推測的なものであると考えることができる。
【００５１】
一実施例では、正しいデータがキャッシュから選択されたということを確認するために、キャッシュに対する第２ディレクトリを使用してもよい。例えば、第２ディレクトリは、ステップ６１０において、アドレスの第２部分を用いてアクセスすることが可能である。ステップ６２２において、第２ディレクトリが、第１ディレクトリからのエントリと一致するアドレスの第２部分に対応するエントリを含んでいるかどうかに関する決定が行われる。例えば、第１ディレクトリおよび第２ディレクトリにおけるエントリはタグを付加されてもよく、或いは各ディレクトリにおける対応するロケーションに格納されてもよく、それによって、アドレスの第１部分およびアドレスの第２部分を含む単一の一致アドレスにそのエントリが対応するということを表す。
【００５２】
第２ディレクトリがアドレスの第２部分に対応する一致エントリを含んでいない場合、ステップ６２６において、キャッシュ・ミスを表す第２信号がアサートされてもよい。上記第１信号がアサートされないときでも、第２信号がアサートされるので、第２信号は遅延キャッシュ・ミス信号と呼ばれることもある。ステップ６２８において、要求されたデータをＬ２キャッシュ１１２のような高いレベルのキャッシュ・メモリからフェッチするという要求を送るために、第２信号を使用することも可能である。第２信号は、誤って選択されたデータが、別のメモリ・ロケーションに格納されること、レジスタに格納されること、またはオペレーションにおいて使用されることを防ぐために使用されてもよい。ステップ６３０において、要求されたデータが高いレベルのキャッシュ・メモリから提供される。
【００５３】
第２ディレクトリがアドレスの第２部分に対応する一致したエントリを含んでいる場合、ステップ６１４において第３信号がアサートされる。第３信号は、第１ディレクトリを使用して選択されたデータが要求されたデータと一致するということを確認し得る。ステップ６１６では、キャッシュ・アクセス要求に対する選択されたデータをキャッシュから供給することが可能である。例えば、選択されたデータは、演算オペレーションにおいて使用され、別のメモリ・アドレスに格納され、或いはレジスタに格納されてもよい。
【００５４】
図６および図７に示され且つ上述されたプロセス６００のステップに関して、提供された順序は単に例示的なものである。一般に、それらのステップは任意の適切な順序で遂行されてもよい。例えば、選択されたデータは、第１ディレクトリがアクセスされた後で、且つその選択が第２ディレクトリによって確認される前に、提供される。選択され且つ提供されたデータが要求されたデータではないということを第２ディレクトリが表す場合、その後のステップは、当業者には明らかなように、推測的に選択されたデータを用いて遂行されたすべてのアクションを取消すために行われる。更に、場合によっては、第２ディレクトリは第１ディレクトリの前にアクセスされてもよい。
【００５５】
場合によっては、上記のように、複数のアドレスが同じ上桁ビットまたは下位桁ビットを有することがある。従って、第１ディレクトリは、アドレスの所与の部分（例えば、第１ディレクトリおよび第２ディレクトリの構成の仕方次第で上位桁ビットまたは下位桁ビット）と一致する複数のエントリを有することがある。一実施例では、第１ディレクトリが、要求されたデータに対するアドレスの所与の部分と一致する複数のエントリを含んでいる場合、第１ディレクトリからエントリの１つが選択され、キャッシュからデータを選択するために使用される。例えば、第１ディレクトリにおける複数のエントリのうちの最近使用されたエントリがキャッシュからデータを選択するために使用されてもよい。その選択は、要求されたデータのアドレスに対する正しいエントリが使用されたかどうかを決定するために後で確認されてもよい。
【００５６】
第１ディレクトリからのエントリの選択が正しくなかった場合、１つまたは複数の他のエントリがキャッシュからデータを選択するために使用されてもよく、その１つまたは複数の他のエントリは、それが、要求されたデータに対するアドレスと一致するかどうかを決定するために使用されてもよい。第１ディレクトリにおける他のエントリの１つが要求されたデータに対するアドレスと一致し、更に第２ディレクトリからの対応するエントリを用いて確認される場合、その選択されたデータは、その後のオペレーションにおいて使用することが可能である。第１ディレクトリにおけるいずれのエントリも第２ディレクトリにおけるエントリと一致しない場合、キャッシュ・ミスが信号され、データがより高いレベルのキャッシュ・メモリ階層からフェッチされる。
【００５７】
図８は、本発明の一施例に従って、第１Ｄキャッシュ・ディレクトリ７０２および第２Ｄキャッシュ・ディレクトリ７１２を含むスプリット・キャッシュ・ディレクトリを示すブロック図である。一実施例では、第１Ｄキャッシュ・ディレクトリ７０２は有効アドレスの上位桁ビット（ＥＡ上位）を用いてアクセスされ、一方、第２Ｄキャッシュ・ディレクトリ７１２は有効アドレスの下位桁ビット（ＥＡ下位）を用いてアクセスされる。上述したように、実施例は、第１Ｄキャッシュ・ディレクトリ７０２および第２ Ｄキャッシュ・ディレクトリ７１２が実アドレスを使ってアクセスされる場合にも使用し得る。第１および第２Ｄキャッシュ・ディレクトリ７０２および７１２は、ダイレクト・マップ・ディレクトリ、セット・アソシエイティブ・ディレクトリ、またはフル・アソシエイティブ・ディレクトリであってもよい。ディレクトリ７０２および７１２は、それぞれのディレクトリ７０２および７１２からデータ・エントリを選択するために使用される選択回路７０４および７１４を含み得る。
【００５８】
上述したように、Ｌ１Ｄキャッシュ２２４へのアクセス中、そのアクセスのためのアドレスの第１部分（ＥＡ上位）は第１Ｄキャッシュ・ディレクトリ７０２をアクセスするために使用される。第１Ｄキャッシュ・ディレクトリ７０２がそのアドレスに対応するエントリを含んでいる場合、そのエントリは、選択回路５０６および５０８を介してＬ１Ｄキャッシュ２２４をアクセスするために使用することが可能である。第１Ｄキャッシュ・ディレクトリ７０２がそのアドレスに対応するエントリを含んでいない場合、早期ミス信号と呼ばれるミス信号が上述のようにアサートされる。早期ミス信号は、例えば、高いレベルのキャッシュ・メモリ階層からのフェッチを開始するために、および／または、キャッシュ・ミスを表す例外を生成するために使用されてもよい。
【００５９】
アクセス中に、アクセスのためのアドレスの第２部分（ＥＡ下位）は第２Ｄキャッシュ・ディレクトリ７１２をアクセスするために使用されてもよい。そのアドレスに対応する第２Ｄキャッシュ・ディレクトリ７１２からのいずれのエントリも、比較回路７２０を使って第１Ｄキャッシュ・ディレクトリ７２０からのエントリと比較される。第２Ｄキャッシュ・ディレクトリ７１２がそのアドレスに対応するエントリを含んでいない場合、または、第２Ｄキャッシュ・ディレクトリ７１２からのエントリが第１Ｄキャッシュ・ディレクトリ７０２からのエントリと一致しない場合、遅延ミス信号とも呼ばれるミス信号がアサートされる。しかし、第２Ｄキャッシュ・ディレクトリ７１２がそのアドレスに対応するエントリを含んでいる場合、および、第２Ｄキャッシュ・ディレクトリ７１２からのエントリが第１Ｄキャッシュ・ディレクトリ７０２からのエントリと一致する場合、Ｌ１キャッシュ２２４からの選択されたデータが要求されたデータのアドレスに対応するということを表す選択確認信号と呼ばれる信号をアサートすることが可能である。
【００６０】
図９は、本発明の一実施例に従ってキャッシュ・アクセス回路を示すブロック図である。上述のように、要求されたデータがＬ１キャッシュ１１６に収納されていない場合、そのデータを求める要求がＬ２キャッシュ１１２に送られる。更に、場合によっては、プロセッサ１１０は、例えば、プロセッサ１１０によって実行されているプログラムの予測された実行パスに基づいて、Ｌ１キャッシュ１１６に命令をプリフェッチするように構成されてもよい。従って、Ｌ２キャッシュ１１２は、データがプリフェッチされてＬ１キャッシュ１１６に入れられることを求める要求を受け取ることもある。
【００６１】
一実施例では、Ｌ２キャッシュ１１２からのデータを求める要求をＬ２キャッシュ・アクセス回路２１０が受け取ることもある。上述のように、本発明の一実施例では、プロセッサ・コア１１４およびＬ１キャッシュ１１６は、そのデータに対する有効アドレスを使用してデータをアクセスするように構成されてもよく、一方、Ｌ２キャッシュ１１２はデータに対する実アドレスを使用してアクセスされてもよい。従って、Ｌ２キャッシュ・アクセス回路２１０は、コア１１４から受け取った有効アドレスを実アドレスに変換するように構成されるアドレス変換制御回路８０６を含み得る。例えば、そのアドレス変換制御回路は、変換を行うためにセグメント・ルックアサイド・バッファ８０２、および／または、変換ルックアサイド・バッファ８０４におけるエントリを使用し得る。アドレス変換制御回路８０６が、受け取った有効アドレスを実アドレスに変換した後、その実アドレスは、Ｌ２キャッシュ１１２をアクセスするために使用することができる。
【００６２】
上述のように、本発明の一実施例では、プロセッサ・コア１１４によって実行されているスレッドが、データの有効アドレスを使用すると同時に正しいデータをアクセスするということを保証するために、プロセッサ１１０は、Ｌ１キャッシュ１１６におけるすべての有効データ・ラインがＳＬＢ８０２、および／または、ＴＬＢ８０４における有効なエントリによってマップされるということを保証し得る。従って、エントリがルックアサイド・バッファ８０２および８０４の１つからキャスト・アウトされるかまたはその１つにおいて無効にされるとき、アドレス変換制御回路８０６は、それぞれのルックアサイド・バッファ８０２、８０４からのラインの有効アドレスを提供する（ＥＡを無効にする）ように、および、データ・ラインが存在する場合には、そのデータ・ラインがＬ１キャッシュ１１６および／またはＬ１キャッシュ・ディレクトリから（例えば、Ｉキャッシュ・ディレクトリ２２３および／またはＤキャッシュ・ディレクトリ２２５から）除去されなければならないということを表す無効化信号を提供するように、構成することが可能である。
【００６３】
一実施例では、プロセッサ１１０は、それぞれのＬ１キャッシュ１１６をアクセスするのためのアドレス変換を使用しない複数のコア１１４を含み得るので、コア１１４がアドレス変換を行った場合に生じるエネルギ消費は減少し得る。更に、アドレス変換制御回路８０６および他のＬ２キャッシュ・アクセス回路２１０が、アドレス変換を行うためにコア１１４の各々によって共用され、それによって、Ｌ２キャッシュ・アクセス回路２１０によって消費されるチップ・スペースの点から（例えば、Ｌ２キャッシュ１１２がコア１１４と同じチップ上に設けられる場合）、オーバヘッドの量を減らし得る。
【００６４】
一実施例では、Ｌ２キャッシュ・アクセス回路２１０、および／または、プロセッサ１１０のコア１１４によって共用されるネスト２１６内の他の回路を、コア１１４の頻度より低い頻度で操作することが可能である。従って、例えば、ネスト２１６における回路は、オペレーションを遂行するために第１クロック信号を使用し得るし、一方、コア１１４における回路はオペレーションを遂行するために第２クロック信号を使用し得る。第１クロック信号は第２クロック信号の周波数より低い周波数を有することがある。コア１１４における回路よりも低い周波数でネスト２１６における共用の回路を操作することによって、プロセッサ１１０の電力消費量は減少し得る。ネスト２１６における操作回路は、Ｌ２キャッシュ・アクセス・タイムを増加させることがあるが、アクセス・タイム全体の増加は、Ｌ２キャッシュ１１２に対する典型的な合計アクセス・タイムに比べてかなり小さくなり得る。 
【００６５】
図１０は、本発明の一実施例に従ってキャッシュ・アクセス回路２１０を使用して、Ｌ２キャッシュ１１２をアクセスするプロセス９００を示すフローチャートである。プロセス９００が開始すると、ステップ９０２において、要求されたデータをＬ２キャッシュ１１２からフェッチする要求が受け取られる。その要求は、要求されたデータに対する有効アドレスを含み得る。ステップ９０４において、ルックアサイド・バッファ（例えば、ＳＬＢ８０２および／またはＴＬＢ８０４）がその要求されたデータの有効アドレスに対するエントリを含むかどうかに関する決定が行なわれる。
【００６６】
ステップ９０４において、ルックアサイド・バッファ８０２および８０４がその要求されたデータの有効アドレスに対する第１ページ・テーブル・エントリを含んでいるかどうかに関する決定が行われる。ルックアサイド・バッファ８０２および８０４がその要求されたデータの有効アドレスに対するページ・テーブル・エントリを含んでいる場合、ステップ９２０において、第１ページ・テーブル・エントリが有効アドレスを実アドレスに変換するために使用される。しかし、ステップ９０６では、ルックアサイド・バッファ８０２および８０４が要求されたデータの有効アドレスに対するページ・テーブル・エントリを含んでいる場合、第１ページ・テーブル・エントリが、例えば、システム・メモリ１０２におけるページ・テーブルからフェッチされる。
【００６７】
場合によっては、新しいページ・テーブル・エントリがシステム・メモリ１０２からフェッチされ、ルックアサイド・バッファ８０２、８０４に収納されるとき、その新しいページ・テーブル・エントリはルックアサイド・バッファ８０２および８０４における古いエントリを置換し得る。従って、古いページ・テーブル・エントリが置換される場合、その置換されたエントリに対応するＬ１キャッシュ１１６におけるいずれのキャッシュ・ラインも、Ｌ１キャッシュ１１６をアクセスするプログラムが正しいデータをアクセスすることを保証するためにＬ１キャッシュ１１６から取り除かれる。従って、ステップ９０８において、第２ページ・テーブル・エントリがフェッチされた第１ページ・テーブル・エントリと置換される。
【００６８】
ステップ９１０において、第２ページ・テーブル・エントリに対する有効アドレスがＬ１キャッシュ１１６に供給され、それは、第２のページ・テーブル・エントリに対応するいずれのデータもＬ１キャッシュ１１６からフラッシュおよび／または無効化されなければならない、ということを表す。上述したように、ＴＬＢ８０４および／またはＳＬＢ８０２にマップされてないＬ１キャッシュ・ラインをフラッシュおよび／または無効化することによって、プロセッサ・コア１１４によって実行されるプログラムは、有効アドレスを用いて正しくないデータを不注意にアクセスすることを防ぐことができる。場合によっては、ページ・テーブル・エントリが複数のＬ１キャッシュ・ラインを指すこともある。更に、場合によっては、単一のＳＬＢエントリは、複数のＬ１キャッシュ・ラインを含む複数のページを指すこともある。そのような場合、Ｌ１キャッシュから除去されるべきページの表示がプロセッサ・コア１１４に送られ、その表示されたページに対応する各キャッシュ・ラインがＬ１キャッシュ１１６から除去される。更に、Ｌ１キャッシュ・ディレクトリ（またはスプリット・キャッシュ・ディレクトリ）が利用される場合、表示されたページに対応するＬ１キャッシュ・ディレクトリにおけるいずれのエントリも除去される。ステップ９２０において、第１ページ・テーブル・エントリがルックアサイド・バッファ８０２、８０４内にある場合、第１ページ・テーブル・エントリは要求されたデータの有効アドレスを実アドレスに変換するために使用される。しかる後、ステップ９２２において、その変換から得られた実アドレスは、Ｌ２キャッシュ１１２をアクセスするために使用することが可能である。
【００６９】
一般に、上述された本発明の実施例は、任意の数のプロセッサ・コアを備えた任意のタイプのプロセッサを用いて使用することが可能である。複数のプロセッサ・コア１１４が使用される場合、Ｌ２キャッシュ・アクセス回路２１０は各プロセッサ・コア１１４に対してアドレス変換を行い得る。従って、エントリがＴＬＢ８０４またはＳＬＢ８０２からキャスト・アウトされるとき、いずれの対応するキャッシュ・ラインもＬ１キャッシュ１１６から除去されなければならないということを表す信号を、プロセッサ・コア１１４に対するＬ１キャッシュ１１６の各々に送ることができる。
【００７０】
図１１は、例示的な設計フロー１０００のブロック図を示す。設計フロー１０００は、設計されるＩＣのタイプに依存して変り得る。例えば、特定用途向けＩＣ（ＡＳＩＣ）を形成するための設計フロー１０００は、標準的なコンポーネントを設計するための設計フローとは異なることがある。設計構造体１０２０は、設計プロセス１０１０への入力であることが望ましく、ＩＰ提供者、中心的開発者、または他の設計会社から提供されたり、或いは設計フローの担当者によってまたは他のソースから生成されたりすることも可能である。設計構造体１０２０は、図形的概略図またはＨＤＬ即ちハードウェア記述言語（例えば、Verilog、ＶＨＤＬ，Ｃ等）の形式の上述の回路、並びに図１〜図３、図５、図８、および図９に示された回路を含む。設計構造体１０２０は、１つまたは複数のマシン可読媒体上に含まれてもよい。例えば、設計構造体１０２０は、テキスト・ファイルであってもよく、上述の回路、並びに図１〜図３、図５、図８、および図９に示された回路の図形的表示であってもよい。設計プロセス１０１０は、上述の回路、並びに図１〜図３、図５、図８、および図９に示された回路をネットリスト１０８０の形に合成することが望ましい。なお、ネットリスト１０８０は、例えば、ワイヤ、トランジスタ、論理ゲート、制御回路、Ｉ／Ｏ、モデル等に関するリストであり、集積回路設計において他の素子および回路への接続を記述し、少なくとも１つのマシン可読媒体上に記録される。例えば、その媒体は、ＣＤ、コンパクト・フラッシュ・メモリ、他のフラッシュ・メモリ、またはハードディスク・ドライブのような記憶媒体であってもよい。その媒体は、インターネットまたは他のネットワーキングに適した手段を介して送られるべきデータのパケットであってもよい。合成は、その回路のための設計仕様およびパラメータに従ってネットリスト１０８０が１回または複数回再合成される、反復性のプロセスであってもよい。
【００７１】
設計プロセス１０１０は、種々の入力を使用して、例えば、所与の製造技術（例えば、種々の技術ノード、３２nm、４５nm、９０nm等）のためのモデル、レイアウト、および記号表示を含む共通使用の素子、回路、および装置のセットを内蔵し得るライブラリ素子１０３０、設計仕様１０４０、特徴付けデータ１０５０、検証データ１０６０、設計ルール１０７０、およびテスト・データ・ファイル１０８５（テスト・パターンおよび他の試験情報を含み得る）からの入力の使用を含み得る。更に、設計プロセス１０１０は、例えば、タイミング分析、検証、設計ルール・チェック、設置、および経路指定オペレーション等のような標準的な回路設計プロセスを含み得る。集積回路設計の当業者は、本発明の技術的範囲および主旨から逸脱することなく設計プロセス１０１０において使用される可能な電子的設計自動化ツールおよびアプリケーションの範囲を十分理解し得るであろう。本発明の設計構造体はいずれの特定の設計フローにも限定されない。
【００７２】
設計プロセス１０１０は、上述の回路並びに図１〜図３、図５、図８、および図９に示された回路を、任意の更なる集積回路設計またはデータ（適用可能であれば）と共に第２の設計構造体１０９０に変換することが望ましい。設計構造体１０９０は、集積回路のレイアウト・データ（例えば、ＧＤＳＩＩ（ＧＤＳ２）に保存された情報、ＧＬ１、ＯＡＳＩＳ、または、そのような設計構造体を保存するに適した任意の他のフォーマット）の交換のために使用されるデータ・フォーマットで記憶媒体上に存在する。設計構造体１０９０は、例えば、テスト・データ・ファイル、設計内容ファイル、製造データ、レイアウト・パラメータ、ワイヤ、金属のレベル、バイアス、形状、製造ラインを通すためのデータ、および、上述の回路並びに図１〜図３、図５、図８、および図９に示された回路を製作するために半導体製造者が必要とする他の任意のデータ、のような情報を含み得る。設計構造体１０９０は、次に、ステージ１０９５に進む。ステージ１０９５では、例えば、設計構造体１０９０は、テープ・アウトに進み、製造にリリースされ、マスク・ハウスにリリースされ、他の設計ハウスに送られ、顧客に返送される等であってもよい。
【００７３】
以上は本発明の実施例に関するものであるが、本発明の他のおよび更なる実施例が、その基本的な範囲から逸脱することなく考えられ得る。
【図面の簡単な説明】
【００７４】
【図１】本発明の１つの実施例によるシステムを示すブロック図である。
【図２】本発明の１つの実施例によるコンピュータ・プロセッサを示すブロック図である。
【図３】本発明の１つの実施例によるプロセッサのコアの１つを示すブロック図である。
【図４】本発明の１つの実施例に従ってキャッシュをアクセスするプロセスを示すフローチャートである
【図５】本発明の１つの実施例によるキャッシュを示すブロック図である。
【図６】本発明の１つの実施例によってスプリット・ディレクトリを使用してキャッシュをアクセスするプロセスを示すフローチャートである。
【図７】図６のフローチャートに続くフローチャートである。
【図８】本発明の１つの実施例によるスプリット・キャッシュ・ディレクトリを示すブロック図である。
【図９】本発明の１つの実施例によるキャッシュ・アクセス回路を示すブロック図である。
【図１０】本発明の１つの実施例によるキャッシュ・アクセス回路を使用して、キャッシュをアクセスするプロセスを示すフローチャートである。
【図１１】半導体の設計、製造、および／または、試験において使用される設計プロセスのブロック図である。
【図１】
2009009571.tif 000003
【図２】
2009009571.tif 000004
【図３】
2009009571.tif 000005
【図４】
2009009571.tif 000006
【図５】
2009009571.tif 000007
【図６】
2009009571.tif 000008
【図７】
2009009571.tif 000009
【図８】
2009009571.tif 000010
【図９】
2009009571.tif 000011
【図１０】
2009009571.tif 000012
【図１１】
2009009571.tif 000013