(57)【要約】【課題】トリプル・バッファリングを使用する双方向データ交換を提供する。【解決手段】本発明は、データを処理する方法に関する。処理されるデータブロックは、第１の時間間隔（ｔ１、ｔ２、ｔ３、...）においてメモリエリア（Ａ、Ｂ、Ｃ）に書き込まれる。前記データブロックは、第２の時間間隔（ｔ２、ｔ３、ｔ４...）において同一のメモリエリア（Ａ、Ｂ、Ｃ）で処理される。処理されたデータブロックは、第３の時間間隔（ｔ３、ｔ４、ｔ５...）において前記同一のメモリエリア（Ａ、Ｂ、Ｃ）から返される。【選択図】図２
2010118058.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する方法であって、処理されるデータブロックは、
第１の時間間隔（ｔ１）においてメモリエリアに書き込まれ、
第２の時間間隔（ｔ２）において同一のメモリエリアで処理され、処理されたデータブロックは、第３の時間間隔（ｔ３）において前記同一のメモリエリアから転送されることを特徴とする方法。
【請求項２】
メモリ内の３個のメモリエリアが集められて、メモリエリアのグループを形成することを特徴とする請求項１に記載の方法。
【請求項３】
前記方法のためにメモリエリアの１個又は複数個のグループが使用され、
メモリエリアのグループ内の１個のメモリエリアをそれぞれ使用して、各時間間隔（ｔ１、ｔ２、...、ｔ６）においてデータを受信、処理、及び転送することを特徴とする請求項２に記載の方法。
【請求項４】
前記方法は、画像処理のために使用されることを特徴とする請求項１乃至３の何れかに記載の方法。
【請求項５】
既に処理されたデータに無作為にアクセスしないアルゴリズムが、データブロックを処理するステップの間に実行されることを特徴とする請求項１乃至４の何れかに記載の方法。
【請求項６】
第１のデータ処理システムからのデータは、第２のデータ処理システムで処理され、
処理されるデータブロックは、
第１の時間間隔（ｔ１）において前記第２のデータ処理システムのメモリエリアに書き込まれ、
第２の時間間隔（ｔ２）において前記第２のデータ処理システムの同一のメモリエリアで処理され、
第３の時間間隔（ｔ３）において前記第２のデータ処理システムのこのメモリエリアから前記第１のデータ処理システムへ返されることを特徴とする請求項１乃至５の何れかに記載の方法。
【請求項７】
前記第２のデータ処理システムは、前記第１のデータ処理システムのサブシステムであることを特徴とする請求項６に記載の方法。
【請求項８】
前記第１のデータ処理システムは、中央処理装置であり、前記第２のデータ処理システムは、コプロセッサであることを特徴とする請求項６又は７に記載の方法。
【請求項９】
前記第１のデータ処理システムは、パワーPCのプロセッサエレメントであり、前記第２のデータ処理システムは、協働プロセッサエレメントであることを特徴とする請求項６乃至８の何れかに記載の方法。
【請求項１０】
請求項１乃至９の何れかに記載の方法を実行するために使用されることを特徴とするメモリ。
【請求項１１】
請求項１乃至９の何れかに記載の方法を実行する、又は請求項１０に記載のメモリを含むことを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トリプル・バッファリングを使用するデータを処理する方法に関し、具体的には、第２のデータ処理システムにおける第１のデータ処理システムからのデータを処理する方法に関する。
【背景技術】
【０００２】
データ処理における公知の方式は、例えば、数学演算といった特定のデータ操作を実行する専用ハードウェアを使用可能な状態に保つことである。これは、中央処理装置（ＣＰＵ）のロードを軽減するために使用される。異なるユニット間でデータを交換する必要があるという要求は、この接続において頻繁に発生する。データは一般的には、第１のシステムから第２のシステムへ転送され、そこで処理されて、次いで第２のシステムから第１のシステムへ転送されて再び戻される。システムの特殊な構成は、データを転送する方法を判定することができる。データは、例えば、ネットワーク又はダイレクトメモリアクセス（ＤＭＡ）を用いて、転送することができる。
【０００３】
可能な限り高速なデータ処理速度を達成できるようにするため、前に伝えられたデータが処理される間、データの転送は、バックグラウンドで行われるような方式で組織化される。このため、ターゲット・システムの第２のシステム内で２個のメモリエリアが、使用可能な状態を保たれる。２個のメモリエリアのうちの１個の中のデータが処理されている間、処理される次のデータがもう一方のメモリエリアに書き込まれる。
【０００４】
これらのデータは、一方のメモリエリア内に含まれているデータが処理されるとすぐに、処理のために使用可能になる。データは常に、処理のために使用可能であるので、処理手段によって有効な利用を行うことができる。理論的には、データを待たなければならないために処理手段内で動作することができない中断は発生しない。これは、とりわけ、データ転送媒体が十分に広いバンド幅を有することを前提とする。そのような方法は、ダブル・バッフアリングという分野における当業者にとっては公知である。
【０００５】
ＩＢＭの、セル・ブロードバンド・エンジンのプログラミング・チュートリアルのバージョン３．０は、ダブル・バッファリングの方法を示す。この方法は、第１のシステムからターゲット・システムへの一方向なデータの転送を表現する。既に処理されたデータを転送してターゲット・システムから第１のシステムへ戻すために、第２のダブル・バッファリングの方法を実装することが必要である。
【０００６】
図１は、データの双方向転送を可能にする、ターゲット・システム１内でダブル・バッファリングの方法を実装するメモリエリアの配置を示す。この目的のために、同一サイズの４個のメモリエリアＡ、Ｂ、Ｃ、Ｄは、ターゲット・システム１内で使用可能な状態を保たれる。２個の第１のメモリエリアＡ、Ｂは、入力バッファを形成し、入力データストリームのためのダブル・バッファリングの方法を実装する。２個の第２のメモリエリアＣ、Ｄは、出力バッファを形成し、既に処理されたデータ、出力データストリームのためのダブル・バッファリングの方法を実装する。第１の時間間隔ｔ１において、データは、入力バッファＡ、Ｂのうちの第１のメモリエリアＡに受信される。このことは、時間間隔ｔ１にわたってメモリエリアＡの充填を表す楔状の形により象徴的に示される。時間間隔ｔ１の初めに、このメモリエリアは空であり、時間間隔ｔ１の最後の少し前に、このメモリエリアはデータにより充填される。入力バッファＡ、Ｂのうちの第２のメモリエリアＢに以前に受信され既に存在しているデータは、データ処理のために時間間隔ｔ１において第２のメモリエリアＢで使用可能な状態を保たれる。これらのデータはターゲット・システム１により処理され、結果データはこの第１の時間間隔ｔ１において出力バッファＣ、Ｄのうちの第２のメモリエリアＤに格納される。第１の時間間隔ｔ１の最後で、結果は出力バッファＣ、Ｄのうちの第２のメモリエリアＤで使用可能な状態を保たれる。時間間隔ｔ１においてデータ処理のために使用可能な状態を保たれるメモリエリアＢ及びＤは各々、ハッチングを用いて図示される。時間間隔ｔ１の間のメモリエリアＣの空白（emptying）は同様に、楔状の形により象徴的に示される。時間間隔ｔ１の初めに、このメモリエリアは、返されるデータにより充填され、時間間隔ｔ１の最後の少し前に、メモリエリアＣからのデータは返されている。メモリエリアの空白及び充填を示すイラストは、図表上で反転している。第２の時間間隔ｔ２において、出力バッファＣ、Ｄのうちの第２のメモリエリアＤからの処理されたデータは、ここでは示されない第１のデータシステムに返される。出力バッファＣ、Ｄのうちの第１のメモリエリアＣは、現時点では、第２の時間間隔ｔ２において処理されたデータを受信するために使用可能である。第２の時間間隔ｔ２において、第１の時間間隔ｔ１で第１のメモリエリアＡに受信され、処理を待つデータは、入力バッファＡ、Ｂ内のこのメモリエリアＡ内で使用可能な状態に保たれる。第２の時間間隔ｔ２において、入力データは、入力バッファＡ、Ｂのうちの第２のメモリエリアＢに受信される。従って、この方法では、各時間間隔において、データを受信するためのメモリエリア及び処理されるデータを含むメモリエリアがそれぞれ、入力バッファＡ、Ｂ内で使用可能である。各時間間隔において、既に処理されたデータを返すためのメモリエリア及びデータを処理するためのメモリエリアがそれぞれ、入力バッファＣ、Ｄ内で使用可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、そのような方法を改善することである。
【課題を解決するための手段】
【０００８】
本発明は、以下のステップを実行するデータを処理するための方法を提供する。処理されるデータブロックは、第１の時間間隔においてメモリエリアに書き込まれる。このデータブロックは、第２の時間間隔において同一のメモリエリアで処理される。処理されるデータは、そこから読み出され、処理されたデータも同一のメモリエリアに書き込まれる。現時点で処理されているデータブロックが、第３の時間間隔において、同一のメモリエリアから転送される。このメモリエリアは次いで、次の時間間隔においてデータを受信するため再度使用可能である。このことは、データを受信、処理、及び転送するのに、同数のメモリエリアのみがそれぞれ必要とされるという利点を有する。対照的に、ダブル・バッファリングの方法の場合、データを受信及び転送するために設けられるメモリエリアの２倍のメモリエリアがデータを処理するために設けられる。データは、処理ステップの間、あるメモリエリアから別のメモリエリアへ移す必要はない。概して、ダブル・バッファリングの方法と比較すると、本発明による方法は、このために必要なメモリエリアの個数を同時に減少させる間、同一の処理手段の利用を可能にする。
【０００９】
本発明は、メモリ内に、グループ化される３個のメモリエリアを提供して、メモリエリアのグループを形成する。このように、使用可能メモリは明確に構造化され、必要な場合に、データを処理する方法として使用される。
【００１０】
データを処理する方法において、本発明は、本方法のために使用されるメモリエリアの１個又は複数個のグループを提供する。メモリエリアのグループ内の１個のメモリエリアはそれぞれ、各時間間隔においてデータを受信、処理、及び送信するために使用される。メモリエリアの１個又は複数個のグループが、データを転送及び処理するために使用される結果、本方法は柔軟性があり、使用可能メモリ及び必要メモリについて、それぞれのタスクに適合させることができる。本方法は汎用的である。メモリエリアの各グループ内で、１個のメモリエリアをそれぞれ使用して、データを受信、処理、及び転送することは、データを使用可能な状態に保つため各時間間隔においてメモリエリアのグループ内にそれぞれ１個のデータブロックしか提供されないので、必要とされるメモリエリアの個数が減少するという利点を有する。そのような構造にもかかわらず、双方向データ交換を可能にする。
【００１１】
本発明による方法は、画像処理において有利に使用される。画像処理の間、特に高解像度ビデオ画像の実時間処理の間、大量のデータが送られる。このような使用は、処理手段の必要メモリ及び処理手段の計算能力への高い要求を課す。処理手段の待機時間の減少又は処理手段の必要メモリの減少は、このような使用において特に有利な効果を有する。
【００１２】
データを処理する方法において、本発明は、既に前に処理されており、データブロックを処理するステップの間に使用される、データに無作為にアクセスする必要がないアルゴリズムを提供する。そのようなアルゴリズムを使用するので、出力データ及び結果のためにそれぞれのメモリエリアを使用可能な状態に保つ必要がない。即ち、メモリ内で、アルゴリズムで既に使用されているデータに、結果データを上書きすることができる。アルゴリズムが前に処理されている個々のデータへの確定的アクセス（deterministic access）を要求するとき（例えば、デジタル水平フィルタの場合）、これらの値をバッファリングすることができるので、オリジナルのデータは上書きされているのにもかかわらず依然としてアルゴリズムにとって使用可能である。
【００１３】
第１のデータ処理システムからのデータを第２のデータ処理システム内で処理する方法において、本発明は、第１の時間間隔において第２のデータ処理システムのメモリエリアに書き込まれるデータを提供する。データは、第２の時間間隔において第２のデータ処理システムの同一メモリエリア内で処理される。データは、第３の時間間隔において、第２のデータ処理システムのこのメモリエリアから第１のデータ処理システムに返される。第１のデータ処理システムから生じるデータ及び第２のデータ処理システムに再度返された結果データを有する、第２のデータ処理システム内でデータを処理する本発明による方法の使用は、提示された方法の利点を使用して、第１のデータ処理システムと、第２のデータ処理システム内で低減した必要メモリを有する第２のデータ処理システムとの間の双方向データ通信を可能にする。
【００１４】
データを処理する方法において、本発明は、第１のデータ処理システムのサブシステムである第２のデータ処理システムを提供する。データは、メインシステムとサブシステムの間で、頻繁に交換される。そのため、可能な限り低い必要メモリを有するサブシステムで作成することが、最大限に活用するためのこの場合における特定の要求である。
【００１５】
データを処理する方法において、本発明は、ＣＰＵである第１のデータ処理システム及びコプロセッサである第２のデータ処理システムを提供する。ＩＢＭの、セル・ブロードバンド・エンジンのプログラミング・チュートリアルのバージョン３．０では、ＣＰＵはＰＰＥ（PowerPC processor element）に相当し、コプロセッサは、ＳＰＥ（synergistic processor element）に相当する。
【００１６】
本発明は、全て同一のＣＰＵに割り当てられる複数個のコプロセッサ内で実装されるデータを処理する方法を提供する。
【００１７】
更に、本発明は、本発明による方法を実行するためのメモリ（メモリ自体は公知である）の使用に関する。
【００１８】
更に、本発明は、本発明による方法を実行する、又は本発明によるメモリを含むデータ処理システムに関する。
【発明の効果】
【００１９】
本発明の効果はまた、例示的実施形態の以下の説明から集めることができる。明確に述べられたこれら以外の組合せ、及び本分野の当業者の実践の範囲内での変更も同様に、本発明の範囲内であることは言うまでもない。
【図面の簡単な説明】
【００２０】
【図１】双方向データ交換の公知の方法及びサブシステム内の必要メモリを示す図である。
【図２】双方向データ交換の本発明による方法及びサブシステム内で低減された必要メモリを示す図である。
【図３】本発明による方法に従ったメモリのメモリエリアの割り当てを示す図である。
【発明を実施するための形態】
【００２１】
図２は、ターゲット・システム２内でトリプル・バッファリングを用いた、第１のデータ処理システムとターゲット・システム２との間の双方向データ交換のための本発明による方法を実装するメモリエリアの配置を示す。この目的のために、３個のメモリエリアＡ、Ｂ、Ｃが、ターゲット・システム２内で使用可能な状態に保たれる。各々のメモリエリアＡ、Ｂ、Ｃの機能的使用は、各時間間隔ｔ１、ｔ２、・・・、ｔ５、ｔ６に対し変化する。その長さが一般的にはデータを処理するのに必要な期間に起因する各時間間隔に対し、それぞれの時間間隔ｔ１、ｔ２、・・・、ｔ５、ｔ６においてメモリエリアがどのように使用されるか、図示される。データは、第１の時間間隔ｔ１において、第１のメモリエリアＡ内に受信される。これらのデータは、第２の時間間隔ｔ２において、第１のメモリエリアＡ内で処理される。データは、第３の時間間隔ｔ３において、第１のメモリエリアＡから第１のデータ処理システムへ返される。メモリエリアＢ、Ｃを用いて実行されるタスクについて同一のローテーションが、他の２個のメモリエリアＢ、Ｃ内で発生する。このローテーションは１個の時間間隔のオフセットを伴って発生し、その結果、各時間間隔ｔ１、ｔ２、・・・、ｔ５、ｔ６において、データを受信、データを処理、及びデータを返すために、正確に１個のメモリエリアＡ、Ｂ、Ｃが使用可能な状態に保たれることになる。
【００２２】
３個の個別のメモリエリアから成る複数個のグループが使用される場合、類似したやり方でローテーションが発生する。そして、同数のメモリエリアも常に、データを受信、データを処理、及びデータを転送するために、使用可能である。
【００２３】
トリプル・バッファリングという用語はまた、グラフィックカードの製造分野における当業者にとっても公知である。これに関連して、３個のメモリの提供が意図される。この場合、１個のメモリは、ある時間間隔において、現在表示される画像を使用可能な状態に保ち、第２のメモリは、この時間間隔の次の時間間隔の間、この画像を使用可能な状態に保つ。第３のメモリは、この時間間隔の次の次の時間間隔の間、この画像を受信する。このことは、光ビームのリターンフェーズの間、表示される画像データを常に変化せることができるので、ジャダーなし画像を再生することができるようになる。本発明による方法とは対照的に、これは双方向の方法ではない。
【００２４】
本発明によるトリプル・バッファリングの方法において、各メモリエリアは、それぞれ異なる時間間隔において３個のタスクを実行する。各メモリエリアは、データを送信、処理、及び転送するために使用される。従来技術から知られるような、ダブル・バッファリングの方法では、メモリエリアは２個のタスクを実行する。あるメモリエリアは、データを受信及びデータを処理するために使用される。他のメモリエリアは、データを処理及びデータを転送するために使用される。
【００２５】
換言すると、本発明は、データを処理する方法に関する。処理されるデータブロックは、第１の時間間隔ｔ１、ｔ２、ｔ３・・・において、メモリエリアＡ、Ｂ、Ｃに書き込まれる。データブロックは、第２の時間間隔ｔ２、ｔ３、ｔ４・・・において、同一メモリエリアＡ、Ｂ、Ｃ内で処理される。処理されたデータブロックは、第３の時間間隔ｔ３、ｔ４、ｔ５・・・において、同一メモリエリアＡ、Ｂ、Ｃから返される。
【００２６】
図３は、ターゲット・システム２のメモリ３の細分を図示する。メモリ３のある部分３１は、ターゲット・システム２と第１のデータ処理システムとの間の双方向データ転送のために使用され、メモリ３の別の部分３０は、他のタスクのために使用される。双方向データ転送のために使用されるメモリエリア３１は、メモリエリアＡ、Ｂ、Ｃのグループ３２、３３、３４、・・・に細分される。各グループ３２、３３、３４、・・・は、同じサイズであり、且つ本発明による方法を実行するために使用される、３個のメモリエリアＡ、Ｂ、Ｃを備える。この細分が、本発明による方法に従い複数の双方向データ転送動作を同時に実行することを可能にし、メモリエリアＡ、Ｂ、Ｃの１個または複数個のグループ３２、３３、３４、・・・はそれぞれ、上述のデータ転送動作のために使用されている。メモリエリアＡ、Ｂ、Ｃの複数個のグループ３２、３３、３４、・・・を、双方向データ動作のために結合することができる。この双方向データ転送動作のために、データを受信、データを処理、及びデータを返すのにそれぞれ使用可能なメモリの容量は、このデータ転送動作のために使用されるメモリエリアＡ、Ｂ、Ｃのグループ３２、３３、３４、・・・の数に従い増加する。
【図１】
2010118058.tif 000003
【図２】
2010118058.tif 000004
【図３】
2010118058.tif 000005
【外国語明細書】
2010118058000001.pdf