(57)【要約】トランスレーションルックアサイドバッファ（１０７）は、第１ストレージ（２０５）と第２ストレージ（２１０）とに結合された制御機能を備えている。第１ストレージは、複数のページサイズに対応するアドレス変換を記録する第１の複数のエントリを備えている。第２ストレージは、複数のページサイズに対応するアドレス変換を記録する第２の複数のエントリを備えている。第１ページサイズに関連づけられる第１アドレス変換の受信に応答して、制御機能（２１５）は第１ページサイズに対応するアドレス変換を記録するために、第１の複数のエントリを割当てる。加えて、第１ストレージ内に記録されたアドレス変換に一致するアドレスを含むリクエストの受信に応答して、制御機能は、一致するアドレス変換を第１ストレージから第２ストレージにコピーする。
2008542948.tif 000002
【特許請求の範囲】
【請求項１】
複数のページサイズに対応するアドレス変換を記録するための第１の複数のエントリを備えた第１ストレージ（２０５）と、
前記複数のページサイズに対応するアドレス変換を記録するための第２の複数のエントリを備えた第２ストレージ（２１０）と、
前記第１ストレージおよび第２ストレージに結合された制御機能（２１５）と、を含み、第１ページサイズに関連付けられる第１アドレス変換の受信に応答して、前記制御機能は、前記第１ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリを割当てるように構成されており、
前記制御機能はさらに、前記第１ストレージ内に格納されたアドレス変換に一致するアドレスを含むオペレーションの受信に応答して、一致するアドレス変換を前記第１ストレージから第２ストレージへコピーするように構成されている、トランスレーションルックアサイドバッファ（１０７）。
【請求項２】
第２ページサイズに関連づけられる後続のアドレス変換の受信に応答して、前記制御機能はさらに、前記第２ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの一部を動的に割当てるように構成されている、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項３】
第３ページサイズに関連づけられるさらなるアドレス変換の受信に応答して、前記制御機能は、前記第３ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの第２部分を動的に割当てるように構成されている、請求項２記載のトランスレーションルックアサイドバッファ。
【請求項４】
２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より古いオペレーションが前記第１ストレージと前記第２ストレージの両方にアクセスできるようにするように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項５】
２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より新しいオペレーションが前記第２ストレージにアクセスできるようにするように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項６】
同じページに対する２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より新しいオペレーションが前記第２ストレージにアクセスできるようにするとともに、前記第１ストレージ内に格納された前記同じページに対応するアドレス変換を行うことができるように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項７】
マイクロプロセッサ（１００）のトランスレーションルックアサイドバッファ（１０７）に変換を記録するための方法であって、
第１の複数のエントリを備えた第１ストレージ（２０５）内に複数のページサイズに対応するアドレス変換を記録するためのステップと、
第２の複数のエントリを備えた第２ストレージ（２１０）内に複数のページサイズに対応するアドレス変換を記録するためのステップと、
第１ページサイズに関連付けられる第１アドレス変換の受信に応答して、前記第１ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリを割当てるステップと、
前記第１ストレージ内に格納されたアドレス変換に一致するアドレスを含むオペレーションの受信に応答して、一致するアドレス変換を前記第１ストレージから前記第２ストレージにコピーするステップと、を含む方法。
【請求項８】
第２ページサイズに関連づけられる後続のアドレス変換の受信に応答して、前記第２ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの一部を動的に割当てる、請求項１１記載の方法。
【請求項９】
第３ページサイズに関連づけられるさらなるアドレス変換の受信に応答して、前記第３ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの第２部分を動的に割当てる、請求項１２記載の方法。
【請求項１０】
命令を実行するように構成された１以上の実行ユニット（１２４）と、
前記実行ユニットに結合され、仮想−物理変換を行うように構成されたページ変換メカニズムと、
前記ページ変換メカニズムに結合されており、請求項１から６に記載されているようなトランスレーションルックアサイドバッファ（１０７）と、を備えたマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、より詳細には、アドレス変換を記録するために使用されるトランスレーションルックアサイドバッファに関する。
【背景技術】
【０００２】
多くの最新のマイクロプロセッサは、“ページング”と呼ばれる一種の仮想メモリをサポートしている。ページングにより、システムソフトウェアは、各プロセスあるいはアプリケーション用の個別のアドレス空間を生成できるようにする。ページングは、プロセッサにより生成されるアドレス信号の数で画定される物理アドレス空間を“ページ”と呼ばれる固定サイズの連続メモリブロックに分割する。ページングがイネーブル状態であれば、“仮想”アドレスは物理アドレスに変換あるいは“マップ”される。仮想−物理アドレス変換を行うために、各種のメカニズムが様々なプロセッサアーキテクチャに存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
例えば、ｘ８６アーキテクチャに実装されたプロセッサでは、ページングがイネーブルの状態で、プロセッサ内のページングメカニズムは仮想あるいは“リニア（線形）”アドレスを物理アドレスに変換する。アクセスされたページがシステムメモリ内になければ、ページングサポート構造（例えば、オペレーティングシステムソフトウェア）はアクセスしたページを第２メモリ（例えば、ディスクドライブ）からシステムメモリに読み込む（ロードする）。
あるｘ８６プロセッサにおいては、仮想−物理アドレス変換を行うためにページングメカニズムが必要とする情報を記録するために、システムメモリ内に記録された一連の階層変換テーブルあるいは“ページテーブル”が使用される。
【０００４】
システムメモリへのアクセスは比較的時間を要するので、アドレス変換が処理のレイテンシの原因となるおそれがある。ページテーブルから情報を検索するために必要なシステムメモリアクセス数を減らすために、最も最近に使用されたアドレス変換を記録するように、典型的にはトランスレーションルックアサイドバッファ（ＴＬＢ：Translation Lookaside Buffer)と呼ばれる小さなキャッシュメモリシステムが使用される。
典型的に、変換はページごとに行われ（例えば、４キロバイト、２メガバイトなど）、ＴＬＢは仮想メモリのページ部分とこれに対応する物理アドレスのページ部分とを記録する。次に、ＴＬＢは、対象の仮想アドレスを検索する。見つかれば、次に、この対象の仮想アドレスに対応する物理アドレスはシステムメモリにアクセスするために使用される。ＴＬＢでは、アドレス変換にアクセスするために要する時間は比較的少ないので、所要のアドレス変換がすぐにアクセス可能なＴＬＢにおいて見つかることが多いために、プロセッサの全体的な性能は向上する。
【０００５】
ＴＬＢによれば利点も得られる一方、難点もある。
スーパースカラプロセッサにおけるようなプロセッサのミクロ構造は、例えば、多数のパイプラインを含み得。このような設計から高性能を得るには、相対的に大きなＬＢ構造へ低レイテンシアクセスすることが望ましい。多数のパイプラインへ低レイテンシを供給すべく、従来のＴＬＢ構造にはいくつかの大きなマルチポート構造を含むものもある。加えて、多数のページサイズがサポートされ、また、各ＴＬＢ構造は異なるページサイズをサポートしてもよい。別の形態では、非常に大きなフルアソシアティブＴＬＢ構造が多数のページサイズをサポートしてもよい。しかし、このような従来のＴＬＢ設計は集積回路上に相当の領域を取り、アクセス時間がより高速であるだけではなく、許容し難い量の電力をも消費する。
【課題を解決するための手段】
【０００６】
動的コンフィギュラブルトランスレーションルックアサイドバッファの各種実施形態が開示されている。一実施形態では、トランスレーションルックアサイドバッファは、第１ストレージおよび第２ストレージに結合された制御機能を備え得る。第１ストレージは、例えば４ＫＢ、２ＭＢ、および１ＧＢなどの複数のページサイズに対応するアドレス変換を記録するための第１の複数のエントリを備えている。第２ストレージは、複数のページサイズに対応するアドレス変換を記録するための第２の複数のエントリを備えている。第１ページサイズに関連付けられる第１アドレス変換の受信に応答して、制御機能は、第１ページサイズに対応するアドレス変換を記録するために、第１の複数のエントリを割当てる。加えて、第１ストレージ内に記録されたアドレス変換に一致するアドレスを含むリクエストの受信に応答して、制御機能は第１ストレージから第２ストレージに一致するアドレス変換をコピーする。
【０００７】
１つの特定の実装品においては、第２ページサイズに関連づけられる後続のアドレス変換の受信に応答して、制御機能はこの第２ページサイズに対応するアドレス変換を記録するために、第１の複数のエントリの一部を割当てる。別の特定の実装品においては、第３ページサイズに関連付けられたさらなるアドレス変換の受信に応答して、制御機能はこの第３ページサイズに対応するアドレス変換を記録するために、第１の複数のエントリの第２の部分を割当てる。
【発明を実施するための最良の形態】
【０００８】
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示さたものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。ヘディングは単に構成のためのものであって、本明細書や請求の範囲の限定や解釈のために使用されるものではない。さらに、“〜してもよい(may)”という単語は本出願において許容の意味（つまり、〜する可能性がある、〜できる）で使用されており、命令の意味（つまり、〜しなければならない）という意味ではない。“含む(include)”という用語およびその派生語は、“含むがこれに限定されるものではない”ことを意味する。“接続された(connected)”という用語は、“直接的にあるいは間接的に接続された”ことを意味し、用語“結合された(coupled)”は“直接的にあるいは間接的に結合された”ことを意味する。
【０００９】
図１を参照すると、典型的なマイクロプロセッサ１００の一実施形態のブロック図が示されている。マイクロプロセッサ１００はシステムメモリ（図１には図示せず）に記録される命令を実行するように構成されている。これらの命令の多くは、同様にシステムメモリに記録されているデータでオペレーションを行う。システムメモリはコンピュータシステム全体に物理的に分散されており、マイクロプロセッサ１００などの１以上のマイクロプロセッサによってアクセスされる。一実施形態では、マイクロプロセッサ１００は、例えばＡｔｈｌｏｎ（ＴＭ）プロセッサなどのｘ８６アーキテクチャを実装するマイクロプロセッサの一例である。しかし、別の種類のマイクロプロセッサを含む他の実施形態が検討される。
【００１０】
例示の実施形態では、マイクロプロセッサ１００は第１レベル（Ｌ１)キャッシュと第２Ｌ１キャッシュ、つまり、命令キャッシュ１０１Ａおよびデータキャッシュ１０１Ｂを含むキャッシュシステムを備えている。実装に応じて、Ｌ１キャッシュは統合キャッシュあるいは分岐キャッシュであってもよい。いずれの場合でも、簡素化のために、命令キャッシュ１０１Ａおよびデータキャッシュ１０１Ｂは必要に応じてＬ１キャッシュ１０１と総称される。さらに、マイクロプロセッサ１００は命令キャッシュ１０１Ａに近接して結合されてもよいプレデコードユニット１０２と分岐予測論理１０３とを含む。さらに、マイクロプロセッサ１００は命令キャッシュ１０１Ａに結合される命令デコーダ１０４を含む。命令制御ユニット１０６は、命令デコーダ１０４から命令を受信し、スケジューラ１１８へオペレーションをディスパッチするように結合されている。スケジューラ１１８は、命令制御ユニット１０６からディスパッチされるオペレーションを受信し、かつ、実行ユニット１２４へオペレーションを発行するように結合されている。実行ユニット１２４は、データキャッシュ１０１Ｂへアクセスするように構成されてもよいロード／ストアユニット１２６を備えている。実行ユニット１２４がもたらす結果は、続いて発行される命令に対するオペランド値として使用され、および／あるいはレジスタファイル（図示せず）に記録される。更に、マイクロプロセッサ１００は、命令キャッシュ１０１Ａ、データキャッシュ１０１Ｂとシステムメモリ間に結合されている、オンチップＬ２キャッシュ１３０を備えている。Ｌ２キャッシュメモリ１３０が外部に備えられている別の実施形態が検討される。
【００１１】
命令キャッシュ１０１Ａは実行前に命令を記録してもよい。命令キャッシュ１０１Ａに対応付けられ得る関数は、命令フェッチ（読出し）、命令プレフェッチ、命令プレデコード、および分岐予測であってよい。バッファインターフェースユニット１４０を通してシステムメモリからコードをプレフェッチすることにより、あるいは、Ｌ２キャッシュ１３０からコードをプレフェッチすることにより、命令コードが命令キャッシュ１０６に供給され得る。命令キャッシュ１０１Ａは、様々な構造（例えば、セットアソシアティブ、フルアソシアティブ、あるいはダイレクトマップ）で実装されてもよい。一実施形態では、命令キャッシュ１０１Ａは、複数のキャッシュラインを記録するように構成され、命令キャッシュ１０１Ａの所与のキャッシュライン内のバイト数は実装状況によって異なる。さらに、一実施形態では、命令キャッシュ１０１ＡはスタティックＲＡＭで実装されてもよいが、別の種類のメモリを含む他の実施形態が検討される。一実施形態では、命令キャッシュ１０１Ａは例えばキャッシュラインのフィル、置換やコヒーレンシを制御する制御回路（図示せず）を含んでもよい。
【００１２】
命令デコーダ１０４は、命令をオペレーションにデコードするように構成されており、一般にマイクロコードＲＯＭあるいはＭＲＯＭ（図示せず）と呼ばれるオンチップリードオンリメモリ（ＲＯＭ）内に記録されているオペレーションを使用して、直接的にあるいは間接的にデコードされ得る。命令デコーダ１０４は、特定の命令を実行ユニット１２４内で実行可能なオペレーションにデコードしてもよい。単純な命令は１つのオペレーションに対応し得る。実施形態の中には、更に複雑な命令が、多くのオペレーションに対応し得るものもある。
【００１３】
命令制御ユニット１０６は実行ユニット１２４へのオペレーションのディスパッチを制御する。一実施形態では、命令制御ユニット１０６は、命令デコーダ１０４から受信したオペレーションを保持するために、リオーダバッファ（図示せず）を含んでもよい。さらに、命令制御ユニット１０６は、動作のリタイアメント（retirement）を制御するように構成されてもよい。
【００１４】
命令制御ユニット１０６の出力時に供給されるオペレーションや即値データ(immediate data)はスケジューラ１１８へ送られる。スケジューラ１１８は１以上のスケジューラユニット（例えば、整数スケジューラユニットや浮遊小数点スケジューラユニット）を含んでもよい。本明細書に用いられているように、スケジューラは、オペレーションの実行が可能である時を検出し、また、１つ以上の実行ユニットに準備完了オペレーション（ready operation）を発行する。例えば、リザベーションステーションはスケジューラであってもよい。各スケジューラ１１８は、実行ユニット１２４に対して発行待ちの、いくつかのペンディング中のオペレーションに対してオペレーション情報（例えば、ビット符号化された実行ビットやオペランド値、オペランドタグ、及び／あるいは即値データ）を保持することができる。実施形態では、各スケジューラ１１８はオペランド値を記録しないものもある。代わりに、各スケジューラ１１８は、レジスタファイルで得られる結果や発行されたオペレーションを監視し、実行ユニット１２４によってオペランド値が読込み可能とされる時を決定することができる。実施形態では、各スケジューラ１１８が専用の実行ユニット１２４の１つと関連し得るものもある。他の実施形態では、１つのスケジューラ１１８が、１より多数の実行ユニット１２４に対して、オペレーションを発行してもよい。
【００１５】
一実施形態では、実行ユニット１２４は整数実行ユニットなどの実行ユニットを含んでもよい。しかしながら、別の実施形態では、マイクロプロセッサ１００は、スーパースカラプロセッサであってもよく、その場合、実行ユニット１２４は加算や引き算の整数算術演算と同様に、シフト、回転、論理演算、分岐演算を実行するように構成されている、複数の実行ユニット（例えば、複数の整数実行ユニット（図示せず））を備えている。さらに、１以上の浮遊小数点ユニット(図示せず)が、浮遊小数点演算を行うために備えられてもよい。１以上の実行ユニット（例えば、アドレス生成ユニット（ＡＧＵ））が、ロード／ストアユニット１２６によって実行されるロードおよびストアメモリオペレーションのためにアドレス生成を実施するように構成されてもよい。
【００１６】
ロード／ストアユニット１２６は、実行ユニット１２４とデータキャッシュ１０１Ｂとの間にインターフェースを設けるように構成されてもよい。一実施形態では、ロード／ストアユニット１２６は、ペンディング中のロードあるいはストアに対するデータやアドレス情報のためのいくつかの記録先を持つ、ロード／ストアバッファ（図示せず）を備えて構成されてもよい。さらに、ロード／ストアユニット１２６は、新たなストア命令に対する、古いロード命令の依存度チェックを行い、データのコヒーレンシを確実に維持する。データキャッシュ１０１Ｂは、ロード／ストアユニット１２６とシステムメモリとの間に転送されるデータを記録するために設けられているキャッシュメモリである。上述の命令キャッシュ１０１Ａと同様に、データキャッシュ１０１Ｂはセットアソシアティブ構造を含む、様々な特定のメモリ構造において実装されてもよい。一実施形態では、データキャッシュ１０１Ｂ及び命令キャッシュ１０１Ａは、別々のキャッシュユニットとして実装される。上述の通りであるが、データキャッシュ１０１Ｂと命令キャッシュ１０１Ａが統合キャッシュとして実装されうる、別の実施形態が検討されうる。一実施形態では、データキャッシュ１０１Ｂは複数のキャッシュラインを記録し、データキャッシュ１０１Ｂの所与のキャッシュライン内のバイト数は、実装状況によって異なる。一実施形態では、データキャッシュ１０１Ｂはさらにスタティックランダムアクセスメモリ（ＳＲＡＭ）において実装されうるが、他の種類のメモリを含む、別の実施形態が検討される。一実施形態では、データキャッシュ１０１Ｂは、例えば、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路（図示せず）を備えてもよい。
【００１７】
さらに、Ｌ２キャッシュ１３０はキャッシュメモリであり、命令及び／あるいはデータを記録するように構成されてもよい。例示の実施形態では、Ｌ２キャッシュ１３０はオンチップキャッシュであり、フルアソシアティブ、あるいはセットアソシアティブのどちらか一方、あるいは両方の組合せであってもよい。一実施形態では、Ｌ２キャッシュ１３０は、複数のキャッシュラインを記録し、Ｌ２キャッシュ１３０の所与のキャッシュライン内のバイト数は実装状況によって異なる。Ｌ２キャッシュ１３０は、例えば、リクエストをスケジューリングし、キャッシュラインのフィル、置換、及びコヒーレンシを制御するために、制御回路（図１に図示せず）を備えてもよい。
【００１８】
バスインターフェースユニット１４０は、システムメモリとＬ２キャッシュ１３０間の命令やデータ、及びシステムメモリとＬ１命令キャッシュ１０１ＡとＬ１データキャッシュ１０１Ｂ間の命令やデータを転送するように構成されてもよい。一実施形態では、バスインターフェースユニット１４０は、ライトサイクルストリーミング中にライトトランザクションをバッファするために、バッファ（図示せず）を備えてもよい。
【００１９】
ｘ８６プロセッサアーキテクチャを用いたマイクロプロセッサ１００の１つの特定の実施形態においては、命令キャッシュ１０１Ａとデータキャッシュ１０１Ｂとは物理的にアドレス指定されてもよい。上述したように、システムメモリにアクセスするために、仮想アドレスを物理アドレスに任意に変換してもよい。この仮想−物理アドレス変換は、ｘ８６アドレス変換メカニズムのページング部分によって明確にされる。物理アドレスは、ヒット／ミス状態を判断するために、物理タグと比較され得る。アドレス変換に関連づけられるレイテンシーを低減するために、このアドレス変換をＴＬＢ１０７ＡおよびＴＬＢ１０７Ｂなどのトランスレーションルックアサイドバッファ（ＴＬＢ）内に記録してもよい。
【００２０】
例示の実施形態では、ＴＬＢ１０７Ａは、命令キャッシュ１０１Ａに関連づけられる、最も最近に使用された仮想−物理アドレス変換を記録するために命令キャッシュ１０１Ａに結合される。同様に、ＴＬＢ１０７Ｂは、データキャッシュ１０８Ｂに関連づけられる、最も最近に使用された仮想−物理アドレス変換を記録するためにデータキャッシュ１０１Ｂに結合される。ＴＬＢ１０７Ａと１０７Ｂとは別々のＴＬＢ構造として図示されているが、別の実施形態ではこれらを１つのＴＬＢ構造１０７として実装してもよい。
【００２１】
図２および図３の説明とあわせて以下により詳細に説明するように、一実施形態では、ＴＬＢ構造１０７はページサイズの異なる変換を記録するために、２つの別々に構成可能なストレージを用いてもよい。さらに、ＴＬＢ１０７は、受信した変換のページサイズに応じて第１ストレージにエントリをアロケートする、つまり割り当てる制御機能（図１に図示せず）を備えてもよい。加えて、この制御機能は、第１ストレージ内に記録されたアドレス変換に一致する、つまり“ヒット”するが、第２のストレージ内に記録されたアドレス変換にヒットしない、つまり“ミス”するアドレスを含む（読出しオペレーションなどの）オペレーションの受信に応答して、第１ストレージから第２ストレージへ所与のアドレス変換をコピーすることができる。さらに、ＴＬＢ構造１０７は、ＴＬＢ１０７が２以上のオペレーションを受信する場合に、より古いオペレーションが双方のストレージにアクセスできるようにすることで、より古いオペレーションに優先権を与えることができる。
【００２２】
図２を参照すると、ＴＬＢ構造の一実施形態のブロック図が示されている。ＴＬＢ１０７はストレージ２０５とストレージ２１０とに結合された制御機能２１５を含む。制御機能２１５はプロセッサ１００のコアロジックから、例えば仮想アドレスを含むデータフェッチリクエストや命令などのオペレーションを受信するように結合される。ストレージ２０５と２１０内にはタグビットとして多数のアドレスビットが記録されてもよい。
【００２３】
例示の実施形態では、ストレージユニット２０５は、０からｎ−１として示された多数のエントリを含む、コンフィギュラブルストレージである。ストレージ２０５は、破線で示されているように、多数の個別にアクセス可能なセクションに分割されてもよい。１つの実装品では、ストレージ２０５は、セクション“ａ”からセクション“ｄ”と示される４つの異なるセクションに分割されるが、別の実施形態ではストレージ２０５は任意の数のセクションに分割されてもよい。このようなセクションは、所望に応じて、異なるページサイズに対応するアドレス変換を記録するように割り当てられてもよい。一実施形態では、ストレージエントリは、全ての、あるいは一部の仮想アドレス、物理アドレス、および、対応する変換のページサイズを含む。例えば、１つの特定の実装品では、プロセッサ１００のページ変換メカニズムは、４ＫＢ、２ＭＢおよび１ＧＢのページサイズをサポートする。しかし、別のページサイズがサポートされる別の実装品が検討される。一実施形態では、制御機能２１５は、ページアクセスパターンに応じて、異なるページサイズを同時にサポートするように、ストレージ２０５を各種のストレージ構造に動的に構成してもよい。
【００２４】
例示の実施形態では、ストレージ２０５を１つの大きなストレージ、２つのより小さなストレージ、あるいは３つのより小さなストレージに構成してもよい。より詳細には、ストレージ２０５内の４つの全セクション、つまり全エントリが、１つのページサイズに関連付けられる変換を記録するために割り当てられるように、ストレージ２０５を初期化してもよい。制御機能２１５は、ストレージ２０５の全エントリに対してページサイズの割当てを決定するために、最初に受信したオペレーション（つまり、第１アドレス変換）に関連づけられるページサイズ（例えば、４ＫＢ）を使用してもよい。異なるページサイズ（例えば、２ＭＢ）を含む後続のアドレス変換を受信すると、制御機能２１５は、新たなページサイズを有する変換を記録するために、いくつかのセクションの割当てを解除し、これらのセクションを再割当てすることで、ストレージ２０５を動的に再構成してもよい。同様に、第３異なるページサイズ（例えば、１ＧＢ）を含むさらなる変換を受信すると、制御機能２１５は、第３ページサイズを有する変換を記録するために、いくつかのセクションの割当てを解除し、これらのセクションを再割当てすることで、ストレージ２０５を再度、動的に再構成してもよい。一実施形態では、ストレージ２０５の所与のセクションは常に、１つのページサイズに関連付けられる変換だけを記録する。
【００２５】
１つの特定の実装品においては、ストレージ２０５のセクションの各々は、２５６エントリの２ウェイセットアソシアティブメモリモジュールを使用して実装される。各モジュールはランダムアクセスメモリ（ＲＡＭ）アレイに対応する。よって、ストレージ２０５の各セクションを２５６エントリバンク（例えば、ｂ０−ｂ３）として扱ってもよい。バンクｂ０とｂ１、およびバンクｂ２とｂ３は、４ウェイセットアソシアティブストレージの場合のように２つの５１２エントリスーパーバンク（例えば、Ｂ０およびＢ１）に組み合わせてもよい。従って、以下にさらに説明しているように、各種の構造において、ストレージ２０５は、２つの５１２エントリスーパーバンクを有する４ウェイセットアソシアティブストレージとして、あるいは、４つの２５６エントリバンクを有する２ウェイセットアソシアティブストレージとして実装されてもよい。他の実施形態では、ストレージ２０５のセクションの各々は、異なるサイズメモリモジュールを使用して実装されてもよい。
【００２６】
より詳細には、第１構造において、ストレージ２０５は１つのページサイズの変換を記録するために構成される。この構造においては、ストレージ２０５は、２つの５１２エントリスーパーバンクを有する４ウェイセットアソシアティブストレージか４つの２５６エントリバンクを有する２ウェイセットアソシアティブストレージのいずれかとして扱われる。
【００２７】
別の構造においては、ストレージ２０５は２つの異なるページサイズの変換を記録するために構成される。この構造においても、ストレージ２０５は、２つの５１２エントリスーパーバンクを有する４ウェイセットアソシアティブストレージか４つの２５６エントリバンクを有する２ウェイセットアソシアティブストレージのいずれかとして扱われる。例えば、４ＫＢのページアクセスに続いて、２ＭＢのページアクセスがあれば、ストレージ２０５はいずれにも構成することができる。
【００２８】
さらに別の構造においては、ストレージ２０５は３つの異なるページサイズの変換を記録するために構成される。この構造においても、ストレージ２０５は４ウェイセットアソシアティブストレージか２ウェイセットアソシアティブストレージのいずれかとして扱われる。４ウェイセットアソシアティブ構造を使用する場合、バンクを次のように割当ててもよい。１つの５１２エントリスーパーバンクを４ＫＢ変換の記録に使用し、１つの２５６エントリバンクを２ＭＢ変換の記録に使用し、１つの２５６エントリバンクを１ＧＢ変換の記録に使用する。２ウェイセットアソシアティブ構造を使用する場合、バンクを以下のように割当ててもよい。２つの２５６エントリバンクを２４ＫＢ変換の記録のために使用し、１つの２５６エントリバンクを２ＭＢ変換の記録のために使用し、１つの２５６エントリバンクを１ＧＢ変換の記録のために使用する。
【００２９】
以下の表１に、各種の例示的構造とストレージ２０５のバンク割当てを示す。表１の列１はページアクセスパターンを示し、列２、３、および４は異なるアクセスパターンに対するバンク割当てを示す。例えば、行１の最初の入力である４Ｋは４ＫＢのページアクセスを示す。したがって、行１、列２では、全てのバンクは４ＫＢのページに割当てられる。同様に、行１、列１の第２の入力である４Ｋ２Ｍは、４ＫＢアクセス後に２ＭＢアクセスが続くことを示す。したがって、行１、列３では、バンクｂ０とｂ１とが４ＫＢのページに割当てられ、バンクｂ２とｂ３とが２ＭＢのページに割当てられる。行１、列１の第３の入力である４Ｋ２Ｍ１Ｇは、４ＫＢアクセス後に２ＭＢアクセスが続き、その後に１ＧＢアクセスが続くことを示す。したがって、行１、列４では、バンクｂ０とｂ１とが４ＫＢのページに割当てられ、バンクｂ２が２Ｍのページに割当てられ、バンクｂ３が１ＧＢのページに割当てられる。残りの行および列は同様に割当てられる。
【表１】
2008542948.tif 000003
【００３０】
表１はさらに、使用されるウェイの数に応じて、イネーブル状態にする必要のあるメモリモジュール数をどのように減らし、その結果、電力をどのように節約することができるかを示している。行８および９に示しているように２ウェイセットアソシアティブを使用すると、ＴＬＢ構造１０７によって消費される電力を減らすことができる。より詳細には、いくつかのキャッシュ構造のアクセスと同様に、受信した変換アドレスビットのいくつかは、ＴＬＢ構造１０７に記録される変換と一致するように使用される。したがって、一実施形態では、アドレスの一部が一致するメモリモジュールだけがイネーブル状態にされる。一実施形態では、モジュールをイネーブル状態にする、あるいは起動（ファイアリング）することで、アドレスビットがＲＡＭアレイに伝搬できるようになる。
【００３１】
例示の実施形態では、ストレージ２１０もまた０からｎ−１として示された多数のエントリを含む、コンフィギュラブルストレージである。一実施形態では、ストレージ２１０は、各エントリが異なるページサイズの変換を記録することができるように構成される。１つの特定の実装品においては、ストレージ２１０は１６エントリのフルアソシアティブストレージとして実装されてもよく、いずれのエントリも１つのＲＡＭユニットを備えて実装されたいずれのアドレスを記録してもよい。１つのエントリに大きなページ変換が記録される場合は、オーバーラップするいずれのページ変換も無効にされる。
【００３２】
特定の実装に応じて、制御機能２１５は、各々が関連する仮想アドレスを含む任意の数のオペレーションをマイクロプロセッサ１００のコアロジックから受信する。マイクロプロセッサ１００のある実施形態においては、命令はプログラムの順序を守らないで、つまりアウトオブプログラムオーダーで実行してもよく、命令のいくつかはリスケジュールされる。したがって、スーパースカラ設計では、いくつかのオペレーションが他のオペレーションよりも古いことがある。加えて、２以上のオペレーションは実質的に同時に到達することができる。パイプラインを通じてより古いオペレーションを進めることができるように、より新しいオペレーションはストレージ２１０だけに送られることが多いが、制御機能２１５は、より古いオペレーションをストレージ２０５とストレージ２１０とに送ることで、より古いオペレーションに優先権を与えることができる。したがって、各オペレーションは、オペレーション起動後の経過時間（age of the operation)に基づいてＴＬＢ１０７にスケジュールされる。
【００３３】
一実施形態では、より古いオペレーションがストレージ２０５あるいはストレージ２１０のいずれかにおいて一致あるいはヒットすれば、対応する変換を行うために制御機能２１５が結合される。一実施形態では、より新しいオペレーションがストレージ２１０においてヒットすれば、制御機能２１５は、変換がストレージ２１０から直接行われるようにできる。しかし、１つの実装品においては、より新しいオペレーションとより古いオペレーションとが同じページに対する変換を要求していれば、より新しいオペレーションがストレージ２０５にアクセスしてもよいが、性能のために、制御機能２１５は、ストレージ２０５からより古いオペレーションによってアクセスされたアドレスを変換する。
【００３４】
上述のように、制御機能２１５がストレージ２０５内でヒットし、ストレージ２１０内でミスするオペレーションを受信する場合に、一実施形態では、ストレージ２０５でのアドレス変換がストレージ２１０のエントリにコピーあるいは書込みされる。ストレージ２１０内に有効なエントリがなければ、ストレージ２１０にすでに記録されている変換は無効とされるか、最長時間未使用（ＬＲＵ：Least Recently Used)のアルゴリズムに基づいて上書きされてもよい。しかし、オペレーションがストレージ２０５でミスすれば、仮想アドレスは上述したようなページ変換メカニズムによって変換され、この変換がＴＬＢリロードとしてストレージ２０５に書込まれてもよい。ＴＬＢリロードがＴＬＢ構造１０７の読出しオペレーションと衝突すれば、一実施形態では、ＴＬＢリロードの変換は制御機能２１５内の書込みバッファ（図示せず）に一時的に記録され、その後、次のＴＬＢリロード前の次の有効な機会にストレージ２０５に書込まれる。
【００３５】
各種の実施形態では、制御機能２１５は、プログラム可能形式で様々なページサイズを記録するように構成してもよい。例えば、一実施形態では、構造の機能は、様々な構造を決定する構造レジスタ（図示せず）に記録される値に依存してもよい。構造レジスタはマイクロプロセッサ内のどこにでも物理的に設けることができる。一実施形態では、構造レジスタは、例えばオペレーティングシステムを介して、あるいは、オペレーションシステムのプログラム制御下にあるソフトウェアを介してプログラム可能である。別の実施形態では、構造レジスタは、起動の間にバイオス（ＢＩＯＳ）から実行中のソフトウェアを介してプログラム可能である。
【００３６】
図３は、図２のトランスレーションルックアサイドバッファ構造の一実施形態のオペレーションを説明したフローチャートである。図１から図３を集合的に参照すると、制御機能２１５は、同じページサイズに関連づけられる変換を記録するために、ストレージ２０５の全エントリを初期化する（ブロック３００）。ブロック３０５において、制御機能２１５は仮想アドレスを含むページアクセスオペレーションを受信する（ブロック３０５）。２以上のオペレーションがあれば（ブロック３１０）、制御機能２１５は、より古いオペレーションに一致するものを探索するために、ストレージ２０５とストレージ２１０とに実質的に同時にアクセスし、また、より新しいオペレーションに一致するものを探索するためにストレージ２０５にアクセスする。オペレーションが１つだけであれば、制御機能２１５はこのオペレーションをより古いオペレーションとして扱い、一致するものを探索するためにストレージ２０５とストレージ２１０とに実質的に同時にアクセスする。ストレージ２１０でヒットがあれば（ブロック３１５）、制御機能２１５はストレージ２１０から対応するアドレス変換を行い、オペレーションを完了する（ブロック３２０）。しかし、ストレージ２１０でミスがあり（ブロック３１５）、ストレージ２０５でヒットがあれば（ブロック３２５）、制御機能２１５は対応するアドレス変換をストレージ２０５からストレージ２１０へコピーする（ブロック３３０）。さらに、制御機能２１５は、ストレージ２１０から対応するアドレス変換を行いオペレーションを完了する（ブロック３２０）。
【００３７】
ブロック３２５をもう一度参照すると、ストレージ２０５でミスがあれば、制御機能２１５はＴＬＢリロードを引き起こし、オペレーションに関連付けられる仮想アドレスがページ変換メカニズムによって変換される（ブロック３３５）。変換が完了すると、制御機能２１５は、返されたアドレス変換のページサイズが、ストレージ２０５の現在のページサイズ割当てのいずれかと異なっているかどうかを判断する。アドレス変換のページサイズが異なっていなければ、制御機能２１５はストレージ２０５とストレージ２１０とに変換を記録する（ブロック３４５）。しかし、ページサイズがストレージ２０５の現在のページサイズ割当のいずれかと異なっていれば、制御機能２１５は、この異なるページサイズのアドレス変換を記録するために、ストレージ２０５の割当てを解除するか再構成する（ブロック３５０）。例えば、ページサイズが２ＭＢで、ストレージ２０５が全体として４ＫＢのページに対して構成されていれば、制御機能２１５は上述のようにストレージ２０５を再構成する。上述したように、オペレーションはブロック３４５において進行する。使用されるストレージ２１０内のエントリは、ＬＲＵアルゴリズムによって決定されてもよい。ブロック３１０に戻ると、受信したオペレーションが２以上あれば、制御機能２１５はより新しいオペレーションに一致するものを探すためにストレージ２１０にアクセスする（ブロック３５５）。ストレージ２１０でヒットがあれば、制御機能２１５はストレージ２１０から対応するアドレス変換を行い、オペレーションを完了する（ブロック３６５）。しかし、ストレージ２１０でミスがあれば（ブロック３６０）、制御機能２１５は、より新しいオペレーションとより古いオペレーションとが同じアドレスを有しているかどうかをチェックする（ブロック３７０）。アドレスが異なっていれば、制御機能２１５はオペレーションをリスケジュールしてもよい。しかし、アドレスが同じであれば（ブロック３７０）、制御機能２１５はストレージ２０５から変換を行い（ブロック３８０）、オペレーションを完了する（ブロック３２０）。
【００３８】
図４はコンピュータシステム４００の一実施形態のブロック図を示している。図１および図２に示す構成要素に対応する構成要素は、明瞭化および簡素化のために同一の符号が付けられている。コンピュータシステム４００はメモリバス４１５を介してシステムメモリ４１０に結合されたマイクロプロセッサ１００を備えている。さらに、マイクロプロセッサ１００は、システムバス４２５を介してＩ／Ｏノード４２０に結合されている。Ｉ／Ｏノード４２０は、グラフィックスバス４３５を介してグラフィックスアダプタ４３０に結合されている。さらに、Ｉ／Ｏノード４２０は周辺機器用バス４４５を介して周辺機器４４０に結合されている。
【００３９】
例示の実施形態では、マイクロプロセッサ１００はメモリバス４１５を介してシステムメモリ４１０に直接的に結合されている。システムメモリ４１０へのアクセスを制御するために、マイクロプロセッサは、例えば図１のバスインターフェースユニット１４０内にメモリコントローラ（図示せず）を備えてもよい。しかし、別の実施形態では、システムメモリ４１０はＩ／Ｏノード４２０を通じてマイクロプロセッサ１００に結合されてもよい。このような実施形態では、Ｉ／Ｏノード４２０はメモリコントローラを備えてもよい（図示せず）。さらに、一実施形態では、マイクロプロセッサ１００は例えば図２のＴＬＢ１０７のような１以上のＴＬＢ構造を備えている。
【００４０】
システムメモリ４１０は任意の適切なメモリデバイスを備えてもよい。例えば、一実施形態では、システムメモリは、デバイスのダイナミックランダムアクセスメモリ（ＤＲＡＭ）ファミリーに１以上のメモリデバイスバンクを備えてもよい。しかし、別の実施形態が別のメモリデバイスおよび構造を備えてもよいことが検討される。
【００４１】
例示の実施形態では、Ｉ／Ｏノード４２０はグラフィックスバス４３５、周辺機器バス４４０、およびシステムバス４２５に結合されている。したがって、Ｉ／Ｏノード４２０は、各種バス間のトランザクションの流れを管理する制御論理およびバッファを含む様々なバスインターフェースロジック（図示せず）を備えてもよい。一実施形態では、システムバス４２５はＨｙｐｅｒＴｒａｎｓｐｏｒｔ（ＴＭ）技術と互換性のあるパケットベースの相互接続であってもよい。このような実施形態では、Ｉ／Ｏノード４２０はパケットトランザクションを処理するように構成されてもよい。別の実施形態では、システムバス４２５は、例えばフロントサイドバス（ＦＳＢ）などの、典型的な共有バスアーキテクチャであってもよい。
【００４２】
さらに、グラフィックスバス４３５は、ＡＧＰ（Accelerated Graphics Port)バス技術と互換性があってもよい。一実施形態では、グラフィックスアダプタ４３０は、ディスプレイ用に画像イメージを生成するように構成された任意のさまざまな画像装置であってもよい。周辺機器バス４４５は、例えばＰＣＩ(Peripheral Component Interconnect)バスなどの一般的な周辺機器バスの一例であってもよい。周辺機器４４０は、例えばモデムやサウンドカードなどの任意の種類の周辺機器であってもよい。
【００４３】
上記の実施形態はより古いオペレーションとより新しいオペレーションとを含んでいるが、別の実施形態は任意の数の受信したオペレーションを含んでもよい。このように、制御機能２１５は３つ以上のオペレーションを実質的に同時に受信し処理するように構成されてもよい。例えば、一実施形態では、ストレージ２１０は任意の数のポートを有することができ、これにより、多数のより新しいオペレーションがより古いオペレーションとともに処理できるようになる。
【００４４】
上記の実施形態をかなり詳しく説明してきたが、当業者であれば上記の開示を完全に理解すれば様々なバリエーションや変更は明らかであろう。以下の請求項はこのような全てのバリエーションや変形を包含するものと解釈される。
【産業上の利用可能性】
【００４５】
概して、本発明はマイクロプロセッサに利用可能である。
【図面の簡単な説明】
【００４６】
【図１】マイクロプロセッサの一実施形態のブロック図。
【図２】トランスレーションルックアサイドバッファの一実施形態のブロック図。
【図３】図２のトランスレーションルックアサイドバッファの一実施形態のオペレーションを説明したフローチャート。
【図４】図１のマイクロプロセッサを含むコンピュータシステムの一実施形態のブロック図。
【図１】
2008542948.tif 000004
【図２】
2008542948.tif 000005
【図３】
2008542948.tif 000006
【図４】
2008542948.tif 000007
【手続補正書】
【提出日】平成19年5月2日(2007.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のページサイズに対応するアドレス変換を記録するための第１の複数のエントリを備えた第１ストレージ（２０５）と、
前記複数のページサイズに対応するアドレス変換を記録するための第２の複数のエントリを備えた第２ストレージ（２１０）と、
前記第１ストレージおよび第２ストレージに結合された制御機能（２１５）と、を含み、第１ページサイズに関連付けられる第１アドレス変換の受信に応答して、前記制御機能は、前記第１ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリを割当てるように構成されており、
第２ページサイズに関連づけられる後続のアドレス変換の受信に応答して、前記制御機能はさらに、前記第２ページサイズに対応するアドレス変換を格納するために前記第１の複数のエントリの一部を動的に割当てるように構成されており、
前記制御機能はさらに、前記第１ストレージ内に格納されたアドレス変換に一致するアドレスを含むオペレーションの受信に応答して、一致するアドレス変換を前記第１ストレージから第２ストレージへコピーするように構成されている、トランスレーションルックアサイドバッファ（１０７）。
【請求項２】
第３ページサイズに関連づけられるさらなるアドレス変換の受信に応答して、前記制御機能は、前記第３ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの第２部分を動的に割当てるように構成されている、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項３】
２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より古いオペレーションが前記第１ストレージと前記第２ストレージの両方にアクセスできるようにするように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項４】
２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より新しいオペレーションが前記第２ストレージにアクセスできるようにするように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項５】
同じページに対する２つのオペレーション、１つのより古いオペレーションと１つのより新しいオペレーション、を実質的に同時に受信することに応答して、前記制御機能は、前記より新しいオペレーションが前記第２ストレージにアクセスできるようにするとともに、前記第１ストレージ内に格納された前記同じページに対応するアドレス変換を行うことができるように構成される、請求項１記載のトランスレーションルックアサイドバッファ。
【請求項６】
マイクロプロセッサ（１００）のトランスレーションルックアサイドバッファ（１０７）に変換を記録するための方法であって、
第１の複数のエントリを備えた第１ストレージ（２０５）内に複数のページサイズに対応するアドレス変換を記録するステップと、
第２の複数のエントリを備えた第２ストレージ（２１０）内に複数のページサイズのいずれかに対応するアドレス変換を記録するステップと、
第１ページサイズに関連付けられる第１アドレス変換の受信に応答して、前記第１ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリを割当てるステップと、
第２ページサイズに関連づけられる後続のアドレス変換の受信に応答して、前記第２ページサイズに対応するアドレス変換を格納するために前記第１の複数のエントリの一部を動的に割当てるステップと、
前記第１ストレージ内に格納されたアドレス変換に一致するアドレスを含むオペレーションの受信に応答して、一致するアドレス変換を前記第１ストレージから前記第２ストレージにコピーするステップと、を含む方法。
【請求項７】
第３ページサイズに関連づけられるさらなるアドレス変換の受信に応答して、前記第３ページサイズに対応するアドレス変換を記録するために前記第１の複数のエントリの第２部分を動的に割当てる、請求項６記載の方法。
【請求項８】
命令を実行するように構成された１以上の実行ユニット（１２４）と、前記実行ユニットに結合され、仮想−物理変換を行うように構成されたページ変換メカニズムと、
前記ページ変換メカニズムに結合されており、請求項１から５のいずれかに記載されているようなトランスレーションルックアサイドバッファ（１０７）と、を備えたマイクロプロセッサ。
【国際調査報告】
2008542948.tif 000008
2008542948.tif 000009
2008542948.tif 000010