(57)【要約】【課題】モリマネージメントユニットによって処理するためにそれぞれが優先度を有するペンディング要求の間を仲裁するための方法を提供する。【解決手段】第１の優先度を有する第１のペンディング要求をメモリマネージメントユニットによって処理するために選択し、第１のペンディング要求を処理するために選択する前記ステップの時点で第１の優先度よりは低い優先度を有する第２の要求がペンディングされている場合、第１の優先度に関連するマスクビットを設定し、第１の要求を処理し、さらに、第１の要求の処理後メモリマネージメントユニットによって処理するために第３のペンディング要求を選択し、この第３のペンディング要求はマスクビットがセットされた場合第１の優先度より低い優先度を有しているものである、各ステップによって、ペンディング要求の間を仲裁する。【選択図】図３
2006146965.tif 000002
【特許請求の範囲】
【請求項１】
メモリマネージメントユニットによって処理するためにそれぞれが優先度を有するペンディング要求の間を仲裁するための方法であって、
第１の優先度を有する第１のペンディング要求を前記メモリマネージメントユニットによって処理するために選択し、
前記第１のペンディング要求を処理するために選択する前記ステップの時点で前記第１の優先度よりは低い優先度を有する第２の要求がペンディングされている場合、前記第１の優先度に関連するマスクビットを設定し、
前記第１の要求を処理し、さらに
前記第１の要求の処理後前記メモリマネージメントユニットによって処理するために第３のペンディング要求を選択し、
前記第３のペンディング要求は前記マスクビットがセットされた場合前記第１の優先度より低い優先度を有しているものである、前記各ステップを含むペンディング中の要求を仲裁するための方法。
【請求項２】
それぞれが関連する優先度を有する、処理すべき複数のペンディング要求間を仲裁するための方法であって、
（ａ）処理すべき最高の優先度を有するペンディング要求を選択し、
（ｂ）前記最高の優先度を有すペンディング要求の選択の時点でより低いペンディング要求が有った場合、前記最高の優先度のペンディング要求に関連したマスクビットを設定し、
（ｃ）前記最高の優先度を有するペンディング要求を処理し、
（ｄ）前記最高の優先度を有するペンディング要求の処理後、最高のペンディング要求として前記最高の優先度の要求の次に最高の優先度を有するペンディング要求を選択し、さらに
（ｅ）前記全てのペンディング要求が処理されるまで、前記ステップ（ａ）から（ｄ）までを繰り返す、各ステップを含む複数のペンディング要求間の仲裁方法。
【請求項３】
それぞれのペンディング要求は関連するマスクビットを有し、さらに処理すべき前記最高のペンディング要求は、そのマスクビットがセットされていない前記最高のペンディング要求である、請求項２に記載の複数のペンディング要求間の仲裁方法。
【請求項４】
さらに、各ペンディング要求に関連したマスクビットを初期化するステップを含む、請求項２に記載の複数のペンディング要求間の仲裁方法。
【請求項５】
前記初期化ステップは、各ペンディング要求に関連するマスクビットを０に設定するものである、請求項４に記載の複数のペンディング要求間の仲裁方法。
【請求項６】
さらに、何れかのペンディング要求を処理する以前にダイレクトメモリアクセスを処理するステップを含む、請求項２に記載の複数のペンディング要求間の仲裁方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーチャルメモリを支持する情報処理装置においてアドレス変換の速度アップのために使用される変換索引バッファ（ＴＬＢ）を含むメモリマネージメントユニット（ＭＭＵ）における、それぞれが優先度を有するペンディング要求間の仲裁方法に関する。
【背景技術】
【０００２】
バーチャルメモリシステムを支持する情報処理装置において、中央処理装置（ＣＰＵ）によって参照されるアドレス空間は、”バーチャルメモリ”と呼ばれ、このＣＰＵによって特定される各バーチャル（仮想）アドレスは、メモリマネジメントユニット（ＭＭＵ）によってフィジカルな（あるいは物理）アドレスに変換される。ＭＭＵはこの物理アドレスをメインメモリサブシステム（ＭＳＵ）に送り、ＭＳＵはアクセスされたアイテムを検索しあるいは記憶する。従来の幾つかのＭＭＵでは１サイクル中に数個の変換要求（例えば、現在実行中の命令の２個のオペランドのバーチャルアドレスと、次に実行すべき命令のバーチャルアドレスに対応したもの）を受け取ることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、これらのＭＭＵは１度に１個のバーチャルアドレスしか変換することができない。従って、あまり大きなハードウエアコストの追加を招くことなく、１度に１個以上のバーチャルアドレスを変換することが可能なＭＭＵ、およびこのＭＭＵにおいて処理するために、それぞれが優先度を有するペンディング要求の間を仲裁するための方法が望まれている。
【０００４】
種々の理由で、バーチャルから物理アドレスへの幾つかの変換機構は２個の段階を含んでいる。アドレス変換に必要な平均時間を減少させるためには、少なくとも幾つかのアドレスは、１段階で直接バーチャルアドレスから物理アドレスへ変換できることが望ましい。
【課題を解決するための手段】
【０００５】
１個の命令キャッシュと２個のデータキャッシュによってそれぞれＭＭＵに供給される３個の要求に同時にサービスする事が可能なマイクロ変換索引バッファ（μＴＬＢ）を含むメモリマネージメントユニット（ＭＭＵ）を開示する。μＴＬＢは、８エントリーの完全連想テーブルであって、各エントリーは１個のバーチャルアドレスと、対応する物理アドレスとさらに種々のステータスビットを記憶することができる。μＴＬＢの各エントリーは３個の比較器と結合され、それによってμＴＬＢは、命令キャッシュおよび２個のデータキャッシュからＭＭＵによってそれぞれ受信された３個のバーチャルアドレスとμＴＬＢのエントリーに記憶された各バーチャルアドレスとを同時に比較することができる能力を有するようになる。
【０００６】
もし特定のバーチャルアドレスを記憶するエントリーがμＴＬＢにおいて見いだせない場合は、この特定のバーチャルアドレスに対して１度に１アドレスの通常の変換を実行する。この変換は、２個の非常に大きな変換索引テーブル、可能ならば（このような大きなＴＬＢにおいてミス（不一致）の場合は）メインメモリにあるテーブル、へのアクセスを含んでいる。バーチャルアドレスから物理アドレスへの正規変換が正常に終了すると、バーチャルアドレスおよび物理アドレスはμＴＬＢのエントリーに挿入されてもよい。
【０００７】
アービタは、ＭＭＵによる即値処理のために、優先度が低いキャッシュからの要求のサービスにおいて過度の遅延を避け得る方法を用いて、異なる優先度のキャッシュから受信された数個のペンディング要求の内から１個を選択する。特に、もしアービタが特定の優先度のキャッシュからの要求を最終的に選択しかつこの最終の選択の時点で優先度の低いペンディング要求が有った場合、アービタはこの特定の優先度のキャッシュからの要求を選択しない。
【発明を実施するための最良の形態】
【０００８】
図１に、本発明にかかるＭＭＵの一実施例を示す。ＣＰＵ１０１は、バーチャルアドレスを命令キャッシュ（Ｉキャッシュ）１０２またはデータキャッシュ１０３（偶数データキャッシュ）と１０４（奇数データキャッシュ）の一方にそれぞれ送る事によって、命令アドレスあるいはデータ（オペランド）アドレスを特定する。偶数および奇数データキャッシュ１０３、１０４は、メモリインターリーブのために設けられているが、その他はキャッシュ１０２と同様に、類似でありかつ一般的なものである。その他の実施例では、例えば１個の命令キャッシュと１個のデータキャッシュのように、種々のキャッシュの組み合わせが可能である。
【０００９】
各キャッシュ１０２、１０３、１０４は仮想的にアドレスされ、同一のサイクルにおいてＣＰＵ１０１から読み出しまたは書き込み要求を受信することができる。もし適当なキャッシュにおいて、特定のバーチャルアドレスのアイテムが存在すれば、このアイテムはＣＰＵに戻され（書き込み要求の場合はキャッシュ中に書き込まれる）、ＭＭＵ１２４によって特定のバーチャルアドレスをフィジカルな即ち物理アドレスに変換する必要は無い。各バーチャルアドレスは６４ビットであり、その低位の１３ビットはページ内のオフセットを特定する。このようにして、ＭＭＵ１２４は、バーチャルアドレスの高位の５１ビットを物理アドレスに変換して、ページの開始アドレスを特定する。以下に使用する「バーチャルアドレス」と言う用語は、これらの５１個の高位ビットを意味する。
【００１０】
要求されたアイテムが適当なキャッシュ内に存在しない場合は、ＭＭＵ１２４は次に特定のバーチャルアドレスをフィジカルアドレスに変換し、その後メインメモリ１２３中のそのフィジカルアドレスに記憶されたアイテム（命令またはオペランド）を検索する（または書き込む）。ＭＭＵ１２４は最初、例えば８エントリー完全連想キャッシュメモリであるマイクロＴＬＢ（μＴＬＢ）１０８中の特定バーチャルアドレスに対応する物理アドレスを発見しようとする。μＴＬＢ１０８の各エントリーは、５１ビットのバーチャルアドレスタグ、対応するフィジカルアドレスおよび種々のステータスビット（例えば保護ビット）を記憶することができ、さらに３個の比較器と結合され、それによってμＴＬＢ１０８は、キャッシュ１０２、１０３および１０４からＭＭＵ１２４によって受信された３個のバーチャルアドレスをそれぞれ、μＴＬＢ１０８のエントリー中に記憶された各バーチャルアドレスと同時に比較する能力を持つようになる。その他の実施例では、μＴＬＢ１０８は適当な比較のためのハードウエアを有する他の適当なメモリであってもよい。
【００１１】
μＴＬＢ１０８の１エントリーのステータスビットは、６個の保護ビット（ユーザーとスーパバイザモードのための読み出し／書き込み／実行）と、有効ビットおよび修正ビット(modify bit)を含む。修正ビットは、μＴＬＢ１０８のエントリーに記憶された物理アドレスにおいてスタートするメモリページが修正されていて、そのため別のディスクページによって上書きされる前にディスクに書き込まれるべきがどうかを示す。有効ビットは、エントリー中に記憶された有効変換があるか否かを示す。
【００１２】
μＴＬＢ１０８の構造を図２に示す。μＴＬＢ１０８の８個のエントリー２０２のそれぞれのバーチャルアドレスフィールドは、２４個の５１ビット比較器（ＣＭＰ５１）２０１のうちの３個への入力として示されている。なおこの比較器２０１はその他の入力として、バーチャルアドレスＶＡ０、ＶＡ１およびＶＡ２を受信する。エントリー２０２の１個の有効ビットが１にセットされ、そのエントリーに記憶されたバーチャルアドレスがＶＡ０、ＶＡ１またはＶＡ２に等しければ、μＴＬＢ１０８においてヒット（一致）が生じ、このエントリーの物理アドレスとステータスビット（即ち有効、保護および修正ビット）が、コマンド要求バッファ１０９、１１０または１１１にそれぞれ記憶される。
【００１３】
修正ビットがゼロにセットされてはいるがしかしその特定のバーチャルアドレスが書き込み要求に関連している、μＴＬＢ１０８中の有効エントリーにおけるバーチャルアドレスに、ある特定のバーチャルアドレスが一致する場合（キャッシュ１０２、１０３および１０４の対応する１個から受け取った、コマンド要求バッファ１０９、１１０または１１１の１個中のコマンド情報によって示すように）、μＴＬＢ１０８においてミス（不一致）またはヒットを示すコマンド要求バッファに対応するフィールドは、ミスを示すようにセットされる。以下に記載するように、この変換がＴＬＢ１１７および１１８を通過するようにすることが必要である。これは、この変換に対応するＴＬＢ１１８のエントリー中の修正ビットを、以下に示す理由で１にセットするためである。
【００１４】
μＴＬＢ１０８は、ＭＭＵ１２４によって生成されたライン２０３上の無効(invalidate)信号を受信することができる。この信号は、導入された場合、各エントリーの有効ビットをゼロに設定することによってμＴＬＢ１０８の内容を無効にする。さらに、無効信号の導入の結果、μＴＬＢ１０８におけるミスまたはヒットを示すコマンド要求バッファ１０９、１１０および１１１のフィールドを、ミスを示すように設定する。無効信号はまた、特定のＣＰＵ命令が実行される場合（即ち、別のプロセスの実行が開始される場合）、文脈(context) スイッチに導入される。
【００１５】
μＴＬＢ１０８が特定のバーチャルアドレスに対応するエントリーを含まない場合、ＭＭＵはこの特定のバーチャルアドレスを２個の段階において変換する。第１の段階では、このバーチャルアドレスは、領域ｉｄ（Ｒｉｄ）および論理アドレス（ＬＡ）に変換される。第２の段階では、領域ｉｄおよび論理アドレスは、２１４バイトのページの開始アドレスを特定する物理アドレスに変換される。
【００１６】
段階１および２における変換は先ずＴＬＢ１１７と１１８をそれぞれアクセスすることによって試みられる。ＴＬＢ１１７は１２８エントリーの完全連想メモリであって、このメモリはバーチャルアドレスを領域ｉｄおよび論理アドレスに変換する。ＴＬＢ１１７の各エントリーは、１個のバーチャルアドレスと、対応する領域ｉｄ、対応するオフセット（第２段階の変換を実行するのに必要な対応する論理アドレスは、バーチャルアドレスとこのオフセットとの合計から計算される）、および６個の保護ビット（ユーザーおよびスーパバイザモードのための読み出し／書き込み／実行）を記憶している。
【００１７】
ＴＬＢ１１８は１０２４エントリー（２５６×４）の４ウエイセットの連想ＳＲＡＭであって、このＳＲＡＭは領域ｉｄと論理アドレス対を物理アドレスに変換する。ＴＬＢ１１８の各エントリーはメモリ１２３に記憶されたページテーブルから検索され、物理アドレス（ＲＡ）、６個の保護ビット（ユーザーおよびスーパバイザモードのための読み出し／書き込み／実行）および修正ビットを記憶する。この修正ビットは、開始アドレスがＲＡであるメインメモリ中のページが修正されている場合、１にセットされる。ＴＬＢ１１８のエントリーの修正ビットは、メモリ中の対応するページテーブルエントリーの修正ビットを更新し続ける。これら最後のエントリーの修正ビットを更新し続けることは、次のような理由で重要である。すなわち、情報処理装置のオペレーションシステムでは、メモリ中の所定のページを他のディスクページがそのメモリページ内に読み込まれる前にディスク中に書き込むべきか否かを決定するに当たって、この修正ビットに依存しているためである。この理由のために、μＴＬＢ１０８が特定のバーチャルアドレスを記憶する有効エントリーを保持する場合であっても、ＴＬＢ１１７および１１８を介した変換はある状況下で（μＴＬＢ１０８のエントリーの修正ビットに関連して上述したように）進行し、修正ページに対応するＴＬＢ１１８のエントリーの修正ビットを確実に１にセットする（これは、μＴＬＢ１０８におけるヒットのために、ＴＬＢ１１７および１１８がバイパスされた場合は起こらない）。
【００１８】
もし、ＴＬＢ１１７かまたはＴＬＢ１１８の何れかが必要な変換を保持しない場合、要求された変換を検索しそれをＴＬＢ１１７かＴＬＢ１１８にロードするために、ＭＭＵ１２４は、メインメモリ１２３によって記憶されたテーブルへのメモリアクセスを開始する。バーチャルアドレスからフィジカルアドレスへの２レベルの変換が起こった後、ＭＭＵ１２４は、バーチャルアドレス／フィジカルアドレス対を（ＴＬＢ１１７のアクセスされたエントリー中に記憶される６個の保護ビットとＴＬＢ１１８のアクセスされたエントリーの６個の保護ビットの論理ＡＮＤである、６個の保護ビットを含む種々のステータスビットと同様に）、μＴＬＢ１０８の１個のエントリーに挿入してもよい。
【００１９】
μＴＬＢを有することの幾つかの利点は、キャッシュ１０２、１０３および１０４が、バーチャルアドレスＶＡ１、ＶＡ２およびＶＡ３に記憶された情報に対する要求を、同じサイクル（サイクル１）においてＣＰＵ１０１から受け取る状態を考察することによって、説明される。サイクル２では、次に示す事象が発生する。
【００２０】
１）ＭＭＵ入力バッファ１０５、１０６および１０７がバーチャルアドレスＶＡ１、ＶＡ２およびＶＡ３をそれぞれ各キャッシュ１０２、１０３および１０４から受信する。
【００２１】
２）ＭＭＵ入力バッファ１０５、１０６および１０７の出力を受信するμＴＬＢ１０８は、μＴＬＢ１０８の８個のエントリーのそれぞれに対し、ＶＡ１、ＶＡ２およびＶＡ３をそれぞれ比較する。μＴＬＢ１０８の各エントリーは、汎用レジスタとして実行され、さらに上述したように、エントリーに記憶されたバーチャルアドレスと、ＭＭＵ入力バッファ１０５、１０６および１０７からμＴＬＢ１０８によってそれぞれ受信されたバーチャルアドレスとの同時比較を行うため、３個の比較器と結合されている。このようにして、μＴＬＢ１０８は、ＣＰＵ１０１によってキャッシュ１０２、１０３および１０４にそれぞれ供給された３個のバーチャルアドレスへの並行アクセスをサポートすることができる。
【００２２】
３）キャッシュ１０２、１０３および１０４は、ＶＡ１、ＶＡ２およびＶＡ３に対応するエントリーをそれぞれサーチする。
【００２３】
サイクル３では、以下の事象が発生する。
【００２４】
１）キャッシュ１０２でミスが有った場合、コマンド要求バッファ１０９はＭＭＵ入力バッファ１０５からＶＡ１を受信し、キャッシュ１０２からコマンド要求データを受信する。さもないと、ＣＰＵ１０１がキャッシュ１０２からまたはキャッシュ１０２へ特定のバーチャルアドレスのアイテムを読みだしあるいは書き込むので、有効コマンド要求はバッファ１０９に記憶されない。類似の事象が、コマンド要求バッファ１１０および１１１に対して発生する。
【００２５】
２）コマンド要求バッファ１０９は同様に、ＶＡ１がμＴＬＢ１０８において見いだされたか否かを示すμＴＬＢヒット／ミス情報と、μＴＬＢ１０８中でヒットした場合ＶＡ１に対応する物理アドレスとを受信する。類似の事象がバッファ１１０と１１１に対して発生する。μＴＬＢ１０８の使用はＭＭＵ１２４によるバーチャルアドレスの通常の２段階変換を遅延させないことに注意すべきである。これは、コマンド要求バッファ１０９、１１０および１１１が、キャッシュミスの場合キャッシュ１０２、１０３および１０４からそれらがコマンド要求を受信するのと同一のサイクル内でμＴＬＢ１０８のサーチ結果を受信すると言う理由による。
【００２６】
サイクル４において以下の事象が発生する。
【００２７】
１）アービタ１１３は、マルチプレクサ１１２を制御して、コマンド要求バッファ１０９、１１０、１１１または１２６の１個から有効なコマンド要求を選択する。Ｉ／Ｏコントローラ１２５におけるコマンドバッファ１２６は直接メモリアクセス（ＤＭＡ）要求を記憶する。具体化するために、コマンド要求バッファ１０９が選択されたものと仮定しよう。バッファ１０９の内容は、マルチプレクサ１１５を介して最新要求バッファ（ＣＲＢ）１１６に送られる。バッファ１０９はこの結果キャッシュ１０２からの別のコマンド要求を自由に受け入れることができるようになる。以後のサイクルにおいて、ＭＭＵ１２４は、記憶されたコマンド要求の処理が完了しＭＭＵ１２４が別のコマンド要求の処理を始めるまで、ＭＵＸ１１５にＣＲＢ１１６の内容の選択を行わせる。
【００２８】
２）ＣＲＢ１１６の内容がμＴＬＢのヒットを示した場合、ＭＭＵ１２４はＶＡ１の２段階変換を開始せず、μＴＬＢ１０８から返還された保護ビットが保護違反を示していないものと仮定した場合、むしろＣＲＢ１１６における要求（サイクル３においてバッファ１０９によってμＴＬＢ１０８から受信されるＶＡ１に対応した物理アドレスを含む）が、ＭＭＵ１２４によってメインメモリ１２３に与えられる。この時点でＣＲＢ１１６は、バッファ１０９、１１０、１１１または１２５の内の１個からの別の有効コマンド要求を受け入れて処理することが可能となる。ＣＲＢ１１６の内容がμＴＬＢのミスを示している場合、ＭＭＵ１２４はＴＬＢ１１７とＴＬＢ１１８の並行アクセスを開始し、それぞれにアドレス変換の第１および第２の段階を実行する。
【００２９】
サイクル５では、ＣＲＢ１１６の内容がμＴＬＢのミスを示しているものと仮定して、以下の事象が発生する。
【００３０】
１）ＴＬＢ１１７が、領域ｉｄおよびＶＡ１に対応する論理アドレス（Ｒｉｄ１とＬＡ１）を見いだすためにアクセスされる。もしＴＬＢ１１８がＶＡ１に対応するエントリーを有さないと、次にＭＭＵ１２４はＲｉｄ１とＬＡ１を記憶するテーブルを検索するためにメモリ１２３に１個以上の要求を初めなければならない。
【００３１】
２）ＴＬＢ１１８は、Ｒｉｄ最終キャッシュ１０９、ＶＡ１のＲｉｄ／論理アドレス対に対応する物理アドレスを見いだすためにアクセスされる。なおこのＲｉｄ最終キャッシュ１０９は、ＭＭＵ１２４が２段階アドレス変換を実行したキャッシュ１０９から受信した、以前のバーチャルアドレスに関連したＲｉｄである。ＭＭＵ１２４は類似のＲｉｄをキャッシュ１１０および１１１に対して記憶する。各値、即ちＲｉｄ最終キャッシュ１０９とＶＡ１をそれぞれ、ＲｉｄｉとＬＡ１（これらはＴＬＢ１１７がサーチされるまで使用可能ではない）と仮定すると、ＭＭＵ１２４は同時にＴＬＢ１１７と１１８のサーチを開始することができ、それによって２段階変換のための時間を２サイクルから１サイクルに減少することができる。
【００３２】
サイクル６では、サイクル５においてヒットがＴＬＢ１１７と１１８の両者で発生したと仮定して、以下の事象が発生する。Ｒｉｄ１がＲｉｄ最終キャッシュ１０９に等しくないか、あるいはＬＡ１がＶＡ１に等しくない場合、領域ｉｄと論理アドレス対Ｒｉｄ１とＬＡ１対応する物理アドレスＲＡ１に対してＴＬＢ１１８をサーチする必要がある（この場合ＶＡ１に対応する物理アドレスのＭＵＳ１２３への配送は、早くてもサイクル７において発生する）。Ｒｉｄ１がＲｉｄ最終キャッシュ１０９に等しく、ＬＡ１がＶＡ１に等しいと、ＴＬＢ１１７および１１８によって変換された保護ビットを調査し保護違反が発生していないことを確認したのち、ＭＭＵ１２４はメモリ１２３をアクセスして、サイクル５でＴＬＢ１１８によって返還された物理アドレス（即ちＲＡ１）において始まるメモリページからの読み出し、あるいはこのページへの書き込みを行う。
【００３３】
ＶＡ１に対する連続した２段階変換後、ＭＭＵ１２４はμＴＬＢ１０８に新しいエントリーを挿入してＶＡ１とＴＬＢ１１８から変換された対応する物理アドレスＲＡ１を記憶する（確かな状況では無いけれどもその幾つかを後述する）。このエントリーの有効ビットは１にセットされる。同様に、ＴＬＢ１１７および１１８によって戻された対応する保護ビットの論理ＡＮＤである、６個の保護ビット（ユーザーの読み出し／書き込み／実行およびスーパバイザの読みだし／書き込み／実行）を、μＴＬＢ１０８の新しいエントリーに挿入する。さらに、要求が書き込みアクセスに対するものである場合、μＴＬＢ１０８に挿入されるエントリーの修正ビットは１にセットされ、それによってＲＡ１から始まるメモリページが修正されていることを示す。
【００３４】
μＴＬＢ１０８に対する置き換えの方針は、ファーストイン・ファーストアウト（ＦＩＦＯ）である。殆どのプログラムによって表示されているリファレンスの局所性を与えると、ＣＰＵ１０１は将来ＶＡ１を恐らく何回も参照するものと思われる。通常、ＣＰＵ１０１によって特定されるバーチャルアドレスの高いパーセンテージのものが、その小さなサイズにも係わらす、μＴＬＢ１０８においてヒットするものと期待される。
【００３５】
以下の状況を含むある状況下では、μＴＬＢ１０８に新たなエントリーが挿入されない。
【００３６】
１）μＴＬＢ１０８において、ＶＡ１に対するエントリーが既に存在する場合。この状態は、ＭＭＵ１２４がμＴＬＢ１０８でミスした場合ＶＡ１に対する２段階変換を実行したと言う事実に係わらす発生する。このミスの後、キャッシュ１０９からのＶＡ１に対する要求の以前に、キャッシュ１１０あるいは１１１からのＶＡ１に対する要求が２段階変換に対して実施される（その結果、ＶＡ１に対するμＴＬＢ１０８の挿入となる）。μＴＬＢ１０８のエントリーを無駄にしないために、ＭＭＵ１２４は、挿入以前にＶＡ１に対してエントリーが既に存在するか否かをチェックする。
【００３７】
２）ＶＡ１に対する要求はキャッシュ可能ではない。キャッシュ可能ではない要求に関連したバーチャルアドレスは繰り返して参照されることはない。
【００３８】
３）カレント要求は保護違反を生じる。
【００３９】
ＭＭＵ１２４中にμＴＬＢ１０８を設けることによって、ＭＭＵ１２４による正規の２段階変換を遅延させることなく、以下のものを含む種々の効果を生じる。
【００４０】
ａ）μＴＬＢ１０８は、同一のサイクルにおいて、３個の要求（即ち、各キャッシュ１０２、１０３および１０４からの要求）に対してサービスアップすることができる。反対に、μＴＬＢ１０８が無い場合、ＭＭＵ１２４は１度に１個のバーチャルアドレス上の２段階アドレス変換のみを実行する。
【００４１】
ｂ）さらに、ＭＭＵ１２４は数個のペンディング中のコマンド要求の内の１個を単に選択するためのサイクルを必要とする。これは勿論、このような選択を必要としないμＴＬＢ１０８によって避けることができる。
【００４２】
ｃ）１サイクルを要するμＴＬＢ１０８におけるヒットとは異なって、２段階変換は、サイクル５でＴＬＢ１１７と同時にＴＬＢ１１８をアクセスする場合Ｒｉｄ１とＬＡ１に対する適正な値が推測されないと、少なくとも２サイクルを必要とする。この問題はしばしば、（優先度の低いキャッシュの）”欠乏”(starvation)として言及される。
【００４３】
上記で議論したように、ＭＭＵは（μＴＬＢ１０８から離れて）１度に１個のアドレスのみを変換するので、アービタ１１３は、変換のためのコマンド要求バッファ１０９、１１０、１１１および１２６の内の１個に記憶された有効コマンド要求を選択せねばならない。
【００４４】
一実施例では、アービタ１１３はこの選択を以下のようにして行う。アービタ１１３は常にコマンド要求、すなわちＤＭＡ要求、をコマンド要求バッファ１２６からもしあれば選択する。コマンドバッファ１０９、１１０および１１１には最高、中間、および最低の優先度がそれぞれ与えられる。もしコマンド要求バッファ１０９におけるペンディング要求が常に選択されると、コマンドバッファ１１０または１１１中に要求をサービスするに当たって潜在的に過度の遅延問題が発生する。これは、ＣＲＢ１１６におけるカレント要求（これはコマンド要求バッファ１０９から取り出される）が処理される間に、キャッシュ１０２からの新たな要求がコマンド要求バッファ１０９に到達することができるためである。
【００４５】
アービタ１１３は、欠乏の問題を回避するために、図３のフローチャート２００に示された処理を、論理回路において実行する。アービタは、選択に当たって若しより低い優先度のコマンド要求バッファにペンディング要求が有れば、特定のコマンド要求バッファにおいて要求を選択する場合このバッファに関連したマスクビットを設定することにより、欠乏を回避している。これによって、選択すべき次の要求が、確実により優先度の低いコマンド要求バッファから来るようにする。
【００４６】
マスクビットｍａｓｋ＿１０２とｍａｓｋ＿１０３を初期値０に設定するステップ３０１において処理を開始する。次に、処理はステップ３０１から判定ステップ３０２に移行する。判定ステップ３０２では、アービタ１１３はコマンド要求バッファ１２６においてペンディング中のＤＭＡ要求があるか否かを判定する。もし、ペンディングＤＭＡ要求があれば、処理はステップ３０２からステップ３０３に移行し、その間にＭＭＵはＤＭＡ要求に対して１段階変換を実行する。その後、処理はステップ３０３から判定ステップ３０２に移行する。
【００４７】
ペンディングＤＭＡ要求が無い場合、処理は判定ステップ３０２から判定ステップ３０４に移行し、そこでアービタ１１３はコマンド要求バッファ１０９（すなわちキャッシュ１０２から）においてペンディング中のコマンド要求があるか否か、およびｍａｓｋ＿１０２が０であるか否かを判定する。もし、判定ステップ３０４において調査された条件の少なくとも１個が満足されない場合、次に処理は以下に詳細に示すステップ３０８に移行する。もし、判定ステップ３０４で調査された条件の両方が満足された場合、処理はステップ３０５に移行する。
【００４８】
ステップ３０５では、アービタ１１３は、コマンド要求バッファ１１０または１１１（すなわち、キャッシュ１０３または１０４から）の何れかに有効コマンド要求があるか否かを判定する。もしこのような要求が無い場合、処理は後述するステップ３０７に移行する。もし、コマンド要求バッファ１１０または１１１の何れかに有効コマンド要求が有った場合、処理はステップ３０６に移行し、そこでｍａｓｋ＿１０２は１に設定され、ｍａｓｋ＿１０３は０に設定される。（ｍａｓｋ＿１０２を１に設定することによって、コマンド要求バッファ１０９からの現在ペンディング中の要求が処理された後にアービタ１１３によって選択される次の要求が、コマンド要求バッファ１０９からの別の要求ではないことを確実にする。）この後処理はステップ３０６からステップ３０７に移行する。ステップ３０７では、ＭＭＵ１２４はコマンド要求バッファ１０９中のペンディング中の要求に対して２段階アドレス変換を実行する。次に処理はステップ３０７から判定ステップ３０２に移行する。
【００４９】
ステップ３０８において、アービタ１１３はコマンド要求バッファ１１０（すなわちキャッシュ１０３から）においてペンディング中のコマンド要求があるか否か、さらにｍａｓｋ＿１０３が０か否かを判定する。もし判定ステップ３１２において調査された条件の少なくとも一方が満足されないと、次に処理は後述するステップ３１２に移行する。判定ステップ３０８で調査された条件が両方とも満足されると、次に処理はステップ３０９に移行する。
【００５０】
ステップ３０９では、アービタ１１３はコマンド要求バッファ１１１（すなわちキャッシュ１０４から）に有効コマンド要求があるか否かを判定する。もしこのような要求が無い場合、次に処理は後述するステップ３１１に移行する。コマンド要求バッファ１１１に有効コマンド要求が有る場合、次に処理はステップ３１０に移行し、そこでｍａｓｋ＿１０２を１にセットし、さらにｍａｓｋ＿１０３を１にセットする。（ｍａｓｋ＿１０２とｍａｓｋ＿１０３の１へのセットによって、コマンド要求バッファ１１０からの現在ペンディング中の要求が処理された後アービタ１１３よって選択される次の要求が、コマンド要求バッファ１１０からの別の要求またはコマンド要求バッファ１０９からの要求では無いことが保証される。）処理は次にステップ３１０からステップ３１１に移行する。ステップ３１１では、ＭＭＵ１２４は、コマンド要求バッファ１１０におけるペンディング中の要求に対して２段階アドレス変換を実行する。次に処理はステップ３１１から判定ステップ３０２に移行する。
【００５１】
ステップ３１２では、アービタ１１３はコマンド要求バッファ１１１（すなわちキャッシュ１０４から）においてペンディング中の要求があるか否かを判定する。もし無ければ、次に処理は後述するステップ３１４に移行する。もしアービタ１１３がこの様な要求がステップ３１２において存在すると判定すると、次に処理はステップ３１３に移行し、ここでＭＭＵ１２４はこの要求に対して２段階アドレス変換を実行する。処理はステップ３１３からステップ３１４に移行し、ｍａｓｋ＿１０２とｍａｓｋ＿１０３は０に設定される。
【００５２】
以上の開示は、説明を目的とするものであり、限定的な物ではない。更なる修正は当業者に取って容易であるが、これらは添付の請求の範囲内に入るものである。
【図面の簡単な説明】
【００５３】
【図１】本発明にかかるＭＭＵを示す。
【図２】本発明にかかるマイクロＴＬＢを示す。
【図３】アドレス変換要求アービタによって実行される処理を示すフローチャートである。
【符号の説明】
【００５４】
１０１    ＣＰＵ
１０２    Ｉキャッシュ
１０３    偶数Ｄ−キャッシュ
１０４    奇数Ｄ−キャッシュ
１０８    マイクロ−ＴＬＢ
１１２    マルチプレクサ
１１３    アービタ
１１７    ＴＬＢ
１１８    ＴＬＢ
１２３    メインメモリ
１２４    メモリマネージメントユニット（ＭＭＵ）
【図１】
2006146965.tif 000003
【図２】
2006146965.tif 000004
【図３】
2006146965.tif 000005