JP2005500620A - 移動するメモリブロックを備えるメモリプール - Google Patents
移動するメモリブロックを備えるメモリプール Download PDFInfo
- Publication number
- JP2005500620A JP2005500620A JP2003521948A JP2003521948A JP2005500620A JP 2005500620 A JP2005500620 A JP 2005500620A JP 2003521948 A JP2003521948 A JP 2003521948A JP 2003521948 A JP2003521948 A JP 2003521948A JP 2005500620 A JP2005500620 A JP 2005500620A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- pool
- block
- memory block
- 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.)
- Withdrawn
Links
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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
コンピュータの物理メモリにおいて動的にメモリプール(0、1、2及び3)を割り当て/解放する方法。前記方法は、前記物理メモリ内にメモリプール(0、1、2及び3)のためにメモリ領域(4)を割り当てるステップと、少なくとも1つのメモリプール(0、1、2及び3)の夫々の中に少なくとも1つのメモリブロック(2a及び2b)を割り当てるステップと、少なくとも1つのメモリブロック(2a)にデータを書き込むステップとを有する。動的なメモリ割り当てを可能にするため、及びメモリフラグメンテーションを減少するため、少なくとも1つのメモリブロック(2a)は、少なくとも1つのメモリブロック(2a)が空であるとマークされた後に解放され、少なくとも1つのメモリブロック(2a)はメモリ領域(4)内に再割り当てされることが提案される。以てメモリブロック(2a)は、少なくとも1つのメモリブロック(2a及び2b)の解放/再割り当ての間メモリ領域(4)内を移動される。
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータの物理メモリ中のメモリプールを動的に割り当てる又は解放する方法であって、前記物理メモリ内に前記メモリプールのためにメモリ領域を割り当てるステップと、少なくとも1つの前記メモリプールの夫々の中に少なくとも1つのメモリブロックを割り当てるステップと、前記少なくとも1つのメモリブロックにデータを書き込むステップと、を有する方法に関する。本発明は更に、デジタル処理製品におけるかような方法の使用に関する。
【0002】
【従来の技術】
コンピュータメモリの管理は、制限されたリソースを持つデジタルストリーミングシステムにおいてとりわけ重要である。欧州特許EP0872798A1より、コンピュータシステムのメモリ中のバッファ領域中のバッファを決定しアドレス指定するためのバッファ管理システムが知られている。このシステムの利用により、複数のバッファプールのサイズが算出され、該バッファプールが割り当てられる。次いで、前記バッファプール内のバッファのバッファサイズが算出され、前記バッファが前記バッファプール内の算出されたアドレスにそれぞれ割り当てられる。前記バッファが割り当てられた後、データが前記バッファに書き込まれ、前記バッファから読み込まれる。前記プール及び前記バッファを一度割り当てることにより、1つの完全なメモリブロック以下の領域がデータを保存するために必要とされる場合のみフラグメンテーション(fragmentation)が発生する。
【0003】
【発明が解決しようとする課題】
この解決方法の欠点は、前記プール及びバッファのサイズが予め算出される必要があるということである。現在のニーズに従ったプール及びバッファの再算出及び再割り当て(re−allocating)は不可能であるため、最初の算出の後に前記プール又はバッファを増大すること、及びプログラム可能なハードウェアの柔軟性を利用することは不可能である。
【0004】
異なるアプリケーションの様式は異なるメモリプール(memory pool)を必要とし、全てのメモリプールが同時に割り当てられるわけではないため、動的な割り当て(allocation)/解放(de−allocation)が実行される必要がある。
【0005】
本発明の目的は、メモリプールのための効率的な動的メモリ割り当てを可能にすることである。本発明の他の目的は、メモリのフラグメンテーションを減少させることである。
【0006】
【課題を解決するための手段】
本発明の目的は、前記少なくとも1つのメモリブロックは前記少なくとも1つのメモリブロックが空であるとマークされた後に解放され、前記少なくとも1つのメモリブロックは前記メモリ領域内に再割り当てされ、以て前記メモリブロックが、前記少なくとも1つのメモリブロックの解放又は再割り当ての間に前記メモリ領域内を移動されることを特徴とする方法によって解決される。
【0007】
前記メモリプール又は前記メモリブロックの割り当て/解放の間に、フラグメンテーションが発生する。本発明の要旨は、前記メモリプール又は前記メモリブロックを前記メモリ領域内で移動することにより、このフラグメンテーションを減少させることである。前記メモリブロックを移動することにより、任意の2つのプール又はブロックの間のフラグメント化された部分が除去されることができる。前記メモリプールを移動することによってデータが損失しないことは重要であるから、本発明によれば空のブロックのみが移動される。ブロックはそのように明確にマークされる場合空である。このことは、前記データが読み込まれていないとしても該ブロックは空であり得るということを意味する。
【0008】
請求項2に記載の分散されたメモリブロックを持つメモリプールもデフラグメント(defragment)される。メモリブロックが前記メモリ領域中に任意に散乱している場合、メモリプールのメモリブロックは前記メモリ領域中の互いに隣接するアドレスに割り当てられない。
【0009】
前記メモリブロックは前記メモリ領域内を移動されるが、任意の2つの前記ブロックの間のメモリの断片は、任意のメモリプールの他のメモリブロックによって割り当てられる。
【0010】
多くの場合において、メモリブロックは請求項3に従って割り当てられる。
【0011】
請求項4に従ってメモリブロックが反対方向に解放/再割り当てされる場合、即ち割り当ての方向が移動の方向と反対である場合、デフラグメンテーションは加速する。
【0012】
メモリプール間にフラグメンテーションが起こり得る。2つのメモリプールの間の該フラグメンテーションを減少するために、請求項5に記載の方法が提案される。空のメモリブロックだけが移動されることが理解される。前記メモリブロックは次々と隣接するメモリプールの方へシフトされる。1つのメモリプールの全てのメモリブロックが前記隣接するメモリプールの方へ移動された後、これら2つのメモリプールの間にはフラグメント化されたメモリはなくなる。前記方法の利点は、前記メモリブロックはデータをコピーすることなく割り当て/解放されるため、余分なハードウェアが必要とされないということである。前記メモリプールは互いの方向へと移動されるため前記メモリ領域内で連続しており、このことはメモリ管理を容易にする。
【0013】
前記メモリ領域中を前記メモリブロックを移動させている間、これらのメモリブロックは請求項6に従ってクラスタリング(clustering)されても良い。前記メモリブロックをクラスタリングすることによって、2つの近接するメモリブロックが1つの同じメモリプールのものとなる見込みは増加される。
【0014】
任意の2つのメモリブロックの間のフラグメンテーションギャップは、好ましくは、次の又は前のアドレスのブロックと同じプールのメモリブロックのために割り当てられる。このことは将来のデフラグメンテーションの速度を増加する。移動方向は左方向であっても右方向であっても良い。
【0015】
前記メモリ領域は、前記メモリプールに渡る前記アドレスの割り当て/解放の間に前記メモリブロックを移動することによってのみデフラグメンテーションされるため、前記メモリブロックは請求項7に従って割り当て/解放される。
【0016】
請求項8による周期的な解放/再割り当ては更に好ましい。このことはデフラグメンテーションがメモリ領域全体で実行されることを保証する。
【0017】
デジタルビデオ製品、とりわけデジタルテレビジョン、デジタルセットトップボックス又はデジタルストリーミングアプリケーションにおける上述の方法の利用は、本発明の他の態様である。
【0018】
本発明のこれらの及び他の態様は、以下記載される実施例より説明され明らかになるであろう。
【0019】
【発明の実施の形態】
図1には、メモリ領域4内のメモリプール0、1、2及び3が図示されている。図示されているメモリプール0、1、2及び3は方向5の方向にメモリ領域4内を移動される。時間軸6はメモリプール0、1、2及び3の移動の経過を示す。メモリプール2と3との間には、フラグメント20が位置している。メモリフラグメント10はメモリプール1と2との間に位置している。
【0020】
メモリ領域4をデフラグメントするため、最初にメモリプール2がメモリプール3の方へ方向5bの方向にシフトされる。メモリプール2をメモリプール3の方へ移動することにより、フラグメント20はフラグメント10の方へシフトされる。またプール1はプール2の方へ方向5aの方向に移動され、プール0はプール1の方へ方向5cの方向に移動され、かくしてメモリフラグメント10をメモリプール0及び1の左へ移動する。プール2はプール3に隣接したとき、これらのプールの間にはメモリフラグメントはない。メモリフラグメント20はメモリプール1と2との間にあり、メモリフラグメント10はメモリプール0と1との間にある。
【0021】
メモリプール0、1、2及び3を移動することにより、メモリフラグメンテーション10、20が左へと、例えばメモリのより高いアドレスへとシフトされるにつれて、メモリ領域4はデフラグメント化される。これらのメモリフラグメントは次いで新たなメモリプールのために再び割り当てられる。メモリの解放/再割り当ての間空のメモリブロックのみが移動されるため、図示されたデフラグメンテーションはデータをコピーすることなく実行される。メモリブロックの解放/再割り当ての方法は図2に示される。
【0022】
図2は、空のメモリブロック2bと、一杯の、例えばデータを含んだメモリブロック2aとを持つメモリプール2を示す。メモリプール2を方向5bの方向に移動する場合、全てのメモリブロック2aが解放/再割り当てされる必要がある。
【0023】
ブロックサイズは一定であり、各ブロックのメモリアドレスのみが変化する。メモリブロック2aは左から右にメモリフラグメント20の方へシフトされる。メモリブロック2aをシフトしている間、メモリフラグメント20内のメモリは割り当てられ、メモリブロック2aによって占められる。
【0024】
メモリブロック2aの移動はメモリブロック2aをコピーすることによっては実行されない。その代わり各メモリブロック2aは、メモリブロック2aのデータが読み出され、メモリブロック2aが解放された後にのみ移動されることができる。メモリブロック2の解放の後、新たなメモリアドレスが可能な限り最小のメモリアドレスに割り当てられる。メモリプール2の移動の間、メモリフラグメント20はメモリプール2を移動し、該メモリフラグメントのメモリは他のメモリプールのメモリブロックのために割り当てられることはできない。メモリフラグメント20のメモリは、メモリプール2全体がメモリプール3の方へ移動された後にのみアクセスできる。
【0025】
図2に示されるように、メモリプール2は連続するメモリブロックのみを有する。このことはメモリプール2がコンピュータシステムの物理メモリ内の連続したアドレス領域を占めることを意味する。しかしながらメモリプールは、隣接するメモリアドレスに割り当てられていない分散されたメモリブロックを有することも可能である。かような場合には、メモリの移動は少し異なる。連続したメモリプールにおけるように、メモリフラグメントはメモリプールの移動の間にはアクセスできず、一時的により少ないメモリが利用可能となる。分散されたメモリプールを用いると、前記メモリフラグメントがメモリプールを移動しているときであっても、該メモリフラグメントは依然割り当てのために利用可能である。前記メモリフラグメントは特定のメモリプールに占められたメモリの量に追加される必要はなく、余分なメモリは必要とされない。
【0026】
異なるプールのメモリブロックが混合された場合、デフラグメンテーションの速度は減少する。2つの隣接するメモリブロックが同一のブロックのものであり、右から左へ解放/再割り当てされる場合、デフラグメンテーション速度は増加する。2つの隣接するメモリブロックが同一のプールからのものである見込みは、図3に示されるようなクラスタリングによって増加される。
【0027】
図3は、異なるメモリプールのメモリブロック7、8及び9によって占められたメモリ領域4を示す。これらのメモリブロック7、8及び9の間には、空のメモリフラグメント11が発生している。図示されるクラスタリング作業は以下の通りである。
【0028】
デフラグメンテーションは、右から左へ、例えば低いメモリアドレスから高いメモリアドレスへと実行される。メモリフラグメント11aを満たすため、メモリフラグメント11aの右のメモリブロックと同一のメモリプールのメモリブロック、本例ではメモリプール7のメモリブロックが探索される。メモリブロック7c及びdがデータが空であり解放されても良い場合、これらのブロックは解放され、図示されるようにメモリフラグメント11中に再割り当てされる。メモリブロック7c及び7dが解放された場合、メモリフラグメント11a及び11bのサイズと位置は、メモリフラグメント11c、11d及び11eに変更される。メモリブロック11cは再びメモリブール7のメモリブロックで満たされるべきである。メモリプール7のメモリブロックがより高いメモリアドレスに残っていない場合、次のメモリブロック、本例ではメモリブロック9aがメモリフラグメント11cにシフトされる。メモリフラグメント11dはメモリプール8のメモリブロックで満たされるべきである。従ってメモリブロック8bは解放されメモリフラグメント11d中に再割り当てされる。次のステップにおいて、メモリブロック9bがメモリフラグメント11g中に再割り当てされる。最後にはメモリブロック9cが右にシフトされる。
【0029】
図示した方法によってメモリ領域4をデフラグメントすることにより、新たなメモリブロックによって容易に占められ得る1つのメモリフラグメント11hのみが残る。
【0030】
メモリのフラグメンテーションを減少することにより、利用可能なメモリが最大限に使用されることができる。とりわけ例えば実行時において異なる処理モードがサポートされているデジタルビデオ処理のようなデジタル処理製品においては、動的なメモリプール割り当てが実行され、従ってメモリフラグメンテーションが引き起こされる。本発明は、このメモリフラグメンテーションを減少し、プログラム可能なハードウェアの柔軟性を十分に利用することを可能とする。
【0031】
図4は本発明によるデジタルメディアデータ処理装置を模式的に示す。このデジタルメディア処理装置400は、入力部402を通してデジタルメディアデータを受信する。このデータは、例えばビデオ、オーディオ及びこれら2つの組み合わせといった、いずれの種類のデジタルコンテンツであっても良い。このメディアデータはケーブルネットワークから、衛星受信器から、DVDプレイヤから又は他のいずれの適切な装置から受信されても良い。装置400は前記メディアデータを処理し、次いで出力部404を通してデータを出力する。前記処理されたデータは表示装置上に及びスピーカシステムを通して再生されるか、又は装置400の特定の特質に依存してテープ又はディスクに記録されても良い。装置400の例は、テレビジョン番組の受信と再生のためのデジタルテレビジョン、別個の表示装置上への表示又は保存のいずれかのためテレビジョン番組を受信し処理するためのセットトップボックス、及び番組を処理及び保存するためのデジタルビデオレコーダである。
【0032】
装置400は、既知のコンピュータアーキテクチャに従って実現されても良い。装置400は、ワーキングメモリ408中に保存されたプログラム命令を実行するためのプロセッサ406を持つ。ワーキングメモリ408は単一のメモリとして図示されているが、保存されるプログラム及びデータの型に依存して多数の異なるメモリモジュールに分離されていても良い。ワーキングメモリ408は、オペレーティングシステムソフトウェアを備えるオペレーティングユニット410と、アプリケーションソフトウェアを備えるアプリケーションユニット412を含む。前記アプリケーションソフトウェアの実行は、ユーザインタフェース及びデータ処理のような前記装置の機能を提供する。更に、装置400は該装置と外部装置との間の通信を提供するインタフェース414を持つ。装置400は、該装置の種々の構成要素を接続し、該構成要素間の命令及びデータの交換を可能にするバス416を持つ。
【0033】
ワーキングメモリ408は、前記メディアデータ又は中間結果のようなデータをメモリ領域4に保存するようにも構成される。前記メモリにデータを保存するために前記装置は、図1乃至3に関連して説明されたように、前記メモリプールを割り当て及び維持するためのメモリ管理ユニット418を持つ。特定の実施例において前記メモリ管理ユニットは、前記ワーキングメモリ内にメモリプール0、1、2及び3のようなメモリプールのためにメモリ領域4を割り当て、夫々のメモリプール0、1、2及び3内にメモリブロック2a及び2bのようなメモリブロックを割り当て、メモリブロック2aにデータを書き込むことによって、前記ワーキングメモリ中のメモリプール0、1、2及び3のようなメモリプールを動的に割り当て/解放するために利用される。この目的のため、前記メモリ管理ユニットは、メモリブロック2aを該メモリブロックが空であるとマークされた後に解放し、前記メモリブロックをメモリ領域4内に再割り当てするように構成される。以て前記メモリブロックは、前記メモリブロックの解放/再割り当ての間前記メモリ領域内を移動される。装置400のメモリ管理ユニット418は、前記ワーキングメモリ中に別々に保存されるソフトウェアユニットとして図4の実施例に示されている。しかしながら他の実施例も可能である。例えば前記メモリ管理ユニットは前記オペレーティングシステムソフトウェアの一部であっても良く、又は異なるメモリに位置していても良い。
【図面の簡単な説明】
【図1】連続したメモリプールを持つメモリ領域を示す。
【図2】連続したメモリブロックを持つメモリプールを示す。
【図3】メモリブロックのクラスタリングを示す。
【図4】本発明を実現するデジタルメディアデータ処理装置を示す。
【発明の属する技術分野】
本発明は、コンピュータの物理メモリ中のメモリプールを動的に割り当てる又は解放する方法であって、前記物理メモリ内に前記メモリプールのためにメモリ領域を割り当てるステップと、少なくとも1つの前記メモリプールの夫々の中に少なくとも1つのメモリブロックを割り当てるステップと、前記少なくとも1つのメモリブロックにデータを書き込むステップと、を有する方法に関する。本発明は更に、デジタル処理製品におけるかような方法の使用に関する。
【0002】
【従来の技術】
コンピュータメモリの管理は、制限されたリソースを持つデジタルストリーミングシステムにおいてとりわけ重要である。欧州特許EP0872798A1より、コンピュータシステムのメモリ中のバッファ領域中のバッファを決定しアドレス指定するためのバッファ管理システムが知られている。このシステムの利用により、複数のバッファプールのサイズが算出され、該バッファプールが割り当てられる。次いで、前記バッファプール内のバッファのバッファサイズが算出され、前記バッファが前記バッファプール内の算出されたアドレスにそれぞれ割り当てられる。前記バッファが割り当てられた後、データが前記バッファに書き込まれ、前記バッファから読み込まれる。前記プール及び前記バッファを一度割り当てることにより、1つの完全なメモリブロック以下の領域がデータを保存するために必要とされる場合のみフラグメンテーション(fragmentation)が発生する。
【0003】
【発明が解決しようとする課題】
この解決方法の欠点は、前記プール及びバッファのサイズが予め算出される必要があるということである。現在のニーズに従ったプール及びバッファの再算出及び再割り当て(re−allocating)は不可能であるため、最初の算出の後に前記プール又はバッファを増大すること、及びプログラム可能なハードウェアの柔軟性を利用することは不可能である。
【0004】
異なるアプリケーションの様式は異なるメモリプール(memory pool)を必要とし、全てのメモリプールが同時に割り当てられるわけではないため、動的な割り当て(allocation)/解放(de−allocation)が実行される必要がある。
【0005】
本発明の目的は、メモリプールのための効率的な動的メモリ割り当てを可能にすることである。本発明の他の目的は、メモリのフラグメンテーションを減少させることである。
【0006】
【課題を解決するための手段】
本発明の目的は、前記少なくとも1つのメモリブロックは前記少なくとも1つのメモリブロックが空であるとマークされた後に解放され、前記少なくとも1つのメモリブロックは前記メモリ領域内に再割り当てされ、以て前記メモリブロックが、前記少なくとも1つのメモリブロックの解放又は再割り当ての間に前記メモリ領域内を移動されることを特徴とする方法によって解決される。
【0007】
前記メモリプール又は前記メモリブロックの割り当て/解放の間に、フラグメンテーションが発生する。本発明の要旨は、前記メモリプール又は前記メモリブロックを前記メモリ領域内で移動することにより、このフラグメンテーションを減少させることである。前記メモリブロックを移動することにより、任意の2つのプール又はブロックの間のフラグメント化された部分が除去されることができる。前記メモリプールを移動することによってデータが損失しないことは重要であるから、本発明によれば空のブロックのみが移動される。ブロックはそのように明確にマークされる場合空である。このことは、前記データが読み込まれていないとしても該ブロックは空であり得るということを意味する。
【0008】
請求項2に記載の分散されたメモリブロックを持つメモリプールもデフラグメント(defragment)される。メモリブロックが前記メモリ領域中に任意に散乱している場合、メモリプールのメモリブロックは前記メモリ領域中の互いに隣接するアドレスに割り当てられない。
【0009】
前記メモリブロックは前記メモリ領域内を移動されるが、任意の2つの前記ブロックの間のメモリの断片は、任意のメモリプールの他のメモリブロックによって割り当てられる。
【0010】
多くの場合において、メモリブロックは請求項3に従って割り当てられる。
【0011】
請求項4に従ってメモリブロックが反対方向に解放/再割り当てされる場合、即ち割り当ての方向が移動の方向と反対である場合、デフラグメンテーションは加速する。
【0012】
メモリプール間にフラグメンテーションが起こり得る。2つのメモリプールの間の該フラグメンテーションを減少するために、請求項5に記載の方法が提案される。空のメモリブロックだけが移動されることが理解される。前記メモリブロックは次々と隣接するメモリプールの方へシフトされる。1つのメモリプールの全てのメモリブロックが前記隣接するメモリプールの方へ移動された後、これら2つのメモリプールの間にはフラグメント化されたメモリはなくなる。前記方法の利点は、前記メモリブロックはデータをコピーすることなく割り当て/解放されるため、余分なハードウェアが必要とされないということである。前記メモリプールは互いの方向へと移動されるため前記メモリ領域内で連続しており、このことはメモリ管理を容易にする。
【0013】
前記メモリ領域中を前記メモリブロックを移動させている間、これらのメモリブロックは請求項6に従ってクラスタリング(clustering)されても良い。前記メモリブロックをクラスタリングすることによって、2つの近接するメモリブロックが1つの同じメモリプールのものとなる見込みは増加される。
【0014】
任意の2つのメモリブロックの間のフラグメンテーションギャップは、好ましくは、次の又は前のアドレスのブロックと同じプールのメモリブロックのために割り当てられる。このことは将来のデフラグメンテーションの速度を増加する。移動方向は左方向であっても右方向であっても良い。
【0015】
前記メモリ領域は、前記メモリプールに渡る前記アドレスの割り当て/解放の間に前記メモリブロックを移動することによってのみデフラグメンテーションされるため、前記メモリブロックは請求項7に従って割り当て/解放される。
【0016】
請求項8による周期的な解放/再割り当ては更に好ましい。このことはデフラグメンテーションがメモリ領域全体で実行されることを保証する。
【0017】
デジタルビデオ製品、とりわけデジタルテレビジョン、デジタルセットトップボックス又はデジタルストリーミングアプリケーションにおける上述の方法の利用は、本発明の他の態様である。
【0018】
本発明のこれらの及び他の態様は、以下記載される実施例より説明され明らかになるであろう。
【0019】
【発明の実施の形態】
図1には、メモリ領域4内のメモリプール0、1、2及び3が図示されている。図示されているメモリプール0、1、2及び3は方向5の方向にメモリ領域4内を移動される。時間軸6はメモリプール0、1、2及び3の移動の経過を示す。メモリプール2と3との間には、フラグメント20が位置している。メモリフラグメント10はメモリプール1と2との間に位置している。
【0020】
メモリ領域4をデフラグメントするため、最初にメモリプール2がメモリプール3の方へ方向5bの方向にシフトされる。メモリプール2をメモリプール3の方へ移動することにより、フラグメント20はフラグメント10の方へシフトされる。またプール1はプール2の方へ方向5aの方向に移動され、プール0はプール1の方へ方向5cの方向に移動され、かくしてメモリフラグメント10をメモリプール0及び1の左へ移動する。プール2はプール3に隣接したとき、これらのプールの間にはメモリフラグメントはない。メモリフラグメント20はメモリプール1と2との間にあり、メモリフラグメント10はメモリプール0と1との間にある。
【0021】
メモリプール0、1、2及び3を移動することにより、メモリフラグメンテーション10、20が左へと、例えばメモリのより高いアドレスへとシフトされるにつれて、メモリ領域4はデフラグメント化される。これらのメモリフラグメントは次いで新たなメモリプールのために再び割り当てられる。メモリの解放/再割り当ての間空のメモリブロックのみが移動されるため、図示されたデフラグメンテーションはデータをコピーすることなく実行される。メモリブロックの解放/再割り当ての方法は図2に示される。
【0022】
図2は、空のメモリブロック2bと、一杯の、例えばデータを含んだメモリブロック2aとを持つメモリプール2を示す。メモリプール2を方向5bの方向に移動する場合、全てのメモリブロック2aが解放/再割り当てされる必要がある。
【0023】
ブロックサイズは一定であり、各ブロックのメモリアドレスのみが変化する。メモリブロック2aは左から右にメモリフラグメント20の方へシフトされる。メモリブロック2aをシフトしている間、メモリフラグメント20内のメモリは割り当てられ、メモリブロック2aによって占められる。
【0024】
メモリブロック2aの移動はメモリブロック2aをコピーすることによっては実行されない。その代わり各メモリブロック2aは、メモリブロック2aのデータが読み出され、メモリブロック2aが解放された後にのみ移動されることができる。メモリブロック2の解放の後、新たなメモリアドレスが可能な限り最小のメモリアドレスに割り当てられる。メモリプール2の移動の間、メモリフラグメント20はメモリプール2を移動し、該メモリフラグメントのメモリは他のメモリプールのメモリブロックのために割り当てられることはできない。メモリフラグメント20のメモリは、メモリプール2全体がメモリプール3の方へ移動された後にのみアクセスできる。
【0025】
図2に示されるように、メモリプール2は連続するメモリブロックのみを有する。このことはメモリプール2がコンピュータシステムの物理メモリ内の連続したアドレス領域を占めることを意味する。しかしながらメモリプールは、隣接するメモリアドレスに割り当てられていない分散されたメモリブロックを有することも可能である。かような場合には、メモリの移動は少し異なる。連続したメモリプールにおけるように、メモリフラグメントはメモリプールの移動の間にはアクセスできず、一時的により少ないメモリが利用可能となる。分散されたメモリプールを用いると、前記メモリフラグメントがメモリプールを移動しているときであっても、該メモリフラグメントは依然割り当てのために利用可能である。前記メモリフラグメントは特定のメモリプールに占められたメモリの量に追加される必要はなく、余分なメモリは必要とされない。
【0026】
異なるプールのメモリブロックが混合された場合、デフラグメンテーションの速度は減少する。2つの隣接するメモリブロックが同一のブロックのものであり、右から左へ解放/再割り当てされる場合、デフラグメンテーション速度は増加する。2つの隣接するメモリブロックが同一のプールからのものである見込みは、図3に示されるようなクラスタリングによって増加される。
【0027】
図3は、異なるメモリプールのメモリブロック7、8及び9によって占められたメモリ領域4を示す。これらのメモリブロック7、8及び9の間には、空のメモリフラグメント11が発生している。図示されるクラスタリング作業は以下の通りである。
【0028】
デフラグメンテーションは、右から左へ、例えば低いメモリアドレスから高いメモリアドレスへと実行される。メモリフラグメント11aを満たすため、メモリフラグメント11aの右のメモリブロックと同一のメモリプールのメモリブロック、本例ではメモリプール7のメモリブロックが探索される。メモリブロック7c及びdがデータが空であり解放されても良い場合、これらのブロックは解放され、図示されるようにメモリフラグメント11中に再割り当てされる。メモリブロック7c及び7dが解放された場合、メモリフラグメント11a及び11bのサイズと位置は、メモリフラグメント11c、11d及び11eに変更される。メモリブロック11cは再びメモリブール7のメモリブロックで満たされるべきである。メモリプール7のメモリブロックがより高いメモリアドレスに残っていない場合、次のメモリブロック、本例ではメモリブロック9aがメモリフラグメント11cにシフトされる。メモリフラグメント11dはメモリプール8のメモリブロックで満たされるべきである。従ってメモリブロック8bは解放されメモリフラグメント11d中に再割り当てされる。次のステップにおいて、メモリブロック9bがメモリフラグメント11g中に再割り当てされる。最後にはメモリブロック9cが右にシフトされる。
【0029】
図示した方法によってメモリ領域4をデフラグメントすることにより、新たなメモリブロックによって容易に占められ得る1つのメモリフラグメント11hのみが残る。
【0030】
メモリのフラグメンテーションを減少することにより、利用可能なメモリが最大限に使用されることができる。とりわけ例えば実行時において異なる処理モードがサポートされているデジタルビデオ処理のようなデジタル処理製品においては、動的なメモリプール割り当てが実行され、従ってメモリフラグメンテーションが引き起こされる。本発明は、このメモリフラグメンテーションを減少し、プログラム可能なハードウェアの柔軟性を十分に利用することを可能とする。
【0031】
図4は本発明によるデジタルメディアデータ処理装置を模式的に示す。このデジタルメディア処理装置400は、入力部402を通してデジタルメディアデータを受信する。このデータは、例えばビデオ、オーディオ及びこれら2つの組み合わせといった、いずれの種類のデジタルコンテンツであっても良い。このメディアデータはケーブルネットワークから、衛星受信器から、DVDプレイヤから又は他のいずれの適切な装置から受信されても良い。装置400は前記メディアデータを処理し、次いで出力部404を通してデータを出力する。前記処理されたデータは表示装置上に及びスピーカシステムを通して再生されるか、又は装置400の特定の特質に依存してテープ又はディスクに記録されても良い。装置400の例は、テレビジョン番組の受信と再生のためのデジタルテレビジョン、別個の表示装置上への表示又は保存のいずれかのためテレビジョン番組を受信し処理するためのセットトップボックス、及び番組を処理及び保存するためのデジタルビデオレコーダである。
【0032】
装置400は、既知のコンピュータアーキテクチャに従って実現されても良い。装置400は、ワーキングメモリ408中に保存されたプログラム命令を実行するためのプロセッサ406を持つ。ワーキングメモリ408は単一のメモリとして図示されているが、保存されるプログラム及びデータの型に依存して多数の異なるメモリモジュールに分離されていても良い。ワーキングメモリ408は、オペレーティングシステムソフトウェアを備えるオペレーティングユニット410と、アプリケーションソフトウェアを備えるアプリケーションユニット412を含む。前記アプリケーションソフトウェアの実行は、ユーザインタフェース及びデータ処理のような前記装置の機能を提供する。更に、装置400は該装置と外部装置との間の通信を提供するインタフェース414を持つ。装置400は、該装置の種々の構成要素を接続し、該構成要素間の命令及びデータの交換を可能にするバス416を持つ。
【0033】
ワーキングメモリ408は、前記メディアデータ又は中間結果のようなデータをメモリ領域4に保存するようにも構成される。前記メモリにデータを保存するために前記装置は、図1乃至3に関連して説明されたように、前記メモリプールを割り当て及び維持するためのメモリ管理ユニット418を持つ。特定の実施例において前記メモリ管理ユニットは、前記ワーキングメモリ内にメモリプール0、1、2及び3のようなメモリプールのためにメモリ領域4を割り当て、夫々のメモリプール0、1、2及び3内にメモリブロック2a及び2bのようなメモリブロックを割り当て、メモリブロック2aにデータを書き込むことによって、前記ワーキングメモリ中のメモリプール0、1、2及び3のようなメモリプールを動的に割り当て/解放するために利用される。この目的のため、前記メモリ管理ユニットは、メモリブロック2aを該メモリブロックが空であるとマークされた後に解放し、前記メモリブロックをメモリ領域4内に再割り当てするように構成される。以て前記メモリブロックは、前記メモリブロックの解放/再割り当ての間前記メモリ領域内を移動される。装置400のメモリ管理ユニット418は、前記ワーキングメモリ中に別々に保存されるソフトウェアユニットとして図4の実施例に示されている。しかしながら他の実施例も可能である。例えば前記メモリ管理ユニットは前記オペレーティングシステムソフトウェアの一部であっても良く、又は異なるメモリに位置していても良い。
【図面の簡単な説明】
【図1】連続したメモリプールを持つメモリ領域を示す。
【図2】連続したメモリブロックを持つメモリプールを示す。
【図3】メモリブロックのクラスタリングを示す。
【図4】本発明を実現するデジタルメディアデータ処理装置を示す。
Claims (10)
- コンピュータの物理メモリ中のメモリプールを動的に割り当てる又は解放する方法であって、
前記物理メモリ内に前記メモリプールのためにメモリ領域を割り当てるステップと、
少なくとも1つの前記メモリプールの夫々の中に少なくとも1つのメモリブロックを割り当てるステップと、
前記少なくとも1つのメモリブロックにデータを書き込むステップと、
を有する方法であって、
前記少なくとも1つのメモリブロックは前記少なくとも1つのメモリブロックが空であるとマークされた後に解放され、
前記少なくとも1つのメモリブロックは前記メモリ領域内に再割り当てされ、
以て前記メモリブロックが、前記少なくとも1つのメモリブロックの解放又は再割り当ての間に前記メモリ領域内を移動されることを特徴とする方法。 - 夫々の前記メモリプールのメモリブロックは、前記メモリ領域内の分散されたアドレスに配置されることを特徴とする、請求項1に記載の方法。
- 夫々の前記メモリプールのメモリブロックは、前記メモリ領域の連続したメモリアドレスに配置されることを特徴とする、請求項1に記載の方法。
- 前記メモリブロックはメモリアドレスを増加しながら又は減少しながら解放され、前記メモリブロックはメモリアドレスを減少しながら又は増加しながら逆方向に再割り当てされ、以てデフラグメンテーションの速度が増加することを特徴とする、請求項3に記載の方法。
- 前記メモリブロックを解放又は再割り当てすることにより、前記プールが前記メモリ領域中の他の前記プールの方へシフトされ、以て前記プール間のメモリフラグメントが除去されることを特徴とする、請求項3に記載の方法。
- 前記メモリブロックがクラスタリングされ、以て同一のプールのメモリブロックが、前記メモリ領域内で互いに隣接するアドレスに好適に再割り当てされることを特徴とする、請求項1に記載の方法。
- 前記メモリブロックは、前記プールが前記メモリ領域において解放又は再割り当てされるよりも頻繁に解放又は再割り当てされることを特徴とする、請求項1に記載の方法。
- 前記メモリブロックの解放又は再割り当ては略周期的に実行され、以て全ての割り当てられたメモリブロックの解放又は再割り当てが有限の時間内で実行されることを特徴とする、請求項1に記載の方法。
- とりわけデジタルテレビジョン、デジタルセットトップボックス又はデジタルストリーミングアプリケーションといった、デジタル処理製品における請求項1に記載の方法の使用。
- デジタルメディアデータ処理装置であって、
前記データを保存する物理メモリと、
前記保存されたデータを処理するプロセッサと、
前記物理メモリ内に少なくとも1つのメモリプールのためにメモリ領域を割り当て、
前記少なくとも1つのメモリプールの夫々の中に少なくとも1つのメモリブロックを割り当て、
前記少なくとも1つのメモリブロックに前記データを書き込むことにより、
前記物理メモリ中の少なくとも1つのメモリプールを動的に割り当てる又は解放するメモリ管理ユニットと、
を有する装置であって、前記メモリユニットが、
前記少なくとも1つのメモリブロックが空であるとマークされた後に、前記少なくとも1つのメモリブロックを解放し、
前記メモリ領域内に前記少なくとも1つのメモリブロックを再割り当てし、以て前記少なくとも1つのメモリブロックの解放又は再割り当ての間前記メモリブロックが前記メモリ領域内を移動されるように構成されることを特徴とする装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01203107 | 2001-08-15 | ||
PCT/IB2002/003256 WO2003017107A1 (en) | 2001-08-15 | 2002-08-09 | Memory pools with moving memory blocks |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005500620A true JP2005500620A (ja) | 2005-01-06 |
Family
ID=8180794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003521948A Withdrawn JP2005500620A (ja) | 2001-08-15 | 2002-08-09 | 移動するメモリブロックを備えるメモリプール |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040193775A1 (ja) |
EP (1) | EP1419444A1 (ja) |
JP (1) | JP2005500620A (ja) |
KR (1) | KR20040030091A (ja) |
CN (1) | CN1541358A (ja) |
WO (1) | WO2003017107A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009245437A (ja) * | 2008-03-31 | 2009-10-22 | Konica Minolta Systems Lab Inc | ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及びコンピュータ可読メモリ |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
US7827375B2 (en) * | 2003-04-30 | 2010-11-02 | International Business Machines Corporation | Defensive heap memory management |
JP4146380B2 (ja) | 2004-03-29 | 2008-09-10 | 東芝ソリューション株式会社 | ストレージシステム、ブロック再配置制御方法及びプログラム |
US7346401B2 (en) * | 2004-05-25 | 2008-03-18 | International Business Machines Corporation | Systems and methods for providing constrained optimization using adaptive regulatory control |
US8526049B2 (en) * | 2006-03-31 | 2013-09-03 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for display list management |
JP2007272573A (ja) * | 2006-03-31 | 2007-10-18 | Hitachi Ltd | 低消費電力化メモリ管理方法及びメモリ管理プログラム |
US8228555B2 (en) * | 2008-03-31 | 2012-07-24 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for parallel display list rasterization |
US8817032B2 (en) | 2008-08-29 | 2014-08-26 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for framebuffer management |
US8854680B2 (en) * | 2008-09-11 | 2014-10-07 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimal memory allocation units |
US8861014B2 (en) * | 2008-09-30 | 2014-10-14 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimized printer throughput in a multi-core environment |
CN102279808A (zh) * | 2011-09-06 | 2011-12-14 | 晨星软件研发(深圳)有限公司 | 一种嵌入式设备图像内存管理方法及装置 |
WO2013130109A1 (en) * | 2012-03-02 | 2013-09-06 | Hewlett-Packard Development Company L.P. | Shiftable memory defragmentation |
US10353601B2 (en) * | 2016-11-28 | 2019-07-16 | Arm Limited | Data movement engine |
US11048427B2 (en) | 2019-02-20 | 2021-06-29 | International Business Machines Corporation | Evacuation of memory from a drawer in a live multi-node system |
CN110008141B (zh) * | 2019-03-28 | 2023-02-24 | 维沃移动通信有限公司 | 一种碎片整理方法和电子设备 |
CN110888822B (zh) * | 2019-12-03 | 2022-09-16 | 北京小米智能科技有限公司 | 内存处理方法、装置及存储介质 |
US11334267B1 (en) * | 2020-07-28 | 2022-05-17 | Juniper Networks, Inc | Apparatus, system, and method for dynamically sizing memory pools based on tracked memory waste |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574907A (en) * | 1994-11-30 | 1996-11-12 | Microsoft Corporation | Two-pass defragmentation of compressed hard disk data with a single data rewrite |
US5819290A (en) * | 1995-04-10 | 1998-10-06 | Sony Corporation | Data recording and management system and method for detecting data file division based on quantitative number of blocks |
-
2002
- 2002-08-09 WO PCT/IB2002/003256 patent/WO2003017107A1/en not_active Application Discontinuation
- 2002-08-09 CN CNA028159381A patent/CN1541358A/zh active Pending
- 2002-08-09 JP JP2003521948A patent/JP2005500620A/ja not_active Withdrawn
- 2002-08-09 KR KR10-2004-7002206A patent/KR20040030091A/ko not_active Application Discontinuation
- 2002-08-09 US US10/486,450 patent/US20040193775A1/en not_active Abandoned
- 2002-08-09 EP EP02755482A patent/EP1419444A1/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009245437A (ja) * | 2008-03-31 | 2009-10-22 | Konica Minolta Systems Lab Inc | ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及びコンピュータ可読メモリ |
Also Published As
Publication number | Publication date |
---|---|
CN1541358A (zh) | 2004-10-27 |
KR20040030091A (ko) | 2004-04-08 |
US20040193775A1 (en) | 2004-09-30 |
EP1419444A1 (en) | 2004-05-19 |
WO2003017107A1 (en) | 2003-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005500620A (ja) | 移動するメモリブロックを備えるメモリプール | |
EP2353079B1 (en) | File input/output scheduler using immediate data chunking | |
US6950107B1 (en) | System and method for reserving and managing memory spaces in a memory resource | |
EP0886971B1 (en) | Method and system for supplying data streams | |
KR100942740B1 (ko) | 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법 | |
US20050132364A1 (en) | Method, apparatus and system for optimizing context switching between virtual machines | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
EP2160685B1 (en) | Digital data management using shared memory pool | |
US6466581B1 (en) | Multistream data packet transfer apparatus and method | |
KR101812300B1 (ko) | 다수의 메모리 채널들을 가진 컴퓨팅 시스템에서의 메모리 버퍼들의 할당 | |
WO2001020457A1 (en) | Method and apparatus for controlling multi-channel bitstreams | |
US8954652B2 (en) | Method and controller for identifying a unit in a solid state memory device for writing data to | |
US7865632B2 (en) | Memory allocation and access method and device using the same | |
US6539439B1 (en) | Method and apparatus for interfacing a bus at an independent rate with input/output devices | |
US6415345B1 (en) | Bus mastering interface control system for transferring multistream data over a host bus | |
US5664224A (en) | Apparatus for selectively loading data blocks from CD-ROM disks to buffer segments using DMA operations | |
US5640597A (en) | Method and apparatus for servicing simultaneously a plurality of requests for data streams | |
US7900010B2 (en) | System and method for memory allocation management | |
KR101137575B1 (ko) | 저장 디바이스 | |
JP2007257362A (ja) | 記憶装置及びそのアクセス制御方法 | |
CN113778688A (zh) | 内存管理系统、内存管理方法、内存管理装置 | |
JP5377001B2 (ja) | メモリ管理システム、電子機器及びメモリ管理プログラム | |
KR20040101386A (ko) | 몰핑 메모리 풀들 | |
US20080270676A1 (en) | Data Processing System and Method for Memory Defragmentation | |
KR102334237B1 (ko) | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041221 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050808 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070522 |