(57)【特許請求の範囲】
【請求項１】
高周波数クロックに従って動作する高周波数装置(16)とともに使用され、かつ高周波数クロックのＰ／Ｑ倍（ただし、ＰおよびＱは所定の値を有する整数で、ＰはＱ未満であり）の周波数を有する低周波数クロックに従って動作する低周波数装置(18)とともに使用される装置であって、
高周波数クロックおよび低周波数クロックでの一致するエッジの出現を検出することによって高周波数クロックおよび低周波数クロックの所定の位相関係を指示するよう、前記一致するエッジの出現に応答してｓｙｎｃ信号をアサートする指示手段(11, 62)を備え、
ｓｙｎｃ信号および高周波数クロックを受けてそれらに応じて、ＰおよびＱならびにｓｙｎｃ信号に従って安全にデータの転送をできるウインドウを示す低高転送信号および高低転送信号を発生するインタフェース・コントローラ(12, 72) を備え、その低高転送信号は低周波数装置(18)から高周波数装置(16)へと安全にデータの転送をできるウインドウを示し、その高低転送信号は高周波数装置(16)から低周波数装置(18)へと安全にデータの転送をできるウインドウを示し、それらの安全にデータの転送をできるウインドウは、高周波数クロックの少なくとも１周期の期間を有し、その期間中には、転送されるべきデータが安定であり且つデータ受信側の装置がデータ受信可能状態にあり、
低高転送信号および高低転送信号を受けてそれらに応じて、高周波数装置および低周波数装置の間でのデータの同期送受信をもたらす手段(14)を備える
ことを特徴とする装置。
【請求項２】
請求項１に記載の装置において、前記インタフェース・コントローラ(12, 72) には、
高周波数クロックに応じてカウント値を発生するとともに、前記指示手段によるｓｙｎｃ信号のアサートに応じてカウント値が所定のカウント値にリセットされるカウンタ手段(76)と、
そのカウンタ手段に結合され、カウント値とＰおよびＱの値を復号し、ＰおよびＱとカウント値の所定の組合せに従って低高転送信号および高低転送信号を発生するデコーダ手段(75)と
が含まれている、ことを特徴とする装置。
【請求項３】
請求項１または２に記載の装置において、前記インタフェース・コントローラ(12, 72) にＱ値を送る、Ｑ値を選択するＱセレクタを備え、指示手段(11, 62)および前記インタフェース・コントローラ(12, 72) は選択されたＱ値に応じて動作できる、ことを特徴とする装置。
【請求項４】
高周波数クロックに従って動作する高周波数装置とともに使用され、かつ高周波数クロックのＰ／Ｑ倍（ただし、ＰおよびＱは所定の値を有する整数で、ＰはＱ未満であり、ＱはＰの整数倍ではない）の周波数を有する低周波数クロックに従って動作する低周波数装置とともに使用される装置であって、
高周波数クロックおよび低周波数クロックでの一致するエッジの出現を検出し、前記一致するエッジの出現に応じて、一致するエッジの出現を示す信号をアサートする手段を備え、
前記一致するエッジの出現を示す信号および高周波数クロックを受けてそれらに応じて、ＰおよびＱならびに前記一致するエッジの出現に従って、安全に転送をできるウインドウを示す転送信号を発生する手段を備え、そのウインドウは、高周波数クロックの少なくとも１周期の期間であって、転送されるべきデータが安定であり且つデータ受信側の装置がデータ受信可能状態にある期間であり、
転送信号を受けてそれらに応じて、高周波数装置および低周波数装置の一方から他方へとデータの同期転送をもたらす手段を備え、
前記転送信号を発生する手段に結合され、ＰおよびＱの値を選択する手段を備える、
ことを特徴とする装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は一般的には同期データ転送に関し、詳細にいえば、Ｐ／Ｑ整数比関係を有する異なる周波数で動作するディジタル論理装置間の同期データ転送に関する。
【０００２】
【従来の技術】
歴史的にいって、コンピュータのシステム周波数は利用されるシリコン技術によって制限されていた。換言すれば、システム・ボード技術は、その時点で利用可能なシリコン技術によってもたらされるマイクロプロセッサよりも高い周波数で動作することができた。通常、古い技術を使用して設計されたコンピュータ・システムはシステム・ボードとマイクロプロセッサの両方をマイクロプロセッサが必要とする低い周波数で動作させるものであった。しかしながら、シリコン技術がシステム・ボード技術よりも早く進歩してきたため、逆転が生じている。今日では、最新のシリコン技術が、現在入手可能なシステム・ボードよりもはるかに高い周波数で動作できるマイクロプロセッサが実現している。
【０００３】
システム・ボードとマイクロプロセッサの技術の他に、異なる周波数領域で動作させなければならないというさまざまな他の技術的制約が存在している。たとえば、マイクロプロセッサとキャッシュ・メモリを、最大動作周波数がそれぞれ異なっている異なるシリコン技術を使用して製造することができる。マイクロプロセッサと浮動小数点演算装置も異なる周波数で動作させるのが有利である。これらの例において、キャッシュ・メモリおよび／または浮動小数点演算装置はＣＰＵと同じチップ（ダイ）に実装されたものであっても、別なチップに実装されたものであってもよい。同一チップで製造する場合であっても、データを交換する個々の機能ブロックは異なる周波数で動作するのが有利である。異なる周波数で動作するのが有利な装置の他の例としては、ディスクリート論理構成要素と通信装置がある。したがって、本発明は各種のディジタル論理装置およびメモリ装置に適用できる。
【０００４】
今日、高性能コンピュータ・システムを提供するためには、マイクロプロセッサをその最大可能周波数で動作させ、コンピュータ・システムの他の部品をシステム・ボード技術またはその他の技術のいずれかの制約によって規定される低い周波数で動作させるのが有利である。このようなコンピュータ・システムでの大きな問題は、異なる周波数で動作している各種の構成要素の間のデータ転送である。解決策の１つは非同期データ転送機構を設けることである。非同期データ転送機構は正確なデータ転送を行うことができるが、マイクロプロセッサで使用するには望ましくないことがしばしばある。非同期転送機構にはデータ転送待ち時間の不確実性と、データ転送精度との間の固有のトレードオフがある。通常、非同期転送機構はデータ転送待ち時間の不確実性を犠牲にして、データ転送精度を最適化するように設計されている。
【０００５】
マイクロプロセッサにおける同期設計はいくつかの理由から、非同期設計よりも有利である。第１に、マイクロプロセッサの設計検証ツールは同期論理設計のデバッグに合わせて最適化されている。同期設計技法を使用すると、マクロプロセッサの設計と検証が大幅に簡単となり、また信頼性の高いものとなる。第２に、マスタ・チェッカ手法を使用するフォールト・トレラント・コンピュータ・システムで、同期設計が要求されている。マスタ・チェッカ・システムにおいて、第１のプロセッサ、すなわちマスタは第２のプロセッサ、すなわちチェッカによるロック・ステップ動作を行う。各クロック・サイクル中に、チェッカ・プロセッサは２つのプロセッサがそのピンに同一の結果を発生しているかどうかを監視して、エラー・チェックを行う。非同期データ転送設計が前提となるロック・ステップ動作をもたらさないため、これらの設計はマスタ・チェッカ・システムでは受け入れられない。
【０００６】
マイクロプロセッサの中には、コンピュータ・システム・バスの周波数の整数倍の周波数で内部動作を行うものがある。このようなコンピュータ・システムにおいては、低い周波数のクロックのデータ転送エッジが高い周波数のクロックのデータ転送エッジと対応していることによって、異なる周波数で動作している構成要素の間の同期データ転送が容易となる。したがって、低い周波数のクロックのデータ転送エッジまたは高い周波数のクロックの対応するデータ転送エッジ、あるいはこれら両方を使用して、データ転送を行うことができる。しかしながら、整数倍周波数設計はシリコン技術における量子跳躍の改善を利用しているだけにすぎない。たとえば、システム・ボード技術が５０ＭＨｚの動作に限定されている場合には、１００、１５０、２００．．．ＭＨｚで動作するマイクロプロセッサを整数倍設計に使用できる。現在利用可能なシリコン技術が１２０ＭＨｚでマイクロプロセッサを動作させられると仮定すると、１００ＭＨｚを超えた追加の２０％の性能は整数倍設計には利用されない。システム・バスに対してより融通性の高い周波数比で動作できるとともに、マイクロプロセッサとコンピュータ・システム・バスの他の装置との間での同期データ転送をもたらすことのできるマイクロプロセッサの設計を提供するのが有利である。一般に、融通性の高い動作周波数比にしたがって動作する各種のディジタル論理装置およびメモリ装置の間で同期データ転送を行うのが有利であろう。本発明はこれらの有利な成果をもたらすものである。
【０００７】
【発明が解決しようとする課題】
したがって、Ｐ／Ｑ整数比関係を有する周波数で動作するディジタル装置間の同期データ転送のためのシステム、方法および装置が必要とされている。本発明はそれを実現することを目的とする。
【０００８】
【課題を解決するための手段】
本発明はＰ／Ｑ整数比関係を有する周波数で動作する装置間で同期データ転送を行うための装置を提供し、ならびにマイクロプロセッサおよびコンピュータ・システムでそれを実現しようとするものである。本発明装置は次の周波数関係を有する高周波数装置と低周波数装置の間の同期データ転送をもたらす。
低周波数＝（Ｐ／Ｑ）×高周波数
ただし、ＰおよびＱは整数値であり、ＰはＱより小さい。装置はデータ転送信号を発生し、これらの信号で高周波数領域と低周波数領域の間でデータを同期転送するための安全なデータ転送時間すなわち安全にデータを転送できるウィンドウを確保する。一つの例において、安全なデータ転送ウィンドウは、転送すべきデータが安定しており、受信装置がデータを受信できる（すなわち、受信する準備ができている）時間範囲、すなわち期間である。
【０００９】
本発明装置は高周波数クロックにしたがって動作する高周波数装置とともに、また低周波数クロックにしたがって動作する低周波数装置とともに使用できる。低周波数クロックは高周波数クロックの周波数のほぼＰ／Ｑ倍である。ただし、ＰおよびＱは整数値である。
【００１０】
一実施態様において、本発明装置は高周波数および低周波数のクロックの所定の位相関係を示す手段と、その指示手段および高周波数クロックに応じて、ＰおよびＱの値ならびに所定の位相関係にしたがって安全な転送ウィンドウ中に転送信号を発生する手段と、その転送信号に応じて、高周波数および低周波数装置の一方から他方へのデータの同期転送を可能とする手段とを含んでいる。
【００１１】
ある態様では、安全な転送ウィンドウは転送されるデータが安定し、かつデータ受信装置がデータを受信できる、高周波数クロックの少なくとも１つの期間である。一つの例において、所定の位相関係は高低の周波数クロックのほぼ一致エッジである。一つの例において、ＰはＱ未満であり、ＱはＰの整数倍ではない。
【００１２】
他の実施態様では、本発明はＰとＱの値を選択する手段を含んでいる。その一つの例ではＰおよびＱ選択手段は装置のプログラム式ピンからなっている。他の例ではＰおよびＱ選択手段は装置のレジスタである。さらに他の例ではＰおよびＱ選択手段はアルゴリズムを実行するプロセッサからなっている。さらに他の例ではＰおよびＱ選択手段はアルゴリズムを実行する状態機械からなっている。
【００１３】
本発明の特定の実施態様において、転送信号発生手段は、高周波数クロックに応じてカウント値を発生するとともに指示手段に応じてカウント値を所定のカウント値にリセットするカウンタ手段と、そのカウンタ手段に結合され、カウント値とＰおよびＱの値を復号し、ＰおよびＱとカウント値の所定の組合せにしたがって転送信号を発生するデコーダ手段とを含んでいる。
【００１４】
他の実施態様では、本発明はＰおよびＱの値にしたがって高低の周波数クロックの一方または両方を発生するＰ／Ｑクロック発生手段を含んでいる。その一つの例では、Ｐ／Ｑクロック発生手段は高周波数クロックに応答して、ＰおよびＱの値にしたがって低周波数クロックを発生する。他の例では、Ｐ／Ｑクロック発生手段は低周波数クロックに応答して、ＰおよびＱの値にしたがって高周波数クロックを発生する。
【００１５】
特定の実施態様において、Ｐ／Ｑクロック発生手段は低周波数クロックに応じて、（低周波数クロック）／Ｐにほぼ等しい周波数を有する第２信号を発生する周波数分割手段と、その第２信号に応じて、低周波数クロックの周波数のほぼＱ／Ｐ倍の高周波数クロックを発生する位相ロックループとを含んでいる。
本発明を添付図面の図に限定されるものではない例によって説明するが、類似した参照符号は同等な要素を示す。
【００１６】
【実施例】
Ｐ／Ｑ整数比関係を有する周波数で動作する装置の間で同期データ転送を行うためのシステム、方法、および装置を説明する。以下の説明において、信号名、入力または出力信号タイプ、装置の周波数、クロック周波数、バス周波数、およびＰ／Ｑ周波数比などの各種の固有の細目が、本発明を完全に理解するために記載されている。しかしながら、当分野の技術者には、本発明をこれらの固有の細目なしに実施できることが明らかであろう。他の場合には、周知の方法および回路をブロック図の形で示して、本発明を曖昧なものとしないようにした。本発明を周知のＣＭＯＳ（相補型金属酸化膜半導体）技術、あるいは同等の半導体製造プロセスを使用して簡単に製造できるトランジスタ回路で構成できることを理解されたい。さらに、本発明をディジタル装置を作成するための他の製造プロセスによって実施することもできる。
【００１７】
以下の検討において、本発明をマイクロプロセッサでの実施に関して提示するが、本発明はその実施形態に限定されるものではない。別々の論理装置、メモリ装置、同一または別のチップのいずれかにおける装置、通信装置などの各種のディジタル装置間での同期データ転送に関する実施形態は、本発明の範囲および精神に属するものである。
【００１８】
図１は本発明装置の一実施例のブロック図である。本発明は一般に、データを同期して交換し、Ｐ／Ｑ整数比関係を有する周波数で動作するディジタル装置に適用される。高周波数領域の装置は高周波クロックによってクロックされ、低周波数領域の装置は高周波数クロックの周波数のＰ／Ｑ倍の周波数を有する低周波数クロックによってクロックされる。ただし、ＰおよびＱは整数値である。本実施例において、ＰはＱよりも小さく、低周波数／高周波数関係をもたらす。Ｐ／Ｑ同期転送装置７は高周波数装置と低周波数装置との間の同期データ転送をもたらす。
【００１９】
Ｐ／Ｑクロック発生器１０は１つまたは複数のクロックを発生する。一つの例において、Ｐ／Ｑクロック発生器１０は入力として低周波数クロックＬＦｃｌｋを受け取り、高周波数クロックＨＦｃｌｋを発生する。この例において、Ｐ／Ｑクロック発生器１０は位相ロック・ループである。他の例ではＰ／Ｑクロック発生器１０は高周波数クロックを受け取り、低周波数クロックを発生する。さらに他の例ではＰ／Ｑクロック発生器１０は高低両周波数のクロックを発生する。高低クロックの周波数は式１によって決められる２つの値ＰおよびＱによって決定されるＰ／Ｑ整数比関係を有する。
（式１）    低周波数＝（Ｐ／Ｑ）×高周波数
ただし、Ｐ＜Ｑ、ＰおよびＱは整数値を表す。
【００２０】
ＰおよびＱの値は各種の方法でプログラムしたり、設定したり、あるいは選択したりすることができる。たとえば、図２はプログラム式ピン１２６からなるＰおよびＱの値を選択するためのＰ／Ｑセレクタを示す。図３はＰレジスタおよびＱレジスタからなるＰ／Ｑセレクタを示す。図４はＰおよびＱの値を選択するためのＰおよびＱ選択状態機械１４０を示す。図５はＰおよびＱの値を選択するためのアルゴリズムを示す。このアルゴリズムはプロセッサまたは状態機械によって実行することができる。たとえば、プロセッサの電源を入れてＰおよびＱのデフォルト値を持たせ、できるだけ高い周波数で動作させ、システム・バスによる最適動作のためにＰおよびＱの値を反復して選択させることができる。
【００２１】
図１を再度参照されたい。同期発生器１１は高低の周波数クロックの所定の位相関係を示すＳｙｎｃ信号を発生する。一つの例において、同期発生器１１は位相検出回路であり、高低の周波数クロックを受け取り、所定の位相関係を検出したとき、Ｓｙｎｃ信号を発生する。Ｓｙｎｃ信号は、所定の位相関係を示すためさまざまな時点でアサートされる。一つの例において、Ｓｙｎｃ信号は、高周波数クロック・サイクル中の、高低の周波数クロックの立上りエッジが一致する以前にアサートされる。一つの例において、Ｓｙｎｃ信号は所定の位相関係の発生ごとに発生される。他の例ではＳｙｎｃ信号は所定の位相関係の最初の発生時にのみ発生される。一つの例において、所定の位相関係とは高低の周波数クロックの立上りエッジの一致である。他の例ではＳｙｎｃ信号は高低の周波数クロックの他の複数のエッジの一致ないし位相関係を示し、それを示すためにその時点でアサートされる。
【００２２】
高周波数装置１６は高周波数クロックに応じて動作し、そのデータ入力およびデータ出力端子（それぞれＤａｔａＩＮおよびＤａｔａＯＵＴ）を介して、データを他の装置と交換する。低周波数装置１８は低周波数クロックに応じて動作し、それ自体のデータ入力およびデータ出力端子（これもそれぞれＤａｔａＩＮおよびＤａｔａＯＵＴである）を介して、データの交換をする。高周波数装置および低周波数装置のデータ入力および出力端子は、データ修飾器１４に結合されている。一つの例において、高低の周波数装置は組合せ論理装置である。他の例では高低の周波数装置は別々の論理装置である。他の例では高低の周波数装置はプロセッサである。他の例では高低の周波数装置はＣＰＵとキャッシュ・メモリ、あるいはＣＰＵと浮動小数点演算装置などのマイクロプロセッサの異なる機能ブロックである。他の例では高低の周波数装置は別々のチップのＣＰＵとキャッシュ・メモリである。さらに他の例では高周波数装置はプロセッサであり、低周波数装置はコンピュータ・システムの周辺装置およびシステム・バスである。
【００２３】
データ修飾器１４は高周波数装置の入力および出力端子をそれぞれ低周波数装置の出力および入力端子に結合し、高周波数装置と低周波数装置の間のデータの転送を可能とする。データ修飾器１４は高低データ転送信号Ｈ−−＞Ｌ＿ｅｎに応じた高周波数装置から低周波数装置へのデータの転送、ならびに低高データ転送信号Ｌ−−＞Ｈ＿ｅｎに応じた低周波数装置から高周波数装置へのデータの転送を可能とする。Ｈ−−＞Ｌ＿ｅｎおよびＬ−−＞Ｈ＿ｅｎデータ転送信号はそれぞれデータ修飾器１４のｅｎ１およびｅｎ２入力に結合されている。一つの例においては、データ修飾器１４はデータ転送信号に応じてデータを転送するための転送ゲートからなっている。他の例ではデータ修飾器１４は転送データをデータ転送信号で修飾するためのＡＮＤゲートなどの論理ゲートからなっている。他の例ではデータ修飾器１４はデータ転送信号に応じて入力および出力データをラッチするラッチからなっている。さらに他の例ではデータ修飾器１４はデータ転送信号によって使用可能とされ、クロックの１つに応答するラッチからなっている。
【００２４】
インタフェース・コントローラ１２はＰおよびＱ値、高周波数クロックおよびＳｙｎｃ信号を受け取り、これらの入力に応じて、それぞれ高周波数領域から低周波数領域へ、および低周波数領域から高周波数領域への同期データ転送を可能とするＨ−−＞Ｌ＿ｅｎおよびＬ−−＞Ｈ＿ｅｎデータ転送信号を発生する。一つの例においては、インタフェース・コントローラは状態機械である。他の例ではインタフェース・コントローラはプロセッサである。さらに他の例ではインタフェース・コントローラは組合せ論理である。活動時に、データ転送信号は高低の周波数装置の間でデータを同期転送するための安全にデータを転送できる時間ないしウィンドウを示す。一つの例において、安全にデータを転送できる時間は送信周波数領域におけるデータが安定していることが判明しているときであり、かつ受信周波数領域における受信装置がデータを受信できるときである。
【００２５】
図６は図１のインタフェース・コントローラ１２が発生するＬ−−＞Ｈ＿ｅｎ信号の一つの例を示す。この例において、Ｌ−−＞Ｈ＿ｅｎ信号は低周波数クロックの立上りエッジ（すなわち、データ変化エッジ）のない間に選択された高周波数クロック・サイクルの間にアクティブ状態である。低周波数領域におけるデータは低周波数クロックの立上りエッジに応じて変化する。低周波数領域データがＬ−−＞Ｈ＿ｅｎがアクティブ状態の期間の間安定しているため、この期間の間にデータを低周波数領域から高周波数領域へ転送するのが安全であり、かつ高周波数装置はその高周波数クロック・サイクルの間データを受け取ることができる。他の例では、低周波数領域のデータは低周波数クロックの立下がりエッジに応じて変化し、Ｌ−−＞Ｈ＿ｅｎ信号は低周波数クロックの立下がりエッジがない間に選択された高周波数クロック・サイクルの間にアクティブ状態である。他の例ではＬ−−＞Ｈ＿ｅｎ信号は低周波数クロックのデータ変化エッジがない間に選択された高周波数クロック・サイクルの間アクティブ状態である。一つの例においては、データの転送も読取りまたは書込み信号によって修飾される。
【００２６】
図７は図１のインタフェース・コントローラ１２が発生するＨ−−＞Ｌ＿ｅｎ信号の一つの例を示す。この例において、Ｈ−−＞Ｌ＿ｅｎ信号は低周波数クロックの立上りエッジ（すなわち、データ受信エッジ）のすぐ前の高周波数クロック・サイクルの間アクティブ状態となる。高周波数装置によって転送されるべきデータはＨ−−＞Ｌ＿ｅｎ信号に応じてラッチされてから、低周波数装置へ転送される。データは次いで、低周波数クロックの次の立上りエッジにおいて低周波数装置によってラッチないし受信される。一つの例において、データの転送は読取りまたは書込み信号によって修飾もされる。他の例ではＨ−−＞Ｌ＿ｅｎデータ転送信号は低周波数クロックの受信エッジの直前の２つ以上の高周波数クロック・サイクルの間にアクティブ状態となる。この例によって、高周波数領域からのデータが低周波数装置によって受け取られるまでに余分の時間の間、安定することが可能となる。他の例ではＨ−−＞Ｌ＿ｅｎデータ転送信号が、低周波数クロックのデータ受信エッジの間にアクティブ状態となる。さらに他の例では低周波数クロックの受信エッジは立下がりエッジである。他の例ではＨ−−＞Ｌ＿ｅｎ信号は、低周波数クロックのデータ変化ないしデータ受信エッジが存在しない間の高周波数クロック・サイクルの間アクティブ状態となることができる。
【００２７】
図８はコンピュータ・システムのプロセッサ５０における本発明装置の特定の実施形態のブロック図である。この実施例を、図１の実施例と異なり、マイクロプロセッサおよびコンピュータに関して説明する。たとえば、図１の低高および高低データ転送信号をｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ信号として説明して、入出力パッドにおけるデータをサンプリングおよび駆動するプロセッサの機能を反映させる。プロセッサ５０はシステム・バス５６に結合されて、５４によって表される外部装置と通信する。外部装置５４はシステム・バス５６の一部となりうるバス・クロックに応じて動作する。一つの例において、バス・クロックはプロセッサ５０によって発生される。他の例ではバス・クロックは外部で発生され、プロセッサ５０へ入力される。
【００２８】
プロセッサ５０はシステム・バス５６を介して高周波数プロセッサ・コア３４と外部装置５４の間に同期データ転送をもたらすためのＰ／Ｑ同期転送装置４８を含んでいる。Ｐ／Ｑ同期転送装置はシステム・バス・インタフェース論理５２を含んでいる。他の実施例において、システム・バス・インタフェース論理５２は外部装置５４の一部である。さらに他の実施例において、システム・バス・インタフェース論理５２はプロセッサ５０の外部の独立した装置の一部である。システム・バス・インタフェース論理５２はスキュー解除低周波数バス・クロックに応答して動作する。高周波数プロセッサ・コア３４は高周波数コア・クロックに応答して動作する。スキュー解除バス・クロックはバス・クロックと同じ周波数を有しており、かつコア・クロックと同じ位相を有している。バスとコア・クロックの間の周波数関係は以下の式２で規定する整数比関係である。スキュー解除バス・クロックは単純な論理設計を可能とする。他の実施例においては、バス・クロックがスキュー解除バス・クロックの代わりに使用される。
【００２９】
プロセッサ５０はＰ値とＱ値を受け取るＰ／Ｑクロック発生器３０を含んでおり、１つまたは複数のクロックおよびＳｙｎｃ信号を発生する。一つの例において、Ｐ／Ｑクロック発生器１０は入力としてバス・クロックを受け取り、コア・クロックを発生する。この例において、Ｐ／Ｑクロック発生器３０は位相ロック・ループであってもよい。他の例ではＰ／Ｑクロック発生器３０はコア・クロックを受け取り、バス・クロックを発生する。さらに他の例ではＰ／Ｑクロック発生器３０はバス・クロックとコア・クロックの両方を発生する。一つの例においては、Ｐ／Ｑクロック発生器３０はコア・クロックと同じ位相を有するスキュー解除バス・クロックを発生する。他の例ではＰ／Ｑクロック発生器３０はバス・クロックと同じ位相を有するスキュー解除バス・クロックを発生する。コア・クロックとバス・クロックの周波数は式２で規定される２つの値ＰおよびＱによって決定される整数比関係Ｐ／Ｑを有している。
【００３０】
（式２）    バス・クロック周波数＝（Ｐ／Ｑ）×コア・クロック周波数
ただし、ＰおよびＱは整数比Ｐ／Ｑの整数値を表す。一つの例において、ＰはＱよりも小さく、バス・クロック周波数がコア・クロック周波数よりも低くなるようになっている。他の例ではＰはＱよりも大きく、バス・クロック周波数がコア・クロック周波数よりも高くなっている。ＰおよびＱの値は各種の方法で設定することができる（図２−図５）。一つの例においては、ＰおよびＱの値はプロセッサ５０のピンによって設定される。他の例ではＰおよびＱの値はプロセッサ５０のレジスタに値を書き込むことによって設定される。さらに他の例ではＰおよびＱはアルゴリズムによって設定される。たとえば、プロセッサ５０は電源が投入されてＰおよびＱがデフォルトの値となり、取りうる最高のコアで動作し、システム・バスによる最適な動作のために反復してＰおよびＱの値を選択する。このようなアルゴリズムはシステムＢＩＯＳ内でプロセッサによって実行されるソフトウェア・ルーチンによって、あるいはプロセッサのハードウェア状態機械によって実現できる。
【００３１】
Ｓｙｎｃ信号はクロックの所定の位相関係を示す。一つの例においては、Ｓｙｎｃ信号はコア・クロックとバス・クロックの実質的な立上りエッジの一致を示す。他の例ではＳｙｎｃ信号はコア・クロックとスキュー解除バス・クロックの実質的な立上りエッジの一致を示す。他の例ではＳｙｎｃ信号はクロック間の他の所定の位相関係を示す。Ｓｙｎｃ信号は各種の態様で所定の位相関係を示すことができる。一つの例において、一致エッジを示すために、コア・クロックとスキュー解除バス・クロックのデータ変化エッジの一致の直前のコア・クロック・サイクルの間に、Ｓｙｎｃ信号がアサートされる。一つの例において、所定の位相関係の発生のたびにＳｙｎｃ信号が発生される。他の例では所定の位相関係が初めて発生したときにだけ、Ｓｙｎｃ信号が発生される。他の例ではＳｙｎｃ信号はクロックの他の一致エッジを示し、他の時点でアサートされ、そのような指示を行う。
【００３２】
プロセッサ５０はインタフェース・コントローラ３２も含んでいる。インタフェース・コントローラ３２はＰおよびＱの値、コア・クロック、ならびにＳｙｎｃ信号を受け取り、これらの入力に応じて、２つのデータ転送信号ｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎを発生し、これらはそれぞれプロセッサ５０の入力および出力データ転送を可能とする。一つの例において、インタフェース・コントローラは状態機械である。他の例ではインタフェース・コントローラはプロセッサである。さらに他の例ではインタフェース・コントローラは組合せ論理である。アクティブ状態時に、データ転送信号はプロセッサ５０に対して安全にデータを転送できる時間ないしウィンドウを示して、プロセッサの入力４６または出力４４それぞれのパッドにおけるデータを同期サンプリングまたは駆動する。他の例では単一の入出力パッドを独立した入力および出力パッドの代わりに使用することができる。データ入力を目的とした場合、安全にデータを転送できる時間は入力データが安定しており、ラッチ４２がデータを受け取れるときである。データ出力を目的とした場合、安全にデータを転送できる時間は出力データが安定しており、ラッチ３８がデータを受け取る準備ができているときである。
【００３３】
プロセッサ５０はプロセッサ・コア３４を含んでおり、これはコア・クロックに応じて動作して、データおよび命令を処理し、システム・バス５６を介して外部装置５４とデータを同期交換する。一連のラッチ３６、３８、４０および４２はプロセッサ・コア３４とシステム・バス５６の間に結合されて、プロセッサ・コア３４と外部装置５４の間の同期データ交換を容易とする。ラッチ３６はプロセッサ・コア３４のデータ出力端子ＤａｔａＯＵＴからデータを受け取るように結合されている。ラッチ３６のイネーブルおよびクロック入力はそれぞれｄｒｉｖｅ＿ｅｎおよびコア・クロック信号に結合されている。一つの例において、ラッチ３６は透過Ｄラッチであり、イネーブル入力がアクティブ状態であれば、コア・クロックが低い期間の間透過性である。他の例ではラッチ３６はエッジ・トリガＤラッチである。ラッチ３６の出力はラッチ３８の入力に結合されている。ラッチ３８のクロック入力はスキュー解除バス・クロックに結合されている。一つの例において、ラッチ３８はスキュー解除バス・クロックの立上りエッジに応答するエッジ・トリガ・ラッチである。他の例ではラッチ３８は透過Ｄラッチである。ラッチ３８の出力は出力パッド４４に結合されている。他の例ではスキュー解除バス・クロックが発生されず、ラッチ３８のクロック入力がバス・クロックに結合されている。
【００３４】
ラッチ４０は入力パッド４６からデータを受け取るように結合されている。ラッチ４０のクロック入力はスキュー解除バス・クロックに結合されている。一つの例においては、ラッチ４０はスキュー解除バス・クロックの立上りエッジに応答するエッジ・トリガＤラッチである。他の例ではラッチ４０は透過Ｄラッチである。他の例ではスキュー解除バス・クロックが発生されず、ラッチ４０のクロック入力がバス・クロックに結合されている。ラッチ４２はラッチ４０の出力を受け取るように結合されている。ラッチ４２のイネーブルおよびクロック入力はそれぞれｓａｍｐｌｅ＿ｅｎおよびコア・クロック信号に結合されている。一つの例において、ラッチ４２は透過Ｄラッチであり、イネーブル入力がアクティブ状態であれば、コア・クロックが高い期間の間透過性である。他の例ではラッチ４２はエッジ・トリガＤラッチである。ラッチ４２の出力はプロセッサ・コア３４のデータ入力端子ＤａｔａＩｎに結合されている。
【００３５】
図９はシステム・バス５６からプロセッサ・コア３４にデータを入力する際の、図８のプロセッサ５０の動作の１例を示す一連の波形である。Ｔ１の間、Ｓｙｎｃ信号は高く、スキュー解除バス・クロック（または、バス・クロック）の次の立上りエッジがコア・クロックの立上りエッジに一致していることを示す。Ｔ２、Ｔ３およびＴ４の間、外部装置５４はシステム・バス５６の入力データを駆動する。Ｔ４の間、スキュー解除バス・クロックの立上りエッジに応じて、ラッチ４０は入力データをラッチする。Ｔ５の間、ｓａｍｐｌｅ＿ｅｎ信号はアクティブ状態で、入力データをラッチしても安全である（すなわち、入力データが安定している）ことを示す。アクティブ状態のｓａｍｐｌｅ＿ｅｎ信号とコア・クロックが高い期間に応答して、ラッチ４２はラッチ４０からの入力データをラッチする。ラッチ４２の出力はプロセッサ・コア３４のＤａｔａＩＮ端子に与えられる。
【００３６】
図１０は外部装置５４が使用するために、プロセッサ・コア３４からシステム・バス５６へデータを出力する際の、図８のプロセッサ５０の動作の１例を示す一連の波形である。Ｔ１の間、Ｓｙｎｃ信号は高く、スキュー解除バス・クロック（または、バス・クロック）の次の立上りエッジがコア・クロックの立上りエッジに一致していることを示す。Ｔ３の間、ｄｒｉｖｅ＿ｅｎはアクティブ状態で、出力パッド４４への以降の転送のために出力データをラッチしても安全な時期を示している。Ｔ３の間、アクティブ状態のｄｒｉｖｅ＿ｅｎ信号とコア・クロックが低い期間に応じて、ラッチ３６はプロセッサ・コアのＤａｔａＯＵＴ端子からの出力データをラッチする。ラッチ３６はその出力端子におけるラッチされたデータをラッチ３８への入力として駆動する。Ｔ４の間、バス・クロックの立上りエッジに応じて、ラッチ３８は外部装置５４が使用するために、出力データをシステム・バス５６にラッチし、駆動する。
【００３７】
図１１はＰ／Ｑクロック発生器の一実施例のブロック図である。Ｐ／Ｑクロック発生器７０はＰで分割する分周器６０と、ブロック６２、６４、６６および６８を含んでいる周波数逓倍位相ロック・ループからなっている。Ｐで分割する分周器６０はＰの値とバス・クロックを受け取り、（バス・クロック）／Ｐの周波数を有する出力信号を発生する。一つの例においては、Ｐで分割する分周器はプログラマブル・カウンタである。他の例ではＰで分割する分周器はマスタ・スレーブ分割回路である。位相周波数検出器６２は（バス・クロック）／Ｐ信号と、Ｑで分割するブロック６８から出力される（コア・クロック）／Ｑを受け取り、位相誤差信号とＳｙｎｃ信号を発生する。位相誤差信号は２つの入力信号の間に位相または周波数差が存在するかどうかを示す。一つの例において、Ｓｙｎｃ信号は２つの入力信号の立上りエッジの一致を示す。他の例ではＳｙｎｃ信号は２つの入力信号の他の所定の位相関係を示す。ロー・パス・フィルタ６４は位相誤差信号を受け取り、制御電圧信号を発生する。制御電圧信号は電圧制御発振器６６を駆動する。制御電圧に応じて、電圧制御発振器６６は周波数が制御電圧によって決定される出力クロック信号（コア・クロック）を発生する。Ｑの値とコア・クロックをＱで分割する分周器６８が受け、（コア・クロック）／Ｑ信号を発生する。一つの例においては、Ｑで分割する分周器はプログラマブル・カウンタである。他の例ではＱで分割する分周器はマスタ・スレーブ分割回路である。位相ロック・ループの作用は電圧制御発振器６６の周波数を調節して、（コア・クロック）／Ｑフィードバック信号が（バス・クロック）／Ｐ信号と同じ位相および周波数を有するようにするためのものである。したがって、コア・クロック信号の周波数はバス・クロック信号の周波数のＱ／Ｐ倍となる。あるいは、バス・クロックの周波数はコア・クロックの周波数のＰ／Ｑ倍となる。一つの例においては、ＰはＱよりも小さく、バス・クロック周波数がコア・クロック周波数よりも低くなるようになる。
【００３８】
図１２はインタフェース・コントローラの一実施例のブロック図である。インタフェース・コントローラ７２は、コア・クロックによって増加し、Ｓｙｎｃ信号によってリセットされる４ビット・カウンタ・レジスタ７４を有するカウンタ７６を含んでいる。一つの例において、カウンタ７６は組合せ論理によって実現される。デコーダ７４はカウンタ・レジスタの値とＰおよびＱの値を入力として受け取り、これらを復号して、ｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎデータ転送信号を発生する。一つの例において、デコーダは組合せ論理によって実現される。他の例ではデコーダはプロセッサである。他の例ではデコーダは状態機械である。
【００３９】
ＰおよびＱの整数値は各種の方法でコード化することができる。たとえば、一つの例において、インタフェース・コントローラは表１に規定するＰおよびＱの符号化を使用する。
【００４０】
0003616162.tif 000002
【００４１】
一つの例においては、インタフェース・コントローラは表２に示すような［Ｐ＝４、Ｑ＝８］および［Ｐ＝４、Ｑ＝９］のＰおよびＱの符号化に対するｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ出力を発生する。
【００４２】
0003616162.tif 000003
【００４３】
図１３−図１５は［Ｐ＝４、Ｑ＝８］（図１３Ａ）から［Ｐ＝４、Ｑ＝１５］（図１５Ｈ）に対する１例において、インタフェース・コントローラが発生するｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ信号の波形を示す。
【００４４】
図１６はＰ／Ｑクロック発生器が発生するＳｙｎｃ信号の一つの例を示す。この例において、Ｓｙｎｃ信号はバスおよびコア・クロック（すなわち、低周波数クロックおよび高周波数クロック）の一致した立上りエッジ以前のコア・クロック（すなわち、高周波数クロック）期間にアサートされる。一つの例において、Ｓｙｎｃ信号は立上りエッジの一致の発生のたびに発生する。他の例ではＳｙｎｃ信号は最初の立上りエッジの一致でのみ発生する。他の例ではＳｙｎｃ信号は高低の周波数クロックの他のエッジの一致に対応してアサートされ、他の時点でアサートされて、そのような指示を行う。
【００４５】
図１７はコンピュータ・システムにおける本発明装置の一実施例を示す。高周波数コア・クロックに応じて動作するマイクロプロセッサ９０は、システム・バス５６に結合されている。システム・バスはシステムの各種のブロックの間でデータを転送するために必要なアドレス・ライン、データ・ラインおよび制御ラインを含んでいる。一つの例において、低周波数バス・クロックもシステム・バス５６の一部である。マイクロプロセッサ９０が使用する命令およびデータを格納するための外部メモリ８８、コンピュータ・ユーザが情報およびコマンドをマイクロプロセッサ９０に伝えるのを可能とする英数字入力装置８０、情報をコンピュータ・ユーザに表示する表示装置８２、および情報を格納するためのハード・ディスクなどのデータ記憶装置８４もシステム・バス５６に結合されている。情報はバス・クロック周波数でシステム・バス５６上で転送される。システム・バス５６に結合されている１つまたは複数の装置は、バス・クロックに応じて動作する。マイクロプロセッサ９０が高周波数内部コア・クロックにしたがって動作するため、マイクロプロセッサ９０はマイクロプロセッサ９０とシステム・バス５６に結合されている他の装置の間に同期データ転送をもたらすためのＰ／Ｑ同期転送装置８６を含んでいる。本発明装置によって、高周波数マイクロプロセッサがコンピュータ・システムの低周波数コンポーネントとデータを同期交換することが可能となる。図示のコンポーネントのすべてが必ずしも所与のコンピュータ・システムの実施形態に必要なものではないということを理解すべきである。所与のコンピュータ・システムに付加的なコンポーネントが存在しいてもかまわないことも、理解すべきである。一つの例において、マイクロプロセッサ９０は図４のマイクロプロセッサ５０である。
【００４６】
本発明はコンピュータ・システムの設計時におけるバスおよびクロック周波数の選択の融通性を高めるとともに、同期データ転送をもたらす。たとえば、今日のシステム・ボード設計は５０または６６ＭＨｚの動作のいずれかに対して最適化されている。一つの例において、５０および６６ＭＨｚ両方のシステム・ボードを設計する場合、本発明は表３に規定するＰ／Ｑ値および対応するマイクロプロセッサの周波数に対して同期データ転送をもたらす。マイクロプロセッサの周波数を表３の最上行に示し、Ｐ／Ｑ値を左側の列に示す。対応するバス周波数を表３の本体に示す。
【００４７】
0003616162.tif 000004
【００４８】
他の例においては、他のボード周波数、Ｐ／Ｑの組合せ、およびマイクロプロセッサ周波数を使用することができる。
【００４９】
図１８はＰ／Ｑ関係周波数で動作するディジタル装置間でデータを同期転送するための本発明方法の流れ図である。ステップ１００は上記の式１の周波数関係を有する低周波数クロックと高周波数クロックを発生する。一つの例において、クロックは上述のＰ／Ｑクロック発生器によって発生される。ステップ１０２はＳｙｎｃ信号を発生して、高低の周波数クロックの所定の位相関係を示す。一つの例において、Ｓｙｎｃ信号はクロックの立上りエッジの一致を示す。他の例ではＳｙｎｃ信号は高低の周波数クロックの他のエッジの一致を示す。一つの例において、Ｓｙｎｃ信号は上述のＰ／Ｑクロック発生器によって発生される。他の例では独立した位相検出回路がＳｙｎｃ信号を発生する。ステップ１０４はＳｙｎｃ信号および高周波数クロックに応じて、高低データ転送信号（図１のＨ−−＞Ｌ＿ｅｎなど）および低高データ転送信号（図１のＬ−−＞Ｈ＿ｅｎなど）を発生する。アクティブ状態の場合、データ転送信号は高低の周波数領域において動作する装置の間での同期データ転送を可能とするための安全にデータを転送できる時間を限定する。一般に、安全にデータを転送できる時間ないしウィンドウは、送信周波数領域のデータが安定であるとわかっているときで、かつ受信周波数領域の受信装置がデータを受け取れるときである。一つの例において、データ転送信号は上述のインタフェース・コントローラによって発生される。ステップ１０６において、データ修飾器は高低データ転送信号および高周波数クロックに応じて、高周波数装置（高周波数クロックに応じて動作する）から低周波数装置（低周波数クロックに応じて動作する）へのデータの転送を可能とする。ステップ１０８において、データ修飾器は低高データ転送信号および高周波数クロックに応じて、低周波数装置から高周波数装置へのデータの転送を可能とする。
【００５０】
以上、Ｐ／Ｑ整数比関係を有する周波数で動作するディジタル装置の間に同期データ転送をもたらすシステム、方法および装置を説明した。
上記の明細書において、本発明を特定の例示実施例を参照して説明した。しかしながら、特許請求の範囲に記載されている本発明の範囲の広い精神および範囲から逸脱することなく、各種の改変および変更を行えることが明らかである。明細書および図面は、したがって、限定的なものとしてではなく、説明のためのものと見なされるべきものである。
【図面の簡単な説明】
【図１】本発明装置の一実施例のブロック図である。
【図２】プログラム式ピンからなるＰ／Ｑセレクタのブロック図である。
【図３】プログラム式レジスタからなるＰ／Ｑセレクタのブロック図である。
【図４】状態機械からなるＰ／Ｑセレクタのブロック図である。
【図５】Ｐ／Ｑを選択するためのアルゴリズムを示す図である。
【図６】低高データ転送信号、すなわちインタフェース・コントローラによって発生されるＬ−−＞Ｈ＿ｅｎ信号の一つの例を示す図である。
【図７】高低データ転送信号、すなわちインタフェース・コントローラによって発生されるＨ−−＞Ｌ＿ｅｎ信号の一つの例を示す図である。
【図８】コンピュータ・システムのプロセッサにおける本発明装置の実施例のブロック図である。
【図９】データをシステム・バスからプロセッサに転送する際の図８の実施例の動作の一例を説明する一連の波形の図である。
【図１０】データをプロセッサからシステム・バスに転送する際の図８の実施例の動作の一例を説明する一連の波形の図である。
【図１１】Ｐ／Ｑクロック発生器の一実施例のブロック図である。
【図１２】インタフェース・コントローラの一実施例のブロック図である。
【図１３】Ｐ＝４およびＱ＝８、Ｐ＝４およびＱ＝９、Ｐ＝４およびＱ＝１０に対する一例における、インタフェース・コントローラによって発生されるｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ信号の波形を示す図である。
【図１４】Ｐ＝４およびＱ＝１１、Ｐ＝４およびＱ＝１２、Ｐ＝４およびＱ＝１３に対する一例における、インタフェース・コントローラによって発生されるｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ信号の波形を示す図である。
【図１５】Ｐ＝４およびＱ＝１４とＰ＝４およびＱ＝１５に対する一例における、インタフェース・コントローラによって発生されるｓａｍｐｌｅ＿ｅｎおよびｄｒｉｖｅ＿ｅｎ信号の波形を示す図である。
【図１６】Ｓｙｎｃ信号の一例を説明する一連の波形の図である。
【図１７】コンピュータ・システムのマイクロプロセッサにおける本発明装置の実施例の図である。
【図１８】異なる周波数で動作する装置の間でデータを同期転送するための本発明方法の流れ図である。
【符号の説明】
７  Ｐ／Ｑ同期転送装置
１０  Ｐ／Ｑクロック発生器
１１    同期発生器
１２  インタフェース・コントローラ
１４  データ修飾器
１６  高周波数装置
１８    低周波数装置
【図１】
0003616162.tif 000005
【図２】
0003616162.tif 000006
【図３】
0003616162.tif 000007
【図４】
0003616162.tif 000008
【図５】
0003616162.tif 000009
【図６】
0003616162.tif 000010
【図７】
0003616162.tif 000011
【図８】
0003616162.tif 000012
【図９】
0003616162.tif 000013
【図１０】
0003616162.tif 000014
【図１１】
0003616162.tif 000015
【図１２】
0003616162.tif 000016
【図１３】
0003616162.tif 000017
【図１４】
0003616162.tif 000018
【図１５】
0003616162.tif 000019
【図１６】
0003616162.tif 000020
【図１７】
0003616162.tif 000021
【図１８】
0003616162.tif 000022