JP2008541623A - 待ち時間に無感覚なfifoシグナリングプロトコル - Google Patents

待ち時間に無感覚なfifoシグナリングプロトコル Download PDF

Info

Publication number
JP2008541623A
JP2008541623A JP2008511268A JP2008511268A JP2008541623A JP 2008541623 A JP2008541623 A JP 2008541623A JP 2008511268 A JP2008511268 A JP 2008511268A JP 2008511268 A JP2008511268 A JP 2008511268A JP 2008541623 A JP2008541623 A JP 2008541623A
Authority
JP
Japan
Prior art keywords
data
register
fifo
source
sink
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008511268A
Other languages
English (en)
Other versions
JP4681046B2 (ja
Inventor
ドックサー、ケネス・アラン
オーグスバーグ、ビクター・ロバーツ
ディーフェンダーファー、ジェームズ・ノリス
ブリッジス、ジェフリー・トッド
クランシー、ロバート・ダグラス
サートリウス、トマス・アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2008541623A publication Critical patent/JP2008541623A/ja
Application granted granted Critical
Publication of JP4681046B2 publication Critical patent/JP4681046B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/126Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag

Abstract

第1のデータレートで動作するソース領域からのデータは、異なるデータレートで動作する別の領域内のFIFOに転送される。FIFOは、さらなる処理または記憶のためにシンクに転送する前にデータをバッファリングする。ソース側カウンタは、FIFOにおいて利用可能なスペースを追跡する。開示された例において、イニシャルカウンタ値はFIFOの深さに相当する。カウンタはソース領域からのデータレディ信号に応答して遅延なくデクリメントする。カウンタはFIFOからのデータのリードのシンク領域からのシグナリングに応答してインクリメントする。それゆえ、インクリメントは、領域間のシグナリング待ち時間に従う。FIFOが満杯であることをカウンタが示すとき、ソースは、もうひとつのデータのビートを送信してもよい。FIFO位置が利用可能になることが示されるまでデータの最後のビートは連続的にソースから送信され、効率的にもうひとつのFIFO位置を提供する。

Description

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

Claims (30)

  1. シンク領域でファーストインファーストアウト(FIFO)記憶装置を介して、第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送するための方法において、
    (a)ソースが転送のためのデータレディを有するとき、前記レディデータを前記ソース領域内のレジスタにロードし、前記データを前記シンク領域に提供し、データレディ信号を提供することと、
    (b)前記データレディ信号に応答して前記ソース領域内のカウンタにおいて、前記FIFO記憶装置において利用可能なスペースを表す値をデクリメントすることと、
    (c)前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングすることと、
    (d)前記シンク領域に前記データレディ状態のシグナリングを受信すると、前記FIFO記憶装置をアクティブにし、前記ソース領域内の前記レジスタから利用可能なデータを前記FIFO記憶装置にロードすることと、
    (e)前記FIFO記憶装置からのデータをデータシンクに出力し、前記FIFO記憶装置内のスペースをクリアすることと、
    (f)前記FIFO記憶装置内のスペースのクリアリングを前記ソース領域内のカウンタにシグナリングすることと、
    (g)前記FIFO記憶装置内のスペースのクリアリングのシグナリングを前記カウンタにおいて受信することに応答して、前記ソース領域内のカウンタにおいて、前記FIFO記憶装置内で利用可能なスペースを表す値をインクリメントすることと、
    (h)前記ソース領域内のカウンタにおいて、前記FIFO記憶装置内で利用可能なスペースを表す値に応答して、データを前記シンク領域に提供するために前記ソース領域内のレジスタにレディデータをロードし、データレディ信号を供給する次のステップを制御することと、
    を備えた方法。
  2. ステップ(a)乃至(d)を反復的に繰り返すことと、
    ステップ(e)乃至(g)を反復的に繰り返すことと、
    前記ソース領域内の前記カウンタにおいて、前記FIFO記憶装置において利用可能なスペースを表す値の現在の状態に従って前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
    をさらに備えた、請求項1の方法。
  3. レディデータをロードする各サイクルの期間における前記繰り返しと制御は、前記シンク領域内の前記FIFO記憶装置を介して前記ソース領域と前記シンク領域との間のデータの実質的に連続したデータの転送をイネーブルにする、請求項2の方法。
  4. 前記データレディ信号は単一サイクルのパルス信号を備え、
    前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングするステップ(c)は、単一サイクルのパルス信号を前記シンク領域内のレジスタに送信することを備えた、請求項1の方法。
  5. 前記ソース領域内のレジスタからの前記利用可能なデータを前記FIFO記憶装置にロードすることが完了するまで、前記FIFOを制御するために前記シンク領域内のレジスタから連続したレディ信号を供給することをさらに備えた、請求項4の方法。
  6. ステップ(a)乃至(d)を反復的に繰り返すことと、
    ステップ(e)乃至(g)を反復的に繰り返すことと、
    前記ソース領域内の前記カウンタにおいて、前記FIFO記憶装置において利用可能なスペースを表す値の現在の状態に従って、前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
    をさらに備えた、請求項4の方法。
  7. 前記レディデータをロードする各サイクルの期間における前記反復された繰り返しと制御は、前記シンク領域内の前記FIFO記憶装置を介して前記ソース領域と前記シンク領域の間のデータの実質的な連続したデータの転送をイネーブルにする、請求項6の方法。
  8. 前記データレディ信号に基いて、データレディ状態を前記シンク領域にシグナリングする前記ステップ(c)は、
    シグナリングレジスタ状態を以前の有効データレディ状態から代替有効データレディ状態に変更することと、
    前記代替有効データレディ状態を前記ソース領域から前記シンク領域にシグナリングすることと、
    を備えた、請求項1の方法。
  9. ステップ(a)乃至(g)を反復的に繰り返すことであって、前記反復された繰り返しステップ(c)は、前記有効データ状態の代替シグナリングを前記シンク領域に生じることと、
    前記ソース領域の前記カウンタにおいて、前記FIFO記憶装置において利用可能なスペースを表す値の現在の状態に従って、前記ソース領域内のレジスタにレディデータをロードする各サイクルを制御することと、
    をさらに備えた、請求項8の方法。
  10. レディデータをロードする各サイクルの期間における前記反復された繰り返しと制御は、前記シンク領域内の前記FIFO記憶装置を介して前記ソース領域と前記シンク領域との間の実質的に連続するデータの転送をイネーブルにする、請求項9の方法。
  11. 第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送する方法において、
    (a)複数のサイクルの期間において、実質的に連続的に、
    (1)ソースからのデータをソース領域内のレジスタにロードすることと、
    (2)データレディを前記シンク領域にシグナリングすることと、
    (3)前記ソース領域内のレジスタからデータを前記シンク領域内のファーストインファーストアウト(FIFO)記憶装置にロードすることと、
    (4)前記FIFO記憶装置からのデータをシンク装置に出力し、前記FIFO記憶装置内のデータのためのスペースをクリアすることと、
    (5)前記FIFO記憶装置内のスペースのクリアリングを前記ソース領域にシグナリングすることと、
    (b)前記ソース領域内のレジスタへのデータの各ローディングに応答して、第1の方法で前記ソース領域内のカウント値を変更することと、
    (c)前記ソース領域への、前記FIFO記憶装置内のスペースのクリアリングの各シグナリングに応答して、前記第1の方法と反対の第2の方法で、前記ソース領域内のカウント値を変更することと、
    (d)ステップ(a)の各サイクルにおいて、前記FIFO記憶装置の深さに関して前記カウント値の現在の状態に基いて前記ソースからのデータを前記ソース領域内のレジスタにロードすることを制御することと、
    を備えた方法。
  12. 前記シンク領域へのデータレディの各シグナリングは、前記ソース領域からの単一サイクルのデータレディパルス信号を前記シンク領域に送信することを備え、
    第1の方法で前記ソース領域内の前記カウント値を変更する各ステップは、前記ソース領域内の単一サイクルのデータレディパルス信号の発生に応答する、請求項11の方法。
  13. 前記シンク領域へのデータレディの各シグナリングは、
    2つの代替有効データ状態間で変更することと、
    前記ソース領域からの前記2つの代替有効データ状態の現在の状態を前記シンク領域にシグナリングすることと、
    を備えた、請求項11の方法。
  14. 前記カウント値のための許容されるレンジは、前記FIFO記憶装置の深さに相当し、前記第1の方法で前記ソース領域内のカウントを変更することは、前記カウント値をデクリメントすることを備え、
    前記第2の方法で前記ソース領域内の前記カウントをインクリメントすることは、前記カウント値をインクリメントすることを備えた、請求項11の方法。
  15. 前記第2の方法で前記ソース領域内の前記カウント値を変更することは、前記ソース領域への前記シンク領域からの前記FIFO記憶装置内のスペースのクリアリングの各シグナリングの通信に含まれる待ち時間に従う、請求項11の方法。
  16. 第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送する方法において、
    (a)複数の反復の各々の期間において、
    (1)ソースからのデータを前記ソース領域内のレジスタにロードし、データを前記シンク領域に提供することと、
    (2)前記シンク領域内のファーストインファーストアウト(FIFO)記憶装置においてスペースが得られるとき、前記ソース領域内のレジスタからのデータを前記FIFO記憶装置にロードすることと、
    (3)前記FIFO記憶装置からのデータをシンク装置に出力し、前記FIFO記憶装置内のデータのためにスペースをクリアすることと、
    (b)前記ソース領域内のレジスタへのデータの各ローディングに応答して、および前記FIFO記憶装置内のスペースの各クリアリングの前記シンク領域からのシグナリングに応答して、前記FIFO記憶装置内で得られるスペースを表す前記ソース領域内のカウントを維持することと、
    (c)ステップ(a)の各反復において、前記カウントの現在の状態に基いて前記ソースからのデータを前記ソース領域内のレジスタにロードすることを制御することであって、前記カウントが前記FIFO記憶装置が満杯であることを示すなら、前記制御は、前記ソース領域内のレジスタへのデータの次に利用可能なビートのローディングを可能にし、スペースが利用可能なとき前記FIFO記憶装置にロードするために、データのビートが連続的にFIFO記憶措置に提供されるようにデータのそのビートを保持することを可能にすることを含むことと、
    を備えた方法。
  17. ソース領域内のレジスタへのデータの各ローディングに対してデータレディをシンク領域にシグナリングすることをさらに備えた、請求項16の方法。
  18. 前記シンク領域へのデータレディの各シグナリングは、前記ソース領域からの単一サイクルのデータレディパルス信号を前記シンク領域に送信することを備えた、請求項17の方法。
  19. 前記シンク領域へのデータレディの各シグナリングは、前記ソース領域から前記シンク領域への2つの代替データ有効状態の1つに遷移をシグナリングすることを備えた、請求項17の方法。
  20. 第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送するための装置において、
    (a)ソースからデータを受信し、転送のために受信したデータを前記シンク領域に提供するリードデータレジスタと、
    (b)前記ソースからのデータを前記リードデータレジスタにロードすることを制御し、前記シンク領域へのデータのローディングのシグナリングの送信を生じる制御と、
    (c)カウンタであって、前記制御は前記カウンタ内の値の状態に応答するカウンタと、
    を含むソース領域エレメントと、
    (1)前記リードデータレジスタと通信するファーストインファーストアウト(FIFO)記憶装置と、
    (2)データのローディングのシグナリングの受信に応答して、前記リードデータレジスタからのデータを前記FIFO記憶装置に受け取ることを制御し、データがFIFO記憶装置からシンクに出力されるとFIFO記憶装置内のスペースのクリアランスを制御し、前記ソース領域内の前記カウンタへのスペースの前記クリアランスのシグナリングの送信を生じる制御と、
    を含むシンク領域エレメントと、
    を含み、
    前記カウンタは前記リードデータレジスタへの前記ソースからのデータの各ローディングに応答して第1の方法で値を変更し、前記カウンタは、前記シンク領域内の制御から、前記FIFO記憶装置内のスペースのクリアランスの各シグナリングを受信すると、前記第1の方法とは反対の第2の方法で前記値を変更する、装置。
  21. 前記データのローディングのシグナリングとして前記ソース領域内の前記制御からのパルス信号を受信するための前記シンク領域内のレディ状態レジスタであって、前記パルス信号の各サイクルは、前記ソースからの新しいデータを前記リードデータレジスタにロードすることを表し、前記パルス信号の各受信されたサイクルに応答して前記シンク領域内の前記制御にデータレディ表示を供給する前記シンク領域内のレディ状態レジスタをさらに備えた、請求項20の装置。
  22. 前記リードデータレジスタへの前記ソースからのデータの各ローディングに応答して2つの有効状態間で互い違いにする前記ソース領域内のシグナリングレジスタと、
    前記ソース領域内のシグナリングレジスタからの有効状態の交互の受信に応答して、データレディ表示を前記シンク領域内の前記制御に供給する前記シンク領域内のマルチプレクサと、
    をさらに備えた、請求項20の装置。
  23. 前記FIFO記憶装置は、前記リードデータレジスタとFIFO記憶装置を介して前記ソース領域から前記シンク領域への実質的に連続するデータの転送を可能にするのに十分深い、請求項20の装置。
  24. 第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送するための装置において、
    (a)ソースからデータを受信し、受信したデータを転送のために前記シンク領域に提供するリードデータレジスタと、
    (b)前記ソースから前記リードデータレジスタにデータをローディングすることを制御し、前記シンク領域へのデータのローディングのシグナリングの送信を生じる制御と、
    (c)カウンタであって、前記制御は前記カウンタ内の値の状態に応答する、カウンタと、
    を含むソース領域エレメントと、
    (1)前記リードデータレジスタと通信するファーストインファーストアウト(FIFO)記憶装置と、
    (2)前記データのローディングのシグナリングの受信に応答して前記リードデータレジスタから前記FIFO記憶装置へのデータの受信を制御し、前記FIFO記憶装置からシンクにデータが出力されると前記FIFO記憶装置内のスペースのクリアランスを制御する制御と、
    を含むシンク領域エレメントと、
    を備え、
    前記カウンタは前記ソース領域内のレジスタへのデータの各ローディングに応答しおよび前記FIFO記憶装置内のスペースの各クリアリングの前記シンク領域からのシグナリングに応答して、前記FIFO記憶装置内で利用可能なスペースの表示として前記カウント値を維持し、
    前記カウンタ内のカウント値により前記FIFO記憶装置が満杯であるという表示に応答して、スペースが利用可能になるとき、前記FIFO記憶装置にローディングするためにデータのビートが連続的に前記FIFO記憶装置に提供されるようにデータのそのビートを保持するために前記リードデータレジスタへのデータの次に利用可能なデータのビートのローディングを前記コントローラーは可能にする、装置。
  25. 前記データのローディングのシグナリングとして前記ソース領域内の前記制御からパルス信号を受信するための、前記シンク領域内のレディ状態レジスタであって、前記パルス信号の各サイクルは前記ソースからの新しいデータを前記リードデータレジスタにロードすることを表し、前記パルス信号の各受信したサイクルに応答してデータレディ表示を前記シンク領域内の前記制御に供給する、前記シンク領域内のレディ状態レジスタをさらに備えた、請求項24の装置。
  26. 2つの有効データ状態を有する前記ソース領域内のシグナリングレジスタであって、前記シグナリングレジスタは、前記ソースから前記リードデータレジスタへのデータの各ローディングに応答して2つの有効データ状態の1つに遷移する、前記ソース領域内のシグナリングレジスタと、
    前記ソース領域内の前記シグナリングレジスタからの前記有効なデータ状態の受信に応答して、データレディ表示を前記シンク領域内の前記制御に供給する、前記シンク領域内のマルチプレクサと、
    をさらに備えた、請求項24の装置。
  27. 第1のデータレートで動作するソース領域と前記第1のデータレートとは異なる第2のデータレートで動作するシンク領域との間でデータを転送するための装置において、
    ソースからデータを受信し、受信したデータを転送のために前記シンク領域に提供する、前記ソース領域内のリードデータレジスタと、
    シンクに転送するために前記リードデータレジスタからデータを受信する前記シンク領域内のファーストインファーストアウト(FIFO)記憶装置と、
    前記リードデータレジスタへのデータのローディングと前記FIFO記憶装置からのデータのオフローディングに応答して、前記FIFO記憶装置において利用可能なスペースを表すカウント値を維持する、前記ソース領域内のカウンタと、
    前記FIFO記憶装置の深さに関して前記カウント値の状態に応答して、前記シンク領域に転送するために前記リードデータレジスタへのデータのローディングを制御する、前記ソース領域内の制御と、
    前記リードデータレジスタ内のデータは、前記FIFO記憶装置への転送の準備ができていることを前記シンク領域にシグナリングし、前記FIFO記憶装置へのデータの受信の制御を可能にする手段と、
    を備えた装置。
  28. 前記カウンタの構成および前記シグナリング手段は、前記ソース領域と前記シンク領域との間で交換されるシグナリングの待ち時間に対して前記装置を実質的に無感覚にさせる、請求項27の装置。
  29. 前記FIFO記憶装置の深さと、前記カウンタの構成と、前記シグナリング手段は、前記リードデータレジスタと前記FIFO記憶装置を介して前記ソース領域と前記シンク領域との間の実質的なデータの連続転送を可能にする、請求項27の装置。
  30. 前記FIFO記憶装置が満杯であることを前記カウント値の状態が示しているなら、スペースが利用可能になるとき、前記FIFO記憶装置にローディングするためにデータのビートが連続的に前記FIFO記憶装置に提供されるように、データのそのビートを保持するためにリードデータレジスタへの次に利用可能なデータのビートのローディングを可能にするために、前記ソース領域内の制御は、前記リードデータレジスタへのデータのローディングを制御する、請求項27の装置。
JP2008511268A 2005-05-11 2006-05-08 待ち時間に無感覚なfifoシグナリングプロトコル Expired - Fee Related JP4681046B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/128,135 US7454538B2 (en) 2005-05-11 2005-05-11 Latency insensitive FIFO signaling protocol
PCT/US2006/017899 WO2006124410A2 (en) 2005-05-11 2006-05-08 Latency insensitive fifo signaling protocol

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010274455A Division JP4976537B2 (ja) 2005-05-11 2010-12-09 待ち時間に無感覚なfifoシグナリングプロトコル

Publications (2)

Publication Number Publication Date
JP2008541623A true JP2008541623A (ja) 2008-11-20
JP4681046B2 JP4681046B2 (ja) 2011-05-11

Family

ID=37420511

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008511268A Expired - Fee Related JP4681046B2 (ja) 2005-05-11 2006-05-08 待ち時間に無感覚なfifoシグナリングプロトコル
JP2010274455A Expired - Fee Related JP4976537B2 (ja) 2005-05-11 2010-12-09 待ち時間に無感覚なfifoシグナリングプロトコル

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010274455A Expired - Fee Related JP4976537B2 (ja) 2005-05-11 2010-12-09 待ち時間に無感覚なfifoシグナリングプロトコル

Country Status (8)

Country Link
US (2) US7454538B2 (ja)
EP (1) EP1880299A4 (ja)
JP (2) JP4681046B2 (ja)
KR (1) KR100965356B1 (ja)
CN (1) CN101213534B (ja)
BR (1) BRPI0608975A2 (ja)
IL (1) IL187298A0 (ja)
WO (1) WO2006124410A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613909B2 (en) * 2007-04-17 2009-11-03 Xmos Limited Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
JP5532724B2 (ja) * 2009-07-30 2014-06-25 株式会社リコー インタフェース回路及びそれを備えた半導体装置
KR20110061189A (ko) * 2009-12-01 2011-06-09 삼성전자주식회사 데이터 프로세싱 시스템에서의 비동기 통합 업사이징 회로
TWI466016B (zh) * 2011-07-01 2014-12-21 Realtek Semiconductor Corp 先入先出裝置及其實現方法
CN104038306B (zh) * 2013-03-05 2017-09-29 上海航天测控通信研究所 低延时实时传输多码率位流数据的方法及其异步fifo
US9880961B2 (en) * 2013-11-27 2018-01-30 Arm Limited Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
JPWO2016158063A1 (ja) * 2015-03-30 2018-01-25 ソニーセミコンダクタソリューションズ株式会社 非同期インタフェース
TWI680466B (zh) 2015-05-28 2019-12-21 日商東芝記憶體股份有限公司 半導體裝置
CN108280437B (zh) * 2018-01-30 2021-06-15 四川新先达测控技术有限公司 脉冲信号处理方法、装置及用户终端
CN111008002B (zh) * 2019-12-06 2022-04-08 苏州盛科通信股份有限公司 自动计算并更新fifo深度的装置和方法
CN113220607B (zh) * 2021-05-26 2023-05-12 浙江赛思电子科技有限公司 一种基于fifo的数据处理方法
CN114443524A (zh) * 2022-01-28 2022-05-06 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、系统、存储介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219390A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd Fifoメモリ
JPH08138369A (ja) * 1994-11-04 1996-05-31 Oki Electric Ind Co Ltd メモリ制御回路
JP2001307476A (ja) * 2000-04-20 2001-11-02 Sharp Corp Fifoメモリ制御回路

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3213345C2 (de) * 1982-04-08 1984-11-22 Siemens Ag, 1000 Berlin Und 8000 Muenchen Datenübertragungseinrichtung zwischen zwei asynchron gesteuerten Datenverarbeitungssystemen
US4525649A (en) * 1982-07-12 1985-06-25 Gte Products Corporation Drive scheme for a plurality of flourescent lamps
JPS63308447A (ja) * 1987-06-10 1988-12-15 Nec Corp 送信fifoメモリ制御装置
US5098139A (en) * 1988-12-20 1992-03-24 Larsson Leif T High security lock and latch for sliding doors
US5513224A (en) * 1993-09-16 1996-04-30 Codex, Corp. Fill level indicator for self-timed fifo
US5604866A (en) * 1993-09-30 1997-02-18 Silicon Graphics, Inc. Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver
US5506969A (en) * 1993-11-29 1996-04-09 Sun Microsystems, Inc. Method and apparatus for bus bandwidth management
JPH0997164A (ja) * 1995-10-02 1997-04-08 Oki Electric Ind Co Ltd 非同期バーストデータ受信回路
US6101329A (en) * 1997-02-18 2000-08-08 Lsi Logic Corporation System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data
US6098139A (en) * 1998-05-27 2000-08-01 3Com Corporation Frequency independent asynchronous clock crossing FIFO
US6115760A (en) * 1998-08-24 2000-09-05 3Com Corporation Intelligent scaleable FIFO buffer circuit for interfacing between digital domains
US6389489B1 (en) * 1999-03-17 2002-05-14 Motorola, Inc. Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US6529570B1 (en) * 1999-09-30 2003-03-04 Silicon Graphics, Inc. Data synchronizer for a multiple rate clock source and method thereof
US6389469B1 (en) * 2000-03-27 2002-05-14 Targetize Innovative Solutions Ltd. System and method for customized content delivery
JP3525867B2 (ja) * 2000-07-07 2004-05-10 日本電気株式会社 通信装置および通信端末
EP1182543B1 (en) * 2000-08-17 2005-08-24 Texas Instruments Incorporated Maintaining remote queue using two counters in transfer controller with hub and ports
US7729302B2 (en) * 2001-05-15 2010-06-01 The United States Of America As Represented By The Secretary Of The Navy Adaptive control of multiplexed input buffer channels
CN1153217C (zh) * 2001-06-07 2004-06-09 扬智科技股份有限公司 非同步fifo控制器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219390A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd Fifoメモリ
JPH08138369A (ja) * 1994-11-04 1996-05-31 Oki Electric Ind Co Ltd メモリ制御回路
JP2001307476A (ja) * 2000-04-20 2001-11-02 Sharp Corp Fifoメモリ制御回路

Also Published As

Publication number Publication date
KR20080007506A (ko) 2008-01-21
US7725625B2 (en) 2010-05-25
WO2006124410A2 (en) 2006-11-23
CN101213534B (zh) 2012-02-15
US7454538B2 (en) 2008-11-18
BRPI0608975A2 (pt) 2010-02-17
WO2006124410A3 (en) 2007-09-20
KR100965356B1 (ko) 2010-06-23
US20080281996A1 (en) 2008-11-13
JP4681046B2 (ja) 2011-05-11
IL187298A0 (en) 2009-02-11
CN101213534A (zh) 2008-07-02
EP1880299A4 (en) 2009-07-08
US20060259669A1 (en) 2006-11-16
EP1880299A2 (en) 2008-01-23
JP2011101390A (ja) 2011-05-19
JP4976537B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
JP4681046B2 (ja) 待ち時間に無感覚なfifoシグナリングプロトコル
KR0145321B1 (ko) 2방향 데이타 전송장치
US6055285A (en) Synchronization circuit for transferring pointer between two asynchronous circuits
KR100337052B1 (ko) 동기화된 독출 포인터 및 기록 포인터를 갖는 2 중 포트 fifo
US7308524B2 (en) Memory chain
US5745793A (en) Apparatus having a circular buffer that maintains a one entry gap between elements written to the microprocessor and elements operated on by the clock
US11386025B2 (en) Daisy chain complex commands
JP2004521426A (ja) バスサイクル毎に選択可能な数のデータワードの読み出し及び/又は書き込みを行うことができるファーストイン・ファーストアウトバッファ
EP2039034A1 (en) Asynchronous data fifo that provides uninterrupted data flow
US6163545A (en) System and method for data transfer across multiple clock domains
JP4387371B2 (ja) メモリ装置、その使用、および、データワードの同期方法
US6393080B1 (en) Apparatus comprising clock control circuit and device using internal clock signal synchronized to external clock signal
JP2003263883A (ja) 自己同期型fifoメモリ装置、これを用いたデータ転送用インターフェイスを有するシステムおよび非同期型情報処理装置
US20030005344A1 (en) Synchronizing data with a capture pulse and synchronizer
US9880961B2 (en) Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
US6651200B1 (en) Method and apparatus for adaptive clocking for boundary scan testing and device programming
US6510477B2 (en) Bus system
US20030079059A1 (en) Interface between different clock rate components
US6282149B1 (en) Circuit and method for synchronized data banking
JP3562416B2 (ja) Lsi間データ転送システム及びそれに用いるソースシンクロナスデータ転送方式
KR100593787B1 (ko) 통신 버스에서의 차동 스트로빙 방법 및 장치
JP2009503640A (ja) 非同期データバッファ
JP2008282128A (ja) 外部に接続される電子機器の動作を制御するインタフェースコントローラ
JP2007241936A (ja) データ転送回路
KR19980016797A (ko) 동기회로

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100817

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110203

R150 Certificate of patent or registration of utility model

Ref document number: 4681046

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees