説明

共有資源の状態を決定する方法および装置

【課題】共有資源のアクセスにおいて、同期によるシステム遅延は最小限に抑えられ、回路設計および設計段階における正確さの証明が単純化される。
【解決手段】相互に非同期的なクロックドメイン内で作動する多数のサブシステム(802,804,806,808)により共有される資源(810)の状態を決定する方法および装置は、各サブシステムに1ビットカウンタ(814,818,822,826)を適用し、このような各ビットカウンタの値を全ての非同期クロックと同期させる。各サブシステムは各ビットカウンタ(814,818,822,826)の値を排他的ORすることにより共有資源(810)に対する可用性状態を発生する。同期によるシステム遅延は最小限に抑えられ、回路設計および設計段階における正確さの証明が単純化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデジタルシステムの分野に関し、特に共有資源の状態を決定する方法に関する。
【背景技術】
【0002】
関連技術の説明
多くのデジタルシステムにおいて、一つのシステム資源をシステムの多くの構成要素で共有しなければならない。例えば、デジタルコンピュータシステムでは、一般的に中央処理装置(“CPU”)がビデオディスプレイサブシステムや、時には他のCPUとメモリを共有している。このような状況では、潜在的に多くの資源要求のいずれを許可するかを判断するための調停方式が必要である。さらに、一つの資源が一つのシステム構成要素(書込み“生産者”)からもう一つのシステム構成要素(読出し“消費者”)へ情報を通すのに使用される時に、生産者により資源内に格納される情報は消費者がその情報を検索するまで保護されなければならない。他の生産者が同じ資源へ情報を書き込むために競合している場合は特にそうである。したがって、生産者が共有資源へ情報を書き込むと、その情報が消費者により検索されないうちは他の生産者は資源への書き込みを禁止される。
【0003】
共有システム資源へのアクセスを調整するための典型的な回路設計には、一つの(ハイ)論理状態で満杯を表しもう一つの(ロー)論理状態で空きを表す資源に関連する状態レジスタ(すなわち“セマフォア”)を使用することが含まれている。このようなセマフォアは典型的には標準フリップフロップを使用して実現される。セマフォアは、例えば、データを格納することができる共有資源を介して情報交換を調整するのに使用することができる。このようなセマフォアは、資源へデータを書き込んだ(消費者がデータを読み出せることを示す)ばかりの生産者により“セット”される時に資源は満杯であることを表し、資源からデータを読み出した(生産者が新しいデータを書き込めることを表す)ばかりの消費者により“リセット”される時に資源が空いていることを表す。
【0004】
全ての生産者および消費者がセマフォアと同じクロックドメイン内で作動している限りセマフォア方式は満足なものである。均一なクロックドメインでは、更新中の信号がまだセマフォアに受信されていないか、あるいは更新されたセマフォア値がまだ全ての生産者や消費者へ伝搬されていないかに拘わらず、生産者および消費者はセマフォアの値をテストすることができる。すなわち、均一なクロックドメインでは、セマフォアの値が共有資源の真の状態を反映することを保証するのは難しくはない。
【0005】
均一なクロックドメイン内で作動しているサブシステム間では信号を同期化させる必要はない。しかしながら、2つのサブシステムが異なるクロックドメイン内で作動する時には、一方から他方への信号を同期化させなければならない。
【0006】
したがって、サブシステムが資源を共有するが異なるクロックドメインで作動する場合には問題が生じる。典型的なセマフォア方式は、1)どのクロックドメインをセマフォアが使用するか、2)異なるクロックドメインにまたがってどのようにセットおよびリセット信号が発生されるか、3)いつセマフォアの値が共有資源の真の状態を反映して、サブシステムがこのような状態をテストできるか、および4)関連する設計論理の正しさが設計段階においてどのようにテストされるか、といったマルチプルクロックドメインに関連する困難な問題を克服しなければならない。
【0007】
資源を共有するが異なるクロックドメインで作動する一つの生産者および一つの消費者を含む単純なシステムでは、従来のセマフォア方式によりセマフォアのクロックドメインの3つの選択が考えられる。第1に、セマフォアは生産者のクロックドメイン内に配置することができる。このような構成では、生産者は共有資源の状態を反映するセマフォアへの即時同期アクセスを有し、したがって、生産者のセット信号はセマフォアに同期している。しかしながら、消費者のリセット信号はセマフォアに同期していない。したがって、消費者のリセット信号を生産者のクロックに同期化させてセマフォアを更新し、セマフォアの新しい値を消費者のクロックドメインへ同期化し戻して消費者が資源の状態をテストできるようにしなければならない。
【0008】
消費者のリセット信号をセマフォア(および生産者)のクロックドメインに同期化させることに関連する遅延、およびセマフォアの新しい値を消費者のクロックドメイン内へ同期化し戻すことに関連するもう一つの遅延がある。これらの遅延により、消費者によりテストされるセマフォアの値が有効ではない(資源の真の状態を反映しない)場合に時間のウィンドが作り出される。この時間のウィンド中にセマフォアをテストすると、消費者は有効ではないセット状態を検出する。消費者が早まってセマフォアをテストするのを防止するためには、それ自体の更新信号がセマフォアをリセットすることができかつセマフォアの新しいリセット値が消費者へ達するのに十分なだけ消費者を遅延させなければならない。
【0009】
セマフォアに対するクロックドメインの第2の選択は、消費者のクロックドメインを使用することである。消費者のクロックドメインの使用を選出することにより、遅延問題の逆のシナリオが提示される、すなわち生産者が早まってセマフォアをテストするのを防止して無効なリセット状態を検出する可能性を回避するのに十分なだけ生産者を遅延させなければならない。
【0010】
セマフォアに対するクロックドメインの第3の選択は、生産者や消費者のクロックドメインとは異なる第3のクロックドメインを使用することである。この場合、生産者と消費者の両方を遅延させてセマフォアを早まってテストすることがないようにしなければならない。したがって、セマフォアに対するクロックドメインの選択に無関係に、生産者、もしくは消費者、もしくはその両者を同期化を行える遅延だけ遅らせなければならない。
【0011】
2つ以上の生産者が共有資源へ書き込みを行う必要があるか、あるいは2つ以上の消費者が共有資源から読み出しを行う必要がある場合には、さらに困難な問題が生じる。生産者による書込みおよび消費者による読出しを支配するアービター要素を導入しなければならない。このようなアービターの役割は生産者と消費者の間でアクセス権を調整して、一つの資源へ同時に書き込む2つ以上の生産者あるいは一つの資源から同時に読み出す2つ以上の消費者により生じる競合状態を回避することである。典型的なアービター要素は資源に対する多数の要求を受信して、唯一の要求者へアクセスを許可しその要求者が現在のユーザとなる。現在のユーザが資源を解放しないうちは、アービターはその資源に対する他の要求を許可しない。
【0012】
多数の生産者を含むシステムでは、アービターは共有資源への生産者の書込みアクセスを調整する必要がある。多数の消費者を含むシステムでは、アービターは共有資源への消費者の読出しアクセスを調整する必要がある。多数の生産者および消費者を含むシステムでは、生産者を調整するものと消費者を調整するものとの2つのアービターが必要である。
【0013】
調停を必要とするマルチプルクロックドメインでは、同期化問題はより複雑となる。アービターが生産者もしくは消費者の共有資源へのアクセス要求を最終的に許可する場合には、生産者もしくは消費者はセマフォアの値が資源の真の状態を反映することを保証しなければならない。
【0014】
この問題をより詳細に記述するために、一つの生産者が共有資源へのデータの書込みを終了し、セマフォアをセットするための更新信号を送り共有資源へのアクセス権を解放するものと仮定する。また、アービターは次に資源の解放を検出して第2の生産者のアクセス要求を許可するものと仮定する。一方、セマフォアのクロックドメインと同期化されなければならないことがある第1の生産者の更新信号がセマフォアをセットする。セマフォアの値はいずれ第2の生産者のクロックと同期化させて、第2の生産者が資源の状態を有効にテストできるようにしなければならない。アービターが第2の生産者の資源に対する要求を許可した時に、第2の生産者によりテストされるセマフォアの値は、それを第2の生産者のクロックドメイン内へ同期化させるのに不十分な時間である場合には、共有資源の真の状態を反映しないことがある。この問題の従来の解決策は、やはり遅延を導入することである。
【0015】
一つの生産者のアクセス解放ともう一つの生産者のアービターによる許可の検出との間の時間が、一つの生産者のセマフォアへの更新信号の発行ともう一つの生産者のクロックドメイン内へのセマフォアの新しい更新値の同期化との間の時間と少なくとも同じ長さであることを保証する遅延を調停論理内へ導入することにより、このタイミング問題が解決されている。3つ以上の生産者もしくは3つ以上の消費者を含むシステムでは、所要の調停遅延は常に最も遅いクロックドメインに基づいていて、最も遅い生産者もしくは消費者が共有資源の状態を早まってテストすることがないよう保証しなければならない。
【0016】
従来の調停セマフォアの一つの欠点は、所要の遅延によりシステム性能が劣化することである。高速コンピュータシステムが重要視されそれに対するニーズが高まる中で、システム速度のいかなる劣化も著しい欠点となる。
【0017】
導入される遅延を最適化する試みがなされてきてはいるが、このような試みはたとえうまくいっても異常に複雑化して実現するのが困難である。従来の調停セマフォア方式のもう一つの欠点は、所要遅延の最適化を実現するのが困難なことである。
【0018】
調停セマフォア方式のもう一つの欠点は、最悪シナリオを克服するのに必要な考えられる最短遅延時間を決定するために、設計段階において実質的な解析を必要とすることである。必要な解析の複雑度はさまざまなクロックドメイン内で作動している生産者や消費者の数と共に指数関数的に増大し、さまざまな付加クロックドメインがセマフォアもしくはアービターもしくはその両方を含む場合にはさらに複雑化する。
【0019】
しかしながら、最も重要な欠点は調停セマフォア方式は設計段階において正しさを証明するのが困難なことである。この問題は関連する論理が大規模集積回路の小型部品1個だけである場合によく理解できるであろう。大規模集積回路の製造設備を整えるのに大きなコストがかかるため、設計段階において全ての論理の正しさを検証して非常にコストのかさむ誤りを回避することが非常に強調される。
【発明の開示】
【発明が解決しようとする課題】
【0020】
発明の要約
本発明は共有資源の状態を決定するのに必要な論理の複雑度を低減してこのような論理の性能を改善するものである。特に、本発明により共有資源の可用性もしくは非可用性を各資源共有サブシステムへ通知するのに必要な時間間隔が最小限に抑えられる。本発明により共有資源の状態を表すのに従来のセマフォアを使用することが有利に回避される。
【課題を解決するための手段】
【0021】
本発明の一つの特徴は各資源共有サブシステムに対する1ビット2進カウンタ(1ビットレジスタ)である。共有資源へのアクセスを開始する度に、サブシステムはそのビットレジスタの値をトグルする。このようにして、各資源共有サブシステムは共有資源に対して開始されている各アクセスを表示する。
【0022】
本発明のもう一つの特徴は、各資源共有サブシステムの各ビットレジスタの値と他の資源共有サブシステムが作動する全ての非同期クロックドメインとの同期化である。このようにして、各資源共有サブシステムの各ビットレジスタの値を各サブシステムで利用できるため、各サブシステムは共有資源に対してなされるあらゆるアクセスを検出することができる。
【0023】
本発明のさらにもう一つの特徴は、各資源共有サブシステムによる共有資源の状態の独立決定である。各サブシステムは各資源共有サブシステムの各ビットレジスタの値を比較する論理を含んでいる。このような比較の結果は状態信号を含んでいる。したがって、各サブシステムが共有資源の可用性を示すそれ自体の状態信号を引き出す。
【0024】
本発明のさらにもう一つの特徴は、サブシステムによる共有資源の状態変化をそのサブシステムへ即時に同期的に通知することである。サブシステムが共有資源へのアクセスを開始する度に、アクセスするサブシステムは共有資源の可用性が変わっていることを即時に通知される。
【0025】
本発明には従来のセマフォアがないため、セマフォアと非同期サブシステムから発生される各更新信号のセマフォアに対する同期化を必要とする資源共有サブシステムとの間に非同期関係はない。したがって、共有資源へのアクセスを開始した後で、サブシステムがそれ自体のアクセスにより生じる可用性の変化を検出することができる時間のウィンドはない。したがって、サブシステムが早まって共有資源をアクセスするのを防止するために付加遅延を介在させる必要がなく、さらに、非同期クロックドメイン内の共有資源のアクセスに関連する遅延は最小限に抑えられる。
【0026】
本発明に従った方法によりデジタルシステムの資源の状態が決定され、第1のクロックと同期作動している第1のサブシステムが資源へデータを書き込み、第2のクロックと同期作動している第2のサブシステムが資源からデータを読み出し、第2のクロックは第1のクロックに対して非同期とされ、前に書き込まれたデータが第2のサブシステムにより資源から読み出されないうちは資源を第1のサブシステムからの付加データの書き込みに利用することができない。本方法は、第1のサブシステムによる資源へのいくつかの書込みアクセスを表す第1の量を発生するステップであって、第1の量は前記第1のクロックと同期して発生されるステップと、第2のサブシステムによる資源へのいくつかの読出しアクセスを表す第2の量を発生するステップであって、第2の量は第2のクロックと同期して発生されるステップと、第1の量を第2のクロックと同期化させて第3の量を発生するステップと、第2の量を第1のクロックと同期化させて第4の量を発生するステップと、第1の量を第4の量と比較して第1のサブシステムのための第1の資源可用性信号を発生するステップであって、第1の資源可用性信号は第1の量が第4の量に等しい場合にアクティブであり、第1の資源可用性信号は第1のクロックに同期して発生される前記ステップと、第2の量を第3の量と比較して第2のサブシステムのための第2の資源可用性信号を発生するステップであって、第2の資源可用性信号は第2の量が第3の量とは異なる場合にアクティブであり、第2の資源可用性信号は第2のクロックに同期して発生される前記ステップと、を含んでいる。
【0027】
本発明に従ったもう一つの方法により、デジタルシステムの資源の状態が決定され、少なくとも一つの書込みサブシステムが資源へデータを書き込み、少なくとも一つの読出しサブシステムが資源からデータを読み出し、予め書き込まれたデータが一つの読出しサブシステムにより資源から読み出されないうちは資源を書込みサブシステムからの付加データの書き込みに利用することができず、各書込みサブシステムおよび各読出しサブシステムは各クロックと同期作動し、少なくとも一つの書込みサブシステムは第1のクロックと同期作動し、少なくとも一つの読出しサブシステムは第2のクロックと同期作動し、第2のクロックは第1のクロックと非同期である。本方法は、各書込みサブシステムに対して一つの書込み量を発生するステップであって、各書込み量が各書込みサブシステムによる資源へのいくつかの書込みアクセスを表し、各書込みサブシステムに対する各書込み量は書込みサブシステムの各クロックと同期して発生されるステップと、各読出しサブシステムに対して一つの読出し量を発生するステップであって、各読出し量が各読出しサブシステムによる資源へのいくつかの読出しアクセスを表し、各読出しサブシステムに対する各読出し量は読出しサブシステムの各クロックと同期して発生されるステップと、各書込み量を書込みサブシステムのクロックおよび読出しサブシステムのクロックと同期化させるステップと、各読出し量を書込みサブシステムのクロックおよび読出しサブシステムのクロックと同期化させるステップと、書込み量を加算して総書込み量を発生するステップであって、加算は各書込みサブシステムおよび各読出しサブシステムにより独立して実施されるステップと、読出し量を加算して総読出し量を発生するステップであって、加算は各書込みサブシステムおよび各読出しサブシステムにより独立して実施されるステップと、総書込み量および総読出し量を比較して資源書込み可用性信号を発生するステップであって、資源書込み可用性信号は総書込み量が総読出し量に等しい時にアクティブであり、比較は各書込みサブシステムにより独立して実施されて各資源書込み可用性信号を発生するステップと、総書込み量および総読出し量を比較して資源読出し可用性信号を発生するステップであって、資源読出し可用性信号は総書込み量が総読出し量とは異なる時にアクティブであり、比較は各読出しサブシステムにより独立して実施されて各資源読出し可用性信号を発生するステップと、を含んでいる。
【0028】
本発明に従ったもう一つの方法により、デジタルシステムの資源の状態が決定され、第1のクロックと同期作動している第1のサブシステムが資源へ1次アクセスを行い、第2のクロックと同期作動している第2のサブシステムが資源へ2次アクセスを行い、第2のクロックは第1のクロックに対して非同期的であり、2次のアクセスが生じないうちは資源をさらに1次アクセスに利用することはできず、1次のアクセスが生じないうちは資源をさらに2次アクセスに利用することはできず、1次アクセスは2次アクセスと時間が交番している。本方法は、第1のサブシステムによる資源へのいくつかの1次アクセスを表す第1の量を発生するステップであって、第1の量は第1のクロックと同期して発生されるステップと、第2のサブシステムによる資源へのいくつかの2次アクセスを表す第2の量を発生するステップであって、第2の量は第2のクロックと同期して発生されるステップと、第1の量を第2のクロックと同期化させて第3の量を発生するステップと、第2の量を第1のクロックと同期化させて第4の量を発生するステップと、第1の量を第4の量と比較して第1のサブシステムに対する第1の資源可用性信号を発生するステップであって、第1の資源可用性信号は第1の量が第4の量に等しい時にアクティブであり、第1の資源可用性信号は第1のクロックと同期化して発生されるステップと、第2の量と第3の量とを比較して第2のサブシステムに対する第2の資源可用性信号を発生するステップであって、第2の資源可用性信号は第2の量が第3の量とは異なる時にアクティブであり、第2の資源可用性能信号は第2のクロックと同期化して発生されるステップと、を含んでいる。
【0029】
本発明に従った装置により資源の状態が決定され、書込みサブシステムは資源へ書込み信号を送り、読出しサブシステムは資源へ読出し信号を送り、書込みサブシステムは第1のクロックと同期作動し、読出しサブシステムは第2のクロックと同期作動し、第2のクロックは第1のクロックとは非同期的である。本装置は、第1の論理状態および第2の論理状態を有する第1の更新信号を発生する第1のセマフォア要素であって、第1のセマフォア要素は書込み信号に応答して書込みサブシステムが資源へデータを書込む度に第1のクロックと同期して第1の更新信号の論理状態を変化させる第1のセマフォア要素と、第1の論理状態および第2の論理状態を有する第2の更新信号を発生する第2のセマフォア要素であって、第2のセマフォア要素は読出し信号に応答して読出しサブシステムが資源からデータを読出す度に第2のクロックと同期して第2の更新信号の論理状態を変化させる第2のセマフォア要素と、第1の更新信号を第2のクロックと同期化させて第1の同期化された更新信号を発生する第1の同期化要素と、第2の更新信号を第1のクロックと同期化させて第2の同期化された更新信号を発生する第2の同期化要素と、第1の論理状態および第2の論理状態を有する第1のテスト出力信号を発生する第1のテスト要素であって、第1のテスト要素は第1の更新信号が第2の同期化された更新信号と等しい場合に第1のテスト出力信号を第1の論理状態で発生し、第1の更新信号が第2の同期化された更新信号とは異なる場合に第1のテスト出力信号を第2の論理状態で発生する第1のテスト要素と、第1の論理状態および第2の論理状態を有する第2のテスト出力信号を発生する第2のテスト要素であって、第2のテスト要素は第1の同期化された更新信号が第2の更新信号と等しい場合に第2のテスト出力信号を第1の論理状態で発生し、第1の同期化された更新信号が第2の更新信号とは異なる場合に第2のテスト出力信号を第2の論理状態で発生する第2のテスト要素と、を含んでいる。
【0030】
本発明に従ったもう一つの装置により、デジタルシステムの資源の状態が決定され、第1のクロックと同期作動している第1のサブシステムは資源へデータを書き込み、第2のクロックと同期作動している第2のサブシステムは資源からデータを読み出し、第2のクロックは第1のクロックに対して非同期的であり、予め書き込まれたデータが第2のサブシステムにより資源から読み出されないうちは資源を第1のサブシステムから付加データを書き込むのに利用することができない。本装置は、第1のサブシステムによる資源へのいくつかの書込みアクセスを表す第1の量を発生する手段であって、第1の量は第1のクロックと同期して発生される手段と、第2のサブシステムによる資源へのいくつかの読出しアクセスを表す第2の量を発生する手段であって、第2の量は第2のクロックと同期して発生される手段と、第1の量を第2のクロックと同期化させて第3の量を発生する手段と、第2の量を第1のクロックと同期化させて第4の量を発生する手段と、第1の量を第4の量と比較して第1のサブシステムに対する第1の資源可用性信号を発生する手段であって、第1の資源可用性信号は第1の量が第4の量に等しい時にアクティブであり、第1の資源可用性信号は第1のクロックと同期化して発生される手段と、第2の量と第3の量とを比較して第2のサブシステムに対する第2の資源可用性信号を発生する手段であって、第2の資源可用性信号は第2の量が第3の量とは異なる時にアクティブであり、第2の資源可用性信号は第2のクロックと同期化して発生される手段と、を含んでいる。
【実施例】
【0031】
好ましい実施例の詳細な説明
図1は、全てのサブシステムが単一の共有資源102へアクセスすることができる、コンピュータシステム内の多数のサブシステムを表す単純化したブロック図である。サブシステムは“生産者”および“消費者”を含み、このような各生産者が資源102へデータを書き込むことができ、このような各消費者が資源からデータを読み出すことができる。図1の生産者サブシステムは共有資源102へデータを書き込むことにより消費者サブシステムへ情報を提供することができ、次にそれは消費者により読み出すことができる。共有資源102は一つのデータ要素を保持することができる。
【0032】
図1に示す各生産者および消費者サブシステムは異なるクロックドメイン内で作動する。クロックドメインは同じ周波数および位相で作動する一つの以上のクロックを含むことがお判りであろう。また、ここに記載する各システムは公知の1組の状態へ初期リセットされることもお判りであろう。リセットは全ての図面には図示されていないが、当業者ならば各システムにリセット機構が設けられることがお判りであろう。
【0033】
本発明は共有資源の可用性の決定に向けられている。本発明を使用すれば、全てが同じクロックドメイン、異なるクロックドメイン、もしくはその任意の組合せで作動する任意数の生産者サブシステムや消費者サブシステムが共有資源を利用できるかどうかを決定することができる。
【0034】
図2は一つのデータ要素を保持することができる資源202を共有する2つの生産者サブシステム(“P1”および“P2”)および2つの消費者サブシステム(“C1”および“C2”)を含むデジタルシステムの一部の単純化したブロック図である。各生産者および消費者は関連するカウンタ要素(“P1_Count”,“P2_Count”,“C1_Count”,および“C2_Count”)を有している。各カウンタ要素はゼロで始まる整数値を保持することができ、このような値は1だけ増分させることができる。
【0035】
第1の生産者204はカウンタ206およびテスト論理構成要素208を含んでいる。第1の生産者204は共有資源202へデータを書き込む度にカウンタ206を1だけ増分する。第2の生産者210もカウンタ212およびテスト論理構成要素214を含んでいる。第2の生産者210は共有資源202へデータを書き込む度にカウンタ212を1だけ増分する。
【0036】
第1の消費者216はカウンタ218およびテスト論理構成要素220を含んでいる。第1の消費者216は共有資源202からデータを読み出す度にカウンタ218を1だけ増分する。同様に、第2の消費者222はカウンタ224およびテスト論理構成要素226を含んでいる。第2の消費者222は共有資源202からデータを読み出す度にカウンタ224を1だけ増分する。
【0037】
両方の生産者および両方の消費者が4個のカウンタの全ての値を読み出すことができる。したがって、例えば、第1の生産者204のカウンタ206の値は第1の生産者204により読み出すことができるだけでなく、第1の消費者216および第2の消費者222のみならず第2の生産者210により読み出すことができる。
【0038】
予め書き込まれたデータが読み出される前に共有資源202へデータが書き込まれるのを回避するために、生産者はいつ共有資源へデータの書き込みが許されるかを確認できなければならない。いつ共有資源へデータの書き込みが許されるかを確認するために、生産者は資源の状態をチェックしなければならない。消費者によりまだ検索されていないデータ(すなわち、“フレッシュ”データ)が資源に含まれている場合には、生産者は前の予定した通信を破壊せずに資源内へ新しいデータ配置することはできない。
【0039】
また、消費者は資源の状態をチェックして、資源内部のデータが既に消費者により読み出されている古いデータ(すなわち、“失効”データ)であるか読み出す準備ができている新しいデータであるかを確認しなければならない。消費者は失効データの読み出しを回避し読み出されるいかなるデータもフレッシュであることを保証しなければならない。
【0040】
図2に示す均一なクロック環境では、第1の生産者204はシステム内の全生産者および消費者の全てのカウンタの値を読み出すことにより、共有資源202へデータを書き込むことが安全なのはいつであるか(すなわち、いつ資源が失効データを含んでいるか)を確認することができる。第1の生産者204のテスト論理構成要素208はそれ自体のカウンタ206の値と第2の生産者のカウンタ212の値を加算して共有資源202への書込みの総数を発生する。また、第1の生産者204のテスト論理構成要素208は第1の消費者のカウンタ218の値と第2の生産者のカウンタ224の値を加算して共有資源202からの読出しの総数を発生する。次に、テスト論理構成要素208は読出しの総数を書込みの総数から減じる。ゼロの結果は共有資源202へのデータ書込みが安全であることを第1の生産者204へ示す。ゼロの結果は共有資源へデータを書き込む生産者のあらゆる段階に資源からデータを読み出す消費者の一致する段階が伴うことを示す。同様に、このような減算の結果が非ゼロであれば、第1の生産者204は共有資源202へデータを書き込むのは安全ではないことを認識することができる(すなわち、まだ読み出されていないフレッシュデータが資源内に存在する)。
【0041】
第1の生産者206が共有資源202の状態をテストするのに必要なテスト論理は次式で表すことができる。
P1_Test=(P1_Count+P2_Count)−(C1_
Count+C2_Count)
P1_Test式の結果がゼロであれば、共有資源202内に失効データが存在し第1の生産者204は共有資源202へ安全に新しいデータを書き込むことができる。P1_Test式の結果が非ゼロであれば、共有資源202内にフレッシュデータが存在し第1の生産者204は共有資源202内へ新しいデータを配置できない。
【0042】
同様なテスト論理により、消費者は共有資源がいつ読み出しに利用できるかを認識することができる。第1の消費者216のテスト論理構成要素220は、前記した第1の生産者204のテスト論理構成要素208により実施されるのと同じ計算を独立して実施する。結果が非ゼロであれば、資源202内にフレッシュデータが存在し、第1の消費者216は共有資源202からデータを読み出すことができる。結果がゼロであれば、資源202内に失効データが存在し、第1の消費者216はデータを読み出すことができない。
【0043】
消費者216が共有資源202の状態をテストするのに必要なテスト論理は生産者206に必要なものと同じテスト論理である。
C1_Test=(P1_Count+P2_Count)−(C1_
Count+C2_Count)
C1_Test式の結果が非ゼロであれば、共有資源202内にフレッシュデータが存在し第1の消費者216は共有資源202から安全にデータを読み出すことができる。C1_Test式の結果がゼロであれば、共有資源202内に失効データが存在し、第1の消費者216はデータを読み出すことができない。
【0044】
図2は理論的な目的だけに提供されていることを理解できるであろう。実際上、いかなる整数カウンタも無限のカウンティングを行うことはできない。一般的に、このようなカウンタはその要領を越えて増分するとゼロ値へ“ラップアラウンドする”。図2に関して前記したテスト論理式はカウンタの一つが非常に大きい数から突然ゼロとなる時はいつでも目的を果たすことができない。しかしながら、図2は本発明の基本的な理論を例示するのに有用である、すなわち、各サブシステムにそれ自体の資源アクセスの履歴を強制的に表現させ、次に全てのサブシステムのこのようなアクセス履歴を調べることにより共有資源の状態を決定することができる。
【0045】
図3は2つの生産者サブシステム(“P1”および“P2”)および2つの消費者サブシステム(“C1”および“C2”)を表す単純化したブロック図である。4つのサブシステムの全てが、単一データ要素を保持することができる共有資源302へのアクセスを有している。また、図3に示すシステム内の各生産者および各消費者は異なるクロックドメイン内で作動する。すなわち、図3には各サブシステムに一つずつの4つの異なるクロックドメインが図示されている。
【0046】
図3はカウンタ306およびテスト論理構成要素308を含み第1のクロック(P1_Clk)と同期して作動する第1の生産者304を表している。第1の生産者304は、第1の生産者204が共通資源302へデータを書き込む度にカウンタ306を1だけ増分する。第2の生産者310も同様に、カウンタ312およびテスト論理構成要素314を含み第2のクロック(P2_Clk)と同期して作動する。第2の生産者310は共通資源302へデータを書き込む度にカウンタ312を1だけ増分する。第1の消費者316はカウンタ318およびテスト論理構成要素320を含み、第3のクロック(C1_Clk)と同期して作動する。第1の消費者316は共通資源302からデータを読み出す度にカウンタ318を1だけ増分する。同様に、第2の消費者322はカウンタ324およびテスト論理構成要素326を含み第4のクロック(C2_Clk)と同期して作動する。第2の消費者322は共通資源302からデータを読み出す度にカウンタ324を1だけ増分する。
【0047】
図2で説明したシステムの場合と同様に、テスト論理構成要素により各生産者は共有資源へデータを書き込むことが安全であるかどうかを確認(データが“失効”であるかを検出)することができ、各消費者は共有資源からデータを読み出すことが安全であるかどうかを確認(データが“フレッシュ”であるかどうかを検出)することができる。しかしながら、図3のサブシステムは異なるクロックドメインで作動しており、したがって、生産者や消費者のテスト論理構成要素が他のサブシステムに関連するカウンタの値を使用できないうちに、当業者ならばこのような値をテスト論理構成要素のクロックに同期させなければならないことがお判りであろう。
【0048】
したがって、カウンタ306が第1の生産者304と同じクロックドメインで作動しているため、第1の生産者304はカウンタ306の値への即時同期アクセスを有している。しかしながら、第1の生産者304は第2の生産者310のカウンタ312の値、第1の消費者316のカウンタ318の値、もしくは第2の消費者322のカウンタ324の値への同期アクセスは有していない。第1の生産者304がカウンタ312,318,および324の値を読み出せるようにするには、各カウンタ値を生産者のクロックP1_Clkと同期化させなければならない。
【0049】
図3はカウンタ312,318,および324の値とクロックP1_Clkとの同期化を例示している。したがって、第2の生産者310のカウンタ312の値はP1_Clkによりクロックされる同期化要素への入力である。カウンタ312の同期化された値は、次に第1の生産者304のテスト論理構成要素308へ伝搬される。同様に、第1の消費者316のカウンタ318の値もP1_Clkによりクロックされる同期化要素への入力である。カウンタ318の同期化された値は、次に第1の生産者304のテスト論理構成要素308へ伝搬される。また、第2の消費者322のカウンタ324の値はP1_Clkによりクロックされる同期化要素へ入力される。カウンタ324の同期化された値は、次に第1の生産者304のテスト論理構成要素308へ伝搬される。
【0050】
全てのカウンタ値が生産者もしくは消費者のクロックドメインと同期化されると、その生産者もしくは消費者は共通資源302の状態をチェックすることができる。図2に関して説明したように、第1の生産者304は消費者カウンタ(310,312)の値の和を生産者カウンタ(304,308)の値の和から減じることにより共通資源302の状態をチェックすることができる。第1の生産者304が共通資源302の状態をチェックするのに使用するテスト論理は、次式で表すことができる。
P1_Test=(P1_Count+P2_Count↑P1)−
(C1_Count↑P1+C2_Count↑P1)
P2_Count,C1_Count,およびC2_Countと生産者304のクロックP1_Clkとの同期化は方程式内に演算添字“↑P1”で表示されている。図2に関して前記したように、P1_Test式のゼロ結果は資源302内に失効データがあることを示し、第1の生産者304は次に新しいデータを資源302へ書き込むことができる。一方、非ゼロ値は資源302内にフレッシュデータがあることを示し、生産者304は新しいデータを資源302へ書き込むことができない。
【0051】
第1の消費者316が使用するテスト論理は全く同じであり同じ方程式で表すことができる。例えば、第1の消費者316に対するテスト論理式は次式で表される。
C1_Test=(P1_Count↑C1+P2_Count↑C1)−
(C1_Count+C2_Count↑C1)
P1_Count,P2_Count,およびC2_Countは全て第1の消費者316のクロックC1_C1kと同期化されていることが理解できるであろう。C1_Test式の結果が非ゼロであれば、第1の消費者316は共通資源302から安全にデータを読み出すことができる。C1_Test式の結果がゼロであれば、第1の消費者316は共通資源302からデータを読み出すことができない。
【0052】
図2の場合と同様に、図3は理論的に有用であるにすぎない。実際上、カウンタは無限にカウントすることはできないため、図3のテスト論理は使用すると失敗する。
【0053】
図4は異なるクロックドメインで作動する一つの生産者サブシステム(“P1”)および一つの消費者サブシステム(“C1”)を含むデジタルシステムの一部を表す単純化したブロック図である。生産者および消費者サブシステムは単一データ要素を保持できる資源402を共有する。
【0054】
図4に示すように、生産者サブシステム404はビットレジスタ406およびテスト論理構成要素408を含み第1のクロック(P1_Clk)と同期作動する。消費者サブシステム410はビットレジスタ412およびテスト論理構成要素414を含み第2のクロック(C1_Clk)と同期作動する。各ビットレジスタ(406,412)は0もしくは1の値を表すことができる。
【0055】
生産者404は消費者410のビットレジスタ412の値を読み出すことができ、消費者410は生産者404のビットレジスタ406の値を読み出すことができる。しかしながら、生産者404および消費者410は非同期クロックドメインで作動している。それゆえ、ビットレジスタ412の値は生産者404のクロックP1_Clkと同期化しなければならず、ビットレジスタ406の値は消費者410のクロックC1_Clkと同期化しなければならない。したがって、図4にはP1_Clkによりクロックされる同期化要素へ入力として伝搬されるビットレジスタ412の値が例示されている。次に、ビットレジスタ412の同期化された値は生産者404のテスト論理構成要素408へ伝搬される。また、ビットレジスタ406の値はC1_Clkによりクロックされる同期化要素へ入力として伝搬される。次に、ビットレジスタ406の同期化された値は消費者410のテスト論理構成要素414へ伝搬される。
【0056】
本発明は生産者が共有資源へデータを書き込んだ回数(“書込み”数)を消費者が同じ共有資源からデータを読み出した回数(“読出し”数)と比較することに関連している。本発明の目的ために、共有資源の状態は書込み数が読出し数と同じか違うかを確認してチェックすることができる、すなわち、共有資源の状態をチェックするのに実際の読出しもしくは書込み数を計算する必要がない。
【0057】
したがって、図2および図3に関して前記したテスト論理は単純化することができる。共有資源402は一つのデータ要素しか保持できずかつ共有資源の状態を表すのにゼロもしくは非ゼロ結果しか必要としないため、当業者ならば図2および図3に関して前記したカウンタは2進ビットレジスタで置換できることがお判りであろう。さらに、当業者ならば同じ理由で図2および図3に関して前記した加減算をブール代数演算“排他的OR”で置換できることがお判りであろう。
【0058】
排他的OR演算は従来技術で周知である。排他的OR演算を2つの2進オペランドに適用すると、一方の2進オペランドがハイ状態で他方がロー状態である時にハイ状態出力が得られる。排他的OR演算により、両方の2進オペランドがハイ状態であるかあるいは両方の2進オペランドがロー状態である時にロー状態出力が得られる。
【0059】
排他的OR演算は、いくつかの書込みをいくつかの読出しに対して比較して(このような各書込みもしくは読出しはその各2進ビットレジスタの値を変える生産者や消費者により表示される)書込み数が読出し数に一致するかどうかを確認するのに理想的に適していることが容易にお判りであろう。本発明は厳密に強化された書込み−読出し−書込み−読出しアクセス方式に向けられており、書込みを介在しない2つ以上の読出しだけでなく読出しを介在しない2つ以上の書込みを絶対的に禁止する。このようなアクセス方式を利用しているシステムの状況において、2進オペランドとしての各ビットレジスタへ排他的OR演算を適用すると、書込み数が読出し数に一致する時に0が生じ一致しない時に1が生じる。
【0060】
したがって、生産者404および消費者410は図2および図3で説明した整数カウンタの替わりに2進ビットレジスタ(406,412)を含んでいる。生産者404はそれ自体のビットレジスタ406の値と消費者410のビットレジスタ412の値を排他的ORすることにより、共有資源402内に失効データが存在するかどうかを確認することができる。このような排他的OR演算は生産者404のテスト論理構成要素408において実施される。両方のビットレジスタ(406,412)の値を排他的ORすることにより得られる結果がゼロであれば、失効データが存在し、生産者404は共有資源402へデータを書き込むことができる。しかしながら、結果が1であればフレッシュデータが共有資源402を占有し、生産者404は共有資源402へ新しいデータを書き込むことができない。
【0061】
必要なテスト論理を例示するために、生産者404は次式に従って共有資源402の状態を確認することができる。


