(57)【要約】【課題】回路規模を大きくしないで、TLBヒット率を改善する半導体集積回路及びアドレス変換方法を提供する。【解決手段】アドレス変換部を搭載した半導体集積回路は、マイクロTLB１４と、メインTLB１５と、CPU１３を有する。CPU１３は、プロセスの切替時に、切替元のプロセスのプライベートなマッピングを有するTLBエントリを、マイクロTLB１４から読み出して、複数のプロセスのそれぞれのプライベートなマッピングを有するTLBエントリを、TLBのコンテキストとして記憶する複数のTLBコンテキスト記憶領域を有するTLBコンテキスト記憶部１８における対応するTLBエントリ記憶領域に記憶し、切替先のプロセスのプライベートなマッピングを有するTLBエントリを、TLBコンテキスト記憶部１８から読み出してメインTLB１５に書き込む。【選択図】図１
2010170266.tif 000002
【特許請求の範囲】
【請求項１】
CPUからメインメモリへのアクセス時の仮想アドレスを、対応する物理アドレスに変換するアドレス変換装置であって、
前記仮想アドレスと前記物理アドレスの対応関係の情報を有するTLBエントリを記憶する第１のアドレス変換バッファと、
前記１のアドレス変換バッファに前記仮想アドレスに対応する物理アドレスの情報が無かったときに参照され、前記仮想アドレスと前記物理アドレスの対応関係の情報を有するTLBエントリを記憶する第２のアドレス変換バッファと、
プロセスの切替時に、切替元のプロセスのプライベートなマッピングを有するTLBエントリを、前記第１のアドレス変換バッファから読み出して、複数のプロセスのそれぞれのプライベートなマッピングを有するTLBエントリをTLBのコンテキストとして記憶する複数のTLBコンテキスト記憶領域を有するTLBコンテキスト記憶部における対応するTLBエントリ記憶領域に記憶し、切替先のプロセスのプライベートなマッピングを有するTLBエントリを、前記TLBコンテキスト記憶部から読み出して前記第２のアドレス変換バッファに書き込む制御部と、
を有することを特徴とするアドレス変換部を搭載した半導体集積回路。
【請求項２】
前記TLBコンテキスト記憶部は、メインメモリ中に含まれることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記TLBコンテキスト記憶部は、前記CPUの設けられる半導体チップ内に設けられることを特徴とする請求項１に記載の半導体集積回路。
【請求項４】
前記制御部は、マッピング変更があった場合は、前記切替先のプロセスの前記プライベートなマッピングを有するTLBエントリの、前記TLBコンテキスト記憶部からの読み出しと前記第２のアドレス変換バッファへの書き込みを行わないことを特徴とする請求項１に記載の半導体集積回路。
【請求項５】
CPUからメインメモリへのアクセス時の仮想アドレスを、対応する物理アドレスに変換するアドレス変換方法であって、
それぞれが前記仮想アドレスと前記物理アドレスの対応関係の情報を有するTLBエントリを記憶する第１及び第２のアドレス変換バッファと、複数のプロセスのそれぞれのプライベートなマッピングを有するTLBエントリを、TLBのコンテキストとして記憶する複数のTLBコンテキスト記憶領域を有するTLBコンテキスト記憶部と、を設け、
前記仮想アドレスに対応する物理アドレスの情報について、前記第１のアドレス変換バッファを参照し、
前記１のアドレス変換バッファに前記仮想アドレスに対応する物理アドレスの情報が無かったときに、第２のアドレス変換バッファを参照し、
プロセスの切替時に、切替元のプロセスのプライベートなマッピングを有するTLBエントリを、前記第１のアドレス変換バッファから読み出して、前記TLBコンテキスト記憶部における対応するTLBエントリ記憶領域に記憶し、切替先のプロセスのプライベートなマッピングを有するTLBエントリを、前記TLBコンテキスト記憶部から読み出して前記第２のアドレス変換バッファに書き込む、ことを特徴とするアドレス変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及びアドレス変換方法に関する。
【背景技術】
【０００２】
従来より、多くの場合、計算機は、中央処理装置（以下、CPUという）とメモリ管理ユニット（以下、MMUという）を含み、MMUは、仮想アドレスを物理アドレスに変換するアドレス変換機能を有する。仮想アドレスから物理アドレスへのアドレス変換に関する情報、具体的には仮想アドレスと物理アドレスの対応関係の情報は、メインメモリ上のアドレス変換テーブルに格納されている。
【０００３】
アドレス変換テーブルはCPUからのメインメモリへのアクセス時に参照されるが、アドレス変換時に、アドレス変換テーブルの参照のために、毎回メインメモリへのメモリアクセスを行うとオーバヘッドが大きいので、通常は、いわゆるキャッシュとしてのアドレス変換バッファ（TLB：Translation Look-aside Buffer ）にアドレス変換テーブルの情報の一部をキャッシュしている。
【０００４】
TLBに目的のエントリが見つかれば、TLBヒットが発生する。TLBヒットの場合、上述したメモリアクセスが不要となり、高速なアドレス変換が実現できる。TLBにエントリが見つからない場合、すなわちTLBミスの場合、ハードウエアまたはソフトウエアによりメインメモリへのメモリアクセスが行われ、アドレス変換テーブルから必要な情報が読み出されて、TLBにリフィルされる。
【０００５】
最近では、TLBを多層化した、高速かつ大容量のTLBが実現されている。具体的には、その多層化されたTLBは、高速かつ小容量のマイクロTLBと、低速かつ大容量のメインTLBという２層からなる。命令フェッチ及びデータアクセスの場合は、最初にマイクロTLBにアクセスし、マイクロTLBに仮想アドレスに対応するエントリが見つからなければ、メインTLBにアクセスするという手順が採られる。さらに、メインTLBにそのエントリが見つからない場合には、ハードウエアまたはソフトウエアによる、リフィル処理等のTLBミス処理が行われる。
【０００６】
一般に、複数のプロセスが動作する場合、各プロセスには独立した仮想アドレス空間が割り当てられる。プロセス毎に仮想アドレスと物理アドレスの対応が異なる。プロセスを切り替える場合にはアドレス変換情報も切り替える必要があるため、このプロセス切り替えのときに、全てのTLBエントリを無効化しなければならないという問題がある。
【０００７】
そこで、従来より、プロセス識別子を併せてTLBエントリに記録し、アドレス変換時には実行中のプロセスに関係するエントリのみを参照するようにして、TLB全体の無効化処理のオーバヘッドを低減する方法がある。
【０００８】
すなわち、TLBマッチングの条件にプロセス識別子の一致条件を追加することにより、実行中のプロセスに関係のないTLBエントリは参照されないようにすることによって、プロセス切り替え時のTLBの無効化処理を不要にするものである。また、切り替えられた元のプロセスが再度実行を開始したときに、以前の実行時に参照していたTLBエントリが残っている可能性があり、TLBヒット率も改善されるという効果もある。
【０００９】
識別子の具体例としては、「ARMアーキテクチャリファレンスマニュアル」に記載されている、ARMプロセッサにおけるアプリケーション空間識別子（ASID）、「PowerPC Operating Environment Architecture Book III Version 2.02」に記載されている、PowerPCプロセッサにおけるLogical Partition Identifier（LPID）、及び、IA32プロセッサにおけるVirtual Processor Identifier（VPID）がある。
【００１０】
さらに、特開平１１−７４１１号公報、特開２００５−３４６３５８号公報、及び特開平０４−２０５６３６号公報には、プロセス毎に独立したTLBを利用する技術が提案されている。
【００１１】
しかし、これらの提案の技術を用いることにより、TLBヒット率をさらに改善させることも可能であるが、プロセス毎に独立したTLBを設けることは、LSI上に複数のTLBを設けなければならず、コストの面だけでなく、回路規模が大きくなるという問題が生じる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平１１−７４１１号公報
【特許文献２】特開２００５−３４６３５８号公報
【特許文献３】特開平０４−２０５６３６号公報
【非特許文献】
【００１３】
【非特許文献１】ARM Limited.著、ARMアーキテクチャリファレンスマニュアル、2005年発行、ARM Limited.
【非特許文献２】J.Wetzel et al.著、PowerPC Operating Environment Architecture BookIII Version 2.02、2005年発行、IBM Corp.
【発明の概要】
【発明が解決しようとする課題】
【００１４】
そこで、本発明は、回路規模を大きくしないで、TLBヒット率を改善するアドレス変換部を搭載した半導体集積回路及びアドレス変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の一態様によれば、CPUからメインメモリへのアクセス時の仮想アドレスを、対応する物理アドレスに変換するアドレス変換装置であって、前記仮想アドレスと前記物理アドレスの対応関係の情報を有するTLBエントリを記憶する第１のアドレス変換バッファと、前記１のアドレス変換バッファに前記仮想アドレスに対応する物理アドレスの情報が無かったときに参照され、前記仮想アドレスと前記物理アドレスの対応関係の情報を有するTLBエントリを記憶する第２のアドレス変換バッファと、プロセスの切替時に、切替元のプロセスのプライベートなマッピングを有するTLBエントリを、前記第１のアドレス変換バッファから読み出して、複数のプロセスのそれぞれのプライベートなマッピングを有するTLBエントリを、TLBのコンテキストとして記憶する複数のTLBコンテキスト記憶領域を有するTLBコンテキスト記憶部における対応するTLBエントリ記憶領域に記憶し、切替先のプロセスのプライベートなマッピングを有するTLBエントリを、前記TLBコンテキスト記憶部から読み出して前記第２のアドレス変換バッファに書き込む制御部と、を有するアドレス変換部を搭載した半導体集積回路を提供することができる。
【発明の効果】
【００１６】
本発明によれば、回路規模を大きくしないで、TLBヒット率を改善するアドレス変換部を搭載した半導体集積回路及びアドレス変換方法を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係わるアドレス変換装置に関する構成を説明するための構成図である。
【図２】本発明の実施の形態に係わる、アドレス変換テーブルに記憶されるアドレス変換情報の各エントリのフォーマットの例を示す図である。
【図３】本発明の実施の形態に係わる、TLBエントリのフォーマットの例を示す図である。
【図４】本発明の実施の形態に係わる、アドレス変換時のTLB参照処理の手順の例を示すフローチャートである。
【図５】本発明の実施の形態に係わる、TLBコンテキスト記憶部の構成を示す図である。
【図６】本発明の実施の形態に係わる、プロセス切替処理の手順の例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態を説明する。  
まず図１に基づき、本実施の形態に係わるアドレス変換装置を含む計算機装置の構成を説明する。図１は、本実施の形態に係わるアドレス変換装置に関する構成を説明するための構成図である。
【００１９】
計算機装置１は、MMU１１と、メインメモリ１２と、CPUコア等であるCPU１３とを含んで構成されている。MMU１１とCPU１３は、アドレス変換部としてのアドレス変換装置を構成する。MMU１１は、マイクロTLB１４と、メインTLB１５とを含む２段構造の多層化された構造を有する。第１のアドレス変換バッファとしてのマイクロTLB１４の記憶容量は、第２のアドレス変換バッファとしてのメインTLB１５の記憶容量よりも小さい。MMU１１は、さらにプロセス識別子レジスタ１６を含む。マイクロTLB１４とメインTLB１５が、メインメモリ１２上のアドレス変換テーブル１７のキャッシュとして機能する。CPU１３とMMU１１は、アドレス変換部を構成し、半導体集積回路として、例えば、一つのチップ上に形成され、図示しないバスを介して、メインメモリ１２と接続されている。  
MMU１１のプロセス識別子レジスタ１６には、オペレーティングシステム（以下、OSという）により実行中のプロセスの識別子が設定される。よって、実行中のプロセスが切り替われると、プロセス識別子レジスタ１６の内容は、変更される。
【００２０】
また、マイクロTLB１４の内容は、CPU１３からリード可能であり、メインTLB１５は、CPU１３からライト可能に構成されている。すなわち、制御部としてのCPU１３は、CPU１３上で実行されるソフトウエアにより、マイクロTLB１４の内容をリード可能であり、メインTLB１５にライト可能になるように、CPU１３とMMU１１は、構成されている。
【００２１】
さらにまた、メインメモリ１２には、プロセス切替時におけるマイクロTLB１４に記録されている、切替元プロセスのマイクロTLBエントリを、コンテキストとして記憶するTLBコンテキスト記憶部１８が含まれている。TLBコンテキスト記憶部１８は、プロセス毎に、マイクロTLB１４のTLBエントリの情報を記憶する。特に、TLBコンテキスト記憶部１８は、複数のプロセスのそれぞれのプライベートなマッピングを有するTLBエントリを、TLBのコンテキストとして記憶する複数のTLBコンテキスト記憶領域を有する。
【００２２】
図１では、例として、プロセス１（P1）のTLBコンテキストが１８ａの記憶領域に記憶され、プロセス２（P2）のTLBコンテキストが１８ｂの記憶領域に記憶され、プロセス３（P3）のTLBコンテキストが１８ｃの記憶領域に記憶されることが、示されている。アドレス変換装置は、マイクロTLB１４とメインTLB１５とTLBコンテキスト記憶部１８を含んで構成される。  
なお、TLBコンテキスト記憶部１８は、図１に２点鎖線で示すように、CPU側に、例えばCPUコアが搭載された半導体チップ内に、設けられるようにしてもよい。
【００２３】
マイクロTLB１４は、仮想アドレス（VA）と物理アドレス（PA）の対応関係の情報を記憶し、メインTLB１５も、仮想アドレスと物理アドレスの対応関係の情報を記憶するが、メインTLB１５は、マイクロTLB１４に、目的の仮想アドレスに対応する物理アドレスの情報が無かったときに参照される。
【００２４】
よって、アドレス変換時には、まずマイクロTLB１４が参照される。マイクロTLB１４に、必要な物理アドレスの情報を有するエントリ、すなわちTLBエントリがなければ、次にメインTLB１５が参照される。メインTLB１５にもそのTLBエントリがなければ、最後には、メインメモリ１２上のアドレス変換テーブル１７が参照される。すなわち、アドレス変換時における参照は、マイクロTLB１４，メインTLB１５、そしてアドレス変換テーブル１７の順に行われる。
【００２５】
上位のテーブルであるマイクロTLB１４は、高速にアクセスできるため、アドレス変換情報であるTLBエントリがマイクロTLB１４中に見つかれば、処理時間を短縮できる。特に、メインメモリ１２へのアクセスは、マイクロTLB１４及びメインTLB１５へのアクセスに比べて非常に低速であるため、TLBヒット率を改善することはシステム性能に繋がることになる。
【００２６】
次に、アドレス変換テーブル１７のデータ構造について説明する。図２は、アドレス変換テーブル１７に記憶されるアドレス変換情報の各エントリのフォーマット２０の例を示す図である。  
アドレス変換テーブル１７の各エントリ、すなわち変換テーブルエントリ、のフォーマット２０は、共有、物理アドレス、及びメモリ領域属性という３つのフィールド２１，２２，２３を含んで構成される。アドレス変換テーブル１７には、図２のフォーマットのエントリの情報が、プロセス毎の仮想アドレス空間内の仮想アドレスに関連付けられて、記憶されている。
【００２７】
共有フィールド２１は、そのエントリについてのマッピングが、プロセス固有のマッピングか、すなわちプライベートか、又は、他のプロセスやオペレーティングシステムと共有されるマッピングか、すなわちグローバルか、を区別するために使用される。すなわち、共有フィールド２１は、プライベートなマッピングであるか否かを示す属性情報を含む。
【００２８】
例えば、４GB（ギガバイト）の仮想アドレス空間（３２ビットの仮想アドレスの場合）のうち、最初の３GBの領域をユーザプロセス用、残りの１GBの領域をカーネル用に利用するOSにおいては、ユーザプロセス用の３GBの空間をマッピングするエントリは、プライベートとして、カーネル用の１GBの空間をマッピングするエントリは、グローバルとして、マップされる。
【００２９】
この共有フィールド２１は、TLBのリフィル処理と、TLBのマッチング処理において重要な機能を果たす。  
TLBリフィル処理では、実行中のプロセスの識別子を、後述する図３のTLBエントリ中に記録するかどうかを判断するために利用される。プライベートなマッピングを持つエントリをTLBにリフィルする場合、プロセス識別子レジスタ１６に格納された、実行中のプロセスの識別子がTLBエントリに記録される。グローバルなマッピングを持つエントリをTLBにリフィルする場合は、そのプロセス識別子は記録されない。
【００３０】
また、TLBマッチング処理では、プロセス識別子レジスタ１６の値がマッチング条件として使われるかどうかを判断するために利用される。プライベートなマッピングを持つTLBエントリに対しては、仮想アドレスの一致に加えて、TLBエントリに記録されたプロセス識別子とプロセス識別子レジスタ１６の値が一致した場合にのみ、マッチング成立とみなされる。グローバルなマッピングを持つTLBエントリに対しては、仮想アドレスが一致すればマッチング成立とみなされる。  
このようなプライベートなマッピングの導入により、OSがプロセスを切り替える際に、TLBの無効化処理を省き、オーバヘッドの低減を図っている。
【００３１】
物理アドレスフィールド２２には、そのエントリがマップするメモリ領域の物理アドレスが記録される。  
メモリ領域属性フィールド２３には、そのエントリがマップするメモリ領域の属性（アクセス保護、キャッシュ可能、ページサイズなど）が記録される。
【００３２】
次に、TLBエントリのデータ構造について説明する。図３は、TLBエントリのフォーマットの例を示す図である。TLBエントリのフォーマット３０は、制御、共有、プロセス識別子、仮想アドレス、物理アドレス、及びメモリ領域属性という6つのフィールド３１，３２，３３，３４，３５，３６から構成される。
【００３３】
制御フィールド３１には、TLBエントリの有効/無効ビット、LRUアルゴリズムのための参照ビットなど、TLBエントリを制御するための情報が記録される。  
共有フィールド３２には、対応するアドレス変換テーブル１７のエントリの共有フィールド２１の値が記録される。
【００３４】
プロセス識別子フィールド３３には、そのTLBエントリがリフィルされたときに実行中だったプロセスの識別子が記録される。  
仮想アドレスフィールド３４には、対応するアドレス変換テーブル１７のエントリに関連付けられた仮想アドレスが記録される。
【００３５】
物理アドレスフィールド３５には、対応するアドレス変換テーブル１７のエントリの物理アドレスフィールド２２の値が記録される。  
メモリ領域属性フィールド３６には、対応するアドレス変換テーブル１７のエントリのメモリ領域属性フィールド２３の値が記録される。
【００３６】
次に、アドレス変換時のTLB参照処理について説明する。CPU１３が命令フェッチあるいはデータアクセスを行うとき、仮想アドレスを物理アドレスに変換するアドレス変換要求がMMU１１に対して発行され、MMU１１によりTLBの参照が行われる。図４は、アドレス変換時のTLB参照処理の手順の例を示すフローチャートである。
【００３７】
MMU１１は、アドレス変換のための仮想アドレスが供給されると、最初にマイクロTLB１４を参照し、その仮想アドレスに対応するTLBエントリを探索する（ステップS1）。すなわち、マイクロTLB１４におけるTLBマッチング処理が行われる。
【００３８】
その探索の結果、仮想アドレスに対応するTLBエントリが存在するか否かが判断される（ステップS2）。  
プライベートなマッピングを持つTLBエントリに対しては、仮想アドレスの一致に加えて、TLBエントリに記録されたプロセス識別子とプロセス識別子レジスタ１６の値が一致した場合にのみ、マッチング成立とみなされる。グローバルなマッピングを持つTLBエントリに対しては、仮想アドレスが一致すればマッチング成立とみなされる。
【００３９】
マイクロTLB１４内にマッチングが成立するエントリが存在する場合（すなわちマイクロTLBヒットの場合）、ステップS2でYESとなり、TLB参照を終了し、その得られたエントリの情報を使ってアドレス変換が行われる。
【００４０】
マイクロTLB１４内にそのエントリが存在しない場合（すなわちマイクロTLBミスの場合）は、ステップS2でNOとなり、次にメインTLB１５を参照し、その仮想アドレスに対応するTLBエントリを探索する（ステップS3）。すなわち、メインTLB１５におけるTLBマッチング処理が行われる。
【００４１】
その探索の結果、メインTLB１５内にその仮想アドレスに対応するTLBエントリが存在するか否かが判断される（ステップS4）。  
メインTLB１５内にマッチングが成立するエントリが存在する場合（すなわちメインTLBヒットの場合）、ステップS4でYESとなり、そのエントリをマイクロTLB１４内の適当なエントリ領域にリフィルし（ステップS5）、その得られたエントリの情報を使ってアドレス変換が行われる。このときリフィルされるマイクロTLB１４内のエントリを決定するためのアルゴリズムにはランダム、LRUなどの、適切なアルゴリズムが使用される。
【００４２】
メインTLB１５内にそのエントリが存在しない場合（すなわちメインTLBミスの場合）は、ステップS4でNOとなり、メインメモリ１２上のアドレス変換テーブル１７にアクセスし、変換テーブルエントリを取得する（ステップS6）。そして、メインTLB１５をリフィルする処理が実行される（ステップS7）。
【００４３】
このメインTLBミスの場合の処理方法には、ハードウエアが自動的にメモリアクセスを行い、メインTLBエントリをリフィルする方法（ハードウエアTLB管理による方法）、あるいは、MMU１１が例外を発生させ、その例外に応じてソフトウエアがメモリアクセスを行い、メインTLBエントリをリフィルする方法（ソフトウエアTLB管理による方法）などがあるので、その中から適切な方法が使用される。  
リフィルされるTLBエントリを決定するためのアルゴリズムも、上述したマイクロTLB１４の場合と同様に、ランダム、LRUなどの適切なアルゴリズムが使用される。
【００４４】
ステップS7においてメインTLBエントリがリフィルされた後、マイクロTLBミスの場合と同様に、マイクロTLB１４をリフィルする処理が実行され（ステップS5）、その得られたエントリの情報を使ってアドレス変換が行われる。  
なお、TLB参照終了後は、TLBエントリのメモリ領域属性を使ってアクセス制御等が行われるが、その処理は、通常の処理であるため、本実施の形態では説明を省略する。
【００４５】
図５は、TLBコンテキスト記憶部１８の構成を示す図である。上述したように、プロセス１（P1）のTLBコンテキストが記憶領域１８ａに記憶され、プロセス２（P2）のTLBコンテキストが記憶領域１８ｂに記憶され、プロセス３（P3）のTLBコンテキストが記憶領域１８ｃに記憶され、というように、プロセス毎に、プライベートなマッピングを有するTLBエントリの情報が、TLBのコンテキストとして記憶される。  
さらに、各記憶領域は、対応するプロセスの複数のTLBエントリデータを記憶する記憶領域TEと、後述するマッピング変更を行ったことを示すフラグ等の情報を記憶する記憶領域MCを含む。
【００４６】
次に、OSがプロセスを切り替える際の処理について説明する。以下の説明では、切り替え処理の前に動作していたプロセスを切替元プロセス、切り替え処理の後に動作することになるプロセスを切替先プロセスとする。
【００４７】
図６は、プロセス切替処理の手順の例を説明するためのフローチャートである。  
切替処理が発生すると、最初に、制御部であるCPU１３は、マイクロTLB１４内のTLBエントリを先頭から１つをリードし（ステップS11）、そのリードしたTLBエントリに記録されたプロセス識別子が切替元プロセスのプロセス識別子と一致するか否かが判定される（ステップS12）。一致すれば、CPU１３は、そのプライベートなマッピングを有するTLBエントリのデータを切替元プロセスのTLBのコンテキストとして、TLBコンテキスト記憶部１８内の、一致したプロセス識別子の対応する記憶領域に退避する（ステップS13）。
【００４８】
なお、TLBのコンテキストは、コンテキスト記憶部１８ではなく、プロセスのコンテキスト（以下、プロセスコンテキストともいう）と同じ記憶領域に記憶するようにして、設けられてもよい。すなわち、コンテキスト記憶部１８は、プロセス毎に分割されて、各分割されたTLBのコンテキストのデータが、プロセスコンテキストの記憶部に含まれるように構成されていてもよい。その場合、プロセスコンテキストの記憶領域には、マイクロTLBのTLBエントリのデータ退避領域として、マイクロTLBと同じサイズの領域が予め確保される。
【００４９】
さらに、プロセスコンテキストの記憶容量すなわちサイズに制限があり、全てのマイクロTLB１４のTLBエントリのデータを退避するための領域を確保できない場合は、退避するTLBエントリの個数を制限するようにしてもよい。この場合、退避するマイクロTLB１４のTLBエントリを決定する方法は、ランダム、LRUなどのアルゴリズムのうち適切なものが使用される。
【００５０】
マイクロTLB１４内の全てのTLBエントリについて、同様にプロセス識別子を調べたか否かを判断し（ステップS14）、全てのTLBエントリについてプロセス識別子の確認を行っていないときは、ステップS14でNOとなり、処理は、ステップS11に戻り、上述した処理が、全てのTLBエントリについて行われる。
【００５１】
マイクロTLB１４内の全てのTLBエントリについてプロセス識別子の一致したTLBエントリのデータを退避することによって、切替元プロセスのプライベートマッピングを有するTLBエントリの全てが退避される。
【００５２】
マイクロTLB１４内のTLBエントリのみを退避する理由としては、１）切替前に最も参照されていたエントリであり、切替後にも参照される可能性が高いこと、２）マイクロTLB１４は小容量なので、退避領域がそれほど大きくならないことが挙げられる。切替元プロセスのプライベートマッピングのみを対象にする理由は、グローバルマッピングはプロセス休止中に変更される可能性が高いからである。
【００５３】
次に、CPU１３は、一般的なプロセス切り替え処理で行われるのと同様に、切替元プロセスのプロセスコンテキストを退避する（ステップS15）。ここで退避されるプロセスコンテキストとは、CPUのレジスタ等のデータである。以上により、切替元プロセスに関する処理が完了する。
【００５４】
そして、切替先プロセスに関する処理が行われる。まず、CPU１３は、一般的なプロセス切り替え処理で行われるのと同様に、切替先プロセスのプロセスコンテキストを復帰する（ステップS16）。
【００５５】
次に、CPU１３は、切替先プロセスのTLBエントリのデータを復帰するが、切替先プロセスの休止中に、切替先プロセスのプライベートマッピングの変更が行われたかどうかの確認が先にチェックされる。すなわち、CPU１３は、切替先プロセスのマッピング変更があったか否かを判定する（ステップS17）。
【００５６】
マッピング変更の例としては、ページのスワップアウトなどがある。マッピング変更が行われた場合、切替先プロセスのコンテキストとして退避されたTLBエントリのデータは不正になっている可能性がある。このため、OSは、プライベートマッピングに対する変更を行う際に、マッピング変更を行ったことを示すフラグ等の情報を、TLBコンテキスト記憶部１８（図５）の対応する記憶領域MCに記録する。切替先プロセスに対応する記憶領域MCのデータをチェックすることにより、CPU１３は、切替先プロセスのマッピング変更があったか否かを判定することができる。
【００５７】
なお、マッピング変更を行ったことを示すフラグ等の情報は、対応するプロセスコンテキストに対応させて、あるいは対応するプロセスコンテキスト中に、記録するようにしてもよい。
【００５８】
そして、プロセス切り替え時のチェックにおいて、マッピング変更が検出された場合は、ステップS17でYESとなり、CPU１３は、TLBエントリのデータの復帰を行わない。すなわち、CPU１３は、マッピング変更があった場合は、切替先のプロセスのプライベートなマッピングを有するTLBエントリに関する、TLBコンテキスト記憶部１８からの読み出しとメインTLB１５への書き込みを行わない。
【００５９】
マッピング変更が検出されなかった場合、CPU１３は、TLBコンテキスト記憶部１８に記録された切替先プロセスのTLBエントリのデータを、メインTLB１５にライトする（ステップS18）。このとき書き潰されるメインTLB１５中のエントリ領域の決定方法として、ランダム、LRUなどのアルゴリズムのうち適切なものが使用される。
【００６０】
ここで、TLBコンテキスト記憶部１８に記録された切替先プロセスのTLBエントリのデータをメインTLB１５にライトする理由としては、ａ）マイクロTLB１４には現在実行中のプロセス切り替え処理に関する情報が存在するため、これらの情報を書き潰すことは好ましくないこと、ｂ）メインTLB１５はマイクロTLB１４に比べて容量が大きく、書き潰しによる影響が小さいことを挙げることができる。
【００６１】
メインTLB１５へのライトが完了すると、プロセス切替処理は完了し、OSは、切替先プロセスへ制御を渡し、切替先プロセスの動作が再開する。この再開時の状態でアドレス変換が行われると、メインTLB１５には切り替え前に最も良く参照していたTLBエントリが存在するため、マイクロTLB１４ではTLBミスとなっても、メインTLB１５でヒットする可能性は、従来のような単にTLBマッチングの条件にプロセス識別子の一致条件を追加した場合に比べて、高くなる。
【００６２】
そして、ステップS17でYESとなり、TLBエントリのデータの復帰が行われなかった場合は、各TLBの内容はフラッシュされるので、マイクロTLB１４及びメインTLB１５でミスヒットとなり、メインメモリ１２のアドレス変換テーブルの参照が行われる。
【００６３】
以上のように、上述した実施の形態に係るアドレス変換装置によれば、切替先プロセスのTLBヒット率が改善される。
【００６４】
特に、TLBコンテキスト記憶部１８をメインメモリ１２中に設ける場合は、CPU１３からマイクロTLB１４のデータのリード機能と、メインTLB１５へのデータのライト機能を付加するだけでよいので、搭載される半導体装置上の回路規模が増大は回避することができる。
【００６５】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００６６】
１  計算機装置、１１  MMU、１２  メインメモリ、１３  CPU、１４  マイクロTLB、１５  メインTLB、１６  プロセス識別レジスタ、１７  アドレス変換テーブル、１８  TLBコンテキスト記憶部、２０  アドレス変換テーブルのエントリのフォーマット、３０  TLBエントリのフォーマット
【図１】
2010170266.tif 000003
【図２】
2010170266.tif 000004
【図３】
2010170266.tif 000005
【図４】
2010170266.tif 000006
【図５】
2010170266.tif 000007
【図６】
2010170266.tif 000008