(57)【要約】本発明は、ＦＩＦＯの入力または出力ポートに対して二つのカウンタを保持するためのアイデアに基づく。コプロセッサからＦＩＦＯメモリにデータ要素を書き込むためのデバイスが、提供される。前記デバイスは、少なくとも一つのコプロセッサと、ＦＩＦＯメモリと、コントローラを備えるマルチ処理環境に埋め込まれる。前記デバイスは、前記ＦＩＦＯメモリ中の利用可能な空きをカウントするための第１のカウンタと、前記ＦＩＦＯメモリに書き込まれたデータ要素の数をカウントするための第２のカウンタを備える。前記デバイスは、前記ＦＩＦＯメモリ中に利用可能な空きに対する前記第１のカウンタをチェックし、且つ所定数Ｎのデータ要素が前記ＦＩＦＯメモリに書き込まれたか否かについて前記第２のカウンタをチェックするための制御手段を、更に備える。前記制御手段は、データ要素が前記ＦＩＦＯメモリに書き込まれた後に、前記第１のカウンタのカウントを減分し、前記第２のカウンタのカウントを増分する。最後に、前記デバイスは、データ要素を前記ＦＩＦＯメモリに出力するための出力手段を備える。前記制御手段は、前記第２のカウンタのカウントが前記所定数Ｎに到達した時に第１のメッセージを発し、前記ＦＩＦＯメモリ中の利用可能な空きに対する第１の呼び出しを前記コントローラに発する。前記出力手段は、前記第１のメッセージおよび／または前記第１の呼び出しを前記コントローラへ送出する。
2005529397.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのコプロセッサ、ＦＩＦＯメモリおよびコントローラを備えるマルチ処理環境において、コプロセッサからＦＩＦＯメモリにデータ要素を書き込むためのデバイスであって、
前記ＦＩＦＯメモリ中の利用可能な空きをカウントするための第１のカウンタと、
前記ＦＩＦＯメモリに書き込まれたデータ要素の数をカウントするための第２のカウンタと、
前記ＦＩＦＯメモリ中の利用可能な空きのための前記第１のカウンタをチェックし、所定数Ｎのデータ要素が前記ＦＩＦＯメモリに書き込まれたか否か前記第２のカウンタをチェックし、一つのデータ要素が前記ＦＩＦＯメモリに書き込まれた後に、前記第１のカウンタのカウントを減分し且つ前記第２のカウンタのカウントを増分するための制御手段と、
データ要素を前記ＦＩＦＯメモリに出力するための出力手段と、を備え、
前記制御手段は、前記第２のカウンタのカウントが前記所定数Ｎに到達した時に、第１のメッセージを発し、
前記制御手段は、前記ＦＩＦＯメモリの利用可能な空きのための第１の呼び出しを前記コントローラに発し、
前記出力手段は、前記第１のメッセージおよび／または前記第１の呼び出しを前記コントローラへ送出することよりなる、デバイス。
【請求項２】
前記第１のメッセージは、十分なデータ要素が前記ＦＩＦＯメモリに書き込まれたことを指示する、請求項１に記載のデバイス。
【請求項３】
前記制御手段は、データ要素が、前記ＦＩＦＯメモリに出力された時に、更に書き込みポインタを増分する、請求項２に記載のデバイス。
【請求項４】
前記制御手段は、前記書き込みポインタが増分された後に、更に、ラップアラウンドテストを実行する、請求項３に記載のデバイス。
【請求項５】
前記制御手段は、前記第１のメッセージを発した後に、前記第２のカウンタをリセットする、請求項２に記載のデバイス。
【請求項６】
前記制御手段は、前記第１のカウンタのカウントがゼロになる前に、前記ＦＩＦＯメモリの利用可能な空きのための前記第１の呼び出しを前記コントローラに発する、請求項１または２に記載のデバイス。
【請求項７】
少なくとも一つのコプロセッサ、ＦＩＦＯメモリおよびコントローラを備えるマルチ処理環境において、コプロセッサからＦＩＦＯメモリにデータ要素を書き込むための方法であって、前記方法は、
前記ＦＩＦＯメモリに利用可能な空きがあるか否かを決定するために、第１のカウンタをチェックし、且つ前記ＦＩＦＯメモリ中の利用可能な空きを指摘するステップと、
前記ＦＩＦＯメモリに空きができるまで、前記ＦＩＦＯメモリ中の利用可能な空きのための第１の呼び出しを前記コントローラに発するステップと、
データ要素を前記ＦＩＦＯメモリへ出力するステップと、
一つのデータ要素が、前記ＦＩＦＯメモリに書き込まれた後に、前記第１のカウンタのカウントを減分するステップと、
一つのデータ要素が、前記ＦＩＦＯメモリに書き込まれた後に、前記ＦＩＦＯメモリに書き込まれたデータ要素の数をカウントするための第２のカウンタを増分するステップと、
所定数Ｎのデータ要素が前記ＦＩＦＯメモリに書き込まれたか否かを決定するために前記第２のカウンタをチェックするステップと、
前記第２のカウンタのカウントが、前記所定数Ｎに到達した時に、十分なデータ要素が前記ＦＩＦＯメモリに書き込まれたことの第１のメッセージを発するステップと、を備える方法。
【請求項８】
データ要素が、前記ＦＩＦＯメモリに書き込まれた時に、書き込みポインタを増分するステップを更に備える、請求項７に記載の方法。
【請求項９】
前記書き込みポインタが増分された後に、ラップアラウンドテストを実行するステップを更に備える、請求項８に記載の方法。
【請求項１０】
前記第１のメッセージを発した後に、前記第２のカウンタをリセットするステップを更に備える、請求項７に記載の方法。
【請求項１１】
前記第１のカウンタのカウントがゼロになる前に、前記ＦＩＦＯメモリ中の利用可能な空きのための前記第１の呼び出しを前記コントローラに発するステップを更に備える、請求項７に記載の方法。
【請求項１２】
少なくとも一つのコプロセッサ、ＦＩＦＯメモリおよびコントローラを備えるマルチ処理環境において、ＦＩＦＯメモリからコプロセッサにデータ要素を読み出すためのデバイスであって、前記デバイスは、
前記ＦＩＦＯメモリ中の利用可能データ要素をカウントするための第３のカウンタと、
前記ＦＩＦＯメモリから読み出されたデータ要素の数をカウントするための第４のカウンタと、
前記ＦＩＦＯメモリにおける利用可能データ要素に対する前記第３のカウンタをチェックし、所定数Ｎのデータ要素が、前記ＦＩＦＯメモリから読み出されたか否かを決定するために前記第４のカウンタをチェックし、一つのデータ要素が、前記ＦＩＦＯメモリから読み出された後に、前記第３のカウンタのカウントを減分し且つ前記第４のカウンタのカウントを増分するための制御手段と、
前記ＦＩＦＯメモリからデータ要素を入力するための入力手段と、を備え、
前記制御手段は、前記第４のカウンタのカウントが、前記所定数Ｎに到達した時に、第２のメッセージを発し、
前記制御手段は、前記ＦＩＦＯメモリ中の利用可能データ要素に対する第２の呼び出しを前記コントローラへ発し、
前記出力手段は、前記第２のメッセージおよび／または前記第２の呼び出しを前記コントローラへ送出することよりなる、デバイス。
【請求項１３】
前記第２のメッセージは、十分なデータ要素が、前記ＦＩＦＯメモリから読み出されたことを指摘する、請求項１２に記載のデバイス。
【請求項１４】
前記制御手段は、データ要素が、前記ＦＩＦＯメモリから入力された時に、読み出しポインタを増分する、請求項１３に記載のデバイス。
【請求項１５】
前記制御手段は、前記読み出しポインタが増分された後に、ラップアラウンドテストを実行する、請求項１４に記載のデバイス。
【請求項１６】
前記制御手段は、前記第２のメッセージを発した後に、前記第４のカウンタをリセットする、請求項１３に記載のデバイス。
【請求項１７】
前記制御手段は、前記第３のカウンタの前記カウントがゼロのなる前に、前記ＦＩＦＯメモリにおける利用可能データ要素に対する前記第２の呼び出しを前記コントローラに発する、請求項１３に記載のデバイス。
【請求項１８】
少なくとも一つのコプロセッサ、ＦＩＦＯメモリおよびコントローラを備えるマルチ処理環境において、ＦＩＦＯメモリからコプロセッサにデータ要素を読み出すための方法であって、前記方法は、
前記ＦＩＦＯメモリにおいて利用可能データ要素があるか否かを決定するために、第３のカウンタをチェックし、前記ＦＩＦＯメモリ中の利用可能データ要素を指摘するステップと、
前記ＦＩＦＯメモリ中にデータ要素があるまで、前記ＦＩＦＯメモリ中の利用可能データ要素に対する第２の呼び出しを前記コントローラに発するステップと、
データ要素を前記ＦＩＦＯメモリから入力するステップと、
一つのデータ要素が前記ＦＩＦＯメモリから読み出された後に、前記第３のカウンタのカウントを減分するステップと、
一つのデータ要素が前記ＦＩＦＯメモリから読み出された後に、前記ＦＩＦＯメモリから読み出されたデータ要素の数をカウントするための第４のカウンタを増分するステップと、
所定数Ｎのデータ要素が、前記ＦＩＦＯメモリから読み出されたか否かを決定するために前記第４のカウンタをチェックするステップと、
前記第４のカウンタのカウントが、前記所定数Ｎに到達した時に、十分なデータ要素が、前記ＦＩＦＯメモリから読み出されたことの第２のメッセージを発するステップとを備える、方法。
【請求項１９】
データ要素が前記ＦＩＦＯメモリから読み出された時に、読み出しポインタを増分するステップを更に備える、請求項１８に記載の方法。
【請求項２０】
前記読み出しポインタが増分された後に、ラップアラウンドテストを実行するステップを更に備える、請求項１９に記載の方法。
【請求項２１】
前記第２のメッセージを発した後に、前記第４のカウンタをリセットするステップを更に備える、請求項１８に記載の方法。
【請求項２２】
前記第３のカウンタのカウントがゼロになる前に、前記ＦＩＦＯメモリ中の利用可能データ要素に対する前記第２の呼び出しを前記コントローラに発するステップを更に備える、請求項１８に記載の方法。
【請求項２３】
マルチ処理コンピュータシステムであって、
ＦＩＦＯメモリと、
少なくとも一つのコプロセッサと、
コントローラと、
請求項１から６に記載の書き込みデバイスおよび／または請求項１２から１７に記載の読み出しデバイスとを備える、マルチ処理コンピュータシステム。
【請求項２４】
コンピュータプログラムであって、前記コンピュータプログラムがコンピュータ中で起動される時に、コンピュータに請求項７から１１に記載の方法のステップ並びに請求項１８から２２に記載の方法を実行させるためのプログラムコードを備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コプロセッサからＦＩＦＯへデータ要素を書き込むデバイスと方法、ＦＩＦＯメモリからコプロセッサへデータ要素を読み出すデバイスと方法、およびマルチ処理コンピュータシステムに関する。
【背景技術】
【０００２】
高精細ＴＶ（ＨＤＴＶ）、ブロードキャストサテライトサービス、ビデオ会議、相互記憶メディア等の新たなアプリケーションとサービスは、ビデオドメインおよびオーディオドメインにおいて大量のデータ処理を必要とする。従って、これらのアプリケーションにおいて含まれるデータレートは、演算に非常に多くの時間を消費する。
【０００３】
信号処理における演算要求に応じるために、設計者は、通常、二つのアーキテクチャアプローチ、即ち、専用のアプローチとプログラマブルアプローチに従う。専用のアーキテクチャは、アルゴリズムの演算機能を十分に活用することを目的とする。専用のアーキテクチャのＶＬＳＩの実装は、エリア、パワーおよび性能に関して最適化される。専用のアーキテクチャの利点は、それらが良好な性能を提供するが、それらは、アルゴリズムのセットを更に拡張するためのフレキシビリティに欠ける。他方、プログラマブルアプローチは、アルゴリズムが、必要なソフトウエア変更を適用することによって、簡単に更に拡張出来るので、より大きなフレキシビリティの要求を満足出来る。この事実によって、いくつかのアプリケーションがハードウエア上で起動出来るので、アプリケーションハードウエア当たりのコストが減少される。プログラマブルアーキテクチャの欠点は、アルゴリズムの演算特性が十分に活用されないので、アーキテクチャ並びにアプリケーションモデルが、高速でなければならないことである。この問題は、マルチ処理戦略を実施することによって解決され得る。従って、マルチ処理アーキテクチャの演算リソースを十分に活用するために、十分な並列性を有するアプリケーションモデルを提供することが必須である。このような信号処理アプリケーションに対する並列性を提供するアプリケーションのモデルの一つが、カーン（Ｋａｈｎ）プロセスネットワークモデルである。このアプリケーションがマルチプロセッサアーキテクチャで実行されるや否や処理速度の顕著な増大が達成され得る。
【０００４】
典型的なカーンプロセスネットワークは、いくつかのプロセスネットワーク、プロセスおよびＦＩＦＯメモリ（先入れ先だし）を備える。このようなプロセスネットワークにおいて、プロセスは、プロセッサやコプロセッサによって実施され、且つＦＩＦＯは、通信チャネル、即ち、ＦＩＦＯバッファを介して互いに通信するプロセッサを表す。ＦＩＦＯは、単一のリーダと単一のライターを有する。プロセスは、通常、アプリケーションの機能性を定義する。プロセスは、入力と出力ポートを介してその環境と相互作用を行う。プロセスは、三つの状態、即ち、実行、ブロックおよび準備の内の一つにある。例えば、プロセスは、それが空のＦＩＦＯから読み出そうとする場合やそれが満杯のＦＩＦＯに書き込もうとする場合にブロックされる。
【０００５】
カーンプロセスネットワークにおいて、プロセスは、パイプライン方式で互いに通信する、即ち、パイプラインの最も遅いプロセスが、そのスループットを決定する。演算がプロセス同士間で適切にバランスされると、アプリケーションモデル内で効果的並列化を減少する。
【０００６】
通常、プロセスは、ＦＩＦＯを介して互いに通信する。さて、これらのプロセスがソフトウエアプロセスとして実施される場合、ＦＩＦＯの実装は、データを格納するためのバッファ、読み出しポインタ、書き込みポインタ、並びにバッファ内のデータと空きを同期するためのデータと空きのセマフォを含む。従って、ＦＩＦＯへの書き込みは、自由な空き、即ち、前記ＦＩＦＯ中のスペースを待つことによって最初に実施される。前記ＦＩＦＯに利用可能な空きがある場合、データは、ＦＩＦＯに入力され、且つ書き込みポインタは、増分される。最後に、有効データがＦＩＦＯに追加されたことが信号通信される。ＦＩＦＯからの読み出しは、書き込みと対照的である、即ち、空きとデータの役割並びにライターとリーダーのポインタが変化する。
【０００７】
マルチ処理環境において、通常、バス等のように、利用可能通信リソースに対するコンフリクトがある。通信費は、アーキテクチャにおけるプロセッサの数の増加に従って、増加する。従って、通信の減少に関してアプリケーションモデルの最適化は、速度の改良を達成する。通信の減少は、注意深くトークン構造を選択し通信チャンネルを介して転送されるトークンの数を制御することによって、達成可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
マルチ処理環境においてコプロセッサとコントローラとの間の通信を改良することが本発明の目的である。
【課題を解決するための手段】
【０００９】
この目的は、請求項１に記載のデータ要素をコプロセッサからＦＩＦＯメモリに書き込むためのデバイス、請求項７に記載のデータ要素をコプロセッサからＦＩＦＯメモリに書き込むための方法、請求項１２に記載のデータ要素をＦＩＦＯメモリからコプロセッサに読み出すためのデバイス、請求項１８に記載のデータ要素をＦＩＦＯメモリからコプロセッサに読み出すための方法、および請求項２３に記載のマルチ処理コンピュータシステムによって達成される。
【００１０】
本発明は、ＦＩＦＯの入力または出力ポートのための二つのカウンタを保持する考えに基づく。
【００１１】
本発明に従って、データ要素をコプロセッサからＦＩＦＯメモリに書き込むためのデバイスが、提供される。前記デバイスは、少なくとも一つのコプロセッサ、ＦＩＦＯメモリおよびコントローラを備えるマルチ処理環境に内蔵される。前記デバイスは、前記ＦＩＦＯメモリ中の利用可能な空きをカウントするための第１のカウンタと、前記ＦＩＦＯメモリに書き込まれたデータ要素の数をカウントするための第２のカウンタと、を備える。前記デバイスは、前記ＦＩＦＯメモリ中の利用可能な空きのための前記第１のカウンタをチェックし、所定数Ｎのデータ要素が前記ＦＩＦＯメモリに書き込まれたか否か前記第２のカウンタをチェックする制御手段を更に備える。前記制御手段は、一つのデータ要素が前記ＦＩＦＯメモリに書き込まれた後に、前記第１のカウンタのカウントを減分し且つ前記第２のカウンタのカウントを増分する。最後に、前記デバイスは、データ要素を前記ＦＩＦＯメモリに出力するための出力手段を備える。前記制御手段は、前記第２のカウンタのカウントが前記所定数Ｎに達した時に、第１のメッセージを発し、且つ前記ＦＩＦＯメモリ中の利用可能な空きに対する第１の呼び出しを前記コントローラに発する。前記出力手段は、前記第１のメッセージおよび／または前記第１の呼び出しを前記コントローラに送出する。
【００１２】
本発明による書き込みデバイスの利点は、ＦＩＦＯメモリへのデータ書き込みのために前記第１と第２のカウンタを使用することによって、前記ＦＩＦＯへの書き込み時に、コプロセッサが書き込み動作を実行して二つのセマフォ動作（ＰおよびＶ動作）をコントローラに請求することの必要性を無くし、コプロセッサとコントローラとの間の通信トラフィックを減少させる。
【００１３】
本発明の一実施形態によれば、前記第１のメッセージは、十分なデータ要素が前記ＦＩＦＯメモリに書き込まれたことを指摘する。このように、Ｎ個のデータ要素が前記ＦＩＦＯに書き込まれた後に前記メッセージが送信されるに過ぎないので、コプロセッサとコントローラとの間の通信トラフィックが更に減少されるので有利である。
【００１４】
本発明の更なる実施形態によれば、前記制御手段は、データ要素が前記ＦＩＦＯメモリに出力された時に、書き込みポインタを増分する。
【００１５】
本発明の更なる実施形態によれば、前記制御手段は、前記書き込みポインタが増分された後に、ラップアラウンドテストを実行する。
【００１６】
本発明の実施形態によれば、前記制御手段は、前記第１のメッセージを発した後に、前記第２のカウンタをリセットする。即ち、前記第２のカウンタのカウントは、Ｎに到達し、前記第１のメッセージが発された後にリセットされ、再びカウントを開始できる。
【００１７】
本発明の更なる実施形態によれば、前記制御手段は、前記第１のカウンタのカウントがゼロになる前に、前記ＦＩＦＯメモリ中の利用可能な空きに対する前記第１の呼び出しを前記コントローラに発する。これは、このような呼び出しの待ち時間が隠されるので有利である。
【００１８】
また、本発明は、コプロセッサからＦＩＦＯにデータ要素を書き込むための方法に関する。前記方法は、上述のデータ要素を書き込むデバイスに対応する。
【００１９】
更に、本発明は、ＦＩＦＯからコプロセッサにデータ要素を読み出すためのデバイスと方法を提供する。前記デバイスと方法は、書き込みデバイスと書き込み方法に対して相補的である。ここで、データは、ＦＩＦＯからコプロセッサに転送される。第１のメッセージと第１の呼び出しの代わりに、十分なデータ要素がＦＩＦＯから読み出されたこと、即ち、空きが利用可能であり且つ第２の呼び出しが前記ＦＩＦＯ中の利用可能データ要素を要求することを指示する第２のメッセージが発される。
【００２０】
本発明によれば、請求項２３に記載のマルチ処理コンピュータシステムが、提供される。更に、本発明は、前記方法を実施するための請求項２４に記載のコンピュータプログラムを提供する。
【００２１】
本発明は、ここで、図面を参照して、より詳細に説明される。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明の実施形態におけるマルチ処理コンピュータシステムのブロック図である。前記コンピュータシステムは、好ましくは、ＦＩＦＯメモリの形態であるメモリバンク１と、３個のＣＰＵ３と、３個のコプロセッサと、コントローラ４と、前記ＦＩＦＯメモリをＣＰＵ３、コプロセッサ２とコントローラ４を接続するためのバスのような、相互接続手段と、を備える。前記コントローラ４は、コプロセッサ２の要求によってセマフォ動作を実行するプログラマブルプロセッサとして具体化することが好ましく、専用のリンクネットワークによってコプロセッサ２と通信することが好ましい。それらの処理の一部は、ソフトウエアで実施され且つプログラマブルプロセッサ、即ち、ＣＰＵ３上で起動するとともに、それらの処理の残りの部分は、専用のハードウエアで実施され且つコプロセッサ２上で起動する。メモリ１は、プロセッサ３とコプロセッサ２とで共用され、それは、ランダムアクセスメモリである。
【００２３】
この、所謂ＣＡＫＥアーキテクチャのより詳細については、２００１年４月のコペンハーゲンにおけるＣＯＤＥＳ２００１の会報９２頁から９７頁のＢａｓａｎｔ（バサント氏）等による「Exploring Design Space of Parallel Realizations:MPEG-2 Decoder Case Study」を参照されたい。
【００２４】
図２は図１のコプロセッサ２に関連する書き込みデバイスのブロック図を示す。前記書き込みデバイスは、第１のカウンタ１０と第２のカウンタ２０、制御手段３０、および出力手段４０を備え、前記制御手段３０は、前記第１と第２のカウンタ１０、２０および前記出力手段４０に夫々接続される。前記制御手段３０は、コプロセッサ２が接続されることが出来る端子３１を有する。前記出力手段４０は、前記ＦＩＦＯ１に接続可能な第１の端子４１と制御手段４に接続可能な第２の端子４２を備え、前記接続は、専用のリングネットワークを介して実施されるのが好ましい。
【００２５】
前記第１のカウンタ１０は、前記ＦＩＦＯ１内の利用可能な空きをカウントするために使用する、即ち、前記第１のカウンタ１０のカウントは、ｒｏｏｍ＿ａｖａｉｌａｂｌｅである。第１のカウンタは、自由スペースまたは空きの呼び出しを発することを必要とする前に、データが書き込まれる前記ＦＩＦＯ１の自由スペースの数を含む。前記第２のカウンタ２０は、前記ＦＩＦＯ１の利用可能なデータをカウントするために使用される、即ち、前記第２のカウンタ２０のカウントは、ｄａｔａ＿ｐｒｏｄｕｃｅｄである。この第２のカウンタは、ＦＩＦＯ１に書き込まれたが、まだコントローラ４に報告されていないデータの数を含む。
【００２６】
最初に、コントロール手段３０は、第１のカウンタ、即ち、ｒｏｏｍ＿ａｖａｉｌａｂｌｅカウンタ１０のカウントをチェックする。第１のカウンタのカウントが、ゼロであれば、制御手段３０は、第１の呼び出しＣ１、即ち、ｇｅｔ＿ｒｏｏｍ呼び出しをコントローラ４に発して、ＦＩＦＯ１に空きを依頼する。コントローラ４が、現在利用できる空きがＦＩＦＯにないとのメッセージを返すと、制御手段３０は、コントローラ４がＦＩＦＯ１内に利用可能なスペースがあることを返す迄ｇｅｔ＿ｒｏｏｍ呼び出しを発することを繰り返す。前記ＦＩＦＯに利用可能スペースがある場合、出力手段４０は、データをＦＩＦＯ１に出力し、そこにデータが格納される。次に、制御手段３０は、書き込みポインタを増分し、ポインタラップアラウンドテストを実行する。
【００２７】
このラップアラウンドテストは、書き込み／読み出しポインタをエンドオブバッファアドレスと比較することによって実行される。これらが等しい場合、書き込み／読み出しポインタは、ビギンオブバッファアドレスに設定される。ビギンオブバッファアドレス並びにエンドオブバッファアドレスは、コプロセッサに格納されるのが好ましい。
【００２８】
その後、制御手段３０は、第１のカウンタ１０、即ち、ｒｏｏｍ＿ａｖａｉｌａｂｌｅカウンタのカウントを減分し、第２のカウンタ２０、即ち、ｄａｔａ＿ｐｒｏｄｕｃｅｄカウンタのカウントを増分する。制御手段３０は、第２のカウンタ２０のカウントがＮ個のデータ要素がＦＩＦＯに書き込まれ、従って前記ＦＩＦＯ１から読み出されることが可能であることを指示する所定数Ｎに到達したが否かを決定する。第２のカウンタ２０のカウントが所定数Ｎに到達すると、制御手段３０は、第１のメッセージＭ１、即ち、ｐｕｔ＿ｄａｔａをコントローラ４に発する。或いは、ｐｕｔ＿ｄａｔａメッセージは、どれだけ多くのデータが生成されたかを示す引数を備えていてもよい。
【００２９】
図３は、図１のコプロセッサ２に関連する読み出しデバイスのブロック図を示す。前記読み出しデバイスは、第３のカウンタ５０と第４のカウンタ６０、制御手段７０、および入力手段８０を備え、前記制御手段７０は、前記第３と第４のカウンタ５０、６０および前記入力手段８０に夫々接続される。前記制御手段７０は、コプロセッサ２が接続出来る端子７１を有する。前記入力手段８０は、前記ＦＩＦＯ１に接続可能な第１の端子８１とコントローラ４に接続可能な第２の端子８２を有し、前記接続は、専用のリングネットワークを介して実行されることが好ましい。
【００３０】
前記第３のカウンタ５０は、前記ＦＩＦＯ１の利用可能データをカウントするために使用される、即ち、前記第１のカウンタのカウントは、ｄａｔａ＿ａｖａｉｌａｂｌｅである。この第３のカウンタ５０は、データの呼び出しが発されることが必要となる前に、読み出されることが出来る前記ＦＩＦＯ１の自由データ要素の数を含む。前記第４のカウンタ６０は、前記ＦＩＦＯ１の利用可能自由スペースまたは空きをカウントするために使用される、即ち、前記第２のカウンタ２０のカウントは、ｒｏｏｍ＿ｐｒｏｄｕｃｅｄである。この第４のカウンタは、ＦＩＦＯバッファ１から読み出されたがまだコントローラ４に報告されていないデータの数を含む。
【００３１】
最初に、制御手段７０は、第３のカウンタ５０、即ち、ｄａｔａ＿ａｖａｉｌａｂｌｅカウンタのカウントをチェックする。第３のカウンタ５０のカウントがゼロの場合、制御手段７０は、第２の呼び出しＣ２、即ち、ｇｅｔ＿ｄａｔａ呼び出しをコントローラ４に発して、ＦＩＦＯ１にデータを依頼する。コントローラ４が、ＦＩＦＯ１に現在利用可能なデータがないとのメッセージを返すと、制御手段７０は、コントローラ４がＦＩＦＯ１に利用可能なデータがあることを返すまでｇｅｔ＿ｄａｔａ呼び出しを発することを繰り返す。前記ＦＩＦＯ１に利用可能なデータがある場合、入力手段８０は、ＦＩＦＯ１からデータを入力または読み出す。次に、制御手段７０は、読み出しポインタを増分し、ポインタのラップアラウンドテストを実行する。
【００３２】
その後、制御手段７０は、第３のカウンタ５０、即ち、ｄａｔａ＿ａｖａｉｌａｂｌｅカウンタのカウントを減分し、第４のカウンタ６０、即ち、ｒｏｏｍ＿ｐｒｏｄｕｃｅｄカウンタのカウントを増分する。制御手段７０は、第４のカウンタ６０のカウントが、Ｎ個のデータ要素がＦＩＦＯ１から読み出されたこと、従ってデータが書き込まれることが出来る利用可能なスペースがあることを指示する所定数Ｎに到達したか否かを決定する。第４のカウンタ６０のカウントが所定数Ｎに到達すると、制御手段７０は、第２のメッセージＭ２、即ち、ｐｕｔ＿ｒｏｏｍをコントローラ４に発する。或いは、ｐｕｔ＿ｒｏｏｍメッセージは、どれだけ多くのデータが生成されたかを指示する引数を備えてもよい。
【００３３】
従って、プログラマブルプロセッサとして実施されるコントローラ４は、書き込みデバイスの制御手段３０からのｇｅｔ＿ｒｏｏｍ呼び出しと読み出しデバイスの制御手段７０からのｇｅｔ＿ｄａｔａ呼び出しとｐｕｔ＿ｒｏｏｍメッセージとを受信することが出来る。コントローラ４が、ｇｅｔ＿ｒｏｏｍ呼び出しを受信すると、それは、対応する空きセマフォの値をゼロにリセットし、空きセマフォの以前の値を戻す。次に、この値は、コプロセッサ２またはｇｅｔ＿ｒｏｏｍ呼び出しを発したそれと関連する書き込みデバイスに戻される。コントローラ４が、コプロセッサ２に関連する書き込みデバイスからｐｕｔ＿ｄａｔａメッセージを受信すると、指定の値だけデータセマフォを増分する。この値は、前記所定値Ｎであってもよいし、或いは、ｐｕｔ＿ｄａｔａメッセージの引数であってもよい。
【００３４】
ｇｅｔ＿ｄａｔａ呼び出しとｐｕｔ＿ｒｏｏｍメッセージへのコントローラ４の応答の実施は、ｇｅｔ＿ｒｏｏｍ呼び出しとｐｕｔ＿ｄａｔｅメッセージの実施と同様である。コントローラ４が、ｇｅｔ＿ｄａｔａ呼び出しを受信すると、それは、対応するデータセマフォの値をゼロにリセットし、データセマフォの以前の値を戻す。次に、この値は、コプロセッサ２或いはｇｅｔ＿ｄａｔａ呼び出しを発したそれに関連する読み出しデバイスに戻される。コントローラ４がコプロセッサ２に関連する読み出しデバイスからｐｕｔ＿ｒｏｏｍメッセージを受信すると、それは、指定の値だけ空きセマフォを増分する。この値は、前述の所定値Ｎであってもよいし、或いは、ｐｕｔ＿ｒｏｏｍメッセージの引数であってもよい。
【００３５】
上述の通信スキームは、第１のカウンタ１０、即ち、ｄａｔａ＿ａｖａｉｌａｂｌｅカウンタまたは第３のカウンタ５０、即ち、ｒｏｏｍ＿ａｖａｉｌａｂｌｅカウンタがゼロのなる前に、ＦＩＦＯ１内のデータまたは空きを要求するｇｅｔ＿ｄａｔａまたはｇｅｔ＿ｒｏｏｍ呼び出しを発することによって改良されることが出来る。この改良は、ｇｅｔ＿ｄａｔａ／ｇｅｔ＿ｒｏｏｍ呼び出しの待ち時間を隠す。
【００３６】
コントローラ４として、ローエンドＭＩＰＳ  ＰＲ１９１０が使用出来る。
【００３７】
上述のように、処理は、プログラマブルプロセッサや専用コプロセッサ上で実施されることが出来る。これら二つの代替品の間の選択は、従来のハードウエア／ソフトウエア共設計の問題である。ＦＩＦＯ通信プロトコルバッファアクセスにおいて、ポインタは増分し、ポインタラップアラウンドテストは、ハードウエア、即ち、専用コプロセッサで実施されるが、セマフォ動作は、ソフトウエアで実施されることが好ましい。ソフトウエアにおいてセマフォ動作を実行することが望ましい。即ち、複雑性、即ち、ウエイクアップスリーピング処理のために、処理は、プログラマブルプロセッサで実行される。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態におけるマルチ処理コンピュータシステムのブロック図である。
【図２】図１のコプロセッサに関連する書き込みデバイスのブロック図である。
【図３】図１のコプロセッサに関連する読み出しデバイスのブロック図である。
【図１】
2005529397.tif 000003
【図２】
2005529397.tif 000004
【図３】
2005529397.tif 000005
【国際調査報告】
2005529397.tif 000006
2005529397.tif 000007
2005529397.tif 000008