(57)【特許請求の範囲】
【請求項１】
第１デバイスおよび第２デバイスと用いられるデータ同期システム（１２）であり、前記第１デバイスは第１周波数で発振する第１クロック信号に基づいて動作し、前記第２デバイスは第２周波数で発振する第２クロック信号に基づいて動作し、前記第１周波数は前記第２周波数よりも大きい、ところのデータ同期システムであって：
前記第１デバイスの出力を受ける入力を有する転送ラッチ（４０）であり、前記転送ラッチは、ＴＸＦＲ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＴＸＦＲ  Ｃ２信号に応答してデータ・ビットを送り出す、ところの転送ラッチ（４０）；
前記転送ラッチの出力を受ける入力と、前記第２デバイスに結合された出力とを有するバス・ラッチ（４６）であり、前記バス・ラッチは、ＢＵＳ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＢＵＳ  Ｃ２信号に応答してデータ・ビットを送り出す、ところのバス・ラッチ（４６）；
前記第２デバイスの出力に結合された入力と、前記第１デバイスに結合された出力とを有する受信ラッチ（４８）であって、前記受信ラッチは、ＲＣＶ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＲＣＶ  Ｃ２信号に応答してデータ・ビットを送り出す、受信ラッチ（４８）；
第１デバイスの出力に結合された入力と、第１デバイスに結合された出力とを有するコア・ラッチ（３８）であり、前記コア・ラッチは、ＣＯＲＥ  Ｃ１信号に応答して前記入力においてデータ・ビットを捕捉し、ＣＯＲＥ  Ｃ２信号に応答して前記データ・ビットを送り出す、ところのコア・ラッチ（３８）；および
前記ＣＯＲＥ  Ｃ１，ＣＯＲＥ  Ｃ２，ＴＸＦＲ  Ｃ１，ＴＸＦＲ  Ｃ２，ＢＵＳ  Ｃ１，ＢＵＳ  Ｃ２，ＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２信号を生成するクロック発生回路（８０，８２，８４，８６，９４，９６）であって、前記ＢＵＳ  Ｃ１，ＢＵＳ  Ｃ２，ＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２信号は前記第２周波数で発振しかつ前記ＴＸＦＲ  Ｃ１，ＴＸＦＲ  Ｃ２，ＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２は前記第１周波数で発振し、そして前記第１クロック信号の第１の所定のエッジおよび前記第２クロック信号の第２の所定のエッジの一致に応じて、前記クロック発生回路は、（１）前記ＴＸＦＲ  Ｃ２信号のアサートを削除し、かつ（２）前記第１クロック信号の半サイクルで前記ＲＣＶ  Ｃ２のアサートを遅延させる、クロック発生回路（８０，８２，８４，８６，９４，９６）；
によって構成されることを特徴とするデータ同期システム。
【請求項２】
第１周波数で発振する第１クロック信号に基づいて動作するデータ・プロセッサ（１０）であって、前記データ・プロセッサは、第２周波数で発振する第２クロック信号に基づいて動作するバス（データ・バス，アドレス・バス）に結合され、前記第１周波数は前記第２周波数よりも大きい、ところのデータ・プロセッサであって；
前記第１周波数で動作するコア回路（１４，１６）であり、前記バスから受けた命令を実行し、かつ結果を前記バスに書き込む、コア回路（１４，１６）；ならびに
前記コア回路および前記バスを結合するバス・インタフェース回路（１２）であり、複数のビット経路から成る前記バス・インタフェース回路；
から構成されたデータ・プロセッサであって：
前記複数のビット経路のそれぞれが：
前記コア回路の出力を受ける入力を有する転送ラッチ（４０）であって、前記転送ラッチは、ＴＸＦＲ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＴＸＦＲ  Ｃ２信号に応答してデータ・ビットを送り出す、転送ラッチ（４０）と；
前記転送ラッチの出力を受ける入力と、前記バスに結合された出力とを有するバス・ラッチ（４６）であって、前記バス・ラッチは、ＢＵＳ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＢＵＳ  Ｃ２信号に応答してデータ・ビットを送り出す、バス・ラッチ（４６）と；
前記バスに結合された入力と、前記コア回路に結合された出力とを有する受信ラッチ（４８）であって、前記受信ラッチは、ＲＣＶ  Ｃ１信号に応答して前記入力にてデータ・ビットを捕捉し、ＲＣＶ  Ｃ２信号に応答してデータ・ビットを送り出す、受信ラッチ（４８）と；
前記コア回路の出力に結合された入力と、前記コア回路に結合された出力とを有するコア・ラッチ（３８）であり、前記コア・ラッチは、ＣＯＲＥ  Ｃ１信号に応答して前記入力においてデータ・ビットを捕捉し、ＣＯＲＥ  Ｃ２信号に応答して前記データ・ビットを送り出す、ところのコア・ラッチ（３８）；および
前記ＣＯＲＥ  Ｃ１，ＣＯＲＥ  Ｃ２，ＴＸＦＲ  Ｃ１，ＴＸＦＲ  Ｃ２，ＢＵＳ  Ｃ１，ＢＵＳ  Ｃ２，ＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２信号を生成するクロック発生回路（８０，８２，８４，８６，９４，９６）であって、前記ＢＵＳ  Ｃ１，ＢＵＳ  Ｃ２，ＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２信号は前記第２周波数で発振しかつ前記ＴＸＦＲ  Ｃ１，ＴＸＦＲ  Ｃ２，ＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２は前記第１周波数で発振し、そして前記第１クロック信号の第１の所定のエッジおよび前記第２クロック信号の第２の所定のエッジの一致に応じて、前記クロック発生回路は、（１）前記ＴＸＦＲ  Ｃ２信号のアサートを削除し、かつ（２）前記第１クロック信号の半サイクルで前記ＲＣＶ  Ｃ２のアサートを遅延させる、クロック発生回路（８０，８２，８４，８６，９４，９６）；
から成るバス・インタフェース回路（１２）；
によって構成されることを特徴とするデータ・プロセッサ。
【請求項３】
第１周波数で発振する第１クロック信号に基づいて動作するデータ・プロセッサ（１０）であって、前記データ・プロセッサは、第２周波数で発振する第２クロック信号に基づいて動作するバス（データ・バス，アドレス・バス）に結合され、前記第１周波数は前記第２周波数よりも大きい、ところのデータ・プロセッサであって；
第１入力と、前記第２クロック信号に結合された第２入力とを備えた位相検出器（７２，７６，７８）であり、前記第２クロック信号と、前記第１入力にて受けた入力との間の位相差に応答して制御信号を生成する位相検出器；
前記位相検出器に結合されたクロック発生回路（９４，９６）であり、第３クロック信号を発生し、前記第３クロック信号の位相および周波数は前記制御信号に応答する、クロック発生回路（９４，９６）；
前記クロック発生回路に結合されたバス・リジェネレータ（８０）であり、ＢＵＳ  Ｃ１信号およびＢＵＳ  Ｃ２信号を発生し、前記ＢＵＳ  Ｃ１信号および前記ＢＵＳ  Ｃ２信号は、前記第２周波数で発振し、前記ＢＵＳ  Ｃ１信号は前記位相検出器の第１入力に結合される、バス・リジェネレータ（８０）；
前記クロック発生回路に結合された受信リジェネレータ（８２）であり、ＲＣＶ  Ｃ１信号およびＲＣＶ  Ｃ２信号を発生し、前記ＲＣＶ  Ｃ１信号および前記ＲＣＶ  Ｃ２信号は前記第２周波数で発振し、前記受信リジェネレータは、前記第１クロック信号の第１の所定のエッジと前記第２クロック信号の第２の所定のエッジとが一致したときに、前記第１クロック信号の半サイクルでＲＣＶ  Ｃ２のアサートを遅延させる、受信リジェネレータ（８２）；
前記クロック発生回路に結合された転送リジェネレータ（８４）であり、ＴＸＦＲ  Ｃ１信号およびＴＸＦＲ  Ｃ２信号を発生し、前記ＴＸＦＲ  Ｃ１信号および前記ＴＸＦＲ  Ｃ２信号は前記第１周波数で発振し、一致時にＴＸＦＲ  Ｃ２のアサートを削除する、転送リジェネレータ（８４）；および
前記クロック発生回路に結合されたコア・リジェネレータ（８６）であり、ＣＯＲＥ  Ｃ１信号およびＣＯＲＥ  Ｃ２信号を発生し、前記ＣＯＲＥ  Ｃ１信号および前記ＣＯＲＥ  Ｃ２信号は、前記第１周波数で発振する、コア・リジェネレータ（８６）；
によって構成されることを特徴とするデータ・プロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、データ処理システムに関し、さらに詳しくは、データ処理システムで用いられるデータ同期方法に関する。
【０００２】
【従来の技術】
多くのデータ処理システムは、異なるクロック周波数で動作するサブシステムと設計される。この方法は、精選したサブシステムのスピードを残りのサブシステムに比べて増加することにより全体的な処理スループットを向上させることができる。一般に、これらの高速サブシステムの性能は、システムの性能全体にとって重要であるか、あるいは向上させるのが比較的安価のいずれかである。この設計方法の一例として、関連バスのクロック周波数の数倍のクロック周波数で動作する単一のＶＬＳＩ（ｖｅｒｙ  ｌａｒｇｅ  ｓｃａｌｅ  ｉｎｔｅｇｒａｔｅｄ）データ・プロセッサを有するデータ処理システムがある。この場合、データ処理システム内の全てではないにしろほとんどの他のサブシステムは、低いバス・クロック・スピードで動作する。一般に、２つのクロック周波数の比率は、２つの整数の比率、例えば、２：１，３：１，４：１などで表すことができる。これらの比率の範囲は、システム間通信を同期させるため２つのクロック信号がある程度の周波数位相整合を有するという実際的な条件を反映する。位相整合が頻繁になればなるほど、高速データ・プロセッサと低速バスとの間でデータを転送する回数が増える。
【０００３】
【発明が解決しようとする課題】
関連バスとは異なるクロック周波数で動作するデータ・プロセッサを有するデータ処理システムは、データ・プロセッサとバスとの間のデータ転送を同期しなければならない。例えば、２：１プロセッサ・バス・システムでは、データ・プロセッサが１プロセッサ・クロック・サイクルでしか信号をアサートしなければ、データ・プロセッサはバス信号の適正位相中に出力信号をアサートしない場合がある。逆に、バスは、２プロセッサ・クロック・サイクルで、データ・プロセッサの入力信号をアサートする場合がある。これら両方の場合では、データ転送は不安定になる。第１の場合では、データはデータ・プロセッサからバスに全く転送されないことがある。第２の場合では、バスは同じデータをデータ・プロセッサに２回転送する。
【０００４】
既知の同期方法には制限がある。一般に、データ転送方法は、非同期あるいは同期として表すことができる。これら各方法には、異なる同期問題がある。
【０００５】
非同期の場合、最少信号ホールド時間以外には、２つの通信するサブシステム間にタイミング条件はない。一つの既知の解決方法では、低速出力信号を、一連のシーケンシャル・ラッチ素子を介して高速入力デバイスによってサンプリングする。高速入力デバイスのクロッキング信号は、各ラッチ素子をクロックする。各連続したラッチ素子は、準安定状態（ｍｅｔａｓｔａｂｌｅ  ｓｔａｔｅ）が低速デバイスから高速デバイスに渡される可能性を低減する。残念ながら、各追加ラッチは、サブシステムからサブシステムへの伝搬時間を、追加高速クロック・サイクル分だけ増加させる。
【０００６】
同期の場合、２つの通信するサブシステム間にタイミング条件がある。特に、受信側デバイスのクロック信号の特定の位相中に信号をアサートしなければならない。第２の既知の解決方法では、単一のラッチ素子マルチプレクサ回路が異なるクロック周波数で動作する２つのサブシステムを連結する。ラッチ素子は、各高速クロック・サイクルと同時にマルチプレクサの出力をサンプリングする。マルチプレクサは、以前ラッチした値または入力信号のいずれかを出力する。マルチプレクサの出力は、受信側サブシステムのタイミング条件に従って各入力信号を渡すように、制御信号によって選択される。一般に、受信側サブシステムのクロック信号は、高速クロック信号のＮ−１クロック・パルスを「飲み込む（ｓｗａｌｌｏｗ）  」ことによって生成され、ここでプロセッサ対バス・クロック周波数の比率は、Ｎ：１である。この方法は、２つのクロック周波数の比率が整数の場合にのみ堅牢である。それ以外の場合には、Ｎが１．５，２．５などのとき、この方法は１つおきのバス・クロックで半サイクル転送を許可する。さらに、特定の解決は、一つのプロセッサ対バス・クロック比でのみ一般に有効となる。
【０００７】
【実施例】
図１は、本発明により構成されたデータ・プロセッサ１０のブロック図を示す。図示のように、データ・プロセッサ１０は、バス・インタフェース・ユニット１２（以下では簡単にＢＩＵ１２という）を有する。ＢＩＵ１２は、データ・プロセッサ１０と、データ・プロセッサ１０を他のデータ処理要素（図示せず）に接続するアドレス・バスおよび制御バスとの間のデータの流れを制御する。データ・プロセッサ１０およびＢＩＵ１２は、関連バスのクロック・スピードよりも高いクロック・スピードで動作する。従来技術の説明のところで説明したように、このクロッキング方式は、データ・プロセッサ１０を内蔵するデータ処理システムの性能を改善する。また、本開示の発明によれば、ＢＩＵ１２は、バス・クロック・レートの数倍のプロセッサ・クロック・レートによって生じる同期問題に対する汎用的な解決方法を提供する。この解決方法により、単一データ・プロセッサ・モデルをさまざまなバス周波数で利用できるようになる。さらに、本開示の発明は、非同期および同期データ転送システムに従来つきまとった問題である、データ・プロセッサと関連バスとの間のデータの流れに不必要な遅延を発生することや、また不安定な半サイクル・データ経路を許可することがない。
【０００８】
図１において、ＢＩＵ１２は、命令キャッシュ１４と、データ・キャッシュ１６とに接続される。命令キャッシュ１４は、命令ストリームをシーケンサ／ディスパッチ・ユニット１８に供給する。シーケンサ／ディスパッチ・ユニット１８は、個々の命令を適切な実行ユニット・ブロックに送出する。データ・プロセッサ１０は、固定小数点実行ユニット２０，分岐実行ユニット２２，浮動小数点実行ユニット２４およびロード／ストア実行ユニット２６を有する。これらの実行ユニット・ブロックは、リネーム・バッファ（ｒｅｎａｍｅ  ｂｕｆｆｅｒ）  ２８とアーキテクチュラル・レジスタ・ファイル（ａｒｃｈｉｔｅｃｔｕｒａｌ  ｒｅｇｉｓｔｅｒ  ｆｉｌｅ）  ３０とに接続される。
【０００９】
本開示の同期方法およびそのためのシステムのないデータ・プロセッサの動作は、当技術分野で周知である。一般に、シーケンサ／ディスパッチ・ユニット１８は、個々の命令を各実行ユニット２０，２２、２４，２６に発行する。各実行ユニットは、特定クラスの命令のうち１つまたはそれ以上の命令を実行する。各実行ユニットの特定クラスの命令は、実行ユニットの名称によって表される。例えば、分岐実行ユニット２２は、分岐命令を実行する。実行ユニット・ブロック２０，２２，２４，２６は、その演算結果をリネーム・バッファ２８内の指定されたエントリに返す。リネーム・バッファ２８は、本発明には関係ない既知のプロトコルに従ってアーキテクチュラル・レジスタ・ファイル３０内の値を更新する。リネーム・バッファ２８およびアーキテクチュラル・レジスタ・ファイル３０は、オペランドを実行ユニット・ブロック２０〜２６に与える。
【００１０】
データ同期方法およびそのためのシステムを有するデータ・プロセッサ１０の動作について、図２ないし図１３を参照して以下で説明する。概して、データ・プロセッサ１０と、アドレスおよびデータ・バスとは、１：１のデータ・プロセッサ・クロック周波数とバス・クロック周波数の比率では、同期方法やシステムなしにデータ通信を可能にする通信プロトコルに従う。例えば、特定の期間でバス・クロックの特定の位相中にいずれかのバス上でアサートされた信号は、データ・プロセッサおよびバスが同一周波数で動作する場合には、次の特定のエッジ遷移の発生時にデータ・プロセッサ１０によって正しくラッチされる。さらに、データ・プロセッサ１０およびアドレスおよびデータ・バスは、「ハンドシェイク」通信プロトコルに従う。ハンドシェイク通信プロトコルとは、プロトコル参加側の任意のクロック・サイクルを任意の種類のデータ・プロトコル動作のために利用できるプロトコルのことである。プロトコル参加側間の制御信号のセット上でアサートされた論理信号のセットは、各クロック・サイクル中にどの動作が行われるのかを決定する。特定のプロトコルは、本開示の発明の一部ではない。データ・プロセッサ１０をできるだけ高いクロック周波数で動作させることが一般に有利である。ただし、アドレスおよびデータ・バスを同じ高いクロック周波数で動作させることは経済的でなく、不可能でさえある。本開示のデータ同期システムは、このようなシステムに内蔵できる。
【００１１】
図２は、図１に示すＢＩＵ１２の一部のブロック図を示す。図２は、ＢＩＵ１２内の単一のビット経路を示すことに理解されたい。当業者であれば、ＢＩＵ１２には図示以外の多くの他の個別のビット経路があることが理解される。さらに、図２は、ＢＩＵ１２の各機能ではなく、本開示の発明をさらにわかりやすく説明するため汎用論理ブロックを示す。これらの機能は、インプリメントに依存し、本開示の発明の一部ではない。当業者であれば、各ビット経路には、それに関連して、固有論理機能および固有論理ブロックがあることが理解されよう。また、全てのビット経路が図２の全ての部分を含むわけではないが、各ビット経路の一般的な形状は同じである。また、個別のビット経路の多くは汎用論理ブロック内で相互接続されることが当業者に理解される。
【００１２】
一般に、ＢＩＵ１２は、４つの時間領域、すなわち、コア・レート領域（「ＣＯＲＥ」），転送レート領域（「ＴＸＦＲ」），バス・レート領域（「ＢＵＳ」）および受信レート領域（「ＲＣＶ」）に従って、データ・プロセッサ１０とアドレスおよびデータ・バスとの間でデータを処理する。ＣＭＯＳ（ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｍｅｔａｌ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ）  構成では、マスタ・スレーブ・ラッチは、中間結果を論理ステージ間でホールドするために、入力／出力バッファとして用いられる。ＣＭＯＳマスタ・スレーブ・ラッチのマスタ部分は、一般にＣ１パルスと呼ばれる信号によって制御される。Ｃ１パルスをアサートすることにより、マスタ部分はラッチへのデータ入力を捕捉する。ＣＭＯＳマスタ・スレーブ・ラッチのスレーブ部分は、一般にＣ２パルスと呼ばれる信号によって制御される。Ｃ２パルスをアサートすることにより、スレーブ部分は、以前のＣ１パルス中に捕捉されたデータ入力をラッチの出力に送り出す。本開示の発明に従って、各４つのクロック領域について個別のＣ１およびＣ２制御信号が存在する。
【００１３】
コア・レート領域は、データ・プロセッサ１０の通常クロック領域である。コア・レート領域は、グローバル分散クロック（「ＧＣＬＫ」：ｇｌｏｂａｌｌｙ  ｄｉｓｔｒｉｂｕｔｅｄ  ｃｌｏｃｋ）の各サイクルに一回クロックする。ＧＣＬＫの低位相は濾波され、制御信号ＣＯＲＥ  Ｃ１を生成する。ＧＣＬＫの高位相は濾波されて、制御信号ＣＯＲＥ  Ｃ２を生成する。データ・プロセッサ１０の大部分は、コア・レート領域に従って動作する。ＢＩＵ１２は、コア・レート領域で動作してデータ・プロセッサ１０の残りの部分から情報を受け、この情報を処理し、データ・プロセッサ１０の残りの部分に返送する回路を内蔵する。
【００１４】
転送レート領域は、コア・レートがバス・クロック・サイクルの開始前に半サイクルしかクロックしない場合の除いて、コア・レートの各サイクルで一回クロックする。これらの場合には、バス・レート・クロックの立ち上がりエッジは、コア・レート・クロックの立ち下がりエッジと一致する。ここで、ＴＸＦＲ  Ｃ１およびＴＸＦＲ  Ｃ２の両方は濾波される。ＢＩＵ１２は、転送レート領域で動作してデータ・プロセッサ１０の残りの部分から情報を受け、この情報を処理し、バス・レート領域で動作するＢＩＵ１２の部分に送出する回路を内蔵する。転送レート領域は、非整数コア：バス・クロック比で発生する「半サイクル」経路中に、データがバスに転送されるのを防ぐ。本開示の発明の別の実施例では、半サイクルの場合にＣＯＲＥ  Ｃ２の次の発生までＴＸＦＲ  Ｃ２を単純に遅延させることも可能である。この別の実施例では、バス・レート・クロックの立ち上がりエッジの直後に発生するＴＸＦＲ  Ｃ１パルスは削除しなければならない。
【００１５】
バス・レート領域は、アドレスおよびデータ・バスの通常クロック領域である。上記のように、バス・レート領域は、性能上の理由から、コア・レート領域の整数倍遅く、あるいは整数プラス１／２倍遅くクロックする。バス・レート領域の周波数は、一般に、データ・プロセッサ１０の位相同期ループ（「ＰＬＬ」）に入力されるシステム・クロック（「ＳＹＳＣＬＫ」）によって表される。ＧＣＬＫの特定の低位相は濾波され、制御信号ＢＵＳ  Ｃ１を生成する。ＧＣＬＫの特定の高位相は濾波され、制御信号ＢＵＳ  Ｃ２を生成する。このように濾波された特定の位相については、図７および図８を参照して以下で説明する。ＢＩＵ１２は、バス・レート領域で動作してアドレスおよびデータ・バスから情報を受け、この情報を処理し、アドレスおよびデータ・バスに返送する回路を内蔵する。
【００１６】
受信レート領域は、コア・レートがバス・クロック・サイクルの開始前に半サイクルしかクロックしない場合を除いて、バス・レート領域の各サイクルで一回クロックする。これらの場合には、ＲＣＶ  Ｃ２は、ＣＯＲＥ  Ｃ２パルスと整合できるまで遅延される。ＢＩＵ１２は、受信レート領域で動作してアドレスおよびデータ・バスからできるだけすぐにデータをサンプリングする回路を内蔵する。ただし、ＢＩＵ１２は、完全なコア・クロック・サイクルが開始するまで、データをデータ・プロセッサ１０のコアに送り出さない。
【００１７】
さらに図２において、論理ブロック３２は、論理ブロック３４の出力から、命令キャッシュ１４および／またはデータ・キャッシュ１６から、それにＡＮＤゲート３６の出力から、シングル入力ビットを受ける。論理ブロック３２の出力は、マスタ・スレーブ・ラッチ（以下では「ラッチ」という）３８の入力と、ラッチ４０の入力とに結合される。ラッチ３８のマスタ部分は、制御信号ＣＯＲＥＣ１によってクロックされる。ラッチ３８のスレーブ部分は、制御信号ＣＯＲＥＣ２によってクロックされる。ラッチ３８のスレーブ部分の出力は、論理ブロック３４に結合される。ラッチ３８については、図３を参照して以下で説明する。ラッチ４０のマスタ部分は、制御信号ＴＸＦＲ  Ｃ１によってクロックされる。ラッチ４０のスレーブ部分は、制御信号ＴＸＦＲ  Ｃ２によってクロックされる。ラッチ３８のスレーブ部分の出力は、論理ブロック３４に結合される。
【００１８】
論理ブロック４２は、ラッチ４０のスレーブ部分の出力から、アドレス・バスおよび／またはデータ・バスから、それに論理ブロック４４の出力から、シングル入力ビットを受ける。論理ブロック４２の出力は、ラッチ４６の入力と、ラッチ４８の入力とに結合される。ラッチ４６のマスタ部分は、制御信号ＢＵＳ  Ｃ１によってクロックされる。ラッチ４６のスレーブ部分は、制御信号ＢＵＳ  Ｃ２によってクロックされる。ラッチ４６のスレーブ部分の出力は、論理ブロック５０に結合される。論理ブロック５０は、シングル・ビットをアドレスおよびデータ・バスに出力する。ラッチ４８のマスタ部分は、制御信号ＲＣＶ  Ｃ１によってクロックされる。ラッチ４８のスレーブ部分は、制御信号ＲＣＶ  Ｃ２によってクロックされる。ラッチ４８のスレーブ部分の出力は、論理ブロック４４に結合される。また、論理ブロック４４の出力は、ＡＮＤゲート３６の第１入力に結合される。ＡＮＤゲート３６の第２入力は、制御信号Ａ２／Ｂ４を受ける。制御信号Ａ２／Ｂ４は、論理ブロック４４の出力の第１部分を除く全てをマスクする。この第１部分は、ラッチ４８がその出力を論理ブロック４４に送り出した後に発生する最初のＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２パルスと一致する。制御信号Ａ２／Ｂ４の生成については、図７を参照して以下で説明する。
【００１９】
図３は、図２および他の図面に示すマスタ・スレーブ・ラッチ３８の回路図を示す。当業者であれば、ラッチ３８は、異なるクロック入力を除いて、図２に示す他のラッチと同一であることが理解される。従って、図２では、本発明を理解する上で図面の有用性を汎用化するため、制御信号は「Ｃ１」および「Ｃ２」と略されている。
【００２０】
ラッチ３８のマスタ部分は、パス・ゲート（ｐａｓｓ  ｇａｔｅ）  ５２の第１端子に結合されたデータ入力を受ける。パス・ゲート５２の第２端子は、インバータ５４の入力と、パス・ゲート５６の第１端子とに接続される。インバータ５４の出力は、インバータ５８の入力に結合される。インバータ５８の出力は、パス・ゲート５６の第２端子に接続される。パス・ゲート５２のｎ型デバイスおよびｐ型デバイスの制御電極は、制御信号Ｃ１と、「反転Ｃ１」と記された制御信号Ｃ１の論理補数とをそれぞれ受ける。パス・ゲート５６のｐ型デバイスおよびｎ型デバイスの制御電極は、Ｃ１および反転Ｃ１をそれぞれ受ける。インバータ５４の出力は、「ＩＮＶＥＲＴＩＮＧ  ＩＮＴＥＲＭＥＤＩＡＴＥ  ＯＵＴＰＵＴ」と記された中間出力を生成する。この中間出力は、入力の論理補数であり、一つのＣ１パルス後に出力される。通常コア・レートまたはバス・レート領域では、中間出力は半クロック・サイクル後に通過する。
【００２１】
ラッチ３８のスレーブ部分は、パス・ゲート６０の第１端子に結合された中間出力を受ける。パス・ゲート６０の第２端子は、インバータ６２の入力と、パス・ゲート６４の第１端子とに接続される。インバータ６２の出力は、インバータ６６の入力に結合される。インバータ６６の出力は、パス・ゲート６４の第２端子に接続される。パス・ゲート６０のｎ型デバイスおよびｐ型デバイスの制御電極は、制御信号Ｃ２と、「反転Ｃ２」と記された制御信号Ｃ２の論理補数とをそれぞれ受ける。パス・ゲート６４のｐ型デバイスおよびｎ型デバイスの制御電極は、Ｃ２および反転Ｃ２をそれぞれ受ける。インバータ６２の出力は、「ＯＵＴＰＵＴ」と記された最終出力を生成する。中間出力は、中間出力の補数であり、一つのＣ２パルス後に出力される。通常コア・レートまたはバス・レート領域では、入力は、完全なクロック・サイクル後にラッチ３８のマスタ部分およびスレーブ部分を通過する。
【００２２】
図４は、図２に示すＢＩＵ１２に入力される制御信号を生成すべく動作可能な位相同期ループ（「ＰＬＬ」）７０を示す。位相比較器７２は、インバータ７４の出力と、バス・レート領域クロックＳＹＳＣＬＫとを受ける。上記のように、ＳＹＳＣＬＫは、同期のためにデータ・プロセッサ１０に入力されるアドレスおよびデータ・バス・クロック信号である。位相比較器７２は、ＳＹＳＣＬＫの各立ち上がりエッジにおいてインバータ７４によって出力されるクロック信号の位相を比較する。ＳＹＳＣＬＫの位相がインバータ７４の出力よりも進む場合、位相比較器７２は制御信号ＵＰをアサートする。ＳＹＳＣＬＫの位相がインバータ７４の出力より遅れる場合、位相比較器７２は制御信号ＤＯＷＮをアサートする。
【００２３】
電圧制御発振器（「ＶＣＯ」）７６は、制御信号ＵＰおよびＤＯＷＮを受けて、クロック信号ＧＣＬＫの周波数の２倍の周期クロッキング信号を生成する。上記のように、ＧＣＬＫは、データ・プロセッサ１０全体で分散されるクロッキング信号である。一般に、ＶＣＯ７６は、ＵＰおよびＤＯＷＮのアサートによってそれぞれ充電および放電されるノード（図示せず）を内蔵する。このノードの電圧は、出力クロック信号の周波数を制御するために用いられる。一実施例では、この電圧は、リング発振器への一つまたはそれ以上の電源の印加を制御するために用いられる。ＶＣＯ７６の出力は、２分周回路（ｄｉｖｉｄｅ−ｂｙ−ｔｗｏ  ｃｉｒｃｕｉｔ）  ７８に結合される。２分周回路７８は、ＶＣＯによって出力されたクロック信号の周波数を２分の１にする。この分周により、ＧＣＬＫの均等なデューティ・サイクルが保証される（低位相および高位相は長さが等しい）。
【００２４】
上記のように、クロック信号ＧＣＬＫは、データ・プロセッサ全体で分散される。データ・プロセッサ１０内のクロック・スキュー（ｃｌｏｃｋ  ｓｋｅｗ）を最小限に抑えることを目的として、多数のクロック・リジェネレータ（ｃｌｏｃｋ  ｒｅｇｅｎｅｒａｔｏｒ）  用いられ、図２に示す各クラッチからのＧＣＬＫをバッファする。一実施例では、約３００個のクロック・リジェネレータが各ラッチからのＧＣＬＫをバッファする。ただし、全てのラッチが同一時間領域でクロックされるわけではない。本発明の４つの異なる時間領域については、図２を参照して上で説明した。
【００２５】
ＢＩＵ１２内には、４種類のクロック・リジェネレータが存在する。各種類の数は、ＢＩＵ１２に複雑性と、アドレスおよびデータ・バスの幅とに依存する。図示のため、各種類のリジェネレータの一つの例を図示する。バス・リジェネレータ（「ＢＵＳ  ＲＥＧＥＮ」と記される）８０は、ＧＣＬＫからと、ＱＵＡＬＩＦＩＥＲ  ＳＩＧＮＡＬＳのグループのうちの少なくとも一つから、クロックパルスＢＵＳ  Ｃ１およびＢＵＳ  Ｃ２を生成する。  ＱＵＡＬＩＦＩＥＲ  ＳＩＧＮＡＬＳのグループについては、図７を参照して以下で説明する。一つのバス・リジェネレータ８０のＢＵＳ  Ｃ１出力は、インバータ７４の入力に結合される。インバータ７４の出力は、各クロック領域をＳＹＳＣＬＫと同期させるために位相比較器７２によって用いられる。バス・リジェネレータ８０については、図８を参照して以下でさらに説明する。受信リジェネレータ（「ＲＣＶ  ＲＥＧＥＮ」と記される）８２は、ＧＣＬＫからと、ＱＵＡＬＩＦＩＥＲ  ＳＩＧＮＡＬＳのグループのうち少なくとも一つから、クロック・パルスＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２を生成する。受信リジェネレータ８２については、図９を参照して以下でさらに説明する。転送リジェネレータ（「ＴＸＦＲ  ＲＥＧＥＮ」と記される）８４は、ＧＣＬＫからと、ＱＵＡＬＩＦＩＥＲ  ＳＩＧＮＡＬＳのグループの少なくとも一つから、クロック・パルスＴＸＦＲ  Ｃ１およびＴＸＦＲＣ２を生成する。転送リジェネレータ８４については、図１０を参照して以下でさらに説明する。コア・リジェネレータ（「ＣＯＲＥ  ＲＥＧＥＮ」と記される）８６は、ＧＣＬＫからクロック・パルスＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２を生成する。コア・リジェネレータ８６については、図１１を参照して以下でさらに説明する。
【００２６】
データ・プロセッサ１０内のほとんどのクロック・リジェネレータは、非ＢＩＵ回路についてはクロック・パルスＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２を生成する。図４は、これらのコア・リジェネレータ（「ＣＯＲＥ  ＲＥＧＥＮ」と記される）８８，９０のうち２つを示す．
プリクォリファイア論理ブロック（ｐｒｅｑｕａｌｉｆｉｅｒ  ｌｏｇｉｃ  ｂｌｏｃｋ）９４は、ＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２クロック信号と、入力信号ＣＯＮＦＩＧ  ＢＩＴＳを受けて、制御信号反転ＰＲＥ−Ａおよび反転ＰＲＥ−Ｂを生成する。（エンジニアリング分野では、上線（反転）を用いてアクティブ・ロー信号を表すのが慣習である。）ＣＯＮＦＩＧ  ＢＩＴＳにより、データ・プロセッサ１０のユーザは、ＧＣＬＫの周波数とＳＹＳＣＬＫの周波数の比率を設定できる。これらは、いくつかの専用入力／出力ピンを介してデータ・プロセッサ１０に直接入力してもよく、あるいは命令の実行によってユーザにアクセス可能なレジスタに格納してもよい。プリクォリファイア論理ブロック９４はについては、図５を参照して以下で説明する。制御信号反転ＰＲＥ−Ａおよび反転ＰＲＥ−Ｂは、クォリファイア論理ブロック９６に結合される。クォリファイア論理ブロック９６は、バス・リジェネレータ８０，受信リジェネレータ８２および転送リジェネレータ８４によって用いられるＱＵＡＬＩＦＩＥＲ  ＳＩＧＮＡＬＳのグループを生成する。
【００２７】
図５は、図４に示すプリクォリファイア論理ブロック９４のブロック図を示す。第１デコーダ・ブロック１００は、４つのＣＯＮＦＩＧ  ＢＩＴＳをバイナリ数値に復号する。上記のように、ＣＯＮＦＩＧ  ＢＩＴＳは、コアとバス・クロック周波数の比率を指定する。ＣＯＮＦＩＧ  ＢＩＴＳが１：１，２：１，３：１，．．．，Ｎ：１などの整数バス・モードを指定するように設定されると、デコーダ・ブロック１００はバイナリ形式で数値Ｎ−１を出力する。ＣＯＮＦＩＧＢＩＴＳが１．５：１，２．５：１，３．５：１，．．．，Ｎ＋０．５：１など整数プラス１／２バス・モードを指定するように設定されると、デコーダ・ブロック１００はバイナリ形式で数値２Ｎを出力する。
【００２８】
デコーダ・ブロック１００の復号された出力は、カウントダウン・カウンタ１０２のデータ入力（「ＤＩＮ」）に結合される。カウントダウン・カウンタ１０２は、そのロード入力（反転ＬＤ）がアサートされたときに復号出力をロードする。カウントダウン・カウンタ１０２は、コアまたはＧＣＬＫサイクル毎に１数値のレートで、入力数値からゼロまでカウントダウンする。カウントダウン・カウンタ１０２のカレント・カウント値は、ＤＯＵＴを介して第２デコーダ・ブロック１０４と、第３デコーダ・ブロック１０６とに絶えず出力される。また、ＣＯＮＦＩＧ  ＢＩＴＳは、デコーダ・ブロック１０６に入力される。デコーダ・ブロック１０４，１０６は、信号反転ＰＲＥ−Ａおよび反転ＰＲＥ−Ｂをそれぞれ生成する。信号反転ＰＲＥ−Ａは、カウントダウン・カウンタ１０２のロード入力に結合される。
【００２９】
図６は、図５に示すプリクォリファイア論理ブロック９４の動作を示すタイミング図を示す。デコーダ・ブロック１０４は、ＤＯＵＴがゼロに等しいとき、低論理状態に対応する電圧を反転ＰＲＥ−Ａとして出力する。デコーダ・ブロック１０４は、ＤＯＵＴがゼロ以外の数値に等しいとき、高論理状態に対応する電圧を反転ＰＲＥ−Ａとして出力する。反転ＰＲＥ−Ａの低アサートにより、カウントダウン・カウンタ１０２はデコーダ・ブロック１００によって出力された数値にリセットされ、再びカウントダウンを開始する。そのため、反転ＰＲＥ−Ａは、整数バス・モードでは、ＧＣＬＫのＮ倍の周期を有するようにみえ、また整数プラス１／２バス・モードでは、ＧＣＬＫの２Ｎ＋１倍の周期を有するようにみえる。１：１バス・モードの場合、反転ＰＲＥ−Ａは低論理状態のままである。ＣＯＮＦＩＧ  ＢＩＴＳが整数バス・モードを指定すると、デコーダ・ブロック１０６は高論理状態に対応する定電圧を反転ＰＲＥ−Ｂとして出力する。ＣＯＮＦＩＧ  ＢＩＴＳが整数プラス１／２バス・モードを指定すると、デコーダ・ブロック１０６は、反転ＰＲＥ−Ｂとして可変電圧レベルを出力する。後者の場合、デコーダ・ブロック１０６は、デコーダ・ブロック１０４が低論理状態を反転ＰＲＥ−Ａとして出力した後、低論理状態に対応する出力を反転ＰＲＥ−ＢのＮサイクルとして出力し、ここでコア：バス比はＮ＋０．５：１として定義される。デコーダ・ブロック１０６は、他の全ての場合で高論理状態に対応する電圧を出力する。
【００３０】
本開示の発明の一実施例では、信号反転ＰＲＥ−Ａを特定のサイクル数だけ遅延せずに、カウントダウン・カウンタ１０２によって出力された数値を復号するほうが有利である。この方式では、より簡単な汎用的な解決方法が得られる。この実施例では、（１）ＣＯＮＦＩＧ  ＢＩＴＳが１．５：１を指定し、かつカウントダウン・カウンタ１０２によって出力される数値が２に等しいとき、あるいは（２）ＣＯＮＦＩＧ  ＢＩＴＳが２．５：１を指定し、かつカウントダウン・カウンタ１０２によって出力される数値が３に等しいとき、あるいは（３）ＣＯＮＦＩＧ  ＢＩＴＳが３．５：１を指定し、かつカウントダウン・カウンタ１０２によって出力される数値が４に等しいとき、あるいは（４）ＣＯＮＦＩＧ  ＢＩＴＳが４．５：１を指定し、かつカウントダウン・カウンタ１０２によって出力される数値が５に等しいとき、デコード・ブロック１０６は低論理状態に対応する電圧を反転ＰＲＥ−Ｂとして出力する。一般に、デコーダ・ブロック１０６は、ＣＯＮＦＩＧ  ＢＩＴＳがＮ＋０．５：１を指定し、かつカウントダウン・カウンタ１０２によって出力される数値がＮ＋１に等しいとき、低論理状態に対応する電圧を反転ＰＲＥ−Ｂとして出力する。
【００３１】
図７は、図４に示すクォリファイア論理ブロック９６のブロック図を示す。クォリファイア論理ブロック９６は、バス・リジェネレータ８０，受信リジェネレータ８２および転送リジェネレータ８４によって用いられるＱＵＡＬＩＦＩＥＲＳＩＧＮＡＬＳのグループを生成する。インバータ１１０の出力は、クォリファイア信号Ａ０を生成する。インバータ１１０の入力は、ラッチ１１２のデータ出力に結合される。ラッチ１１２の入力は、反転ＰＲＥ−Ａを受ける。ラッチ１１４の反転中間出力は、クォリファイア信号Ａ１を生成する。ラッチ１１４の入力は、ラッチ１１２の出力に結合される。ラッチ１１６の反転中間出力は、クォリファイア信号Ａ１／Ｂ３を生成する。ラッチ１１６の入力は、ＡＮＤゲート１１８の出力に結合される。ＡＮＤゲート１１８の第１入力は、ラッチ１１２の出力に結合される。ＡＮＤゲート１１８の第２入力は、ラッチ１２０の出力に結合される。ラッチ１２０の入力は、ラッチ１２２の出力に結合される。ラッチ１２２の入力は、反転ＰＲＥ−Ｂを受ける。インバータ１２４の出力は、クォリファイア信号Ｂ２を生成する。インバータ１２４の入力は、ラッチ１２０の出力に結合される。インバータ１２６の出力は、クォリファイア信号反転Ｂ２を生成する。インバータ１２６の入力は、ラッチ１２８の反転中間出力に結合される。ラッチ１２８の入力は、ラッチ１２２の出力に結合される。また、ラッチ１２８の反転中間出力は、クォリファイア信号Ｂ１を生成する。ラッチ１２２の出力は、クォリファイア信号反転Ｂ０を生成する。ラッチ１３０の出力は、クォリファイア信号Ａ２／Ｂ４を生成する。ラッチ１３０の入力は、ラッチ１３２の出力に結合される。ラッチ１３２の入力は、ＮＡＮＤゲート１３４の出力に結合される。ＮＡＮＤゲート１３４の第１入力は、ラッチ１３６の出力に結合される。ラッチ１３６の入力は、反転ＰＲＥ−Ｂを受ける。ＮＡＮＤゲート１３４の第２入力は、反転ＰＲＥ−Ａを受ける。
【００３２】
図８ないし図１１は、図４に示すバス・リジェネレータ８０，受信リジェネレータ８２，転送リジェネレータ８４およびコア・リジェネレータ８６の回路図をそれぞれ示す。当業者であれば、図８ないし図１１に示す回路は、各入力を除いて同一であることが理解される。
【００３３】
図８において、ＯＲゲート１４０の出力は、信号ＢＵＳ  Ｃ１を生成する。ＯＲゲート１４０の第１入力は、ＡＮＤゲート１４２の出力に結合される。ＯＲゲート１４０の第２入力は、ＡＮＤゲート１４４の出力に結合される。ＡＮＤゲート１４２の第１および第２入力は、ＧＣＬＫの論理補数およびＡ０をそれぞれ受ける。ＡＮＤゲート１４４の第１および第２入力は、ＧＣＬＫおよびＢ１をそれぞれ受ける。ＯＲゲート１４６の出力は、信号ＢＵＳ  Ｃ２を生成する。ＯＲゲート１４６の第１入力は、ＡＮＤゲート１４８の出力に結合される。ＯＲゲート１４６の第２入力は、ＡＮＤゲート１５０の出力に結合される。ＡＮＤゲート１４８の第１および第２入力は、ＧＣＬＫおよびＡ１をそれぞれ受ける。ＡＮＤゲート１５０の第１および第２入力は、ＧＣＬＫの論理補数およびＢ２をそれぞれ受ける。
【００３４】
図９において、ＯＲゲート１５２の出力は、信号ＲＣＶ  Ｃ１を生成する。ＯＲゲート１５２の第１入力は、ＡＮＤゲート１５４の出力に結合される。ＯＲゲート１５２の第２入力は、ＡＮＤゲート１５６の出力に結合される。ＡＮＤゲート１５４の第１および第２入力は、ＧＣＬＫの論理補数およびＡ０をそれぞれ受ける。ＡＮＤゲート１５６の第１および第２入力は、ＧＣＬＫおよびＢ１をそれぞれ受ける。ＯＲゲート１５８の出力は、信号ＲＣＶ  Ｃ２を生成する。ＯＲゲート１５８の第１入力は、ＡＮＤゲート１６０の出力に結合される。ＯＲゲート１５８の第２入力は、ＡＮＤゲート１６２の出力に結合される。ＡＮＤゲート１６０の第１および第２入力は、ＧＣＬＫおよびＡ１／Ｂ３をそれぞれ受ける。ＡＮＤゲート１６２の第１および第２入力は、ＧＣＬＫの論理補数と、低論理状態（「ＧＮＤ」と記される）に対応する電圧レベルとをぞれぞれ受ける。
【００３５】
図１０において、ＯＲゲート１６４の出力は、信号ＴＸＦＲ  Ｃ１を生成する。ＯＲゲート１６４の第１入力は、ＡＮＤゲート１６６の出力に結合される。ＯＲゲート１６４の第２入力は、ＡＮＤゲート１６８の出力に結合される。ＡＮＤゲート１６６の第１および第２入力は、ＧＣＬＫの論理補数および反転Ｂ０をそれぞれ受ける。ＡＮＤゲート１６８の第１および第２入力は、ＧＣＬＫと、低論理状態に対応する電圧レベルとをそれぞれ受ける。ＯＲゲート１７０の出力は、信号ＴＸＦＲ  Ｃ２を生成する。ＯＲゲート１７０の第１入力は、ＡＮＤゲート１７２の出力に結合される。ＯＲゲート１７０の第２入力は、ＡＮＤゲート１７４の出力に結合される。ＡＮＤゲート１７２の第１および第２入力は、ＧＣＬＫおよび反転Ｂ１をそれぞれ受ける。ＡＮＤゲート１７４の第１および第２入力は、ＧＣＬＫの論理補数と、低論理状態に対応する電圧レベルとをそれぞれ受ける。
【００３６】
図１１において、ＯＲゲート１７６の出力は、信号ＣＯＲＥ  Ｃ１を生成する。ＯＲゲート１７６の第１入力は、ＡＮＤゲート１７８の出力に結合される。ＯＲゲート１７６の第２入力は、ＡＮＤゲート１８０の出力に結合される。ＡＮＤゲート１７８の第１および第２入力は、ＧＣＬＫの論理補数と、高論理状態（「ＶＤＤ」と記される）に対応する電圧レベルとをそれぞれ受ける。ＡＮＤゲート１８０の第１および第２入力は、ＧＣＬＫと、高論理状態に対応する電圧レベルとをそれぞれ受ける。ＯＲゲート１８２の出力は、信号ＣＯＲＥ  Ｃ２を生成する。ＯＲゲート１８２の第１入力は、ＡＮＤゲート１８４の出力に結合される。ＯＲゲート１８２の第２入力は、ＡＮＤゲート１８６の出力に結合される。ＡＮＤゲート１８４の第１および第２入力は、ＧＣＬＫと、高論理状態に対応する電圧レベルとをそれぞれ受ける。ＡＮＤゲート１８６の第１および第２入力は、ＧＣＬＫの論理補数と、高論理状態に対応する電圧レベルとをそれぞれ受ける。コア・リジェネレータ８６は、データ・プロセッサ１０におけるクロッキング・スキューを最小限に抑えるため、バス・リジェネレータ８０，受信リジェネレータ８２および転送リジェネレータ８４と同じ数の論理ゲートを内蔵する。
【００３７】
図１２は、３：１モードにおける本開示の発明の動作を示すタイミング図を示す。ここで、反転ＰＲＥ−Ａ，Ａ０およびＡ１は、３つのＧＣＬＫサイクルの周期を有する。反転ＰＲＥ−Ｂ，反転Ｂ０，Ｂ１およびＢ２は、全て静的（ｓｔａｔｉｃ）である。本開示の発明を明確に説明するため、図１２は、特定のＣ１およびＣ２パルスを発生のみを示す。
【００３８】
上記のように、ＢＩＵ１２は、コア・レート領域で動作するデータ・プロセッサ１０の大半と、バス・レート領域で動作するアドレスおよびデータ・バスとの間でインタフェースとして機能する。ラッチ３８および論理ブロック３２，３４（図３に図示）は、コア・レート領域においてデータ・プロセッサ１０から受けたデータを処理する。ＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２は、ＧＣＬＫの２位相から生成される。同様に、ラッチ４６および論理ブロック４２，５０は、バス・レート領域においてアドレスおよびデータ・バスから受けたデータを処理する。ＢＵＳ  Ｃ１およびＢＵＳ  Ｃ２は、Ａ０およびＡ１によってそれぞれゲートされたＧＣＬＫの２位相から生成される。図示のように、ＢＵＳ  Ｃ１およびＢＵＳ  Ｃ２は、ＳＹＳＣＬＫ立ち上がりエッジにまたがるＧＣＬＫ長のパルスである。
【００３９】
しかし、データ・プロセッサ１０が有用な仕事を実行するためには、コア・レート領域とバス・レート領域との間でデータを転送できなければならない。ラッチ４０は、コア・レート領域からバス・レート領域へのデータ経路を提供する。ラッチ４０は、ＴＸＦＲ  Ｃ１およびＴＸＦＲ  Ｃ２によってクロックされる。同様に、ラッチ４８は、バス・レート領域からコア・レート領域へのデータ経路を提供する。ラッチ４８は、ＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２によってクロックされる。上記のように、データは、半サイクル経路の発生中に、コア・レート領域とバス・レート領域との間で転送してはならない。転送レート領域および受信レート領域は、他の転送を許可しつつ、これらの転送を阻止する。この整数のコア対バス比では、コア・レート領域とバス・レート領域との間では半サイクル経路はない。従って、ＴＸＦＲ  Ｃ１およびＴＸＦＲ  Ｃ２は、ＣＯＲＥ  Ｃ１およびＣＯＲＥ  Ｃ２とそれぞれ同一であり、またＲＣＶ  Ｃ１およびＲＣＶ  Ｃ２は、ＢＵＳ  Ｃ１およびＢＵＳ  Ｃ２とそれぞれ同一である。
【００４０】
図１３は、３．５：１モードにおける本開示の発明の動作を示すタイミング図を示す。この整数プラス１／２のコア対バス比では、コア・レート領域とバス・レート領域との間で周期的な半サイクル経路が存在する。図示のように、ＧＣＬＫの立ち下がりエッジは、一つおきのＳＹＳＣＬＫサイクルでＳＹＳＣＬＫの立ち上がりエッジと整合する。通常、ＧＣＬＫの立ち上がりエッジは、ＳＹＳＣＬＫの立ち上がりエッジとのみ整合する。（例えば、図１２を参照。）半サイクル経路では、ＧＣＬＫの高位相（ＣＯＲＥ  Ｃ２）中にコア・レート領域デバイスによって送り出された信号は、バス・レート領域で動作するデバイスによって、半クロック・サイクルだけ遅れてサンプリングされる。同様に、ＢＵＳ  Ｃ２中にバス・レート領域デバイスによって送り出された信号は、コア・レート領域で動作するデバイスによって、半クロック・サイクルだけ遅れてサンプリングされる。
【００４１】
信号伝搬のために許容された半クロック・サイクルでのみ、ラッチからラッチにデータが送り出された場合、データ・プロセッサ１０にエラーが生じることがある。一般に、データ・プロセッサ１０内の全ての回路は、特定の最少サイクル時間あるいはそれ以上で適正動作するように設計される。介在する論理を介して伝搬するために信号にフル・サイクルが与えられないと、信号は不安定になる可能性がある。このような状況で信号が不安定になるかどうかは、次のラッチに達する前に通過する論理の複雑性に依存する。介在する論理が単純ならば、信号は半サイクルのみで確実に伝搬できる。しかし、介在する論理が複雑ならば、信号は伝搬するために半サイクル以上を必要とすることがある。この場合、信号は、動作すべき半クロック・サイクルしか与えられないと、誤った値を報告する。
【００４２】
コア・レート領域からバス・レート領域へのデータ転送の場合、転送リジェネレータ８４（図４に図示）は、半サイクル経路の前に発生する各ＴＸＦＲ  Ｃ２パルスを飲み込む。ＴＸＦＲ  Ｃ２をこのように修正することにより、バス・レート領域回路がデータをラッチするのが速すぎるかもしれないと、ラッチ４０はデータをラッチ４６，４８に送り出さない。図示の実施例では、転送リジェネレータ８は半サイクル経路前に発生する各ＴＸＦＲ  Ｃ１パルスも飲み込む。従って、論理ブロック３２によって出力されるデータは、ＳＹＳＣＬＫの開始までラッチ４０によって捕捉されない。
【００４３】
バス・レート領域からコア・レート領域へのデータ転送の場合、受信リジェネレータ８２（図４に図示）は、半サイクル経路中に発生する各ＲＣＶ  Ｃ２パルスを遅延させる。ＲＣＶ  Ｃ２をこのように修正することにより、ラッチ３８，４０がデータをラッチするのが速すぎるかもしれないと、ラッチ４８はデータをラッチ３８，４０に送り出さない。ＲＣＶ  Ｃ１は、ＢＵＳ  Ｃ１と同一であり、そのためラッチ４８はバス・レート領域においてバス情報を捕捉できる。
【００４４】
本発明について特定の実施例とともに説明してきたが、更なる修正や改善は当業者に想起される。例えば、本開示の発明は、データ・プロセッサの一部として説明した。しかし、本開示の発明は、アドレス・バスまたはデータ・バスあるいはスタンドアロン・デバイスとしても構築できる。従って、特許請求の範囲は、２つのデバイス間で動作するデータ同期システムについて記載する。故に、本発明は、特許請求の範囲に定義される発明の精神および範囲から逸脱しない一切のこのような修正を網羅するものとする。
【図面の簡単な説明】
【図１】本発明により構成されたデータ・プロセッサのブロック図である。
【図２】図１に示すバス・インタフェース・ユニットの一部のブロック図である。
【図３】図２および他の図面に示すマスタ・スレーブ・ラッチの回路図である。
【図４】図２に示すバス・インタフェース・ユニットに入力される制御信号を生成すべく動作可能な位相同期ループを示す図である。
【図５】図４に示すプリクォリファイア論理ブロックのブロック図である。
【図６】図５に示すプリクォリファイアの動作を示すタイミング図である。
【図７】図４に示すクォリファイア論理ブロックのブロック図である。
【図８】図４に示すバス・リジェネレータを示す回路図である。
【図９】図４に示す受信リジェネレータを示す回路図である。
【図１０】図４に示す転送リジェネレータを示す回路図である。
【図１１】図４に示すコア・リジェネレータを示す回路図である。
【図１２】３：１モードにおける本発明の動作を示すタイミング図である。
【図１３】３．５：１モードにおける本発明の動作を示すタイミング図である。
【符号の説明】
１０  データ・プロセッサ
１２  バス・インタフェース・ユニット（ＢＩＵ）
１４  命令キャッシュ
１６  データ・キャッシュ
１８  シーケンサ／ディスパッチ・ユニット
２０  固定小数点実行ユニット
２２  分岐実行ユニット
２４  浮動小数点実行ユニット
２６  ロード／ストア実行ユニット
２８  リネーム・バッファ
３０  アーキテクチュラル・レジスタ・ファイル
３２  論理ブロック
３４  論理ブロック
３６  ＡＮＤゲート
３８  ラッチ
４０  ラッチ
４２  論理ブロック
４４  論理ブロック
４６  ラッチ
４８  ラッチ
５０  論理ブロック
５２  パス・ゲート
５４  インバータ
５６  パス・ゲート
５８  インバータ
６０  パス・ゲート
６２  インバータ
６４  パス・ゲート
６６  インバータ
７０  位相同期ループ（ＰＬＬ）
７２  位相比較器
７４  インバータ
７６  電圧制御発振器（ＶＣＯ）
７８  ２分周回路
８０  バス・リジェネレータ（ＢＵＳ  ＲＥＧＥＮ）
８２  受信リジェネレータ（ＲＣＶ  ＲＥＧＥＮ）
８４  転送リジェネレータ（ＴＸＦＲ  ＲＥＧＥＮ）
８６  コア・リジェネレータ（ＣＯＲＥ  ＲＥＧＥＮ）
８８，９０  コア・リジェネレータ（ＣＯＲＥ  ＲＥＧＥＮ）
９４  プリクォリファイア論理ブロック
９６  クォリファイア論理ブロック
１００  第１デコーダ・ブロック
１０２  カウントダウン・カウンタ
１０４  第２デコーダ・ブロック
１０６  第３デコーダ・ブロック
１１０  インバータ
１１２，１１４，１１６  ラッチ
１１８  ＡＮＤゲート
１２０，１２２  ラッチ
１２４，１２６  インバータ
１２８，１３０，１３２，１３６  ラッチ
１３４  ＮＡＮＤゲート
１４０，１４６  ＯＲゲート
１４２，１４４，１４８，１５０  ＡＮＤゲート
１５２，１５８  ＯＲゲート
１５４，１５６．１６０，１６２  ＡＮＤゲート
１６４，１７０  ＯＲゲート
１６６，１６８，１７２，１７４  ＡＮＤゲート
１７６，１８２  ＯＲゲート
１７８，１８０，１８４，１８６  ＡＮＤゲート
【図１】
0003616468.tif 000002
【図２】
0003616468.tif 000003
【図３】
0003616468.tif 000004
【図４】
0003616468.tif 000005
【図５】
0003616468.tif 000006
【図６】
0003616468.tif 000007
【図７】
0003616468.tif 000008
【図８】
0003616468.tif 000009
【図９】
0003616468.tif 000010
【図１０】
0003616468.tif 000011
【図１１】
0003616468.tif 000012
【図１２】
0003616468.tif 000013
【図１３】
0003616468.tif 000014