(57)【要約】メモリを共有するマルチプロセッサ・システム（１００）は、メモリ（１０２）と、複数のプロセッサ（１０４）とを有する。プロセッサは、プロセッサ間にメモリ・バッファ・プールを確立（２０２）し、各々のメモリ・バッファ・プール毎に、対応するメモリ・バッファを指示するバッファ・ポインタのアレイを確立（２０４）するようにプログラムされる。プロセッサは、バッファ・ポインタの各々のアレイ毎に、メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立（２０６）する。各々のポインタは、アレイの所定位置を最初に指示する。プロセッサは、消費されたバッファにかかる消費ポインタと、解放されたバッファにかかる解放ポインタとを調節（２０８−２３６）するようにプログラムされる。
2009509264.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・システムにおいてメモリを共有する方法であって、前記方法は、
各々のプロセッサ毎にメモリ・バッファ・プールを確立することと、
各々のメモリ・バッファ・プール毎に、それぞれのメモリ・バッファを対応するように指示するバッファ・ポインタのアレイを確立することと、
バッファ・ポインタの各々のアレイ毎に、前記メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、前記メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立することであって、各々のポインタは前記アレイの所定位置を最初に指示することと、および
消費されたバッファと解放されたバッファとに応じて、消費ポインタと解放ポインタを調節することと
を含む、方法。
【請求項２】
プロセッサ間のバッファ・ポインタと、対応するメモリ・バッファとを消費することと解放することとは、
前記消費ポインタによって指示されたバッファ・ポインタを読込むことと、
前記バッファ・ポインタをｎｕｌｌにすることと、
前記消費ポインタを次のバッファ・ポインタにインクリメントすることと、
プロセッサ間の前記消費されたバッファ・ポインタとその関連するメモリ・バッファとを共有することと、
前記解放ポインタによって指示されたｎｕｌｌを、前記共有されるバッファ・ポインタと交換することと、および
前記解放ポインタをインクリメントすることと
を含む、請求項１記載の方法。
【請求項３】
前記方法は更に、
前記読込むことに先立って、前記消費ポインタがｎｕｌｌを指示しないことを検証することと、および
ｎｕｌｌが検出された場合に、前記消費ポインタが利用可能なバッファ・ポインタを指示するまで、前記消費操作を止めることと
を含む、請求項２記載の方法。
【請求項４】
前記メモリを制御するプロセッサによってバッファ・ポインタと、対応するメモリ・バッファとを消費することと解放することとは、
前記消費ポインタによって指示されたバッファ・ポインタを読込むことと、
前記バッファ・ポインタをｎｕｌｌにすることと、
前記消費ポインタを次のバッファ・ポインタにインクリメントすることと、
前記消費されたバッファ・ポインタに関連した前記メモリ・バッファを消費することと、
前記消費ポインタをデクリメントすることと、および
前記デクリメントされた消費ポインタによって指示されたｎｕｌｌを、前記消費されたバッファ・ポインタと交換し、それによって、前記ポインタおよびその関連するメモリ・バッファを解放することと
を含む、請求項１記載の方法。
【請求項５】
前記方法は更に、
前記読込むことに先立って、前記消費ポインタがｎｕｌｌを指示しないことを検証することと、および
ｎｕｌｌが検出された場合に、前記消費ポインタが利用可能なバッファ・ポインタを指示するまで、前記消費操作を止めることと
を含む、請求項４記載の方法。
【請求項６】
前記方法は更に、各々のメモリ・バッファ・プール毎に、前記メモリ・バッファの各々に対応するバッファ・サイズとバッファ・カウントとのうちの少なくとも１つを確立することを含む、請求項１記載の方法。
【請求項７】
前記方法は更に、付加的なプロセッサとのメモリ共有に適応するために、プロセッサによって、メモリ・バッファ・プールと、対応する消費ポインタと解放ポインタとを調節することを含む、請求項１記載の方法。
【請求項８】
メモリを共有するマルチプロセッサ・システムであって、前記システムは、
メモリと、
複数のプロセッサと
を備え、各々のプロセッサは、
前記プロセッサ間にメモリ・バッファ・プールを確立し、
各々のメモリ・バッファ・プール毎に、対応するメモリ・バッファを指示するバッファ・ポインタのアレイを確立し、
バッファ・ポインタの各々のアレイ毎に、前記メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、前記メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立するようにプログラムされ、各々のポインタは、前記アレイの所定位置を最初に指示し、更に、
消費されたバッファと解放されたバッファとに応じて、消費ポインタと解放ポインタを調節するようにプログラムされた、マルチプロセッサ・システム。
【請求項９】
前記プロセッサは、
前記消費ポインタによって指示されたバッファ・ポインタを読込み、
前記バッファ・ポインタをｎｕｌｌにし、
前記消費ポインタを次のバッファ・ポインタにインクリメントし、
プロセッサ間の前記消費されたバッファ・ポインタとその関連するメモリ・バッファとを共有し、
前記解放ポインタによって指示されたｎｕｌｌを、前記共有されるバッファ・ポインタと交換し、
前記解放ポインタをインクリメントするようにプログラムされる、請求項８記載のマルチプロセッサ・システム。
【請求項１０】
前記プロセッサは、
前記読込むことに先立って、前記消費ポインタがｎｕｌｌを指示しないことを検証し、
ｎｕｌｌが検出された場合に、前記消費ポインタが利用可能なバッファ・ポインタを指示するまで、前記消費操作を止めるようにプログラムされる、請求項９記載のマルチプロセッサ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はマルチプロセッサ・システムに関し、特にマルチプロセッサ・システムにおいてメモリを共有する方法および装置に関する。
【背景技術】
【０００２】
典型的には、プロセッサ間でメモリを共有することは、信号装置によって達成される。マルチプロセッシング環境において共有されるメモリへのアクセスを制限する古典的な方法である。信号装置は、多くの場合、ライブラリ呼出の形態でＡＰＩ（アプリケーション・プログラミング・インタフェース）によって管理される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、リアルタイムのアプリケーション（たとえばストリーミング動画）毎の呼出は、あまりにも時間が長く掛かる。それによって、エンドユーザが気になるほど、アプリケーションの性能に影響を及ぼすことがある。
【０００４】
したがって、マルチプロセッサ・システムにおいて共有されるメモリ・アプリケーションの性能を改善する必要性が生じる。
【課題を解決するための手段】
【０００５】
本発明にかかる態様は、マルチプロセッサ・システムにおいてメモリを共有する方法および装置を提供する。
本発明の第１態様においては、マルチプロセッサ・システムにおいてメモリを共有する方法は、複数のプロセッサ毎にメモリ・バッファ・プールを確立し、各々のメモリ・バッファ・プール毎に、対応するメモリ・バッファを指示するバッファ・ポインタのアレイを確立することを含む。本方法は、バッファ・ポインタの各々のアレイ毎に、メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立することを含む。各々のポインタは、前記アレイの所定位置を最初に指示する。本方法は、消費されたバッファと解放されたバッファとに応じて、消費ポインタと解放ポインタを調節することを更に含む。
【０００６】
本発明の第２態様においては、マルチプロセッサ・システムは、メモリを共有するためのコンピュータ読み取り可能な記憶媒体を有する。該記憶媒体は、プロセッサ間にメモリ・バッファ・プールを確立し、各々のメモリ・バッファ・プール毎に、対応するメモリ・バッファを指示するバッファ・ポインタのアレイを確立するためのコンピュータ指示を有する。記憶媒体は、バッファ・ポインタの各々のアレイ毎に、メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、前記メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立するためのコンピュータ指示を更に有する。各々のポインタは、アレイの所定位置を最初に指示する。記憶媒体は、消費されたバッファと解放されたバッファとに応じて、消費ポインタと解放ポインタを調節するためのコンピュータ指示を更に備える。
【０００７】
本発明の第３態様においては、メモリを共有するマルチプロセッサ・システムは、メモリと、複数のプロセッサとを有する。プロセッサは、該プロセッサ間にメモリ・バッファ・プールを確立し、各々のメモリ・バッファ・プール毎に、対応するメモリ・バッファを指示するバッファ・ポインタのアレイを確立するようにプログラムされる。プロセッサは、バッファ・ポインタの各々のアレイ毎に、メモリ・バッファ・プールを所有するプロセッサに対する消費ポインタと、メモリ・バッファ・プールを共有する別のプロセッサに対する解放ポインタとを確立するように更にプログラムされる。各々のポインタは、アレイの所定位置を最初に指示する。プロセッサは、消費されたバッファと解放されたバッファとに応じて、消費ポインタと解放ポインタを調節するように更にプログラムされる。
【発明を実施するための最良の形態】
【０００８】
本明細書は、新規であると見なされる本発明の実施形態の特徴を規定する請求の範囲によって結論づけられる。本発明の実施形態は、図面に関する次の記述の検討から一層良く理解されると考えられ、同様の参照符号は繰り返される。
【０００９】
図１は、本発明の実施形態にかかるマルチプロセッサ・システム１００のブロック図である。マルチプロセッサ・システム１００は、メモリ１０２と、複数のプロセッサ１０４とを備える。メモリ１０２は、大容量記憶装置のディスク・ドライブ、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、フラッシュ、および同様の読書可能な記憶媒体のような任意の従来の記憶装置のうちの少なくとも一つであることができる。プロセッサ１０４は、マイクロプロセッサと、ＤＳＰ（デジタル・シグナル・プロセッサ）のような任意の従来の演算技術のうちの少なくとも一つであることができる。本発明にかかるマルチプロセッサ・システム１００は、少数しか言及しないが、限定することなく、携帯電話機、ＰＤＡ（携帯情報端末）、ラップトップ・コンピュータ、およびデスクトップ・コンピュータを含む従来の任意の数の装置によって使用できる。更に、マルチプロセッサ・システム１００は、マルチプロセッサ資源を使用させる如何なる従来のソフトウェア・アプリケーションも動作できる。
【００１０】
図３は、マルチプロセッサ・システム１００のプロセッサ１０４の各々において動作する方法２００を図示するフローチャートである。マルチプロセッサ・システム１００は、本発明の実施形態にかかる上記のプロセッサ１０４間でメモリを共有させる。図２に示すように、方法２００はステップ２０２から始まり、これらプロセッサ１０４は、メモリ・バッファ・プール１１０とメモリ・バッファ・プール１２０を確立する。ステップ２０４において、対応するメモリ・バッファを指示するバッファ・ポインタのアレイは、各々のバッファ・プール毎に確立される。これらのアレイは、次にステップ２０６において、共有されるプール記述子領域において、Ｆｒ＿Ｂｕｆｆ＿Ｒｅｌ＿Ｐｔｒ（フリー・バッファ解放ポインタ）として示された解放ポインタと、Ｆｒ＿Ｂｕｆｆ＿Ｃｏｎｓ＿Ｐｔｒ（フリー・バッファ消費ポインタ）として示された消費ポインタとによって参照される。共有されるプール記述子は、バッファ・サイズおよびバッファ・カウントを更に含むことができる。バッファ・サイズは、各々のメモリ・バッファの記憶容量（バイト、ワード、長いワード、またはその他）を示す。バッファ・カウントは、幾つのバッファ・ポインタと、対応するメモリ・バッファとがメモリ・バッファ・プールにおいて利用可能かを示す。
【００１１】
最初に、解放ポインタと消費ポインタの各々は、バッファ・ポインタ・アレイの所定位置を指す。本例示においてポインタは、アレイの始めを指す。しかし、当然のことながら、アレイにおける他の開始点も使用できる。図２のバッファ・プールは、プロセッサ１０４間で消費されるか、または内部で消費できる。したがって、ステップ２０８において、各々のプロセッサ１０４は、メモリ・プールの使用が共有であるか、または内部であるかを判断する。共有である場合、プロセッサ１０４はステップ２１０に移行し、消費ポインタがｎｕｌｌを指示するか否かを判断する。本文脈におけるｎｕｌｌは、非存在または利用不能なポインタを意味する。当業者にとって、ｎｕｌｌを示す如何なる技術にも本発明を適用できることは明白であろう。このような条件の検出は、メモリ・バッファ・プールが一杯であること（つまり、利用可能なフリー・メモリが存在しないこと）を示す。そのような条件下ではプロセッサ１０４は、少なくとも一つのメモリ・バッファが解放されるまで、ステップ２０８およびステップ２１０を繰返すようにプログラムできる。
【００１２】
一方、利用可能なバッファ・ポインタが検出された場合、プロセッサはステップ２１２に移行し、どのメモリ・バッファにアクセスするかを判断すべく、内部メモリにバッファ・ポインタを読込む。このメモリ・バッファの消費を認識すべく、プロセッサ１０４はステップ２１４に移行し、バッファ・ポインタ・アレイからちょうど読込まれたバッファ・ポインタをｎｕｌｌにし、その後、消費ポインタ２１６をインクリメントする。幾つのバッファが必要かによって、プロセッサ１０４は（バッファ・カウントに依存した方法で）必要に応じた回数だけステップ２１０〜２１６を繰返しできる。一旦プロセッサ１０４が、必要とするすべてのメモリ・バッファを取得したならば、ステップ２１８に移行し、バッファ・ポインタおよび関連するメモリ・バッファを別のプロセッサ１０４と共有する。共有されるメモリを他のプロセッサ１０４と通信させるべく、任意の手段（示されていないメッセージ・バッファなど）が使用できる。
【００１３】
一旦、他のプロセッサ１０４が、共有されるメモリを消費したならば（つまり、共有されるメモリ上でのすべての必要なタスクを行い、もはや共有されるメモリ・バッファの必要性が無い場合）、ステップ２２０に移行する。ステップ２２０では、解放ポインタによって指示されたｎｕｌｌ（メモリ・プールを所有するプロセッサ１０４によってステップ２１４において生成された）を、プロセッサ１０４に供給された共有バッファ・ポインタと交換する。共有バッファ・ポインタと交換された各々のｎｕｌｌ毎に、解放ポインタは、バッファ・ポインタ・アレイの次の位置にインクリメントされる。解放される（自由にされる）必要があるバッファ・ポインタの数だけ、ステップ２２０およびステップ２２２が繰返される。
【００１４】
このように、バッファ・ポインタおよび対応するメモリ・バッファがプロセッサ１０４間で共有されるため、共有メモリを受け入れる受信プロセッサは、もはや上記のメモリを必要としないようになるとすぐに、共有メモリを自主的に補充する。たった今記述した、プロセッサ１０４間でバッファを消費することと解放することの自律作用は、時間が掛かる信号装置のライブラリ呼出を利用する先行技術のシステムに対する、実質的な性能向上である。
【００１５】
プロセッサ１０４は、自身でメモリ・バッファを消費する場合、ステップ２２４〜２３０に移行する。これらのステップは、ステップ２１０〜２１６で記述した動作と同一である。つまりプロセッサ１０４は、必要に応じてバッファ・ポインタを取出し、それらの存在をｎｕｌｌにし、取出したメモリ・バッファの数に依存して消費ポインタをインクリメントする。ステップ２３２において、先のステップで取出したメモリ・バッファは、プロセッサ１０４によって消費される。一旦消費されると、消費ポインタはステップ２３４においてデクリメントされ、先に生成されたｎｕｌｌは、消費されたバッファ・ポインタと交換され、その結果、将来の使用に対してポインタおよびその関連するメモリ・バッファを解放する（自由にする）。ステップ２３４およびステップ２３６は、プロセッサ１０４によってもはや必要とされない、消費されたメモリ・バッファを解放すべく、必要に応じて何度も繰返される。
【００１６】
本実施形態は、１つのプロセッサ１０４が複数のプロセッサと容易にメモリを共有できるように、容易に適用できる。加えて、プロセッサ１０４が新しいプロセッサと動的に通信できる例では、プロセッサは、付加的なプロセッサとメモリを共有することに適応すべく、メモリ・プールを調節するようにプログラムできる。たとえば、１Ｍバイトのバッファ・スペースのメモリ・プールを有したプロセッサ１０４は、このバッファ・プールを、図２の構造を有し且つ方法２００に従って動作する５００Ｋバイトの２つのバッファ・プールに再構成できる。そのような再構成は、マルチプロセッサ環境においてメモリ共有を付加または除去するのに必要な回数だけ、繰返す（または元に戻す）ことができる。
【００１７】
読み手にとっては、本発明にかかる実施形態は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せにおいて実現できることは明らかであろう。このように、実施形態は、コンピュータ・プログラム製品に埋め込まれることができ、それは、ここに記述した方法の実施を可能にするすべての特徴を含み、コンピュータ・システムにロードされたときに、コンピュータ指示としてこれらの方法を行なうことが可能である。本文脈におけるコンピュータ・プログラムは、情報処理能力を有したシステムに直接的に、または、ａ）別の言語、コード、または記法への変換、ｂ）異なる機器形態における複製、のいずれかもしくは両方の後で特定の機能を行なわせるように意図した、１組の指示の、任意の言語、コード、または記法の任意の表現を意味する。
【００１８】
更に、本発明にかかる実施形態が多くの構成において使用可能であることは明白であろう。このように、本記述は、特定の構成および方法に対してなされるが、ここでの意図および概念は、ここに記述されていない他の構成にも適し、また、適用可能である。したがって、当業者にとっては、記述された開示の実施形態への修正が、本発明の精神および範囲から逸脱することなしに効果を奏することができるのは明らかであろう。
【００１９】
したがって、記述された実施形態は、本発明の実施形態のより顕著な特徴および用途のうちの幾つかの単なる例示であると解釈されるべきである。更に、本請求の範囲は、構造的均等物だけではなく記述した機能を行なうようにここに記述された構造を包含するように意図されると理解されるべきである。したがって、本記述で読まれる均等構造は、次の請求の範囲において規定されるような範囲に包含されると解釈される。このように、参照は、本発明の実施形態の範囲を示すように、先の明細書にではなく、次の請求の範囲になされるべきである。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態にかかるマルチプロセッサ・システムのブロック図。
【図２】本発明の実施形態にかかる図１のプロセッサの各々によって使用されるメモリ・バッファ・プールのブロック図。
【図３】本発明の実施形態にかかるマルチプロセッサ・システムのプロセッサの各々中で動作する方法を図示するフローチャート。
【図１】
2009509264.tif 000003
【図２】
2009509264.tif 000004
【図３】
2009509264.tif 000005
【国際調査報告】
2009509264.tif 000006