(57)【要約】      （修正有）【課題】情報処理装置におけるＴＬＢミスを低減する。【解決手段】バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの１つのエントリで管理するメモリ管理方法であって、空きブロック数がＴＬＢの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し、プロセスに割り当てるとともに、割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した１つのエントリをページテーブルにマッピングする。【選択図】図６
2013200685.tif 000002
【特許請求の範囲】
【請求項１】
バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの１つのエントリで管理するメモリ管理方法であって
前記プロセスがメモリ領域を確保する要求を行った場合、空きブロック数がＴＬＢの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成する分割ステップと、
前記割り当て対象の空きブロックを前記プロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した１つのエントリを前記ページテーブルに登録するマッピングステップと、
を備えることを特徴とするメモリ管理方法。
【請求項２】
前記プロセスから要求されたメモリ領域のサイズをベースページサイズの２のべき乗のサイズで切り上げて、第１サイズを算出するサイズ算出ステップをさらに備え、
前記分割ステップは、
前記第１サイズの空きブロックがある場合、前記第１サイズの空きブロックを前記割り当て対象の空きブロックに決定し、前記第１サイズの空きブロックがなく、かつ、空きブロックの総数と前記ＴＬＢの空きエントリ数とが等しい場合、前記第１サイズよりも大きい第２サイズの空きブロックを前記割り当て対象の空きブロックに決定する、割り当て対象決定ステップ、
を備えることを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記分割ステップは、前記第１サイズの空きブロックがなく、かつ、空きブロックの総数が前記ＴＬＢの空きエントリ数よりも小さい場合、最小サイズの空きブロックを分割するステップを備える、
ことを特徴とする請求項２に記載のメモリ管理方法。
【請求項４】
前記プロセスに割り当て済みのブロックのうちの前記第２サイズのブロックが前記プロセスが使用していないメモリ領域を有する場合、空きブロック数がＴＬＢの空きエントリ数を越えないように、かつ、前記プロセスが使用していないメモリ領域が空きブロックとなるように、前記第２サイズのブロックを分割して、前記ＴＬＢを更新する、第２の再マッピングステップをさらに備える、
ことを特徴とする請求項３に記載のメモリ管理方法。
【請求項５】
プロセスを実行するプロセッサコアと、
前記プロセスに割り当てられるメモリ領域を備え、前記プロセスに割り当てられたメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係を記述するページテーブルを記憶するメモリと、
前記ページテーブルのうちの前記プロセスに割り当てられたメモリ領域にかかるエントリをキャッシュするＴＬＢを備え、当該ＴＬＢを用いて前記プロセッサによる前記メモリ領域に対するアクセスを処理するメモリ管理ユニットと、
を備え、
前記プロセッサコアは、
バディ割り当てアルゴリズムに基づいて前記メモリの空きブロックを管理するとともに、前記メモリのうちのスーパーページのサイズを有するブロックにかかる仮想アドレスと物理アドレスとの対応関係を前記ページテーブルの１つのエントリで管理し、
前記プロセスがメモリ領域を確保する要求を行った場合、空きブロック数が前記ＴＬＢの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し、
前記割り当て対象の空きブロックを前記プロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した１つのエントリを前記ページテーブルに登録する、
ことを備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリ管理方法および情報処理装置に関する。
【背景技術】
【０００２】
単一のページサイズのみをサポートするＭＭＵ（Memory  Management  Unit）を持つプロセッサは、アドレスが連続した一塊のメモリ領域に対して多くのＴＬＢ（Translation  Look-aside  Buffer）エントリを消費する。その結果、ＴＬＢミスが多発し、プロセッサの性能低下が起こる。よって、近年のＭＭＵは、複数のページサイズをサポートしている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】J.  Navarro,  S.  Iyer,  P.  Druschel,  A.  Cox.  Practical,  “transparent  operating  system  support  for  superpages”,  In  5th  Symposium  on  Operating  Systems  Design  and  Implementation(OSDI  2002),  December  2002.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ＴＬＢミスを低減するメモリ管理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの１つのエントリで管理するメモリ管理方法であって、空きブロック数がＴＬＢの空きエントリ数を越えないようにプロセスに空きブロックを割り当てる、ことを特徴とするメモリ管理方法が提供される。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態の情報処理装置の構成図。
【図２】３２ＫＢの仮想メモリ空間がバディシステムによって確保／解放される様子を説明する図。
【図３】比較例にかかる技術によってメモリ領域が予約される様子を説明する図。
【図４】比較例にかかる技術によって割り当て／解放が行われる場合におけるメモリ領域の状態およびＴＬＢの消費エントリ数の推移を説明する図。
【図５】比較例にかかる技術によって割り当て／解放が行われる場合におけるメモリ領域の状態およびＴＬＢの消費エントリ数の推移を説明する図。
【図６】メモリ領域の確保の際の情報処理装置の動作を説明するフローチャート。
【図７】メモリ領域の解放の際の情報処理装置の動作を説明するフローチャート。
【図８】使用していないページフレームを回収する際の情報処理装置の動作を説明するフローチャート。
【図９】本実施形態の情報処理装置におけるメモリ領域の状態およびＴＬＢの消費エントリ数の推移を説明する図。
【図１０】本発明の実施形態の情報処理装置の別の構成図。
【図１１】本発明の実施形態の情報処理装置の別の構成図。
【発明を実施するための形態】
【０００７】
以下に図面を参照して、実施形態にかかるメモリ管理方法および情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
図１は、本発明の実施形態の情報処理装置の構成図である。情報処理装置１は、コア（プロセッサコア）１０、ＭＭＵ１１、メモリ１２、およびバス１３を備えている。メモリ１２はバス１３に接続されている。コア１０は、ＭＭＵ１１を介してバス１３に接続されている。なお、コア１０、ＭＭＵ１１、およびメモリ１２を互いに接続するためのネットワークトポロジーは、バス方式だけに限定されない。本実施形態の情報処理装置１は、メッシュなど他のネットワークトポロジーを採用することができる。
【０００９】
メモリ１２は、カーネルプログラム１５を予め記憶している。また、プロセスに割り当て可能なメモリ領域２０を有している。カーネルプログラム１５（以下、単にカーネル１５）は、コア１０を管理する。カーネル１５は、コア１０によって実行され、コア１０で実行されるプロセスに対してメモリ領域２０内の一部または全部の割り当てを実行する。なお、プロセスは、仮想アドレスを用いてメモリ領域２０を参照する。カーネル１５は、メモリ割り当てを行った際、プロセスに対して割り当てた領域の仮想アドレスを、メモリ１２の物理アドレスと対にしてページテーブル１６に登録する。以下、ページテーブル１６へのエントリの登録を単にマッピングと呼ぶ。
【００１０】
ＭＭＵ１１は、コア１０からのメモリ１２に対するアクセスを処理するユニットである。ＭＭＵ１１は、ページテーブル１６のうちの所定の数のエントリをキャッシュするＴＬＢ１４を備えている。ＭＭＵ１１は、コア１０から要求された仮想アドレスにかかるエントリがＴＬＢ１４にキャッシュされている場合には、当該エントリを用いて仮想アドレスと物理アドレスとの変換を実行し、変換によって得られた物理アドレスにアクセスする。ＴＬＢ１４に要求された仮想アドレスにかかるエントリがＴＬＢ１４にキャッシュされていないとき、即ちＴＬＢミスが発生したとき、ＭＭＵ１１は、ページテーブル１６を参照して該当するエントリを探しに行く。このように、ＴＬＢミスはページテーブル１６の参照処理を引き起こすので、ＴＬＢミスの発生を出来るだけ低減することが望ましい。なお、ＴＬＢ１４の全エントリは、コア１０が実行しているプロセスが切り替えられると同時に切り替えられる。
【００１１】
カーネル１５は、さらに、メモリ領域２０の管理を実行する。ここでは、メモリ管理のアルゴリズムとしてバディシステム（バディ割り当てアルゴリズム）が採用される。バディシステムによれば、全ての空きページが、連続した２の累乗個のページからなるブロックで管理される。プロセスから連続したページを確保する要求があった場合、カーネル１５は、要求されたページ数が２の累乗となるように確保予定のページ数を切り上げる。そして、カーネル１５は、切り上げたページ数分のブロックを探す。確保予定のサイズのブロックが見つかれば、バディシステムは、そのブロック内の全ページをユーザに割り当てる。もし見つからなければ、カーネル１５は、より大きいブロックを見つけ、それを２つの同じサイズのブロックに分割する。このようにして生成された同一サイズの２つのブロックを、互いにバディなブロックと呼ぶ。カーネル１５は、互いにバディなブロックのうちの一方を選択し、ブロックサイズが、確保予定のページ数の分のサイズになるまで分割を続け、分割により生成されたブロックのサイズが確保予定のページ数分のサイズに一致したとき、そのブロックを構成する全ページをプロセスに割り当てる。カーネル１５は、確保されたページを解放する場合は、バディな空きブロックをまとめて、倍のサイズの１つのブロックにマージする。次に示す３つの条件を満たすとき、２つの空きブロックが互いにバディであると判断される。
（１）２つのブロックが同じ大きさである。
（２）２つのブロックが物理アドレス空間上で連続している。
（３）２つのブロックをまとめてできたブロックの先頭アドレスが、当該まとめてできたブロックのサイズでアラインされている。
【００１２】
図２は、３２ＫＢの仮想メモリ空間がバディシステムによって確保／解放される様子を説明する図である。この例では、ページサイズは１ＫＢであるとする。初期状態では、バディシステムは３２個の空きページを含む1つのブロックを持っている。８ＫＢ、すなわち８個のページがユーザ（プロセス）から要求された場合、８ページ分のブロックは見つからないため、バディシステムは持っている３２ページ分のブロックを２つの１６ページ分のブロックに分割する。さらに、バディシステムは、一方のブロックを選択し、２つの８ページ分のブロックに分割する。バディシステムは、ユーザに２つの８ページ分のブロックのうちの一方を割り当てる。ユーザからさらに４ＫＢ、すなわち４個のページが要求された場合には、バディシステムは、残っている、８ページ分のブロックを２つに分割し、一方をユーザに割り当てる。さらに４ＫＢが要求された場合には、バディシステムは、もう一方の４ページ分のブロックを割り当てる。その後、４KBの解放要求があった場合には、バディシステムは、解放した４ページ分のブロックがまとめられないか調べる。この場合は、同じ大きさのブロックがないためまとめられない。その後さらにユーザが４ＫＢの解放要求を行った場合には、バディシステムは、１つ前に解放された４ページ分のブロックが既にあるため、そのブロックと今回解放したブロックをまとめて、８ページ分のブロックにする。さらに８ＫＢの解放要求が来た場合、バディシステムは８ページ分のブロック同士をまとめ、できた１６ページ分のブロックを既にある１６ページ分のブロックとまとめ、最終的に３２ページ分の１つのブロックにまとめる。
【００１３】
ここで、本実施形態では、ＭＭＵ１１、ＴＬＢ１４およびページテーブル１６は、複数ページサイズをサポートしている。言い換えると、ＴＬＢ１４およびページテーブル１６を構成する夫々のエントリは、ページサイズの２の累乗倍のサイズの領域を示す。これにより、バディシステムの管理下のブロックを、ページ毎の複数のエントリではなく単一のエントリで指定することができるので、ＴＬＢ１４のエントリの消費量を削減することができ、結果としてＴＬＢミスが低減される。以下、ベースページより大きいサイズの領域（ここではページサイズの２の累乗倍のサイズの領域）をスーパーページと呼ぶ。また、ページサイズの領域をベースページと呼ぶことがある。以降、ページは、ベースページだけでなくスーパーページを含むものとする。夫々のエントリが示すページの先頭アドレスは、ページのサイズでアラインメントが取られているとする。
【００１４】
ここで、本発明の実施形態と比較される技術（以下、比較例にかかる技術という）を説明する。図３は、比較例にかかる技術によってメモリ領域が予約される様子を説明する図である。比較例にかかる技術によれば、８ＫＢのメモリ領域を確保する要求がなされた場合に、要求されたメモリ領域はヒープ領域のために当該要求されたメモリ領域以降もアクセスされる可能性が高いと判断される。そして、要求されたサイズより大きい、１６ＫＢ分の連続領域（点線で囲んだ部分）が予約される。後に予約されていた連続領域の大部分がアクセスまたはマッピングされたら、マッピング済みのページがマージされ、予約されていた連続領域が１つの１６ＫＢページとして再度マッピングされる。
【００１５】
図４は、比較例にかかる技術によって割り当て／解放が行われる場合におけるメモリ領域２０の状態およびＴＬＢ１４の消費エントリ数の推移を説明する図である。本図では、メモリ領域２０の下に、ＴＬＢ１４の消費エントリ数が記述されている。比較例にかかる技術によれば、最初に８ＫＢの確保要求があったときに、カーネルは１６ＫＢの連続領域を予約し、８ＫＢのページをマッピングする。そして、その後、夫々４ＫＢを確保する２回の要求が続き、予約された領域の全てがアクセスされたら、カーネルは、１つの８ＫＢのページと２つの４ＫＢのページをマージし、これらのページを１つの１６ＫＢページとしてマッピングし直す。
【００１６】
しかしながら、比較例にかかる技術によれば、カーネルは、スーパーページ分の連続領域を予約するかどうかを、後に予約連続領域の大部分にアクセスする可能性が高いかどうかで判断する。予約の必要なしと判断された場合には、カーネルは、従来通り、ベースページ（もしくは小さいスーパーページ）でのマッピングを行う。
【００１７】
図５は、比較例にかかる技術によって割り当て／解放が行われる場合におけるメモリ領域の状態およびＴＬＢ１４の消費エントリ数の推移を説明する別の図である。なお、ＴＬＢ１４は、最大で４つのエントリをキャッシュすることができるものとしている。８ＫＢ、４ＫＢ、２ＫＢ、８ＫＢ、４ＫＢのメモリ領域を確保する要求がこの順でなされ、領域の予約が行われない場合、図示するように、５つ目の要求に対応すると、ＴＬＢ１４の必要エントリ数が５となってしまい、ＴＬＢ１４があふれてしまう事態が発生する。これは、予約が行われなかったために、小さいページを大きいページにマージする処理が行われず、結果として必要なエントリ数が増大したことによる。なお、比較例にかかる技術によれば、予約が行われたとしても、予約された領域の大部分がアクセスまたはマッピングされるという条件が満たされない限り、ページのマージは行われない。
【００１８】
本実施形態では、ＴＬＢ１４が溢れる事態を防止するために、カーネル１５は、ＴＬＢ１４の空きエントリ数を考慮してスーパーページ分の連続領域の予約とマージとを行う。
【００１９】
図６は、メモリ領域の確保の際の情報処理装置１の動作を説明するフローチャートである。メモリ領域を確保する要求がなされた際、カーネル１５は、バディシステムの規則に則って、要求により指定されたサイズをベースページサイズ×（２の累乗）となるように切り上げて、確保予定のサイズを算出する（Ｓ１）。そして、カーネル１５は、確保予定のサイズ以上のサイズのブロックがあるか否かを判定する（Ｓ２）。確保予定のサイズ以上のサイズのブロックがない場合（Ｓ２、Ｎｏ）、カーネル１５は、メモリ領域の確保を行わずに動作を終了する。
【００２０】
確保予定のサイズ以上のサイズのブロックがある場合（Ｓ２、Ｙｅｓ）、カーネル１５は、確保予定のサイズに等しいサイズのブロックがあるか否かを判定する（Ｓ３）。確保予定のサイズに等しいサイズのブロックがない場合（Ｓ３、Ｎｏ）、カーネル１５は、空きブロックの総数がＴＬＢ１４の空きエントリ数と等しいか否かを判定する（Ｓ４）。空きブロックの総数がＴＬＢ１４の空きエントリ数と等しくない場合（Ｓ４、Ｎｏ）、即ち空きブロックの総数がＴＬＢ１４の空きエントリ数よりも少ない場合、カーネル１５は、バディシステムの規則に則り、確保予定のサイズよりも大きいサイズのブロックのうちの最小のブロックを分割する（Ｓ５）。そして、カーネル１５は、Ｓ３の判定処理を再び実行する。
【００２１】
空きブロックの分割を行うと、空きブロックの総数がＴＬＢ１４の空きエントリ数を越えてしまうため、それ以降に全ブロックが同じプロセスに割り当てられた場合にＴＬＢミスを起こす可能性がある。よって、空きブロックの総数がＴＬＢ１４の空きエントリ数と等しい場合（Ｓ４、Ｙｅｓ）、カーネル１５は、確保予定のサイズよりも大きいサイズのブロックのうちの最小のブロックを予約領域に設定する（Ｓ６）。
【００２２】
このように、カーネル１５は、空きブロック数がＴＬＢ１４の空きエントリ数を越えないように空きブロックの分割を行うので、プロセスに割り当て済みのメモリ領域に対応するＴＬＢ１４のエントリ数がＴＬＢの最大エントリ数を越えないことが保証される。そして、空きブロックの総数がＴＬＢ１４の空きエントリ数未満である場合には、カーネル１５は、空きブロックの分割を行う。
【００２３】
続いて、カーネル１５は、設定した予約領域は隣接する使用中のメモリ領域とマージすることが可能であるか否かを判定する（Ｓ７）。カーネル１５は、次の３つの条件が全て満たされているとき、２つのメモリ領域（予約領域および隣接する使用中のメモリ領域）は１つにマージすることが可能であると判定し、３つの条件のうちの１つでも満たされない場合には、マージすることは不可能であると判定する。
（４）２つのメモリ領域が仮想アドレス空間上と物理アドレス空間上の両方で隣接している。
（５）２つのメモリ領域が同じサイズである。
（６）マージ後のスーパーページの先頭の仮想アドレスと物理アドレスが、共にマージ後のスーパーページサイズでアラインされている。
【００２４】
２つのメモリ領域がマージ可能である場合には（Ｓ７、Ｙｅｓ）、カーネル１５は、２つのメモリ領域をマージして１つのスーパーページのメモリ領域として再マッピングする（Ｓ８）。そして、カーネル１５は、再マッピングにより生成されたスーパーページのメモリ領域をユーザに割り当てて（Ｓ９）、動作を終了する。２つのメモリ領域がマージ可能でない場合には（Ｓ７、Ｎｏ）、カーネル１５は、Ｓ９の処理において、予約領域をユーザに割り当てて、動作を終了する。なお、Ｓ７、Ｎｏの処理を経てＳ９の処理を実行したとき、カーネル１５は、予約領域をマッピングする。
【００２５】
図７は、メモリ領域の解放の際の情報処理装置１の動作を説明するフローチャートである。カーネル１５は、メモリ領域を解放する要求がなされた場合、バディシステムの規則に則り、解放対象のメモリ領域とマージすることが可能な空きブロック、即ち解放対象のメモリ領域のバディブロックが存在し、かつ、そのバディブロックが空きブロックであるか否かを判定する（Ｓ１１）。解放対象のメモリ領域とバディな空きブロックである場合（Ｓ１１、Ｙｅｓ）、カーネル１５は、解放対象のメモリ領域と、当該メモリ領域とバディな空きブロックとをマージして（Ｓ１２）、Ｓ１１の判定処理を再び実行する。なお、カーネル１５は、Ｓ１２の処理を経てＳ１１の判定処理を実行する際には、マージ後のブロックのバディブロックが空きブロックであるか否かを判定する。このようにして、カーネル１５は、マージ可能なバディブロックがなくなるまでマージを繰り返し、マージすることが可能な空きブロックが存在しない場合（Ｓ１１、Ｎｏ）、動作を終了する。
【００２６】
カーネル１５は、連続領域の予約を行うと、予約した分だけ使用可能なメモリ領域が少なくなるため、ある段階でメモリ領域の不足が発生する可能性がある。この時は使用していないページフレームをカーネル１５が回収する必要がある。図８は、使用していないページフレームを回収する際の情報処理装置１の動作を説明するフローチャートである。
【００２７】
始めに、カーネル１５は、既に予約されたメモリ領域内に、使用（アクセスまたはマッピング）されていないメモリ領域があるか否かを判定する（Ｓ２１）。使用されていないメモリ領域がない場合（Ｓ２１、Ｎｏ）、カーネル１５は、動作を終了する。
【００２８】
予約領域内に使用されていないメモリ領域がある場合（Ｓ２１、Ｙｅｓ）、カーネル１５は、ＴＬＢ１４の空きエントリ数に余裕があるか否かを判定する（Ｓ２２）。具体的には、カーネル１５は、この予約領域を後述のＳ２３の処理に従って分割すると空きブロックの総数がＴＬＢ１４の空きエントリ数以上の値となるか否かを判定する。ＴＬＢ１４の空きエントリ数に余裕がある場合（Ｓ２２、Ｙｅｓ）、カーネル１５は、この予約領域をバディシステムの規則に則って分割し、予約領域のうちの使用されていない領域を空きブロックとして回収するとともに予約領域のうちの使用されているメモリ領域をマッピングし直す（Ｓ２３）。予約領域内に使用していない領域がない場合（Ｓ２１、Ｎｏ）、またはＴＬＢ１４の空きブロック数に余裕がない場合（Ｓ２２、Ｎｏ）、カーネル１５は、動作を終了する。
【００２９】
なお、カーネル１５は、図８の処理を、メモリ領域が不足したときだけでなく、どのようなタイミングで実行するようにしてもよい。例えば定期的に実行するなどしてもよい。なお、ページフレーム回収対象のＴＬＢ１４は、分割しようとするメモリ領域が割り当てられているプロセスのエントリであることに注意が必要である。この方式を実現するために、カーネル１５は各プロセスに対応するＴＬＢ１４の空きエントリ数をプロセス毎に管理しておくようにするとよい。
【００３０】
図９は、本実施形態の情報処理装置１におけるメモリ領域の状態およびＴＬＢ１４の消費エントリ数の推移を説明する図である。最初の８ＫＢのメモリ領域の確保および４ＫＢのメモリ領域の確保の際には、カーネル１５は、バディシステムの規則に則ってページの割り当ておよびマッピングを実行する。次に、２ＫＢのメモリ領域の確保のとき、空きブロックの総数が２であり、空きエントリ数が２であるので、空きブロックの総数と空きエントリ数が等しい。したがって、カーネル１５は、これ以上に空きブロックの分割を行わずに、４ＫＢのブロックを予約領域とする。ここで、予約領域とした４ＫＢのブロックは、当該ブロックに隣接する割り当て済の４ＫＢのブロックとマージできるので、カーネル１５は、２つのブロックをマージして８ＫＢのブロックとする。さらに、マージにより生成された８ＫＢのブロックは、このブロックに隣接する割り当て済みの８ＫＢのブロックとマージできるので、カーネル１５は２つの８ＫＢのブロックをマージして１６ＫＢのブロックを生成する。カーネル１５は、最終的にこの１６ＫＢのブロックを予約領域とするとともにマッピングし、ユーザに割り当てる。この予約とマージにより、それ以降に８ＫＢのメモリ領域の確保要求や４ＫＢのメモリ領域の確保要求がなされても、ＴＬＢ１４のエントリがあふれることなくメモリを割り当てることが可能である。
【００３１】
なお、以上の説明においては、情報処理装置１は、コア１０を１つしか有さないものとして説明したが、本発明の実施形態は、コア１０を複数有する情報処理装置であっても適用することができる。
【００３２】
図１０および図１１は、本発明の実施形態の情報処理装置１の別の構成図である。図１０に示す情報処理装置１は、コア１０を複数（ここでは２個）備え、コア１０毎にＭＭＵ１１を備えている。そして、夫々のＭＭＵ１１は、ＴＬＢ１４を備えている。図１０の情報処理装置１において、カーネル１５は、メモリ領域の確保または解放する要求を行ったコア１０に接続されたＭＭＵ１１が持つＴＬＢ１４の空きエントリ数を考慮してメモリ領域の確保・解放を行う。また、カーネル１５は、夫々のＭＭＵ１１が備えるＴＬＢ１４の空きエントリ数を、ＭＭＵ１１毎に管理する。
【００３３】
図１１に示す情報処理装置１は、複数（ここでは２個）のコア１０とこれらのコア１０のメモリ１２に対するアクセスを処理する１個のＭＭＵ１１とを備えるクラスタ２を、複数（ここでは２個）備えている。図１１の情報処理装置１において、カーネル１５は、メモリ領域の確保または解放する要求を行ったコア１０が属するクラスタ２が備えるＭＭＵ１２が持つＴＬＢ１４の空きエントリ数を考慮して、メモリ領域の確保・解放を行う。また、カーネル１５は、夫々のクラスタ２が備えるＴＬＢ１４の空きエントリ数を、クラスタ２毎に管理する。
【００３４】
このように、本発明の実施形態によれば、カーネル１５は、空きブロック数がＴＬＢ１４の空きエントリ数を越えないようにプロセスに空きブロックを割り当てるようにしたので、ＴＬＢミスを発生させないようにすることができる。
【００３５】
また、カーネル１５は、プロセスがメモリ領域を確保する要求を行った場合、空きブロック数がＴＬＢの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し（Ｓ３〜Ｓ６）、割り当て対象の空きブロックをプロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した１つのエントリをページテーブルに登録する（Ｓ９）、ようにしたので、空きブロック数がＴＬＢ１４の空きエントリ数を越えないことが保証される。
【００３６】
また、カーネル１５は、プロセスから要求されたメモリ領域のサイズをベースページサイズの２のべき乗のサイズで切り上げて、第１サイズを算出し（Ｓ１）、第１サイズの空きブロックがある場合（Ｓ３、Ｙｅｓ）、第１サイズの空きブロックを割り当て対象の空きブロックに決定し（Ｓ９）、第１サイズの空きブロックがなく（Ｓ３、Ｎｏ）、かつ、空きブロックの総数と前記ＴＬＢの空きエントリ数とが等しい場合（Ｓ４、Ｙｅｓ）、第１サイズよりも大きい第２サイズの空きブロックを割り当て対象の空きブロックに決定する（Ｓ６、Ｓ９）、ようにしたので、空きブロック数がＴＬＢ１４の空きエントリ数を越えないことが保証される。
【００３７】
また、カーネル１５は、第１サイズの空きブロックがなく（Ｓ３、Ｎｏ）、かつ、空きブロックの総数がＴＬＢの空きエントリ数よりも小さい場合（Ｓ４、Ｎｏ）、最小サイズの空きブロックを分割する（Ｓ５）、ようにしたので、空きブロック数がＴＬＢ１４の空きエントリ数を越えないことが保証される。
【００３８】
また、カーネル１５は、割り当て対象の空きブロックがプロセスに割り当て済みの何れかのブロックとマージすることが可能である場合に（Ｓ７、Ｙｅｓ）、割り当て対象の空きブロックと割り当て済みのブロックとをマージして、ＴＬＢのエントリを整理する（Ｓ８）、ようにしたので、空きブロック数ができるだけ大きくなるようにすることができる。
【００３９】
また、カーネル１５は、プロセスに割り当て済みのブロックのうちの第２サイズのブロックが前記プロセスが使用していないメモリ領域を有する場合（Ｓ２１、Ｙｅｓ）、空きブロック数がＴＬＢの空きエントリ数を越えないように、かつ、プロセスが使用していないメモリ領域が空きブロックとなるように、第２サイズのブロックを分割して、ＴＬＢを更新する（Ｓ２３）、ようにしたので、ＴＬＢミスの発生を抑制しつつメモリ領域を効率的に使用することができるようになる。
【００４０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４１】
１  情報処理装置、２  クラスタ、１０  コア、１１  ＭＭＵ、１２  メモリ、１３  バス、１４  ＴＬＢ、１５  カーネルプログラム、１６  ページテーブル  ２０  メモリ領域。
【図１】
2013200685.tif 000003
【図２】
2013200685.tif 000004
【図３】
2013200685.tif 000005
【図４】
2013200685.tif 000006
【図５】
2013200685.tif 000007
【図６】
2013200685.tif 000008
【図７】
2013200685.tif 000009
【図８】
2013200685.tif 000010
【図９】
2013200685.tif 000011
【図１０】
2013200685.tif 000012
【図１１】
2013200685.tif 000013