(57)【特許請求の範囲】
【請求項１】
異なる平均クロック周波数を要求するデータ処理モジュール（２、４、６）をクロック制御し、かつ、前記モジュール間においてデータを転送するための方法であって、
共通クロック信号を各データ処理モジュールに関連付けられた各クロックゲーティング回路に供給する段階と、
前記共通クロック信号から前記関連付けられたクロックゲーティング回路（２２、２５）に供給されるクロックパルスを、各データ処理モジュールにより要求されるクロッキング周波数の一つに従って削除する段階と、
データが転送されるべきデータ処理モジュール間においてハンドシェイク動作を実行する段階と、
データ転送が実行されるべき時に、データが転送されるべき前記データ処理モジュールにクロックパルスを適用する段階と、
データが転送されるべき前記データ処理モジュールに適用されたクロックパルスに適切なパターンが存在する場合においてのみ、データ転送が生じるように、前記ハンドシェイク動作を制御する段階と、を含むことを特徴とする方法。
【請求項２】
クロックパルスを適用する前記段階が、
データを転送する準備ができていることを示す第１のデータ処理モジュールからの信号を供給する段階と、
前記第１のデータ処理モジュールからの前記信号に応答して前記データを受信するために、前記クロックパルスを前記第１のデータ処理モジュール及び第２のデータ処理モジュールに適用する段階と、
を含む、請求項１に記載の方法。
【請求項３】
前記クロックパルスを前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用する段階が、前記削除する段階を制御して、クロックパルスが前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに対して同期して供給されるようにすること、を含む、請求項２に記載の方法。
【請求項４】
前記クロックパルスを適用する段階が、前記削除する段階を阻止することによって、該削除する段階が阻止されている間、すべてのクロックパルスが前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに渡されるようにすること、を含む、請求項３に記載の方法。
【請求項５】
前記ハンドシェイク動作が、
データを転送する準備ができていることを示す第１のデータ処理モジュールからの第１の信号、及び、データを受信することができることを示す第２のデータ処理モジュールからの第２の信号を供給することと、
前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用される適切なクロック信号に応答して、当該ハンドシェイク動作において、前記第２のデータ処理モジュールに前記第１の信号を渡し、前記第１のデータ処理モジュールに前記第２の信号を渡すことと、
を含む、請求項１に記載の方法。
【請求項６】
前記クロック信号が、前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールについてのそれぞれのクロックゲーティング回路に適用される同時クロックゲーティング制御信号に応答して、前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用される、請求項５に記載の方法。
【請求項７】
前記クロックゲーティング回路が前記削除する段階を実行する、請求項６に記載の方法。
【請求項８】
異なる平均クロック周波数を要求するデータ処理モジュール（４、６）をクロック制御し、かつ、前記データ処理モジュール間においてデータを転送するための装置であって、  共通クロック信号を各データ処理モジュールに関連付けられた各クロックゲーティング回路に供給する手段と、
前記クロックゲーティング回路に供給される前記共通クロック信号から、クロックパルスを、前記データ処理モジュールの各々により要求されるクロッキング周波数に従って削除するように構成された、クロックゲーティング回路（２２、２５）と、
データ転送が実行されるべき時に、データが転送されるべき前記データ処理モジュールにクロックパルスを適用する手段と、
データが転送されるデータ処理モジュール間においてハンドシェイク動作を実行する手段と、
データが転送されるべき前記データ処理モジュールに適用されたクロックパルスに適切なパターンが存在する場合においてのみ、データ転送が生じるように、前記ハンドシェイク動作を制御する手段と、
を具備することを特徴とする装置。
【請求項９】
前記データ処理モジュールにクロックパルスを適用する手段が、
データを転送する準備ができていることを示す第１のデータ処理モジュールについての信号を供給する手段と、
前記第１のデータ処理モジュールからの前記信号に応答して前記データを受信するために、前記クロックパルスを前記第１のデータ処理モジュール及び第２のデータ処理モジュールに適用する手段と、
を含む、請求項８に記載の装置。
【請求項１０】
前記クロックパルスを前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用する手段が、前記削除することを制御することによって、クロックパルスが前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに対して同期して供給されるようにする、請求項９に記載の装置。
【請求項１１】
前記クロックパルスを適用する手段が、
前記削除することを阻止することによって、前記削除する手段が阻止されている間、すべてのクロックパルスが前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに渡されるようにする、請求項１０に記載の装置。
【請求項１２】
前記ハンドシェイク動作を実行する手段が、
データを転送する準備ができていることを示す第１のデータ処理モジュールからの第１の信号、及び、データを受信することができることを示す第２のデータ処理モジュールからの第２の信号を供給する手段と、
前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用される適切なクロック信号に応答して、当該ハンドシェイク動作において、前記第２のデータ処理モジュールに前記第１の信号を渡し、前記第１のデータ処理モジュールに前記第２の信号を渡す手段と、
を含む、請求項８に記載の装置。
【請求項１３】
クロック信号を前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用する手段が、
前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールについてのそれぞれのゲーティング回路に適用される同時ゲーティング制御信号に応答して、前記クロック信号を前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールに適用する、請求項１１に記載の装置。
【請求項１４】
前記削除する手段が前記クロックゲーティング回路を含む、請求項１３に記載の装置。
【請求項１５】
異なる平均クロック周波数を要求する複数のデータ処理モジュールをクロック制御し、かつ、前記データ処理モジュール間においてデータを転送するための装置であって、
前記データ処理モジュール毎のクロック削除回路ユニットとクロックゲーティングユニットであり、各クロック削除回路ユニットと各クロックゲーティングユニットが、共通のクロック信号を受信し、各クロック削除回路ユニットが、該クロック削除回路ユニットに関係する前記データ処理モジュールのクロック制御信号を受信する、クロック削除回路ユニットとクロックゲーティングユニットと、
各クロック削除制御ユニットと各クロックゲーティングユニットとの間のゲートであって、前記ゲートが、前記クロック削除制御ユニットからの出力と、データを第２のデータ処理モジュールに転送する準備が出来ている第１のデータ処理モジュールモジュールからのクロック強制信号とを受信し、前記クロック強制信号が、各ゲートの前記出力をイネーブルにし、前記クロックゲーティングユニットが、前記ゲートの出力を受信し、前記出力がイネーブルの場合に、クロックゲーティングが、前記共通クロック信号から受信されたクロック信号を対応する前記データ処理モジュールに渡す、前記ゲートと、
前記クロック強制信号が各ゲートに存在する状態で、前記第１のデータ処理モジュール及び第２のデータ処理モジュールは同期してクロックされ、前記データが前記第１のデータ処理モジュールから前記第２のデータ処理モジュールへ転送される、装置。
【請求項１６】
異なる平均クロック周波数を要求する複数のデータ処理モジュールをクロック制御し、かつ、前記データ処理モジュール間においてデータを転送するための方法であって、
前記データ処理モジュール毎のクロック削除回路ユニットとクロックゲーティングユニットに、共通クロック信号を提供する段階と、
関係する前記データ処理モジュールに対する各クロック削除制御ユニットにクロック制御信号を提供する段階と、
前記クロック削除制御ユニットからの出力と、第２のデータ処理モジュールにデータを転送する準備が出来ている第１のデータ処理モジュールからのクロック強制信号とをゲートに提供し、前記クロック強制信号が各ゲートの出力がイネーブルになるようにする段階と、そして、
前記ゲートの前記出力を前記クロックゲーティングユニットで受信し、前記出力がイネーブルになると、前記クロックゲーティングユニットが、前記共通クロック信号から受信されるクロック信号を前記関係するデータ処理モジュールに渡す段階と、を含み
各ゲートへの前記クロック信号が存在すると、前記第１のデータ処理モジール及び前記第２のデータ処理モジュールが同時にクロックされ、前記データは前記第１のデータ処理モジュールから前記第２のデータ処理モジュールへ転送される、前記方法。
【請求項１７】
異なる平均クロック周波数を要求するデータ処理モジュールをクロック制御し、かつ、前記モジュール間においてデータを転送するための装置であって、
前記データ処理モジュール毎のクロック削除回路ユニットとクロックゲーティングユニットであり、各クロック削除回路ユニットと各クロックゲーティングユニットが、共通クロック信号を受信し、各クロック削除回路ユニットが、関係する前記データ処理モジュールのクロック制御信号を受信する、クロック削除回路ユニットとクロックゲーティングユニットと、
各クロック削除制御ユニットの出力を受信する第１のゲーティング構成であって、クロック削除制御ユニットの各々から同時発生したイネーブル信号に応答して、前記第１のデータ処理モジールと第２のデータ処理モジュールの間の第２のゲーティング構成にイネーブル信号の各々を提供する第１のゲーティング構成であり、前記第２のゲーティング構成が、
前記第１のモジュールから、データを転送することが可能であることを示す有効信号を受信し、クロック削除制御ユニットが前記イネーブル信号の各々を対応するクロックゲーティングユニットに与え、クロックパルスが前記第１のデータ処理モジュール及び第２のデータ処理モジュールに渡されることを可能にする、第１ゲートと、
前記第２のデータ処理モジュールから、該第２のデータ処理モジュールがデータを受信することを示すイネーブル信号を受信し、且つ前記第１のゲーティング構成からイネーブル信号を受信して、その出力に、第２のモジュールがデータを受信することができることを示すイネーブル信号を提供する、第２のゲートを含み、
もし第１のデータ処理モジュールが第１のゲートに前記有効信号を発生し、第２のデータ処理モジュールが第２のゲートに前記イネーブル信号を発生する場合、前記有効信号及び前記イネーブル信号が、前記第１のデータ処理モジュール及び前記第２のデータ処理モジュールにそれぞれ渡され、
関係するクロック削除制御ユニットがイネーブル信号を関係するクロックゲーティングユニット提供することが可能であることを示すイネーブル信号を、前記第１ゲーティング構成が提供する時に、有効信号及びイネーブル信号がそれぞれ第１のデータ処理モジュール及び第２のデータ処理モジュールに渡されることを特徴とする装置。
【請求項１８】
異なる平均クロック周波数を要求する複数のデータ処理モジュールをクロック制御し、かつ、前記データ処理モジュール間においてデータを転送するための方法であって、
前記データ処理モジュール毎のクロックゲーティングユニットとクロック削除回路ユニットに、共通クロック信号を提供する段階と、
関係する前記データ処理モジュールに関係する各クロック削除制御ユニットに、クロック制御信号を提供する段階と、
各クロック削除制御ユニットの出力を第１のゲーティング構成により受信する段階と、 前記第１のゲーティング構成が、各クロック削除制御ユニットからのイネーブル信号の各々に同時に応答して、第１のデータ処理モジュールと第２のデータ処理モジュールとの間の第２のゲーティング構成にイネーブル信号を提供する段階と、
前記第２のゲーティング構成内の第１のゲートで、データを転送することが可能であることを示す有効信号を第１のデータ処理モジュールから受信する段階と、
クロック削除制御ユニットの各々が前記イネーブル信号の各々を関係するクロックゲーティングユニットに提供し、クロックパルスが前記第１のモジュール及び前記第２のモジュールに渡されることを可能にすることを示す、前記第１のゲーティング構成からのイネーブル信号を前記第２のゲーティング構成内の前記第１のゲートで受信する、段階と、
前記第２のゲーティング構成内の第２ゲートで、前記第２のデータ処理モジュールがデータを受信することが可能であることを示すイネーブル信号を第２のデータ処理モジュールから受信する段階と、
前記第２のゲーティング構成内の第２のゲートで、前記第１のゲーティング構成からの前記イネーブル信号を受信する段階と、
前記第２のデータ処理モジュールがデータを受信することが可能であることを示すイネーブル信号を、前記第２のゲートの出力で前記第１のデータ処理モジュールに提供する段階と、を有し、
前記第１のデータ処理モジュールが前記第１のゲートに有効信号を提供し、関係するクロック削除制御ユニットが関係するクロックゲーティングユニットにイネーブル信号を提供することを示すイネーブル信号を前記第２のデータ処理モジュールが前記第２のゲートに提供するときに、前記有効信号及び前記イネーブル信号が、それぞれ、第１及び第２のデータ処理モジュールに渡される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体デバイスのためのクロック周波数調整に関し、より具体的には、異なる速度でクロック制御される複数のモジュールに関し、最も典型的にはシステム・オン・チップ（ＳｏＣ）上に設けられた多重処理要素を含む半導体デバイスのためのクロック周波数の調整に関する。
【背景技術】
【０００２】
半導体デバイスがますます小型化するのに伴い、システム・オン・チップ・デバイスは、ますます多くの異なる処理要素を同じチップ上に統合して製造されるようになっている。これらの処理要素は、以前は、別々の半導体デバイスとして与えられていた。
【０００３】
半導体デバイスは、クロック信号に応答してその機能を実行し、このクロック信号は、デバイスへの１つ又はそれ以上の入力で供給され、分割されて、種々の処理要素に内部で分散される。異なる処理要素が同じシステムの部分を形成し、信号がそれらの間で転送される場合、共通クロックが通常用いられる。種々の処理要素が異なるクロック周波数要件を有する場合には、それらのモジュール間でデータがどのように転送されるべきかについて、いくつかの検討が必要になる。モジュールが、互いに対して整数のクロック比でクロック制御される場合、データ転送は、単純なままにしておくことができる。しかしながら、任意のクロック比が要求される場合には、より費用のかかる複雑な同期化が必要になり、これはデータ転送の際の待ち時間の増加という不利益をもたらす可能性があることが分かる。
【０００４】
典型的な例示的ＳｏＣデバイスを図１に示す。これは、複数のモジュール２、４及び６を含む。これらは、クロックによって駆動されるＳｏＣが必要とする、中央処理装置、コプロセッサ、インタフェース、調停ユニット、又はその他の回路の任意の組み合わせとすることもできる。
【０００５】
マスター・クロック信号８が、位相ロック・ループ（ＰＬＬ）１０に供給される。モジュール１は、ＰＬＬ１０からクロック１としてクロック信号を取得し、このクロッキング速度でその機能を実行する。
【０００６】
モジュール２及びモジュール３は、モジュール１に供給されるクロック１の周波数ほど高速で動作する必要はない。したがって、モジュール２へのクロック信号（クロック２）は、Ｎ除算ユニット１２を通り、モジュール３へのクロック入力（クロック３）は、Ｍ除算ユニット１４を通る。この場合、Ｎ及びＭは整数の量である。モジュール２及びモジュール３を低速でクロック制御することにより、これらのモジュールによる電力消費が最小になる。
【０００７】
Ｍ及びＮが単純な整数比に保たれ、３つクロック全てが注意深く同期されれば、モジュール間のデータ転送は、比較的単純なままにしておくことができることが理解されるであろう。例えば、モジュール１は、Ｎクロック・サイクル毎においてのみ、モジュール２への出力を更新し、モジュール２からの入力を読み取るように構成することができる。同様に、モジュール１は、Ｍクロック・サイクル毎に１回のみ、モジュール３にデータを転送し、モジュール３からの入力を読み取る。
【０００８】
Ｍ及びＮの他の比率（即ち、非整数値）を用いる場合、モジュール間のデータ転送は、より複雑になる可能性があり、先入れ先出しバッファ（ＦＩＦＯ）、又は、図１においてモジュール２とモジュール３との間に示されるような何らかの特別な同期化論理１６を挿入することが必要となり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
いくつかの処理システムは、動的に変化する処理要件を有する。したがって、、図１のような回路は、モジュール２がどのような処理も実行する前に、モジュール１を用いてかなりの量の処理を実行することができる。モジュール２が、モジュール１と同じ速度でクロック制御された場合には、プロセスの第１段階で、モジュール２による無用な電力消費がある。モジュール２がより低いクロック周波数で動作される場合には、プロセスの第２の部分は、第１の部分よりも低速で実行される。クロック速度の動的変動は、こうした状況で最適な処理速度を与えることが望ましいが、とりわけ、異なるクロック周波数で動作しているモジュール間でデータを転送する要件がある場合には、実現するのは困難である。
【課題を解決するための手段】
【００１０】
本発明の好ましい実施形態は、どのようなモジュールの実効クロック速度も微調整することができるシステムを提供する。これは、ＳｏＣ内の各モジュールに、同期されたクロック信号を供給することによって実現され、各クロック信号は同じ基本速度で流れている。モジュールのためのクロッキング速度を落とすために、クロック・ゲーティング・セルが、クロック入力ラインに設けられる。これは、明らかに低いクロック速度又は可変クロック速度を実現するために、要求されないクロック・パルスを削除するようにクロック・ゲーティング・セルを制御するクロック削除制御ユニットの制御下にある。
【００１１】
好ましくは、クロック削除制御ユニットは、設定された期間内で、どのような任意の数のクロック・パルスもマスター・クロック信号から削除して、要求された実効クロック周波数を実現するように設置することができる。さらに、クロック削除制御ユニットは、処理要素又はモジュール上で流れるアルゴリズムによる要件に応じて、実効クロック周波数を調節するように修正することができる。この制御は、レジスタ設定によるものとすることができ、場合によっては、ＳｏＣ上で稼働するソフトウェアによって修正可能であり、又は代替的には、クロック・パルスが供給されるモジュール内部で流れるアルゴリズム内で生成されたメトリックによって最適値に動的に設定することができる。
【００１２】
ＳｏＣ内の各モジュールは、それ専用のクロック削除制御ユニット及びクロック・ゲーティング・セルを有することができ、各々は、異なるクロッキング速度で稼働させることができる。転送されるデータがあるときに、クロック・パルスを送信側モジュール及び受信側モジュールに強制的に与えるか、又は、既存の２ウェイ・ハンドシェイクを利用して、適切なクロック・パルスが送信側モジュール及び受信側モジュールの両方に生じるまで、データの転送を意図的にストールするかのいずれかによって、異なるクロッキング速度で稼働するモジュール間での安全なデータ転送が行われる。これらの方法の組み合わせも用いることができる。
【図面の簡単な説明】
【００１３】
【図１】上記で参照された従来技術のシステムである。
【図２】本発明の実施形態による、クロック・ゲーティング・セル及びクロック削除制御ユニットを示す。
【図３】非ストール（有効のみ）プロトコルのタイミング波形を示す。
【図４】特有の２ウェイ・ハンドシェイク（有効−イネーブル・プロトコル）を用いるモジュール間のデータ転送のためのタイミング波形を示す。
【図５】正確なデータ転送を確保するために、クロック・パルスがモジュールに強制的に与えられた、本発明の実施形態を示す。
【図６】正確なデータ転送を確保するために、２ウェイ・ハンドシェイク・プロトコルが修正された、本発明の実施形態を示す。
【図７】実施形態で用いるためのクロッキング構成の１つの配置を示す。
【図８】図６のモジュール１とモジュール２との間での転送のための最適化されたクロッキング構成を示す。
【発明を実施するための形態】
【００１４】
ここで、本発明の実施形態が、添付の図面を参照して、一例としてより詳細に説明されるであろう。
【００１５】
本発明の好ましい実施形態において、図１のＮ除算ユニット１２及びＭ除算ユニット１４は、図２のクロック削除ユニットに置き換えられる。これは、クロックとモジュールへのクロック入力との間に配置されるクロック・ゲーティング・セル２０を含む。このクロック・ゲーティング・セル２０はまた、クロック削除制御ユニット２２からの入力を受信する。このクロック削除制御ユニット２２も、クロック・ゲーティング・セルと同じクロック入力を受信する。さらに、クロック削除制御ユニットは、当該モジュールに与えられるべき、要求されたクロッキング速度に関するデータを含む制御入力２４を受信する。制御入力２４に応答して、クロック削除制御ユニット２２は一連のパルスを生成し、これは、クロック・ゲーティング・セル２０に与えられ、これは次いで、クロック・パルスがモジュールにおいて生成されるようにする。
【００１６】
したがって、図２のクロック削除制御ユニットは、設定されたクロック周期内のマスター・クロック信号から、いずれかの任意のクロック・パルスを削除して、いずれかの任意の順序で要求される実効クロック周波数を実現するように設定することができる。さらに、制御入力２４は、モジュール上で実行されるアルゴリズムによって必要とされるように、実効クロック周波数を変更するように、いつでも修正することができる。
【００１７】
好ましい実施形態において、図１のＮ除算ユニット１２及びＭ除算ユニット１４の各々が、図２に示される形式のクロック削除ユニットに置き換えられる。実際は、図１の３つのモジュールの各々にクロック削除ユニットを設け、これにより、各々をさまざまな速度で制御できることを確実にすることが好ましく、それによって、特定の時間に処理を実行することを必要としないいずれのモジュールも、そのクロッキング・パルスをクロック削除ユニットによって除去することができる。
【００１８】
ＳｏＣが動作中であるとき、２つ又はそれ以上のモジュール間でデータを転送することが、時々に必要になるであろう。これが必要である場合は、モジュールが適切な時間にクロック制御されることを確実にする必要がある。これは、下記を含む多くの方法で実現することができる。すなわち、
１．転送する有効データがあるときには、適切な時間に、クロック・パルスを両方のモジュールに強制的に与えることによって実現するか、又は、
２．転送が両方の側で認識される場合、既存の２ウェイ・ハンドシェイク線を利用して、一方のモジュールから他方のモジュールへのデータ・フローを自然に制御することによって実現される。ハンドシェイク信号の使用は、同時クロック・パルスが両方のモジュール上に生じているときに、データだけが流れるのを可能にするように覆される。
【００１９】
例示のために本明細書で用いられる２ウェイ・ハンドシェイク・プロトコルは、「有効−イネーブル」と名づけられ、これは、同じクロック上の１つのモジュールから次のモジュールへのデータ転送を認識する。
【００２０】
異なるクロック上の転送を認識する２ウェイ・ハンドシェイク・プロトコルに対応することも可能である。これらは、データ転送のためのインタフェース・プロトコルを基にして設計された異なる特有の論理を必要とする。
【００２１】
本発明の実施形態で用いることができるモジュール間でデータを転送する２つの方法の例をここで説明する。特に、異なる実効速度でクロック制御されるモジュール間でデータを転送するための方法を示す。両方の技術は、いずれの数の実効クロック速度で実行されるいずれの数のモジュール間でも、同じＳｏＣ上で用いることができる。選択された方法についての最適な選択肢は、１ウェイ又は２ウェイのハンドシェイク・プロトコルが利用可能であるかどうかによって決まる。これはまた、選択されたインタフェースによるデータ転送の予測される特性によっても決まる。
【００２２】
第１の例は、適切なモジュール・インタフェースにおいて用いることができる、非ストール（ここでは、「有効のみ」として知られる）・プロトコルである。データ転送に用いられる信号を図３に示す。図から分かるように、クロック信号が、一番上のラインに示される。二番目のラインは、「有効」というハンドシェイク線を表し、これは、高いときに、「データ」線が転送される値を有することを示す。転送される有効データは、図３においてＤ１、Ｄ２、Ｄ３及びＤ４として示される。
【００２３】
両方のモジュールが同じクロックによって駆動される場合には、「有効のみ」プロトコルは、問題なく機能する。しかしながら、モジュールが、異なるクロック制御設定の異なる速度で駆動される場合には、有効データが消失するか、又は、有効データの単一の語が多数の語として間違って解釈される可能性がある。こうした出来事を回避するために、有効信号を取得し、それをクロック制御ユニットの各々からのクロック・ゲーティング信号と組み合わせ、転送される有効データがあるときはいつでも、クロック・パルスを各モジュールに強制的に与える。
【００２４】
具体的な実施形態が図５に示される。これは、データが転送される準備ができたときに、同時クロック・パルスが、送信側モジュール及び受信側モジュールの両方に強制的に与えられるシステムである。図５は、それぞれのクロック削除回路によって、異なる実効クロック速度でクロック制御することができる２つのモジュールを示す。２つのモジュールは、モジュール１及びモジュール２である。モジュール１は、クロック制御１を受信するクロック削除制御ユニット４２を有する。モジュール２は、その制御入力においてクロック制御２を受信するクロック削除制御ユニット４４を有する。
【００２５】
クロック削除制御ユニット４２及び４４の各々は、それぞれのＯＲゲート４８を介して、それぞれのクロック・ゲーティング・セル４６に制御信号を供給する。同じクロック信号５０が、各々のクロック削除制御ユニット４２及び４４、並びに２つのクッロック・ゲーティング・セル４６に供給される。
【００２６】
モジュール１は、データをモジュール２に転送しなくてはならない。モジュール１が、そのデータを転送する準備ができたとき、モジュール１は、モジュール２に与えられ、かつ、ＯＲゲート４８の各々の第２の入力にも適用される、有効信号５２を生成する。これには、各ＯＲゲート４８の出力を、クロック削除制御ユニットの出力にかかわりなくイネーブルにするという効果がある。
【００２７】
したがって、ＯＲゲート４８は、それぞれのクロック削除制御ユニット４２及び４４の出力の有効信号５２に応答して、イネーブル信号をそれぞれのクロック・ゲーティング回路４６に与え、それぞれのＯＲゲート４８の出力がイネーブルにされたときに、クロック信号５０が、それぞれのクロック・ゲーティング・セル４６を通るようにする。
【００２８】
高度な実装は、余分なパルスを後で削除することにより付加的なパルスを明らかにするので、全体のクロック・カウントが、ある期間にわたって必要とする速度と一致する。
【００２９】
受信側モジュールがデータ転送のストールを可能にするハンドシェイク機構が存在する場合、代替的な機構が用いられ、モジュールが異なる実効速度でクロック制御されるときに正確なデータ転送を確実にする。説明のために用いられる例示的なプロトコルは、ここでは、２ウェイ・ハンドシェイク・プロトコルである有効−イネーブル転送として知られる。プロトコルは、図４に示される。一番目のラインは、クロック信号を示す。二番目のラインは、送信側モジュールから発信される「有効」信号を示し、データ線上の値が関心あるものであり、受信側モジュールに送信されることを示す。三番目のラインは、受信側モジュールから発信される「イネーブル信号」を示し、モジュールがデータを受信する準備ができていることを示す。有効信号及びイネーブル信号の両方が高いとき、Ｄ１、Ｄ２、Ｄ３、及びＤ４として図４に示されるデータは、送信側モジュールから受信側モジュールに転送される。特別な処理を行わなければ送信側モジュール及び受信側モジュールが異なる実効クロック速度によってクロック制御された場合、このプロトコルもまた不正確なデータ転送に悩まされる。これを回避するために、ハンドシェイク信号自体を利用して、両方のモジュール上に適切なクロックがある場合、データの転送を試みるだけであることを確実にする。
【００３０】
システム・オン・チップ内のモジュール間でデータを転送するためのこの代替的な配置の具体的な実施形態を、図６を参照して示す。この形式の配置は、１つの処理要素が、データ転送を行いたいと望む別の処理要素をストールバックすることができる２ウェイ・ハンドシェイクをモジュール間で用いる。これには、送信側モジュール及び受信側モジュールの両方に適用される同時クロック・パルスが発生したときのみ、データ転送が可能であることを保証するという効果がある。
【００３１】
この配置において、モジュール１は、ＡＮＤゲート６０の出力に応答してアサートされるイネーブル入力を有する。これに対応して、モジュール２は、ＡＮＤゲート６２の出力によってアサートされる有効入力を有する。モジュール１へのイネーブル入力は、データをモジュール２に送ることを可能にし、モジュール２の有効入力は、これがモジュール１からデータを受信することを可能にする。
【００３２】
ＡＮＤゲート６０の第１の入力は、データをモジュール１から受信する準備ができている状態にあるときに、モジュール２によって生成されたイネーブル信号である。ＡＮＤゲート６２の第１の入力は、データをモジュール２に送信するのが可能であるときに生成された、モジュール１からの有効出力である。ＡＮＤゲート６０及び６２のそれぞれの第２の入力は、クロッキング回路６４によって与えられる。
【００３３】
クロッキング回路６４は、クロック入力６６を有する。このクロッキング信号は、図２を参照して説明される形式の２つのクロック・ゲーティング回路に送られる。モジュール１は、そのクロック制御入力においてクロック制御信号１を受信するクロック削除制御ユニット４２を含むクロック・ゲーティング・ユニットを有する。これの出力及びクロック信号６６は、そのクロック・ゲーティング・セル４８に供給され、これはクロック信号をモジュール１に供給する。
【００３４】
これに対応して、モジュール２に関しては、クロック削除制御ユニット４４は、その制御入力においてクロック制御信号を受信し、出力をそのクロック・ゲーティング・セル４８に供給し、次いで、クロッキング信号をモジュール２に供給する。
【００３５】
２つのクロック削除制御ユニット４２及び４４の出力は、更に別のＡＮＤゲート６８にも供給される。これの出力は、２つのＡＮＤゲート６０及び６２への第２の入力を形成する。したがって、２つのクロック制御信号により、それぞれのクロック削除制御ユニット４２及び４４がイネーブリング・パルスを各々のクロック・ゲーティング・セル４８に供給するときに、ＡＮＤゲート６８の出力がアサートされ、これにより、モジュール１がその有効出力ライン上に有効信号を生成し、モジュール２がそのイネーブル・ライン上にイネーブル信号を生成する場合、即ち、モジュール１がデータを送信する準備ができ、モジュール２もデータを受信する準備ができたときに、データがモジュール１からモジュール２に渡されることを可能にする。この場合、データは、それぞれのクロック・ゲーティング・セルによってそれぞれのクロック入力で供給されるクロック信号に応答して、モジュール１からモジュール２に送られる。
【００３６】
この配置は、クロック削除回路がそれらの間に最大数の同時クロック・パルスを有するときに最も効果的に機能し、したがって、一方のモジュールが、他方のモジュールへとの間のデータ転送を待機している間に不必要にストールされる機会が最小になる。図６の２つのクロック削除制御ユニットの間には点線が示され、これは、何らかの同期化を与え、これにより最大数の同時クロック・パルスを確実にする、２つのクロック制御入力間のリンケージを表わす。
【００３７】
本発明のこれらの実施形態においては、クロック制御信号がクロック速度の制御を必要としない場合には、一定のものに有線接続されてもよい。代替的に、プロセッサ上で実行されるソフトウェアによってクロック速度を制御できるように、クロック制御信号を接続することもできる。代替的に、クロックが制御されているモジュールによって、又は、実際に他のモジュールのクロッキング速度の制御を担う他のいずれかのモジュールによって、制御信号を動的に調整することもできる。
【００３８】
動的な制御の場合、メトリックを用いて、クロック制御されているモジュールがそのリアルタイム要件を満たす際に正確に動作しているかどうか、又は、クロッキング速度に対する何らかの調整を必要とするかどうかを表示することができる。このメトリックは、例えば、適切なＦＩＦＯ（先入れ先出しバッファ）の完全性、又は、モジュールの働きの過不足の程度についての表示を与えるように構築できる他のハードウェアを用いて、生成することができる。次に、このメトリックをフィードバックし、好適なスケーリング及びオフセットを介してクロック制御信号を直接駆動することができる。
【００３９】
複数のモジュールの各々が、いずれかの所定の期間に、最小可能数のクロック・パルスでクロック制御されることが好ましい。一般に、各モジュールがそのタスクを動作させるためにクロック制御する必要がある最小クロック周波数を計算又は推定することが可能である。クロッキングは、無活動周期及びクロッキングが動作しているシステム内のデータの流れが、これを必要とすることを示す場合には、より高い周波数でのクロッキング周期を有するように、ある期間内で制御することができる。
【００４０】
モジュール間の同時発生クロック・パルス数を最大にすることは好ましいので、データは、利用可能になる限り、待機しなければならず、場合によってはシステムの動きを鈍くするよりも、モジュール間で転送される可能性が高い。例えば、システムは、クロック１、クロック２及びクロック３によって駆動される又は共通のマスター・クロックにより駆動される３つのモジュールを有することができる。クロック１、クロック２、及びクロック３に必要な新しいクロック速度は、それぞれ１６クロック周期毎に、４、８及び３パルスであると推定することができる。このための可能な構成を、クロック１、クロック２及びクロック３に必要なクロック・パルスと共に、図７に示す。この例では、それぞれの最小クロック・サイクル数について、全てのクロック・パルスが１６周期サイクルの初めに生じ、同時発生クロック・パルス数を最大にする。
【００４１】
モジュールがデータを生成又は受信する予測される速度を考慮に入れて、クロッキング・パターンを適切に修正することも望ましい。例えば、モジュール１が、２クロック・パルス毎に平均して１語で、データをモジュール２に送る場合には、モジュール２は、受信する各語を処理するために４クロック・パルスを必要とし、図７に示すクロック・パルスの配置は適切ではない。こうした状況のために、モジュール間のＦＩＦＯバッファが、円滑なデータ・フローを維持するために必要とされる。代替的に、図８に示すように、この要件は、波形を異なった配置にすることにより排除することができる。ここでは、クロック１に与えられたクロック・パルスが広がって、モジュール２がモジュール１からデータを受信したときに、モジュール２がこのデータを処理することを可能にする。
【００４２】
図８に示すような特性をもつ波形を生成するために、クロック削除制御ユニットは、特定のサイクルが再開する前に、クロック周期の数に対応するフレーム長で構成する必要がある。また、アクティブなサイクルの数、即ち、クロック・パルスが生成されるフレーム内のクロック周期数、及び出力パルス間のクロック周期数を知ることも必要である。次いで、このことは、そのクロック・パルスを変更して、モジュール間のデータの最適なフローを確実にすることを可能にする。
【図１】
0005401453.tif 000002
【図２】
0005401453.tif 000003
【図３】
0005401453.tif 000004
【図４】
0005401453.tif 000005
【図７】
0005401453.tif 000006
【図８】
0005401453.tif 000007
【図５】
0005401453.tif 000008
【図６】
0005401453.tif 000009