(57)【要約】非同期のリップルパイプラインは、各々がコントローラ（１８）及びレジスタ（１６）を有する複数の段を有している。コントローラは、リクエスト入力端（２２）及びアクノレッジメント入力端（２４）と共に、レジスタ制御出力端（２１）と、合成リクエスト／アクノレッジメント出力端（２０）とを有する。使用するプロトコルは、段（３０）の合成リクエスト／アクノレッジメント出力端（２０）で出力される単一信号を有し、この単一信号は、次段（３２）への要求と、且つ前段（３４）への肯定応答との双方として機能する。
2009507415.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインにおける或る１つの段と次段との間でデータを転送する方法であって、
前記パイプラインは、データを前記１つの段から前記次段に送信する少なくとも１つのデータ転送ラインと、そのデータ転送ラインのデータ経路が有効データを保持していることを知らせるリクエスト信号を前記１つの段から前記次段に送信するリクエストラインと、前記次段が占有されることを知らせるアクノレッジメント信号を前記次段から前記１つの段に送信するアクノレッジメントラインとを有し、
（ｉ）前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされるか、又は前記リクエスト信号及び前記アクノレッジメント信号がいずれもアサートされることなく、第１の転送条件は、前記少なくとも１つのデータ転送ラインが有効データを保持することとし、第２のデータ転送条件は、前記次段がデータを受信する用意ができているとする、２つのデータ転送条件の双方が満たされるのを待機するステップと、
（ｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がデアサートされた状態で前記各段の間でデータを転送し、次に前記アクノレッジメント信号をアサートするステップと、
（ｉｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がアサートされたら、前記リクエスト信号をデアサートするステップと、
（ｉｖ）前記アクノレッジメント信号がアサートされ、且つ前記リクエスト信号がデアサートされたら、前記２つのデータ転送条件のうちの一方が満たされるのを待機するステップと、
を繰り返すことを含む、データ転送方法。
【請求項２】
データアイテムを転送するために前記ステップ（ｉ）〜（ｉｖ）を繰り返し、前記ステップ（ｉ）の少なくとも一例では、前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされ、且つ、前記ステップ（ｉ）における少なくとも１つの他の例では、前記リクエスト信号及び前記アクノレッジメント信号がいずれもアサートされない、請求項１に記載の方法。
【請求項３】
前記１つの段から前記次段への前記リクエスト信号は、前段にも送信される合成リクエスト／アクノレッジメント信号である、請求項１又は２に記載の方法。
【請求項４】
前記第１及び第２のデータ転送条件の双方が当てはまるときに、前記データ転送ラインからデータを受け入れるように、前記次段におけるラッチレジスタを動作させるために、前記次段にてレジスタ制御信号を生成するステップを更に含み、
前記ステップ（ｉｉｉ）では、前記１つの段は、前記アクノレッジメント信号の受信に応答して、１つ以上のロジックゲートを経て前記アクノレッジメント信号を通過させて、組み合わせのロジックでデアサートしたレジスタ制御信号を直接生成することによって、前記レジスタ制御信号をデアサートする、請求項１、２、又は３のいずれか一項に記載の方法。
【請求項５】
前記データ転送ラインから捕捉したデータが、前記次段におけるラッチレジスタの出力端に現れ／有効となった後に、前記アクノレッジメント信号がアサートされるように、前記次段における前記レジスタ制御信号から、前記次段におけるアクノレッジメント信号を生成するステップを更に含む、請求項４に記載の方法。
【請求項６】
前記各段の間でデータを転送するステップは、前記データが前記各段の間で転送されるときに前記データを処理し、前記方法は、
前記１つの段から前記次段に送信される前記アサートされたリクエスト信号を遅延させて、前記アサートされたリクエスト信号が前記次段に到着する前に処理を行う時間がとれるようにする遅延ステップを更に含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記ステップ（ｉｉｉ）で、前記少なくとも１つのデータ転送ラインに乗せるデータが前記１つの段で入手可能になるときに、前記ステップ（ｉｉｉ）は、前記データを前記データ転送ラインに乗せ、前記ステップ（ｉｖ）を省いて直ちに前記ステップ（ｉ）に渡すステップを含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
或る１つの段と、
次段と、
データを前記１つの段から前記次段に送信する少なくとも１つのデータ転送ラインと、
前記少なくとも１つのデータ転送ラインが有効データを保持していることを知らせるリクエスト信号を前記１つの段から前記次段に送信するリクエストラインと、
前記次段が占有されることを知らせるアクノレッジメント信号を前記次段から前記１つの段に送信するアクノレッジメントラインと、
前記それぞれの段におけるコントローラとを備え、該コントローラは、
（ｉ）前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされるか、又は前記リクエスト信号及び前記アクノレッジメント信号のどちらもアサートされることなく、第１のデータ転送条件は、前記少なくとも１つのデータ転送ラインが有効データを保持することとし、第２のデータ転送条件は、前記次段が空であることとする、２つのデータ転送条件が満たされるのを待機し、
（ｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がデアサートされた状態で、前記１つの段から前記次段へ前記データ転送ラインでデータを下方に転送し、次に前記アクノレッジメント信号をアサートし、
（ｉｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がアサートされたら、前記リクエスト信号をデアサートし、
（ｉｖ）前記アクノレッジメント信号がアサートされ、且つ前記リクエスト信号がデアサートされたら、前記２つのデータ転送条件のうちの一方が満たされるのを待機するように対処すべく構成されているパイプライン。
【請求項９】
前記それぞれの段は、
ラッチレジスタと、
直前の段からのデータアイテムを前記レジスタに受け入れるデータ入力端と、
前記レジスタからのデータアイテムを前記次段に出力するデータ出力端と、
前記次段から、データアイテムが受信されたことを確認するアクノレッジメント信号を受け入れるアクノレッジメント入力端と、
前記前段がデータアイテムを送信する用意ができている旨を知らせるリクエスト信号を前記前段から受け入れるリクエスト入力端と、
前記次段のリクエスト入力端へのリクエスト信号と、前記前段のアクノレッジメント入力端へのアクノレッジメント信号との合成信号を出力して、前記前段からのデータアイテムの受信を肯定応答し、且つ前記次段へのデータアイテムの送信を要求するように構成されている合成リクエスト／アクノレッジ出力端とを有する、請求項８に記載のパイプライン。
【請求項１０】
前記コントローラは、
（ｉ）（ａ）前記リクエスト入力端における前記リクエスト信号がアサートされ、且つ（ｂ）前記合成リクエスト／アクノレッジ出力端における前記合成リクエスト／アクノレッジ信号がデアサートされるという条件が満たされるのを待つことによって、前記２つのデータ転送条件が満たされるのを待機するとともに、前記（ａ）及び（ｂ）の条件が満たされるときに前記前段からデータを前記レジスタに読み出し、
（ｉｉ）データが転送されたときに、前記合成リクエスト／アクノレッジ信号を前記アクノレッジメント信号としてアサートし、
（ｉｉｉ）前記アクノレッジ入力端でアクノレッジ信号を前記次段から受信したときに、前記合成リクエスト／アクノレッジ信号をデアサートするように構成されている、請求項９に記載のパイプライン。
【請求項１１】
前記コントローラは、該コントローラから前記レジスタまでのレジスタ制御ラインに接続され、且つ前記レジスタ制御信号がアサートされたときにデータを受け入れるように前記レジスタを制御するためのレジスタ制御出力端を有し、
前記コントローラは、
前記リクエスト入力端における前記リクエスト信号がアサートされ、且つ前記合成リクエスト／アクノレッジ出力端における前記合成リクエスト／アクノレッジ信号がデアサートされた後に、前記レジスタ制御信号をアサートし、
前記アクノレッジメント入力端で前記次段からアクノレッジメント信号を受信した後に、前記レジスタ制御信号をデアサートするように構成されている、請求項８又は９に記載のパイプライン。
【請求項１２】
前記アクノレッジ入力端に接続される１つの入力端と前記レジスタ制御出力端に直接接続される出力端とを有する少なくとも１つのロジックゲートを備え、該ロジックゲートは、前記アクノレッジメント信号の受信に応答して、１つ以上のロジックゲートを経て前記アクノレッジメント信号を通過させて、デアサートしたレジスタ制御信号を生成することによって、前記レジスタ制御信号をデアサートするように構成される、請求項１１に記載のパイプライン。
【請求項１３】
前記コントローラは、
セット及びリセット状態を有する第１ラッチと、
セット及びリセット状態を有する第２ラッチとを有し、
前記コントローラは、
前記リクエスト入力端における前記リクエスト信号がアサートされ、且つ前記合成リクエスト／アクノレッジ出力端における合成リクエスト／アクノレッジメント信号がデアサートされるという条件が当てはまるときに、前記第１ラッチをリセットし、
前記次段から前記アクノレッジ入力端にて受信した前記アクノレッジ信号がアサートされず、且つ前記条件が当てはまるときに、前記第２ラッチをセットし、
前記第２ラッチがセットされ、且つ前記合成リクエスト／アクノレッジ信号がアサートされないときに、前記第１ラッチをセットし、
前記合成リクエスト／アクノレッジ信号がアサートされないときに、前記第２ラッチをリセットするように構成されている、請求項９、１０、１１、又は１２のいずれか一項に記載のパイプライン。
【請求項１４】
前記ロジックゲートは、前記第２ラッチ及び前記アクノレッジ入力端に接続されるＡＮＤ入力端と、前記第１のラッチに接続されるＯＲ入力端と、前記レジスタ制御信号出力端に接続される出力端とを有するＡＮＤＯＲゲートであり、前記ＡＮＤ入力端の双方がアサートされるか、又は前記ＯＲ入力端がアサートされるときに、前記レジスタ制御信号を第１の状態で出力する、請求項１２に従属する請求項１３に記載のパイプライン。
【請求項１５】
前記レジスタ制御出力端に接続される入力端と、前記合成リクエスト／アクノレッジ出力端に接続される出力端とを有するインバータを更に備え、前記インバータは、前記レジスタ制御信号を反転して、前記合成リクエスト／アクノレッジ出力端に供給する、請求項１４に記載のパイプライン。
【請求項１６】
前記第１ラッチは、
前記リクエスト入力端、及びインバータを介して前記合成リクエスト／アクノレッジ出力端に接続される入力端を有し、前記リクエスト入力端がアサートされ、且つ前記合成リクエスト／アクノレッジ出力端がアサートされない場合に、前記第１ラッチをリセットする、第１ラッチのリセット側回路と、
前記合成リクエスト／アクノレッジ出力端、及び前記第２ラッチの反転出力端に接続される入力端を有し、前記合成リクエスト／アクノレッジ出力端がアサートされず、且つ前記第２ラッチがアサートされる場合に、前記第１ラッチをセットする、第１のラッチのセット側回路と、
前記第１ラッチのリセット側回路と前記第１ラッチのセット側回路とがいずれも動作しない場合に、前記第１ラッチの出力値を保持するように構成されている第１ラッチのバスキーパーとを備える、請求項１３、１４、又は１５に記載のパイプライン。
【請求項１７】
前記第２ラッチは、
インバータを介して前記合成リクエスト／アクノレッジ出力端に接続される入力端を有し、前記合成リクエスト／アクノレッジ出力端がアサートされない場合に、前記第２ラッチをリセットする、第２ラッチのリセット側回路と、
前記アクノレッジ入力端、及び前記レジスタ制御信号出力端に接続される入力端を有し、前記アクノレッジ入力信号がアサートされ、且つ前記レジスタ制御信号出力端がアサートされる場合に、前記第２ラッチをセットする、第２ラッチのセット側回路と、
前記第２ラッチのリセット側回路と前記第２ラッチのセット側回路とがいずれも動作しない場合に、前記第２ラッチの出力値を保持するように構成されている、第２ラッチのバスキーパーとを備える、請求項１３、１４、１５又は１６のいずれか一項に記載のパイプライン。
【請求項１８】
前記段から前記次段へのデータ転送ラインが、データを処理する処理ユニットを含み、
前記リクエストラインは、前記段から前記次段に送信されるリクエスト信号を遅延させるように構成されている少なくとも１つの遅延コンポーネントを含む、請求項８〜１７のいずれか一項に記載のパイプライン。
【請求項１９】
前記コントローラは、前記合成リクエスト／アクノレッジ信号をデアサートする前に、少なくとも１つのデータラインに乗せるデータが前記段で入手可能であるか否かを判断し、データが前記段で入手可能である場合に、前記入手可能なデータを前記データラインに乗せ、前記次段が空になるのを待ち、次に前記リクエスト信号をデアサートする必要なく、データを転送するように構成されている、請求項８〜１８のいずれか一項に記載のパイプライン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期のリップルパイプライン（ｒｉｐｐｌｅ ｐｉｐｅｌｉｎｅ）、及びこれを制御する方法に関する。
【背景技術】
【０００２】
パイプラインは、データストリームに対するストレージ、及び頻繁な処理を提供するものであり、リニアパイプラインの基本的な実装を図１に示す。
【０００３】
多数の連続する段１０の各々は、ストレージ１２を備え、データストリームの処理は、プロセッサ１４として概略的に示すように、これらの段間で行うことができる。
【０００４】
このパイプラインが処理を実行しない場合、これは、先入れ先出し（ＦＩＦＯ）メモリデバイスとしても知られている。リニアパイプラインとして実装する場合、このアーキテクチャは、直列に接続される同一の段からなり、ここでの各段は、１ワード分のデータを格納することができる。
【０００５】
パイプラインは、同期及び非同期として知られる、タイミングに関する２つの技法のうちの一方を用いて実装することができる。同期の場合のタイミングは、パイプラインの連続する段間でデータを転送するのにグローバル・クロックを用いる。同期パイプラインでは、入力端から出力端までの伝搬遅延は、Ｎクロックサイクルに等しく、ここに、Ｎは、深さとして知られるパイプラインの段数である。
【０００６】
非同期パイプラインは、グローバル・クロックを持たない。代わりに、データは、ハンドシェイク・シグナリングによって連続する段間を伝搬する。非同期技法の結果として、データ・トークン及びホール（ｈｏｌｅ）は、パイプライン（ＦＩＦＯ）を経て自己計時態様でリップルする。入力から出力へのリップル遅延は、パイプラインの段の数Ｎに比例している。段から段へのリップルする遅延は、クロック期間の大きさよりも１〜２桁小さいので、非同期パイプラインの方が、伝搬遅延を良くすることができる。
【０００７】
非同期パイプラインは、グローバル・クロックなしで、入出力を、異なるクロック速度、及び／又は変化するクロック速度で伝えることができるという利点をも有する。
【０００８】
処理を伴うパイプラインの従来の実装例が、米国特許第６，０６７，１０９号に開示されており、これは、命令パケットを一方向に送信し、そして結果を逆方向に送信する。このロジックは、命令及び結果が隣接する段から決して同時にリリースできないようにすることによって、命令パケット及び結果パケットが互いにバイパスするのを防ぐようにしている。しかしながら、この実装は、比較的複雑である。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、非同期パイプラインの簡単な実装、及びこのようなパイプラインでのデータの転送方法を提供することにある。
【課題を解決するための手段】
【００１０】
第１の態様における、本発明は、パイプラインにおける或る１つの段と次段との間でデータを転送する方法であって、前記パイプラインは、データを前記１つの段から前記次段に送信する少なくとも１つのデータ転送ラインと、そのデータ転送ラインのデータ経路が有効データを保持していることを知らせるリクエスト信号を前記１つの段から前記次段に送信するリクエストラインと、前記次段が占有されることを知らせるアクノレッジメント信号を前記次段から前記１つの段に送信するアクノレッジメントラインとを有し、
（ｉ）前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされるか、又は前記リクエスト信号及び前記アクノレッジメント信号がいずれもアサートされることなく、第１の転送条件は、前記少なくとも１つのデータ転送ラインが有効データを保持することとし、第２のデータ転送条件は、前記次段がデータを受信する用意ができているとする、２つのデータ転送条件の双方が満たされるのを待機するステップと、
（ｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がデアサートされた状態で前記各段の間でデータを転送し、次に前記アクノレッジメント信号をアサートするステップと、
（ｉｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がアサートされたら、前記リクエスト信号をデアサートするステップと、
（ｉｖ）前記アクノレッジメント信号がアサートされ、且つ前記リクエスト信号がデアサートされたら、前記２つのデータ転送条件のうちの一方が満たされるのを待機するステップと、を繰り返すことにある。
【００１１】
当該方法は、データアイテムを転送するために前記ステップ（ｉ）〜（ｉｖ）を繰り返し、前記ステップ（ｉ）の少なくとも一例では、前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされ、且つ、前記ステップ（ｉ）における少なくとも１つの他の例では、前記リクエスト信号及び前記アクノレッジメント信号がいずれもアサートされない。
【００１２】
前記各段でデータを転送するステップは、前記各段で転送されるデータを処理するステップを含むことができる。この場合、本方法は、更に、前記１つの段から前記次段に送信された前記リクエスト信号を遅延させて、前記アサートされたリクエスト信号が前記次段に到着する前に処理を行う時間がとれるようにする、遅延ステップを含むことができる。
【００１３】
本発明の第２の態様によるパイプラインは、
或る１つの段と、
次段と、
データを前記１つの段から前記次段に送信する少なくとも１つのデータ転送ラインと、
前記データ転送ラインが有効データを保持していることを知らせるリクエスト信号を前記１つの段から前記次段に送信するリクエストラインと、
前記次段が占有されることを知らせるアクノレッジメント信号を前記次段から前記１つの段に送信するアクノレッジメントラインと、
前記それぞれの段におけるコントローラとを備え、該コントローラは、
（ｉ）前記リクエスト信号及び前記アクノレッジメント信号の双方がアサートされるか、又は前記リクエスト信号及び前記アクノレッジメント信号のどちらもアサートされることなく、第１のデータ転送条件は、前記少なくとも１つのデータ転送ラインが有効データを保持することとし、第２のデータ転送条件は、前記次段が空であることとする、２つのデータ転送条件が満たされるのを待機し、
（ｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がデアサートされた状態で、前記１つの段から前記次段へ前記データ転送ラインでデータを下方に転送し、次に前記アクノレッジメント信号をアサートし、
（ｉｉｉ）前記リクエスト信号がアサートされ、且つ前記アクノレッジメント信号がアサートされたら、前記リクエスト信号をデアサートし、
（ｉｖ）前記アクノレッジメント信号がアサートされ、且つ前記リクエスト信号がデアサートされたら、前記２つのデータ転送条件のうちの一方が満たされるのを待機するように対処すべく構成されている。
【００１４】
本発明は、高速でロバストなパイプライン、特に、機能性を損なわない、簡素なパイプラインを提供する。この簡素化は、難無く、比較的低コストでの実装を可能にする。
【００１５】
或る段から次段へのデータラインには、データを処理する処理ユニットを設けることができ、前記リクエストラインには、或る段から次段に送信されるリクエスト信号を遅延させるように構成した少なくとも１つの遅延コンポーネントを設けることができる。
【００１６】
本発明の更なる理解のために、以下、図面を参照して単なる例としての実施例を説明する。
【発明を実施するための最良の形態】
【００１７】
図面は、概略であって実寸図示したものでないということに留意する。異なる図面において同一又は同様のコンポーネントは、同一の参照番号を付している。
【００１８】
図２は、リップルするパイプラインＦＩＦＯのブロック図である。段の各々は、ラッチを実装に組み込まれるレジスタ１６で１ワードを保持することができ、コントローラ１８をも有している。以下の説明は、単一段３０と、その次段３２及び前段３４との相互作用とに焦点を当てる。実際のデバイスでは、例えば３〜５０個の可変数の段があり、その最初と最後の段が他のコンポーネントに接続されることは、当業者に明らかである。
【００１９】
各段は、単一のアクノレッジ／リクエスト出力端２０と、２つの制御入力端、即ちリクエスト入力端２２、及びアクノレッジの入力端２４を有する。これらは、コントローラ１８に接続される。更に、コントローラは、レジスタ制御信号“Ｇ”を内部制御ライン１７に沿って当該コントローラからレジスタ１６に供給する、レジスタ制御出力端２１を有する。
【００２０】
データバス２６は、レジスタ１６からのデータを次段３２のレジスタに直接供給する。従って、段３０は、レジスタ１６を間にしてデータ入力端１５とデータ出力端１９とを有し、この例では、データ入力端及びデータ出力端は、データバス２６への物理的な接続端であるにすぎないことに留意するべきであり、各レジスタ１６は、信号を直接次段に供給する。
【００２１】
各対の段は、制御ライン２８を介して接続され、制御ライン２８の一方は、アクノレッジメント信号を後方に送信するアクノレッジメントライン２５であり、制御ライン２８の他方は、リクエスト信号を前方に送信するリクエストライン２３である。アクノレッジ／リクエスト出力端は、リクエストライン２３を介して次段３２のリクエスト入力端２２に接続されるとともに、アクノレッジメントライン２５を介して前段３４のアクノレッジ入力端２４に接続される。同様に、考慮下の段３０のアクノレッジ入力端２４は、次段のアクノレッジ／リクエスト出力端２０に接続されるとともに、リクエスト入力端２２は、前段３４のアクノレッジ／リクエスト出力端２０に接続される。
【００２２】
制御ライン２８に沿って送られる制御信号を、リクエスト（Ｒ）及びアクノレッジ（Ａ）と称する。これらは、ハンドシェイク対を成す。リクエストは、データバスが有効なデータ・トークンを含むときに、次段に送られる。このデータ・トークンを捕捉したときに、アクノレッジメントが逆方向に返送される。アクノレッジ及びリクエストのイベントは、４フェーズハンドシェイクプロトコルに従って、ハンドシェイク制御信号における遷移によって符号化される。
【００２３】
２つのタイプのアクノレッジメントのイベントが存在しており、即ち、データが次段にコピーされて次段が満たされることを知らせるＡにおける立上り遷移と、次段が空であることを意味するＡにおける立下り遷移とがある。
【００２４】
このように、各隣接対の段間で、リクエスト信号及びアクノレッジメント信号が送信される。
【００２５】
前段に返されるアクノレッジメントＡ０、及び次段へのリクエストＲ１は、単一出力信号によって実装することに留意する。
【００２６】
上述した実施例は、単一の合成アクノレッジ／リクエスト出力端２０を有するが、別の例では、段３０に一対の物理的な合成リクエスト出力端及びアクノレッジメント出力端を持たせ、その一方を次段３２に接続するとともに、他方を前段３４に接続するようにするのが都合がよいこともよくあり、この２つの出力端は、コントローラ１８で共通のドライバに接続するようにする。
【００２７】
動作中、多数のフェーズが図３に示すように生じる。この図は、段３０と次段３２との間の信号を示している。第１の波形は、段３０の合成リクエスト／アクノレッジメント出力端２０で送信される信号Ｒを表す。第２のグラフは、当該段のアクノレッジメント入力端２４で受信され、次段の合成リクエスト／アクノレッジメント出力端２０によって送信される信号入力Ａを示している。第３のラインは、いつデータが当該段と次段との間のデータライン上で有効になるかを示し、第４のラインは、いつデータが当該段から次段に転送されるかを示す。後の説明との互換性のために、これらの信号を、それぞれＲ１及びＡ１と称する。
【００２８】
以下、４つのフェーズのシーケンスを詳細に説明する。 
【００２９】
フェーズ１：
データ転送のために、ジョイント条件を満たす必要があり、即ち、（Ａ）データ・トークンを、データバスに与える必要があり、（Ｂ）次段３２のラッチは、トークンを記録することができるように空にする必要がある。
【００３０】
第１のフェーズ１では、チャンネルは、これらの２つの要件の２番目を待っている。従って、この第１のフェーズは、次段が空であるも、前段からのデータバスにトークンがまだ与えられていない場合に生じ得る。この場合の制御信号は、Ａ１＝０，Ｒ１＝０になる。
【００３１】
或いは又、次段がデータを受信する準備ができていなくて、データ・トークンが、前段にある場合には、このフェーズにおける信号は、Ａ１＝１，Ｒ１＝１になる。
【００３２】
フェーズ２：
このフェーズは、データ転送のための条件が真、即ちＲ１＝１、Ａ１＝０のときに開始される。データは、段３０から次段に転送される。このフェーズは、当該段がデータを記録する短時間後に、次段がリクエスト／アクノレッジメント出力端２０における出力信号をＡ１＝１にアサートするときに終了する。この時間までに、レジスタ１６は、前段からデータを格納することになる。
【００３３】
フェーズ３：
このフェーズの間に、Ｒ１＝１、Ａ１＝１となる。当該段によるアクノレッジメント信号Ａ１＝１の受信は、データが捕捉された旨を当該段に知らせる。次に、前段は、そのリクエストをアサートするのを停止し、フェーズ４への移行をもたらす。
【００３４】
フェーズ４：
このフェーズの符号化は、Ｒ１＝０、Ａ１＝１である。この系は、このフェーズで、適用するデータ転送のための２つのジョイント条件のうちの最初の条件を待つ。
【００３５】
フェーズ４が終了できる１つの態様は、次段が空になることであり、この場合、アクノレッジメント信号は、Ａ１＝０にデアサートされ、フェーズ４を終了し、フェーズ１に戻る。この場合、フェーズ１におけるチャンネルは、２つのオプションのうちの最初の方（Ａ１＝０，Ｒ１＝０）になる。
【００３６】
或いは又、フェーズ４は、次段からアクノレッジメントを受信する前に、当該段に、データを再び送信するためのリクエストが与えられるときに（Ａ１＝１，Ｒ１＝１）、終了することができる。これは、フェーズ１に対する２つのケースの２番目に対応する。
【００３７】
フェーズ２は、アクノレッジメントＡ１＝１が次段によって返送されるときに終了し、考慮下の、当該段は、このアクノレッジメントの受信の直後に、その出力リクエストをＲ１＝１にデアサートし、フェーズ４に直接移行し、次のデータアイテムを受け入れ状態にする。
【００３８】
このハンドシェイクプロトコルは、非同期の回路でよく見られるような周知の４フェーズのプロトコルと同じではない。特に、第１のフェーズが、２通りの符号化を有するので相違する。図３には、初めの２つの転送がフェーズ１の第１タイプに対応しているが、最後の転送が第２タイプに対応している、双方のタイプを図示してある。
【００３９】
更に、組み合わせＡ１＝１，Ｒ１＝１は、第１のフェーズと第３のフェーズとの双方で生じうる。
【００４０】
プロトコルは、各段におけるコントローラによって実装される。様々なタイミングの仮説は、正しく実装するのに必要であることに留意する。同期の実装と異なり、タイミングはクロックによって制御されない。特に、データを転送するには、信号が到着する前に、全てのデータが安定しており、且つ有効であることが重要である。
【００４１】
図３に、別のやり方を破線で示す。この別の例では、コントローラが、追加の機能性を有する。コントローラは、フェーズ３でデータが既に段（３０）に用意されているか否かを判断し、データが用意されている場合に、コントローラはそのデータをデータラインに乗せ、且つフェーズ４を経由することなく変更フェーズ１に直接移行する。変更フェーズ１は、フェーズ２におけるデータを転送する前に、次段（３２）が空であることを知らせるアクノレッジメント信号を待つだけである。フェーズ３で、データが未だ用意できていない場合、コントローラは、リクエストをデアサートして、通常通りフェーズ４に移行する。
【００４２】
この別の例ではない本実施例に戻って、各段は、リップルするパイプライン段の制御を実装する有限状態マシン（ＦＳＭ）によって説明することができる。図４は、信号の遷移図（ＳＴＧ）を示し、図５は、信号遷移を実現するための、コントローラ１８の回路実現例を示している。
【００４３】
当該段の入力端と出力端との間のカップリング量を考慮するのが重要である。パイプラインの速度は、このカップリング量を減少させることによって改善することができるが、カップリング量は、パイプラインを機能させるのに十分なものとすることが重要である。
【００４４】
レジスタ制御信号Ｇは、２つの状態、即ち、トランスペアレント状態（Ｇ＝１）及びオパーク（ｏｐａｑｕｅ）状態（Ｇ＝０）を表す。オパーク状態では、データ・トークンを、前段から受信しているが、まだ転送していないので、段３０は、新たなデータを受信するのに利用できない。トランスペアレント状態では、段３０は、データを受信するのに利用可能である。当該段は、トランスペアレント状態ではそのデータ入力端に現れるデータを自動的に受信する。
【００４５】
５つの信号、即ち、２つのハンドシェイク対（Ｒ０，Ａ０及びＲ１，Ａ１）、及びレジスタ制御信号Ｇが制御に必要になると考えることができる。第１のハンドシェイク対（Ｒ０，Ａ０）は、考慮下の、前段３４と段３０との間のリクエスト信号及びアクノレッジメント信号を表し、第２のハンドシェイク対（Ｒ１，Ａ１）は、考慮下の、段３０と次段３２との間のリクエスト信号及びアクノレッジメント信号を表す。
【００４６】
しかしながら、選択したチャンネルプロトコルの故に、信号Ａ０とＲ１を、ただ１つの信号、名づけてＡ０Ｒ１によって実装することができる。次段へのリクエストは、前段へのアクノレッジメントに結合される。これは、各段の設計を簡素化する。
【００４７】
図４に示した信号遷移図（ＳＴＧ）は、当該段のコントローラ１８に必要とされる動作を特定している。この動作は、その入力ポートからデータを取リ出し、そのデータをできるだけ早く、その出力ポートを介してパイプラインにおける次段に転送することを目指し、これによって、各段間のチャンネルが前述した（変更）４フェーズハンドシェイクプロトコルを用いるようにする。
【００４８】
迅速な動作を達成するために、データが到着すると直ちにそのデータを捕捉することができるように、各段のラッチレジスタは、空であるときのトランスペアレント状態（Ｇ＝１）にセットされる。そして、データ・トークンが到着すると、データ経路におけるラッチを、オパーク（保持）モードに切り換える必要がある。
【００４９】
当該段の動作は、入出力チャンネルでのイベントを追跡し続ける２つの内部的な状態変数Ｘ及びＹを含む。
【００５０】
符号化は、以下の通りである。即ち、当該段が空である（データ・トークンを受信する用意がある）場合、変数Ｘはハイになる（Ｘ＋）。本説明では、括弧内の符号は右側の信号遷移図のものであることに留意する。
【００５１】
リクエストを待っている間、リクエスト入力信号は、アサートされない（Ｒ０）。有効データが当該段の入力端に現れることを意味する、リクエストが到着すると（Ｒ０＋）、Ｘはゼロに（Ｘ−）に戻って、信号Ｇをオパーク（Ｇ−）にして、リクエスト／アクノレッジメント（Ａ０Ｒ１＋）を次段及び前段に送信する。
【００５２】
変数Ｙは、次段が空であるとき、即ち次段へトークンが転送される際に、ハイにセットされる（Ｙ＋）。次段からのアクノレッジメント（Ａ１＋）によって知らされて、トークンの転送が完了すると、Ｇはセットされ（Ｇ＋）、リクエスト／アクノレッジメントはリセットされ（Ａ０Ｒ１−）、Ｘはセットされ（Ｘ＋）、Ｙはリセットされる（Ｙ−）。このＸがアサートされる状態（Ｘ＋）では、ＦＳＭは、リクエストが前段から到着するときに（Ｒ０＋）、再びトークンを捕捉する状態にある。
【００５３】
図４のＳＴＧを実装する回路を、図５に示してある。この回路は、２つの入力端、即ちリクエスト入力端２２及びアクノレッジ入力端２４と、２つの出力端、即ち合成リクエスト／アクノレッジ出力端２０及びレジスタ制御出力端２１とを有する。
【００５４】
回路の中央には、変数Ｘ及びＹと入力Ａ１に対応する信号を合成するＡＮＤＯＲゲート５０がある。図示するように、本実施例では、ＡＮＤＯＲゲート５０は、インバータが後続するＮＯＴ ＡＮＤＯＲゲートによって実装される。
【００５５】
変数／信号Ｘ及びＹは、トランジスタグループ５６，５８のセット／リセット状態素子によって生成される。これらのグループにおいて、Ｐ型の枝路は、変数をセットし、Ｎ型の枝路は、変数をリセットする。Ｐ枝路もＮ枝路もアクティブでない場合、“バスキーパー（ｂｕｓ ｋｅｅｐｅｒ）”は、信号を安定に保持する。
【００５６】
第１のバスキーパー５３は、Ｘ−トランジスタグループ５６によって変えられない限り、入力／出力端子６０の状態を一定に保持する。入力／出力端子６０における信号を、Ｘ信号と称する。Ｘ−トランジスタグループ５６と組み合わせる第１のバスキーパー５３は、第１の（Ｘ）ラッチ５３，５６を構成し、以下、その状態を、Ｘにラベル化と称する。
【００５７】
同様に、第２のバスキーパー５４は、入力／出力端子６２を有し、この端子の信号をＹ信号と称する。これもまた、Ｙ−トランジスタグループ５８の動作によって変えられない限り、一定に保たれる。第２のバスキーパーは、Ｘ−トランジスタグループ５６におけるゲートの１つを制御するように接続された反転出力端６４も有する。第２のバスキーパー５４、及びＹ−トランジスタグループ５８は、第２の（Ｙ）ラッチ５４，５８を構成し、以下、その状態を、Ｙと称する。
【００５８】
ＡＮＤＯＲゲート５０は、アクノレッジ入力端２４及びＹラッチからの信号でＡＮＤ演算し、次にその結果を、Ｘラッチからの信号とで否定論理輪演算してから、反転させる。従って、中央のＡＮＤＯＲゲート５０（直列に図示したインバータを含む）の出力は、信号（（Ａ１ ＡＮＤ Ｙ）ＯＲ Ｘ）に相当する。この出力は、レジスタ制御信号Ｇを生成するために、レジスタ制御出力端２１に直接供給される。
【００５９】
従って、アクノレッジメント信号をアクノレッジメント入力端２４で受信するときのレジスタ制御出力端２１における出力は、ラッチのＸ及びＹによって表される内部状態の変数を変える必要なく、ゲート５０の組み合わせのロジックによって直接変えられる。これは、レジスタ制御信号Ｇを極めて迅速にデアサートさせる。本発明者は、このことが、以下、更に詳細に説明するように、パイプラインの動作を速めるのに重要であることに気付いた。
【００６０】
インバータ６６は、レジスタ制御出力端２１に接続される入力端と、合成リクエスト／アクノレッジ信号出力端２０に接続される出力端とを有し、信号Ｇを反転して出力端２０における合成リクエスト／アクノレッジ信号を生成する。
【００６１】
ラッチの回路及び動作は、以下の通りである。
【００６２】
Ｘ−トランジスタグループ５６のＮ枝路は、直列に接続された一対のＮ型トランジスタ７０，７２を含む。これらのトランジスタの一方は、インバータ８４を介して、リクエスト／アクノレッジ信号の出力端２０に接続されるベースを有し、これらのトランジスタの他方は、リクエスト入力端２２に直接接続されるベースを有する。このＮ枝路は、リクエストがアサートされ、且つ合成リクエスト／アクノレッジ信号がアサートされない場合に、Ｘ−バスキーパー５３のＸ信号をリセットする。
【００６３】
同様に、Ｘ−トランジスタグループ５６のＰ枝路は、一対のトランジスタ７４，７６を含む。これらのトランジスタの一方は、リクエスト／アクノレッジ信号の出力端２０に接続されるベースを有し、これらのトランジスタの他方は、Ｙ−バスキーパー５４の反転出力端６４に接続されるベースを有する。これらのトランジスタはＰ型なので、Ｎ枝路におけるＮ型トランジスタとは逆の状態にスイッチオンされる。即ち、Ｐ型トランジスタの入力がローの場合、従って、トランジスタ７４，７６は、Ｙ信号がアサートされ、且つ合成リクエスト／アクノレッジ信号がアサートされない場合に、Ｘ−バスキーパー５３のＸ信号をセットする。
【００６４】
Ｙ−トランジスタグループ５８も、同様に動作する。Ｎ枝路（リセット側）は、ベースがインバータ８４に接続された１個のトランジスタ７８のみを含み、従って、Ｎ枝路は、合成リクエスト／アクノレッジ信号がアサートされていない場合に、Ｙ−バスキーパー５４のＹ信号をリセットする。
【００６５】
Ｐ枝路（セット側）は、一対のトランジスタ８０，８２を含み、これらのトランジスタの一方は、アクノレッジ入力端２４に接続されるベースを有し、これらのトランジスタの他方は、レジスタ制御出力端２１に接続されるベースを有し、トランジスタ８０，８２は、レジスタ制御出力が、アクノレッジ入力と一緒にアサートされない場合に、Ｙ信号をセットする。
【００６６】
使用中に、パイプラインに現れるトークンは、パイプラインに書き込まれる全てのワードが既存のワードのために、もうこれ以上進むことができなくなるまで、パイプラインに沿って自動的にリップルする。従って、全てのトークンは、パイプラインの出力側に集まる。パイプラインの出力端から１ワードを読み出すことは、空の箇所について書き込み側の方向へのリップリングを生じさせる。従って、満たされたＦＩＦＯの場合、パイプラインにおける全てのワードは、或る位置を出力側の方向に効果的にシフトする。
【００６７】
図６は、４つのデータ・トークン転送の場合における（内部）信号の波形を示している。 左側の状況は、空のＦＩＦＯに対応しており、右側は、満たされたＦＩＦＯに対応している。以下、空のＦＩＦＯ及び満たされたＦＩＦＯにおけるイベントの順を、それぞれ更に詳細に説明する。各波形には、当該段によって読み出されるデータ（入力端に存在するデータ）を表す信号Ｄ、及び出力バス２６に現れるデータを表す信号Ｑと一緒に、上述したように表している。
【００６８】
図３と異なり、図６は、様々なゲート及びインバータの有限の応答時間によって引き起こされる遅延を考慮していることに留意する。提案した実施例は、レジスタ１６が信号を記録して送信するのを許容するのに十分な遅延をもたらす。例えば、データを受信しているときのフェーズ２の開始時に、回路は、まずラッチ５３，５６における変数Ｘを変化させ、次に、ＡＮＤＯＲゲート５０を介してＧを変化させ、次に、インバータ６６を介して、合成の出力信号Ａ０Ｒ１を自動的にアサートして、データが受信された旨を指示する。これらのステップで導入される遅延は、レジスタが、それに与えられたデータを格納するのに十分であるので、合成の出力信号Ａ０Ｒ１は、実際上、データが実際にレジスタにある旨の特定のチェックをすることなく、生成される。
【００６９】
まず、空のパイプラインの場合を考慮する。初めはラッチレジスタ１６が空であるので、レジスタ制御信号は、レジスタ１６を初期状態としてトランスペアレント（Ｇ＝１）になるように制御する。そして、この場合、到着するデータ・トークンは、第１の転送フェーズに示すように当該段を直接通過する。このデータが出力端に現れた後には、レジスタ制御信号Ｇが変化して、レジスタをオパークにし（Ｇ＝０）、アクノレッジメントが前段に送信されるとともに、リクエストが次段に送信される（Ａ０Ｒ１＝１）。
【００７０】
次段がデータを受け入れたると、次段はアクノレッジメントを返送する（Ａ１＝１）。結果として、レジスタ制御信号Ｇは、再びトランスペアレントにセットされ、リクエスト／アクノレッジメントが、デアサートされる（Ａ０Ｒ１＝０）。Ｘは、データが当該段に入った後にデアサートされ、データが次段に転送されたときに、アサートされることに留意する。更に、Ｙは、次段がリクエストされた後にアサートされて、Ｘがアサートされたときに、デアサートされる。結論付けると、制御経路におけるリクエスト・ツー・リクエストの遅延は、トレース：Ｒ０＋→Ｘ−→Ｇ−→Ａ０Ｒ１＋で与えられる。
【００７１】
ＦＩＦＯ段がデータを含む場合、当該段のレジスタは、保持モードとして機能するオパークモード（Ｇ＝０）になる。
【００７２】
ここで、パイプラインが満たされている場合、即ちＦＩＦＯの全ての段がデータを含む場合のイベントのシーケンスについて更に説明する。この場合、パイプラインの終端から１ワードを読み出すと、空の位置が後方から前方にリップルする。図６における右手側の波形は、この状況に対応している。
【００７３】
このトレースは、次段における空の位置を示すＡ１における負の状態遷移から始まる。結果として、Ｙがアサートされる。Ａ０Ｒ１は、既にアサートされていたので、次段へのデータ転送は、直ちに始まる。この転送は、Ａ１がハイレベルに変化するときに終了している。Ａ１の正の遷移は、Ｙがアサートされているので、Ｇのレベルを立上げる。従って、当該段は、前段からのデータ（もしあれば）をコピーし始める。この転送フェーズの間、Ａ０Ｒ１は、ローになる。コピーフェーズは、所定時間経過後に停止する。組合せの経路Ｇ＋→Ａ０Ｒ１−→Ｙ−→Ｇ−は、この状況における転送の持続時間を決定する。次にＡ０Ｒ１は、ハイレベルになり、これは、次段へのリクエストと前段へのアクノレッジメントを意味する。 結果として、新たなデータが当該段の入力端に提供されることになる（Ｒ０−→Ｒ０＋）。
【００７４】
Ａ０Ｒ１−→Ｙ−の間の短期間に、Ｘラッチのセット枝路及びリセット枝路の双方が、同時にアクティブになることに留意する。これは、次段のアクノレッジメントが到着するときには、有効データが既に存在しているからである（Ｒ０＝１）。その結果、変数Ｘは、アサートされ、直ちにデアサートされる。
【００７５】
結論として、逆方向におけるアクノレッジ・ツー・アクノレッジの遅延は、経路：Ａ１＋→Ｇ＋→Ｇ−→Ａ０Ｒ１−→Ｙ−→Ｇ−→Ａ０Ｒ１＋で与えられる。
【００７６】
ＦＩＦＯを適切に作動させるには、制御経路とデータ経路との間の遅延を適切に整合させる必要がある。幸いにも、これは、例えば、トランジスタを最小のビット数で正しくサイジングするだけで済む。この場合、幅を大きくしたり（ワードあたりのビット数を多くしたり）又は深さを異ならせたり（ワードにおける）することによっても同様に機能的に補正する。
【００７７】
遅延を整合させるには、２つのリップル現象が重要になる。第１のリップル現象は、空のＦＩＦＯを経るデータの前方伝搬であり、第２のリップル現象は、（部分的に）満たされたＦＩＦＯを介する空の箇所の後方伝搬である。
【００７８】
前者（空）の状況では、データ経路におけるラッチを経るデータ・ビットの伝搬速度をリクエストイベントの段から段への伝搬速度よりも速くする必要がある。 この規制された遅延は、（書き込み側のインターフェースから開始する）任意の数の段を経る伝搬に当てはまる。制御経路におけるリクエストイベントの段から段への伝搬速度は、遷移：Ｒ０＋→Ｘ−→Ｇ−→Ａ０Ｒ１＋で与えられる。データ経路における遅延は、ラッチがトランスペアレントであるときに、ＤからＱへのラッチを介する伝搬遅延で与えられる。 （当然に遷移の方向を考慮して）リクエスト経路における追加の遅延を加えることは、マージンの量を増大させる。
【００７９】
ホールの後方伝搬の場合には、Ｇ信号のパルス幅を、十分に広くする必要がある。このパルスの間、データ経路のラッチは、新たなデータを捕捉することができるようにする必要がある。よりロバストにするために、Ｇ信号の負縁に応答し得るコントローラのゲート、即ちゲート８４、特にＡ０Ｎの立ち上がり縁を駆動するのに関与するトランジスタをダウンサイジングすることによって、このパルスの幅を延ばすことができる。関連する信号遷移は、Ｇ＋→Ａ０Ｒ１−→Ｙ−→Ｇ−である。
【００８０】
適切な動作のために、他の２つのタイミング規制を実装する必要がある。
【００８１】
第１の規制は、アクノレッジメント後のリクエストの即時クリアランスに関連する。 このプロトコルによれば、リクエストは、アクノレッジメントを受信した直後にデアサートしなければならない。そうでなければ、次に、コントローラは、そのリクエストが前のものであるにも関らず、新しいリクエストとして解釈してしまう。この問題は、特に、空のＦＩＦＯで起こりうる。なぜなら、アクノレッジメント（肯定応答）されたトークンは、直ちに次段に伝搬され、これは、当該段が直ちに新たなトークンを受け入れる用意をすることになるからである。このタイミング規制のマージンを検証するために、空のＦＩＦＯの場合におけるリクエストＲ０−とＡ０Ｎ＋との間の遅延を、十分に大きくする必要がある。
【００８２】
第２のタイミング規制は、Ｙのアサーションに関連する。変数Ｙは、Ａ１及びＧの双方がローであり、Ａ０Ｒ１がハイのときにセットされる。（リクエストＡ０Ｒ１＋に応答して）信号Ａ１がハイになる時点までに、Ｙをセットする必要がある。そこで、空のＦＩＦＯで最も重要となる、Ｙ＋とＡ１＋との間の遅延を、十分に肯定的なものとする必要がある。そうでなければ、コントローラは、（アクノレッジメントを知らせる）Ａ１の立ち上がり縁に反応せず、デッドロック状況をもたらすことになる。
【００８３】
第１及び第２のタイミング規制の双方は、トランジスタサイズを適切に選択することで達成することができる。
【００８４】
図６から、制御が特定のシーケンスで動作することが分かる。また、ラッチレジスタ１６からコントローラまで制御信号がないことも分かり、即ち、ラッチレジスタは、適切な条件が与えられたとき（Ｇがロー及びＲ０がハイ）、データを受信することになる。
【００８５】
特に、多数のタイミング規制は、実装によって達成される。
【００８６】
先ず第１に、サイクルの開始時には、データを捕捉する前にデータラッチを閉成させる必要がある。これには、データ転送を開始する第２の条件が満たされるとき（Ｒ０＝１，Ａ１＝０）とＧがデアサートされるときとの間に所定の遅延をもたらす必要がある。第２に、当該段へデータ転送を開始するとき（Ｒ０＝１，Ａ１＝０）と、次段へのリクエストをアサートするとき（Ａ０Ｒ１＝１）との間の遅延は、データラッチにとってデータを次のデータラインにアサートするのに十分とする必要がある。第３に、実装作業にとって、Ｙは、アクノレッジメントを次段から受信する（Ａ１＝１）前に、セットする必要がある。第４に、Ｒ０は、データ・トークンが順送りされ、当該段が空になる前に、デアサートしておく必要がある。
【００８７】
Ａ０Ｒ１＝１は、Ｇが既にデアサートされている状態までアサートされないという設計の故に、データのレーススルー（ｒａｃｅ ｔｈｒｏｕｇｈ）は、本来可能でないことに留意する。
【００８８】
これらのタイミング規制は、実装によって適えられ、正しく動作させることができる。
【００８９】
上述した実装によれば、現行の解決策よりも利点を有する。即ち、極めて高速でありながら、まだロバストである。後者は、製造時の歩留まりに重要である。非同期のパイプラインの分野では、多くの解決策が過去に提示されている。これらの解決策の各々は、産業上での適用として不十分であると判明した。ここに提示する解決策は、ロバストで、且つ簡素であり、他の既知の解決策よりも高速に動作させることができる。特に、リップルするＦＩＦＯの最も重要な遅延パラメータである、後方伝搬を高速にすることができる。なぜなら、次段からのアクノレッジメントの受信（Ａ１＋）と、オパークからトランスペアレントモードへのラッチレジスタの変化（Ｇ＋）との間の遅延が、１つの組み合わせゲート遅延（これは、状態変数の変更を必要としない）のみであるためである。
【００９０】
上述したようなＦＩＦＯパイプラインには多くの応用分野がある。まず、パイプラインを、ｇｌｏｂａｌｌｙ ａｓｙｎｃｈｒｏｎｏｕｓ ｌｏｃａｌｌｙ ｓｙｎｃｈｒｏｎｏｕｓ （ＧＡＬＳ）システムの基本的な構築ブロックとしてチップ上に用いることができる。このようなシステムでは、本実施例によるＦＩＦＯパイプラインは、チップ上の異なる領域を異なるクロック信号でリンクすることができる。別の用途として、チップ上の多周波同期システムを跨るクロックドメイン用に用いることができる。パイプラインを、単にストリーミングデータを格納するのに用いることもできる。
【００９１】
上述したような段の説明から、複数段を有するパイプラインを構成することができることは当業者に明らかである。最初と最後の段は、当業者に知られるように、適切な入出力をもたらすように、わずかな変更が必要となるであろう。
【００９２】
上記の説明は、処理を要しない空のパイプラインに関する。しかしながら、本発明は、処理がパイプライン上で行われる場合にも適用可能である。
【００９３】
図７は、処理ユニット１００を有する一対の段３０，３２を図示しており、これらの段の間にデータ経路がある。この処理のための時間をとれるようにするために、リクエスト信号を遅延させる複数の遅延段１０２がリクエストラインに設けられる。遅延段の各々は、一方の入力端にインバータを有するＮＯＲゲートを有し、該入力端における前段からのリクエスト信号と、他方の入力端におけるアクノレッジメントラインからの信号とを扱う。各段の出力端は、次段のリクエスト入力端に接続される。ＮＯＲゲートは、段３０から次段３２に伝わるリクエスト信号Ｒを遅らせる一方で、アクノレッジメント信号が返送されると迅速にリクエストをスイッチオフすることを意図している。このように、リクエスト信号は、データが処理されて次段で入手可能になるまで、次段ではアサートされない。実際のゲート数は、処理ユニットの組合せの遅延に依存する。遅延のゲートを介した伝搬時間は、処理ユニットを経る信号の伝搬遅延よりも大きくする必要がある。
【００９４】
図８は、処理が別個のパイプライン段１１０，１１２からの２つのオペランドを扱う処理を示す。データは、処理ユニット１２２で組み合わされて、宛先のパイプライン段１２４に伝えられる。
【００９５】
ハンドシェイクに対処するために、パイプライン段１１０のリクエスト出力端を、遅延ライン１１４を経てＡＮＤゲート１２０に接続する。遅延ライン１１４は、図７の構成のように遅延段１０２で構成する。同様に、段１１２のリクエスト出力端は、別個の遅延ライン１１６を経てＡＮＤゲート１２０に通され、ＡＮＤゲート１２０は、双方の段１１０，１１２からのリクエストを組み合わせて、このリクエスト信号を宛先の段１２４に伝える。従って、リクエスト信号が双方の段１１０，１１２でアサートされた後に、リクエスト信号を宛先の段１２４で遅延してアサートさせて、処理ユニット１２２がデータを処理する時間をとれるようにする。
【００９６】
アクノレッジメント信号ライン２５は、宛先の段１２４と段１１０，１１２との間に直接設けられる。上述した実施例に対する変更が可能であることは当業者に明らかである。本発明は、任意の方法で適切に実装することができ、特に、集積回路の一部として実装することができる。
【００９７】
上記の信号は、“１”及び“０”の信号レベルに付与される特定の意味で説明した。異なる電圧を異なる意味で付与することができることは当業者に明らかであり、例えば、信号ラインのいずれか又は全ての意味を逆にすることもできる。従って、例えば、別の例では、アクノレッジメント信号を“１”の信号でアサートする代わりに、“０”の信号でアサートすることもできる。
【図面の簡単な説明】
【００９８】
【図１】パイプラインを概略の態様で示す図である。
【図２】本発明の第１の実施例の概略を示す図である。
【図３】第１の実施例の動作タイミング図である。
【図４】第１の実施例の動作の信号遷移図である。
【図５】第１の実施例の或る段における制御機能を実現する回路を示す図である。
【図６】本発明による方法の動作時の、図５の回路内の様々なポイントでの波形を示す図である。
【図７】データ転送の処理がパイプラインで行われる本発明の第２の実施例を示す図である。
【図８】２つ以上の段からの入力を扱う、データ転送の処理がパイプラインで行われる本発明の第３の実施例を示す図である。
【図１】
2009507415.tif 000003
【図２】
2009507415.tif 000004
【図３】
2009507415.tif 000005
【図４】
2009507415.tif 000006
【図５】
2009507415.tif 000007
【図６】
2009507415.tif 000008
【図７】
2009507415.tif 000009
【図８】
2009507415.tif 000010
【国際調査報告】
2009507415.tif 000011
2009507415.tif 000012
2009507415.tif 000013
2009507415.tif 000014