排他的OR演算は前式に


オペラレータで表示されている。P1_Test式の結果がゼロであれば、共有資源402内の任意のデータが既に消費者410により読み出されており(データは失効)、生産者404は共有資源404へ新しいデータを書き込むことができる。しかしながら、P1_Test式の結果が1であれば、共有資源402内にフレッシュデータが存在し生産者404は共有資源402へ新しいデータを書き込むことができない。
【0062】
同じテスト論理が消費者410により使用される。例えば、消費者410は次式に従って共有資源402の状態を確認することができる。


C1_Test式の結果が1であれば、共有資源402内にフレッシュデータが存在し消費者410は即座にデータを読み出すことができる。他方、C1_Test式の結果がゼロであれば、共有資源402内のデータは失効しており消費者410はデータを読み出すことができない。
【0063】
図5は一つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立してテストできるようにする論理を表す論理図である。図5には共有資源は図示されていない。また、生産者および消費者サブシステムの全体は図示されておらず、図5には図4に関して一般的に説明したビットレジスタおよびテスト論理構成要素を簡易化する構成要素しか図示されていない。ビットレジスタ機能により生産者は共有資源へデータを書き込んでいることを示すことができ、消費者は共有資源からデータを読み出していることを示すことができる。テスト論理構成要素により消費者や生産者は共有資源の状態をテストすることができる。
【0064】
図5aに示すように、第1のDフリップフロップ502はD入力504,Q出力506,およびリセット(R)入力508を有している。Q出力506は線510により排他的ORゲート512の第1の入力に接続されている。排他的ORゲート512は線514によりD入力504に接続される出力を有する。排他的ORゲート512の第2の入力は線516により生産者サブシステム404(図4)から発生されるP1_Add信号に接続されている。Q出力506は線510により第2の排他的ORゲート520の第1の入力に接続されている。排他的ORゲート520の第2の入力は線522により同期化要素524の出力に接続されている。排他的ORゲート520の出力は線526により生産者404へP1_Test入力として接続されている。同期化要素524は線528により第1のクロック(P1_Clk)に接続されている。クロックP1_Clkは線528によりDフリップフロップ502のクロック入力530にも接続されている。同期化要素524への入力は線532により第2のDフリップフロップ536のQ出力534に接続されている。Dフリップフロップ536はリセット(R)入力537およびD入力538を有している。Dフリップフロップ536のD入力538は線540により第3の排他的ORゲート542の出力に接続されている。Dフリップフロップ536のQ出力534は線532により排他的ORゲート542に入力として接続されている。排他的ORゲート542の第2の入力は線546により消費者サブシステム406(図4)からのC1_Sub信号を受信するように接続されている。Dフリップフロップ536のQ出力534は線532により第4の排他的ORゲート550に第1の入力として接続されている。排他的ORゲート550の出力は線552により消費者サブシステム406にC1_Test信号として接続されている。排他的ORゲート550への第2の入力は線554により同期化要素556の出力に接続されている。同期化要素556は線558により第2のクロック(C1_Clk)に接続されている。クロックC1_Clkは線558によりDフリップフロップ536のクロック入力559にも接続されている。同期化要素556への入力は線510によりDフリップフロップ502のQ出力506に接続されている。リセット(R)入力508,537はシステムリセット線(図示せず)に接続されている。
【0065】
Dフリップフロップの動作は従来技術で周知であり、ここで詳細な説明は行わない。本質的に、Dフリップフロップには一つの2進入力信号と一つの2進出力信号しかない。Dフリップフロップの動作は入力クロック信号と同期化される。Dフリップフロップの2進出力信号は、クロックパルスの指定された遷移が生じると2進入力信号の状態(ハイもしくはロー)をとる。
【0066】
図4に関して前記したように、生産者は関連するビットレジスタの値を変えることにより共有資源へのデータ書き込みを表示することができる。同様に、消費者は関連するビットレジスタの値を変えることにより共有資源からの読み出しを表示することができる。このようなビットレジスタは連続的にハイもしくはロー状態を表示し、ある信号が検出される度にその表示状態を交番させる(すなわち、ローからハイへあるいはハイからローへ)。このような一つのビットレジスタを図5に示し、それはORゲート512およびDフリップフロップ502を含んでいる。
【0067】
Dフリップフロップ502のQ出力506の論理状態は、生産者から発生される線516上の信号と同様に最初はローであり、したがって、排他的ORゲート512の出力の論理状態は最初はローである。生産者は共有資源へ新しいデータを書き込むと、線516により伝搬されるハイパルス(P1_Add)信号を発生することにより書込み動作を開始する。排他的ORゲート512の出力はP1_Add信号の持続時間中にハイ論理状態をとり、ハイ論理状態は線514によりDフリップフロップ502のD入力504へ伝搬される。生産者のサブシステムクロックP1_Clkにより発生される次の正のエッジ遷移が到来すると、Dフリップフロップ502のQ出力506はハイ論理状態をとる。当業者ならば、Dフリップフロップ502のD入力504に有効信号を発生するのに十分な設定および保持時間が与えられるならば、P1_Add信号の持続時間は生産者クロックP1_Clkのほぼ1周期となることがお判りであろう。
【0068】
Dフリップフロップ502のQ出力506の論理状態は線510により排他的ORゲート512へ入力として伝搬される。Q出力信号506が排他的ORゲート512に到来する時にP1_Add信号がまだハイであれば、排他的ORゲート512の出力は一時的にロー論理状態となる。しかしながら、P1_Clkにより生じる次の正のエッジ遷移が到来する時間までには、P1_Add信号はロー状態へ低下しており、したがって排他的ORゲート512の出力はハイ論理状態となることが理解できるであろう。したがって、ハイ論理状態が線514によりD入力504へ与えられるため、Dフリップフロップ502のQ出力506はハイのままとされる。
【0069】
生産者サブシステムが次に共有資源へデータを書き込むと、生産者はもう一つのアクティブなP1_Add信号を排他的ORゲート512への入力として線516上に発生する。しかしながら、線510はまだ排他的ORゲート512への第2の入力を表すハイ論理状態を有している。したがって、その入力の両方がハイであるため、排他的ORゲート512の出力はロー論理状態となる。その結果、線514はDフリップフロップ502のD入力504へロー論理状態を与える。生産者サブシステムのクロックP1_Clkにより発生される次の正の遷移が到来すると、Q出力506はD入力504のロー論理状態をとることが理解できるであろう。前記したように、線510はQ出力506のロー論理状態を排他的ORゲート512への入力として伝搬する。P1_Add信号がローとなる時すなわち次のクロックサイクルの前に、排他的ORゲート512への両方の入力がロー論理状態を表示し、排他的ORゲート512の出力はロー論理状態とされる。したがって、線514はDフリップフロップ502のD入力504へロー論理状態を与える。生産者のクロックにより発生される次の正の遷移が到来すると、Dフリップフロップ502のQ出力506はD入力504の論理状態をとり、したがって、ローのままとされる。
【0070】
前記したように、排他的ORゲート512およびDフリップフロップ502は、生産者がアクティブなP1_Add信号を線516上に発生する度に論理状態をハイからローもしくはローからハイへ交番させる(すなわち、トグル)、ビットレジスタ(すなわち、シングルビットレジスタ)として一緒に作動する。ビットレジスタはこのようなパルス間で線510上に連続論理状態(P1_Bitreg)を維持する。
【0071】
消費者サブシステムのビットレジスタは前記したのと同様な論理を含んでいる。消費者サブシステムが共有資源からデータを読み出す度に、消費者はC1_Sub信号線546上にアクティブなハイパルスを発生する。C1_Sub信号は線546により排他的ORゲート542へ入力として伝搬される。Dフリップフロップ536のQ出力534は線532により排他的ORゲート542へ第2の入力として伝搬されるため、アクティブなC1_Sub信号により排他的ORゲート542はQ出力534の論理状態とは反対の論理状態を出力することがお判りであろう。反対の論理状態は線540によりD入力538へ与えられる。次に、消費者のクロックC1_Clkにより次のクロック遷移が発生すると、Q出力534はD入力538の論理状態をとる。したがって、排他的ORゲート542およびDフリップフロップ536は、消費者サブシステムがアクティブなハイC1_Sub信号を線546上に発生する度にその論理状態を交番する(すなわち、トグルする)ビットレジスタ(すなわち、シングルビットレジスタ)を含んでいる。消費者のビットレジスタの論理状態(C1_Bitreg)はC1_Test信号として線532上に維持される。
【0072】
図4に関して一般的に検討したように、生産者は消費者のビットレジスタの値をそれ自体のビットレジスタの値と比較することにより共有資源の可用性をテストすることができる。前記したように、このような比較は好ましくは排他的OR演算により実施される。同じテスト論理により消費者は共有資源の可用性を確認することができる。
【0073】
したがって、生産者404はそのビットレジスタの値を消費者の406ビットレジスタの値と排他的ORすることにより、共有資源の可用性をテストすることができる。生産者のビットレジスタの値は線510上のP1 Bitreg信号の論理状態により表示される。線510上のP1_Bitreg信号は排他的ORゲート520へ入力される。P1_Bitreg信号は生産者のクロックP1_Clkと同期しているため、P1_Add信号を発生する生産者により生じるP1_Bitreg信号の任意の変化が生産者のクロックの1クロックサイクル中に排他的ORゲート520へ伝搬され、生産者のクロックにより発生される次のクロックサイクルが始まる前に安定であることが理解できるであろう。
【0074】
しかしながら、論理状態C1_Bitregで表される消費者のビットレジスタの値は生産者のクロックとは非同期的であり、したがって、同期化しなければならない。そのため、C1_Bitreg信号は線532を介してP1_Clkによりクロックされる同期化要素524へ入力として伝搬される。
【0075】
図5bは同期化要素を表す論理図である。第1のDフリップフロップ580はD入力582、Q出力584、およびクロック入力585を有する。入力信号(Input)が線586によりD入力582に接続される。Q出力584は線588によりD入力592、Q出力594、およびクロック入力595を有する第2のDフリップフロップ590に接続されている。Q出力594は出力信号(Output)で表され線596により伝搬される。ターゲットクロック(Target_Clk)が線598により第1のDフリップフロップ580のクロック入力585に接続される。線598はターゲットクロックを第2のDフリップフロップ590のクロック入力595にも接続する。
【0076】
Input信号は線586によりD入力582へ伝搬される。Target_Clkにより次の正の遷移が発生されると、Dフリップフロップ5890によりQ出力584はInputの論理状態をとるようになる。Q出力584は線588によりDフリップフロップ590のD入力592へ伝搬される。Target_Clkにより次の正の遷移が発生されると、Q出力594は線588により運ばれる論理状態をとる。線596はQ出力594をOutput信号として伝搬し、それはTarget_Clkに同期化されたInput信号の論理状態である。図5bに示す同期化要素は第1のクロックと同期して発生される信号を受け入れて第1のクロックとは非同期的である第2のクロックと同期化させる論理の一例にすぎない。
【0077】
図5aに関して、生産者のクロックP1_Clkによりクロックされる同期化要素524はC1_Bitreg信号を生産者のクロックと同期化させる。同期化されたC1_Bitreg信号は線522により排他的ORゲート520の入力へ伝搬される。線526上の排他的ORゲート520の出力はテスト信号P1_Testを含んでいる。P1_Bitregの論理状態がC1_Bitregの論理状態と同じであれば(すなわち、共有資源への書込み数が共有資源からの読出し数に等しい)、P1_Testの論理状態はローとなる。したがって、P1_Testがローになると、共有資源402(図4)は生産者404が新しいデータを書き込むのに利用できるようになる。一方、P1_Testがハイになると(すなわち、共有資源への書込み数が共有資源からの読出し数に等しくない)、共有資源は生産者が書き込むのに利用することができない。
【0078】
本発明の重要な利点は生産者のビットレジスタの値P1_Bitregの値が発生されて生産者のクロックP1_Clkと同期して利用できる事実により生じる。そのため、線516上にP1_Add信号を発生して共有資源にデータを書き込んだことを表示した後で、生産者は共有資源をもはや利用できないことをテスト信号P1_Testにより即座に通知される。本発明により、生産者は共有資源へ早まった書込み動作を開始しないことが保証され、遅延を導入することが有利に回避されることがお判りであろう。この保証は、共有資源への書込み動作を開始したことを示す第1の同期化パルス(P1_Add)を生産者が送った後で、P1_Bitreg信号がP1_Test信号を即座に更新して、すぐ次のクロックサイクルにより共有資源を利用できないことを示す事実に基づいている。
【0079】
図5aに示されているのと同様な論理により、消費者は共有資源の状態をテストすることができる。消費者のビットレジスタの値C1_Bitregは消費者が線532を介して同期的に入手することができる。線532はC1_Bitreg論理状態を排他的ORゲート550へ入力として運ぶ。生産者のビットレジスタの値P1_Bitregは消費者のクロックとは非同期的であるため、同期化要素556へ入力される。同期化要素556はP1_Bitregを消費者のクロックC1_Clkと同期化させ、P1_Bitregの同期化された値は線554により排他的ORゲート550の第2の入力へ伝搬される。線552上の排他的ORゲート550の出力はテスト信号C1_Testである。C1_Testがハイであれば(すなわち、共有資源402への書込み数が共有資源402への読出し数とは異なる)、消費者は共有資源402から読み出すことができる。一方、C1_Testがローであれば(すなわち、共有資源402への書込み数が共有資源からの読出し数に等しい)、消費者は共有資源402から読み出すことができない。
【0080】
前記した利点は消費者サブシステムにも応用される。C1_Sub信号を発生して読出し動作を開始したことを表示すると、消費者は共有資源402がもはや読出しに利用できないことを即座に通知される(1クロックサイクル内で)。したがって、消費者は共有資源402を早まって読み出すことを防止され、やはり遅延は必要ではない。
【0081】
リセット(R)入力508,537に接続されたリセット信号(図示せず)により生産者のビットレジスタP1_Bitregおよび消費者のビットレジスタC1_Bitregの両方の値をロー論理状態にセットすることができる。このようなリセット能力は、例えば、生産者サブシステムおよび消費者サブシステムを含むシステムが停止して再始動する時に有用である。生産者および消費者サブシステムの状況において、このようなリセットにより書込みに利用できる共有資源の初期条件が回復されることが理解できるであろう。
【0082】
図6は第1のクロック(P1_Clk)と同期作動する第1の生産者サブシステム602、第2のクロック(P2C1_Clk)と同期作動する第2の生産者サブシステム604、および第2のクロックP2C1_Clkと同期作動する消費者サブシステム606を含むデジタルシステムの一部を表す単純化したブロック図である。P1_ClkはP2C1_Clkとは非同期的である。
【0083】
第1の生産者602はテスト論理構成要素610およびビットレジスタ612を含んでいる。第2の生産者604はテスト論理構成要素614およびビットレジスタ616を含んでいる。消費者606はテスト論理構成要素618およびビットレジスタ620を含んでいる。
【0084】
3つのサブシステム602,604,606は資源608を共有する。テスト論理構成要素610,614,618により各サブシステム602,604,606は共有資源608の状態を独立して決定することができる。各ビットレジスタ612,616,620は0もしくは1の値を示すことができる。各サブシステム602,604,606は各ビットレジスタ612,616,620の値を読み出すことができる。
【0085】
第1の生産者602のビットレジスタ612の値はP2C1_Clkとは非同期的であり、したがって第2の生産者604および消費者606がビットレジスタ612の値を使用して比較を実施できる前にP2C1_Clkと同期化させなければならない。したがって、図6にはP2C1_Clkによりクロックされる同期化要素内へ伝搬された後で究極的に第2の生産者604および消費者606のテスト論理構成要素614,618内へ、それぞれ、伝搬されるビットレジスタ612の値が示されている。
【0086】
同様に、第2の生産者604のビットレジスタ616の値および消費者606のビットレジスタ620の値はP1_Clkとは非同期的であるため、第1の生産者602がそれらの値を比較に使用できる前にP1_Clkと同期化させなければならない。したがって、図6にはP1_Clkによりクロックされる同期化要素内へ伝搬された後で最終的に第1の生産者602のテスト論理構成要素610内へ伝搬されるビットレジスタ616,620の値が示されている。
【0087】
第1の生産者602は第2の生産者604のビットレジスタ616の値、消費者606のビットレジスタ620の値、およびそれ自体のビットレジスタ612の値を排他的ORすることにより、共有資源608内に失効データが存在するかどうかを確認することができる。このような排他的OR演算は第1の生産者602のテスト論理構成要素610内で実施される。このような排他的OR演算により得られる結果がゼロであれば、共有資源608内に失効データが存在し第1の生産者602は共有資源608内へデータを書き込むことができる。一方、このような排他的OR演算の結果が1であれば、フレッシュデータが共有資源608を占有し、第1の生産者602は共有資源608へ新しいデータを書き込めないことがある。
【0088】
同様に、第2の生産者604は3つのビットレジスタ616,620,612の値を排他的ORすることにより共有資源608を書き込みに利用できるかどうかを確認することができる。ここでも、ゼロの結果は生産者604が共有資源608へ書き込めることを示し、1の結果は生産者604が共有資源608へ書き込めないことがあることを示している。
【0089】
共有資源608の可用性は消費者606によりほとんど同じ方法で確認される。消費者606のテスト論理構成要素618は3つのビットレジスタ616,620,612の値を排他的ORする。排他的ORの結果が1であれば、共有資源608内にフレッシュデータが存在し、消費者606は共有資源から読み出すことができる。一方、排他的ORの結果がゼロであれば、共有資源608内に失効データが存在し、消費者606は共有資源608から読み出すことができない。
【0090】
含まれるテスト論理を示すために、第1の生産者602は次式に従って共有資源608の状態を確認することができる。

