(57)【要約】      （修正有）【課題】少ない待ち時間と高いスループットを有するＦＩＦＯ回路を提供する。【解決手段】ＦＩＦＯ回路１００は、送り側時間領域にしたがって動作するように構成されたプットインタフェース１０と、受け側時間領域にしたがって動作するように構成されたゲットインタフェース２０とを含む。ＦＩＦＯ回路１００は、レジスタと、セルの状態を示す状態コントローラとを有するセル１７０のアレイを含む。各々のセル１７０は、プットトークン通過回路およびプットコントローラ回路１７６を含む、送り側時間領域にしたがって動作するように構成されたプット構成要素部分も有する。各々のセル１７０は、ゲットトークン通過回路およびゲットコントローラ回路１７８を含む、受け側時間領域にしたがって動作するように構成されたゲット構成要素部分を有する。【選択図】図６
2011227919.tif 000002
【特許請求の範囲】
【請求項１】
第１クロック信号によって制御される送り側サブシステムから、第２クロック信号によって制御される受け側サブシステムへのデータ項目の伝送を調和させる回路において、前記データ項目の伝送が前記送り側サブシステムと前記受け側サブシステムとの間の遅延を受け、該回路が、
前記送り側サブシステムに取り付けられ、プットデータバスにおける前記データ項目を転送し、第１動作プロトコルを有するリレー局の第１チェーンと、
前記受け側サブシステムに取り付けられ、ゲットデータバスにおける前記データ項目を受け、第２動作プロトコルを有するリレー局の第２チェーンと、
前記第１クロック信号および第２クロック信号を受け、前記データ項目を前記リレー局の第１チェーンから前記リレー局の第２チェーンへ、前記リレー局の第１チェーンの動作プロトコルと前記リレー局の第２チェーンのプロトコルとにしたがって伝送する混合クロックリレー局と、を含み、
前記混合クロックリレー局は、
セルのアレイと、
前記セルのアレイにおける予め決められた数より少ない連続的なセルが空状態である場合に示される前記第１クロック信号と同期したフル信号を供給するフル検出器と、
フル信号が示されない場合、前記第１クロック信号の各々のクロックサイクルにおいてデータ項目をエンキューすることができるように構成されたプットコントローラと、
予め決められた数より少ない連続的なセルがフル状態である場合に示される前記第２クロック信号と同期した空制御信号を供給する空検出器と、
前記混合クロック局に接続された前記リレー局の第２チェーンのリレー局から停止信号を受けるように構成され、前記空信号が示されず、前記停止信号が示されない場合、前記第２クロック信号の各々のクロックサイクルにおいてデータ項目のデキューができるように構成されたゲットコントローラとを具えることを特徴とする回路。
【請求項２】
非同期送り側サブシステムからクロック信号によって制御された同期受け側サブシステムへのデータ項目の伝送を調和させる回路において、前記データ項目の伝送が、前記送り側サブシステムと受け側サブシステムとの間の遅延を受け、該回路が、
前記送り側サブシステムに取り付けられ、プットデータバスにおけるデータ項目を転送し、非同期動作プロトコルを有するリレー局の第１チェーンと、
前記受け側サブシステムに取り付けられ、ゲットデータバスにおけるデータ項目を受け、同期動作プロトコルを有するリレー局の第２チェーンと、
前記クロック信号を受け、前記データ項目を前記リレー局の第１チェーンから前記リレー局の第２チェーンへ、前記リレー局の第１チェーンの非同期プロトコルと前記リレー局の第２チェーンの同期プロトコルとにしたがって伝送する混合クロックリレー局とを具え、前記混合クロックリレー局が、
セルのアレイと、
予め決められた数より少ない連続的なセルがフル状態である場合に示される、前記第２クロック信号と同期した空制御信号を発生する空検出器と、
該混合クロックリレー局に接続された前記リレー局の第２チェーンのリレー局から停止信号を受けるように構成され、前記空信号が示されず、前記停止信号が示されない場合、前記第２クロック信号の各々のクロックサイクルにおいて、データ項目のデキューを可能にするように構成されたゲットコントローラとを具えることを特徴とする回路。
【請求項３】
クロック信号によって制御される同期送り側サブシステムから非同期受け側サブシステムへのデータ項目の伝送を調和させる回路において、前記データ項目の伝送が前記送り側サブシステムと前記受け側サブシステムとの間の遅延を受け、該回路が、
前記送り側サブシステムに取り付けられ、前記データ項目をプットデータバスに伝送し、同期動作プロトコルを有し、有効信号を供給するリレー局の第１チェーンと、
前記受け側サブシステムに取り付けられ、ゲットデータバスにおいて前記データ項目を受け、非同期動作プロトコルを有するリレー局の第２チェーンと、
前記クロック信号を受け、前記データ項目を前記リレー局の第１チェーンから前記リレー局の第２チェーンへ、前記リレー局の第１チェーンの同期動作プロトコルと前記リレー局の第２チェーンの非同期動作プロトコルとにしたがって伝送するリレー局とを具え、前記リレー局が、
セルのアレイと、
前記セルのアレイにおける予め決められた数より少ない連続的なセルが空状態である場合に示される前記第１クロック信号と同期したフル信号を発生するフル検出器と、
フル信号が示されず、前記有効信号が示される場合、前記第１クロック信号の各々のクロックサイクルにおいてデータ項目のエンキューを可能にするように構成されたプットコントローラとを具えることを特徴とする回路。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、全体的な参照によってここに含まれる２０００年６月９日に出願された“混合クロックシステム用少待ち時間ＦＩＦＯ”という表題の米国仮特許出願番号６０／２１０６４２に対して優先権を請求する。
【０００２】
本発明は、ＦＩＦＯ回路に関し、より特には、異なった速度において差動するサブシステムを調和させ、きわめて長い相互接続遅延を有するサブシステム間を調和させる、少待ち時間ＦＩＦＯ設計に関する。
【背景技術】
【０００３】
ＶＬＳＩにおける傾向は、多くのクロック領域を含む“チップ上システム”の方にますます向かっている。興味深い問題は、これらの領域を強固に調和させることである。いくつかの適切な解決法、特に、確実な少ない待ち時間の通信を提供する解決法がある。
【０００４】
チップ上システムの設計において、２つの基本的な挑戦がある。第１の挑戦は、異なったタイミング仮定の下で動作するシステムに関する。これらのタイミング仮定は、異なったクロック速度と、同期および非同期環境の双方とを含む。第２の挑戦は、システム間の通信における長い遅延を有する設計に関する。
【０００５】
多数のＦＩＦＯ回路および構成要素が、サブシステム間のタイミングずれを処理するために開発された。いくつかの設計は、単一クロックシステムを処理することに限定される。これらのアプローチは、クロックスキュー、ドリフトおよびジッタを処理するために提案された（Ｒ．コル他、“多同期システムに関する適応性同期”、１９９８年１０月、コンピュータ設計におけるＩＥＥＥ国際会議（ＩＣＣＤ’９８）、１８８〜１８９ページと、Ｍ．グリーンストリート、“ＳＴＡＲＩチップの実装”、１９９５年、コンピュータ設計におけるＩＥＥＥ国際会議（ＩＣＣＤ）会報、３８〜４３ページ）。長い相互接続遅延を処理するために、“待ち時間無感応プロトコル”が提案されたが（Ｌ．キャロニ他、“構成待ち時間無感応設計による補正に関する方法論”、ＩＣＣＡＤ、１９９９年）、これらの解決法は、単一クロック領域に限定される。
【０００６】
混合タイミング領域を処理するいくつかの設計も提案されている。設計アプローチの１つのカテゴリは、データ項目および／または制御信号を、受け側によって、そのクロックと調和させることなく同期することを試みる。特に、セイゾビックは、非同期環境を同期環境と“同期化ＦＩＦＯ”によって強固に調和させる。（Ｊ．セイゾビック、“パイプライン同期化”、１９９４年１１月、非同期回路およびシステムにおける高度な研究における国際シンポジウム会報、８７〜９６ページ）。しかしながら、この設計の待ち時間は、ＦＩＦＯ段の数に比例し、その実装は、高価な同期装置を含む。さらに、彼の設計は、送り側がデータ項目を一定のレートで発生することを必要とする。
【０００７】
他の設計は、混合クロックシステムの強固な調和を、受け側のクロックを一時的に変更することによって達成する。同期化失敗を、受け側の局所クロックを休止または引き伸ばすことによって回避する。各々の通信する同期システムを非同期ロジックで包み、このロジックは、他のシステムと通信し、クロックを調節する。このアプローチは、局所システムのクロックを変化させ、再始動するこれらに待ち時間ペナルティを導入することができる。
【０００８】
ジェリージェックス他の米国特許第５５９８１１３号明細書は、混合クロックＦＩＦＯ回路を記載している。しかしながら、この米国特許明細書におけるＦＩＦＯ回路は、同期化の実現において重大なより大きいオーバヘッドを有する。例えば、この設計は、セルごとに２つの同期装置を有する。
【０００９】
したがって、少ない待ち時間と高いスループットを有し、混合された同期／非同期環境において動作することができるＦＩＦＯ回路に対する必要性が当該技術分野において存在する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、少ない待ち時間と高いスループットを有するＦＩＦＯ回路を提供することである。
【００１１】
本発明の他の目的は、混合された同期／非同期環境において有用なＦＩＦＯ回路を提供することである。
【００１２】
本発明のさらに他の目的は、長い遅延および混合された同期／非同期環境との接続におけるリレー局として使用することができるＦＩＦＯ回路を提供することである。
【００１３】
本発明の依然として他の目的は、特定の動作プロトコル、すなわち、同期または非同期における使用に対して構成され、他の構成要素と関連して、これらの他の構成要素の動作プロトコルにかかわらず使用することができるＦＩＦＯ回路構成要素を提供することである。
【課題を解決するための手段】
【００１４】
本発明のこれらおよび他の目的は、ここにおける開示に関して明らかになり、第１動作プロトコルの下で動作する送り側サブシステムと、第２動作プロトコルの下で動作する受け側サブシステムとの間のデータ項目の伝送を調和させるＦＩＦＯ回路によって成し遂げられる。
【００１５】
プットインタフェースを、前記第１動作プロトコルに従って動作するように構成し、このプットインタフェースは、前記送り側サブシステムからのデータ項目を伝送するプットデータバスと、前記送り側サブシステムからのデータ項目を受けると共に前記プットデータバスからのデータ項目をエンキューするプットデータ要求入力部とを具える。ゲットインタフェースを、第２時間領域に従って動作するように構成し、このゲットインタフェースは、前記データ項目を前記受け側サブシステムに伝送するゲットデータバスと、前記受け側サブシステムからのゲット要求を受け、前記ゲットデータバスへのデータ項目をデキューするゲットデータ要求入力部とを具える。
【００１６】
セルのアレイを設ける。各セルは、前記データ項目を前記プットデータバスから受けると共に前記データ項目を前記ゲットデータバスに伝送するように構成されたレジスタと、該セルの状態の指示を与える状態コントローラと、前記第１動作プロトコルにしたがって動作するように構成されたプット構成要素と、前記第２動作プロトコルにしたがって動作するように構成されたゲット構成要素とを有する。
【００１７】
前記プット構成要素は、プットトークンを第１隣接セルから受け、前記プットデータバスから受けたデータ項目を前記レジスタに前記プット要求と該セルの状態とに基づいてラッチし、前記プットトークンを第２隣接セルに渡す。前記ゲット構成要素は、前記ゲットトークンを第１隣接セルから受け、前記レジスタからのデータ項目を前記ゲットデータバスに前記ゲット要求とゲットトークンと前記セルの状態とに応じてデキューし、前記ゲットトークンを第２隣接セルに渡す。
【発明の効果】
【００１８】
本発明によれば、上述した目的は満たされ、少ない待ち時間および高いスループットを有するＦＩＦＯ回路に対する当該技術分野における必要性と、混合された同期／非同期環境における動作可能性とは実質上満たされる。本発明の他の特徴と、その特性と、種々の利点とは、添付した図面と、説明的な実施形態の以下の詳細な説明とから明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】本発明による同期プットインタフェースの図式的な図である。
【図２】本発明による同期ゲットインタフェースの図式的な図である。
【図３】本発明による非同期プットインタフェースの図式的な図である。
【図４】本発明による非同期ゲットインタフェースの図式的な図である。
【図５】本発明の第１実施形態による好例のＦＩＦＯ回路の図式的なブロック図である。
【図６】図５に示すＦＩＦＯ回路のより詳細な図式的なブロック図である。
【図７】本発明の第２実施形態による好例のＦＩＦＯ回路の図式的なブロック図である。
【図８】図７に示すＦＩＦＯ回路のより詳細な図式的なブロック図である。
【図９】本発明の第３実施形態による好例のＦＩＦＯ回路の図式的なブロック図である。
【図１０】図９に示すＦＩＦＯ回路のより詳細な図式的なブロック図である。
【図１１】本発明による同期プットプロトコルに関して用いられる好例の信号の時間プロットである。
【図１２】本発明による同期ゲットプロトコルに関して用いられる好例の信号の時間プロットである。
【図１３】本発明による非同期プットプロトコルに関して用いられる好例の信号の時間プロットである。
【図１４】本発明による非同期ゲットプロトコルに関して用いられる好例の信号の時間プロットである。
【図１５】本発明による図５および６のＦＩＦＯ回路の一部を示す拡大した図式的ブロック図である。
【図１６】本発明による図１５に示すＦＩＦＯ回路の一部のより詳細な図式的なブロック図である。
【図１７】本発明による図５および６に示すＦＩＦＯ回路のフル検出器の図式的なブロック図である。
【図１８】本発明による図５および６に示すＦＩＦＯ回路の第１空検出器の図式的なブロック図である。
【図１９】本発明による図５および６に示すＦＩＦＯ回路の第２空検出器の図式的なブロック図である。
【図２０】本発明による図５および６に示すＦＩＦＯ回路の他の部分の図式的なブロック図である。
【図２１】本発明による図５および６に示すＦＩＦＯ回路のさらに他の部分の図式的なブロック図である。
【図２２】本発明による図７および８のＦＩＦＯ回路の一部を示す拡大した図式的なブロック図である。
【図２３】本発明による図２２に示すＦＩＦＯ回路の一部のより詳細な図式的なブロック図である。
【図２４】本発明による図２３に示すＦＩＦＯ回路の一部のバーストモード詳述である。
【図２５】ａは本発明による図２３に示すＦＩＦＯ回路の一部のより詳細な図式的なブロック図であり、ｂは本発明による図２３に示すＦＩＦＯ回路の他の実施形態のより詳細な図式的なブロック図である。
【図２６】本発明による図２３に示すＦＩＦＯ回路の他の部分のより詳細な図式的なブロック図である。
【図２７】本発明による図２３に示すＦＩＦＯ回路の依然として他の部分のより詳細な図式的なブロック図である。
【図２８】本発明による図２３に示すＦＩＦＯ回路の一部のペトリネット詳述である。
【図２９】本発明による図９および１０のＦＩＦＯ回路の一部を示す拡大した図式的なブロック図である。
【図３０】本発明による図２９に示すＦＩＦＯ回路の部分のより詳細な図式的なブロック図である。
【図３１】ａは本発明による図３０に示すＦＩＦＯ回路の一部のより詳細な図式的なブロック図であり、ｂは本発明による図３０に示すＦＩＦＯ回路の一部の他の実施形態のより詳細な図式的なブロック図である。
【図３２】本発明による図３０に示すＦＩＦＯ回路の一部の他の実施形態のより詳細な図式的なブロック図である。
【図３３】本発明による図３０に示すＦＩＦＯ回路の一部のさらに他の実施形態のより詳細な図式的なブロック図である。
【図３４】本発明による図３０に示すＦＩＦＯ回路の一部の依然として他の実施形態のより詳細な図式的なブロック図である。
【図３５】本発明による図３０に示すＦＩＦＯ回路の一部のペトリネット詳述である。
【図３６】先行技術システムの図式的なブロック図である。
【図３７】リレー局を含む先行技術システムの図式的なブロック図である。
【図３８】先行技術リレー局の図式的なブロック図である。
【図３９】本発明によるＦＩＦＯ回路リレー局を示す図式的なブロック図である。
【図４０】本発明による図３９に示すＦＩＦＯ回路リレー局を示すより詳細な図式的なブロック図である。
【図４１】本発明による図４０に示すＦＩＦＯ回路リレー局の一部の詳細な図式的なブロック図である。
【図４２】本発明による図４０に示すＦＩＦＯ回路リレー局の他の部分の詳細な図式的なブロック図である。
【図４３】本発明による他のＦＩＦＯ回路リレー局を示す図式的なブロック図である。
【図４４】本発明による図４３のＦＩＦＯ回路リレー局を示すより詳細な図式的なブロック図である。
【図４５】本発明による図４４に示すＦＩＦＯ回路リレー局を示すより詳細な図式的なブロック図である。
【図４６】本発明による図４５に示すＦＩＦＯ回路リレー局の一部の詳細な図式的なブロック図である。
【図４７】本発明による依然として他のＦＩＦＯ回路リレー局を示す図式的なブロック図である。
【図４８】本発明による図４７のＦＩＦＯ回路リレー局を示すより詳細な図式的なブロック図である。
【図４９】本発明による図４８に示すＦＩＦＯ回路リレー局を示すより詳細な図式的なブロック図である。
【図５０】本発明による図４９に示すＦＩＦＯ回路リレー局の一部の詳細な図式的なブロック図である。
【発明を実施するための形態】
【００２０】
本発明によるＦＩＦＯ回路は、２つのサブシステム、すなわち、データ項目を発生する送り側サブシステムと、データ項目を消費する受け側サブシステムとの間を仲介する。ＦＩＦＯ回路は、同様のセルの環状バッファとして実現され、この環状バッファにおいて、各セルは共通データバスにおける２つのサブシステムと通信する。セルの入力および出力動作は、リングの周囲の２つのトークン、すなわち、データをエンキューする１つと、データをデキューする１つとによって命令される。データ項目は、これらがエンキューされるとリングを回って動かず、したがって、少ない待ち時間に関する機会を与え、データ項目がエンキューされると、すぐ後にデキューすることができる。
【００２１】
各々のＦＩＦＯ回路を、後述するように多数の異なったシステムにおける他のモジュラ構成要素と共に使用することができるモジュラ構成要素に分割する。インタフェース、すなわちＦＩＦＯ回路の部分の組を一緒に結合し、後述する送り側端および受け側端双方における所望のタイミング仮定を満たす完全なＦＩＦＯ回路を得ることができる。ここで使用するように、“時間領域”は、前記サブシステムが同期であるか非同期であるかに関係する。
【００２２】
本発明によれば、各ＦＩＦＯ回路は、２つのインタフェース、すなわち、環境と協働するように設計されたＦＩＦＯ回路の部分を有する。第１に、前記プットインタフェースを、前記送り側サブシステムと通信する前記ＦＩＦＯ回路の一部とする。同期プットインタフェースを図１において示し、非同期プットインタフェースを図３において示す。第２に、前記ゲットインタフェースを、前記受け側サブシステムと通信する前記ＦＩＦＯ回路の一部とする。図２は同期ゲットインタフェースを示し、図４は非同期ゲットインタフェースを示す。環境と調和するＦＩＦＯ回路を、前記送り側サブシステムおよび受け側サブシステムが同期、同期および非同期、または、非同期であっても、示された条件に適切に対応するプットインタフェースおよびゲットインタフェースを取り付けることによって組み立てることができる。
【００２３】
図１−２は、本発明による２つの同期インタフェースを示す。図１において示す同期プットインタフェース１０を、送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）によって制御する。同期プットインタフェース１０に対する２つの入力、前記送り側による要求を通信し、データをエンキューするプット要求信号１４（ｒｅｑ＿ｐｕｔ）と、データ項目に関するバスである送り側データバス１６（ｄａｔａ＿ｐｕｔ）とが存在する。グローバルフル信号１８（ｆｕｌｌ）を、前記ＦＩＦＯ回路がいっぱいである場合にのみ示し、そうでない場合、示さない。
【００２４】
図２は、同期ゲットインタフェース２０を示し、これを受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）によって制御する。データ項目をデキューする前記受け側からの単一の制御入力信号は、ゲット要求信号２４（ｒｅｑ＿ｇｅｔ）である。データを、受け側データバス２６（ｄａｔａ＿ｇｅｔ）に置く。グローバル空信号２８（ｅｍｐｔｙ）を、前記ＦＩＦＯ回路が空の場合にのみ示す。有効データ信号３０（ｖａｌｉｄ＿ｇｅｔ）は、データ項目が有効であることを示す。
【００２５】
図３−４に示す非同期インタフェースは、クロック信号と同期しない。図３は、同期プットインタフェース１０の入力部（図１）と実際的に同様の２個の入力部を有する非同期プットインタフェース４０を示す。第１に、送り側による要求を通信し、データをエンキューするプット要求信号４４（ｐｕｔ＿ｒｅｑ）を供給し、グローバル空信号２８（ｅｍｐｔｙ）を、前記ＦＩＦＯが空の場合にのみ示す。有効データ信号３０（ｖａｌｉｄ＿ｇｅｔ）は、データ項目が有効であることを示す。
【００２６】
図４に示す非同期ゲットインタフェース５０は、ゲット要求信号５４（ｇｅｔ＿ｒｅｑ）および出力データバス５８（ｇｅｔ＿ｄａｔａ）を有する。前記同期対応部と異なり、このインタフェースは、データ有効性信号またはグローバル空信号を持たない。非同期ゲットインタフェース５０はゲット承認信号５５（ｇｅｔ＿ａｃｋ）を供給し、この信号は前記ゲット動作が完了したことを示す。
【００２７】
図１、２、３および４の各々のモジュラインタフェース１０、２０、４０および５０を、本発明によって取り付け、異なった環境間でデータを伝送することができるＦＩＦＯ回路を形成することができる。例えば、同期送り側サブシステムと同期受け側サブシステムとの間を調和させるＦＩＦＯ回路を、好適実施形態ＦＩＦＯ回路１００に関して後述するような“同期−同期”ＦＩＦＯ回路とここでは呼ぶＦＩＦＯ回路を形成するために、同期プットインタフェース１０および同期ゲットインタフェース２０を使用することによって形成することができる。同様に、好適実施形態ＦＩＦＯ回路２００に関してより詳細に後述する“非同期−同期”ＦＩＦＯと呼ばれる、非同期送り側サブシステムと同期受け側サブシステムとの間を調和させるＦＩＦＯ回路は、非同期プットインタフェース４０を同期ゲットインタフェース２０と共に取り入れる。同様に、“同期−非同期”ＦＩＦＯと呼ばれる、同期送り側サブシステムと非同期受け側サブシステムとの間を調和させるために、好適実施形態ＦＩＦＯ回路３００に関して後述するように、同期プットインタフェース１０および非同期ゲットインタフェース５０を使用することができる。
【００２８】
図６、８および１０の各々のＦＩＦＯ回路１００、２００および３００は、実際的に同様であり、ここに示す違いを有する。例えば、各々のＦＩＦＯ回路１００、２００および３００は、共通データバスにおける前記プットおよびゲットインタフェースと通信する同一のセルの環状アレイを有する。各動作の制御ロジックは、前記セルに分配され、これら２つのインタフェース間の協働を可能にする。データは、前記セルのアレイにおいて不動である。したがって、データ項目がエンキューされると、動かず、その場において簡単にデキューされる。
【００２９】
いつでも、ＦＩＦＯ回路１００、２００および３００において２つのトークン、すなわちプットトークンおよびゲットトークンが存在する。ＦＩＦＯ回路１００、２００および３００の入力および出力動作を、これらのトークンによって制御する。前記プットトークンを使用し、データ項目のエンキューを可能にし、前記ゲットトークンを使用し、データ項目のデキューを可能にする。前記プットトークンを有するセルを、前記キューの“尾”とみなしてもよく、前記ゲットトークンを有するセルを、前記キューの“頭”とみなしてもよい。通常動作において、前記プットトークンは、代表的に、前記ゲットトークンより先にある。セルがトークンをデータ動作に使用されると、前記トークンは、それぞれの動作が完了した後、次のセルに渡される。このトークンの動きを、詳細に後述するように、インタフェース要求と、前記ＦＩＦＯ回路の状態、すなわち、空であるか満たされているかとの双方によって制御する。
【００３０】
ＦＩＦＯ回路１００、２００および３００のアーキテクチャに共通のいくつかの利点が存在する。データは前記セル間で入力から出力に渡されないため、前記ＦＩＦＯ回路は、少ない待ち時間の可能性を有する。したがって、データ項目がエンキューされるとすぐ、デキューも可能になる。第２に、前記ＦＩＦＯ回路は、低電力の可能性も提供し、データ項目はＦＩＦＯ回路にある間、不動である。最後に、これらのアーキテクチャは高度にスケーラブルであり、すなわち、前記ＦＩＦＯ回路の能力と前記データ項目の幅とを、きわめて少ない設計変更によって変えることができる。
【００３１】
第１好適実施形態によるＦＩＦＯ回路１００を図５および６に示す。ＦＩＦＯ回路１００を、前記送り側サブシステムが同期であり、前記受け側サブシステムも同期である場合、使用することができる。したがって、前記モジュラ同期プットインタフェース１０を、図５に示すようなモジュラ同期ゲットインタフェース２０と共に使用する。前記送り側サブシステムは送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）において動作し、前記受け側サブシステムは受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）において動作する。
【００３２】
図６に示すように、ＦＩＦＯ回路１００を、同一セル１７０ａ、１７０ｂ、１７０ｃおよび１７０ｄの環状アレイによって構成し、このＦＩＦＯ回路は、２つの外部インタフェース、すなわち、送り側データバス１６における同期プットインタフェース１０（ｄａｔａ＿ｐｕｔ）および受け側データバス２６における同期ゲットインタフェース２０（ｄａｔａ＿ｇｅｔ）によって通信する。
【００３３】
同期インタフェース１０および２０は、２つの追加の構成要素の形式、すなわち、（１）ＦＩＦＯ回路１００の現在の状態、すなわち、空であるか満たされているかを決定する検出器と、（２）データ動作の要求を前記セルアレイに条件付で渡す外部コントローラとを有する。当該技術分野において既知のように、同期インタフェースにおけるデータ動作はクロック周期内で完了し、すなわち、したがって、前記環境は明白な受け取り信号を必要としない。しかしながら、ＦＩＦＯ回路１００がいっぱいに（または空に）なる場合、前記環境に前記プット（ゲット）インタフェースにおける通信を中止させる必要があるかもしれない。検出器およびコントローラは、ＦＩＦＯ回路１００において動作し、例外の場合を検出し、それが前記データ動作を行うのに安全でない場合、個々のインタフェースを停止する。図６に示すように、フル検出器７２および空検出器７４は、すべてのセル１７０ａ、１７０ｂ、１７０ｃおよび１７０ｄの状態を監視し、ＦＩＦＯ回路１００の全体的な状態、すなわち、いっぱいであるか空であるかを計算する。フル検出器７２の出力をプットインタフェース１０に渡してもよく、空検出器７４の出力をゲットインタフェース２０に渡してもよい。プットコントローラ１７６およびゲットコントローラ１７８は、ＦＩＦＯ回路１００に対するデータ動作要求をフィルタ処理する。このようにして、プットコントローラ１７６は、通常は、前記送り側サブシステムからのプット要求を渡すが、前記ＦＩＦＯ回路がいっぱいの場合、これらを無効にする。同様に、ゲットコントローラ１７８は、通常は、前記受け側サブシステムからのゲット要求を送るが、ＦＩＦＯ回路１００が空の場合、これらをブロックする。検出器７２および７４と、外部コントローラ１７６および１７８と、“空”および“いっぱい”の規定とを、より詳細に後述する。
【００３４】
第２の好適実施形態によるＦＩＦＯ回路２００を図７および８に示す。ＦＩＦＯ回路２００を、前記送り側サブシステムが非同期で前記受け側サブシステムが同期である場合に使用することができる。したがって、図７に示すように、モジュラ非同期プットインタフェース４０をモジュラ同期ゲットインタフェース２０と共に使用する。前記送り側サブシステムは非同期に動作し、前記受け側サブシステムは受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）において動作する。
【００３５】
図８に示すように、ＦＩＦＯ回路２００を同一のセル２７０ａ、２７０ｂ、２７０ｃおよび２７０ｄの環状アレイによって構成し、このＦＩＦＯ回路２００は２つの外部インタフェース、すなわち、共通データバスである送り側データバス４６（ｄａｔａ＿ｐｕｔ）および受け側データバス１６（ｇｅｔ＿ｄａｔａ）における非同期プットインタフェース４０および同期ゲットインタフェース２０と通信する。
【００３６】
図６に関して上述したような同期ゲットインタフェース２０は、空検出器７４およびゲットコントローラ２７８を含む。ゲットコントローラ２７８は、代表的に、前記受け側サブシステムからのゲット要求を渡すが、ＦＩＦＯ回路２００が空の場合、これらのような要求を無効にする。同期インタフェースとは異なり、非同期プットインタフェース４０のような非同期インタフェースは、フルまたは空検出器、または外部コントローラを含まない。非同期インタフェースはクロック信号において動作しないため、“いっぱい”または“空”のような例外をあげ、データ動作を一時的に停止する必要はない。したがって、非同期インタフェースを有するＦＩＦＯ回路がいっぱい（または空）になる場合、前記プット（またはゲット）承認を、前記データ動作を行うのが安全になるまで、無期限に保留することができる。ＦＩＦＯ回路２００の場合において、プット承認信号４５（ｐｕｔ＿ａｃｋ）を、ＦＩＦＯ回路２００がいっぱいである場合、保留し、前記プット動作を行うのが安全である場合、伝送する。
【００３７】
図９および１０は、第３の好適実施形態によるＦＩＦＯ回路３００を示す。ＦＩＦＯ回路３００を、前記送り側サブシステムが同期であり、前記受け側サブシステムが非同期である場合、使用することができる。同期プットインタフェース１０を、図９に示すように非同期ゲットインタフェース５０と共に使用する。前記送り側サブシステムは送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）において動作し、前記受け側サブシステムは非同期に動作する。
【００３８】
図１０に示すように、ＦＩＦＯ回路３００は、同一のセル３７０ａ、３７０ｂ、３７０ｃおよび３７０ｄの環状アレイを含み、このＦＩＦＯ回路３００は、２つの外部インタフェースである同期プットインタフェース１０および非同期ゲットインタフェース５０と、共通データバスである送り側データバス１６（ｄａｔａ＿ｐｕｔ）および受け側データバス５６（ｇｅｔ＿ｄａｔａ）において通信する。
【００３９】
図６に関して上述した同期プットインタフェース１０は、フル検出器７２およびプットコントローラ３７６を含む。ＦＩＦＯ回路３００は、空検出器を持たず、代わりに、ゲット承認信号５５（ｇｅｔ＿ａｃｋ）を、ＦＩＦＯ回路３００が空の場合、保留し、前記ゲット動作を行うのが安全である場合、伝送する。
【００４０】
図１に関して上述した同期プットプロトコルを図１１に示す。同期プットインタフェース１０は、プット動作を、プット要求信号１４（ｐｕｔ＿ｒｅｑ）およびデータ項目をプットデータバス１６（ｄａｔａ＿ｐｕｔ）において受けた場合、送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）の立ち上がりエッジの直後に開始する。前記ＦＩＦＯ回路がいっぱいになった場合、図１１に示すようにグローバルフル信号１８（ｆｕｌｌ）を次のクロックサイクルの前に示し、同期プットインタフェース１０をどのような他の動作からも防ぐ。
【００４１】
図１２は、図２に関して上述した同期ゲットプロトコルを示す。同期ゲット動作は、受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）の立ち上がりエッジの直後に示されるゲット要求信号２４（ｒｅｑ＿ｇｅｔ）によって可能になる。クロック周期の終了によって、データ項目をゲットデータバス２８（ｄａｔａ＿ｇｅｔ）においてその有効信号３０（ｖａｌｉｄ＿ｇｅｔ）と共に置く。前記ＦＩＦＯ回路がこのクロック周期中に空になる場合、グローバル空信号２８（ｅｍｐｔｙ）も次のクロック周期の立ち上がりエッジの直後に示し、同期ゲットインタフェース２０を前記ＦＩＦＯ回路が空でなくなるまで停止する。ゲット要求２４（ｒｅｑ＿ｇｅｔ）に続いて、有効信号３０（ｖａｌｉｄ＿ｇｅｔ）およびグローバル空信号２８（ｅｍｐｔｙ）は、３つの結果、すなわち、（ａ）データ項目をデキューしてもよく、他のデータ項目を利用可能である（すなわち、ｖａｌｉｄ＿ｇｅｔ＝１，ｅｍｐｔｙ＝０）；（ｂ）データ項目をデキューしてもよく、ＦＩＦＯ回路が空になった（すなわち、ｖａｌｉｄ＿ｇｅｔ＝１，ｅｍｐｔｙ＝１）；または（ｃ）前記ＦＩＦＯ回路が空であり、データ項目をデキューできない（ｖａｌｉｄ＿ｇｅｔ＝０，ｅｍｐｔｙ＝１）を示すことができる。
【００４２】
前記非同期プットおよびゲットプロトコルを図１３および１４に示す。前記非同期インタフェースがクロックを持たないため、これらは、当該技術分野において既知のように、４相束データ形式の通信を使用する（束データ通信におけるさらなる詳細は、Ｓ．ファーバー、“非同期設計”、サブミクロンエレクトロニクスの会報、４６１−４９２ページ、１９９７年；Ｉ．サザーランド、“マイクロパイプライン”、ＡＣＭの発表、３２（６）、７２０−７３８ページ、１９８９年６月と、Ｈ．ヴァン  ガゲルドンク他、“非同期低電力８０５Ｃ５１マイクロコントローラ”、非同期回路およびシステムにおける専門研究における国際シンポジウム議事録とにおいて記載されており、これらは、これらの全体における参照によってここに含まれる）。データ項目は、データ動作が要求される前に前記データバスにおいて安定した値を持たなければならない。
【００４３】
図１３に示すように、前記送り側は、プット動作を、データ項目を送り側データバス４６（ｐｕｔ＿ｄａｔａ）に置き、要求を前記ＦＩＦＯ回路に発し、この要求をプット要求信号４４（ｐｕｔ＿ｒｅｑ）を示すことによってエンキューすることによって開始する。前記エンキュー動作の完了を、プット承認信号４５（ｐｕｔ＿ａｃｋ）を示すことによって示す。前記２つの制御線を、実際的に、最初にプット要求４４（ｐｕｔ＿ｒｅｑ）、次にプット承認４５（ｐｕｔ＿ａｃｋ）を遊び状態にリセットする。
【００４４】
同様に、非同期ゲット動作を図１４に示す。このゲット動作を、ゲット要求信号５４（ｇｅｔ＿ｒｅｑ）を示し、データ項目をゲットデータバス５６（ｇｅｔ＿ｄａｔａ）においてデキューすることによって行う。この動作の完了に応じて、ゲット承認信号５５（ｇｅｔ＿ａｃｋ）を示す。その後、ゲット要求信号５４（ｇｅｔ＿ｒｅｑ）を示すのを止め、次にゲット承認信号５５（ｇｅｔ＿ａｃｋ）も示すのを止める。
【００４５】
同期サブシステムおよび非同期サブシステムによって正確に動作するＦＩＦＯ回路１００、２００および３００を構成するために、各々のセルは、前記送り側または受け側環境と調和するように選択された４つの別個の交換可能な構成部品、すなわち、（１）前記プット動作を行い、前記送り側環境、すなわち同期または非同期によって動作するように構成されたプット構成要素と、（２）前記ゲット動作を行い、前記受け側環境、すなわち同期または非同期によって動作するように構成されたゲット構成要素と、（３）前記セルがデータ項目を有するかどうかの表示を与え、前記送り側環境および受け側環境の双方によって動作するように構成されたデータ有効性（ＤＶ）コントローラと、（４）前記送り側環境および受け側環境の双方によって動作するように構成されたレジスタとから成る構成を有する。したがって、セル１７０ａ−ｄおよび３７０ａ−ｄにおけるプット構成要素は、これらが同期送り側環境によって動作するように構成されているため、実際的に同じである。セル１７０ａ−ｄおよび２７０ａ−ｄにおけるゲット構成要素は、これらが同期受け側環境によって動作するように構成されているため、実際的に同じである。セル２７０ａ−ｄのプット構成要素を非同期送り側環境によって動作するように構成し、セル３７０ａ−ｄのゲット構成要素を非同期送り側環境によって動作するように構成する。
【００４６】
前記データ有効性コントローラの目的は、セルがいっぱいである場合およびセルが空である場合と、セルが有効データを有する場合とを示すことである。各々のセルにおけるレジスタを２つの部分、前記プット構成要素（書き込みポート）に属するものと、前記ゲット構成要素（読み出しポート）に属するものとに分割する。前記プット構成要素、ゲット構成要素、データ有効性コントローラおよびレジスタを互いに取り付け、完全なセルを得る。
【００４７】
非同期送り側および同期受け側と関連して使用することができるＦＩＦＯ回路１００を、図５および６と関連して同じセル１７０ａ、１７０ｂ、１７０ｃおよび１７０ｄのアレイと共に上述した。ＦＩＦＯ回路１００のセル１７０ａのような典型的な個々のセルを図１５および１６に示す。（セル１７０ａに関する以下の説明は、セル１７０ｂ、１７０ｃおよび１７０ｄにも適合する。）各々のセル１７０ａは、４つのインタフェース、（１）同期プットインタフェース１７１と、（２）同期ゲットインタフェースと、（３）前記セルのアレイの右側セルとのインタフェースと、（４）前記セルのアレイの右側セルとのインタフェースとを有する。同期プットインタフェース１７１において、セル１７０ａは、共通プットデータバス１６（ｄａｔａ＿ｐｕｔ）においてデータを受ける。プット動作を、プットコントローラ７６（図６参照）の出力であるプットイネーブル信号８０（ｅｎ＿ｐｕｔ）によって行うことができる。プット要求信号１４（ｒｅｑ＿ｐｕｔ）は、データ有効性（本実施形態においては常に示される）を示す。プット要求信号１４（ｒｅｑ＿ｐｕｔ）のセル１７０ａへの伝送を図６から省略しており、図を複雑にするのを避けている。セル１７０ａはフル検出器７２と、セル１７０ａが空の時に示される空ビット１８２（ｅ＿ｉ）によって通信する。典型的なセル１７０ａの状態を、非同期ＳＲラッチ１８０のようなデータ有効性（ＤＶ）コントローラによって示す。同期ゲットインタフェース１７２（図１５）において、セル１７０ａは、共通ゲットデータバス２６（ｄａｔａ＿ｇｅｔ）においてデータを、本実施形態においては常に示されるその有効性信号１８４（ｖａｌｉｄ＿ｉ）と共に出力する。図６に示すように、有効性信号１８４（ｖａｌｉｄ＿ｉ）をＦＩＦＯ回路１００において使用せず、後述するいくつかの実施形態において使用する。同期ゲットインタフェース１７２を、ゲットコントローラ７８（図６参照）の出力であるゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）によって有効にする。セル１７０ａは空検出器７４と、セル１７０ａがいっぱいである場合に示されるフルビット１８８ａ（ｆ＿ｉ）によって通信する。右のセルとのインタフェース１７３において、各々のセル１７０ａ−ｄは、プットトークン入力１９０（ｐｔｏｋ＿ｉｎ）においてトークンを受け、右のセルからゲットトークン入力１９６（ｐｔｏｋ＿ｏｕｔ）を受ける。左のセルとのインタフェース１７４において、各々のセル１７０は、プットトークン出力１９４（ｐｔｏｋ＿ｏｕｔ）においてトークンを渡し、ゲットトークン出力１９６（ｇｔｏｋ＿ｏｕｔ）を左のセルに渡す。
【００４８】
第１実施形態によるセル１７０ａを図１６にも示す。セル１７０ａの動作を、セル１７０ａによるプット動作と次のゲット動作とを追跡することによって説明することができる。最初に、セル１７０ａは、空状態（すなわち、ｅ＿ｉ＝１およびｆ＿ｉ＝０）においてなんのトークンもなく開始する。セル１７０ａは、プットトークン１９０（ｐｔｏｋ＿ｉｎ＝１）において送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）の立ち上がりエッジにおいて右のセルからプットトークを受けるのを待ち、前記送り側がプットデータバス１６（ｄａｔａ＿ｐｕｔ）において有効データ項目を置くのを待つ。有効データ項目をすべてのセルに、プットコントローラ１７６（図６参照）の出力であるプットイネーブル信号１８０（ｅｎ＿ｐｕｔ＝１）によって示す。
【００４９】
有効データがあり、セルがプットトークン（すなわち、ＡＮＤ１８１）を得ている場合、セル１７０ａは、３つの動作、すなわち、（１）レジスタ１９１（ＲＥＧ）を有効にし、前記データ項目およびプット要求信号１４（ｒｅｑ＿ｐｕｔ）をラッチする、（２）セル１７０ａが有効データ項目を有することを示す（ｆ＿ｉ＝１を非同期にセットする）、（３）左上エッジトリガＤ型フリップフロップＥＴＤＦＦ１９３を有効（ｅｎ＿ｐｕｔ＝１）にし、前記プットトークンを左のセルにプットトークン出力１９４ｐｔｏｋ＿ｏｕｔにおいて渡す、を行う。送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）の次のクロックサイクルの立ち上がりエッジにおいて、前記データ項目および有効性ビットを最終的にラッチし、前記プットトークンを左のセルに渡す。
【００５０】
セル１７０ａによるデータのデキューは、実際的に同じやり方で進み、違いをここに示した。セル１７０ａは、ゲットトークンをゲットトークン入力１９２（ｇｔｏｋ＿ｉｎ＝１）において右のセルから受けるのを待つ。これが起こった場合、セル１７０は、有効ビット１８３（ｖ＿ｉ）、すなわち、ラッチされたプット要求信号１４（ｒｅｑ＿ｐｕｔ）の有効バス１８４（ｖａｌｉｄ＿ｉ）における放送を許可する。前記ゲットトークンがゲットトークン入力１９２（ｇｔｏｋ＿ｉｎ＝１）において受信され、前記受け側がデータ項目をゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ＝１）によって要求した場合、セル１７０ａは、前記データ項目を共通ゲットデータバス２６（ｄａｔａ＿ｇｅｔ）において置くことを非同期に許可し、セル１７０が空であることを示す（ｅ＿ｉ＝１を非同期にセットする）。示されたゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）の到着は、左下エッジトリガＤ型フリップフロップＥＴＤＦＦ１９５が前記ゲットトークンをゲットトークン出力１９６（ｇｔｏｋ＿ｏｕｔ）において渡すことを可能にする。次のクロックサイクルの開始において、前記ゲットトークンは次に左のセルに渡される。
【００５１】
ＦＩＦＯ回路１００、２００および３００の各々は、少なくとも１つの同期インタフェースを有することができる。したがって、前記ＦＩＦＯ回路動作は同期しなければならない。混合クロックＦＩＦＯ回路は、高度な同時動作を有し、すなわち、いつでも前記ＦＩＦＯ回路の状態、すなわち空かいっぱいかをプットインタフェース１０および／またはゲットインタフェース２０によって変更することができ、プットインタフェース１０およびゲットインタフェース２０の各々を異なったクロックの下ですなわち非同期に動作させることができる。同時に、各々のインタフェースは、ＦＩＦＯ回路の状態をそれ自身のクロックの下で“読み出す”。グローバルフル信号１８（ｆｕｌｌ）（図６および１０）を前記プットインタフェースによって読み出し、グローバル空信号２８（ｅｍｐｔｙ）（図６および８）を前記ゲットインタフェースによって読み出す。したがって、調和しない読み出しを避けるために、同期装置を前記２つのグローバル信号、フル信号１８（ｆｕｌｌ）および空信号２８（ｅｍｐｔｙ）の双方に加えている。各々の同期装置は、対応するグローバル信号を適切なクロックに調節する。好例の本実施形態において、１対の同期化ラッチを使用するが、頑健性を増すために、３つ以上のラッチを使用してもよいことを注意する。図１７、１８および１９に示すように、同期装置をフル検出器７２および空検出器７４の出力部に加え、送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）および受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）によって各々制御する。
【００５２】
ここに記載した同期装置は、遅延の追加のクロックサイクルを前記ＦＩＦＯ回路の現在の状態の読み出しに追加する。したがって、前記ＦＩＦＯ回路の瞬時の状態を単に示す簡単なフル検出器および空検出器は、失敗、すなわちオーバフローまたはアンダフローを結果として生じるかもしれない。例えば、１対の同期ラッチを使用するＦＩＦＯ回路がいっぱいになった場合、前記送り側インタフェースは２クロックサイクル後に止まる。次のクロックサイクルにおいて、前記送り側は、新たなデータ項目を置き、読み出されていないデータ項目を効率的に上書きする。逆に、前記ＦＩＦＯ回路が空になった場合、前記受け側インタフェースは、２クロックサイクル後にとまり、次のクロックサイクルにおいて、前記受け側は空のセルを読み出すかもしれない。
【００５３】
本発明による解決法は、グローバルフル信号１８（ｆｕｌｌ）およびグローバル空信号２８（ｅｍｐｔｙ）の規定および実施を変更し、ＦＩＦＯ回路を、予め決められた数より少ないセルが空である場合、“いっぱい”とみなす。第１の好適実施形態によれば、前記ＦＩＦＯ回路を、すべてのセルが空でないか、１個のセルが空である場合、いっぱいとみなす。したがって、空のセルが２つより少ない場合、前記ＦＩＦＯ回路をいっぱいと宣言し、前記送り側サブシステムは、２クロックサイクル後に止まる前に、最終データ項目を安全に置くことができ、新たな返事のない要求を発することができる。図１１−１２に関して説明したプロトコルは変化しない。唯一の影響は、ときには前記２つのシステムはｎプレースＦＩＦＯ回路をｎ−１プレースＦＩＦＯとみなすことができることである。
【００５４】
図１７に示すフル検出器７２は、上述した“いっぱい”の規定を実施する。ＦＩＦＯ回路１００は、予め決められた数より少ない連続的なセルが空である場合、いっぱいと宣言する。図１７に示すように、連続的なセルに関する空ビット１８２（ｅ＿ｉ）、すなわち、ｅ＿０およびｅ＿１と、ｅ＿１およびｅ＿２と、ｅ＿２およびｅ＿３；ｅ＿３およびｅ＿０とを評価し、これらの連続的なセルの対のいずれもが空でないとわかった場合、ＦＩＦＯ回路１００がいっぱいであると宣言する。ラッチ１７１および１７３の対を加え、グローバルフル信号１８（ｆｕｌｌ）を送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）と同期させている。
【００５５】
“空”の同様な規定は、ＦＩＦＯ回路１００における予め決められた数より少ないセルがいっぱいである場合に適合する。この好適実施形態において、２つより少ないデータ項目がある場合、前記ＦＩＦＯ回路が空であると宣言することができる。これらの状況の下で、前記受け側サブシステムは、２クロックサイクル後に止まる前に、最後のデータ項目を除去することができ、新たな返事のない要求を発することができる。しかしながら、上述したような空の早い検出は、ＦＩＦＯ回路１００デッドロックさせてしまうかもしれない。“ほとんど空”（ｎｅ）規定（前記ＦＩＦＯ回路におけるゼロまたは１データ項目）の欠点は、ＦＩＦＯ回路１００を、１つデータ項目を含んでいるにもかかわらず空と宣言するが、要求する受け側が依然として止まることである。
【００５６】
既知の空の代わりの規定は、“真の空”（ｏｅ）であり、これは、前記回路において何かデータ項目があるか否かの指示である。真の空信号（ｏｅ）は代表的に同期化によって遅延するため、前記真の空信号の欠点は、アンダフローを生じるかもしれないことである。
【００５７】
本発明による解決法は、バイモデル空検出器７４を使用することである（この構成要素を以下により詳細に説明する図１８−１９に示す）。前記バイモデル検出器は、“ほとんど空”（ｎｅ）状態と“真の空”（ｏｅ）状態との双方を決定する。これら２つの空信号を次に前記受け側によって同期化し、グローバル空信号２８（ｅｍｐｔｙ）に結合する。しかしながら、前記ほとんど空検出は、通常は真の空（ｏｅ）より先行するであろう。
【００５８】
前記バイモデル空検出器は、前記受け側からの最新のゲット要求の発生に部分的に基づいてグローバル空信号２８（ｅｍｐｔｙ）を宣言する。少なくとも１クロックサイクルの間に最新のゲット要求がなかった場合、真の空信号（ｏｅ）が優勢になる。これは、ＦＩＦＯ回路１００において１つデータ項目がある場合、重要になる。ほとんど空信号（ｎｅ）は、前記ＦＩＦＯ回路が空であることを示し、真の空信号（ｏｅ）は、前記ＦＩＦＯ回路が空でないことを示す。この状況において、ゲットインタフェース２０は、前記データ項目を受けなければならず、真の空信号（ｏｅ）を使用してＦＩＦＯ状態、すなわち“空でない”ことを示し、主張しない。しかしながら、前記ゲットインタフェースがちょうどデータ項目を除去した場合、真の空信号（ｏｅ）に関する同期化遅延が引き起こす前記ＦＩＦＯのアンダフローを防ぐために、ほとんど空信号（ｎｅ）を使用し、前記状態、すなわち“空”を示さなければならない。
【００５９】
他のシナリオによれば、前記ＦＩＦＯ回路は、少なくとも１サイクルの間からになってもよく、すなわち、グローバル空信号２８（ｅｍｐｔｙ）を主張してもよい。次のクロックサイクル中、空信号（ｏｅ）が優勢になる。
【００６０】
第１の好適実施形態によれば、バイモデル空検出器７４を２つの検出器、ほとんど空検出器１２０（図１８）および真の空検出器１３０（図１９）によって実現する。前記２つの信号を結合し、図１９に関して後述するようにグローバル空信号２８（ｅｍｐｔｙ）を発生する。図１８に示すほとんど空検出器１２０は、上述したフル検出器７２と同様であり、セルの連続する対のフルビット１８８（ｆ＿ｉ）、すなわち、ｆ＿０およびｆ＿１と、ｆ＿１およびｆ＿２と、ｆ＿２およびｆ＿３と、ｆ＿３およびｆ＿０とを評価する。個々のデータ項目を有するセルの２つの連続する対が見つからない場合、信号１２１（ｅｍｐｔｙ＿ｐ）においてＦＩＦＯ回路１００が空であると宣言する。ラッチの対１２４および１２６を使用し、ほとんど空信号１２２（ｎｅ）をゲットクロック信号２２（ＣＬＫ＿ｇｅｔ）に同期化する。
【００６１】
図１９に示す真の空検出器１３０は、前記ＦＩＦＯ回路の“真の空”（ｏｅ）状態を決定する。この規定によれば、データ項目がない場合、ＦＩＦＯ回路１００は空であり、この場合において、真の空信号１３２（ｏｅ）を示す。したがって、真の空検出器１３０は、各々のフルビット８８（ｆ＿ｉ）を評価し、なにかデータ項目が存在するか否かを決定する。真の空信号１３２（ｏｅ）は同期化によって遅延し、これはアンダフローを引き起こすかもしれない。この状況を防ぐために、真の空信号１３２（ｏｅ）を、各々のゲット動作後、ニュートラルな“ＦＩＦＯ回路空”値に同期的にセットする。これを、第２ラッチ１３６の前にゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）との第１ラッチ１３４によるクロック供給された後に、出力信号１３８をＯＲ演算することによって実現する。各々のゲット動作後に“真の空”信号をセットする結果として、“真の空”信号（ｏｅ）は、前記ＦＩＦＯ回路においてデータ項目がないことを示す必要がない。特に、２つ以上データ項目が存在し、ゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）を示す場合、真の空検出器１３０は真の空信号１３２（ｏｅ）を出力する。
【００６２】
ポテンシャルデッドロック問題を、本発明により、ほとんど空信号１２２および真の空信号１３２の組み合わせによって解決する。大部分の場合において、ほとんど空検出器１２０および真の空検出器１３０は同じ結果を発生し、すなわち、ほとんど空信号１２２（ｎｅ）および真の空信号１３２（ｏｅ）は同じである。ＦＩＦＯ回路１００がいくつかのデータ項目を有し、ゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）が、ラッチ１３４がクロック供給する時とラッチ１３６がクロック供給する時との間に示されない場合、真の空信号１３２（ｏｅ）およびほとんど空信号１２２（ｎｅ）の双方はＦＩＦＯ回路１００が空でないことを示し、すなわち、双方の信号を示さない。同様に、ＦＩＦＯ回路１００がデータ項目を含まない場合、真の空信号１３２（ｏｅ）およびほとんど空信号１２２（ｎｅ）の双方は前記ＦＩＦＯ回路が空であることを示し、すなわち、双方の信号を示す。
【００６３】
ＦＩＦＯ回路１００が正確に１個のデータ項目を含む場合、異なった状況が起こり、すなわち、前述の期間中、ゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）の主張がない場合、ほとんど空信号１２２は前記ＦＩＦＯ回路が“空”（ｎｅ＝１）であることを示し、真の空信号１３２は前記ＦＩＦＯ回路が“空でない”（ｏｅ＝０）ことを示す。この状況は、前記ゲットインタフェースが前記ＦＩＦＯにおける次から最後のデータ項目の除去を許可した後に起こりうる。この次のステップは、他のゲット要求があるか否かに依存し、（１）現在のクロックサイクルにおいて他のゲット要求がある場合、この要求を満たし、ほとんど空検出器１２０が前記ＦＩＦＯの空を宣言し（すなわち、ほとんど空信号（ｎｅ）を示し）、前記ゲットインタフェースを次のクロックサイクルにおいて止める。（２）ゲット要求がない場合、真の空検出器１３０が次のクロックサイクルにおいて優勢になり、前記ＦＩＦＯが空でないことを宣言し（すなわち、真の空信号（ｏｅ）を示さず）、次のゲット要求を満足させる。最後のデータ項目をデキューするときはいつも、ほとんど空信号（ｎｅ）が再びすぐに優勢になり、前記ゲットインタフェースを時間どおりに止める。この時点において、さらなるゲット要求が満たされず、ほとんど空信号（ｎｅ）を再び使用し、ＦＩＦＯ１００の状態を示す。
【００６４】
プットコントローラ１７６を図２０に示す。プットコントローラ１７６は、前記ＦＩＦＯ回路１００におけるプット動作およびプットトークンの移動を可能または不可能にする。図２０に示すように、これらの動作を、ｄａｔａ＿ｐｕｔにおいて有効なデータ項目がある、すなわち、プット要求信号１８（ｒｅｑ＿ｐｕｔ）が示され、前記ＦＩＦＯ回路がいっぱいでない、すなわち、グローバルフル信号１８（ｆｕｌｌ）が示されていない場合にのみ可能にする。上述したシナリオにおいて、前記ＦＩＦＯ回路は少なくとも１サイクルの間空になり、ゲット要求信号２４（ｒｅｑ＿ｇｅｔ）が前記受け側によって形成されたか否かにかかわらず、ゲットイネーブル信号１９６（ｅｎ＿ｇｅｔ）を示さない。このような場合において、真の空信号１８（ｏｅ）を次のクロックサイクルにおいてリセットせず、優勢にさせない。この場合において、前記ＦＩＦＯが一度空になったら、１つのデータ項目を前記プットインタフェースによってエンキューする場合、真の空信号（ｏｅ）は優勢のままであり、結局ｏｅは示されず、グローバル空信号２８（ｅｍｐｔｙ）は示されず、ゲットインタフェース２０は前記データ項目を移動することができ、したがって、デッドロックを回避する。
【００６５】
図２１に示すゲットコントローラ１７８は、ＦＩＦＯ回路１００におけるゲット動作およびゲットトークンの移動を可能にまたは不可能にする。ゲットイネーブル信号１８６（ｅｎ＿ｇｅｔ）を、前記受け側からの要求があり、すなわち、ゲット要求信号２４（ｒｅｑ＿ｇｅｔ）が示され、ほとんど空検出器１２０および真の空検出器１３０の少なくとも一方が、ＦＩＦＯ回路１００が空でないことを示す場合にのみ示される。
【００６６】
第２実施形態によるＦＩＦＯ回路２００（図７および８）および第３実施形態によるＦＩＦＯ回路３００（図９および１０）の各々は、１つの非同期インタフェースおよび１つの同期インタフェースを有する。図７−８に関して上述したように、ＦＩＦＯ回路２００は、非同期プットインタフェースおよび同期ゲットインタフェースを有し、図９−１０に関して上述したＦＩＦＯ回路３００は、同期プットインタフェースおよび非同期ゲットインタフェースを有する。したがって、各々のＦＩＦＯ回路２００および３００は、上述したＦＩＦＯ１００からの多少の同期構成要素を利用する。より特に、同期プットインタフェース１０をＦＩＦＯ回路３００におけるプットインタフェースとして使用する。同様に、ＦＩＦＯ回路１００における同期ゲットインタフェース２０をＦＩＦＯ回路２００においてもゲットインタフェースとして使用する。
【００６７】
上述したように、各々のセルは４つの別個の部分、すなわち、プット構成要素と、ゲット構成要素と、データ有効性（ＤＶ）コントローラと、レジスタとを有する。セル２７０ａ−ｄおよび３７０ａ−ｄの各々は、データ有効性コントローラの一変形、すなわち、データ有効性コントローラ２８０およびデータ有効性コントローラ３８０を各々使用する。セル１７０ａ（図１６）において、前記データ有効性コントローラは単純であった（ＳＲラッチ１８０）。しかしながら、同期構成要素および非同期構成要素の双方を有するＦＩＦＯ２００および３００に関して、動作はより複雑になる。これらの設計は、同じセルへの読み出し動作および書き込み動作間のさらなる同時発生を可能にする。したがって、前記データ有効性コントローラは、後述するように増加した同時発生性を可能にしなければならない。
【００６８】
第２実施形態によるＦＩＦＯ回路、すなわち、非同期−同期ＦＩＦＯ回路２００のインタフェースを、図７に関して上述した。これらを、非同期プットインタフェース４０（図３）および同期ゲットインタフェース２０（図２）を使用することによって得る。これらのインタフェースにおけるＦＩＦＯ回路プロトコルを図１２−１３に関して説明し、ＦＩＦＯ回路２００のアーキテクチャを図７−８に示した。特に図８の参照と共に、ＦＩＦＯ回路２００は、上述した多数の構成要素、すなわち、ゲットコントローラ２７８、空検出器７４および同期セル構成要素のようなインタフェース構成要素を使用する。セル２７０ａ−ｄにおける残りの構成要素、すなわち、非同期プット構成要素およびデータ有効性コントローラを、図２２−２３の参照と共にここに説明する。
【００６９】
図２３に示すセル２７０ａの同期部分は、ＦＩＦＯ回路１００（図６）にけるセル１７０ａ（図１６）の対応する構成要素と同様である。セル２７０ａの非同期部分をいくつかのブロックに分解する。前記プット構成部分は、プットトークン取得ブロック２９３（ＯＰＴ）およびＣ要素２９５を具える。プットトークン取得ブロック２９３（ＯＰＴ）は、個々のプットトークンを右インタフェースからプットトークン入力２９０（ｗｅｌ）において得る。これを、図２４において示すようなバーストモード機械として実現する（バーストモード機械は、Ｔ．チェルセア他、“トークンリングを使用する少待ち時間非同期ＦＩＦＯ”、ＩＥＥＥ  ＡＳＹＮＣＨ’００シンポジウム、２１０−２２０においてもより詳細に記載されており、この文献は、その全体における参照によってここに含まれる）。図２４のバーストモード仕様４００において示したように、プットトークン取得ブロック２９３は、右のセルを監視し、プット動作に関して待機する。完全なトークン通過を右のセルによって示し、この完全なトークン通過は、最初にプットトークン入力２９０（ｗｅｌ）をステップ４０２においてセットし、次にプットトークン入力２９０（ｗｅｌ）をステップ４０４においてリセットする。この動作が起こった後、前記プットトークンは現在のセルにあり、すなわち、プットトークン信号２９７（ｐｔｏｋ）をセットする（ステップ４０４）。プットトークン信号２９７（ｐｔｏｋ）がセットされた場合、他のプット動作を行うことができる。一度プット動作が開始したら、ステップ４０６において、プットトークン信号２９７（ｐｔｏｋ）をリセットし、プットトークン出力２９４（ｗｅ）をセットする。前記プット動作が終了した場合、プットトークン出力２９４（ｗｅ）をリセットし、前記プットトークンを次のセルに送り、サイクルが再開する。プットトークン取得ブロック２９３（ＯＰＴ）の第１好適実施形態を図２５（ａ）に示す。プットトークン取得ブロック２９３’（ＯＰＴ）の第２好適実施形態を図２５（ｂ）に示す。
【００７０】
前記プット動作を図２６に示すＣ要素２９５によって制御する。当該技術分野において既知のように、Ｃ要素２９５は、すべてのその入力が１である場合その出力が１であり、すべてのその入力が０になる場合出力が０になる。非同期Ｃ要素において、入力のいくつか（‘＋’をマークした）は、該素子の出力を１にセットすることにおいてのみ関係し、これらの値は他の出力変化と無関係である。
【００７１】
非同期プット動作に関するセル２７０ａ（図２３）の動作は以下のように進む。最初に、セル２７０ａは空状態（ｅ＿ｉ＝１およびｆ＿ｉ＝０）において開始し、前記プットトークンもゲットトークンも存在しない。プットトークン入力２９０（ｗｅｌ）における１対の変化後、前記プットトークンはこのセルにある（ｐｔｏｋ＝１）。この環境がプット要求信号４４（ｐｕｔ＿ｒｅｑ＝１）におけるプット動作をリセットし、前記セルが空（ｅ＿ｉ＝１）である場合、プットトークン出力２９４（ｗｅ）をセットする。このイベントは、いくつかの動作を並列に生じさせ、前記セルの状態はデータ有効性コントローラ２８０（ＤＶ＿ａｓ）によっていっぱいに変化し（すなわち、フルビット２８８ａ（ｆ＿ｉ）を示し）、すなわち、レジスタ２９１（ＲＥＧ）はデータをラッチすることができ、セル２７０ａは前記プットトークンを左のセルに送ることと、ＯＰＴをリセットすること（ｐｔｏｋ＝０）との双方を開始する。プット要求信号４４（ｐｕｔ＿ｒｅｑ）が示されない場合、プットトークン出力２９４（ｗｅ）も示されない。このイベントは、前記プットトークンを左のセルに送ることを完了する。ここで、セル２７０ａを、レジスタ２９１（ＲＥＧ）におけるデータをデキューした後に他のプット動作を開始するように準備する。
【００７２】
セル２７０ａにおける同期ゲット動作は、データ項目が該セルに存在した後に開始する。一度フルビット２８８ａ（ｆ＿ｉ）がセットされたら、空検出器７４（図８）はＦＩＦＯ回路２００の状態を“空でない”として計算し、ゲット要求２４（ｒｅｑ＿ｇｅｔ）をゲットイネーブル信号８６（ｅｎ＿ｇｅｔ）において渡す。セル２７０ａが前記ゲットトークンを有する場合、レジスタ２９１（ＲＥＧ）の内容をゲットデータバス２６（ｄａｔａ＿ｇｅｔ）において出力し、受け側クロック信号２２（ＣＬＫ＿ｇｅｔ）の次の立ち上がりエッジにおいて、前記ゲットトークンを次のセルに渡す。同時に、前記セルの状態をデータ有効性コントローラ２８０（ＤＶ＿ａｓ）によって“空”に変化させる。前記セルが前記ゲットトークンを有する場合（ｇｔｏｋ＝１）、前記セルの有効性ビットを、ゲット要求における信号８６（ｅｎ＿ｇｅｔ）にかかわらず、有効性データバス２８４（ｖａｌｉｄ＿ｉ）において放送することに注意されたい。これは、有効性バス２８４（ｖａｌｉｄ＿ｉ）における信号が常にある値に駆動されることを保証する。
【００７３】
図２７に示すように、データ有効性コントローラ２８０（ＤＶ＿ａｓ）は、前記セルがデータ項目を含むことを示し、すなわち、前記プット動作およびゲット動作を制御する。入力としてプットトークン出力２９４（ｗｅ）を受け入れ、このプットトークン出力２９４はプット動作が起こったことを合図し、入力として読み出しイネーブル信号２９９（ｒｅ）を受け入れ、この読み出しイネーブル信号２９９はゲット動作が起こったことを合図する。データ有効性コントローラ２８０（ＤＶ＿ａｓ）の出力は、セル２７０ａが空であることを示す（本実施形態においては最初にのみ使用される）空ビット２８２ａ（ｅ＿ｉ）と、セル２７０ａがいっぱいであることを示す（本実施形態においては前記空検出器において使用される）フルビット２８８ａ（ｆ＿ｉ）である。
【００７４】
データ有効性コントローラ２８０（ＤＶ＿ａｓ）に関するプロトコルを、ペトリネット４１０として図２８に示す（ペトリネットは、同時動作を説明するのに一般的に使用される既知のグラフィカル表現である）。これは、ラベル付けされたイベントの変化と、黒点によって示されたトークンを格納する場所とから成る。変化は、入ってくる弧のすべてがトークンを有する場合に始まり、これらのトークンをその出て行く弧のすべてに渡す（ペトリネットに関するさらなる詳細は、タダオムラタ、“ペトリネット：性質、解析および用途”、ＩＥＥＥ、７７（４）、１９８９年４月の会報と、Ｌ．Ｙ．ロゼンブランおよびＡ．Ｖ．ヤコレブ、“信号グラフ：自己時間決定から時間決定されたものへ”、イタリア、トリノ、時間決定されたペトリネットにおける国際ワークショップの会報、１９９−２０７ページと、タム−アンチュー、“ＶＬＳＩを設計するモデルにおける非同期ディジタル回路”、インテグレーション、ＶＬＳＩジャーナル、４（２）：９９−１１３、１９８６年６月とにおいて考察されており、これらの文献はこれらの全体における参照によってここに含まれる）。一度プット動作が開始したら、データ有効性コントローラ２８０（ＤＶ＿ａｓ）は、ステップ４１２において、空ビット２８２ａ（ｅ＿ｉ＝０）をリセットし、フルビット２８８ａ（ｆ＿ｉ＝１）をセットし、したがって、前記セルがいっぱいであることを宣言し、ゲット動作を可能にする。ステップ４１４においてゲット動作が開始した（ｒｅ＋）後、ステップ４１５において、ＣＬＫ＿ｇｅｔクロックサイクルの最中に前記セルを“いっぱいでない”（ｆｉ＝０）と非同期に宣言する。前記ゲット動作がステップ４１６において（ＣＬＫ＿ｇｅｔの次の立ち上がりエッジにおいて）終了した場合、ステップ４１７において、データ有効性コントローラ２８０（ＤＶ＿ａｓ）はセル２７０ａを“空”（ｅｉ＝１）にセットする。プットトークン出力２９４（ｗｅ）をステップ４１８においてリセットし、前記動作を再開することができる。この非同期動作は、前記プットトークンの通過を遅延させ、プット動作によるデータ不正を防ぎ、ゲット動作は依然として起こる。
【００７５】
第３の好適実施形態によるＦＩＦＯ回路、すなわち、同期−非同期ＦＩＦＯ回路３００（図９および１０）をここにより詳細に説明する。ＦＩＦＯ回路３００のインタフェースを図９に関して上述した。これらを、非同期プットインタフェース１０（図１参照）および非同期ゲットインタフェース５０（図４参照）を“取り付ける”ことによって得る。これらのインタフェースにおけるＦＩＦＯ回路プロトコルを図１１および１４の参照と共に説明し、ＦＩＦＯ回路３００のアーキテクチャを図９−１０に示した。図１０の参照と共に、ＦＩＦＯ回路３００は、上述した多数の構成要素、すなわち、プットコントローラ３７６、フル検出器７２および同期セル構成要素のようなインタフェース構成要素を使用する。セル３７０ａにおける残りの構成要素、例えば、非同期ゲット構成要素およびデータ有効性コントローラ（ＤＶ＿ｓａ）を、図２９−３０の参照と共にここに説明する。
【００７６】
好例のセル３７０ａのインタフェースを図２９に示す。（セル３７０ａ、３７０ｂ、３７０ｃおよび３７０ｄの各々は同様である。）セル３７０ａは４つのインタフェース、すなわち、（１）同期プットインタフェース３７１と、（２）非同期ゲットインタフェース３７２と、（３）トークンを得るための右（すなわち前）のセルとのインタフェース３７３と、（４）トークンを渡すための左（すなわち次）のセルとのインタフェース３７４とにおいて通信する。前記同期プットインタフェースにおいて、セル３７０ａは共通プットデータバス１６（ｄａｔａ＿ｐｕｔ）におけるデータを受ける。プット動作をプットイネーブル信号８０（ｅｎ＿ｐｕｔ）によって行うことができ、この信号はプットコントローラ７６（図１０参照）の出力である。プット要求信号１４（ｒｅｑ＿ｐｕｔ）は、データ有効性（本実施形態においては常に示される）を示す。セル３７０ａはフル検出器７２（図１０）と空ビット８２（ｅ＿ｉ）によって通信し、このビットは、セル３７０ａが空の場合、ハイを示す。プット動作を、送り側クロック信号１２（ＣＬＫ＿ｐｕｔ）によって管理する。各々のセル３７０ａ−ｄは、非同期ゲットインタフェース３７２と通信し、データをゲットデータバス５６（ｇｅｔ＿ｄａｔａ）において伝送し、ゲット動作に関するグローバル要求５４（ｇｅｔ＿ｒｅｑ）を受け、各々のセル３７０ａは、前記デキュー動作の終わりを５５（ｇｅｔ＿ａｃｋ）において示す。非同期ゲットインタフェース５０は有効データのみを通す（図４参照）ため、前記有効ビットをセル３７０ａの非同期ゲットインタフェースにおいて使用しない。各々のセルは、前記プットトークンをプットトークン入力９０（ｐｔｏｋ＿ｉｎ）において受け、前記ゲットトークンをゲットトークン入力３９２（ｒｅｌ）において受け、前記プットトークンをプットトークン出力９４（ｐｔｏｋ＿ｏｕｔ）において渡し、前記ゲットトークンをゲットトークン出力３６９（ｒｅ）において渡す。
【００７７】
セル３７０ａの同期部分は、ＦＩＦＯ回路１００（図１６参照）の対応する構成要素と同様である。図３０を参照し、セル３７０ａの非同期部分は、いくつかのブロック、例えば、ゲットトークン取得ブロック３９３（ＯＧＴ）および非同期Ｃ要素３９５に分解する。ゲットトークン取得ブロック３９３（ＯＧＴ）は、個々のゲットトークンを右のインタフェースからゲットトークン入力３９２（ｒｅｌ）において得る。ゲットトークン取得ブロック３９３（ＯＧＴ）を、図３１（ａ）に示すようなバーストモード非同期状態機械として実現する。ゲットトークン取得ブロック３９３’（ＯＧＴ）の他の好例の実現を、図３１（ｂ）に示す。バーストモード仕様４２０を図３２に示す。ゲットトークン取得ブロック３９３（ＯＧＴ）は、右のセルを監視し、ゲット動作を待機する。右のセルは完全なトークン通過を、最初にステップ４２２においてゲットトークン入力３９２（ｒｅｌ）（図３０）をセットし、次にステップ４２４においてゲットトークン入力３９２（ｒｅｌ）をリセットすることによって示す。これらの動作が完了するとき、前記ゲットトークンは現在のセルにあり、すなわち、ゲットトークン信号３９（ｇｔｏｋ）を図３２においてセットする（ステップ４２４）。ゲットトークン出力３９６（ｒｅ）（図３０）をステップ４２６において、非対称Ｃ素子３９５（図３０）によって制御されるようにセットする。前記セルがいっぱいであり、前記ゲットトークンを有し、前記受け側がデータ項目を要求する場合、前記ゲット動作を開始する。デキューが完了したら、前記受け側との通信を、前記要求をリセットし、次に前記承認をリセットすることによって終了する。ゲットトークン出力３６６（ｒｅ）を、現在のセルのゲットトークン信号３９７（ｇｔｏｋ）とともにステップ４２７においてリセットする。
【００７８】
セル３７０ａは、プット動作をセル１７０ａと同じように行う。前記セルがプットイネーブル信号８０（ｅｎ＿ｐｕｔ）において許可され、プットトークンｐｔｏｋ＿ｉｎ＝１を有する場合、レジスタ３９１（ＲＥＧ）はデータと、前記有効性ビットとして使用されるプット要求１４（ｒｅｑ＿ｐｕｔ）とをエンキューすることができる。並行して、データ有効性コントローラ３８０（ＤＶ＿ｓａ）は、セル３７０がいっぱいであることを宣言する。送り側クロック１２（ＣＬＫ＿ｐｕｔ）のクロックサイクルの開始時に、データを前記レジスタ中にラッチし、前記ゲットトークンを次のセルに渡す。
【００７９】
前記ゲット動作を以下のように行う。最初に、セル３７０ａは、ゲットトークン無しで開始する（ｇｔｏｋ＝０）。ゲットトークン取得ブロック３９３（ＯＧＴ）は、ゲットトークン入力３９２（ｒｅｌ）におけるアップおよびダウン変化に関して待機し、一度これらが生じたら、ゲットトークンは該セルにあり（ｇｔｏｋ＝１）、レジスタ３９１（ＲＥＧ）の出力をゲットデータバス５６（ｇｅｔ＿ｄａｔａ）において駆動する。前記ラッチされた有効性ビットを、前記非同期ゲットインタフェースによって使用しない。セル３７０ａは、前記受け側サブシステム（または環境）がデータ項目を要求し、ゲット要求信号５４を示す（ｇｅｔ＿ｒｅｑ＝１）のを待つ。これが生じた場合、セル３７０ａは、該セルがデータ項目を含む、すなわち、フルビット３８８ａが示された（ｆ＿ｉ＝１）場合にのみこれを承認する。これら３つの条件（すなわち、ｇｔｏｋ＝１、ｇｅｔ＿ｒｅｑ＝１およびｆ＿ｉ＝１）が満たされた場合、ゲットトークン出力３９６（ｒｅ）をセットし、すなわちこのイベントは前記環境に対するデータ動作を承認し、ゲットトークンブロック３９３（ＯＧＴ）のリセットを開始し、データ有効性コントローラ３８０（ＤＶ＿ｓａ）におけるセルの状態のリセットを開始し、前記ゲットトークンを次のセルに送るのを開始する。前記ゲットインタフェースの動作サイクルは、ゲット要求信号５４（ｇｅｔ＿ｒｅｑ）を示さなくなることによって完了し、これによりゲットトークン出力３９６（ｒｅ）は示されなくなり、ゲットトークン出力３９６（ｒｅ）の立ち上がりエッジにおいて開始したすべての動作が完了する。
【００８０】
データ有効性コントローラ３８０（ＤＶ＿ｓａ）は、前記セル画いっぱいまたは空である場合を示し、これを図３４において示す。データ有効性コントローラ３８０（ＤＶ＿ｓａ）に関するプロトコルを、図３５においてペトリネット４３０として示す。通常の空状態において、空ビット３８２ａを示し（ｅ＿ｉ＝１）、フルビット３８８示さない（ｆ＿ｉ＝０）。プット動作が開始した場合、データ有効性コントローラ３８０（ＤＡ＿ｓａ）は、ステップ４３１において空ビット３８２（ｅ＿ｉ）を同時にリセットし、ステップ４３２においてフルビット３８８（ｆ＿ｉ）をセットし（すなわち、セル３７０ａの状態は“いっぱい”になる）、したがってゲット動作が可能になる。前記プット動作の終了、すなわち、書き込みイネーブル信号３９４（ｗｅ）を示さなくなること（ステップ４３３）を、ゲット動作と同時に行うことができる。ゲット動作を、ｒｅにおける下降変化が生じた後、ゲットトークン出力３９６（ｒｅ）における１対の変化（ステップ４３４および４３５）によって合図し、前記セルの状態はステップ４３６および４３７において“空”に変化し（ｅ＿ｉ＝１およびｆ＿ｉ＝０）、通常の動作を再開することができる。
【００８１】
ここに記載したいくつかの追加の実施形態は、上述したＦＩＦＯ回路１００、２００および３００と実際的に同様であるが、送り側および受け側間のリレー局として動作するように変更した。図３６に示すように、システム４５０は、きわめて長いワイヤ４５６および４５８によって接続された、送り側サブシステム４５２および受け側サブシステム４５４のような２つのサブシステムを含んでもよい。この構成に関して、サブシステム４５２および４５４間で移動する信号は、移動に数クロックサイクル掛かってもよく、遅延ペナルティを導入してもよい。図３７に示すように、変更したシステム４６０は、リレー局４６２ａ、４６２ｂ、４６２ｃおよび４６２ｄを導入し、同じクロックの下で動作しなければならないサブシステム４６４およびサブシステム４６６間の接続遅延ペナルティを軽減する。リレー局４６２ａ、４６２ｂ、４６２ｃおよび４６２ｄの導入は、前記長いワイヤを、１つ以上のクロックサイクル遅延に各々が対応する切片４６８および４７０に分解する。一連のリレー局は、ＦＩＦＯ回路と同様に、あるシステムから他のシステムにパケットを送ることによって動作する。
【００８２】
当該技術分野において既知のリレー局４６２ｂのような単一クロックリレー局の実現を図３８に与える。通常は、左のリレー局からのパケットを右のリレー局に渡す。図３７において、パケットを代表的にリレー局４６２ａからリレー局４６２ｂに渡す。右のリレー局、すなわちリレー局４６２ｂは、前記リレー局を左のすなわちリレー局４６２ａに止めることによって、データフローにおける反圧力をかける能力を有する。図３８に示すように、好例のリレー局４６２ｂをリレー局４６２ａとリレー局４６２ｃ（図３７参照）との間に配置する。図３８を参照し、リレー局４６２ｂは２つのレジスタ、すなわち、通常動作において使用される主レジスタ４７２（ＭＲ）と、停止したとき余分のパケットを格納するのに使用される補助レジスタ４７４（ＡＲ）とを有する。混合クロックサイクルＦＩＦＯ回路１００とは異なり、前記リレー局は、フル信号および空信号を含まず、プット要求およびゲット要求も含まない。代わりに、通常動作において、データをクロックサイクルごとに渡す。データ通過は通常は連続であるため、有効データおよび無効データの双方が伝送され、有効データがエンキューされないときは常に向こうデータが渡される。したがって、有効ビットをプットデータバスおよびゲットデータバスの双方に付け、各々のデータベースにおけるデータパケットを形成する。
【００８３】
図３７−３８の参照と共に、（リレー局４６２ａ、４６２ｃおよび４６２ｄと実際的に同様の）リレー局４６２ｂは以下のように動作する。通常動作において、すべてのクロックサイクルの開始において、左のリレー局４６２ａからパケット入力信号４６８（ｐａｃｋｅｔＩｎ）において受けたデータパケットを複製し、次に、パケット出力信号４７０（ｐａｃｋｅｔＯｕｔ）において右のリレー局４６２ｃに送る。パケットは、データバスにおけるデータ項目と、前記パケットにおけるデータの有効性を示す有効ビットとから成る。受け側システム４６６がデータの受信を止めたい場合、ｓｔｏｐＩｎ４７６を示す。次のクロックエッジにおいて、リレー局４６２ｂはｓｔｏｐＯｕｔ４７８を示し、次のパケットを補助レジスタ４７４にラッチする。この時点において、前記セルは停止する。リレー局４６２ｂが停止しない場合、リレー局４６２ｂは、前記パケットを最初に主レジスタ４７２（ＭＲ）から右のリレー局４６２ｃに送り、その後、補助レジスタ４７４（ＡＲ）から前記パケットを送る。
【００８４】
図３９を参照し、ＦＩＦＯ回路５００は、混合クロックリレー局として動作する。ＦＩＦＯ回路５００は、ＦＩＦＯ回路１００（図５および６に示す）と実際的に同様であり、違いをここに示す。前記リレー局を有するＦＩＦＯ回路５００のインタフェースを図３９に示す。ＦＩＦＯ回路５００を、図３７に示すように前記一連のリレー局において配置し、ＦＩＦＯ回路５００は、リレー局４６２ａおよび４６２ｂを含むような左リレー局チェーンと、リレー局４６２ｃおよび４６２ｄを含むような右リレー局チェーンとの間をインタフェースする。１つのクロックの下で動作する図３７に示すシステム４６０と異なり、各々のリレー局チェーンは異なったクロックの下で動作してもよく、例えば、リレー局チェーン４６２ａ／４６２ｂは第１クロック領域５０２の下で動作し、リレー局チェーン４６２ｃ／４６２ｄは第２クロック領域５０４の下で動作する。
【００８５】
上述したＦＩＦＯ回路１００とは異なり、ＦＩＦＯ回路５００は、常に有効データ項目を左のプットインタフェースから右のゲットインタフェース５０８に渡す。ＦＩＦＯ回路５００に関するプロトコルにおいて、いずれのインタフェースにもアクティブな要求は存在しない。代わりに、ゲットインタフェース５０８およびプットインタフェース５０６を、データ項目の連続フローをアクティブに停止または遮断するように構成する。前記フローを停止するために、リレー局４６２ｃはｓｔｏｐＩｎ４７６を示す。同様に、ＦＩＦＯ回路５００は、パケット入力信号４６８（ｐａｃｋｅｔＩｎ）においてプットインタフェース５０６からのデータ項目を常にエンキューする。したがって、ＦＩＦＯ回路１００と異なり、プット要求信号５１４（ｒｅｑ＿ｐｕｔ）を単独で使用してデータ有効性を示し、プット要求信号５１４を制御信号ではなくパケット入力信号４６８（ｐａｃｋｅｔＩｎ）の一部として処理する。いっぱいになった場合、ＦＩＦＯ回路５００はプットインタフェース５０６を、グローバルフル信号１８（ｆｕｌｌ）であるｓｔｏｐＯｕｔ５１２を示すことによって停止する。したがって、単一クロックリレー局システム４６０と異なり、例えＳｔｏｐＩｎ４７６がゲットインタフェース５０８において示されなかったとしても、混合クロックＦＩＦＯ回路リレー局５００はプットインタフェース５０６において停止することができ、ＳｔｏｐＯｕｔ４７８を示すことができる。
【００８６】
ＦＩＦＯ回路５００はＦＩＦＯ回路１００と同様であり、ここに示すようないくつかの変更がある。図４０の参照と共に、実際的にはフル検出器７２を図１７−１９に関して上述したように実現し、セル５７０ａ、５７０ｂ、５７０ｃおよび５７０ｄにおいて空ビット５８２ａ、５８２ｂ、５８２ｃおよび５８２ｄ（ｅ＿ｉ）の数を決定する。前記ＦＩＦＯ回路リレー局は通常はデータをすべてのクロックサイクルにおいて送り、デッドロックが生じないようにするため、ＦＩＦＯ回路１００のバイモデル空検出器７４（図１８−１９参照）は必要ない。代わりに、空検出器５７４は、図１８において示したほとんど空検出器１２０と実際的に同様である。図２０−２１に関して上述したＦＩＦＯ回路１００のプットコントローラ１７６およびゲットコントローラ１７８を、ＦＩＦＯ回路５００において変更する。ＦＩＦＯ回路１００において、プットコントローラ１７６は、プット要求信号１４（ｒｅｑ＿ｐｕｔ）を受ける場合、有効データ項目のエンキューを可能にする。ＦＩＦＯ回路５００のプットコントローラ５７６は、単に有効データ項目を通過させる。プットコントローラ５７６は、ＦＩＦＯ回路５００がいっぱいにならない限り、データ項目を連続的にエンキューする。したがって、プットコントローラ５７６を、この好適実施形態において、グローバルフル信号（ｆｕｌｌ）におけるインバータとして実現する（図４１参照）。デキューを要求次第行ったＦＩＦＯ回路１００のゲットコントローラ１７８と異なり、ゲットコントローラ５７８は、データ項目の連続的なデキューを可能にする。図４２に示すように、デキューを、ＦＩＦＯ回路５００が空になる場合（上述したようにほとんど空信号１２２（ｎｅ）が示される）か、前記ゲットインタフェースが、もはやデータ項目を、ｓｔｏｐＩｎ４７６を示すことによって受け入れることができない場合にのみ中断する。有効データおよび無効データの双方を渡してもよいため、ゲットコントローラ６７８は有効ビット５８４（ｖａｌｉｄ＿ｉ）も使用し、有効性信号３０（ｖａｌｉｄ＿ｇｅｔ）を計算する。
【００８７】
図４３、４４、４５、４７、４８および４９を参照し、ＦＩＦＯ回路６００および７００は、各々混合非同期−同期インタフェースおよび同期−非同期インタフェースと共に動作するように構成されたリレー局として動作する２つの追加の実施形態である。ＦＩＦＯ回路６００および７００は、２つの重大な設計の挑戦、混合された非同期／同期環境間の調和の能力と、長い相互接続遅延とに同時に取り組む。
【００８８】
非同期送り側４９０と同期受け側４６６との間のリレー局による通信の基本的なアーキテクチャを図４３に示す。前記非同期領域は、データパケットを（あるいは、ここにより詳細に考察する非同期リレー局（ＡＲＳ）４９４ａおよび４９４ｂのチェーンを経て）ＦＩＦＯ回路６００に送る。前記パケットを、次に、前記非同期領域に伝送し、同期リレー局４６２ａおよび４６２ｂのチェーンを経て受け側４６６へ送る。
【００８９】
原則として、前記非同期インタフェースにおける通信を、任意に頑健に行うことができ、リレー局が非同期領域出力における必要はない。２つの非同期データ符号化形式、二重レールバンドルデータおよび単一レールバンドルデータが当該技術分野において既知である。（単一レールバンドルデータは、Ｓ．ファーバー、“非同期設計”、１９９７年、サブミクロンエレクトロニクスの会報、４６１−４９２ページにおいてより詳細に記載されており、この文献はその全体における参照によってここに含まれる。）１対のワイヤにおいて各々のデータビットの値および有効性の双方を符号化する二重レール形式は、ワイヤ遅延に関して任意に頑健であり（しかし、重大なオーバヘッドを有する）、ＡＲＳのチェーンを必要としない。前記単一レールバンドルデータ形式は、前記データそれ自身と制御ワイヤとの間のタイミング仮定を有し、したがって、ＡＲＳのチェーンは、ステージ間のワイヤの長さを制限し、ホップを短くすることが望ましいかもしれない。最終的に、性能の問題に関して、ＡＲＳが必要なくても、これらはスループットを上げるのに望ましいかもしれない。ＡＲＳのチェーンを、マイクロパイプラインとして一般に知られる非同期ＦＩＦＯ回路を使用することによって直接実現することができる（マイクロパイプラインについてのさらなる詳細は、Ｉ．サザーランド、“マイクロパイプライン”、ＡＣＭの情報工学、３２（６）、７２０−７３８ページ、１９８９年と、Ｍ．シング他、ネズミ捕り：超高速変化合図非同期パイプライン”、ＡＣＭ  ＴＡＵ−００ワークショップ、２０００年とに記載されており、これらの双方は、これらの全体における参照によってここに含まれる）。
【００９０】
前記同期データパケットと異なり、前記非同期データパケットは有効性ビットを必要としない。むしろ、有効データパケットの存在を制御要求ワイヤにおいて合図し、ＡＲＳは受信データパケット間で無期限に待つことができる。したがって、標準のマイクロパイプラインは、所望のＡＲＳ動作を実現する。
【００９１】
図４４および４５において示すＦＩＦＯ回路６００は、非同期領域６０２と同期領域６０４との間で動作する。非同期インタフェース６４０は、上述したＦＩＦＯ回路２００における非同期インタフェース４０と同様であり、同じ通信プロトコルをサポートする。このインタフェースは、前記マイクロパイプラインインタフェースと正確に調和する。同様に、同期インタフェース６２０は、ＦＩＦＯ回路５００における個々の同期ゲットインタフェース５０８と同様であり、同じ通信プロトコルをサポートする。図４５を参照し、アーキテクチャレベルにおいて、ＦＩＦＯ回路６００は、図８に示すＦＩＦＯ回路２００と同様である。セル６７０ａ、６７０ｂ、６７０ｃおよび６７０ｄは、セル２７０ａ、２７０ｂ、２７０ｃおよび２７０ｄと実際的に同様である。ゲットコントローラ６７８は、（ゲットコントローラ１７８と実際的に同様である）ゲットコントローラ２７８と、上述するように異なる。空検出器６７４は、ＦＩＦＯ回路５００における空検出器５７４と実際的に同様であり、図１８に示すほとんど空検出器１２０に対応する。
【００９２】
ＦＩＦＯ回路６００は以下のように動作する。データ項目がその非同期インタフェース６４０において存在する場合は常に、ＦＩＦＯ回路６００はこれをエンキューする。同期インタフェース６２０において、ＦＩＦＯ回路６００は、空になるか、右のリレー局によって停止されない限り、クロックサイクルごとにデータ項目を出力する。したがって、ＦＩＦＯ回路５００と異なり、データパケットは、ＦＩＦＯ回路６００が停止する場合にのみ無効になる。ゲットインタフェース６２０は、ＦＩＦＯ回路６００が空であるか、右から停止された場合、停止する。しかしながら、ＦＩＦＯ回路６００は無効データパケットをエンキューしないため、右のインタフェースは、ＦＩＦＯ回路６００が停止しない限り、有効データパケットのみを受ける。
【００９３】
ゲットコントローラ６７８の実現を図４６に示す。ゲットコントローラ６７８は、右から停止されない場合（ｓｔｏｐＩｎ＝０）で、前記リレー局が空でない場合（ｎｅ＝０）、ゲット動作を可能にする（ｅｎ＿ｇｅｔ＝１）。これは、ＦＩＦＯ回路１００のゲットコントローラ１７８と同じように動作する。右に送られたパケットは、前記リレー局が停止されるか、空である場合、無効である。したがって、前記非同期インタフェースから受けたすべてのパケットは有効であり、したがって、別個の有効性ビットは必要なく、代わりに、ゲットイネーブル信号６８６（ｅｎ＿ｇｅｔ）を有効性信号３０（ｖａｌｉｄ＿ｇｅｔ）として使用する。
【００９４】
同期送り側４６４と非同期受け側４９２との間のリレー局による通信の基本アーキテクチャを図４７に示す。前記同期領域は、データパケットを、同期リレー局４６２ａおよび４６２ｂのチェーンを経てＦＩＦＯ回路８００に送る。前記パケットを、次に、非同期受け側２９２へ、好適には前記非同期領域におけるＡＲＳ４９４ａおよび４９４ｂのチェーンを経て伝送する。
【００９５】
ＦＩＦＯ回路７００のインタフェースを図４８に示す。非同期インタフェース７５０は、図９に示すＦＩＦＯ回路５００の非同期インタフェース５０と実際的に同様であり、同じ通信プロトコルをサポートする。同様に、図４８に示す同期インタフェース７１０は、ＦＩＦＯ回路３００の同期インタフェース１０と実際的に同様であり、同じ通信プロトコルをサポートする。図４９に示すＦＩＦＯ回路７００のセル７７０ａ、７７０ｂ、７７０ｃおよび７７０ｄは、図１０に示すＦＩＦＯ回路のセルセル３７０ａ、３７０ｂ、３７０ｃおよび３７０ｄと実際的に同様である。ＦＩＦＯ回路７００とＦＩＦＯ回路３００との間の唯一の重大な違いは、各々のＦＩＦＯ回路のプットコントローラである。
【００９６】
通常動作中、ＦＩＦＯ回路７００は、データパケットを前記同期インタフェースから非同期インタフェースに伝送する。右における前記非同期リレー局は、ＦＩＦＯ回路７００がデータを供給する時は常にデータパケットをエンキューする。しかしながら、前記同期インタフェースにおいて、すべての非同期データパケットは有効でなければならないので、ＦＩＦＯ回路７００はフィルタとして動作する。入ってくる同期パケットの有効性ビット１４（ｖａｌｉｄ＿ｐｕｔ）を使用し、これらをフィルタ処理する。より特に、前記パケットが有効である場合、ＦＩＦＯ回路７００を、このパケットをエンキューするように構成し、そうでなければ、このパケットを破棄するように構成する。ＦＩＦＯ回路７００は、有効データパケットのみをエンキューし、ＦＩＦＯ回路７００がいっぱいの場合、前記プットインタフェースを停止する。上述したＦＩＦＯ回路５００は、受けたすべてのデータパケットをエンキューし、もういっぱいのセルがない場合、停止する。これと相違して、ＦＩＦＯ回路７００は、以下の条件、（１）該ＦＩＦＯがいっぱい、および／または（２）無効データパケットを受けた場合、という条件の下で停止する。
【００９７】
プットコントローラ７７６の好例の実現を、図５０において与える。プットコントローラ７７６は、前記リレー局がいっぱいでなく（ｆｕｌｌ＝０）、入ってくるデータパケットが有効である（ｖａｌｉｄ＿ｐｕｔ＝１）場合にのみ、プット動作を可能にする（ｅｎ＿ｐｕｔ＝１）。プットコントローラ７７６の実現は、プットコントローラ１７６と同様であるが、（ｒｅｑ＿ｐｕｔのような）明示的なプット要求信号の役割を、すべてのパケットに付随する暗示的な有効ビット１４（ｖａｌｉｄ＿ｐｕｔ）によって得た。
【００９８】
例
種々のＦＩＦＯ回路設計の性能を評価するために、好例のＦＩＦＯ回路１００、２００、３００、５００、６００および７００の各々をシミュレートした。各々のＦＩＦＯ回路を、市販のツールと学術的なツールの双方を使用してシミュレートした。前記設計を、ライブラリおよびカスタム回路の双方を使用して構築し、ケイデンスＨＳＰＩＣＥを使用してシミュレートした。バーストモードコントローラを、ミニマリスト（ミニマリストは、Ｒ．フーラー他“ミニマリスト：バーストモード非同期マシーンの組み立て、検証および試験可能性に関する環境”、ＣＵＣＳ−０２０−９９、１９９９年においてより詳細に説明されており、この文献は、その全体における参照によってここに含まれる）を使用して組み立て、前記ペトリネットコントローラを、ペトリフィ（ペトリフィは、Ｊ．コータデラ他、“ペトリフィ：非同期コントローラの同時仕様および組み立てを操作するツール”、ＩＥＩＣＥ情報およびシステムにおける処理、Ｖｏｌ．Ｅ８０−Ｄ、ナンバー３、３１５−３２５ページ、１９９７年３月においてより詳細に説明されており、この文献は、その全体における参照によってここに含まれる）を使用して組み立てた。前記ＦＩＦＯ回路設計を、０．６μＨＰ  ＣＭＯＳ技術において、３．３Ｖおよび３００Ｋにおいてシミュレートした。
【００９９】
以下は、前記制御バスおよびデータグローバルバスのモデル化における特別な考察である。制御バスｐｕｔ＿ｒｅｑ／ｅｎ＿ｐｕｔおよびｇｅｔ＿ｒｅｑ／ｅｎ＿ｒｅｑを、適切なバッファリングによって挿入した。承認信号ｐｕｔ＿ａｃｋおよびｇｅｔ＿ａｃｋを、個々の承認を１つのグローバル承認に合併するＯＲゲートのツリーとして構成する。ｇｅｔ＿ｄａｔａおよびｄａｔａ＿ｇｅｔのモデル化において、前記バスにおける各々のビットをトライステートバッファによって駆動する。前記環境によって寄与された負荷と、前記ＦＩＦＯ回路内の長いワイヤによって寄与された負荷の双方をモデル化する。前記モデルは、前記環境が２つのインバータによって負荷に寄与し、各々のワイヤが１セルあたり２つのインバータのキャパシタンス（おおよそ、１ワイヤあたり２ｎインバータ）によって寄与するという仮定を形成する。
【０１００】
２つの測定基準、呼び出し時間およびスループットを各設計に関してシミュレートした。呼び出し時間は、空のＦＩＦＯ回路において、プットインタフェースにおけるデータの入力から、ゲットインタフェースにおける出力においてこのデータが存在するまでの遅延である。スループットを、プットまたはゲット動作中のサイクルタイムの逆として規定する。スループットおよび呼び出し時間を、異なったＦＩＦＯ回路容量およびデータ項目幅に関して計算した。前記ＦＩＦＯ回路の容量を、４、８または１６セルに設定した。これらのＦＩＦＯ回路の各々に関して、データ項目幅を８または１６ビットのいずれかに設定した。
【０１０１】
最高スループットの結果を表１および２において与える。同期インタフェースに関して、スループットを、該インタフェースにクロック供給することができる最高クロック周波数として表す。前記非同期インタフェースはクロックを持たないため、スループットを１００万動作／秒（該インタフェースが１秒において行うことができるデータ動作数）において与える。
【０１０２】
【表１】
2011227919.tif 000003
【０１０３】
【表２】
2011227919.tif 000004
【０１０４】
前記スループットの結果は、前記ＦＩＦＯ回路設計と矛盾しない。前記同期ゲットインタフェースは、空検出器７４の複雑さのため、前記同期プットインタフェースより遅い。また、リレー局同期プットインタフェースは、これらにおけるプット検出器の単純さのため、これらのＦＩＦＯ回路の対応物よりもいくぶん速い。同期側において、前記ゲットインタフェースは、前記レジスタの出力が前記データバスに９おいて早く可能になるため、たいがいは前記プットインタフェースより速くなる傾向がある。
【０１０５】
空のＦＩＦＯ回路による呼び出し時間を、８ビットデータ項目を有する設計に関してのみ示す（表３）。
【０１０６】
【表３】
2011227919.tif 000005
呼び出し時間に関する実験構成は以下の通りであり、空のＦＩＦＯ回路において、前記ゲットインタフェースはデータ項目を要求する。任意の時間後において、前記プットインタフェースはデータ項目を置く。前記呼び出し時間を、前記プットデータバスが有効データを有する瞬時と、前記ゲットインタフェースが前記データ項目を受け、これを使用することができる瞬時との間の経過時間として計算する。
【０１０７】
同期受け側を有するＦＩＦＯ回路に関する呼び出し時間は、ユニークに規定されない。呼び出し時間は、データ項目がセルにおいて安全にエンキューされる瞬時と共に変化する。データ項目が前記プットインタフェースによってＣＬＫ＿ｇｅｔの立ち上がりエッジの直後にエンキューされた場合、呼び出し時間は長くなる（表３における「最長」列）。前記データ項目が、前記空検出器が計算を開始する前に右からエンキューされた場合、呼び出し時間は短くなる（「最短」列）。しかしながら、非同期受け側は、前記データ項目をそのキューイング直後につかむことができ、したがって、呼び出し時間はユニークに規定されない。より興味深いことには、前記非同期受け側は同期化を必要としないため、非同期領域との通信に関する呼び出しをきわめてより高速に行うことができる。
【０１０８】
前記スループットおよび呼び出し時間の結果は、バスを基礎とする設計に関してかなり良好である。スループットは、非同期インタフェースより同期インタフェースに関して高速になる傾向がある。空のＦＩＦＯ回路による呼び出し時間は、前記受信器が非同期である場合、より短くなる。
【０１０９】
上記は本発明の原理の説明的なものにすぎず、種々の変形を、当業者によって、本発明の範囲および精神から逸脱することなく行うことができることは理解されるであろう。
【図１】
2011227919.tif 000006
【図２】
2011227919.tif 000007
【図３】
2011227919.tif 000008
【図４】
2011227919.tif 000009
【図５】
2011227919.tif 000010
【図６】
2011227919.tif 000011
【図７】
2011227919.tif 000012
【図８】
2011227919.tif 000013
【図９】
2011227919.tif 000014
【図１０】
2011227919.tif 000015
【図１１】
2011227919.tif 000016
【図１２】
2011227919.tif 000017
【図１３】
2011227919.tif 000018
【図１４】
2011227919.tif 000019
【図１５】
2011227919.tif 000020
【図１６】
2011227919.tif 000021
【図１７】
2011227919.tif 000022
【図１８】
2011227919.tif 000023
【図１９】
2011227919.tif 000024
【図２０】
2011227919.tif 000025
【図２１】
2011227919.tif 000026
【図２２】
2011227919.tif 000027
【図２３】
2011227919.tif 000028
【図２４】
2011227919.tif 000029
【図２５】
2011227919.tif 000030
【図２６】
2011227919.tif 000031
【図２７】
2011227919.tif 000032
【図２８】
2011227919.tif 000033
【図２９】
2011227919.tif 000034
【図３０】
2011227919.tif 000035
【図３１】
2011227919.tif 000036
【図３２】
2011227919.tif 000037
【図３３】
2011227919.tif 000038
【図３４】
2011227919.tif 000039
【図３５】
2011227919.tif 000040
【図３６】
2011227919.tif 000041
【図３７】
2011227919.tif 000042
【図３８】
2011227919.tif 000043
【図３９】
2011227919.tif 000044
【図４０】
2011227919.tif 000045
【図４１】
2011227919.tif 000046
【図４２】
2011227919.tif 000047
【図４３】
2011227919.tif 000048
【図４４】
2011227919.tif 000049
【図４５】
2011227919.tif 000050
【図４６】
2011227919.tif 000051
【図４７】
2011227919.tif 000052
【図４８】
2011227919.tif 000053
【図４９】
2011227919.tif 000054
【図５０】
2011227919.tif 000055
【外国語明細書】
2011227919000001.pdf