(57)【要約】コンピュータの物理メモリにおいて動的にメモリプール（０、１、２及び３）を割り当て／解放する方法。前記方法は、前記物理メモリ内にメモリプール（０、１、２及び３）のためにメモリ領域（４）を割り当てるステップと、少なくとも１つのメモリプール（０、１、２及び３）の夫々の中に少なくとも１つのメモリブロック（２ａ及び２ｂ）を割り当てるステップと、少なくとも１つのメモリブロック（２ａ）にデータを書き込むステップとを有する。動的なメモリ割り当てを可能にするため、及びメモリフラグメンテーションを減少するため、少なくとも１つのメモリブロック（２ａ）は、少なくとも１つのメモリブロック（２ａ）が空であるとマークされた後に解放され、少なくとも１つのメモリブロック（２ａ）はメモリ領域（４）内に再割り当てされることが提案される。以てメモリブロック（２ａ）は、少なくとも１つのメモリブロック（２ａ及び２ｂ）の解放／再割り当ての間メモリ領域（４）内を移動される。
2005500620.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータの物理メモリ中のメモリプールを動的に割り当てる又は解放する方法であって、
前記物理メモリ内に前記メモリプールのためにメモリ領域を割り当てるステップと、
少なくとも１つの前記メモリプールの夫々の中に少なくとも１つのメモリブロックを割り当てるステップと、
前記少なくとも１つのメモリブロックにデータを書き込むステップと、
を有する方法であって、
前記少なくとも１つのメモリブロックは前記少なくとも１つのメモリブロックが空であるとマークされた後に解放され、
前記少なくとも１つのメモリブロックは前記メモリ領域内に再割り当てされ、
以て前記メモリブロックが、前記少なくとも１つのメモリブロックの解放又は再割り当ての間に前記メモリ領域内を移動されることを特徴とする方法。
【請求項２】
夫々の前記メモリプールのメモリブロックは、前記メモリ領域内の分散されたアドレスに配置されることを特徴とする、請求項１に記載の方法。
【請求項３】
夫々の前記メモリプールのメモリブロックは、前記メモリ領域の連続したメモリアドレスに配置されることを特徴とする、請求項１に記載の方法。
【請求項４】
前記メモリブロックはメモリアドレスを増加しながら又は減少しながら解放され、前記メモリブロックはメモリアドレスを減少しながら又は増加しながら逆方向に再割り当てされ、以てデフラグメンテーションの速度が増加することを特徴とする、請求項３に記載の方法。
【請求項５】
前記メモリブロックを解放又は再割り当てすることにより、前記プールが前記メモリ領域中の他の前記プールの方へシフトされ、以て前記プール間のメモリフラグメントが除去されることを特徴とする、請求項３に記載の方法。
【請求項６】
前記メモリブロックがクラスタリングされ、以て同一のプールのメモリブロックが、前記メモリ領域内で互いに隣接するアドレスに好適に再割り当てされることを特徴とする、請求項１に記載の方法。
【請求項７】
前記メモリブロックは、前記プールが前記メモリ領域において解放又は再割り当てされるよりも頻繁に解放又は再割り当てされることを特徴とする、請求項１に記載の方法。
【請求項８】
前記メモリブロックの解放又は再割り当ては略周期的に実行され、以て全ての割り当てられたメモリブロックの解放又は再割り当てが有限の時間内で実行されることを特徴とする、請求項１に記載の方法。
【請求項９】
とりわけデジタルテレビジョン、デジタルセットトップボックス又はデジタルストリーミングアプリケーションといった、デジタル処理製品における請求項１に記載の方法の使用。
【請求項１０】
デジタルメディアデータ処理装置であって、
前記データを保存する物理メモリと、
前記保存されたデータを処理するプロセッサと、
前記物理メモリ内に少なくとも１つのメモリプールのためにメモリ領域を割り当て、
前記少なくとも１つのメモリプールの夫々の中に少なくとも１つのメモリブロックを割り当て、
前記少なくとも１つのメモリブロックに前記データを書き込むことにより、
前記物理メモリ中の少なくとも１つのメモリプールを動的に割り当てる又は解放するメモリ管理ユニットと、
を有する装置であって、前記メモリユニットが、
前記少なくとも１つのメモリブロックが空であるとマークされた後に、前記少なくとも１つのメモリブロックを解放し、
前記メモリ領域内に前記少なくとも１つのメモリブロックを再割り当てし、以て前記少なくとも１つのメモリブロックの解放又は再割り当ての間前記メモリブロックが前記メモリ領域内を移動されるように構成されることを特徴とする装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータの物理メモリ中のメモリプールを動的に割り当てる又は解放する方法であって、前記物理メモリ内に前記メモリプールのためにメモリ領域を割り当てるステップと、少なくとも１つの前記メモリプールの夫々の中に少なくとも１つのメモリブロックを割り当てるステップと、前記少なくとも１つのメモリブロックにデータを書き込むステップと、を有する方法に関する。本発明は更に、デジタル処理製品におけるかような方法の使用に関する。
【０００２】
【従来の技術】
コンピュータメモリの管理は、制限されたリソースを持つデジタルストリーミングシステムにおいてとりわけ重要である。欧州特許ＥＰ０８７２７９８Ａ１より、コンピュータシステムのメモリ中のバッファ領域中のバッファを決定しアドレス指定するためのバッファ管理システムが知られている。このシステムの利用により、複数のバッファプールのサイズが算出され、該バッファプールが割り当てられる。次いで、前記バッファプール内のバッファのバッファサイズが算出され、前記バッファが前記バッファプール内の算出されたアドレスにそれぞれ割り当てられる。前記バッファが割り当てられた後、データが前記バッファに書き込まれ、前記バッファから読み込まれる。前記プール及び前記バッファを一度割り当てることにより、１つの完全なメモリブロック以下の領域がデータを保存するために必要とされる場合のみフラグメンテーション（ｆｒａｇｍｅｎｔａｔｉｏｎ）が発生する。
【０００３】
【発明が解決しようとする課題】
この解決方法の欠点は、前記プール及びバッファのサイズが予め算出される必要があるということである。現在のニーズに従ったプール及びバッファの再算出及び再割り当て（ｒｅ−ａｌｌｏｃａｔｉｎｇ）は不可能であるため、最初の算出の後に前記プール又はバッファを増大すること、及びプログラム可能なハードウェアの柔軟性を利用することは不可能である。
【０００４】
異なるアプリケーションの様式は異なるメモリプール（ｍｅｍｏｒｙ ｐｏｏｌ）を必要とし、全てのメモリプールが同時に割り当てられるわけではないため、動的な割り当て（ａｌｌｏｃａｔｉｏｎ）／解放（ｄｅ−ａｌｌｏｃａｔｉｏｎ）が実行される必要がある。
【０００５】
本発明の目的は、メモリプールのための効率的な動的メモリ割り当てを可能にすることである。本発明の他の目的は、メモリのフラグメンテーションを減少させることである。
【０００６】
【課題を解決するための手段】
本発明の目的は、前記少なくとも１つのメモリブロックは前記少なくとも１つのメモリブロックが空であるとマークされた後に解放され、前記少なくとも１つのメモリブロックは前記メモリ領域内に再割り当てされ、以て前記メモリブロックが、前記少なくとも１つのメモリブロックの解放又は再割り当ての間に前記メモリ領域内を移動されることを特徴とする方法によって解決される。
【０００７】
前記メモリプール又は前記メモリブロックの割り当て／解放の間に、フラグメンテーションが発生する。本発明の要旨は、前記メモリプール又は前記メモリブロックを前記メモリ領域内で移動することにより、このフラグメンテーションを減少させることである。前記メモリブロックを移動することにより、任意の２つのプール又はブロックの間のフラグメント化された部分が除去されることができる。前記メモリプールを移動することによってデータが損失しないことは重要であるから、本発明によれば空のブロックのみが移動される。ブロックはそのように明確にマークされる場合空である。このことは、前記データが読み込まれていないとしても該ブロックは空であり得るということを意味する。
【０００８】
請求項２に記載の分散されたメモリブロックを持つメモリプールもデフラグメント（ｄｅｆｒａｇｍｅｎｔ）される。メモリブロックが前記メモリ領域中に任意に散乱している場合、メモリプールのメモリブロックは前記メモリ領域中の互いに隣接するアドレスに割り当てられない。
【０００９】
前記メモリブロックは前記メモリ領域内を移動されるが、任意の２つの前記ブロックの間のメモリの断片は、任意のメモリプールの他のメモリブロックによって割り当てられる。
【００１０】
多くの場合において、メモリブロックは請求項３に従って割り当てられる。
【００１１】
請求項４に従ってメモリブロックが反対方向に解放／再割り当てされる場合、即ち割り当ての方向が移動の方向と反対である場合、デフラグメンテーションは加速する。
【００１２】
メモリプール間にフラグメンテーションが起こり得る。２つのメモリプールの間の該フラグメンテーションを減少するために、請求項５に記載の方法が提案される。空のメモリブロックだけが移動されることが理解される。前記メモリブロックは次々と隣接するメモリプールの方へシフトされる。１つのメモリプールの全てのメモリブロックが前記隣接するメモリプールの方へ移動された後、これら２つのメモリプールの間にはフラグメント化されたメモリはなくなる。前記方法の利点は、前記メモリブロックはデータをコピーすることなく割り当て／解放されるため、余分なハードウェアが必要とされないということである。前記メモリプールは互いの方向へと移動されるため前記メモリ領域内で連続しており、このことはメモリ管理を容易にする。
【００１３】
前記メモリ領域中を前記メモリブロックを移動させている間、これらのメモリブロックは請求項６に従ってクラスタリング（ｃｌｕｓｔｅｒｉｎｇ）されても良い。前記メモリブロックをクラスタリングすることによって、２つの近接するメモリブロックが１つの同じメモリプールのものとなる見込みは増加される。
【００１４】
任意の２つのメモリブロックの間のフラグメンテーションギャップは、好ましくは、次の又は前のアドレスのブロックと同じプールのメモリブロックのために割り当てられる。このことは将来のデフラグメンテーションの速度を増加する。移動方向は左方向であっても右方向であっても良い。
【００１５】
前記メモリ領域は、前記メモリプールに渡る前記アドレスの割り当て／解放の間に前記メモリブロックを移動することによってのみデフラグメンテーションされるため、前記メモリブロックは請求項７に従って割り当て／解放される。
【００１６】
請求項８による周期的な解放／再割り当ては更に好ましい。このことはデフラグメンテーションがメモリ領域全体で実行されることを保証する。
【００１７】
デジタルビデオ製品、とりわけデジタルテレビジョン、デジタルセットトップボックス又はデジタルストリーミングアプリケーションにおける上述の方法の利用は、本発明の他の態様である。
【００１８】
本発明のこれらの及び他の態様は、以下記載される実施例より説明され明らかになるであろう。
【００１９】
【発明の実施の形態】
図１には、メモリ領域４内のメモリプール０、１、２及び３が図示されている。図示されているメモリプール０、１、２及び３は方向５の方向にメモリ領域４内を移動される。時間軸６はメモリプール０、１、２及び３の移動の経過を示す。メモリプール２と３との間には、フラグメント２０が位置している。メモリフラグメント１０はメモリプール１と２との間に位置している。
【００２０】
メモリ領域４をデフラグメントするため、最初にメモリプール２がメモリプール３の方へ方向５ｂの方向にシフトされる。メモリプール２をメモリプール３の方へ移動することにより、フラグメント２０はフラグメント１０の方へシフトされる。またプール１はプール２の方へ方向５ａの方向に移動され、プール０はプール１の方へ方向５ｃの方向に移動され、かくしてメモリフラグメント１０をメモリプール０及び１の左へ移動する。プール２はプール３に隣接したとき、これらのプールの間にはメモリフラグメントはない。メモリフラグメント２０はメモリプール１と２との間にあり、メモリフラグメント１０はメモリプール０と１との間にある。
【００２１】
メモリプール０、１、２及び３を移動することにより、メモリフラグメンテーション１０、２０が左へと、例えばメモリのより高いアドレスへとシフトされるにつれて、メモリ領域４はデフラグメント化される。これらのメモリフラグメントは次いで新たなメモリプールのために再び割り当てられる。メモリの解放／再割り当ての間空のメモリブロックのみが移動されるため、図示されたデフラグメンテーションはデータをコピーすることなく実行される。メモリブロックの解放／再割り当ての方法は図２に示される。
【００２２】
図２は、空のメモリブロック２ｂと、一杯の、例えばデータを含んだメモリブロック２ａとを持つメモリプール２を示す。メモリプール２を方向５ｂの方向に移動する場合、全てのメモリブロック２ａが解放／再割り当てされる必要がある。
【００２３】
ブロックサイズは一定であり、各ブロックのメモリアドレスのみが変化する。メモリブロック２ａは左から右にメモリフラグメント２０の方へシフトされる。メモリブロック２ａをシフトしている間、メモリフラグメント２０内のメモリは割り当てられ、メモリブロック２ａによって占められる。
【００２４】
メモリブロック２ａの移動はメモリブロック２ａをコピーすることによっては実行されない。その代わり各メモリブロック２ａは、メモリブロック２ａのデータが読み出され、メモリブロック２ａが解放された後にのみ移動されることができる。メモリブロック２の解放の後、新たなメモリアドレスが可能な限り最小のメモリアドレスに割り当てられる。メモリプール２の移動の間、メモリフラグメント２０はメモリプール２を移動し、該メモリフラグメントのメモリは他のメモリプールのメモリブロックのために割り当てられることはできない。メモリフラグメント２０のメモリは、メモリプール２全体がメモリプール３の方へ移動された後にのみアクセスできる。
【００２５】
図２に示されるように、メモリプール２は連続するメモリブロックのみを有する。このことはメモリプール２がコンピュータシステムの物理メモリ内の連続したアドレス領域を占めることを意味する。しかしながらメモリプールは、隣接するメモリアドレスに割り当てられていない分散されたメモリブロックを有することも可能である。かような場合には、メモリの移動は少し異なる。連続したメモリプールにおけるように、メモリフラグメントはメモリプールの移動の間にはアクセスできず、一時的により少ないメモリが利用可能となる。分散されたメモリプールを用いると、前記メモリフラグメントがメモリプールを移動しているときであっても、該メモリフラグメントは依然割り当てのために利用可能である。前記メモリフラグメントは特定のメモリプールに占められたメモリの量に追加される必要はなく、余分なメモリは必要とされない。
【００２６】
異なるプールのメモリブロックが混合された場合、デフラグメンテーションの速度は減少する。２つの隣接するメモリブロックが同一のブロックのものであり、右から左へ解放／再割り当てされる場合、デフラグメンテーション速度は増加する。２つの隣接するメモリブロックが同一のプールからのものである見込みは、図３に示されるようなクラスタリングによって増加される。
【００２７】
図３は、異なるメモリプールのメモリブロック７、８及び９によって占められたメモリ領域４を示す。これらのメモリブロック７、８及び９の間には、空のメモリフラグメント１１が発生している。図示されるクラスタリング作業は以下の通りである。
【００２８】
デフラグメンテーションは、右から左へ、例えば低いメモリアドレスから高いメモリアドレスへと実行される。メモリフラグメント１１ａを満たすため、メモリフラグメント１１ａの右のメモリブロックと同一のメモリプールのメモリブロック、本例ではメモリプール７のメモリブロックが探索される。メモリブロック７ｃ及びｄがデータが空であり解放されても良い場合、これらのブロックは解放され、図示されるようにメモリフラグメント１１中に再割り当てされる。メモリブロック７ｃ及び７ｄが解放された場合、メモリフラグメント１１ａ及び１１ｂのサイズと位置は、メモリフラグメント１１ｃ、１１ｄ及び１１ｅに変更される。メモリブロック１１ｃは再びメモリブール７のメモリブロックで満たされるべきである。メモリプール７のメモリブロックがより高いメモリアドレスに残っていない場合、次のメモリブロック、本例ではメモリブロック９ａがメモリフラグメント１１ｃにシフトされる。メモリフラグメント１１ｄはメモリプール８のメモリブロックで満たされるべきである。従ってメモリブロック８ｂは解放されメモリフラグメント１１ｄ中に再割り当てされる。次のステップにおいて、メモリブロック９ｂがメモリフラグメント１１ｇ中に再割り当てされる。最後にはメモリブロック９ｃが右にシフトされる。
【００２９】
図示した方法によってメモリ領域４をデフラグメントすることにより、新たなメモリブロックによって容易に占められ得る１つのメモリフラグメント１１ｈのみが残る。
【００３０】
メモリのフラグメンテーションを減少することにより、利用可能なメモリが最大限に使用されることができる。とりわけ例えば実行時において異なる処理モードがサポートされているデジタルビデオ処理のようなデジタル処理製品においては、動的なメモリプール割り当てが実行され、従ってメモリフラグメンテーションが引き起こされる。本発明は、このメモリフラグメンテーションを減少し、プログラム可能なハードウェアの柔軟性を十分に利用することを可能とする。
【００３１】
図４は本発明によるデジタルメディアデータ処理装置を模式的に示す。このデジタルメディア処理装置４００は、入力部４０２を通してデジタルメディアデータを受信する。このデータは、例えばビデオ、オーディオ及びこれら２つの組み合わせといった、いずれの種類のデジタルコンテンツであっても良い。このメディアデータはケーブルネットワークから、衛星受信器から、ＤＶＤプレイヤから又は他のいずれの適切な装置から受信されても良い。装置４００は前記メディアデータを処理し、次いで出力部４０４を通してデータを出力する。前記処理されたデータは表示装置上に及びスピーカシステムを通して再生されるか、又は装置４００の特定の特質に依存してテープ又はディスクに記録されても良い。装置４００の例は、テレビジョン番組の受信と再生のためのデジタルテレビジョン、別個の表示装置上への表示又は保存のいずれかのためテレビジョン番組を受信し処理するためのセットトップボックス、及び番組を処理及び保存するためのデジタルビデオレコーダである。
【００３２】
装置４００は、既知のコンピュータアーキテクチャに従って実現されても良い。装置４００は、ワーキングメモリ４０８中に保存されたプログラム命令を実行するためのプロセッサ４０６を持つ。ワーキングメモリ４０８は単一のメモリとして図示されているが、保存されるプログラム及びデータの型に依存して多数の異なるメモリモジュールに分離されていても良い。ワーキングメモリ４０８は、オペレーティングシステムソフトウェアを備えるオペレーティングユニット４１０と、アプリケーションソフトウェアを備えるアプリケーションユニット４１２を含む。前記アプリケーションソフトウェアの実行は、ユーザインタフェース及びデータ処理のような前記装置の機能を提供する。更に、装置４００は該装置と外部装置との間の通信を提供するインタフェース４１４を持つ。装置４００は、該装置の種々の構成要素を接続し、該構成要素間の命令及びデータの交換を可能にするバス４１６を持つ。
【００３３】
ワーキングメモリ４０８は、前記メディアデータ又は中間結果のようなデータをメモリ領域４に保存するようにも構成される。前記メモリにデータを保存するために前記装置は、図１乃至３に関連して説明されたように、前記メモリプールを割り当て及び維持するためのメモリ管理ユニット４１８を持つ。特定の実施例において前記メモリ管理ユニットは、前記ワーキングメモリ内にメモリプール０、１、２及び３のようなメモリプールのためにメモリ領域４を割り当て、夫々のメモリプール０、１、２及び３内にメモリブロック２ａ及び２ｂのようなメモリブロックを割り当て、メモリブロック２ａにデータを書き込むことによって、前記ワーキングメモリ中のメモリプール０、１、２及び３のようなメモリプールを動的に割り当て／解放するために利用される。この目的のため、前記メモリ管理ユニットは、メモリブロック２ａを該メモリブロックが空であるとマークされた後に解放し、前記メモリブロックをメモリ領域４内に再割り当てするように構成される。以て前記メモリブロックは、前記メモリブロックの解放／再割り当ての間前記メモリ領域内を移動される。装置４００のメモリ管理ユニット４１８は、前記ワーキングメモリ中に別々に保存されるソフトウェアユニットとして図４の実施例に示されている。しかしながら他の実施例も可能である。例えば前記メモリ管理ユニットは前記オペレーティングシステムソフトウェアの一部であっても良く、又は異なるメモリに位置していても良い。
【図面の簡単な説明】
【図１】連続したメモリプールを持つメモリ領域を示す。
【図２】連続したメモリブロックを持つメモリプールを示す。
【図３】メモリブロックのクラスタリングを示す。
【図４】本発明を実現するデジタルメディアデータ処理装置を示す。
【図１】
2005500620.tif 000003
【図２】
2005500620.tif 000004
【国際公開パンフレット】
2005500620.tif 000005
2005500620.tif 000006
2005500620.tif 000007
2005500620.tif 000008
2005500620.tif 000009
2005500620.tif 000010
2005500620.tif 000011
2005500620.tif 000012
2005500620.tif 000013
2005500620.tif 000014
2005500620.tif 000015
2005500620.tif 000016
2005500620.tif 000017
2005500620.tif 000018
2005500620.tif 000019
【国際調査報告】
2005500620.tif 000020
2005500620.tif 000021