【0091】
P1_Test式の結果がゼロであれば、共有資源608内の任意のデータが既に消費者606により読み出されており、第1の生産者602は共有資源608へ新しいデータを書き込むことができる。しかしながら、P1_Test式の結果が1であれば、共有資源608内にフレッシュデータが存在し第1の生産者602は共有資源608へ新しいデータを書き込めないことがある。
【0092】
同様なテスト論理が消費者606により使用される。消費者606は次式に従って共有資源608の状態を確認することができる。

【0093】
C1_Testの結果が1であれば、共有資源608内にフレッシュデータが存在し、消費者606は即座にデータを読み出すことができる。しかしながら、C1_Testの結果がゼロであれば、共有資源608内のデータは失効データであり消費者606はデータを読み出せないことがある。
【0094】
図7aは2つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立してテストできるようにする論理を表す論理図である。図7aには共有資源は図示されていない。さらに、2つの生産者サブシステムおよび一つの消費者サブシステムの全体は図示されていない。図7aには図6に関して一般的に説明したビットレジスタおよびテスト論理構成要素を簡易化する構成要素しか例示されていない。
【0095】
図7aにはD入力704、Q出力706、およびリセット(R)入力708を有する第1のDフリップフロップ702が図示されている。Q出力706は線710により排他的ORゲート712の第1の入力に接続されている。排他的ORゲート712は線714によりD入力704に接続された出力を有している。排他的ORゲート712の第2の入力は線716により生産者サブシステム602(図6)から発生するP1_Addに接続される。Q出力706は線710により第2の排他的ORゲート720の第1の入力に接続される。排他的ORゲート720の第2の入力は線722により排他的ORゲート724の出力に接続される。排他的ORゲート720の出力は線726により生産者サブシステム602にP1_Test入力として接続される。Dフリップフロップ702は線728により第1のクロック(P1_Clk)に接続されるクロック入力719を有している。クロックP1_Clkは線728により同期化要素730およびもう一つの同期化要素732にも接続される。同期化要素730の出力は線734により排他的ORゲート724に一入力として接続される。同期化要素732の出力は線736により排他的ORゲート724に第2の入力として接続される。
【0096】
同期化要素730の入力は線738によりDフリップフロップ742のQ出力740に接続される。Dフリップフロップ742はD入力744およびリセット(R)入力746を有している。Dフリップフロップ742は線749により第2のクロック(P2C1_Clk)に接続されるクロック入力745を有している。D入力744は線748により排他的ORゲート750の出力に接続される。Dフリップフロップ742のQ出力740は線738により排他的ORゲート750に一入力として接続される。排他的ORゲートへの第2の入力は線752により消費者606(図6)から発生されるC1_Sub信号に接続される。Dフリップフロップ742のQ出力740は線738により排他的ORゲート754に入力として接続される。排他的ORゲート754の出力は線756により消費者606に接続される。排他的ORゲート754の第2の入力は線758により排他的ORゲート760の出力に接続される。排他的ORゲート760の入力は線762によりDフリップフロップ766のQ出力764に接続される。Dフリップフロップ766はD入力768およびリセット(R)入力771を有している。同期化要素732への入力は線762によりQ入力764に接続される。D入力768は線770により排他的ORゲート772の出力に接続される。Q入力764は線762により排他的ORゲート772に入力として接続される。排他的ORゲート772のもう一つの入力は線774により第2の生産者604(図6)から発生されるP2_Add信号に接続される。
【0097】
Dフリップフロップ766は線776により第2のクロックP2C1_Clkに接続されるクロック入力775を有している。同期化要素778も線776により第2のクロックP2C1_Clkに接続される。同期化要素778への入力は線710によりDフリップフロップ702のQ出力706に接続される。同期化要素778の出力は線780により排他的ORゲート760の入力に接続される。同期化要素778の出力は線780によりもう一つの排他的ORゲート782にも接続される。Dフリップフロップ742のQ出力740は線738により排他的ORゲート782に第2の入力として接続される。排他的ORゲート782の出力は線784により排他的ORゲート786の入力に接続される。Dフリップフロップ766のQ出力764は線762により排他的ORゲート786の第2の入力に接続される。排他的ORゲート786の出力は線788により生産者604にP2_Test入力として接続される。
【0098】
排他的ORゲート712およびDフリップフロップ702は、図5に関連して検討したように、一緒に接続されてビットレジスタとして機能する。したがって、生産者602が線716上にハイパルス(P1_Add)信号を発生すると、Dフリップフロップ702のQ出力706は論理状態がハイからローあるいはローからハイへ変化する(トグルする)。Q出力706は生産者602から発生されるP1_Add信号により変えられるまで、その論理状態を連続的に維持する。
消費者606の同様なビットレジスタは排他的ORゲート750およびDフリップフロップ742を含んでいる。したがって、Dフリップフロップ742のQ出力740は安定な論理状態を表し、消費者606が線752上にハイパルス(C1_Sub)を発生する度にその論理状態をトグルする。
【0099】
図7aは生産者604のこのような第3のビットレジスタを示す。第3のビットレジスタは排他的ORゲート772およびDフリップフロップ766を含んでいる。DフリップフロップのQ出力764の論理状態は生産者604が線774上にハイパルス(P2_Add)信号を発生する度にトグルし、Dフリップフロップ766のQ出力764はトグル間の安定な論理状態を表す。
【0100】
線710,738,762はそれぞれQ出力706,740,764の論理状態に対応する信号を伝搬する。したがって、線710,738,762上を伝搬する信号は生産者602、消費者606、および生産者604のそれぞれのビットレジスタの値を表す。図5aに関して検討したように、各生産者および消費者により実施されるビットレジスタの値の独立した比較により、各生産者および消費者が共有資源の可用性を確認することができる。やはり図5aに関して検討したように、ビットレジスタ値のこのような比較はビットレジスタ値の排他的ORにより行うことができる。
【0101】
したがって、生産者602は線710により伝搬される信号(すなわち、それ自体のビットレジスタの値)、線738により伝搬される信号(すなわち、消費者606のビットレジスタの値)、および線762により伝搬される信号(すなわち、生産者604のビットレジスタの値)を排他的ORすることにより共有資源608の状態をテストすることができる。線710により伝搬される生産者のビットレジスタの値は生産者602のクロックP1_Clkと同期していることが理解できるであろう。したがって、生産者602のビットレジスタの値は生産者602にとって同期的に利用することができる。しかしながら、線738および762により伝搬される信号(すなわち、消費者606と生産者604のビットレジスタのそれぞれの値)はP1_Clkとは非同期的である。したがって、線738,762により伝搬される信号は生産者602により排他的ORされる前にP1_Clkと同期化させなければならない。
【0102】
図7aに示すように、線738,762により伝搬される信号はそれぞれの同期化要素730,732へ入力される。線734,736はそれぞれP1_Clkと同期化された線738,762の論理状態を伝搬する。線734,736により伝搬される同期化された論理状態は排他的ORゲート724により排他的ORされる(すなわち、生産者604と消費者606のビットレジスタ値は生産者602のクロックドメインへ運ばれて比較される)。
【0103】
排他的ORゲート724の出力は線722により排他的ORゲート720へ入力として伝搬される。線710により伝搬される信号m排他的ORゲート720へ入力される。したがって、排他的ORゲート720は生産者602のビットレジスタの値を生産者604と消費者606のビットレジスタ値の比較結果と比較する。
【0104】
排他的ORゲート720の出力は線726によりP1_Test信号として伝搬される。P1_Test信号により表される論理状態により共有資源608が生産者602に利用できるかどうかが確認される。P1_Test信号がローであれば(すなわち、共有資源608への書込み数が共有資源608からの読出し数に等しい)、生産者602は共有資源608へデータを書き込むことができる。
【0105】
しかしながら、P1_Test信号がハイであれば(すなわち、共有資源608への書込み数が共有資源608からの読出し数とは異なる)、生産者602は共有資源608へデータを書き込むことができない。
【0106】
図5aに関連して検討したように、P1_Add信号とP1_Test信号との間のタイミング関係が本発明の実質的な利点である。生産者602により発生されるP1_Add信号によりP1_Test信号の論理状態はP1_Clkの1クロックサイクル中に更新される。P1_Test信号の即時の更新により、それ自体の最も最近の書込み動作により生じる共有資源608の非可用性を生産者602が検出するのに使用することができない時間の任意のウィンドが解消される。したがって、前記したように生産者602が共有資源608を早まってアクセスするのを防止するための遅延を導入する必要がない。
【0107】
生産者604および消費者606は線710,738,762により伝搬される信号の独立した比較も実施する。生産者604および消費者606は同じクロックP2C1_Clkと同期して作動する。線738,762により伝搬される信号はP2C1_Clkと同期しており、したがって生産者604および消費者606により比較される前に同期化させる必要がない。しかしながら、線710により伝搬される信号(すなわち、生産者602のビットレジスタの値)はP2C1_Clkとは非同期的であり、同期化させる必要がある。したがって、線710により伝搬される信号は同期化要素778へ入力される。
【0108】
P2C1_Clkに同期化された線710により伝搬される論理状態を表す同期化要素778の出力は、線780により排他的ORゲート760へ入力として伝搬される。生産者604のビットレジスタ値は線762により排他的ORゲート760へもう一つの入力として伝搬される。したがって、排他的ORゲート760は生産者602と生産者604のビットレジスタ値を比較する。排他的ORゲート760の出力は排他的ORゲート754へ入力される。消費者606のビットレジスタの値は線738により排他的ORゲート754へもう一つの入力として伝搬される。排他的ORゲート754の出力は線756により伝搬されるC1_Test信号である。
【0109】
C1_Test信号により表される論理状態により共有資源608の消費者606に対する可用性が決定される。C1_Test信号がハイであれば(すなわち、共有資源608への書込み数が共有資源608からの読出し数とは異なる)、消費者606は共有資源608から読み出すことができる。C1_Test信号ローであれば、消費者606は共有資源608から読み出すことができない。
【0110】
前記したP1_Add信号とP1_Test信号との間の関係は、C1_Sub信号とC1_Test信号との間にも存在する。各C1_Sub信号によりC1_Test信号は消費者606のクロックP2C1_Clkの1サイクル中に更新されるため、消費者606は共有資源608から早まって読み出すことがない。
【0111】
P2C1_Clkに同期された生産者604のビットレジスタの値を表す同期化要素778の出力も線780により排他的ORゲート782へ入力として伝搬される。消費者606のビットレジスタの値は線738により排他的ORゲート782へもう一つの入力として伝搬される。したがって、排他的ORゲート782は生産者602および消費者606のビットレジスタ値を比較する。排他的ORゲート782の出力は線784により排他的ORゲート786へ入力として伝搬される。生産者のビットレジスタの値は線762により排他的ORゲート786へもう一つの入力として伝搬される。排他的ORゲート786の出力は線788により伝搬されるP2_Test信号である。
【0112】
P2_Test信号により表される論理状態により共有資源608が生産者604に利用できるかどうかが決定される。P2_Test信号がローであれば、生産者604は共有資源608へ書き込むことができる。しかしながら、P2_Test信号がハイであれば、生産者604は共有資源へ書き込むことができない。前記したP1_Add信号とP1_Test信号との間の有利な関係は、P2_Add信号とP2_Test信号との間にも存在する。すなわち、P2_Test信号は各P2_Add信号の1クロックサイクル内に更新されるため、生産者604は共有資源608へ早まって書き込むことがない。
【0113】
図5aに関して検討したように、リセット(R)入力708,746,771に接続されたリセット線により伝搬されるアクティブなハイパルス(図7aには図示せず)により生産者602、生産者604、および消費者606は共有資源608を書き込みに利用できる初期条件にセットされる。
【0114】
図7bは、図7aと同様に、2つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立にテストすることができる論理を表す論理図である。図7bの論理図は第2の生産者および消費者により共有される共通クロックを利用してシステムに必要な論理を低減する。図7bには共有資源が図示されていない。2つの生産者サブシステムおよび一つの消費者サブシステムの全体は図示されていない。図7bには2つの生産者サブシステムおよび一つの消費者サブシステムのビットレジスタおよびテスト論理構成要素を含む構成要素しか図示されていない。
【0115】
図7bに番号702から720で示す構成要素は図7aに同じ番号で示した構成要素と同じであるため、これらの構成要素の説明は繰り返さない。
線722により同期化要素724の出力が排他的ORゲート720の入力に接続される。排他的ORゲート720の出力は線726により生産者602(図6)へ入力として伝搬されるp1_Test信号である。線728により第1のクロック(P1_Clk)がDフリップフロップ702のクロック入力719に接続される。線728は、またP1_Clkを同期化要素724に接続する。線730によりDフリップフロップ734のQ出力732が同期化要素724の入力に接続される。Dフリップフロップ734はD入力736、リセット(R)入力738、およびクロック入力739を有している。線730により出力730は排他的ORゲート740に入力として接続される。線742により排他的ORゲート740の第2の入力が排他的ORゲート744の出力に接続される。排他的ORゲート744の第1の入力は、消費者606(図6)により発生され線746により伝搬されるC1_Sub信号である。排他的ORゲート744の第2の入力は消費者606(図6)により発生され線748により伝搬されるP2_Add信号である。排他的ORゲート740の出力は線750によりDフリップフロップ734のD入力736へ伝搬される。
【0116】
第2のクロック(P2C1_Clk)は線752によりDフリップフロップ734のクロック入力739に接続される。また、線752によりP2C1_Clkが同期化要素754に接続される。同期化要素754の入力は線710によりDフリップフロップ702のQ出力706に接続される。同期化要素754の出力は線756により排他的ORゲート758の入力に接続される。排他的ORゲートの第2の入力は線730によりDフリップフロップ734のQ出力732に接続される。排他的ORゲート758の出力は線760により伝搬されるP2C1_Test信号である。
【0117】
生産者602により使用される図7bの第1のビットレジスタは排他的ORゲート712およびDフリップフロップ702を含んでいる。しかしながら、排他的ORゲート712およびDフリップフロップ702は図7aで説明した同じ番号の構成要素と同様に機能するため、それらの説明は繰り返さない。また、図7bのP1_Add信号とP1_Test信号との間の関係は図7aに関して説明した同じ信号間の関係と同じであるため、それらの動作説明も繰り返さない。
【0118】
生産者604および消費者606は同じクロックP2C1_Clkと同期して作動するため、共有資源608の状態をテストするのに必要な論理を単純化できるように、各ビットレジスタ機能を含む論理を単純化することができる。したがって、図7bの第2のビットレジスタは生産者604および消費者606により共有される。第2のビットレジスタは排他的ORゲート740およびDフリップフロップ734を含んでいる。前記したように、Dフリップフロップ734のQ出力732は線730により排他的ORゲート740の入力へ伝搬され、かつ排他的ORゲート740の出力は線750によりDフリップフロップ734のD入力736へ伝搬されるため、排他的ORゲート740およびDフリップフロップ734はビットレジスタとして機能する。すなわち、線742により排他的ORゲート740へ第2の入力として伝搬されるハイパルス信号により、Dフリップフロップ734はQ出力732の論理状態をトグルしてこのようなもう一つのハイパルス信号が線742により伝搬されるまで、線730によりこのような論理状態を伝搬する。
【0119】
P2_Add信号およびC1_Sub信号はそれぞれ線748,746により排他的ORゲート744へ入力として伝搬される。線742により伝搬される排他的ORゲート744の出力は生産者604により発生されるP2_Add信号もしくは消費者により発生されるC1_Sub信号を表すことが理解できるであろう。P2_Add信号もしくはC1_Sub信号が発生されると、排他的ORゲート744はこのような信号を出力する。しかしながら、P2_Add信号およびC1_Sub信号が同時に発生されると(すなわち、同じクロックサイクル内に排他的ORゲート744に到来する)、排他的ORゲート744により出力される論理状態は変化しない。生産者604および消費者606は同じクロックドメイン内で作動しており、かつ第2のビットレジスタは任意特定の時間に生産者604もしくは消費者606だけを更新することはできるが両者を更新できることはないため、生産者604および消費者606は前記したようにビットレジスタを共有することができる。
【0120】
生産者604および消費者606は書込みもしくは読出しに対する共有資源608の可用性を決定するP2C1_Test信号も共有する。線760により伝搬されるP2C1_Test信号は第1のビットレジスタの論理状態と第2のビットレジスタの論理状態の比較により得られる論理状態を表す。第1のビットレジスタの論理状態は第1の生産者602により開始される共有資源608へのいくつかの書込みを表す。第2のビットレジスタの論理状態は消費者606により開始される共有資源からのいくつかの読出しを減じた第2の生産者604により開始される共有資源608へのいくつかの書込みを表す。第2のビットレジスタは生産者604が共有資源608への書込みを開始する度に生産者604により更新され、かつ消費者606が共有資源608から読出しを開始する度に消費者606により更新されるため、生産者604の書込み動作を消費者606の読出し動作と連続的に比較する必要がなくなる。
【0121】
線730により排他的ORゲート758の入力へ伝搬される信号は生産者604および消費者606により共有される第2のビットレジスタの論理状態を表す。線756により排他的ORゲート758の入力へ伝搬される信号はクロックP2C1_Clkと同期化される第1のビットレジスタの論理状態を表す。排他的ORゲート758の出力は線760により第2の生産者604および消費者606へ入力として伝搬されるP2C1_Test信号である。
【0122】
したがって、P2C1_Test信号により表される論理状態により共有資源608を第2の生産者604が書込みに利用できるか、また共有資源608を消費者606が読出しに利用できるかどうかが決定される。P2C1_Test信号がローであれば、共有資源608を第2の生産者604は書込みに利用できるが消費者606は読出しに利用できない。P2C1_Test信号がハイであれば、共有資源608を第2の生産者604は書込みに利用できないが消費者606は読出しに利用できる。
【0123】
図8は第1のクロック(P1_Clk)と同期作動する第1の生産者サブシステム802、第2のクロック(P2_Clk)と同期作動する第2の生産者サブシステム804、第3のクロック(C1_Clk)と同期作動する第1の消費者サブシステム806、および第4のクロック(C2_Clk)と同期作動する第2の消費者サブシステム808を含むデジタルシステムの一部を表す単純化されたブロック図である。全てのクロックP1_Clk,P2_Clk,C1_Clk,C2_Clkが互いに非同期的である。
【0124】
第1の生産者802はテスト論理構成要素812およびビットレジスタ814を含んでいる。第2の生産者804はテスト論理構成要素816およびビットレジスタ818を含んでいる。第1の消費者806はテスト論理構成要素820およびビットレジスタ822を含んでいる。第2の消費者808はテスト論理構成要素824およびビットレジスタ826を含んでいる。
【0125】
4つのサブシステム802,804,806,808は資源810を共有する。テスト論理構成要素812,816,820,824により各サブシステム802,804,806,808は共有資源810の状態を独立して決定することができる。ビットレジスタ814,818,822,826は0もしくは1の値を表すことができる。各サブシステム802,804,806,808は各ビットレジスタ814,818,822,826の値を読み出すことができる。4つのサブシステム802,804,806,808は相互に非同期クロックドメインで作動するため、各ビットレジスタ814,818,822,826の値は各非同期クロックと同期化しなければならないことが理解できるであろう。
【0126】
したがって、図8は、例えば、第1の消費者806のビットレジスタ822の値、第2の消費者808のビットレジスタ826の値、および第2の生産者804のビットレジスタ818の値のP1_Clkによりクロックされる1組の同期化要素830への伝搬を表している。ビットレジスタ822,826,818の同期化された値は第1の生産者802のテスト論理構成要素812へ伝搬される。したがって、ビットレジスタ814,818,822,826の値は第1の生産者802が利用できる。
【0127】
同様に、P2_Clkによりクロックされる1組の3個の同期化要素832がビットレジスタ814,822,826の値を同期化させて、このような値を第2の生産者804が利用できるようにする。また、C1_Clkによりクロックされる1組の3個の同期化要素834がビットレジスタ814,818,826の値を同期化させて、このような値を第1の消費者が利用できるようにする。同様に、C2_Clkによりクロックされる1組の3個の同期化要素836がビットレジスタ814,818,822の値を同期化させて、これらの値を第2の消費者が利用できるようにする。
【0128】
前記したように、生産者もしくは消費者は各サブシステムの各ビットレジスタの値を排他的ORすることにより共有資源の状態を決定することができる。したがって、第1の生産者802は各ビットレジスタ814,818,822,826の値を排他的ORする。このような排他的ORの結果がゼロであれば、共有資源810内に失効データが存在しており第1の生産者802は共有資源810へデータを書き込むことができる。一方、このような排他的ORの結果がゼロであれば、共有資源810内にフレッシュデータが存在しており第1の生産者は共有資源810へデータを書き込むことができない。共有資源810の可用性をテストするのに必要な論理は次式で例示される。


