(57)【要約】【課題】  オペレーティングシステムの切替えによるアドレス変換装置のシステム負担およびオーバヘッドを低減する。【解決手段】  アドレス変換バッファ１ａ，１ｂは、仮想アドレスと実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持する。例えば、アドレス変換バッファ１ａは、オペレーティングシステムＯＳ１に対する仮想アドレスと実アドレスとを保持する。アドレス変換バッファ１ｂは、オペレーティングシステムＯＳ２に対する仮想アドレスと実アドレスとを保持する。アドレス変換制御部２は、アドレス変換バッファ１ａ，１ｂを参照し、実行されているオペレーティングシステムＯＳ１，ＯＳ２に応じた仮想アドレスの実アドレスへの変換を行う。【選択図】  図１
2005346358.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
前記仮想アドレスと前記実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持するアドレス変換バッファと、
前記アドレス変換バッファを参照し、実行されている前記オペレーティングシステムに応じた前記仮想アドレスの前記実アドレスへの変換を行うアドレス変換制御部と、
を有することを特徴とするアドレス変換装置。
【請求項２】
前記アドレス変換バッファは、前記オペレーティングシステムに対応して設けられ、前記オペレーティングシステムごとの前記仮想アドレスと前記実アドレスとを保持することを特徴とする請求項１記載のアドレス変換装置。
【請求項３】
前記アドレス変換バッファは、前記仮想アドレスと前記実アドレスとにどの前記オペレーティングシステムのものであるかを識別する識別子を付与して保持することを特徴とする請求項１記載のアドレス変換装置。
【請求項４】
１つの前記オペレーティングシステムにおける前記仮想アドレスと前記実アドレスとを保持する個別アドレス変換バッファを有することを特徴とする請求項３記載のアドレス変換装置。
【請求項５】
前記アドレス変換バッファおよび前記個別アドレス変換バッファには、一方にセットアソシアティブが適用され、他方にフルアソシアティブが適用されることを特徴とする請求項４記載のアドレス変換装置。
【請求項６】
前記セットアソシアティブのバッファから使用頻度の少ないデータが追い出される場合、前記データを前記フルアソシアティブのバッファに格納することを特徴とする請求項５記載のアドレス変換装置。
【請求項７】
前記アドレス変換バッファは、動的エントリと静的エントリとの領域を有することを特徴とする請求項３記載のアドレス変換装置。
【請求項８】
前記アドレス変換制御部は、プログラム命令によって、前記仮想アドレスと前記実アドレスとのアドレス変換を、前記プロセッサが実行している前記オペレーティングシステムとは関係なくアドレス変換を行うことを特徴とする請求項１記載のアドレス変換装置。
【請求項９】
前記アドレス変換制御部は、前記命令によって、前記アドレス変換に関するステータス情報を、ページ内オフセットを利用して前記プロセッサに返すことを特徴とする請求項８記載のアドレス変換装置。
【請求項１０】
仮想アドレスを実アドレスに変換するアドレス変換方法において、
前記仮想アドレスと前記実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持するアドレス変換バッファから、実行されている前記オペレーティングシステムに応じた前記仮想アドレスの前記実アドレスへの変換を行う、
ことを特徴とするアドレス変換方法。
【請求項１１】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
複数のオペレーティングシステムのそれぞれに基づいて前記仮想アドレスと前記実アドレスとを保持するアドレス変換バッファを区別し、前記仮想アドレスと前記実アドレスとを保持することを特徴とするアドレス変換装置。
【請求項１２】
前記アドレス変換バッファは、対応していない前記オペレーティングシステムからは隠蔽されることを特徴とする請求項１１記載のアドレス変換装置。
【請求項１３】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
前記仮想アドレスと前記実アドレスとを保持するアドレス変換バッファと、
前記仮想アドレスと前記実アドレスとに、どのオペレーティングシステムのものであるかを識別する識別子を付与して保持する保持手段と、
を有することを特徴とするアドレス変換装置。
【請求項１４】
前記識別子を集合して保持する識別子保持手段を有し、
前記オペレーティングシステムが切り替わる際、前記識別子をまとめて退避、復元することを特徴とする請求項１３記載のアドレス変換装置。
【請求項１５】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
セットアソシアティブの第１のアドレス変換バッファと、
フルアソシアティブの第２のアドレス変換バッファと、を有し、
前記第１のアドレス変換バッファには、動的エントリの前記仮想アドレスと前記実アドレスとが保持され、前記第２のアドレス変換バッファには、前記動的エントリと静的エントリの前記仮想アドレスと前記実アドレスとが保持されることを特徴とするアドレス変換装置。
【請求項１６】
前記第１のアドレス変換バッファから使用頻度の少ないデータが追い出される場合、前記データは、前記第２のアドレス変換バッファに再度追い出されるまで格納されることを特徴とする請求項１５記載のアドレス変換装置。
【請求項１７】
前記第２のアドレス変換バッファから使用頻度の少ないデータが追い出される場合、前記データは、前記第１のアドレス変換バッファに再度追い出されるまで格納されることを特徴とする請求項１５記載のアドレス変換装置。
【請求項１８】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
動的エントリと静的エントリの前記仮想アドレスと前記実アドレスとを保持するアドレス変換バッファを有し、
前記動的エントリと前記静的エントリとの領域が重なる場合、前記動的エントリと前記静的エントリはアドレス変換の優先度を持つことを特徴とするアドレス変換装置。
【請求項１９】
仮想アドレスを実アドレスに変換するアドレス変換装置において、
プログラム命令によって、アドレス変換を動的エントリに対して行うか、静的エントリに対して行うか、および前記動的エントリと前記静的エントリとに付与されている優先度に従って行うか選択可能なことを特徴とするアドレス変換装置。
【請求項２０】
前記アドレス変換に関するステータス情報を、ページ内オフセットを利用して、前記命令を実行するプロセッサに返すことを特徴とする請求項１９記載のアドレス変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアドレス変換装置およびアドレス変換方法に関し、特に仮想アドレスを実アドレスに変換するアドレス変換装置およびアドレス変換方法に関する。
【背景技術】
【０００２】
近年、リソースの増大により、様々なシステムにて大規模な実アドレス空間を利用する要求が増しており、より柔軟で安価なアドレス変換機構が求められている。アドレス変換機構には、プログラムが指定する仮想アドレスから、実際のメモリ上の実アドレスに変換する仮想記憶方式があり、メモリ空間の制約を著しく緩和している。
【０００３】
従来、仮想記憶方式を採用するアドレス変換装置に、スーパバイザモードとユーザモードとに対応したアドレス変換バッファを設け、各モードに応じてアドレス変換バッファを切替えるアドレス変換装置があった。このアドレス変換装置では、スーパバイザ用のアドレス変換バッファにおいて、プロセス番号を保持しなくてもよいので、メモリ資源を節約することができる（例えば、特許文献１参照）。
【０００４】
ところで、現在、リアルタイム性を要求するシステムにおいて、複数のＯＳ（Operating System）をハイブリットで使用するケースが増えつつある。
【特許文献１】特開平６−５２０５８号公報（段落番号〔００１６〕〜〔００１８〕、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、複数のＯＳをハイブリッドで使用するシステムでは、各ＯＳでアドレスマップが重ならないよう、例えば、アドレスバッファの内容の入れ替えを行ったりする必要があり、アルゴリズムや制御回路のシステム負担が大きいという問題点があった。
【０００６】
また、システム負担が大きいため、ＯＳの切替え時間のオーバヘッドが大きいという問題点があった。
本発明はこのような点に鑑みてなされたものであり、システム負担を低減し、ＯＳの切替え時間のオーバヘッドを低減するアドレス変換装置およびアドレス変換方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では上記問題を解決するために、図１に示すような仮想アドレスを実アドレスに変換するアドレス変換装置において、仮想アドレスと実アドレスとを、プロセッサが実行する複数のオペレーティングシステムＯＳ１，ＯＳ２に基づいて区別して保持するアドレス変換バッファ１ａ，１ｂと、アドレス変換バッファ１ａ，１ｂを参照し、実行されているオペレーティングシステムＯＳ１，ＯＳ２に応じた仮想アドレスの実アドレスへの変換を行うアドレス変換制御部２と、を有することを特徴とするアドレス変換装置が提供される。
【０００８】
このようなアドレス変換装置によれば、アドレス変換バッファ１ａ，１ｂは、仮想アドレスと実アドレスを、オペレーティングシステムＯＳ１，ＯＳ２に基づいて区別して保持する。アドレス変換制御部２は、プロセッサが実行しているオペレーティングシステムＯＳ１，ＯＳ２に応じた仮想アドレスの実アドレスへの変換を行う。これによって、オペレーティングシステムＯＳ１，ＯＳ２の切替えによって、アドレス変換バッファ１ａ，１ｂの内容を入れ替えることが不要となる。
【発明の効果】
【０００９】
本発明のアドレス変換装置では、仮想アドレスと実アドレスとを、オペレーティングシステムに基づいて区別してアドレス変換バッファに保持し、オペレーティングシステムに応じた仮想アドレスの実アドレスへの変換を行うようにした。これによって、オペレーティングシステムの切替えによって、アドレス変換バッファの内容を入れ替えることが不要となり、システム負担を低減することができる。また、オペレーティングシステムの切替えによるオーバヘッドを低減することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の原理を図面を参照して詳細に説明する。
図１は、本発明のアドレス変換装置の原理図である。
図に示すようにアドレス変換装置は、アドレス変換バッファ１ａ，１ｂおよびアドレス変換制御部２を有している。
【００１１】
アドレス変換バッファ１ａ，１ｂは、仮想アドレスと実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持する。例えば、アドレス変換バッファ１ａは、オペレーティングシステムＯＳ１に対する仮想アドレスと実アドレスとを保持する。アドレス変換バッファ１ｂは、オペレーティングシステムＯＳ２に対する仮想アドレスと実アドレスとを保持する。
【００１２】
アドレス変換制御部２は、アドレス変換バッファ１ａ，１ｂを参照し、実行されているオペレーティングシステムＯＳ１，ＯＳ２に応じた仮想アドレスの実アドレスへの変換を行う。例えば、プロセッサがオペレーティングシステムＯＳ１を実行している場合、アドレス変換制御部２は、アドレス変換バッファ１ａを参照し、アドレス変換を行う。
【００１３】
これによって、オペレーティングシステムの切替えにより、アドレス変換バッファ１ａ，１ｂの内容を入れ替えることが不要となり、システム負担を低減することができる。また、オペレーティングシステムの切替えによるオーバヘッドを低減することができる。
【００１４】
次に、第１の実施の形態を図面を参照して詳細に説明する。
図２は、第１の実施の形態に係るマイクロプロセッサのハードウェア構成例を示す図である。
【００１５】
図にはマイクロプロセッサの一例が示してある。マイクロプロセッサ（Micro Processor）１１は、１チップの半導体装置であり、コア（Core）１２、ＳＤＲＡＭコントローラ（SDRAM（Synchronous DRAM） Controller）１３、ローカルバスインターフェース（Local Bus Interface）１４、ＤＭＡＣ（Direct Memory Access Controller）１５、バスブリッジ（Bus Bridge）１６、ＤＳＵ（Digital Service Unit）１７、ＣＲＰＣ（Clock Reset Power Control）１８、タイマ（Timer）１９、ＵＡＲＴ（Universal Asynchronous Receiver/Transmitter）２０、ＩＲＣ（Internet Relay Chat）２１、およびＧＰＩＯ（General Purpose Input/Output）２２を有している。コア１２は、ＡＬＵ（Arithmetic Logical Unit）であってもよい。マイクロプロセッサ１１には、ＳＤＲＡＭ２３、エイシックエンジン（ASIC Engine）２４、ページフラッシュ（Page Flash）２５が接続されている。
【００１６】
コア１２は、ＣＰＵ（Central Processing Unit）およびキャッシュユニット（Cache-unit）を有している。コア１２のＣＰＵは、例えば、ＳＤＲＡＭ２３に格納されているデータ（プログラムを含む）に従って、各部の制御をする。このとき、ＣＰＵは、キャッシュユニットを利用してデータをロードおよびストアする。
【００１７】
コア１２について詳細に説明する。
図３は、コアのハードウェア構成例を示す図である。
図に示すようにコア１２は、キャッシュユニット３１、整数ユニット（Integer-unit）３２、および浮動小数点ユニット（Floating-unit）３３を有している。整数ユニット３２および浮動小数点ユニット３３は、ＣＰＵの一部であり、整数演算および浮動小数点演算を行う。整数ユニット３２および浮動小数点ユニット３３は、キャッシュユニット３１との間で、データをやり取りし、整数演算および浮動小数点演算を行う。
【００１８】
キャッシュユニット３１は、図示するように命令キャッシュ（Instruction Cache）、アドレス変換ユニット（Memory Management Unit）、およびデータキャッシュ（Data Cache）を有している。アドレス変換ユニットは、命令キャッシュおよびデータキャッシュと、整数ユニット３２および浮動小数点ユニット３３との間でやり取りされるデータのアドレス変換を、仮想アドレス方式に従って制御している。なお、命令キャッシュは、命令コードが格納されるキャッシュである。データキャッシュは、データが格納されるキャッシュである。
【００１９】
キャッシュユニット３１について詳細に説明する。
図４は、キャッシュユニットのハードウェア構成例を示す図である。
図に示すようにキャッシュユニット３１は、ＭＭＵ（Memory Management Unit）４１、命令キャッシュ４６、およびデータキャッシュ４７を有している。ＭＭＵ４１には、ＳＲ（Special-purpose Register）４８が接続されている。ＳＲ４８は、キャッシュユニット３１内に実装してもよいし、キャッシュユニット３１の外に独立して実装してもよい。
【００２０】
ＭＭＵ４１は、ＭＭＵコントローラ（MMU Controller）４２、ＩＡＭＲ（Instruction Address Map Register）４３、ＤＡＭＲ（Data Address Map Register）４４、およびＴＬＢ（Translation Look-aside Buffer）４５を有している。
【００２１】
ＳＲ４８は、ＨＳＲ（Hardware Status Register）４８ａ、ＩＡＭＶＲ（Instruction Address Map Valid Register）４８ｂ、およびＤＡＭＶＲ（Data Address Map Valid Register）４８ｃを有している。
【００２２】
ＩＡＭＲ４３、ＤＡＭＲ４４、およびＴＬＢ４５には、プログラムが指定する仮想アドレスと、実際のメモリ上の実アドレスとが対応付けられて格納される。
ＩＡＭＲ４３とＤＡＭＲ４４には、仮想アドレスと実アドレスとが静的に格納される。すなわち、仮想アドレスと実アドレスとが、プログラムによって１度ＩＡＭＲ４３、ＤＡＭＲ４４に格納されるとその対応関係が固定される。
【００２３】
ＴＬＢ４５には、仮想アドレスと実アドレスとが動的に格納される。すなわち、新たなデータが命令キャッシュ４６、データキャッシュ４７に追加登録される場合、使用頻度の少ないデータの仮想アドレスと実アドレスとがＴＬＢ４５から追い出される。そして、新たなデータの仮想アドレスと実アドレスとがＴＬＢ４５に格納される。
【００２４】
ＭＭＵコントローラ４２は、ＳＲ４８を参照して、上記の制御を行う。
なお、ＩＡＭＲ４３には、命令コードに対する仮想アドレスと実アドレスが格納され、ＤＡＭＲ４４には、データに対する仮想アドレスと実アドレスが格納される。また、ＴＬＢ４５は、動的に動作するので、大きな容量のデータに対応することができる。
【００２５】
マイクロプロセッサ１１は、複数のＯＳをハイブリットにて実行でき、リアルタイム処理を行えるようになっている。例えば、通常時は、リアルタイム性を要求されない、例えば、Ｌｉｎｕｘを実行する。割り込み時は、リアルタイム性を要求される、例えば、ＩＴＲＯＮを実行する。以下では、マイクロプロセッサ１１は、ＬｉｎｕｘとＩＴＲＯＮのＯＳを実行するものとして説明する。
【００２６】
ＩＴＲＯＮが使用するメモリ領域は、Ｌｉｎｕｘに比べ非常に小さい。Ｌｉｎｕｘが使用するメモリ領域は、カーネル部分は小さく、ユーザアプリケーションの部分が大きい。そこで、ＭＭＵ４１は、ＩＴＲＯＮと、Ｌｉｎｕｘのカーネル部分とを静的なＩＡＭＲ４３、ＤＡＭＲ４４に割り当てる。Ｌｉｎｕｘのユーザアプリケーションを動的なＴＬＢ４５に割り当てる。
【００２７】
図５は、ＩＴＲＯＮとＬｉｎｕｘのメモリマップを示した図である。
図にはＬｉｎｕｘとＩＴＲＯＮの仮想空間が示してある。Ｌｉｎｕｘの仮想空間は、カーネル（Kernel）５１と、ユーザアプリケーション（User application）５２の領域に分けられる。カーネル５１は、Ｋマップ（Kmap）、ドライバ（Drivers）の領域を有している。ＩＴＲＯＮのメモリ空間は、Ｌｉｎｕｘに比べ非常に小さい。
【００２８】
図６は、ＯＳのＡＭＲおよびＴＬＢへの割り当てを示した図である。
図に示すように、Ｌｉｎｕｘのユーザアプリケーションは、ＴＬＢ（Translation Look-aside Buffer）に割り当てられ、カーネルはＡＭＲ（Address Map Register）に割り当てられる。ＩＴＲＯＮは、ＡＭＲのみに割り当てられる。
【００２９】
図のＴＬＢは、図４のＴＬＢ４５に対応し、ＡＭＲは、ＩＡＭＲ４３、ＤＡＭＲ４４に対応する。説明を簡単にするためにＡＭＲを命令用のＡＭＲ（ＩＡＭＲ４３）と、データ用のＡＭＲ（ＤＡＭＲ４４）とに区別せずに示している。
【００３０】
次に、ＭＭＵ４１の機能について説明する。
図７は、第１の実施の形態に係るＭＭＵの機能ブロック図である。
図に示すようにＭＭＵ４１は、ＡＭＲ６１，６２、ＴＬＢ６３、およびセレクタ６４を有している。ＴＬＢ６３は、図４のＴＬＢ４５に対応する。ＡＭＲ６１，６２は、図４のＩＡＭＲ４３、ＤＡＭＲ４４に対応するが、命令用とデータ用とに区別して示していない。
【００３１】
ＡＭＲ６１は、ＩＴＲＯＮが使用する仮想アドレスと実アドレスを保持している。
ＡＭＲ６２は、Ｌｉｎｕｘのカーネルが使用する仮想アドレスと実アドレスを保持している。
【００３２】
ＴＬＢ６３は、Ｌｉｎｕｘのユーザアプリケーションが使用する仮想アドレスと実アドレスを保持している。
セレクタ６４は、ＣＰＵからＯＳに応じた制御信号が入力される。セレクタ６４は、ＡＭＲ６１，６２、ＴＬＢ６３を参照して変換された仮想アドレスの実アドレスを、制御信号に応じて選択出力する。
【００３３】
例えば、セレクタ６４は、ＣＰＵからＩＴＲＯＮの実行に応じた制御信号が入力されている場合、ＡＭＲ６１を参照して変換された仮想アドレスの実アドレスを選択出力する。また、セレクタ６４は、ＣＰＵからＬｉｎｕｘの実行に応じた制御信号が入力されている場合、ＡＭＲ６２、ＴＬＢ６３を参照して変換された仮想アドレスの実アドレスを選択出力する。すなわち、セレクタ６４は、仮想アドレスを実アドレスに変換するＡＭＲ６１，６２、ＴＬＢ６３を、ＣＰＵが実行しているＯＳに応じて選択している。なお、制御信号は、ＣＰＵ以外の制御装置から出力するようにしてもよい。
【００３４】
ＬｉｎｕｘとＩＴＲＯＮは、図６に示したようにＡＭＲを共有するので、１つである場合は、切替え時に互いに干渉し合う恐れがある。そのため、ＡＭＲが１つである場合には、ＡＭＲの内容をＬｉｎｕｘとＩＴＲＯＮの実行に応じて入れ替えをする必要があった。
【００３５】
そこで、本発明では、ＩＴＲＯＮ用のＡＭＲ６１と、Ｌｉｎｕｘ用のＡＭＲ６２とＴＬＢ６３とを設け、ＯＳに基づいた制御信号に応じて、ＡＭＲ６１，６２、ＴＬＢ６３より変換される実アドレスを出力するようにした。これによって、ＡＭＲの内容を入れ替える必要がなく、そのためのアルゴリズムや制御回路によるシステム負担を低減することができる。また、ＡＭＲの入れ替えがないので、処理のオーバヘッドを低減することができる。
【００３６】
次に、第２の実施の形態を図面を参照して詳細に説明する。
第１の実施の形態では、ＡＭＲをＬｉｎｕｘのカーネル用と、ＩＴＲＯＮ用とに分けていたが、第２の実施の形態では、１つのＡＭＲでも第１の実施の形態と同様の効果が得られるようにした。
【００３７】
図８は、第２の実施の形態に係るＭＭＵの機能ブロック図である。
図に示すようにＭＭＵは、ＡＭＲ７１、ＴＬＢ７２、およびセレクタ７３を有している。ＴＬＢ７２は、図４のＴＬＢ４５に対応する。ＡＭＲ７１は、図４のＩＡＭＲ４３、ＤＡＭＲ４４に対応するが、命令用とデータ用とに区別して示していない。
【００３８】
ＡＭＲ７１は、ＩＴＲＯＮが使用する仮想アドレスと実アドレスおよびＬｉｎｕｘのカーネルが使用する仮想アドレスと実アドレスを保持している。なお、対になっている仮想アドレスと実アドレスには、図に示すようにバリッドビット７１ａが付与されている。バリッドビットは、仮想アドレスと実アドレスがＩＴＲＯＮとＬｉｎｕｘのどちらのＯＳに対応したアドレスであるかを示す情報である。例えば、０でＬｉｎｕｘのカーネルが使用する仮想アドレスと実アドレス、１でＩＴＲＯＮが使用する仮想アドレスと実アドレスであることを示す。
【００３９】
ＴＬＢ７２は、Ｌｉｎｕｘのユーザアプリケーションが使用する仮想アドレスと実アドレスを保持している。
セレクタ７３は、バリッドビット７１ａと、ＨＳＲの状態に応じて、ＡＭＲ７１、ＴＬＢ７２を参照して変換された仮想アドレスの実アドレスを選択出力する。ＨＳＲは、例えば、図４のＨＳＲ４８ａである。ＨＳＲには、現在ＣＰＵが実行しているＯＳの情報が格納される。
【００４０】
セレクタ７３は、バリッドビット７１ａを参照して、ＡＭＲ７１によって変換された実アドレスの出力を制御する。例えば、Ｌｉｎｕｘが実行されている場合、バリッドビットが０の変換された実アドレスを出力する。ＩＴＲＯＮが実行されている場合、バリッドビットが１の変換された実アドレスを出力する。
【００４１】
なお、バリッドビット７１ａは、対になっている仮想アドレスと実アドレスに付して、ＡＭＲ７１に格納するようにしたが、バリッドビットを保持する別のレジスタ（ＡＭＶＲ：Address Map Valid Register）を設けるようにしてもよい。この場合、セレクタ７３は、ＡＭＶＲを参照して、実アドレスの出力を制御する。なお、図４のＩＡＭＶＲ４８ｂ、およびＤＡＭＶＲ４８ｃが前述のＡＭＶＲに対応している。ＡＭＶＲがＯＳごとに設けられていない場合、ＡＭＶＲの内容は、ＯＳが切り替わる際に、退避して復元することが必要である。ＡＭＶＲの内容は、例えば、ＲＡＭなどの記憶装置に退避される。
【００４２】
また、セレクタ７３は、ＨＳＲの状態に応じて、ＴＬＢ７２によって変換された実アドレスの出力を制御する。例えば、ＩＴＲＯＮが実行されている場合、セレクタ７３は、ＴＬＢ７２からの実行アドレスを出力しない。Ｌｉｎｕｘが実行されている場合、セレクタ７３は、ＴＬＢ７２からの実行アドレスを出力する。すなわち、セレクタ７３は、ＨＲＳの状態に応じて、ＴＬＢ７２によるアドレスの変換結果を有効化および無効化する。
【００４３】
図９は、実アドレスの出力動作を説明する図である。
図９では、ＡＭＶＲを使用した場合の動作を説明している。図に示すＨＳＲのＥＤＡＴは、ＴＬＢ７２の実アドレスを有効化、無効化するための情報である。ＥＤＡＴ＝ＯＮのとき、現在実行されているＯＳはＬｉｎｕｘであることを示し、セレクタ７３は、ＴＬＢ７２の実アドレスを有効化（ＯＮ）する。ＥＤＡＴ＝ＯＦＦのとき、現在実行されているＯＳはＩＴＲＯＮであることを示し、セレクタ７３は、ＴＬＢ７２の実アドレスを無効化（ＯＦＦ）する。
【００４４】
セレクタ７３は、ＡＭＶＲに格納されている０のビットに対応するＡＭＲ７１の実アドレスを出力する。例えば、図９に示すＡＭＶＲの左側のビットが、図８のＡＭＲ７１の最上欄に対応し、ＡＭＶＲの右側のビットが、ＡＭＲ７１の最下欄に対応しているとする。ＡＭＶＲが０１１０１１０１１の場合、図８のＡＭＲ７１の上から１，４，７番目の変換された実アドレスを出力する。ＡＭＶＲが１００１００１００の場合、図８のＡＭＲ７１の上から２，３，５，６，８，９番目の変換された実アドレスを出力する。
【００４５】
すなわち、セレクタ７３は、ＡＭＶＲにセットされるビットによって、Ｌｉｎｕｘのカーネルに対応した実アドレスおよびＩＴＲＯＮに対応した実アドレスを出力する。
このように、対になっている仮想アドレスと実アドレスとにバリッドビットを付与し、かつＴＬＢの実アドレスを有効化、無効化するようにした。これによっても、ＡＭＲの内容を入れ替える必要がなく、そのためのアルゴリズムや制御回路によるシステム負担が軽くなる。また、ＡＭＲの入れ替えがないので、処理のオーバヘッドを低減することができる。また、ＴＬＢの実アドレスを有効化、無効化するので、ＩＴＲＯＮとＬｉｎｕｘのユーザアプリケーションとが干渉し合うことを防止することができる。
【００４６】
ところで、ＴＬＢは、通常、セットアソシアティブかフルアソシアティブで構成されるＲＡＭである。セットアソシアティブは、実装が容易であるというメリットと、ページサイズが固定されるというデメリットを有する。一方、フルアソシアティブは、ページサイズが可変にできるというメリットと、実装が著しく困難であり、回路規模が大きくなるというデメリットをもつ。
【００４７】
そこで、ＴＬＢをセットアソシアティブで使用し、ＡＭＲをフルアソシアティブで使用するようにする。例えば、図７に示したＭＭＵでは、ＡＭＲ６１，６２をフルアソシアティブで使用する。ＴＬＢ６３をセットアソシアティブで使用する。図８に示したＭＭＵでは、ＡＭＲ７１をフルアソシアティブで使用する。ＴＬＢ７２をセットアソシアティブで使用する。
【００４８】
１つのＯＳのみを実行する従来のマイクロプロセッサでは、ＡＭＲとＴＬＢのように２つのアドレス変換バッファの使用が可能な場合、セットアソシアティブとフルアソシアティブの使用形態は、実行するＯＳに応じて固定されていた。そのため、使用形態をマイクロプロセッサの動作中に変更することは行われていなかった。
【００４９】
本発明では、マイクロプロセッサは、２つのＯＳを実行するために、仮想アドレスと実アドレスをＴＬＢ（セットアソシアティブ）とＡＭＲ（フルアソシアティブ）とで管理し、ＴＬＢとＡＭＲの使用形態を、プロセッサの動作中に、実行するＯＳに応じてハードウェア的に適切な使用形態に切替えるようにした。そのため、ＯＳの切替えによる処理のオーバーヘッドを低減することができるとともに、簡単かつ安価なＭＭＵのハードウェア構成によって、セットアソシアティブとフルアソシアティブの両方の特徴を生かした最適な状態をＯＳに応じて設定することができる。
【００５０】
次に、第３の実施の形態を図面を参照して詳細に説明する。
ＴＬＢにセットアソシアティブを適用する場合、ウェイ数以上の実アドレスをＴＬＢの同一ラインに登録しようとするとき、もっとも使用頻度の少ないアドレスに新しい実アドレスが登録されることとなる。この状態が頻発すると著しく性能低下が生じることとなる。性能低下を防止するには、ＴＬＢのウェイ数を増加させることが効果的であるが、回路規模の増加につながり、コストアップの原因となる。
【００５１】
そこで、第３の実施の形態では、スラッシングは、連続して発生する傾向が強いことを利用して、フルアソシアティブのＡＭＲの一部に、ＴＬＢから追い出される固定ページのエントリを格納する、もしくは、ＴＬＢに空きがない場合、ＡＭＲに登録することで、性能低下を防止するようにする。
【００５２】
図１０は、第３の実施の形態に係るＭＭＵの機能ブロック図である。
図に示すようにＭＭＵは、ＴＬＢ８１、ＡＭＲ８２、およびセレクタ８３を有している。
【００５３】
ＴＬＢ８１は、セットアソシアティブが適用されている。ＴＬＢ８１は、Ｎライン（Ｎ：整数）ごとに分割され、Ｎウェイとなっている。ＡＭＲ８２は、フルアソシアティブが適用されている。
【００５４】
セレクタ８３は、Ｌｉｎｕｘによる新たな仮想アドレスの登録要求が発生した場合、ＴＬＢ８１の該当ラインに空きがあるか確認する。空きがない場合、最も使用頻度の低い実アドレスのデータを格納しているウェイのデータを、ＡＭＲ８２に移動する。そして、データが移動されたＴＬＢ８１の部分に、新たな仮想アドレスを登録する。または、セレクタ８３は、ＴＬＢ８１に空きがない場合、Ｌｉｎｕｘによる新たな仮想アドレスをＡＭＲ８２に直接登録する。
【００５５】
ここで、ＡＭＲには、図６で説明したように、静的なＩＴＲＯＮとＬｉｎｕｘのカーネルとが割り当てられる。そのため、静的なＡＭＲ８２の領域には、移動される動的なＬｉｎｕｘのユーザアプリケーションのための領域を設ける必要がある。
【００５６】
図１１は、ＡＭＲのメモリマップを示した図である。
図に示すメモリマップ８４は、ＡＭＲのメモリマップを示す。メモリマップ８４には、ＩＴＲＯＮ用の領域と、Ｌｉｎｕｘのカーネル用の領域と、Ｌｉｎｕｘのユーザアプリケーション用の領域が設けられている。これによって、ＴＬＢの示すユーザアプリケーションのデータを、ＡＭＲに移動することができる。
【００５７】
このように、ＡＭＲの一部にＴＬＢから追い出された固定ページのエントリを格納する、または、ＴＬＢに空きがない場合、ＡＭＲに登録するようにした。これによって、ＴＬＢの追い出されるデータは、ＡＭＲに格納されることになり、スラッシングの発生を低減することができる。
【００５８】
また、ＴＬＢのウェイ数を増加することなく実現できるので、回路規模を抑制することができる。
なお、フルアソシアティブのバッファ（ＡＭＲ）から使用頻度の少ないデータが追い出される場合、そのデータをセットアソシアティブのバッファ（ＴＬＢ）に格納するようにしても、スラッシングの発生を低減することができる。
【００５９】
次に、第４の実施の形態を図面を参照して詳細に説明する。
図１１に示したように、ＡＭＲに動的なＬｉｎｕｘのユーザアプリケーションを割り当てる場合、ＬｉｎｕｘのカーネルおよびＩＴＲＯＮと干渉し合わないようにする必要がある。そのため、ＩＴＲＯＮを実行する場合、ＡＭＲの、Ｌｉｎｕｘのユーザアプリケーションの領域を、ＣＰＵから見えないようにする必要がある。また、Ｌｉｎｕｘを実行する場合、ＡＭＲのＩＴＲＯＮの領域を、ＣＰＵから見えないようにする必要がある。
【００６０】
そこで、対になっている仮想アドレスと実アドレスに、その仮想アドレスと実アドレスが動的エントリ（Ｌｉｎｕｘのユーザアプリケーション）であるか静的エントリ（Ｌｉｎｕｘのカーネル、ＩＴＲＯＮ）であるかを示すエントリ情報を付与する。そして、仮想アドレスと実アドレスに付与されているエントリ情報を参照し、ＯＳごとに応じたアドレス変換を行うようにする。
【００６１】
図１２は、第４の実施の形態に係るＭＭＵの機能ブロック図である。
図に示すように、ＭＭＵは、ＡＭＲ９１およびセレクタ９２を有している。なお、ＴＬＢは、図示を省略してある。
【００６２】
ＡＭＲ９１は、ＩＴＲＯＮが使用している仮想アドレスと実アドレス、Ｌｉｎｕｘのカーネルが使用している仮想アドレスと実アドレス、およびＬｉｎｕｘのユーザアプリケーションが使用している仮想アドレスと実アドレスを保持している。なお、対になっている仮想アドレスと実アドレスには、図に示すようにエントリ情報が付与されている。エントリ情報は、仮想アドレスと実アドレスが、動的エントリであるか、静的エントリであるかを示している。
【００６３】
例えば、ＩＴＲＯＮおよびＬｉｎｕｘのカーネルが使用している仮想アドレスと実アドレスの対には、静的エントリであることを示すＳのエントリ情報が付与されている。また、Ｌｉｎｕｘのユーザアプリケーションが使用している仮想アドレスと実アドレスの対には、動的エントリであることを示すＤのエントリ情報が付与されている。なお、エントリ情報は、仮想アドレスと実アドレスをＡＭＲ９１に登録する際に付与される。
【００６４】
セレクタ９２は、エントリ情報を参照し、動作モード（ＩＴＲＯＮの実行時を静的モード、Ｌｉｎｕｘの実行時を動的モードとする）に応じた実アドレスを出力する。例えば、セレクタ９２は、静的モードのとき、Ｓのエントリ情報を参照して、変換された仮想アドレスの実アドレスを出力する。また、動的モードのとき、Ｄのエントリ情報を参照して、実アドレスを出力する。
【００６５】
また、セレクタ９２は、動的モード時のアドレスの検索優先順を動的エントリから静的エントリとする。静的モード時のアドレスの検索優先順を静的エントリから動的エントリとする。これは、例えば、動的エントリと静的エントリの領域が重なり、２つの実アドレスが同じ仮想アドレスを有している場合、その仮想アドレスの実アドレスへの変換要求をすると、２つの実アドレスがヒットしてしまう。これを避けるために、例えば、動的モードであれば、動的エントリの仮想アドレスの実アドレス変換を行い、対応する実アドレスがなければ、静的エントリの仮想アドレスの実アドレス変換を行う。
【００６６】
このように、仮想アドレスと実アドレスに、動的エントリであるか静的エントリであるかのエントリ情報を付与して登録する。そして、エントリ情報を参照し、動作モードに応じた実アドレスを出力するようにした。これによって、動的エントリと静的エントリの干渉を防ぐことができる。
【００６７】
また、Ｌｉｎｕｘのカーネル領域の一部にユーザ領域（ユーザアプリケーションの領域）を確保し、ユーザ領域を動的に変化させたい場合、カーネル領域を静的エントリとして登録し、ユーザ領域をＤＡＴエントリとして登録するようにした。そして、Ｌｉｎｕｘ実行時の検索優先順を動的エントリから静的エントリとし、ユーザ領域からカーネル領域の順にヒットするようにした。また、ＩＴＲＯＮ実行時の検索優先順を静的エントリから動的エントリとし、カーネル領域からユーザ領域の順にヒットするようにした。これによって、柔軟なアドレス変換が容易に設定可能になる。
【００６８】
なお、セットアソシアティブにおける動的エントリは、ページサイズが固定であるという点で固定エントリ、フルアソシアティブにおける静的エントリは、ページサイズが可変であるという点で可変エントリとも呼ばれる。
【００６９】
次に、第５の実施の形態を図面を参照して詳細に説明する。
第４の実施の形態で説明したように、動的アドレス変換と静的アドレス変換を同時に使用可能とするアドレス変換機構は、柔軟性の面でも、コストの面でも非常に有効であるが、意図した動的エントリのデータおよび静的エントリのデータにアクセスしたい場合、動作モードの設定変更が必要となる。そこで、第５の実施の形態では、静的エントリと動的エントリへのアクセスを動作モードに関係なく、任意にすることができるＬＲＡ命令を設けた。また、アドレス変換が行われなかった場合などの例外報告を、仮想アドレス＝実アドレスとなるビット（ページ内オフセット）を利用してＣＰＵに通知するようにした。
【００７０】
図１３は、第５の実施の形態に係るＭＭＵに指示される命令を示した図である。
図に示すように命令は、３つのフィールド１０１，１０２，１０３に分けられる。フィールド１０１には、動作モードに関係なく、任意に動的エントリおよび静的エントリへアクセスをすることができるプログラムの命令コード（ＬＲＡ）が示してある。フィールド１０２には、アドレス変換するアドレスが設定される。フィールド１０３には、動作モードを指定する情報が設定される。また、アドレス変換ができたか否かの例外を報告するか否かの指定をするための情報が設定される。なお、図に示すｘ，ｙ，ｚには、０または１が格納される。
【００７１】
例えば、図１２のＭＭＵを例にすると、フィールド１０３において、Ｓ＝０が設定された場合、ＡＭＲ９１の静的エントリをアドレス変換の検索対象としない。Ｓ＝１が設定された場合、ＡＭＲ９１の静的エントリをアドレス変換の検索対象とする。Ｄ＝０が設定された場合、ＡＭＲ９１とＴＬＢの動的エントリをアドレス変換の検索対象としない。Ｄ＝１が設定された場合、ＡＭＲ９１とＴＬＢの動的エントリをアドレス変換の検索対象とする。
【００７２】
上記例より、Ｓ，Ｄ＝１，０が設定された場合、静的モードと同様の動作を実現できる。Ｓ，Ｄ＝０，１が設定された場合、動的モードと同様の動作を実現することができる。Ｓ，Ｄ＝１，１が設定された場合、動作モードに関係なく両エントリをアドレス変換の検索対象とすることができる。
【００７３】
これによって、動作モードに関係なく、任意に動的エントリおよび静的エントリへアクセスすることができる。
フィールド１０３において、Ｅ＝０が設定された場合、例外をＣＰＵに報告しない。Ｅ＝１が設定された場合、例外をＣＰＵに報告する。例えば、変換要求された仮想アドレスに対応する実アドレスが存在しない場合、Ｅ＝０の設定がされていた場合には、その旨をＣＰＵに報告しない。Ｅ＝１が設定されていた場合には、その旨をＣＰＵに報告する。
【００７４】
従来、例外報告は、例えば、アドレス変換とは別に行っていた。そのため、例外報告とアドレス変換の結果を知るには、別々に操作を行う必要があり、取り扱いが困難であった。本発明では、仮想アドレス＝実アドレスとなるビット、すなわち、ページ内オフセットを例外報告に利用することにより、取り扱いを容易にした。
【００７５】
例えば、仮想アドレスと実アドレスのアドレス幅が３２ビットであるとする。仮想アドレスと実アドレスの下位１６ビットが同じであるとすると、実アドレスは上位１６ビットで指定することができる。この場合、実アドレスの下位１６ビットは、アドレスとしての情報性を有さないので、この下位１６ビットを例外報告の領域として使用する。このように、ページ内オフセットとなるビットを例外報告に利用することにより、例外報告が実アドレスに付加されるので取り扱いが容易となる。
【００７６】
なお、Ｓ，Ｄ＝１，１が設定された場合において、動的エントリと静的エントリとが重なっている場合、動的エントリと静的エントリとに付与されている優先度に従って、アドレス変換の検索対象とするようにする。
【図面の簡単な説明】
【００７７】
【図１】本発明のアドレス変換装置の原理図である。
【図２】第１の実施の形態に係るマイクロプロセッサのハードウェア構成例を示す図である。
【図３】コアのハードウェア構成例を示す図である。
【図４】キャッシュユニットのハードウェア構成例を示す図である。
【図５】ＩＴＲＯＮとＬｉｎｕｘのメモリマップを示した図である。
【図６】ＯＳのＡＭＲおよびＴＬＢへの割り当てを示した図である。
【図７】第１の実施の形態に係るＭＭＵの機能ブロック図である。
【図８】第２の実施の形態に係るＭＭＵの機能ブロック図である。
【図９】実アドレスの出力動作を説明する図である。
【図１０】第３の実施の形態に係るＭＭＵの機能ブロック図である。
【図１１】ＡＭＲのメモリマップを示した図である。
【図１２】第４の実施の形態に係るＭＭＵの機能ブロック図である。
【図１３】第５の実施の形態に係るＭＭＵに指示される命令を示した図である。
【符号の説明】
【００７８】
１ａ，１ｂ  アドレス変換バッファ
２  アドレス変換制御部
１１  マイクロプロセッサ
１２  コア
３１  キャッシュユニット
４１  ＭＭＵ
４２  ＭＭＵコントローラ
４３  ＩＡＭＲ
４４  ＤＡＭＲ
４５  ＴＬＢ
４８  ＳＲ
４８ａ  ＨＳＲ
４８ｂ  ＩＡＭＶＲ
４８ｃ  ＤＡＭＶＲ
６１，６２，７１，８２，９１  ＡＭＲ
６３，７２，８１  ＴＬＢ
６４，７３，８３，９２  セレクタ
ＯＳ１，ＯＳ２  オペレーティングシステム
【図１】
2005346358.tif 000003
【図２】
2005346358.tif 000004
【図３】
2005346358.tif 000005
【図４】
2005346358.tif 000006
【図５】
2005346358.tif 000007
【図６】
2005346358.tif 000008
【図７】
2005346358.tif 000009
【図８】
2005346358.tif 000010
【図９】
2005346358.tif 000011
【図１０】
2005346358.tif 000012
【図１１】
2005346358.tif 000013
【図１２】
2005346358.tif 000014
【図１３】
2005346358.tif 000015