(57)【特許請求の範囲】
【請求項１】
仮想アドレスから物理アドレスへのアドレス変換を実行するマイクロプロセッサであって、
(a) エントリのロック機能を有する階層的アドレス変換バッファであって、
(1) 該アドレス変換バッファの下位階層として配置され、エントリのロック機能を有しない下位階層バッファ、及び
(2) 該アドレス変換バッファの上位階層として配置され、前記下位階層バッファの連想性よりも高い連想性を有し、エントリのロック機能を有する上位階層バッファ、
を含むものと;
(b) 該アドレス変換バッファの動作を制御する制御手段と；
を具備するマイクロプロセッサ。
【請求項２】
仮想アドレスから物理アドレスへのアドレス変換が、オペレーティングシステムによって管理される主記憶内のアドレス変換表に格納されており、該アドレス変換表のデータ構造は、対応するアドレス変換がアドレス変換バッファ内にロックされるべきものであるか否かの指定を含み、前記制御手段は、前記アドレス変換表のデータ構造内のロック指定に基づいて前記上位階層バッファのエントリをロックする、請求項１に記載のマイクロプロセッサ。
【請求項３】
前記制御手段が、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択してオペレーティングシステムに通知し、オペレーティングシステムが、前記アドレス変換バッファ内のエントリの入れ替えを実行する、請求項２に記載のマイクロプロセッサ。
【請求項４】
オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が前記上位階層バッファに格納されてロックされる、請求項３に記載のマイクロプロセッサ。
【請求項５】
オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が、前記下位階層バッファに格納されるとともに、前記上位階層バッファに格納されてロックされる、請求項３に記載のマイクロプロセッサ。
【請求項６】
前記制御手段が、入れ替えアルゴリズムに基づいて入れ替え対象エントリとして下位階層バッファエントリを選択した場合、該下位階層バッファエントリをオペレーティングシステムに通知し、オペレーティングシステムが、入れ替えに際して該下位階層バッファエントリのみを入れ替えることにより、前記上位階層バッファにはロックされたアドレス変換が維持される、請求項３に記載のマイクロプロセッサ。
【請求項７】
ロック指定されているエントリ以外のエントリについては、上位階層バッファエントリが下位階層バッファエントリに包含される関係が常に成立する、請求項６に記載のマイクロプロセッサ。
【請求項８】
前記制御手段は、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択し、主記憶内のアドレス変換表の中から新登録対象のアドレス変換を読み出して、前記アドレス変換バッファ内のエントリの入れ替えを実行する、請求項２に記載のマイクロプロセッサ。
【請求項９】
エントリのロック機能を有しない下位階層バッファと該下位階層バッファの連想性よりも高い連想性を有しエントリのロック機能を有する上位階層バッファとを有するアドレス変換バッファを備えるマイクロプロセッサにおいて、仮想アドレスから物理アドレスへアドレス変換する方法であって、
仮想アドレスから物理アドレスへのアドレス変換を格納するアドレス変換表であって、該アドレス変換表のデータ構造が、対応するアドレス変換が前記アドレス変換バッファ内にロックされるべきものであるか否かの指定を含むもの、を主記憶内に準備するステップと、
前記アドレス変換表のデータ構造内のロック指定に基づいて前記上位階層バッファに格納されようとしたエントリをロックするステップと、
を具備する、マイクロプロセッサのアドレス変換方法。
【請求項１０】
仮想アドレスから物理アドレスへのページ単位の動的アドレス変換を実行するアドレス変換機構を備えたマイクロプロセッサを搭載したコンピュータであって、該アドレス変換機構が、
(a) エントリのロック機能を有する階層的アドレス変換バッファであって、
(1) 該アドレス変換バッファの下位階層として配置され、エントリのロック機能を有しない下位階層バッファ、及び
(2) 該アドレス変換バッファの上位階層として配置され、前記下位階層バッファの連想性よりも高い連想性を有し、エントリのロック機能を有する上位階層バッファ、
を含むものと;
(b) 該アドレス変換バッファの動作を制御して、ロック指定されたエントリを自動的に前記上位階層バッファに入れてロックする制御手段と；
を具備するコンピュータ。
【請求項１１】
仮想アドレス情報と前記仮想アドレス情報に対応する物理アドレス情報とを登録するための第１のエントリを有するウェイを複数備え、前記第１のエントリへの登録を制限するロック機能を有しない第１のアドレス変換バッファと、
前記第１のアドレス変換バッファの上位階層として配置され、前記仮想アドレス情報と前記物理アドレス情報とを登録するための第２のエントリを有するウェイを前記第１のアドレス変換バッファよりも多く有し、さらに前記第２のエントリへの登録を制限するロック機能を有する第２のアドレス変換バッファと、
前記第２のアドレス変換バッファにおける仮想アドレスから物理アドレスへのアドレス変換を、前記第２のエントリへの登録を制限する前記ロック機能に基づいて制御する制御部と、
を有することを特徴とする演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法に関する。
【０００２】
【従来の技術】
仮想記憶方式のコンピュータでは、ページ単位に仮想アドレス(virtual address) から物理アドレス(physical address)への変換をプログラムの実行中に即ち動的に実行する必要がある。このアドレス変換のためのハードウェア機構は、動的アドレス変換機構(dynamic address translator)（ＤＡＴ）と呼ばれる。ＤＡＴは、アドレス変換表又はページ表と呼ばれる表(table) を参照することによってアドレス変換を行う。このアドレス変換表は、主記憶内に存在し、オペレーティングシステム（ＯＳ）によって管理され、例えば、ある仮想ページ番号がどの物理ページ番号に対応するかを示す表である。
【０００３】
しかし、アドレス変換の度にアドレス変換表を参照すると、アドレス変換のためのオーバヘッドが大きくなるので、アドレス参照の局所性を考慮して、過去に利用されたアドレス変換（仮想ページ番号と物理ページ番号との対）を高速なメモリにキャッシュしておくことが一般に行われる。このメモリは、アドレス変換バッファ(address translation buffer)又は変換索引バッファ(translation look-aside buffer) （ＴＬＢ）と呼ばれる。
【０００４】
従来、かかるＴＬＢは、小容量連想メモリによって構成されることが多かった。しかし、プログラム規模の拡大に対応して、仮想アドレス空間の拡大（例えば、６４ビット空間）が進んでいるため、ヒット率の高いＴＬＢを搭載することで仮想記憶制御オーバヘッドを削減し、大容量ＴＬＢを搭載することで性能を向上させることが一般化しつつある。
【０００５】
一方、大容量ＴＬＢでは、連想性(associativity) （ｗａｙ数）を高めると、メモリの物理的サイズが大きくなる上に、アクセス時間が増大する。そこで、連想性は低く抑えられ、同一の索引アドレスを有する主記憶ページのアドレス変換を多数同時にキャッシュすることができないという制限がある。
【０００６】
この制限は、使用頻度の高いプログラム及びデータ領域に一般的に適用される性能向上策であるＴＬＢエントリロック機能の制限に繋がる。すなわち、ＯＳのコード域やデータ域のアドレス変換を常にＴＬＢにキャッシュしておくためにＴＬＢエントリロック機能を使用する必要があるが、連想性の低いＴＬＢでは、ＴＬＢ索引に使う仮想アドレスの一部が同一値のＴＬＢエントリはｗａｙ数分しかないので、結果的に当該アドレス部が同一値のページでアドレス変換をロックできるものの数が制限され、結果的にシステムの正常動作を保証することができないという問題に繋がることが判明している。
【０００７】
このような問題は、従来のマイクロプロセッサではＴＬＢエントリ数が比較的少ないことから、ＴＬＢの連想性を高くすることによって解決していた。しかし、マイクロプロセッサの高性能化に伴って、より多くのＴＬＢエントリ数を確保することが要求されるようになってきている。そこで、最近のマイクロプロセッサでは、多数のＴＬＢエントリを保持するだけでなく、この問題を解決するために、大容量ＴＬＢとともに比較的小容量のＴＬＢをエントリロック用に設けることが実施され始めている。しかし、複数のＴＬＢを設けると、ＯＳによるＴＬＢエントリの入れ替えの際にエントリのロックビットの状態を見て格納すべきＴＬＢを選択しなければならず、オーバヘッドの増大に繋がる。
【０００８】
ハードウェアが自動的に主記憶内のアドレス変換表を検索してＴＬＢエントリの入れ替えを行う場合、ＴＬＢをロックエントリ用と非ロックエントリ用とに分割してハードウェアが自動的に格納先のＴＬＢを選択する方式が考えられ、少ないオーバヘッドが実現できる。しかし、アドレス変換のためのＴＬＢ索引時には、複数のＴＬＢを同時に索引せざるを得ず、複数のメモリアクセスを同時に実行する場合には、大容量ＴＬＢも多ポート化が必要となるため、更にサイズが大きくなり、アクセス時間も大きくなるという問題があった。
【０００９】
【発明が解決しようとする課題】
本発明は、上述した問題点に鑑みてなされたものであり、その目的は、大容量ＴＬＢを備えるとともに、アドレス変換のオーバヘッドを抑制し、かつ、ＴＬＢエントリのロック機能に課される制限を回避しうるマイクロプロセッサ及びそのアドレス変換方法を提供することにある。
【００１０】
【課題を解決するための手段】
本発明によれば、仮想アドレスから物理アドレスへのアドレス変換を実行するマイクロプロセッサであって、(a) エントリのロック機能を有する階層的アドレス変換バッファであって、(1) 該アドレス変換バッファの下位階層として配置され、エントリのロック機能を有しない下位階層バッファ、及び(2) 該アドレス変換バッファの上位階層として配置され、前記下位階層バッファの連想性よりも高い連想性を有し、エントリのロック機能を有する上位階層バッファ、を含むものと；(b) 該アドレス変換バッファの動作を制御する制御手段と；を具備するマイクロプロセッサが提供される。
【００１１】
好ましくは、前記下位階層バッファの容量が、前記上位階層バッファの容量よりも大きい。
【００１２】
好ましくは、仮想アドレスから物理アドレスへのアドレス変換が、オペレーティングシステムによって管理される主記憶内のアドレス変換表に格納されており、該アドレス変換表のデータ構造は、対応するアドレス変換がアドレス変換バッファ内にロックされるべきものであるか否かの指定を含み、前記制御手段は、前記アドレス変換表のデータ構造内のロック指定に基づいて前記上位階層バッファのエントリをロックする。
【００１３】
好ましくは、前記制御手段が、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択してオペレーティングシステムに通知し、オペレーティングシステムが、前記アドレス変換バッファ内のエントリの入れ替えを実行する。
【００１４】
好ましくは、オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が前記上位階層バッファに格納されてロックされる。
【００１５】
好ましくは、また、オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が、前記下位階層バッファに格納されるとともに、前記上位階層バッファに格納されてロックされる。
【００１６】
好ましくは、前記制御手段が、入れ替えアルゴリズムに基づいて入れ替え対象エントリとして下位階層バッファエントリを選択した場合、該下位階層バッファエントリをオペレーティングシステムに通知し、オペレーティングシステムが、入れ替えに際して該下位階層バッファエントリのみを入れ替えることにより、前記上位階層バッファにはロックされたアドレス変換が維持される。
【００１７】
好ましくは、ロック指定されているエントリ以外のエントリについては、上位階層バッファエントリが下位階層バッファエントリに包含される関係が常に成立する。
【００１８】
好ましくは、前記制御手段は、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択し、主記憶内のアドレス変換表の中から新登録対象のアドレス変換を読み出して、前記アドレス変換バッファ内のエントリの入れ替えを実行する。
【００１９】
好ましくは、前記制御手段は、前記アドレス変換バッファ内のエントリの入れ替えを実行するときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されているか否かを参照し、ロック指定されている場合、新登録対象のアドレス変換を前記上位階層バッファに格納してロックする。
【００２０】
好ましくは、前記制御手段は、前記アドレス変換バッファ内のエントリの入れ替えを実行するときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されているか否かを参照し、ロック指定されている場合、新登録対象のアドレス変換を、前記下位階層バッファに格納するとともに、前記上位階層バッファに格納してロックする。
【００２１】
好ましくは、前記制御手段は、入れ替えアルゴリズムに基づいて入れ替え対象エントリとして下位階層バッファエントリを選択した場合、該下位階層バッファエントリのみを入れ替えることにより、前記上位階層バッファにはロックされたアドレス変換を維持する。
【００２２】
好ましくは、ロック指定されているエントリ以外のエントリについては、上位階層バッファエントリが下位階層バッファエントリに包含される関係が常に成立する。
【００２３】
また、本発明によれば、マイクロプロセッサにおいて仮想アドレスから物理アドレスへアドレス変換する方法であって、エントリのロック機能を有しない下位階層バッファ及び該下位階層バッファの連想性よりも高い連想性を有しエントリのロック機能を有する上位階層バッファからなるアドレス変換バッファを準備するステップと、仮想アドレスから物理アドレスへのアドレス変換を格納するアドレス変換表であって、該アドレス変換表のデータ構造が、対応するアドレス変換が前記アドレス変換バッファ内にロックされるべきものであるか否かの指定を含むもの、を主記憶内に準備するステップと、前記アドレス変換表のデータ構造内のロック指定に基づいて前記下位階層バッファに格納されようとしたエントリをロックするステップと、を具備する方法が提供される。
【００２４】
好ましくは、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択して、前記アドレス変換バッファ内のエントリの入れ替えを実行するステップ、が更に具備される。
【００２５】
好ましくは、エントリの入れ替えの実行時、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換を前記上位階層バッファに格納してロックするステップ、が更に具備される。
【００２６】
好ましくは、エントリの入れ替えの実行時、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換を、前記下位階層バッファに格納するとともに、前記上位階層バッファに格納してロックするステップ、が更に具備される。
【００２７】
また、本発明によれば、上記したマイクロプロセッサを搭載したコンピュータが提供される。
【００２８】
【発明の実施の形態】
図１は、本発明によるマイクロプロセッサ１０の中のアドレス変換に係る部分を示すブロック図である。このマイクロプロセッサ１０は、仮想記憶方式を採用するものであり、命令によって指定される主記憶１２のアドレスは、仮想アドレス(virtual address) である。仮想アドレスは、ページ単位に物理アドレス(physical address)に変換される。ある仮想ページ番号がどの物理ページ番号に対応するかは、主記憶１２内に存在するアドレス変換表１６によって表される。このアドレス変換表１６は、オペレーティングシステム（ＯＳ）１４によって管理される。
【００２９】
動的アドレス変換機構(dynamic address translator)（ＤＡＴ）１８は、プログラムの実行中に、仮想アドレスを物理アドレスへ変換するハードウェア機構であり、制御論理２０を備える。ＤＡＴ１８は、アドレス変換の度にアドレス変換表１６を参照するとアドレス変換のためのオーバヘッドが大きくなるため、過去に利用されたアドレス変換（仮想ページ番号と物理ページ番号との対）をキャッシュしうるように、アドレス変換バッファ(address translation buffer)又は変換索引バッファ(translation look-aside buffer) （ＴＬＢ）と呼ばれる高速なメモリ２２を備えている。
【００３０】
本発明においては、ＴＬＢ２２は、階層型に構成され、上位階層バッファとしてのマイクロＴＬＢ（μＴＬＢ）３０と下位階層バッファとしてのメインＴＬＢ（ｍＴＬＢ）５０とを有する。μＴＬＢ３０は、高速性と高ヒット率とを重視して小容量で高い連想性を有する一方、ｍＴＬＢ５０は、総合性能を重視して大容量で比較的低い連想性を有する。
【００３１】
図２は、μＴＬＢ３０の構成を示すブロック図である。このμＴＬＢ３０は、各エントリごとに比較器を備える、例えば６４ウェイのフルアソシアティブ(fully associative) 方式の連想メモリとして構成されている。一般に、フルアソシアティブ方式の連想メモリは、ヒット率が高く、アドレス変換をどのエントリに格納するかについては制限がないという利点を有する反面、サイズが大きくなり、エントリ数を大きくするとスピードが小さくなるという短所を有する。
【００３２】
μＴＬＢ３０内の各エントリ３２に格納された仮想ページ番号（ＶＰＮ）は、アドレス変換されるべき仮想アドレス（ＶＡ）中の仮想ページ番号（ＶＰＮ）と比較器３４において比較される。そして、一致する仮想ページ番号（ＶＰＮ）を有するエントリがあれば、そのエントリ中の物理ページ番号（ＰＰＮ）が、ＡＮＤゲート３６及びＯＲゲート３８によって選択され、物理アドレス（ＰＡ）を構成するために使用される。なお、アドレス変換されるべき仮想アドレス（ＶＡ）中のページ内オフセット(page-offset) （ＰＯ）は、そのまま物理アドレス（ＰＡ）中のページ内オフセット（ＰＯ）として使用される。
【００３３】
そして、変換対象の仮想アドレス中の仮想ページ番号に一致する仮想ページ番号を有するエントリがある場合には、ＯＲゲート４０の出力であるμＴＬＢ ＨＩＴ信号がアクティブとなり、アドレス変換が完了する。一方、変換対象の仮想アドレス中の仮想ページ番号に一致する仮想ページ番号を有するエントリがない場合には、μＴＬＢ ＨＩＴ信号がインアクティブとなり、それを受けてｍＴＬＢ５０が参照されることとなる。
【００３４】
図３は、ｍＴＬＢ５０の構成を示すブロック図である。図３に示されるｍＴＬＢ５０は、例えば、４ウェイセットアソシアティブ(4-way set associative) 方式でかつセット(set) 数が１６の連想メモリとして構成される。一般に、セットアソシアティブ方式の場合、サイズが比較的小さく、エントリ数を大きくしてもスピードを高く維持することができるという利点がある反面、アドレス変換を格納しうるエントリが、その仮想ページ番号に対応する特定のセット番号に属するエントリに限定されるという短所がある。
【００３５】
図３の例では、４ウェイであるため、一度に４つの一致検出(association) が行われる。また、セット数が１６であるため、アドレス変換されるべき仮想アドレス中の仮想ページ番号（ＶＰＮ）の下位４ビットがｍＴＬＢ５０へのインデックスフィールドとしてセットを選択するために使用され、残りのビットがタグフィールドとして使用されることとなる。また、仮想ページ番号（ＶＰＮ）の下位４ビットが一致する仮想ページについてのアドレス変換は、最大４個までしかキャッシュしておくことができない。
【００３６】
ｍＴＬＢ５０の各エントリのタグ部には、下位４ビットを除く仮想ページ番号（ＶＰＮ）すなわち仮想ページ番号中のタグの部分が格納されており、そのタグが、変換されるべき仮想アドレス中の仮想ページ番号内のタグと比較されることとなる。その他の動作は、μＴＬＢ３０の動作と同様である。そして、ｍＴＬＢ５０でもヒットしなかった場合には、主記憶１２内のアドレス変換表１６を参照してアドレス変換が行われるとともに、その新しいアドレス変換情報がμＴＬＢ３０及び／又はｍＴＬＢ５０に格納される。
【００３７】
以上の説明から明らかなように、μＴＬＢ３０の各エントリは、図４に示されるように、仮想ページ番号（ＶＰＮ）と物理ページ番号（ＰＰＮ）との対を有する一方、ｍＴＬＢ５０の各エントリは、図５に示されるように、仮想ページ番号のタグ（ＶＰＮ−ＴＡＧ）と物理ページ番号（ＰＰＮ）との対を有する。
【００３８】
また、μＴＬＢ３０の各エントリは、図４に示されるように、エントリロックビット（Ｌ）を有するのに対し、ｍＴＬＢ５０の各エントリは、図５に示されるように、エントリロックビット（Ｌ）を有していない。すなわち、エントリロック機能は、上位階層たるμＴＬＢ３０においてのみ実現される。以下、ＴＬＢが一杯のときに新しく登録されるべきアドレス変換情報をどのＴＬＢエントリに入れるかというエントリ入れ替え(replacement) 制御及び特定のアドレス変換情報をＴＬＢエントリに常駐させるエントリロック制御について説明する。
【００３９】
一般に、途中での例外処理が不可能な一部のコード（例えば、ＴＬＢミス処理、トラップハンドラ等）の実行に際して、ＴＬＢミスの発生を防ぐために、任意のページに関するアドレス変換をＴＬＢにロックする機能が必要となる。そのため、主記憶１２内のアドレス変換表１６における、ページ毎のアドレス変換を記述するデータ構造は、対応するアドレス変換がＴＬＢにロックされるべきものであるか否かを指定するロックビットを含んでおり、このロックビットは、ＯＳによって管理される。
【００４０】
しかし、ロックを必要とするアドレス変換の数がどの程度になるかは不明である。したがって、アドレス変換を格納することができるエントリに制限が課せられるセットアソシアティブ方式やダイレクトマップ(direct mapped) 方式のＴＬＢでは、ロックを必要とするアドレス変換の数が大きくなると、ロックを必要とするプログラムを仮想アドレス空間に配置するときに制限が生ずることとなる。そこで、本発明では、ＤＡＴ１８内の制御論理２０が、アドレス変換表１６のデータ構造内のロックビットに基づくエントリロック機能を、アドレス変換をどのエントリに格納するかについての制限がないμＴＬＢ３０にて実現する。
【００４１】
また、エントリの入れ替えに際して、制御論理２０は、ＴＬＢ２２内の入れ替え対象となるべきエントリを、最も古く使用されたものから追い出すＬＲＵ(Least Recently Used) 等の所定の入れ替えアルゴリズムに基づいて選択してオペレーティングシステムに通知する。それを受けて、オペレーティングシステムは、ＴＬＢ２２内のエントリの入れ替えを実行する。
【００４２】
そして、オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶１２内のアドレス変換表１６にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換がμＴＬＢ３０に格納されてロックされる。あるいは、新登録対象のアドレス変換が、ｍＴＬＢ５０に格納され、さらにμＴＬＢ３０に格納されかつロックされる。
【００４３】
制御論理２０は、入れ替えアルゴリズムに基づいて入れ替え対象エントリとしてｍＴＬＢ５０のエントリを選択した場合、そのエントリをオペレーティングシステムに通知する。すると、オペレーティングシステムは、入れ替えに際してｍＴＬＢ５０のエントリのみを入れ替える。これにより、μＴＬＢ３０にはロックされたアドレス変換が維持される。
【００４４】
一般に、階層型ＴＬＢでは、上位階層ＴＬＢに含まれるエントリが必ず下位階層エントリにも含まれるように制御することが多い。この制御は、インクルージョン(Inclusion) と呼ばれている。本発明においては、ロック指定されたエントリに関してのみインクルージョンの制御を実施しない。換言すれば、ロック指定されているエントリ以外のエントリについては、μＴＬＢ３０のエントリがｍＴＬＢ５０のエントリに包含される関係が常に成立することとなる。
【００４５】
なお、オペレーティングシステムがＴＬＢ２２内のエントリの入れ替えを実行するのではなく、ハードウェアが入れ替えを実行してもよい。すなわち、制御論理２０は、ＴＬＢ２２内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択し、主記憶１２内のアドレス変換表１６の中から新登録対象のアドレス変換を読み出して、ＴＬＢ２２内のエントリの入れ替えを実行する。
【００４６】
そして、制御論理２０は、ＴＬＢ２２内のエントリの入れ替えを実行するときに、主記憶１２内のアドレス変換表１６にて新登録対象のアドレス変換がロック指定されているか否かを参照し、ロック指定されている場合、新登録対象のアドレス変換をμＴＬＢ３０に格納してロックする。あるいは、制御論理２０は、新登録対象のアドレス変換を、ｍＴＬＢ５０に格納し、さらにμＴＬＢ３０に格納しかつロックする。
【００４７】
また、制御論理２０は、入れ替えアルゴリズムに基づいて入れ替え対象エントリとしてｍＴＬＢ５０のエントリを選択した場合、ｍＴＬＢ５０のエントリのみを入れ替える。こうすることにより、μＴＬＢ３０に、ロックされたアドレス変換を維持することができる。
【００４８】
制御論理２０がエントリの入れ替えを実行する場合にも、ロック指定されたエントリに関してのみインクルージョンの制御を実施しないようにし、ロック指定されているエントリ以外のエントリについては、μＴＬＢ３０のエントリがｍＴＬＢ５０のエントリに包含される関係が常に成立するようにする。
【００４９】
図６は、従来技術に係る並列構造のＴＬＢを示す図である。このような並列構造では、フルアソシアティブ方式の連想メモリとセットアソシアティブ方式の連想メモリとが同時に参照されるため、スピードが低下するのに対し、本発明では、最初に上位階層バッファのみ参照されるため、スピードが低下することがない。また、並列構造では、フルアソシアティブ方式の連想メモリの出力とセットアソシアティブ方式の連想メモリの出力とを切り替える必要があり、この切り替えがオーバヘッドとなるが、本発明では、このような切り替えオーバヘッドも発生しない。更に、この方式では、複数のメモリアクセスを同時に変換しようとする場合に、両連想メモリを多ポート化しなければならずサイズが大きくなるが、本発明では、μＴＬＢのみ多ポート化すればよいのでサイズは大きくならない。
【００５０】
以上、本発明を特にその好ましい実施の形態を参照して詳細に説明した。本発明の容易な理解のため、本発明の具体的な形態を以下に付記する。
【００５１】
（付記１）  仮想アドレスから物理アドレスへのページ単位の動的アドレス変換を実行するマイクロプロセッサであって、
(a) エントリのロック機能を有する階層的アドレス変換バッファであって、
(1) 該アドレス変換バッファの下位階層として配置され、エントリのロック機能を有しない下位階層バッファ、及び
(2) 該アドレス変換バッファの上位階層として配置され、前記下位階層バッファの連想性よりも高い連想性を有し、エントリのロック機能を有する上位階層バッファ、
を含むものと;
(b) 該アドレス変換バッファの動作を制御する制御論理と；
を具備するマイクロプロセッサ。
【００５２】
（付記２）  前記下位階層バッファの容量が、前記上位階層バッファの容量よりも大きい、付記１に記載のマイクロプロセッサ。
【００５３】
（付記３）  各ページのアドレス変換が、オペレーティングシステムによって管理される主記憶内のアドレス変換表に格納されており、該アドレス変換表のデータ構造は、対応するアドレス変換がアドレス変換バッファ内にロックされるべきものであるか否かの指定を含み、前記制御論理は、前記アドレス変換表のデータ構造内のロック指定に基づいて前記上位階層バッファのエントリをロックする、付記１に記載のマイクロプロセッサ。
【００５４】
（付記４）  前記制御論理が、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択してオペレーティングシステムに通知し、オペレーティングシステムが、前記アドレス変換バッファ内のエントリの入れ替えを実行する、付記３に記載のマイクロプロセッサ。
【００５５】
（付記５）  オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が前記上位階層バッファに格納されてロックされる、付記４に記載のマイクロプロセッサ。
【００５６】
（付記６）  オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が、前記下位階層バッファに格納されるとともに、前記上位階層バッファに格納されてロックされる、付記４に記載のマイクロプロセッサ。
【００５７】
（付記７）  前記制御論理が、入れ替えアルゴリズムに基づいて入れ替え対象エントリとして下位階層バッファエントリを選択した場合、該下位階層バッファエントリをオペレーティングシステムに通知し、オペレーティングシステムが、入れ替えに際して該下位階層バッファエントリのみを入れ替えることにより、前記上位階層バッファにはロックされたアドレス変換が維持される、付記４に記載のマイクロプロセッサ。
【００５８】
（付記８）  ロック指定されているエントリ以外のエントリについては、上位階層バッファエントリが下位階層バッファエントリに包含される関係が常に成立する、付記７に記載のマイクロプロセッサ。
【００５９】
（付記９）  前記制御論理は、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択し、主記憶内のアドレス変換表の中から新登録対象のアドレス変換を読み出して、前記アドレス変換バッファ内のエントリの入れ替えを実行する、付記３に記載のマイクロプロセッサ。
【００６０】
（付記１０）  前記制御論理は、前記アドレス変換バッファ内のエントリの入れ替えを実行するときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されているか否かを参照し、ロック指定されている場合、新登録対象のアドレス変換を前記上位階層バッファに格納してロックする、付記９に記載のマイクロプロセッサ。
【００６１】
（付記１１）  前記制御論理は、前記アドレス変換バッファ内のエントリの入れ替えを実行するときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されているか否かを参照し、ロック指定されている場合、新登録対象のアドレス変換を、前記下位階層バッファに格納するとともに、前記上位階層バッファに格納してロックする、付記９に記載のマイクロプロセッサ。
【００６２】
（付記１２）  前記制御論理は、入れ替えアルゴリズムに基づいて入れ替え対象エントリとして下位階層バッファエントリを選択した場合、該下位階層バッファエントリのみを入れ替えることにより、前記上位階層バッファにはロックされたアドレス変換を維持する、付記９に記載のマイクロプロセッサ。
【００６３】
（付記１３）  ロック指定されているエントリ以外のエントリについては、上位階層バッファエントリが下位階層バッファエントリに包含される関係が常に成立する、付記１２に記載のマイクロプロセッサ。
【００６４】
（付記１４）  マイクロプロセッサにおいて仮想アドレスから物理アドレスへページ単位に動的にアドレス変換する方法であって、
エントリのロック機能を有しない下位階層バッファ及び該下位階層バッファの連想性よりも高い連想性を有しエントリのロック機能を有する上位階層バッファからなるアドレス変換バッファを準備するステップと、
各ページのアドレス変換を格納するアドレス変換表であって、該アドレス変換表のデータ構造が、対応するアドレス変換が前記アドレス変換バッファ内にロックされるべきものであるか否かの指定を含むもの、を主記憶内に準備するステップと、
前記アドレス変換表のデータ構造内のロック指定に基づいて前記下位階層バッファのエントリをロックするステップと、
を具備する、マイクロプロセッサのアドレス変換方法。
【００６５】
（付記１５）  前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択して、前記アドレス変換バッファ内のエントリの入れ替えを実行するステップ、を更に具備する、付記１４に記載のマイクロプロセッサのアドレス変換方法。
【００６６】
（付記１６）  エントリの入れ替えの実行時、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換を前記上位階層バッファに格納してロックするステップ、を更に具備する、付記１５に記載のマイクロプロセッサのアドレス変換方法。
【００６７】
（付記１７）  エントリの入れ替えの実行時、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換を、前記下位階層バッファに格納するとともに、前記上位階層バッファに格納してロックするステップ、を更に具備する、付記１５に記載のマイクロプロセッサのアドレス変換方法。
【００６８】
（付記１８）  仮想アドレスから物理アドレスへのページ単位の動的アドレス変換を実行するアドレス変換機構を備えたマイクロプロセッサを搭載したコンピュータであって、該アドレス変換機構が、
(a) エントリのロック機能を有する階層的アドレス変換バッファであって、
(1) 該アドレス変換バッファの下位階層として配置され、エントリのロック機能を有しない下位階層バッファ、及び
(2) 該アドレス変換バッファの上位階層として配置され、前記下位階層バッファの連想性よりも高い連想性を有し、エントリのロック機能を有する上位階層バッファ、
を含むものと;
(b) 該アドレス変換バッファの動作を制御する制御論理と；
を具備するコンピュータ。
【００６９】
（付記１９）  各ページのアドレス変換が、オペレーティングシステムによって管理される主記憶内のアドレス変換表に格納されており、該アドレス変換表のデータ構造は、対応するアドレス変換がアドレス変換バッファ内にロックされるべきものであるか否かの指定を含み、前記制御論理は、前記アドレス変換表のデータ構造内のロック指定に基づいて前記上位階層バッファのエントリをロックする、付記１８に記載のコンピュータ。
【００７０】
（付記２０）  前記制御論理が、前記アドレス変換バッファ内の入れ替え対象となるべきエントリを所定の入れ替えアルゴリズムに基づいて選択してオペレーティングシステムに通知し、オペレーティングシステムが、前記アドレス変換バッファ内のエントリの入れ替えを実行する、付記１９に記載のコンピュータ。
【００７１】
（付記２１）  オペレーティングシステムによるエントリの入れ替えが発生したときに、主記憶内のアドレス変換表にて新登録対象のアドレス変換がロック指定されている場合、新登録対象のアドレス変換が、前記下位階層バッファに格納されるとともに、前記上位階層バッファに格納されてロックされる、付記２０に記載のコンピュータ。
【００７２】
【発明の効果】
以上説明したように、本発明によれば、大容量ＴＬＢを備えるとともに、アドレス変換のオーバヘッドを抑制し、かつ、ＴＬＢエントリのロック機能に課される制限を回避しうるマイクロプロセッサ及びそのアドレス変換方法が提供される。
【図面の簡単な説明】
【図１】図１は、本発明によるマイクロプロセッサの中のアドレス変換に係る部分を示すブロック図である。
【図２】図２は、上位階層ＴＬＢの構成を示すブロック図である。
【図３】図３は、下位階層ＴＬＢの構成を示すブロック図である。
【図４】図４は、上位階層ＴＬＢのエントリのデータフォーマットを示す図である。
【図５】図５は、下位階層ＴＬＢのエントリのデータフォーマットを示す図である。
【図６】図６は、従来技術に係る並列構造のＴＬＢを示す図である。
【符号の説明】
１０…マイクロプロセッサ
１２…主記憶
１４…オペレーティングシステム（ＯＳ）
１６…アドレス変換表
１８…動的アドレス変換機構（ＤＡＴ）
２０…制御論理
２２…ＴＬＢ
３０…マイクロＴＬＢ（μＴＬＢ）
５０…メインＴＬＢ（ｍＴＬＢ）
【図１】
0003958561.tif 000002
【図２】
0003958561.tif 000003
【図３】
0003958561.tif 000004
【図４】
0003958561.tif 000005
【図５】
0003958561.tif 000006
【図６】
0003958561.tif 000007