(57)【要約】      （修正有）【課題】プロセスにページを割り当てる際のページのゼロクリア処理に起因するプロセスの停止時間を短縮する情報処理装置を提供する。【解決手段】ＯＳ２１は、プロセスにゼロページを割り当てることによって、割り当てたページのゼロクリアを行うことなくプロセスの実行を再開する。また、ＯＳ２１はＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）３のゼロページに対応するＺＰビットを１にセットし、キャッシュ制御部４はＺＰビットに基づいてキャッシュメモリ５へのアクセスを制御する。また、ＣＰＵ２、ハードウェア支援機構又は余剰ＣＰＵ２が、メモリ割り当てと非同期にゼロページのゼロクリアを行う。【選択図】図３
2016048502.tif 000002
【特許請求の範囲】
【請求項１】
内容が全てゼロのページであるゼロページを示すゼロページ情報をページ毎に記憶するゼロページ情報記憶部と、
メインメモリが記憶する複数のページの一部を一時的に記憶するキャッシュメモリと、
ゼロページの割り当てを行った際に、割り当てたページに対応するゼロページ情報を前記ゼロページ情報記憶部に設定する制御部と、
前記ゼロページ情報記憶部が記憶するゼロページ情報に基づいて前記キャッシュメモリへのアクセスを制御するキャッシュ制御部と、
前記ゼロページ情報記憶部がゼロページ情報を記憶するページに対応するメインメモリのページを前記制御部によるゼロページの割り当てとは非同期にゼロクリアするクリア部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記キャッシュ制御部は、前記ゼロページ情報記憶部がゼロページ情報を記憶するページへのデータの書き込みが要求された場合に、該ページのエントリがキャッシュメモリにないとき、ゼロページのエントリをキャッシュメモリに加え、該加えたエントリにデータを書き込むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュ制御部は、前記ゼロページ情報記憶部がゼロページ情報を記憶するページからのデータの読み出しが要求された場合に、該ページのエントリがキャッシュメモリにないとき、ゼロページのエントリをキャッシュメモリに加え、読み出しデータとしてゼロを出力することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御部は、前記クリア部によりゼロクリアされたページに対応するゼロページ情報をリセットすることを特徴とする請求項１、２又は３に記載の情報処理装置。
【請求項５】
前記ゼロページ情報記憶部は、仮想アドレスを物理アドレスに変換するＴＬＢに含まれることを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。
【請求項６】
メインメモリが記憶する複数のページの一部を一時的に記憶するキャッシュメモリを有する情報処理装置によるメモリアクセス処理方法において、
内容が全てゼロのページであるゼロページの割り当てを行った際に、割り当てたページがゼロページであることを示すゼロページ情報をページ毎にゼロページ情報記憶部に設定し、
前記ゼロページ情報記憶部が記憶するゼロページ情報に基づいて前記キャッシュメモリへのアクセスを制御し、
前記ゼロページ情報記憶部がゼロページ情報を記憶するページに対応するメインメモリのページを前記ゼロページの割り当てとは非同期にゼロクリアする
ことを特徴とするメモリアクセス処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びメモリアクセス処理方法に関する。
【背景技術】
【０００２】
ＯＳ（Operating  System）は、プロセスにメインメモリのページを渡す場合、ページをゼロクリアしてから渡す。ここで、ページとはメインメモリの管理単位であり、ページ毎にメインメモリからキャッシュメモリへの読み出しが行われる。ゼロクリアの主たる目的はメインメモリの内容の破壊であり、ＯＳはメインメモリの内容を破壊して渡すことにより以前の使用者の情報が次の使用者に漏れることを防いでいる。
【０００３】
ゼロクリアは、システムのセキュリティには必要な処理であるが、非常にＣＰＵ（Central  Processing  Unit）時間を消費する処理であり、アプリケーションの実行時間の２０％を占める場合もある。このため、高速性を要求するプログラムでは、ゼロクリアに要する時間を短縮することが重要となる。
【０００４】
従来のゼロクリアの方法には、２つの方法がある。図１１Ａは、ゼロクリアの第１の方法を説明するための図であり、図１１Ｂは、ゼロクリアの第２の方法を説明するための図である。
【０００５】
図１１Ａに示すように、第１の方法では、プロセスが初めてページを使用してページフォルトが発生する（１）と、ＯＳのメモリハンドラは、ページの割り当てを行い（２）、ページのゼロクリアを行う（３）。そして、ＯＳはプロセスの処理を復帰させる（４）。
【０００６】
図１１Ｂに示すように、第２の方法では、ＯＳはあらかじめページをゼロクリアして蓄えておき（１）、プロセスが初めてページを使用してページフォルトが発生する（２）と、メモリハンドラはゼロクリア済のページを割り当てる（３）。そして、ＯＳはプロセスの処理を復帰させる（４）。
【０００７】
また、第１の方法と第２の方法を組み合わせる方法もある。その他、メモリのページに対するゼロクリアが指定されたときに、メモリの該当するページをゼロクリアせずに、該当するページについてゼロクリア情報を記憶し、ゼロクリア情報に基づいて該当ページへのアクセスを制御することで処理時間を短縮する技術がある。また、仮想記憶管理システムにおいて、新しいページに最初の参照が発生すると、ページフレームが割り当てられ、ページングサブシステムがゼロに初期化設定する技術がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−３４２３号公報
【特許文献２】特公平５−６４８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のゼロクリアの方法には、ゼロクリアの処理の間プロセスの処理が停止するという問題がある。第１の方法では、プロセスからの使用要求があって初めてゼロクリアを行うため、プロセスがページフォルトを起こしてから復帰できるまでの時間コストが非常に高くなる。
【００１０】
また、第２の方法でも、ゼロクリア済のページがなくなると、ゼロクリアの処理が必要となる。なお、第２の方法には、事前に行うゼロクリア処理のＣＰＵ時間をどのように課金するかという問題もある。
【００１１】
本発明は、１つの側面では、ページ割り当て時のプロセスの停止時間を短縮することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報処理装置は、１つの態様において、内容が全てゼロのページであるゼロページを示すゼロページ情報をページ毎に記憶するゼロページ情報記憶部と、メインメモリが記憶する複数のページの一部を一時的に記憶するキャッシュメモリとを有する。また、前記情報処理装置は、ページの割り当てを行った際に、割り当てたページに対応するゼロページ情報を前記ゼロページ情報記憶部に設定する制御部を有する。また、前記情報処理装置は、前記ゼロページ情報記憶部が記憶するゼロページ情報に基づいて前記キャッシュメモリへのアクセスを制御するキャッシュ制御部を有する。また、前記情報処理装置は、前記ゼロページ情報記憶部がゼロページ情報を記憶するページに対応するメインメモリのページを前記制御部によるゼロページの割り当てとは非同期にゼロクリアするクリア部を有する。
【発明の効果】
【００１３】
１実施態様によれば、ページ割り当て時のプロセスの停止時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係る情報処理装置によるメモリ割り当て処理を説明するための図である。
【図２】図２は、実施例に係る情報処理装置のメモリ割り当て動作を示す図である。
【図３】図３は、実施例に係る情報処理装置の構成を示す図である。
【図４】図４は、ＺＰビットを説明するための図である。
【図５】図５は、実施例に係る情報処理装置によるメモリアクセス処理のフローを示すフローチャートである。
【図６】図６は、キャッシュ制御部による書き込み処理のフローを示すフローチャートである。
【図７】図７は、キャッシュ制御部による読み出し処理のフローを示すフローチャートである。
【図８】図８は、ＣＰＵがアイドル時に行うゼロクリア処理を説明するための図である。
【図９】図９は、ハードウェア支援によるゼロクリアを説明するための図である。
【図１０】図１０は、余剰ＣＰＵによるゼロクリア処理を説明するための図である。
【図１１Ａ】図１１Ａは、ゼロクリアの第１の方法を説明するための図である。
【図１１Ｂ】図１１Ｂは、ゼロクリアの第２の方法を説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報処理装置及びメモリアクセス処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１６】
まず、実施例に係る情報処理装置によるメモリ割り当て処理について説明する。図１は、実施例に係る情報処理装置によるメモリ割り当て処理を説明するための図である。図１に示すように、実施例に係る情報処理装置では、プロセスが初めてページを使用してページフォルトが発生する（１）と、ＯＳのメモリハンドラは、ページの割り当てを行い（２）、ゼロページ通知をＣＰＵのキャッシュ機構に対して行う（３）。
【００１７】
ここで、ゼロページ通知とは、ページがゼロクリアされるべきページすなわちゼロページであることを知らせる通知である。また、キャッシュ機構には、仮想アドレスから物理アドレスへの変換を高速化するＴＬＢ（Translation  Lookaside  Buffer）とキャッシュメモリとが含まれる。
【００１８】
そして、ＯＳはプロセスの処理を復帰させる（４）。すなわち、ＯＳは、割り当てたページのゼロクリアを行うことなく、キャッシュ機構に対してゼロページ通知を行うだけでプロセスの処理へ復帰させる。その後、プロセスが割り当てられたゼロページにアクセスすると、キャッシュ機構は、アクセス要求に応じた処理を行う（５）。また、ページの割り当てとは非同期に、ＯＳ又はＣＰＵがゼロページのゼロクリアを行う（６）。
【００１９】
このように、ＯＳが、割り当てたページのゼロクリアを行うことなく、キャッシュ機構に対してゼロページ通知を行うだけでプロセスの処理を復帰させる。また、ページの割り当てとは非同期に、ＯＳ又はＣＰＵがゼロページのゼロクリアを行う。したがって、ＯＳは、メモリ割り当て時のプロセスの停止時間を短縮することができる。
【００２０】
次に、実施例に係る情報処理装置のメモリ割り当て動作について説明する。図２は、実施例に係る情報処理装置のメモリ割り当て動作を示す図である。図２に示すように、プロセスとして動作するユーザプログラムが実行中（１）に初めてページを使用し、ページフォルトが発生すると（２）、ＯＳがメモリ割り当てを行う（３）。
【００２１】
そして、ＯＳは、ＴＬＢに対して割り当てたページがゼロページであることを記憶するように指示し（４）、ユーザプログラムの実行を再開する（５）。また、ＯＳ又はＣＰＵが必要に応じて特定のタイミングでゼロページのゼロクリアを行う（６）。
【００２２】
このように、ＯＳは、ＴＬＢに対して割り当てたページがゼロページであることを記憶するように指示してユーザプログラムの実行を再開するので、メモリ割り当て時のユーザプログラムの停止時間を短縮することができる。
【００２３】
次に、実施例に係る情報処理装置の構成について説明する。図３は、実施例に係る情報処理装置の構成を示す図である。図３に示すように、情報処理装置１は、ＣＰＵ２と、ＴＬＢ３と、キャッシュ制御部４と、キャッシュメモリ５と、メインメモリ６とを有する。
【００２４】
ＣＰＵ２は、メインメモリ６からプログラムを読み出して実行する中央処理装置である。ＣＰＵ２は、ＯＳ２１を実行する。ＯＳ２１は、情報処理装置１のリソースの管理、ＣＰＵ２で実行されるプログラムの管理などを行う基本ソフトウェアである。ＯＳ２１は、プロセスへのメインメモリ６の割り当てなどを行うメモリハンドラ２２を有する。
【００２５】
ＴＬＢ３は、仮想アドレスと物理アドレスを対応付けて記憶し、仮想アドレスを物理アドレスに変換する。そして、ＴＬＢ３は、変換した物理アドレスをキャッシュ制御部４に渡す。
【００２６】
ＴＬＢ３は、ＺＰ記憶部３１を有する。ＺＰ記憶部３１は、ＴＬＢ３のエントリ毎にエントリがゼロページであるか否かを示すＺＰビットを記憶する。図４は、ＺＰビットを説明するための図である。図４は、ＴＬＢ３の構成を示す。図４に示すように、ＴＬＢ３の各エントリは、ＶａｌｉｄビットとＤｉｒｔｙビットとＴａｇとＤａｔａとＺＰビットを有する。
【００２７】
Ｖａｌｉｄビットは、エントリが正当であるか否かを示すビットである。Ｄｉｒｔｙビットは、エントリに対応するページに変更があったか否かを示すビットである。Ｔａｇは、仮想アドレスである。Ｄａｔａは、仮想アドレスに対応する物理アドレスである。
【００２８】
ＺＰビットは、１にセットされると、対応するページがゼロページであることを示す。ＴＬＢ３は、ＯＳ２１の指示に基づいてＺＰビットを１にセットする。また、ＴＬＢ３は、物理アドレスとともに対応するＺＰビットをキャッシュ制御部４に渡す。
【００２９】
図３に戻って、キャッシュ制御部４は、キャッシュメモリ５の読み書きを制御する。キャッシュ制御部４は、ＴＬＢ３から渡された物理アドレス及びＺＰビットに基づいてページへのアクセスを制御する。
【００３０】
ＺＰビットが１である場合に、キャッシュ制御部４は、リードアクセスがキュシュミスすると、ゼロで埋めたキャッシュエントリをキャッシュメモリ５に加え、アクセス要求元にはゼロページを返す。このとき、キャッシュ制御部４は、メモリへのアクセスは行わない。
【００３１】
ユーザは、メインメモリ６を使用する場合、メインメモリ６にデータを書き込んでからデータを読み出す。したがって、ＺＰビットが１であるページすなわちゼロページに対してリードアクセスが行われることはほとんどないと考えられるが、キャッシュ制御部４は、予防的な処理として、ゼロページに対するリードアクセス処理を行う。
【００３２】
また、ＺＰビットが１である場合に、キャッシュ制御部４は、ライトアクセスがキャッシュミスすると、ゼロで埋めたキャッシュエントリをキャッシュメモリ５に加え、加えたキャッシュエントリに書き込み内容を反映する。このとき、キャッシュ制御部４は、メインメモリ６へのアクセスは行わない。
【００３３】
ＺＰビットが１である場合に、キャッシュヒットしたときは、キャッシュ制御部４は、ヒットしたキャッシュエントリにアクセスする。このとき、キャッシュ制御部４は、メインメモリ６へのアクセスは行わない。ＺＰビットが１であるページに対しては、キャッシュ制御部４は、メモリアクセスは全てキャッシュメモリ５で処理し、ＺＰビットが１であるページのスワップアウトは行わない。
【００３４】
ＺＰビットが０である場合には、キャッシュ制御部４は、従来と同様の動作を行う。すなわち、キャッシュ制御部４は、キャッシュヒットしたときは、ヒットしたキャッシュエントリにアクセスし、キャッシュヒットしなかったときは、メインメモリ６にアクセスする。
【００３５】
ＣＰＵ２からキャッシュメモリ５を迂回してメインメモリ６へアクセスする命令が出された場合は、キャッシュ制御部４は、例外を発生し、ＯＳ２１に制御を渡す。ＯＳ２１は、ゼロクリアが必要か否かを判断し、ゼロクリアが必要な場合には、メインメモリ６のページのゼロクリアを行う。なお、ＣＰＵ２からキャッシュメモリ５を迂回してメインメモリ６へアクセスすることは、例えば、ビデオドライバ、ＨＰＣ（High  Performance  Computing）における処理などで発生する。
【００３６】
キャッシュメモリ５は、ＣＰＵ２からメインメモリ６へのアクセスを高速化するために、メインメモリ６に記憶されるページの一部を記憶する。メインメモリ６は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。
【００３７】
次に、実施例に係る情報処理装置１によるメモリアクセス処理のフローについて説明する。図５は、実施例に係る情報処理装置１によるメモリアクセス処理のフローを示すフローチャートである。
【００３８】
図５に示すように、情報処理装置１で動作するユーザプログラムがメモリアクセスを行い（ステップＳ１）、初めてのページの使用であると、ページフォルトが発生する（ステップＳ２）。すると、ＯＳ２１が、メモリ割り当てを行い（ステップＳ３）、ＴＬＢ３の対応するページのＺＰビットをセットする（ステップＳ４）。そして、ＯＳ２１は、ユーザプログラムに復帰させる（ステップＳ５）。
【００３９】
その後、ユーザプログラムがメインメモリ６にアクセスすると、キャッシュ制御部４がＺＰビットに基づいてメインメモリ６へのアクセスを制御する（ステップＳ６）。そして、ＣＰＵ２又はＯＳ２１がメモリ割り当てとは非同期にゼロページのゼロクリアを行う（ステップＳ７）。
【００４０】
このように、ＯＳ２１は、ＴＬＢ３のＺＰビットをセットするだけで、メインメモリ６のページのゼロクリアを行うことなくユーザプログラムに復帰させるので、ユーザプログラムの停止時間を短縮することができる。
【００４１】
次に、キャッシュ制御部４による書き込み処理のフローについて説明する。図６は、キャッシュ制御部４による書き込み処理のフローを示すフローチャートである。図６に示すように、キャッシュ制御部４は、物理アドレス及びＺＰビットをＴＬＢ３から取得する（ステップＳ１１）。
【００４２】
そして、キャッシュ制御部４は、キャッシュヒットしたか否かを判定し（ステップＳ１２）、キャッシュヒットした場合には、データをキャッシュメモリ５に書き込む（ステップＳ１３）。
【００４３】
一方、キャッシュヒットしなかった場合には、キャッシュ制御部４は、ＺＰビットが１にセットされているか否かを判定する（ステップＳ１４）。その結果、ＺＰビットが１にセットされている場合には、キャッシュ制御部４は、ゼロページのエントリをキャッシュメモリ５に物理アドレスに対応付けて追加し（ステップＳ１５）、データをキャッシュメモリ５に書き込む（ステップＳ１３）。
【００４４】
一方、ＺＰビットが１にセットされていない場合には、キャッシュ制御部４は、メインメモリ６からページを読み出し（ステップＳ１６）、ページをキャッシュメモリ５に書き込む（ステップＳ１７）。そして、キャッシュ制御部４は、データをキャッシュメモリ５に書き込む（ステップＳ１３）。
【００４５】
このように、ＺＰビットが１にセットされている場合に、キャッシュ制御部４がゼロページのエントリをキャッシュメモリ５に追加することによって、プロセスはゼロページへの書き込みを行うことができる。
【００４６】
次に、キャッシュ制御部４による読み出し処理のフローについて説明する。図７は、キャッシュ制御部４による読み出し処理のフローを示すフローチャートである。図７に示すように、キャッシュ制御部４は、物理アドレス及びＺＰビットをＴＬＢ３から取得する（ステップＳ２１）。
【００４７】
そして、キャッシュ制御部４は、キャッシュヒットしたか否かを判定し（ステップＳ２２）、キャッシュヒットした場合には、キャッシュメモリ５からデータを読み出す（ステップＳ２３）。
【００４８】
一方、キャッシュヒットしなかった場合には、キャッシュ制御部４は、ＺＰビットが１にセットされているか否かを判定する（ステップＳ２４）。その結果、ＺＰビットが１にセットされている場合には、キャッシュ制御部４は、ゼロページのエントリをキャッシュメモリ５に物理アドレスに対応付けて追加し（ステップＳ２５）、データとしてゼロを出力する（ステップＳ２６）。
【００４９】
一方、ＺＰビットが１にセットされていない場合には、キャッシュ制御部４は、メインメモリ６からページを読み出し（ステップＳ２７）、ページをキャッシュメモリ５に書き込む（ステップＳ２８）。そして、キャッシュ制御部４は、キャッシュメモリ５からデータを読み出す（ステップＳ２９）。
【００５０】
このように、ＺＰビットが１にセットされている場合に、キャッシュ制御部４がゼロページのエントリをキャッシュメモリ５に追加してゼロを出力することによって、プロセスはゼロページからのデータの読み出しを行うことができる。
【００５１】
次に、メモリ割り当てと非同期に行うゼロページのゼロクリアについて図８〜図１０を用いて説明する。ゼロクリア処理については、ＣＰＵ２がアイドルのときに行ってもよいし、ハードウェアの支援機構が行ってもよいし、あるいは、情報処理装置１が複数のＣＰＵ２を有する場合に余剰ＣＰＵ２が行ってもよい。
【００５２】
図８は、ＣＰＵ２がアイドル時に行うゼロクリア処理を説明するための図である。図８に示すように、ＯＳ２１は、ゼロページを割り当てると、ゼロクリア処理依頼をキューイングする（１）。また、ゼロページを割り当てられたアプリケーションは実行を継続する。
【００５３】
その後、ＯＳ２１がコンテキストスイッチを行い（２）、ＣＰＵ２がアイドル状態になると、キューイングされたゼロクリア処理依頼に基づいてアイドルスレッドがゼロクリアを行う（３）。
【００５４】
図９は、ハードウェア支援によるゼロクリアを説明するための図である。図９に示すように、ＯＳ２１は、ゼロページを割り当てると、ハードウェア支援機構にゼロクリア指示を行う。ハードウェア支援機構としては、例えば、メインメモリ６へバースト転送を行う機構、メインコントローラ内でページをゼロクリアする機構などがある。
【００５５】
図１０は、余剰ＣＰＵ２によるゼロクリア処理を説明するための図である。図１０に示すように、ＯＳ２１は、ゼロページを割り当てると、ゼロクリア処理依頼をキューイングする（１）。また、ゼロページを割り当てられたアプリケーションは実行を継続する。
【００５６】
そして、処理に余裕のできたＣＰＵ２がゼロクリア処理依頼のキューをチェックする（２）。図１０では、ＣＰＵ「Ａ」でアプリケーションが実行され、他のＣＰＵ２のうち処理に余裕のできたＣＰＵ「Ｂ」がゼロクリア処理依頼のキューをチェックする。そして、ＣＰＵ「Ｂ」のスレッドがゼロクリアを行う（３）。
【００５７】
このように、ＣＰＵ２、ハードウェア支援機構又は余剰ＣＰＵ２が、メモリ割り当てと非同期にゼロページのゼロクリアを行うことによって、メモリハンドラ２２によるゼロクリアを不要とすることができる。なお、ＯＳ２１は、ゼロクリアが行われたページに対応するＺＰビットを０にリセットする。
【００５８】
上述してきたように、実施例では、ＯＳ２１は、プロセスにゼロページを割り当てることによって、割り当てたページのゼロクリアを行うことなくプロセスの実行を再開する。また、ＯＳ２１はＴＬＢ３のゼロページに対応するＺＰビットを１にセットし、キャッシュ制御部４はＺＰビットに基づいてキャッシュメモリ５へのアクセスを制御する。また、ＣＰＵ２、ハードウェア支援機構又は余剰ＣＰＵ２が、メモリ割り当てと非同期にゼロページのゼロクリアを行う。したがって、ＯＳ２１は、ページ割り当ての際のゼロクリア処理に起因するプロセスの停止時間を短縮することができる。
【符号の説明】
【００５９】
１    情報処理装置
２    ＣＰＵ
３    ＴＬＢ
４    キャッシュ制御部
５    キャッシュメモリ
６    メインメモリ
２１    ＯＳ
２２    メモリハンドラ
３１    ＺＰ記憶部
【図１】
2016048502.tif 000003
【図２】
2016048502.tif 000004
【図３】
2016048502.tif 000005
【図４】
2016048502.tif 000006
【図５】
2016048502.tif 000007
【図６】
2016048502.tif 000008
【図７】
2016048502.tif 000009
【図８】
2016048502.tif 000010
【図９】
2016048502.tif 000011
【図１０】
2016048502.tif 000012
【図１１Ａ】
2016048502.tif 000013
【図１１Ｂ】
2016048502.tif 000014