(57)【要約】【課題】機能ブロックに供給するクロックを制御する構成において、タイミング設計を容易にする。【解決手段】複数の生成手段は、それぞれ、複数の機能ブロックのうち対応する機能ブロックに供給するクロックを生成する。第１の制御手段は、複数の生成手段のうちの１以上の生成手段で構成される第１のグループによるクロック生成を制御し、前記第１のグループと共通のクロックを用いて動作する。第２の制御手段は、複数の機能ブロックのうち１つであり、第１のグループによるクロック生成の制御情報を第１の制御手段に非同期転送する。【選択図】図１
2020177538.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ、複数の機能ブロックのうち対応する機能ブロックに供給するクロックを生成する、複数の生成手段と、
前記複数の生成手段のうちの１以上の生成手段で構成される第１のグループによるクロック生成を制御し、前記第１のグループと共通のクロックを用いて動作する、第１の制御手段と、
前記複数の機能ブロックのうち１つであり、前記第１のグループによるクロック生成の制御情報を前記第１の制御手段に非同期転送する、第２の制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第１の制御手段は、前記第１のグループに含まれる前記１以上の生成手段のそれぞれに対し、前記制御情報を同じタイミングで出力することを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記第１の制御手段は、前記第１のグループに含まれる前記１以上の生成手段のそれぞれに対し、前記制御情報を同期転送することを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
前記第１の制御手段と前記第２の制御手段とはバスで接続され、前記第２の制御手段は前記バスを介して前記制御情報を前記第１の制御手段に転送することを特徴とする、請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２の制御手段は、アドレス信号とデータ信号とを用いるバスプロトコルを用いて、前記制御情報を前記第１の制御手段に転送することを特徴とする、請求項４に記載の情報処理装置。
【請求項６】
前記第１の制御手段と前記第２の制御手段とは、さらに、前記制御情報の転送を制御する信号線で接続されていることを特徴とする、請求項４又は５に記載の情報処理装置。
【請求項７】
前記第２の制御手段は、さらに、前記制御情報の取得を要求する信号を前記第１の制御手段に送ることを特徴とする、請求項４から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記第１の制御手段は、前記制御情報を取得したことを通知する信号を前記第２の制御手段に送ることを特徴とする、請求項４から６のいずれか１項に記載の情報処理装置。
【請求項９】
前記第２の制御手段は、前記制御情報を格納するレジスタを有しており、前記レジスタ内の制御情報は前記複数の機能ブロックのうち１つにより書き換え可能であることを特徴とする、請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第１のグループは、生成したクロックを、互いに同期関係にある複数の機能ブロックに供給することを特徴とする、請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第１のグループは、生成したクロックを、前記第２の制御手段に供給することを特徴とする、請求項１から１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記第２の制御手段は、前記複数の生成手段のうちの１以上の生成手段で構成される第２のグループによってクロックを供給され、前記第２のグループは前記第１のグループとは共通のクロックを用いて動作することを特徴とする、請求項１から１０のいずれか１項に記載の情報処理装置。
【請求項１３】
前記第２の制御手段は、前記複数の生成手段のうちの１以上の生成手段で構成される第３のグループによってクロックを供給され、前記第３のグループは前記第１のグループとは異なるクロックを用いて動作することを特徴とする、請求項１から１０のいずれか１項に記載の情報処理装置。
【請求項１４】
前記第１のグループに含まれる前記１以上の生成手段及び前記第１の制御手段は、前記第２の制御手段よりもクロックツリーの上流のクロックを用いて動作することを特徴とする、請求項１から１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記複数の生成手段のうちの１以上の生成手段で構成される第２のグループによるクロック生成を制御し、前記第２のグループと共通のクロックを用いて動作する、第３の制御手段をさらに備え、
前記第２の制御手段は、前記第２のグループによるクロック生成の制御情報を前記第３の制御手段に非同期転送することを特徴とする、請求項１から１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記制御情報は、前記第１のグループに含まれる生成手段が生成するクロックの周波数情報と、前記第１のグループに含まれる前記生成手段が生成するクロックのオン又はオフを制御する情報と、のうちの少なくとも１つであることを特徴とする、請求項１から１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記第１の制御手段は、前記第１のグループの近傍に配置されていることを特徴とする、請求項１から１６のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、特に集積回路におけるクロック供給に関する。
【背景技術】
【０００２】
一般に、回路内では、クロックに同期したデータの受け渡しが行われる。このような回路を設計する際には、クロックやデータの遅延時間を考慮して、全ての同期パスにおいてタイミング収束するように、タイミング設計がなされる。例えば、フリップフロップ（ＦＦ）間でデータの受け渡しを行う場合、正常にデータを受け渡すためには、ＦＦのセットアップ・ホールド時間を満たす必要がある。
【０００３】
回路に供給されるクロックはクロック生成器で生成される。代表的な構成では、クロック生成器はチップトップ階層に配置される。クロック生成器は、必要に応じて、クロックを供給する機能ブロックごとに、クロック周波数の変更、及びクロックのオン又はオフを行うことがある。クロック生成器で生成されたクロックは、チップトップ階層上の配線を通って各機能ブロックに供給され、さらに機能ブロック内で各ＦＦへと分配される。クロック源から各機能ブロック又は各ＦＦへとクロックが到達するまでの遅延時間が等しくなるように物理的なクロック配線を行う手法としては、ＣＴＳ（クロックツリーシンセシス）がある。クロックの遅延時間差（クロックスキュー）を小さくすることで、タイミング設計を容易化することができる。
【０００４】
近年、デジタルカメラ及びスマートフォンなどの情報機器の省電力化のために、情報処理装置が有する回路（例えばＬＳＩのような集積回路）で用いられるクロックの周波数及びクロックのオンオフを制御することが求められている。例えば、ソフトウェアなどが、クロック生成器によるクロック生成を制御するために、設定値を格納するクロック設定レジスタを用いることができる。このようなレジスタは一機能ブロックとして実装され、また、他の機能ブロックとの間のクロックスキューを小さくするためにＣＴＳ下流に位置することが多い。一方で、クロックの供給元であるクロック生成器は、ＣＴＳ上流のクロックで駆動される。このため、クロック生成器とレジスタとの間のクロック遅延が非常に大きくなり、レジスタ（及びそのＦＦ）とクロック生成器（及びそのＦＦ）との間でデータを受け渡せるようにタイミング設計することは容易ではない。特に近年、回路の大規模化及び高周波数化が進んでいるため、タイミング設計はより困難になっている。
【０００５】
特許文献１は、リセット信号などの遅延の大きい信号の変化中にクロックを止める又はクロックの周波数を下げることで、タイミングの問題を回避することを提案している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２７７６０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の方法には、クロック生成の制御を行うたびに、クロック周波数低下又はクロックの停止が起きるため、動作速度が低下するという課題があった。
【０００８】
本発明は、機能ブロックに供給するクロックを制御する構成において、タイミング設計を容易にするための新しい制御技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
それぞれ、複数の機能ブロックのうち対応する機能ブロックに供給するクロックを生成する、複数の生成手段と、
前記複数の生成手段のうちの１以上の生成手段で構成される第１のグループによるクロック生成を制御し、前記第１のグループと共通のクロックを用いて動作する、第１の制御手段と、
前記複数の機能ブロックのうち１つであり、前記第１のグループによるクロック生成の制御情報を前記第１の制御手段に非同期転送する、第２の制御手段と、
を備える。
【発明の効果】
【００１０】
機能ブロックに供給するクロックを制御する構成において、タイミング設計を容易にすることができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に係る情報処理装置のシステム構成図。
【図２】一実施形態に係る情報処理装置のシステム構成図。
【図３】一実施形態におけるクロック周波数の切り替えのタイミングチャート。
【図４】一実施形態におけるクロックのオンオフ動作のタイミングチャート。
【図５】一実施形態に係る情報処理装置の非同期転送のための構成を示す図。
【図６】一実施形態に係るレジスタフィールドの例を示す図。
【図７】一実施形態における設定値の転送のタイミングチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１３】
まず、図１を参照して、一実施形態に係る情報処理装置１００の構成例を示す。本明細書においては、図１に示す情報処理装置１００を参照して本発明の実施形態を説明する。しかしながら、本発明において情報処理装置１００の全ての構成が必須ではないことに留意されたい。
【００１４】
図１に示す情報処理装置１００は、システムオンチップと呼ばれる半導体装置であり、半導体集積回路と呼ぶことができる。図１に示される情報処理装置１００の内部の各ブロックは、例えば、それぞれの機能を発揮する回路であってもよい。情報処理装置１００の用途は特に限定されず、情報処理装置１００は、後述するように、用途に合った機能を実現するための処理を行う機能ブロックを有している。情報処理装置１００は、例えば、デジタルカメラシステム用の情報処理装置であってもよい。
【００１５】
情報処理装置１００の内部の各ブロックは、バスシステムを介して相互接続されている。このようなバスシステムは、インターコネクト、ファブリック、オンチップネットワーク、又はネットワークオンチップと呼ばれるシステムであってもよい。バスシステムには、それぞれが特定の処理を行う、複数の機能ブロックが接続されている。一実施形態に係る情報処理装置１００は、外部センサ（不図示）から映像データを受信する機能、映像データをバスシステムを介してＤＲＡＭ（不図示）へ転送する機能、及び映像データに対して加工処理を行ってＤＲＡＭに格納する機能を有している。図１に示す機能ブロック７ａ〜７ｆは、それぞれ、これらの機能及びその他の機能のうちの少なくとも一部を実現する処理を行う。また、バスシステムには、複数の機能ブロックのうちの１つであり、情報処理装置１００が行う処理を全体的に制御するＣＰＵ８も接続されている。
【００１６】
以下、情報処理装置１００において、機能ブロックが動作するために用いるクロックを、機能ブロックに供給するための構成について説明する。情報処理装置１００はクロックを発振する機構を有しており、この機構は、図１に示すように、低速クロックと高速クロックとを供給可能であってもよい。
【００１７】
図１においてオシレータ１は低速クロックを発振する。また、ＰＬＬ２及びＰＬＬ３は、それぞれ、オシレータ１により生成された低速クロックを用いて、例えば低速クロックを逓倍することにより、低速クロックよりも高速な高速クロックを出力する。クロックＭＵＸ４は、オシレータ１により生成された低速クロック、又はＰＬＬ２で生成された高速クロックを選択して、後段に位置する生成部６ａ〜６ｅ及び制御部３１，３２に供給する。また、クロックＭＵＸ５は、オシレータ１により生成された低速クロック、又はＰＬＬ３で生成された高速クロックを選択して、後段に位置する生成部６ｆ及び制御部３３に供給する。本明細書においては、クロックＭＵＸ４が選択したクロックを基準クロック１と呼び、クロックＭＵＸ５が選択したクロックを基準クロック２と呼ぶ。
【００１８】
生成部６ａ〜６ｆは、複数の機能ブロックのうち対応する機能ブロックにクロックを供給する。図１の例において、生成部６ａ，６ｂ，６ｅ，６ｆは、それぞれ機能ブロック７ａ，７ｂ，７ｅ，７ｆにクロックを供給する。また、生成部６ｃ及び生成部６ｄは、それぞれ機能ブロックの１つである制御部９及びＣＰＵ８にクロックを供給する。このために、生成部６ａ〜６ｆは、機能ブロックに供給するクロックを生成する。生成部６ａ〜６ｆが生成し、機能ブロックに供給するクロックを、それぞれクロックａ〜ｆと呼ぶ。
【００１９】
生成部６ａ〜６ｆは、基準クロック（例えば基準クロック１又は基準クロック２）を用いて、機能ブロックに供給するクロックを生成する。例えば、複数の生成部のそれぞれである生成部６ａ，６ｂは、共通の基準クロック１を用いて生成したクロックを、対応する機能ブロックである機能ブロック７ａ，７ｂに供給している。生成部６ａ〜６ｆは、基準クロックを分周することにより、基準クロックの周波数を低下させてから、機能ブロックにクロックを供給することができる。また、生成部６ａ〜６ｆは、機能ブロックに供給するクロックをオン又はオフすることができる。
【００２０】
制御部３１〜３３は、生成部６ａ〜６ｆによるクロック生成を制御する。図１の例において、制御部３１は、制御部３１に対応するグループである生成部６ａ，６ｂが供給するクロックを制御する。同様に、制御部３２は、制御部３２に対応するグループである生成部６ｃ〜６ｅが供給するクロックを制御し、制御部３３は、制御部３３に対応するグループである生成部６ｆが供給するクロックを制御する。
【００２１】
本実施形態において、制御部３１〜３３は、生成部６ａ〜６ｆが機能ブロックに供給するクロックの周波数を制御し、及び生成部６ａ〜６ｆから機能ブロックへのクロックの供給をオン又はオフする制御を行うことができるが、制御内容はこれに限定されない。なお、本明細書において、制御部３１〜３３のことを第１の制御部と呼ぶことがある。
【００２２】
制御部９は、生成部６ａ〜６ｆによるクロック生成の制御情報を制御部３１〜３３に転送する。すなわち、制御部９は、制御部３１に対応するグループである生成部６ａ，６ｂによるクロック生成の制御情報を制御部３１に転送する。同様に、制御部９は、制御部３２に対応するグループである生成部６ｃ〜６ｅによるクロック生成の制御情報を制御部３１に、制御部３３に対応するグループである生成部６ｆによるクロック生成の制御情報を制御部３３に、それぞれ転送する。こうして、制御部９は、制御部３１〜３３を介して、機能ブロックに供給されるクロックを制御する。
【００２３】
制御部９は、例えば、生成部６ａ〜６ｆのそれぞれが生成するクロック周波数の設定値と、クロックのオン又はオフを示す設定値と、を格納するレジスタを所持することができる。制御部９は、これらのレジスタに格納された設定値を、制御部３１〜３３に供給することができる。なお、ＣＰＵ８は、レジスタバスを介して、制御部９がレジスタに格納している設定値の読み書きを行ってもよい。こうして、ＣＰＵ８は、機能ブロックに供給されるクロックを制御することができる。なお、本明細書において、制御部９のことを第２の制御部と呼ぶことがある。
【００２４】
リセット部２０は、情報処理装置１００内部のリセット信号を生成する。リセット部２０は、オシレータ１が発振した低速クロックを用いて動作することができ、この場合、リセット部２０が出力するリセット信号は低速クロックに同期する。このリセット信号に従って、生成部６ａ〜６ｆが有するカウンタ及びＦＦ（後述）が初期化される。また、このリセット信号に従って、機能ブロック７ａ〜７ｆ、ＣＰＵ８、制御部９、及び制御部３１〜３３の初期化が同時に行われてもよい（不図示）。
【００２５】
リセット実行時に、クロックＭＵＸ４，５はオシレータ１が発振した低速クロックを選択することができる。このとき、情報処理装置１００が有する各部は全て低速クロックに同期して動作する。リセット解除後、情報処理装置１００が通常処理を開始する際に、クロックＭＵＸ４，５はＰＬＬ２，ＰＬＬ３が生成した高速クロックを選択することができる。こうして、情報処理装置１００が高速処理を行うことができる。
【００２６】
次に、生成部６ａ〜６ｆの詳細な構成例を説明する。以下では生成部６ａについて説明するが、生成部６ｂ〜６ｆも同等の構成を有することができる。図１において、生成部６ａは、基準クロック１のパルス数を削減することにより、周波数が低減されたクロックを生成する。例えば、生成部６ａ、基準クロック１のパルスを２回に１回間引くことにより周波数を１／２にすることができ、４回に３回間引くことで周波数を１／４にすることができる。このような方式（歯抜け方式とも呼ばれる）により生成されたクロックのパルス幅は、基準クロックのパルス幅と同じである。
【００２７】
生成部６ａはカウンタ６１ａ及び分周回路を有し、基準クロック１を用いて動作する。図１の例において、分周回路はデコーダ６２ａ、フリップフロップ（ＦＦ）６３ａ、及びゲーテッドクロックバッファ（ＧＣＢ）６４ａを有している。
【００２８】
カウンタ６１ａは、カウント動作を行い、カウント値を保持する。カウント値は、リセット時に０に初期化される。カウンタ６１ａは、リセット解除後にカウントアップを開始し、その後は停止せずにカウントアップを継続する。カウント値が予め決められたエクスパイア値に達すると、次のカウント値は０になり、再度カウントアップが開始される。このように、一実施形態においてリセット部２０は、複数の生成部（生成部６ａ，６ｂなど）のそれぞれが備える、カウンタ（カウンタ６１ａ，６１ｂなど）のカウンタ値を同時に初期化することができる。また、リセット部２０は、複数の生成部（生成部６ａ，６ｂなど）のそれぞれが備える、初期化されたカウンタ（カウンタ６１ａ，６１ｂなど）の動作を同時に開始させることができる。
【００２９】
分周回路は、カウンタ６１ａの値に基づいて基準クロック１を分周する。そして、分周回路は、分周により生成されたクロックａを、対応する機能ブロック７ａに供給する。ここで、分周回路は、制御部３１による制御に従ってクロックａを生成することができる。
【００３０】
図１の例においては、デコーダ６２ａが、カウンタ６１ａのカウント値に従って、基準クロック１のパルスを間引くタイミングを示すタイミング信号を生成する。ここで、デコーダ６２ａは、制御部３１から入力される、クロック周波数の設定値５１ａにさらに従って、この信号を生成することができる。
【００３１】
ＦＦ６３ａは、デコーダ６２ａで生成されたタイミング信号をラッチし、ＧＣＢ６４ａに入力する。
【００３２】
ＧＣＢ６４ａは、入力されたタイミング信号に従って、基準クロック１のパルスを間引くことで、基準クロック１より周波数の低いクロックａを生成する。例えばＧＣＢ６４ａは、基準クロック１のパルスを２回に１回間引くことで、周波数を１／２にすることができ、パルスを４回に３回間引くことで、周波数を１／４にすることができる。また、ＧＣＢ６４ａは、基準クロック１のパルスを間引かずに、基準クロック１と同じ周波数を有するクロックａを出力することもできる。さらに、ＧＣＢ６４ａは、制御部３１から入力されるクロックのオン又はオフを示す設定値５０ａに従って、クロックａのオン又はオフを行うこともできる。
【００３３】
以下では、情報処理装置１００内の同期グループについて説明する。図１の例において、機能ブロック７ａと機能ブロック７ｂとの間ではデータの受け渡し（不図示）が行われるため、クロックの位相が揃うように機能ブロック７ａ及び機能ブロック７ｂへとクロックが供給される。このように、位相が揃ったクロックが供給される機能ブロック７ａ及び機能ブロック７ｂは、本明細書においては同期グループ１１としてグルーピングされる。同様に、ＣＰＵ８、制御部９、及び機能ブロック７ｅは同期グループ１２としてグルーピングされ、機能ブロック７ｆは単体で同期グループ１３としてグルーピングされる。すなわち、制御部３１〜３３は、対応する同期グループ１１〜１３に所属するクロックの制御を行う。このように、同じ同期グループにグルーピングされる機能ブロックのことを、本明細書においては同期関係にある機能ブロックと呼ぶ。一実施形態において、同期関係にある複数の機能ブロックは、複数の機能ブロックの間で同期データ転送が行われるように構成されている。なお、異なる同期グループの間では、クロックに同期したデータの受け渡しは行われないため、供給されるクロックの位相が揃う必要はない。
【００３４】
また、図１に示すように、クロックを生成する生成部から機能ブロックまでの配線の長さなどに起因するクロック遅延が存在しても、クロックの位相が揃うように、生成部と機能ブロックとの間にクロックツリー４０ａ〜４０ｆを形成することができる。例えば、クロックツリー４０ａ，４０ｂは、生成部６ａ，６ｂと機能ブロック７ａ，７ｂと間の、クロックａ，ｂを運ぶ配線上に形成されている。具体的には、同じ同期グループ１１に所属している、クロックａのクロックツリー４０ａと、クロックｂのクロックツリー４０ｂと、のクロック遅延時間が等しくなるように、配線が行われ、必要に応じてＣＴＳバッファが挿入される。同期グループ１２に所属するクロックｃ〜ｅに対するクロックツリー４０ｃ〜４０ｅについても同様である。
【００３５】
ところで、制御部９はクロックｃのクロックツリー４０ｃの下流に位置する。一方で、制御部３１，３２は、クロックツリー４０ｃの上流に位置し、基準クロック１を用いて動作している。このため、制御部９と、制御部３１，３２との間には大きなクロックスキューが存在し、クロックｃと基準クロック１の位相が揃うことは保証されない。また、制御部３３は、クロックｃとはクロック系統が異なる基準クロック２を用いて動作している。このため、クロックｃと基準クロック２の位相が揃うことも保証されない。
【００３６】
［実施形態１］
本発明の実施形態１に係る情報処理装置は、同期関係にある複数の機能ブロックと、複数の生成部と、を備える。複数の生成部は、それぞれが、カウンタと、カウンタの値に基づいて基準クロックを分周する分周回路と、を有しており、複数の機能ブロックのうち対応する機能ブロックにクロックを供給する。このような構成によれば、複数の機能部へ供給されるクロックのクロック遅延のばらつきを抑えることが容易になる。以下、このような構成について説明する。
【００３７】
実施形態１に係る構成は、図１に示す情報処理装置１００を用いて、例えば複数の機能ブロック７ａ，７ｂ及び複数の生成部６ａ，６ｂを用いて実現することができる。すなわち、複数の生成部６ａ，６ｂは、同じ同期グループ１１に所属しており、同期関係にある。また、複数の生成部６ａ，６ｂのそれぞれは、カウンタ６１ａ，６１ｂと、カウンタの値に基づいて基準クロックを分周する分周回路（デコーダ６２ａ，６２ｂ、ＦＦ６３ａ，６３ｂ、及びＧＣＢ６４ａ，６４ｂ）と、を有している。そして、複数の生成部６ａ，６ｂのそれぞれは、複数の機能ブロックのうち対応する機能ブロック７ａ，７ｂにクロックを供給している。一方で、図１に示す構成の全てを用いることは必須ではない。
【００３８】
本実施形態においては、機能ブロック７ａ，７ｂが同期関係にあるにもかかわらず、機能ブロック７ａ，７ｂのそれぞれには互いに異なる生成部６ａ，６ｂにより生成されたクロックが供給される。このような構成を採用することにより、生成部６ａ，６ｂを、対応する機能ブロック７ａ，７ｂの近傍に配置することが可能になる。例えば、複数の生成部６ａ，６ｂのうち１つを、他の機能ブロックよりも、対応する機能ブロックに近くなるように配置することができる。また、複数の生成部６ａ，６ｂのうち１つから対応する機能ブロック７ａ，７ｂへとクロックを供給するクロックラインを、クロックＭＵＸ４からこの生成部６ａ，６ｂへと基準クロック１を供給するクロックラインより短くすることができる。このため、生成部６ａ，６ｂから機能ブロック７ａ，７ｂへのクロック配線を短くすることができる。さらに、基準クロック１を供給するために、機能ブロック７ａ，７ｂの近傍にまで延びる共通のクロックラインを用いることもできる。このような構成により、クロック遅延のばらつきの影響を軽減することが可能になる。そして、本実施形態の構成を採用し、クロック配線を短くすることにより、機能ブロック７ａ，７ｂの間のタイミング収束が容易になる。
【００３９】
このような構成における、本実施形態に係る情報処理装置を実現するＬＳＩの物理レイアウト例を図２に示す。図２に示すように、同期グループ１１に所属する各処理部が物理的にまとまるように配置することができる。すなわち、図２において、同期グループ１１に所属する機能ブロック７ａ及び機能ブロック７ｂは、同期グループ１１のエリア内に隣接して配置されている。また、機能ブロック７ａにクロックを供給する生成部６ａは機能ブロック７ａの近傍に配置され、同様に生成部６ｂは機能ブロック７ｂの近傍に配置されている。
【００４０】
一実施形態において、クロックＭＵＸ４から複数の生成部６ａ，６ｂのそれぞれへと基準クロック１を供給するクロックラインは、複数の生成部６ａ，６ｂの近傍において互いに分岐している。例えば図２において、基準クロック１は、生成部６ａ及び生成部６ｂの近傍にある分岐点８１において分岐した配線を通ってそれぞれに分配される。具体例として、分岐点８１から生成部６ａまで、及び分岐点８１から生成部６ｂまでのクロックラインは、それぞれ、基準クロック１を供給する処理部（例えばクロックＭＵＸ４）から分岐点８１までのクロックラインより短くてもよい。また、図２のように、機能ブロック７ａ，７ｂとは異なるさらなる機能ブロック７ｅに向けて基準クロック１を供給するクロックラインが、分岐点８４において、複数の生成部６ａ，６ｂへと基準クロック１を供給するクロックラインと分岐していてもよい。そして、クロックＭＵＸ４から複数の生成部６ａ，６ｂのそれぞれへと基準クロック１を供給するクロックラインは、分岐点８４よりも下流にある分岐点８１において互いに分岐していてもよい。このような構成によれば、機能ブロック７ａ，７ｂに供給されるクロックのための分岐後のクロック配線が短くなるため、機能ブロック７ａ，７ｂの間のタイミング収束が容易になる。
【００４１】
一実施形態において、制御部３１が、同期グループ１１に所属する機能ブロック７ａ，７ｂに供給されるクロックの制御を行ってもよい。具体的には、制御部３１は、複数の生成部６ａ，６ｂによるクロック生成を制御することができる。ここで、１つの制御部３１が、複数の生成部６ａ，６ｂを制御してもよい。このような構成によれば、機能ブロック７ａ，７ｂに供給されるクロックａ，ｂの制御を同期させることが容易になる。この場合、制御部３１を、同期グループ１１のエリア内に、すなわち機能ブロック７ａ及び機能ブロック７ｂの近傍に配置することができる。制御部３１が、複数の生成部６ａ，６ｂと共通の基準クロック１を用いて動作してもよい。例えば、基準クロック１は、制御部３１の近傍において分岐した配線、例えば上述の分岐点８１において分岐した配線を通って、制御部３１に分配されてもよい。このような構成によれば、制御部３１と、生成部６ａ，６ｂとの間のタイミング収束性が向上する。
【００４２】
同様に、同期グループ１２に所属するＣＰＵ８、制御部９、及び機能ブロック７ｅ、これらにクロックを供給する生成部６ｃ〜６ｅ、並びに生成部６ｃ〜６ｅを制御する制御部３２を、物理的にまとまるように配置してもよい。同期グループ１３についても同様である。
【００４３】
以下、実施形態１において図１に示す情報処理装置１００を用いる場合の、生成部６ａ，６ｂの動作について、図３，４を参照して説明する。図３は、生成部６ａ及び生成部６ｂが行うクロック周波数の切り替え動作を示すタイミングチャートである。
【００４４】
以下の例において、複数の生成部６ａ，６ｂのそれぞれが有するカウンタ６１ａ，６１ｂは、同期して動作するように構成されている。例えば、カウンタ６１ａ，６１ｂのカウンタ値は、同じタイミングでインクリメントすることができる。図１の例においては、複数の生成部６ａ，６ｂのそれぞれが有するカウンタ６１ａ，６１ｂのビット幅は同じである。ここで、カウンタのビット幅とは、カウンタ値のビット数のことを指し、カウント値の最大値に対応してもよい。また、複数の生成部６ａ，６ｂのそれぞれが有するカウンタ６１ａ，６１ｂは、同時にラップアラウンドしてもよい（すなわち、同時にカウント値が０に戻ってもよい）。さらに、複数の生成部６ａ，６ｂのそれぞれが有するカウンタ６１ａ，６１ｂは、同じカウンタ値を示すように構成されていてもよい。このような構成によれば、機能ブロック７ａ，７ｂに供給されるクロックａ，ｂを同期させることが容易になる。ここでは、生成部６ａ，６ｂが有するカウンタ６１ａ，６１ｂは、ともに４ｂｉｔカウンタであり、最大で１５までカウント可能とする。
【００４５】
また、以下の例においては、機能ブロック７ａ，７ｂが有する回路の特性などの理由により、クロックａの周波数とクロックｂの周波数との間には、常に以下の周波数関係を守らなければならない制約があるとする。
クロックａの周波数  ＞  クロックｂの周波数
【００４６】
時刻Ｔ０において情報処理装置１００はリセット状態にあり、カウンタ６１ａ，６１ｂは停止しており、そのカウンタ値はともに０である。クロックのオン又はオフを表す設定値５０ａ，５０ｂは、クロックを出力する側に設定されている。また、ＦＦ６３ａ，６３ｂの初期値はＬｏｗであり、出力クロックは停止している。
【００４７】
さらに、内部設定値（以下、単に内部設定値と呼ぶ）の初期値は、ともに２’ｂ００である。ここで、内部設定値とは制御部３１が出力したクロック周波数設定値５１ａ，５１ｂを、デコーダ６２ａ，６２ｂがラッチすることにより得られた値である。デコーダ６２ａ，６２ｂは、カウンタ６１ａ，６１ｂのカウント値が１５から０にラップアラウンドするタイミングで、設定値５１ａ，５１ｂをラッチする。生成部６ａの内部設定値は、２’ｂ００が１分周を、２’ｂ０１が２分周を、２’ｂ１０が４分周を、２’ｂ１１が８分周を、それぞれ示すものとする。一方で生成部６ｂの内部設定値は、２’ｂ００が２分周を、２’ｂ０１が４分周を、２’ｂ１０が８分周を、２’ｂ１１が１６分周を、それぞれ示すものとする。したがって、初期状態において、クロックａは基準クロック１の１分周に、クロックｂは基準クロック１の２分周に、それぞれ設定されている。なお、クロック周波数設定値は２ｂｉｔの信号に限られない。また、内部設定値と分周比との関係も、上記の例には限られず、任意に定義することができる。
【００４８】
時刻Ｔ１においてリセットが解除される。時刻Ｔ２において、カウンタ６１ａ，６１ｂは同時にカウントアップを開始する。また、ＦＦ６３ａ，６３ｂはデコーダ６２ａ，６２ｂの出力値をそれぞれラッチし、Ｈｉｇｈになる。
【００４９】
時刻Ｔ３において、ＦＦ６３ａ，６３ｂの出力がＨｉｇｈであるため、ＧＣＢ６４ａ，６４ｂはクロックの出力を開始する。また、デコーダ６２ａは、１分周を示す内部設定値に従って、常にＨｉｇｈを出力する。一方で、デコーダ６２ｂは、２分周を示す内部設定値に従って、２サイクルに１サイクルＨｉｇｈ期間を形成するように、Ｈｉｇｈ及びＬｏｗを繰り返す信号を出力する。この結果、２サイクルに１サイクルのパルスが間引かれ、２分周が実現される。時刻Ｔ４〜Ｔ８でも同様の動作が行われる。
【００５０】
一方で時刻Ｔ７において、制御部３１に入力される設定値５１ａ，５１ｂが、ともに２’ｂ００から２’ｂ０１に切り替えられる。この切り替えは、例えば、ＣＰＵ８が制御部９のレジスタを書き換え、制御部９がレジスタ内の設定値を制御部３１に転送することにより行われてもよい。もっとも、実施形態１における設定値の切り替え方法は特に限定されない。
【００５１】
カウンタ６１ａ，６１ｂのカウント値は、時刻Ｔ８においてともに最大カウント値である１５にカウントアップし、時刻Ｔ９においてともに０にラップアラウンドする。内部設定値は、カウンタ６１ａ，６１ｂがラップアラウンドすると同時に、２’ｂ００から２’ｂ０１に切り替わる。このため、生成部６ａが出力するクロック周波数は１分周から２分周に、生成部６ｂが出力するクロック周波数は２分周から４分周に、それぞれ変更される。すなわち、時刻Ｔ９から、デコーダ６２ａは２サイクルに１サイクルの周期でＨｉｇｈ及びＬｏｗを繰り返す信号を出力し、時刻Ｔ１０でＦＦ６３ａが信号をラッチした後、時刻Ｔ１１から生成部６ａは２分周クロックを出力開始する。また、時刻Ｔ９から、デコーダ６２ｂは４サイクル中１サイクルのみＨｉｇｈになる信号を出力し、時刻Ｔ１１から生成部６ｂは４分周クロックを出力開始する。
【００５２】
このような構成によれば、生成部６ａ，生成部６ｂのカウンタ６１ａ，６１ｂが同期して同じように動作するため、クロック周波数の切り替えタイミングを同時にすることができる。したがって、上記のようなクロック周波数の周波数関係の制約を守りながらクロック制御を行うことができる。もっとも、同期関係にある複数の機能ブロックにクロックを供給する際に、同じタイミングでクロック周波数を変更することは必須ではない。
【００５３】
図４は、生成部６ａが行うクロック周波数のオンオフ動作を示すタイミングチャートである。なお、生成部６ｂ、及びその他の生成部６ｃ〜６ｆも、生成部６ａと同様に動作することができる。
【００５４】
時刻Ｔ０において情報処理装置１００はリセットが解除された状態にある。ここで、生成部６ａの内部設定値は２’ｂ００を示しており、すなわち生成部６ａは基準クロック１を１分周したクロックを出力するように設定されている。しかしながら、制御部３１が出力する、クロックのオン又はオフを表す設定値５０ａはＬｏｗを示しているため、生成部６ａからの出力クロックであるクロックａは停止している。ここで、設定値５０ａはＨｉｇｈアクティブ信号であり、すなわちＨｉｇｈはクロックオンを、Ｌｏｗはクロックオフを、それぞれ表す。
【００５５】
時刻Ｔ３において制御部３１は、設定値５０ａをＨｉｇｈに遷移させる。時刻Ｔ４において、設定値５０ａがＨｉｇｈであるため、ＧＣＢ６４ａはクロックａの出力を開始する。時刻Ｔ１０において制御部３１は、設定値５０ａをＬｏｗに遷移させる。したがって、時刻Ｔ１１においてクロックａは停止する。なお、設定値５０ａの切り替えは、設定値５１ａと同様に行うことができる。なお、クロックａが停止している間も、カウンタ６１ａはカウント動作を継続することができる。
【００５６】
なお、上記の例のように、生成部６ａが生成するクロックの最大分周比と、生成部６ｂが生成するクロックの最大分周比とは異なっていてもよい。一方、生成部６ａの最大分周比は８分周であり、８分周クロックを出力するには、３ｂｉｔ幅のカウンタ（最大カウント値７）を用いれば十分である。そして、生成部６ｂの最大分周比は１６分周であり、１６分周クロックを出力するために４ｂｉｔ幅カウンタ（最大カウント値１５）が用いられる。上記の例においては、生成部６ａのカウンタ６１ａのカウンタ幅は、生成部６ｂのカウンタ６１ｂと同じカウンタ幅となるように、必要な３ｂｉｔ幅よりも大きい４ｂｉｔ幅である。このように、カウンタ６１ａ，６１ｂのカウンタ幅を揃え、同時にラップアラウンドさせるという簡単な構成により、カウンタ６１ａ，６１ｂの挙動を常に同じにすることができる。このため、上記の例によれば、容易にクロック周波数の切り替えを同時に行うことができる。もっとも、別の例において、生成部６ａの制御と生成部６ｂの制御とを独立に行ってもよい。
【００５７】
上記の例においては、クロックを分周するための分周方法として、パルスを間引く歯抜け方式が用いられたが、使用可能な分周方式は特定の方式に限定されない。例えば、分周方法として、生成部有するダウンカウンタの各ｂｉｔのＱ出力を分周クロックとして用いる方式（分周方式とも呼ばれる）を採用してもよい。この場合、例えばカウンタの１桁目のｂｉｔのＱ出力は周波数が１／２になり、２桁目のｂｉｔのＱ出力は周波数が１／４になる。この場合、生成部が有するデコーダの代わりに、ダウンカウンタの各ｂｉｔの分周クロックから１つを選択するＭＵＸを用いることができる。分周方式を用いる場合、生成部により生成されたクロックのパルス幅は、分周比に比例して大きくなる。例えば、２分周ではパルス幅が基準クロックの２倍になり、４分周ではパルス幅が基準クロックの４倍になる。実施形態１の構成によれば、様々な分周方法を適用可能である。
【００５８】
上記の例では、基準クロックがリセット中とリセット解除後で同じ一定の周波数である場合について説明した。一方で、一実施形態において、リセット部２０は、クロックＭＵＸ４が低速クロックを基準クロック１として供給している間に、複数の生成部６ａ，６ｂのそれぞれが備える初期化されたカウンタ６１ａ，６１ｂの動作を開始させることができる。そして、リセット部２０は、カウンタ６１ａ，６１ｂの動作の開始後に、高速クロックを基準クロック１としてとして供給することができる。このように、リセット解除後に、クロックＭＵＸ４を用いて基準クロック１を低速クロックから高速クロックに切り替えてもよい。このような構成によれば、カウンタ６１ａ，６１ｂの動作を同期させるためのタイミング設計がより容易になる。基準クロックを高速クロックに切り替えた場合、１サイクルの期間は低速クロックの場合よりも短くなるが、各信号の挙動に変わりはない。
【００５９】
上記の例では、リセット解除後にカウンタが常にカウントアップを続け、カウンタ６１ａ，６１ｂのカウント値は同期し続けることを前提としていた。しかしながら、宇宙線のような外的要因のために、カウンタ値の同期が崩れる可能性がある。このような事象に対照するために、一実施形態に係る情報処理装置は、複数の生成部６ａ，６ｂのそれぞれが備えるカウンタ間（６１ａ，６１ｂ）の同期のずれを検出するための構成をさらに有していてもよい。この場合、同期のずれを検出したことに応じて、リセット部２０は複数の生成部６ａ，６ｂのそれぞれが備えるカウンタ６１ａ，６１ｂのカウンタ値を初期化することができる。
【００６０】
このような構成の一例として、カウンタ６１ａ，６１ｂは、カウンタ値が１ずつインクリメントしているかどうかを確認するチェック回路を有していてもよい。チェック回路が異常、すなわちカウンタ値が１ずつインクリメントしていないことを検出した場合、カウンタ値は異常をリセット部２０に通知することができる。この場合、リセット部２０は、通知を発したカウンタと同じ同期グループに対するクロックを生成する全ての生成部に対して、供給する基準クロックをオシレータ１が発振した低速クロックに切り替え、及びリセットを行うことができる。このような構成によれば、同じ同期グループに対するクロックを生成する全ての生成部のカウンタを初期化し、同時に０からカウントアップさせることができ、すなわちカウンタ値を同期させることができる。
【００６１】
［実施形態２］
本発明の実施形態２に係る情報処理装置は、複数の生成部と、第１の制御部と、第２の制御部と、を備える。複数の生成部は、それぞれ、複数の機能ブロックのうち対応する機能ブロックに供給するクロックを生成する。第１の制御部は、複数の生成部のうちの第１のグループによるクロック生成を制御し、第１のグループと共通のクロックを用いて動作する。また、第２の制御部は、複数の機能ブロックのうち１つであり、第１のグループによるクロック生成の制御情報を第１の制御部に非同期転送する。このような構成によれば、第２の制御部が生成部を制御するためのタイミング設計が容易になる。以下、このような構成について説明する。
【００６２】
実施形態２に係る構成は、図１に示す情報処理装置１００を用いて、例えば複数の生成部６ａ，６ｂ、制御部３１、及び制御部９を用いて実現することができる。すなわち、複数の生成部６ａ，６ｂは、それぞれ、複数の機能ブロックのうち対応する機能ブロック７ａ，７ｂに供給するクロックを生成する。制御部３１は、複数の生成部のうちの第１のグループを構成する生成部６ａ，６ｂによるクロック生成を制御し、第１の生成部を構成する生成部６ａ，６ｂと共通のクロックを用いて動作する。この第１のグループを構成する生成部６ａ，６ｂは、生成したクロックを、互いに同期関係にある複数の機能ブロック７ａ，７ｂに供給してもよい。制御部９は、複数の機能ブロックのうち１つであり、第１のグループを構成する生成部６ａ，６ｂによるクロック生成の制御情報を制御部３１に非同期転送する。図１の例において、制御部３２によってクロック生成を制御される生成部の第２のグループ（生成部６ｃ〜６ｅ）は、生成したクロックを制御部９に供給している。ここで、第２のグループは、第１のグループと共通の基準クロック１を用いて動作している。一方で、図１に示す構成の全てを用いることは必須ではない。また、実施形態２に係る情報処理装置は、実施形態１に係る情報処理装置の構成を有していてもよい一方で、実施形態１とは別の情報処理装置であってもよい。
【００６３】
本実施形態において、制御部９は、非同期データ転送用のインターフェースであるＩ／Ｆ３４を介して、制御部３１と接続されている。制御部９は、Ｉ／Ｆ３４を介して、制御部３１へと、クロック生成の制御情報を非同期転送することができる。この制御情報は、生成部が生成するクロック周波数情報と、生成部が生成するクロックのオン又はオフを制御する情報と、の少なくとも一方を含んでいてもよい。例えば、制御部９は、生成部６ａ，６ｂによるクロック生成の制御情報として、生成部６ａ，６ｂに対するクロック周波数の設定値５１ａ，ｂと、クロックのオン又はオフを示す設定値５０ａ，ｂとを転送することができる。
【００６４】
同様に、一実施形態に係る情報処理装置は、複数の生成部のうちの１以上の生成部で構成される第２のグループ（生成部６ｃ〜６ｅ）によるクロック生成を制御し、第２のグループと共通のクロックを用いて動作する、制御部３２を有していてもよい。制御部９は、第２のグループによるクロック生成の制御情報を制御部３２に非同期転送することができる。図１の例において制御部９は、非同期データ転送用のインターフェースであるＩ／Ｆ３５，３６を介して、制御部３２，３３と接続されている。この場合、制御部９は、生成部６ｃ〜６ｅに対する設定値を制御部３２に、生成部６ｆに対する設定値を制御部３３に、それぞれ非同期転送することができる。
【００６５】
図５を参照して、非同期転送を行うための、制御部９及び制御部３１の構成の一例について説明する。図５は、制御部９及び制御部３１の構成の一例を示すブロック図である。制御部９は、転送制御部９１及びレジスタ９２を有している。レジスタ９２は、同期グループ１１についてのクロック生成の制御情報を格納する。制御部９は、同様に、同期グループ１２，１３についてのクロック生成の制御情報を格納するレジスタ９３，９４を有していてもよい。レジスタ９２〜９４は、レジスタアクセスのためのアドレス空間がそれぞれ異なっており、排他的に読み書き可能である。このレジスタ９２〜９４内の制御情報は、複数の機能ブロックのうち１つにより書き換え可能である。例えば、ＣＰＵ８は、レジスタバスを介して、レジスタ９２〜９４に対する読み書きを行ってもよい。
【００６６】
以下では、レジスタ９２に対する書き込みが行われた場合について説明するが、レジスタ９３，９４に書き込みが行われた場合も同様の動作を行うことができる。また、以下の例においては、制御部９と制御部３１とがバスで接続され、制御部９がバスを介して制御情報を制御部３１に転送する場合について説明する。
【００６７】
図５に示す例において制御部９と制御部３１との間のレジスタアクセスは、アドレス信号とデータ信号とを用いるバスプロトコルを用いて行われる。また、図５において、制御部９と制御部３１とは、さらに、制御情報の転送を制御する信号線（ｒｅｑ，ａｃｋ）で接続されている。
【００６８】
転送制御部９１は、レジスタへの書き込みが発生すると、レジスタアクセスのアドレスに基づいて、どの同期グループについてのレジスタに書き込みが発生したかを判断し、対応する制御部に対する非同期データ転送を開始する。まず、制御部９は、制御情報の取得を要求する信号を制御部３１に送る。図５の例において、転送制御部９１は、例えば同期グループ１１用のレジスタ９２に書き込みが発生したと判断した場合、制御部３１とのＩ／Ｆ３４へのリクエスト信号（ｒｅｑ）をアサートする。一方、転送制御部９１は、Ｉ／Ｆ３４へのデータ信号（ｄａｔａ）として、レジスタ９２のレジスタ値を出力する。
【００６９】
制御部３１は、メタスタビリティ対策のための、ＦＦ３１３及びＦＦ３１４を備える２段ＦＦシンクロナイザ３１２を用いて、入力されたｒｅｑを同期化する。また、制御部３１は、同期化されたｒｅｑを示すＦＦ３１４のＱ出力と、ＦＦ３１５のＱ出力の反転との論理積３１７であるパルスを生成する。そして、生成されたパルスに従って、レジスタ３１１はＩ／Ｆ３４のｄａｔａをラッチする。その後、制御部３１は、制御情報を取得したことを通知する信号を制御部９に送る。図５の例において、制御部３１は、ＦＦ３１４のＱ出力を、ＦＦ３１５及びＦＦ３１６を介して、Ｉ／Ｆ３４への応答信号（ａｃｋ）としてループバックする。
【００７０】
制御部９は、２段ＦＦシンクロナイザ９５を用いて、Ｉ／Ｆ３４から入力されたａｃｋを同期化する。同期化後のａｃｋは転送制御部９１に入力される。転送制御部９１は、同期化後のａｃｋのアサートに従ってｒｅｑをデアサートする。最終的にａｃｋもデアサートされ、こうして非同期データ転送が完了する。非同期データ転送の詳細動作例については、図７のタイミングチャートを参照して後述する。
【００７１】
制御部３１は、レジスタ３１１によりラッチされたデータ信号を、生成部６ａ，６ｂに対する設定値（例えばクロック周波数の設定値５０ａ，５０ｂ及びクロックのオン又はオフを示す設定値５１ａ，５１ｂ）として、生成部６ａ，６ｂに出力する。ここで説明する例において、制御部３１は、第１のグループに含まれる１以上の生成部６ａ，６ｂのそれぞれに対し、制御情報（例えば上記の設定値５０ａ，５０ｂ，５１ａ，５１ｂ）を同期転送する。また、制御部３１は、第１のグループに含まれる１以上の生成部６ａ，７ｂのそれぞれに対し、制御情報を同じタイミングで出力することができる。
【００７２】
制御部３２，３３も、制御部３１と同様の非同期データ転送のための構成を持つことができ、レジスタ９３，９４のレジスタ値をラッチすることができる。このように、転送制御部９１が全てのＩ／Ｆ３４〜３６の制御を集中して担ってもよい。
【００７３】
図７のタイミングチャートを参照して、クロックａの周波数の設定値の受け渡しについて説明する。なお、クロックｂの周波数の設定値も同様に転送することができる。以下の説明において、制御部９はクロックｃに同期して動作し、クロックｃは基準クロック１の２分周である。基準クロック１に対してクロックｃはＣＴＳ下流に位置し、時刻Ｔ０の基準クロック１に従って生成されたパルスは、ＣＴＳのクロック遅延により、制御部９に到達した際に時刻Ｔ２’にまで遅延している。このクロック遅延差のために、クロックｃと基準クロック１の位相の同期を保証することは容易ではない。
【００７４】
時刻Ｔ０において、クロックａの周波数の設定値は２’ｂ００（１分周）である。この設定値は、Ｉ／Ｆ３４を介してｄａｔａとして制御部３１に入力されたものである。時刻Ｔ’４において、制御部９のレジスタ９２への書き込みにより、レジスタ９２が保持するクロックａの周波数の設定値が２’ｂ００から２’ｂ０１（２分周）に変更される。同時に転送制御部９１は、Ｉ／Ｆ３４のｒｅｑをアサートする。ここで、ｒｅｑ及びａｃｋはＨｉｇｈアクティブ信号であり、アサートはＨｉｇｈを意味するものとする。
【００７５】
時刻Ｔ４’においてアサートされたｒｅｑは、時刻Ｔ５において制御部３１のＦＦ３１３でラッチされる。しかしながら、送信クロックであるクロックｃと受信クロックである基準クロック１の位相は同期していないかもしれない。このため、時刻Ｔ５においてメタスタビリティが発生するかもしれない。しかしながら、この例においては、２段ＦＦシンクロナイザ３１２が用いられるため、時刻Ｔ５で発生したメタスタビリティは時刻Ｔ６で収束し、ＦＦ３１３のＱ出力はＨｉｇｈになる。時刻Ｔ７で、このＨｉｇｈがＦＦ３１３からＦＦ３１４に伝搬する。すると、ＦＦ３１５のＱ出力の反転とＦＦ３１４のＱ出力との論理積３１７がＨｉｇｈになる。時刻Ｔ８において論理積３１７がＨｉｇｈであるため、ＭＵＸ３１８は１番にアサインされているｄａｔａを選択し、このためｄａｔａがレジスタ３１１にラッチされる。
【００７６】
時刻Ｔ８においてレジスタ３１１にラッチされたｄａｔａに従うクロック周波数の設定値５１ａは、データ遅延のために時刻Ｔ８’において生成部６ａに到達する。この設定値５１ａは、最短で、基準クロック１が立ち上がる時刻Ｔ９において、デコーダ６２ａによってラッチされることができる。このタイミングパスは、基準クロック１の１サイクルでデータを受け渡すパスであるものとして、タイミング設計を行うことができる。
【００７７】
時刻Ｔ９において、制御部３１はＩ／Ｆ３４のａｃｋをアサートする。ａｃｋのアサートを受信した転送制御部９１は、時刻Ｔ１２’においてｒｅｑをデアサートする。時刻Ｔ１３においては、時刻Ｔ５と同様にメタスタビリティが発生するかもしれないが、時刻Ｔ１４においてメタスタビリティは収束し、ＦＦ３１３のＱ出力はＬｏｗになる。以後、時刻Ｔ１７にかけてａｃｋにＬｏｗが伝搬し、非同期データ転送が完了する。
【００７８】
このように上記の例においては、ＣＴＳ下流にある制御部９から、ＣＴＳ上流の基準クロック１で動作する制御部３１へとクロック生成の制御情報（例えばクロック周波数の設定値及びクロックのオン又はオフの設定値）を非同期データ転送することができる。このため、ＣＴＳ下流にある制御部９からＣＴＳ上流にある制御部３１へのタイミングパスを分断することができる。一実施形態において、第１のグループに含まれる１以上の生成部６ａ，６ｂ及び制御部３１は、制御部９よりもクロックツリーの上流のクロック（クロックツリーの対象外のクロックを含む）を用いて動作する。このように、制御部９の動作クロックと、生成部６ａ，６ｂの動作クロックとが同期していなくても、本実施形態においては、制御部９から生成部６ａ，６ｂへとクロック生成の制御情報を転送することが容易になる。すなわち、本実施形態においては、共通のクロックを用いて動作する制御部３１と生成部６ａ，６ｂとの間で、設定値を同期転送できればよいため、タイミング設計が容易となる。
【００７９】
特に、実施形態１で説明したように、制御部３１を第１のグループ（生成部６ａ，６ｂ）の近傍に配置することにより、制御部３１から生成部６ａ，６ｂへのデータ遅延を低減することができる。例えば、制御部３１を、他の生成部６ｃ〜６ｆのいずれよりも、生成部６ａ，６ｂに近くなるように配置することができる。このような構成によれば、基準クロック１の１サイクルで制御部３１から生成部６ａ，６ｂへとクロック生成の制御情報を受け渡すように、タイミング設計を行うことが容易となる。
【００８０】
なお、制御部９はどの同期グループに含まれていてもよい。例えば、制御部９が同期グループ１１に含まれる機能ブロックの１つであってもよい。この場合、生成部の第１のグループ（生成部６ａ，６ｂ）は、生成したクロックを、制御部９に供給することができる。また、制御部９が同期グループ１３に含まれる機能ブロックの１つであってもよい。この場合、制御部３３によってクロック生成を制御される、生成部の第３のグループ（生成部６ｆ）は、生成したクロックを制御部９に供給することができ、ここで、第３のグループは第１のグループとは異なる基準クロック２を用いて動作している。このように制御部３１と制御部９とが異なる基準クロックを用いて動作している場合であっても、タイミングパスを分断することにより、制御情報を受け渡すためのタイミング設計が容易になる。
【００８１】
また、実施形態１で説明したように、生成部６ａ，６ｂが生成するクロック周波数に周波数関係の制約が存在する場合に、周波数関係の不整合が起こらないように、生成部６ａ，６ｂが生成するクロック周波数を同時に変更する必要があるかもしれない。このように、クロック周波数を同時に変更するためにも、本実施形態の構成は有効である。例えば、一実施形態においては、一度のレジスタ書き込みにより、クロックａとクロックｂの双方についての周波数の設定値が変更される。このような構成を実現できるレジスタフィールドの例について、図６を参照して説明する。
【００８２】
図６は、レジスタ９２を表す。レジスタ９２の読み書きは４ｂｙｔｅ単位で実行するものとする。すなわち、図６において、０ｂｉｔ目〜３１ｂｉｔ目の読み書きは同時に可能である。ｓｅｌ  ａは、０ｂｉｔ目〜１ｂｉｔ目にアサインされている、クロックａの周波数の設定値である。また、ｓｅｌ  ｂは、２ｂｉｔ目〜３ｂｉｔ目にアサインされている、クロックｂの周波数の設定値である。４ｂｉｔ目〜３１ｂｉｔ目のＲｅｓｅｒｖｅｄは未使用領域である。
【００８３】
このような実施形態において、クロックａ及びクロックｂの周波数を変更する場合、ｓｅｌ  ａとｓｅｌ  ｂの書き換えを同時に行う。この場合、レジスタ９２がＩ／Ｆ３４を介して出力するｄａｔａによって示される、クロックａ及びクロックｂの周波数の設定値は、同時に変化する。したがって、レジスタ３１１が格納しているデータ信号にも、クロックａ及びクロックｂの周波数の設定値の変更が同時に反映される。このため、レジスタ３１１が出力するクロック周波数の設定値５１ａ，５１ｂも同時に変更される。このように、クロックａ及びクロックｂの周波数を同時に変更することができる。設定値に応じてクロック周波数を変更するための構成は特に限定されないが、例えば、実施形態１と同様の構成を採用することにより、設定値５１ａ，５１ｂを同時に変更することで、クロックａ及びクロックｂの周波数を同時に変更することができる。
【００８４】
実施形態２においては、主にクロックの周波数の設定値を変更する場合について説明したが、同様にクロックのオン又はオフの設定値を変更することもできる。
【００８５】
本実施形態では、ＣＰＵ８がレジスタバスを介して制御部９のレジスタを書き換え、制御部９から制御部３１に対してクロック生成の制御情報を非同期転送した。一方で、ＣＰＵ８が、直接、制御部３１に対してクロック生成の制御情報を非同期転送してもよい。上記のとおり、制御部３１は同期グループ毎に設けることができる。例えば、ＣＰＵ８は、非同期バス転送が可能なレジスタバスを介して制御部３１に設けられたレジスタを書き換えることにより、クロック生成の制御情報を制御部３１に非同期転送することができる。
［その他の実施形態］
【００８６】
図１では、機能ブロックと１対１の関係となるように生成部６ａ〜６ｆが設けられたが、本発明はこのような構成には限定されない。すなわち、１つの生成部が、２以上の機能ブロックに対してクロックを供給してもよい。この場合、機能ブロックのレイアウトに鑑み、生成部と機能ブロックと間のチップトップ階層上のクロック配線の遅延ばらつきがタイミング設計に影響を与えないように、複数の機能ブロックに供給するクロックを生成する生成部を設けることができる。
【００８７】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００８８】
６ａ，６ｂ：生成部、７ａ，７ｂ：機能ブロック、８：ＣＰＵ、９：制御部、３１：制御部、６１ａ，６１ｂ：カウンタ
【図１】
2020177538.tif 000003
【図２】
2020177538.tif 000004
【図３】
2020177538.tif 000005
【図４】
2020177538.tif 000006
【図５】
2020177538.tif 000007
【図６】
2020177538.tif 000008
【図７】
2020177538.tif 000009