(57)【特許請求の範囲】
【請求項１】
クロック信号を生成するクロック生成部と、
クロック制御リクエスト信号をアサートする第１のモジュールと、
該クロック制御リクエスト信号のアサート状態に応答して、現在実行中の処理が終了するとその後の処理を停止してクロック制御アクノリッジ信号をアサートする１つ又は複数の第２のモジュールと、
オンチップバスと、
該オンチップバスに接続される複数のモジュールと、
該複数のモジュールのうちバスマスターであるモジュール間でバス権を調停するバスアービタと、
チップ内部周辺バスと、
該チップ内部周辺バスと該オンチップバスとを接続するバスブリッジと
を含み、該１つ又は複数の第２のモジュールからの該クロック制御アクノリッジ信号が全てアサートされると該クロック生成部は該第２のモジュールに供給する該クロック信号を選択的に変化させ、
該バスアービタは、該１つ又は複数の第２のモジュールのうちの１つであり、該クロック制御リクエスト信号のアサート状態に応答して、現在実行中の転送動作が終了すると該バスマスターであるモジュールに対する全てのバス権を不許可として該クロック制御アクノリッジ信号をアサートし、
該バスブリッジは、該１つ又は複数の第２のモジュールのうちの１つであり、該クロック制御リクエスト信号のアサート状態に応答して、現在実行中のデータ転送処理が終了するとその後のデータ転送処理を停止して該クロック制御アクノリッジ信号をアサートする
ことを特徴とする半導体装置。
【請求項２】
該クロック生成部は、該第２のモジュールに供給する該クロック信号の動作周波数を変化させるか或いは該クロック信号の供給を停止することを特徴とする請求項１記載の半導体装置。
【請求項３】
該第１のモジュールはＣＰＵコア回路であることを特徴とする請求項１記載の半導体装置。
【請求項４】
該第１のモジュールは該１つ又は複数の第２のモジュールからの該クロック制御アクノリッジ信号が全てアサートされると該クロック生成部に対してクロック制御イネーブル信号をアサートし、該クロック生成部は該クロック制御イネーブル信号に応答して該クロック信号を選択的に変化させることを特徴とする請求項１記載の半導体装置。
【請求項５】
該第２のモジュールは該バスアービタのみであることを特徴とする請求項１記載の半導体装置。
【請求項６】
該第２のモジュールは該バスアービタ及び該バスブリッジのみであることを特徴とする請求項１記載の半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にクロック信号に同期して動作する半導体装置に関し、詳しくはクロック信号を制御することにより消費電力を削減可能な半導体装置に関する。
【従来の技術】
プロセッサ等の半導体装置においては、消費電力を削減するために、高速処理を必要としない期間のクロック周波数を低く抑える或いは停止させる制御が行われる。即ち、クロックの動作周波数を必要に応じて段階的に切りかえたり（以下「クロックギア」と呼ぶ）、或いは動作させる必要の無いモジュールブロックへのクロックを停止させる（以下「パワーダウンモード」と呼ぶ）制御が行われる。
クロックギアは、一般に、プロセッサ内の一番早いクロックに対応したマスク用の同期信号を供給し、ゲーテッドクロックバッファでクロック出力のパルス数を減らすことにより実現する。或いは分周回路でクロック信号を分周することにより実現する。またパワーダウンモードは、プロセッサ内の特定の一部或いは全部のモジュールに対して、動作の必要がない期間、それらモジュールへのクロック信号の供給をマスクすることにより実現する。これらのクロック制御は、チップの端子設定及びプログラムによるソフトウェア的な制御に基づいて、プロセッサ内のクロック制御部により実行するのが一般的である。
従来、プロセッサ内部のオンチップバスやバスブリッジを介する内部周辺バス等がある場合において、上記のようなクロックギア切り替え或いはパワーダウンモードへの遷移を行う際には、ソフトウェアによって一定の手順を実行する必要がある。即ち、クロックギアの切り替え或いはパワーダウンモードへの遷移をするためには、その準備として、バス転送等の特定のプロトコル（動作仕様）に沿った動作を、ソフトウェア的に完了させる必要がある。
【発明が解決しようとする課題】
例えば、このような手順を経ないで、バスを経由するデータ転送（特に命令フェッチ等）の最中にクロックギアの切り替え等をした場合、命令の取りこぼしによるプロセッサのハングアップを発生させる危険性がある。また例えば、バスブリッジを経由する内部周辺バスに接続されたモジュールへの突き放し制御のストア命令を実行する場合においては、オンチップバス上での転送が完了した後も内部周辺バスで引き続きライト動作が行われているので、ストア動作が実際に完了する時間まで待たずにクロックギアの切り替え等を行ってしまったのでは、ストアが正常に行われない危険性がある。また例えば、ＳＤＲＡＭコントローラをチップに搭載している場合においては、予めＳＤＲＡＭをセルフリフレッシュモードへ遷移させずにＳＤＲＡＭコントローラのクロックを停止したのでは、ＳＤＲＡＭのデータが破壊されてしまう。
【０００２】
こうした問題を避けるために、クロックギア切り替えやパワーダウンモードへの遷移に際して所定の手順を実行するプログラムを、予め作成しておく必要がある。しかしその手順が完璧に実行されない場合には、予期せぬハングアップ等が発生する恐れがあった。
特に、複雑な転送プロトコルを持つオンチップバスや、バスブリッジ、チップ外部バス（ＳＤＲＡＭ、ＳＲＡＭ、ＲＯＭ、コンパニオンチップ等に接続するバス）等を持つプロセッサのクロック制御プログラムを作成する際には、種々の条件を考慮して制御する必要があるので、人為的なミスによるハングアップやデータ転送エラーの危険性を完全に排除することは容易でない。
【０００３】
以上を鑑みて、本発明は、クロックギア切り替え時やパワーダウンモード遷移時等におけるハングアップの危険性を取り除くハードウェア機構を備えた半導体装置を提供することを目的とする。
【課題を解決するための手段】
本発明による半導体装置は、クロック信号を生成するクロック生成部と、クロック制御リクエスト信号をアサートする第１のモジュールと、該クロック制御リクエスト信号のアサート状態に応答して、現在実行中の処理が終了するとその後の処理を停止してクロック制御アクノリッジ信号をアサートする１つ又は複数の第２のモジュールと、オンチップバスと、該オンチップバスに接続される複数のモジュールと、該複数のモジュールのうちバスマスターであるモジュール間でバス権を調停するバスアービタと、チップ内部周辺バスと、該チップ内部周辺バスと該オンチップバスとを接続するバスブリッジとを含み、該１つ又は複数の第２のモジュールからの該クロック制御アクノリッジ信号が全てアサートされると該クロック生成部は該第２のモジュールに供給する該クロック信号を選択的に変化させ、該バスアービタは、該１つ又は複数の第２のモジュールのうちの１つであり、該クロック制御リクエスト信号のアサート状態に応答して、現在実行中の転送動作が終了すると該バスマスターであるモジュールに対する全てのバス権を不許可として該クロック制御アクノリッジ信号をアサートし、該バスブリッジは、該１つ又は複数の第２のモジュールのうちの１つであり、該クロック制御リクエスト信号のアサート状態に応答して、現在実行中のデータ転送処理が終了するとその後のデータ転送処理を停止して該クロック制御アクノリッジ信号をアサートする。
【０００４】
以上のハードウェア制御によって、本発明においては、クロックギア切り替えやパワーダウンモード遷移等の処理を行う際に、クロック制御により動作に問題が生じる可能性があるモジュールを予め処理停止状態にし、誤動作の危険性が無い状態になってからクロック制御を実行することが可能となる。
【発明の実施の形態】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【０００５】
図１は、本発明によるプロセッサの第１実施例の構成を示す図である。
【０００６】
図１のプロセッサ１０は、クロック制御部１１、ＣＰＵコア部１２、ＤＳＰコア部１３、モジュール１４、モジュール１５、オンチップバス（ＯＣＢ）と内蔵周辺バス（ＰＢ）のバスブリッジ１６、ＤＭＡコントローラ１７、ＳＤＲＡＭコントローラ１８、外部バスコントローラ１９、オンチップバスのバスアービタ２０、オンチップバス（ＯＣＢ）２１、モジュール２２乃至２４、内部周辺バス（ＰＢ）２５、プロセッサ１０の外部に設けられ外部バスコントローラ１９に接続されるＳＲＡＭ２６及び外部バスマスター・チップ２７、外部バス２８、プロセッサ１０の外部に設けられＳＤＲＡＭコントローラ１８に接続されるＳＤＲＡＭ２９を含む。ここで、ＣＰＵコア部１２、ＤＳＰコア部１３、モジュール１４、モジュール１５、ＤＭＡコントローラ１７、ＳＤＲＡＭコントローラ１８、外部バスコントローラ１９は、オンチップバス２１に接続されるオンチップバスモジュールであり、モジュール２２乃至２４は、内部周辺バス２５に接続される周辺バスモジュールである。またＳＲＡＭ２６及び外部バスマスター・チップ２７は、外部バス２８に接続される外部バスモジュールである。
【０００７】
クロック制御部１１は、クロック生成部３０と、クロック制御判定部３１を含む。またモジュール２２は、クロック制御レジスタ３２を含む。
【０００８】
以下に、本発明によるプロセッサ１０の動作を説明する。
【０００９】
プロセッサ１０により特定のアプリケーションを動作させるためのソフトウェアを実行中に、プロセッサ１０のクロック制御（ギア切り替えやパワーダウンモードへの遷移等）を行うとする。まずクロック制御を指示するために、内部周辺バス２５に接続されるモジュール２２のクロック制御レジスタ３２に、クロック制御指示データのストア（ライト）命令をプログラムから発行する。具体的には、このストア命令に係るライトデータは、ＣＰＵコア部１２から発行され、オンチップバス２１の転送仕様に従ってバスブリッジ１６へ転送される。更に、バスブリッジ１６から、モジュール２２へ当該ライトデータに関するライト要求が送出され、モジュール２２内のクロック制御レジスタ３２にライトデータが格納される。
【００１０】
上記ライト動作に係るシーケンスの実行中において、ＣＰＵコア部１２は、当該クロック制御指示データのストア命令を発行した後、パイプライン処理により順次後続する命令を実行する。
【００１１】
クロック制御レジスタ３２へ上記クロック制御指示データが格納されると、クロック制御レジスタ３２から、クロック制御部１１にクロック制御要求信号が発行される。このクロック制御要求信号は、クロック制御部１１のクロック制御判定部３１が受信する。クロック制御判定部３１は、クロック制御要求信号がアサートされたことを認識すると、クロック制御対象の各モジュールに対してクロック制御リクエスト信号ｒｅｑをアサートする。
【００１２】
クロック制御リクエスト信号ｒｅｑは、クロック制御完了通知信号ＤＮがアサートされるまでの期間、アサート状態に維持される。
【００１３】
クロック制御リクエスト信号ｒｅｑを受け取った各モジュールは、その時点で実行中の処理が終了した時点で、その処理を一旦停止させ、クロック制御アクノリッジ信号ａｃｋｘ（ｘ＝０、１、２、・・・、６）をアサートする。ここで、クロック制御リクエスト信号ｒｅｑを受け取り、クロック制御アクノリッジ信号をアサートするモジュールは、バスアービタ２０、ＣＰＵコア部１２、ＤＳＰコア部１３、ＤＭＡコントローラ１７、ＳＤＲＡＭコントローラ１８、外部バスコントローラ１９、及びバスブリッジ１６である。バスアービタ２０は、オンチップバス２１に接続されるモジュール間でバス権を調停し、選択されたモジュールにバス権を与えることでバスに対するアクセスを許可する。バスブリッジ１６は、オンチップバス２１と内部周辺バス２５との間のデータ転送を行う。
【００１４】
例えば、バスアービタ２０の場合、クロック制御リクエスト信号ｒｅｑを受け取った後は、実行中のデータ転送のトランザクションが終了した時点で、全てのバスマスター（この例の場合、ＣＰＵコア部１２、ＤＳＰコア部１３、ＤＭＡコントローラ１７、及び外部バスコントローラ１９の各モジュール）へのバスグラント信号ｇｎｔｘ（ｘ＝１、２、３、４）をネゲート状態にディアサートする。即ち、各マスターモジュールに対してバス権を否定することで、各マスターモジュールによるデータ転送を不許可にする。その後、バスアービタ２０は、クロック制御アクノリッジ信号ａｃｋ０をアサートする。
【００１５】
クロック制御アクノリッジ信号ａｃｋｘは、クロック制御リクエスト信号ｒｅｑがネゲートされるまでの間、アサート状態に維持される。
【００１６】
各クロック制御対象モジュールからのクロック制御アクノリッジ信号ａｃｋｘの全てがアサートされると、クロック制御判定部３１はこれを認識し、クロック生成部３０に対して、クロック制御イネーブル信号ＥＮをアサートする。この時、クロック制御対象となっている全てのモジュールは、動作を一時的に中断している。
【００１７】
クロック生成部３０は、クロック制御イネーブル信号ＥＮがアサートされたのを確認すると、プログラムから要求されたクロック制御動作（クロックギアの切替やパワーダウンモードへの遷移等）を実行する。この際、クロック制御動作の詳細は、クロック制御レジスタ３２に書き込まれたクロック制御指示データの内容によって指定される。クロック生成部３０は、各モジュールに対してクロック信号を供給しており、プログラムからの要求に従って、各モジュールに供給するクロック信号を選択的に制御して、モジュール毎に動作周波数を変更したりクロック信号の供給を停止する。
【００１８】
クロック生成部３０は更に、クロック制御の処理が完了した時点で、クロック制御完了通知信号ＤＮをアサートする。
【００１９】
クロック制御判定部３１は、クロック制御完了通知信号ＤＮがアサートされたことを認識すると、クロック制御リクエスト信号ｒｅｑをネゲートする。クロック制御リクエスト信号ｒｅｑがネゲートされたことに応答して、各クロック制御対象モジュールは、クロック制御アクノリッジ信号ａｃｋｘをネゲートする。クロック制御アクノリッジ信号ａｃｋｘがネゲートされると、クロック制御イネーブル信号ＥＮがネゲートされ、その後、クロック制御完了通知信号ＤＮもネゲートされる。
【００２０】
図２は、上記動作における各信号を示すタイミング図である。
【００２１】
図２（ａ）に示されるようにクロック制御リクエスト信号ｒｅｑがアサートされると、これに応答して、図２（ｂ）に示されるようにバスグラント信号ｇｎｔｘがネゲート状態にされる。更に、各モジュールで現在実行中の動作が終了するタイミングで、図２（ｃ）乃至（ｊ）に示されるように、各モジュールからのクロック制御アクノリッジ信号ａｃｋｘがＨＩＧＨ（アサート状態）になる。
【００２２】
全てのクロック制御アクノリッジ信号ａｃｋｘがＨＩＧＨになると、図２（ｋ）に示されるようにクロック制御イネーブル信号ＥＮがＨＩＧＨになり、クロックギア切り替えやクロック停止等のクロック制御動作が実行される。このクロック制御動作が完了すると、図２（ｌ）に示されるように、クロック制御完了通知信号ＤＮがアサートされる。
【００２３】
以上のハードウェア制御によって、本発明においては、クロックギア切り替えやパワーダウンモード遷移等の処理を行う際に、クロック制御により動作に問題が生じる可能性があるモジュールを予め処理停止状態にし、誤動作の危険性が無い状態になってからクロック制御を実行することが可能となる。
【００２４】
図３は、クロック制御判定部３１の構成例を示す図である。
【００２５】
図３のクロック制御判定部３１は、フリップフロップ４１、フリップフロップ４２−０乃至４２−６、クロック制御デコーダ回路４３、ＡＮＤ回路４４、及びリクエスト信号生成回路４５を含む。フリップフロップ４１は、クロック制御レジスタ３２から供給されるクロック制御要求信号をラッチする。ラッチされたクロック制御要求信号は、クロック制御デコーダ回路４３に供給されてデコードされる。クロック制御要求信号は複数のビットからなる信号であり、クロック制御を要求すると共に、クロック制御がクロックギア切り替えとクロック停止の何れであるのか、どのモジュールに対するクロック制御であるのか等に関して、具体的な制御の詳細を指定する。クロック制御デコーダ回路４３は、このクロック制御要求信号をデコードし、指定されたクロック制御動作を実行するための制御信号ＣＴＬを生成して、クロック生成部３０に供給する。また更に、クロック制御デコーダ回路４３は、クロック制御を示す信号ｃｌｋ＿ｃｔｒをリクエスト信号生成回路４５に供給する。リクエスト信号生成回路４５は、単純なステートマシンであり、入力信号に応じて、アイドル状態ＩＤＬＥとクロック制御状態ＣＬＫ＿ＣＴＲＬとの間を遷移する。クロック制御を示す信号ｃｌｋ＿ｃｔｒがアサートされると、リクエスト信号生成回路４５は、アイドル状態ＩＤＬＥからクロック制御状態ＣＬＫ＿ＣＴＲＬに遷移し、クロック制御リクエスト信号ｒｅｑをアサートする。またクロック制御完了通知信号ＤＮがアサートされると、クロック制御状態ＣＬＫ＿ＣＴＲＬからアイドル状態ＩＤＬＥに遷移して、クロック制御リクエスト信号ｒｅｑをネゲートする。リクエスト信号生成回路４５を、セットリセットフリップフロップ等の単純な順序回路によって実現することが可能であることは、当業者にとっては容易に理解出来るであろう。
【００２６】
またクロック制御判定部３１は、各モジュールから供給されるクロック制御アクノリッジ信号ａｃｋｘ（ｘ＝０、１、２、・・・、６）を、それぞれフリップフロップ４２−０乃至４２−６によりラッチする。ラッチされたクロック制御アクノリッジ信号ａｃｋｘ（ｘ＝０、１、２、・・・、６）は、ＡＮＤ回路４４に供給される。ＡＮＤ回路４４は、ＡＮＤ演算により、全てのクロック制御アクノリッジ信号がアサート状態になると、クロック制御イネーブル信号ＥＮをアサートする。
【００２７】
図４は、クロック制御対象であるバスブリッジ１６におけるクロック制御機構を示す図である。
【００２８】
図４のクロック制御機構は、入力信号に応じて状態が遷移する単純なステートマシンであり、取り得る状態にはクロック制御状態、書き込み状態ＷＲＩＴＥ、読み出し状態ＲＥＡＤ、及びアイドル状態ＩＤＬＥの４つがある。アイドル状態ＩＤＬＥにおいては、バスブリッジ１６は待機して動作指示を待っている。この状態でライト要求或いはリード要求が到来すると、それぞれ書き込み状態ＷＲＩＴＥ或いは読み出し状態ＲＥＡＤに遷移する。書き込み状態ＷＲＩＴＥでは、オンチップバス２１からのデータを内部周辺バス２５のモジュールに書き込む処理を実行し、読み出し状態ＲＥＡＤにおいては、内部周辺バス２５のモジュールからデータを読み出してオンチップバス２１に供給する処理を実行する。
【００２９】
書き込み状態ＷＲＩＴＥ、読み出し状態ＲＥＡＤ、及びアイドル状態ＩＤＬＥの何れかの状態において、クロック制御リクエスト信号ｒｅｑがアサートされると、クロック制御状態に遷移する。クロック制御状態に遷移すると、クロック切り替え或いはクロック停止等に対する準備として必要な動作を実行し、この動作が終了するとクロック制御アクノリッジ信号ａｃｋ（図１ではａｃｋ６）をアサートする。即ち、現在実行中の動作を完了させ、処理を停止し、クロック制御アクノリッジ信号ａｃｋ（図１ではａｃｋ６）をアサートする。その後クロック制御リクエスト信号ｒｅｑがネゲートされると、動作状態はアイドル状態ＩＤＬＥに遷移する。上記動作を実行するステートマシンを、セットリセットフリップフロップ等を組み合わせた順序回路によって実現可能であることは、当業者にとっては容易に理解出来るであろう。
【００３０】
図１に示されるクロック制御対象となるモジュールの各々には、図４に示されるのと同様のステートマシンが備えられており、クロック制御リクエスト信号ｒｅｑのアサートに応答して、クロック切り替え或いはクロック停止等に対する準備動作を実行し、この動作が終了するとクロック制御アクノリッジ信号ａｃｋをアサートするよう構成される。
【００３１】
図５は、本発明によるプロセッサの第２実施例の構成を示す図である。図５において、図１と同一の構成要素は同一の番号で参照される。
【００３２】
図５に示されるプロセッサ１０Ａに於いては、クロック制御部１１の代わりにクロック制御部１１Ａが設けられ、またＣＰＵコア部１２の代わりにＣＰＵコア部１２Ａが設けられる。更に、モジュール２２の代わりにモジュール２２Ａが設けられる。
【００３３】
この第２実施例に於いては、クロック制御レジスタ３２がＣＰＵコア部１２Ａに設けられており、ＣＰＵコア部１２Ａがクロック制御リクエスト信号ｒｅｑを生成して各ユニットに供給する点が、第１実施例の場合の構成及び動作と異なる。プログラム動作によってクロック制御レジスタ３２にクロック制御指示データが格納されると、ＣＰＵコア部１２Ａが、クロック制御リクエスト信号ｒｅｑをアサートする。これに応答して、各モジュールは現在実行中の動作を完了後に処理を停止し、それぞれのクロック制御アクノリッジ信号ａｃｋｘをＨＩＧＨ（アサート状態）にする。クロック制御部１１Ａは、ＣＰＵコア部１２Ａからクロック制御リクエスト信号ｒｅｑを受け取った後、全てのクロック制御アクノリッジ信号ａｃｋｘがＨＩＧＨになると、クロック制御イネーブル信号ＥＮをＨＩＧＨにする。これにより、クロックギア切り替えやクロック停止等のクロック制御動作が実行される。クロック制御動作が完了すると、クロック制御完了通知信号ＤＮがアサートされる。
【００３４】
以上説明したように、ＣＰＵコア部１２Ａがクロック制御リクエスト信号ｒｅｑをアサートする以外の動作は、基本的に、第１実施例の場合と同様である。
【００３５】
図６は、本発明によるプロセッサの第３実施例の構成を示す図である。図６において、図１と同一の構成要素は同一の番号で参照される。
【００３６】
図６に示されるプロセッサ１０Ｂに於いては、クロック制御部１１Ｂのクロック制御判定部３１Ｂがアサートするクロック制御リクエスト信号ｒｅｑは、バスアービタ２０にだけ供給される。第１実施例と異なり、ＣＰＵコア部１２Ｂ、ＤＳＰコア部１３Ｂ、バスブリッジ１６Ｂ、ＤＭＡコントローラ１７Ｂ、ＳＤＲＡＭコントローラ１８Ｂ、及び外部バスコントローラ１９Ｂには、クロック制御リクエスト信号ｒｅｑは供給されない。
【００３７】
バスアービタ２０は、クロック制御リクエスト信号ｒｅｑを受け取った後は、実行中のデータ転送のトランザクションが終了した時点で、全てのバスマスター（この例の場合、ＣＰＵコア部１２Ｂ、ＤＳＰコア部１３Ｂ、ＤＭＡコントローラ１７Ｂ、及び外部バスコントローラ１９Ｂの各モジュール）へのバスグラント信号ｇｎｔｘ（ｘ＝１、２、３、４）をネゲート状態にディアサートする。即ち、各マスターモジュールに対してバス権を否定することで、各マスターモジュールによるデータ転送を不許可にする。その後、バスアービタ２０は、クロック制御アクノリッジ信号ａｃｋ０をアサートする。
【００３８】
このようにクロック制御リクエスト信号ｒｅｑをバスアービタ２０に供給して、各バスマスターへのバスグラント信号ｇｎｔｘ（ｘ＝１、２、３、４）をネゲート状態にすれば、各バスマスターモジュールはバス権を取得できないことになり、バスを介した送受信処理がそれ以後実行されることはない。
【００３９】
上記の第３実施例の構成は、クロックギア切り替えやパワーダウンモード遷移等のクロック制御を実行する際に、クロック制御により問題が生じる可能性があるのは、オンチップバス２１を介した送受信動作だけである場合に有効である。このような場合には、クロック制御リクエスト信号ｒｅｑをバスアービタ２０だけ供給し、バスグラント信号の制御によってオンチップバス２１に接続されるバスマスターの動作を停止すれば、オンチップバス２１を介した送受信動作をクロック制御前に停止することが出来る。
【００４０】
図１と図６とを比較すれば分かるように、第３実施例のような構成にすれば、クロック制御リクエスト信号ｒｅｑによる制御対象のモジュール数を少なくして、回路規模を削減することが可能である。
【００４１】
図７は、本発明によるプロセッサの第４実施例の構成を示す図である。図７において、図６と同一の構成要素は同一の番号で参照される。
【００４２】
図７に示されるプロセッサ１０Ｃに於いては、クロック制御部１１Ｃのクロック制御判定部３１Ｃがアサートするクロック制御リクエスト信号ｒｅｑは、バスアービタ２０及びバスブリッジ１６にだけ供給される。第３実施例の場合と同様に、オンチップバス２１に接続されるモジュールに関しては、バスアービタ２０によるバスグラント信号制御でバス権を不許可にすれば、バスブリッジ１６を除いては動作に問題が生じない場合を想定している。従って、ＣＰＵコア部１２Ｂ、ＤＳＰコア部１３Ｂ、ＤＭＡコントローラ１７Ｂ、ＳＤＲＡＭコントローラ１８Ｂ、及び外部バスコントローラ１９Ｂには、クロック制御リクエスト信号ｒｅｑは供給されない。
【００４３】
バスブリッジ１６は、クロック制御リクエスト信号ｒｅｑを受け取った後は、実行中のデータ転送のトランザクションが終了した時点で、オンチップバス２１から内部周辺バス２５のモジュールへの書き込み、或いは内部周辺バス２５のモジュールからのオンチップバス２１への読み出しを停止する。その後、バスブリッジ１６は、クロック制御アクノリッジ信号ａｃｋ６をアサートする。
【００４４】
上記の第４実施例の構成は、クロックギア切り替えやパワーダウンモード遷移等のクロック制御を実行する際に、クロック制御により問題が生じる可能性があるのは、オンチップバス２１を介した送受信動作とバスブリッジ１６を介したデータ転送動作だけである場合に有効である。このような場合には、クロック制御リクエスト信号ｒｅｑをバスアービタ２０及びバスブリッジ１６にだけ供給し、バスグラント信号の制御によってオンチップバス２１に接続されるバスマスターの動作を停止すると共にバスブリッジ１６の動作を停止すれば、問題が生じる可能性がある全ての動作をクロック制御前に停止することが出来る。
【００４５】
図１と図７とを比較すれば分かるように、第４実施例のような構成にすれば、クロック制御リクエスト信号ｒｅｑによる制御対象のモジュール数を少なくして、回路規模を削減することが可能である。
【００４６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【発明の効果】
以上のハードウェア制御によって、本発明においては、クロックギア切り替えやパワーダウンモード遷移等の処理を行う際に、クロック制御により動作に問題が生じる可能性があるモジュールを予め処理停止状態にし、誤動作の危険性が無い状態になってからクロック制御を実行することが可能となる。
結果として、クロックギアの切り替えやパワーダウンモード遷移等の処理を行う際に、制御対象であるモジュール毎の特有の仕様やそれによる制約を気にすることなく、容易にクロック制御プログラムの開発をすることが可能となる。
【図面の簡単な説明】
【図１】本発明によるプロセッサの第１実施例の構成を示す図である。
【図２】図１のプロセッサにおける各信号を示すタイミング図である。
【図３】クロック制御判定部の構成例を示す図である。
【図４】クロック制御対象であるバスブリッジにおけるクロック制御機構を示す図である。
【図５】本発明によるプロセッサの第２実施例の構成を示す図である。
【図６】本発明によるプロセッサの第３実施例の構成を示す図である。
【図７】本発明によるプロセッサの第４実施例の構成を示す図である。
【符号の説明】
１０  プロセッサ
１１  クロック制御部
１２  ＣＰＵコア部
１３  ＤＳＰコア部
１４  モジュール
１５  モジュール
１６  バスブリッジ
１７  ＤＭＡコントローラ
１８  ＳＤＲＡＭコントローラ
１９  外部バスコントローラ
２０  バスアービタ
２１  オンチップバス
２２  モジュール
２３  モジュール
２４  モジュール
２５  内部周辺バス
２６  ＳＲＡＭ
２７  外部バスマスター・チップ
２８  外部バス
２９  ＳＤＲＡＭ
３０  クロック生成部
３１  クロック制御判定部
３２  クロック制御レジスタ
【図１】
0004733877.tif 000002
【図２】
0004733877.tif 000003
【図３】
0004733877.tif 000004
【図４】
0004733877.tif 000005
【図５】
0004733877.tif 000006
【図６】
0004733877.tif 000007
【図７】
0004733877.tif 000008