(57)【要約】【解決手段】  異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイス及びクロック信号を切り換えるための方法が開示される。周波数ディバイダは、ソースクロック信号から複数のクロック信号を異なる周波数で分周する。クロック切り換え制御器は、複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を選択すると共に選択された最大データ速度で送信クロック信号をポートの各々のためのクロック有効化信号と共にポートへ出力する。クロック有効化信号の各々は、各ポートによって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化する。クロック速度は、任意の他のポートでのデータ転送を遮断することなしに、既知の時間の間、ポートの要求に応じてグリッチなしに選択されそして更新され得る。【選択図】図１
2013513843.tif 000002
【特許請求の範囲】
【請求項１】
異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイスであって、
ソースクロック信号から複数のクロック信号を異なる周波数で生成するように構成される周波数ディバイダと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を選択すると共に前記選択された最大データ速度で送信クロック信号を前記複数のポートの各々のためのクロック有効化信号と共に前記ポートへ出力するように構成されるクロック切り換え制御器と、を備え、
前記クロック有効化信号の各々は前記複数のポートの各々によって要求されるデータ速度に整合するための前記送信クロック信号を選択的に有効化するデバイス。
【請求項２】
前記クロック切り換え制御器は、前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように、前記送信クロック信号のクロックサイクルをカウントするためのカウンタを備える請求項１のデバイス。
【請求項３】
前記クロック切り換え制御器は、前記送信クロック信号が前記送信クロック信号の予め定められた位相で切り換えられるように、現在のクロック信号、要求されたクロック信号、及び前記現在のクロック信号の位相の情報を記憶するための記憶装置を備える請求項１のデバイス。
【請求項４】
前記クロック切り換え制御器は、制御信号に従って１つのクロック信号のみが前記送信クロック信号として出力されるように、異なる周波数で生成される前記複数のクロック信号をゲートするためのクロックゲートセルを備え、
前記制御信号は、生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項１のデバイス。
【請求項５】
前記デバイスは周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）適合デバイスである請求項１のデバイス。
【請求項６】
前記デバイスはハイパートランスポート適合デバイスである請求項１のデバイス。
【請求項７】
前記周波数ディバイダは、２５０メガヘルツ（ＭＨｚ）信号、５００ＭＨｚ信号、及び１ギガヘルツ（ＧＨｚ）信号を生成するように構成される請求項１のデバイス。
【請求項８】
前記ソースクロック信号は位相ロックループクロック信号である請求項１のデバイス。
【請求項９】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための方法であって、
ソースクロック信号から複数のクロック信号を異なる周波数で生成することと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定することと、
当該選択された最大データ速度で送信クロック信号を前記複数のポートの各々に供給することと、
前記複数のポートの各々によって要求されるデータ速度に整合するための前記送信クロック信号を選択的に有効化するために前記複数のポートの各々にクロック有効化信号を供給することと、を備える方法。
【請求項１０】
前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように前記最大データ速度が変更されてからの前記送信クロック信号のクロックサイクルをカウントすることを更に備える請求項９の方法。
【請求項１１】
前記送信クロック信号は前記送信クロック信号の予め定められた位相で切り換えられる請求項９の方法。
【請求項１２】
制御信号に従って１つのクロック信号が前記送信クロック信号として出力されるように前記複数のクロック信号をゲートすることを更に備え、
前記制御信号は生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項９の方法。
【請求項１３】
前記クロック信号は２５０メガヘルツ（ＭＨｚ）信号、５００ＭＨｚ信号、及び１ギガヘルツ（ＧＨｚ）信号である請求項９の方法。
【請求項１４】
前記ソースクロック信号は位相ロックループクロック信号である請求項９の方法。
【請求項１５】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための汎用コンピュータによる実行のための一連の命令を記憶するコンピュータ可読記憶媒体であって、前記一連の命令は、
ソースクロック信号から複数のクロック信号を異なる周波数で生成するための生成コードセグメントと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定するための決定コードセグメントと、
当該選択された最大データ速度で送信クロック信号を前記複数のポートの各々に供給するための第１の供給コードセグメントと、
前記複数のポートの各々によって要求されるデータ速度に整合するための前記送信クロック信号を選択的に有効化するために前記複数のポートの各々にクロック有効化信号を供給するための第２の供給コードセグメントと、を備えるコンピュータ可読記憶媒体。
【請求項１６】
前記一連の命令は、前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように前記最大データ速度が変更されてからの前記送信クロック信号のクロックサイクルをカウントするためのカウントコードセグメントを更に備える請求項１５のコンピュータ可読記憶媒体。
【請求項１７】
前記一連の命令は、制御信号に従って１つのクロック信号が前記送信クロック信号として出力されるように前記複数のクロック信号をゲートするためのゲートコードセグメントを更に備え、
前記制御信号は生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項１５のコンピュータ可読記憶媒体。
【請求項１８】
前記ソースクロック信号は位相ロックループクロック信号である請求項１５のコンピュータ可読記憶媒体。
【請求項１９】
前記命令はデバイスの製造のために用いられるハードウエア記述言語（ＨＤＬ）命令である請求項１５のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
この出願は２００９年１２月１１日出願の米国非暫定出願第１２／６３５，９４２号の利益を主張し、その全てがここに記載されているものとして参照として組み込まれる。
【技術分野】
【０００２】
この出願は、コンピュータバス及び相互接続プロトコル、例えば周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express)（ＰＣＩｅ）、ハイパートランスポート(HyperTransport)等、に関する。
【背景技術】
【０００３】
コンピュータシステムにおいては、単一又は複数のホストプロセッサと他のデバイスを相互接続すると共にそれらの間でデータを転送するために、種々のバスが設けられている。例としては、旧来の周辺コンポーネント相互接続（ＰＣＩ）及びＰＣＩ−Ｘ規格に代わるものとして、ＰＣＩｅが開発されてきた。ＰＣＩｅは、マザーボード搭載の周辺機器をリンクするためのマザーボードレベル相互接続として、及びアドインボードのための拡張カードインタフェースとして、消費者、サーバ、及び産業応用において用いられる。
【０００４】
ＰＣＩｅバスと旧来のＰＣＩバス又はＰＣＩ−Ｘバスとの相違点は、共有パラレルバスアーキテクチャよりもむしろ点対点(point-to-point)シリアルリンクに基づくトポロジである。ＰＣＩｅは、旧来のパラレルＰＣＩ及びＰＣＩ−Ｘバスの高速シリアル置換であると考えることができる。ソフトウエアレベルでは、ＰＣＩｅはＰＣＩとの互換性を保っているので、ＰＣＩｅデバイスは、ＰＣＩｅの新しい特徴に関する情報を何ら有していない旧式のアプリケーション及びオペレーティングシステムにおいて設定され且つ使用され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＰＣＩｅ１．０又は１．１においては、各レーン(lene)は２５０ＭＢ／ｓを搬送する。２００７年後期にリリースされたＰＣＩｅ２．０では、速度を５００ＭＢ／ｓに倍増する第２世代シグナリングモード(second generation signaling mode)が追加されている。
【０００６】
ＰＣＩｅ２．０及び３．０もまた、旧世代のＰＣＩｅ（即ちＰＣＩｅ１．ｘ）との互換性を維持している。ＰＣＩｅ１．ｘ適合デバイスはまだ市場で用いられているので、ＰＣＩｅ２．０又は３．０適合デバイスは、ＰＣＩｅ１．ｘ適合デバイスに接続される必要があるであろう。ＰＣＩｅ２．０又は３．０デバイスは、ポートの１つによる要求に応じてクロック速度を切り換え、且つ任意の他のポートでのデータ転送を遮断することなしに特定の時間の間、更新されたクロック速度をグリッチなしに(glitch-free)有する必要があろう。
【課題を解決するための手段】
【０００７】
異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイスは、周波数ディバイダ及びクロック切り換え制御器を含む。周波数ディバイダは、ソースクロック信号から複数のクロック信号を異なる周波数で生成するように構成される。クロック切り換え制御器は、複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を選択すると共に選択された最大データ速度で送信クロック信号を複数のポートの各々のためのクロック有効化信号と共にポートへ出力するように構成され、クロック有効化信号の各々は、複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化する。
【０００８】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための方法は、ソースクロック信号から複数のクロック信号を異なる周波数で生成することによって開始する。複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度が決定される。送信クロック信号は、選択された最大データ速度で複数のポートの各々に供給される。複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化するために、複数のポートの各々にクロック有効化信号が供給される。
【０００９】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための汎用コンピュータによる実行のための一連の命令を記憶するコンピュータ可読記憶媒体。一連の命令は、ソースクロック信号から複数のクロック信号を異なる周波数で生成するための生成コードセグメントと、複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定するための決定コードセグメントと、選択された最大データ速度で送信クロック信号を複数のポートの各々に供給するための第１の供給コードセグメントと、複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化するために複数のポートの各々にクロック有効化信号を供給するための第２の供給コードセグメントと、を含む。一連の命令は、デバイスの製造のために用いられるハードウエア記述言語（ＨＤＬ）命令であってよい。
【図面の簡単な説明】
【００１０】
添付の図面と共に例示を目的とする以下の説明から、更に詳細な理解がもたらされるであろう。
【００１１】
【図１】図１は周波数ディバイダとクロック切り換え制御器の第１の部分とを示す図である。
【００１２】
【図２】図２はクロック切り換え制御器の第２の部分を示す図である。
【００１３】
【図３】図３はクロック有効化信号生成器を示す図である。
【００１４】
【図４】図４はクロック生成器のクロック切り換えタイミングを示す図である。
【００１５】
【図５】図５はポートＡ〜Ｃに対する有効化信号の例示的なタイミング図である。
【発明を実施するための形態】
【００１６】
ここに説明される実施形態は、デバイスが、ポートの１つによる要求に応じて複数のクロック速度の１つを選択すると共に、任意の他のポートでのデータ転送を遮断することなしに既知の時間の間、更新されたクロック速度をグリッチなしに有することを可能にする。実施形態は、多重速度で多重リンクを動作させるデバイスに対してクロック切り換えのための解決法を提供する。実施形態は、任意のコンピュータバス及び相互接続プロトコルに従い多重クロック速度をサポートする任意のデバイスにおいて用いられてよい。例えば実施形態は、ＰＣＩｅ２．０若しくは３．０又は将来開発されるであろう任意の他のバージョンをサポートする任意のＰＣＩｅ適合デバイスに実装されてよい。以下、ＰＣＩｅプロトコルを参照して実施形態を説明する。しかし、実施形態は、任意のコンピュータバス及び、限定はされないが、ＰＣＩｅ、ハイパートランスポート等を含む相互接続プロトコルに適用可能であることを付言しておく。
【００１７】
図１〜３は、１つの実施形態に従い、異なる周波数で３つのクロック信号を生成すると共にクロックの速度を変更するように構成される例示的なクロック生成器を示している。クロック生成器１００は周波数ディバイダ１１０及びクロック切り換え制御器２００を備える。図１は周波数ディバイダ１１０とクロック切り換え制御器の第１の部分２００ａとを示している。図２はクロック切り換え制御器の第２の部分２００ｂを示している。図３はクロック切り換え制御器２００の一部であるクロック有効化信号生成器３００を示している。図４はクロック生成器１００のクロック切り換えタイミングを示している。尚、図１〜３に示されるクロック生成器は例示的なものであり限定的ではなく、分周及びクロック信号切り換えのための任意の他の構成が実装されてよい。また、クロック生成器は、２つ又は４つ以上の異なる周波数信号を生成すると共にそれらの間で要求に応じて切り換えてよい。
【００１８】
図１を参照すると、クロック生成器１００は、位相ロックループ(phase locked loop)（ＰＬＬ）クロック（ＰＬＬＣＬＫ）信号１２２をＰＬＬ１５０から受け取る。この例では、ＰＬＬクロック信号１０２の周波数は２ＧＨｚであり、ＰＬＬクロック信号１０２は、ＰＣＩｅ第３、第２及び第１世代処理のために周波数ディバイダ１１０によってそれぞれ２、４及び８分周される（ＰＬＬクロック信号及び３つのクロック信号は図４における行１〜４に示されている）。尚、ＰＬＬクロック信号１０２は任意の周波数であってよく、またシステムによる要求に応じて任意の周波数信号に分周されてよい。この例はＰＬＬクロック信号を用いているが、当業者であれば他のソースクロック信号が用いられ得ることを認識するはずである。
【００１９】
図１の例示的な周波数ディバイダ１１０は、インバータ１１２、排他的ＮＯＲゲート１１８，１２６、ＯＲゲート１２４、及びＤフリップフロップ１１４，１１６，１２０，１２２，１２８，１３０を含む。Ｄフリップフロップ１１４，１１６，１２０，１２２，１２８，１３０は、ＰＬＬクロック信号１０２によってクロックされる。Ｄフリップフロップ１１４の出力は、Ｄフリップフロップ１１６に入力し、またインバータ１１２を介してＤフリップフロップ１１４にフィードバックされる。Ｄフリップフロップ１１４の出力はＰＬＬクロックサイクル毎に反転され、従ってＤフリップフロップ１１６はＰＣＩｅ第３世代クロック信号１３２ｃをＰＬＬクロック信号の半分の周波数で出力する（即ちＰＣＩｅ第３世代クロック信号を生成する）。
【００２０】
Ｄフリップフロップ１２０の出力は、Ｄフリップフロップ１２２に入力し、また排他的ＮＯＲゲート１１８を介してＤフリップフロップ１２０にフィードバックされる。Ｄフリップフロップ１１４の出力は、排他的ＮＯＲゲート１１８の別の入力に入力する。Ｄフリップフロップ１２２は、ＰＣＩｅ第２世代クロック信号１３２ｂをＰＬＬクロック信号１２２の１／４の周波数で出力する。
【００２１】
Ｄフリップフロップ１２８の出力は、Ｄフリップフロップ１３０に入力し、また排他的ＮＯＲゲート１２６を介してＤフリップフロップ１２８にフィードバックされる。Ｄフリップフロップ１１４及びＤフリップフロップ１２０の出力は、ＯＲゲート１２４でゲートされてから排他的ＮＯＲゲート１２６に入力する。Ｄフリップフロップ１３０は、ＰＣＩｅ第１世代クロック信号１３２ａをＰＬＬクロック信号１２２の１／８の周波数で出力する。
【００２２】
生成されたクロック信号１３２ａ，１３２ｂ，１３２ｃのうちの２つはクロックゲートセル２１２ａ，２１２ｂ，２１２ｃによってブロックされ、クロック信号１３２ａ，１３２ｂ，１３２ｃの１つだけが、制御信号２４４ａ，２４４ｂ，２４４ｃ（ｃｌｋ＿ｇ１＿ｅｎ，ｃｌｋ＿ｇ２＿ｅｎ，ｃｌｋ＿ｇ３＿ｅｎ）に従って、リンクへ供給されるべき送信クロック信号（ＴＸＣＬＫ）１４０として出力される。ＴＸＣＬＫ信号は図４の行１７に示されている。制御信号２４４ａ，２４４ｂ，２４４ｃは図４の行１４〜１６に示されている。クロックゲートセル２１２ａ，２１２ｂ，２１２ｃは、ゲートされたＤラッチ２１４ａ，２１４ｂ，２１４ｃ及びＡＮＤゲート２１６ａ，２１６ｂ，２１６ｃをそれぞれ含む。制御信号２４４ａ，２４４ｂ，２４４ｃ（ｃｌｋ＿ｇ１＿ｅｎ，ｃｌｋ＿ｇ２＿ｅｎ，ｃｌｋ＿ｇ３＿ｅｎ）は、ゲートされたＤラッチ２１４ａ，２１４ｂ，２１４ｃのＤ入力にそれぞれ入力し、クロック信号１３２ａ，１３２ｂ，１３２ｃは、ゲートされたＤラッチ２１４ａ，２１４ｂ，２１４ｃのＧ入力にインバータを介してそれぞれ入力する。クロック信号１３２ａ，１３２ｂ，１３２ｃは、ゲートされたＤラッチ２１４ａ，２１４ｂ，２１４ｃをバイパスしてＡＮＤゲート２１６ａ，２１６ｂ，２１６ｃにそれぞれ入力する。ＡＮＤゲート２１６ａ，２１６ｂ，２１６ｃの出力はＯＲゲート２１８に入力する。ｃｌｋ＿ｇ１＿ｅｎ信号２４４ａがアサートされるとＯＲゲート２１８を介して第１世代クロック信号１３２ａが出力され、ｃｌｋ＿ｇ２＿ｅｎ信号２４４ｂがアサートされるとＯＲゲート２１８を介して第２世代クロック信号１３２ｂが出力され、ｃｌｋ＿ｇ３＿ｅｎ信号２４４ｃがアサートされるとＯＲゲート２１８を介して第３世代クロック信号１３２ｃが出力される。
【００２３】
制御信号２４４ａ，２４４ｂ，２４４ｃは、要求＿ｃｌｋ信号(request_clk signals)２３２に基づいて生成される。要求＿ｃｌｋ信号２３２の生成は、図２を参照して詳細に説明されることになる。要求＿ｃｌｋ信号２３２は、クロック信号が生成されるべきことを示す信号である。要求＿ｃｌｋ信号２３２は、この例では３つのクロック速度のうちの１つを示す２ビット信号であってよい（例えば「００」は第１世代クロック信号を示し、「０１」は第２世代クロック信号を示し、そして「１０」は第３世代クロック信号を示す）。
【００２４】
生成された要求＿ｃｌｋ信号２３２（図２の回路(circuit in FIG. 2)からの出力信号）は、直列の４つのＤフリップフロップ２３４，２３５，２３６，２３７を通ってゲートされてからＤフリップフロップ２３８に入力してよい。Ｄフリップフロップ２３４，２３５，２３６，２３７は、直列の４つの遅延バッファ２４６，２４７，２４８，２４９によって遅延させられた送信クロック信号（ＴＸＣＬＫ）１４０によりクロックされる。４つの遅延バッファ２４６，２４７，２４８，２４９によって遅延させられたＴＸＣＬＫ信号(TXCLK_buf0, TXCLK_buf1, TXCLK_buf2, TXCLK_buf3)は、図４の行２１〜２４に示されている。遅延バッファ２４６，２４７，２４８，２４９の各々は、特定の遅延時間（例えば１ギガヘルツ（ＧＨｚ）で遅延バッファあたり最大で１ナノ秒（ｎｓ））だけクロック信号１４０を遅延させてよい。これは、ＴＸＣＬＫ挿入遅延がコア論理に整合することを確実にし、またクロック遅延を後退させてクロック生成論理での挿入遅延に確実に整合するようにするためである。
【００２５】
Ｄフリップフロップ２３８はＰＬＬクロック信号１０２によってクロックされ、またＮＯＲゲート２４０によってゲートされたＤフリップフロップ１１４，１２０，１２８からの３つの出力信号は、Ｄフリップフロップ２３８のイネーブル入力にそれぞれ入力し、その結果、Ｄフリップフロップ１１４，１２０，１２８の全ての出力が「低」の場合にのみ、直列のＤフリップフロップ２３４〜２３７によって遅延させられた要求＿ｃｌｋ信号２３２が転送される（そしてＴＸクロック信号速度を変更する）。Ｄフリップフロップ２３８を介して出力された要求＿ｃｌｋ信号２３２は、要求＿ｃｌｋ信号２３２に従って３つのＡＮＤゲート２４２ａ，２４２ｂ，２４２ｃのうち１つを「高」に、２つを「低」に駆動し、そしてＡＮＤゲート２４２ａ，２４２ｂ，２４２ｃの出力は、それぞれクロックゲートセル２１２ａ，２１２ｂ，２１２ｃへの制御信号２４４ａ，２４４ｂ，２４４ｃになる。
【００２６】
図２を参照して、要求＿ｃｌｋ信号２３２の生成を詳細に説明する。ＰＣＩｅデバイスは２つ以上のリンクをサポートすることが要求されるであろうし、また各リンクは異なるクロック速度を必要とするであろう。複数のリンクのために必要なクロック速度（ｃｌｋ＿ｓｅｌ＿Ａ，ｃｌｋ＿ｓｅｌ＿Ｂ，…，ｃｌｋ＿ｓｅｌ＿Ｎ）のうち、最大クロック速度(maximum clock speed: max)がセレクタ２５２によって選択される。ｃｌｋ＿ｓｅｌ［１：０］信号２５４は、この例では２ビット信号であり、選択された最大クロック速度を表す（この例で３つのクロック速度の１つを選択するためには２ビット必要である）。選択されたクロック速度信号（ｃｌｋ＿ｓｅｌ［１：０］）２５４は、Ｄフリップフロップ２５６を介して要求＿ｃｌｋ信号２３２として出力される。ｃｌｋ＿ｓｅｌ［１：０］信号及び要求＿ｃｌｋ信号２３２は、図４の行５及び６に示されている。
【００２７】
Ｄフリップフロップ２５６は、ＴＸＣＬＫによってクロックされ、またカウント信号(count signal)２６３（Ｄフリップフロップ２６２の出力）、現在＿ｃｌｋ信号(current_clk signal)２７４（Ｄフリップフロップ２７２の出力）と要求＿ｃｌｋ信号２３２（Ｄフリップフロップ２５６の出力）の比較、及び位相信号(phase signal)２８６（Ｄフリップフロップ２８４の出力）に基づいて有効化又は無効化される。Ｄフリップフロップ２７２は、現在選択されているクロック速度を示す現在＿ｃｌｋ信号２７４を記憶する（例えば「００」は第１世代クロック信号を示し、「０１」は第２世代クロック信号を示し、そして「１０」は第３世代クロック信号を示す）。要求＿ｃｌｋ信号２３２は、ＴＸＣＬＫ信号が切り換わるときに現在＿ｃｌｋ信号２７４になる。
【００２８】
比較器２６４は要求＿ｃｌｋ信号２３２が現在＿ｃｌｋ信号２７４と異なるかどうかを決定し、そして比較器２６４の出力はＤフリップフロップ２６２のイネーブル入力に入力する。Ｄフリップフロップ２６２は、要求＿ｃｌｋ信号２３２と現在＿ｃｌｋ信号２７４が異なる場合（即ち要求＿ｃｌｋ信号が変更された場合）にのみ有効化される。Ｄフリップフロップ２６２、及びＤフリップフロップ２６２のＤ入力に戻るフィードバックループ内の＋１加算器２６６は、要求＿ｃｌｋ信号２３２と現在＿ｃｌｋ信号２７４が異なるようになってからのＴＸＣＬＫサイクルの数をカウントする２ビットカウンタとして動作する。カウント信号２６３は図４の行１２に示されている。
【００２９】
比較器２６８は、カウント信号２６３が「１１」になった場合に「高」を出力する。比較器２６８の出力はＤフリップフロップ２７２のイネーブル入力に入力する。従ってこの例では、図４の行６〜１０に示されるように、要求＿ｃｌｋ信号２３２は、要求＿ｃｌｋ信号２３２が変更された後ＴＸＣＬＫの４サイクルで現在＿ｃｌｋ信号２７４になる。ＴＸＣＬＫの４サイクルは、最も速いクロック信号（１ＧＨｚ）と最も遅いクロック信号（２５０ＭＨｚ）の比が４であるからであり、システムによって要求されるクロック速度に応じて異なるＴＸＣＬＫサイクルが必要になるであろう。比較器２７６は、現在＿ｃｌｋ信号２７４と要求＿ｃｌｋ信号２３２を比較してＡＮＤゲート２９２に出力する。
【００３０】
現在＿ｃｌｋ信号２７４は、第１及び第２のマルチプレクサ２８２，２９０を駆動する。第１のマルチプレクサ２８２は、現在＿ｃｌｋ信号２７４が「００」であれば「００」を出力し、現在＿ｃｌｋ信号２７４が「０１」であれば位相信号＋２を出力し、そして現在＿ｃｌｋ信号２７４が「１０」であれば位相信号＋１を出力する。マルチプレクサ２８２の出力はＤフリップフロップ２８４のＤ入力に入力し、Ｄフリップフロップ２８４の２ビット出力が位相信号２８６（図４の行１１）である。位相信号２８６は、この例では２ビット信号である。比較器２８８ａは、位相信号２８６が「００」であれば「高」を出力し、さもなければ「低」を出力する。比較器２８８ｂは、位相信号２８６が「０１」であれば「高」を出力し、さもなければ「低」を出力する。比較器２８８ｃは、位相信号２８６が「１０」であれば「高」を出力し、さもなければ「低」を出力する。第２のマルチプレクサ２９０は、現在＿ｃｌｋ信号２７４に応じて比較器２８８ａ，２８８ｂ，２８８ｃの出力の１つを出力する。比較器２７６及び第２のマルチプレクサ２９０からの出力は、ＡＮＤゲート２９２によってゲートされ、ＡＮＤゲート２９２の出力はＤフリップフロップ２５６を有効化し又は無効化する。
【００３１】
カウント信号２６３及び位相信号２８６の生成並びに現在＿ｃｌｋ信号２７４及び要求＿ｃｌｋ信号２３２の比較を含むクロック切り換え制御器の論理は、クロック信号（ＴＸＣＬＫ）の切り換えが、任意の他のポートでのデータ転送を遮断することなしに、既知の時間の間グリッチなしに特定の位相のみを生じさせることを確実にする。
【００３２】
図３を参照して、クロック有効化信号(clock enabling signal: clk_en)の生成を詳細に説明する。ソースクロックは、ＰＣＩｅＩＰによってサポートされる最大データ速度（例えばＰＣＩｅ３．０サポートに対して１ＧＨｚ）で動作中であることが予定されている。クロック生成器１００は、１ＧＨｚ、５００ＭＨｚ及び２５０ＭＨｚのクロック信号を生成し、生成されたクロック信号の１つを全てのＰＣＩｅリンクに供給する。クロック切り換え制御器２００は、ＰＣＩｅＩＰコアにおけるアクティブなリンクによって要求される最も速いクロック速度を決定し、そしてその最も速いクロック信号を全てのＰＣＩｅリンクに供給する。同じクロック信号が全てのＰＣＩｅリンクに供給されるので、クロック切り換え制御器２００はまた、より遅いクロック信号を要求する各リンクのためのクロック有効化信号を生成する。例えば、リンクによって要求される最も速いクロック速度が１ＧＨｚである場合には、クロック切り換え制御器２００は、１ＧＨｚクロック信号を生成して全てのリンクにこれを供給することになる。クロック切り換え制御器２００はまた、５００ＭＨｚクロック速度を要求するリンクに対して１ＧＨｚ信号が１つおきのクロックサイクルで有効化され、また２５０ＭＨｚクロック速度を要求するリンクに対して１ＧＨｚ信号が４クロックサイクル毎にだけクロック有効化信号によって有効化されるように、クロック有効化信号を各リンクに供給する。クロック有効化信号は図４の行１８〜２０に示されている。３つのクロック有効化信号の１つが各リンクに対して選択される。
【００３３】
図３はリンクＡのための例示的なクロック有効化信号生成回路３００を示している。多重リンクをサポートするためには、図３に示される回路の多重セットがクロック切り換え制御器２００内に含まれる。
【００３４】
リンクＡによって要求されるクロック速度はｃｌｋ＿ｓｅｌ＿Ａであり、この２ビット信号は、要求されたクロック速度（例えば第１世代クロック信号に対する「００」、第２世代クロック信号に対する「０１」、及び第３世代クロック信号に対する「１０」）に応じて３つの入力（有効化信号３０９ａ，３０９ｂ，３０９ｃ）のうちの１つを出力するようにマルチプレクサ３１０を駆動する。
【００３５】
３つの有効化信号３０９ａ，３０９ｂ，３０９ｃ（ｃｌｋ＿ｅｎ［０］，ｃｌｋ＿ｅｎ［１］，ｃｌｋ＿ｅｎ［２］）は、現在＿ｃｌｋ信号２７４、要求＿ｃｌｋ信号２３２、カウント信号２６３、及び位相信号２８６に基づいて生成される。カウント信号２６３に応じて、現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２のいずれかが３つの比較器３２２，３３２，３４２に入力する（即ちカウント信号が「１１」であれば要求＿ｃｌｋ信号、そうでなければ現在＿ｃｌｋ信号）。カウント信号２６３は比較器３０２で比較され、比較器３０２の出力がマルチプレクサ３０４を制御する。
【００３６】
現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２が「００」である場合には、第１のブランチ３２０は、常時オン信号、５０％デューティサイクル信号、又は２５％デューティサイクル信号を現在＿ｃｌｋ信号２７４に応じて生成する。現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２が「００」である場合には、比較器３２２の出力（及びそれに従いＯＲゲート３２４の出力）は常時「高」であり、常時オン信号が生成されそしてＤフリップフロップ３０８を介してマルチプレクサ３１０に供給される。比較器３２５ａ及び３２５ｃは現在＿ｃｌｋ信号２７４をそれぞれ「０１」及び「１０」と比較し、そして比較器３２５ｂ及び３２５ｄは位相信号２８６をそれぞれ「００」及び「１０」と比較する。現在＿ｃｌｋ信号２７４が「０１」である場合には、比較器３２２の出力及びＡＮＤゲート３２８の出力は「低」であるが、ＡＮＤゲート３２６は位相値が「００」の間オンになる。現在＿ｃｌｋ信号２７４が「０１」である間の位相信号２８６は「００」と「０１」の間で変わるので、ＡＮＤゲート３２６の出力（及び結果としてＯＲゲート３２４の出力）は５０％の時間オンになる。現在＿ｃｌｋ信号２７４が「１０」である場合には、比較器３２２及びＡＮＤゲート３２６の出力は「低」であるが、ＡＮＤゲート３２８は位相信号が「００」の間オンになる。現在＿ｃｌｋ信号が「１０」である間の位相信号２８６は、「００」、「０１」、「１０」、及び「１１」の間で変わるので、ＡＮＤゲート３２８の出力（及び結果としてＯＲゲート３２４の出力）は２５％の時間オンになる。例えば、現在＿ｃｌｋ信号が「１０」（ＴＸＣＬＫ信号が１ＧＨｚであることを意味する）であり、且つリンクＡに要求されるクロック速度が２５０ＭＨｚ（即ちｃｌｋ＿ｓｅｌ＿Ａが「００」）である場合には、マルチプレクサ３１０は第１のブランチ信号を出力し、これはＡＮＤゲート３２８から出力される２５％デューティサイクル信号であり、１ＧＨｚでのＴＸＣＬＫは２５％の時間の間だけ有効化されて、共通の１ＧＨｚのＴＸＣＬＫから２５０ＭＨｚクロック信号をリンクＡに対して引き出す。現在＿ｃｌｋ信号が「０１」（ＴＸＣＬＫ信号が５００ＭＨｚであることを意味する）であり、且つリンクＡに要求されるクロック速度が２５０ＭＨｚ（即ちｃｌｋ＿ｓｅｌ＿Ａが「００」）である場合には、マルチプレクサ３１０は第１のブランチ信号を出力し、これはＡＮＤゲート３２６から出力される５０％デューティサイクル信号である。
【００３７】
現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２が「０１」である場合には、第２のブランチ３３０は、常時オン信号又は５０％デューティーサイクル信号のいずれかを生成する。現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２が「０１」である場合には、比較器３２２の出力（及びその結果としてＯＲゲート３２４の出力）は常時「高」であり、常時オン信号が生成されそしてＤフリップフロップ３０８ｂを介してマルチプレクサ３１０に供給される。比較器３３５ａは現在＿ｃｌｋ信号を「１０」と比較し、そして比較器３３５ｂは位相信号の第１ビットを「０」と比較する。現在＿ｃｌｋ信号２７４が「１０」である場合には、比較器３３２の出力は「低」であるが、ＡＮＤゲート３３６は位相信号２８６の第１ビットが「０」の間オンになり、５０％デューティサイクル信号を生成する。
【００３８】
現在＿ｃｌｋ信号２７４又は要求＿ｃｌｋ信号２３２が「１０」である場合には、第３のブランチ３４０（即ち比較器３４２）は、Ｄフリップフロップ３０８ａを介してゲートされる常時オン信号をマルチプレクサ３１０に対して生成する。
【００３９】
図５はポートＡ〜Ｃに対する有効化信号の例示的なタイミング図を示している。最初、ポートＡ〜Ｃに要求されるデータ速度(portA data rate, portB data rate, portC data rate)は全て２５０ＭＨｚ（即ち毎秒２．５ギガ転送（ＧＴ／ｓ））である。従って、ＴＸＣＬＫは２５０ＭＨｚで生成され、またポートＡ〜Ｃに対する有効化信号(portA clk en, portB clk en, portC clk en)は全て常時オン信号である。リンクＢに要求されるデータ速度が５００ＭＨｚに増大する（即ち転送速度が５ＧＴ／ｓに増大させられる）。ＴＸＣＬＫは５００ＭＨｚに切り換えられ、そして全てのリンクＡ〜Ｃに供給される。リンクＡ及びＣのためのデータ速度は２５０ＭＨｚのままであるから、５０％デューティサイクルクロック有効化信号がリンクＡ及びＣに供給される。次いで、リンクＣに要求されるデータ速度が１ＧＨｚに増大する。ＴＸＣＬＫは１ＧＨｚ信号に切り換えられ、そして全てのリンクＡ〜Ｃに供給される。リンクＡ及びＢのためのデータ速度はそれぞれ２５０ＭＨｚ及び５００ＭＨｚであるから、リンクＡ及びＢに対するクロック有効化信号は、それぞれ２５％及び５０％デューティサイクル信号になる。次いで、リンクＣに要求されるデータ速度が２５０ＭＨｚに低下する。ＴＸＣＬＫは５００ＭＨｚに戻され、そして全てのリンクＡ〜Ｃに供給される。リンクＡ〜Ｃに対するクロック有効化信号は、それぞれ５０％デューティサイクル信号、常時オン信号、及び５０％デューティサイクル信号になる。次いで、ポートＢに要求されるデータ速度が２５０ＭＨｚに低下し、そしてＴＸＣＬＫが２５０ＭＨｚに切り換えられる。次いで、ポートＣのためのデータ速度が１ＧＨｚに増大し、そしてＴＸＣＬＫが１ＧＨｚに切り換えられる。ポートＡ及びＢのためのデータ速度は２５０ＭＨｚであるから、ポートＡ及びＢに対するクロック有効化信号は２５％デューティサイクル信号になる。次いで、ポートＣのためのデータ速度が２５０ＭＨｚに低下してＴＸＣＬＫが２５０ＭＨｚに切り換えられ、そしてポートＡ〜Ｃに対するクロック有効化信号が常時オン信号になる。
【００４０】
上に開示される実施形態に従うクロック切り換えは、ＰＣＩｅＩＰコアにおけるＰＣＩｅリンク毎の１つのＰＬＬに代えてＰＣＩｅＩＰコア毎に１つのＰＬＬだけが用いられるであろうという領域節約及び電力節約の利点を有する。リンク毎に１つのＰＣＩｅＩＰをインスタンシエイトする(instantiate)必要性に代えて、多重速度で動作する複数のリンクを動作させるために、１つのＰＣＩｅＩＰコアを用いることができる。クロック切り換え回路がグリッチなしに(glitch-free)クロック速度を変更するという事実により、実施形態は、速度を変更していないリンクが中断せずに動作することを可能にする。加えて、実施形態によると、クロック切り換えは、４クロックサイクル内で更新されたクロック速度を提供することが保証される。
【００４１】
今日、電子回路の多くは、ソフトウエア（例えばハードウエア記述言語（ＨＤＬ））を用いることによって設計され、そして製造される。ＨＤＬは、電子回路の構成、動作、及び／又は挙動を記述するためのコンピュータ言語である。クロック生成器１００（即ち電子回路）は、ソフトウエア（例えばＨＤＬ）を用いることによって設計され、そして製造されてよい。ＨＤＬは、現在用いられており又は将来改良されるであろう従来のＨＤＬの任意の１つであってよい。クロック生成器１００の構成、動作、及び／又は挙動を記述するために、一連の命令がＨＤＬで生成される。一連の命令は任意の種類のコンピュータ可読記憶媒体内に記憶されてよい。
【００４２】
特徴及び要素が特定の組み合わせにおいて上述されているが、各特徴又は要素は、他の特徴及び要素を伴わずに単独で用いられてよく、あるいは他の特徴及び要素を伴い又は伴わずに種々の組み合わせにおいて用いられてよい。ここに提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のためにコンピュータ可読記憶媒体内に組み込まれるコンピュータプログラム、ソフトウエア、又はファームウエアにおいて実装されてよい。コンピュータ可読記憶媒体の例は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内部ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、及びＣＤ−ＲＯＭディスク等の光学媒体、更にはデジタル多用途ディスク（ＤＶＤ）を含む。
【００４３】
適切なプロセッサは、例としては、汎用プロセッサ、専用プロセッサ、標準的なプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに付随する１つ以上のマイクロプロセッサ、制御器、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他の種類の集積回路（ＩＣ）、及び／又は状態マシンを含む。
【図１】
2013513843.tif 000003
【図２】
2013513843.tif 000004
【図３】
2013513843.tif 000005
【図４】
2013513843.tif 000006
【図５】
2013513843.tif 000007
【国際調査報告】
2013513843.tif 000008
2013513843.tif 000009