JP2013200685A - メモリ管理方法および情報処理装置 - Google Patents
メモリ管理方法および情報処理装置 Download PDFInfo
- Publication number
- JP2013200685A JP2013200685A JP2012068192A JP2012068192A JP2013200685A JP 2013200685 A JP2013200685 A JP 2013200685A JP 2012068192 A JP2012068192 A JP 2012068192A JP 2012068192 A JP2012068192 A JP 2012068192A JP 2013200685 A JP2013200685 A JP 2013200685A
- Authority
- JP
- Japan
- Prior art keywords
- block
- size
- tlb
- free
- memory area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 28
- 238000007726 management method Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000013507 mapping Methods 0.000 claims description 4
- 230000000052 comparative effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】情報処理装置におけるTLBミスを低減する。
【解決手段】バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの1つのエントリで管理するメモリ管理方法であって、空きブロック数がTLBの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し、プロセスに割り当てるとともに、割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した1つのエントリをページテーブルにマッピングする。
【選択図】図6
【解決手段】バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの1つのエントリで管理するメモリ管理方法であって、空きブロック数がTLBの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し、プロセスに割り当てるとともに、割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した1つのエントリをページテーブルにマッピングする。
【選択図】図6
Description
本発明の実施形態は、メモリ管理方法および情報処理装置に関する。
単一のページサイズのみをサポートするMMU(Memory Management Unit)を持つプロセッサは、アドレスが連続した一塊のメモリ領域に対して多くのTLB(Translation Look-aside Buffer)エントリを消費する。その結果、TLBミスが多発し、プロセッサの性能低下が起こる。よって、近年のMMUは、複数のページサイズをサポートしている。
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.
本発明の一つの実施形態は、TLBミスを低減するメモリ管理方法および情報処理装置を提供することを目的とする。
本発明の一つの実施形態によれば、バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの1つのエントリで管理するメモリ管理方法であって、空きブロック数がTLBの空きエントリ数を越えないようにプロセスに空きブロックを割り当てる、ことを特徴とするメモリ管理方法が提供される。
以下に図面を参照して、実施形態にかかるメモリ管理方法および情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
図1は、本発明の実施形態の情報処理装置の構成図である。情報処理装置1は、コア(プロセッサコア)10、MMU11、メモリ12、およびバス13を備えている。メモリ12はバス13に接続されている。コア10は、MMU11を介してバス13に接続されている。なお、コア10、MMU11、およびメモリ12を互いに接続するためのネットワークトポロジーは、バス方式だけに限定されない。本実施形態の情報処理装置1は、メッシュなど他のネットワークトポロジーを採用することができる。
図1は、本発明の実施形態の情報処理装置の構成図である。情報処理装置1は、コア(プロセッサコア)10、MMU11、メモリ12、およびバス13を備えている。メモリ12はバス13に接続されている。コア10は、MMU11を介してバス13に接続されている。なお、コア10、MMU11、およびメモリ12を互いに接続するためのネットワークトポロジーは、バス方式だけに限定されない。本実施形態の情報処理装置1は、メッシュなど他のネットワークトポロジーを採用することができる。
メモリ12は、カーネルプログラム15を予め記憶している。また、プロセスに割り当て可能なメモリ領域20を有している。カーネルプログラム15(以下、単にカーネル15)は、コア10を管理する。カーネル15は、コア10によって実行され、コア10で実行されるプロセスに対してメモリ領域20内の一部または全部の割り当てを実行する。なお、プロセスは、仮想アドレスを用いてメモリ領域20を参照する。カーネル15は、メモリ割り当てを行った際、プロセスに対して割り当てた領域の仮想アドレスを、メモリ12の物理アドレスと対にしてページテーブル16に登録する。以下、ページテーブル16へのエントリの登録を単にマッピングと呼ぶ。
MMU11は、コア10からのメモリ12に対するアクセスを処理するユニットである。MMU11は、ページテーブル16のうちの所定の数のエントリをキャッシュするTLB14を備えている。MMU11は、コア10から要求された仮想アドレスにかかるエントリがTLB14にキャッシュされている場合には、当該エントリを用いて仮想アドレスと物理アドレスとの変換を実行し、変換によって得られた物理アドレスにアクセスする。TLB14に要求された仮想アドレスにかかるエントリがTLB14にキャッシュされていないとき、即ちTLBミスが発生したとき、MMU11は、ページテーブル16を参照して該当するエントリを探しに行く。このように、TLBミスはページテーブル16の参照処理を引き起こすので、TLBミスの発生を出来るだけ低減することが望ましい。なお、TLB14の全エントリは、コア10が実行しているプロセスが切り替えられると同時に切り替えられる。
カーネル15は、さらに、メモリ領域20の管理を実行する。ここでは、メモリ管理のアルゴリズムとしてバディシステム(バディ割り当てアルゴリズム)が採用される。バディシステムによれば、全ての空きページが、連続した2の累乗個のページからなるブロックで管理される。プロセスから連続したページを確保する要求があった場合、カーネル15は、要求されたページ数が2の累乗となるように確保予定のページ数を切り上げる。そして、カーネル15は、切り上げたページ数分のブロックを探す。確保予定のサイズのブロックが見つかれば、バディシステムは、そのブロック内の全ページをユーザに割り当てる。もし見つからなければ、カーネル15は、より大きいブロックを見つけ、それを2つの同じサイズのブロックに分割する。このようにして生成された同一サイズの2つのブロックを、互いにバディなブロックと呼ぶ。カーネル15は、互いにバディなブロックのうちの一方を選択し、ブロックサイズが、確保予定のページ数の分のサイズになるまで分割を続け、分割により生成されたブロックのサイズが確保予定のページ数分のサイズに一致したとき、そのブロックを構成する全ページをプロセスに割り当てる。カーネル15は、確保されたページを解放する場合は、バディな空きブロックをまとめて、倍のサイズの1つのブロックにマージする。次に示す3つの条件を満たすとき、2つの空きブロックが互いにバディであると判断される。
(1)2つのブロックが同じ大きさである。
(2)2つのブロックが物理アドレス空間上で連続している。
(3)2つのブロックをまとめてできたブロックの先頭アドレスが、当該まとめてできたブロックのサイズでアラインされている。
(1)2つのブロックが同じ大きさである。
(2)2つのブロックが物理アドレス空間上で連続している。
(3)2つのブロックをまとめてできたブロックの先頭アドレスが、当該まとめてできたブロックのサイズでアラインされている。
図2は、32KBの仮想メモリ空間がバディシステムによって確保/解放される様子を説明する図である。この例では、ページサイズは1KBであるとする。初期状態では、バディシステムは32個の空きページを含む1つのブロックを持っている。8KB、すなわち8個のページがユーザ(プロセス)から要求された場合、8ページ分のブロックは見つからないため、バディシステムは持っている32ページ分のブロックを2つの16ページ分のブロックに分割する。さらに、バディシステムは、一方のブロックを選択し、2つの8ページ分のブロックに分割する。バディシステムは、ユーザに2つの8ページ分のブロックのうちの一方を割り当てる。ユーザからさらに4KB、すなわち4個のページが要求された場合には、バディシステムは、残っている、8ページ分のブロックを2つに分割し、一方をユーザに割り当てる。さらに4KBが要求された場合には、バディシステムは、もう一方の4ページ分のブロックを割り当てる。その後、4KBの解放要求があった場合には、バディシステムは、解放した4ページ分のブロックがまとめられないか調べる。この場合は、同じ大きさのブロックがないためまとめられない。その後さらにユーザが4KBの解放要求を行った場合には、バディシステムは、1つ前に解放された4ページ分のブロックが既にあるため、そのブロックと今回解放したブロックをまとめて、8ページ分のブロックにする。さらに8KBの解放要求が来た場合、バディシステムは8ページ分のブロック同士をまとめ、できた16ページ分のブロックを既にある16ページ分のブロックとまとめ、最終的に32ページ分の1つのブロックにまとめる。
ここで、本実施形態では、MMU11、TLB14およびページテーブル16は、複数ページサイズをサポートしている。言い換えると、TLB14およびページテーブル16を構成する夫々のエントリは、ページサイズの2の累乗倍のサイズの領域を示す。これにより、バディシステムの管理下のブロックを、ページ毎の複数のエントリではなく単一のエントリで指定することができるので、TLB14のエントリの消費量を削減することができ、結果としてTLBミスが低減される。以下、ベースページより大きいサイズの領域(ここではページサイズの2の累乗倍のサイズの領域)をスーパーページと呼ぶ。また、ページサイズの領域をベースページと呼ぶことがある。以降、ページは、ベースページだけでなくスーパーページを含むものとする。夫々のエントリが示すページの先頭アドレスは、ページのサイズでアラインメントが取られているとする。
ここで、本発明の実施形態と比較される技術(以下、比較例にかかる技術という)を説明する。図3は、比較例にかかる技術によってメモリ領域が予約される様子を説明する図である。比較例にかかる技術によれば、8KBのメモリ領域を確保する要求がなされた場合に、要求されたメモリ領域はヒープ領域のために当該要求されたメモリ領域以降もアクセスされる可能性が高いと判断される。そして、要求されたサイズより大きい、16KB分の連続領域(点線で囲んだ部分)が予約される。後に予約されていた連続領域の大部分がアクセスまたはマッピングされたら、マッピング済みのページがマージされ、予約されていた連続領域が1つの16KBページとして再度マッピングされる。
図4は、比較例にかかる技術によって割り当て/解放が行われる場合におけるメモリ領域20の状態およびTLB14の消費エントリ数の推移を説明する図である。本図では、メモリ領域20の下に、TLB14の消費エントリ数が記述されている。比較例にかかる技術によれば、最初に8KBの確保要求があったときに、カーネルは16KBの連続領域を予約し、8KBのページをマッピングする。そして、その後、夫々4KBを確保する2回の要求が続き、予約された領域の全てがアクセスされたら、カーネルは、1つの8KBのページと2つの4KBのページをマージし、これらのページを1つの16KBページとしてマッピングし直す。
しかしながら、比較例にかかる技術によれば、カーネルは、スーパーページ分の連続領域を予約するかどうかを、後に予約連続領域の大部分にアクセスする可能性が高いかどうかで判断する。予約の必要なしと判断された場合には、カーネルは、従来通り、ベースページ(もしくは小さいスーパーページ)でのマッピングを行う。
図5は、比較例にかかる技術によって割り当て/解放が行われる場合におけるメモリ領域の状態およびTLB14の消費エントリ数の推移を説明する別の図である。なお、TLB14は、最大で4つのエントリをキャッシュすることができるものとしている。8KB、4KB、2KB、8KB、4KBのメモリ領域を確保する要求がこの順でなされ、領域の予約が行われない場合、図示するように、5つ目の要求に対応すると、TLB14の必要エントリ数が5となってしまい、TLB14があふれてしまう事態が発生する。これは、予約が行われなかったために、小さいページを大きいページにマージする処理が行われず、結果として必要なエントリ数が増大したことによる。なお、比較例にかかる技術によれば、予約が行われたとしても、予約された領域の大部分がアクセスまたはマッピングされるという条件が満たされない限り、ページのマージは行われない。
本実施形態では、TLB14が溢れる事態を防止するために、カーネル15は、TLB14の空きエントリ数を考慮してスーパーページ分の連続領域の予約とマージとを行う。
図6は、メモリ領域の確保の際の情報処理装置1の動作を説明するフローチャートである。メモリ領域を確保する要求がなされた際、カーネル15は、バディシステムの規則に則って、要求により指定されたサイズをベースページサイズ×(2の累乗)となるように切り上げて、確保予定のサイズを算出する(S1)。そして、カーネル15は、確保予定のサイズ以上のサイズのブロックがあるか否かを判定する(S2)。確保予定のサイズ以上のサイズのブロックがない場合(S2、No)、カーネル15は、メモリ領域の確保を行わずに動作を終了する。
確保予定のサイズ以上のサイズのブロックがある場合(S2、Yes)、カーネル15は、確保予定のサイズに等しいサイズのブロックがあるか否かを判定する(S3)。確保予定のサイズに等しいサイズのブロックがない場合(S3、No)、カーネル15は、空きブロックの総数がTLB14の空きエントリ数と等しいか否かを判定する(S4)。空きブロックの総数がTLB14の空きエントリ数と等しくない場合(S4、No)、即ち空きブロックの総数がTLB14の空きエントリ数よりも少ない場合、カーネル15は、バディシステムの規則に則り、確保予定のサイズよりも大きいサイズのブロックのうちの最小のブロックを分割する(S5)。そして、カーネル15は、S3の判定処理を再び実行する。
空きブロックの分割を行うと、空きブロックの総数がTLB14の空きエントリ数を越えてしまうため、それ以降に全ブロックが同じプロセスに割り当てられた場合にTLBミスを起こす可能性がある。よって、空きブロックの総数がTLB14の空きエントリ数と等しい場合(S4、Yes)、カーネル15は、確保予定のサイズよりも大きいサイズのブロックのうちの最小のブロックを予約領域に設定する(S6)。
このように、カーネル15は、空きブロック数がTLB14の空きエントリ数を越えないように空きブロックの分割を行うので、プロセスに割り当て済みのメモリ領域に対応するTLB14のエントリ数がTLBの最大エントリ数を越えないことが保証される。そして、空きブロックの総数がTLB14の空きエントリ数未満である場合には、カーネル15は、空きブロックの分割を行う。
続いて、カーネル15は、設定した予約領域は隣接する使用中のメモリ領域とマージすることが可能であるか否かを判定する(S7)。カーネル15は、次の3つの条件が全て満たされているとき、2つのメモリ領域(予約領域および隣接する使用中のメモリ領域)は1つにマージすることが可能であると判定し、3つの条件のうちの1つでも満たされない場合には、マージすることは不可能であると判定する。
(4)2つのメモリ領域が仮想アドレス空間上と物理アドレス空間上の両方で隣接している。
(5)2つのメモリ領域が同じサイズである。
(6)マージ後のスーパーページの先頭の仮想アドレスと物理アドレスが、共にマージ後のスーパーページサイズでアラインされている。
(4)2つのメモリ領域が仮想アドレス空間上と物理アドレス空間上の両方で隣接している。
(5)2つのメモリ領域が同じサイズである。
(6)マージ後のスーパーページの先頭の仮想アドレスと物理アドレスが、共にマージ後のスーパーページサイズでアラインされている。
2つのメモリ領域がマージ可能である場合には(S7、Yes)、カーネル15は、2つのメモリ領域をマージして1つのスーパーページのメモリ領域として再マッピングする(S8)。そして、カーネル15は、再マッピングにより生成されたスーパーページのメモリ領域をユーザに割り当てて(S9)、動作を終了する。2つのメモリ領域がマージ可能でない場合には(S7、No)、カーネル15は、S9の処理において、予約領域をユーザに割り当てて、動作を終了する。なお、S7、Noの処理を経てS9の処理を実行したとき、カーネル15は、予約領域をマッピングする。
図7は、メモリ領域の解放の際の情報処理装置1の動作を説明するフローチャートである。カーネル15は、メモリ領域を解放する要求がなされた場合、バディシステムの規則に則り、解放対象のメモリ領域とマージすることが可能な空きブロック、即ち解放対象のメモリ領域のバディブロックが存在し、かつ、そのバディブロックが空きブロックであるか否かを判定する(S11)。解放対象のメモリ領域とバディな空きブロックである場合(S11、Yes)、カーネル15は、解放対象のメモリ領域と、当該メモリ領域とバディな空きブロックとをマージして(S12)、S11の判定処理を再び実行する。なお、カーネル15は、S12の処理を経てS11の判定処理を実行する際には、マージ後のブロックのバディブロックが空きブロックであるか否かを判定する。このようにして、カーネル15は、マージ可能なバディブロックがなくなるまでマージを繰り返し、マージすることが可能な空きブロックが存在しない場合(S11、No)、動作を終了する。
カーネル15は、連続領域の予約を行うと、予約した分だけ使用可能なメモリ領域が少なくなるため、ある段階でメモリ領域の不足が発生する可能性がある。この時は使用していないページフレームをカーネル15が回収する必要がある。図8は、使用していないページフレームを回収する際の情報処理装置1の動作を説明するフローチャートである。
始めに、カーネル15は、既に予約されたメモリ領域内に、使用(アクセスまたはマッピング)されていないメモリ領域があるか否かを判定する(S21)。使用されていないメモリ領域がない場合(S21、No)、カーネル15は、動作を終了する。
予約領域内に使用されていないメモリ領域がある場合(S21、Yes)、カーネル15は、TLB14の空きエントリ数に余裕があるか否かを判定する(S22)。具体的には、カーネル15は、この予約領域を後述のS23の処理に従って分割すると空きブロックの総数がTLB14の空きエントリ数以上の値となるか否かを判定する。TLB14の空きエントリ数に余裕がある場合(S22、Yes)、カーネル15は、この予約領域をバディシステムの規則に則って分割し、予約領域のうちの使用されていない領域を空きブロックとして回収するとともに予約領域のうちの使用されているメモリ領域をマッピングし直す(S23)。予約領域内に使用していない領域がない場合(S21、No)、またはTLB14の空きブロック数に余裕がない場合(S22、No)、カーネル15は、動作を終了する。
なお、カーネル15は、図8の処理を、メモリ領域が不足したときだけでなく、どのようなタイミングで実行するようにしてもよい。例えば定期的に実行するなどしてもよい。なお、ページフレーム回収対象のTLB14は、分割しようとするメモリ領域が割り当てられているプロセスのエントリであることに注意が必要である。この方式を実現するために、カーネル15は各プロセスに対応するTLB14の空きエントリ数をプロセス毎に管理しておくようにするとよい。
図9は、本実施形態の情報処理装置1におけるメモリ領域の状態およびTLB14の消費エントリ数の推移を説明する図である。最初の8KBのメモリ領域の確保および4KBのメモリ領域の確保の際には、カーネル15は、バディシステムの規則に則ってページの割り当ておよびマッピングを実行する。次に、2KBのメモリ領域の確保のとき、空きブロックの総数が2であり、空きエントリ数が2であるので、空きブロックの総数と空きエントリ数が等しい。したがって、カーネル15は、これ以上に空きブロックの分割を行わずに、4KBのブロックを予約領域とする。ここで、予約領域とした4KBのブロックは、当該ブロックに隣接する割り当て済の4KBのブロックとマージできるので、カーネル15は、2つのブロックをマージして8KBのブロックとする。さらに、マージにより生成された8KBのブロックは、このブロックに隣接する割り当て済みの8KBのブロックとマージできるので、カーネル15は2つの8KBのブロックをマージして16KBのブロックを生成する。カーネル15は、最終的にこの16KBのブロックを予約領域とするとともにマッピングし、ユーザに割り当てる。この予約とマージにより、それ以降に8KBのメモリ領域の確保要求や4KBのメモリ領域の確保要求がなされても、TLB14のエントリがあふれることなくメモリを割り当てることが可能である。
なお、以上の説明においては、情報処理装置1は、コア10を1つしか有さないものとして説明したが、本発明の実施形態は、コア10を複数有する情報処理装置であっても適用することができる。
図10および図11は、本発明の実施形態の情報処理装置1の別の構成図である。図10に示す情報処理装置1は、コア10を複数(ここでは2個)備え、コア10毎にMMU11を備えている。そして、夫々のMMU11は、TLB14を備えている。図10の情報処理装置1において、カーネル15は、メモリ領域の確保または解放する要求を行ったコア10に接続されたMMU11が持つTLB14の空きエントリ数を考慮してメモリ領域の確保・解放を行う。また、カーネル15は、夫々のMMU11が備えるTLB14の空きエントリ数を、MMU11毎に管理する。
図11に示す情報処理装置1は、複数(ここでは2個)のコア10とこれらのコア10のメモリ12に対するアクセスを処理する1個のMMU11とを備えるクラスタ2を、複数(ここでは2個)備えている。図11の情報処理装置1において、カーネル15は、メモリ領域の確保または解放する要求を行ったコア10が属するクラスタ2が備えるMMU12が持つTLB14の空きエントリ数を考慮して、メモリ領域の確保・解放を行う。また、カーネル15は、夫々のクラスタ2が備えるTLB14の空きエントリ数を、クラスタ2毎に管理する。
このように、本発明の実施形態によれば、カーネル15は、空きブロック数がTLB14の空きエントリ数を越えないようにプロセスに空きブロックを割り当てるようにしたので、TLBミスを発生させないようにすることができる。
また、カーネル15は、プロセスがメモリ領域を確保する要求を行った場合、空きブロック数がTLBの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し(S3〜S6)、割り当て対象の空きブロックをプロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した1つのエントリをページテーブルに登録する(S9)、ようにしたので、空きブロック数がTLB14の空きエントリ数を越えないことが保証される。
また、カーネル15は、プロセスから要求されたメモリ領域のサイズをベースページサイズの2のべき乗のサイズで切り上げて、第1サイズを算出し(S1)、第1サイズの空きブロックがある場合(S3、Yes)、第1サイズの空きブロックを割り当て対象の空きブロックに決定し(S9)、第1サイズの空きブロックがなく(S3、No)、かつ、空きブロックの総数と前記TLBの空きエントリ数とが等しい場合(S4、Yes)、第1サイズよりも大きい第2サイズの空きブロックを割り当て対象の空きブロックに決定する(S6、S9)、ようにしたので、空きブロック数がTLB14の空きエントリ数を越えないことが保証される。
また、カーネル15は、第1サイズの空きブロックがなく(S3、No)、かつ、空きブロックの総数がTLBの空きエントリ数よりも小さい場合(S4、No)、最小サイズの空きブロックを分割する(S5)、ようにしたので、空きブロック数がTLB14の空きエントリ数を越えないことが保証される。
また、カーネル15は、割り当て対象の空きブロックがプロセスに割り当て済みの何れかのブロックとマージすることが可能である場合に(S7、Yes)、割り当て対象の空きブロックと割り当て済みのブロックとをマージして、TLBのエントリを整理する(S8)、ようにしたので、空きブロック数ができるだけ大きくなるようにすることができる。
また、カーネル15は、プロセスに割り当て済みのブロックのうちの第2サイズのブロックが前記プロセスが使用していないメモリ領域を有する場合(S21、Yes)、空きブロック数がTLBの空きエントリ数を越えないように、かつ、プロセスが使用していないメモリ領域が空きブロックとなるように、第2サイズのブロックを分割して、TLBを更新する(S23)、ようにしたので、TLBミスの発生を抑制しつつメモリ領域を効率的に使用することができるようになる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 情報処理装置、2 クラスタ、10 コア、11 MMU、12 メモリ、13 バス、14 TLB、15 カーネルプログラム、16 ページテーブル 20 メモリ領域。
Claims (5)
- バディ割り当てアルゴリズムに基づいてメモリ領域の空きブロックを管理するとともに、スーパーページのサイズを有するメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係をページテーブルの1つのエントリで管理するメモリ管理方法であって
前記プロセスがメモリ領域を確保する要求を行った場合、空きブロック数がTLBの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成する分割ステップと、
前記割り当て対象の空きブロックを前記プロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した1つのエントリを前記ページテーブルに登録するマッピングステップと、
を備えることを特徴とするメモリ管理方法。 - 前記プロセスから要求されたメモリ領域のサイズをベースページサイズの2のべき乗のサイズで切り上げて、第1サイズを算出するサイズ算出ステップをさらに備え、
前記分割ステップは、
前記第1サイズの空きブロックがある場合、前記第1サイズの空きブロックを前記割り当て対象の空きブロックに決定し、前記第1サイズの空きブロックがなく、かつ、空きブロックの総数と前記TLBの空きエントリ数とが等しい場合、前記第1サイズよりも大きい第2サイズの空きブロックを前記割り当て対象の空きブロックに決定する、割り当て対象決定ステップ、
を備えることを特徴とする請求項1に記載のメモリ管理方法。 - 前記分割ステップは、前記第1サイズの空きブロックがなく、かつ、空きブロックの総数が前記TLBの空きエントリ数よりも小さい場合、最小サイズの空きブロックを分割するステップを備える、
ことを特徴とする請求項2に記載のメモリ管理方法。 - 前記プロセスに割り当て済みのブロックのうちの前記第2サイズのブロックが前記プロセスが使用していないメモリ領域を有する場合、空きブロック数がTLBの空きエントリ数を越えないように、かつ、前記プロセスが使用していないメモリ領域が空きブロックとなるように、前記第2サイズのブロックを分割して、前記TLBを更新する、第2の再マッピングステップをさらに備える、
ことを特徴とする請求項3に記載のメモリ管理方法。 - プロセスを実行するプロセッサコアと、
前記プロセスに割り当てられるメモリ領域を備え、前記プロセスに割り当てられたメモリ領域にかかる仮想アドレスと物理アドレスとの対応関係を記述するページテーブルを記憶するメモリと、
前記ページテーブルのうちの前記プロセスに割り当てられたメモリ領域にかかるエントリをキャッシュするTLBを備え、当該TLBを用いて前記プロセッサによる前記メモリ領域に対するアクセスを処理するメモリ管理ユニットと、
を備え、
前記プロセッサコアは、
バディ割り当てアルゴリズムに基づいて前記メモリの空きブロックを管理するとともに、前記メモリのうちのスーパーページのサイズを有するブロックにかかる仮想アドレスと物理アドレスとの対応関係を前記ページテーブルの1つのエントリで管理し、
前記プロセスがメモリ領域を確保する要求を行った場合、空きブロック数が前記TLBの空きエントリ数を越えないように空きブロックの分割を行って、割り当て対象の空きブロックを生成し、
前記割り当て対象の空きブロックを前記プロセスに割り当てるとともに、当該割り当てたブロックにかかる仮想アドレスと物理アドレスとの対応関係を記述した1つのエントリを前記ページテーブルに登録する、
ことを備えることを特徴とする情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068192A JP2013200685A (ja) | 2012-03-23 | 2012-03-23 | メモリ管理方法および情報処理装置 |
US13/614,141 US20130254512A1 (en) | 2012-03-23 | 2012-09-13 | Memory management method and information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068192A JP2013200685A (ja) | 2012-03-23 | 2012-03-23 | メモリ管理方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013200685A true JP2013200685A (ja) | 2013-10-03 |
Family
ID=49213454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012068192A Pending JP2013200685A (ja) | 2012-03-23 | 2012-03-23 | メモリ管理方法および情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130254512A1 (ja) |
JP (1) | JP2013200685A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9245626B2 (en) * | 2012-10-26 | 2016-01-26 | Cisco Technology, Inc. | System and method for packet classification and internet protocol lookup in a network environment |
KR102225525B1 (ko) * | 2014-04-08 | 2021-03-09 | 삼성전자 주식회사 | 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 |
CN104182356B (zh) * | 2014-09-19 | 2017-06-27 | 深圳市茁壮网络股份有限公司 | 一种内存管理方法、装置及终端设备 |
CN108062314B (zh) * | 2016-11-07 | 2021-09-14 | 北京京东尚科信息技术有限公司 | 动态分表数据处理方法和装置 |
CN108647150A (zh) * | 2018-04-14 | 2018-10-12 | 温州职业技术学院 | 一种内存管理方法及系统 |
CN113505101B (zh) * | 2021-07-13 | 2023-07-07 | 电子科技大学 | 一种基于vfs的内核文件系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6412053B2 (en) * | 1998-08-26 | 2002-06-25 | Compaq Computer Corporation | System method and apparatus for providing linearly scalable dynamic memory management in a multiprocessing system |
US7747838B2 (en) * | 2007-05-19 | 2010-06-29 | International Business Machines Corporation | Method and apparatus for dynamically adjusting page size in a virtual memory range |
-
2012
- 2012-03-23 JP JP2012068192A patent/JP2013200685A/ja active Pending
- 2012-09-13 US US13/614,141 patent/US20130254512A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20130254512A1 (en) | 2013-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110869913B (zh) | 用于数据处理网络的存储器系统 | |
US10552337B2 (en) | Memory management and device | |
US10282299B2 (en) | Managing cache partitions based on cache usage information | |
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
US7899994B2 (en) | Providing quality of service (QoS) for cache architectures using priority information | |
JP2013200685A (ja) | メモリ管理方法および情報処理装置 | |
US6742104B2 (en) | Master/slave processing system with shared translation lookaside buffer | |
US7921276B2 (en) | Applying quality of service (QoS) to a translation lookaside buffer (TLB) | |
US10168960B2 (en) | Reducing page invalidation broadcasts in virtual storage management | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
US7774564B2 (en) | Multi-processor system, and method of distributing memory access load in multi-processor system | |
Beckmann et al. | Scaling distributed cache hierarchies through computation and data co-scheduling | |
US10628318B2 (en) | Cache sector usage prediction | |
US10031854B2 (en) | Memory system | |
US10108553B2 (en) | Memory management method and device and memory controller | |
KR101587579B1 (ko) | 가상화 시스템에서 메모리 조정방법 | |
US11232033B2 (en) | Application aware SoC memory cache partitioning | |
US8707006B2 (en) | Cache index coloring for virtual-address dynamic allocators | |
JP6042170B2 (ja) | キャッシュ制御装置及びキャッシュ制御方法 | |
US20150242121A1 (en) | Per-memory group swap device | |
US20180314644A1 (en) | Electronic device and method for managing memory thereof | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
US11507515B1 (en) | Memory management unit with address translation cache | |
Hur | Representing contiguity in page table for memory management units | |
Ban et al. | Coalesced TLB to Exploit Diverse Contiguity of Memory Mapping |