(57)【要約】【課題】演算処理装置がアドレス変換に用いるページテーブルの情報を保持するためのハードウェアを削減する。【解決手段】要求生成部２１１は、要求アドレスを含む情報要求を生成する。変換バッファ２１３は、ページの仮想アドレスと物理アドレス（ＰＡ）とを対応付けて記憶する。ページテーブルバッファ２１４は、ラストレベル以外のレベルのページテーブル内のデータと、そのデータのＰＡとを対応付けて記憶する。制御部２１２は、変換バッファ２１３が要求アドレスを記憶していない場合、要求アドレスからアクセス対象ページテーブル内のデータのＰＡを求める。そして、制御部２１２は、アクセス対象ページテーブルがラストレベル以外のレベルである場合、ページテーブルバッファ２１４からそのデータを検索する。一方、アクセス対象ページテーブルがラストレベルである場合、制御部２１２は、そのデータをメモリから取得して変換バッファ２１３に登録する。【選択図】図２
2019212167.tif 000002
【特許請求の範囲】
【請求項１】
要求アドレスを含む情報要求を生成する要求生成部と、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファと、
ラストレベル以外のレベルのページテーブル内のデータと前記ページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファと、
前記変換バッファが前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、前記ページテーブルバッファから前記アクセス対象ページテーブル内のデータを検索し、前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータをメモリから取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する制御部と、
を備えることを特徴とする演算処理装置。
【請求項２】
前記ページテーブルバッファは、複数のエントリと制御キューとを含み、
前記複数のエントリ各々は、ページテーブル内のデータと、ページテーブル内のデータの物理アドレスとを含み、
前記制御部は、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルであり、かつ、前記ページテーブルバッファが前記アクセス対象ページテーブル内のデータの物理アドレスを記憶していない場合、前記アクセス対象ページテーブル内のデータを前記メモリから取得して前記ページテーブルバッファへ出力し、
前記制御キューは、前記複数のエントリの使用順序を記憶し、前記複数のエントリのうち最近最も使用されていないエントリを示す制御信号を出力し、
前記ページテーブルバッファは、前記アクセス対象ページテーブル内のデータと前記アクセス対象ページテーブル内のデータの物理アドレスとを、前記制御信号が示すエントリに登録することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記変換バッファは、前記変換バッファ内の仮想アドレス及び物理アドレスが無効化された場合、消去信号を前記ページテーブルバッファへ出力し、
前記ページテーブルバッファは、前記消去信号に応じて、前記ページテーブルバッファ内のエントリを無効化することを特徴とする請求項２記載の演算処理装置。
【請求項４】
情報とページテーブルとを記憶する主記憶装置と、
要求アドレスを含む情報要求を生成する要求生成部と、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファと、
ラストレベル以外のレベルのページテーブル内のデータと、前記ラストレベル以外のレベルのページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファと、
前記変換バッファが前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、前記ページテーブルバッファから前記アクセス対象ページテーブル内のデータを検索し、前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータを前記主記憶装置から取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する制御部と、
を備えることを特徴とする情報処理装置。
【請求項５】
要求アドレスを含む情報要求を生成し、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファが、前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、
前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、ラストレベル以外のレベルのページテーブル内のデータとラストレベル以外のレベルのページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファから、前記アクセス対象ページテーブル内のデータを検索し、
前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータをメモリから取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する、
ことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置、及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置であるＣＰＵ（Central Processing Unit）は、近年、仮想アドレスをサポートするためのハードウェアを搭載していることが多い。例えば、ＴＬＢ（Translation Lookaside Buffer）は、仮想アドレス（Virtual Address，ＶＡ）と物理アドレス（Physical Address，ＰＡ）との変換対をキャッシュするハードウェアである。ＴＬＢに登録されるエントリは、ページテーブルウォークを行うことで取得される。
【０００３】
ページテーブルウォークに関して、複数のページテーブルエントリを含むデータのブロックを保持するメモリマネージメントユニット（ＭＭＵ）が知られている（例えば、特許文献１を参照）。ＴＬＢミス時のペナルティを低減する演算処理装置も知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１２−５３３１３５号公報
【特許文献２】国際公開第２００８／１５５８２５号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ページテーブルウォークの実行時間を短縮するために、ページテーブルエントリをキャッシュするバッファを設けた場合、ハードウェアの規模が増大する。
【０００６】
１つの側面において、本発明は、演算処理装置がアドレス変換に用いるページテーブルの情報を保持するためのハードウェアを削減することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、演算処理装置は、要求生成部、変換バッファ、ページテーブルバッファ、及び制御部を含む。
【０００８】
要求生成部は、要求アドレスを含む情報要求を生成する。変換バッファは、ページの仮想アドレスと、そのページの物理アドレスとを対応付けて記憶する。ページテーブルバッファは、ラストレベル以外のレベルのページテーブル内のデータと、そのページテーブル内のデータの物理アドレスとを対応付けて記憶する。
【０００９】
制御部は、変換バッファが要求アドレスに対応する仮想アドレスを記憶していない場合、要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求める。そして、制御部は、アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、ページテーブルバッファからアクセス対象ページテーブル内のデータを検索する。一方、アクセス対象ページテーブルがラストレベルのページテーブルである場合、制御部は、アクセス対象ページテーブル内のデータをメモリから取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを変換バッファに登録する。
【発明の効果】
【００１０】
実施形態によれば、演算処理装置がアドレス変換に用いるページテーブルの情報を保持するためのハードウェアを削減することができる。
【図面の簡単な説明】
【００１１】
【図１】ページテーブルウォークを示す図である。
【図２】演算処理装置の構成図である。
【図３】演算処理装置の制御方法のフローチャートである。
【図４】情報処理装置の構成図である。
【図５】Ｌ１キャッシュの構成図である。
【図６】テーブルウォーク制御部の構成図である。
【図７】ページテーブルバッファの構成図である。
【図８】エントリの構成図である。
【図９】制御キューの構成図である。
【図１０】テーブルウォーク制御部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、実施形態を詳細に説明する。
【００１３】
ＴＬＢミスが発生した場合に行われるページテーブルウォークは、ハードウェアによって行われる場合もあり、ソフトウェアによって行われる場合もある。いずれの場合であっても、１個又は複数個のページテーブルが参照され、ページテーブルを参照するパターンは様々である。
【００１４】
複数個のページテーブルからなる多段ページテーブルを参照する場合、主記憶装置からページテーブルエントリを取得する回数が増加するため、ページテーブルウォークの実行にかなり時間がかかる。ＴＬＢのエントリ数を増加させれば、ＴＬＢにヒットする確率が高くなるため、ページテーブルウォークの発生回数が減少するが、それだけでは不十分であり、ページテーブルウォーク自体の実行時間もできるだけ短縮することが望ましい。
【００１５】
図１は、ハードウェアによって行われるページテーブルウォークの例を示している。ＣＰＵは、アクセス対象データの仮想アドレス（ＶＡ）１０１を要求アドレスとして含む、データ要求を生成する。ＶＡ１０１は、Lv0-index〜Lv3-index及びoffsetを含む。
【００１６】
ベースレジスタ１０２は、ＴＴＢＡ（Translation Table Base Address）を格納している。ＴＴＢＡは、主記憶装置内におけるレベル０のページテーブルの格納位置を示す。
【００１７】
Lvj-index（ｊ＝０〜３）は、レベルｊのページテーブル内におけるアクセス対象エントリの格納位置を示すインデックスである。レベル０〜レベル３のページテーブルは、４段の多段ページテーブルに対応し、このうちレベル３のページテーブルは、最終段（ラストレベル）のページテーブルである。
【００１８】
主記憶装置内のＬｖｊディスクリプタアドレス（Lvj Descriptor Address）（ｊ＝０〜２）には、レベルｊのページテーブルのエントリであるレベルｊテーブルディスクリプタ（Levelj table Descriptor）が格納されている。また、Ｌｖ３ディスクリプタアドレス（Lv3 Descriptor Address）には、レベル３のページテーブルのエントリであるレベル３ページディスクリプタ（Level3 page Descriptor）が格納されている。Ｌｖｊディスクリプタアドレス（ｊ＝０〜３）は、主記憶装置内の物理アドレスであり、Lvj Lookupは、主記憶装置内のレベルｊのページテーブルを参照する動作を表す。
【００１９】
まず、ハードウェアは、ベースレジスタ１０２内のＴＴＢＡにLv0-indexを付加して、Ｌｖ０ディスクリプタアドレス１０３を生成する。そして、ハードウェアは、主記憶装置内のＬｖ０ディスクリプタアドレス１０３に格納されているレベル０テーブルディスクリプタ１０４を参照する。
【００２０】
次に、ハードウェアは、レベル０テーブルディスクリプタ１０４内のレベル１テーブルアドレス（Level1 Table Address）にLv1-indexを付加して、Ｌｖ１ディスクリプタアドレス１０５を生成する。そして、ハードウェアは、主記憶装置内のＬｖ１ディスクリプタアドレス１０５に格納されているレベル１テーブルディスクリプタ１０６を参照する。
【００２１】
次に、ハードウェアは、レベル１テーブルディスクリプタ１０６内のレベル２テーブルアドレス（Level2 Table Address）にLv2-indexを付加して、Ｌｖ２ディスクリプタアドレス１０７を生成する。そして、ハードウェアは、主記憶装置内のＬｖ２ディスクリプタアドレス１０７に格納されているレベル２テーブルディスクリプタ１０８を参照する。
【００２２】
次に、ハードウェアは、レベル２テーブルディスクリプタ１０８内のレベル３テーブルアドレス（Level3 Table Address）にLv3-indexを付加して、Ｌｖ３ディスクリプタアドレス１０９を生成する。そして、ハードウェアは、主記憶装置内のＬｖ３ディスクリプタアドレス１０９に格納されているレベル３ページディスクリプタ１１０を参照する。
【００２３】
そして、ハードウェアは、レベル３ページディスクリプタ１１０内の出力アドレス（Output Address）にoffsetを付加して、アクセス対象データの物理アドレス（ＰＡ）１１１を生成する。
【００２４】
この場合、主記憶装置内のページテーブルを参照する動作が４回発生するため、参照の度に主記憶装置からページテーブルエントリを取得すると、ページテーブルウォークの実行時間が長くなる。
【００２５】
そこで、Ｌ１キャッシュにページテーブルエントリをキャッシュする方法が考えられる。Ｌ１キャッシュからページテーブルエントリを取得すれば、実行時間は短縮される。しかし、Ｌ１キャッシュはアドレス変換以外の用途にも使用されるため、ＴＬＢミスの発生頻度から考えると、次回のページテーブルウォークの実行時に、Ｌ１キャッシュにページテーブルエントリが残っている可能性は低い。したがって、Ｌ１キャッシュを利用した場合であっても、結果的に主記憶装置からページテーブルエントリを取得する可能性が高くなる。
【００２６】
特許文献１のＭＭＵでは、Ｌ１キャッシュとは別に、ページテーブルエントリをキャッシュするプリフェッチバッファが設けられ、ＴＬＢミスが発生した場合、プリフェッチバッファのエントリが参照される。この方法によれば、ファーストタッチのエントリのレイテンシ削減に効果があると考えられる。しかし、十分な効果を得るためにプリフェッチバッファのエントリ数を増加させると、ハードウェアの規模が増大する。
【００２７】
図２は、実施形態の演算処理装置の構成例を示している。図２の演算処理装置２０１は、要求生成部２１１、制御部２１２、変換バッファ２１３、及びページテーブルバッファ２１４を含む。
【００２８】
変換バッファ２１３は、ページの仮想アドレスと、そのページの物理アドレスとを対応付けて記憶する。ページテーブルバッファ２１４は、ラストレベル以外のレベルのページテーブル内のデータと、そのデータの物理アドレスとを対応付けて記憶する。
【００２９】
図３は、図２の演算処理装置２０１の制御方法の例を示すフローチャートである。まず、要求生成部２１１は、要求アドレスを含む情報要求を生成する（ステップ３０１）。制御部２１２は、変換バッファ２１３が要求アドレスに対応する仮想アドレスを記憶していない場合、要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求める（ステップ３０２）。
【００３０】
アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、制御部２１２は、ページテーブルバッファ２１４からアクセス対象ページテーブル内のデータを検索する（ステップ３０３）。
【００３１】
一方、アクセス対象ページテーブルがラストレベルのページテーブルである場合、制御部２１２は、アクセス対象ページテーブル内のデータをメモリから取得する（ステップ３０４）。そして、制御部２１２は、取得したデータが示すページの仮想アドレス及び物理アドレスを変換バッファ２１３に登録する（ステップ３０５）。
【００３２】
図２の演算処理装置２０１によれば、演算処理装置２０１がアドレス変換に用いるページテーブルの情報を保持するためのハードウェアを削減することができる。
【００３３】
図４は、図２の演算処理装置２０１を含む情報処理装置（コンピュータ）の構成例を示している。図４の情報処理装置４０１は、ＣＰＵ４１１（プロセッサ）、Ｌ２キャッシュ４１２、及び主記憶装置４１３（メインメモリ）を含む。ＣＰＵ４１１は、図２の演算処理装置２０１に対応し、命令制御部４２１、演算部４２２、及びＬ１キャッシュ４２３を含む。
【００３４】
主記憶装置４１３は、例えば、ＲＡＭ（Random Access Memory）等の半導体メモリであり、ＣＰＵ４１１が使用する情報を記憶する。主記憶装置４１３が記憶する情報は、ＣＰＵ４１１が実行するプログラムに含まれる命令であってもよく、ＣＰＵ４１１が命令に基づいて処理するデータであってもよい。
【００３５】
Ｌ１キャッシュ４２３は、ＣＰＵ４１１内のキャッシュメモリ回路であり、Ｌ２キャッシュ４１２は、Ｌ１キャッシュ４２３よりも下位のキャッシュメモリ回路である。Ｌ１キャッシュ４２３及びＬ２キャッシュ４１２は、主記憶装置４１３から読み出された情報を一時的に記憶する。
【００３６】
命令制御部４２１は、図２の要求生成部２１１に対応し、Ｌ１キャッシュ４２３に対する要求Ｓ００１を発行する。要求Ｓ００１は、例えば、主記憶装置４１３が記憶している命令又はデータを要求する情報要求である。
【００３７】
命令制御部４２１は、主記憶装置４１３が記憶しているアクセス対象データを要求する場合、要求Ｓ００１としてデータ要求をＬ１キャッシュ４２３へ出力する。Ｌ１キャッシュ４２３がアクセス対象データを記憶している場合、Ｌ１キャッシュ４２３は、そのアクセス対象データをデータＳ００４として演算部４２２へ出力する。
【００３８】
一方、Ｌ１キャッシュ４２３がアクセス対象データを記憶していない場合、Ｌ１キャッシュ４２３は、データ要求Ｓ００２をＬ２キャッシュ４１２へ出力する。Ｌ２キャッシュ４１２がアクセス対象データを記憶している場合、Ｌ２キャッシュ４１２は、そのアクセス対象データをデータＳ００５としてＬ１キャッシュ４２３へ出力する。そして、Ｌ１キャッシュ４２３は、データＳ００５をデータＳ００４として演算部４２２へ出力する。
【００３９】
一方、Ｌ２キャッシュ４１２がアクセス対象データを記憶していない場合、Ｌ２キャッシュ４１２は、データ要求Ｓ００３を主記憶装置４１３へ出力する。主記憶装置４１３は、アクセス対象データをデータＳ００６としてＬ２キャッシュ４１２へ出力する。そして、Ｌ２キャッシュ４１２は、データＳ００６をデータＳ００５としてＬ１キャッシュ４２３へ出力し、Ｌ１キャッシュ４２３は、データＳ００５をデータＳ００４として演算部４２２へ出力する。演算部４２２は、データＳ００４を用いて演算を行う。
【００４０】
図５は、図４のＬ１キャッシュ４２３の構成例を示している。図５のＬ１キャッシュ４２３は、Ｌ１データキャッシュであり、キャッシュメモリ５０１、テーブルウォーク制御部５０２、ページテーブルバッファ５０３、及びＴＬＢ５０４を含む。テーブルウォーク制御部５０２、ページテーブルバッファ５０３、及びＴＬＢ５０４は、図２の制御部２１２、ページテーブルバッファ２１４、及び変換バッファ２１３にそれぞれ対応する。
【００４１】
ＴＬＢ５０４は、ページのＶＡとそのページのＰＡとを対応付けて記憶する。ページテーブルバッファ５０３は、ラストレベル以外のレベルのページテーブル内のデータと、そのデータのＰＡとを対応付けて記憶する。ページテーブル内のデータは、ページテーブルエントリと呼ばれることもある。
【００４２】
命令制御部４２１から出力される要求Ｓ００１がデータ要求である場合、要求Ｓ００１は、アクセス対象データのＶＡを要求アドレスとして含む。キャッシュメモリ５０１は、その要求Ｓ００１を受け取り、変換要求Ｓ０１２をＴＬＢ５０４へ出力する。
【００４３】
以下では、ＴＬＢ５０４が要求アドレスに対応するページのＶＡを記憶している場合、要求アドレスがＴＬＢ５０４にヒットすると記載することがあり、ＴＬＢ５０４がそのページのＶＡを記憶していない場合、ＴＬＢミスが発生すると記載することがある。
【００４４】
要求アドレスがＴＬＢ５０４にヒットした場合、ＴＬＢ５０４は、要求アドレスに対応するＰＡを変換結果Ｓ０１３としてキャッシュメモリ５０１へ出力し、キャッシュメモリ５０１は、変換結果Ｓ０１３に対応するデータＳ００４を演算部４２２へ出力する。
【００４５】
一方、ＴＬＢミスが発生した場合、ＴＬＢ５０４は、制御信号Ｓ０１６及びアドレス信号Ｓ０２１を含むテーブルウォーク要求を、テーブルウォーク制御部５０２へ出力する。制御信号Ｓ０１６は、テーブルウォーク要求を示し、アドレス信号Ｓ０２１は、要求アドレスを示す。
【００４６】
テーブルウォーク制御部５０２は、テーブルウォーク要求に応答してページテーブルウォークを実行し、要求アドレスのアドレス変換を行う。まず、テーブルウォーク制御部５０２は、要求アドレスからアクセス対象ページテーブル内のデータのＰＡを求める。そして、テーブルウォーク制御部５０２は、制御信号Ｓ００９及びアドレス信号Ｓ０１９を含むページテーブル要求を、ページテーブルバッファ５０３へ出力することで、ページテーブルバッファ５０３を検索する。制御信号Ｓ００９は、ページテーブル要求を示し、アドレス信号Ｓ０１９は、アクセス対象ページテーブル内のデータのＰＡを示す。
【００４７】
ページテーブルバッファ５０３がアクセス対象ページテーブル内のデータのＰＡを記憶している場合、ページテーブルバッファ５０３は、制御信号Ｓ０１０及びデータ信号Ｓ０２５を含むページテーブル情報を、テーブルウォーク制御部５０２へ出力する。制御信号Ｓ０１０は、ページテーブル転送を示し、データ信号Ｓ０２５は、アクセス対象ページテーブル内のデータを示す。
【００４８】
そして、テーブルウォーク制御部５０２は、アクセス対象ページテーブル内のデータに基づいて、ページテーブルウォークを続行する。このように、ページテーブルバッファ５０３を設けることで、テーブルウォーク制御部５０２は、キャッシュメモリ５０１に依存することなく、アクセス対象ページテーブルを迅速に参照することができる。
【００４９】
一方、ページテーブルバッファ５０３がアクセス対象ページテーブル内のデータのＰＡを記憶していない場合、ページテーブルバッファ５０３は、ミス信号Ｓ０２６をテーブルウォーク制御部５０２へ出力する。そして、テーブルウォーク制御部５０２は、制御信号Ｓ００７及びアドレス信号Ｓ０１８を含むページテーブル要求を、キャッシュメモリ５０１へ出力する。制御信号Ｓ００７は、ページテーブル要求を示し、アドレス信号Ｓ０１８は、アクセス対象ページテーブル内のデータのＰＡを示す。
【００５０】
キャッシュメモリ５０１がアクセス対象ページテーブル内のデータを記憶している場合、キャッシュメモリ５０１は、制御信号Ｓ００８及びデータ信号Ｓ０２０を含むページテーブル情報を、テーブルウォーク制御部５０２へ出力する。制御信号Ｓ００８は、ページテーブル転送を示し、データ信号Ｓ０２０は、アクセス対象ページテーブル内のデータを示す。
【００５１】
一方、キャッシュメモリ５０１がアクセス対象ページテーブル内のデータを記憶していない場合、Ｌ１キャッシュ４２３は、Ｌ２キャッシュ４１２に対してそのデータを要求し、Ｌ２キャッシュ４１２からアクセス対象ページテーブル内のデータを取得する。Ｌ２キャッシュ４１２がアクセス対象ページテーブル内のデータを記憶していない場合、Ｌ２キャッシュ４１２は、主記憶装置４１３に対してそのデータを要求し、主記憶装置４１３からアクセス対象ページテーブル内のデータを取得する。
【００５２】
キャッシュメモリ５０１は、Ｌ１キャッシュ４２３から取得したデータのページテーブル情報を、テーブルウォーク制御部５０２へ出力する。この場合、テーブルウォーク制御部５０２は、制御信号Ｓ０１１、アドレス信号Ｓ０１９、及びデータ信号Ｓ０２４を含む登録情報を、ページテーブルバッファ５０３へ出力する。これにより、アクセス対象ページテーブル内のデータがページテーブルバッファ５０３に登録される。制御信号Ｓ０１１は、ページテーブル登録を示し、アドレス信号Ｓ０１９は、アクセス対象ページテーブル内のデータのＰＡを示し、データ信号Ｓ０２４は、アクセス対象ページテーブル内のデータを示す。
【００５３】
ところで、多段ページテーブルに含まれる複数のレベルのページテーブルのうち、ラストレベルのテーブルの個数は他のレベルのテーブルの個数よりも多くなる傾向がある。そこで、アクセス対象ページテーブルがラストレベルのテーブルである場合、テーブルウォーク制御部５０２は、ページテーブルバッファ５０３に対するアクセス対象ページテーブル内のデータの登録を抑止する。これにより、ページテーブルバッファ５０３のエントリ数が大幅に削減され、ページテーブルバッファ５０３のハードウェアの規模が小さくなる。
【００５４】
ページテーブルウォークが終了すると、テーブルウォーク制御部５０２は、制御信号Ｓ０１７、アドレス信号Ｓ０２７、及びアドレス信号Ｓ０２２を含む登録情報を、ＴＬＢ５０４へ出力する。これにより、アクセス対象データを含むページのＶＡ及びＰＡがＴＬＢ５０４に登録される。制御信号Ｓ０１７は、アドレス登録を示し、アドレス信号Ｓ０２７は、アクセス対象データを含むページのＶＡを示し、アドレス信号Ｓ０２２は、そのページのＰＡを示す。
【００５５】
その後、Ｌ１キャッシュ４２３は、要求Ｓ００１に対する処理を再開し、要求アドレスがＴＬＢ５０４にヒットする。そこで、ＴＬＢ５０４は、要求アドレスに対応するＰＡを変換結果Ｓ０１３としてキャッシュメモリ５０１へ出力し、キャッシュメモリ５０１は、変換結果Ｓ０１３に対応するデータＳ００４を演算部４２２へ出力する。
【００５６】
ＣＰＵ４１１が主記憶装置４１３内のページテーブルを書き換えた場合、ＴＬＢ５０４内のＶＡ及びＰＡの変換対と、主記憶装置４１３内のページテーブルとの不一致を解消するために、ＣＰＵ４１１は、ＴＬＢメンテナンス命令を実行する。これにより、命令制御部４２１は、ＴＬＢメンテナンス要求を要求Ｓ００１としてＬ１キャッシュ４２３へ出力する。
【００５７】
キャッシュメモリ５０１は、ＴＬＢメンテナンス要求を受け取ると、メンテナンス信号Ｓ０１４をＴＬＢ５０４へ出力する。ＴＬＢ５０４は、メンテナンス信号Ｓ０１４を受け取ると、ＴＬＢ５０４内の変換対を無効化するとともに、全消去信号Ｓ０１５をページテーブルバッファ５０３へ出力する。ページテーブルバッファ５０３は、全消去信号Ｓ０１５を受け取ると、ページテーブルバッファ５０３内のエントリを無効化する。これにより、書き換えられたページテーブルと一致していない、古いページテーブル内のデータの使用が禁止される。
【００５８】
ＴＬＢ５０４からページテーブルバッファ５０３へ全消去信号Ｓ０１５を出力することで、ＴＬＢ５０４の無効化と連動して、ページテーブルバッファ５０３を無効化することが可能になる。
【００５９】
図６は、図５のテーブルウォーク制御部５０２の構成例を示している。図６のテーブルウォーク制御部５０２は、制御回路６０１、ＶＡレジスタ６０２、ベースレジスタ６０３、ページテーブルレジスタ６０４、アドレス計算回路６０５、出力アドレスレジスタ６０６、及びセレクタ６０７を含む。ベースレジスタ６０３は、図１のベースレジスタ１０２に対応し、ＴＴＢＡを記憶する。
【００６０】
ＴＬＢ５０４がテーブルウォーク要求を出力した場合、制御信号Ｓ０１６が制御回路６０１に入力され、アドレス信号Ｓ０２１が示す要求アドレスがＶＡレジスタ６０２に格納される。この例では、図１のＶＡ１０１がＶＡレジスタ６０２に格納されている。まず、制御回路６０１は、レベル０のページテーブルをフェッチする状態（Lv0-State）に遷移する。
【００６１】
Lv0-Stateにおいて、制御回路６０１は、レベル０のページテーブル内のデータのＰＡを計算するように、アドレス計算回路６０５に指示する。アドレス計算回路６０５は、図１に示したように、ベースレジスタ６０３に格納されているＴＴＢＡに、ＶＡレジスタ６０２に格納されているLv0-indexを付加して、レベル０のページテーブル内のデータのＰＡを求める。そして、アドレス計算回路６０５は、求めたＰＡを出力アドレスレジスタ６０６に格納し、出力アドレスレジスタ６０６は、格納されたＰＡを示すアドレス信号Ｓ０１９をページテーブルバッファ５０３へ出力する。
【００６２】
アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶している場合、論理“１”の制御信号Ｓ０１０が制御回路６０１及びセレクタ６０７に入力され、データ信号Ｓ０２５がセレクタ６０７に入力される。セレクタ６０７は、制御信号Ｓ０１０が論理“１”であるとき、データ信号Ｓ０２５を選択してページテーブルレジスタ６０４へ出力する。これにより、データ信号Ｓ０２５が示すレベル０のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。
【００６３】
一方、アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶していない場合、ミス信号Ｓ０２６が制御回路６０１に入力される。そこで、制御回路６０１は、制御信号Ｓ００７をキャッシュメモリ５０１へ出力し、出力アドレスレジスタ６０６は、ＰＡを示すアドレス信号Ｓ０１８をキャッシュメモリ５０１へ出力する。
【００６４】
その後、キャッシュメモリ５０１から、論理“１”の制御信号Ｓ００８が制御回路６０１及びセレクタ６０７に入力され、データ信号Ｓ０２０がセレクタ６０７に入力される。セレクタ６０７は、制御信号Ｓ００８が論理“１”であるとき、データ信号Ｓ０２０を選択してページテーブルレジスタ６０４へ出力する。これにより、データ信号Ｓ０２０が示すレベル０のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。
【００６５】
キャッシュメモリ５０１からレベル０のページテーブル内のデータを取得した場合、制御回路６０１は、制御信号Ｓ０１１をページテーブルバッファ５０３へ出力する。また、出力アドレスレジスタ６０６は、ＰＡを示すアドレス信号Ｓ０１９をページテーブルバッファ５０３へ出力し、レベル０のページテーブル内のデータを示すデータ信号Ｓ０２４をページテーブルバッファ５０３へ出力する。これにより、レベル０のページテーブル内のデータが、ページテーブルバッファ５０３に登録される。
【００６６】
制御回路６０１は、論理“１”の制御信号Ｓ０１０又は論理“１”の制御信号Ｓ００８を受け取った場合、レベル１のページテーブルをフェッチする状態（Lv1-State）に遷移する。
【００６７】
Lv1-Stateにおいて、制御回路６０１は、レベル１のページテーブル内のデータのＰＡを計算するように、アドレス計算回路６０５に指示する。図１に示したように、ページテーブルレジスタ６０４に格納されている、レベル０のページテーブル内のデータには、レベル１テーブルアドレスが含まれている。
【００６８】
そこで、アドレス計算回路６０５は、そのレベル１テーブルアドレスに、ＶＡレジスタ６０２に格納されているLv1-indexを付加して、レベル１のページテーブル内のデータのＰＡを求める。そして、アドレス計算回路６０５は、求めたＰＡを出力アドレスレジスタ６０６に格納し、出力アドレスレジスタ６０６は、格納されたＰＡを示すアドレス信号Ｓ０１９をページテーブルバッファ５０３へ出力する。
【００６９】
アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶している場合、Lv0-Stateと同様にして、ページテーブルバッファ５０３から出力されるレベル１のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。
【００７０】
一方、アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶していない場合、Lv0-Stateと同様にして、キャッシュメモリ５０１から出力されるレベル１のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。この場合、Lv0-Stateと同様にして、レベル１のページテーブル内のデータが、ページテーブルバッファ５０３に登録される。
【００７１】
その後、制御回路６０１は、レベル２のページテーブルをフェッチする状態（Lv2-State）に遷移する。
【００７２】
Lv2-Stateにおいて、制御回路６０１は、レベル２のページテーブル内のデータのＰＡを計算するように、アドレス計算回路６０５に指示する。図１に示したように、ページテーブルレジスタ６０４に格納されている、レベル１のページテーブル内のデータには、レベル２テーブルアドレスが含まれている。
【００７３】
そこで、アドレス計算回路６０５は、そのレベル２テーブルアドレスに、ＶＡレジスタ６０２に格納されているLv2-indexを付加して、レベル２のページテーブル内のデータのＰＡを求める。そして、アドレス計算回路６０５は、求めたＰＡを出力アドレスレジスタ６０６に格納し、出力アドレスレジスタ６０６は、格納されたＰＡを示すアドレス信号Ｓ０１９をページテーブルバッファ５０３へ出力する。
【００７４】
アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶している場合、Lv0-Stateと同様にして、ページテーブルバッファ５０３から出力されるレベル２のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。
【００７５】
一方、アドレス信号Ｓ０１９が示すＰＡをページテーブルバッファ５０３が記憶していない場合、Lv0-Stateと同様にして、キャッシュメモリ５０１から出力されるレベル２のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。この場合、Lv0-Stateと同様にして、レベル２のページテーブル内のデータが、ページテーブルバッファ５０３に登録される。
【００７６】
その後、制御回路６０１は、レベル３のページテーブルをフェッチする状態（Lv3-State）に遷移する。
【００７７】
Lv3-Stateにおいて、制御回路６０１は、レベル３のページテーブル内のデータのＰＡを計算するように、アドレス計算回路６０５に指示する。図１に示したように、ページテーブルレジスタ６０４に格納されている、レベル２のページテーブル内のデータには、レベル３テーブルアドレスが含まれている。
【００７８】
そこで、アドレス計算回路６０５は、そのレベル３テーブルアドレスに、ＶＡレジスタ６０２に格納されているLv3-indexを付加して、レベル３のページテーブル内のデータのＰＡを求める。そして、アドレス計算回路６０５は、求めたＰＡを出力アドレスレジスタ６０６に格納する。
【００７９】
レベル３はラストレベルであるため、制御回路６０１は、制御信号Ｓ００７をキャッシュメモリ５０１へ出力し、出力アドレスレジスタ６０６は、ＰＡを示すアドレス信号Ｓ０１８をキャッシュメモリ５０１へ出力する。その後、Lv0-Stateと同様にして、キャッシュメモリ５０１から出力されるレベル３のページテーブル内のデータが、ページテーブルレジスタ６０４に格納される。図１に示したように、レベル３のページテーブル内のデータには出力アドレスが含まれている。
【００８０】
そこで、アドレス計算回路６０５は、その出力アドレスに、ＶＡレジスタ６０２に格納されているoffsetを付加して、アクセス対象データのＰＡを求め、求めたＰＡを出力アドレスレジスタ６０６に格納する。そして、制御回路６０１は、制御信号Ｓ０１７をＴＬＢ５０４へ出力する。ＶＡレジスタ６０２は、Lv3-indexを示すアドレス信号Ｓ０２７をＴＬＢ５０４へ出力し、出力アドレスレジスタ６０６は、レベル３のページテーブル内の出力アドレスを示すアドレス信号Ｓ０２２を、ＴＬＢ５０４へ出力する。これにより、アクセス対象データを含むページのＶＡ及びＰＡが、ＴＬＢ５０４に登録される。
【００８１】
図７は、図５のページテーブルバッファ５０３の構成例を示している。図７のページテーブルバッファ５０３は、エントリＥ１〜エントリＥＮのＮ個（Ｎは１以上の整数）のエントリ、制御キュー７０１、セレクタ７０２、及び否定論理和回路７０３を含む。
【００８２】
各エントリＥｉ（ｉ＝１〜Ｎ）は、有効ビットＶ、ＰＡ、及びページテーブルデータを含む。ページテーブルデータは、ページテーブル内のデータを表し、ＰＡは、ページテーブル内のデータのＰＡを表す。有効ビットＶは、エントリＥｉが有効であるか否かを表すフラグである。有効ビットＶが論理“１”であるとき、エントリＥｉは有効であり、有効ビットＶが論理“０”であるとき、エントリＥｉは無効である。
【００８３】
テーブルウォーク制御部５０２がページテーブルバッファ５０３を検索する際、ページテーブルバッファ５０３は、ページテーブル内のデータのＰＡを示すアドレス信号Ｓ０１９をテーブルウォーク制御部５０２から受け取る。そして、各エントリＥｉは、アドレス信号Ｓ０１９が示すＰＡと、エントリＥｉに含まれるＰＡとを比較し、比較結果を示すヒット信号Ｓ０２８を制御キュー７０１、セレクタ７０２、及び否定論理和回路７０３へ出力する。
【００８４】
アドレス信号Ｓ０１９が示すＰＡがエントリＥｉのＰＡと一致した場合、ヒット信号Ｓ０２８は論理“１”となり、アドレス信号Ｓ０１９が示すＰＡがエントリＥｉのＰＡと一致しない場合、ヒット信号Ｓ０２８は論理“０”となる。
【００８５】
各エントリＥｉは、ページテーブルデータを示すデータ信号Ｓ０３０を、セレクタ７０２へ出力する。セレクタ７０２は、エントリＥ１〜エントリＥＮから出力される制御信号Ｓ０２８に基づいて、論理“１”のヒット信号Ｓ０２８が示すエントリのデータ信号Ｓ０３０を選択し、データ信号Ｓ０２５として出力する。
【００８６】
否定論理和回路７０３は、エントリＥ１〜エントリＥＮから出力される制御信号Ｓ０２８の否定論理和をミス信号Ｓ０２６として出力する。したがって、アドレス信号Ｓ０１９が示すＰＡがいずれかのエントリのＰＡと一致した場合、ミス信号Ｓ０２６は論理“０”となり、アドレス信号Ｓ０１９が示すＰＡがいずれのエントリのＰＡとも一致しない場合、ミス信号Ｓ０２６は論理“１”となる。ミス信号Ｓ０２６が論理“１”である場合、テーブルウォーク制御部５０２は、制御信号Ｓ００７及びアドレス信号Ｓ０１８をキャッシュメモリ５０１へ出力する。
【００８７】
制御キュー７０１は、ヒット信号Ｓ０２８に基づいて、ページテーブルデータを登録するエントリを示す制御信号Ｓ０２９を生成し、制御信号Ｓ０２９を各エントリへ出力する。登録対象のエントリに対する制御信号Ｓ０２９は論理“１”となり、それ以外のエントリに対する制御信号Ｓ０２９は論理“０”となる。
【００８８】
テーブルウォーク制御部５０２がページテーブル内のデータをページテーブルバッファ５０３に登録する際、ページテーブルバッファ５０３は、制御信号Ｓ０１１、アドレス信号Ｓ０１９、及びデータ信号Ｓ０２４をテーブルウォーク制御部５０２から受け取る。そして、アドレス信号Ｓ０１９が示すＰＡとデータ信号Ｓ０２４が示すページテーブル内のデータとが、論理“１”の制御信号Ｓ０２９が示すエントリに格納され、そのエントリのデータが更新される。
【００８９】
図８は、図７のエントリＥｉの構成例を示している。図８のエントリＥｉは、バッファ８０１、バッファ８０２、論理積回路８１１〜論理積回路８１３、論理和回路８１４、比較回路８１５、及び論理積回路８１６を含む。バッファ８０１は、有効ビットＶを格納し、バッファ８０２は、ＰＡ及びページテーブルデータを格納する。
【００９０】
論理積回路８１１は、制御信号Ｓ０１１と制御信号Ｓ０２９との論理積を、論理積回路８１３及びバッファ８０２へ出力する。テーブルウォーク制御部５０２がページテーブル内のデータをページテーブルバッファ５０３に登録する場合、制御信号Ｓ０１１は論理“１”となり、それ以外の場合、制御信号Ｓ０１１は論理“０”となる。
【００９１】
論理積回路８１２は、全消去信号Ｓ０１５の否定と、バッファ８０１に格納された有効ビットＶとの論理積を、論理和回路８１４へ出力する。ＴＬＢ５０４がメンテナンス信号Ｓ０１４を受け取った場合、全消去信号Ｓ０１５は論理“１”となり、それ以外の場合、全消去信号Ｓ０１５は論理“０”となる。
【００９２】
論理積回路８１３は、全消去信号Ｓ０１５の否定と論理積回路８１１の出力との論理積を、論理和回路８１４へ出力する。論理和回路８１４は、論理積回路８１２の出力と論理積回路８１３の出力との論理和を、バッファ８０１へ出力し、バッファ８０１は、論理和回路８１４の出力を有効ビットＶとして保持する。
【００９３】
テーブルウォーク制御部５０２がページテーブルバッファ５０３を検索する場合、比較回路８１５は、アドレス信号Ｓ０１９が示すＰＡとバッファ８０２に格納されたＰＡとを比較し、比較結果を論理積回路８１６へ出力する。アドレス信号Ｓ０１９が示すＰＡがバッファ８０２内のＰＡと一致した場合、比較結果は論理“１”となり、アドレス信号Ｓ０１９が示すＰＡがバッファ８０２内のＰＡと一致しない場合、比較結果は論理“０”となる。
【００９４】
論理積回路８１６は、比較回路８１５が出力する比較結果と、バッファ８０１に格納された有効ビットＶとの論理積を、ヒット信号Ｓ０２８として出力し、バッファ８０２は、ページテーブルデータを示すデータ信号Ｓ０３０を出力する。したがって、エントリＥｉが有効であり、かつ、アドレス信号Ｓ０１９が示すＰＡがバッファ８０２内のＰＡと一致した場合に、ヒット信号Ｓ０２８が論理“１”となる。
【００９５】
テーブルウォーク制御部５０２がページテーブル内のデータをページテーブルバッファ５０３に登録する場合、制御信号Ｓ０１１は論理“１”となる。したがって、エントリＥｉに入力される制御信号Ｓ０２９が論理“１”である場合、論理積回路８１１の出力が論理“１”となる。これにより、アドレス信号Ｓ０１９が示すＰＡと、データ信号Ｓ０２４が示すページテーブル内のデータとが、バッファ８０２に書き込まれ、エントリＥｉのデータが更新される。そして、論理和回路８１４の出力が論理“１”となるため、バッファ８０１内の有効ビットＶが論理“１”に設定される。
【００９６】
論理“１”の全消去信号Ｓ０１５がページテーブルバッファ５０３に入力された場合、論理和回路８１４の出力が論理“０”となる。これにより、すべてのエントリの有効ビットＶが論理“０”に設定されるため、すべてのエントリが無効化される。
【００９７】
図９は、図７の制御キュー７０１の構成例を示している。制御キュー７０１は、エントリＥ１〜エントリＥＮの識別情報であるエントリＩＤを、ＬＲＵ（Least Recently Used）アルゴリズムに従って、各エントリが使用された順序で格納することで、それらのエントリの使用順序を記憶する。この例ではＮ＝８である。
【００９８】
制御キュー７０１内の位置ｎｅｗには、最近使用されたエントリのエントリＩＤが格納されており、位置ｏｌｄには、最近最も使用されていないエントリのエントリＩＤが格納されている。制御キュー７０１は、位置ｏｌｄのエントリＩＤが示すエントリに対して、論理“１”の制御信号Ｓ０２９を出力し、それ以外の位置のエントリＩＤが示すエントリに対して、論理“０”の制御信号Ｓ０２９を出力する。
【００９９】
例えば、状態ＳＴ１では、位置ｏｌｄのエントリＥ５に対する制御信号Ｓ０２９が論理“１”となり、それ以外のエントリに対する制御信号Ｓ０２９は論理“０”となる。状態ＳＴ１において、エントリＥ３に対するヒット信号Ｓ０２８が論理“１”となった場合、矢印９０１が示すように、エントリＥ３のエントリＩＤが位置ｎｅｗに移動する。そして、エントリＥ８、エントリＥ２、エントリＥ６、エントリＥ４、及びエントリＥ１のエントリＩＤが位置ｏｌｄへ向かって順にシフトし、制御キュー７０１は状態ＳＴ２のように変化する。
【０１００】
しかし、位置ｏｌｄのエントリＩＤは変化しないため、状態ＳＴ１と同様に、エントリＥ５に対する制御信号Ｓ０２９が論理“１”となり、それ以外のエントリに対する制御信号Ｓ０２９は論理“０”となる。状態ＳＴ２において、論理“１”の制御信号Ｓ０２９が示すエントリＥ５に新たなページテーブルデータが登録された場合、矢印９０２が示すように、エントリＥ５のエントリＩＤが位置ｎｅｗに移動する。そして、それ以外のエントリのエントリＩＤが位置ｏｌｄへ向かって順にシフトし、制御キュー７０１は状態ＳＴ３のように変化する。
【０１０１】
状態ＳＴ３では、位置ｏｌｄのエントリＥ７に対する制御信号Ｓ０２９が論理“１”となり、それ以外のエントリに対する制御信号Ｓ０２９は論理“０”となる。
【０１０２】
このように、制御キュー７０１を設けて、ページテーブルデータを登録するエントリをＬＲＵアルゴリズムに従って決定することで、ページテーブルバッファ５０３のエントリを有効に利用することができる。したがって、ページテーブルバッファ５０３のハードウェアの規模が小さくなる。
【０１０３】
図１０は、図６のテーブルウォーク制御部５０２がＴＬＢ５０４からテーブルウォーク要求を受け取った場合に行う動作の例を示すフローチャートである。まず、アドレス計算回路６０５は、制御回路６０１からの指示に従って、アクセス対象データのＶＡを用いて、アクセス対象ページテーブル内のデータのＰＡを計算する（ステップ１００１）。そして、制御回路６０１は、アクセス対象ページテーブルがラストレベルのページテーブルであるか否かをチェックする（ステップ１００２）。
【０１０４】
アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合（ステップ１００２，ＮＯ）、制御回路６０１は、ページテーブルバッファ５０３からアクセス対象ページテーブル内のデータを検索する（ステップ１００３）。そして、制御回路６０１は、アクセス対象ページテーブル内のデータのＰＡがページテーブルバッファ５０３にヒットしたか否かをチェックする（ステップ１００４）。
【０１０５】
ページテーブルバッファ５０３から論理“１”の制御信号Ｓ０１０を受け取った場合、アクセス対象ページテーブル内のデータのＰＡがページテーブルバッファ５０３にヒットしたと判定される。一方、ページテーブルバッファ５０３から論理“１”のミス信号Ｓ０２６を受け取った場合、アクセス対象ページテーブル内のデータのＰＡがページテーブルバッファ５０３にヒットしなかったと判定される。
【０１０６】
アクセス対象ページテーブル内のデータのＰＡがページテーブルバッファ５０３にヒットした場合（ステップ１００４，ＹＥＳ）、テーブルウォーク制御部５０２は、ページテーブルバッファ５０３からアクセス対象ページテーブル内のデータを取得する。そして、テーブルウォーク制御部５０２は、次のレベルのページテーブルをアクセス対象ページテーブルとして、ステップ１００１以降の動作を繰り返す。
【０１０７】
一方、アクセス対象ページテーブル内のデータのＰＡがページテーブルバッファ５０３にヒットしなかった場合（ステップ１００４，ＮＯ）、制御回路６０１は、キャッシュメモリ５０１に対してそのデータを要求する（ステップ１００５）。そして、テーブルウォーク制御部５０２は、キャッシュメモリ５０１からアクセス対象ページテーブル内のデータを取得する。
【０１０８】
次に、制御回路６０１は、取得したデータをページテーブルバッファ５０３に登録し（ステップ１００６）、次のレベルのページテーブルをアクセス対象ページテーブルとして、ステップ１００１以降の動作を繰り返す。
【０１０９】
アクセス対象ページテーブルがラストレベルのページテーブルである場合（ステップ１００２，ＹＥＳ）、制御回路６０１は、キャッシュメモリ５０１に対してアクセス対象ページテーブル内のデータを要求する（ステップ１００７）。そして、テーブルウォーク制御部５０２は、キャッシュメモリ５０１からアクセス対象ページテーブル内のデータを取得する。
【０１１０】
次に、アドレス計算回路６０５は、制御回路６０１からの指示に従って、アクセス対象データのＶＡと、取得したデータに含まれる出力アドレスとを用いて、アクセス対象データのＰＡを計算する（ステップ１００８）。そして、制御回路６０１は、アクセス対象データを含むページのＶＡ及びＰＡをＴＬＢ５０４に登録する（ステップ１００９）。
【０１１１】
図１のページテーブルウォークは一例に過ぎず、多段ページテーブルのレベル数、アクセス対象データのＶＡ等は、情報処理装置の構成及び条件に応じて変化する。
【０１１２】
図２の演算処理装置２０１の構成は一例に過ぎず、演算処理装置２０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０１１３】
図４の情報処理装置４０１の構成は一例に過ぎず、情報処理装置４０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ＣＰＵ４１１が主記憶装置４１３から情報を直接取得する場合は、Ｌ２キャッシュ４１２を省略してもよい。
【０１１４】
情報処理装置４０１は、ハードディスクドライブ等の補助記憶装置、キーボード、ポインティングデバイス等の入力装置、又は表示装置等の出力装置を含んでいてもよい。さらに、情報処理装置４０１は、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）ドライブ等の媒体駆動装置、又はネットワークインタフェースカード等の通信装置を含んでいてもよい。
【０１１５】
図５のＬ１キャッシュ４２３の構成は一例に過ぎず、情報処理装置４０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ＣＰＵ４１１が主記憶装置４１３から情報を直接取得する場合は、キャッシュメモリ５０１を省略してもよい。キャッシュメモリ５０１及びＬ２キャッシュ４１２を省略した場合、テーブルウォーク制御部５０２は、主記憶装置４１３に対してアクセス対象ページテーブル内のデータを要求し、主記憶装置４１３からそのデータを取得する。
【０１１６】
Ｌ１キャッシュ４２３は、Ｌ１命令キャッシュであってもよい。Ｌ１キャッシュ４２３がＬ１命令キャッシュである場合、要求Ｓ００１は命令を要求する情報要求であり、アクセス対象命令のＶＡを要求アドレスとして含む。この場合、キャッシュメモリ５０１は、データＳ００４の代わりにアクセス対象命令を出力する。
【０１１７】
図６のテーブルウォーク制御部５０２、図７のページテーブルバッファ５０３、図８のエントリ、及び図９の制御キュー７０１の構成は一例に過ぎず、情報処理装置４０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０１１８】
図３及び図１０のフローチャートは一例に過ぎず、演算処理装置２０１又は情報処理装置４０１の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、キャッシュメモリ５０１及びＬ２キャッシュ４１２を省略した場合、図１０のステップ１００５及びステップ１００７において、制御回路６０１は、主記憶装置４１３に対してアクセス対象ページテーブル内のデータを要求する。
【０１１９】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１２０】
図１乃至図１０を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
要求アドレスを含む情報要求を生成する要求生成部と、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファと、
ラストレベル以外のレベルのページテーブル内のデータと前記ページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファと、
前記変換バッファが前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、前記ページテーブルバッファから前記アクセス対象ページテーブル内のデータを検索し、前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータをメモリから取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する制御部と、
を備えることを特徴とする演算処理装置。
（付記２）
前記ページテーブルバッファは、複数のエントリと制御キューとを含み、
前記複数のエントリ各々は、ページテーブル内のデータと、ページテーブル内のデータの物理アドレスとを含み、
前記制御部は、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルであり、かつ、前記ページテーブルバッファが前記アクセス対象ページテーブル内のデータの物理アドレスを記憶していない場合、前記アクセス対象ページテーブル内のデータを前記メモリから取得して前記ページテーブルバッファへ出力し、
前記制御キューは、前記複数のエントリの使用順序を記憶し、前記複数のエントリのうち最近最も使用されていないエントリを示す制御信号を出力し、
前記ページテーブルバッファは、前記アクセス対象ページテーブル内のデータと前記アクセス対象ページテーブル内のデータの物理アドレスとを、前記制御信号が示すエントリに登録することを特徴とする付記１記載の演算処理装置。
（付記３）
前記変換バッファは、前記変換バッファ内の仮想アドレス及び物理アドレスが無効化された場合、消去信号を前記ページテーブルバッファへ出力し、
前記ページテーブルバッファは、前記消去信号に応じて、前記ページテーブルバッファ内のエントリを無効化することを特徴とする付記２記載の演算処理装置。
（付記４）
前記メモリは、キャッシュメモリ又は主記憶装置であることを特徴とする付記１乃至３のいずれか１項に記載の演算処理装置。
（付記５）
情報とページテーブルとを記憶する主記憶装置と、
要求アドレスを含む情報要求を生成する要求生成部と、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファと、
ラストレベル以外のレベルのページテーブル内のデータと、前記ラストレベル以外のレベルのページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファと、
前記変換バッファが前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、前記ページテーブルバッファから前記アクセス対象ページテーブル内のデータを検索し、前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータを前記主記憶装置から取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する制御部と、
を備えることを特徴とする情報処理装置。
（付記６）
前記ページテーブルバッファは、複数のエントリと制御キューとを含み、
前記複数のエントリ各々は、ページテーブル内のデータと、ページテーブル内のデータの物理アドレスとを含み、
前記制御部は、前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルであり、かつ、前記ページテーブルバッファが前記アクセス対象ページテーブル内のデータの物理アドレスを記憶していない場合、前記アクセス対象ページテーブル内のデータを前記主記憶装置から取得して前記ページテーブルバッファへ出力し、
前記制御キューは、前記複数のエントリの使用順序を記憶し、前記複数のエントリのうち最近最も使用されていないエントリを示す制御信号を出力し、
前記ページテーブルバッファは、前記アクセス対象ページテーブル内のデータと前記アクセス対象ページテーブル内のデータの物理アドレスとを、前記制御信号が示すエントリに登録することを特徴とする付記５記載の情報処理装置。
（付記７）
前記変換バッファは、前記変換バッファ内の仮想アドレス及び物理アドレスが無効化された場合、消去信号を前記ページテーブルバッファへ出力し、
前記ページテーブルバッファは、前記消去信号に応じて、前記ページテーブルバッファ内のエントリを無効化することを特徴とする付記６記載の情報処理装置。
（付記８）
要求アドレスを含む情報要求を生成し、
ページの仮想アドレスと前記ページの物理アドレスとを対応付けて記憶する変換バッファが、前記要求アドレスに対応する仮想アドレスを記憶していない場合、前記要求アドレスからアクセス対象ページテーブル内のデータの物理アドレスを求め、
前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルである場合、ラストレベル以外のレベルのページテーブル内のデータとラストレベル以外のレベルのページテーブル内のデータの物理アドレスとを対応付けて記憶するページテーブルバッファから、前記アクセス対象ページテーブル内のデータを検索し、
前記アクセス対象ページテーブルがラストレベルのページテーブルである場合、前記アクセス対象ページテーブル内のデータをメモリから取得して、取得したデータが示すページの仮想アドレス及び物理アドレスを前記変換バッファに登録する、
ことを特徴とする演算処理装置の制御方法。
（付記９）
前記アクセス対象ページテーブルがラストレベル以外のレベルのページテーブルであり、かつ、前記ページテーブルバッファが前記アクセス対象ページテーブル内のデータの物理アドレスを記憶していない場合、前記アクセス対象ページテーブル内のデータを前記メモリから取得して前記ページテーブルバッファへ出力し、
前記ページテーブルバッファ内の複数のエントリの使用順序を記憶する制御キューから出力される制御信号が示す、最近最も使用されていないエントリに、前記アクセス対象ページテーブル内のデータと前記アクセス対象ページテーブル内のデータの物理アドレスとを登録することを特徴とする付記８記載の演算処理装置の制御方法。
（付記１０）
前記変換バッファ内の仮想アドレス及び物理アドレスが無効化された場合、前記変換バッファから前記ページテーブルバッファへ消去信号を出力し、
前記消去信号に応じて、前記ページテーブルバッファ内のエントリを無効化することを特徴とする付記９記載の演算処理装置の制御方法。
（付記１１）
前記メモリは、キャッシュメモリ又は主記憶装置であることを特徴とする付記８乃至１０のいずれか１項に記載の演算処理装置の制御方法。
【符号の説明】
【０１２１】
１０１  ＶＡ
１０２  ベースレジスタ
１０３  Ｌｖ０ディスクリプタアドレス
１０４  レベル０テーブルディスクリプタ
１０５  Ｌｖ１ディスクリプタアドレス
１０６  レベル１テーブルディスクリプタ
１０７  Ｌｖ２ディスクリプタアドレス
１０８  レベル２テーブルディスクリプタ
１０９  Ｌｖ３ディスクリプタアドレス
１１０  レベル３ページディスクリプタ
１１１  ＰＡ
２０１  演算処理装置
２１１  要求生成部
２１２  制御部
２１３  変換バッファ
２１４、５０３  ページテーブルバッファ
４０１  情報処理装置
４１１  ＣＰＵ
４１２  Ｌ２キャッシュ
４１３  主記憶装置
４２１  命令制御部
４２２  演算部
４２３  Ｌ１キャッシュ
５０１  キャッシュメモリ
５０２  テーブルウォーク制御部
５０４  ＴＬＢ
６０１  制御回路
６０２  ＶＡレジスタ
６０３  ベースレジスタ
６０４  ページテーブルレジスタ
６０５  アドレス計算回路
６０６  出力アドレスレジスタ
６０７、７０２  セレクタ
７０１  制御キュー
７０３  否定論理和回路
８０１、８０２  バッファ
８１１〜８１３、８１６  論理積回路
８１４  論理和回路
８１５  比較回路
９０１、９０２  矢印
【図１】
2019212167.tif 000003
【図２】
2019212167.tif 000004
【図３】
2019212167.tif 000005
【図４】
2019212167.tif 000006
【図５】
2019212167.tif 000007
【図６】
2019212167.tif 000008
【図７】
2019212167.tif 000009
【図８】
2019212167.tif 000010
【図９】
2019212167.tif 000011
【図１０】
2019212167.tif 000012
【手続補正書】
【提出日】平成31年3月28日(2019.3.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
キャッシュメモリ５０１からレベル０のページテーブル内のデータを取得した場合、制御回路６０１は、制御信号Ｓ０１１をページテーブルバッファ５０３へ出力する。また、出力アドレスレジスタ６０６は、ＰＡを示すアドレス信号Ｓ０１９をページテーブルバッファ５０３へ出力し、ページテーブルレジスタ６０４は、レベル０のページテーブル内のデータを示すデータ信号Ｓ０２４をページテーブルバッファ５０３へ出力する。これにより、レベル０のページテーブル内のデータが、ページテーブルバッファ５０３に登録される。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
各エントリＥｉは、ページテーブルデータを示すデータ信号Ｓ０３０を、セレクタ７０２へ出力する。セレクタ７０２は、エントリＥ１〜エントリＥＮから出力されるヒット信号Ｓ０２８に基づいて、論理“１”のヒット信号Ｓ０２８が示すエントリのデータ信号Ｓ０３０を選択し、データ信号Ｓ０２５として出力する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８６
【補正方法】変更
【補正の内容】
【００８６】
否定論理和回路７０３は、エントリＥ１〜エントリＥＮから出力されるヒット信号Ｓ０２８の否定論理和をミス信号Ｓ０２６として出力する。したがって、アドレス信号Ｓ０１９が示すＰＡがいずれかのエントリのＰＡと一致した場合、ミス信号Ｓ０２６は論理“０”となり、アドレス信号Ｓ０１９が示すＰＡがいずれのエントリのＰＡとも一致しない場合、ミス信号Ｓ０２６は論理“１”となる。ミス信号Ｓ０２６が論理“１”である場合、テーブルウォーク制御部５０２は、制御信号Ｓ００７及びアドレス信号Ｓ０１８をキャッシュメモリ５０１へ出力する。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2019212167.tif 000013