(57)【要約】第１のデータレートで動作するソース領域からのデータは、異なるデータレートで動作する別の領域内のＦＩＦＯに転送される。ＦＩＦＯは、さらなる処理または記憶のためにシンクに転送する前にデータをバッファリングする。ソース側カウンタは、ＦＩＦＯにおいて利用可能なスペースを追跡する。開示された例において、イニシャルカウンタ値はＦＩＦＯの深さに相当する。カウンタはソース領域からのデータレディ信号に応答して遅延なくデクリメントする。カウンタはＦＩＦＯからのデータのリードのシンク領域からのシグナリングに応答してインクリメントする。それゆえ、インクリメントは、領域間のシグナリング待ち時間に従う。ＦＩＦＯが満杯であることをカウンタが示すとき、ソースは、もうひとつのデータのビートを送信してもよい。ＦＩＦＯ位置が利用可能になることが示されるまでデータの最後のビートは連続的にソースから送信され、効率的にもうひとつのＦＩＦＯ位置を提供する。
2008541623.tif 000002
【特許請求の範囲】
【請求項１】
シンク領域でファーストインファーストアウト（ＦＩＦＯ）記憶装置を介して、第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送するための方法において、
（ａ）ソースが転送のためのデータレディを有するとき、前記レディデータを前記ソース領域内のレジスタにロードし、前記データを前記シンク領域に提供し、データレディ信号を提供することと、
（ｂ）前記データレディ信号に応答して前記ソース領域内のカウンタにおいて、前記ＦＩＦＯ記憶装置において利用可能なスペースを表す値をデクリメントすることと、
（ｃ）前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングすることと、
（ｄ）前記シンク領域に前記データレディ状態のシグナリングを受信すると、前記ＦＩＦＯ記憶装置をアクティブにし、前記ソース領域内の前記レジスタから利用可能なデータを前記ＦＩＦＯ記憶装置にロードすることと、
（ｅ）前記ＦＩＦＯ記憶装置からのデータをデータシンクに出力し、前記ＦＩＦＯ記憶装置内のスペースをクリアすることと、
（ｆ）前記ＦＩＦＯ記憶装置内のスペースのクリアリングを前記ソース領域内のカウンタにシグナリングすることと、
（ｇ）前記ＦＩＦＯ記憶装置内のスペースのクリアリングのシグナリングを前記カウンタにおいて受信することに応答して、前記ソース領域内のカウンタにおいて、前記ＦＩＦＯ記憶装置内で利用可能なスペースを表す値をインクリメントすることと、
（ｈ）前記ソース領域内のカウンタにおいて、前記ＦＩＦＯ記憶装置内で利用可能なスペースを表す値に応答して、データを前記シンク領域に提供するために前記ソース領域内のレジスタにレディデータをロードし、データレディ信号を供給する次のステップを制御することと、
を備えた方法。
【請求項２】
ステップ（ａ）乃至（ｄ）を反復的に繰り返すことと、
ステップ（ｅ）乃至（ｇ）を反復的に繰り返すことと、
前記ソース領域内の前記カウンタにおいて、前記ＦＩＦＯ記憶装置において利用可能なスペースを表す値の現在の状態に従って前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
をさらに備えた、請求項１の方法。
【請求項３】
レディデータをロードする各サイクルの期間における前記繰り返しと制御は、前記シンク領域内の前記ＦＩＦＯ記憶装置を介して前記ソース領域と前記シンク領域との間のデータの実質的に連続したデータの転送をイネーブルにする、請求項２の方法。
【請求項４】
前記データレディ信号は単一サイクルのパルス信号を備え、
前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングするステップ（ｃ）は、単一サイクルのパルス信号を前記シンク領域内のレジスタに送信することを備えた、請求項１の方法。
【請求項５】
前記ソース領域内のレジスタからの前記利用可能なデータを前記ＦＩＦＯ記憶装置にロードすることが完了するまで、前記ＦＩＦＯを制御するために前記シンク領域内のレジスタから連続したレディ信号を供給することをさらに備えた、請求項４の方法。
【請求項６】
ステップ（ａ）乃至（ｄ）を反復的に繰り返すことと、
ステップ（ｅ）乃至（ｇ）を反復的に繰り返すことと、
前記ソース領域内の前記カウンタにおいて、前記ＦＩＦＯ記憶装置において利用可能なスペースを表す値の現在の状態に従って、前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
をさらに備えた、請求項４の方法。
【請求項７】
前記レディデータをロードする各サイクルの期間における前記反復された繰り返しと制御は、前記シンク領域内の前記ＦＩＦＯ記憶装置を介して前記ソース領域と前記シンク領域の間のデータの実質的な連続したデータの転送をイネーブルにする、請求項６の方法。
【請求項８】
前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングする前記ステップ（ｃ）は、
シグナリングレジスタ状態を以前の有効データレディ状態から代替有効データレディ状態に変更することと、
前記代替有効データレディ状態を前記ソース領域から前記シンク領域にシグナリングすることと、
を備えた、請求項１の方法。
【請求項９】
ステップ（ａ）乃至（ｇ）を反復的に繰り返すことであって、前記反復された繰り返しステップ（ｃ）は、前記有効データ状態の代替シグナリングを前記シンク領域に生じることと、
前記ソース領域の前記カウンタにおいて、前記ＦＩＦＯ記憶装置において利用可能なスペースを表す値の現在の状態に従って、前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
をさらに備えた、請求項８の方法。
【請求項１０】
レディデータをロードする各サイクルの期間における前記反復された繰り返しと制御は、前記シンク領域内の前記ＦＩＦＯ記憶装置を介して前記ソース領域と前記シンク領域との間の実質的に連続するデータの転送をイネーブルにする、請求項９の方法。
【請求項１１】
第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送する方法において、
（ａ）複数のサイクルの期間において、実質的に連続的に、
（１）ソースからのデータをソース領域内のレジスタにロードすることと、
（２）データレディを前記シンク領域にシグナリングすることと、
（３）前記ソース領域内のレジスタからデータを前記シンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置にロードすることと、
（４）前記ＦＩＦＯ記憶装置からのデータをシンク装置に出力し、前記ＦＩＦＯ記憶装置内のデータのためのスペースをクリアすることと、
（５）前記ＦＩＦＯ記憶装置内のスペースのクリアリングを前記ソース領域にシグナリングすることと、
（ｂ）前記ソース領域内のレジスタへのデータの各ローディングに応答して、第１の方法で前記ソース領域内のカウント値を変更することと、
（ｃ）前記ソース領域への、前記ＦＩＦＯ記憶装置内のスペースのクリアリングの各シグナリングに応答して、前記第１の方法と反対の第２の方法で、前記ソース領域内のカウント値を変更することと、
（ｄ）ステップ（ａ）の各サイクルにおいて、前記ＦＩＦＯ記憶装置の深さに関して前記カウント値の現在の状態に基いて前記ソースからのデータを前記ソース領域内のレジスタにロードすることを制御することと、
を備えた方法。
【請求項１２】
前記シンク領域へのデータレディの各シグナリングは、前記ソース領域からの単一サイクルのデータレディパルス信号を前記シンク領域に送信することを備え、
第１の方法で前記ソース領域内の前記カウント値を変更する各ステップは、前記ソース領域内の単一サイクルのデータレディパルス信号の発生に応答する、請求項１１の方法。
【請求項１３】
前記シンク領域へのデータレディの各シグナリングは、
２つの代替有効データ状態間で変更することと、
前記ソース領域からの前記２つの代替有効データ状態の現在の状態を前記シンク領域にシグナリングすることと、
を備えた、請求項１１の方法。
【請求項１４】
前記カウント値のための許容されるレンジは、前記ＦＩＦＯ記憶装置の深さに相当し、前記第１の方法で前記ソース領域内のカウントを変更することは、前記カウント値をデクリメントすることを備え、
前記第２の方法で前記ソース領域内の前記カウントをインクリメントすることは、前記カウント値をインクリメントすることを備えた、請求項１１の方法。
【請求項１５】
前記第２の方法で前記ソース領域内の前記カウント値を変更することは、前記ソース領域への前記シンク領域からの前記ＦＩＦＯ記憶装置内のスペースのクリアリングの各シグナリングの通信に含まれる待ち時間に従う、請求項１１の方法。
【請求項１６】
第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送する方法において、
（ａ）複数の反復の各々の期間において、
（１）ソースからのデータを前記ソース領域内のレジスタにロードし、データを前記シンク領域に提供することと、
（２）前記シンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置においてスペースが得られるとき、前記ソース領域内のレジスタからのデータを前記ＦＩＦＯ記憶装置にロードすることと、
（３）前記ＦＩＦＯ記憶装置からのデータをシンク装置に出力し、前記ＦＩＦＯ記憶装置内のデータのためにスペースをクリアすることと、
（ｂ）前記ソース領域内のレジスタへのデータの各ローディングに応答して、および前記ＦＩＦＯ記憶装置内のスペースの各クリアリングの前記シンク領域からのシグナリングに応答して、前記ＦＩＦＯ記憶装置内で得られるスペースを表す前記ソース領域内のカウントを維持することと、
（ｃ）ステップ（ａ）の各反復において、前記カウントの現在の状態に基いて前記ソースからのデータを前記ソース領域内のレジスタにロードすることを制御することであって、前記カウントが前記ＦＩＦＯ記憶装置が満杯であることを示すなら、前記制御は、前記ソース領域内のレジスタへのデータの次に利用可能なビートのローディングを可能にし、スペースが利用可能なとき前記ＦＩＦＯ記憶装置にロードするために、データのビートが連続的にＦＩＦＯ記憶措置に提供されるようにデータのそのビートを保持することを可能にすることを含むことと、
を備えた方法。
【請求項１７】
ソース領域内のレジスタへのデータの各ローディングに対してデータレディをシンク領域にシグナリングすることをさらに備えた、請求項１６の方法。
【請求項１８】
前記シンク領域へのデータレディの各シグナリングは、前記ソース領域からの単一サイクルのデータレディパルス信号を前記シンク領域に送信することを備えた、請求項１７の方法。
【請求項１９】
前記シンク領域へのデータレディの各シグナリングは、前記ソース領域から前記シンク領域への２つの代替データ有効状態の１つに遷移をシグナリングすることを備えた、請求項１７の方法。
【請求項２０】
第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送するための装置において、
（ａ）ソースからデータを受信し、転送のために受信したデータを前記シンク領域に提供するリードデータレジスタと、
（ｂ）前記ソースからのデータを前記リードデータレジスタにロードすることを制御し、前記シンク領域へのデータのローディングのシグナリングの送信を生じる制御と、
（ｃ）カウンタであって、前記制御は前記カウンタ内の値の状態に応答するカウンタと、
を含むソース領域エレメントと、
（１）前記リードデータレジスタと通信するファーストインファーストアウト（ＦＩＦＯ）記憶装置と、
（２）データのローディングのシグナリングの受信に応答して、前記リードデータレジスタからのデータを前記ＦＩＦＯ記憶装置に受け取ることを制御し、データがＦＩＦＯ記憶装置からシンクに出力されるとＦＩＦＯ記憶装置内のスペースのクリアランスを制御し、前記ソース領域内の前記カウンタへのスペースの前記クリアランスのシグナリングの送信を生じる制御と、
を含むシンク領域エレメントと、
を含み、
前記カウンタは前記リードデータレジスタへの前記ソースからのデータの各ローディングに応答して第１の方法で値を変更し、前記カウンタは、前記シンク領域内の制御から、前記ＦＩＦＯ記憶装置内のスペースのクリアランスの各シグナリングを受信すると、前記第１の方法とは反対の第２の方法で前記値を変更する、装置。
【請求項２１】
前記データのローディングのシグナリングとして前記ソース領域内の前記制御からのパルス信号を受信するための前記シンク領域内のレディ状態レジスタであって、前記パルス信号の各サイクルは、前記ソースからの新しいデータを前記リードデータレジスタにロードすることを表し、前記パルス信号の各受信されたサイクルに応答して前記シンク領域内の前記制御にデータレディ表示を供給する前記シンク領域内のレディ状態レジスタをさらに備えた、請求項２０の装置。
【請求項２２】
前記リードデータレジスタへの前記ソースからのデータの各ローディングに応答して２つの有効状態間で互い違いにする前記ソース領域内のシグナリングレジスタと、
前記ソース領域内のシグナリングレジスタからの有効状態の交互の受信に応答して、データレディ表示を前記シンク領域内の前記制御に供給する前記シンク領域内のマルチプレクサと、
をさらに備えた、請求項２０の装置。
【請求項２３】
前記ＦＩＦＯ記憶装置は、前記リードデータレジスタとＦＩＦＯ記憶装置を介して前記ソース領域から前記シンク領域への実質的に連続するデータの転送を可能にするのに十分深い、請求項２０の装置。
【請求項２４】
第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送するための装置において、
（ａ）ソースからデータを受信し、受信したデータを転送のために前記シンク領域に提供するリードデータレジスタと、
（ｂ）前記ソースから前記リードデータレジスタにデータをローディングすることを制御し、前記シンク領域へのデータのローディングのシグナリングの送信を生じる制御と、
（ｃ）カウンタであって、前記制御は前記カウンタ内の値の状態に応答する、カウンタと、
を含むソース領域エレメントと、
（１）前記リードデータレジスタと通信するファーストインファーストアウト（ＦＩＦＯ）記憶装置と、
（２）前記データのローディングのシグナリングの受信に応答して前記リードデータレジスタから前記ＦＩＦＯ記憶装置へのデータの受信を制御し、前記ＦＩＦＯ記憶装置からシンクにデータが出力されると前記ＦＩＦＯ記憶装置内のスペースのクリアランスを制御する制御と、
を含むシンク領域エレメントと、
を備え、
前記カウンタは前記ソース領域内のレジスタへのデータの各ローディングに応答しおよび前記ＦＩＦＯ記憶装置内のスペースの各クリアリングの前記シンク領域からのシグナリングに応答して、前記ＦＩＦＯ記憶装置内で利用可能なスペースの表示として前記カウント値を維持し、
前記カウンタ内のカウント値により前記ＦＩＦＯ記憶装置が満杯であるという表示に応答して、スペースが利用可能になるとき、前記ＦＩＦＯ記憶装置にローディングするためにデータのビートが連続的に前記ＦＩＦＯ記憶装置に提供されるようにデータのそのビートを保持するために前記リードデータレジスタへのデータの次に利用可能なデータのビートのローディングを前記コントローラーは可能にする、装置。
【請求項２５】
前記データのローディングのシグナリングとして前記ソース領域内の前記制御からパルス信号を受信するための、前記シンク領域内のレディ状態レジスタであって、前記パルス信号の各サイクルは前記ソースからの新しいデータを前記リードデータレジスタにロードすることを表し、前記パルス信号の各受信したサイクルに応答してデータレディ表示を前記シンク領域内の前記制御に供給する、前記シンク領域内のレディ状態レジスタをさらに備えた、請求項２４の装置。
【請求項２６】
２つの有効データ状態を有する前記ソース領域内のシグナリングレジスタであって、前記シグナリングレジスタは、前記ソースから前記リードデータレジスタへのデータの各ローディングに応答して２つの有効データ状態の１つに遷移する、前記ソース領域内のシグナリングレジスタと、
前記ソース領域内の前記シグナリングレジスタからの前記有効なデータ状態の受信に応答して、データレディ表示を前記シンク領域内の前記制御に供給する、前記シンク領域内のマルチプレクサと、
をさらに備えた、請求項２４の装置。
【請求項２７】
第１のデータレートで動作するソース領域と前記第１のデータレートとは異なる第２のデータレートで動作するシンク領域との間でデータを転送するための装置において、
ソースからデータを受信し、受信したデータを転送のために前記シンク領域に提供する、前記ソース領域内のリードデータレジスタと、
シンクに転送するために前記リードデータレジスタからデータを受信する前記シンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置と、
前記リードデータレジスタへのデータのローディングと前記ＦＩＦＯ記憶装置からのデータのオフローディングに応答して、前記ＦＩＦＯ記憶装置において利用可能なスペースを表すカウント値を維持する、前記ソース領域内のカウンタと、
前記ＦＩＦＯ記憶装置の深さに関して前記カウント値の状態に応答して、前記シンク領域に転送するために前記リードデータレジスタへのデータのローディングを制御する、前記ソース領域内の制御と、
前記リードデータレジスタ内のデータは、前記ＦＩＦＯ記憶装置への転送の準備ができていることを前記シンク領域にシグナリングし、前記ＦＩＦＯ記憶装置へのデータの受信の制御を可能にする手段と、
を備えた装置。
【請求項２８】
前記カウンタの構成および前記シグナリング手段は、前記ソース領域と前記シンク領域との間で交換されるシグナリングの待ち時間に対して前記装置を実質的に無感覚にさせる、請求項２７の装置。
【請求項２９】
前記ＦＩＦＯ記憶装置の深さと、前記カウンタの構成と、前記シグナリング手段は、前記リードデータレジスタと前記ＦＩＦＯ記憶装置を介して前記ソース領域と前記シンク領域との間の実質的なデータの連続転送を可能にする、請求項２７の装置。
【請求項３０】
前記ＦＩＦＯ記憶装置が満杯であることを前記カウント値の状態が示しているなら、スペースが利用可能になるとき、前記ＦＩＦＯ記憶装置にローディングするためにデータのビートが連続的に前記ＦＩＦＯ記憶装置に提供されるように、データのそのビートを保持するためにリードデータレジスタへの次に利用可能なデータのビートのローディングを可能にするために、前記ソース領域内の制御は、前記リードデータレジスタへのデータのローディングを制御する、請求項２７の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この主題は、そのようなシグナリングプロトコルを実施するファーストインファーストアウト（ＦＩＦＯ）記憶装置および機器を介してデータの転送に関連したシグナリングと制御のためのプロトコルに関連する。
【背景技術】
【０００２】
ファーストインファーストアウト（ＦＩＦＯ）記憶装置は、一般には、領域が異なるデータレートで動作してもよい領域間でデータの転送を含むプロセッサーアプリケーションおよび通信アプリケーションに使用される。
【０００３】
データレートが異なる間そしてしばしば領域間で変化する間、領域間の信号は、同じ基本クロック周波数に対してクロックされてもよい（すなわち同期）または異なる基本クロック周波数に対してクロックしてもよい（すなわち非同期）。
【０００４】
同期アプリケーションにおいては、ＦＩＦＯにより提供されるバッファリングは、２つの領域のデータレートの差を補償する。非同期アプリケーションにおいて、ＦＩＦＯにより提供されるバッファリングは、２つの領域のデータレートとクロック周波数の両方における差を補償する。いずれにしても、受信領域がデータの転送を処理できないとき時間または速度におけるデータの転送によるデータ損失を回避するのに、および／または送信領域が依然として従前のデータを転送している間さらなるデータを受信することを受信領域が期待しているおよび受信する準備ができているので、データ重複を回避するのに役立つ。
【０００５】
しかしながら、ほとんどのＦＩＦＯの実施はＦＩＦＯバッファを実施するメモリまたはレジスタアレイの固定サイズまたは深さにより制限される。例えば、ＦＩＦＯ記憶装置が受信領域内のシンクへの転送を待つデータで一杯のとき、送信領域がより多くのデータを送信するなら、データは依然として失われるかもしれない。ＦＩＦＯの満杯レベルおよび／またはＦＩＦＯの書き込みステータスについての情報を受信領域またはシンク領域から送信領域またはソース領域に供給するためにさまざまな技術が開発されてきた。しかしながら、そのような技術のさらなる改良の必要性が残存する。
【発明の開示】
【０００６】
カウンタはＦＩＦＯにおいて利用可能なスペースを追跡し、ソース側は、カウントを用いてデータの転送を制御する。転送制御を機能強化するために、カウンタはソース側で実施され、ＦＩＦＯは受信側で実施される。カウンタは転送のためのデータのレディ状態を表すソース側の信号に応答する。例えば新しいデータはソース側のレジスタにロードされＦＩＦＯ記憶装置に利用可能である。カウンタはソース側にあるので、この信号を受信し応答する際に被る伝搬遅延（すなわち、現在のサイクル内の遅延）または待ち時間（すなわち、１つ以上のサイクルの遅延）が無い。カウンタはまた、ＦＩＦＯ記憶装置内でスペースが利用可能になった、例えば、データがＦＩＦＯ記憶装置から出力され、ＦＩＦＯ記憶装置内のスペースがクリアされるとき、送信される信号に応答する。しかしながら、この後者の信号はシンク領域からソース領域に送信され、領域間で信号を通信する際に被る任意の待ち時間を被りやすい。
【０００７】
例示の方法は、シンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置を介して、第１のデータレートで動作しているソース領域と第１のデータレートとは異なる第２のデータレートで動作しているシンク領域との間のデータの転送を可能にする。この方法は、ソース領域内のレジスタにデータをロードし、シンク領域にデータを提供し、ソースが転送のためのデータレディを有するときデータレディ信号を提供することを伴う。この例において、ソース領域内のカウンタに維持される、ＦＩＦＯ記憶装置に利用可能なスペースを表す値がデータレディ信号に応答してデクリメントされる。また、この方法は、データレディ信号に基いてシンク領域にデータレディ状態をシグナリングすることを含む。シンク領域におけるデータレディ状態のシグナリングを受信すると、ＦＩＦＯ記憶装置は、ソース領域内のレジスタからの利用可能なデータをＦＩＦＯ記憶装置にロードするように作動される。ある時点で、データは、ＦＩＦＯ記憶装置からデータシンクに出力され、従ってＦＩＦＯ記憶装置内のスペースをクリアする。また、この方法は、ＦＩＦＯ記憶装置内のスペースのクリアリングをソース領域内のカウンタにシグナリングすることを伴う。このシグナリングの受信に応答して、カウンタは、ＦＩＦＯ記憶装置内で利用可能なスペースを表す値をインクリメントする。シンク領域にデータを提供するためにレディデータをソース領域内のレジスタにロードすることは、ソース領域内のカウンタにおいて維持された、ＦＩＦＯ記憶装置内の利用可能なスペースを表す値に応答して制御される。
【０００８】
２つの異なるシグナリング技術またはプロトコルが開示される。１つの技術は、データレディパルス信号をシンク領域内のレジスタに送信することを含む。各パルスは単一サイクルから構成されるけれども、シンク領域内のレジスタはパルスを保持し、ＦＩＦＯ記憶装置への新しいデータのロードの完了に続いてクリアされるまで、連続したレディ表示を提供する。
【０００９】
他方の開示された技術は「ピンポン」シグナリングを利用する。これは、シグナリングレジスタ状態を先の有効データレディ状態から代替有効データレディ状態に変更することを伴う。本質的に、レジスタ出力は、転送のために連続的に利用可能になるデータの新しいビート(beats)として、２つの有効データレディ状態間で交互に行う（ピンボン）。シンク側のマルチプレクサ（ＭＵＸ）または同種のものは、２つの交互の状態間の各遷移に応答して、データの新しいビートがレディ状態にあることを示す。シンク側の制御素子は、ＦＩＦＯへの入力を制御するためにＭＵＸからのこのデータレディ表示を使用する。
【００１０】
データを転送するための方法の他の例は、ソース領域とシンク領域との間の複数の潜在的なオーバーラッピングサイクルをカバーする。複数のクロックサイクルに対して典型的に生じる各転送サイクルはソースからのデータをソース領域内のレジスタにロードすることと、データレディをシンク領域にシグナリングすることと、ソース領域内のレジスタからのデータをシンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置にロードすることと、ＦＩＦＯ記憶装置からのデータをシンク装置に出力し、ＦＩＦＯ記憶装置におけるデータのためのスペースをクリアすることと、ＦＩＦＯ記憶装置内のデータの出力とスペースのクリアリングをソース領域にシグナリングすることとを伴う。ソース領域に維持されたカウント値は、ソース領域内のレジスタにデータをロードする毎に応答して第１の方法（例えば、デクリメントまたはインクリメントされる）で変更される。ＦＩＦＯ記憶装置におけるスペースのクリアリングのソース領域への各シグナリングに応答して、カウント値は、反対の方法（インクリメントまたはデクリメントされる）で変更される。連続する転送サイクルにおいて、ソースからのデータをソース領域内のレジスタにロードする制御は、カウンタの値の現在の状態に基いている。ソースレジスタからのデータをＦＩＦＯにロードするステップは、またソースレジスタからＦＩＦＯへの転送が物理的に単一クロックサイクルで生じることができないとき、典型的に行われるであろう１つ以上の中間レジスタを介したデータおよびレディ信号の送信を含んでいてもよい。
【００１１】
また、領域間のデータの転送のための方法の他の例は、ソースからのデータをソース領域内のレジスタにロードすることと、ファーストインファーストアウト（ＦＩＦＯ）記憶装置内でスペースが利用可能なとき、ソース領域内のレジスタからのデータをＦＩＦＯ記憶装置にロードすることと、ＦＩＦＯ記憶装置からのデータをシンク装置に出力してＦＩＦＯ記憶装置内のデータのためのスペースをクリアすることと、を含む多数の反復を含む。また、この方法は、ＦＩＦＯ記憶装置内で利用可能なスペースを表すソース領域内のカウントを維持することを含む。このカウントは、データのソース領域内のレジスタへの各ローディングに応答して、およびＦＩＦＯ記憶装置内のスペースの各クリアリングのシンク領域からのシグナリングに応答して維持される。ソースドメイン内のレジスタにデータをロードするステップの各反復に対して、カウントの現在の状態に基いてソースからのデータをそのレジスタにロードすることを制御する関連したステップがある。また、ＦＩＦＯ記憶装置が満杯であることをカウントが示している場合に、この方法は、データの次に利用可能なビート(beat)をソース領域内のレジスタにロードすることを可能にし、データのそのビートを保持することを可能にするので、スペースが利用可能になるとき、ＦＩＦＯ記憶装置にロードするためにデータのビートが連続的にＦＩＦＯ記憶装置に提供される。
【００１２】
また、これらのまたは類似の制御技術およびシグナリング技術を用いて、領域間でデータを転送するための特定の装置が開示される。そのような装置の一例は、ソースからデータを受信し、転送のために受信したデータをシンク領域に提供するためにソース領域内にリードデータレジスタを含んでいてもよい。シンク領域内のファーストインファーストアウト（ＦＩＦＯ）記憶装置は、シンクに転送するためにリードデータレジスタからデータを受信する。また、装置はソース領域にカウンタを含む。カウンタは、データのリードデータレジスタへのロードおよびＦＩＦＯ記憶装置からのデータのオフロードに応答する。カウンタで維持された値は、ＦＩＦＯ記憶装置で利用可能なスペースを表す。この装置は、カウント値に応答して、シンクドメインに転送するためにリードデータレジスタにデータをロードすることを制御するために、ソースドメインにおける制御を含む。
【００１３】
１つの観点において、カウンタ内のカウント値によりＦＩＦＯ記憶装置が満杯であることを示すと、コントローラーは次の利用可能なデータのビートをリードデータレジスタにロードすることを可能にする。スペースが利用可能になると、リードデータレジスタは、ＦＩＦＯ記憶装置にロードするためにＦＩＦＯ記憶装置に連続的に提供するようにそのデータのビートを保持する。
【００１４】
他の観点において、この装置は、ＦＩＦＯ記憶装置に転送するためにデータがリードデータレジスタに存在するときをシンク領域にシグナリングし、ＦＩＦＯ記憶装置によりデータの受信を制御する手段を含む。適切なシグナリング技術のいくつかの例が開示される。
【００１５】
目的、特徴および新規な特徴は、以下の記載において一部分述べられ、一部分以下のおよび添付された図面の検査により当業者に明白となり、または例の生成または動作により学習されてもよいであろう。現在の教示の目的と利点は、特に添付されたクレームで指摘された方法論、手段および組み合わせの実施または使用により実現および成就してもよい。
【発明を実施するための最良の形態】
【００１６】
図面は、限定するのではなく、一例としてこの教示に従う１つ以上の実施を描画する。図において、類似の参照数字は、同じまたは同様のエレメントを指す。
【００１７】
以下の詳細な記載において、関連する教示の完全な理解を提供するために一例として多数の特定の詳細が述べられる。しかしながら、この教示はそのような詳細無しに実施されてもよいことは当業者には明白であるべきである。他のインスタンスにおいて、良く知られた方法、手続、コンポーネントおよび回路は、この教示の不必要に分かりにくくする観点を回避するために、詳細無しに相対的に高いレベルで記載された。
【００１８】
ここに記載した技術は、ファーストインファーストアウト（ＦＩＦＯ）記憶装置におよびＦＩＦＯ記憶装置からおよびそのようなプロトコルを使用する機器にデータを転送することに関連したシグナリングおよび制御のためのプロトコルに関連する。添付された図面に図解され、以下に述べられた例が詳細に参照される。図１はＦＩＦＯに関連したシグナリングプロトコルを実施するシステムの第１の例を図解する。
【００１９】
図解されたシステムは２つの異なる領域内のエレメントを含む。すなわち、データを送信することを所望するソース領域１１とデータを受信することを意図するシンク領域１３である。本質的に、一般にデータソース１５により表される領域１１内のエレメントは利用可能なデータを有し、一般にデータシンク１７により現される領域１３内のエレメントは、さらなる処理、記憶等のためにそのデータを受信する必要がある。
【００２０】
２つの領域は領域境界により分離され、破線Ｄ−Ｄにより表される。２つの領域は、プロセッサーチップの異なるコア部分のように、異なる領域により分離された単一半導体チップの異なる領域であってもよい。また、異なる領域は異なるチップ、または、一連の１つ以上のレジスタを介して、配線を介して接続された異なる装置、または他のインターフェース手段、またはローカルまたはワイドエリアネットワークを介して通信する２つの別個のシステムであってもよい。２つの領域内の回路の動作は、同じ基本クロック周波数に対してクロックされてもよいし（すなわち、同期）、または異なる基本クロック周波数に関連してクロックされてもよい（すなわち、非同期）。
【００２１】
議論を容易にするために、２つの領域は同期しており、境界にわたって一緒に直接接続された近接近したエレメントを表す。例えば、チップの境界領域にわたって相互接続されたまたは一緒に接続されたプロセッサーチップの２つのセクションである。２つのセクションの分離は物理的かもしれない。例えば、チップの２つの別個のパーツまたはエリアかもしれない。または、分離は純粋にロジカルであってもよく、すなわち、第１の領域のデータレートで動作するコンポーネントと、第２の領域のデータレートで動作するコンポーネントとの間であってもよい。
【００２２】
従って、２つの領域のデータレートは異なる。ソースドメイン１１のエレメントは１つのデータレートで動作するのに対し、シンク領域１３のエレメントは他の多少異なるデータレートで動作する。シンク領域１３のデータレート、従ってデータシンク装置１７は、領域１１のソース１５のデータレートよりも遅いまたは早いかもしれない。また、データレートおよびデータレートの差は時間に対して変化するかもしれない。例えば、ソース１５とシンク１７の処理動作は変化する。例示タイミング図（図２（Ａ）乃至２（Ｃ））において、シンクデータレートはソースデータレートより多少遅い。例において、クロックレートは同一であるけれども、当業者に知られた技術を用いて、クロックが異なるとき、また、利益が得られるかもしれない。
図１に戻ると、境界Ｄ−Ｄにわたって領域１１および１３のデータレート差を補償するために、シンク領域１３は、本質的にソース領域１１から受信したデータをバッファリングするためにファーストインファーストアウト（ＦＩＦＯ）記憶装置１９を含む。バッファリングは、受信領域がバッファリングを処理できないとき、時間または速度におけるデータの転送によるデータ損失を回避するために、および／または送信領域１１が依然として先のデータを転送している間、受信領域１３がさらなるデータを受信することを期待するおよび受信する準備ができているのでデータ重複を回避するために、２つの領域１１および１３のデータレートの差を補償する。
【００２３】
ＦＩＦＯ記憶装置１９は、レジスタまたはメモリのような多種多様の物理的アーキテクチャのいずれかにおいて実施されてもよい。議論の目的のために、ＦＩＦＯ１９を、受信されたデータが移動する一連のレジスタまたはレジスタのスタックとして考えることが便利である。しかしながら、ＦＩＦＯ装置はしばしばメモリを利用し、リードおよびライト動作期間に使用されるメモリアドレッシングの適切な操作によるファーストインファーストアウト動作を提供する。１つのレジスタまたはロケーションは、データの新しいビート、この例では、１２８バイトがＦＩＦＯ記憶装置１９にロードされるまたは書かれるとき、満たされる。データのビートがＦＩＦＯ記憶装置１９からシンク１７にアンロードまたは読まれるとき、１つのレジスタまたはロケーションがクリアされる。
【００２４】
ソースまたは送信側１１では、データソースはデータのビート、この例では、１２８ビットのデータ、をときどきリードデータレジスタと呼ばれるレジスタ２１に供給する。この例において、レジスタ２１はリードデータ（ReadData）レジスタとして指定される。ReadDataレジスタ２１は１２８ビットのデータを保持し、境界Ｄ−ＤにわたるデータをＦＩＦＯ記憶装置１９の入力に転送するために、データのビットをライン上に提供する。図には示されていないけれども、リードデータレジスタの後段でＦＩＦＯの前段にさらなるロジックが存在してもよい。レジスタ２１は新しいビート（１２８バイト）のデータを保持するけれども、ＦＩＦＯ記憶装置１９の入力上に接続されたライン上でデータが入手可能である。しかしながら、データの新しいビートがレジスタ２１に最初にロードされるとき、シンク領域１３内のＦＩＦＯ記憶装置１９の入力にデータが現れる前に多少の伝搬遅延がある。
【００２５】
ＦＩＦＯ制御２３は、ReadDataレジスタ２１へのおよびReadDataレジスタ２１を介したデータのフローを制御する。ＦＩＦＯ制御２３は有限状態機械である。状態機械はプログラマブルプロセッサーとして実施されてもよいが典型的には、特定の入力に応答して所望の出力を発生するための回路および／または論理ブロックの形を成す。すなわち、特定のソース側制御アルゴリズムを実施するように回路および／または論理ブロックを形成する。ソース１５が送信すべき新しいデータを有するとき、ＦＩＦＯ制御２３は、レジスタ使用カウンタ２５により示されるように、データの最後のビートのためにＦＩＦＯ記憶装置１９に利用可能なスペースがあるとき、ReadDataレジスタ２１に新しいデータを提供させる。カウンタのレンジまたは初期値はＦＩＦＯの深さに相当する。それゆえ、カウンタの状態を調べることによりＦＩＦＯにスペースが得られるかどうか、例えばカウントがまだマイナスになっていない（スペースが得られない）かどうかを制御２３は決定することができる。以下にさらに述べるように、カウンタ２５は、ソース領域１１内のエレメントであることは、有利である。別個のエレメントとして示されているけれども、カウンタ２５はＦＩＦＯ制御２３として機能する状態機械の一部として集積されてもよい。
【００２６】
ＦＩＦＯ記憶装置１９への入力のためにＦＩＦＯ制御２３がReadDataレジスタ２１に新しいデータを提供させるとき、ＦＩＦＯ制御２３は、この例では、ReadDataReady信号と呼ばれるレディパルスを発生することによりシンク領域１３に信号を送る。この信号は典型的には、単一のクロックサイクルに対してアサートされたパルスである。これは、ReadDataレジスタ２１により利用可能なようにデータが保持される時間の間ハイレベル（またはロウレベル）に保持された状態信号ではないことを意味する。シンク領域において、ReadDataReadyパルス信号は、例示の図ではレディ(Rdy)レジスタとして示されるレジスタ２７に印加される。レジスタ２７がレディパルスを受信すると、レジスタ２７は、シンク領域１３内のＦＩＦＯ制御２９にデータを転送する準備ができたことを示す状態信号を提供する。レジスタ２７はＦＩＦＯ制御２９によりクリアされるまで、レディ状態を維持する（パルスを保持する）。
【００２７】
シンク領域１３において、ＦＩＦＯ制御２９は別の有限の状態機械である。状態機械はプログラマブルプロセッサーとして実施されてもよいが、典型的には、特定の入力に応答して、すなわち、特定のシンク側制御アルゴリズムを実施するように所望の出力を発生するための回路および／または論理ブロックから形成される。例えば、ＦＩＦＯ制御２９は、「ライト」および「リード」信号をＦＩＦＯ記憶装置１９に供給し、ＦＩＦＯ記憶装置１９にデータを入力（ライト）し、ＦＩＦＯ記憶装置１９からデータを出力（リード）することを制御する。リード機能は、新しいデータを受信するためにスペースをクリアする。上で述べたように、レジスタ２７はソース領域制御２３からのレディパルスに応答してＦＩＦＯ制御２９にレディ状態信号を提供する。レディデータを受信するために、ＦＩＦＯ記憶装置１９においてスペースが利用可能であるなら、制御２９は、ライト信号を発生し、ＦＩＦＯ記憶装置１９に、ソース領域１１内のReadDataレジスタ２１からのデータの入力を受け取らせる。レディステートレジスタ２７がライト信号を発生するとき、すなわち、レディステートレジスタ２７がＦＩＦＯ記憶装置１９にソースからのデータの１つのビート（１２８ビット）を受け取るように命令すると、ＦＩＦＯ制御２９はレディステートレジスタ２７をクロックする（すなわち、ReadDataReadyt信号の値に基いてレディステートレジスタ２７を更新させる）。
【００２８】
図解するように、ReadDataReady信号として機能するパルスはカウンタ２５をデクリメントし、１つ少ないレジスタロケーションがＦＩＦＯ記憶装置１９において利用可能であることを示す。その点において、カウンタ２５は、任意の遅延または２つの領域１１および１３間の信号の転送の待ち時間なしに、同じ領域１１で発生されたレディパルスに応答してデクリメントされる。シンク側上のＦＩＦＯ制御２９からのリード信号は、ＦＩＦＯ記憶装置１９にレジスタロケーションの１つからのデータをシンク１７に出力し、装置１９内のそのロケーションをクリアするように指示する。それゆえ、リード信号のパルスは、境界Ｄ−Ｄにわたってシンク領域１３から供給され、カウンタ２５をインクリメントする。
【００２９】
制御２９によりリード信号の発行と、ソース領域１１内のカウンタ２５におけるＦＩＦＯエントリーフリー(entry free)表示として対応する信号の出現との間に多少の待ち時間があるであろう。シグナリング待ち時間はシグナリングがチップを横断するのに必要な時間によってもよい。しかしながら、リード信号とＦＩＦＯエントリーフリーとの間の、図中の遅延／タイミングエレメント２８により一般に表される、さらなる状態回路があってもよい。シンク領域１３に示されているけれども、回路２８は、物理的に、領域の一方または両方に存在する。さらなる回路、典型的には、１つ以上のフリップフロップは、領域間の境界Ｄにわたる適切な信号レベルとタイミングアライメントを保証する。しかしながら、さらなる回路２８は、制御２９によりリード信号のアサーションと、カウンタ２５におけるＦＩＦＯエントリーフリー表示として対応する信号の出現との間の待ち時間に１つまたは複数のサイクルの遅延を追加するであろう。便宜上示されないけれども、当業者は、そのようなさらなる回路が提供されるなら、類似の遅延／タイミングエレメントが、ReadDataラインおよびReadDataReadyラインのような２つの領域間の他のラインに提供されるであろうことを理解するであろう。
【００３０】
カウンタ２５は、境界Ｄ−Ｄにわたって新しいデータを送信することを決定するのに使用するためにソース領域１１内のＦＩＦＯ制御２３にＦＩＦＯ−スペース−フリーカウントを供給する。データがＦＩＦＯ１９に提供されるごとにカウントをデクリメントすることによりおよび、ロケーションがクリアされる（データがＦＩＦＯ１９から読まれる）ごとにカウントをインクリメントすることにより、カウンタ２５の値は、ＦＩＦＯ記憶装置１９において利用可能なまたはフリーであるスペースの量（レジスタロケーションの数）を追跡する。しかしながら、カウンタ２５はソースドメイン１１にあるので、デクリメントは、ReadDataReady信号およびシンク領域１３内の応答に多少先行する。境界Ｄ−Ｄにわたるパルス信号をレジスタ２７に転送する際にある遅延または待ち時間がある。反対に、ソース領域１１内のカウンタ２５のインクリメントは、境界Ｄ−Ｄにわたるリード信号を転送する際の遅延または待ち時間により、シンク領域１３内のＦＩＦＯ記憶装置１９からデータを読むことを多少長引かせるまたは遅れる。
【００３１】
また、ソースがシンク１７に転送するために利用可能なデータを最初に有するとき、ＦＩＦＯ制御２３は、データソース１５により設定された１ビットレジスタ３１内のデータ有効フラッグ（Ｖ）に応答する。別の方法で述べると、ソース１５はフラッグＶをレジスタ３１にセットし、ＦＩＦＯ制御２３に、ReadDataレジスタ２１にロードするために利用可能な有効な新しいデータがあることを知らせる。ＦＩＦＯ制御２３は、データ有効フラッグ（Ｖ）３１として機能する１ビットレジスタにクロック（イネーブル）信号を供給する。データがシンク領域内のＦＩＦＯ１９に成功裏に転送されると、ＦＩＦＯ制御２３は、クロック（イネーブル）信号を供給し、レジスタ３１にロードし、従って有効フラッグ（Ｖ）の状態をロードする。動作において、ソース有効ビットは、レジスタ３１からソースＦＩＦＯ制御２３に送信されＦＩＦＯ制御２３にデータを送信する準備ができたことを伝える。
【００３２】
新しいデータが同時にソース１５から移動しない限り、データが送信されたとき、ビットはレジスタ３１からクリアされる。この方法において、データの新しいビートのために利用可能な空きがあることをカウンタ２５が示すとき、ＦＩＦＯ制御２３は、レジスタ３１内のＶフラッグを制御し、ソース１５がフラッグをセットすることを可能にする（およびデータの新しいビートをReadDataレジスタ２１に入力することを可能にする）。
【００３３】
図１のシステムにおけるデータ転送を評価するために、図２（Ａ）乃至図２（Ｃ）に描画されたタイミング図を参照して、システムの特定の動作のシーケンスを考察することは役に立つかもしれない。各図面におけるトップラインは、クロックサイクルのナンバリングを提供する。そして、クロックのパルスは次のラインに示される。この例において、クロックは両方の領域において同じである。３番目のラインは、データがReadDataレジスタ２１に入力されることを表し、４番目のラインは、ReadDataReadyを表す（信号図では、DataRdyと短縮されている）。
【００３４】
今、第１の例として図２（Ａ）を考察する。この例において、簡単にするために、ＦＩＦＯは単一のラインから構成される（Fifo[0])。（５番目のラインに示される）カウントは、送信することができるデータのビートの数を表す。カウントはＦＩＦＯ位置の数より多い数で始まる。このさらなるビートは、（ReadDataレジスタにおいて）転送されているときに保持することができるデータを表す。ゼロのカウントはソースデータが前のサイクルから保持される必要があることを示す。従って、DataReady信号はそのようなサイクルにおいてアサートされてはならない。図２（Ａ）の例は１つのＦＩＦＯ位置のみを有するので、最初にカウントは２に設定される。
【００３５】
サイクル２において、データＱ０が最初にReadDataレジスタ２１に現れると、ＦＩＦＯ制御２３は最初にReadDataReady信号（DataRdy)をアサートする。次のサイクルにおいて、カウンタはReadDataReady信号を受信したので、カウンタは利用可能なＦＩＦＯバッファロケーションのカウントを１だけデクリメントする。この例において、図の５番目のラインにおいて、カウントは第３のサイクルにおいて１に下がる。
【００３６】
ＦＩＦＯにおいて、スペースが利用可能であると、この例の議論のために仮定する。サイクル２のReadDataReady信号に応答して、ＦＩＦＯはデータの最初のビートＱ０を受け取り、次のサイクル、すなわちサイクル３でそれをラインFifl[0]に移動する。同時に、この例においてシンクはレディとなりこのサイクルにおいてデータのそのビートを受け取る（図の一番下のライン）。従って、ＦＩＦＯ制御２９はリード信号をアサートし、（図の最後のラインの次のライン）、ＦＩＦＯからデータのそのビートをシンクに読み込むことを可能にする。
【００３７】
この最初の例において、システムは領域間の待ち時間の単一サイクルを提示する。領域間の待ち時間の結果として、ＦＩＦＯ制御２９からのリード信号は、図１に示されるＦＩＦＯエントリーフリー信号または図２（Ａ）の矢印として次の（４番目の）サイクルにおいてカウンタに到達する。この信号は、ＦＩＦＯからのエントリのクリアリングを表し、これは、通常カウンタをインクリメントさせるであろう。しかしながら、連続したReadDataReady信号により示されるようにその同じサイクルでデータの新しいビートがまた利用可能である。ReadDataReady信号に応答するデクリメントは、リード信号に応答するインクリメントをオフセットするので、（カウントラインにおける影線により示されるように）カウントは１のままである。同様の方法において、カウントは、サイクル１１まで、すなわち、新しいデータが利用可能になりデータがＦＩＦＯからシンク領域によみこまれる限り、１のままである。
【００３８】
サイクル１０において、データの最後のビートＱ８は、ReadDataレジスタにロードされ、ReadDataReady信号（DataRdy)はハイレベルのままである。しかしながら、サイクル１１において、データのそのビートがＦＩＦＯに移動するとき、データの新しいビートは利用可能ではない。制御２３は、ReadDataReady（図２（Ａ）のDataRdy)
信号をデアサートする。次のサイクルにおいて、制御２９からのリード信号がカウンタに到達すると、カウンタはインクリメントする（新しいデータは利用可能でないので、デクリメントする、対応する必要性はない）。この簡単な例において、カウントは、データの最後のビートがＦＩＦＯを介してシンクに移動した後、サイクル１２において２まで戻る。
【００３９】
図２（Ｂ）は同様の例のためのタイミングを示す。この図において、ＦＩＦＯは３ラインの深さであり（位置Fifo[0],Fifo[1]およびFifo[2])、さらなるＦＩＦＯエントリーフリーラインにより表されるように２つの領域間のシグナリング上に２つのサイクルの待ち時間がある。さらなる待ち時間は、制御２９からのリード信号とカウンタ２５のＦＩＦＯエントリーフリー信号入力との間のさらなる状態機械、例えばフリップフロップの包含によるかもしれない。類似性に鑑みて、当業者は、この図で示されるシグナリング図により表される動作を理解しなければいけない。
【００４０】
図２（Ｃ）は図２（Ａ）に類似した別のシングルサイクル待ち時間例である。しかしながら、図２（Ｃ）において、ＦＩＦＯは３ラインの深さである（位置Fifo[0],Fifo[1]およびFifo[2])。また、図２（Ｃ）はシンクによりより遅いリードおよびＦＩＦＯのラインを介して移動するデータを示す。この場合も先と同様に、図のトップラインは、クロックサイクルのナンバリングを提供し、クロックのパルスは、次のラインに示される。３番目のラインは、ReadDataレジスタ２１に入力されたデータを表す。注目すべきは、データがソースから得られスペースがＦＩＦＯ、例えば、サイクル２、３、４において利用可能なとき、データは１サイクルでReadDataレジスタに移動し、次のサイクルでレジスタから出力されＦＩＦＯに移動される。例えば、データビートＱ０、Ｑ１、Ｑ２は、各々１サイクルだけレジスタに常駐する。しかしながら、データがReadDataレジスタにあるが、スペースはＦＩＦＯにおいて、利用可能でないとき、データビートは２またはそれ以上のサイクルの期間レジスタに留まる。この例において、Ｑ３で始まるデータのビートは、少なくとも２つのサイクルの期間レジスタに常駐する。
【００４１】
この場合も先と同様に、（５番目のラインに示された）カウントは、送信することができるデータのビートの数を表す。カウントはＦＩＦＯ位置の数より多い数、すなわち、図２（Ｃ）の３ラインのＦＩＦＯ例に対して４で始まる。このさらなるビートは、ReadDataレジスタにおいて転送されているときに保持することができるデータを表す。ゼロのカウントは、少なくとも２つのサイクルの期間レジスタ内のＱ３で始まるデータのビートの各々の保持により表されるように、ソースデータは以前のサイクルから保持される必要がある。この場合も先と同様に、DataReady信号はカウントが０であるとき、１サイクルでアサートされる必要はない。
【００４２】
上で述べたように、この例において、ＦＩＦＯは３つのラインから構成され、それゆえ、最初は、５番目のラインに示されるカウントは４に設定される。サイクル２において、データＱ０がレジスタ２１に最初に現れるとき、ＦＩＦＯ制御２３は最初に図の４番目のラインに示されるReadDataReady信号（DataRdy)をアサートする。次のサイクル（サイクル３）において、カウンタ２５はソース領域制御２３からReadDataReady信号を受信するので、カウンタ２５は、利用可能なバッファロケーションのカウントを１だけデクリメントする。この例において、図の５番目のラインにおいて、カウントは第３のサイクルにおいて３に下がる。最初は、ＦＩＦＯラインは空であり、従って、第３のサイクルにおいて、データの第１のビートは、ＦＩＦＯに移動することができ、ＦＩＦＯのボトムライン、すなわち、Fifo[0]に直接移動することができる。図の最下部に示されるように、多少の時間（例えばサイクル６）までシンクはそのデータを受信する準備ができていない。従って、Fifo[0]は、数サイクルの期間データＱ０の最初のビートを保持する。
【００４３】
しかしながら、サイクル３において、データＱ１の第２のビートは、ReadDataレジスタに移動し、ソース側制御２３は、ReadDataReady(DataRdy)信号をハイレベルに維持する。カウンタはシンク領域からリード信号またはＦＩＦＯエントリーフリー信号をまだ受信していないので、カウンタは、サイクル４で再びカウントをデクリメントする、この場合２の値にデクリメントする。この例においてこの時点で、ＦＩＦＯラインの２つは空であり、従って、４番目のサイクルにおいて、データの第２のビートがＦＩＦＯに移動することができ、ＦＩＦＯの最後のラインの１つ前のライン、すなわち、ラインFifo[1]に直接移動することができる。図の最下部に示されるように、多少の時間の後まで（例えばサイクル６まで）シンクはデータを受信する準備ができていない。従って、Fifo[1]は、数サイクルの期間データＱ１の第２のビートを保持する。
【００４４】
サイクル４において、データＱ１の第３のビートは、ReadDataレジスタに移動し、ソース側制御２３は、ReadDataReady (DataRdy)信号をハイレベルに維持する。この場合も先と同様に、カウンタは、次のサイクルにおいてシンク領域からリード信号またはＦＩＦＯエントリーフリー信号をまだ受信していないので、サイクル５において、カウンタはさらにカウントを１だけデクリメントする、この場合１の値にデクリメントする。この例におけるこの時点において、ＦＩＦＯラインの１つは空であるので、データの第２のビートは、５番目のサイクルにおいて、ラインFifo[0]においてＦＩＦＯに移動することができる。シンクは多少の時間の後までそのデータを受信する準備ができていないので、それゆえ、Fifo[0]は最初にデータＱ２の第３のビートを保持する。
【００４５】
サイクル５において、データＱ３の別のビートは、ReadDataレジスタに移動し、ソース側制御２３はReadDataReady (DataRdy)信号をハイレベルに維持する。この時、データはＦＩＦＯから出力されていないので、サイクル６においてカウンタはさらにカウントを０の値にデクリメントする。この例におけるこの時点において、ＦＩＦＯラインは空ではなく、ReadDataレジスタにデータがある。従って、DataReady信号はこのサイクルにおいてアサートされない。しかしながら、データＱ３の４番目のビートは、転送されているときにReadDataレジスタに保持される。
【００４６】
この例において、シンクは６番目のサイクルにおいて、（図の最下位ライン）データのビートを受け付ける準備ができるので、ＦＩＦＯ制御２９はリード信号（図の最後のラインの次）をアサートし、Fifo[0]からのデータのそのビートをシンクにリードすることを可能にする。この例において、システムは、領域間の単一サイクルの待ち時間を提示する。
【００４７】
領域間の待ち時間の結果として、ＦＩＦＯ制御２９からのリード信号は、次の（７番目の）サイクルで、図１に示すＦＩＦＯエントリーフリー信号としてまたは図２（Ｃ）に示される矢印としてカウンタに到達する。この信号は、ＦＩＦＯからのエントリのクリアリングを表し、これは、カウンタに１の値にインクリメントさせる。
【００４８】
データＱ０の第１のビートがサイクル６においてシンクに移動すると、スペースがFifo[0]において解放されるので、他のデータはサイクル７においてＦＩＦＯ内で下に移動する（Ｑ１がFifo[0]に、Ｑ２がFifo[1]に移動する）。トップラインFifo[2]は空であり、ReadDataレジスタからデータの次のビート、すなわち、この例のこの時点では、ビートＱ３を受信することができる。ビートＱ３がＦＩＦＯに移動したので、ReadDataレジスタはデータＱ４の次のビートを受け付ける。
【００４９】
この例において、シンクは、１サイクルおきにＦＩＦＯのボトムからデータを受け取るので、サイクル６と７の動作に類似する動作が交互する、例えば、カウンタは、交互にデクリメントしインクリメントするので、カウントは１と０の間で交互する。図示するように、ReadDataレジスタは、２つの連続するサイクルの期間、すなわち、ＦＩＦＯにおいてスペースが利用可能になるまで、転送されているときにデータの各新しいビートを保持する。このようにして、ReadDataレジスタは、ソース領域内でこの機能を提供するけれども、本質的に余分なＦＩＦＯラインである。
【００５０】
上述したように、カウンタ２５は、領域１３内のＦＩＦＯ１９自体にではなく、むしろ領域１１内のソース１５に関連して位置する。これは、典型的にＦＩＦＯからソースへの信号の待ち時間があるので利点があり、ソースは、ＦＩＦＯがレディ状態になったあとで数サイクルまでデータを送信することができないことを意味する。図解された例において、カウンタ２５は、ＦＩＦＯ１９に何があるかについて、時間的に真のスナップショットを提供しない。なぜなら、カウンタはインクリメントするために待ち時間ペナルティを被るからである。しかしながら、ＦＩＦＯスペース空信号は、ソースＦＩＦＯ制御２３（待ち時間無しで）直ちに利用可能である。従って、典型的な条件の場合、カウンタ２５は領域１１および１３との間の必要なシグナリングのための待ち時間を消去するように見ることができる。
【００５１】
制御２９からのフリー信号はまだカウンタ２５に伝搬されていなかったので、ここでのコストは、実際は、ＦＩＦＯ記憶装置１９に空きがあるときにデータを送信することができないとときどき言う点において、カウンタ２５は悲観的になり得るということである。しかしながら、これは、「フリー」信号待ち時間に従ってＦＩＦＯの深さをサイズ化することにより図解された設計において克服できるので、データは連続的に転送することができる。また、制御２３のロジックの適切な設計によって、またはカウンタをＮ＋１にサイズ化することにより（但しＮはＦＩＦＯの深さであり、例えばＦＩＦＯ１９におけるロケーションの数である）、ＦＩＦＯ１９が満杯であることをソース側の制御２３が信じるとき、１つの最後のデータビートを送信することができることにより小さな帯域幅を買うことも可能である。
【００５２】
ローカルカウンタとＦＩＦＯの深さにより、ソース１５は連続的にデータを送信することができる。従って、ＦＩＦＯを適切にサイズ化することにより、信号の待ち時間を気にせずに転送を生じることができる。それゆえ、システムは、実質的に「待ち時間無感覚」である。待ち時間がここで作用し始めることは可能である。特に、デスティネーションまたはシンク側がＦＩＦＯ１９を十分高速に空にするとき可能であり、システムは待ち時間に等しいバッファリングを失うことに留意する必要がある。これは、ＦＩＦＯ１９が空になる典型的なデータレートをカバーするために、ＦＩＦＯ１９をより深くさせることにより補償してもよい。従って、典型的な状態において、データは連続的に転送される。
【００５３】
また、システムはカウンタ２５をデクリメントするとき正確にＦＩＦＯ１９のデータを読む必要はない。代わりに、ソース側が新しいデータに応答し送ることができる前に、シンク側がＦＩＦＯ装置１９のデータのビートを読み新しいデータのためにスペースをクリアすることをタイミングと待ち時間が補償することができる限り、多少早めにカウンタをデクリメントするようにカウンタをデクリメントするための信号はリードを導くことができる。
【００５４】
上述したように、ＦＩＦＯ深さの適切なサイズ化により、実質的に２つの領域間の連続的なデータ転送を提供することが可能である。この目的のために、ＦＩＦＯの深さは、少なくとも往復シグナリング待ち時間の大きさ、すなわち、FIFO Space Emptyがソースにおいて認識できるまで、ReadDataReadyからのサイクルカウントでなければならない。この数は、ReadDataレジスタ２１とＦＩＦＯ１９との間の任意の中間段階並びにＦＩＦＯとシンクからのリード要求との間の中間待ち時間により影響される。
【００５５】
ソースがデータを送信する早さでシンクがデータをリードすることができないときＦＩＦＯのサイジング(sizing)はより複雑になるかもしれない。例えば、シンクは調達されたレートの半分でデータを消費してもよい。追加されたステージの数は、ある時間に送信されたデータの量（すなわち、バースト）、往復シグナリング待ち時間、およびシンクによる消費のレートに依存する。せいぜい、ＦＩＦＯサイズは、バーストのサイズ（サイクルカウント）により増加される必要があるであろう。しかしながら、シンクがデータをリードするとき、さらなるスペースがＦＩＦＯに提供されるので、実際のＦＩＦＯは多少小さいであろう。バーストサイズとバースト間のインターバルが変換する場合、最適なサイズを決定することは、２つの領域間の所望の連続するデータ転送を達成するために種々のＦＩＦＯ深さを有したシミュレーションを含んでいてもよい。
【００５６】
カウンタはＦＩＦＯ記憶装置１９のサイズに初期化されＦＩＦＯ記憶装置１９にデータが入力されるとき、およびＦＩＦＯ記憶装置１９からデータが出力されるとき、デクリメントおよびインクリメントされる。それゆえ、許容可能なカウント値のレンジはロケーションの数Ｎ、すなわち、ＦＩＦＯ記憶装置１９の深さに相当する。フリーなスペース（０のカウント）がないとカウンタが言うときでさえも、制御２３は、ソースがデータをレジスタ２１にロードすることを可能にし、１２８ビットのデータのさらなるセットをＦＩＦＯ入力ラインに印加することを可能にするであろう。制御は、ReadDataReadyパルスを供給するであろう、これはレジスタ２７に保持される。効果的に、レジスタ２１と転送ラインは、ＦＩＦＯ記憶装置１９に対して余分なレジスタロケーションを提供する。また、この機構はソースとシンクとの間のシグナリング待ち時間を（典型的な場合に）マスクするために、本質的にＦＩＦＯを採用する。
【００５７】
図１の例において、信号は、新しいデータの有効なビートが得られＦＩＦＯ１９に転送する準備ができたことを示すのでソース側のＦＩＦＯ制御２３は、単一パルスを供給した。しかしながら、ソース領域からシンク領域へのReadDataReady状態のこのパルスシグナリングの代わりに、ピンポンシグナリング方法のような他の技術を利用するために概念を適応させてもよい。このピンポンシグナリング方法は、ソースＦＩＦＯ制御とシンクレディロジックとの間で２つの信号を採用する。せいぜい、これら２つの信号の１つは真である。データが送信されると、第１の信号がアサートされる。データの次のビートは、第２がアサートされている間に第１の信号をクリアさせる。データの次のビートは、第１の信号がアサートされている間に第２の信号をクリアさせる、以下同様である。シンク側は、１つの信号上のデータを受信した後で代替信号に目を向けることを知る。このアプローチは、ＦＩＦＯが満杯であるとソースが信じた後でデータの余分なビートが送信されるとき、カウンタがインクリメントされ、別のデータのビートが送信されるまで信号はアサートされたままでいるという利点を有する。従って、パルスを捕らえる必要はない。本質的に、連続信号は、ＦＩＦＯに転送するために有効データの準備が出来て利用可能な時に示された境界にわたってアサートされる。
【００５８】
図３は一般的に図１の機能ブロック図と類似するが、ピンポンシグナリング技術を利用したシステムの機能ブロック図である。第１の例のように、この第２の図解したシステムは、２つの異なる領域におけるエレメントを含む。すなわち、データを送信したいと所望するソース領域３１１とデータを受信したいと意図するシンク領域３１３である。本質的に、一般にデータソース３１５により表される領域３１１内のエレメントは利用可能なデータを有し、一般にデータシンク３１７により現される領域３１３内のエレメントは、さらなる処理、記憶等のためにそのデータを受信する必要がある。
【００５９】
２つの領域は領域境界により分離され、破線Ｄ−Ｄにより表される。この場合も先と同様に、２つの領域は、一連の１つ以上のレジスタを介して配線を介して接続された単一の半導体チップ、異なるチップまたは異なる装置または他のインターフェース手段、またはローカルまたはワイドエリアネットワークを介して通信する２つの別個のシステムの異なる領域であってもよい。上述した議論におけるように、２つの領域内の回路の動作は同じ基本クロック周波数に対してクロックされてもよく（すなわち同期）、または異なる基本クロック周波数に対してクロックされてもよい（非同期）。
【００６０】
議論を容易にするために、２つの領域は同期しており、例えばチップの境界領域にわたって相互接続されたまたは一緒に接続されたプロセッサーチップの２つのコアセクションのように境界にわたって、一緒に直接接続された近接近したエレメントを表すと仮定する。２つのセクションの分離は物理的かもしれない。例えば、チップの２つの別個のパーツまたはエリアかもしれない。または分離は、純粋にロジカルであってもよい。すなわち、単に、第１の領域のデータレートにおいて動作するコンポーネントと、第２の領域のデータレートにおいて動作するコンポーネントの間であってもよい。
【００６１】
これまでのように、２つの領域は異なるデータレートで動作する。境界Ｄ−Ｄにわたる領域３１１および３１３のデータレート差を補償するために、シンク領域３１３は、本質的にソース領域３１１から受信したデータをバッファリングするためにファーストインファーストアウト（ＦＩＦＯ）記憶装置３１９を含む。この場合も先と同様に、ＦＩＦＯ記憶装置は、レジスタまたはメモリのような多種多様の物理的アーキテクチャのいずれかで実施されてもよい。議論の目的のために、ＦＩＦＯ３１９を、受信したデータが移動する一連のレジスタまたはレジスタのスタックとして考えることは便利である。データの新しいビートが装置３１９にロードされるまたは書かれるとき、１つのレジスタまたはロケーションは満たされる。データのビートが装置３１９からシンク３１７にアンロードまたは読まれると１つのレジスタまたはロケーションはクリアされる。
【００６２】
ソース側または送信側３１１では、データソース３１５はデータのビート、この例では、１２８ビットのデータをときどきリードデータレジスタと呼ばれるレジスタ３２１に供給する。この例において、レジスタ３２１は、リードデータ(ReadData）レジスタとして指定される。ReadDataレジスタ３２１は１２８ビットのデータを保持し、ライン上のデータのビットを供給し、境界Ｄ−ＤにわたるデータをＦＩＦＯ記憶装置３１９の入力に転送する。図には示されていないけれども、さらなるロジックがリードデータレジスタの後でＦＩＦＯの前に存在してもよい。レジスタ３２１がデータの新しいビートを保持している間、データはＦＩＦＯ記憶装置３１９の入力へのライン上で得られる。しかしながら、データの新しいビートがレジスタ３２１にロードされると、シンク領域３１３内のＦＩＦＯ記憶装置３１９の入力にデータが現れる前に多少の伝搬遅延がある。
【００６３】
ＦＩＦＯ制御３２３は、ReadDataレジスタ３２１へのおよびReadDataレジスタ３２１を介したデータのフローを制御する。ＦＩＦＯ制御３２３は、図１の制御２３に類似した有限の状態機械である。ただし、制御３２３の状態機械のロジックは以下の議論から明らかになるようにわずかに異なる。ソース３１５が送信すべき新しいデータを有するとき、ソース３１４は、レジスタ３３１に（Ｖ）フラッグをセットし、ソース領域３２１内のレジスタ−使用カウンタ３２５により示されるように、データの最後のビートに対してＦＩＦＯ記憶装置３１９に利用可能なスペースがあるなら、ＦＩＦＯ制御３２３は、ReadDataレジスタ３２１に新しいデータを提供させる。カウンタ３２５の初期値、従ってカウント値の許容可能なレンジは、ＦＩＦＯ３１９のロケーションの数、すなわち、ＦＩＦＯの深さに相当する。制御３２３は、例えば、カウントが負でないかどうかを見るために、カウントの状態を調べることによりデータの新しいビートを受信するためにＦＩＦＯ記憶装置３１９内にスペースがあるかどうかを決定することができる。別個のエレメントとして示されているけれども、カウンタ３２５は、ＦＩＦＯ制御３２３として機能する状態機械の一部として集積されてもよい。
【００６４】
ＦＩＦＯ制御３２３は、ReadDataレジスタ３２１に、ＦＩＦＯ記憶装置３１９への入力のために新しいデータを提供させるとき、ＦＩＦＯ制御３２３は、この場合も先と同様にシンク領域３１３に知らせる必要がある。しかしながら、この場合、制御３２３は、ソース領域３１１において、ピンポンレジスタ３２６にReadDataReady信号を供給する。ピンポンレジスタ３２６は本質的には、２ビットレジスタであり、例えば、２つ以上のフリップフロップを用いて実施される。レジスタ３２６は、以下のように３つの有効な状態を持つように制御される。０，０状態はまだ有効なデータレディがないことを示す。０，１状態は、ＦＩＦＯ３１９に転送するデータレディがあることを示す２つのたぶん有効な状態の第１の状態である。１，０状態は、ＦＩＦＯ３２９に転送すべきデータレディがあることを示す２つのたぶん有効な状態の第２の状態である。以下に述べるように、データレディ状態は、０、１状態と１，０状態との間の遷移によりシーケンスで示される。注目すべきは、制御３２３およびレジスタ３２６は、１，１状態を生成しないように構成される。その状態は、このプロトコルにおいて有効なシグナリング状態ではないからである。
【００６５】
データが転送のために利用可能になると、ソース領域３１１内のＦＩＦＯ制御３２３は、ReadDataReadyパルス信号を供給してピンポンレジスタ３２６の状態を駆動する。また、ＦＩＦＯ制御３２３は、ReadDataReadyパルス信号をＦＩＦＯスペース使用カウンタ３２５のデクリメント入力（−）に供給する。利用可能なデータがないときまたは送信する準備ができたデータがないときであって、送信された最後のデータに対してＦＩＦＯに十分なスペースがあることをカウンタが示しているとき、ＦＩＦＯ制御３２３は、ピンポンレジスタ３２６を（０，０状態に）クリアする。今、現在のサイクルにおいてデータのビートが利用可能となり、後のサイクルにおいてより多くのデータが利用可能となると仮定する。前のサイクルにおいて利用可能なデータがなく、前の転送のためにＦＩＦＯに十分なスペースがあったなら、レジスタ３２６は０，０状態にあった。次に、ReadDataReady信号の第１のパルスは、レジスタ３２６に０，１データレディ状態に変更させ、ReadDataReady信号の第２パルスはレジスタ３２６に１，０データレディ状態に変化させ、ReadDataReady信号の第３パルスは、レジスタ３２６に０，１データレディ状態に変化させる、以下同様である。このようにして、ソース３１５が転送のために利用可能な新しいデータ有さない時刻にＦＩＦＯ制御３２３がレジスタ３２６をクリアし、すべての以前のデータが捉えられるまで、ReadDataReady信号の連続パルスは、レジスタ３２６に２つの有効なデータレディ状態の間で変更させるまたは「ピンポン」させる。
【００６６】
レジスタ３２６は、ＦＩＦＯ制御３２３から新しいパルス信号またはクリアコマンドを受信するまで各状態を維持する。そのようなものとして、ＦＩＦＯ制御３２３がレジスタ３２６の状態を変更しない限り、各状態は、連続的にレジスタ３２６の２ビット出力ラインに現れるであろう。レジスタ３２６の出力ラインは、境界Ｄ−Ｄにわたる２ビットの有効データ状態情報をシンク領域３１３内のマルチプレクサ（ＭＵＸ）３２７に供給する。ＭＵＸ３２７は、状態データをシンク領域３１３内のＦＩＦＯ制御３２９に供給し、ＭＵＸ動作は、ＦＩＦＯ制御３２９により制御される。シンク領域ＦＩＦＯ制御３２９からの制御の下で、ＭＵＸ３２７は、ＦＩＦＯがデータを捕らえるまで、その入力に遷移が現れるごとに、その出力に１を与える。すなわち、ＭＵＸ３２７は、ＦＩＦＯ記憶装置１９に送信する準備ができているデータの新しいビートまたは捕らえられた古いデータがまだあるときをソース領域３１１が示すたびに１を与える。ＭＵＸがその入力に０，０状態を受信すると（送信する準備ができている有効データがない）、ＭＵＸは常に０を出力する。
【００６７】
シンク領域３１３において、ＦＩＦＯ制御３２９は別の有限の状態機械である。以下の記載から明らかになるように状態機械のロジックはわずかに異なるけれども、状態機械は制御２９に類似する。例えば、ＦＩＦＯ制御３２９は、「ライト」信号と「リード」信号をＦＩＦＯ記憶装置３１９に供給し、ＦＩＦＯ記憶装置３１９へのおよびＦＩＦＯ記憶装置３１９からのデータの入力（ライト）および出力（リード）を制御する。上で述べたように、ＭＵＸ３２７は、転送のためにデータの新しいビートが利用可能であることを示す、ソース領域制御３２３内のレジスタ３２６からの各新しいピンポン状態に応答して、ＦＩＦＯ制御３２９に１信号を供給する。レディデータを受信するためにＦＩＦＯ記憶装置３１９にスペースが利用可能であるなら、制御３２９は、ライト信号を発生し、ＦＩＦＯ記憶装置３１９に、ソース領域３１１内のReadDataレジスタ３２１からのデータの入力を受け取らせる。
【００６８】
ピンポンシグナリングの代わりの形態は、シングルビット信号を用いて実施されてもよい。そのような場合に、ビットのトグルは新しいデータの配信を示す。このスキームは０，０状態を消去し、それを遷移の欠落と交換する。トグルは、図３のＭＵＸをイクスクルーシブＯＲゲートに交換することによりパルスに変わることができる。イクスクルーシブＯＲの出力は、ＦＩＦＯにより捕らえられるデータ、すなわち新しいデータまたはまだ捕らえられていない古いデータがある各サイクルに対して真であろう。
【００６９】
初期の例におけるように、ReadDataReady信号として機能するパルスはカウンタ３２５をデクリメントし、１つ少ないレジスタロケーションがＦＩＦＯ記憶装置３１９において利用可能であることを示す。その点において、カウンタ３２５は、２つの領域３１１と３１３との間の信号の転送のためのいかなる遅延または待ち時間なしに、同じ領域３１１で発生されたレディパルスに応答してデクリメントされる。シンク側のＦＩＦＯ制御３２９からのリード信号は、ＦＩＦＯ記憶装置３１９にそのレジスタロケーションの１つからのデータをシンク３１７に出力し、装置３１９内のそのロケーションをクリアするように命令する。それゆえ、リード信号のパルスは、シンク領域３１３から境界Ｄ−Ｄをわたり供給され、カウンタ３２５をインクリメントする。
【００７０】
制御３２９によるリード信号の発行と、ソース領域３１１内のカウンタ３２５におけるＦＩＦＯエントリーフリー表示として対応する信号の出現との間に多少の待ち時間があるであろう。シグナリング待ち時間は、シグナリングがチップを交差するのに必要な時間によるかもしれない。しかしながら、リード信号とＦＩＦＯエントリーフリーとの間に、一般に図面では遅延／タイミングエレメント３２８により表されるさらなる状態回路があってもよい。シンク領域３１３にあるように示されているけれども、回路３２８は、物理的には、領域の一方または両方に存在してもよい。さらなる回路、典型的には、１つ以上のフリップフロップは、領域間の境界Ｄにわたって適切な信号レベルとタイミングアライメントを保証する。しかしながら、さらなる回路３２８は、制御３２９によりリード信号のアサーションと、カウンタ３２５におけるＦＩＦＯエントリーフリー表示として対応する信号の出現との間の待ち時間に１サイクル以上の遅延を付加するであろう。便宜上示さないけれども、当業者は、そのようなさらなる回路が提供されるなら、類似の遅延／タイミングエレメントが２つの領域間の他のライン、例えば、ReadDataラインおよびReadDataReadyライン上に提供されるであろうことを理解するであろう。
【００７１】
カウンタ３２５は、境界Ｄ−Ｄにわたって新しいデータを送信するための決定に使用するために、ソース領域３１１内のＦＩＦＯ制御３２３に、ＦＩＦＯスペースフリーカウントを供給する。データがＦＩＦＯ３１９に提供されるたびにカウントをデクリメントし、（データがＦＩＦＯ３１９から読み取られるので）ロケーションがクリアされるたびにカウントをインクリメントすることにより、カウンタ３２５の値は、ＦＩＦＯ記憶装置３１９において使用されているまたは空のスペース量（ロケーションの数）を追跡する。しかしながら、カウンタ３２５はソース領域３１１内にあるので、デクリメントは、レジスタ３２６からの状態情報の受信およびシンク領域３１３における応答に多少先行する。境界Ｄ−Ｄにわたる２ビットの状態情報をＭＵＸ３２７に転送する際にある遅延または待ち時間がある。反対に、ソース領域３１１内のカウンタ３２５のインクリメントは、境界Ｄ−Ｄにわたるリード信号を転送する際の遅延または待ち時間により、シンク領域３１３内のＦＩＦＯ記憶装置３１９からのデータのリードの後を多少追うまたはリードに多少遅れる。
【００７２】
また、 ソースがシンク３１７に転送するために最初に利用可能なデータを有しているとき、ＦＩＦＯ制御３２３は、データソース３１５により設定された１ビットレジスタ３３１内のデータ有効フラッグ（Ｖ）に応答する。別の言い方をすれば、ソース３１５はフラッグＶをレジスタ３３１にセットし、ＦＩＦＯ制御３２３に対し、ReadDataレジスタ３２１にロードするために利用可能な有効な新しいデータがあることを知らせる。ＦＩＦＯ制御３２３は、データ有効フラッグ（Ｖ）３１として機能する１ビットレジスタにクロック（イネーブル）信号を供給する。データが成功裏にシンク領域内のＦＩＦＯ３１９に転送されたとき、ＦＩＦＯ制御３２３は、クロック（イネーブル）信号をレジスタ３３１に供給し、従って、有効フラッグ（Ｖ）の状態を供給する。動作において、ソース有効ビットはレジスタ３３１からソースＦＩＦＯ制御３２３に送られ、このＦＩＦＯ制御にデータを送信する準備ができたことを告げる。新しいデータがソース３１５から同時に入ってこない限り、データが送信されると、このビットはレジスタ３３１からクリアされる。このようにして、データの新しいビートのために利用可能な空きがあることをカウンタ３２５が示すとき、ＦＩＦＯ制御３２３はレジスタ３３１内のＶフラッグを制御し、ソースがフラッグをセット可能にする（およびデータの新しいビートをReadDataレジスタ３２１に入力することを可能にする）。
【００７３】
図４（Ａ）および図４（Ｂ）は、図３のシステムの動作の簡単な例のタイミング図である。一般に、これらの例は、図２（Ａ）および２（Ｃ）に対して上で述べた例に類似する。しかしながら、ここでは、ソース領域からのリードデータレディのシグナリングは、図４（Ａ）および４（Ｂ）の第４ラインおよび第５ラインに示されるように、「ピン(Ping)」信号と「ポン(Pong)」信号の形態をとる。図面に示すように、２つの有効なピンポン状態（０，１または１，０への）の一方への各遷移は、レジスタにデータの準備ができたことを知らせる。
【００７４】
これらの例において、カウントは、この場合も先と同様に、データを送信することができるデータのビートの数を表し、カウントは、ＦＩＦＯ位置の数より多い位置で始まる（これらの図の各図における５番目のラインを参照）。このさらなるビートは、ソース領域内のReadDataレジスタに、転送されているときに保持することができるデータを表す。ゼロのカウントはソースデータが以前のサイクルから保持する必要があることを示す。従って、ピンポンプロトコル例において、状態変化は、そのようなサイクルで生じてはならない。
【００７５】
上述したように、ＦＩＦＯ３１９自体が領域３１３に配置されるというよりはむしろソース３１５が領域３１１に配置された状態でカウンタ３２５が位置する。上述の議論および図３により示されるように、第２の例は同様にソース領域内のカウンタ３２５に依存し、ＦＩＦＯ記憶装置３１９内のスペースの使用を追跡する。第１の例と同様に、カウンタは領域３１１と３１３との間のシグナリングの待ち時間を効率的に相殺する。利用可能なときは直ちにデータは、レジスタ３２１を介して印加され、ＦＩＦＯに読み込まれるまで、基本的にはＦＩＦＯレジスタスタックのためのさらなる記憶ロケーションを供給するまで、ＦＩＦＯに利用可能なようにそこで保持される。カウンタ３２５はインクリメントのための待ち時間ペナルティを被るが、ソース側に直ちに利用可能である。
【００７６】
ここでの代償は、フリー信号がカウンタ３２５にまだ伝搬されていないので、実際にはＦＩＦＯ記憶装置３１９に空きがあるときデータを送信することができないと時々言うかもしれないという点においてカウンタ３２５は悲観的であるということである。これは、データが連続的に送信することができるように、「フリー」信号待ち時間に従ってＦＩＦＯの深さをサイズ化することにより克服してもよい。また、ＦＩＦＯが満杯であるとソースが信じるとき、ロジック３２３の適切な設計によりまたはカウンタをＮ＋１にサイズ化することにより（この場合、ＮはＦＩＦＯの深さであり、例えば、ＦＩＦＯ３１９のロケーションの数である）、レジスタ３２１を介して１つの最後のデータビートを送信することができることにより小さな帯域幅を獲得することも可能である。
【００７７】
ローカルカウンタとＦＩＦＯの深さによって、ソース３１５は、データを連続的に送信することができる。従って、ＦＩＦＯ３１９を適切にサイズ化することにより、信号の待ち時間を気にせずに転送を生じることができる。処理は実質的に「無感覚な待ち時間」である。ここで、特に、デスティネーションがＦＩＦＯ３１９を十分高速に排出させないとき、そして待ち時間に等しいバッファリングを損失するとき、待ち時間が作用し始めることが可能であることに留意する必要がある。これは、ＦＩＦＯ３１９が排出される典型的なデータレートをカバーするために、ＦＩＦＯ３１９をより深くすることにより補償される。従って、典型的な条件で、データは連続的に転送される。領域間のデータの実質的に連続した転送を得るために、ＦＩＦＯの深さは、図１の例に関して上で述べたＦＩＦＯの深さに類似しているであろう。
【００７８】
また、システムは、カウンタ３２５をデクリメントするとき正確にＦＩＦＯ３１９のデータを読み取る必要はない。代わりに、ソース側が新しいデータに応答して送ることができる前に、シンク側がＦＩＦＯ装置３１９のデータのビートをリードし新しいデータのためにスペースをクリアするであろうことをタイミングおよび待ち時間が保証することができる限り、カウンタを多少早くデクリメントするようにカウンタをデクリメントするための信号はリードを導くことができる。
【００７９】
第２の例のこれらの利点は実質的に第１の例のこれらの利点と類似している。しかしながら、ピンポンシグナリング技術はいくつかのユニークな利点を追加する。ピンポンアプローチの場合、ＦＩＦＯが満杯であるとソースが信じた後にデータエキストラビートが送信されると、信号は、カウンタ３２５がインクリメントされ別のビートが送信されるまで、アサートされたままである。従って、シンク側でReadDataReadyパルスを捕らえて保持する必要はない。
【００８０】
上述のものはベストモードおよび／または他の例であると考えられるものを記載したけれども、種々の変更が実施されてもよく、ここに開示された主題は、種々の形態および例で実施されてもよく、開示は多数のアプリケーションに適用されてもよい。それらのうちのいくつかのみがここに記載された。この教示の真の範囲に入るいかなるおよび全てのアプリケーション、変更および変形をクレームするために以下の請求項により意図される。
【図面の簡単な説明】
【００８１】
【図１】図１は、ファーストインファーストアウト（ＦＩＦＯ）バッファを介して領域間でデータを転送するエレメントおよびデータ交換のシグナリングと制御のためのエレメントの機能ブロック図である。
【図２Ａ】図２（Ａ）は図１のシステムにおけるデータ交換を理解するのに有用なタイミング図である。
【図２Ｂ】図２（Ｂ）は図１のシステムにおけるデータ交換を理解するのに有用なタイミング図である。
【図２Ｃ】図２（Ｃ）は図１のシステムにおけるデータ交換を理解するのに有用なタイミング図である。
【図３】図３はファーストインファーストアウト（ＦＩＦＯ）バッファを介して領域間でデータを転送するためのエレメントおよびデータ交換のシグナリングと制御のための多少異なるセットのエレメントの機能ブロック図である。
【図４Ａ】図４（Ａ）は図３のシステムにおけるデータ交換を理解するのに有用なタイミング図である。
【図４Ｂ】図４（Ｂ）は図３のシステムにおけるデータ交換を理解するのに有用なタイミング図である。
【図１】
2008541623.tif 000003
【図２Ａ】
2008541623.tif 000004
【図２Ｂ】
2008541623.tif 000005
【図２Ｃ】
2008541623.tif 000006
【図３】
2008541623.tif 000007
【図４Ａ】
2008541623.tif 000008
【図４Ｂ】
2008541623.tif 000009
【国際調査報告】
2008541623.tif 000010