(57)【要約】【課題】共有資源のアクセスにおいて、同期によるシステム遅延は最小限に抑えられ、回路設計および設計段階における正確さの証明が単純化される。【解決手段】相互に非同期的なクロックドメイン内で作動する多数のサブシステム（８０２，８０４，８０６，８０８）により共有される資源（８１０）の状態を決定する方法および装置は、各サブシステムに１ビットカウンタ（８１４，８１８，８２２，８２６）を適用し、このような各ビットカウンタの値を全ての非同期クロックと同期させる。各サブシステムは各ビットカウンタ（８１４，８１８，８２２，８２６）の値を排他的ＯＲすることにより共有資源（８１０）に対する可用性状態を発生する。同期によるシステム遅延は最小限に抑えられ、回路設計および設計段階における正確さの証明が単純化される。【選択図】図３
2007058881.tif 000002
【特許請求の範囲】
【請求項１】
デジタルシステムの資源の状態を決定する方法であって、第１のクロックと同期作動する第１のサブシステムが前記資源へデータを書き込み、第２のクロックと同期作動する第２のサブシステムが前記資源からデータを読み出し、前記第２のクロックは前記第１のクロックと非同期であり、予め書き込まれたデータが前記資源から前記第２のサブシステムにより読み出されないうちは前記資源は付加データを前記第１のサブシステムから書き込むのに利用することができず、前記方法は、
前記第１のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第１の量を発生するステップであって、前記第１の量は前記第１のクロックに同期して発生される前記ステップと、
前記第２のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第２の量を発生するステップであって、前記第２の量は前記第２のクロックに同期して発生される前記ステップと、
前記第１の量を前記第２のクロックに同期させて第３の量を発生するステップと、
前記第２の量を前記第１のクロックに同期させて第４の量を発生するステップと、
前記第１の量を前記第４の量と比較して前記第１のサブシステムに対する第１の資源可用性信号を発生するステップであって、前記第１の資源可用性信号は前記第１の量が前記第４の量に等しい時にアクティブであり、前記第１の資源可用性信号は前記第１のクロックと同期して発生されるステップと、
前記第２の量を前記第３の量と比較して前記第２のサブシステムに対する第２の資源可用性信号を発生するステップであって、前記第２の資源可用性信号は前記第２の量が前記第３の量とは異なる時にアクティブであり、前記第２の資源可用性信号は前記第２のクロックと同期して発生されるステップと
を含むデジタルシステムの資源状態決定方法。
【請求項２】
請求項１記載の方法であって、前記第１の量、前記第２の量、前記第３の量、および前記第４の量は０もしくは１の値を表し、前記値は増分される時に１から０もしくは０から１へ変化し、前記第１の資源可用性信号は前記第１の量から前記第４の量までを排他的ＯＲすることにより発生され、前記第２の資源可用性信号は前記第２の量および前記第３の量を排他的ＯＲすることにより発生される方法。
【請求項３】
請求項１記載の方法であって、前記デジタルシステムの第３のサブシステムが第３のクロックと同期作動し、前記第３のクロックは前記第１のクロックおよび前記第２のクロックとは非同期であり、前記第３のサブシステムは前記資源へデータを書き込み、予め書き込まれたデータが前記第２のサブシステムにより前記資源から読み出されないうちは前記資源は前記第３のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第３のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第５の量を発生するステップであって、前記第５の量は前記第３のクロックと同期して発生される前記ステップと、
前記第１の量を前記第３のクロックと同期させて第６の量を発生するステップと、
前記第２の量を前記第３のクロックと同期させて第７の量を発生するステップと、
前記第５の量を前記第１のクロックと同期させて第８の量を発生するステップと、
前記第５の量を前記第２のクロックと同期させて第９の量を発生するステップと、
前記第１の量と前記第８の量との和を前記第４の量と比較することにより前記第１の資源可用性信号を発生するステップであって、前記第１の資源可用性信号は前記第１の量と前記第８の量との前記和が前記第４の量に等しい時にアクティブである前記ステップと、
前記第３の量と前記第９の量との和を前記第２の量と比較することにより前記第２の資源可用性信号を発生するステップであって、前記第２の資源可用性信号は前記第３の量と前記第９の量との前記和が前記第２の量とは異なる時にアクティブである前記ステップと、
前記第５の量と前記第６の量との和を前記第７の量と比較することにより第３の資源可用性信号を発生するステップであって、前記第３の資源可用性信号は前記第５の量と前記第６の量との前記和が前記第７の量に等しい時にアクティブであり、前記第３の資源可用性信号は前記第３のクロックと同期して発生される前記ステップと
を含む方法。
【請求項４】
請求項３記載の方法であって、前記デジタルシステムの第４のサブシステムが第４のクロックと同期作動し、前記第４のクロックは前記第１のクロックおよび前記第２のクロックおよび前記第３のクロックとは非同期であり、前記第４のサブシステムは前記資源からデータを読み出し、予め書き込まれたデータが前記第２のサブシステムもしくは前記第４のサブシステムにより前記資源から読み出されないうちは前記資源は前記第１のサブシステムもしくは前記第３のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第４のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第１０の量を発生するステップであって、前記第１０の量は前記第４のクロックと同期して発生される前記ステップと、
前記第１の量を前記第４のクロックと同期させて第１１の量を発生するステップと、
前記第２の量を前記第４のクロックと同期させて第１２の量を発生するステップと、
前記第５の量を前記第４のクロックと同期させて第１３の量を発生するステップと、
前記第１０の量を前記第１のクロックと同期させて第１４の量を発生するステップと、
前記第１０の量を前記第２のクロックと同期させて第１５の量を発生するステップと、
前記第１０の量を前記第３のクロックと同期させて第１６の量を発生するステップと、
前記第１の量と前記第８の量との前記和を前記第４の量と前記第１４の量との和と比較することにより前記第１の資源可用性信号を発生するステップであって、前記第１の量と前記第８の量との前記和が前記第４の量と前記第１４の量との前記和に等しい時に前記資源可用性信号はアクティブである前記ステップと、
前記第３の量と前記第９の量との前記和を前記第２の量と前記第１５の量との和と比較することにより前記第２の資源可用性信号を発生するステップであって、前記第３の量と前記第９の量との前記和が前記第２の量と前記第１５の量との前記和とは異なる時に前記第２の資源可用性信号はアクティブである前記ステップと、
前記第５の量と前記第６の量との前記和を前記第７の量と前記第１６の量との和と比較することにより前記第３の資源可用性信号を発生するステップであって、前記第５の量と前記第６の量との前記和が前記第７の量と前記第１６の量との前記和に等しい時に前記第３の資源可用性信号はアクティブである前記ステップと、
前記第１１の量と前記第１３の量との和を前記第１０の量と前記第１２の量との和と比較することにより第４の資源可用性信号を発生するステップであって、前記第１１の量と前記第１３の量との前記和が前記第１０の量と前記第１２の量との前記和に等しい時に前記第４の資源可用性信号はアクティブであり、前記第４の信号可用性信号は前記第４のクロックと同期して発生される前記ステップと  を含む方法。
【請求項５】
請求項１記載の方法であって、前記デジタルシステムの第３のサブシステムは第３のクロックと同期作動し、前記第３のクロックは前記第１のクロックおよび前記第２のクロックとは非同期であり、前記第３のサブシステムは前記資源からデータを読み出し、予め書き込まれたデータが前記第２のサブシステムもしくは前記第３のサブシステムにより前記資源から読み出されないうちは前記資源は前記第１のサブシステムから付加データを書き込むのに利用することはできず、前記方法は、さらに、
前記第３のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第５の量を発生するステップであって、前記第５の量は前記第３のクロックと同期して発生される前記ステップと、
前記第１の量を前記第３のクロックと同期させて第６の量を発生するステップと、
前記第２の量を前記第３のクロックと同期させて第７の量を発生するステップと、
前記第５の量を前記第１のクロックと同期させて第８の量を発生するステップと、
前記第５の量を前記第２のクロックと同期させて第９の量を発生するステップと、
前記第１の量を前記第４の量と前記第８の量との和と比較することにより前記第１の資源可用性信号を発生するステップであって、前記第１の量が前記第４の量と前記第８の量との前記和に等しい時に前記第１の資源可用性信号はアクティブである前記ステップと、
前記第３の量を前記第２の量と前記第９の量との和と比較することにより前記第２の資源可用性信号を発生するステップであって、前記第３の量が前記第２の量と前記第９の量との前記和とは異なる時に前記第２の資源可用性信号はアクティブである前記ステップと、
前記第５の量を前記第６の量と前記第７の量との和と比較することにより第３の資源可用性信号を発生するステップであって、前記第５の量が前記第６の量と前記第７の量との前記和に等しい時に前記第３の資源可用性信号はアクティブであり、前記第３の資源可用性信号は前記第３のクロックと同期して発生される前記ステップと
を含む方法。
【請求項６】
デジタルシステムの資源の状態を決定する方法であって、少なくとも一つの書込みサブシステムが前記資源へデータを書き込み、少なくとも一つの読出しサブシステムが前記資源からデータを読み出し、予め書き込まれたデータが前記読出しサブシステムの一つにより前記資源から読み出されないうちは前記資源は前記書込みサブシステムから付加データを書き込むのに利用することができず、各書込みサブシステムおよび各読出しサブシステムは各クロックと同期作動し、少なくとも一つの書込みサブシステムが第１のクロックと同期作動し、少なくとも一つの読出しサブシステムが第２のクロックと同期作動し、前記第２のクロックは前記第１のクロックとは非同期であり、前記方法は、
前記各書込みサブシステムに対して一つの書込み量を発生するステップであって、前記各書込み量は前記各書込みサブシステムによる前記資源へのいくつかの書込みアクセスを表し、前記各書込みサブシステムに対する前記各書込み量は前記書込みサブシステムの前記各クロックと同期して発生される前記ステップと、
前記各読出しサブシステムに対して一つの読出し量を発生するステップであって、前記各読出し量は前記各読出しサブシステムによる前記資源へのいくつかの読出しアクセスを表し、前記各読出しサブシステムに対する前記各読出し量は前記読出しサブシステムの前記各クロックと同期して発生される前記ステップと、
各書込み量を書込みサブシステムの前記クロックおよび読出しサブシステムの前記クロックと同期させるステップと、
各読出し量を書込みサブシステムの前記クロックおよび読出しサブシステムの前記クロックと同期させるステップと、
前記書込み量を加算して総書込み量を発生するステップであって、前記加算は前記各書込みサブシステムおよび前記各読出しサブシステムにより独立して実行される前記ステップと、
前記読出し量を加算して総読出し量を発生するステップであって、前記加算は前記各書込みサブシステムおよび前記各読出しサブシステムにより独立して実行される前記ステップと、
前記総書込み量および前記総読出し量を比較して資源書込み可用性書込信号を発生するステップであって、前記資源書込み可用性信号は前記総書込み量が前記総読出し量と等しい時にアクティブであり、前記比較は前記各書込みサブシステムにより独立して実行されて各資源書込み可用性信号を発生する前記ステップと、
前記総書込み量および前記総読出し量を比較して資源読出し可用性信号を発生するステップであって、前記資源読出し可用性信号は前記総書込み量が前記総読出し量とは異なる時にアクティブであり、前記比較は前記各読出しサブシステムにより独立に実行されて各資源読出し可用性信号を発生する前記ステップと、
を含む方法。
【請求項７】
請求項６記載の方法であって、前記書込み量および前記読出し量は０もしくは１の値を表し、前記値は増分される時に１から０もしくは０から１へ変化し、前記総書込み量は前記書込み量を排他的ＯＲすることにより発生され、前記総読出し量は前記読出し量を排他的ＯＲすることにより発生され、前記資源書込み可用性信号は前記総書込み量および前記総読出し量を排他的ＯＲすることにより発生され、前記資源書込み可用性信号は前記各書込みサブシステムにより独立して発生され、前記資源読出し可用性信号は前記総書込み量および前記総読出し量を排他的ＯＲすることにより発生され、前記資源読出し可用性信号は前記各読出しサブシステムにより独立して発生される方法。
【請求項８】
デジタルシステムの資源の状態を決定する方法であって、第１のクロックと同期作動する第１のサブシステムが前記資源へ１次アクセスを行い、第２のクロックと同期作動する第２のサブシステムが前記資源へ２次アクセスを行い、前記第２のクロックは前記第１のクロックに対して非同期であり、前記２次アクセスが行われないうちは前記資源にさらに前記１次アクセスを行うことはできず、前記１次アクセスが行われないうちは前記資源に前記２次アクセスを行うことはできず、前記１次アクセスは前記２次アクセスと時間的に交番しており、前記方法は、
前記第１のサブシステムによる前記資源へのいくつかの前記１次アクセスを表す第１の量を発生するステップであって、前記第１の量は前記第１のクロックに同期して発生される前記ステップと、
前記第２のサブシステムによる前記資源へのいくつかの前記２次アクセスを表す第２の量を発生するステップであって、前記第２の量は前記第２のクロックに同期して発生される前記ステップと、
前記第１の量を前記第２のクロックに同期させて第３の量を発生するステップと、
前記第２の量を前記第１のクロックに同期させて第４の量を発生するステップと、
前記第１の量を前記第４の量と比較して前記第１のサブシステムに対する第１の資源可用性信号を発生するステップであって、前記第１の資源可用性信号は前記第１の量が前記第４の量に等しい時にアクティブであり、前記第１の資源可用性信号は前記第１のクロックと同期して発生されるステップと、
前記第２の量を前記第３の量と比較して前記第２のサブシステムに対する第２の資源可用性信号を発生するステップであって、前記第２の資源可用性信号は前記第２の量が前記第３の量とは異なる時にアクティブであり、前記第２の資源可用性信号は前記第２のクロックと同期して発生されるステップと
を含むデジタルシステムの資源状態決定方法。
【請求項９】
資源の状態を決定する装置であって、書込みサブシステムが前記資源へ書込み信号を送り、読出しサブシステムが前記資源へ読出し信号を送り、前記書込みサブシステムは第１のクロックと同期作動し、前記読出しサブシステムは第２のクロックと同期作動し、前記第２のクロックは前記第１のクロックとは非同期であり、前記装置は、
第１の論理状態および第２の論理状態を有する第１の更新信号を発生する第１のセマフォア要素であって、前記第１のセマフォア要素は前記書込み信号に応答して前記書込みサブシステムが前記資源へデータを書き込む度に前記第１のクロックと同期して前記第１の更新信号の論理状態を変える第１のセマフォア要素と、
第１の論理状態および第２の論理状態を有する第２の更新信号を発生する第２のセマフォア要素であって、前記第２のセマフォア要素は前記読出し信号に応答して前記読出しサブシステムが前記資源からデータを読み出す度に前記第２のクロックと同期して前記第２の更新信号の論理状態を変える第２のセマフォア要素と、
前記第１の更新信号を前記第２のクロックと同期させて第１の同期された更新信号を発生する第１の同期要素と、
前記第２の更新信号を前記第１のクロックと同期させて第２の同期された更新信号を発生する第２の同期要素と、
第１の論理状態および第２の論理状態を有する第１のテスト出力信号を発生する第１のテスト要素であって、前記第１のテスト要素は前記第１の更新信号が前記第２の同期された更新信号と等しい場合に前記第１のテスト出力信号を前記第１の論理状態で発生し、前記第１の更新信号が前記第２の同期された更新信号とは異なる場合に前記第１のテスト出力信号を前記第２の論理状態で発生する第１のテスト要素と、
第１の論理状態および第２の論理状態を有する第２のテスト出力信号を発生する第２のテスト要素であって、前記第２のテスト要素は前記第１の同期された更新信号が前記第２の更新信号と等しい場合に前記第２のテスト出力信号を前記第１の論理状態で発生し、前記第１の同期された更新信号が前記第２の更新信号とは異なる場合に前記第２のテスト出力信号を前記第２の論理状態で発生する第２のテスト要素と
を含む資源の論理状態決定装置。
【請求項１０】
請求項９記載の装置であって、
前記第１のセマフォアは第１の排他的ＯＲゲートおよび第１のＤフリップフロップを含み、前記第１の排他的ＯＲゲートは第１の出力を有し、前記第１の出力は前記第１のＤフリップフロップに入力として接続されており、前記第１のＤフリップフロップは第２の出力を有し、前記第２の出力は前記第１の排他的ＯＲゲートに入力として接続されており、
前記第２のセマフォアは第２の排他的ＯＲゲートおよび第２のＤフリップフロップを含み、前記第２の排他的ＯＲゲートは第３の出力を有し、前記第３の出力は前記第２のＤフリップフロップに入力として接続されており、前記第２のＤフリップフロップは第４の出力を有し、前記第４の出力は前記第２の排他的ＯＲゲートに入力として接続されている装置。
【請求項１１】
請求項９記載の装置であって、前記第１の同期要素は２つのラッチされたＤフリップフロップを含み、前記第２の同期要素は２つのラッチされたＤフリップフロップを含む装置。
【請求項１２】
請求項９記載の装置であって、前記第１のテスト要素は排他的ＯＲゲートを含み、前記第２のテスト要素は排他的ＯＲゲートを含む装置。
【請求項１３】
デジタルシステムの資源の状態を決定する装置であって、第１のクロックと同期作動する第１のサブシステムが前記資源へデータを書き込み、第２のクロックと同期作動する第２のサブシステムが前記資源からデータを読み出し、前記第２のクロックは前記第１のクロックに対して非同期的であり、予め書き込まれたデータが前記資源から前記第２のサブシステムにより読み出されないうちは前記資源は付加データを前記第１のサブシステムから書き込むのに利用することができず、前記装置は、
前記第１のサブシステムによる前記資源へのいくつかの書込みアクセスを表す第１の量を発生する手段であって、前記第１の量は前記第１のクロックに同期して発生される前記手段と、
前記第２のサブシステムによる前記資源へのいくつかの読出しアクセスを表す第２の量を発生する手段であって、前記第２の量は前記第２のクロックに同期して発生される前記手段と、
前記第１の量を前記第２のクロックに同期させて第３の量を発生する手段と、
前記第２の量を前記第１のクロックに同期させて第４の量を発生する手段と、
前記第１の量を前記第４の量と比較して前記第１のサブシステムに対する第１の資源可用性信号を発生する手段であって、前記第１の資源可用性信号は前記第１の量が前記第４の量に等しい時にアクティブであり、前記第１の資源可用性信号は前記第１のクロックと同期して発生される手段と、
前記第２の量を前記第３の量と比較して前記第２のサブシステムに対する第２の資源可用性信号を発生する手段であって、前記第２の資源可用性信号は前記第２の量が前記第３の量とは異なる時にアクティブであり、前記第２の資源可用性信号は前記第２のクロックと同期して発生される手段と
を含むデジタルシステムの資源状態決定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタルシステムの分野に関し、特に共有資源の状態を決定する方法に関する。
【背景技術】
【０００２】
関連技術の説明
多くのデジタルシステムにおいて、一つのシステム資源をシステムの多くの構成要素で共有しなければならない。例えば、デジタルコンピュータシステムでは、一般的に中央処理装置（“ＣＰＵ”）がビデオディスプレイサブシステムや、時には他のＣＰＵとメモリを共有している。このような状況では、潜在的に多くの資源要求のいずれを許可するかを判断するための調停方式が必要である。さらに、一つの資源が一つのシステム構成要素（書込み“生産者”）からもう一つのシステム構成要素（読出し“消費者”）へ情報を通すのに使用される時に、生産者により資源内に格納される情報は消費者がその情報を検索するまで保護されなければならない。他の生産者が同じ資源へ情報を書き込むために競合している場合は特にそうである。したがって、生産者が共有資源へ情報を書き込むと、その情報が消費者により検索されないうちは他の生産者は資源への書き込みを禁止される。
【０００３】
共有システム資源へのアクセスを調整するための典型的な回路設計には、一つの（ハイ）論理状態で満杯を表しもう一つの（ロー）論理状態で空きを表す資源に関連する状態レジスタ（すなわち“セマフォア”）を使用することが含まれている。このようなセマフォアは典型的には標準フリップフロップを使用して実現される。セマフォアは、例えば、データを格納することができる共有資源を介して情報交換を調整するのに使用することができる。このようなセマフォアは、資源へデータを書き込んだ（消費者がデータを読み出せることを示す）ばかりの生産者により“セット”される時に資源は満杯であることを表し、資源からデータを読み出した（生産者が新しいデータを書き込めることを表す）ばかりの消費者により“リセット”される時に資源が空いていることを表す。
【０００４】
全ての生産者および消費者がセマフォアと同じクロックドメイン内で作動している限りセマフォア方式は満足なものである。均一なクロックドメインでは、更新中の信号がまだセマフォアに受信されていないか、あるいは更新されたセマフォア値がまだ全ての生産者や消費者へ伝搬されていないかに拘わらず、生産者および消費者はセマフォアの値をテストすることができる。すなわち、均一なクロックドメインでは、セマフォアの値が共有資源の真の状態を反映することを保証するのは難しくはない。
【０００５】
均一なクロックドメイン内で作動しているサブシステム間では信号を同期化させる必要はない。しかしながら、２つのサブシステムが異なるクロックドメイン内で作動する時には、一方から他方への信号を同期化させなければならない。
【０００６】
したがって、サブシステムが資源を共有するが異なるクロックドメインで作動する場合には問題が生じる。典型的なセマフォア方式は、１）どのクロックドメインをセマフォアが使用するか、２）異なるクロックドメインにまたがってどのようにセットおよびリセット信号が発生されるか、３）いつセマフォアの値が共有資源の真の状態を反映して、サブシステムがこのような状態をテストできるか、および４）関連する設計論理の正しさが設計段階においてどのようにテストされるか、といったマルチプルクロックドメインに関連する困難な問題を克服しなければならない。
【０００７】
資源を共有するが異なるクロックドメインで作動する一つの生産者および一つの消費者を含む単純なシステムでは、従来のセマフォア方式によりセマフォアのクロックドメインの３つの選択が考えられる。第１に、セマフォアは生産者のクロックドメイン内に配置することができる。このような構成では、生産者は共有資源の状態を反映するセマフォアへの即時同期アクセスを有し、したがって、生産者のセット信号はセマフォアに同期している。しかしながら、消費者のリセット信号はセマフォアに同期していない。したがって、消費者のリセット信号を生産者のクロックに同期化させてセマフォアを更新し、セマフォアの新しい値を消費者のクロックドメインへ同期化し戻して消費者が資源の状態をテストできるようにしなければならない。
【０００８】
消費者のリセット信号をセマフォア（および生産者）のクロックドメインに同期化させることに関連する遅延、およびセマフォアの新しい値を消費者のクロックドメイン内へ同期化し戻すことに関連するもう一つの遅延がある。これらの遅延により、消費者によりテストされるセマフォアの値が有効ではない（資源の真の状態を反映しない）場合に時間のウィンドが作り出される。この時間のウィンド中にセマフォアをテストすると、消費者は有効ではないセット状態を検出する。消費者が早まってセマフォアをテストするのを防止するためには、それ自体の更新信号がセマフォアをリセットすることができかつセマフォアの新しいリセット値が消費者へ達するのに十分なだけ消費者を遅延させなければならない。
【０００９】
セマフォアに対するクロックドメインの第２の選択は、消費者のクロックドメインを使用することである。消費者のクロックドメインの使用を選出することにより、遅延問題の逆のシナリオが提示される、すなわち生産者が早まってセマフォアをテストするのを防止して無効なリセット状態を検出する可能性を回避するのに十分なだけ生産者を遅延させなければならない。
【００１０】
セマフォアに対するクロックドメインの第３の選択は、生産者や消費者のクロックドメインとは異なる第３のクロックドメインを使用することである。この場合、生産者と消費者の両方を遅延させてセマフォアを早まってテストすることがないようにしなければならない。したがって、セマフォアに対するクロックドメインの選択に無関係に、生産者、もしくは消費者、もしくはその両者を同期化を行える遅延だけ遅らせなければならない。
【００１１】
２つ以上の生産者が共有資源へ書き込みを行う必要があるか、あるいは２つ以上の消費者が共有資源から読み出しを行う必要がある場合には、さらに困難な問題が生じる。生産者による書込みおよび消費者による読出しを支配するアービター要素を導入しなければならない。このようなアービターの役割は生産者と消費者の間でアクセス権を調整して、一つの資源へ同時に書き込む２つ以上の生産者あるいは一つの資源から同時に読み出す２つ以上の消費者により生じる競合状態を回避することである。典型的なアービター要素は資源に対する多数の要求を受信して、唯一の要求者へアクセスを許可しその要求者が現在のユーザとなる。現在のユーザが資源を解放しないうちは、アービターはその資源に対する他の要求を許可しない。
【００１２】
多数の生産者を含むシステムでは、アービターは共有資源への生産者の書込みアクセスを調整する必要がある。多数の消費者を含むシステムでは、アービターは共有資源への消費者の読出しアクセスを調整する必要がある。多数の生産者および消費者を含むシステムでは、生産者を調整するものと消費者を調整するものとの２つのアービターが必要である。
【００１３】
調停を必要とするマルチプルクロックドメインでは、同期化問題はより複雑となる。アービターが生産者もしくは消費者の共有資源へのアクセス要求を最終的に許可する場合には、生産者もしくは消費者はセマフォアの値が資源の真の状態を反映することを保証しなければならない。
【００１４】
この問題をより詳細に記述するために、一つの生産者が共有資源へのデータの書込みを終了し、セマフォアをセットするための更新信号を送り共有資源へのアクセス権を解放するものと仮定する。また、アービターは次に資源の解放を検出して第２の生産者のアクセス要求を許可するものと仮定する。一方、セマフォアのクロックドメインと同期化されなければならないことがある第１の生産者の更新信号がセマフォアをセットする。セマフォアの値はいずれ第２の生産者のクロックと同期化させて、第２の生産者が資源の状態を有効にテストできるようにしなければならない。アービターが第２の生産者の資源に対する要求を許可した時に、第２の生産者によりテストされるセマフォアの値は、それを第２の生産者のクロックドメイン内へ同期化させるのに不十分な時間である場合には、共有資源の真の状態を反映しないことがある。この問題の従来の解決策は、やはり遅延を導入することである。
【００１５】
一つの生産者のアクセス解放ともう一つの生産者のアービターによる許可の検出との間の時間が、一つの生産者のセマフォアへの更新信号の発行ともう一つの生産者のクロックドメイン内へのセマフォアの新しい更新値の同期化との間の時間と少なくとも同じ長さであることを保証する遅延を調停論理内へ導入することにより、このタイミング問題が解決されている。３つ以上の生産者もしくは３つ以上の消費者を含むシステムでは、所要の調停遅延は常に最も遅いクロックドメインに基づいていて、最も遅い生産者もしくは消費者が共有資源の状態を早まってテストすることがないよう保証しなければならない。
【００１６】
従来の調停セマフォアの一つの欠点は、所要の遅延によりシステム性能が劣化することである。高速コンピュータシステムが重要視されそれに対するニーズが高まる中で、システム速度のいかなる劣化も著しい欠点となる。
【００１７】
導入される遅延を最適化する試みがなされてきてはいるが、このような試みはたとえうまくいっても異常に複雑化して実現するのが困難である。従来の調停セマフォア方式のもう一つの欠点は、所要遅延の最適化を実現するのが困難なことである。
【００１８】
調停セマフォア方式のもう一つの欠点は、最悪シナリオを克服するのに必要な考えられる最短遅延時間を決定するために、設計段階において実質的な解析を必要とすることである。必要な解析の複雑度はさまざまなクロックドメイン内で作動している生産者や消費者の数と共に指数関数的に増大し、さまざまな付加クロックドメインがセマフォアもしくはアービターもしくはその両方を含む場合にはさらに複雑化する。
【００１９】
しかしながら、最も重要な欠点は調停セマフォア方式は設計段階において正しさを証明するのが困難なことである。この問題は関連する論理が大規模集積回路の小型部品１個だけである場合によく理解できるであろう。大規模集積回路の製造設備を整えるのに大きなコストがかかるため、設計段階において全ての論理の正しさを検証して非常にコストのかさむ誤りを回避することが非常に強調される。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
発明の要約
本発明は共有資源の状態を決定するのに必要な論理の複雑度を低減してこのような論理の性能を改善するものである。特に、本発明により共有資源の可用性もしくは非可用性を各資源共有サブシステムへ通知するのに必要な時間間隔が最小限に抑えられる。本発明により共有資源の状態を表すのに従来のセマフォアを使用することが有利に回避される。
【課題を解決するための手段】
【００２１】
本発明の一つの特徴は各資源共有サブシステムに対する１ビット２進カウンタ（１ビットレジスタ）である。共有資源へのアクセスを開始する度に、サブシステムはそのビットレジスタの値をトグルする。このようにして、各資源共有サブシステムは共有資源に対して開始されている各アクセスを表示する。
【００２２】
本発明のもう一つの特徴は、各資源共有サブシステムの各ビットレジスタの値と他の資源共有サブシステムが作動する全ての非同期クロックドメインとの同期化である。このようにして、各資源共有サブシステムの各ビットレジスタの値を各サブシステムで利用できるため、各サブシステムは共有資源に対してなされるあらゆるアクセスを検出することができる。
【００２３】
本発明のさらにもう一つの特徴は、各資源共有サブシステムによる共有資源の状態の独立決定である。各サブシステムは各資源共有サブシステムの各ビットレジスタの値を比較する論理を含んでいる。このような比較の結果は状態信号を含んでいる。したがって、各サブシステムが共有資源の可用性を示すそれ自体の状態信号を引き出す。
【００２４】
本発明のさらにもう一つの特徴は、サブシステムによる共有資源の状態変化をそのサブシステムへ即時に同期的に通知することである。サブシステムが共有資源へのアクセスを開始する度に、アクセスするサブシステムは共有資源の可用性が変わっていることを即時に通知される。
【００２５】
本発明には従来のセマフォアがないため、セマフォアと非同期サブシステムから発生される各更新信号のセマフォアに対する同期化を必要とする資源共有サブシステムとの間に非同期関係はない。したがって、共有資源へのアクセスを開始した後で、サブシステムがそれ自体のアクセスにより生じる可用性の変化を検出することができる時間のウィンドはない。したがって、サブシステムが早まって共有資源をアクセスするのを防止するために付加遅延を介在させる必要がなく、さらに、非同期クロックドメイン内の共有資源のアクセスに関連する遅延は最小限に抑えられる。
【００２６】
本発明に従った方法によりデジタルシステムの資源の状態が決定され、第１のクロックと同期作動している第１のサブシステムが資源へデータを書き込み、第２のクロックと同期作動している第２のサブシステムが資源からデータを読み出し、第２のクロックは第１のクロックに対して非同期とされ、前に書き込まれたデータが第２のサブシステムにより資源から読み出されないうちは資源を第１のサブシステムからの付加データの書き込みに利用することができない。本方法は、第１のサブシステムによる資源へのいくつかの書込みアクセスを表す第１の量を発生するステップであって、第１の量は前記第１のクロックと同期して発生されるステップと、第２のサブシステムによる資源へのいくつかの読出しアクセスを表す第２の量を発生するステップであって、第２の量は第２のクロックと同期して発生されるステップと、第１の量を第２のクロックと同期化させて第３の量を発生するステップと、第２の量を第１のクロックと同期化させて第４の量を発生するステップと、第１の量を第４の量と比較して第１のサブシステムのための第１の資源可用性信号を発生するステップであって、第１の資源可用性信号は第１の量が第４の量に等しい場合にアクティブであり、第１の資源可用性信号は第１のクロックに同期して発生される前記ステップと、第２の量を第３の量と比較して第２のサブシステムのための第２の資源可用性信号を発生するステップであって、第２の資源可用性信号は第２の量が第３の量とは異なる場合にアクティブであり、第２の資源可用性信号は第２のクロックに同期して発生される前記ステップと、を含んでいる。
【００２７】
本発明に従ったもう一つの方法により、デジタルシステムの資源の状態が決定され、少なくとも一つの書込みサブシステムが資源へデータを書き込み、少なくとも一つの読出しサブシステムが資源からデータを読み出し、予め書き込まれたデータが一つの読出しサブシステムにより資源から読み出されないうちは資源を書込みサブシステムからの付加データの書き込みに利用することができず、各書込みサブシステムおよび各読出しサブシステムは各クロックと同期作動し、少なくとも一つの書込みサブシステムは第１のクロックと同期作動し、少なくとも一つの読出しサブシステムは第２のクロックと同期作動し、第２のクロックは第１のクロックと非同期である。本方法は、各書込みサブシステムに対して一つの書込み量を発生するステップであって、各書込み量が各書込みサブシステムによる資源へのいくつかの書込みアクセスを表し、各書込みサブシステムに対する各書込み量は書込みサブシステムの各クロックと同期して発生されるステップと、各読出しサブシステムに対して一つの読出し量を発生するステップであって、各読出し量が各読出しサブシステムによる資源へのいくつかの読出しアクセスを表し、各読出しサブシステムに対する各読出し量は読出しサブシステムの各クロックと同期して発生されるステップと、各書込み量を書込みサブシステムのクロックおよび読出しサブシステムのクロックと同期化させるステップと、各読出し量を書込みサブシステムのクロックおよび読出しサブシステムのクロックと同期化させるステップと、書込み量を加算して総書込み量を発生するステップであって、加算は各書込みサブシステムおよび各読出しサブシステムにより独立して実施されるステップと、読出し量を加算して総読出し量を発生するステップであって、加算は各書込みサブシステムおよび各読出しサブシステムにより独立して実施されるステップと、総書込み量および総読出し量を比較して資源書込み可用性信号を発生するステップであって、資源書込み可用性信号は総書込み量が総読出し量に等しい時にアクティブであり、比較は各書込みサブシステムにより独立して実施されて各資源書込み可用性信号を発生するステップと、総書込み量および総読出し量を比較して資源読出し可用性信号を発生するステップであって、資源読出し可用性信号は総書込み量が総読出し量とは異なる時にアクティブであり、比較は各読出しサブシステムにより独立して実施されて各資源読出し可用性信号を発生するステップと、を含んでいる。
【００２８】
本発明に従ったもう一つの方法により、デジタルシステムの資源の状態が決定され、第１のクロックと同期作動している第１のサブシステムが資源へ１次アクセスを行い、第２のクロックと同期作動している第２のサブシステムが資源へ２次アクセスを行い、第２のクロックは第１のクロックに対して非同期的であり、２次のアクセスが生じないうちは資源をさらに１次アクセスに利用することはできず、１次のアクセスが生じないうちは資源をさらに２次アクセスに利用することはできず、１次アクセスは２次アクセスと時間が交番している。本方法は、第１のサブシステムによる資源へのいくつかの１次アクセスを表す第１の量を発生するステップであって、第１の量は第１のクロックと同期して発生されるステップと、第２のサブシステムによる資源へのいくつかの２次アクセスを表す第２の量を発生するステップであって、第２の量は第２のクロックと同期して発生されるステップと、第１の量を第２のクロックと同期化させて第３の量を発生するステップと、第２の量を第１のクロックと同期化させて第４の量を発生するステップと、第１の量を第４の量と比較して第１のサブシステムに対する第１の資源可用性信号を発生するステップであって、第１の資源可用性信号は第１の量が第４の量に等しい時にアクティブであり、第１の資源可用性信号は第１のクロックと同期化して発生されるステップと、第２の量と第３の量とを比較して第２のサブシステムに対する第２の資源可用性信号を発生するステップであって、第２の資源可用性信号は第２の量が第３の量とは異なる時にアクティブであり、第２の資源可用性能信号は第２のクロックと同期化して発生されるステップと、を含んでいる。
【００２９】
本発明に従った装置により資源の状態が決定され、書込みサブシステムは資源へ書込み信号を送り、読出しサブシステムは資源へ読出し信号を送り、書込みサブシステムは第１のクロックと同期作動し、読出しサブシステムは第２のクロックと同期作動し、第２のクロックは第１のクロックとは非同期的である。本装置は、第１の論理状態および第２の論理状態を有する第１の更新信号を発生する第１のセマフォア要素であって、第１のセマフォア要素は書込み信号に応答して書込みサブシステムが資源へデータを書込む度に第１のクロックと同期して第１の更新信号の論理状態を変化させる第１のセマフォア要素と、第１の論理状態および第２の論理状態を有する第２の更新信号を発生する第２のセマフォア要素であって、第２のセマフォア要素は読出し信号に応答して読出しサブシステムが資源からデータを読出す度に第２のクロックと同期して第２の更新信号の論理状態を変化させる第２のセマフォア要素と、第１の更新信号を第２のクロックと同期化させて第１の同期化された更新信号を発生する第１の同期化要素と、第２の更新信号を第１のクロックと同期化させて第２の同期化された更新信号を発生する第２の同期化要素と、第１の論理状態および第２の論理状態を有する第１のテスト出力信号を発生する第１のテスト要素であって、第１のテスト要素は第１の更新信号が第２の同期化された更新信号と等しい場合に第１のテスト出力信号を第１の論理状態で発生し、第１の更新信号が第２の同期化された更新信号とは異なる場合に第１のテスト出力信号を第２の論理状態で発生する第１のテスト要素と、第１の論理状態および第２の論理状態を有する第２のテスト出力信号を発生する第２のテスト要素であって、第２のテスト要素は第１の同期化された更新信号が第２の更新信号と等しい場合に第２のテスト出力信号を第１の論理状態で発生し、第１の同期化された更新信号が第２の更新信号とは異なる場合に第２のテスト出力信号を第２の論理状態で発生する第２のテスト要素と、を含んでいる。
【００３０】
本発明に従ったもう一つの装置により、デジタルシステムの資源の状態が決定され、第１のクロックと同期作動している第１のサブシステムは資源へデータを書き込み、第２のクロックと同期作動している第２のサブシステムは資源からデータを読み出し、第２のクロックは第１のクロックに対して非同期的であり、予め書き込まれたデータが第２のサブシステムにより資源から読み出されないうちは資源を第１のサブシステムから付加データを書き込むのに利用することができない。本装置は、第１のサブシステムによる資源へのいくつかの書込みアクセスを表す第１の量を発生する手段であって、第１の量は第１のクロックと同期して発生される手段と、第２のサブシステムによる資源へのいくつかの読出しアクセスを表す第２の量を発生する手段であって、第２の量は第２のクロックと同期して発生される手段と、第１の量を第２のクロックと同期化させて第３の量を発生する手段と、第２の量を第１のクロックと同期化させて第４の量を発生する手段と、第１の量を第４の量と比較して第１のサブシステムに対する第１の資源可用性信号を発生する手段であって、第１の資源可用性信号は第１の量が第４の量に等しい時にアクティブであり、第１の資源可用性信号は第１のクロックと同期化して発生される手段と、第２の量と第３の量とを比較して第２のサブシステムに対する第２の資源可用性信号を発生する手段であって、第２の資源可用性信号は第２の量が第３の量とは異なる時にアクティブであり、第２の資源可用性信号は第２のクロックと同期化して発生される手段と、を含んでいる。
【実施例】
【００３１】
好ましい実施例の詳細な説明
図１は、全てのサブシステムが単一の共有資源１０２へアクセスすることができる、コンピュータシステム内の多数のサブシステムを表す単純化したブロック図である。サブシステムは“生産者”および“消費者”を含み、このような各生産者が資源１０２へデータを書き込むことができ、このような各消費者が資源からデータを読み出すことができる。図１の生産者サブシステムは共有資源１０２へデータを書き込むことにより消費者サブシステムへ情報を提供することができ、次にそれは消費者により読み出すことができる。共有資源１０２は一つのデータ要素を保持することができる。
【００３２】
図１に示す各生産者および消費者サブシステムは異なるクロックドメイン内で作動する。クロックドメインは同じ周波数および位相で作動する一つの以上のクロックを含むことがお判りであろう。また、ここに記載する各システムは公知の１組の状態へ初期リセットされることもお判りであろう。リセットは全ての図面には図示されていないが、当業者ならば各システムにリセット機構が設けられることがお判りであろう。
【００３３】
本発明は共有資源の可用性の決定に向けられている。本発明を使用すれば、全てが同じクロックドメイン、異なるクロックドメイン、もしくはその任意の組合せで作動する任意数の生産者サブシステムや消費者サブシステムが共有資源を利用できるかどうかを決定することができる。
【００３４】
図２は一つのデータ要素を保持することができる資源２０２を共有する２つの生産者サブシステム（“Ｐ１”および“Ｐ２”）および２つの消費者サブシステム（“Ｃ１”および“Ｃ２”）を含むデジタルシステムの一部の単純化したブロック図である。各生産者および消費者は関連するカウンタ要素（“Ｐ１＿Ｃｏｕｎｔ”，“Ｐ２＿Ｃｏｕｎｔ”，“Ｃ１＿Ｃｏｕｎｔ”，および“Ｃ２＿Ｃｏｕｎｔ”）を有している。各カウンタ要素はゼロで始まる整数値を保持することができ、このような値は１だけ増分させることができる。
【００３５】
第１の生産者２０４はカウンタ２０６およびテスト論理構成要素２０８を含んでいる。第１の生産者２０４は共有資源２０２へデータを書き込む度にカウンタ２０６を１だけ増分する。第２の生産者２１０もカウンタ２１２およびテスト論理構成要素２１４を含んでいる。第２の生産者２１０は共有資源２０２へデータを書き込む度にカウンタ２１２を１だけ増分する。
【００３６】
第１の消費者２１６はカウンタ２１８およびテスト論理構成要素２２０を含んでいる。第１の消費者２１６は共有資源２０２からデータを読み出す度にカウンタ２１８を１だけ増分する。同様に、第２の消費者２２２はカウンタ２２４およびテスト論理構成要素２２６を含んでいる。第２の消費者２２２は共有資源２０２からデータを読み出す度にカウンタ２２４を１だけ増分する。
【００３７】
両方の生産者および両方の消費者が４個のカウンタの全ての値を読み出すことができる。したがって、例えば、第１の生産者２０４のカウンタ２０６の値は第１の生産者２０４により読み出すことができるだけでなく、第１の消費者２１６および第２の消費者２２２のみならず第２の生産者２１０により読み出すことができる。
【００３８】
予め書き込まれたデータが読み出される前に共有資源２０２へデータが書き込まれるのを回避するために、生産者はいつ共有資源へデータの書き込みが許されるかを確認できなければならない。いつ共有資源へデータの書き込みが許されるかを確認するために、生産者は資源の状態をチェックしなければならない。消費者によりまだ検索されていないデータ（すなわち、“フレッシュ”データ）が資源に含まれている場合には、生産者は前の予定した通信を破壊せずに資源内へ新しいデータ配置することはできない。
【００３９】
また、消費者は資源の状態をチェックして、資源内部のデータが既に消費者により読み出されている古いデータ（すなわち、“失効”データ）であるか読み出す準備ができている新しいデータであるかを確認しなければならない。消費者は失効データの読み出しを回避し読み出されるいかなるデータもフレッシュであることを保証しなければならない。
【００４０】
図２に示す均一なクロック環境では、第１の生産者２０４はシステム内の全生産者および消費者の全てのカウンタの値を読み出すことにより、共有資源２０２へデータを書き込むことが安全なのはいつであるか（すなわち、いつ資源が失効データを含んでいるか）を確認することができる。第１の生産者２０４のテスト論理構成要素２０８はそれ自体のカウンタ２０６の値と第２の生産者のカウンタ２１２の値を加算して共有資源２０２への書込みの総数を発生する。また、第１の生産者２０４のテスト論理構成要素２０８は第１の消費者のカウンタ２１８の値と第２の生産者のカウンタ２２４の値を加算して共有資源２０２からの読出しの総数を発生する。次に、テスト論理構成要素２０８は読出しの総数を書込みの総数から減じる。ゼロの結果は共有資源２０２へのデータ書込みが安全であることを第１の生産者２０４へ示す。ゼロの結果は共有資源へデータを書き込む生産者のあらゆる段階に資源からデータを読み出す消費者の一致する段階が伴うことを示す。同様に、このような減算の結果が非ゼロであれば、第１の生産者２０４は共有資源２０２へデータを書き込むのは安全ではないことを認識することができる（すなわち、まだ読み出されていないフレッシュデータが資源内に存在する）。
【００４１】
第１の生産者２０６が共有資源２０２の状態をテストするのに必要なテスト論理は次式で表すことができる。
Ｐ１＿Ｔｅｓｔ＝（Ｐ１＿Ｃｏｕｎｔ＋Ｐ２＿Ｃｏｕｎｔ）−（Ｃ１＿
Ｃｏｕｎｔ＋Ｃ２＿Ｃｏｕｎｔ）
Ｐ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源２０２内に失効データが存在し第１の生産者２０４は共有資源２０２へ安全に新しいデータを書き込むことができる。Ｐ１＿Ｔｅｓｔ式の結果が非ゼロであれば、共有資源２０２内にフレッシュデータが存在し第１の生産者２０４は共有資源２０２内へ新しいデータを配置できない。
【００４２】
同様なテスト論理により、消費者は共有資源がいつ読み出しに利用できるかを認識することができる。第１の消費者２１６のテスト論理構成要素２２０は、前記した第１の生産者２０４のテスト論理構成要素２０８により実施されるのと同じ計算を独立して実施する。結果が非ゼロであれば、資源２０２内にフレッシュデータが存在し、第１の消費者２１６は共有資源２０２からデータを読み出すことができる。結果がゼロであれば、資源２０２内に失効データが存在し、第１の消費者２１６はデータを読み出すことができない。
【００４３】
消費者２１６が共有資源２０２の状態をテストするのに必要なテスト論理は生産者２０６に必要なものと同じテスト論理である。
Ｃ１＿Ｔｅｓｔ＝（Ｐ１＿Ｃｏｕｎｔ＋Ｐ２＿Ｃｏｕｎｔ）−（Ｃ１＿
Ｃｏｕｎｔ＋Ｃ２＿Ｃｏｕｎｔ）
Ｃ１＿Ｔｅｓｔ式の結果が非ゼロであれば、共有資源２０２内にフレッシュデータが存在し第１の消費者２１６は共有資源２０２から安全にデータを読み出すことができる。Ｃ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源２０２内に失効データが存在し、第１の消費者２１６はデータを読み出すことができない。
【００４４】
図２は理論的な目的だけに提供されていることを理解できるであろう。実際上、いかなる整数カウンタも無限のカウンティングを行うことはできない。一般的に、このようなカウンタはその要領を越えて増分するとゼロ値へ“ラップアラウンドする”。図２に関して前記したテスト論理式はカウンタの一つが非常に大きい数から突然ゼロとなる時はいつでも目的を果たすことができない。しかしながら、図２は本発明の基本的な理論を例示するのに有用である、すなわち、各サブシステムにそれ自体の資源アクセスの履歴を強制的に表現させ、次に全てのサブシステムのこのようなアクセス履歴を調べることにより共有資源の状態を決定することができる。
【００４５】
図３は２つの生産者サブシステム（“Ｐ１”および“Ｐ２”）および２つの消費者サブシステム（“Ｃ１”および“Ｃ２”）を表す単純化したブロック図である。４つのサブシステムの全てが、単一データ要素を保持することができる共有資源３０２へのアクセスを有している。また、図３に示すシステム内の各生産者および各消費者は異なるクロックドメイン内で作動する。すなわち、図３には各サブシステムに一つずつの４つの異なるクロックドメインが図示されている。
【００４６】
図３はカウンタ３０６およびテスト論理構成要素３０８を含み第１のクロック（Ｐ１＿Ｃｌｋ）と同期して作動する第１の生産者３０４を表している。第１の生産者３０４は、第１の生産者２０４が共通資源３０２へデータを書き込む度にカウンタ３０６を１だけ増分する。第２の生産者３１０も同様に、カウンタ３１２およびテスト論理構成要素３１４を含み第２のクロック（Ｐ２＿Ｃｌｋ）と同期して作動する。第２の生産者３１０は共通資源３０２へデータを書き込む度にカウンタ３１２を１だけ増分する。第１の消費者３１６はカウンタ３１８およびテスト論理構成要素３２０を含み、第３のクロック（Ｃ１＿Ｃｌｋ）と同期して作動する。第１の消費者３１６は共通資源３０２からデータを読み出す度にカウンタ３１８を１だけ増分する。同様に、第２の消費者３２２はカウンタ３２４およびテスト論理構成要素３２６を含み第４のクロック（Ｃ２＿Ｃｌｋ）と同期して作動する。第２の消費者３２２は共通資源３０２からデータを読み出す度にカウンタ３２４を１だけ増分する。
【００４７】
図２で説明したシステムの場合と同様に、テスト論理構成要素により各生産者は共有資源へデータを書き込むことが安全であるかどうかを確認（データが“失効”であるかを検出）することができ、各消費者は共有資源からデータを読み出すことが安全であるかどうかを確認（データが“フレッシュ”であるかどうかを検出）することができる。しかしながら、図３のサブシステムは異なるクロックドメインで作動しており、したがって、生産者や消費者のテスト論理構成要素が他のサブシステムに関連するカウンタの値を使用できないうちに、当業者ならばこのような値をテスト論理構成要素のクロックに同期させなければならないことがお判りであろう。
【００４８】
したがって、カウンタ３０６が第１の生産者３０４と同じクロックドメインで作動しているため、第１の生産者３０４はカウンタ３０６の値への即時同期アクセスを有している。しかしながら、第１の生産者３０４は第２の生産者３１０のカウンタ３１２の値、第１の消費者３１６のカウンタ３１８の値、もしくは第２の消費者３２２のカウンタ３２４の値への同期アクセスは有していない。第１の生産者３０４がカウンタ３１２，３１８，および３２４の値を読み出せるようにするには、各カウンタ値を生産者のクロックＰ１＿Ｃｌｋと同期化させなければならない。
【００４９】
図３はカウンタ３１２，３１８，および３２４の値とクロックＰ１＿Ｃｌｋとの同期化を例示している。したがって、第２の生産者３１０のカウンタ３１２の値はＰ１＿Ｃｌｋによりクロックされる同期化要素への入力である。カウンタ３１２の同期化された値は、次に第１の生産者３０４のテスト論理構成要素３０８へ伝搬される。同様に、第１の消費者３１６のカウンタ３１８の値もＰ１＿Ｃｌｋによりクロックされる同期化要素への入力である。カウンタ３１８の同期化された値は、次に第１の生産者３０４のテスト論理構成要素３０８へ伝搬される。また、第２の消費者３２２のカウンタ３２４の値はＰ１＿Ｃｌｋによりクロックされる同期化要素へ入力される。カウンタ３２４の同期化された値は、次に第１の生産者３０４のテスト論理構成要素３０８へ伝搬される。
【００５０】
全てのカウンタ値が生産者もしくは消費者のクロックドメインと同期化されると、その生産者もしくは消費者は共通資源３０２の状態をチェックすることができる。図２に関して説明したように、第１の生産者３０４は消費者カウンタ（３１０，３１２）の値の和を生産者カウンタ（３０４，３０８）の値の和から減じることにより共通資源３０２の状態をチェックすることができる。第１の生産者３０４が共通資源３０２の状態をチェックするのに使用するテスト論理は、次式で表すことができる。
Ｐ１＿Ｔｅｓｔ＝（Ｐ１＿Ｃｏｕｎｔ＋Ｐ２＿Ｃｏｕｎｔ↑Ｐ１）−
（Ｃ１＿Ｃｏｕｎｔ↑Ｐ１＋Ｃ２＿Ｃｏｕｎｔ↑Ｐ１）
Ｐ２＿Ｃｏｕｎｔ，Ｃ１＿Ｃｏｕｎｔ，およびＣ２＿Ｃｏｕｎｔと生産者３０４のクロックＰ１＿Ｃｌｋとの同期化は方程式内に演算添字“↑Ｐ１”で表示されている。図２に関して前記したように、Ｐ１＿Ｔｅｓｔ式のゼロ結果は資源３０２内に失効データがあることを示し、第１の生産者３０４は次に新しいデータを資源３０２へ書き込むことができる。一方、非ゼロ値は資源３０２内にフレッシュデータがあることを示し、生産者３０４は新しいデータを資源３０２へ書き込むことができない。
【００５１】
第１の消費者３１６が使用するテスト論理は全く同じであり同じ方程式で表すことができる。例えば、第１の消費者３１６に対するテスト論理式は次式で表される。
Ｃ１＿Ｔｅｓｔ＝（Ｐ１＿Ｃｏｕｎｔ↑Ｃ１＋Ｐ２＿Ｃｏｕｎｔ↑Ｃ１）−
（Ｃ１＿Ｃｏｕｎｔ＋Ｃ２＿Ｃｏｕｎｔ↑Ｃ１）
Ｐ１＿Ｃｏｕｎｔ，Ｐ２＿Ｃｏｕｎｔ，およびＣ２＿Ｃｏｕｎｔは全て第１の消費者３１６のクロックＣ１＿Ｃ１ｋと同期化されていることが理解できるであろう。Ｃ１＿Ｔｅｓｔ式の結果が非ゼロであれば、第１の消費者３１６は共通資源３０２から安全にデータを読み出すことができる。Ｃ１＿Ｔｅｓｔ式の結果がゼロであれば、第１の消費者３１６は共通資源３０２からデータを読み出すことができない。
【００５２】
図２の場合と同様に、図３は理論的に有用であるにすぎない。実際上、カウンタは無限にカウントすることはできないため、図３のテスト論理は使用すると失敗する。
【００５３】
図４は異なるクロックドメインで作動する一つの生産者サブシステム（“Ｐ１”）および一つの消費者サブシステム（“Ｃ１”）を含むデジタルシステムの一部を表す単純化したブロック図である。生産者および消費者サブシステムは単一データ要素を保持できる資源４０２を共有する。
【００５４】
図４に示すように、生産者サブシステム４０４はビットレジスタ４０６およびテスト論理構成要素４０８を含み第１のクロック（Ｐ１＿Ｃｌｋ）と同期作動する。消費者サブシステム４１０はビットレジスタ４１２およびテスト論理構成要素４１４を含み第２のクロック（Ｃ１＿Ｃｌｋ）と同期作動する。各ビットレジスタ（４０６，４１２）は０もしくは１の値を表すことができる。
【００５５】
生産者４０４は消費者４１０のビットレジスタ４１２の値を読み出すことができ、消費者４１０は生産者４０４のビットレジスタ４０６の値を読み出すことができる。しかしながら、生産者４０４および消費者４１０は非同期クロックドメインで作動している。それゆえ、ビットレジスタ４１２の値は生産者４０４のクロックＰ１＿Ｃｌｋと同期化しなければならず、ビットレジスタ４０６の値は消費者４１０のクロックＣ１＿Ｃｌｋと同期化しなければならない。したがって、図４にはＰ１＿Ｃｌｋによりクロックされる同期化要素へ入力として伝搬されるビットレジスタ４１２の値が例示されている。次に、ビットレジスタ４１２の同期化された値は生産者４０４のテスト論理構成要素４０８へ伝搬される。また、ビットレジスタ４０６の値はＣ１＿Ｃｌｋによりクロックされる同期化要素へ入力として伝搬される。次に、ビットレジスタ４０６の同期化された値は消費者４１０のテスト論理構成要素４１４へ伝搬される。
【００５６】
本発明は生産者が共有資源へデータを書き込んだ回数（“書込み”数）を消費者が同じ共有資源からデータを読み出した回数（“読出し”数）と比較することに関連している。本発明の目的ために、共有資源の状態は書込み数が読出し数と同じか違うかを確認してチェックすることができる、すなわち、共有資源の状態をチェックするのに実際の読出しもしくは書込み数を計算する必要がない。
【００５７】
したがって、図２および図３に関して前記したテスト論理は単純化することができる。共有資源４０２は一つのデータ要素しか保持できずかつ共有資源の状態を表すのにゼロもしくは非ゼロ結果しか必要としないため、当業者ならば図２および図３に関して前記したカウンタは２進ビットレジスタで置換できることがお判りであろう。さらに、当業者ならば同じ理由で図２および図３に関して前記した加減算をブール代数演算“排他的ＯＲ”で置換できることがお判りであろう。
【００５８】
排他的ＯＲ演算は従来技術で周知である。排他的ＯＲ演算を２つの２進オペランドに適用すると、一方の２進オペランドがハイ状態で他方がロー状態である時にハイ状態出力が得られる。排他的ＯＲ演算により、両方の２進オペランドがハイ状態であるかあるいは両方の２進オペランドがロー状態である時にロー状態出力が得られる。
【００５９】
排他的ＯＲ演算は、いくつかの書込みをいくつかの読出しに対して比較して（このような各書込みもしくは読出しはその各２進ビットレジスタの値を変える生産者や消費者により表示される）書込み数が読出し数に一致するかどうかを確認するのに理想的に適していることが容易にお判りであろう。本発明は厳密に強化された書込み−読出し−書込み−読出しアクセス方式に向けられており、書込みを介在しない２つ以上の読出しだけでなく読出しを介在しない２つ以上の書込みを絶対的に禁止する。このようなアクセス方式を利用しているシステムの状況において、２進オペランドとしての各ビットレジスタへ排他的ＯＲ演算を適用すると、書込み数が読出し数に一致する時に０が生じ一致しない時に１が生じる。
【００６０】
したがって、生産者４０４および消費者４１０は図２および図３で説明した整数カウンタの替わりに２進ビットレジスタ（４０６，４１２）を含んでいる。生産者４０４はそれ自体のビットレジスタ４０６の値と消費者４１０のビットレジスタ４１２の値を排他的ＯＲすることにより、共有資源４０２内に失効データが存在するかどうかを確認することができる。このような排他的ＯＲ演算は生産者４０４のテスト論理構成要素４０８において実施される。両方のビットレジスタ（４０６，４１２）の値を排他的ＯＲすることにより得られる結果がゼロであれば、失効データが存在し、生産者４０４は共有資源４０２へデータを書き込むことができる。しかしながら、結果が１であればフレッシュデータが共有資源４０２を占有し、生産者４０４は共有資源４０２へ新しいデータを書き込むことができない。
【００６１】
必要なテスト論理を例示するために、生産者４０４は次式に従って共有資源４０２の状態を確認することができる。
2007058881.tif 000003
排他的ＯＲ演算は前式に
2007058881.tif 000004
オペラレータで表示されている。Ｐ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源４０２内の任意のデータが既に消費者４１０により読み出されており（データは失効）、生産者４０４は共有資源４０４へ新しいデータを書き込むことができる。しかしながら、Ｐ１＿Ｔｅｓｔ式の結果が１であれば、共有資源４０２内にフレッシュデータが存在し生産者４０４は共有資源４０２へ新しいデータを書き込むことができない。
【００６２】
同じテスト論理が消費者４１０により使用される。例えば、消費者４１０は次式に従って共有資源４０２の状態を確認することができる。
2007058881.tif 000005
Ｃ１＿Ｔｅｓｔ式の結果が１であれば、共有資源４０２内にフレッシュデータが存在し消費者４１０は即座にデータを読み出すことができる。他方、Ｃ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源４０２内のデータは失効しており消費者４１０はデータを読み出すことができない。
【００６３】
図５は一つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立してテストできるようにする論理を表す論理図である。図５には共有資源は図示されていない。また、生産者および消費者サブシステムの全体は図示されておらず、図５には図４に関して一般的に説明したビットレジスタおよびテスト論理構成要素を簡易化する構成要素しか図示されていない。ビットレジスタ機能により生産者は共有資源へデータを書き込んでいることを示すことができ、消費者は共有資源からデータを読み出していることを示すことができる。テスト論理構成要素により消費者や生産者は共有資源の状態をテストすることができる。
【００６４】
図５ａに示すように、第１のＤフリップフロップ５０２はＤ入力５０４，Ｑ出力５０６，およびリセット（Ｒ）入力５０８を有している。Ｑ出力５０６は線５１０により排他的ＯＲゲート５１２の第１の入力に接続されている。排他的ＯＲゲート５１２は線５１４によりＤ入力５０４に接続される出力を有する。排他的ＯＲゲート５１２の第２の入力は線５１６により生産者サブシステム４０４（図４）から発生されるＰ１＿Ａｄｄ信号に接続されている。Ｑ出力５０６は線５１０により第２の排他的ＯＲゲート５２０の第１の入力に接続されている。排他的ＯＲゲート５２０の第２の入力は線５２２により同期化要素５２４の出力に接続されている。排他的ＯＲゲート５２０の出力は線５２６により生産者４０４へＰ１＿Ｔｅｓｔ入力として接続されている。同期化要素５２４は線５２８により第１のクロック（Ｐ１＿Ｃｌｋ）に接続されている。クロックＰ１＿Ｃｌｋは線５２８によりＤフリップフロップ５０２のクロック入力５３０にも接続されている。同期化要素５２４への入力は線５３２により第２のＤフリップフロップ５３６のＱ出力５３４に接続されている。Ｄフリップフロップ５３６はリセット（Ｒ）入力５３７およびＤ入力５３８を有している。Ｄフリップフロップ５３６のＤ入力５３８は線５４０により第３の排他的ＯＲゲート５４２の出力に接続されている。Ｄフリップフロップ５３６のＱ出力５３４は線５３２により排他的ＯＲゲート５４２に入力として接続されている。排他的ＯＲゲート５４２の第２の入力は線５４６により消費者サブシステム４０６（図４）からのＣ１＿Ｓｕｂ信号を受信するように接続されている。Ｄフリップフロップ５３６のＱ出力５３４は線５３２により第４の排他的ＯＲゲート５５０に第１の入力として接続されている。排他的ＯＲゲート５５０の出力は線５５２により消費者サブシステム４０６にＣ１＿Ｔｅｓｔ信号として接続されている。排他的ＯＲゲート５５０への第２の入力は線５５４により同期化要素５５６の出力に接続されている。同期化要素５５６は線５５８により第２のクロック（Ｃ１＿Ｃｌｋ）に接続されている。クロックＣ１＿Ｃｌｋは線５５８によりＤフリップフロップ５３６のクロック入力５５９にも接続されている。同期化要素５５６への入力は線５１０によりＤフリップフロップ５０２のＱ出力５０６に接続されている。リセット（Ｒ）入力５０８，５３７はシステムリセット線（図示せず）に接続されている。
【００６５】
Ｄフリップフロップの動作は従来技術で周知であり、ここで詳細な説明は行わない。本質的に、Ｄフリップフロップには一つの２進入力信号と一つの２進出力信号しかない。Ｄフリップフロップの動作は入力クロック信号と同期化される。Ｄフリップフロップの２進出力信号は、クロックパルスの指定された遷移が生じると２進入力信号の状態（ハイもしくはロー）をとる。
【００６６】
図４に関して前記したように、生産者は関連するビットレジスタの値を変えることにより共有資源へのデータ書き込みを表示することができる。同様に、消費者は関連するビットレジスタの値を変えることにより共有資源からの読み出しを表示することができる。このようなビットレジスタは連続的にハイもしくはロー状態を表示し、ある信号が検出される度にその表示状態を交番させる（すなわち、ローからハイへあるいはハイからローへ）。このような一つのビットレジスタを図５に示し、それはＯＲゲート５１２およびＤフリップフロップ５０２を含んでいる。
【００６７】
Ｄフリップフロップ５０２のＱ出力５０６の論理状態は、生産者から発生される線５１６上の信号と同様に最初はローであり、したがって、排他的ＯＲゲート５１２の出力の論理状態は最初はローである。生産者は共有資源へ新しいデータを書き込むと、線５１６により伝搬されるハイパルス（Ｐ１＿Ａｄｄ）信号を発生することにより書込み動作を開始する。排他的ＯＲゲート５１２の出力はＰ１＿Ａｄｄ信号の持続時間中にハイ論理状態をとり、ハイ論理状態は線５１４によりＤフリップフロップ５０２のＤ入力５０４へ伝搬される。生産者のサブシステムクロックＰ１＿Ｃｌｋにより発生される次の正のエッジ遷移が到来すると、Ｄフリップフロップ５０２のＱ出力５０６はハイ論理状態をとる。当業者ならば、Ｄフリップフロップ５０２のＤ入力５０４に有効信号を発生するのに十分な設定および保持時間が与えられるならば、Ｐ１＿Ａｄｄ信号の持続時間は生産者クロックＰ１＿Ｃｌｋのほぼ１周期となることがお判りであろう。
【００６８】
Ｄフリップフロップ５０２のＱ出力５０６の論理状態は線５１０により排他的ＯＲゲート５１２へ入力として伝搬される。Ｑ出力信号５０６が排他的ＯＲゲート５１２に到来する時にＰ１＿Ａｄｄ信号がまだハイであれば、排他的ＯＲゲート５１２の出力は一時的にロー論理状態となる。しかしながら、Ｐ１＿Ｃｌｋにより生じる次の正のエッジ遷移が到来する時間までには、Ｐ１＿Ａｄｄ信号はロー状態へ低下しており、したがって排他的ＯＲゲート５１２の出力はハイ論理状態となることが理解できるであろう。したがって、ハイ論理状態が線５１４によりＤ入力５０４へ与えられるため、Ｄフリップフロップ５０２のＱ出力５０６はハイのままとされる。
【００６９】
生産者サブシステムが次に共有資源へデータを書き込むと、生産者はもう一つのアクティブなＰ１＿Ａｄｄ信号を排他的ＯＲゲート５１２への入力として線５１６上に発生する。しかしながら、線５１０はまだ排他的ＯＲゲート５１２への第２の入力を表すハイ論理状態を有している。したがって、その入力の両方がハイであるため、排他的ＯＲゲート５１２の出力はロー論理状態となる。その結果、線５１４はＤフリップフロップ５０２のＤ入力５０４へロー論理状態を与える。生産者サブシステムのクロックＰ１＿Ｃｌｋにより発生される次の正の遷移が到来すると、Ｑ出力５０６はＤ入力５０４のロー論理状態をとることが理解できるであろう。前記したように、線５１０はＱ出力５０６のロー論理状態を排他的ＯＲゲート５１２への入力として伝搬する。Ｐ１＿Ａｄｄ信号がローとなる時すなわち次のクロックサイクルの前に、排他的ＯＲゲート５１２への両方の入力がロー論理状態を表示し、排他的ＯＲゲート５１２の出力はロー論理状態とされる。したがって、線５１４はＤフリップフロップ５０２のＤ入力５０４へロー論理状態を与える。生産者のクロックにより発生される次の正の遷移が到来すると、Ｄフリップフロップ５０２のＱ出力５０６はＤ入力５０４の論理状態をとり、したがって、ローのままとされる。
【００７０】
前記したように、排他的ＯＲゲート５１２およびＤフリップフロップ５０２は、生産者がアクティブなＰ１＿Ａｄｄ信号を線５１６上に発生する度に論理状態をハイからローもしくはローからハイへ交番させる（すなわち、トグル）、ビットレジスタ（すなわち、シングルビットレジスタ）として一緒に作動する。ビットレジスタはこのようなパルス間で線５１０上に連続論理状態（Ｐ１＿Ｂｉｔｒｅｇ）を維持する。
【００７１】
消費者サブシステムのビットレジスタは前記したのと同様な論理を含んでいる。消費者サブシステムが共有資源からデータを読み出す度に、消費者はＣ１＿Ｓｕｂ信号線５４６上にアクティブなハイパルスを発生する。Ｃ１＿Ｓｕｂ信号は線５４６により排他的ＯＲゲート５４２へ入力として伝搬される。Ｄフリップフロップ５３６のＱ出力５３４は線５３２により排他的ＯＲゲート５４２へ第２の入力として伝搬されるため、アクティブなＣ１＿Ｓｕｂ信号により排他的ＯＲゲート５４２はＱ出力５３４の論理状態とは反対の論理状態を出力することがお判りであろう。反対の論理状態は線５４０によりＤ入力５３８へ与えられる。次に、消費者のクロックＣ１＿Ｃｌｋにより次のクロック遷移が発生すると、Ｑ出力５３４はＤ入力５３８の論理状態をとる。したがって、排他的ＯＲゲート５４２およびＤフリップフロップ５３６は、消費者サブシステムがアクティブなハイＣ１＿Ｓｕｂ信号を線５４６上に発生する度にその論理状態を交番する（すなわち、トグルする）ビットレジスタ（すなわち、シングルビットレジスタ）を含んでいる。消費者のビットレジスタの論理状態（Ｃ１＿Ｂｉｔｒｅｇ）はＣ１＿Ｔｅｓｔ信号として線５３２上に維持される。
【００７２】
図４に関して一般的に検討したように、生産者は消費者のビットレジスタの値をそれ自体のビットレジスタの値と比較することにより共有資源の可用性をテストすることができる。前記したように、このような比較は好ましくは排他的ＯＲ演算により実施される。同じテスト論理により消費者は共有資源の可用性を確認することができる。
【００７３】
したがって、生産者４０４はそのビットレジスタの値を消費者の４０６ビットレジスタの値と排他的ＯＲすることにより、共有資源の可用性をテストすることができる。生産者のビットレジスタの値は線５１０上のＰ１  Ｂｉｔｒｅｇ信号の論理状態により表示される。線５１０上のＰ１＿Ｂｉｔｒｅｇ信号は排他的ＯＲゲート５２０へ入力される。Ｐ１＿Ｂｉｔｒｅｇ信号は生産者のクロックＰ１＿Ｃｌｋと同期しているため、Ｐ１＿Ａｄｄ信号を発生する生産者により生じるＰ１＿Ｂｉｔｒｅｇ信号の任意の変化が生産者のクロックの１クロックサイクル中に排他的ＯＲゲート５２０へ伝搬され、生産者のクロックにより発生される次のクロックサイクルが始まる前に安定であることが理解できるであろう。
【００７４】
しかしながら、論理状態Ｃ１＿Ｂｉｔｒｅｇで表される消費者のビットレジスタの値は生産者のクロックとは非同期的であり、したがって、同期化しなければならない。そのため、Ｃ１＿Ｂｉｔｒｅｇ信号は線５３２を介してＰ１＿Ｃｌｋによりクロックされる同期化要素５２４へ入力として伝搬される。
【００７５】
図５ｂは同期化要素を表す論理図である。第１のＤフリップフロップ５８０はＤ入力５８２、Ｑ出力５８４、およびクロック入力５８５を有する。入力信号（Ｉｎｐｕｔ）が線５８６によりＤ入力５８２に接続される。Ｑ出力５８４は線５８８によりＤ入力５９２、Ｑ出力５９４、およびクロック入力５９５を有する第２のＤフリップフロップ５９０に接続されている。Ｑ出力５９４は出力信号（Ｏｕｔｐｕｔ）で表され線５９６により伝搬される。ターゲットクロック（Ｔａｒｇｅｔ＿Ｃｌｋ）が線５９８により第１のＤフリップフロップ５８０のクロック入力５８５に接続される。線５９８はターゲットクロックを第２のＤフリップフロップ５９０のクロック入力５９５にも接続する。
【００７６】
Ｉｎｐｕｔ信号は線５８６によりＤ入力５８２へ伝搬される。Ｔａｒｇｅｔ＿Ｃｌｋにより次の正の遷移が発生されると、Ｄフリップフロップ５８９０によりＱ出力５８４はＩｎｐｕｔの論理状態をとるようになる。Ｑ出力５８４は線５８８によりＤフリップフロップ５９０のＤ入力５９２へ伝搬される。Ｔａｒｇｅｔ＿Ｃｌｋにより次の正の遷移が発生されると、Ｑ出力５９４は線５８８により運ばれる論理状態をとる。線５９６はＱ出力５９４をＯｕｔｐｕｔ信号として伝搬し、それはＴａｒｇｅｔ＿Ｃｌｋに同期化されたＩｎｐｕｔ信号の論理状態である。図５ｂに示す同期化要素は第１のクロックと同期して発生される信号を受け入れて第１のクロックとは非同期的である第２のクロックと同期化させる論理の一例にすぎない。
【００７７】
図５ａに関して、生産者のクロックＰ１＿Ｃｌｋによりクロックされる同期化要素５２４はＣ１＿Ｂｉｔｒｅｇ信号を生産者のクロックと同期化させる。同期化されたＣ１＿Ｂｉｔｒｅｇ信号は線５２２により排他的ＯＲゲート５２０の入力へ伝搬される。線５２６上の排他的ＯＲゲート５２０の出力はテスト信号Ｐ１＿Ｔｅｓｔを含んでいる。Ｐ１＿Ｂｉｔｒｅｇの論理状態がＣ１＿Ｂｉｔｒｅｇの論理状態と同じであれば（すなわち、共有資源への書込み数が共有資源からの読出し数に等しい）、Ｐ１＿Ｔｅｓｔの論理状態はローとなる。したがって、Ｐ１＿Ｔｅｓｔがローになると、共有資源４０２（図４）は生産者４０４が新しいデータを書き込むのに利用できるようになる。一方、Ｐ１＿Ｔｅｓｔがハイになると（すなわち、共有資源への書込み数が共有資源からの読出し数に等しくない）、共有資源は生産者が書き込むのに利用することができない。
【００７８】
本発明の重要な利点は生産者のビットレジスタの値Ｐ１＿Ｂｉｔｒｅｇの値が発生されて生産者のクロックＰ１＿Ｃｌｋと同期して利用できる事実により生じる。そのため、線５１６上にＰ１＿Ａｄｄ信号を発生して共有資源にデータを書き込んだことを表示した後で、生産者は共有資源をもはや利用できないことをテスト信号Ｐ１＿Ｔｅｓｔにより即座に通知される。本発明により、生産者は共有資源へ早まった書込み動作を開始しないことが保証され、遅延を導入することが有利に回避されることがお判りであろう。この保証は、共有資源への書込み動作を開始したことを示す第１の同期化パルス（Ｐ１＿Ａｄｄ）を生産者が送った後で、Ｐ１＿Ｂｉｔｒｅｇ信号がＰ１＿Ｔｅｓｔ信号を即座に更新して、すぐ次のクロックサイクルにより共有資源を利用できないことを示す事実に基づいている。
【００７９】
図５ａに示されているのと同様な論理により、消費者は共有資源の状態をテストすることができる。消費者のビットレジスタの値Ｃ１＿Ｂｉｔｒｅｇは消費者が線５３２を介して同期的に入手することができる。線５３２はＣ１＿Ｂｉｔｒｅｇ論理状態を排他的ＯＲゲート５５０へ入力として運ぶ。生産者のビットレジスタの値Ｐ１＿Ｂｉｔｒｅｇは消費者のクロックとは非同期的であるため、同期化要素５５６へ入力される。同期化要素５５６はＰ１＿Ｂｉｔｒｅｇを消費者のクロックＣ１＿Ｃｌｋと同期化させ、Ｐ１＿Ｂｉｔｒｅｇの同期化された値は線５５４により排他的ＯＲゲート５５０の第２の入力へ伝搬される。線５５２上の排他的ＯＲゲート５５０の出力はテスト信号Ｃ１＿Ｔｅｓｔである。Ｃ１＿Ｔｅｓｔがハイであれば（すなわち、共有資源４０２への書込み数が共有資源４０２への読出し数とは異なる）、消費者は共有資源４０２から読み出すことができる。一方、Ｃ１＿Ｔｅｓｔがローであれば（すなわち、共有資源４０２への書込み数が共有資源からの読出し数に等しい）、消費者は共有資源４０２から読み出すことができない。
【００８０】
前記した利点は消費者サブシステムにも応用される。Ｃ１＿Ｓｕｂ信号を発生して読出し動作を開始したことを表示すると、消費者は共有資源４０２がもはや読出しに利用できないことを即座に通知される（１クロックサイクル内で）。したがって、消費者は共有資源４０２を早まって読み出すことを防止され、やはり遅延は必要ではない。
【００８１】
リセット（Ｒ）入力５０８，５３７に接続されたリセット信号（図示せず）により生産者のビットレジスタＰ１＿Ｂｉｔｒｅｇおよび消費者のビットレジスタＣ１＿Ｂｉｔｒｅｇの両方の値をロー論理状態にセットすることができる。このようなリセット能力は、例えば、生産者サブシステムおよび消費者サブシステムを含むシステムが停止して再始動する時に有用である。生産者および消費者サブシステムの状況において、このようなリセットにより書込みに利用できる共有資源の初期条件が回復されることが理解できるであろう。
【００８２】
図６は第１のクロック（Ｐ１＿Ｃｌｋ）と同期作動する第１の生産者サブシステム６０２、第２のクロック（Ｐ２Ｃ１＿Ｃｌｋ）と同期作動する第２の生産者サブシステム６０４、および第２のクロックＰ２Ｃ１＿Ｃｌｋと同期作動する消費者サブシステム６０６を含むデジタルシステムの一部を表す単純化したブロック図である。Ｐ１＿ＣｌｋはＰ２Ｃ１＿Ｃｌｋとは非同期的である。
【００８３】
第１の生産者６０２はテスト論理構成要素６１０およびビットレジスタ６１２を含んでいる。第２の生産者６０４はテスト論理構成要素６１４およびビットレジスタ６１６を含んでいる。消費者６０６はテスト論理構成要素６１８およびビットレジスタ６２０を含んでいる。
【００８４】
３つのサブシステム６０２，６０４，６０６は資源６０８を共有する。テスト論理構成要素６１０，６１４，６１８により各サブシステム６０２，６０４，６０６は共有資源６０８の状態を独立して決定することができる。各ビットレジスタ６１２，６１６，６２０は０もしくは１の値を示すことができる。各サブシステム６０２，６０４，６０６は各ビットレジスタ６１２，６１６，６２０の値を読み出すことができる。
【００８５】
第１の生産者６０２のビットレジスタ６１２の値はＰ２Ｃ１＿Ｃｌｋとは非同期的であり、したがって第２の生産者６０４および消費者６０６がビットレジスタ６１２の値を使用して比較を実施できる前にＰ２Ｃ１＿Ｃｌｋと同期化させなければならない。したがって、図６にはＰ２Ｃ１＿Ｃｌｋによりクロックされる同期化要素内へ伝搬された後で究極的に第２の生産者６０４および消費者６０６のテスト論理構成要素６１４，６１８内へ、それぞれ、伝搬されるビットレジスタ６１２の値が示されている。
【００８６】
同様に、第２の生産者６０４のビットレジスタ６１６の値および消費者６０６のビットレジスタ６２０の値はＰ１＿Ｃｌｋとは非同期的であるため、第１の生産者６０２がそれらの値を比較に使用できる前にＰ１＿Ｃｌｋと同期化させなければならない。したがって、図６にはＰ１＿Ｃｌｋによりクロックされる同期化要素内へ伝搬された後で最終的に第１の生産者６０２のテスト論理構成要素６１０内へ伝搬されるビットレジスタ６１６，６２０の値が示されている。
【００８７】
第１の生産者６０２は第２の生産者６０４のビットレジスタ６１６の値、消費者６０６のビットレジスタ６２０の値、およびそれ自体のビットレジスタ６１２の値を排他的ＯＲすることにより、共有資源６０８内に失効データが存在するかどうかを確認することができる。このような排他的ＯＲ演算は第１の生産者６０２のテスト論理構成要素６１０内で実施される。このような排他的ＯＲ演算により得られる結果がゼロであれば、共有資源６０８内に失効データが存在し第１の生産者６０２は共有資源６０８内へデータを書き込むことができる。一方、このような排他的ＯＲ演算の結果が１であれば、フレッシュデータが共有資源６０８を占有し、第１の生産者６０２は共有資源６０８へ新しいデータを書き込めないことがある。
【００８８】
同様に、第２の生産者６０４は３つのビットレジスタ６１６，６２０，６１２の値を排他的ＯＲすることにより共有資源６０８を書き込みに利用できるかどうかを確認することができる。ここでも、ゼロの結果は生産者６０４が共有資源６０８へ書き込めることを示し、１の結果は生産者６０４が共有資源６０８へ書き込めないことがあることを示している。
【００８９】
共有資源６０８の可用性は消費者６０６によりほとんど同じ方法で確認される。消費者６０６のテスト論理構成要素６１８は３つのビットレジスタ６１６，６２０，６１２の値を排他的ＯＲする。排他的ＯＲの結果が１であれば、共有資源６０８内にフレッシュデータが存在し、消費者６０６は共有資源から読み出すことができる。一方、排他的ＯＲの結果がゼロであれば、共有資源６０８内に失効データが存在し、消費者６０６は共有資源６０８から読み出すことができない。
【００９０】
含まれるテスト論理を示すために、第１の生産者６０２は次式に従って共有資源６０８の状態を確認することができる。
2007058881.tif 000006
【００９１】
Ｐ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源６０８内の任意のデータが既に消費者６０６により読み出されており、第１の生産者６０２は共有資源６０８へ新しいデータを書き込むことができる。しかしながら、Ｐ１＿Ｔｅｓｔ式の結果が１であれば、共有資源６０８内にフレッシュデータが存在し第１の生産者６０２は共有資源６０８へ新しいデータを書き込めないことがある。
【００９２】
同様なテスト論理が消費者６０６により使用される。消費者６０６は次式に従って共有資源６０８の状態を確認することができる。
2007058881.tif 000007
【００９３】
Ｃ１＿Ｔｅｓｔの結果が１であれば、共有資源６０８内にフレッシュデータが存在し、消費者６０６は即座にデータを読み出すことができる。しかしながら、Ｃ１＿Ｔｅｓｔの結果がゼロであれば、共有資源６０８内のデータは失効データであり消費者６０６はデータを読み出せないことがある。
【００９４】
図７ａは２つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立してテストできるようにする論理を表す論理図である。図７ａには共有資源は図示されていない。さらに、２つの生産者サブシステムおよび一つの消費者サブシステムの全体は図示されていない。図７ａには図６に関して一般的に説明したビットレジスタおよびテスト論理構成要素を簡易化する構成要素しか例示されていない。
【００９５】
図７ａにはＤ入力７０４、Ｑ出力７０６、およびリセット（Ｒ）入力７０８を有する第１のＤフリップフロップ７０２が図示されている。Ｑ出力７０６は線７１０により排他的ＯＲゲート７１２の第１の入力に接続されている。排他的ＯＲゲート７１２は線７１４によりＤ入力７０４に接続された出力を有している。排他的ＯＲゲート７１２の第２の入力は線７１６により生産者サブシステム６０２（図６）から発生するＰ１＿Ａｄｄに接続される。Ｑ出力７０６は線７１０により第２の排他的ＯＲゲート７２０の第１の入力に接続される。排他的ＯＲゲート７２０の第２の入力は線７２２により排他的ＯＲゲート７２４の出力に接続される。排他的ＯＲゲート７２０の出力は線７２６により生産者サブシステム６０２にＰ１＿Ｔｅｓｔ入力として接続される。Ｄフリップフロップ７０２は線７２８により第１のクロック（Ｐ１＿Ｃｌｋ）に接続されるクロック入力７１９を有している。クロックＰ１＿Ｃｌｋは線７２８により同期化要素７３０およびもう一つの同期化要素７３２にも接続される。同期化要素７３０の出力は線７３４により排他的ＯＲゲート７２４に一入力として接続される。同期化要素７３２の出力は線７３６により排他的ＯＲゲート７２４に第２の入力として接続される。
【００９６】
同期化要素７３０の入力は線７３８によりＤフリップフロップ７４２のＱ出力７４０に接続される。Ｄフリップフロップ７４２はＤ入力７４４およびリセット（Ｒ）入力７４６を有している。Ｄフリップフロップ７４２は線７４９により第２のクロック（Ｐ２Ｃ１＿Ｃｌｋ）に接続されるクロック入力７４５を有している。Ｄ入力７４４は線７４８により排他的ＯＲゲート７５０の出力に接続される。Ｄフリップフロップ７４２のＱ出力７４０は線７３８により排他的ＯＲゲート７５０に一入力として接続される。排他的ＯＲゲートへの第２の入力は線７５２により消費者６０６（図６）から発生されるＣ１＿Ｓｕｂ信号に接続される。Ｄフリップフロップ７４２のＱ出力７４０は線７３８により排他的ＯＲゲート７５４に入力として接続される。排他的ＯＲゲート７５４の出力は線７５６により消費者６０６に接続される。排他的ＯＲゲート７５４の第２の入力は線７５８により排他的ＯＲゲート７６０の出力に接続される。排他的ＯＲゲート７６０の入力は線７６２によりＤフリップフロップ７６６のＱ出力７６４に接続される。Ｄフリップフロップ７６６はＤ入力７６８およびリセット（Ｒ）入力７７１を有している。同期化要素７３２への入力は線７６２によりＱ入力７６４に接続される。Ｄ入力７６８は線７７０により排他的ＯＲゲート７７２の出力に接続される。Ｑ入力７６４は線７６２により排他的ＯＲゲート７７２に入力として接続される。排他的ＯＲゲート７７２のもう一つの入力は線７７４により第２の生産者６０４（図６）から発生されるＰ２＿Ａｄｄ信号に接続される。
【００９７】
Ｄフリップフロップ７６６は線７７６により第２のクロックＰ２Ｃ１＿Ｃｌｋに接続されるクロック入力７７５を有している。同期化要素７７８も線７７６により第２のクロックＰ２Ｃ１＿Ｃｌｋに接続される。同期化要素７７８への入力は線７１０によりＤフリップフロップ７０２のＱ出力７０６に接続される。同期化要素７７８の出力は線７８０により排他的ＯＲゲート７６０の入力に接続される。同期化要素７７８の出力は線７８０によりもう一つの排他的ＯＲゲート７８２にも接続される。Ｄフリップフロップ７４２のＱ出力７４０は線７３８により排他的ＯＲゲート７８２に第２の入力として接続される。排他的ＯＲゲート７８２の出力は線７８４により排他的ＯＲゲート７８６の入力に接続される。Ｄフリップフロップ７６６のＱ出力７６４は線７６２により排他的ＯＲゲート７８６の第２の入力に接続される。排他的ＯＲゲート７８６の出力は線７８８により生産者６０４にＰ２＿Ｔｅｓｔ入力として接続される。
【００９８】
排他的ＯＲゲート７１２およびＤフリップフロップ７０２は、図５に関連して検討したように、一緒に接続されてビットレジスタとして機能する。したがって、生産者６０２が線７１６上にハイパルス（Ｐ１＿Ａｄｄ）信号を発生すると、Ｄフリップフロップ７０２のＱ出力７０６は論理状態がハイからローあるいはローからハイへ変化する（トグルする）。Ｑ出力７０６は生産者６０２から発生されるＰ１＿Ａｄｄ信号により変えられるまで、その論理状態を連続的に維持する。
消費者６０６の同様なビットレジスタは排他的ＯＲゲート７５０およびＤフリップフロップ７４２を含んでいる。したがって、Ｄフリップフロップ７４２のＱ出力７４０は安定な論理状態を表し、消費者６０６が線７５２上にハイパルス（Ｃ１＿Ｓｕｂ）を発生する度にその論理状態をトグルする。
【００９９】
図７ａは生産者６０４のこのような第３のビットレジスタを示す。第３のビットレジスタは排他的ＯＲゲート７７２およびＤフリップフロップ７６６を含んでいる。ＤフリップフロップのＱ出力７６４の論理状態は生産者６０４が線７７４上にハイパルス（Ｐ２＿Ａｄｄ）信号を発生する度にトグルし、Ｄフリップフロップ７６６のＱ出力７６４はトグル間の安定な論理状態を表す。
【０１００】
線７１０，７３８，７６２はそれぞれＱ出力７０６，７４０，７６４の論理状態に対応する信号を伝搬する。したがって、線７１０，７３８，７６２上を伝搬する信号は生産者６０２、消費者６０６、および生産者６０４のそれぞれのビットレジスタの値を表す。図５ａに関して検討したように、各生産者および消費者により実施されるビットレジスタの値の独立した比較により、各生産者および消費者が共有資源の可用性を確認することができる。やはり図５ａに関して検討したように、ビットレジスタ値のこのような比較はビットレジスタ値の排他的ＯＲにより行うことができる。
【０１０１】
したがって、生産者６０２は線７１０により伝搬される信号（すなわち、それ自体のビットレジスタの値）、線７３８により伝搬される信号（すなわち、消費者６０６のビットレジスタの値）、および線７６２により伝搬される信号（すなわち、生産者６０４のビットレジスタの値）を排他的ＯＲすることにより共有資源６０８の状態をテストすることができる。線７１０により伝搬される生産者のビットレジスタの値は生産者６０２のクロックＰ１＿Ｃｌｋと同期していることが理解できるであろう。したがって、生産者６０２のビットレジスタの値は生産者６０２にとって同期的に利用することができる。しかしながら、線７３８および７６２により伝搬される信号（すなわち、消費者６０６と生産者６０４のビットレジスタのそれぞれの値）はＰ１＿Ｃｌｋとは非同期的である。したがって、線７３８，７６２により伝搬される信号は生産者６０２により排他的ＯＲされる前にＰ１＿Ｃｌｋと同期化させなければならない。
【０１０２】
図７ａに示すように、線７３８，７６２により伝搬される信号はそれぞれの同期化要素７３０，７３２へ入力される。線７３４，７３６はそれぞれＰ１＿Ｃｌｋと同期化された線７３８，７６２の論理状態を伝搬する。線７３４，７３６により伝搬される同期化された論理状態は排他的ＯＲゲート７２４により排他的ＯＲされる（すなわち、生産者６０４と消費者６０６のビットレジスタ値は生産者６０２のクロックドメインへ運ばれて比較される）。
【０１０３】
排他的ＯＲゲート７２４の出力は線７２２により排他的ＯＲゲート７２０へ入力として伝搬される。線７１０により伝搬される信号ｍ排他的ＯＲゲート７２０へ入力される。したがって、排他的ＯＲゲート７２０は生産者６０２のビットレジスタの値を生産者６０４と消費者６０６のビットレジスタ値の比較結果と比較する。
【０１０４】
排他的ＯＲゲート７２０の出力は線７２６によりＰ１＿Ｔｅｓｔ信号として伝搬される。Ｐ１＿Ｔｅｓｔ信号により表される論理状態により共有資源６０８が生産者６０２に利用できるかどうかが確認される。Ｐ１＿Ｔｅｓｔ信号がローであれば（すなわち、共有資源６０８への書込み数が共有資源６０８からの読出し数に等しい）、生産者６０２は共有資源６０８へデータを書き込むことができる。
【０１０５】
しかしながら、Ｐ１＿Ｔｅｓｔ信号がハイであれば（すなわち、共有資源６０８への書込み数が共有資源６０８からの読出し数とは異なる）、生産者６０２は共有資源６０８へデータを書き込むことができない。
【０１０６】
図５ａに関連して検討したように、Ｐ１＿Ａｄｄ信号とＰ１＿Ｔｅｓｔ信号との間のタイミング関係が本発明の実質的な利点である。生産者６０２により発生されるＰ１＿Ａｄｄ信号によりＰ１＿Ｔｅｓｔ信号の論理状態はＰ１＿Ｃｌｋの１クロックサイクル中に更新される。Ｐ１＿Ｔｅｓｔ信号の即時の更新により、それ自体の最も最近の書込み動作により生じる共有資源６０８の非可用性を生産者６０２が検出するのに使用することができない時間の任意のウィンドが解消される。したがって、前記したように生産者６０２が共有資源６０８を早まってアクセスするのを防止するための遅延を導入する必要がない。
【０１０７】
生産者６０４および消費者６０６は線７１０，７３８，７６２により伝搬される信号の独立した比較も実施する。生産者６０４および消費者６０６は同じクロックＰ２Ｃ１＿Ｃｌｋと同期して作動する。線７３８，７６２により伝搬される信号はＰ２Ｃ１＿Ｃｌｋと同期しており、したがって生産者６０４および消費者６０６により比較される前に同期化させる必要がない。しかしながら、線７１０により伝搬される信号（すなわち、生産者６０２のビットレジスタの値）はＰ２Ｃ１＿Ｃｌｋとは非同期的であり、同期化させる必要がある。したがって、線７１０により伝搬される信号は同期化要素７７８へ入力される。
【０１０８】
Ｐ２Ｃ１＿Ｃｌｋに同期化された線７１０により伝搬される論理状態を表す同期化要素７７８の出力は、線７８０により排他的ＯＲゲート７６０へ入力として伝搬される。生産者６０４のビットレジスタ値は線７６２により排他的ＯＲゲート７６０へもう一つの入力として伝搬される。したがって、排他的ＯＲゲート７６０は生産者６０２と生産者６０４のビットレジスタ値を比較する。排他的ＯＲゲート７６０の出力は排他的ＯＲゲート７５４へ入力される。消費者６０６のビットレジスタの値は線７３８により排他的ＯＲゲート７５４へもう一つの入力として伝搬される。排他的ＯＲゲート７５４の出力は線７５６により伝搬されるＣ１＿Ｔｅｓｔ信号である。
【０１０９】
Ｃ１＿Ｔｅｓｔ信号により表される論理状態により共有資源６０８の消費者６０６に対する可用性が決定される。Ｃ１＿Ｔｅｓｔ信号がハイであれば（すなわち、共有資源６０８への書込み数が共有資源６０８からの読出し数とは異なる）、消費者６０６は共有資源６０８から読み出すことができる。Ｃ１＿Ｔｅｓｔ信号ローであれば、消費者６０６は共有資源６０８から読み出すことができない。
【０１１０】
前記したＰ１＿Ａｄｄ信号とＰ１＿Ｔｅｓｔ信号との間の関係は、Ｃ１＿Ｓｕｂ信号とＣ１＿Ｔｅｓｔ信号との間にも存在する。各Ｃ１＿Ｓｕｂ信号によりＣ１＿Ｔｅｓｔ信号は消費者６０６のクロックＰ２Ｃ１＿Ｃｌｋの１サイクル中に更新されるため、消費者６０６は共有資源６０８から早まって読み出すことがない。
【０１１１】
Ｐ２Ｃ１＿Ｃｌｋに同期された生産者６０４のビットレジスタの値を表す同期化要素７７８の出力も線７８０により排他的ＯＲゲート７８２へ入力として伝搬される。消費者６０６のビットレジスタの値は線７３８により排他的ＯＲゲート７８２へもう一つの入力として伝搬される。したがって、排他的ＯＲゲート７８２は生産者６０２および消費者６０６のビットレジスタ値を比較する。排他的ＯＲゲート７８２の出力は線７８４により排他的ＯＲゲート７８６へ入力として伝搬される。生産者のビットレジスタの値は線７６２により排他的ＯＲゲート７８６へもう一つの入力として伝搬される。排他的ＯＲゲート７８６の出力は線７８８により伝搬されるＰ２＿Ｔｅｓｔ信号である。
【０１１２】
Ｐ２＿Ｔｅｓｔ信号により表される論理状態により共有資源６０８が生産者６０４に利用できるかどうかが決定される。Ｐ２＿Ｔｅｓｔ信号がローであれば、生産者６０４は共有資源６０８へ書き込むことができる。しかしながら、Ｐ２＿Ｔｅｓｔ信号がハイであれば、生産者６０４は共有資源へ書き込むことができない。前記したＰ１＿Ａｄｄ信号とＰ１＿Ｔｅｓｔ信号との間の有利な関係は、Ｐ２＿Ａｄｄ信号とＰ２＿Ｔｅｓｔ信号との間にも存在する。すなわち、Ｐ２＿Ｔｅｓｔ信号は各Ｐ２＿Ａｄｄ信号の１クロックサイクル内に更新されるため、生産者６０４は共有資源６０８へ早まって書き込むことがない。
【０１１３】
図５ａに関して検討したように、リセット（Ｒ）入力７０８，７４６，７７１に接続されたリセット線により伝搬されるアクティブなハイパルス（図７ａには図示せず）により生産者６０２、生産者６０４、および消費者６０６は共有資源６０８を書き込みに利用できる初期条件にセットされる。
【０１１４】
図７ｂは、図７ａと同様に、２つの生産者サブシステムおよび一つの消費者サブシステムが共有資源の状態を独立にテストすることができる論理を表す論理図である。図７ｂの論理図は第２の生産者および消費者により共有される共通クロックを利用してシステムに必要な論理を低減する。図７ｂには共有資源が図示されていない。２つの生産者サブシステムおよび一つの消費者サブシステムの全体は図示されていない。図７ｂには２つの生産者サブシステムおよび一つの消費者サブシステムのビットレジスタおよびテスト論理構成要素を含む構成要素しか図示されていない。
【０１１５】
図７ｂに番号７０２から７２０で示す構成要素は図７ａに同じ番号で示した構成要素と同じであるため、これらの構成要素の説明は繰り返さない。
線７２２により同期化要素７２４の出力が排他的ＯＲゲート７２０の入力に接続される。排他的ＯＲゲート７２０の出力は線７２６により生産者６０２（図６）へ入力として伝搬されるｐ１＿Ｔｅｓｔ信号である。線７２８により第１のクロック（Ｐ１＿Ｃｌｋ）がＤフリップフロップ７０２のクロック入力７１９に接続される。線７２８は、またＰ１＿Ｃｌｋを同期化要素７２４に接続する。線７３０によりＤフリップフロップ７３４のＱ出力７３２が同期化要素７２４の入力に接続される。Ｄフリップフロップ７３４はＤ入力７３６、リセット（Ｒ）入力７３８、およびクロック入力７３９を有している。線７３０により出力７３０は排他的ＯＲゲート７４０に入力として接続される。線７４２により排他的ＯＲゲート７４０の第２の入力が排他的ＯＲゲート７４４の出力に接続される。排他的ＯＲゲート７４４の第１の入力は、消費者６０６（図６）により発生され線７４６により伝搬されるＣ１＿Ｓｕｂ信号である。排他的ＯＲゲート７４４の第２の入力は消費者６０６（図６）により発生され線７４８により伝搬されるＰ２＿Ａｄｄ信号である。排他的ＯＲゲート７４０の出力は線７５０によりＤフリップフロップ７３４のＤ入力７３６へ伝搬される。
【０１１６】
第２のクロック（Ｐ２Ｃ１＿Ｃｌｋ）は線７５２によりＤフリップフロップ７３４のクロック入力７３９に接続される。また、線７５２によりＰ２Ｃ１＿Ｃｌｋが同期化要素７５４に接続される。同期化要素７５４の入力は線７１０によりＤフリップフロップ７０２のＱ出力７０６に接続される。同期化要素７５４の出力は線７５６により排他的ＯＲゲート７５８の入力に接続される。排他的ＯＲゲートの第２の入力は線７３０によりＤフリップフロップ７３４のＱ出力７３２に接続される。排他的ＯＲゲート７５８の出力は線７６０により伝搬されるＰ２Ｃ１＿Ｔｅｓｔ信号である。
【０１１７】
生産者６０２により使用される図７ｂの第１のビットレジスタは排他的ＯＲゲート７１２およびＤフリップフロップ７０２を含んでいる。しかしながら、排他的ＯＲゲート７１２およびＤフリップフロップ７０２は図７ａで説明した同じ番号の構成要素と同様に機能するため、それらの説明は繰り返さない。また、図７ｂのＰ１＿Ａｄｄ信号とＰ１＿Ｔｅｓｔ信号との間の関係は図７ａに関して説明した同じ信号間の関係と同じであるため、それらの動作説明も繰り返さない。
【０１１８】
生産者６０４および消費者６０６は同じクロックＰ２Ｃ１＿Ｃｌｋと同期して作動するため、共有資源６０８の状態をテストするのに必要な論理を単純化できるように、各ビットレジスタ機能を含む論理を単純化することができる。したがって、図７ｂの第２のビットレジスタは生産者６０４および消費者６０６により共有される。第２のビットレジスタは排他的ＯＲゲート７４０およびＤフリップフロップ７３４を含んでいる。前記したように、Ｄフリップフロップ７３４のＱ出力７３２は線７３０により排他的ＯＲゲート７４０の入力へ伝搬され、かつ排他的ＯＲゲート７４０の出力は線７５０によりＤフリップフロップ７３４のＤ入力７３６へ伝搬されるため、排他的ＯＲゲート７４０およびＤフリップフロップ７３４はビットレジスタとして機能する。すなわち、線７４２により排他的ＯＲゲート７４０へ第２の入力として伝搬されるハイパルス信号により、Ｄフリップフロップ７３４はＱ出力７３２の論理状態をトグルしてこのようなもう一つのハイパルス信号が線７４２により伝搬されるまで、線７３０によりこのような論理状態を伝搬する。
【０１１９】
Ｐ２＿Ａｄｄ信号およびＣ１＿Ｓｕｂ信号はそれぞれ線７４８，７４６により排他的ＯＲゲート７４４へ入力として伝搬される。線７４２により伝搬される排他的ＯＲゲート７４４の出力は生産者６０４により発生されるＰ２＿Ａｄｄ信号もしくは消費者により発生されるＣ１＿Ｓｕｂ信号を表すことが理解できるであろう。Ｐ２＿Ａｄｄ信号もしくはＣ１＿Ｓｕｂ信号が発生されると、排他的ＯＲゲート７４４はこのような信号を出力する。しかしながら、Ｐ２＿Ａｄｄ信号およびＣ１＿Ｓｕｂ信号が同時に発生されると（すなわち、同じクロックサイクル内に排他的ＯＲゲート７４４に到来する）、排他的ＯＲゲート７４４により出力される論理状態は変化しない。生産者６０４および消費者６０６は同じクロックドメイン内で作動しており、かつ第２のビットレジスタは任意特定の時間に生産者６０４もしくは消費者６０６だけを更新することはできるが両者を更新できることはないため、生産者６０４および消費者６０６は前記したようにビットレジスタを共有することができる。
【０１２０】
生産者６０４および消費者６０６は書込みもしくは読出しに対する共有資源６０８の可用性を決定するＰ２Ｃ１＿Ｔｅｓｔ信号も共有する。線７６０により伝搬されるＰ２Ｃ１＿Ｔｅｓｔ信号は第１のビットレジスタの論理状態と第２のビットレジスタの論理状態の比較により得られる論理状態を表す。第１のビットレジスタの論理状態は第１の生産者６０２により開始される共有資源６０８へのいくつかの書込みを表す。第２のビットレジスタの論理状態は消費者６０６により開始される共有資源からのいくつかの読出しを減じた第２の生産者６０４により開始される共有資源６０８へのいくつかの書込みを表す。第２のビットレジスタは生産者６０４が共有資源６０８への書込みを開始する度に生産者６０４により更新され、かつ消費者６０６が共有資源６０８から読出しを開始する度に消費者６０６により更新されるため、生産者６０４の書込み動作を消費者６０６の読出し動作と連続的に比較する必要がなくなる。
【０１２１】
線７３０により排他的ＯＲゲート７５８の入力へ伝搬される信号は生産者６０４および消費者６０６により共有される第２のビットレジスタの論理状態を表す。線７５６により排他的ＯＲゲート７５８の入力へ伝搬される信号はクロックＰ２Ｃ１＿Ｃｌｋと同期化される第１のビットレジスタの論理状態を表す。排他的ＯＲゲート７５８の出力は線７６０により第２の生産者６０４および消費者６０６へ入力として伝搬されるＰ２Ｃ１＿Ｔｅｓｔ信号である。
【０１２２】
したがって、Ｐ２Ｃ１＿Ｔｅｓｔ信号により表される論理状態により共有資源６０８を第２の生産者６０４が書込みに利用できるか、また共有資源６０８を消費者６０６が読出しに利用できるかどうかが決定される。Ｐ２Ｃ１＿Ｔｅｓｔ信号がローであれば、共有資源６０８を第２の生産者６０４は書込みに利用できるが消費者６０６は読出しに利用できない。Ｐ２Ｃ１＿Ｔｅｓｔ信号がハイであれば、共有資源６０８を第２の生産者６０４は書込みに利用できないが消費者６０６は読出しに利用できる。
【０１２３】
図８は第１のクロック（Ｐ１＿Ｃｌｋ）と同期作動する第１の生産者サブシステム８０２、第２のクロック（Ｐ２＿Ｃｌｋ）と同期作動する第２の生産者サブシステム８０４、第３のクロック（Ｃ１＿Ｃｌｋ）と同期作動する第１の消費者サブシステム８０６、および第４のクロック（Ｃ２＿Ｃｌｋ）と同期作動する第２の消費者サブシステム８０８を含むデジタルシステムの一部を表す単純化されたブロック図である。全てのクロックＰ１＿Ｃｌｋ，Ｐ２＿Ｃｌｋ，Ｃ１＿Ｃｌｋ，Ｃ２＿Ｃｌｋが互いに非同期的である。
【０１２４】
第１の生産者８０２はテスト論理構成要素８１２およびビットレジスタ８１４を含んでいる。第２の生産者８０４はテスト論理構成要素８１６およびビットレジスタ８１８を含んでいる。第１の消費者８０６はテスト論理構成要素８２０およびビットレジスタ８２２を含んでいる。第２の消費者８０８はテスト論理構成要素８２４およびビットレジスタ８２６を含んでいる。
【０１２５】
４つのサブシステム８０２，８０４，８０６，８０８は資源８１０を共有する。テスト論理構成要素８１２，８１６，８２０，８２４により各サブシステム８０２，８０４，８０６，８０８は共有資源８１０の状態を独立して決定することができる。ビットレジスタ８１４，８１８，８２２，８２６は０もしくは１の値を表すことができる。各サブシステム８０２，８０４，８０６，８０８は各ビットレジスタ８１４，８１８，８２２，８２６の値を読み出すことができる。４つのサブシステム８０２，８０４，８０６，８０８は相互に非同期クロックドメインで作動するため、各ビットレジスタ８１４，８１８，８２２，８２６の値は各非同期クロックと同期化しなければならないことが理解できるであろう。
【０１２６】
したがって、図８は、例えば、第１の消費者８０６のビットレジスタ８２２の値、第２の消費者８０８のビットレジスタ８２６の値、および第２の生産者８０４のビットレジスタ８１８の値のＰ１＿Ｃｌｋによりクロックされる１組の同期化要素８３０への伝搬を表している。ビットレジスタ８２２，８２６，８１８の同期化された値は第１の生産者８０２のテスト論理構成要素８１２へ伝搬される。したがって、ビットレジスタ８１４，８１８，８２２，８２６の値は第１の生産者８０２が利用できる。
【０１２７】
同様に、Ｐ２＿Ｃｌｋによりクロックされる１組の３個の同期化要素８３２がビットレジスタ８１４，８２２，８２６の値を同期化させて、このような値を第２の生産者８０４が利用できるようにする。また、Ｃ１＿Ｃｌｋによりクロックされる１組の３個の同期化要素８３４がビットレジスタ８１４，８１８，８２６の値を同期化させて、このような値を第１の消費者が利用できるようにする。同様に、Ｃ２＿Ｃｌｋによりクロックされる１組の３個の同期化要素８３６がビットレジスタ８１４，８１８，８２２の値を同期化させて、これらの値を第２の消費者が利用できるようにする。
【０１２８】
前記したように、生産者もしくは消費者は各サブシステムの各ビットレジスタの値を排他的ＯＲすることにより共有資源の状態を決定することができる。したがって、第１の生産者８０２は各ビットレジスタ８１４，８１８，８２２，８２６の値を排他的ＯＲする。このような排他的ＯＲの結果がゼロであれば、共有資源８１０内に失効データが存在しており第１の生産者８０２は共有資源８１０へデータを書き込むことができる。一方、このような排他的ＯＲの結果がゼロであれば、共有資源８１０内にフレッシュデータが存在しており第１の生産者は共有資源８１０へデータを書き込むことができない。共有資源８１０の可用性をテストするのに必要な論理は次式で例示される。
2007058881.tif 000008
Ｐ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源８１０内の任意のデータが既に消費者により読み出されており（データは失効）、第１の生産者８０２は共有資源８１０へ新しいデータを書き込むことができる。しかしながら、Ｐ１＿Ｔｅｓｔ式の結果が１であれば、共有資源８１０内にフレッシュデータが存在しており、第１の生産者８０２は共有資源８１０へ新しいデータを書き込むことができない。
【０１２９】
同じテスト論理が図８の消費者により使用される。例えば、第１の消費者８０６は次式に従って共有資源８１０の状態を確認することができる。
2007058881.tif 000009
【０１３０】
Ｃ１＿Ｔｅｓｔ式の結果が１であれば、共有資源８１０内にフレッシュデータが存在しており、第１の消費者８０６は即座にデータを読み出すことができる。一方、Ｃ１＿Ｔｅｓｔ式の結果がゼロであれば、共有資源８１０内のデータは失効しており第１の消費者８０６はデータを読み出すことができない。同様なテスト論理が第２の生産者８０４および第２の消費者８０８にも提供される。
【０１３１】
図９は、非同期クロックドメインで作動する２つの生産者サブシステムおよび２つの消費者サブシステムが共有資源の状態を独立してテストすることができる論理を表す論理図である。図９には共有資源が図示されていない。さらに、２つの生産者サブシステムおよび２つの消費者サブシステムの全体は図示されていない。図９は、図８に関して一般的に説明したビットレジスタ構成要素およびテスト論理構成要素を簡易化する論理を例示するにすぎない。
【０１３２】
第１のビットレジスタは排他的ＯＲゲート９０２、Ｐ１＿ＣｌｋによりクロックされるＤフリップフロップ９０４、および第１の生産者８０２による第１のレジスタへのＰ１＿Ａｄｄ信号入力を含んでいる。このようなビットレジスタの動作だけでなく、その構成要素については既に詳細説明されているので繰り返さない。Ｐ１＿Ｂｉｔｒｅｇ信号は第１のビットレジスタの状態を表す。したがって、第１の生産者８０２（図８）のビットレジスタの値はＰ１＿Ｂｉｔｒｅｇ信号により表される。
【０１３３】
第２、第３および第４のビットレジスタは、それぞれ、Ｐ２＿Ｃｌｋによりクロックされる排他的ＯＲゲート９０６およびＤフリップフロップ９０８、Ｃ１＿Ｃｌｋによりクロックされる排他的ＯＲゲート９１０およびＤフリップフロップ９１２、およびＣ２＿Ｃｌｋによりクロックされる排他的ＯＲゲート９１４およびＤフリップフロップ９１６を含んでいる。第２のビットレジスタは、さらに第２の生産者８０４による第２のビットレジスタへのＰ２＿Ａｄｄ信号入力を含んでいる。第３のビットレジスタは、さらに第１の生産者８０６による第３のビットレジスタへのＣ１＿Ｓｕｂ信号入力を含んでいる。また、第４のビットレジスタは、さらに第２の消費者８０８による第４のビットレジスタへのＣ２＿Ｓｕｂ信号入力を含んでいる。第２、第３および第４のビットレジスタの論理状態は、それぞれ、Ｐ２＿Ｂｉｔｒｅｇ信号、Ｃ１＿Ｂｉｔｅｇ信号、およびＣ２＿Ｂｉｔｒｅｇ信号により表される。したがって、第２の生産者８０４、第１の消費者８０６、および第２の消費者８０８の各ビットレジスタの値は、それぞれ、Ｐ２＿Ｂｉｔｒｅｇ信号、Ｃ１＿Ｂｉｔｅｇ信号、およびＣ２＿Ｂｉｔｒｅｇ信号により表される。
【０１３４】
第１、第２、第３および第４のビットレジスタは相互に排他的なクロックドメイン内で作動する。したがって、ビットレジスタの値Ｐ１＿Ｂｉｔｒｅｇ，Ｐ２＿Ｂｉｔｒｅｇ，Ｃ１＿Ｂｉｔｒｅｇ，およびＣ２＿Ｂｉｔｒｅｇは各非同期クロックと同期化させてこのような値を各生産者および消費者サブシステムが利用できるようにしなければならない。
【０１３５】
したがって、図９にはクロックＰ２＿Ｃｌｋによりクロックされる同期化要素９２０への入力、クロックＣ１＿Ｃｌｋによりクロックされる同期化要素９２２への入力、およびＣ２＿Ｃｌｋによりクロックされる同期化要素９２４への入力としてＰ１＿Ｂｉｔｒｅｇ信号を伝搬する線９１８が図示されている。同様に、線９２６はＰ１＿Ｃｌｋにクロックされる同期化要素９２８への入力、Ｃ１＿Ｃｌｋによりクロックされる同期化要素９３０への入力、およびＣ２＿Ｃｌｋによりクロックされる同期化要素９３２への入力としてＰ２＿Ｂｉｔｒｅｇ信号を伝搬する。また、線９３４はＰ１＿Ｃｌｋによりクロックされる同期化要素９３６への入力、Ｐ２＿Ｃｌｋによりクロックされる同期化要素９３８への入力、およびＣ２＿Ｃｌｋによりクロックされる同期化要素９４０への入力としてＣ１＿Ｂｉｔｒｅｇ信号を伝搬する。同様に、線９４２はＰ１＿Ｃｌｋにクロックされる同期化要素９４４への入力、Ｐ２＿Ｃｌｋによりクロックされる同期化要素９４６への入力、およびＣ１＿Ｃｌｋによりクロックされる同期化要素９４８への入力としてＣ２＿Ｂｉｔｒｅｇ信号を伝搬する。
【０１３６】
図８に関して前記したように、共有資源の状態は各生産者および消費者サブシステムのビットレジスタの値を排他的ＯＲすることにより確認することができる。したがって、図９には、例えば、線９１８により排他的ＯＲゲート９５０へ入力として伝搬されるＰ１＿Ｂｉｔｒｅｇ信号が図示されている。線９５２はＰ１＿Ｃｌｋと同期するＣ１＿Ｂｉｔｒｅｇ信号を排他的ＯＲゲート９５０へ第２の入力として伝搬する。線９５４はＰ１＿Ｃｌｋと同期するＣ２＿Ｂｉｔｒｅｇ信号を排他的ＯＲゲート９５６へ第１の入力として伝搬する。線９５８はＰ１＿Ｃｌｋと同期するＰ２＿Ｂｉｔｒｅｇ信号を排他的ＯＲゲート９５６へ第２の入力として伝搬する。排他的ＯＲゲート９５０の出力は線９６０により排他的ＯＲゲート９６４へ入力として伝搬される。排他的ＯＲゲート９５６の出力は線９６２により排他的ＯＲゲート９６４へ第２の入力として伝搬される。排他的ＯＲゲート９６４の出力は線９６６により第１の生産者８０２へ入力として伝搬されるＰ１＿Ｔｅｓｔ信号である。
【０１３７】
したがって、ビットレジスタＰ１＿Ｂｉｔｒｅｇ，Ｐ２＿Ｂｉｔｒｅｇ，Ｃ１＿Ｂｉｔｒｅｇ，およびＣ２＿Ｂｉｔｒｅｇの値の排他的ＯＲが排他的ＯＲゲート９５０，９５６，および９６４により遂行される。このような排他的ＯＲの結果は線９６６により伝搬されるＰ１＿Ｔｅｓｔ信号である。Ｐ１＿Ｔｅｓｔ信号の値により、共有資源８１０を第１の生産者８０２が書込みに利用できるかどうかが決定される。Ｐ１＿Ｔｅｓｔ信号がローであれば、第１の生産者８０２は共有資源８１０へ新しいデータを書き込むことができる。しかしながら、Ｐ１＿Ｔｅｓｔ信号がハイであれば、第１の生産者８０２は共有資源８１０へ新しいデータを書き込むことができない。
【０１３８】
前記したＰ１＿ＡｄｄとＰ１＿Ｔｅｓｔとの間の関係が図９に示すＰ１＿ＡｄｄとＰ１＿Ｔｅｓｔとの間に存在することが理解できるであろう。すなわち、第１の生産者８０２により発生される各Ｐ１＿Ａｄｄ信号により、Ｐ１＿Ｔｅｓｔは第１の生産者のクロックＰ１＿Ｃｌｋの１クロックサイクル内に更新される。共有資源８１０が利用不能となっているあることをＰ１＿Ｔｅｓｔ信号により即座に通知される第１の生産者は、共有資源８１０へ早まってアクセスすることを防止される。同様な関係がＰ２＿ＡｄｄとＰ２＿Ｔｅｓｔ，Ｃ１＿ＳｕｂとＣ１＿Ｔｅｓｔ，およびＣ２＿ＳｕｂとＣ２＿Ｔｅｓｔについても存在する。
【０１３９】
図９のＰ２＿Ｔｅｓｔ回路、Ｃ１＿Ｔｅｓｔ回路、およびＣ２＿Ｔｅｓｔ回路の構造および動作はＰ１＿Ｔｅｓｔ回路の構造および動作と類似しており、ここでは詳細に説明しない。
【０１４０】
本発明は任意数の生産者サブシステムもしくは消費者サブシステムを有するデジタルシステムに向けられている。資源を２つ以上の生産者サブシステムもしくは２つ以上消費者サブシステムで共有する場合には、２つ以上の生産者サブシステムが共有資源へ同時に書き込むのを防止するか、あるいは２つ以上の消費者サブシステムが共有資源から同時に読み出すのを防止するために、アービター要素が必要である。このような共有資源への非制御同時アクセスは競合状態として知られている。
【０１４１】
アービターの基本的な機能は、１）資源要求を受信する、２）資源の解放を受信する、３）資源の全ての要求を調停する、４）要求の一つに資源を許可することである。資源へのアクセスを調整するこれらの機能を使用して、アービターは競合状態を回避することができる。このようなアービター要素は沢山知られており、本発明は特定のアービター要素に向けられるものではない。
【０１４２】
しかしながら、本発明の実施例が２つ以上の生産者サブシステムもしくは２つ以上の消費者サブシステムを含み、したがってアービターを必要とする場合に本発明のもう一つの利点を理解することができる。共有資源の状態を決定する従来の方法には、セマフォアを使用して可用もしくは非可用状態を表すことが含まれている。従来の方法の元で、共有資源へのアクセスを望む各サブシステムは最初にセマフォアの値をチェツクする。多数のクロックドメインを含むシステムでは、セマフォアの値の更新だけでなくセマフォアの値のアクセスにも、セマフォアと非同期作動する全てのサブシステムについて同期化遅延が必要であることがお判りであろう。このような遅延によりアービターの設計が複雑化する。
【０１４３】
資源の解放を検出した後で、アービターは別の要求者へ資源へのアクセスを許可する。しかしながら、同期化遅延により、新たに許可された要求者が資源の非可用性を示すセマフォアの更新をまだ検出できない場合には、新たに許可された要求者は資源へのアクセスを有してはいるが（アービターにより許可された）資源を早まってアクセスすることがある（例えば、生産者が既にフレッシュデータを含んでいる資源へデータを書き込んだり、消費者が既に読み出されているデータを読み出す）。このような早まったアクセスを修正するために、典型的には最も遅くクロックされるサブシステムがセマフォアの更新を検出できるのに必要な最悪同期化遅延以上の遅延が組み込まれるようにアービターは設計される。
【０１４４】
本発明を共有資源の状態を決定するのに使用する場合、共通セマフォアが共有資源の状態を表すという従来の必要性が解消される。本発明に従って、各生産者および消費者は他の各生産者および消費者へ直接更新信号を送る。したがって、一つの同期化操作だけで任意の生産者もしくは消費者が共有資源の状態の更新を検出することができる。図１０ａ、図１０ｂおよび図１０ｃに例示するように、任意の生産者もしくは消費者への最大更新遅延が単一同期化動作と同等であるという事実により、アービターの設計に組込遅延を導入する必要性が解消される。したがって、資源を共有し資源へのアクセスを調停することによる処理速度の低下は最小限に抑えられる。
【０１４５】
図１０ａは第１のクロックＰ１＿Ｃｌｋと同期作動する第１の生産者１００２、第２のクロックＰ２＿Ｃｌｋと同期作動する第２の生産者１００４、および第２のクロックＰ２＿Ｃｌｋと同期作動するアービター１００６を含むデジタルシステムの一部を示す単純化したブロック図である。
【０１４６】
線１００８は第１の生産者１００２により発生されるＢＵＳ＿Ｒｅｌｅａｓｅ信号をＰ２＿Ｃｌｋによりクロックされる同期化要素１０１０へ入力として伝搬する。同期化要素１０１０の出力はアービター１００６へ入力として伝搬される。線１０１２はアービター１００６により発生されるＢＵＳ＿Ｇｒａｎｔ信号を第２の生産者１００４へ入力として伝搬する。線１０１４は第１の生産者１００２により発生されるＰ１＿Ｂｉｔｒｅｇ信号をＰ２＿Ｃｌｋによりクロックされる同期化要素１０１６へ入力として伝搬する。同期化要素１０１６の出力は線１０１８により第２の生産者１００４へ入力として伝搬される。線１０２０により第２のクロックＰ２＿Ｃｌｋが同期化要素１０１０、同期化要素１０１６、アービター１００６、および第２の生産者１００４に接続される。
【０１４７】
第１の生産者１００２は共有資源（図示せず）への書込み動作の開始時にＰ１＿Ｂｉｔｒｅｇ信号を更新する。Ｐ１＿Ｂｉｔｒｅｇ信号は第１の生産者のクロックＰ１＿Ｃｌｋと同期している。前記したように、本発明の元で共有資源の状態を決定するために、第２の生産者１００４はＰ１＿Ｂｉｔｒｅｇ信号の論理状態を読み出してそれ自体のビットレジスタの論理状態と比較できなければならない。したがって、Ｐ１＿Ｂｉｔｒｅｇ信号の論理状態は同期化要素１０１６によりＰ２＿Ｃｌｋと同期化され、同期化されたＰ１＿Ｂｉｔｒｅｇ信号は線１０１８により第２の生産者１００４へ伝搬される。
【０１４８】
第１の生産者１００２は共有資源への書込みを開始すると、線１００８により同期化要素１０１０へ入力として伝搬されるＢＵＳ＿Ｒｅｌｅａｓｅ信号も発生する。アービターは第２のクロックＰ２＿Ｃｌｋと同期作動しているため、ＢＵＳ＿Ｒｅｌｅａｓｅ信号はアービター１００６がＢＵＳ＿Ｒｅｌｅａｓｅ信号を受信できる前にＰ２＿Ｃｌｋと同期化させなければならない。同期化要素１０１０の出力はＰ２＿Ｃｌｋと同期化されたＢＵＳ＿Ｒｅｌｅａｓｅ信号を表す。同期化されたＢＵＳ＿Ｒｅｌｅａｓｅ信号はアービター１００６へ入力として伝搬される。ＢＵＳ＿Ｒｅｌｅａｓｅ信号を受信すると、アービター１００６はＢＵＳ＿Ｇｒａｎｔ信号を発生して応答し、第２の生産者１００４に共有資源へのアクセスを許可する。ＢＵＳ＿Ｇｒａｎｔ信号はＰ２＿Ｃｌｋと同期しているため、第２の生産者１００４へ直接入力として伝搬される。
【０１４９】
図１０ａはアービター１００６が一つの生産者サブシステムと同期作動しており、かつ本発明が共有資源の状態を決定するのに使用される場合に、適切なアービタータイミングを保証するのにアービター１００６内に組込み遅延を導入する必要がないことを示している。第２の生産者１００４は、同期化要素１０１６によりＰ１＿Ｂｉｔｒｅｇ信号がＰ２＿Ｃｌｋと同期化されるとすぐに、第１の生産者１００２による共有資源状態の任意の変化を通知される。ＢＵＳ＿Ｒｅｌｅａｓｅ信号がＰ２＿Ｃｌｋと同期化されてアービター１００６へ伝搬され、かつアービター１００６がそれに応答して第２の生産者１００４へ伝搬されるＢＵＳ＿Ｇｒａｎｔ信号を発生するのに少なくとも同量の時間がとられる。したがって、アービター１００６は、第２の生産者１００４が第１の生産者１００２のＰ１＿Ｂｉｔｒｅｇ信号を検出できないうちに、第１の生産者１００２のＢＵＳ＿Ｒｅｌｅａｓｅ信号を検出することはできず、またＢＵＳ＿Ｇｒａｎｔ信号によりバスを第２の生産者１００４へ許可することもできない。したがって、アービター１００６を遅くする組込み遅延は導入されていない事実にも拘わらず、競合状態の可能性はない。
【０１５０】
図１０ｂは図１０ａに示すものと同じ構成要素を示す単純化したブロック図である。しかしながら、図１０ｂでは、アービター１００６は第１の生産者１００２と同期作動している。したがって、アービター１００６は同期化することなく第１の生産者１００２から直接ＢＵＳ＿Ｒｅｌｅａｓｅ信号を受信することができる。しかも、第２の生産者１００４はアービター１００６とは非同期的であるため、アービター１００６により発生されるＢＵＳ＿Ｇｒａｎｔ信号は第２の生産者１００４がＢＵＳ＿Ｇｒａｎｔ信号を検出する前にＰ２＿Ｃｌｋと同期化させなければならない。図１０ａの場合と同様に、アービター１００６は、第２の生産者１００４が第１の生産者１００２の更新されたＰ１＿Ｂｉｔｒｅｇ信号を検出できる前に、第１の生産者１００２のＢＵＳ＿Ｒｅｌｅａｓｅ信号を検出することはできず、またＢＵＳ＿Ｇｒａｎｔ信号によりバスを第２の生産者１００４へ許可することもできない。
【０１５１】
図１０ｃにはアービター１００６が、Ｐ１＿ＣｌｋおよびＰ２＿Ｃｌｋの両方のクロックと非同期的である、クロックＡ＿Ｃｌｋと同期作動している点を除けば図１０ａに記載したものと同じ構成要素が図示されている。そのため、第１の生産者１００２から発生されるＢＵＳ＿Ｒｅｌｅａｓｅ信号は、アービター１００６がＢＵＳ＿Ｒｅｌｅａｓｅ信号を検出できる前にＡ＿Ｃｌｋと同期させなければならない。また、アービター１００６は第２の生産者１００４とは非同期的であるため、アービター１００６により発生されるＢＵＳ＿Ｇｒａｎｔ信号は第２の生産者１００４がＢＵＳ＿Ｇｒａｎｔ信号を検出できる前にＰ２＿Ｃｌｋと同期させなければならない。このように、アービター１００６により発生されるＢＵＳ＿Ｇｒａｎｔ信号だけでなくアービター１００６へ伝搬されるＢＵＳ＿Ｒｅｌｅａｓｅ信号を同期化させなければならないため、第２の生産者１００４が第１の生産者１００２の更新されたＰ１＿Ｂｉｔｒｅｇ信号を検出できる前に、アービター１００６は第１の生産者１００２のＢＵＳ＿Ｒｅｌｅａｓｅ信号を検出することはできず、またＢＵＳ＿Ｇｒａｎｔ信号によりバスを第２の生産者１００４へ許可することもできない。
【０１５２】
図１０ａ、図１０ｂおよび図１０ｃは、アービターのために選択されるクロクドメインとは無関係に、競合状態を防止するためにアービターに対して任意の付加遅延を間挿する必要性が本発明により回避されることを例示している。
【０１５３】
図１１は、第１のクロックＰ１＿Ｃｌｋで同期作動する第１の生産者１１０２、第２のクロックＰ２＿Ｃｌｋで同期作動する第２の生産者１１０４、Ｐ１＿Ｃｌｋで同期作動する第１のアービター１１０６、第４のクロックＣ１＿Ｃｌｋで同期作動する消費者１１０８、およびＣ１＿Ｃｌｋで同期作動する第２のアービター１１０９を示す単純化したブロック図である。３つのクロックＰ１＿Ｃｌｋ，Ｐ２＿ＣｌｋおよびＣ１＿Ｃｌｋは相互に非同期的である。
【０１５４】
線１１１０は第１の生産者１００２から発生されるＰ１＿Ｒｅｑｕｅｓｔ信号を第１のアービター１１０６へ入力として伝搬する。線１１１２は第１のアービター１１０６から発生されるＰ１＿Ｇｒａｎｔ信号を第１の生産者１１０２へ入力として伝搬する。線１１１４は第１の生産者１１０２から発生されるＰ１＿Ａｄｄ信号を第１のビットレジスタ１１１６へ入力として伝搬する。線１１１８は第１のビットレジスタ１１１８から発生されるＰ１＿Ｂｉｔｒｅｇ信号をテスト論理構成要素１１２０へ入力として伝搬する。第１のテスト論理構成要素１１２０の出力は、線１１２２により第１の生産者１１０２へ入力として伝搬されるＰ１＿Ｔｅｓｔ信号である。
【０１５５】
線１１１８は、また、Ｐ１＿Ｂｉｔｒｅｇ信号をＰ２＿Ｃｌｋによりクロックされる同期化要素１１２４へ入力として伝搬する。同期化要素１１２４の出力は第２のテスト論理構成要素１１２６へ入力として伝搬される。線１１１８は、さらに、Ｐ１＿Ｂｉｔｒｅｇ信号をＣ１＿Ｃｌｋによりクロックされる同期化要素１１２８へ入力として伝搬する。同期化要素１１２８の出力は第３のテスト論理構成要素１１３０へ入力として伝搬される。
【０１５６】
線１１３４は第２の生産者１１０４により発生されるＰ２＿Ｒｅｑｕｅｓｔ信号を、Ｐ１＿Ｃｌｋによりクロックされる同期化要素１１３６へ入力として伝搬する。同期化要素１１３６の出力は第１のアービター１１０６へ入力として伝搬される。第１のアービター１１０６により発生されるＰ２＿Ｇｒａｎｔ信号は、Ｐ２＿Ｃｌｋによりクロックされる同期化要素１１４０へ入力として線１１３８により伝搬される。第２の生産者１１０４により発生されるＰ２＿Ａｄｄ信号は、線１１４２により第２のビットレジスタ１１４４へ伝搬される。Ｐ２＿Ｂｉｔｒｅｇ信号が第２のビットレジスタ１１４４により発生され、線１１４６により第２のテスト論理構成要素１１２６へ伝搬される。第２のテスト論理構成要素１１２６は、線１１４８により第２の生産者１１０４へ入力として伝搬されるＰ２＿Ｔｅｓｔ信号を発生する。線１１４６はＰ２＿Ｂｉｔｒｅｇ信号をＰ１＿Ｃｌｋによりクロックされる同期化要素１１５０へ入力として伝搬する。同期化要素１１５０の出力は第１のテスト論理構成要素１１２０へ入力として伝搬される。線１１４６は、また、Ｐ２＿Ｂｉｔｒｅｇ信号をＣ１＿Ｃｌｋによりクロックされる同期化要素１１５２へ入力として伝搬する。同期化要素１１５２の出力は第３のテスト論理構成要素１１３０へ入力として伝搬される。
【０１５７】
線１１５４は消費者１１０８により発生されるＣ１＿Ｒｅｑｕｅｓｔ信号を第２のアービター１１０９へ入力として伝搬する。第２のアービター１１０９は線１１５６により消費者１１０８へ入力として伝搬されるＣ１＿Ｇｒａｎｔ信号を発生する。消費者は線１１５８により第３のビットレジスタ１１６０へ入力として伝搬されるＣ１＿Ｓｕｂ信号を発生する。第３のビットレジスタは線１１６２により第３のテスト論理構成要素１１３０へ入力として伝搬されるＣ１＿Ｂｉｔｒｅｇ信号を発生する。第３のテスト論理構成要素は線１１６４により消費者１１０８へ入力として伝搬されるＣ１＿Ｔｅｓｔ信号を発生する。線１１６２は、また、Ｃ１＿Ｂｉｔｒｅｇ信号をＰ１＿Ｃｌｋによりクロックされる同期化要素１１６６へ入力として伝搬する。同期化要素１１６６の出力は第１のテスト論理構成要素１１２０へ入力として伝搬される。線１１６２は、さらに、Ｃ＿Ｂｉｔｒｅｇ信号をＰ２＿Ｃｌｋによりクロックされる同期化要素１１６８へ入力として伝搬する。同期化要素１１６８の出力は第２のテスト論理構成要素１１２６へ入力として伝搬される。
【０１５８】
線１１７０によりＰ１＿Ｃｌｋは第１の生産者１１０２、第１のアービター１１０６、および同期化要素１１３６，１１５０，１１６６に接続される。線１１７２によりＰ２＿Ｃｌｋは第２の生産者１１０４、および同期化要素１１４０，１１２４，１１６８に接続される。線１１７４によりＣ１＿Ｃｌｋは消費者１１０８、第２のアービター１１０９、および同期化要素１１２８，１１５２に接続される。
【０１５９】
図１２は図１１に記載した構成要素により発生されるある信号間のタイミング関係を示すタイミング図である。図１２には時間間隔（ｔ）にわたって３つのクロックＰ１＿Ｃｌｋ，Ｐ２＿Ｃｌｋ，Ｃ１＿Ｃｌｋと同期して発生される信号が含まれている。Ｐ１＿Ｃｌｋ信号１２０２は時間間隔ｔ中にＰ１＿Ｃｌｋにより発生される論理状態遷移を表す。Ｐ２＿Ｃｌｋ信号１２０４は時間間隔ｔ中にＰ２＿Ｃｌｋにより発生される論理状態遷移を表す。同様に、Ｃ１＿Ｃｌｋ信号１２０６は時間間隔ｔ中にＣ１＿Ｃｌｋにより発生される論理状態遷移を表す。Ｐ２＿Ｃｌｋが時間間隔ｔ中に発生する遷移はＰ１＿Ｃｌｋ信号よりも少ないことがお判りであろう（すなわち、Ｐ２＿ＣｌｋはＰ１＿Ｃｌｋよりも高速である）。同様に、Ｃ１＿Ｃｌｋ信号は時間間隔ｔ中にＰ１＿Ｃｌｋ信号よりも多くの遷移を発生する（すなわち、Ｃ１＿ＣｌｋはＰ１＿Ｃｌｋよりも高速である）。
【０１６０】
Ｐ１＿Ｒｅｑｕｅｓｔ信号１２０８およびＰ２＿Ｒｅｑｕｅｓｔ信号１２１０は、それぞれ、Ｐ１＿Ｃｌｋ信号１２０２およびＰ２＿Ｃｌｋ１２０４に同期してローからハイへ遷移する。Ｐ１＿ＲｅｑｕｅｓｔおよびＰ２＿Ｒｅｑｕｅｓｔ信号１２０８および１２１０は、それぞれ、第１の生産者１１０２（図１１）および第２の生産者１１０４（図１１）によりほとんど同時に発生される。Ｐ１＿ＲｅｑｕｅｓｔおよびＰ２＿Ｒｅｑｕｅｓｔ信号は、それぞれ、線１１１０および１１３４（図１１）により第１のアービター１１０６へ伝搬される。したがって、第１の生産者１１０２および第２の生産者１１０４は共有資源（図示せず）へのアクセスを競合している。
【０１６１】
消費者１１０８（図１１）により発生されるＣ１＿Ｒｅｑｕｅｓｔ信号１２２４はＣ１＿Ｃｌｋ信号１２０６と同期してローからハイへ遷移する。第２のアービター１１０９へ入力として伝搬されるＣ１＿Ｒｅｑｕｅｓｔ信号１２２４の遷移は、消費者１１０８が共有資源へのアクセスを求めていることを示す。Ｃ１＿Ｒｅｑｕｅｓｔ信号１２２４の遷移に続いて、第２のアービター１１０９により発生されるＣ１＿Ｇｒａｎｔ信号１２２６がローからハイへ遷移して、第２のアービター１１０９は共有資源へのアクセスを消費者１１０８へ許可したことを示す。共有資源へのアクセスを競合する他の消費者は図示されていない。
【０１６２】
Ｐ１＿Ｒｅｑｕｅｓｔ信号１２０８およびＰ２＿Ｒｅｑｕｅｓｔ信号１２１０のローからハイへの遷移に続いて、Ｐ１＿Ｇｒａｎｔ信号１２１２がローからハイへ遷移する。Ｐ１＿Ｇｒａｎｔ信号は第１のアービター１１０６により発生されて、第１の生産者が共有資源へアクセスする権利を与えられていることを示す。Ｐ２＿Ｒｅｑｕｅｓｔ信号１２１０はハイのままとされて、第２の生産者が継続的に共有資源へのアクセスを求めていることを示す。
【０１６３】
共有資源へのアクセスを得ると、第１の生産者１１０２は共有資源への書込みアクセスを開始しかつこのような書込みアクセスが開始されたことを示すＰ１＿Ａｄｄ信号を発生する。その結果、Ｐ１＿Ｇｒａｎｔ信号の遷移に続いてＰ１＿Ｃｌｋ信号により発生される次の完全な遷移時に、Ｐ１＿Ａｄｄ信号１２１４はローからハイへ遷移する。Ｐ１＿Ａｄｄ信号１２１４は第１のビットレジスタ１１１６へ入力される。Ｐ１＿Ｃｌｋ信号１２０２の次の完全な遷移時に、第１のビットレジスタ１１１６（図１１）はＰ１＿Ｂｉｔｒｅｇ信号１２１６の論理状態をローからハイへ変える。また、第１の生産者１１０２は共有資源への書込みアクセスを開始しているため、第１の生産者はＰ１＿Ｒｅｑｕｅｓｔ信号の論理状態をハイからローへ変えることにより、その資源へのアクセス要求を撤回する。
【０１６４】
Ｐ１＿Ａｄｄ信号１２１４はパルス信号であるため、Ｐ１＿Ｂｉｔｒｅｇ信号１２１６の論理状態が変化すると同時にローへ遷移する。Ｐ１＿Ｂｉｔｒｅｇ信号１２１６は即座に第１のテスト論理構成要素１１２０（図１１）へ入力として伝搬され、また、それによりＰ１＿Ｔｅｓｔ信号１２１８の論理状態は即座にローからハイへ変化する。第１の生産者１１０２による書込みアクセスの開始に続いて、Ｐ１＿Ｃｌｋ信号１２０２の完全な１遷移内でＰ１＿Ｔｅｓｔ信号１２１８が更新されるため、第１の生産者１１０２はそれ自体の書込みアクセスによる共有資源の状態変化を通知され、通知されないうちは恐らく別の書込みアクセスを発生することはできない。
【０１６５】
Ｐ１＿Ｂｉｔｒｅｇ信号は、Ｐ２＿Ｃｌｋによりクロックされる同期化要素１１２４へ線１１１８により伝搬される。次に、Ｐ２＿Ｃｌｋと同期化されたＰ１＿Ｂｉｔｒｅｇ信号により表される同期化要素１１２４の出力は、第２のテスト論理構成要素１１２６へ伝搬される。同期化要素１１２４はＰ２＿Ｃｌｋによりクロックされるため、第２のテスト論理構成要素はＰ２＿Ｃｌｋ信号１２０４の一つの完全な遷移が生じるまでＰ２＿Ｔｅｓｔ信号１２２０を更新しない。したがって、Ｐ１＿Ｂｉｔｒｅｇ信号１２１６とは非同期的であるＰ２＿Ｔｅｓｔ信号１２２０は、Ｐ１＿Ｂｉｔｒｅｇ信号１２１６の遷移に続いてＰ２＿Ｃｌｋ信号１２０４の一つの完全な遷移が生じると、ローからハイへ遷移する。
【０１６６】
Ｐ１＿Ｂｉｔｒｅｇ信号の同様な同期化が第３のテスト論理構成要素１１３０に関して生じる。したがって、第３のテスト論理構成要素１１３０は、Ｐ１＿Ｂｉｔｒｅｇ信号１２１６の遷移に続いてＣ１＿Ｃｌｋ信号の一つの完全な遷移が生じるまで、Ｃ１＿Ｔｅｓｔ信号１２２２の論理状態を更新しない。Ｃ１＿Ｔｅｓｔ信号１２２２はＰ１＿Ｂｉｔｒｅｇ信号１２１６とは非同期的であり、したがって、Ｐ１＿Ｂｉｔｒｅｇ信号１２１６の遷移に続いてＣ１＿Ｃｌｋ信号１２０６の一つの完全な遷移が生じると、ローからハイへ遷移する。
【０１６７】
Ｐ２＿Ｔｅｓｔ信号１２２０およびＣ１＿Ｔｅｓｔ信号１２２２が遷移すると、第２の生産者１１０４および消費者１１０８は、それぞれ、第１の生産者１１０２により開始される書込みアクセスによる共有資源の状態変化を検出することができる。Ｃ１＿Ｃｌｋ信号１２０６はＰ２＿Ｃｌｋ信号１２０４よりも高速で遷移を発生するため、消費者１１０８は共有資源のこのような状態変化を第２の生産者１１０４よりも早期に検出することができる。
【０１６８】
第２のアービター１１０９により既に共有資源へのアクセスを許可されている消費者１１０８は、Ｃ１＿Ｔｅｓｔ信号１２２２の遷移に続くＣ１＿Ｃｌｋ信号１２０６の一つの完全な遷移内で共有資源への読出しアクセスを開始する。消費者１１０８はＣ１＿Ｓｕｂ信号１２２８を発生することにより、開始した読出しアクセスを表示する。Ｐ１＿Ａｄｄ信号１２１４と同様に、Ｃ１＿Ｓｕｂ信号１２２８はパルスでありしたがって、Ｃ１＿Ｃｌｋ信号１２０６の１サイクル中にローからハイ次にハイからローへ遷移する。Ｃ１＿Ｓｕｂ信号１２２８は第３のビットレジスタ１１６０へ伝搬する。第３のビットレジスタ１１６０により、Ｃ１＿Ｃｌｋ信号１２０６の次の完全な遷移時にＣ１＿Ｂｉｔｒｅｇ信号１２３０はローからハイへ変化する。
【０１６９】
Ｃ１＿Ｂｉｔｒｅｇ信号１２３０は第３のテスト論理構成要素１１６０（図１１）へ即座に伝搬され、それによりＣ１＿Ｔｅｓｔ信号１２２２は即座にハイからローへ変化する。Ｃ１＿Ｂｉｔｒｅｇ信号１２３０は同期化要素１１６６，１１６８へ伝搬され、それぞれ、Ｐ１＿Ｃｌｋ信号１２０２およびＰ２＿Ｃｌｋ信号１２０４と同期化される。このような同期化に続いて、Ｐ１＿Ｔｅｓｔ信号１２１８はＣ１＿Ｔｅｓｔ信号１２２２の遷移に続くＰ１＿Ｃｌｋ信号１２０２の一つの完全な遷移時にハイからローへ遷移する。同様に、Ｐ２＿Ｔｅｓｔ信号１２２０はＣ１＿Ｔｅｓｔ信号１２２２の遷移に続くＰ２＿Ｃｌｋ信号１２０４の一つの完全な遷移時にハイからローへ遷移する。Ｐ１＿Ｔｅｓｔ信号１２１８およびＰ２＿Ｔｅｓｔ信号１２２０のこのような遷移は、第１の生産者１１０２および第２の生産者１１０４が、共有資源への読出しアクセスを開始する消費者１１０８による共有資源の状態変化を検出できることを示す。
【０１７０】
第１の生産者１１０２がＰ１＿Ｒｅｑｕｅｓｔ１２０８信号の論理状態をハイからローへ変化しており、かつ第２の生産者がＰ２＿Ｒｅｑｕｅｓｔ信号１２１０のハイ論理状態を維持しているため、第１のアービター１１０６により信号Ｐ２＿Ｇｒａｎｔ１２３２はローからハイへ遷移して第２の生産者１１０４へ共有資源へのアクセスが許可される。共有資源へのアクセスを有しかつＰ２＿Ｔｅｓｔ信号１２２０のロー論理状態により共有資源を利用できることを通知されている第２の生産者は、共有資源への書込みアクセスを開始する。このような書込みアクセスが開始されていることを表示するために、第２の生産者１１０４によりＰ２＿Ａｄｄ信号１２３４がローからハイへ遷移される。Ｐ２＿Ａｄｄ信号１２３４はパルスであるため、Ｐ１＿Ｃｌｋ信号１２０４の一つの完全な遷移中にローからハイへかつハイからローへ遷移する。
【０１７１】
Ｐ２＿Ａｄｄ信号１２３４は第２のビットレジスタ１１４４へ伝搬され、それによりＰ２＿Ａｄｄ信号１２３４の遷移に続くＰ１＿Ｃｌｋ信号１２０４の一つの完全な遷移時に、Ｐ２＿Ｂｉｔｒｅｇ信号１２３６はローからハイへ遷移する。Ｐ２＿Ｂｉｔｒｅｇ信号１２３６は即座に第２のテスト論理構成要素１１２６へ伝搬され、それによりＰ２＿Ｔｅｓｔ信号１２２０も即座にローからハイへ遷移する。
【０１７２】
Ｐ２＿Ｂｉｔｒｅｇ信号１２３６は同期化要素１１５０および１１５２へ伝搬されそれらはＰ２＿Ｂｉｔｒｅｇ信号１２３６を、それぞれ、Ｐ１＿Ｃｌｋ信号１２０２およびＣ１＿Ｃｌｋ信号１２０６と同期化させる。このような同期化の後で、同期化されたＰ２＿Ｂｉｔｒｅｇ信号１２３６は、それぞれ、第１のテスト論理構成要素１１２０および第３のテスト論理構成要素１１３０へ伝搬される。
【０１７３】
第１のテスト論理構成要素によりＰ１＿Ｔｅｓｔ信号１２１８はローからハイへ遷移する。しかしながら、Ｐ２＿Ｂｉｔｒｅｇ信号１２３６はＰ１＿Ｔｅｓｔ信号１２１８とは非同期的であるため、Ｐ１＿Ｔｅｓｔ信号１２１８はＰ２＿Ｂｉｔｒｅｇ信号１２３６の遷移に続いてＰ１＿Ｃｌｋ信号の一つの完全な遷移が生じるまで遷移しない。
【０１７４】
同様に、第３の論理構成要素によりＣ１＿Ｔｅｓｔ信号１２２２はローからハイへ遷移し、このような遷移はＰ２＿Ｂｉｔｒｅｇ信号１２３６の遷移に続くＣ１＿Ｃｌｋ信号１２０６の一つの完全な遷移時に生じる。
【０１７５】
Ｃ１＿Ｇｒａｎｔ信号１２２６はハイ論理状態を維持しており、したがって、消費者１１０８はまだ共有資源へのアクセスを有している。Ｃ１＿Ｔｅｓｔ信号１２２２はハイ論理状態を示すため、共有資源を消費者１１０８は利用できる。したがって、消費者１１０８は共有資源への読出しアクセスを開始しパルスＣ１＿Ｓｕｂ信号１２２８を発生してこのような読出しアクセスが開始されたことを表示する。前記したように、パルスであるＣ１＿Ｓｕｂ信号１２２８はＣ１＿Ｃｌｋ信号１２０６の一つの完全な遷移中にローへ降下する。Ｃ１＿Ｓｕｂ信号１２２８は第３のビットレジスタ１１６０へ伝搬され、Ｃ１＿Ｂｉｔｒｅｇ信号１２３０はハイからローへ遷移する。Ｃ１＿Ｂｉｔｒｅｇ信号１２３０は第３のテスト論理構成要素１１３０へ伝搬され、Ｃ１＿Ｔｅｓｔ信号１２２２は即座にハイからローへ遷移する。前記したように、Ｃ１＿Ｂｉｔｒｅｇ信号１２３０は、それぞれ、Ｐ１＿Ｃｌｋ信号１２０２およびＰ２＿Ｃｌｋ信号１２０４に同期化されて、Ｐ１＿Ｔｅｓｔ信号１２１８およびＰ２＿Ｔｅｓｔ信号１２２０はハイからローへ遷移する。
【０１７６】
本発明はアービターの機能に向けられたものではなく、またサブシステム間の調停を行う任意の方法に依存するものでもない。
【０１７７】
ここに記載された本質的な特徴を逸脱することなく、他の特定の形式で本発明を実施することができる。前記した実施例はあらゆる点において、単なる説明用であって決してそれに制約されるものではない。発明の範囲は前記説明ではなく請求の範囲によって示される。請求の範囲の意味および同等な範囲内に入る任意の全ての変更は請求の範囲に入るものとする。
【図面の簡単な説明】
【０１７８】
【図１】図１は全てが共通資源を共有する異なるクロックドメインで作動する多数の生産者サブシステムおよび多数の消費者サブシステムを含むデジタルシステムの一部を例示するブロック図。
【図２】図２は各生産者および消費者が同じクロックドメインで作動しているコンピュータ環境において各生産者および消費者がカウンタを含みかつ一つの資源を共有する、２つの生産者サブシステムおよび２つの消費者サブシステムを例示するブロック図。
【図３】図３は各サブシステムがカウンタを含み、各サブシステムが資源を共有し、各生産者および消費者が異なるクロックドメインで作動する、２つの生産者サブシステム、２つの消費者サブシステムを例示するブロック図。
【図４】図４は各々がビットレジスタを含み、各々がクロックドメインで作動する、資源を共有する一つの生産者および一つの消費者を含むデジタルシステムの一部を例示するブロック図。
【図５ａ】図５ａは各サブシステムが異なるクロックドメインで作動する、一つの生産者サブシステムおよび一つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図５ｂ】図５ｂは共通クロックによりクロックされる２個のＤフリップフロップを含む同期化要素を例示する論理図。
【図６】図６は各サブシステムがビットレジスタを含み資源を共有する、一つの生産者サブシステムを含む第１のクロックドメインと、一つの生産者サブシステムおよび一つの消費者サブシステムを含む第２のクロックドメインと、の２つのクロックドメインを含むデジタルシステムの一部を表すブロック図。
【図７ａ】図７ａは一つのクロックドメイン内で作動する一つの生産者サブシステム、およびもう一つのクロックドメイン内で作動する一つの生産者サブシステムおよび一つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図７ｂ】図７ｂは一つのクロックドメイン内で作動する一つの生産者サブシステムに対するビットレジスタ構成要素および資源テスト構成要素、およびもう一つのクロックドメイン内で作動する一つの生産者サブシステムおよび一つの消費者サブシステムにより共有されるビットレジスタ構成要素および資源テスト構成要素を例示する論理図。
【図８】図８は各々がビットレジスタを含み、各々が資源を共有し、各々が異なるクロックドメイン内で作動する２つの生産者サブシステムおよび２つの消費者サブシステムを含むデジタルシステムの一部を表すブロック図。
【図９】図９は全てが独立したクロックドメイン内で作動する、２つの生産者サブシステムおよび２つの消費者サブシステムに対する各ビットレジスタ構成要素および資源テスト構成要素を含むデジタルシステムの一部を表す論理図。
【図１０ａ】図１０ａは各々が異なるクロックドメイン内で作動し第２の生産者のクロックドメイン内で作動するアービターにより調整される２つの生産者を表すブロック図。
【図１０ｂ】図１０ｂは各々が異なるクロックドメイン内で作動し第１の生産者のクロックドメイン内で作動するアービターにより調整される２つの生産者を表すブロック図。
【図１０ｃ】図１０ｃは各々が異なるクロックドメイン内で作動し、両者がまだもう一つのクロックドメイン内で作動しているアービターにより調整される２つの生産者サブシステムを表すブロック図。
【図１１】図１１は各生産者からアービターへの信号およびアービターから各生産者への信号が他方の各クロックドメイン内へ同期化される、第３のクロックドメイン内で作動するアービターにより調整される異なるクロックドメイン内で作動する２つの生産者サブシステムを表すブロック図。
【図１２】図１２は第１の生産者、第２の生産者および消費者に対する各資源要求および許可を表す波形タイミング図。
【図１】
2007058881.tif 000010
【図２】
2007058881.tif 000011
【図３】
2007058881.tif 000012
【図４】
2007058881.tif 000013
【図５ａ】
2007058881.tif 000014
【図５ｂ】
2007058881.tif 000015
【図６】
2007058881.tif 000016
【図７ａ】
2007058881.tif 000017
【図７ｂ】
2007058881.tif 000018
【図８】
2007058881.tif 000019
【図９】
2007058881.tif 000020
【図１０ａ】
2007058881.tif 000021
【図１０ｂ】
2007058881.tif 000022
【図１０ｃ】
2007058881.tif 000023
【図１１】
2007058881.tif 000024
【図１２】
2007058881.tif 000025