(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5785183
(24)【登録日】2015年7月31日
(45)【発行日】2015年9月24日
(54)【発明の名称】異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイス及びクロック速度を切り換えるための方法
(51)【国際特許分類】
G06F 13/42 20060101AFI20150907BHJP
H04L 29/08 20060101ALI20150907BHJP
【FI】
G06F13/42 350C
G06F13/42 350B
H04L13/00 307C
【請求項の数】19
【全頁数】13
(21)【出願番号】特願2012-542615(P2012-542615)
(86)(22)【出願日】2010年12月10日
(65)【公表番号】特表2013-513843(P2013-513843A)
(43)【公表日】2013年4月22日
(86)【国際出願番号】GB2010002251
(87)【国際公開番号】WO2011070328
(87)【国際公開日】20110616
【審査請求日】2013年12月5日
(31)【優先権主張番号】12/635,942
(32)【優先日】2009年12月11日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケビン ディー. セノーラベク
(72)【発明者】
【氏名】ナタ―レ バルビエロ
(72)【発明者】
【氏名】ゴードン エフ. チャルク
【審査官】
坂東 博司
(56)【参考文献】
【文献】
特開2000−181566(JP,A)
【文献】
米国特許出願公開第2006/0288249(US,A1)
【文献】
特開平11−312027(JP,A)
【文献】
特開平10−232853(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/42
H04L 29/08
(57)【特許請求の範囲】
【請求項1】
異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイスであって、
ソースクロック信号から複数のクロック信号を異なる周波数で生成するように構成される周波数ディバイダと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を選択すると共に前記選択された最大データ速度で送信クロック信号を前記複数のポートの各々のためのクロック有効化信号と共に前記ポートへ出力するように構成されるクロック切り換え制御器と、を備え、
前記クロック有効化信号の各々は、前記複数のポートの各々によって要求されるデータ速度に整合するように、前記送信クロック信号を選択的に有効化するデバイス。
【請求項2】
前記クロック切り換え制御器は、前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように、前記送信クロック信号のクロックサイクルをカウントするためのカウンタを備える請求項1のデバイス。
【請求項3】
前記クロック切り換え制御器は、前記送信クロック信号が前記送信クロック信号の予め定められた位相で切り換えられるように、現在のクロック信号、要求されたクロック信号、及び前記現在のクロック信号の位相の情報を記憶するための記憶装置を備える請求項1のデバイス。
【請求項4】
前記クロック切り換え制御器は、制御信号に従って1つのクロック信号のみが前記送信クロック信号として出力されるように、異なる周波数で生成される前記複数のクロック信号をゲートするためのクロックゲートセルを備え、
前記制御信号は、生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項1のデバイス。
【請求項5】
前記デバイスは周辺コンポーネント相互接続エクスプレス(PCIe)適合デバイスである請求項1のデバイス。
【請求項6】
前記デバイスはハイパートランスポート適合デバイスである請求項1のデバイス。
【請求項7】
前記周波数ディバイダは、250メガヘルツ(MHz)信号、500MHz信号、及び1ギガヘルツ(GHz)信号を生成するように構成される請求項1のデバイス。
【請求項8】
前記ソースクロック信号は位相ロックループクロック信号である請求項1のデバイス。
【請求項9】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための方法であって、
ソースクロック信号から複数のクロック信号を異なる周波数で生成することと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定することと、
当該選択された最大データ速度で送信クロック信号を前記複数のポートの各々に供給することと、
前記複数のポートの各々によって要求されるデータ速度に整合するように、前記送信クロック信号を選択的に有効化するために前記複数のポートの各々にクロック有効化信号を供給することと、を備える方法。
【請求項10】
前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように前記最大データ速度が変更されてからの前記送信クロック信号のクロックサイクルをカウントすることを更に備える請求項9の方法。
【請求項11】
前記送信クロック信号は前記送信クロック信号の予め定められた位相で切り換えられる請求項9の方法。
【請求項12】
制御信号に従って1つのクロック信号が前記送信クロック信号として出力されるように前記複数のクロック信号をゲートすることを更に備え、
前記制御信号は生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項9の方法。
【請求項13】
前記クロック信号は250メガヘルツ(MHz)信号、500MHz信号、及び1ギガヘルツ(GHz)信号である請求項9の方法。
【請求項14】
前記ソースクロック信号は位相ロックループクロック信号である請求項9の方法。
【請求項15】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための汎用コンピュータによる実行のための一連の命令を記憶するコンピュータ可読記憶媒体であって、前記一連の命令は、
ソースクロック信号から複数のクロック信号を異なる周波数で生成するための生成コードセグメントと、
複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定するための決定コードセグメントと、
当該選択された最大データ速度で送信クロック信号を前記複数のポートの各々に供給するための第1の供給コードセグメントと、
前記複数のポートの各々によって要求されるデータ速度に整合するように、前記送信クロック信号を選択的に有効化するために前記複数のポートの各々にクロック有効化信号を供給するための第2の供給コードセグメントと、を備えるコンピュータ可読記憶媒体。
【請求項16】
前記一連の命令は、前記最大データ速度が変更された後予め定められた数のクロックサイクルで前記送信クロック信号が切り換えられるように前記最大データ速度が変更されてからの前記送信クロック信号のクロックサイクルをカウントするためのカウントコードセグメントを更に備える請求項15のコンピュータ可読記憶媒体。
【請求項17】
前記一連の命令は、制御信号に従って1つのクロック信号が前記送信クロック信号として出力されるように前記複数のクロック信号をゲートするためのゲートコードセグメントを更に備え、
前記制御信号は生成されるべき前記送信クロック信号の周波数を示す要求クロック信号に基づいて生成される請求項15のコンピュータ可読記憶媒体。
【請求項18】
前記ソースクロック信号は位相ロックループクロック信号である請求項15のコンピュータ可読記憶媒体。
【請求項19】
前記命令はデバイスの製造のために用いられるハードウエア記述言語(HDL)命令である請求項15のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【0001】
この出願は2009年12月11日出願の米国非暫定出願第12/635,942号の利益を主張し、その全てがここに記載されているものとして参照として組み込まれる。
【技術分野】
【0002】
この出願は、コンピュータバス及び相互接続プロトコル、例えば周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express)(PCIe)、ハイパートランスポート(HyperTransport)等、に関する。
【背景技術】
【0003】
コンピュータシステムにおいては、単一又は複数のホストプロセッサと他のデバイスを相互接続すると共にそれらの間でデータを転送するために、種々のバスが設けられている。例としては、旧来の周辺コンポーネント相互接続(PCI)及びPCI−X規格に代わるものとして、PCIeが開発されてきた。PCIeは、マザーボード搭載の周辺機器をリンクするためのマザーボードレベル相互接続として、及びアドインボードのための拡張カードインタフェースとして、消費者、サーバ、及び産業応用において用いられる。
【0004】
PCIeバスと旧来のPCIバス又はPCI−Xバスとの相違点は、共有パラレルバスアーキテクチャよりもむしろ点対点(point-to-point)シリアルリンクに基づくトポロジである。PCIeは、旧来のパラレルPCI及びPCI−Xバスの高速シリアル置換であると考えることができる。ソフトウエアレベルでは、PCIeはPCIとの互換性を保っているので、PCIeデバイスは、PCIeの新しい特徴に関する情報を何ら有していない旧式のアプリケーション及びオペレーティングシステムにおいて設定され且つ使用され得る。
【発明の概要】
【発明が解決しようとする課題】
【0005】
PCIe1.0又は1.1においては、各レーン(lene)は250MB/sを搬送する。2007年後期にリリースされたPCIe2.0では、速度を500MB/sに倍増する第2世代シグナリングモード(second generation signaling mode)が追加されている。
【0006】
PCIe2.0及び3.0もまた、旧世代のPCIe(即ちPCIe1.x)との互換性を維持している。PCIe1.x適合デバイスはまだ市場で用いられているので、PCIe2.0又は3.0適合デバイスは、PCIe1.x適合デバイスに接続される必要があるであろう。PCIe2.0又は3.0デバイスは、ポートの1つによる要求に応じてクロック速度を切り換え、且つ任意の他のポートでのデータ転送を遮断することなしに特定の時間の間、更新されたクロック速度をグリッチなしに(glitch-free)有する必要があろう。
【課題を解決するための手段】
【0007】
異なるクロック速度で動作中の多重リンクのためにクロック速度を切り換えるように構成されるデバイスは、周波数ディバイダ及びクロック切り換え制御器を含む。周波数ディバイダは、ソースクロック信号から複数のクロック信号を異なる周波数で生成するように構成される。クロック切り換え制御器は、複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を選択すると共に選択された最大データ速度で送信クロック信号を複数のポートの各々のためのクロック有効化信号と共にポートへ出力するように構成され、クロック有効化信号の各々は、複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化する。
【0008】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための方法は、ソースクロック信号から複数のクロック信号を異なる周波数で生成することによって開始する。複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度が決定される。送信クロック信号は、選択された最大データ速度で複数のポートの各々に供給される。複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化するために、複数のポートの各々にクロック有効化信号が供給される。
【0009】
異なるクロック速度で動作中の多重リンクのためにクロック信号を切り換えるための汎用コンピュータによる実行のための一連の命令を記憶するコンピュータ可読記憶媒体。一連の命令は、ソースクロック信号から複数のクロック信号を異なる周波数で生成するための生成コードセグメントと、複数のリンクのポートによって要求されるデータ速度のうちの最大データ速度を決定するための決定コードセグメントと、選択された最大データ速度で送信クロック信号を複数のポートの各々に供給するための第1の供給コードセグメントと、複数のポートの各々によって要求されるデータ速度に整合するための送信クロック信号を選択的に有効化するために複数のポートの各々にクロック有効化信号を供給するための第2の供給コードセグメントと、を含む。一連の命令は、デバイスの製造のために用いられるハードウエア記述言語(HDL)命令であってよい。
【図面の簡単な説明】
【0010】
添付の図面と共に例示を目的とする以下の説明から、更に詳細な理解がもたらされるであろう。
【0011】
【
図1】
図1は周波数ディバイダとクロック切り換え制御器の第1の部分とを示す図である。
【0012】
【
図2】
図2はクロック切り換え制御器の第2の部分を示す図である。
【0013】
【
図3】
図3はクロック有効化信号生成器を示す図である。
【0014】
【
図4】
図4はクロック生成器のクロック切り換えタイミングを示す図である。
【0015】
【
図5】
図5はポートA〜Cに対する有効化信号の例示的なタイミング図である。
【発明を実施するための形態】
【0016】
ここに説明される実施形態は、デバイスが、ポートの1つによる要求に応じて複数のクロック速度の1つを選択すると共に、任意の他のポートでのデータ転送を遮断することなしに既知の時間の間、更新されたクロック速度をグリッチなしに有することを可能にする。実施形態は、多重速度で多重リンクを動作させるデバイスに対してクロック切り換えのための解決法を提供する。実施形態は、任意のコンピュータバス及び相互接続プロトコルに従い多重クロック速度をサポートする任意のデバイスにおいて用いられてよい。例えば実施形態は、PCIe2.0若しくは3.0又は将来開発されるであろう任意の他のバージョンをサポートする任意のPCIe適合デバイスに実装されてよい。以下、PCIeプロトコルを参照して実施形態を説明する。しかし、実施形態は、任意のコンピュータバス及び、限定はされないが、PCIe、ハイパートランスポート等を含む相互接続プロトコルに適用可能であることを付言しておく。
【0017】
図1〜3は、1つの実施形態に従い、異なる周波数で3つのクロック信号を生成すると共にクロックの速度を変更するように構成される例示的なクロック生成器を示している。クロック生成器100は周波数ディバイダ110及びクロック切り換え制御器200を備える。
図1は周波数ディバイダ110とクロック切り換え制御器の第1の部分200aとを示している。
図2はクロック切り換え制御器の第2の部分200bを示している。
図3はクロック切り換え制御器200の一部であるクロック有効化信号生成器300を示している。
図4はクロック生成器100のクロック切り換えタイミングを示している。尚、
図1〜3に示されるクロック生成器は例示的なものであり限定的ではなく、分周及びクロック信号切り換えのための任意の他の構成が実装されてよい。また、クロック生成器は、2つ又は4つ以上の異なる周波数信号を生成すると共にそれらの間で要求に応じて切り換えてよい。
【0018】
図1を参照すると、クロック生成器100は、位相ロックループ(phase locked loop)(PLL)クロック(PLLCLK)信号122をPLL150から受け取る。この例では、PLLクロック信号102の周波数は2GHzであり、PLLクロック信号102は、PCIe第3、第2及び第1世代処理のために周波数ディバイダ110によってそれぞれ2、4及び8分周される(PLLクロック信号及び3つのクロック信号は
図4における行1〜4に示されている)。尚、PLLクロック信号102は任意の周波数であってよく、またシステムによる要求に応じて任意の周波数信号に分周されてよい。この例はPLLクロック信号を用いているが、当業者であれば他のソースクロック信号が用いられ得ることを認識するはずである。
【0019】
図1の例示的な周波数ディバイダ110は、インバータ112、排他的NORゲート118,126、ORゲート124、及びDフリップフロップ114,116,120,122,128,130を含む。Dフリップフロップ114,116,120,122,128,130は、PLLクロック信号102によってクロックされる。Dフリップフロップ114の出力は、Dフリップフロップ116に入力し、またインバータ112を介してDフリップフロップ114にフィードバックされる。Dフリップフロップ114の出力はPLLクロックサイクル毎に反転され、従ってDフリップフロップ116はPCIe第3世代クロック信号132cをPLLクロック信号の半分の周波数で出力する(即ちPCIe第3世代クロック信号を生成する)。
【0020】
Dフリップフロップ120の出力は、Dフリップフロップ122に入力し、また排他的NORゲート118を介してDフリップフロップ120にフィードバックされる。Dフリップフロップ114の出力は、排他的NORゲート118の別の入力に入力する。Dフリップフロップ122は、PCIe第2世代クロック信号132bをPLLクロック信号122の1/4の周波数で出力する。
【0021】
Dフリップフロップ128の出力は、Dフリップフロップ130に入力し、また排他的NORゲート126を介してDフリップフロップ128にフィードバックされる。Dフリップフロップ114及びDフリップフロップ120の出力は、ORゲート124でゲートされてから排他的NORゲート126に入力する。Dフリップフロップ130は、PCIe第1世代クロック信号132aをPLLクロック信号122の1/8の周波数で出力する。
【0022】
生成されたクロック信号132a,132b,132cのうちの2つはクロックゲートセル212a,212b,212cによってブロックされ、クロック信号132a,132b,132cの1つだけが、制御信号244a,244b,244c(clk_g1_en,clk_g2_en,clk_g3_en)に従って、リンクへ供給されるべき送信クロック信号(TXCLK)140として出力される。TXCLK信号は
図4の行17に示されている。制御信号244a,244b,244cは
図4の行14〜16に示されている。クロックゲートセル212a,212b,212cは、ゲートされたDラッチ214a,214b,214c及びANDゲート216a,216b,216cをそれぞれ含む。制御信号244a,244b,244c(clk_g1_en,clk_g2_en,clk_g3_en)は、ゲートされたDラッチ214a,214b,214cのD入力にそれぞれ入力し、クロック信号132a,132b,132cは、ゲートされたDラッチ214a,214b,214cのG入力にインバータを介してそれぞれ入力する。クロック信号132a,132b,132cは、ゲートされたDラッチ214a,214b,214cをバイパスしてANDゲート216a,216b,216cにそれぞれ入力する。ANDゲート216a,216b,216cの出力はORゲート218に入力する。clk_g1_en信号244aがアサートされるとORゲート218を介して第1世代クロック信号132aが出力され、clk_g2_en信号244bがアサートされるとORゲート218を介して第2世代クロック信号132bが出力され、clk_g3_en信号244cがアサートされるとORゲート218を介して第3世代クロック信号132cが出力される。
【0023】
制御信号244a,244b,244cは、要求_clk信号(request_clk signals)232に基づいて生成される。要求_clk信号232の生成は、
図2を参照して詳細に説明されることになる。要求_clk信号232は、クロック信号が生成されるべきことを示す信号である。要求_clk信号232は、この例では3つのクロック速度のうちの1つを示す2ビット信号であってよい(例えば「00」は第1世代クロック信号を示し、「01」は第2世代クロック信号を示し、そして「10」は第3世代クロック信号を示す)。
【0024】
生成された要求_clk信号232(
図2の回路(circuit in FIG. 2)からの出力信号)は、直列の4つのDフリップフロップ234,235,236,237を通ってゲートされてからDフリップフロップ238に入力してよい。Dフリップフロップ234,235,236,237は、直列の4つの遅延バッファ246,247,248,249によって遅延させられた送信クロック信号(TXCLK)140によりクロックされる。4つの遅延バッファ246,247,248,249によって遅延させられたTXCLK信号(TXCLK_buf0, TXCLK_buf1, TXCLK_buf2, TXCLK_buf3)は、
図4の行21〜24に示されている。遅延バッファ246,247,248,249の各々は、特定の遅延時間(例えば1ギガヘルツ(GHz)で遅延バッファあたり最大で1ナノ秒(ns))だけクロック信号140を遅延させてよい。これは、TXCLK挿入遅延がコア論理に整合することを確実にし、またクロック遅延を後退させてクロック生成論理での挿入遅延に確実に整合するようにするためである。
【0025】
Dフリップフロップ238はPLLクロック信号102によってクロックされ、またNORゲート240によってゲートされたDフリップフロップ114,120,128からの3つの出力信号は、Dフリップフロップ238のイネーブル入力にそれぞれ入力し、その結果、Dフリップフロップ114,120,128の全ての出力が「低」の場合にのみ、直列のDフリップフロップ234〜237によって遅延させられた要求_clk信号232が転送される(そしてTXクロック信号速度を変更する)。Dフリップフロップ238を介して出力された要求_clk信号232は、要求_clk信号232に従って3つのANDゲート242a,242b,242cのうち1つを「高」に、2つを「低」に駆動し、そしてANDゲート242a,242b,242cの出力は、それぞれクロックゲートセル212a,212b,212cへの制御信号244a,244b,244cになる。
【0026】
図2を参照して、要求_clk信号232の生成を詳細に説明する。PCIeデバイスは2つ以上のリンクをサポートすることが要求されるであろうし、また各リンクは異なるクロック速度を必要とするであろう。複数のリンクのために必要なクロック速度(clk_sel_A,clk_sel_B,…,clk_sel_N)のうち、最大クロック速度(maximum clock speed: max)がセレクタ252によって選択される。clk_sel[1:0]信号254は、この例では2ビット信号であり、選択された最大クロック速度を表す(この例で3つのクロック速度の1つを選択するためには2ビット必要である)。選択されたクロック速度信号(clk_sel[1:0])254は、Dフリップフロップ256を介して要求_clk信号232として出力される。clk_sel[1:0]信号及び要求_clk信号232は、
図4の行5及び6に示されている。
【0027】
Dフリップフロップ256は、TXCLKによってクロックされ、またカウント信号(count signal)263(Dフリップフロップ262の出力)、現在_clk信号(current_clk signal)274(Dフリップフロップ272の出力)と要求_clk信号232(Dフリップフロップ256の出力)の比較、及び位相信号(phase signal)286(Dフリップフロップ284の出力)に基づいて有効化又は無効化される。Dフリップフロップ272は、現在選択されているクロック速度を示す現在_clk信号274を記憶する(例えば「00」は第1世代クロック信号を示し、「01」は第2世代クロック信号を示し、そして「10」は第3世代クロック信号を示す)。要求_clk信号232は、TXCLK信号が切り換わるときに現在_clk信号274になる。
【0028】
比較器264は要求_clk信号232が現在_clk信号274と異なるかどうかを決定し、そして比較器264の出力はDフリップフロップ262のイネーブル入力に入力する。Dフリップフロップ262は、要求_clk信号232と現在_clk信号274が異なる場合(即ち要求_clk信号が変更された場合)にのみ有効化される。Dフリップフロップ262、及びDフリップフロップ262のD入力に戻るフィードバックループ内の+1加算器266は、要求_clk信号232と現在_clk信号274が異なるようになってからのTXCLKサイクルの数をカウントする2ビットカウンタとして動作する。カウント信号263は
図4の行12に示されている。
【0029】
比較器268は、カウント信号263が「11」になった場合に「高」を出力する。比較器268の出力はDフリップフロップ272のイネーブル入力に入力する。従ってこの例では、
図4の行6〜10に示されるように、要求_clk信号232は、要求_clk信号232が変更された後TXCLKの4サイクルで現在_clk信号274になる。TXCLKの4サイクルは、最も速いクロック信号(1GHz)と最も遅いクロック信号(250MHz)の比が4であるからであり、システムによって要求されるクロック速度に応じて異なるTXCLKサイクルが必要になるであろう。比較器276は、現在_clk信号274と要求_clk信号232を比較してANDゲート292に出力する。
【0030】
現在_clk信号274は、第1及び第2のマルチプレクサ282,290を駆動する。第1のマルチプレクサ282は、現在_clk信号274が「00」であれば「00」を出力し、現在_clk信号274が「01」であれば位相信号+2を出力し、そして現在_clk信号274が「10」であれば位相信号+1を出力する。マルチプレクサ282の出力はDフリップフロップ284のD入力に入力し、Dフリップフロップ284の2ビット出力が位相信号286(
図4の行11)である。位相信号286は、この例では2ビット信号である。比較器288aは、位相信号286が「00」であれば「高」を出力し、さもなければ「低」を出力する。比較器288bは、位相信号286が「01」であれば「高」を出力し、さもなければ「低」を出力する。比較器288cは、位相信号286が「10」であれば「高」を出力し、さもなければ「低」を出力する。第2のマルチプレクサ290は、現在_clk信号274に応じて比較器288a,288b,288cの出力の1つを出力する。比較器276及び第2のマルチプレクサ290からの出力は、ANDゲート292によってゲートされ、ANDゲート292の出力はDフリップフロップ256を有効化し又は無効化する。
【0031】
カウント信号263及び位相信号286の生成並びに現在_clk信号274及び要求_clk信号232の比較を含むクロック切り換え制御器の論理は、クロック信号(TXCLK)の切り換えが、任意の他のポートでのデータ転送を遮断することなしに、既知の時間の間グリッチなしに特定の位相のみを生じさせることを確実にする。
【0032】
図3を参照して、クロック有効化信号(clock enabling signal: clk_en)の生成を詳細に説明する。ソースクロックは、PCIeIPによってサポートされる最大データ速度(例えばPCIe3.0サポートに対して1GHz)で動作中であることが予定されている。クロック生成器100は、1GHz、500MHz及び250MHzのクロック信号を生成し、生成されたクロック信号の1つを全てのPCIeリンクに供給する。クロック切り換え制御器200は、PCIeIPコアにおけるアクティブなリンクによって要求される最も速いクロック速度を決定し、そしてその最も速いクロック信号を全てのPCIeリンクに供給する。同じクロック信号が全てのPCIeリンクに供給されるので、クロック切り換え制御器200はまた、より遅いクロック信号を要求する各リンクのためのクロック有効化信号を生成する。例えば、リンクによって要求される最も速いクロック速度が1GHzである場合には、クロック切り換え制御器200は、1GHzクロック信号を生成して全てのリンクにこれを供給することになる。クロック切り換え制御器200はまた、500MHzクロック速度を要求するリンクに対して1GHz信号が1つおきのクロックサイクルで有効化され、また250MHzクロック速度を要求するリンクに対して1GHz信号が4クロックサイクル毎にだけクロック有効化信号によって有効化されるように、クロック有効化信号を各リンクに供給する。クロック有効化信号は
図4の行18〜20に示されている。3つのクロック有効化信号の1つが各リンクに対して選択される。
【0033】
図3はリンクAのための例示的なクロック有効化信号生成回路300を示している。多重リンクをサポートするためには、
図3に示される回路の多重セットがクロック切り換え制御器200内に含まれる。
【0034】
リンクAによって要求されるクロック速度はclk_sel_Aであり、この2ビット信号は、要求されたクロック速度(例えば第1世代クロック信号に対する「00」、第2世代クロック信号に対する「01」、及び第3世代クロック信号に対する「10」)に応じて3つの入力(有効化信号309a,309b,309c)のうちの1つを出力するようにマルチプレクサ310を駆動する。
【0035】
3つの有効化信号309a,309b,309c(clk_en[0],clk_en[1],clk_en[2])は、現在_clk信号274、要求_clk信号232、カウント信号263、及び位相信号286に基づいて生成される。カウント信号263に応じて、現在_clk信号274又は要求_clk信号232のいずれかが3つの比較器322,332,342に入力する(即ちカウント信号が「11」であれば要求_clk信号、そうでなければ現在_clk信号)。カウント信号263は比較器302で比較され、比較器302の出力がマルチプレクサ304を制御する。
【0036】
現在_clk信号274又は要求_clk信号232が「00」である場合には、第1のブランチ320は、常時オン信号、50%デューティサイクル信号、又は25%デューティサイクル信号を現在_clk信号274に応じて生成する。現在_clk信号274又は要求_clk信号232が「00」である場合には、比較器322の出力(及びそれに従いORゲート324の出力)は常時「高」であり、常時オン信号が生成されそしてDフリップフロップ308を介してマルチプレクサ310に供給される。比較器325a及び325cは現在_clk信号274をそれぞれ「01」及び「10」と比較し、そして比較器325b及び325dは位相信号286をそれぞれ「00」及び「10」と比較する。現在_clk信号274が「01」である場合には、比較器322の出力及びANDゲート328の出力は「低」であるが、ANDゲート326は位相値が「00」の間オンになる。現在_clk信号274が「01」である間の位相信号286は「00」と「01」の間で変わるので、ANDゲート326の出力(及び結果としてORゲート324の出力)は50%の時間オンになる。現在_clk信号274が「10」である場合には、比較器322及びANDゲート326の出力は「低」であるが、ANDゲート328は位相信号が「00」の間オンになる。現在_clk信号が「10」である間の位相信号286は、「00」、「01」、「10」、及び「11」の間で変わるので、ANDゲート328の出力(及び結果としてORゲート324の出力)は25%の時間オンになる。例えば、現在_clk信号が「10」(TXCLK信号が1GHzであることを意味する)であり、且つリンクAに要求されるクロック速度が250MHz(即ちclk_sel_Aが「00」)である場合には、マルチプレクサ310は第1のブランチ信号を出力し、これはANDゲート328から出力される25%デューティサイクル信号であり、1GHzでのTXCLKは25%の時間の間だけ有効化されて、共通の1GHzのTXCLKから250MHzクロック信号をリンクAに対して引き出す。現在_clk信号が「01」(TXCLK信号が500MHzであることを意味する)であり、且つリンクAに要求されるクロック速度が250MHz(即ちclk_sel_Aが「00」)である場合には、マルチプレクサ310は第1のブランチ信号を出力し、これはANDゲート326から出力される50%デューティサイクル信号である。
【0037】
現在_clk信号274又は要求_clk信号232が「01」である場合には、第2のブランチ330は、常時オン信号又は50%デューティーサイクル信号のいずれかを生成する。現在_clk信号274又は要求_clk信号232が「01」である場合には、比較器322の出力(及びその結果としてORゲート324の出力)は常時「高」であり、常時オン信号が生成されそしてDフリップフロップ308bを介してマルチプレクサ310に供給される。比較器335aは現在_clk信号を「10」と比較し、そして比較器335bは位相信号の第1ビットを「0」と比較する。現在_clk信号274が「10」である場合には、比較器332の出力は「低」であるが、ANDゲート336は位相信号286の第1ビットが「0」の間オンになり、50%デューティサイクル信号を生成する。
【0038】
現在_clk信号274又は要求_clk信号232が「10」である場合には、第3のブランチ340(即ち比較器342)は、Dフリップフロップ308aを介してゲートされる常時オン信号をマルチプレクサ310に対して生成する。
【0039】
図5はポートA〜Cに対する有効化信号の例示的なタイミング図を示している。最初、ポートA〜Cに要求されるデータ速度(portA data rate, portB data rate, portC data rate)は全て250MHz(即ち毎秒2.5ギガ転送(GT/s))である。従って、TXCLKは250MHzで生成され、またポートA〜Cに対する有効化信号(portA clk en, portB clk en, portC clk en)は全て常時オン信号である。リンクBに要求されるデータ速度が500MHzに増大する(即ち転送速度が5GT/sに増大させられる)。TXCLKは500MHzに切り換えられ、そして全てのリンクA〜Cに供給される。リンクA及びCのためのデータ速度は250MHzのままであるから、50%デューティサイクルクロック有効化信号がリンクA及びCに供給される。次いで、リンクCに要求されるデータ速度が1GHzに増大する。TXCLKは1GHz信号に切り換えられ、そして全てのリンクA〜Cに供給される。リンクA及びBのためのデータ速度はそれぞれ250MHz及び500MHzであるから、リンクA及びBに対するクロック有効化信号は、それぞれ25%及び50%デューティサイクル信号になる。次いで、リンクCに要求されるデータ速度が250MHzに低下する。TXCLKは500MHzに戻され、そして全てのリンクA〜Cに供給される。リンクA〜Cに対するクロック有効化信号は、それぞれ50%デューティサイクル信号、常時オン信号、及び50%デューティサイクル信号になる。次いで、ポートBに要求されるデータ速度が250MHzに低下し、そしてTXCLKが250MHzに切り換えられる。次いで、ポートCのためのデータ速度が1GHzに増大し、そしてTXCLKが1GHzに切り換えられる。ポートA及びBのためのデータ速度は250MHzであるから、ポートA及びBに対するクロック有効化信号は25%デューティサイクル信号になる。次いで、ポートCのためのデータ速度が250MHzに低下してTXCLKが250MHzに切り換えられ、そしてポートA〜Cに対するクロック有効化信号が常時オン信号になる。
【0040】
上に開示される実施形態に従うクロック切り換えは、PCIeIPコアにおけるPCIeリンク毎の1つのPLLに代えてPCIeIPコア毎に1つのPLLだけが用いられるであろうという領域節約及び電力節約の利点を有する。リンク毎に1つのPCIeIPをインスタンシエイトする(instantiate)必要性に代えて、多重速度で動作する複数のリンクを動作させるために、1つのPCIeIPコアを用いることができる。クロック切り換え回路がグリッチなしに(glitch-free)クロック速度を変更するという事実により、実施形態は、速度を変更していないリンクが中断せずに動作することを可能にする。加えて、実施形態によると、クロック切り換えは、4クロックサイクル内で更新されたクロック速度を提供することが保証される。
【0041】
今日、電子回路の多くは、ソフトウエア(例えばハードウエア記述言語(HDL))を用いることによって設計され、そして製造される。HDLは、電子回路の構成、動作、及び/又は挙動を記述するためのコンピュータ言語である。クロック生成器100(即ち電子回路)は、ソフトウエア(例えばHDL)を用いることによって設計され、そして製造されてよい。HDLは、現在用いられており又は将来改良されるであろう従来のHDLの任意の1つであってよい。クロック生成器100の構成、動作、及び/又は挙動を記述するために、一連の命令がHDLで生成される。一連の命令は任意の種類のコンピュータ可読記憶媒体内に記憶されてよい。
【0042】
特徴及び要素が特定の組み合わせにおいて上述されているが、各特徴又は要素は、他の特徴及び要素を伴わずに単独で用いられてよく、あるいは他の特徴及び要素を伴い又は伴わずに種々の組み合わせにおいて用いられてよい。ここに提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のためにコンピュータ可読記憶媒体内に組み込まれるコンピュータプログラム、ソフトウエア、又はファームウエアにおいて実装されてよい。コンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内部ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、及びCD−ROMディスク等の光学媒体、更にはデジタル多用途ディスク(DVD)を含む。
【0043】
適切なプロセッサは、例としては、汎用プロセッサ、専用プロセッサ、標準的なプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに付随する1つ以上のマイクロプロセッサ、制御器、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他の種類の集積回路(IC)、及び/又は状態マシンを含む。