(57)【要約】スキップパターンを２つのクロック領域に同期させ、２つのクロック領域間でのデータ転送を可能にするクロックスキップバッファ（５０）を初期設定するためのシステムおよび方法。一実施例では、回路は、１対の整列検出ユニット（７１，７２）、同期リセットユニット（７３）、スキップパターン発生器（７４）、カウンタリセットユニット（７５）およびデータ転送バッファ（７６）を含む。整列ユニット（７１，７２）の各々は、クロック領域のうちの１つの領域におけるクロック信号の、基準クロック信号との整列を検出するよう構成され、整列を示す信号を生成する。この信号は同期リセットユニット（７３）およびカウンタリセットユニット（７５）に送られる。１つの整列ユニットにより生成された整列信号はまた、スキップパターン発生器（７４）にも送られる。同期リセットユニット（７３）は整列ユニットから整列信号を受取り、同時リセット信号（すなわち、２つのクロック領域の各々に対して１つずつ）を生成して、カウンタリセットユニットを初期設定する。カウンタリセットユニットは、データ転送バッファを介してフローデータを制御するロードおよびアンロードカウンタを制御する。同期リセットユニット（７３）により生成された同期リセット信号が受信された後、カウンタリセットユニットはそれぞれのクロック領域に対応するロードおよびアンロードパルスを生成し、これらの信号をデータ転送バッファ（７６）に転送し始める。
2004506974.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号を有する第１のクロック領域と第２のクロック信号を有する第２のクロック領域との間でデータを転送するためのクロックスキップバッファ（５０）を有するマイクロプロセッサにおいて、
第１の整列ユニット（７１）を含み、前記第１の整列ユニットは、前記第１のクロック信号のパルスの、基準クロックパルスとの整列を検出するよう構成され、
第２の整列ユニット（７２）を含み、前記第２の整列ユニットは、前記第２のクロック信号のパルスの、前記基準クロックパルスとの整列を検出するよう構成され、
前記第１および第２の整列ユニットと結合され、また非同期リセット信号を受信するよう構成された同期リセットユニット（７３）を含み、前記同期リセットユニットは、前記第１のクロック領域において前記クロックパルスと整列する第１のリセット信号、および前記第２のクロック領域において前記クロックパルスと整列する第２のリセット信号を生成するよう構成され、
前記同期リセットユニットに結合されて、前記第１および第２のリセット信号を受信するカウンタリセットユニット（７５）を含み、前記カウンタユニットは、前記リセット信号のうちの一方に基づいてロードカウンタをリセットし、かつ前記リセット信号のうちの他方に基づいてアンロードカウンタをリセットするよう構成される、回路。
【請求項２】
前記第１の整列ユニット（７１）は、前記第１のクロック領域において前記クロックパルスと実質的に一致する第１の整列信号を生成するよう構成され、前記第２の整列ユニット（７２）は、前記第２のクロック領域において前記クロックパルスと実質的に一致する第２の整列信号を生成するよう構成され、前記整列ユニットのうち前記１つのユニットは、スキップリセット信号を生成するよう構成される、請求項１に記載の回路。
【請求項３】
前記スキップリセット信号を受信するよう結合されたスキップパターン発生器（７４）をさらに含む、請求項２に記載の回路。
【請求項４】
前記スキップリセット信号は前記第１および第２の整列信号に先行し、前記スキップリセット信号の受信に応答して、前記スキップパターン発生器（７４）は、前記整列信号のうちの１つと同時に始まるスキップパターン信号を作り始める、請求項３に記載の回路。
【請求項５】
前記基準クロック信号から前記第１のクロック信号および前記第２のクロック信号を生成するよう構成されたクロック生成回路をさらに含み、前記クロック生成回路は、前記第１のクロック信号の第１のパルスを前記基準信号の第１のパルスと実質的に整列させるよう構成された第１のＰＬＬ（４１）、および前記第２のクロック信号の第１のパルスを前記基準信号の前記第１のパルスと実質的に整列させるよう構成された第２のＰＬＬ（４２）を含む、請求項１に記載の回路。
【請求項６】
クロックスキップバッファ（５０）をリセットするための方法であって、
２つのクロック領域の各々において、対応する基準クロックパルスと実質的に整列する、対応するクロック信号の各パルスを検出するステップと、
非同期リセット信号を受信するステップと、
前記クロック領域のうちの１つにおいて、整列したリセット信号を生成するステップとを含み、前記整列したリセット信号は、前記対応するクロック領域の前記検出された整列したパルスのうちの１つと実質的に整列し、前記方法はさらに、
前記クロック領域における前記クロック信号の間の最大スキューよりも大きな量、前記整列したリセット信号を遅延させるステップと、
前記２つのクロック領域の各々において、同期リセット信号をアサートするステップとを含む、方法。
【請求項７】
前記２つのクロック領域の各々において、前記対応する同期リセット信号をアサートするステップに応答して、カウンタをロードし、開始するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記同期リセット信号は、前記対応するクロック領域の、次の検出された整列したパルスと同時にアサートされる、請求項７に記載の方法。
【請求項９】
前記カウンタのうちの１つは前記クロックスキップバッファ（５０）に対するロードカウンタであり、前記カウンタのうちの１つは前記クロックスキップバッファに対するアンロードカウンタである、請求項７に記載の方法。
【請求項１０】
スキップパターン発生器（７４）を含む前記クロック領域のうち１つにおいて、前記検出された整列したパルスのうち対応する１つのパルスに先行するスキップリセット信号を生成するステップをさらに含む、請求項６に記載の方法。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は、一般的にマイクロプロセッサ設計の分野に関し、さらにクロックスキップ技術を用いて２つのクロック領域間でデータを転送するよう構成されたシステムにおいて、スキップパターンを同期させ、転送バッファを初期設定することに関する。
【０００２】
【背景技術】
単純なコンピュータシステムにおいては、単一のクロック信号を用いて、チップに集積される装置のすべてをランさせることができる。同じクロック信号を、マイクロプロセッサ、メモリおよび／またはさまざまな周辺装置に提供することができる。信号は、中でも、装置間のデータ転送をクロックするために用いられる。このシステムは単純で比較的明快であるが、その簡潔性により、結果として性能に制限を生じることがある。これらの制限のうち１つは、チップ上のさまざまな装置に見られるクロック信号の変動に関するものである。クロック信号を装置の各々に送るために導電トレースのネットワークを用いることにより、信号に反射、ノイズおよび他の変動を引き起こす。これらの要因は異なる装置に到達する信号に差をもたらし、これによりデータをやり取りするための装置の能力を制限するおそれがある。たとえば、２つの装置に到達するクロック信号間にスキューがある場合、装置間でやりとりされている値を、受信装置が確実にサンプリングできるようにするために、その値は、そうでない場合に必要とされる時間よりも長く送信装置によってアサートされなければならないことがある。
【０００３】
クロック送りは、クロックスキューの影響を最小限にし、かつデータ転送における性能の改善を可能とするために用いることができる１つの技術である。クロック送り機構では、データを転送するために通常用いられるデータバスおよびシステムクロックは、ポイントツーポイントデータおよびクロック信号により置換えられる。言い換えれば、データが１つの装置から別の装置へ転送される場合、このデータは対応するクロック信号とともに転送される。データは典型的には、送られたクロック信号に従って、送信装置により一連の記憶場所（たとえば、フリップフロップ）にクロック同期して取込まれる。データは次いで、ローカルクロック信号に従って、受信装置により記憶場所からクロック同期して引き出される。これらクロック信号はともに同じ速度でなければならないが、信号における実質的なスキューがデータの高信頼転送を妨げることはない。
【０００４】
クロック送りは、同じクロック速度で動作する装置間でデータを転送するための手段を提供するが、異なる装置に対して異なるクロック周波数を用いることがしばしば、現代のコンピュータシステムにおいては望ましい。たとえば、コア論理（すなわち、マイクロプロセッサ論理）およびシステム論理を異なった周波数で動作させることが有益であるだろう。周波数の違いにより、１種類の論理の性能における進歩が、他の種類の論理における同等の進歩を必要とすることなく可能となる。こうして、たとえばシステム論理の速度を上げなくても、プロセッサ速度を上げることができる。
【０００５】
これらのシステムでは、システム論理はシステムバスと密接に関連づけられる。結果として、システム論理は通常、システムバス周波数の整数（または半整数）倍の周波数で動作する。システム論理がシステムバス周波数の倍数の周波数で動作するので、システム論理のためのクロック信号およびシステムバスのためのクロック信号をどちらも、同じ基準クロックから生成することができる。コア論理もまた、システムバス周波数の整数または半整数倍の周波数でランする場合、同様に容易に生成され得る。たとえば、システムバスが６６ＭＨｚでランしている場合、システム論理およびコア論理を２００ＭＨｚ（システムバス周波数の３倍）で動作することができる。次いで、所望の場合、コア論理の周波数を２６６ＭＨｚ（システムバス周波数の４倍）までスケーリングすることができるが、システム論理は２００ＭＨｚにとどまる。
【０００６】
しかしながら、システムバスの動作周波数が上がるにつれ、コア論理の速度を上げるようスケーリングすることはさらに難しくなる。というのも、その周波数を大幅に上げる必要があるからである。たとえば、システムバスが２００ＭＨｚでランし、コア論理およびシステム論理がともに４００ＭＨｚでランしている場合、コア論理を容易に４５０ＭＨｚまでスケーリングすることはできない。すなわち、４５０ＭＨｚはシステムバス周波数の整数または半整数倍ではない。したがって、単一のクロックではなく複数のクロックを有するほうが有益であり得る。ある特定のクロック信号で動作する装置は、その信号により規定されるクロック領域内にある。
【０００７】
コンピュータシステムにおける複数のクロック領域を使用することにより、システムにおいて取組まなければならない多くの問題が生じることがある。１つの問題は、クロックが互いの整数または半整数倍でない２つのクロック領域間での通信が難しいことである。この問題は、２つのクロック領域間でデータを転送するためのクロックスキップ技術を用いることにより取込むことができる。しかしながら、マイクロプロセッサにおいてクロックスキップを実現することは難しいであろう。というのも、それは、２つの領域においてスキップパターンをクロック信号と同期させること、およびデータを転送するのに用いられる転送バッファを適切に初期設定することを必要とするからである。
【０００８】
【発明の開示】
上述の１つまたは複数の問題は、この発明のさまざまな実施例によって解決することができる。概して、この発明は、スキップパターンを２つのクロック領域のクロック信号に同期させるための、および２つのクロック領域間でのデータ転送を可能にするクロックスキップバッファを初期設定するためのシステムおよび方法を含む。
【０００９】
このシステムは、各々が異なるクロック周波数で動作する２つの別個のクロック領域を有するマイクロプロセッサにおいて実現される。マイクロプロセッサは、クロックスキップバッファを用いて１つのクロック領域から他のクロック領域へデータを転送するよう構成される。データは第１のクロック領域のクロック信号を用いてバッファにクロック同期して取込まれ、第２のクロック領域のクロック信号を用いてバッファからクロック同期して引き出される。バッファが、より高速のクロック信号のパルスを定期的にスキップさせるので、より高速のクロック信号のパルスで転送されたデータが、より低速のクロック信号のパルスで転送されたデータをオーバーランすることはない。
【００１０】
一実施例では、このシステムは整列検出器部分、プログラマブル遅延部分および信号オフセット部分を有する整列回路を含む。回路の整列検出器部分は、クロック領域のうちの１つにおいてクロック信号の立下がり端縁を識別するが、この立下り端縁は、ＰＬＬにより基準クロックにロックされる除算器出力信号の立下がり端縁に対応する。整列信号は、基準クロック周期の残りに対応するようプログラム可能な時間量だけ遅延される。回路のプログラマブル遅延部分はこれにより、次に２つのクロック信号の立下がり端縁が一致する時にアサートされる整列信号を作り出す。回路はまた、整列信号より前に、予め定められた数のサイクルがオフセットされたスキップリセット信号を作り出す。スキップリセット信号は整列信号に先行するので、スキップパターン発生器は、整列信号のアサーションでもってスキップパターンの第１のスキップ値を作り出し、これを適用することができる。
【００１１】
１つの実施例はさらに、２つのクロック領域において、同期されたリセット信号を作り出すよう構成された同期リセット回路を含む。同期リセット回路は主要なリセット信号を受取り、いくつかの中間ステップを介して、この信号を基準クロック領域から２つの動作クロック領域のうちの１つにクロック同期する。リセット信号がこのクロック領域にクロック同期されると、回路は次の対応する整列信号が到達するまでそのリセットを遅らせる。このリセットは次いで、各クロック領域においてそれぞれの整列信号でアサートされた、論理的に並行な同期されたリセット信号として転送される。
【００１２】
この発明の他の目的および利点は、以下の詳細な記載を読み、添付の図面を参照すると明らかとなるであろう。
【００１３】
この発明はさまざまな修正および代替の形式が可能であるが、その特定の実施例を図面において例示のために示し、この明細書中に詳細に記載する。しかしながら、これに対する図面および詳細な記載は、この発明を、開示の特定の形式に限定することを意図するものではなく、反対に、前掲の特許請求の範囲に規定されるこの発明の精神および範囲内にある修正、等価物および代替例をすべて包含することを意図するものであることが理解されるべきである。
【００１４】
【この発明を実行するためのモード】
この発明の一実施例が以下に説明される。この実施例はこの発明の特徴および動作を示すための例として提示されるものであり、この発明の他の多くの実施例が可能であることが留意されるべきである。
【００１５】
概して、２つのクロック領域においてリセット信号を同期させるための、および２つのクロック領域間でのデータ転送を可能にするクロックスキップバッファを初期設定するためのシステムおよび方法が開示される。一実施例は、各々が異なるクロック周波数を有する２つの異なったクロック領域においてコンポーネントを有するマイクロプロセッサで実現される。２つの領域のクロック信号は単一の基準クロック信号から生成され、各々の周波数は基準クロック周波数の倍数または半倍数である。クロック信号はしたがって、それらが倍数である場合は基準クロックの周期ごとに、またはそれらが基準クロックの半倍数である場合は１周期おきに、少なくとも１回基準クロック信号と整列する。クロック領域のクロック信号は、基準クロック信号の立下り端縁と論理的に一致する各クロックの立下がり端縁を検出することにより、論理的に整列する。整列信号が、それぞれのクロック信号の一致パルスと同時にクロック領域の各々においてアサートされ、これにより整列した、または「０」パルスを識別する。これは基準クロック周期ごとに（または対応するクロック信号が基準クロック信号の半倍数である場合は、１基準クロック周期おきに）起こる。整列信号に先行するスキップパターンリセット信号も、生成され、さらにスキップパターン発生器に送られ、これにより、整列信号と同時に開始するスキップパターンを生成することができる。非同期リセット信号がクロック領域のうちの１つに転送され、その領域で整列信号と同期される。整列したリセット信号は次いで、クロック信号間での最大スキューと少なくとも同じだけ遅延される。クロック領域の各々において次の整列信号がアサートされると、（それぞれの整列信号と整列する）同期リセット信号がアサートされて、クロックスキップバッファのそれぞれのカウンタをリセットする。
【００１６】
一実施例では、このシステムは高度集積、高性能のマイクロプロセッサに含まれる。このプロセッサは、ＣＰＵコアクロックであるＸＩＣＬＫ、およびシステムインターフェイス論理を実行するのに用いられるＸＢＣＬＫの２つの主要なクロック領域を用いる。マイクロプロセッサはクロックスキップ技術を用いて、これらの２つのクロック領域間で効率的にデータを転送する。クロックスキップシステムでは、データは逐次記憶場所に一時的に記憶される。データは、第１のクロック信号の対応するクロックパルスが受信されると、記憶場所に送られる。データは、記憶された順に記憶場所から検索される。データは、第２のクロック信号の対応するクロックパルスが第２のクロック領域から受信されると、記憶場所のうち１つから検索される。この実施例における第１および第２のクロック信号は異なるクロック速度を有するので、これらの信号のうち、より高速な方の１つまたは複数のクロックパルスは、（記憶場所のロードまたはアンロードのどちらかの）関連するプロセスが他のプロセスをオーバーランするかまたはその範囲を越えることを防ぐために、スキップされる必要がある。
【００１７】
図１では、第１の装置１１がデータを第２の装置１２に転送するシステムが例示される。装置１１は第１のクロック領域にあり、装置１２は第２のクロック領域にある。上述のように、クロック領域はその領域のクロック信号に基づいて動作する装置を含む。それぞれのクロック領域のクロック信号は、共通の基準クロック周波数の異なる倍数でランしている位相同期ループ（ＰＬＬ）により出力される。
【００１８】
装置１１から装置１２へ伝送されるデータは、クロックスキップバッファ１３を介して転送される。データは第１のクロック領域におけるクロック信号のパルスでバッファ１３にクロック同期して取込まれ、第２のクロック領域におけるクロック信号のパルスでバッファからクロック同期して引き出される。クロックスキップを用いて、データのバッファへのおよびバッファからの転送を等しくする。
【００１９】
図２では、クロックスキップ技術が例示される。図２には、３つのクロック信号、すなわち基準クロック信号２１、第１のクロック領域からのクロック信号２２、および第２のクロック領域からのクロック信号２３が示される。２つのクロック領域のクロック信号は、基準クロック信号の倍数である。この図の例示では、クロック信号２２は基準クロック信号２１の５倍の周波数を有する。クロック信号２３は基準クロック信号２１の４倍の周波数を有する。
【００２０】
図２に示されるように、クロック信号２２の５パルスごとに１パルスがデータ転送においてスキップされる。（この開示のために、「パルス」はクロック信号の端縁を指す。パルスは、ある特定の実施例の実現に応じて、立上がり端縁、立下がり端縁、またはこの両方を含み得る。）こうして、基準クロック周期ごとに、クロック信号２２の４つの有効パルスおよび１つのスキップパルスが存在することとなる。クロック信号２３も基準クロック周期ごとに４つの有効パルスを有する（が、スキップパルスを有することはない）。有効パルスを用いて、データをバッファへおよびバッファから転送するので、基準クロック周期ごとに対して、４ビットのデータが転送されてきて、さらに４ビットのデータが転送されていく。
【００２１】
図２に示されるとおり、基準クロック周期の初めには、２つのクロック領域のクロック信号間にシフトは存在しない。すなわち、それらはともに基準クロックと同時に立下がり端縁を有する。第１のクロック信号が第２のクロック信号より高速であるので、第１の信号の第２の立下がり端縁は、第２の信号の第２の立下がり端縁より前に発生する。こうして、シフトが２つの信号間で発生する。このシフトは基準クロック周期を通じて変化する。しかしながら、クロック信号２２が４パルスごとにスキップされるので、シフトはクロック信号２２の周期より常に小さいかあるいはそれと等しい。このシフトはクロックスキップバッファにより吸収される。データがクロック信号のうち一方の信号の有効パルスでバッファにロードされ、次にデータが確実に書込まれるのを充分に待った後、このデータは他方のクロック信号の有効パルスでバッファからアンロードされる。
【００２２】
図２では、基準クロック信号に関連して、基準クロック周期ごとにクロック信号２２の第２のパルスがスキップされているのが例示される。各クロック信号の第１の立下がり端縁を基準クロック信号の立下がり端縁と同期させる場合、基準クロック周期ごとに第２のパルスをスキップすることにより、確実に、第１のクロック信号のパルスはクロック信号２３の対応するパルスと常に同期するか、またはその右側に（すなわち、後ろに遅れて）シフトされる。他の実施例では、第１のクロック信号がその左側にシフトされるか、またはシフトが第２の信号の両側に対してなされることがある。一方の信号のシフトが常に他方の信号の一方側となるよう制約付けることにより、単一のバッファを用いてシフトを吸収することが可能となることに留意することが重要である。シフトが、あるときには右側で、他のときには左側にあることが可能である場合、シフトを吸収するのに２つのバッファが必要となる。というのも、どちらのバッファもシフトの全クロック周期を吸収しないからである。他の実施例では、それぞれのクロック信号の相対的な周波数に応じて、複数のパルスをスキップし得ることに留意すべきである。
【００２３】
図３では、クロック信号が生成される態様を例示する機能ブロック図が示される。基準クロック信号は２つのＰＬＬ４１および４２の各々に入力される。各ＰＬＬは、基準クロック周波数の倍数の周波数を有するクロック信号を生成する。この場合、ＰＬＬ４１は基準クロックの周波数のＮ倍である第１のクロック信号を生成する。ＰＬＬ４２は基準クロックの周波数のＭ倍である第２のクロック信号を生成する。ＰＬＬの各々は、そのクロック信号を対応するクロック分配ネットワーク４３および４４に送る。分配ネットワークは、第１および第２のクロック信号をそれぞれのクロック領域の装置に送る。分配ネットワークは、ＰＬＬに入力されるべきフィードバック信号を作り出す除算回路４５および４６にクロック信号を送る。各々の除算回路は、その領域のクロック乗算器に対応する因数で、対応するクロック信号を割る。言い換えれば、ＰＬＬ４１は基準クロック周波数のＮ倍のクロック信号を生成し、除算回路４５はクロック信号をＮで割って、フィードバック信号を作り出す。同様に、ＰＬＬ４２は基準クロック周波数のＭ倍のクロック信号を生成し、除算回路４６は結果として生じるクロック信号をＭで割って、フィードバック信号を作り出す。フィードバック信号はそれぞれのＰＬＬに送られ、これにより、生成されたクロック信号をシフトしてフィードバック信号を基準クロックと整列させる。フィードバック信号の各々を基準クロック信号と整列させることにより、システムは、２つのクロック領域のクロック信号間でのスキューを最小限にしようと試みる。
【００２４】
クロック信号間でのスキューを最小限にすることは、さまざまな理由から重要である。上述のように、クロックスキップメカニズムはバッファを用いて、第１のクロック領域と第２のクロック領域との間のスキューを吸収する。さらに多くのスキューがある場合、このメカニズムを実現するためにさらに多くのバッファを必要とすることがある。クロックスキップバッファに必要なバッファにとって必要とされる面積を減らすことに加えて、クロック信号間のスキューを減らすことにより、バッファを用いるデータ転送の待ち時間を減らすという効果が生じる。言い換えれば、データ転送の性能が改善される。
【００２５】
図４では、クロックスキップバッファの構造が示される。この図に示される回路は記憶場所（フリップフロップ）の組を用いて、データをバッファ処理し、さらに送り側および受取り側のクロック領域のクロック信号間でのクロックシフトを吸収する。一連のデータビットが、データ入力ライン５２を介してバッファ５０に伝送される。データ入力ライン５２は、各々のＤ型フリップフロップ５１ａ〜５１ｄのデータ（Ｄ）入力に結合される。（便宜上、フリップフロップ５１ａ〜５１ｄは、この明細書中では単一の参照番号５１を用いて、個別にかつまとめて称される。）各フリップフロップ５１のクロック入力はクロックライン５３に結合される。各フリップフロップ５１のイネーブル（Ｅ）入力は、ロードカウンタ５４の出力のうち１つに結合される。ロードカウンタ５４は、同じくライン５３を介する信号によってクロックされるパターン発生器（５８）により制御される。各フリップフロップ５１の出力（Ｑ）はマルチプレクサ５５に結合される。マルチプレクサ５５のセレクト入力はアンロードカウンタ５６に結合され、このアンロードカウンタ５６は、マルチプレクサ入力のいずれ（したがって、フリップフロップ出力のいずれ）がマルチプレクサ５５により出力されるよう選択されるかを制御する。アンロードカウンタ５６は、受取り側のクロック領域のクロック信号によりクロックされる。マルチプレクサ５５の出力は、受取り側のクロック領域のクロック信号によりクロックされるフリップフロップ５７のデータ入力に結合される。（ロードカウンタ５４およびアンロードカウンタ５６はまた、カウンタをリセットするのに用いられ、かつ以下にさらに詳細に説明されるいくつかの制御入力を有する。）
データはライン５２を介してシステム５０に送られる。各フリップフロップ５１へのデータ入力がライン５２へとつながれているので、各データビットはフリップフロップの各々に同時に与えられる。フリップフロップ５１の入力に与えられるデータビットは、ロードカウンタ５４により選択されるフリップフロップのうち１つのみに記憶される。ロードカウンタ５４はその出力のうちの１つでイネーブル信号をアサートし、その残りの出力の各々でイネーブル信号をデアサートする。カウンタ出力の各々が、対応するフリップフロップのイネーブル入力に結合されるので、フリップフロップのうちたった１つだけが一度に可能化される。したがって、イネーブルフリップフロップは現在与えられたデータビットを記憶し、（不能化された）他のフリップフロップは、以前にそれらに記憶されたビットを保持する。
【００２６】
パターン発生器５８がイネーブル−Ｌｐｒｓｋｉｐパルスのパターンを作り出す。有効クロックパルスが受信されるたびに、カウンタが増分される。ロードカウンタ５４が増分されるたびに、それは、フリップフロップ５１に結合された出力のうち連続する１つの出力でイネーブル信号をアサートする（そして他の出力で信号をデアサートする）。こうして、各連続データビットはフリップフロップ５１のうちの連続するフリップフロップに記憶される。データビットがフリップフロップ５１の最後の１つ（たとえば、５１ｄ）に記憶されると、システムは第１のフリップフロップ（５１ａ）に回帰し、その中に次のデータビットを記憶する。このサイクルはデータがすべて転送されるまで続けられる。フリップフロップの各々に記憶されたデータビットは最終的には上書きされるが、各データビットはそれが上書きされる前に検索される。
【００２７】
スキップ信号がスキップパターン発生器（５８）によって出力されると、ロードカウンタからのすべてのイネーブルラインは不能化され、カウンタは増分されない。スキップ信号はまた、データソースに送られてそのサイクルでの転送を防ぐ。
【００２８】
フリップフロップ５１の各々は、（何らかのビットがまだそこに記憶されている場合）フリップフロップに記憶される最後のデータビットを、その出力でアサートする。これらのビットはマルチプレクサ５５への入力として与えられ、マルチプレクサ５５は、それらの入力のうち、フリップフロップ５７を介して送られるべき入力を選択する。マルチプレクサ５５はアンロードカウンタ５６により制御される。アンロードカウンタ５６が選択信号をマルチプレクサ５５に与えるので、フリップフロップ５１の各々は、データビットがそれらに記憶された順で順次選択される。アンロードカウンタ５６が受取り側のクロック領域のクロック信号によりクロックされ、各ＣＬＫ２パルスが増分される。選択されたフリップフロップ５１によるビット出力がフリップフロップ５７に送られる。フリップフロップ５７は第２のクロック領域からの信号によってクロックされ、１クロック周期の間そのデータを保持する。それは次に、新しく選択されたフリップフロップ５１の出力を受信し、そのビットを１クロック周期の間保持する。こうして、データビットは記憶されたのと同じ順でフリップフロップ５１から検索され、第２のクロック領域のクロック速度で新しい直列データストリームが生成される。
【００２９】
上述のように、各フリップフロップ５１に記憶されたデータビットは、それが新しいビットで上書きされる前にマルチプレクサ５５により選択される。これは、ロードカウンタ５４およびアンロードカウンタ５６を、データ転送の初めに、適切な値に初期設定することにより達成される。カウンタ値を選ぶことにより、データビットが、検索される前に適切な間隔で記憶されることを確実にする。たとえば、図４に示されるシステムでは、ロードカウンタ５４が（フリップフロップ５１ａを選択して）０に初期設定されてもよく、アンロードカウンタ５６が（フリップフロップ５１ｃを選択して）２に初期設定されてもよい。データ転送が始まると、第１のデータビットはフリップフロップ５１ａに記憶される。読出される第１のフリップフロップは５１ｃであるが、それはまだデータビットが中に記憶されていない。クロック領域の各々において後続の有効パルスがあると、それぞれのカウンタが増分するので、第２のデータビットはフリップフロップ５１ｂに記憶され、読出されるべき第２のフリップフロップは５１ｄとなる。次の有効パルスがあると、第３のデータビットがフリップフロップ５１ｃに記憶され、マルチプレクサ５５がフリップフロップ５１ａから第１のデータビットを検索する。こうして、フリップフロップ５１ａに記憶されたデータビットは、記憶された後、２クロック周期後に読出される。このことがビットをすべてのシステムスキュー条件下で確実に記憶するのに不十分である場合、アンロードカウンタを１に初期設定して、データの３クロック周期の記憶を可能にすることもできるだろう。１クロック周期のみが必要な場合、アンロードカウンタは３にセットされ得る。
【００３０】
上述の例から、検索される前の、ある数のクロック周期前に各データビットをフリップフロップに書込むことを可能とするために、ある最小限の数のフリップフロップが必要であることが明らかである。必要なフリップフロップの数を以下の式に従って算出することができる。
【００３１】
【数１】
2004506974.tif 000003
【００３２】
ｐｅｒｉｏｄｔａｒｇｅｔ ｃｌｏｃｋは、受取り側のクロック領域のクロック周期である。（各データビットまたはビットが上述の例では立下がりクロック端縁で転送されるので、クロック周期はビット時間と同じとなる。）
ｄｅｌａｙｍａｘは、クロック領域間の最大信号遅延である。（送信機および受信機論理がクロック領域境界で互いに隣接して配置される場合、遅延は本質的に０であるはずである。）
ｄｅｌａｙｍｉｎは、クロック領域間の最小信号遅延である。
【００３３】
Ｔｓｋｅｗは、送り側および受取り側のクロック領域のクロック信号間のスキューである。
【００３４】
Ｔｓｅｔｕｐは、フリップフロップのためのセットアップ時間である。
Ｔｈｏｌｄは、フリップフロップのためのホールド時間である。
【００３５】
Ｎｓｈｉｆｔは、（図６および７に示されるように）クロック信号間のシフトを与えるのに必要なフリップフロップの数である。
【００３６】
ある特定の実施例では、図４に例示されている、４つより少ないかまたは多いフリップフロップが必要であるだろう。たとえば、２つのクロック領域のクロック信号間のスキューが増加する場合、必要とされるフリップフロップの数は５以上に増えることがある。逆に、クロック信号間にスキューがない場合、わずかに２つまたは３つのフリップフロップが必要とされるだけでよい。また、上記の数式に従って算出されるフリップフロップの数が最小の数を表わしており、いくつかの実施例では、この最小限の数より多くのフリップフロップを用いる可能性があることにも留意すべきである。
【００３７】
他の実施例では、フリップフロップ以外の装置を用いて、転送されたデータビットを記憶し得ることに留意すべきである。たとえば、１つまたは複数の多入力ＦＩＦＯ（先入れ先出し）メモリ装置を用いることができる。上述の実施例のフリップフロップを多入力ＦＩＦＯと取り替える場合、いくつかのデータビットを、それらビットが検索される前に各ＦＩＦＯにロードすることができ、こうして記憶装置の必要数を減らすことができる（が、装置の複雑さは増す）。実際、上述の実施例のフリップフロップは、異なる速度でロードおよびアンロードされ得るＦＩＦＯとして機能する。
【００３８】
パルス発生器５８は、ＭおよびＮ（すなわち、クロック比率）の値に従って適切なパターンをルックアップしたり、そのパターンを動的に計算したりするといった多くの方法で、この機能を達成することができる。パルス発生器の機能を他の方法でも達成し得ることが企図される。
【００３９】
一実施例では、パターン発生器を初期設定して、いずれのデータ転送の前にも、ある特定のスキップパターンを生成する。初期設定の間、送り側および受取り側のクロック領域に対応するＭおよびＮ値がパターン発生器に渡される。パターンが次いで、転送が行なわれる前に、受信されたＭおよびＮ値に従って生成される。初期設定の間、システムはまた、安定データをフリップフロップから検索できるように、アンロードおよびロードカウンタを適切な値にセットしなければならない。ロードカウンタが、（第１のフリップフロップに対応する）０に初期設定される場合、アンロードカウンタを、ビット時間によって、および（ｄｅｌａｙｍａｘ−ｄｅｌａｙｍｉｎ）とＴｓｋｅｗと（Ｔｓｅｔｕｐ＋Ｔｈｏｌｄ）との合計によって決定される値に初期設定することができる。ビット時間を、ピンサンプリングまたは直列ビットストリームから決定することができる。（第１のクロック領域から第２のクロック領域への転送、および第２のクロック領域から第１のクロック領域への転送は別個に処理されるので、これらの転送の各々に対する初期設定値は異なっていてもよいことが留意されるべきである。）
上述のように、データを確実に１つのクロック領域から他のクロック領域に転送し得るために、クロックスキップバッファを適切に初期設定し、かつ同期させることが重要である。これには２つの主要な機能が必要となる。第１に、２つの領域のクロック信号を整列させなければならない。すなわち、クロック信号が整列しているとき、クロックスキップパターンをロードまたはアンロードカウンタに与えなければならない。（たとえば、図２の「０」パルスが整列する。）クロック信号が整列しない場合（たとえば、スキップパターンが「１」パルスで開始される場合）、説明されないかつ高信頼データ転送を妨げ得る追加のスキューが存在することとなる。第２に、バッファのロードおよびアンロードカウンタが同期してリセットされなければならない。カウンタが同時に開始されない場合、バッファのデータを適切なときにアンロードできないおそれがある。バッファをあまりに早くアンロードした場合、データがまだ記憶されていないおそれがある。バッファをあまりに遅くアンロードした場合、データが上書きされてしまうおそれがある。
【００４０】
図５では、クロックスキップバッファを論理的に整列させ、それを初期設定するよう構成された回路の機能ブロック図が示される。回路は、１対の整列検出ユニット７１および７２、同期リセットユニット７３、スキップパターン発生器７４、カウンタリセットユニット７５ならびにデータ転送バッファ７６を含む。整列ユニット７１および７２の各々は、クロック領域のうちの１つにあるクロック信号の、基準クロック信号との整列を検出するよう構成される。それぞれのクロック信号が基準クロック信号と実質的に整列すると、整列を示す信号が生成される。（信号を、このシステムに固有のスキューのため、正確に整列させるのではなく「論理的に」整列させることが注目される。）この信号は同期リセットユニット７３およびカウンタリセットユニット７５に送られる。整列ユニット７２により生成された整列信号は、スキップパターン発生器７４にも送られる。
【００４１】
図に示される実施例では、整列ユニット７１はより低いクロック周波数を有するクロック領域にあるが、整列ユニット７２はより高いクロック周波数を有するクロック領域にあることに留意すべきである。クロックパルスはより高速のクロック速度を有するクロック領域だけでスキップされればよいので、このクロック領域だけがスキップパターン発生器を必要とする。他の実施例では、１つの領域が高速クロックを常に有することを可変クロック周波数が保証しない場合、クロックパルスは、両方のクロック領域においてスキップされることがあり、その場合には、整列ユニット７１に結合された第２のスキップパターン発生器を用いることになるだろう。
【００４２】
同期リセットユニット７３は整列ユニット７１および７２から整列信号を受取り、同期されたリセット信号（すなわち、２つのクロック領域の各々に対して１つずつ）を生成して、カウンタリセットユニット７５を初期設定する。カウンタリセットユニット７５は、データ転送バッファ７６を介してフローデータを制御するロードおよびアンロードカウンタを含む。同期リセットユニット７３により生成された、同期されたリセット信号が受信された後、カウンタリセットユニット７５はそれぞれのクロック領域に対応するロードおよびアンロードパルスを生成し、これらの信号をデータ転送バッファ７６に伝送し始める。
【００４３】
上述のように、２つの領域のクロック信号は同じ基準クロック信号から生成される。あるときに、およびその後に繰返される基準クロック周期ごとに、クロック信号が（少なくともある許容差内で）一致する。図２では、この点は、ＰＬＬにより生成された２つのクロック信号のうちの各々の立下がり端縁０により識別される。この点はまた、基準クロック信号の立下がり端縁とも一致する。図６に示される整列検出回路は、２つのクロック領域の各々のために設けられ、それぞれのクロック信号の整列を検出する。
【００４４】
図６では、整列ユニットの機能ブロック図が示される。上述のように、整列ユニットを用いて、２つのクロック領域のうち１つの領域におけるクロック信号の、基準クロックとの整列を検出する。（同一の回路を用いて両方のクロック領域におけるクロック信号の整列を検出するので、回路の構造は、ここでは、領域のうち１つの領域のみに関連して記載される。）回路は、３つの主要コンポーネント、すなわち端縁検出部分、プログラマブル遅延部分および信号オフセット部分に分解することができる。これらのコンポーネントは必ずしも物理的に別個ではないが、便宜上この態様で記載される。他の実施例では、整列ユニットの設計は変わる可能性がある。
【００４５】
回路の整列検出部分は、２つの信号、すなわち回路のクロック領域に対応するクロック信号、および分割されたクロック信号を受信するよう構成される。分割されたクロック信号は、図３に示されるそれぞれの除算回路（４５または４６のどちらか）の出力である。除算器出力信号は、基準クロック信号と本質的に同じであるが、基準クロック信号からシフトされる。ＰＬＬはクロック信号を調整し、これにより次いで、除算器出力を、それと基準クロックとの間の差をなくすような態様でシフトする。端縁検出器は、分割されたクロック信号の端縁が検出されたことを示す信号を生成し、（基準クロック周期ではなく、それぞれのクロック領域におけるクロック信号の）１クロック周期に対しこの信号をアサートする。回路のオフセットおよびプログラマブル遅延部分は、基準クロック周期の残りに対して、アサートされた信号を遅延させる役割を果たすので、それは、分割されたクロック信号の立下がり端縁が次に出現したときに、この回路によって出力され得る。回路のオフセットおよびプログラマブル遅延部分は、整列信号およびスキップリセット信号の２つの信号を作り出すよう構成される。
【００４６】
整列信号は分割されたクロック出力の立下がり端縁と一致する。スキップリセット信号は整列信号と同一であるが、時間的にシフトされて、いくつかのクロックサイクル分だけ整列信号に先行する。スキップリセット信号は、整列信号を予測していくつかの論理のレベルを介して処理することができるようにシフトされる。スキップリセット信号を用いてスキップパターン発生器をリセットするので、それは、整列信号がアサートされると、適切に初期設定される。整列ユニットにより生成された整列信号は、同期リセットユニットおよび同期カウンタユニットに送られる。スキップリセット信号はスキップパターン発生器に送られる。（上述のように、システムにはスキップパターン発生器は１つしか存在しないかもしれず、したがって、スキップパターン発生器を有さないクロック領域の整列ユニットは、スキップリセット信号を作り出す必要がない。）
整列ユニットは、システムが論理的に整列することを可能にする。すなわち、２つのクロック領域におけるクロック信号の一致した立下がり端縁が識別される。（クロック信号がそれでもやはりわずかに歪められることがあるので、端縁はこのスキューによりシフトされるおそれがあることに留意すべきである。）クロックスキップパターンの適切な整列により、ロードおよびアンロードカウンタは、同じ実効速度でのラン、および２つの異なるクロック領域間の最小の待ち時間でのデータの転送が可能となる。しかしながら、上述のように、システムは、ロードおよびアンロードカウンタが同時に始まり、クロック信号と整列するよう、それらを同時にリセットするためのメカニズムも有する必要がある。次いで、バッファにおける記憶場所のロードおよびアンロードが適切な順序で行なわれる。この機能は同期リセットユニットにより実行される。
【００４７】
図７には、同期リセットユニットを例示するブロック図が示される。同期リセットユニットは３つの主要なコンポーネント、すなわちリセット転送回路、遅延回路および同時リセット生成回路に分解することができる。リセット転送回路は非同期リセット信号を受取り、それを基準回路に同期させ、さらに２つのクロック領域のうち１つの領域の整列信号を用いてクロック領域に転送する。この実施例では、リセット信号は、より低速のクロック速度を有するクロック領域の整列信号で転送される。他の実施例では、リセット信号はより高速のクロック領域に転送され得る。結果として生じるリセット信号は遅延回路に入力される。遅延回路はリセット信号を遅延させるよう設計されており、２つのクロック領域の各々に対して、それらの間に存在する可能性のある大きなスキューにもかかわらず、リセット信号を安全に転送することを可能にする。この遅延は、クロック領域間で起こり得るスキューよりも大きなものであるべきであるが、それは、一方の領域とは異なる基準クロック周期の他方の領域におけるリセット信号のアサーションを回避するためである。信号が遅延されず、２つのクロック領域におけるリセット信号が異なるクロック周期でアサートされた場合、転送されたデータが失われたり破損したりするおそれがある。遅延リセット信号は同時リセット生成回路に送られ、そこでは、それぞれのクロック領域から次の整列信号が受信されると、２つのクロック領域の各々に対する別個のリセット信号が生成される。２つのクロック領域の各々に対するリセット信号は、それぞれの整列信号と整列する。
【００４８】
図３を参照すると、一実施例において、２つのクロック領域におけるクロック信号が、２つのＰＬＬにより基準クロック信号から生成されることがわかる。各領域のクロック信号はＭまたはＮ（基準クロックの速度に対するそれぞれのクロック領域のクロック速度の比率）で割られ、ＰＬＬにフィードバックされる。ＰＬＬは次いで、分割されたクロック信号が基準クロック信号と実質的に整列するまで、それぞれのクロック信号の位相を調整する。
【００４９】
一実施例では、リセット転送回路は、これらの異なるクロック信号（すなわち、基準クロック、分割されたクロック出力信号および遅い領域のクロック信号）によりクロックされる一連のフリップフロップを含む。非同期リセット信号はまず初めに、基準クロック信号によりクロックされるフリップフロップにおいて同期される。これにより、リセットタイミングを、外部基準クロックに関して特定することが可能となる。このフリップフロップの出力は次に、ＰＬＬに入力される、分割されたクロック信号のうち１つの信号によってクロックされるフリップフロップに取込まれる（たとえば、図３のポイントＣまたはＦ）。基準クロックと分割されたクロックとの間の差は、予測および管理が可能なＰＬＬ位相誤差である。第２のフリップフロップの出力は次に、除算回路の出力によりクロックされる第３のフリップフロップに転送され得る（たとえば、ポイントＢまたはＥ）。第３のフリップフロップの出力は、クロック領域信号によりクロックされるフリップフロップに転送され得る（たとえば、ポイントＡまたはＤ）。各転送は、予測および管理が可能なわずかな量のクロックスキューを与える。同期されたリセット信号はこれにより、制御された決定的な態様で基準クロック信号から整列信号にウォークバック（ｗａｌｋ ｂａｃｋ）されて、整列したリセット信号（すなわち、クロック領域の整列信号と整列するリセット信号）を作り出す。整列したリセット信号は次いで遅延回路に入力される。
【００５０】
遅延回路は、予め定められた時間の間、整列したリセット信号を遅延させる役割を果たす。この遅延は、２つのクロック領域における整列信号間での考えられ得る最大限のスキューより大きいものでなければならない。整列したリセット信号を遅延させた後、それを同時リセット生成回路に伝送する。
【００５１】
同時リセット生成回路では、遅延され整列したリセット信号が、２つのクロック領域の各々からの整列信号とともに受信される。リセット信号は、２つのクロック領域の各々において、次にそれらのそれぞれの整列信号がアサートされる際に、アサートされる。遅延の目的は、リセット信号が、連続した基準クロックパルスではなく、同じ基準クロックパルスに対応する２つの整列信号パルスと整列してアサートされることを確実にすることである。
【００５２】
各クロック領域においてアサートされるリセット信号は、初期値をロードまたはアンロードカウンタのそれぞれにロードさせ、さらにカウンタを、それらのそれぞれのクロック信号の対応する整列したパルスで開始する。こうして、カウンタが適切な時に開始されること、およびロードカウンタが必要な分だけアンロードカウンタに先行して、クロックスキップバッファによるデータの転送を上述のとおりに可能とすることを確実にすることができる。整列信号を用いてリセットを各領域に転送することにより、２つのリセットが論理的に同時となり、スキューにより生じるこれらの間のいずれの差も、余分のステージをクロックスキップバッファに追加することにより管理される。
【００５３】
この発明は特定の実施例に関して記載されてきたが、この実施例は例示的なものであり、この発明の範囲はこれらの実施例に限定されるものではないことが理解されるだろう。記載の実施例に対する多くの変更、修正、追加および改良が可能である。これらの変更、修正、追加および改良は、前掲の特許請求の範囲内に詳述されるこの発明の範囲内であり得る。
【００５４】
産業上の利用可能性
この発明は、電子システムにおけるクロッキングサブシステムに適用可能である。
【図面の簡単な説明】
【図１】中間バッファを用いる、１つのクロック領域から別のクロック領域へのデータの転送を示すブロック図である。
【図２】このシステムの一実施例で用いられるクロックスキップ技術を示す図である。
【図３】クロック信号が一実施例で生成される態様を示す機能ブロック図である。
【図４】一実施例におけるクロックスキップバッファの構造を示すブロック図である。
【図５】一実施例において、クロックスキップバッファを論理的に整列させ、初期設定するよう構成された回路の機能ブロック図である。
【図６】一実施例における整列ユニットの機能ブロック図である。
【図７】一実施例における同期リセットユニットの機能ブロック図である。
【図１】
2004506974.tif 000004
【図２】
2004506974.tif 000005
【図３】
2004506974.tif 000006
【図４】
2004506974.tif 000007
【図５】
2004506974.tif 000008
【図６】
2004506974.tif 000009
【図７】
2004506974.tif 000010
【国際公開パンフレット】
2004506974.tif 000011
2004506974.tif 000012
2004506974.tif 000013
2004506974.tif 000014
2004506974.tif 000015
2004506974.tif 000016
2004506974.tif 000017
2004506974.tif 000018
2004506974.tif 000019
2004506974.tif 000020
2004506974.tif 000021
2004506974.tif 000022
2004506974.tif 000023
2004506974.tif 000024
2004506974.tif 000025
2004506974.tif 000026
2004506974.tif 000027
2004506974.tif 000028
【国際調査報告】
2004506974.tif 000029
2004506974.tif 000030
2004506974.tif 000031