P1_Test式の結果がゼロであれば、共有資源810内の任意のデータが既に消費者により読み出されており(データは失効)、第1の生産者802は共有資源810へ新しいデータを書き込むことができる。しかしながら、P1_Test式の結果が1であれば、共有資源810内にフレッシュデータが存在しており、第1の生産者802は共有資源810へ新しいデータを書き込むことができない。
【0129】
同じテスト論理が図8の消費者により使用される。例えば、第1の消費者806は次式に従って共有資源810の状態を確認することができる。

【0130】
C1_Test式の結果が1であれば、共有資源810内にフレッシュデータが存在しており、第1の消費者806は即座にデータを読み出すことができる。一方、C1_Test式の結果がゼロであれば、共有資源810内のデータは失効しており第1の消費者806はデータを読み出すことができない。同様なテスト論理が第2の生産者804および第2の消費者808にも提供される。
【0131】
図9は、非同期クロックドメインで作動する2つの生産者サブシステムおよび2つの消費者サブシステムが共有資源の状態を独立してテストすることができる論理を表す論理図である。図9には共有資源が図示されていない。さらに、2つの生産者サブシステムおよび2つの消費者サブシステムの全体は図示されていない。図9は、図8に関して一般的に説明したビットレジスタ構成要素およびテスト論理構成要素を簡易化する論理を例示するにすぎない。
【0132】
第1のビットレジスタは排他的ORゲート902、P1_ClkによりクロックされるDフリップフロップ904、および第1の生産者802による第1のレジスタへのP1_Add信号入力を含んでいる。このようなビットレジスタの動作だけでなく、その構成要素については既に詳細説明されているので繰り返さない。P1_Bitreg信号は第1のビットレジスタの状態を表す。したがって、第1の生産者802(図8)のビットレジスタの値はP1_Bitreg信号により表される。
【0133】
第2、第3および第4のビットレジスタは、それぞれ、P2_Clkによりクロックされる排他的ORゲート906およびDフリップフロップ908、C1_Clkによりクロックされる排他的ORゲート910およびDフリップフロップ912、およびC2_Clkによりクロックされる排他的ORゲート914およびDフリップフロップ916を含んでいる。第2のビットレジスタは、さらに第2の生産者804による第2のビットレジスタへのP2_Add信号入力を含んでいる。第3のビットレジスタは、さらに第1の生産者806による第3のビットレジスタへのC1_Sub信号入力を含んでいる。また、第4のビットレジスタは、さらに第2の消費者808による第4のビットレジスタへのC2_Sub信号入力を含んでいる。第2、第3および第4のビットレジスタの論理状態は、それぞれ、P2_Bitreg信号、C1_Biteg信号、およびC2_Bitreg信号により表される。したがって、第2の生産者804、第1の消費者806、および第2の消費者808の各ビットレジスタの値は、それぞれ、P2_Bitreg信号、C1_Biteg信号、およびC2_Bitreg信号により表される。
【0134】
第1、第2、第3および第4のビットレジスタは相互に排他的なクロックドメイン内で作動する。したがって、ビットレジスタの値P1_Bitreg,P2_Bitreg,C1_Bitreg,およびC2_Bitregは各非同期クロックと同期化させてこのような値を各生産者および消費者サブシステムが利用できるようにしなければならない。
【0135】
したがって、図9にはクロックP2_Clkによりクロックされる同期化要素920への入力、クロックC1_Clkによりクロックされる同期化要素922への入力、およびC2_Clkによりクロックされる同期化要素924への入力としてP1_Bitreg信号を伝搬する線918が図示されている。同様に、線926はP1_Clkにクロックされる同期化要素928への入力、C1_Clkによりクロックされる同期化要素930への入力、およびC2_Clkによりクロックされる同期化要素932への入力としてP2_Bitreg信号を伝搬する。また、線934はP1_Clkによりクロックされる同期化要素936への入力、P2_Clkによりクロックされる同期化要素938への入力、およびC2_Clkによりクロックされる同期化要素940への入力としてC1_Bitreg信号を伝搬する。同様に、線942はP1_Clkにクロックされる同期化要素944への入力、P2_Clkによりクロックされる同期化要素946への入力、およびC1_Clkによりクロックされる同期化要素948への入力としてC2_Bitreg信号を伝搬する。
【0136】
図8に関して前記したように、共有資源の状態は各生産者および消費者サブシステムのビットレジスタの値を排他的ORすることにより確認することができる。したがって、図9には、例えば、線918により排他的ORゲート950へ入力として伝搬されるP1_Bitreg信号が図示されている。線952はP1_Clkと同期するC1_Bitreg信号を排他的ORゲート950へ第2の入力として伝搬する。線954はP1_Clkと同期するC2_Bitreg信号を排他的ORゲート956へ第1の入力として伝搬する。線958はP1_Clkと同期するP2_Bitreg信号を排他的ORゲート956へ第2の入力として伝搬する。排他的ORゲート950の出力は線960により排他的ORゲート964へ入力として伝搬される。排他的ORゲート956の出力は線962により排他的ORゲート964へ第2の入力として伝搬される。排他的ORゲート964の出力は線966により第1の生産者802へ入力として伝搬されるP1_Test信号である。
【0137】
したがって、ビットレジスタP1_Bitreg,P2_Bitreg,C1_Bitreg,およびC2_Bitregの値の排他的ORが排他的ORゲート950,956,および964により遂行される。このような排他的ORの結果は線966により伝搬されるP1_Test信号である。P1_Test信号の値により、共有資源810を第1の生産者802が書込みに利用できるかどうかが決定される。P1_Test信号がローであれば、第1の生産者802は共有資源810へ新しいデータを書き込むことができる。しかしながら、P1_Test信号がハイであれば、第1の生産者802は共有資源810へ新しいデータを書き込むことができない。
【0138】
前記したP1_AddとP1_Testとの間の関係が図9に示すP1_AddとP1_Testとの間に存在することが理解できるであろう。すなわち、第1の生産者802により発生される各P1_Add信号により、P1_Testは第1の生産者のクロックP1_Clkの1クロックサイクル内に更新される。共有資源810が利用不能となっているあることをP1_Test信号により即座に通知される第1の生産者は、共有資源810へ早まってアクセスすることを防止される。同様な関係がP2_AddとP2_Test,C1_SubとC1_Test,およびC2_SubとC2_Testについても存在する。
【0139】
図9のP2_Test回路、C1_Test回路、およびC2_Test回路の構造および動作はP1_Test回路の構造および動作と類似しており、ここでは詳細に説明しない。
【0140】
本発明は任意数の生産者サブシステムもしくは消費者サブシステムを有するデジタルシステムに向けられている。資源を2つ以上の生産者サブシステムもしくは2つ以上消費者サブシステムで共有する場合には、2つ以上の生産者サブシステムが共有資源へ同時に書き込むのを防止するか、あるいは2つ以上の消費者サブシステムが共有資源から同時に読み出すのを防止するために、アービター要素が必要である。このような共有資源への非制御同時アクセスは競合状態として知られている。
【0141】
アービターの基本的な機能は、1)資源要求を受信する、2)資源の解放を受信する、3)資源の全ての要求を調停する、4)要求の一つに資源を許可することである。資源へのアクセスを調整するこれらの機能を使用して、アービターは競合状態を回避することができる。このようなアービター要素は沢山知られており、本発明は特定のアービター要素に向けられるものではない。
【0142】
しかしながら、本発明の実施例が2つ以上の生産者サブシステムもしくは2つ以上の消費者サブシステムを含み、したがってアービターを必要とする場合に本発明のもう一つの利点を理解することができる。共有資源の状態を決定する従来の方法には、セマフォアを使用して可用もしくは非可用状態を表すことが含まれている。従来の方法の元で、共有資源へのアクセスを望む各サブシステムは最初にセマフォアの値をチェツクする。多数のクロックドメインを含むシステムでは、セマフォアの値の更新だけでなくセマフォアの値のアクセスにも、セマフォアと非同期作動する全てのサブシステムについて同期化遅延が必要であることがお判りであろう。このような遅延によりアービターの設計が複雑化する。
【0143】
資源の解放を検出した後で、アービターは別の要求者へ資源へのアクセスを許可する。しかしながら、同期化遅延により、新たに許可された要求者が資源の非可用性を示すセマフォアの更新をまだ検出できない場合には、新たに許可された要求者は資源へのアクセスを有してはいるが(アービターにより許可された)資源を早まってアクセスすることがある(例えば、生産者が既にフレッシュデータを含んでいる資源へデータを書き込んだり、消費者が既に読み出されているデータを読み出す)。このような早まったアクセスを修正するために、典型的には最も遅くクロックされるサブシステムがセマフォアの更新を検出できるのに必要な最悪同期化遅延以上の遅延が組み込まれるようにアービターは設計される。
【0144】
本発明を共有資源の状態を決定するのに使用する場合、共通セマフォアが共有資源の状態を表すという従来の必要性が解消される。本発明に従って、各生産者および消費者は他の各生産者および消費者へ直接更新信号を送る。したがって、一つの同期化操作だけで任意の生産者もしくは消費者が共有資源の状態の更新を検出することができる。図10a、図10bおよび図10cに例示するように、任意の生産者もしくは消費者への最大更新遅延が単一同期化動作と同等であるという事実により、アービターの設計に組込遅延を導入する必要性が解消される。したがって、資源を共有し資源へのアクセスを調停することによる処理速度の低下は最小限に抑えられる。
【0145】
図10aは第1のクロックP1_Clkと同期作動する第1の生産者1002、第2のクロックP2_Clkと同期作動する第2の生産者1004、および第2のクロックP2_Clkと同期作動するアービター1006を含むデジタルシステムの一部を示す単純化したブロック図である。
【0146】
線1008は第1の生産者1002により発生されるBUS_Release信号をP2_Clkによりクロックされる同期化要素1010へ入力として伝搬する。同期化要素1010の出力はアービター1006へ入力として伝搬される。線1012はアービター1006により発生されるBUS_Grant信号を第2の生産者1004へ入力として伝搬する。線1014は第1の生産者1002により発生されるP1_Bitreg信号をP2_Clkによりクロックされる同期化要素1016へ入力として伝搬する。同期化要素1016の出力は線1018により第2の生産者1004へ入力として伝搬される。線1020により第2のクロックP2_Clkが同期化要素1010、同期化要素1016、アービター1006、および第2の生産者1004に接続される。
【0147】
第1の生産者1002は共有資源(図示せず)への書込み動作の開始時にP1_Bitreg信号を更新する。P1_Bitreg信号は第1の生産者のクロックP1_Clkと同期している。前記したように、本発明の元で共有資源の状態を決定するために、第2の生産者1004はP1_Bitreg信号の論理状態を読み出してそれ自体のビットレジスタの論理状態と比較できなければならない。したがって、P1_Bitreg信号の論理状態は同期化要素1016によりP2_Clkと同期化され、同期化されたP1_Bitreg信号は線1018により第2の生産者1004へ伝搬される。
【0148】
第1の生産者1002は共有資源への書込みを開始すると、線1008により同期化要素1010へ入力として伝搬されるBUS_Release信号も発生する。アービターは第2のクロックP2_Clkと同期作動しているため、BUS_Release信号はアービター1006がBUS_Release信号を受信できる前にP2_Clkと同期化させなければならない。同期化要素1010の出力はP2_Clkと同期化されたBUS_Release信号を表す。同期化されたBUS_Release信号はアービター1006へ入力として伝搬される。BUS_Release信号を受信すると、アービター1006はBUS_Grant信号を発生して応答し、第2の生産者1004に共有資源へのアクセスを許可する。BUS_Grant信号はP2_Clkと同期しているため、第2の生産者1004へ直接入力として伝搬される。
【0149】
図10aはアービター1006が一つの生産者サブシステムと同期作動しており、かつ本発明が共有資源の状態を決定するのに使用される場合に、適切なアービタータイミングを保証するのにアービター1006内に組込み遅延を導入する必要がないことを示している。第2の生産者1004は、同期化要素1016によりP1_Bitreg信号がP2_Clkと同期化されるとすぐに、第1の生産者1002による共有資源状態の任意の変化を通知される。BUS_Release信号がP2_Clkと同期化されてアービター1006へ伝搬され、かつアービター1006がそれに応答して第2の生産者1004へ伝搬されるBUS_Grant信号を発生するのに少なくとも同量の時間がとられる。したがって、アービター1006は、第2の生産者1004が第1の生産者1002のP1_Bitreg信号を検出できないうちに、第1の生産者1002のBUS_Release信号を検出することはできず、またBUS_Grant信号によりバスを第2の生産者1004へ許可することもできない。したがって、アービター1006を遅くする組込み遅延は導入されていない事実にも拘わらず、競合状態の可能性はない。
【0150】
図10bは図10aに示すものと同じ構成要素を示す単純化したブロック図である。しかしながら、図10bでは、アービター1006は第1の生産者1002と同期作動している。したがって、アービター1006は同期化することなく第1の生産者1002から直接BUS_Release信号を受信することができる。しかも、第2の生産者1004はアービター1006とは非同期的であるため、アービター1006により発生されるBUS_Grant信号は第2の生産者1004がBUS_Grant信号を検出する前にP2_Clkと同期化させなければならない。図10aの場合と同様に、アービター1006は、第2の生産者1004が第1の生産者1002の更新されたP1_Bitreg信号を検出できる前に、第1の生産者1002のBUS_Release信号を検出することはできず、またBUS_Grant信号によりバスを第2の生産者1004へ許可することもできない。
【0151】
図10cにはアービター1006が、P1_ClkおよびP2_Clkの両方のクロックと非同期的である、クロックA_Clkと同期作動している点を除けば図10aに記載したものと同じ構成要素が図示されている。そのため、第1の生産者1002から発生されるBUS_Release信号は、アービター1006がBUS_Release信号を検出できる前にA_Clkと同期させなければならない。また、アービター1006は第2の生産者1004とは非同期的であるため、アービター1006により発生されるBUS_Grant信号は第2の生産者1004がBUS_Grant信号を検出できる前にP2_Clkと同期させなければならない。このように、アービター1006により発生されるBUS_Grant信号だけでなくアービター1006へ伝搬されるBUS_Release信号を同期化させなければならないため、第2の生産者1004が第1の生産者1002の更新されたP1_Bitreg信号を検出できる前に、アービター1006は第1の生産者1002のBUS_Release信号を検出することはできず、またBUS_Grant信号によりバスを第2の生産者1004へ許可することもできない。
【0152】
図10a、図10bおよび図10cは、アービターのために選択されるクロクドメインとは無関係に、競合状態を防止するためにアービターに対して任意の付加遅延を間挿する必要性が本発明により回避されることを例示している。
【0153】
図11は、第1のクロックP1_Clkで同期作動する第1の生産者1102、第2のクロックP2_Clkで同期作動する第2の生産者1104、P1_Clkで同期作動する第1のアービター1106、第4のクロックC1_Clkで同期作動する消費者1108、およびC1_Clkで同期作動する第2のアービター1109を示す単純化したブロック図である。3つのクロックP1_Clk,P2_ClkおよびC1_Clkは相互に非同期的である。
【0154】
線1110は第1の生産者1002から発生されるP1_Request信号を第1のアービター1106へ入力として伝搬する。線1112は第1のアービター1106から発生されるP1_Grant信号を第1の生産者1102へ入力として伝搬する。線1114は第1の生産者1102から発生されるP1_Add信号を第1のビットレジスタ1116へ入力として伝搬する。線1118は第1のビットレジスタ1118から発生されるP1_Bitreg信号をテスト論理構成要素1120へ入力として伝搬する。第1のテスト論理構成要素1120の出力は、線1122により第1の生産者1102へ入力として伝搬されるP1_Test信号である。
【0155】
線1118は、また、P1_Bitreg信号をP2_Clkによりクロックされる同期化要素1124へ入力として伝搬する。同期化要素1124の出力は第2のテスト論理構成要素1126へ入力として伝搬される。線1118は、さらに、P1_Bitreg信号をC1_Clkによりクロックされる同期化要素1128へ入力として伝搬する。同期化要素1128の出力は第3のテスト論理構成要素1130へ入力として伝搬される。
【0156】
線1134は第2の生産者1104により発生されるP2_Request信号を、P1_Clkによりクロックされる同期化要素1136へ入力として伝搬する。同期化要素1136の出力は第1のアービター1106へ入力として伝搬される。第1のアービター1106により発生されるP2_Grant信号は、P2_Clkによりクロックされる同期化要素1140へ入力として線1138により伝搬される。第2の生産者1104により発生されるP2_Add信号は、線1142により第2のビットレジスタ1144へ伝搬される。P2_Bitreg信号が第2のビットレジスタ1144により発生され、線1146により第2のテスト論理構成要素1126へ伝搬される。第2のテスト論理構成要素1126は、線1148により第2の生産者1104へ入力として伝搬されるP2_Test信号を発生する。線1146はP2_Bitreg信号をP1_Clkによりクロックされる同期化要素1150へ入力として伝搬する。同期化要素1150の出力は第1のテスト論理構成要素1120へ入力として伝搬される。線1146は、また、P2_Bitreg信号をC1_Clkによりクロックされる同期化要素1152へ入力として伝搬する。同期化要素1152の出力は第3のテスト論理構成要素1130へ入力として伝搬される。
【0157】
線1154は消費者1108により発生されるC1_Request信号を第2のアービター1109へ入力として伝搬する。第2のアービター1109は線1156により消費者1108へ入力として伝搬されるC1_Grant信号を発生する。消費者は線1158により第3のビットレジスタ1160へ入力として伝搬されるC1_Sub信号を発生する。第3のビットレジスタは線1162により第3のテスト論理構成要素1130へ入力として伝搬されるC1_Bitreg信号を発生する。第3のテスト論理構成要素は線1164により消費者1108へ入力として伝搬されるC1_Test信号を発生する。線1162は、また、C1_Bitreg信号をP1_Clkによりクロックされる同期化要素1166へ入力として伝搬する。同期化要素1166の出力は第1のテスト論理構成要素1120へ入力として伝搬される。線1162は、さらに、C_Bitreg信号をP2_Clkによりクロックされる同期化要素1168へ入力として伝搬する。同期化要素1168の出力は第2のテスト論理構成要素1126へ入力として伝搬される。
【0158】
線1170によりP1_Clkは第1の生産者1102、第1のアービター1106、および同期化要素1136,1150,1166に接続される。線1172によりP2_Clkは第2の生産者1104、および同期化要素1140,1124,1168に接続される。線1174によりC1_Clkは消費者1108、第2のアービター1109、および同期化要素1128,1152に接続される。
【0159】
図12は図11に記載した構成要素により発生されるある信号間のタイミング関係を示すタイミング図である。図12には時間間隔(t)にわたって3つのクロックP1_Clk,P2_Clk,C1_Clkと同期して発生される信号が含まれている。P1_Clk信号1202は時間間隔t中にP1_Clkにより発生される論理状態遷移を表す。P2_Clk信号1204は時間間隔t中にP2_Clkにより発生される論理状態遷移を表す。同様に、C1_Clk信号1206は時間間隔t中にC1_Clkにより発生される論理状態遷移を表す。P2_Clkが時間間隔t中に発生する遷移はP1_Clk信号よりも少ないことがお判りであろう(すなわち、P2_ClkはP1_Clkよりも高速である)。同様に、C1_Clk信号は時間間隔t中にP1_Clk信号よりも多くの遷移を発生する(すなわち、C1_ClkはP1_Clkよりも高速である)。
【0160】
P1_Request信号1208およびP2_Request信号1210は、それぞれ、P1_Clk信号1202およびP2_Clk1204に同期してローからハイへ遷移する。P1_RequestおよびP2_Request信号1208および1210は、それぞれ、第1の生産者1102(図11)および第2の生産者1104(図11)によりほとんど同時に発生される。P1_RequestおよびP2_Request信号は、それぞれ、線1110および1134(図11)により第1のアービター1106へ伝搬される。したがって、第1の生産者1102および第2の生産者1104は共有資源(図示せず)へのアクセスを競合している。
【0161】
消費者1108(図11)により発生されるC1_Request信号1224はC1_Clk信号1206と同期してローからハイへ遷移する。第2のアービター1109へ入力として伝搬されるC1_Request信号1224の遷移は、消費者1108が共有資源へのアクセスを求めていることを示す。C1_Request信号1224の遷移に続いて、第2のアービター1109により発生されるC1_Grant信号1226がローからハイへ遷移して、第2のアービター1109は共有資源へのアクセスを消費者1108へ許可したことを示す。共有資源へのアクセスを競合する他の消費者は図示されていない。
【0162】
P1_Request信号1208およびP2_Request信号1210のローからハイへの遷移に続いて、P1_Grant信号1212がローからハイへ遷移する。P1_Grant信号は第1のアービター1106により発生されて、第1の生産者が共有資源へアクセスする権利を与えられていることを示す。P2_Request信号1210はハイのままとされて、第2の生産者が継続的に共有資源へのアクセスを求めていることを示す。
【0163】
共有資源へのアクセスを得ると、第1の生産者1102は共有資源への書込みアクセスを開始しかつこのような書込みアクセスが開始されたことを示すP1_Add信号を発生する。その結果、P1_Grant信号の遷移に続いてP1_Clk信号により発生される次の完全な遷移時に、P1_Add信号1214はローからハイへ遷移する。P1_Add信号1214は第1のビットレジスタ1116へ入力される。P1_Clk信号1202の次の完全な遷移時に、第1のビットレジスタ1116(図11)はP1_Bitreg信号1216の論理状態をローからハイへ変える。また、第1の生産者1102は共有資源への書込みアクセスを開始しているため、第1の生産者はP1_Request信号の論理状態をハイからローへ変えることにより、その資源へのアクセス要求を撤回する。
【0164】
P1_Add信号1214はパルス信号であるため、P1_Bitreg信号1216の論理状態が変化すると同時にローへ遷移する。P1_Bitreg信号1216は即座に第1のテスト論理構成要素1120(図11)へ入力として伝搬され、また、それによりP1_Test信号1218の論理状態は即座にローからハイへ変化する。第1の生産者1102による書込みアクセスの開始に続いて、P1_Clk信号1202の完全な1遷移内でP1_Test信号1218が更新されるため、第1の生産者1102はそれ自体の書込みアクセスによる共有資源の状態変化を通知され、通知されないうちは恐らく別の書込みアクセスを発生することはできない。
【0165】
P1_Bitreg信号は、P2_Clkによりクロックされる同期化要素1124へ線1118により伝搬される。次に、P2_Clkと同期化されたP1_Bitreg信号により表される同期化要素1124の出力は、第2のテスト論理構成要素1126へ伝搬される。同期化要素1124はP2_Clkによりクロックされるため、第2のテスト論理構成要素はP2_Clk信号1204の一つの完全な遷移が生じるまでP2_Test信号1220を更新しない。したがって、P1_Bitreg信号1216とは非同期的であるP2_Test信号1220は、P1_Bitreg信号1216の遷移に続いてP2_Clk信号1204の一つの完全な遷移が生じると、ローからハイへ遷移する。
【0166】
P1_Bitreg信号の同様な同期化が第3のテスト論理構成要素1130に関して生じる。したがって、第3のテスト論理構成要素1130は、P1_Bitreg信号1216の遷移に続いてC1_Clk信号の一つの完全な遷移が生じるまで、C1_Test信号1222の論理状態を更新しない。C1_Test信号1222はP1_Bitreg信号1216とは非同期的であり、したがって、P1_Bitreg信号1216の遷移に続いてC1_Clk信号1206の一つの完全な遷移が生じると、ローからハイへ遷移する。
【0167】
P2_Test信号1220およびC1_Test信号1222が遷移すると、第2の生産者1104および消費者1108は、それぞれ、第1の生産者1102により開始される書込みアクセスによる共有資源の状態変化を検出することができる。C1_Clk信号1206はP2_Clk信号1204よりも高速で遷移を発生するため、消費者1108は共有資源のこのような状態変化を第2の生産者1104よりも早期に検出することができる。
【0168】
第2のアービター1109により既に共有資源へのアクセスを許可されている消費者1108は、C1_Test信号1222の遷移に続くC1_Clk信号1206の一つの完全な遷移内で共有資源への読出しアクセスを開始する。消費者1108はC1_Sub信号1228を発生することにより、開始した読出しアクセスを表示する。P1_Add信号1214と同様に、C1_Sub信号1228はパルスでありしたがって、C1_Clk信号1206の1サイクル中にローからハイ次にハイからローへ遷移する。C1_Sub信号1228は第3のビットレジスタ1160へ伝搬する。第3のビットレジスタ1160により、C1_Clk信号1206の次の完全な遷移時にC1_Bitreg信号1230はローからハイへ変化する。
【0169】
C1_Bitreg信号1230は第3のテスト論理構成要素1160(図11)へ即座に伝搬され、それによりC1_Test信号1222は即座にハイからローへ変化する。C1_Bitreg信号1230は同期化要素1166,1168へ伝搬され、それぞれ、P1_Clk信号1202およびP2_Clk信号1204と同期化される。このような同期化に続いて、P1_Test信号1218はC1_Test信号1222の遷移に続くP1_Clk信号1202の一つの完全な遷移時にハイからローへ遷移する。同様に、P2_Test信号1220はC1_Test信号1222の遷移に続くP2_Clk信号1204の一つの完全な遷移時にハイからローへ遷移する。P1_Test信号1218およびP2_Test信号1220のこのような遷移は、第1の生産者1102および第2の生産者1104が、共有資源への読出しアクセスを開始する消費者1108による共有資源の状態変化を検出できることを示す。
【0170】
第1の生産者1102がP1_Request1208信号の論理状態をハイからローへ変化しており、かつ第2の生産者がP2_Request信号1210のハイ論理状態を維持しているため、第1のアービター1106により信号P2_Grant1232はローからハイへ遷移して第2の生産者1104へ共有資源へのアクセスが許可される。共有資源へのアクセスを有しかつP2_Test信号1220のロー論理状態により共有資源を利用できることを通知されている第2の生産者は、共有資源への書込みアクセスを開始する。このような書込みアクセスが開始されていることを表示するために、第2の生産者1104によりP2_Add信号1234がローからハイへ遷移される。P2_Add信号1234はパルスであるため、P1_Clk信号1204の一つの完全な遷移中にローからハイへかつハイからローへ遷移する。
【0171】
P2_Add信号1234は第2のビットレジスタ1144へ伝搬され、それによりP2_Add信号1234の遷移に続くP1_Clk信号1204の一つの完全な遷移時に、P2_Bitreg信号1236はローからハイへ遷移する。P2_Bitreg信号1236は即座に第2のテスト論理構成要素1126へ伝搬され、それによりP2_Test信号1220も即座にローからハイへ遷移する。
【0172】
P2_Bitreg信号1236は同期化要素1150および1152へ伝搬されそれらはP2_Bitreg信号1236を、それぞれ、P1_Clk信号1202およびC1_Clk信号1206と同期化させる。このような同期化の後で、同期化されたP2_Bitreg信号1236は、それぞれ、第1のテスト論理構成要素1120および第3のテスト論理構成要素1130へ伝搬される。
【0173】
第1のテスト論理構成要素によりP1_Test信号1218はローからハイへ遷移する。しかしながら、P2_Bitreg信号1236はP1_Test信号1218とは非同期的であるため、P1_Test信号1218はP2_Bitreg信号1236の遷移に続いてP1_Clk信号の一つの完全な遷移が生じるまで遷移しない。
【0174】
同様に、第3の論理構成要素によりC1_Test信号1222はローからハイへ遷移し、このような遷移はP2_Bitreg信号1236の遷移に続くC1_Clk信号1206の一つの完全な遷移時に生じる。
【0175】
C1_Grant信号1226はハイ論理状態を維持しており、したがって、消費者1108はまだ共有資源へのアクセスを有している。C1_Test信号1222はハイ論理状態を示すため、共有資源を消費者1108は利用できる。したがって、消費者1108は共有資源への読出しアクセスを開始しパルスC1_Sub信号1228を発生してこのような読出しアクセスが開始されたことを表示する。前記したように、パルスであるC1_Sub信号1228はC1_Clk信号1206の一つの完全な遷移中にローへ降下する。C1_Sub信号1228は第3のビットレジスタ1160へ伝搬され、C1_Bitreg信号1230はハイからローへ遷移する。C1_Bitreg信号1230は第3のテスト論理構成要素1130へ伝搬され、C1_Test信号1222は即座にハイからローへ遷移する。前記したように、C1_Bitreg信号1230は、それぞれ、P1_Clk信号1202およびP2_Clk信号1204に同期化されて、P1_Test信号1218およびP2_Test信号1220はハイからローへ遷移する。
【0176】
本発明はアービターの機能に向けられたものではなく、またサブシステム間の調停を行う任意の方法に依存するものでもない。
【0177】
ここに記載された本質的な特徴を逸脱することなく、他の特定の形式で本発明を実施することができる。前記した実施例はあらゆる点において、単なる説明用であって決してそれに制約されるものではない。発明の範囲は前記説明ではなく請求の範囲によって示される。請求の範囲の意味および同等な範囲内に入る任意の全ての変更は請求の範囲に入るものとする。
【図面の簡単な説明】
【0178】
【図1】図1は全てが共通資源を共有する異なるクロックドメインで作動する多数の生産者サブシステムおよび多数の消費者サブシステムを含むデジタルシステムの一部を例示するブロック図。
【図2】図2は各生産者および消費者が同じクロックドメインで作動しているコンピュータ環境において各生産者および消費者がカウンタを含みかつ一つの資源を共有する、2つの生産者サブシステムおよび2つの消費者サブシステムを例示するブロック図。
【図3】図3は各サブシステムがカウンタを含み、各サブシステムが資源を共有し、各生産者および消費者が異なるクロックドメインで作動する、2つの生産者サブシステム、2つの消費者サブシステムを例示するブロック図。
【図4】図4は各々がビットレジスタを含み、各々がクロックドメインで作動する、資源を共有する一つの生産者および一つの消費者を含むデジタルシステムの一部を例示するブロック図。
【図5a】図5aは各サブシステムが異なるクロックドメインで作動する、一つの生産者サブシステムおよび一つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図5b】図5bは共通クロックによりクロックされる2個のDフリップフロップを含む同期化要素を例示する論理図。
【図6】図6は各サブシステムがビットレジスタを含み資源を共有する、一つの生産者サブシステムを含む第1のクロックドメインと、一つの生産者サブシステムおよび一つの消費者サブシステムを含む第2のクロックドメインと、の2つのクロックドメインを含むデジタルシステムの一部を表すブロック図。
【図7a】図7aは一つのクロックドメイン内で作動する一つの生産者サブシステム、およびもう一つのクロックドメイン内で作動する一つの生産者サブシステムおよび一つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図7b】図7bは一つのクロックドメイン内で作動する一つの生産者サブシステムに対するビットレジスタ構成要素および資源テスト構成要素、およびもう一つのクロックドメイン内で作動する一つの生産者サブシステムおよび一つの消費者サブシステムにより共有されるビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図8】図8は各々がビットレジスタを含み、各々が資源を共有し、各々が異なるクロックドメイン内で作動する2つの生産者サブシステムおよび2つの消費者サブシステムを含むデジタルシステムの一部を表すブロック図。
【図9】図9は全てが独立したクロックドメイン内で作動する、2つの生産者サブシステムおよび2つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を含むデジタルシステムの一部を表す論理図。
【図10a】図10aは各々が異なるクロックドメイン内で作動し第2の生産者のクロックドメイン内で作動するアービターにより調整される2つの生産者を表すブロック図。
【図10b】図10bは各々が異なるクロックドメイン内で作動し第1の生産者のクロックドメイン内で作動するアービターにより調整される2つの生産者を表すブロック図。
【図10c】図10cは各々が異なるクロックドメイン内で作動し、両者がまだもう一つのクロックドメイン内で作動しているアービターにより調整される2つの生産者サブシステムを表すブロック図。
【図11】図11は各生産者からアービターへの信号およびアービターから各生産者への信号が他方の各クロックドメイン内へ同期化される、第3のクロックドメイン内で作動するアービターにより調整される異なるクロックドメイン内で作動する2つの生産者サブシステムを表すブロック図。
【図12】図12は第1の生産者、第2の生産者および消費者に対する各資源要求および許可を表す波形タイミング図。

