(57)【特許請求の範囲】
【請求項１】
アドレス変換を記憶するための変換索引バッファ（ＴＬＢ）と、
前記ＴＬＢに結合されたＴＬＢフラッシュフィルタとを含むプロセッサであって、前記ＴＬＢフラッシュフィルタは、メモリブロックであってそこから前記アドレス変換が読出されて前記ＴＬＢにキャッシュされるものを監視して、前記メモリブロックにある前記アドレス変換のうちいずれかが変化したかどうかを判断するように構成され、前記ＴＬＢフラッシュフィルタはさらに、コンテキストスイッチに応答して、前記アドレス変換が変化した場合には前記ＴＬＢがフラッシュされることを許すよう構成され、前記ＴＬＢフラッシュフィルタは、前記アドレス変換が変化しなかった場合には前記ＴＬＢのフラッシュを防ぐよう構成される、プロセッサ。
【請求項２】
前記ＴＬＢフラッシュフィルタは最初のコンテキストスイッチにより活性化される、請求項１に記載のプロセッサ。
【請求項３】
前記最初のコンテキストスイッチは前記ＴＬＢのフラッシュを引き起こす、請求項２に記載のプロセッサ。
【請求項４】
前記ＴＬＢフラッシュフィルタは、前記メモリブロックを追跡するための領域テーブルを含む、請求項１に記載のプロセッサ。
【請求項５】
前記ＴＬＢフラッシュフィルタは、前記メモリブロック内のメモリロケーションについての変更を検出するよう構成され、前記ＴＬＢフラッシュフィルタは、次のコンテキストスイッチに応答しかつ前記メモリロケーションについての前記変更の検出に応答して、前記ＴＬＢのフラッシュを許すように構成される、請求項４に記載のプロセッサ。
【請求項６】
前記領域テーブルは、内容参照可能メモリ（ＣＡＭ）およびランダムアクセスメモリ（ＲＡＭ）を含む、請求項４に記載のプロセッサ。
【請求項７】
前記ＣＡＭは複数のエントリを記憶するよう構成され、前記複数のエントリの各々は、前記メモリブロックと関連するアドレス情報を含む、請求項６に記載のプロセッサ。
【請求項８】
前記ＴＬＢフラッシュフィルタは、前記ＣＡＭにおけるエントリの数をカウントするよう構成されるカウンタを含む、請求項７に記載のプロセッサ。
【請求項９】
前記ＴＬＢフラッシュフィルタは、前記カウンタがオーバーフローすると非活性化される、請求項８に記載のプロセッサ。
【請求項１０】
前記ＲＡＭは複数のエントリを記憶するよう構成され、前記複数のエントリの各々は基準アドレスに関連するタグを記憶するよう構成される、請求項６に記載のプロセッサ。
【請求項１１】
前記ＴＬＢフラッシュフィルタは、前記ＣＡＭをミスする基準アドレスに応答して新しいタグを提供するよう構成されるカウンタを含む、請求項１０に記載のプロセッサ。
【請求項１２】
前記ＴＬＢフラッシュフィルタは、前記カウンタがオーバーフローすると非活性化される、請求項１１に記載のプロセッサ。
【請求項１３】
プロセッサを動作させる方法であって、前記方法は、
変換索引バッファ（ＴＬＢ）にアドレス変換を記憶させるステップを含み、前記アドレス変換は１つ以上のメモリブロックから前記ＴＬＢにロードされ、前記方法はさらに、
前記１つ以上のメモリブロックに記憶されたアドレス変換のうちいずれかが変化したかどうかを判断するステップと、
前記１つ以上のメモリブロックに記憶された前記アドレス変換のうちいずれかが変化すれば、コンテキストスイッチに応答して前記ＴＬＢをフラッシュするステップとを含み、前記フラッシュはコンテキストスイッチに応答し、前記方法はさらに、
前記１つ以上のメモリブロックに記憶された前記アドレス変換のうちいずれも変化しなければコンテキストスイッチに応答する前記ＴＬＢのフラッシュを防ぐステップを含み、前記ＴＬＢのフラッシュはＴＬＢフラッシュフィルタにより防がれる、方法。
【請求項１４】
前記ＴＬＢフラッシュフィルタは最初のコンテキストスイッチにより活性化される、請求項１３に記載の方法。
【請求項１５】
前記最初のコンテキストスイッチは前記ＴＬＢのフラッシュを引き起こす、請求項１４に記載の方法。
【請求項１６】
前記ＴＬＢフラッシュフィルタは領域テーブルを含み、前記領域テーブルは前記１つ以上のメモリブロックに記憶される前記アドレス変換を監視するよう構成される、請求項１３に記載の方法。
【請求項１７】
前記ＴＬＢのフラッシュは、前記１つ以上のメモリブロックに記憶される前記アドレス変換のうちの１つ以上に対する変化の検出の後、次のコンテキストスイッチに応答して起こり、前記検出は前記領域テーブルにおいて起こる、請求項１６に記載の方法。
【請求項１８】
前記領域テーブルは、内容参照可能メモリ（ＣＡＭ）およびランダムアクセスメモリ（ＲＡＭ）を含む、請求項１６に記載の方法。
【請求項１９】
前記ＣＡＭは複数のエントリを記憶するよう構成され、前記エントリの各々は前記１つ以上のメモリブロックに関連する情報を含む、請求項１８に記載の方法。
【請求項２０】
カウンタにより、前記ＣＡＭに記憶されるエントリの数をカウントする、請求項１９に記載の方法。
【請求項２１】
前記カウンタのオーバーフローは前記ＴＬＢフラッシュフィルタを非活性化させる、請求項２０に記載の方法。
【請求項２２】
前記ＲＡＭは複数のエントリを記憶するよう構成され、前記エントリの各々は基準アドレスに関連するタグを記憶するものである、請求項１８に記載の方法。
【請求項２３】
カウンタにより、前記ＣＡＭをミスする基準アドレスに応答して新しいタグが提供されるごとにカウントする、請求項２２に記載の方法。
【請求項２４】
前記ＴＬＢフラッシュフィルタは、前記カウンタがオーバーフローすると非活性化される、請求項２３に記載の方法。
【請求項２５】
複数のエントリを有するメモリ回路を含み、前記複数のエントリの各々はアドレス変換を記憶するためのメモリブロックのアドレスを記憶するよう構成され、さらに、
前記メモリ回路に結合される回路を含み、前記メモリ回路に結合される前記回路は、前
記メモリ回路に記憶される前記複数のエントリに対応する前記アドレス変換が変化した場合には、コンテキストスイッチに応答して、変換索引バッファ（ＴＬＢ）のフラッシュを許すよう構成され、前記メモリ回路に結合される前記回路は、前記アドレス変換が変化しなかった場合には、前記ＴＬＢのフラッシュを防ぐよう構成される、装置。
【発明の詳細な説明】
【０００１】
【発明の背景】
技術分野
この発明はプロセッサに関し、より特定的には、アドレス変換を記憶するのに用いられる変換索引バッファに関する。
【０００２】
背景技術
メモリ管理を用いたコンピュータシステムは、メモリアクセスを行なうために仮想アドレスを物理アドレスに変換する必要があることがある。典型的なコンピュータプログラムは、メモリモデルをアドレス指定して、メモリアクセスを行なう際に仮想メモリアドレスを発行するように書かれてある。次に仮想メモリアドレスは、プログラムにより必要とされる情報に対するアクセスのために物理メモリアドレスへと変換されることになる。仮想アドレスから物理アドレスへの変換を行なうためには、異なったコンピュータアーキテクチャでさまざまな機構が存在する。
【０００３】
アドレス変換を行なう際の１つの問題が待ち時間である。メモリからの情報のアクセスに必要な時間に加え、いくつかのクロックサイクルがアドレス変換を行なうのに用いられ得る。この待ち時間のペナルティは、頻繁なメモリアクセスを行なうプログラムにおいては重大なもの、あるいは許容できないものとなることがある。アドレス変換から待ち時間のペナルティを減少させる一般的な１つの方法は、変換索引バッファ（ＴＬＢ）を用いることである。ＴＬＢはプロセッサ内に位置する小さなメモリであり、仮想アドレスから物理アドレスへの変換を記憶するのに用いられる。典型的なＴＬＢは、最新のアドレス変換について仮想アドレスと物理アドレスとの両方を記憶できる。プログラムは、メモリアクセスを試みる時に仮想アドレスを発行するであろう。するとＴＬＢが、発行された仮想アドレスがあるかどうかについて探索されることになる。発行された仮想アドレスに対応する物理アドレスが見つかると、次にこれは主メモリへのアクセスに用いられ得る。典型的に、変換はページ単位（たとえば４キロバイト、２メガバイト、４メガバイトなど）で行なうようにされており、ＴＬＢは仮想アドレスのページ部分および対応する物理アドレスのページ部分を記憶できる。
【０００４】
ＴＬＢによってもたらされる利益にもかかわらず、問題はなお存在する。そのような問題の１つはコンテキストスイッチの際に生じるものである。ＴＬＢを採用した多くのプロセッサにおいて、コンテキストスイッチの結果、ＴＬＢに記憶されたすべての変換が除去されてしまう。これはＴＬＢフラッシュとして知られている。ＴＬＢがフラッシュされるのは、スイッチされたコンテキストに対応するアドレス変換のうち１つ以上が変更されてしまったかもしれず、従ってＴＬＢにキャッシュされた変換がもはや正しい変換ではないかもしれないからである。残念なことに、コンテキストスイッチに続いて新たな処理が実行されると、メモリアクセスごとにアドレス変換が必要となり、ＴＬＢは再びロードされなければならない。アドレス変換とＴＬＢの再ロードの結果、大きな待ち時間ペナルティが生じ得る。この待ち時間ペナルティは、頻繁なコンテキストスイッチを必要とするプログラムまたはオペレーティングシステムによって悪化するおそれがある。
【０００５】
ＴＬＢに記憶されるアドレス変換は、メモリに記憶された基礎となっているデータ構造によって支援される。たとえば、ページングを採用したコンピュータはページテーブルでデータ構造を記憶できる。このようなデータ構造はＴＬＢにロードされる変換を含む。これらデータ構造は、コンテキストスイッチによりスイッチされたコンテキストのために変化されることもあるが、多くの場合これらデータ構造は変化されない。データ構造がすべての場合に変化されないという事実にもかかわらず、典型的なプロセッサはそれでもＴＬＢフラッシュを行なうことがある。このような状況下でのＴＬＢフラッシュは不必要であろうし、この結果として上述のような大きな待ち時間ペナルティが生じるおそれがある。
ＵＳ−Ａ−６，０２１，４８１は、どのセグメントレジスタが現在キャッシュにマッピングされているかについての記録が保持される、実効アドレスから実アドレスへのアドレス変換キャッシュを管理する方法を開示する。セグメントレジスタへの移動（ＭＴＳＲ）命令が実行されると、このセグメントレジスタがキャッシュにマッピングされているかどうかを判断するためにキャッシュセグメントレジスタラッチが調べられ、もしそうであれば無効化ラッチがセットされる。次にコンテキスト同期イベントが起こると、無効化ラッチは、キャッシュが無効化されるべきかどうかを判断するために調べられる。
ＤＥ−Ａ−１９５  １６  ９４９には、変換索引バッファ（ＴＬＢ）の領域全体を素早く無効化するためのフラッシュ索引バッファ（ＦＬＢ）が記載されており、ここでＦＬＢがオーバーフローすると、ＴＬＢとＦＬＢとの両方が無効化される。
ＥＰ−Ａ−０，５６８，１９５は、アドレス空間が新たなタスクにより再使用されるときにのみＴＬＢを消去することにより、ＴＬＢ消去オーバーヘッドを減少させるためのプロセスを開示しており、アドレス空間識別子を有するＦＩＦＯは、ＦＩＦＯの上に現れると消去を引き起こす消去マーカを含む。
ＵＳ−Ａ−４，０５３，９４８は、消去カウンタとＴＬＢエントリにある消去カウンタフィールドとを含む索引アレイ無効化機構を開示し、これは増分カウンタを有し、カウンタオーバーフローが生じるとＴＬＢを無効化する。
【０００６】
【発明の開示】
上に概説した問題は、ここに記載の変換索引バッファ（ＴＬＢ）のフラッシュフィルタによってその大部分を解決することができる。一実施例では、プロセッサは最新のアドレス変換を記憶するためのＴＬＢを含む。ＴＬＢフラッシュフィルタは、そこからアドレス変換がロードされてＴＬＢにキャッシュされたところのメモリブロックを監視する。ＴＬＢフラッシュフィルタは、メモリ内の基礎となっているアドレス変換のうちいずれかが変化したかどうかを判断するよう構成される。変化が起こらなかった場合、ＴＬＢフラッシュフィルタはコンテキストスイッチでのＴＬＢフラッシュを防ぎ得る。基礎となっているアドレス変換に変化が生じた場合には、ＴＬＢフラッシュフィルタはコンテキストスイッチ後のＴＬＢフラッシュを許すであろう。
【０００７】
一実施例では、ＴＬＢフラッシュフィルタは領域テーブルを用いて、そこからアドレス変換がＴＬＢにキャッシュされたメモリブロックを追跡する。ＴＬＢフラッシュフィルタは、さまざまなメモリブロック（典型的にはページテーブルまたはディレクトリ）内の、基礎となっているアドレス変換に対する変更を監視し得る。最初のコンテキストスイッチの結果としてＴＬＢフラッシュが生じ、こうしてＴＬＢフラッシュフィルタを活性化することになる。メモリ内の基礎となっているアドレス変換に対する変化が領域テーブルで検出されなければ、後続のコンテキストスイッチの際にＴＬＢフラッシュはＴＬＢフラッシュフィルタによって防止され得る。
【０００８】
ＴＬＢフラッシュフィルタを動作させる方法はさらにコンテキストスイッチの追跡を含む。一実施例では、これは基準アドレスレジスタの値にタグを付すことにより行なわれ得る。基準アドレスレジスタは、特定のコンテキストに関連するページテーブルの基準アドレスを記憶するように構成され得る。タグおよびレジスタの実際の値は領域テーブルでエントリとして記憶されて、特定のメモリ領域に対応し得る。タグはＴＬＢエントリにある他のデータとともに記憶され、このエントリにある変換をコンテキストと関連づける。このように、多くのコンテキストについての変換が同時にＴＬＢにあり得る。現在のコンテキストタグと一致するコンテキストタグを有する変換のみが現在のコンテキストにとって利用可能となり得る。
【０００９】
一実施例で用いられる領域テーブルは、内容参照可能メモリ（ＣＡＭ）およびランダムアクセスメモリ（ＲＡＭ）で実現される。ＣＡＭは、そこからアドレス変換がＴＬＢにロードされるメモリ構造に関する、情報を記憶するのに用いられ得る。このような情報は、ページディレクトリ情報およびページテーブル情報を含み得る。ＲＡＭは、基準アドレスレジスタの値およびその関連のタグを記憶するのに用いられ得る。さらに、基準アドレスエントリの数を追跡するためにカウンタが用いられ得る。カウンタがオーバーフローすると、ＴＬＢフラッシュフィルタは非活性化され、領域テーブルはクリアされ得る。ＣＡＭに記憶されたエントリの数を記録するために領域カウンタもまた用いられ得る。このカウンタのオーバーフローもまた、ＴＬＢフラッシュフィルタが非活性化されて領域テーブルがクリアされることを引き起こし得る。ＴＬＢフラッシュフィルタの非活性化の後、コンテキストスイッチの結果としてＴＬＢフラッシュが生じ得る。その後ＴＬＢフラッシュフィルタは再び活性化され得る。
【００１０】
このようにさまざまな実施例でＴＬＢフラッシュフィルタは、ＴＬＢに対する不必要なフラッシュを防止することができる。ＴＬＢに対する不必要なフラッシュを防止できるため、新たなコンテキストは、基礎となっているアドレス変換がいずれも変化しなかったときには以前にキャッシュされたアドレス変換を用いることができるであろう。これによって多くの場合、仮想アドレスを物理アドレスに変換してこれをＴＬＢにキャッシュする過程を繰返す必要がなくなるであろう。こうして多くのメモリアクセスのための待ち時間が著しく減少され、これによりプロセッサ性能の著しい増加が可能となるであろう。
【００１１】
この発明の他の目的および利点は、以下の詳細な説明および添付の図面を参照することにより明らかとなるであろう。
【００１２】
この発明はさまざまな変形および代替形を受入れることができるが、図面ではこれの特定の実施例を例示し、ここで詳細に説明する。しかしながら、図面およびその説明は、開示する特定の形にこの発明を限定することを意図しておらず、逆にこの発明は、前掲の特許請求の範囲で定められたこの発明の意味および範囲内のすべての変形、均等物および代替物を包含することが理解されるべきである。
【００１３】
【発明の実施の形態】
図１を参照して、プロセッサ１０の一実施例のブロック図が示される。その他の実施例が可能であり企図されている。図１に示すように、プロセッサ１０は、プリフェッチ／プリデコードユニット１２、分岐予測ユニット１４、命令キャッシュ１６、命令アラインメントユニット１８、複数のデコードユニット２０Ａ−２０Ｃ、複数のリザベーションステーション２２Ａ−２２Ｃ、複数の機能ユニット２４Ａ−２４Ｃ、ロード／ストアユニット２６、データキャッシュ２８、レジスタファイル３０、リオーダバッファ３２、ＭＲＯＭユニット３４、およびバスインターフェイスユニット３７を含む。ここで特定の参照番号およびこれに続く文字によって参照される要素は、集合的に参照番号のみにより参照される。たとえば、デコードユニット２０Ａ−２０Ｃは、集合的にデコードユニット２０と呼ばれる。
【００１４】
プリフェッチ／プリデコードユニット１２は、バスインターフェイスユニット３７から命令を受取るように結合され、さらに命令キャッシュ１６および分岐予測ユニット１４に結合される。分岐予測ユニット１４も同様に命令キャッシュ１６に結合される。さらに分岐予測ユニット１４はデコードユニット２０および機能ユニット２４に結合される。命令キャッシュ１６はさらにＭＲＯＭユニット３４および命令アラインメントユニット１８に結合される。命令アラインメントユニット１８はデコードユニット２０に結合される。各々のデコードユニット２０Ａ−２０Ｃはロード／ストアユニット２６に結合され、さらにそれぞれリザベーションステーション２２Ａ−２２Ｃに結合される。リザベーションステーション２２Ａ−２２Ｃはさらにそれぞれ機能ユニット２４Ａ−２４Ｃに結合される。さらにデコードユニット２０およびリザベーションステーション２２は、レジスタファイル３０およびリオーダバッファ３２に結合される。機能ユニット２４は、ロード／ストアユニット２６、レジスタファイル３０およびリオーダバッファ３２に結合される。データキャッシュ２８はロード／ストアユニット２６およびバスインターフェイスユニット３７に結合される。バスインターフェイスユニット３７はさらにＬ２キャッシュへのＬ２インターフェイス、およびバスに結合される。最後に、ＭＲＯＭユニット３４はデコードユニット２０に結合される。
【００１５】
命令キャッシュ１６は、命令を記憶するために設けられる高速キャッシュメモリである。命令は命令キャッシュ１６からフェッチされてデコードユニット２０へ送られる。一実施例で命令キャッシュ１６は、６４バイトライン（１バイトは８個の２進ビットを含む）を有する２ウェイセットアソシアティブ構造の６４キロバイトまでの命令を記憶するように構成される。これに代えて、その他のいかなる所望の構成およびサイズを採用してもよい。たとえば、命令キャッシュ１６はフルアソシアティブ構成、セットアソシアティブ構成またはダイレクトマッピング構成で実現され得る。
【００１６】
命令は、プリフェッチ／プリデコードユニット１２によって命令キャッシュ１６に記憶される。命令は、プリフェッチ機構に従って、命令キャッシュ１６からのそのリクエストに先立ちプリフェッチされ得る。さまざまなプリフェッチ機構がプリフェッチ／プリデコードユニット１２により用いられ得る。プリフェッチ／プリデコードユニット１２が命令を命令キャッシュ１６に転送する際、プリフェッチ／プリデコードユニット１２は命令の各バイトにつき、スタートビット、エンドビットおよび機能ビットの３つのプリデコードビットを生成する。プリデコードビットは各命令の境界を示すタグを形成する。プリデコードタグはさらに、後により詳細に説明するように、所与の命令がデコードユニット２０により直接デコードされ得るかどうか、または、命令が、ＭＲＯＭユニット３４により制御されるマイクロコードプロシージャを呼出すことで実行されるかどうかなどの、追加の情報も運び得る。さらにプリフェッチ／プリデコードユニット１２は、分岐命令を検出して、分岐命令に対応する分岐予測情報を分岐予測ユニット１４に記憶するよう構成され得る。実施例によっていかなる好適なプリデコード機構を採用してもよい。
【００１７】
次に、可変バイト長の命令セットを採用したプロセッサ１０の一実施例のためのプリデコードタグの１つの符号化について説明する。可変バイト長の命令セットは、異なる命令が異なる数のバイトを占め得る命令セットである。プロセッサ１０の一実施例で採用される可変バイト長命令セットの一例が、ｘ８６命令セットである。
【００１８】
例示の符号化では、所与のバイトが命令の最初のバイトであれば、このバイトのスタートビットがセットされる。このバイトが命令の最後のバイトであれば、このバイトのエンドビットがセットされる。デコードユニット２０により直接デコードされ得る命令を「ファーストパス」命令と呼ぶ。残りのｘ８６命令は、一実施例に従うとＭＲＯＭ命令と呼ばれる。ファーストパス命令では、機能ビットは命令に含まれる各々のプレフィックスバイトについてはセットされ、その他のバイトについてはクリアされる。これに代えてＭＲＯＭ命令では、機能ビットは各プレフィックスバイトについてはクリアされ、その他のバイトについてはセットされる。命令の種類は、エンドバイトに対応する機能ビットを調べることで判断され得る。この機能ビットがクリアであれば、命令はファーストパス命令である。逆に、この機能ビットがセットされていれば命令はＭＲＯＭ命令である。こうして或る命令のオペコードは、命令内の第１のクリアである機能ビットと関連するバイトとしてデコードユニット２０により直接デコードされ得る命令内に位置決めされ得る。たとえば、２つのプレフィックスバイト、ＭｏｄＲ／Ｍバイトおよび即値（immediate）バイトを含むファーストパス命令は、以下のスタートビット、エンドビットおよび機能ビットを有し得る。
【００１９】
スタートビット  １００００
エンドビット    ００００１
機能ビット      １１０００
ＭＲＯＭ命令は、デコードユニット２０によるデコードのためにはあまりに複雑だと判断される命令である。ＭＲＯＭ命令はＭＲＯＭユニット３４を呼出すことにより実行される。より具体的には、ＭＲＯＭ命令に遭遇すると、ＭＲＯＭユニット３４は解析を行ない、所望の動作が遂行されるように命令を、規定されたファーストパス命令のサブセットとして発行する。ＭＲＯＭユニット３４はファーストパス命令のサブセットをデコードユニット２０に送る。
【００２０】
プロセッサ１０は分岐予測を用いて、投機的に条件付き分岐命令の後の命令をフェッチする。分岐予測動作を行なうための分岐予測ユニット１４が含まれる。一実施例で分岐予測ユニット１４は分岐先バッファを用い、これは、２つまでの分岐先アドレスと、命令キャッシュ１６にあるキャッシュラインの１６バイト部分ごとに、対応する取られた／取られていない（taken/not taken）予測とをキャッシュする。分岐先バッファは、たとえば２０４８エントリ、またはその他のいかなる好適な数のエントリを含んでもよい。プリフェッチ／プリデコードユニット１２は、特定のラインがプリデコードされると、最初の分岐先を判断する。キャッシュラインに対応する分岐先への後続の更新は、キャッシュライン内の命令の実行によって起こり得る。命令キャッシュ１６はフェッチされている命令アドレスを示し、これにより分岐予測ユニット１４は、どの分岐先アドレスを選択して分岐予測を形成するべきかを判断できる。デコードユニット２０および機能ユニット２４は分岐予測ユニット１４に更新情報を与える。デコードユニット２０は、分岐予測ユニット１４により予測されなかった分岐命令を検出する。機能ユニット２４は分岐命令を実行し、予測された分岐指示が正しくないかどうかを判断する。分岐指示は「取られる」ことがあり、この場合、後続の命令は分岐命令の目標アドレスからフェッチされる。逆に分岐指示は「取られない」こともあり、この場合、後続の命令は分岐命令の後のメモリロケーションからフェッチされる。誤って予測された分岐命令が検出されると、誤って予測された分岐の後の命令はプロセッサ１０のさまざまなユニットから廃棄される。これに代わる構成では、分岐予測ユニット１４は、デコードユニット２０および機能ユニット２４の代わりにリオーダバッファ３２に結合されて、リオーダバッファ３２から分岐誤予測情報を受取り得る。さまざまな好適な分岐予測アルゴリズムが分岐予測ユニット１４により用いられ得る。
【００２１】
命令キャッシュ１６からフェッチされた命令は命令アラインメントユニット１８に運ばれる。命令が命令キャッシュ１６からフェッチされると、対応するプリデコードデータが走査され、フェッチされている命令に関する情報が命令アラインメントユニット１８（およびＭＲＯＭユニット３４）に与えられる。命令アラインメントユニット１８は、走査データを用いてデコードユニット２０の各々に対して命令をアラインする。一実施例では、命令アラインメントユニット１８は、８つの命令バイトからなる３つのセットからの命令を、デコードユニット２０に対してアラインする。デコードユニット２０Ａは、（プログラム順序で）デコードユニット２０Ｂおよび２０Ｃにより並行して受取られる命令に先立つ命令を受取る。同様にデコードユニット２０Ｂは、プログラム順序でデコードユニット２０Ｃにより並行して受取られる命令に先立つ命令を受取る。
【００２２】
デコードユニット２０は、命令アラインメントユニット１８から受取られた命令をデコードするよう構成される。レジスタオペランド情報が検出されてレジスタファイル３０およびリオーダバッファ３２へ送られる。加えて、命令が１つ以上のメモリ操作の実行を必要とする場合、デコードユニット２０はメモリ操作をロード／ストアユニット２６に送る。各命令は機能ユニット２４のための制御値のセットへとデコードされ、これら制御値は、命令に含まれ得るオペランドアドレス情報、および変位または即値データとともに、リザベーションステーション２２に送られる。特定の一実施例で各命令は、機能ユニット２４Ａ−２４Ｃにより別個に実行され得る２つまでの動作にデコードされる。
【００２３】
プロセッサ１０はアウトオブオーダ実行を支援し、リオーダバッファ３２を用いることで、レジスタの読み書き動作についての元のプログラムシーケンスを追跡し、レジスタのリネーミングを実現し、投機的な命令実行と分岐誤予測の回復とを可能にし、および正確な例外を容易にする。リオーダバッファ３２内の一時的記憶ロケーションは、レジスタの更新を含む命令のデコードの際に予約され、こうして投機的レジスタ状態を記憶する。分岐予測が正しくない場合、誤って予測された経路にある投機的に実行された命令の結果は、レジスタファイル３０に書込まれる前にバッファで無効化され得る。同様に、特定の命令が例外を引き起こす場合には、この特定の命令の後の命令は廃棄され得る。このように、例外は「正確」である（すなわち、例外を引き起こす特定の命令の後の命令は、例外に先立って完了されない）。なお、特定の命令は、これがプログラム順序でこの特定の命令に先行する命令より先に実行される場合には、投機的に実行される。先行する命令は分岐命令であることも、または例外を引き起こす命令であることもあり、この場合には投機的結果はリオーダバッファ３２により廃棄され得る。
【００２４】
デコードユニット２０の出力で与えられる命令制御値および即値または変位データは、それぞれのリザベーションステーション２２に直接送られる。一実施例では、各リザベーションステーション２２は、対応する機能ユニットへの発行を待っている６つまでの保留中の命令について、命令情報（すなわち命令制御値ならびにオペランド値、オペランドタグおよび／または即値データ）を保持することができる。なお、図１の実施例では各リザベーションステーション２２は専用の機能ユニット２４と関連づけられる。したがって、３つの専用の「発行位置」がリザベーションステーション２２および機能ユニット２４により形成される。換言すると、発行位置０がリザベーションステーション２２Ａおよび機能ユニット２４Ａにより形成される。アラインされてリザベーションステーション２２Ａに送られた命令は機能ユニット２４Ａにより実行される。同様に、発行位置１がリザベーションステーション２２Ｂおよび機能ユニット２４Ｂにより形成され、発行位置２がリザベーションステーション２２Ｃおよび機能ユニット２４Ｃにより形成される。
【００２５】
特定の命令のデコード時に、必要とされているオペランドがレジスタロケーションである場合にはレジスタアドレス情報がリオーダバッファ３２およびレジスタファイル３０に同時に送られる。当業者であれば、ｘ８６レジスタファイルは８つの３２ビット実レジスタ（すなわち典型的にＥＡＸ、ＥＢＸ、ＥＣＸ、ＥＤＸ、ＥＢＰ、ＥＳＩ、ＥＤＩおよびＥＳＰと呼ばれる）を含むことが理解されるであろう。ｘ８６プロセッサアーキテクチャを採用したプロセッサ１０の実施例では、レジスタファイル３０は３２ビット実レジスタの各々についての記憶ロケーションを含む。ＭＲＯＭユニット３４により用いられるための追加の記憶ロケーションがレジスタファイル３０内に含まれることもある。リオーダバッファ３２は、これらレジスタの内容を変化させる結果のための一時的な記憶ロケーションを含み、こうしてアウトオブオーダ実行を許す。リオーダバッファ３２の一時記憶ロケーションは、実レジスタのうち１つの内容を変更するとデコード時に判断される各命令のために予約される。したがって、特定のプログラムの実行中のさまざまな時点でリオーダバッファ３２は、投機的に実行される所与のレジスタの中身を含む、１つ以上のロケーションを有し得る。所与の命令のデコードの後に、所与の命令でオペランドとして用いられるレジスタに割当てられた以前のロケーションをリオーダバッファ３２が有すると判断された場合、リオーダバッファ３２は、１）最も新しく割当てられたロケーションにおける値、または、２）以前の命令を最終的に実行することになる機能ユニットによって値がまだ生成されていなければ、最も新しく割当てられたロケーションのためのタグを、対応するリザベーションステーションに送る。リオーダバッファ３２が所与のレジスタに予約されたロケーションを有する場合、オペランド値（またはリオーダバッファのタグ）はレジスタファイル３０ではなくリオーダバッファ３２から与えられる。必要とされているレジスタに予約されたロケーションがリオーダバッファ３２にない場合、値はレジスタファイル３０から直接取られる。オペランドがメモリロケーションに対応する場合、オペランド値はロード／ストアユニット２６を通じてリザベーションステーションに与えられる。
【００２６】
特定の一実施例では、リオーダバッファ３２は、並行してデコードされた命令をユニットとして記憶および操作するよう構成される。この構成をここで「ライン志向」と呼ぶ。いくつかの命令を一緒に操作することによって、リオーダバッファ３２内に採用されるハードウェアを単純化できる。たとえば、この実施例に含まれるライン志向のリオーダバッファは、１つ以上の命令をデコードユニット２０が送るたびに３つの命令（各デコードユニットから１つの命令）に関する命令情報のために十分な記憶場所を割当てる。これと対照的に、従来のリオーダバッファでは実際に送られる命令の数に依存してさまざまな量の記憶場所が割当てられる。このさまざまな量の記憶場所を割当てるためには、比較的多数の論理ゲートが必要となり得る。並行してデコードされた命令の各々が実行されると、命令の結果は同時にレジスタファイル３０に記憶される。次に記憶場所は、並行してデコードされた命令のさらなるセットへの割当のために解放される。加えて、命令ごとに用いられる制御論理回路の量は、制御論理がいくつかの並行してデコードされる命令にわたって償却（amortized）されるので減少する。特定の命令を識別するリオーダバッファタグは、ラインタグおよびオフセットタグの２つのフィールドに分割され得る。ラインタグは、この特定の命令を含む並行してデコードされる命令のセットを識別し、オフセットタグはこのセット内のどの命令がこの特定の命令に対応するかを識別する。なお、レジスタファイル３０に命令結果を記憶させて対応する記憶場所を解放することは、命令の「退避」と呼ばれる。さらに、プロセッサ１０のさまざまな実施例でどのようなリオーダバッファ構成を採用してもよいことが注目される。
【００２７】
既に述べたようにリザベーションステーション２２は、命令が対応する機能ユニット２４により実行されるまで命令を記憶する。命令は、（ｉ）この命令のオペランドが与えられており、かつ（ii）同じリザベーションステーション２２Ａ−２２Ｃ内にある、プログラム順序でこの命令の前の命令に、オペランドがまだ与えられていなければ、実行へと選択される。なお、命令が機能ユニット２４のうち１つにより実行されると、この命令の結果は、この結果を待っている任意のリザベーションステーション２２へ直接渡され、同時にこの結果がリオーダバッファ３２の更新のために渡される（この技術は一般に「結果フォワーディング」と呼ばれている）。命令は、関連の結果がフォワーディングされるクロックサイクル中に実行へと選択されて機能ユニット２４Ａ−２４Ｃへ渡され得る。リザベーションステーション２２はこの場合フォワーディングされた結果を機能ユニット２４に送る。命令が機能ユニット２４により実行されるために多数の動作へとデコードされ得る実施例では、動作は互いに対し別個にスケジュールされ得る。
【００２８】
一実施例では、機能ユニット２４の各々は、加算および減算の整数演算、さらに桁送り、循環、論理演算、および分岐動作を行なうよう構成される。これら動作は、デコードユニット２０によって特定の命令のためにデコードされる制御値に応答して実行される。なお、浮動小数点演算に対応するために浮動小数点ユニット（図示せず）も採用され得る。浮動小数点ユニットは、ＭＲＯＭユニット３４またはリオーダバッファ３２から命令を受取り、次にリオーダバッファ３２と通信して命令を完了させる、コプロセッサとして動作し得る。加えて、機能ユニット２４は、ロード／ストアユニット２６により実行されるロードおよび記憶メモリ動作のためのアドレス生成を行なうよう構成され得る。特定の一実施例では、各機能ユニット２４はアドレスを生成するためのアドレス生成ユニットと、残りの機能を行なうための実行ユニットとを含み得る。２つのユニットは、クロックサイクル中に異なった命令または動作に応じて独立に動作し得る。
【００２９】
機能ユニット２４の各々はさらに、条件付き分岐命令の実行に関する情報を分岐予測ユニット１４に与える。分岐予測が正しくない場合、分岐予測ユニット１４は、命令処理パイプラインに入った誤って予測された分岐の後の命令をフラッシュし、命令キャッシュ１６または主メモリからの必要な命令のフェッチを引き起こす。なお、このような状況においては、誤って予測された分岐命令の後に起こる元のプログラムシーケンス内の命令の結果は、投機的に実行されロード／ストアユニット２６およびリオーダバッファ３２に一時的に記憶されていたものも含めて廃棄される。さらに、分岐実行の結果は機能ユニット２４によりリオーダバッファ３２に与えられ、これが機能ユニット２４に対し分岐誤予測を示し得ることも注目される。
【００３０】
機能ユニット２４が生じさせた結果は、レジスタ値が更新されていればリオーダバッファ３２へ、メモリロケーションの内容が変化していればロード／ストアユニット２６へ送られる。結果がレジスタに記憶されるべき場合には、リオーダバッファ３２は、命令がデコードされた時にレジスタの値のために予約されたロケーションに結果を記憶させる。結果を機能ユニット２４およびロード／ストアユニット２６からフォワーディングするための複数の結果バス３８が含まれる。結果バス３８は、生成された結果と、実行されている命令を識別するリオーダバッファタグとを運ぶ。
【００３１】
ロード／ストアユニット２６は、機能ユニット２４とデータキャッシュ２８との間のインターフェイスを与える。一実施例では、ロード／ストアユニット２６は、データキャッシュ２８にアクセスしていない保留中のロードまたはストアのためのデータおよびアドレス情報の記憶ロケーションを有する第１のロード／ストアバッファと、データキャッシュ２８にアクセスしたロードおよび記憶のためのデータおよびアドレス情報の記憶ロケーションを有する第２のロード／ストアバッファとで構成される。たとえば、第１のバッファは１２のロケーションを含み、第２のバッファは３２のロケーションを含み得る。デコードユニット２０はロード／ストアユニット２６へのアクセスを裁定（arbitrate）する。第１のバッファが一杯であれば、デコードユニットは、ロード／ストアユニット２６に保留中のロードまたは記憶リクエスト情報のための余裕ができるまで待つことになる。ロード／ストアユニット２６はまた、保留中の記憶メモリ動作に照らしてロードメモリ動作の依存性検査を実行してデータ一貫性の維持を確実にする。メモリ動作は、プロセッサ１０と主メモリサブシステムとの間のデータ転送である。メモリ動作は、メモリに記憶されたオペランドを利用する命令の結果であることも、データ転送を引き起こすが他の動作を引き起こさないロード／ストア命令の結果であることもある。加えて、ロード／ストアユニット２６は、セグメントレジスタ、およびｘ８６プロセッサアーキテクチャにより規定されるアドレス変換機構関連の他のレジスタなどの、特殊レジスタのための特殊レジスタ記憶を含み得る。
【００３２】
データキャッシュ２８は、ロード／ストアユニット２６と主メモリサブシステムとの間で転送されているデータを一時的に記憶するために設けられる高速キャッシュメモリである。一実施例では、データキャッシュ２８は２ウェイセットアソシアティブ構造の６４キロバイトまでのデータを記憶する容量を有する。データキャッシュ２８は、セットアソシアティブ構成、フルアソシアティブ構成、ダイレクトマッピング構成、およびあらゆる好適なサイズのあらゆる他の構成を含む、さまざまな特殊メモリ構成で実現され得ることが理解される。
【００３３】
ｘ８６プロセッサアーキテクチャを採用したプロセッサ１０の特定の一実施例では、命令キャッシュ１６およびデータキャッシュ２８は線形的にアドレス指定され、物理的にタグを付される。線形アドレスは、命令により指定されるオフセットと、ｘ８６アドレス変換機構のセグメント部分により指定される基準アドレスとから形成される。線形アドレスは任意には、主メモリにアクセスするために物理アドレスに変換され得る。線形から物理への変換は、ｘ８６アドレス変換機構のページング部分により指定される。物理アドレスは物理タグと比較されてヒット／ミス状態を判断する。
【００３４】
バスインターフェイスユニット３７は、バスを通じてプロセッサ１０とコンピュータシステムの他の構成要素との間の通信を行なうよう構成される。たとえばバスは、デジタル・イクイップメント・コーポレーション（Digital Equipment Corporation）により開発されたＥＶ−６バスと互換性があり得る。これに代えて、パケットベース、単方向または双方向リンクを含むあらゆる好適な相互接続構成を用いてもよい。二次キャッシュ（level two cache）へのインターフェイスのために、任意のＬ２キャッシュインターフェイスを採用してもよい。
【００３５】
図２に移ると、ＴＬＢフラッシュフィルタを採用するプロセッサ１０の一部の一実施例のブロック図が示される。ＴＬＢフラッシュフィルタ４０は、ロード／ストアユニット２６、バスインターフェイスユニット３７、Ｌ１キャッシュ２５、およびＴＬＢ３９に結合される。Ｌ１キャッシュ２５はたとえば、命令キャッシュ１６およびデータキャッシュ２８を含み得る。実施例によっては、Ｌ１キャッシュ２５の命令キャッシュ１６およびデータキャッシュ２８の各々は、これら自身の別個のＴＬＢと関連付けられ得る。これらＴＬＢは各キャッシュに一体化され得る。ロード／ストアユニット２６はレジスタファイル３０に結合される。レジスタファイル３０のレジスタの中には基準アドレスレジスタ３０１がある。基準アドレスレジスタ３０１は、現在実行中のコンテキストのためのページテーブルの基準アドレスを記憶し得る。これに代えて基準アドレスレジスタ３０１は、ページディレクトリポインタテーブルの基準アドレス、または現在実行中のコンテキストに関連する他のアドレス情報を記憶することもある。基準アドレスレジスタ３０１はコンテキストスイッチ中に更新され得る。
【００３６】
ＴＬＢフラッシュフィルタは、ＴＬＢ３９にロードされ得るアドレス変換を含むメモリブロックを監視するよう構成される。ＴＬＢフラッシュフィルタ４０は、監視されているメモリブロックにおいて１つ以上のアドレス変換に対する変化を検出すると、次のコンテキストスイッチに続いてＴＬＢ３９のフラッシュを許すであろう。ここに示す実施例では、ＴＬＢ３９のフラッシュを許すためにＴＬＢフラッシュフィルタは無効化信号をアサートし得る。ロード／ストアユニット２６もまた、信号（ここではLS TLB無効化として示す）をアサートすることによりＴＬＢ３９のフラッシュを引き起こし得る。この信号は、ロード／ストアユニット２６によりアサートされると、ＴＬＢ３９の無条件フラッシュを引き起こすか、または次のコンテキストスイッチでＴＬＢのフラッシュを許すことになる。無条件フラッシュのいくつかの可能な原因については、後に図５を参照して論じる。
【００３７】
ＴＬＢフラッシュフィルタ４０は最初のコンテキストスイッチにより活性化され得る。この最初のコンテキストスイッチは、コンピュータシステムの最初のブート後、またはフラッシュフィルタの非活性化の後に起こり得る。最初のコンテキストスイッチの結果ＴＬＢ３９のフラッシュが起こり得る。最初のコンテキストスイッチの後は、ＴＬＢ３９のフラッシュはＴＬＢフラッシュフィルタ４０によりフィルタされ得る。
【００３８】
ＴＬＢフラッシュフィルタ４０はバスインタフェースユニット３７に結合され、監視するメモリブロックに関する情報を受取ることができる。ここに示す実施例では、ＴＬＢフラッシュフィルタ４０はバスインタフェースユニット３７からページディレクトリエントリを受取ることができる。さまざまな実施例においてＴＬＢフラッシュフィルタ４０はまた、ページディレクトリエントリ、ページディレクトリポインタ、ページテーブル、またはアドレス変換に用いられ得る他のデータ構造に関する、情報を受取り得る。一般に、アドレス変換情報を記憶するメモリブロックのいかなるアドレスも、バスインターフェイスユニット３７によりＴＬＢフラッシュフィルタ４０に与えられ得る。ＴＬＢフラッシュフィルタ４０はまた、（後に詳細に説明する）領域テーブルの探索のために、バスインターフェイスユニット３７からスヌープ（またはプローブ）リクエスト信号およびスヌープアドレスを受取り得る。ＴＬＢフラッシュフィルタ４０はまた、コンテキストスイッチが生じたときにロード／ストアユニット２６から通知を受取ることができるが、これはロード／ストアユニットが特殊レジスタバス（ＳＲＢ）リングを巡って基準アドレスレジスタ３０１に記憶される新たなアドレスを伝搬できることによる。
【００３９】
一般にＳＲＢリングは、特殊レジスタとの通信に用いられ得るバスである。さまざまな特殊レジスタがプロセッサ全体にわたりさまざまなユニットに位置し得る。ここに示す実施例では、ロード／ストアユニット２６はＳＲＢリングのバスマスタとして働き、こうして特殊レジスタにかかわる読み書き動作を制御することができる。ＳＲＢリングの実現により、特殊レジスタを、これを用いる論理付近に置きかつロード／ストアユニット２６の制御下に置くことが可能となるであろう。
【００４０】
次に図３を参照して、ＴＬＢフラッシュフィルタの一実施例のブロック図が示される。ＴＬＢフラッシュフィルタ４０はリングノード４０１、領域テーブル４０２およびフィルタ回路４０３を含む。フィルタ回路４０３はＴＬＢ３９に結合され、ＴＬＢを無効化またはフラッシュする信号をアサートし得る。領域テーブル４０２は内容参照可能メモリ（ＣＡＭ）およびランダムアクセスメモリ（ＲＡＭ）を含む。領域テーブル４０２のＣＡＭ部分は、ページディレクトリポインタなどのアドレスおよび関連のタグを記憶するのに用いられ、さらに基準アドレスレジスタ３０１（図２）からの基準アドレスを記憶し得る。領域テーブルのＲＡＭ部分は典型的に、基準アドレスレジスタ３０１からの基準アドレスに関連するタグを記憶する。ＣＡＭおよびＲＡＭエントリについては下でさらに詳細に論じる。
【００４１】
領域テーブル４０２へのエントリは、リングノード４０１およびマルチプレクサ４０７を通じてＴＬＢフラッシュフィルタ４０に受取られ得る。マルチプレクサ４０７はまた、ここに示すようにページディレクトリエントリ（ＰＤＥ）属性など他の情報を受取るのにも用いられる。マルチプレクサ４０７を通じて受取られた情報は次にＣＡＭまたはＲＡＭのいずれかに記憶され得る。領域テーブル４０２からの情報もまた、リングノード４０１を通じてＳＲＢリングへ伝搬され得る。
【００４２】
２つのカウンタがさらに領域テーブル４０２に関連付けられる。領域カウンタ４０４は、ＣＡＭへのエントリの数を計数するよう構成され、一方で基準アドレスレジスタカウンタ４０５は基準アドレスレジスタタグの数を計数するよう構成される。これらカウンタの各々は、領域テーブルにある利用可能なリソースを追跡する。領域テーブルに利用可能なリソースがなくなると、カウンタのうち１つがオーバーフロー信号をアサートすることになる。たとえば、各々のＣＡＭエントリが一杯であれば、領域カウンタはオーバーフロー信号をアサートするであろう。オーバーフロー信号は、ＴＬＢフラッシュフィルタを非活性化するのに用いられ得る。同様に、利用可能なタグが基準アドレスレジスタカウンタのためにすべて用いられると、これもまたオーバーフローしてオーバーフロー信号をアサートし、これはＴＬＢフラッシュフィルタを非活性化することになる。ＴＬＢフラッシュフィルタ４０の非活性化の後の最初のコンテキストスイッチの結果、ＴＬＢフラッシュが起こるだろう。ＴＬＢフラッシュフィルタ４０が非活性化される際には、両方のカウンタが制御論理４０６によりリセットされるであろう。
【００４３】
既に述べたように、領域テーブル４０２はＴＬＢフラッシュフィルタ４０の動作中に複数のエントリを記憶するよう構成される。領域テーブル４０２のエントリは、ページテーブル、またはＴＬＢ３９にアドレス変換をロードするのに用いられ得る他のデータ構造に対する、変更を検出するのに用いられ得る。ページテーブルまたはその他のデータ構造が変化したことを検出するために、バスインターフェイスユニット３７（図１）は領域テーブルをプローブ（すなわちスヌープ）してもよい。領域テーブルのプローブはプロセッサ内の一貫性プロトコルの機能であってもよい。一般に、スヌープアドレスは領域テーブル（たとえばＣＡＭ）に記録されたアドレスと比較される。領域テーブルのプローブの結果がヒットであり、かつこのプローブが、ＴＬＢフラッシュフィルタ４０により監視されているメモリブロックにあるデータを変更することになるメモリアクセスについてのもの（これはＴＬＢにアドレス変換をロードするのに用いられるデータがおそらく変更されたことを示す）であれば、次のコンテキストスイッチの結果ＴＬＢ３９のフラッシュが生じることになる。ここに示す実施例では、フィルタ回路４０３が無効化信号をアサートすると、ＴＬＢフラッシュが起こってＴＬＢ３９に現在記憶されているすべてのエントリが無効化されることになる。典型的に、領域テーブルの探索の結果として、ＣＡＭに記憶されたエントリのうち１つについて一致があれば、ヒットの結果が生じる。プローブの結果ヒットがなければ、ＴＬＢフラッシュフィルタ４０は次のコンテキストスイッチの後のＴＬＢフラッシュを防ぐであろう。
【００４４】
次に図４に移ると、ＴＬＢフラッシュフィルタの一実施例の領域テーブルエントリを例示する図が示される。各領域テーブルエントリはＣＡＭエントリ４０２−ＣおよびＲＡＭエントリ４０２−Ｒを含む。ＣＡＭエントリ４０２−Ｃは、有効ビット（Ｖ）、ページディレクトリポインタ（ＰＤＰ）ビットおよびタグを含む。その他のさまざまな実施例では、ＣＡＭエントリはさらに、属性および保護情報などの、メモリアドレスと関連する他の種類の情報をも含み得る。ＣＡＭエントリ４０２−Ｃのタグは典型的に、ＴＬＢにあるアドレス変換に対応するアドレスである。このアドレスはたとえば、ページディレクトリポインタであっても、ページディレクトリエントリからのページテーブルポインタまたは基準アドレスレジスタからの基準アドレスであってもよい。一実施例では、アドレスはメモリの物理アドレスに対応する線形アドレスであり得る。タグにより示されるアドレスがページディレクトリポインタのためのものであれば、ＰＤＰビットがセットされるだろう。タグにより示されるアドレスがページディレクトリエントリのためのものであれば、ＰＤＰビットはクリアになる。タグにより示されるアドレスがＴＬＢまたはページテーブルのいずれかに記憶されたアドレス変換のために有効であることを示すために、有効ビットがセットされ得る。ＣＡＭエントリにより記憶されるアドレスは、上述のようにバスインターフェイスユニットによりプローブされることによって、そこからアドレス変換がＴＬＢにロードされた、ページテーブルまたはその他のデータ構造に変更が生じたかどうかをＴＬＢフラッシュフィルタ４０が判断することを可能にする。
【００４５】
ＲＡＭエントリ４０２−Ｒは、有効ビットおよび基準アドレスレジスタタグを含む。ここに示す実施例では、基準アドレスレジスタタグは、ＣＡＭに記憶されている基準アドレスレジスタエントリと関連付けられていてもよい。ＣＡＭに記憶される基準アドレス値は、以前に遭遇したコンテキストまたは現在実行中のコンテキストのページテーブル（またはその他のデータ構造）のための基準アドレスであり得る。この実施例の基準アドレスレジスタタグは、単に基準アドレスに対応する数である。（典型的に各コンテキストスイッチとともに生じる）基準アドレスレジスタの変化のたびに、レジスタの新たな値は、領域テーブルに記憶されている最後のＴＬＢフラッシュ以降に生じた古い値と比較される。一致が見つからない（すなわちミスである）場合、レジスタの値はタグを割当てられてＣＡＭに記憶され、関連のタグはＲＡＭに記憶され得る。一致は、レジスタの現在の値が既に領域テーブルに記憶されていることを示す。したがって、以前に遭遇したコンテキストがプロセッサにより再開されると、以前に用いられたアドレス変換が再び用いられ得る。一致があれば新たなタグを割当てる必要はない。
【００４６】
図５は、フィルタ回路４０３の一実施例を動作させるための論理を例示する論理図である。フィルタ回路４０３は、或る条件が満たされたときにのみＴＬＢのフラッシュが起こることを可能にする論理を含む。フィルタ回路４０３は、図１のロード／ストアユニット２０６からLS TLB無効化信号およびLS TLB無効化Ｍ信号を受取るよう構成される。LS TLB無効化信号は、ＴＬＢフラッシュフィルタが活性化されているかどうかにかかわらずＴＬＢの無条件フラッシュを引き起こし得る。プロセッサの動作におけるさまざまな変化がＴＬＢのフラッシュを余儀なくさせる。これらの条件は、ページングのターンオフ、グローバルページングのターンオン、メモリタイプの変化、またはメモリ属性の変化を含むがこれらに限定はされない。LS TLB無効化信号は、アサートされると図のＯＲゲートおよびＤフリップフロップを通じて伝搬することになる。次にこれによって、FF TLB無効化信号（この信号は図２および図３に示す無効化信号の均等物である）のアサートが引き起こされ、こうして次のコンテキストスイッチの後のＴＬＢフラッシュを許す。
【００４７】
LS TLB無効化Ｍ信号は、変更が起こった場合にＴＬＢをフラッシュすべきであることを示すのに用いられ得る。この信号は、ＴＬＢフラッシュフィルタが活性化されると、論理ハイ状態に保たれるであろう。変更は、基礎となるアドレス変換に対する変化、またはフラッシュフィルタの状態の変化（カウンタがオーバーフローしたときなど）を含み得る。LS TLB無効化Ｍ信号が論理ハイとしてアサートされ、かつ／ＣＬＲ信号がローとしてアサート（およびＡＮＤゲートへのその入力前に反転）されると、FF TLB無効化信号はアサートされ得る。
【００４８】
／ＣＬＲ信号は、いくつかの異なった条件のうち１つによって論理ロー状態へと駆動され得る。これらの条件は実施例によって変わるだろう。ここに示す実施例では、このような条件は、フラッシュフィルタのリセット（リセット信号）、ページデータの変更（図３でヒット信号として示すページデータ変更信号）、カウンタのうちいずれかのオーバーフロー（領域カウンタオーバーフロー信号、基準アドレスレジスタカウンタオーバーフロー信号）、またはフラッシュフィルタをディスエーブルするための信号（フラッシュフィルタディスエーブル信号）を含み得る。図５の論理回路に、これらの条件の各々についての信号がある。／ＣＬＲ信号は、ここに示す実施例では典型的に論理ハイ状態に保たれ、フィードバック回路（ＯＲゲートを含む）を通じて伝搬して図に示す７入力ＡＮＤゲートへの入力となる。FF TLB無効化信号もまた、アサートされるとフィードバック回路およびＯＲゲートを通じて伝搬し得る。条件のうちいずれの論理ハイ状態への駆動も、結果として（インバータによる）ＡＮＤゲートへの論理ロー入力をもたらし、これにより／ＣＬＲ信号がその論理ロー状態でアサートされることを引き起こす。
【００４９】
次に図６に移ると、ＴＬＢフラッシュフィルタの一実施例の動作を例示するタイミング図が示される。図はフラッシュフィルタの基本的な動作を例示することを意図したものであり、すべての可能な条件または起こり得る結果を包含することを意図してはいない。さらに、図はフラッシュフィルタの実現にかかわる特定の詳細を特徴付けることを意図してはおらず、これは実施例が異なれば変わり得る。
【００５０】
ＴＬＢフラッシュフィルタは最初のコンテキストスイッチによりまず活性化され得る。最初のコンテキストスイッチの前にはフラッシュフィルタが活性化されていないため、フィルタされていないＴＬＢフラッシュが結果として生じ得る。最初のコンテキストスイッチの後、ページテーブルＡがメモリにロードされる。ページテーブルＡは新たなコンテキストと関連付けられ、こうしてこのページテーブルに対応するエントリが図３の領域テーブルにロードされることになるが、これは対応するアドレス変換がＴＬＢにロードされるからである。ページテーブルＡのロードの後、さらなるコンテキストスイッチが起こる。この場合には、ＴＬＢフラッシュは活性化されたＴＬＢフラッシュフィルタにより防がれている。これは、フラッシュを必然的に伴うであろう条件がコンテキストスイッチ間に起こらなかったことを示すものであろう。ここに示す例では、コンテキストスイッチの間にページテーブルＡに対する変更は行われていない。
【００５１】
２回目のコンテキストスイッチの後、ページテーブルＢがメモリにロードされる。ページテーブルＢはアドレス変換を含むことがあり、これらのうちいくつかはＴＬＢにロードされ得る。ページテーブルＢがメモリにロードされた後、ページテーブルＢが変更される。したがって、ページテーブルＢからＴＬＢにロードされたアドレス変換のいくつかがもはや有効でないこともあり得る。したがってＴＬＢフラッシュフィルタは、ＴＬＢフラッシュ（ここでフィルタされたフラッシュとして示す）が次のコンテキストスイッチの後に生じることを可能にし得る。
【００５２】
フィルタされたフラッシュの後に起こる次のイベントは、ページテーブルＣのロードである。図３を参照して論じたように、領域カウンタは領域テーブルのＣＡＭ部分を追跡し、さらなるエントリのための空間が領域テーブルになくなるとオーバーフローする。ここに示す図では、これはページテーブルＣのロードの後に起こり、こうして領域カウンタのオーバーフローが引き起こされる。領域カウンタのオーバーフローはＴＬＢフラッシュフィルタの非活性化を引き起こし得る。非活性化の後の最初のコンテキストスイッチがあると、ＴＬＢはフラッシュされ得る。この最初のコンテキストスイッチはさらにＴＬＢフラッシュフィルタの再活性化を引き起こし得る。
【００５３】
図７Ａおよび図７Ｂは、領域テーブルでのエントリによってカバーされるページング構造と、ＴＬＢフラッシュフィルタ４０の一実施例のためのページング構造に対応するエントリを有する領域テーブルとを例示するブロック図である。図７Ａでは、基準アドレスレジスタ３０１はページディレクトリポインタの領域（Ｒ0）を指し示すアドレスを記憶し得る。領域にある各々のエントリがページディレクトリを指し示す。
【００５４】
次に図８を参照して、バスブリッジ２０２を通じさまざまなシステム構成要素に結合されたプロセッサ１０を含むコンピュータシステム２００の一実施例のブロック図が示される。その他の実施例が可能であり企図されている。ここに示すシステムでは、主メモリ２０４はメモリバス２０６を通じてバスブリッジ２０２に結合され、グラフィックスコントローラ２０８はＡＧＰバス２１０を通じてバスブリッジ２０２に結合される。最後に、複数のＰＣＩ機器２１２Ａ−２１２ＢがＰＣＩバス２１４を通じてバスブリッジ２０２に結合される。ＥＩＳＡ／ＩＳＡバス２２０を通じ１つ以上のＥＩＳＡまたはＩＳＡ機器２１８への電気的インターフェイスをもたらすために、副バスブリッジ２１６がさらに設けられ得る。プロセッサ１０は、ＣＰＵバス２２４を通じてバスブリッジ２０２へ、および任意のＬ２キャッシュ２２８へ結合される。
【００５５】
バスブリッジ２０２は、プロセッサ１０と、主メモリ２０４と、グラフィックスコントローラ２０８と、ＰＣＩバス２１４に結び付けられた機器との間のインターフェイスを与える。バスブリッジ２０２に接続された装置のうち１つから動作が受取られると、バスブリッジ２０２は動作の対象（たとえば特定の装置、または、ＰＣＩバス２１４の場合には、対象はＰＣＩバス２１４上にある）を識別する。バスブリッジ２０２は動作を対象とされた装置へとルート付けする。バスブリッジ２０２は一般に、出所である装置またはバスにより用いられるプロトコルから、対象の装置またはバスにより用いられるプロトコルへ、動作を変換する。
【００５６】
副バスブリッジ２１６は、ＰＣＩバス２１４にＩＳＡ／ＥＩＳＡバスへのインターフェイスを与えることに加えて、望みに応じて追加の機能をさらに組込み得る。望みに応じて、キーボードおよびマウス２２２ならびにさまざまなシリアルポートおよびパラレルポートに動作的支援を与えるために、副バスブリッジ２１６の外部の、またはこれと一体化された入力／出力コントローラ（図示せず）が、コンピュータシステム２００内にさらに含まれ得る。実施例によっては、外部キャッシュユニット（図示せず）がさらにプロセッサ１０とバスブリッジ２０２との間でＣＰＵバス２２４に結合され得る。これに代えて、外部キャッシュはバスブリッジ２０２に結合され、外部キャッシュのためのキャッシュ制御論理がバスブリッジ２０２に一体化されてもよい。Ｌ２キャッシュ２２８はさらにプロセッサ１０への後方構成として示される。なお、Ｌ２キャッシュ２２８はプロセッサ１０とは別個であっても、プロセッサ１０とともにカートリッジ（たとえばスロット１またはスロットＡ）へと一体化されても、またはプロセッサ１０と半導体基板上で集積化されてもよい。
【００５７】
主メモリ２０４は、アプリケーションプログラムが記憶されるメモリであり、プロセッサ１０は主にここから実行を行なう。好適な主メモリ２０４はＤＲＡＭ（Dynamic Random Access Memory）を含む。たとえば、複数のＳＤＲＡＭ（Synchronous DRAM）またはランバス（Rambus）ＤＲＡＭ（ＲＤＲＡＭ）のバンクが好適であろう。
【００５８】
ＰＣＩ機器２１２Ａ−２１２Ｂはさまざまな周辺機器、たとえばネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピー（Ｒ）ディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、および電話カードなどを例示する。同様に、ＩＳＡ機器２１８はさまざまな種類の周辺機器、たとえばモデム、サウンドカード、および、ＧＰＩＢまたはフィールドバスインターフェイスカードなどのさまざまなデータ収集カードを例示する。
【００５９】
グラフィックスコントローラ２０８は、ディスプレイ２２６上のテキストおよび画像の生成を制御するために設けられる。グラフィックスコントローラ２０８は、主メモリ２０４へ、またはここから効果的にシフトされ得る３次元データ構造をもたらすための、当該技術で周知の典型的なグラフィックスアクセラレータを具体化したものでもよい。こうして、バスブリッジ２０２内のターゲットインターフェイスへのアクセスをリクエストし受取って主メモリ２０４へのアクセスを得ることができるという点で、グラフィックスコントローラ２０８はＡＧＰバス２１０のマスタとなり得る。専用のグラフィックスバスであれば主メモリ２０４からのデータの素早い検索に対応できる。或る動作のために、グラフィックスコントローラ２０８はさらにＡＧＰバス２１０上にＰＣＩプロトコルトランザクションを生成するよう構成され得る。バスブリッジ２０２のＡＧＰインターフェイスはしたがって、ＡＧＰプロトコルトランザクションと、ＰＣＩプロトコルターゲットおよびイニシエータトランザクションとの両方を支援する機能を含み得る。ディスプレイ２２６は、画像またはテキストが提示され得るどのような電子ディスプレイであってもよい。好適なディスプレイ２２６は陰極線管（「ＣＲＴ」）、液晶ディスプレイ（「ＬＣＤ」）などを含む。
【００６０】
なお、上の説明ではＡＧＰ、ＰＣＩおよびＩＳＡまたはＥＩＳＡバスを例として用いたが、望みに応じてどのようなバスアーキテクチャを代用してもよい。さらに、コンピュータシステム２００は追加のプロセッサ（たとえばコンピュータシステム２００の任意の構成要素として示すプロセッサ１０ａ）を含む多重処理コンピュータシステムであってもよい。プロセッサ１０ａはプロセッサ１０と類似のものであり得る。より具体的には、プロセッサ１０ａはプロセッサ１０と同一のコピーでもよい。プロセッサ１０ａは、独立のバス（図５に示す）を通じてバスブリッジ２０２に接続されても、またはプロセッサ１０とＣＰＵバス２２４を共有してもよい。さらに、プロセッサ１０ａは、Ｌ２キャッシュ２２８に類似の任意のＬ２キャッシュ２２８ａに結合され得る。
【００６２】
【産業上の利用可能性】
この発明は、マイクロプロセッサおよび変換索引バッファに適用可能である。
【図面の簡単な説明】
【図１】  ＴＬＢフラッシュフィルタが実現され得るプロセッサの一実施例を示すブロック図である。
【図２】  ＴＬＢフラッシュフィルタを採用したプロセッサの一部の一実施例を示すブロック図である。
【図３】  ＴＬＢフラッシュフィルタの一実施例を示すブロック図である。
【図４】  ＴＬＢフラッシュフィルタの一実施例のための領域テーブルエントリを例示する図である。
【図５】  ＴＬＢフラッシュフィルタの一実施例を動作させるための論理を例示する論理図である。
【図６】  ＴＬＢフラッシュフィルタの一実施例の動作を例示するタイミング図である。
【図７Ａ】  領域テーブルにあるエントリによりカバーされるページング構造を例示するブロック図である。
【図７Ｂ】  図７Ａに示すページング構造に対応するエントリを有する領域テーブルを例示するブロック図である。
【図８】  ＴＬＢフラッシュフィルタが実現され得るコンピュータシステムの一実施例を示すブロック図である。
【図１】
0004437001.tif 000002
【図２】
0004437001.tif 000003
【図３】
0004437001.tif 000004
【図４】
0004437001.tif 000005
【図５】
0004437001.tif 000006
【図６】
0004437001.tif 000007
【図７Ａ】
0004437001.tif 000008
【図７Ｂ】
0004437001.tif 000009
【図８】
0004437001.tif 000010