(57)【要約】      （修正有）【課題】複数の領域に分割され、少なくとも１つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間が用意されている場合のプログラムローディングにおいて、ＴＬＢエラーの発生頻度を下げ性能向上を図る。【解決手段】プログラム１のテキスト１−１のサイズ１−３よりもページサイズが大きい領域があるか否かを判断し、ある場合にはプログラムのテキスト等のサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域にプログラムのテキスト等を割り当て、ない場合にはプログラムのテキスト等のサイズよりもページサイズが小さい領域のうちのページサイズが最大の領域にプログラムのテキスト等を割り当てる。【選択図】図１
2006260395.tif 000002
【特許請求の範囲】
【請求項１】
複数の領域に分割され、少なくとも１つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間が用意されている場合のプログラムローディング方法において、
プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域があるか否かを判断する第１判断ステップと、
前記第１判断ステップの結果が肯定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域に前記プログラムのテキスト又はデータを割り当てる第１割当てステップと、
を備えることを特徴とするプログラムローディング方法。
【請求項２】
請求項１に記載のプログラムローディング方法において、
前記第１判断ステップの結果が否定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが小さい領域のうちのページサイズが最大の領域に前記プログラムのテキスト又はデータを割り当てる第２割当てステップを更に備えることを特徴とするプログラムローディング方法。
【請求項３】
請求項１に記載のプログラムローディング方法において、
前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータのサイズ以上の空き容量があるか否かを判断する第２判断ステップと、
前記第２判断ステップの判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディングステップと、
を更に備えることを特徴とするプログラムローディング方法。
【請求項４】
請求項３に記載のプログラムローディング方法において、
前記第２判断ステップの判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディングステップを更に備えることを特徴とするプログラムローディング方法。
【請求項５】
プログラムを実行するＣＰＵが属するセルに属するメモリに前記プログラムのテキスト又はデータのサイズ以上の空き容量があるか否かを判断する判断ステップと、
前記判断ステップの判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディングステップと、
を備えることを特徴とするプログラムローディング方法。
【請求項６】
請求項５に記載のプログラムローディング方法において、
前記判断ステップの判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディングステップを更に備えることを特徴とするプログラムローディング方法。
【請求項７】
請求項５に記載のプログラムローディング方法において、
前記プログラムにより指定されている仮想アドレスに前記プログラムのテキスト又はデータを割り当てる割当てステップを更に備えることを特徴とするプログラムローディング方法。
【請求項８】
複数の領域に分割され、少なくとも１つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間が用意されている場合のプログラムローディング装置において、
プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域があるか否かを判断する第１判断手段と、
前記第１判断手段の結果が肯定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域に前記プログラムのテキスト又はデータを割り当てる第１割当て手段と、
を備えることを特徴とするプログラムローディング装置。
【請求項９】
請求項８に記載のプログラムローディング装置において、
前記第１判断手段の結果が否定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが小さい領域のうちのページサイズが最大の領域に前記プログラムのテキスト又はデータを割り当てる第２割当て手段を更に備えることを特徴とするプログラムローディング装置。
【請求項１０】
請求項８に記載のプログラムローディング装置において、
前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータのサイズ以上の空き容量があるか否かを判断する第２判断手段と、
前記第２判断手段の判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディング手段と、
を更に備えることを特徴とするプログラムローディング装置。
【請求項１１】
請求項１０に記載のプログラムローディング装置において、
前記第２判断手段の判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディング手段を更に備えることを特徴とするプログラムローディング装置。
【請求項１２】
プログラムを実行するＣＰＵが属するセルに属するメモリに前記プログラムのテキスト又はデータのサイズ以上の空き容量があるか否かを判断する判断手段と、
前記判断手段の判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディング手段と、
を備えることを特徴とするプログラムローディング装置。
【請求項１３】
請求項１２に記載のプログラムローディング装置において、
前記判断手段の判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディング手段を更に備えることを特徴とするプログラムローディング装置。
【請求項１４】
請求項１２に記載のプログラムローディング装置において、
前記プログラムにより指定されている仮想アドレスに前記プログラムのテキスト又はデータを割り当てる割当て手段を更に備えることを特徴とするプログラムローディング装置。
【請求項１５】
請求項１乃至７の何れか１項に記載のプログラムローディング方法をコンピュータに行わせるためのプログラム。
【請求項１６】
請求項１５に記載のプログラムを記録した、コンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを仮想空間に割り当て、物理メモリにローディングするためのプログラムローディング方法及びその装置に関する。
【背景技術】
【０００２】
ｃｃＮＵＭＡ(cache coherent Non-Uniform Memory Access)アーキテクチャにおいては、システムは複数のノードを備え、各ノードは、ＣＰＵ、メモリ、入出力インターフェース等を備える。あるノードのＣＰＵは自ノードのメモリのみならず他ノードのメモリにもアクセスできるが、自ノードのメモリへのアクセス時間に対して、他ノードのメモリへのアクセス時間が長い。
【特許文献１】特開２０００−５７０５４号公報
【特許文献２】特開平５−８１１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところが、ｃｃＮＵＭＡアーキテクチャにおいても物理メモリと仮想空間をＴＬＢ(Translation Look-aside Buffer)機構を用いて対応付けるが、ＴＬＢのエントリ数が少ないと、キャッシュミスのようなＴＬＢエラーが発生する。
【０００４】
また、ｃｃＮＵＭＡアーキテクチャにおいて、物理メモリと仮想空間をどのように対応付けるかという方法が今まで開示されていなかった。
【０００５】
そこで、本発明は、ＴＬＢエラーが発生することの頻度を下げることを可能とするプログラムローディング方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の観点によれば、複数の領域に分割され、少なくとも１つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間が用意されている場合のプログラムローディング方法において、プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域があるか否かを判断する第１判断ステップと、前記第１判断ステップの結果が肯定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域に前記プログラムのテキスト又はデータを割り当てる第１割当てステップと、を備えることを特徴とするプログラムローディング方法が提供される。
【０００７】
本発明の第１の観点によるプログラムローディング方法において、前記第１判断ステップの結果が否定的である場合に、前記プログラムのテキスト又はデータのサイズよりもページサイズが小さい領域のうちのページサイズが最大の領域に前記プログラムのテキスト又はデータを割り当てる第２割当てステップを更に備えるようにしてもよい。
【０００８】
本発明の第１の観点によるプログラムローディング方法において、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータのサイズ以上の空き容量があるか否かを判断する第２判断ステップと、前記第２判断ステップの判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディングステップと、を更に備えるようにしてもよい。
【０００９】
本発明の第１の観点によるプログラムローディング方法において、前記第２判断ステップの判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディングステップを更に備えるようにしてもよい。
【００１０】
本発明の第２の観点によれば、プログラムを実行するＣＰＵが属するセルに属するメモリに前記プログラムのテキスト又はデータのサイズ以上の空き容量があるか否かを判断する判断ステップと、前記判断ステップの判断結果が肯定的である場合に、前記プログラムを実行するＣＰＵが属するセルに属するメモリに前記テキスト又はデータをローディングする第１ローディングステップと、を備えることを特徴とするプログラムローディング方法が提供される。
【００１１】
本発明の第２の観点によるプログラムローディング方法において、前記判断ステップの判断結果が否定的である場合に、前記プログラムを実行するＣＰＵが属さないセルに属するメモリに前記テキスト又はデータをローディングする第２ローディングステップを更に備えるようにしてもよい。
【００１２】
本発明の第２の観点によるプログラムローディング方法において、前記プログラムにより指定されている仮想アドレスに前記プログラムのテキスト又はデータを割り当てる割当てステップを更に備えるようにしてもよい。
【発明の効果】
【００１３】
本発明によれば、ＴＬＢエントリ数を削減することができるので、ＴＬＢミスを削減できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００１５】
［実施形態１］
本発明は、下記の特徴を有する計算機上で動作するオペレーティングシステムに対して投入されたプログラムの性能を向上させるプロセス配置機構を提供する。
【００１６】
１）．オペレーティングシステムへのフォルトを発生させずに仮想アドレスから物理アドレスへの変換を行うためのキャッシュ（ＴＬＢ）を有する。
【００１７】
２）．仮想アドレスを複数の領域に分割し、各領域毎に、異なるページサイズを使用可能（各領域に対応する領域レジスタを有し、領域レジスタにその領域のページサイズを保有するなど）
３）．キャッシュコヒーレントな非均質メモリアクセス（ｃｃＮＵＭＡ）
１）の特徴を有するアーキテクチャでは、ＴＬＢの１エントリは１ページに対応しているため、小さなページサイズを使用しているオペレーティングシステム上で多量のメモリを使用するプログラムを動作させるには多数のＴＬＢエントリを必要とする。
【００１８】
ＴＬＢは有限であるため、エントリが足りなくなった場合にはフォルトを発生させてオペレーティングシステムにＴＬＢエントリの置換を依頼することになり、これがプログラムの予期せぬ性能低下を招く。
【００１９】
これを解決するために、ページサイズがオペレーティングシステムが通常使用しているページよりも大きな領域にプログラムをロードする。オペレーティングシステムが通常使用しているページよりも大きなページのことを「ラージページ」ということにする。例えば、オペレーティングシステムが通常使用しているページのサイズが８ｋＢであれば、１６ｋＢのページ、１６ＭＢのページ、２５６ＭＢのページはラージページである。
【００２０】
これにより１つのＴＬＢエントリでカバーできるアドレス空間が大きくなり、ＴＬＢフォルトが削減できるため、性能が向上する。
【００２１】
プログラムをロードする際、２）の特徴を利用することで既存のメモリ管理機構をほとんど変更することなくラージページを使用できる。
【００２２】
本実施形態では、各仮想アドレス領域毎に異なるページサイズを予め設定しておき、例えば、プログラム中のテキストのロードに必要なメモリのサイズ以上のサイズを有するページのうち最小のサイズを有するページを探し、そのようなページを有する仮想アドレス領域にプログラムをロードすることで、メモリ節約とラージページによる性能向上を両立している。つまり、このような場合、１つのページでテキストデータを表すため１つのＴＬＢエントリのみしか必要でなくなるため、ＴＬＢフォルトを削減することが可能となる。また、この様な場合、無駄なメモリ領域を最小限にすることができるため、メモリ節約をすることが可能となる。
【００２３】
そのようなページが見つからない場合には、最大のページサイズを有する仮想アドレス領域にプログラムをロードする。こうすることにより、最小数のＴＬＢエントリを用いることが可能となる。
【００２４】
ただし、プログラムは位置独立なコードである必要がある。
【００２５】
３）の特徴を有するアーキテクチャでは、ＣＰＵからメモリへのアクセス速度が物理アドレスによって異なる。
【００２６】
本実施形態では、プログラムをロードする仮想アドレスに対応するラージページを、プログラムが動作するＣＰＵに近いメモリ（つまり、ｃｃＮＵＭＡアーキテクチャにおける同一セル内のメモリ）から獲得することで性能を向上させている。
【００２７】
つまり本実施形態は、２）の特徴を利用してプログラムを適切なページサイズの仮想アドレスにロードする機構と、その仮想アドレスに対応するページを、高速にアクセスできる物理アドレスから取得する機構を組み合わせることにより、プログラムの性能を向上させるものである。
【００２８】
図１を参照すると本実施形態は下記を含む。
【００２９】
・テキスト１−１とデータ１−２及びヘッダを備える位置独立なプログラム１。
【００３０】
更にヘッダは、テキストサイズ１−３とデータサイズ１−４を備える。
【００３１】
・プログラムを実行するＣＰＵ２−１とプログラム実行のための一時的な記憶領域であるメモリ２−２及び各ＣＰＵとメモリ間を接続するバス２−３から構成されるセル２。
【００３２】
・異なるセルのＣＰＵやメモリにアクセスするためにセル間を接続する高速スイッチ３。
【００３３】
・プログラムにＣＰＵを割り当てるためのスケジューリング装置４。
【００３４】
・ページサイズの異なる複数のアドレス領域に分割された仮想アドレス空間５。
【００３５】
・プログラムをメモリに配置するためのプログラムロード装置６。
【００３６】
プログラムロード装置６は、プログラム中のテキストやデータのサイズに適したページサイズを算出するページサイズ判定装置６−１、ページサイズ判定装置６−１が算出したページサイズの仮想アドレス領域にプログラム中のテキストやデータをロードし、テキストを実行可能なようにアドレス解決やシンボル解決を行うためのロード装置６−２、ロードする仮想アドレスに対応する物理メモリを割り当てて管理するための仮想記憶装置６−３から成る。
【００３７】
ＣＰＵ２−１と物理メモリであるメモリ２−２はセル単位で分割されており、あるＣＰＵ２−１から同一セル内のメモリ２−２へのアクセス速度は、セル間を跨ぐメモリ２−２へのアクセス速度よりも高速である。
【００３８】
仮想アドレス空間は、例として、３つの異なる領域に分割されており、それぞれのページサイズが１６ＫＢ、１６ＭＢ、２５６ＭＢに設定されていると仮定する。この場合、仮想アドレス空間、ページサイズ及びページ数の関係は、例えば、以下のようになる。
【００３９】
【表１】
2006260395.tif 000003
プログラムのテキストサイズは、例として、１６ｋＢより小さく、データサイズは２５６ＭＢより大きいと仮定する。
【００４０】
各セル内のメモリ２−２の量は、テキストサイズとデータサイズの合計より十分に多いと仮定する。
【００４１】
図１、図２を参照して本実施形態の動作について説明する。
【００４２】
図１において、プログラム１が投入されると、スケジューリング装置４によってプログラム１をプロセスとして実行開始するために、いずれかのＣＰＵ２−１が割り当てられる（図２のステップＡ１）。
【００４３】
割り当てられたＣＰＵを用いてプログラムロード装置６が動作し、まずページサイズ判定装置６−１がプログラムのテキストサイズ１−３を読み取る（図２のステップＡ２）。
【００４４】
ページサイズ判定装置は仮想アドレス空間５の中に、テキストサイズを包含するページサイズが存在するかチェックし（図２のステップＡ３）、存在すれば（ステップＡ３でＹＥＳ）、包含するページサイズのうちの最小のページサイズを選択する（図２のステップＡ４）。存在しなければ（ステップＡ３でＮＯ）、設定されているページサイズの中で最大のものを選択する（図２のステップＡ５）。この例では、テキストサイズが１６ｋＢよりも小さいので、ステップＡ４が実行され、１６ｋＢのページサイズが選択される。例えば、テキストサイズが１ＭＢであれば、ステップＡ４が実行され、１６ＭＢのページサイズが選択される。また、テキストサイズが２００ＭＢであれば、ステップＡ４が実行され、２５６ＭＢのページサイズが選択される。更に、テキストサイズが３００ＭＢであれば、ステップＡ５が実行され、２５６ＭＢのページサイズが選択される。
【００４５】
ページサイズ判定装置６−１は選択したページサイズをロード装置６−２に通知する（図２のステップＡ６）。
【００４６】
ロード装置６−２は、ページサイズ判定装置６−１から受け取った情報から、割り当てて欲しい仮想アドレス領域を指定して仮想記憶装置６−３に仮想アドレスの割り当てと、そのアドレスへのメモリ２−２の割り当てを依頼する（図２のステップＡ７）。
【００４７】
仮想記憶装置６−３は、まず指定された仮想アドレス領域中の空き仮想アドレスを割り当てる（図２のステップＡ８）。次に、スケジューリング装置４によって割り当てられているＣＰＵ２−１が属するセル内のメモリ２−２に空きがあるかを調べ（ステップＡ９）、空きがあれば（ステップＡ９でＹＥＳ）、そのメモリ２−２を割り当てた仮想アドレスに対応付ける（図２のステップＡ１０）。空きがなければ（ステップＡ９でＮＯ）、別のセルのメモリを対応付ける（図２のステップＡ１１）。こうすることにより、ステップＡ１０が実行された場合には、ＣＰＵは同一セル内のメモリにアクセスするようになり、可能な限り実行時間を高速化することが可能となる。
【００４８】
最後に、メモリ２−２が対応付けられた仮想アドレスをロード装置６−２に通知する（図２のステップＡ１２）。
【００４９】
ロード装置６−２は、通知されたアドレスにプログラムのテキスト１−１をロードし（図２のステップＡ１３）、テキスト中のアドレスやシンボル情報を解決する（図２のステップＡ１４）。
【００５０】
次に、ロード装置６−２はプログラムのデータ１−２をロードするが、データ１−２のロードについてもテキストのロードと同様の手順なので、ここでは詳細な説明を省略する（図２のステップＡ１５）。ここでは、データサイズが２５６ＭＢよりも大きいと仮定しているので、２５６ＭＢのページサイズが選択される。
【００５１】
データのロードが完了したら、スケジューリング装置４に割り当てられたＣＰＵ２−１でプログラムテキストの先頭から実行を開始する（図２のステップＡ１６）。
【００５２】
［実施形態２］
本発明の実施形態２について図３、図４を参照して説明する。
【００５３】
本実施形態は、ユーザがテキストのロードアドレスとデータのロードアドレスを指定することで、明示的に使用したいページサイズを指定できるものである。
【００５４】
図３を参照すると、本実施形態は、図１の実施形態に加えてプログラム１がテキストアドレス１−５、データアドレス１−６を持ち、プログラムロード装置６にページサイズ判定装置６−１がない点が実施形態１と異なる。
【００５５】
図４を参照すると、本実施形態の動作では、図２に比べてステップＡ３〜ステップＡ８、ステップＡ１２、ステップＡ１４に対応する部分がない。
【００５６】
これは、既にプログラムがロードされなければならないアドレスが決まっており、テキストもアドレスやシンボルが解決されている状態のため、仮想アドレスの割り当て処理やシンボル解決処理が必要ないためである。
【００５７】
実際の動作としては、スケジューリング装置４がＣＰＵ２−１の割り当てを行い（図４のステップＢ１）、ロード装置６−２がテキストアドレスやデータアドレスを読み取り（図４のステップＢ２）、仮想記憶装置６−３がそのアドレスにメモリを対応付けた（図４のステップＢ４、図４のステップＢ５）後、ロード装置６−２がそのアドレスにテキストやデータをロードする（図４のステップＢ６、図４のステップＢ７）。ロードが完了したら、スケジューリング装置に割り当てられたＣＰＵでプログラムテキストの先頭から実行を開始する（図２のステップＢ８）。
【００５８】
以上により、ユーザが意図したページサイズでプログラムを実行できる。
【００５９】
現在の一般的なプログラムは、位置独立でなくロードアドレスを固定していることが多いため、本実施形態の利用価値は高い。
【００６０】
なお、本実施形態によれば、異なるページサイズを用いる仮想記憶の管理が容易になることである。その理由は、領域毎にページサイズを指定可能なハードウェア機構を利用するため、オペレーティングシステムでの各仮想アドレス毎のページサイズ管理を省略できるからである。
【００６１】
また、スケジューリング装置及びプログラムロード装置は、ハードウェアによって実現することも可能であるが、コンピュータをこれらの装置として機能させるためのプログラムをコンピュータが記録媒体から読み込んで実行することによっても実現することができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施形態１によるプログラムローディング装置の構成を示すブロック図である。
【図２】本発明の実施形態１によりプログラムローディング方法を説明するためのフローチャートである。
【図３】本発明の実施形態２によるプログラムローディング装置の構成を示すブロック図である。
【図４】本発明の実施形態１によりプログラムローディング方法を説明するためのフローチャートである。
【符号の説明】
【００６３】
１  プログラム
１−１  テキスト
１−２  データ
１−３  テキストサイズ
１−４  データサイズ
１−５  テキストアドレス
１−６  データアドレス
２  セル
２−１  ＣＰＵ
２−２  メモリ
２−３  バス
３  高速スイッチ
４  スケジューリング装置
５  仮想アドレス空間
６  プログラムロード装置
６−１  ページサイズ判定装置
６−２  ロード装置
６−３  仮想記憶装置
【図１】
2006260395.tif 000004
【図２】
2006260395.tif 000005
【図３】
2006260395.tif 000006
【図４】
2006260395.tif 000007