(57)【要約】本発明は、物理メモリにおけるメモリ構成を変更する方法、その方法の使用法、及び集積回路に関する。メモリパケットのメモリプールを有するメモリ構成は、第１のメモリ構成のメモリプール内の解放されたメモリパケットを検出し、解放されたメモリパケットからのメモリを第２のメモリ構成に与え、第２のメモリ構成の与えられた空きのメモリのサイズを決定し、第２のメモリ構成のプールのメモリパケットのためのメモリの要求量を、与えられた空きのメモリのサイズが割当て要求を満足する場合に、与えられた空きのメモリ内に割当てることによって、新しいメモリ構成に変更されることが可能である。この移行によって、継ぎ目のないモード変更が適用され得、第１のモードにおいて解放されたメモリパケットは、第２のモードによって前もって使用され得る。断片化が回避され得る。
2005521939.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリ構成と少なくとも第２のメモリ構成が、それぞれ、少なくとも１つのメモリパケットを有する少なくとも１つのメモリプールによって定義される物理メモリにおいてメモリ構成を変更する方法であって、
ａ）前記第１のメモリ構成のメモリプール内の解放されたメモリパケットを検出する段階と、
ｂ）前記解放されたメモリパケットからのメモリを前記第２のメモリ構成に与える段階と、
ｃ）前記第２のメモリ構成の前記与えられた空きのメモリのサイズを決定する段階と、
ｄ）前記第２のメモリ構成のプールのメモリパケットのメモリの要求量を、前記与えられた空きのメモリのサイズが前記割当て要求を満足する場合に、前記与えられた空きのメモリ内に割当てる段階と、
を有する方法。
【請求項２】
前記第１のメモリ構成の全ての割当てられたメモリパケットが解放され、前記第２のメモリ構成の全てのメモリパケットが割当てられるまで、段階ａ乃至ｄを繰り返すことを特徴とする請求項１記載の方法。
【請求項３】
更なるメモリ構成への段階ａ乃至ｄによる前記メモリ構成の変更を、前記前のメモリ構成の全てのメモリパケットの解放の前に行うことを特徴とする請求項１記載の方法。
【請求項４】
段階ａの前に、前記第１のメモリ構成の全ての空きのメモリを少なくとも前記第２のメモリ構成に与えることを特徴とする請求項１記載の方法。
【請求項５】
前記少なくとも１つのメモリプールに固定メモリ場所を割当てることによって前記メモリ構成を構成し、
前記少なくとも２つのメモリプールのそれぞれの中にメモリパケットを与えることを特徴とする請求項１記載の方法。
【請求項６】
１つのメモリプール内に同等のサイズのメモリパケットを割当てることを特徴とする請求項１記載の方法。
【請求項７】
有限時間の間に、前記第１のメモリ構成のメモリパケットを解放することを特徴とする請求項１記載の方法。
【請求項８】
段階ａの前に、前記第２のメモリ構成を決定することを特徴とする請求項１記載の方法。
【請求項９】
ストリーミングシステム、特に、ビデオ及びオーディオストリーミングシステムにおける請求項１に記載の方法の使用法であって、
メモリ構成は、定義されたストリーミンググラフに基づいている使用法。
【請求項１０】
請求項１に記載のメモリ割当て方法を供給する集積回路、特に、デジタル信号プロセッサ、デジタルビデオプロセッサ、又はデジタルオーディオプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のメモリ構成及び少なくとも第２のメモリ構成が、それぞれ、少なくとも１つのメモリパケットを有する少なくとも１つのメモリプールによって定義される物理メモリにおいてメモリ構成を変更する方法に係る。本発明は更に、そのような方法の使用に係る。
【背景技術】
【０００２】
多くのアプリケーションにおいて、物理メモリは、制限され、効率よく使用されなければならない。物理メモリを使用するためには、アロケータが、与えられた物理メモリ内の空いたメモリブロックを割当てなければならない。メモリブロックが、時間内に割当てられ且つ割当てが取り消されるに従って、物理メモリは断片化され、このことは、割当てられたメモリの割当てられたブロック間の割当てられないメモリのブロックが発生することを意味する。これらのいわゆる穴は、全ての利用可能な物理メモリがアプリケーションによって用いられることをできなくする。
【０００３】
ポール・Ｒ・ウィルソン外（情報科学学部、テキサス大学、オースティン）による「Dynamic  Storage  Allocation:  A  Survey  and  Critical  Review」から、アロケータ、及び、メモリ内の断片化を回避するためのメカニズムが公知である。アロケータは、メモリの空き領域を記録し、隣接する空きブロックを大きい空きブロックに融合するために用いるメカニズムによって分類される。アロケータに重要なことは、そのポリシーとストラテジであり、即ち、アロケータが、実際の要求ストリームにおける規則性を適切に使用しているか否かということである。
【０００４】
アロケータは、新しいメモリブロックを割当て、所与のメモリブロックを解放する機能を与える。様々なアプリケーションは、様々な割当てのストラテジ、並びに様々なメモリサイズを必要とする。割当てのためのストラテジは、同等のサイズのメモリブロックのプールを使用することである。これらの同等のサイズのメモリブロックは、パケットとも称され得る。各割当要求は、その要求を満足するプールからのパケットに対する要求にマッピングされる。パケットがプール内で割当てられ且つ解放される場合、外部の断片化が回避される。プール内の断片化は、要求されたメモリブロックが選択されたプールのパケット内にぴったりと適合しない場合にのみ発生し得る。
【０００５】
ストリーミングシステムでは、ストリーミングデータは、処理ノードのグラフによって処理される。処理ノードは、データパケットを用いてデータを処理する。各データパケットは、メモリ内の１メモリブロックに対応し、これは全ての処理ノードによって共有される。ストリーミンググラフは、ストリーミングデータに実行されなければならない処理段階が既知であるときに作成される。プール内のパケットのサイズは、ストリーミングされるデータに依存する。オーディオデータは、数キロバイトのパケットサイズを必要とし、ビデオデータは、最大１メガバイトのパケットサイズを必要とする。
【０００６】
ストリーミンググラフが変更されなければならない場合、メモリプールの構成も変更されなければならない。ストリーミンググラフは、様々なアプリケーションとそれらのデータストリームが１つのシステム内でサポートされる場合に変更され得る。更に、データストリームの処理段階も変更され得、これは、ストリーミンググラフに処理ノードを加える又はストリーミンググラフから処理ノードを取り除くことが必要となる。多くのシステムはメモリが制約されるので、全てのアプリケーションデータがメモリの中に一度に格納されるわけではない。このことは、第１のアプリケーションに必要なメモリプールは、第２のアプリケーションのメモリプールのために解放されなければならないことを意味する。メモリを解放し且つ割当てすることにより、そのメモリの断片化が発生する場合がある。
【０００７】
ユーザが、特定のオーディオ又はビデオフィルタを、ストリーミンググラフに挿入する又は、ストリーミンググラフから取り除く必要があると判断すると、メモリの構成は変更されなければならない。この構成変更は、データを損失することなく行われなければならない。特に、ストリーミングシステムでは、データは、固定レートでシステム内にストリーミングされ続ける。データの処理をノードによって停止し、１つのプールが完全に解放されるまで待機し、最後にそのメモリを新しいプールに割当てることは可能ではない。このような手順は、ストリーミングデータのバッファリングを必要とし、このことは、制限されたメモリでは可能ではない。
【０００８】
ソフトウェアストリーミングは、ノード間の通信はメモリパケットを用いて行われる処理ノードグラフに基づいている。各メモリパケットは、全てのノードによって共有されるメモリ内の１メモリブロックに対応する。固定サイズメモリプールが、ストリーミングシステム内に設けられる。これらのメモリプールでは、固定サイズのメモリパケットが割当てられる。各処理ノードは、そのパケットに対し様々な要件を有し得、それにより、一般的に、複数の異なるプールがある。ストリーミンググラフにおける変更は、これは、データの処理が変更されたことを意味するが、メモリ構成の変更を必要とし、というのは、様々なパケットサイズが、新しいメモリプール内に必要とされ得るからである。メモリ構成間の継ぎ目のない変更を可能にするために、前のメモリプールの全メモリパケットの解放の前に、新しいメモリプールのために解放されたメモリパケットの使用が可能にされなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
今日のアロケータは、そのような処理モード間の継ぎ目のない変更のために十分な方法を与えないので、本発明は、動作のモードを変更する間に、余分なバッファリングの量を制限することを目的とする。本発明は更に、異なるモードにおける少なくとも２つのプール間で同じメモリ部分をシフトすることを可能にすることを目的とする。本発明は更に、異なるモードにおける様々なメモリプールによって同じメモリを再利用することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のこれらの目的は、第１のメモリ構成におけるメモリプール内の解放されたメモリパケットを検出する段階と、解放されたメモリパケットからのメモリを第２のメモリ構成に与える段階と、第２のメモリ構成の与えられた空きのメモリのサイズを決定する段階と、第２のメモリ構成のプールのメモリパケットのメモリの要求量を、与えられた空きのメモリのサイズが割当て要求を満足する場合に、与えられた空きのメモリ内に割当てる段階を有する方法によって達成される。
【００１１】
利点は、動作モード間の移行は継ぎ目がなく、付加的なハードウェアは必要でなく、少しだけ追加のメモリが必要となるという点である。メモリ断片化は、異なるモード間を移行する間にのみ発生する。
【００１２】
メモリ構成は、決められた数のメモリプールを与え、各メモリプールは、特定数のメモリパケットを有し、１つのメモリプールは、少なくとも１つのメモリパケットから構成される。
【００１３】
処理ノードがデータパケットの処理を終えると、このデータパケットのメモリは解放され得、何故なら処理されたデータは、次の処理ノードに送られるからである。これは、アロケータは、格納されたデータの処理の後に、メモリパケットを解放するということを意味する。
【００１４】
第１のメモリ構成におけるメモリパケットが解放されると、このメモリパケットは、第２のメモリ構成に与えられることが可能である。更なるメモリ構成への移行も行われることが可能である。
【００１５】
空きメモリを少なくとも第２のメモリ構成に与える後に、この与えられた空きメモリの全体サイズが決定される。これは、第１のメモリ構成からの全ての解放されたメモリパケットのサイズであり、少なくとも第２のメモリ構成に与えられ、再割当てはまだされていない。
【００１６】
与えられた空きメモリのサイズが、第２のメモリ構成のプールのための１つのメモリパケットのメモリ要求を満足する場合、このメモリパケットは、この与えられた空きメモリ内に割当てられる。これは、解放された空きメモリは、第１のメモリ構成の全ての割当てられたメモリパケットが解放される前に、第２のメモリ構成によって用いられ得るということを意味する。
【００１７】
２つ以上のメモリ構成間で構成変更を適用するには、請求項２に記載の方法が好適である。この場合、前の移行が完全に終了していなくても、更なるメモリ構成への移行を行い得る。
【００１８】
第１の構成の全てのメモリパケットが解放され、第２の構成に与えられることを確実にするために、請求項３に記載の方法が好適である。
【００１９】
一部の場合において、全てのメモリがメモリ構成に使用されるわけではない。従って、請求項４に記載の方法が好適である。この場合は、空きメモリは、第１のメモリ構成の任意のメモリパケットの解放の前に、第２のメモリ構成のメモリパケットに割当てられ得る。メモリは、１つ以上の次のメモリ構成のメモリパケットに与えられることも可能である。
【００２０】
メモリパケットの割当てを可能にするために、請求項５に記載の方法が好適である。この場合、メモリ構成は、全ての構成の前に固定される。
【００２１】
ストリーミングデータが処理される場合、請求項６のように同等のサイズのメモリパケットが好適である。
【００２２】
特定の時間内のモード変更を確実にするために、請求項７のようにメモリパケットを解放することが好適である。
【００２３】
メモリ構成が変更される場合に効率のよいメモリプール及びメモリパケットの割当てを可能にするために、請求項８に記載の方法が好適である。第１の構成から第２の構成に変更する前に、アロケータは、第２の構成を知っており、これは、アロケータは、メモリプールの数とプール内のメモリパケットのサイズを知っているということを意味する。
【００２４】
上述した方法のストリーミングシステム、時に、ビデオ及びオーディオストリーミングシステムにおける使用法は、本発明の更なる面であり、ここでは、メモリ構成は、定義されたストリーミンググラフに基づいている。
【００２５】
上述した方法によるメモリ割当てを供給する集積回路、特に、デジタル信号プロセッサ、デジタルビデオプロセッサ、又はデジタルオーディオプロセッサは、本発明のもう１つの面である。
【発明を実施するための最良の形態】
【００２６】
本発明の上述した及び他の面は、以下に説明する実施例を参照することにより明らかとなり、説明する。
【００２７】
図１は、本発明の方法のフローチャートを示す。段階２において、構成Ａが定義され、１つのメモリ内に割当てられる。構成Ａは、メモリプールの数と、各メモリプール内のメモリブロック（パケット）の数及びサイズを記述する。
【００２８】
モード変更が要求される（６）場合、新しいメモリ構成Ｂが決定されなければならない（４）。メモリ構成Ｂは、要求されたモードの必要に基づいて決定される。
【００２９】
段階８において、構成Ａの全ての空きメモリが、構成Ｂに与えられる。段階１０において、任意のメモリ要求がまだ保留されているか否かが決定される。これらの要求は、段階４において前に決定されたメモリ構成Ｂに基づいて決定される。アロケータは、構成Ｂに応じてメモリを構成するためにメモリパケットがまだ割当てられなければならないか否か知っている。
【００３０】
保留のメモリ要求がある場合、段階１２において、構成Ｂのために与えられた空きメモリが、構成Ｂの１メモリパケットのために十分に大きいか否かが決定される。構成Ｂに与えられた空きメモリが、構成Ｂのプールの１メモリパケットのために十分に大きい場合、段階１４において、このメモリパケットは、与えられた空きのメモリ内に割当てられる。
【００３１】
与えられた空きメモリのサイズが、構成Ｂの任意のプールの任意の要求されるメモリパケットより小さい場合、段階１６が処理される。段階１６では、任意のパケットが、構成Ａのために依然として割当てられているか否かが決定される。任意のメモリパケットが、構成Ａのために依然として割当てられている場合、段階１８において、構成Ａにおける任意のメモリパケットの解放が待機される。
【００３２】
構成Ａにおけるメモリパケットが解放された後、段階１９において、解放されたメモリパケットは、構成Ｂに与えられる。段階１０、１２、１４、１６、１８及び１９が、保留されたメモリ要求がなくなるまで処理される。
【００３３】
段階１０において、構成Ｂは、完全に構成され、保留されたメモリ要求がないことが検出されると、段階１０、１６、１８、１９が、構成Ａの全メモリパケットが解放されるまで処理される。この場合、段階２０において、モード移行は終了する。段階２乃至段階２０の全ての段階が処理された後、メモリは、構成Ｂに応じて構成され、更なるメモリパケットは、構成Ａに割当てられることはない。
【００３４】
構成Ａから構成Ｂに移行する間に、メモリパケットは、構成Ａの全メモリパケットが解放される前に構成Ｂにおいて使用され得る。
【００３５】
図２では、メモリ構成の概略図を示す。メモリ２２は、メモリアドレス２２０−２２８を介してアドレス指定可能である。構成Ａでは、メモリ２２は、２つのプールＡ１、Ａ２に分割され、プールＡ１は、３つのサイズ２のパケットを有し、プールＡ２は、１つのサイズ３のパケットを有する。構成Ａから構成Ｂまでの移行２５の間に、メモリ２２は、２つのプールＢ１、Ｂ２に再編成される。プールＢ１は、３つのサイズ１のパケットを、プールＢ２は、２つのサイズ３のパケットを有する。
【００３６】
段階１８１において、アドレス２２６におけるパケットＡ２１が解放され、この解放されたメモリは、構成Ｂ０に与えられる。段階１４１において、この与えられた空きメモリＢ０は、メモリパケットＢ２２に割当てられる。段階１８２において、アドレス２２０におけるメモリパケットＡ１１が解放され、空きメモリＢ０に与えられる。段階１４２において、メモリパケットＢ１１、Ｂ１２が、空きメモリＢ０内のメモリアドレス２２０、２２１において割当てられる。段階１８３において、メモリアドレス２２２におけるメモリパケットＡ１２が解放され、段階１４３において、メモリパケットＢ１３が、空きメモリＢ０内に割当てられる。段階１８４において、メモリパケットＡ１３が解放され、空きメモリＢ０に与えられる。最後に、段階１４４において、メモリパケットＢ２１が、アドレス２２３における空きメモリＢ０内に割当てられる。
【００３７】
本発明の方法を適用することによって、プールが、同じメモリ位置において両方の構成に置かれ、また、新しい構成のプールに追加可能なパケットの量は、前の構成からのパケットが解放されると最大限にすることが可能である。
【００３８】
将来のモードにおいてパケットが割当てられる必要のある場所について付加的な知識を用いることによって、断片化を回避し得る。更に、メモリプールは、インクリメントで割当てられることが可能であり、これは、ストリーミングシステムの待ち時間を減少し、従って、継ぎ目のないモード変換のために必要なメモリ量も減少される。
【図面の簡単な説明】
【００３９】
【図１】本発明の方法のフローチャートである。
【図２】メモリ構成を示す概略図である。
【図１】
2005521939.tif 000003
【図２】
2005521939.tif 000004
【国際調査報告】
2005521939.tif 000005