(57)【要約】  V操作は、FIFOにおいて利用可能になる各データ要素又は記憶空間についてアトミックに実行されるのではなく、又は、P操作は、前記FIFOのデータ要素又は記憶空間のの各要求について、アトミックに実行されるのではなく、mのデータ要素又はmの記憶空間がFIFOにおいて利用可能になった後で1つのV操作が実行される、又は、データ要素のためのmのリクエスト又は記憶空間のためのmのリクエストが受信された後で1つのP操作が実行される。これらのP操作を用いる際に、即ち、前記リクエスト操作をアトミックではなくバーストで実行する際に、コンシューマプロセス(例えば読取り又は書込みプロセス)によって必要とされる又はリクエストされるよりも少ないデータ要素又は記憶空間が前記FIFOバッファ中で利用可能となるという場合が起こり得る。P操作は、mのデータ要素又はmのデータ要素のためのmの記憶空間をリクエストすることによって実行される。P操作は、FIFOバッファにおいて利用可能なデータ要素又は記憶空間がない場合、即ちセマフォカウンタがゼロである場合にしか完全にブロックされない。しかし、FIFOバッファにおいて利用可能なデータ要素又は記憶空間がある場合、即ち、セマフォカウンタがゼロよりも大きい場合、利用可能なデータ要素又はデータ要素の記憶空間の値(即ちセマフォカウンタのカウント)とPリクエスト操作の値mとが比較され、これら2つのうちの値の最小値が選択される。前記P操作によってリクエストされるよりも多くの利用可能なデータ要素又は記憶空間が前記FIFOバッファにある場合、リクエストされたデータ要素又はデータ要素の記憶空間の値mは、前記セマフォカウンタの実際の利用可能なデクリメントとして選択される。しかし、前記P操作によってリクエストされるよりも少ない利用可能なデータ要素又は記憶空間が前記FIFOバッファにある場合、当該利用可能なデータ要素又はデータ要素の記憶空間の値が、実際の利用可能なデクリメントdecとして選択される。前記セマフォカウンタの実際のデクリメントdecは、最終的に出力される。この実際のデクリメントdecに従って、decのデータ要素が前記FIFOバッファから出力されることができ、又は、decのデータ要素のためのdecの記憶空間が利用可能であり、そのためdecのデータ要素がFIFOバッファに入力されることができる。
2005509942.tif 000002
【特許請求の範囲】
【請求項１】
共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作において、
b)コンシューマタスクによる、前記セマフォカウンタのカウントnをm回デクリメントすることの1つのリクエストを受信するステップであって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファからのmのデータ要素の1つのPリクエスト又は前記FIFOバッファ中のmのデータ要素のためのmの記憶空間の1つのPリクエストを示す、ステップと、
c)前記セマフォカウンタの前記カウントnが0に等しい場合に前記Pリクエスト操作をブロックするステップと、
d)前記セマフォカウンタの前記カウントnを、前記セマフォカウンタの前記カウントn又は前記リクエストされたデクリメントmの値によって、これら2つの値のどちらが最小値であるかに依存してデクリメントするステップと、
e)ステップd)において決定される前記最小値を利用可能なデクリメントdecとして出力するステップと、
を有する操作。
【請求項２】
共有FIFOバッファから、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより、及び、第1のカウンタを用いることにより、複数のデータ要素を読み取るための方法において、
a)コンシューマタスクが、前記FIFOバッファからmのデータ要素を読み取る許可を前記Pセマフォ操作にリクエストするステップ
を有し、前記Pセマフォ動作は、
b)前記コンシューマタスクによる、前記セマフォカウンタの前記カウントnをm回デクリメントすることの1つのリクエストを受信するステップであって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファからのmのデータ要素の1つのPリクエストを示す、ステップと、
c)前記セマフォカウンタの前記カウントnが0に等しい場合にPリクエスト操作をブロックするステップと、
d)前記セマフォカウンタの前記カウントnを、前記セマフォカウンタの前記カウントn又は前記リクエストされたデクリメントmの値によって、これら2つの値のどちらが最小値であるかに依存してデクリメントするステップと、
e)ステップd)において決定される前記最小値を利用可能なデクリメントdecとして出力するステップと、
f)前記Pセマフォ操作から、decデータ要素が前記FIFOバッファから読み取られることが可能であることを示す利用可能なデクリメントdecを受信するステップと、
g)前記FIFOバッファからdecデータ要素を読み取るステップと、
i)前記利用可能なデクリメントdecを前記第1のカウンタの前記カウントmから減ずるステップと、
j)前記第1のカウンタの前記カウントmが0よりも大きい限りステップa)乃至i)を繰り返すステップと、
を有する、方法。
【請求項３】
請求項2に記載の方法において、更に、
h)decデータ要素のための記憶空間が前記FIFOバッファにおいて利用可能であることを信号送信するステップ
を有する方法。
【請求項４】
共有FIFOバッファに、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより、及び、第1のカウンタを用いることにより、複数のデータ要素を書き込むための方法において、
a)コンシューマタスクが、前記FIFOバッファにmのデータ要素を書き込む許可を前記Pセマフォ操作にリクエストするステップ
を有する方法において、前記Pセマフォ操作は、
b)前記コンシューマタスクによる、前記セマフォカウンタの前記カウントnをm回デクリメントすることの1つのリクエストを受信するステップであって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファ中のmのデータ要素のためのmの記憶空間の1つのPリクエストを示す、ステップと、
c)前記セマフォカウンタの前記カウントnが0に等しい場合にPリクエスト操作をブロックするステップと、
d)前記セマフォカウンタの前記カウントnを、前記セマフォカウンタの前記カウントn又は前記リクエストされたデクリメントmの値によって、これら2つの値のどちらが最小値であるかに依存してデクリメントするステップと、
e)ステップd)において決定される前記最小値を利用可能なデクリメントdecとして出力するステップと、
f)前記Pセマフォ操作から、decデータ要素のためのデータ記憶空間が前記FIFOバッファにおいて利用可能であることを示す利用可能なデクリメントdecを受信するステップと、
g)前記FIFOバッファの前記利用可能なdec記憶空間にdecデータ要素を書き込むステップと、
i)前記利用可能なデクリメントdecを前記第1のカウンタの前記カウントmから減ずるステップと、
j)前記第1のカウンタの前記カウントmが0よりも大きい限りステップa)乃至i)を繰り返すステップと、
を有する方法。
【請求項５】
請求項4に記載の方法において、更に、
h)データ要素が前記FIFOバッファから読取り可能であることを信号送信するステップ
を有する方法。
【請求項６】
共有FIFOバッファへのアクセスを制御するセマフォカウンタをデクリメントするためのPセマフォ操作ユニットにおいて、
−コンシューマタスクによる、前記セマフォカウンタの前記カウントnをm回デクリメントすることの1つのリクエストを受信するための第1の受信手段であって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファからのmのデータ要素の1つのPリクエスト又は前記FIFOバッファ中のmのデータ要素のためのmの記憶空間の1つのPリクエストを示す、手段と、
−前記セマフォカウンタの前記カウントnが0に等しい場合に前記Pリクエスト操作をブロックする第1のブロック手段と、
−前記セマフォカウンタの前記カウントnと前記リクエストされたデクリメントmの値とを比較するための、及び、これら2つの値のうちの最小値を選択するための、第1の比較手段と、
−前記比較手段によって選択される前記最小値を前記利用可能なデクリメントdecとして出力するための第1の出力手段と、
を有するPセマフォ操作ユニット。
【請求項７】
共有FIFOバッファから、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより、及び、第1のカウンタを用いることにより、複数のデータ要素を読み取るための装置において、
−前記FIFOバッファからmの要素を読み取る許可を前記Pセマフォ操作ユニットにリクエストするための許可リクエスト手段を有し、
前記Pセマフォ操作ユニットは、
−コンシューマタスクによる、前記セマフォカウンタの前記カウントnをm回デクリメントすることの1つのリクエストを受信するための第1の受信手段であって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファからのmのデータ要素の1つのPリクエストを示す、手段と
−前記セマフォカウンタの前記カウントnが0に等しい場合に前記Pリクエスト操作をブロックする第1のブロック手段と、
−前記セマフォカウンタの前記カウントnと前記リクエストされたデクリメントmの値とを比較するための、及び、これら2つの値のうちの最小値を選択するための、第1の比較手段と、
−前記比較手段によって選択される前記最小値を前記利用可能なデクリメントdecとして出力するための第1の出力手段と、
−前記Pセマフォ操作から、decのデータ要素が前記FIFOバッファから読み取られることが可能であることを示す利用可能なデクリメントdecを受信する第2の受信手段と、
−前記FIFOバッファからdecのデータ要素を読み取るための読取り手段であって、前記利用可能なデクリメントdecが前記第1のカウンタの前記カウントmから減じられる、手段と、
−前記第1のカウンタの前記カウントmが0に等しい場合に前記読取り操作をブロックするための第2のブロック手段と、
を有する装置。
【請求項８】
共有FIFOバッファに、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより、及び、第1のカウンタを用いることにより、複数のデータ要素を書き込むための装置において、
−前記FIFOバッファにmの要素を書き込む許可を前記Pセマフォ操作ユニットにリクエストするための許可リクエスト手段を有し、
前記Pセマフォ操作ユニットは、
−コンシューマタスクによる、前記セマフォカウンタの前記カウントnをm回デクリメントすることの1つのリクエストを受信するための第1の受信手段であって、前記セマフォカウンタの前記カウントnのmのデクリメントの前記リクエストは、前記FIFOバッファ中のmのデータ要素のためのmの記憶空間の1つのPリクエストを示す、手段と、
−前記セマフォカウンタの前記カウントnが0に等しい場合に前記Pリクエスト操作をブロックする第1のブロック手段と、
−前記セマフォカウンタの前記カウントnと前記リクエストされたデクリメントmの値とを比較するための、及び、これら2つの値のうちの最小値を選択するための、第1の比較手段と、
−前記比較手段によって選択される前記最小値を前記利用可能なデクリメントdecとして出力するための第1の出力手段と、
−前記Pセマフォ操作から、decデータ要素のためのデータ記憶空間が前記FIFOバッファにおいて利用可能であることを示す利用可能なデクリメントdecを受信する第2の受信手段と、
−前記FIFOバッファにdecデータ要素を書き込むための書込み手段であって、前記利用可能なデクリメントdecは前記第1のカウンタの前記カウントmから減じられる、手段と、
−前記第1のカウンタの前記カウントmが0に等しい場合に前記読取り操作をブロックするための第2のブロック手段と、
を有する装置。
【請求項９】
リーダタスク及びライタタスクからアクセス可能な共有FIFOバッファの並列処理のためのコンピュータシステムにおいて、
−請求項6に記載のセマフォカウンタをデクリメントするためのPセマフォ操作ユニットと、
−請求項7に記載の共有FIFOバッファから複数のデータ要素を読み取るための装置及び／又は請求項8に記載の共有FIFOバッファに複数のデータ要素を書き込むための装置と、
を有するシステム。
【請求項１０】
コンピュータプログラムコード手段を有するコンピュータプログラムにおいて、当該コンピュータプログラムがコンピュータで実行されると、コンピュータに請求項2、3、4、5に記載の方法及び／又は請求項1に記載のPセマフォ操作のステップを実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作、複数のデータ要素を共有FIFOバッファから読み取る又はこれに書き込むための方法、共有FIFOバッファへのアクセスを制御するセマフォカウンタをデクリメントするためのPセマフォ操作ユニット、共有FIFOバッファから複数のデータ要素を読み取るための装置及び共有FIFOバッファに複数のデータ要素を書き込むための装置、リーダタスク及びライタタスクからアクセス可能な共有FIFOバッファの並列処理のためのコンピュータシステム、並びに、対応するコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、プロセッサの協調は、重要な問題である。集中化システムにおいて、セマフォは、一般に、相互排除や再使用可能資源及び消費可能資源の管理等の、多くのプロセス協調の問題を解決するために用いられる。
【０００３】
相互排除の問題は、並列処理において重要な問題である。多くの場合、複数のプロセスが1つ又は複数のプロセッサ上で並列して実行される。プロセッサは、多くの場合、記憶装置、入出力装置及びメモリ等の資源を共有する。2つ以上のプロセスが同一のデータ及びメモリで動作することを必要とすると、資源への相互排除アクセスを実現する機構を提供することが必要となる。機構は、いかなるときにも一時に1つのプロセスしかソースにアクセスするのを許可しないことを要求される。
【０００４】
通常、いわゆるプロデューサ−コンシューマの問題が、並列処理において発生する。プロデューサ−コンシューマ問題の基礎は、データのプロデューサが、コンシューマが準備完了するまで前記データを記憶しておく手段を有していなければならず、コンシューマは存在しないデータを消費しようとしてはならないということである。コンシューマが消費する準備が完了したときにのみプロデューサがデータを作成することは、非現実的であると思われる。これらのプロセスのどちらかが早く到着してしまったら、それは待つことを要求される。しかし、コンシューマ又はプロデューサのデータレートがプログラムの実行中に変化する場合、又は、プロデューサ又はコンシューマのデータレートが同一でない場合、データをバッファすることが必要になる。バッファは、プロデューサ及びコンシューマがアクセスすることができるメモリのセグメントである。バッファがデータ生成のピークを取り扱うのに十分大きい場合、プロデューサ及びコンシューマは時折起こるピークのために生じる故障を恐れることなく安定した高い平均速度のデータ転送を維持する。
【０００５】
並行プロセスがプロデューサ−コンシューマペアにリンクされており、各プロセスにあらゆる部分がアクセス可能である有限バッファを共有すると、遅いコンシューマがシステム全体を大幅に遅延させうる。コンシューマがブロックされる場合、共同プロデューサによって生成されるメッセージがバッファ全体に殺到して、これにより、システムをブロックする。このような挙動を避けるために、各プロデューサ−コンシューマペアのために、通常の動作のための適切な数の部分を確保し、種々のペアの生成ピークを吸収するために他のバッファを割当てることが知られている。
【０００６】
多くの場合、セマフォは、資源を共有するためのアクセスを仲裁する同期化機構として用いられる。セマフォは関連した値を有し、この値は、一般に、セマフォによって調整される資源の数にセットされる。セマフォがプロセスによって取得されるたびに、セマフォの値は1デクリメントされる。セマフォの値がゼロに到達した後は、プロセッサの1つによってセマフォが解放されて、セマフォの値が1インクリメントされるまで、セマフォを取得する新しい試みはブロックされる。
【０００７】
セマフォは、P及びV操作のみが許可される非負の整数変数である。V操作は、プロデューサプロセスがコンシューマプロセスによる使用のための情報を作成したことを示すために、プロデューサプロセスによって用いられる。P操作は、コンシューマプロセスがプロデューサプロセスによって作成される情報をリクエストするときに、コンシューマプロセスによって用いられる。P操作は相互排除を開始するために用いられる一方で、V操作は相互排除から抜けるために用いられる。セマフォは、V操作が前記カウンタをインクリメントし、P操作が前記カウンタをデクリメントするが前記カウンタがゼロであるとブロックし、前記カウンタがゼロより大きくなるまでブロックされた状態でいる、カウンタに対応する。セマフォ並びにP及びV操作の非常に図的な説明は、米国特許第 4,928,222号に見られる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、並列処理環境における改善された操作を可能にする共有FIFOバッファへのアクセスを制御する手段を提供することである。
【課題を解決するための手段】
【０００９】
本発明の目的は、請求項1に記載の共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作、請求項2に記載の前記共有FIFOバッファから複数のデータ要素を読み取るための方法、請求項4に記載の共有FIFOバッファに複数のデータ要素を書き込むための方法、請求項6に記載のセマフォカウンタをデクリメントするためのPセマフォ操作ユニット、請求項7に記載の共有FIFOバッファから複数のデータ要素を読み取るための装置、請求項8に記載の共有FIFOバッファに複数のデータ要素を書き込むための装置、請求項9に記載のリーダタスク及びライタタスクからアクセス可能な共有FIFOバッファの並列処理のためのコンピュータシステム、並びに、請求項10に記載のコンピュータプログラムによって解決される。
【００１０】
本発明は、FIFOにおいて利用可能となる各データ要素又は記憶空間にV操作をアトミックに実行するのではなく、又は、FIFOのデータ要素又は記憶空間の各リクエストについてP操作をアトミックに実行するのではなく、mのデータ要素又はmの記憶空間がFIFOにおいて利用可能になった後で1つのV操作を実行する、又は、データ要素のmのリクエスト又は記憶空間のmのリクエストが受信された後で1つのP操作を実行する、という基本的な考えに基づくものである。
【００１１】
これらのP操作を用いる際に、即ち、前記リクエスト操作をアトミックではなくバーストで実行する際に、コンシューマプロセス(例えば読取り又は書込みプロセス)によって必要とされる又はリクエストされるよりも少ないデータ要素又は記憶空間が前記FIFOバッファ中で利用可能となるという場合が起こり得る。P操作は、mのデータ要素又はmのデータ要素のためのmの記憶空間をリクエストすることによって実行される。P操作(セマフォカウンタをデクリメントすること)は、FIFOバッファにおいて利用可能なデータ要素又は記憶空間がない場合、即ちセマフォカウンタがゼロである場合にしか、完全にブロックされない。しかし、FIFOバッファにおいて利用可能なデータ要素又は記憶空間がある場合、即ち、セマフォカウンタがゼロより大きい場合、利用可能なデータ要素又はデータ要素の記憶空間の値(即ちセマフォカウンタのカウント)とPリクエスト操作の値mとが比較され、これら2つのうちの値の最小値が選択される。
【００１２】
前記P操作によってリクエストされるよりも多くの利用可能なデータ要素又は記憶空間が前記FIFOバッファにある場合、リクエストされたデータ要素又はデータ要素の記憶空間の値mは、前記セマフォカウンタの実際に利用可能なデクリメントとして選択される。しかし、前記P操作によってリクエストされるよりも少ない利用可能なデータ要素又は記憶空間が前記FIFOバッファにある場合、当該利用可能なデータ要素又はデータ要素の記憶空間の値が、実際の利用可能なデクリメントdecとして選択される。前記セマフォカウンタの実際のデクリメントdecが最終的に出力される。この実際のデクリメントdecに従って、decのデータ要素が前記FIFOバッファから出力されることができ、又は、decのデータ要素のためのdecの記憶空間が利用可能であるためdecのデータ要素がFIFOバッファに入力されることができる。
【００１３】
本発明によるP及びV操作を実行する利点は、幾つかのP及びV操作が1つの操作に組み合わせられて、キャッシュコヒーレンストラフィックを低下させると同時にこれらのV及びP操作が不必要にブロックされないことを保証することができるということである。
【００１４】
本発明は、共有FIFOバッファへのアクセスを制御するセマフォカウンタをデクリメントするための対応するPセマフォ操作ユニットによっても解決され、このPセマフォ操作ユニットによって上述のPセマフォ操作が実行可能である。
【００１５】
本発明は、更に、共有FIFOバッファから、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより複数のデータ要素を読み取るための方法によっても、解決される。コンシューマタスクが、前記FIFOバッファからmのデータ要素を読み取る許可を前記Pセマフォ操作にリクエストすると、前記Pセマフォ操作は、上記の通りに実行されて、利用可能なデクリメントdecを出力する。前記利用可能なデクリメントdecは、decのデータ要素が前記FIFOバッファから読み取られることが可能であることを示す。その後、decのデータ要素が前記FIFOバッファから読み取られる。decのデータ要素が前記FIFOバッファから読み取られると、利用可能なデクリメントdecが第2のカウンタのカウントから減じられる。第2のカウンタのカウントmが0よりも大きい限り上述のステップは繰り返される。
【００１６】
好適な実施例によれば、decのデータ要素がFIFOから読み取られた後に、decのデータ要素のためのdecの記憶空間が利用可能であるとの信号送信が実行される。換言すれば、decのデータ要素のためのdecの記憶空間がFIFOにおいて利用可能であることを示す1つのV操作が実行される。
【００１７】
本発明は、更に、共有FIFOバッファに、前記共有FIFOバッファへのアクセスを制御するセマフォカウンタのためのPセマフォ操作を用いることにより複数のデータ要素を書き込むための方法によっても、解決される。プロデューサタスクが、前記FIFOバッファにmのデータ要素を書き込む許可を前記Pセマフォ操作にリクエストすると、前記Pセマフォ操作は、上記の通りに実行されて、利用可能なデクリメントdecを出力する。前記利用可能なデクリメントdecは、decのデータ要素のためのデータ記憶空間が前記FIFOバッファにおいて利用可能であることを示す。その後、decのデータ要素が、decの記憶空間に従って前記FIFOバッファに書き込まれる。decのデータ要素が前記FIFOバッファに書き込まれると、利用可能なデクリメントdecが第2のカウンタのカウントから減じられる。第2のカウンタのカウントmがゼロよりも大きい限り上述したステップは繰り返される。
【００１８】
好適な実施例によれば、decのデータ要素がFIFOに書き込まれた後に、decのデータ要素が利用可能であるとの信号送信が実行される。換言すれば、decのデータ要素が前記FIFOから読み取られることが可能であることを示す1つのV操作が実行される。
【００１９】
本発明は、それぞれ上述の読取り及び書込み方法を実行するように適応された、対応する読込み及び書込み装置によって解決される。
【００２０】
本発明は、更に、リーダタスク及びライタタスクからアクセス可能な共有FIFOバッファの並列処理のためのコンピュータシステムにおいて、セマフォカウンタをデクリメントするためのPセマフォ操作ユニットと、共有FIFOバッファから複数のデータ要素を読み取るための装置及び／又は共有FIFOバッファに複数のデータ要素を書き込むための装置とを有するシステムによっても解決される。
【００２１】
最後に、本発明は、更に、コンピュータプログラムコード手段を有するコンピュータプログラムにおいて、当該コンピュータプログラムがコンピュータで実行されると、コンピュータに前記読取り／書込み方法及び／又は前記Pセマフォ操作のステップを実行させる、コンピュータプログラムによっても解決される。
【発明を実施するための最良の形態】
【００２２】
本発明は、ここで、図面を参照して更に詳細に説明される。
【００２３】
第1の実施例においては、同期処理に基づいて、コンピュータシステム中で読取り及び書込みプロセス等の少なくとも2つのプロセスにより共有されるFIFOバッファから読み取る又はこれに書き込むことが、Pセマフォ操作を用いて実行される。
【００２４】
図1は、セマフォカウンタ13(これも図1に示される)をデクリメントさせるためのPセマフォ操作ユニット10のブロック図を示し、前記セマフォカウンタ13は、共有FIFOバッファ1(図示せず)へのアクセスを制御する。セマフォカウンタ13は、前記FIFOバッファで利用可能なデータ要素(即ちセマフォ(データ))に、又は、前記FIFOバッファ)で利用可能な記憶空間(即ちセマフォ(ルーム))に、基づいていてもよい。Pセマフォ操作ユニット10は、第1の受信手段11、第1のブロック手段12、第1の比較手段14及び第1の出力手段15を有する。
【００２５】
前記第1の受信手段11は前記第1のブロック手段12に接続されており、このブロック手段は、前記セマフォカウンタ13の状態を入力信号として受信する。前記第1のブロック手段12は、更に、前記第1の比較手段14に接続されており、この比較手段は前記セマフォカウンタ13に接続されている。前記セマフォカウンタ13は、第1のブロック手段12及び第1の比較手段14に自身の状態を出力し、第1の比較手段14の出力を入力信号として受信する。最後に、第1の比較手段14は、更に、前記出力手段15に接続されている。前記第1の受信手段11は、前記セマフォカウンタ13のカウントnをm回減少させるコンシューマタスクによるリクエストを受信する。前記セマフォカウンタ13のカウントnのmの減少の前記リクエストは、前記FIFOバッファ1からのmのデータ要素の1つのPリクエストを示す。即ち、セマフォカウンタ13はセマフォ(データ)に基づく。前記第1の受信手段11は、前記第1のブロック手段12にmの減少のリクエストを転送し、この第1のブロック手段12は、前記セマフォカウンタ13のカウントnがゼロに等しい場合には、mの減少の前記リクエストをブロックする。前記セマフォカウンタ13のカウントnがゼロより大きい場合には、前記第1のブロック手段12は、前記第1の比較手段14にmの減少の前記リクエストを転送し、この第1の比較手段14は、転送されたmの減少のリクエストと前記セマフォカウンタ13のカウントnとを比較して、前記2つの値のうちの最小値を決定する。前記セマフォカウンタ13のカウントnは、前記第1の比較手段14で決定された当該最小値によって減少させられる。前記第1の比較手段14で決定される前記最小値は、利用可能な減少decとして出力されるために前記出力手段15に転送される。前記利用可能な減少decは、幾つのデータ要素が実際に前記FIFOバッファ1から出力されることができるかについて示す。
【００２６】
代替的に、プロデューサタスクからの前記セマフォカウンタ13のカウントnのmの減少のリクエストは、前記FIFOバッファ1のmのデータ要素のためのmの記憶空間の1つのPリクエストを示す。即ち、セマフォカウンタ13はセマフォ(ルーム)に基づく。そして、この場合、前記利用可能な減少decは、mのデータ要素のためのmの記憶空間が利用可能であるから幾つのデータ要素が前記FIFOバッファ1に実際に入力されることができるかについて示す。
【００２７】
図2は、外部共有FIFOバッファ1から複数のデータ要素を読み取るための装置100及び外部共有FIFOバッファ1に複数のデータ要素を書き込むための装置のブロック図を示す。
【００２８】
前記読取りデバイス及び前記書込み装置100は、両方とも、第1の許可リクエスト手段111、第2の受信手段101、第2のブロック手段102、第1のカウンタ103、読取り／書込み手段110及び第1の信号送信手段115を有する。前記第1の許可リクエスト手段111は、外部Pリクエスト操作ユニット10に接続されている。前記Pリクエスト操作ユニット10の出力は、前記第2の受信手段101の入力に接続されている。前記第2の受信手段101は、更に、前記第2のブロック手段102に接続されており、この第2のブロック手段102は、前記読取り／書込み手段110及び前記第1のカウンタ103に接続されている。前記第1のカウンタ103の出力は、前記第2のブロック手段102に接続されている。前記読取り／書込み手段110は、共有FIFOバッファ1及び前記第1の信号送信手段115に接続されている。
【００２９】
読取り操作に関して、コンシューマタスクは、前記FIFOバッファ1からmのデータ要素を読み取る許可のリクエストを前記第1のリクエスト手段111に入力する。前記第1の許可リクエスト手段111は、前記Pセマフォ操作ユニット10が前記FIFOバッファ1からmのデータ要素を読み取る許可を与えることのリクエストを開始する。前記Pセマフォ操作ユニット10は、mのデータ要素の前記リクエストを受信して、図1を参照して説明されたとおり、セマフォ(データ)に基づいてこのリクエストを処理して、利用可能な減少decを出力する。前記第2の受信手段101は、利用可能な減少decを前記Pリクエスト操作ユニット10からの出力として受信して、前記第2のブロック手段102にこの利用可能な減少decを転送する。前記第1のカウンタ103のカウントmが0に等しい場合、前記第2のブロック手段102はdecデータ要素のリクエストをブロックする。しかし、前記第1のカウンタ103のカウントmがゼロより大きい場合、利用可能な減少decは前記第2のブロック手段102によって前記読取り／書込み手段110に転送される。前記読取り／書込み手段110は、前記FIFOバッファ1からdecデータ要素を読み取って、これらのdecデータ要素を出力する。前記decデータ要素が前記読取り／書込み手段110によって出力されたあと、前記読取り／書込み手段110は、当該decデータ要素が前記FIFOバッファ1から出力されたと前記第1の信号送信手段115に通知する。その後、前記第1の信号送信手段115は信号送信操作を実行し、これは、decデータ要素のためのdec記憶空間が前記FIFOバッファ1において利用可能であることを示す。前記信号送信操作は、このときdec記憶空間が前記FIFOバッファ1において利用可能であることを示すV操作を表す。次に、第1のカウンタのカウントmは、decによって減少させられる。
【００３０】
代替的に、書込み動作において、プロデューサタスクは、前記FIFOバッファ1にmのデータ要素を書き込む許可のリクエストを前記第1の許可リクエスト手段111に入力する。他の処理は、上記の通りの読取り操作に対応する。前記Pセマフォ操作ユニット10は、mのデータ要素のためのmの記憶空間の前記リクエストを受信して、図1を参照して説明されたとおり、このリクエストをセマフォ(ルーム)に基づいて処理する。利用可能な減少decは、前記第2のブロック手段102によって前記読取り／書込み手段110に転送される。その後で、前記読取り／書込み手段110は、前記FIFOバッファにdecデータ要素を書き込む。前記decデータ要素が前記読取り／書込み手段110によって出力されたあと、前記読取り／書込み手段110は、当該decデータ要素が前記FIFOバッファ1に入力されたと前記第1の信号送信手段115に通知する。その後で、前記第1の信号送信手段115は信号送信操作を実行し、これはdecデータ要素が前記FIFOバッファ1において利用可能であることを示す。従って、前記信号送信操作は、このときdecデータ要素が前記FIFOバッファ1から読取り可能であることを示すセマフォ(データ)上のV操作を表す。次に、第1のカウンタのカウントmは、decによって減少させられる。
【００３１】
従って、第1の実施例によれば、読取り操作は、少なくとも1つのデータ要素についてセマフォ(データ)に1つのP操作を実行することによって実行される。即ち、FIFOバッファからデータ要素を読み取ることをリクエストし、読取り操作終了後、前記FIFOバッファの少なくとも1つの記憶空間についてセマフォ(ルーム)に1つのV操作を実行することによって、記憶空間がFIFOで現在利用可能であることを示す。他方では、書込み操作は、前記FIFOバッファの少なくとも1つの記憶空間についてセマフォ(ルーム)に1つのP操作を実行することによって実行される。即ち、FIFOバッファのデータ要素のための記憶空間をリクエストし、書込み操作終了後、少なくとも1つのデータ要素についてセマフォ(データ)に1つのV操作を実行することによって、現在データ要素がFIFOから読取り可能であることを示す。読込みと書込みとの間の差は、セマフォ操作が異なったセマフォ(即ちセマフォ(データ)及びセマフォ(ルーム))に実行されるということと、データ要素が反対方向に、即ちFIFOにコピーされる及びFIFOからコピーされるということとである。
【００３２】
第2の実施例においては、同期処理に基づいて、コンピュータシステム中で読取り及び書込みプロセス等の少なくとも2つのプロセスにより共有されるFIFOバッファから読み取る又はこれに書き込むことが、Vセマフォ操作を用いて実行される。
【００３３】
図3は、セマフォカウンタ23(図3にも示される)をインクリメントするためのVセマフォ操作ユニット20のブロック図を示し、このカウンタは、外部の共有FIFOバッファ1(図示せず)へのアクセスを制御している。Vセマフォ操作ユニット20は、第3の受信手段21、第3のブロック手段22、第2の比較手段24、第2の出力手段29、第1の減算手段28、第1の限界値L 27のためのメモリ及び第3の比較手段26を有する。
【００３４】
第3の受信手段21は第3のブロック手段22に接続されており、このブロック手段は第2の比較手段24及び第3の比較手段26に接続されている。第3の比較手段26は、第1の限界値L 27のためのメモリ及び前記セマフォカウンタ23に接続されている。第1の限界値L 27のためのメモリは、更に、第1の減算手段28に接続されている。第1の減算手段28は、前記セマフォカウンタ23の状態及びメモリ27の状態(即ち前記第1の限界値L)を入力信号として受信し、減算結果を第2の比較手段24に出力する。第2の比較手段24の出力は利用可能なインクリメントincであり、これは出力手段29によって出力される。前記セマフォカウンタ23は、利用可能なインクリメントincを入力として受信する。
【００３５】
前記第1の受信手段21は、前記セマフォカウンタ23のカウントnをm回インクリメントするというプロデューサタスクによるリクエストを受信する。前記セマフォカウンタ23のカウントnのm回インクリメントの前記リクエストは、前記FIFOバッファ1へのmのデータ要素の1つのV解放のためのリクエストを示す。前記第1の受信手段21は、前記第3のブロック手段22に、mのインクリメントの前記リクエストを転送する。前記セマフォカウンタ23のカウントnが第1の限界値Lを越えた場合、前記第3のブロック手段22はmのインクリメントのリクエストをブロックする。前記第1の限界値Lは、前記第1の限界値L 27のための前記メモリに記憶されている。前記第3の比較手段26は、前記セマフォカウンタ23の第1の限界値L及びカウントnを入力信号として受信し、前記セマフォカウンタ23のカウントnが前記第1の限界値Lを越えたかどうか決定するために、これらの2つの入力信号を比較する。前記第3の比較手段26は、前記第3のブロック手段22に、この比較操作の結果を出力する。前記セマフォカウンタ23のカウントnが前記第3の比較手段26によって決定された前記第1の限界値Lを依然越えていなかい場合、前記第3のブロック手段22は前記第2の比較手段24にmのインクリメントのリクエストを転送する。
【００３６】
前記第1の減算手段28は、前記セマフォカウンタ23の第1の限界値L及びカウントnを入力信号として受信して、これらの差を決定するために、2つの値を減ずる。前記第1の減算手段28は、減算結果を前記第2の比較手段24に出力し、この比較手段は、前記減算結果をmのインクリメントのリクエストと比較して、前記2つの値のうちどちらが最小値であるかを決定する。前記第2の比較手段24は、決定された最小値を前記出力手段29に出力する。前記出力手段29は、最小値を入力信号として受信し、最小値を利用可能なインクリメントincとして出力して、incの記憶空間がincのデータ要素のために利用可能であることを示す。
【００３７】
図4は、共有FIFOバッファ1に複数のデータ要素を書き込むための装置200のブロック図を示す。前記装置200は、第2の許可リクエスト手段211、第4の受信手段201、第4のブロック手段202、第2のカウンタ203、書込手段210、第2の信号送信手段215、第1の限界値L 207のための第2のメモリ、及び第2の減算手段212を有する。
【００３８】
前記許可リクエスト手段211はVセマフォ操作ユニット20の入力に接続されており、前記第4の受信手段201は前記Vセマフォ操作ユニット20の出力に接続されている。前記第4の受信手段201は、更に、前記第4のブロック手段202に接続されており、このブロック手段は、前記書込手段210、前記第2のカウンタ203及び前記第2の減算手段212に接続されている。前記第2の減算手段212は、入力側で前記第1の限界値L 207のための前記第2のカウンタ203及び前記メモリに、出力側で前記第4のブロック手段202に、接続されている。前記書込手段210は、前記外部共有FIFOバッファ1及び前記第2の信号送信手段215に接続されている。
【００３９】
プロデューサタスクは、前記FIFOバッファ1にmのデータ要素を書き込む許可のリクエストを前記第2の許可リクエスト手段211に入力する。前記第2の許可リクエスト手段211は、前記FIFOバッファ1にmのデータ要素を書き込む許可を付与するために前記Vセマフォ操作ユニット20へのリクエストを開始する。前記Vセマフォ操作ユニット20は、mのデータ要素を書き込む前記リクエストを受信して、図3を参照して説明されたとおりこのリクエストを処理して、利用可能なインクリメントincを出力する。
【００４０】
前記第4の受信手段201は、前記Vリクエスト操作ユニット20から出力された利用可能なインクリメントincを受信して、利用可能なインクリメントincを前記第4のブロック手段202に転送する。前記第2のカウンタ203のカウントが前記第1の限界値Lを越えたら、前記第4のブロック手段202はmのデータ要素を書き込むリクエストをブロックする。前記第2の減算手段212は、前記第2のカウンタ203のカウントm及び第1の限界値Lを入力信号として受信して、前記第2のカウンタ203の前記カウントmが前記第1の限界値Lを越えたかどうか決定するためにこれらの値を減ずる。前記第2のカウンタ203の前記カウントmが前記第1の限界値Lを依然越えていなければ、前記第4のブロック手段202は前記書込手段210に利用可能なインクリメントincを転送する。前記利用可能なインクリメントincの受信の際に、前記書込手段210は前記FIFOバッファ1にincのデータ要素を書き込む。前記書込手段210は、更に、前記利用可能なインクリメントincを前記第2の信号送信手段215に転送する。前記第2の信号送信手段215は、incのデータ要素が他の処理のために前記FIFOバッファ1において利用可能であることを示す信号送信操作を実行する。即ち、V操作が前記FIFOバッファ1に入力されるincのデータ要素に実行され、incのデータ要素がFIFOから読み取られることが可能であることを示す。
【００４１】
更に、incのデータ要素が前記FIFOバッファ1に書き込まれたあと、前記第2のカウンタ203のカウントmに利用可能なインクリメントincが加えられる。第2のカウンタのカウントmが第1の限界値Lを越えない限り、上述したステップは繰り返される。
【００４２】
読取り操作は、更にV操作に基づいて実行されることができる。このような読取り操作は、次に、図4を参照して説明されたとおりに書込みプロセスと対称的に実行される。
【００４３】
V操作は上記のP操作に非常に類似している。前記V操作を実行するときにセマフォカウンタが所定の限界値Lを越えることは回避されることになっている。V操作は、前記FIFOバッファにおいて記憶空間が利用可能であるよりも多くのデータ要素が前記FIFOバッファへ入力されること、又は、FIFOバッファの最大の利用可能な記憶空間よりも多くのV操作が実行されることを許可しない可能性がある。前記FIFOバッファの最大の利用可能な記憶空間は、前記所定の限界値Lに対応する。
【００４４】
まとめとして、Pセマフォ操作は、セマフォカウンタをm回デクリメントしようとして、ゼロよりも大きいがリクエストされたよりは大きくない実際の減少を返す、と言うことができる。Vセマフォ操作は、セマフォカウンタをm回インクリメントしようとして、ゼロより大きいが、前記セマフォカウンタの第1の限界値Lよりは大きくない実際のインクリメントを返す。
【００４５】
FIFOバッファからの読取りは、FIFOバッファへの書込みと対称的である。FIFOからの読取りの場合、読取りプロセスは、データを消費又は処理することによってコンシューマプロセスとして動作すると同時に、データ要素がFIFOバッファから出力されたためFIFOバッファにフリーの記憶空間を作成することによってプロデューサプロセスとして作動する。FIFOへの書込みの場合、書込みプロセスは、記憶空間を消費又は占有することによってコンシューマプロセスとして作動すると同時に、データ要素がFIFOバッファに入力されたためFIFOバッファにデータ要素を作成することによってプロデューサプロセスとして作動する。
【００４６】
変数l及び／又はmは所定の値に設定されることができる。又は、代替的には、これらの変数は、全体的な処理のパフォーマンスを最適化するために、その時点における処理状態に従って計算されることができる。
【図面の簡単な説明】
【００４７】
【図１】第1の実施例によるPセマフォ操作ユニット10のブロック図を示す。
【図２】第1の実施例による共有FIFOバッファから複数のデータ要素を読み取るための装置100のブロック図を示す。
【図３】第2の実施例によるVセマフォ操作ユニット20のブロック図を示す。
【図４】第2の実施例による共有FIFOバッファに複数のデータ要素を書き込むための装置200のブロック図を示す。
【図１】
2005509942.tif 000003
【図２】
2005509942.tif 000004
【図３】
2005509942.tif 000005
【図４】
2005509942.tif 000006
【国際調査報告】
2005509942.tif 000007
2005509942.tif 000008
2005509942.tif 000009