(57)【要約】一実施例に従って、コンピュータシステムが開示される。コンピュータシステムは、仮想−物理アドレス変換を保存するよう変換バッファ（ＴＢ）を有する第１の中央演算処理ユニット（ＣＰＵ）と、ＴＢの動作を反映するよう第１のＣＰＵへ結合され、第２のＣＰＵからの無効要求を受信すると項目を探すよう実装されたスヌープフィルタとを有する。
2008501190.tif 000002
【特許請求の範囲】
【請求項１】
仮想−物理アドレス変換を保存する変換バッファ（ＴＢ）を有する第１の中央演算処理ユニット（ＣＰＵ）と、
前記ＴＢの動作を反映するよう前記第１のＣＰＵへ結合され、第２のＣＰＵからの無効要求を受信すると項目を探すよう実装されたスヌープフィルタと、
を有することを特徴とするコンピュータシステム。
【請求項２】
項目の検索中に前記スヌープフィルタで見つけられた整合は、項目が前記スヌープフィルタ及び前記ＴＢで無効にされるべきであることを示す、ことを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記第１のＣＰＵでの無指定命令は、前記項目が前記スヌープフィルタ及び前記ＴＢで無効にされる前に書き出される、ことを特徴とする請求項２記載のコンピュータシステム。
【請求項４】
前記スヌープフィルタは、前記第２のＣＰＵから受信される無効要求に応答する、ことを特徴とする請求項１記載のコンピュータシステム。
【請求項５】
前記スヌープフィルタは、前記ＴＢがミスでロードされるたびに、項目をロードされる、ことを特徴とする請求項１記載のコンピュータシステム。
【請求項６】
前記スヌープフィルタ及び前記ＴＢは、項目を追い出すよう、先入れ先出し（ＦＩＦＯ）交換法を実施する、ことを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
前記スヌープフィルタ及び前記ＴＢは、項目を追い出すよう、ランダム交換法を実施する、ことを特徴とする請求項５記載のコンピュータシステム。
【請求項８】
前記スヌープフィルタ及び前記ＴＢ内の同じ項目は交換される、ことを特徴とする請求項７記載のコンピュータシステム。
【請求項９】
前記スヌープフィルタは、物理アドレスのみを有する、ことを特徴とする請求項１記載のコンピュータシステム。
【請求項１０】
第１の中央演算処理ユニット（ＣＰＵ）で第２のＣＰＵから無効要求を受信して、前記第１のＣＰＵで変換バッファ（ＴＢ）内の項目を無効にするステップと、
前記項目を見つけるよう前記第１のＣＰＵへ結合されたスヌープフィルタを探すステップと、
前記項目が前記スヌープフィルタ内で見つかる場合に、前記ＴＢ及び前記スヌープフィルタで前記項目を無効にするステップとを有することを特徴とする方法。
【請求項１１】
前記項目が前記スヌープフィルタ及び前記ＴＢで無効にされる前に、前記第１のＣＰＵで無指定命令を書き出すステップを更に有することを特徴とする請求項１０記載の方法。
【請求項１２】
前記ＴＢで前記項目を無効にするステップは、
前記スヌープフィルタから前記第１のＣＰＵへ割り込みを送信するステップと、
前記第１のＣＰＵの動作を中断させるステップと、
前記ＴＢから前記項目を取り除くステップとを有することを特徴とする請求項１０記載の方法。
【請求項１３】
前記ＴＢで前記項目を無効にするステップは、前記スヌープフィルタが、前記項目を無効にするよう前記ＴＢに直接的にアクセスするステップを有する、ことを特徴とする請求項１０記載の方法。
【請求項１４】
前記スヌープフィルタは、前記ＴＢにアクセスするために標準的な書き込みポートを使用する、ことを特徴とする請求項１３記載の方法。
【請求項１５】
仮想−物理アドレス変換を保存するよう実装された変換バッファ（ＴＢ）に保存された項目に対応する物理アドレス項目を有しており、前記ＴＢの動作を反映するテーブルを有し、
第２のＣＰＵからの無効要求を受信すると項目を探すよう実装されたスヌープフィルタ。
【請求項１６】
項目の検索中に当該スヌープフィルタで見つけられた整合は、項目が当該スヌープフィルタ及び前記ＴＢで無効にされるべきであることを示す、ことを特徴とする請求項１５記載のスヌープフィルタ。
【請求項１７】
前記ＴＢがミスでロードされるたびに、項目をロードされる、ことを特徴とする請求項１５記載のスヌープフィルタ。
【請求項１８】
当該スヌープフィルタ及び前記ＴＢは、項目を追い出すよう、先入れ先出し（ＦＩＦＯ）交換法を実施する、ことを特徴とする請求項１７記載のスヌープフィルタ。
【請求項１９】
当該スヌープフィルタ及び前記ＴＢは、項目を追い出すよう、ランダム交換法を実施する、ことを特徴とする請求項１７記載のスヌープフィルタ。
【請求項２０】
当該スヌープフィルタ及び前記ＴＢ内の同じ項目は交換される、ことを特徴とする請求項１９記載のスヌープフィルタ。
【請求項２１】
第１の中央演算処理ユニット（ＣＰＵ）と、
仮想−物理アドレス変換を保存する変換バッファ（ＴＢ）を有する第２のＣＰＵと、
前記第１のＣＰＵ及び前記第２のＣＰＵへ結合された主要メモリ装置と、
前記ＴＢの動作を反映するよう前記第２のＣＰＵへ結合され、前記第１のＣＰＵからの無効要求を受信すると項目を探すよう実装されたスヌープフィルタとを有することを特徴とするコンピュータシステム。
【請求項２２】
項目の検索中に前記スヌープフィルタで見つけられた整合は、項目が前記スヌープフィルタ及び前記ＴＢで無効にされるべきであることを示す、ことを特徴とする請求項２１記載のコンピュータシステム。
【請求項２３】
前記第１のＣＰＵでの無指定命令は、前記項目が前記スヌープフィルタ及び前記ＴＢで無効にされる前に書き出される、ことを特徴とする請求項２２記載のコンピュータシステム。
【請求項２４】
前記スヌープフィルタは、前記第１のＣＰＵからの無効要求に応答する、ことを特徴とする請求項２１記載のコンピュータシステム。
【請求項２５】
前記スヌープフィルタは、物理アドレスのみを有する、ことを特徴とする請求項２１記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、更に具体的には、本発明は、マルチプロセッサを有するコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータシステムは、長い間、マルチプロセッサが単一のプロセッサを共有することを可能にするために、仮想メモリを使用してきた。通常は、オペレーティング・システム（ＯＳ）は、アドレス空間を夫々の処理と関連付ける。夫々のアドレス空間は、１又はそれ以上の多重の固定サイズの仮想ページに分けられる。ＯＳは、これらの仮想ページを物理ページにマッピングし、ページ・テーブル（Ｐａｇｅ  Ｔａｂｌｅ）と呼ばれるソフトウェア構成において、対応する変換を保持する。ページ・テーブルは、極めて大きくなりうるので、プロセッサは、通常、変換バッファ（ＴＢ）と呼ばれるハードウェア構成において、これらの変換をキャッシュに格納することができる。
【０００３】
更に具体的には、処理のデータセグメントのための変換をキャッシュに格納するＴＢは、データ変換バッファ（ＤＴＢ）と呼ばれる。ユーザレベルのロード及び記憶は、メモリにアクセスする前に、対応する物理アドレスを得るようＤＴＢにアクセスする。ロード又は記憶は、それがＤＴＢにアクセスするが、対応する変換を見つけられない場合に、ＤＴＢミスを経験する。このような場合に、ソフトウェア又はハードウェアのいずれのページ・テーブル・ウォーカーも、対応する変換をＤＴＢへ取り込む。処理において、それは、また、ＤＴＢから既存の項目を追い出しても良い。変換がＤＴＢに取り込まれると、パイプラインは再開されて、通常は、ロード又はメモリが再試行される。
【０００４】
ＯＳがページ・テーブル項目を変更すると、それは、また、ＤＴＢにおいて対応する項目を無効にする。ＯＳは、それが（場合により、ディスクへのページ・スワップに起因して）仮想−物理マッピングを変更する場合又はそれがページの保護レベルを変更する場合のいずれかで、ページ・テーブル項目を変更する。単一プロセッサシステムにとって、このことは、極めて容易であり、プロセッサの処理能力をあまり必要としない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、共有メモリマルチプロセッサシステムにおけるＤＴＢ無効動作は、数万のサイクルを要することがある。これは、プロセッサが共有の仮想ページに対応するページ・テーブル項目を変更すると、他のプロセッサの全てにおける全てのＤＴＢでの対応する項目が無効にされなければならないためである。
【課題を解決するための手段】
【０００６】
本発明は、以下で与えられる詳細な記載と、本発明の様々な実施例に係る添付の図面とから、更に十分に理解されるであろう。しかし、図面は、本発明を特定の実施例に限定しているわけではなく、説明及び理解のために用いられるに過ぎない。
【発明を実施するための最良の形態】
【０００７】
無効化メカニズムが望まれる。明細書中での「一実施例」又は「１つの実施例」への言及は、実施例に関連して記載される特定の事項、構成又は特徴が、本発明の少なくとも１つの実施例に含まれることを意味する。明細書中の様々な場所での「一実施例において」というフレーズの出現は、必ずしも同じ実施例に全て言及しているわけではない。
【０００８】
以下の記述で、多数の事項が説明されている。しかし、当業者には明らかなように、本発明は、これらの特定の事項を伴わずに実行されても良い。他の例では、周知の構成及び装置が、本発明を不明瞭とすることを避けるために、詳細な記述でよりもむしろ、ブロック図形式で示される。
【０００９】
図１は、コンピュータシステム１００の一実施例のブロック図である。コンピュータシステム１００は、バス１０５へ結合された中央演算処理ユニット（ＣＰＵ）１０２を有する。一実施例において、ＣＰＵ１０２は、カリフォルニア州サンタクララのインテル（登録商標）社製のペンティアム（登録商標）ＩＩプロセッサ・ファミリー、ペンティアム（登録商標）ＩＩＩプロセッサ、及びペンティアム（登録商標）ＩＶプロセッサを含むプロセッサのペンティアム（登録商標）ファミリーの中のプロセッサである。代替的に、他のＣＰＵが使用されても良い。
【００１０】
一実施例に従って、バス１０５は、高い処理能力を有するメモリバス要素と、割り込み制御通信（ＩＣＣ）要素とを有する。共有メモリ１１５は、バス１０５へ結合されている。
【００１１】
メモリ１１５は、システム１００に含まれる複数のＣＰＵ１０２又は如何なる他の装置によっても実行されうるデータ信号により表されるコード及び命令の列、並びにデータを記憶する。一実施例において、共有メモリ１１５は、動的ランダムアクセスメモリ（ＤＲＡＭ）を有する。しかし、共有メモリ１１５は、他のメモリ形式を用いて実施されても良い。
【００１２】
更なる実施例において、１又はそれ以上の入出力（Ｉ／Ｏ）インターフェース１１９は、バス１０５へ結合されている。インターフェース１１９は、コンピュータシステム１００内の装置へのインターフェースを提供する。例えば、Ｉ／Ｏインターフェース１１９は、オレゴン州ポートランドのＰＣＩ特別利益団体（ＳＩＧ）によって開発された仕様書改訂２．１に準拠するペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスへ結合されても良い。
【００１３】
上述したように、問題は、共有メモリマルチプロセッサシステムにおけるＤＴＢの無効化に関して存在する（例えば、無効化は、１つのプロセッサが共有の仮想ページに対応するページ・テーブル項目を変更すると、他のプロセッサのＤＴＢの対応する項目が無効にされなければならないので、数万のサイクルを要しうる。）。
【００１４】
現在のプロセッサには、通常、プロセッサのキャッシュ内のキャッシュブロックが無効にされうる方法とは異なり、プロセッサの外からのＤＴＢ項目を無効にするハードウェアメカニズムは存在しない。結果として、プロセッサは、無効にされるべきＤＴＢ項目を有する遠く離れたプロセッサにおいて、重大な（ｈｅａｖｙｗｅｉｇｈｔ）プロセッサ間割り込みを引き起こす。対応する割り込みハンドラーは無効化を実行する。
【００１５】
ＤＴＢ項目を無効にするための、このようなプロセッサ間割り込みは、プロセッサが、それらの夫々のＤＴＢでページ・テーブル項目のコピーをキャッシュに格納したことに関する確認応答を有していないために、共有メモリマルチプロセッサシステム内の全てのプロセッサで引き起こされる。ある例では、ページ・テーブル内のシェアラー（ｓｈａｒｅｒｓ）の数の同一性を保つことによって、割り込みの数を最適化することが可能でありうる。しかし、プロセッサは、無効にされるべきＤＴＢ項目のコピーをキャッシュに格納する全てのプロセッサを少なくとも無効にしなければならない。
【００１６】
過去の計測は、（ＤＴＢシュートダウンとして更によく知られる）このようなＤＴＢ無効化の性能を測定してきた。例えば、１６プロセッサ・アンコール・マルチマックスに関して、１．６ミリ秒のＤＴＢシュートダウン時間が測定されており、数千万の命令の時間量が単一のプロセッサで実行されうる。
【００１７】
従って、ＤＴＢシュートダウンは、現在のマルチプロセッサシステムでは非常に高価な動作である。共有メモリマルチプロセッサがますます普及し、集積回路マルチプロセッサがますます一般的となり、より多くのプロセッサが単一のシステムに組み込まれるとともに、ＤＴＢシュートダウン動作は、ある大きなアプリケーション及び動作システムにとって性能リミッタとなりうる。
【００１８】
ＤＴＢシュートダウンのコストを低減する１つの方法は、ハードウェア・ソリューションの実施である。例えば、プロセッサが他のプロセッサでＤＴＢ項目を無効にする必要がある場合に、プロセッサは、他のプロセッサへ（キャッシュブロック無効要求に極めて類似する）ＤＴＢ無効要求を発行する。しかし、このようなメカニズムは、問題を解決しない。
【００１９】
第１に、ＤＴＢは、通常、仮想アドレスを用いて検索される（又はＣＡＭをなされる）。ＤＴＢ無効要求を備える物理アドレスは、標準のＤＴＢが再度ＣＡＭを行うものではない。物理アドレスに関してＤＴＢにおける第２のＣＡＭ動作を加えることが可能でありうる。しかし、それは、いつものＤＴＢアクセスの待ち時間を増大させ、それにより、１又はそれ以上のサイクルによってパイプラインを広げうる。代替的に、ＤＴＢ全体が無効にされても良いが、これは、有効なＤＴＢ項目が不必要に無効にされうるので、それほど魅力的な解決方法ではない。
【００２０】
第２に、外部無効化がＤＴＢを探ることを可能にするよう、第２のポート、即ち、読み出されたＤＴＢと無効要求との間の単一の読み出しポートの多重化が必要とされうる。しかし、いずれの解決法も好ましくない。第２のポートを加えることは、ＤＴＢのサイズを増大させ、それにより、（ＣＡＭのための）より長いアクセス時間を余儀なくする。多重化の選択肢は、プロセッサからのＤＴＢアクセスを遅くしうる。
【００２１】
一実施例に従って、ハードウェア構成は、コンピュータシステム１００において夫々のＣＰＵ１０２へ結合されている。図２は、ＣＰＵ１０２の一実施例がＤＴＢ２１０を有することを表す。ＤＴＢ２１０は、仮想−物理ページ変換をキャッシュに格納するハードウェア構成である。更に、キャッシュ２２０は、ＣＰＵ１０２へ結合されている。更に、ＤＴＢスヌープフィルタ２３０は、ＣＰＵ１０２へ結合されている。
【００２２】
一実施例において、ＤＴＢスヌープフィルタ２３０は、ＤＴＢ２１０を反映するハードウェア構成である。従って、ＤＴＢスヌープフィルタ２３０は、ＤＴＢ２１０がミスで（ｏｎ  ａ  ｍｉｓｓ）ロードされるたびに、項目をロードされる。更なる実施例において、ＤＴＢスヌープフィルタ２３０は、ＣＰＵの起動が進行することができるように、ＤＴＢ無効要求に応答する。
【００２３】
しかし、一実施例において、ＤＴＢスヌープフィルタ２３０は、物理アドレスしか有さない。従って、ＤＴＢ２１０とは異なって、ＤＴＢスヌープフィルタ２３０は、如何なる他のペイロードも有さない。更に、ＤＴＢスヌープフィルタ２３０は、無効にされるべき物理アドレスに対して検索される。
【００２４】
一実施例に従って、ＤＴＢ２１０及びＤＴＢスヌープフィルタ２３０が両方ともＦＩＦＯ交換方法を有するならば、項目は、両方の構成から正確に追い出されうる。しかし、ＤＴＢ２１０及びＤＴＢスヌープフィルタ２３０がランダム交換方法を有するならば、ＤＴＢ２１０及びＤＴＢスヌープフィルタ２３０が同じ項目を正確に有することを保証するよう正確な項目が交換されるという直接的な保証はない。従って、このような実施例において、解決法は、ＤＴＢ２１０とＤＴＢスヌープフィルタ２３０とで同じ正確な項目を交換することである。
【００２５】
一実施例に従って、全ての外部ＤＴＢ無効動作は、ＤＴＢスヌープフィルタ２３０で検索されうる。整合は、ＤＴＢ２１０が、無効にされなければならない対応する項目を有することを示しうる。その後、ＣＰＵ１０２は、全ての無指定（ｎｏｎ−ｃｏｍｍｉｔｔｅｄ）の命令を書き出し（ｆｌｕｓｈ）、ＤＴＢ２１０及びＤＴＢスヌープフィルタ２３０から対応する項目を見つけて無効にし、再スタートする。
【００２６】
図３は、無効動作を受ける際のＣＰＵ１０２及び対応するＤＴＢスヌープフィルタ２３０での動作の一実施例を表すフロー図である。処理ブロック３１０で、他のＣＰＵ（例えば、ＣＰＵ１０２（２））からの無効動作が、（例えば、ＣＰＵ１０２（１）で）受け取られる。上述したように、無効動作は、ＣＰＵ１０２（１）で変更される対応するページ・テーブル項目の結果であっても良い。
【００２７】
処理ブロック３２０で、ＤＴＢスヌープフィルタ２３０は、無効にされるべき項目を検索される。一実施例において、ＤＴＢスヌープフィルタ２３０は、ＣＡＭ動作を介して検索される。処理ブロック３３０で、項目がＤＴＢスヌープフィルタ２３０内に保存されているかどうかが決定される。項目がＤＴＢスヌープフィルタ２３０内にないならば、動作は起こらず、制御は、処理ブロック３１０へ戻り、ブロック３１０で、他の動作が受信されうる。
【００２８】
しかし、テーブル項目がＤＴＢスヌープフィルタ２３０内で見つけられるならば、処理ブロック３４０で、全ての無指定命令がＣＰＵ１０２から書き出される。一実施例に従って、ＤＴＢスヌープフィルタ２３０は、ＤＴＢ２１０へのインデックスを有する。従って、テーブル項目がＤＴＢスヌープフィルタ２３０で見つけられるならば、ＤＴＢ２１０を検索する必要はない。代わりに、ＤＴＢスヌープフィルタは、容易に項目を獲得する。
【００２９】
処理ブロック３５０で、対応するテーブル項目は、ＤＴＢ２１０及びＤＴＢスヌープフィルタ２３０で無効にされる。一実施例に従って、ＤＴＢスヌープフィルタ２３０は、ＣＰＵ１０２へ割り込みを送信する。これに応答して、ＣＰＵ１０２は、項目がＤＴＢ２１０から削除されている間、動作を保持する。他の実施例において、ＤＴＢスヌープフィルタ２３０は、直接的にＤＴＢ２１０を無効にする。このような実施例では、ＤＴＢスヌープフィルタ２３０は、直接的にＤＴＢ２１０にアクセスするために標準の書き込みポートを使用する。従って、ＣＰＵ１０２が停止する必要はない。
【００３０】
上述したメカニズムは、入来するＤＴＢ無効要求がスヌープ（ｓｎｏｏｐ）対象とするハードウェアＣＡＭ構成を特徴とする。従って、不要なシュートダウンは除去されて、プロセッサにおいて真のＤＴＢ項目を無効にしうるシュートダウンのみがスケジューリングされる。
【００３１】
本発明の多数の変更及び変形は、明らかに、上記を読んだ後に当業者にとって明らかとなるであろう。一方で、当然のことながら、説明の目的で示唆及び記載された如何なる特定の実施例も、限定と解釈されるべきではない。従って、様々な実施例の詳細への言及は、特許請求の範囲の適用範囲を制限しているわけではなく、特許請求の範囲は、それ自体で、発明として見なされる事項のみを列挙する。
【図面の簡単な説明】
【００３２】
【図１】コンピュータシステムの一実施例を表す。
【図２】ＣＰＵの一実施例を表す。
【図３】データ変換バッファを無効にするメカニズムの一実施例に係るフローチャートを表す。
【図１】
2008501190.tif 000003
【図２】
2008501190.tif 000004
【図３】
2008501190.tif 000005
【国際調査報告】
2008501190.tif 000006
2008501190.tif 000007