【特許請求の範囲】
【請求項1】
デジタルシステムの資源の状態を決定する方法であって、第1のクロックと同期作動する第1のサブシステムが前記資源へデータを書き込み、第2のクロックと同期作動する第2のサブシステムが前記資源からデータを読み出し、前記第2のクロックは前記第1のクロックと非同期であり、予め書き込まれたデータが前記資源から前記第2のサブシステムにより読み出されないうちは前記資源は付加データを前記第1のサブシステムから書き込むのに利用することができず、前記方法は、
前記第1のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第1の量を発生するステップであって、前記第1の量は前記第1のクロックに同期して発生される前記ステップと、
前記第2のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第2の量を発生するステップであって、前記第2の量は前記第2のクロックに同期して発生される前記ステップと、
前記第1の量を前記第2のクロックに同期させて第3の量を発生するステップと、
前記第2の量を前記第1のクロックに同期させて第4の量を発生するステップと、
前記第1の量を前記第4の量と比較して前記第1のサブシステムに対する第1の資源可用性信号を発生するステップであって、前記第1の資源可用性信号は前記第1の量が前記第4の量に等しい時にアクティブであり、前記第1の資源可用性信号は前記第1のクロックと同期して発生されるステップと、
前記第2の量を前記第3の量と比較して前記第2のサブシステムに対する第2の資源可用性信号を発生するステップであって、前記第2の資源可用性信号は前記第2の量が前記第3の量とは異なる時にアクティブであり、前記第2の資源可用性信号は前記第2のクロックと同期して発生されるステップと
を含むデジタルシステムの資源状態決定方法。
【請求項2】
請求項1記載の方法であって、前記第1の量、前記第2の量、前記第3の量、および前記第4の量は0もしくは1の値を表し、前記値は増分される時に1から0もしくは0から1へ変化し、前記第1の資源可用性信号は前記第1の量から前記第4の量までを排他的ORすることにより発生され、前記第2の資源可用性信号は前記第2の量および前記第3の量を排他的ORすることにより発生される方法。
【請求項3】
請求項1記載の方法であって、前記デジタルシステムの第3のサブシステムが第3のクロックと同期作動し、前記第3のクロックは前記第1のクロックおよび前記第2のクロックとは非同期であり、前記第3のサブシステムは前記資源へデータを書き込み、予め書き込まれたデータが前記第2のサブシステムにより前記資源から読み出されないうちは前記資源は前記第3のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第3のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第5の量を発生するステップであって、前記第5の量は前記第3のクロックと同期して発生される前記ステップと、
前記第1の量を前記第3のクロックと同期させて第6の量を発生するステップと、
前記第2の量を前記第3のクロックと同期させて第7の量を発生するステップと、
前記第5の量を前記第1のクロックと同期させて第8の量を発生するステップと、
前記第5の量を前記第2のクロックと同期させて第9の量を発生するステップと、
前記第1の量と前記第8の量との和を前記第4の量と比較することにより前記第1の資源可用性信号を発生するステップであって、前記第1の資源可用性信号は前記第1の量と前記第8の量との前記和が前記第4の量に等しい時にアクティブである前記ステップと、
前記第3の量と前記第9の量との和を前記第2の量と比較することにより前記第2の資源可用性信号を発生するステップであって、前記第2の資源可用性信号は前記第3の量と前記第9の量との前記和が前記第2の量とは異なる時にアクティブである前記ステップと、
前記第5の量と前記第6の量との和を前記第7の量と比較することにより第3の資源可用性信号を発生するステップであって、前記第3の資源可用性信号は前記第5の量と前記第6の量との前記和が前記第7の量に等しい時にアクティブであり、前記第3の資源可用性信号は前記第3のクロックと同期して発生される前記ステップと
を含む方法。
【請求項4】
請求項3記載の方法であって、前記デジタルシステムの第4のサブシステムが第4のクロックと同期作動し、前記第4のクロックは前記第1のクロックおよび前記第2のクロックおよび前記第3のクロックとは非同期であり、前記第4のサブシステムは前記資源からデータを読み出し、予め書き込まれたデータが前記第2のサブシステムもしくは前記第4のサブシステムにより前記資源から読み出されないうちは前記資源は前記第1のサブシステムもしくは前記第3のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第4のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第10の量を発生するステップであって、前記第10の量は前記第4のクロックと同期して発生される前記ステップと、
前記第1の量を前記第4のクロックと同期させて第11の量を発生するステップと、
前記第2の量を前記第4のクロックと同期させて第12の量を発生するステップと、
前記第5の量を前記第4のクロックと同期させて第13の量を発生するステップと、
前記第10の量を前記第1のクロックと同期させて第14の量を発生するステップと、
前記第10の量を前記第2のクロックと同期させて第15の量を発生するステップと、
前記第10の量を前記第3のクロックと同期させて第16の量を発生するステップと、
前記第1の量と前記第8の量との前記和を前記第4の量と前記第14の量との和と比較することにより前記第1の資源可用性信号を発生するステップであって、前記第1の量と前記第8の量との前記和が前記第4の量と前記第14の量との前記和に等しい時に前記資源可用性信号はアクティブである前記ステップと、
前記第3の量と前記第9の量との前記和を前記第2の量と前記第15の量との和と比較することにより前記第2の資源可用性信号を発生するステップであって、前記第3の量と前記第9の量との前記和が前記第2の量と前記第15の量との前記和とは異なる時に前記第2の資源可用性信号はアクティブである前記ステップと、
前記第5の量と前記第6の量との前記和を前記第7の量と前記第16の量との和と比較することにより前記第3の資源可用性信号を発生するステップであって、前記第5の量と前記第6の量との前記和が前記第7の量と前記第16の量との前記和に等しい時に前記第3の資源可用性信号はアクティブである前記ステップと、
前記第11の量と前記第13の量との和を前記第10の量と前記第12の量との和と比較することにより第4の資源可用性信号を発生するステップであって、前記第11の量と前記第13の量との前記和が前記第10の量と前記第12の量との前記和に等しい時に前記第4の資源可用性信号はアクティブであり、前記第4の信号可用性信号は前記第4のクロックと同期して発生される前記ステップと を含む方法。
【請求項5】
請求項1記載の方法であって、前記デジタルシステムの第3のサブシステムは第3のクロックと同期作動し、前記第3のクロックは前記第1のクロックおよび前記第2のクロックとは非同期であり、前記第3のサブシステムは前記資源からデータを読み出し、予め書き込まれたデータが前記第2のサブシステムもしくは前記第3のサブシステムにより前記資源から読み出されないうちは前記資源は前記第1のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第3のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第5の量を発生するステップであって、前記第5の量は前記第3のクロックと同期して発生される前記ステップと、
前記第1の量を前記第3のクロックと同期させて第6の量を発生するステップと、
前記第2の量を前記第3のクロックと同期させて第7の量を発生するステップと、
前記第5の量を前記第1のクロックと同期させて第8の量を発生するステップと、
前記第5の量を前記第2のクロックと同期させて第9の量を発生するステップと、
前記第1の量を前記第4の量と前記第8の量との和と比較することにより前記第1の資源可用性信号を発生するステップであって、前記第1の量が前記第4の量と前記第8の量との前記和に等しい時に前記第1の資源可用性信号はアクティブである前記ステップと、
前記第3の量を前記第2の量と前記第9の量との和と比較することにより前記第2の資源可用性信号を発生するステップであって、前記第3の量が前記第2の量と前記第9の量との前記和とは異なる時に前記第2の資源可用性信号はアクティブである前記ステップと、
前記第5の量を前記第6の量と前記第7の量との和と比較することにより第3の資源可用性信号を発生するステップであって、前記第5の量が前記第6の量と前記第7の量との前記和に等しい時に前記第3の資源可用性信号はアクティブであり、前記第3の資源可用性信号は前記第3のクロックと同期して発生される前記ステップと
を含む方法。
【請求項6】
デジタルシステムの資源の状態を決定する方法であって、少なくとも一つの書込みサブシステムが前記資源へデータを書き込み、少なくとも一つの読出しサブシステムが前記資源からデータを読み出し、予め書き込まれたデータが前記読出しサブシステムの一つにより前記資源から読み出されないうちは前記資源は前記書込みサブシステムから付加データを書き込むのに利用することができず、各書込みサブシステムおよび各読出しサブシステムは各クロックと同期作動し、少なくとも一つの書込みサブシステムが第1のクロックと同期作動し、少なくとも一つの読出しサブシステムが第2のクロックと同期作動し、前記第2のクロックは前記第1のクロックとは非同期であり、前記方法は、
前記各書込みサブシステムに対して一つの書込み量を発生するステップであって、前記各書込み量は前記各書込みサブシステムによる前記資源へのいくつかの書込みアクセスを表し、前記各書込みサブシステムに対する前記各書込み量は前記書込みサブシステムの前記各クロックと同期して発生される前記ステップと、
前記各読出しサブシステムに対して一つの読出し量を発生するステップであって、前記各読出し量は前記各読出しサブシステムによる前記資源へのいくつかの読出しアクセスを表し、前記各読出しサブシステムに対する前記各読出し量は前記読出しサブシステムの前記各クロックと同期して発生される前記ステップと、
各書込み量を書込みサブシステムの前記クロックおよび読出しサブシステムの前記クロックと同期させるステップと、
各読出し量を書込みサブシステムの前記クロックおよび読出しサブシステムの前記クロックと同期させるステップと、
前記書込み量を加算して総書込み量を発生するステップであって、前記加算は前記各書込みサブシステムおよび前記各読出しサブシステムにより独立して実行される前記ステップと、
前記読出し量を加算して総読出し量を発生するステップであって、前記加算は前記各書込みサブシステムおよび前記各読出しサブシステムにより独立して実行される前記ステップと、
前記総書込み量および前記総読出し量を比較して資源書込み可用性書込信号を発生するステップであって、前記資源書込み可用性信号は前記総書込み量が前記総読出し量と等しい時にアクティブであり、前記比較は前記各書込みサブシステムにより独立して実行されて各資源書込み可用性信号を発生する前記ステップと、
前記総書込み量および前記総読出し量を比較して資源読出し可用性信号を発生するステップであって、前記資源読出し可用性信号は前記総書込み量が前記総読出し量とは異なる時にアクティブであり、前記比較は前記各読出しサブシステムにより独立に実行されて各資源読出し可用性信号を発生する前記ステップと、
を含む方法。
【請求項7】
請求項6記載の方法であって、前記書込み量および前記読出し量は0もしくは1の値を表し、前記値は増分される時に1から0もしくは0から1へ変化し、前記総書込み量は前記書込み量を排他的ORすることにより発生され、前記総読出し量は前記読出し量を排他的ORすることにより発生され、前記資源書込み可用性信号は前記総書込み量および前記総読出し量を排他的ORすることにより発生され、前記資源書込み可用性信号は前記各書込みサブシステムにより独立して発生され、前記資源読出し可用性信号は前記総書込み量および前記総読出し量を排他的ORすることにより発生され、前記資源読出し可用性信号は前記各読出しサブシステムにより独立して発生される方法。
【請求項8】
デジタルシステムの資源の状態を決定する方法であって、第1のクロックと同期作動する第1のサブシステムが前記資源へ1次アクセスを行い、第2のクロックと同期作動する第2のサブシステムが前記資源へ2次アクセスを行い、前記第2のクロックは前記第1のクロックに対して非同期であり、前記2次アクセスが行われないうちは前記資源にさらに前記1次アクセスを行うことはできず、前記1次アクセスが行われないうちは前記資源に前記2次アクセスを行うことはできず、前記1次アクセスは前記2次アクセスと時間的に交番しており、前記方法は、
前記第1のサブシステムによる前記資源へのいくつかの前記1次アクセスを表す第1の量を発生するステップであって、前記第1の量は前記第1のクロックに同期して発生される前記ステップと、
前記第2のサブシステムによる前記資源へのいくつかの前記2次アクセスを表す第2の量を発生するステップであって、前記第2の量は前記第2のクロックに同期して発生される前記ステップと、
前記第1の量を前記第2のクロックに同期させて第3の量を発生するステップと、
前記第2の量を前記第1のクロックに同期させて第4の量を発生するステップと、
前記第1の量を前記第4の量と比較して前記第1のサブシステムに対する第1の資源可用性信号を発生するステップであって、前記第1の資源可用性信号は前記第1の量が前記第4の量に等しい時にアクティブであり、前記第1の資源可用性信号は前記第1のクロックと同期して発生されるステップと、
前記第2の量を前記第3の量と比較して前記第2のサブシステムに対する第2の資源可用性信号を発生するステップであって、前記第2の資源可用性信号は前記第2の量が前記第3の量とは異なる時にアクティブであり、前記第2の資源可用性信号は前記第2のクロックと同期して発生されるステップと
を含むデジタルシステムの資源状態決定方法。
【請求項9】
資源の状態を決定する装置であって、書込みサブシステムが前記資源へ書込み信号を送り、読出しサブシステムが前記資源へ読出し信号を送り、前記書込みサブシステムは第1のクロックと同期作動し、前記読出しサブシステムは第2のクロックと同期作動し、前記第2のクロックは前記第1のクロックとは非同期であり、前記装置は、
第1の論理状態および第2の論理状態を有する第1の更新信号を発生する第1のセマフォア要素であって、前記第1のセマフォア要素は前記書込み信号に応答して前記書込みサブシステムが前記資源へデータを書き込む度に前記第1のクロックと同期して前記第1の更新信号の論理状態を変える第1のセマフォア要素と、
第1の論理状態および第2の論理状態を有する第2の更新信号を発生する第2のセマフォア要素であって、前記第2のセマフォア要素は前記読出し信号に応答して前記読出しサブシステムが前記資源からデータを読み出す度に前記第2のクロックと同期して前記第2の更新信号の論理状態を変える第2のセマフォア要素と、
前記第1の更新信号を前記第2のクロックと同期させて第1の同期された更新信号を発生する第1の同期要素と、
前記第2の更新信号を前記第1のクロックと同期させて第2の同期された更新信号を発生する第2の同期要素と、
第1の論理状態および第2の論理状態を有する第1のテスト出力信号を発生する第1のテスト要素であって、前記第1のテスト要素は前記第1の更新信号が前記第2の同期された更新信号と等しい場合に前記第1のテスト出力信号を前記第1の論理状態で発生し、前記第1の更新信号が前記第2の同期された更新信号とは異なる場合に前記第1のテスト出力信号を前記第2の論理状態で発生する第1のテスト要素と、
第1の論理状態および第2の論理状態を有する第2のテスト出力信号を発生する第2のテスト要素であって、前記第2のテスト要素は前記第1の同期された更新信号が前記第2の更新信号と等しい場合に前記第2のテスト出力信号を前記第1の論理状態で発生し、前記第1の同期された更新信号が前記第2の更新信号とは異なる場合に前記第2のテスト出力信号を前記第2の論理状態で発生する第2のテスト要素と
を含む資源の論理状態決定装置。
【請求項10】
請求項9記載の装置であって、
前記第1のセマフォアは第1の排他的ORゲートおよび第1のDフリップフロップを含み、前記第1の排他的ORゲートは第1の出力を有し、前記第1の出力は前記第1のDフリップフロップに入力として接続されており、前記第1のDフリップフロップは第2の出力を有し、前記第2の出力は前記第1の排他的ORゲートに入力として接続されており、
前記第2のセマフォアは第2の排他的ORゲートおよび第2のDフリップフロップを含み、前記第2の排他的ORゲートは第3の出力を有し、前記第3の出力は前記第2のDフリップフロップに入力として接続されており、前記第2のDフリップフロップは第4の出力を有し、前記第4の出力は前記第2の排他的ORゲートに入力として接続されている装置。
【請求項11】
請求項9記載の装置であって、前記第1の同期要素は2つのラッチされたDフリップフロップを含み、前記第2の同期要素は2つのラッチされたDフリップフロップを含む装置。
【請求項12】
請求項9記載の装置であって、前記第1のテスト要素は排他的ORゲートを含み、前記第2のテスト要素は排他的ORゲートを含む装置。
【請求項13】
デジタルシステムの資源の状態を決定する装置であって、第1のクロックと同期作動する第1のサブシステムが前記資源へデータを書き込み、第2のクロックと同期作動する第2のサブシステムが前記資源からデータを読み出し、前記第2のクロックは前記第1のクロックに対して非同期的であり、予め書き込まれたデータが前記資源から前記第2のサブシステムにより読み出されないうちは前記資源は付加データを前記第1のサブシステムから書き込むのに利用することができず、前記装置は、
前記第1のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第1の量を発生する手段であって、前記第1の量は前記第1のクロックに同期して発生される前記手段と、
前記第2のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第2の量を発生する手段であって、前記第2の量は前記第2のクロックに同期して発生される前記手段と、
前記第1の量を前記第2のクロックに同期させて第3の量を発生する手段と、
前記第2の量を前記第1のクロックに同期させて第4の量を発生する手段と、
前記第1の量を前記第4の量と比較して前記第1のサブシステムに対する第1の資源可用性信号を発生する手段であって、前記第1の資源可用性信号は前記第1の量が前記第4の量に等しい時にアクティブであり、前記第1の資源可用性信号は前記第1のクロックと同期して発生される手段と、
前記第2の量を前記第3の量と比較して前記第2のサブシステムに対する第2の資源可用性信号を発生する手段であって、前記第2の資源可用性信号は前記第2の量が前記第3の量とは異なる時にアクティブであり、前記第2の資源可用性信号は前記第2のクロックと同期して発生される手段と
を含むデジタルシステムの資源状態決定装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5a】
image rotate

【図5b】
image rotate

【図6】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10a】
image rotate

【図10b】
image rotate

【図10c】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2007−58881(P2007−58881A)
【公開日】平成19年3月8日(2007.3.8)
【国際特許分類】
【出願番号】特願2006−296319(P2006−296319)
【出願日】平成18年10月31日(2006.10.31)
【分割の表示】特願平9−521276の分割
【原出願日】平成8年11月13日(1996.11.13)
【出願人】(505097549)サムスン エレクトロニクス カンパニー,リミテッド (1)
【Fターム(参考)】