(57)【要約】【課題】クリティカルパス上でのデータ信号の遅延による誤動作を防ぐことができる半導体集積回路を得ることが目的である。【解決手段】命令先読み回路１２０は、マスタ１０４から命令が実行されていることを示すｏｐ＿ｆｅｔｃｈ信号、マスタ１０４が発行した命令のデータ受信を示し、次の命令を実行できることを示すｒｅａｄｙ信号、クロックマスク回路１３０から供給されるクロックｃｌｋ１信号及びメモリ１０８からのリードデータｒｄａｔａ１が入力され、クリティカルパス４２０を通る命令が予め予測されており、将来実行されることを示すｃｒｉ＿ｆｌａｇ信号が出力される。なお、前提条件は、クリティカルパス４２０を通る際、第２のＡＮＤ回路５２２に接続されるｒｄａｔａ１の値は、命令コードが乗算命令”０１１”のときである。【選択図】図５
2009048264.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路が動作する際、各回路間で処理の同期を取るための基準となるタイミングである動作周波数を生成する動作周波数生成手段と、
半導体集積回路内部で所定の素子間にデータ信号が伝搬する際、最も時間のかかる経路であるクリティカルパスを抽出する抽出手段と、
前記抽出手段により、抽出された前記クリティカルパスに関する命令を先読みする命令先読み実行手段と、
前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、前記動作周波数の所定周期以内に前記データ信号の送信を実現するよう処理形態を変更する処理形態変更手段と、
を有する半導体集積回路装置。
【請求項２】
前記処理形態変更手段は、前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、前記動作周波数を調整し、前記動作周波数の前記所定周期以内に前記データ信号の送信完了を実現することを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
前記処理形態変更手段は、前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、信号伝搬の立ち上がり時間に相関する信号強度レベルを調整し、前記動作周波数の前記所定周期以内に前記データ信号の送信完了を実現することを特徴とする請求項１に記載の半導体集積回路装置。
【請求項４】
前記信号強度レベルは、電圧の増減であることを特徴とする請求項３に記載の半導体集積回路装置。
【請求項５】
前記所定周期は、１周期であることを特徴とする請求項１から請求項４のいずれか１項記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置に係り、特に、マイクロコントローラのクリティカルパス制御に関する。
【背景技術】
【０００２】
従来、マイクロコントローラは、クロック生成回路、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔであり、以下、ＣＰＵと呼ぶ）、メモリコントローラ、メモリ、及びレギュレータで構成されている。なお、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）とは、コンピュータシステムを１つの集積回路に組み込んだものであり、電子機器の制御用に最適化されている。パーソナルコンピュータに用いられる汎用マイクロプロセッサと比較すると、自己充足性と低価格性を重視したタイプのマイクロプロセッサと言える。
【０００３】
レギュレータは、外部から供給された電源電圧を基に、電圧を調整し、各回路（クロック生成回路、ＣＰＵ、メモリコントローラ、及びメモリ）へ調整された電圧を供給する。また、クロック生成回路は、外部から入力されたクロック信号を基に、クロック信号を生成し、生成されたクロック信号を各回路（レギュレータ、ＣＰＵ、メモリコントローラ、及びメモリ）へ供給する。
【０００４】
そこで、ＣＰＵは、定められたプログラムに基づいて処理を実行するために命令フェッチ（ＣＰＵからの命令を受けて応答を返すメモリコントローラを介し、メモリに格納されているプログラムを、ＣＰＵが読み込むこと）を行う。
【０００５】
そして、ＣＰＵから命令フェッチが実行されているので、メモリコントローラは、メモリからデータを読み込むため、メモリにアクセス（リードアクセス）し、指定されているアドレスに格納されているデータを読み出す。
【０００６】
また、メモリコントローラは読み込まれたデータを受け取り、ＣＰＵにそのデータを返し、ＣＰＵがメモリコントローラから受け取ったデータを基に、プログラムを実行する。なお、ＣＰＵが命令フェッチによって受け取ったデータには、ＣＰＵが実行すべき命令を判別できるように命令コード（命令オペコード）が格納されている。
【０００７】
ところで、クリティカルパスの演算時間でマイクロプロセッサの処理時間が決定されることがないように、命令コードに応じてマイクロプロセッサを動作させるクロック周波数を可変制御する構成が提案されている（特許文献１参照）。
【特許文献１】特開平８−１６１２８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、クリティカルパスでのデータ信号の遅延による誤動作を防ぐため、クリティカルパスを通るデータ信号を、クロック周波数（動作周波数、又は単にクロックと呼ばれる）の１周期（１サイクル）以内で送信する構成である必要がある。
【０００９】
例えば、クリティカルパスのみが３０ＭＨｚのクロック周波数でしか動作させることができず、それ以外の回路が５０ＭＨｚのクロック周波数で動作している場合、全ての回路は３０ＭＨｚのクロック周波数が最高周波数となり、その３０ＭＨｚのクロック周波数で動作させなければならない。
【００１０】
そこで、クリティカルパスを通るときのみクロック周波数を下げることも考えられるが、この場合、ソフトウェアでクロック周波数の切り替えシーケンスを守る必要があり、クロック周波数の切り替えを行うための余分な命令により、回路全体の性能を低下させている。
【００１１】
また、クリティカルパスのみにおいて、応答をマルチサイクル方式により、遅らせるという方法も考えられるが、現在、ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）を流用して回路設計をすることが多いため、ＩＰ内部を変更すると内部機能変更に伴う設計・検証工数が膨大となる。
【００１２】
さらに、常時高電圧を与えることにより、クリティカルパスを通るパスの素子の遅延、及び配線遅延等の遅延を小さくすることが可能だが、高電圧を供給することにより電力を多く消費する。
【００１３】
本願発明は、上記事実を考慮し、クリティカルパス上でのデータ信号の遅延による誤動作を防ぐことができる半導体集積回路装置を得ることが目的である。
【課題を解決するための手段】
【００１４】
請求項１に記載の発明は、半導体集積回路が動作する際、各回路間で処理の同期を取るための基準となるタイミングである動作周波数を生成する動作周波数生成手段と、半導体集積回路内部で所定の素子間にデータ信号が伝搬する際、最も時間のかかる経路であるクリティカルパスを抽出する抽出手段と、前記抽出手段により、抽出された前記クリティカルパスに関する命令を先読みする命令先読み実行手段と、前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、前記動作周波数の所定周期以内に前記データ信号の送信を実現するよう処理形態を変更する処理形態変更手段と、を有することを特徴としている。
【００１５】
請求項２に記載の発明は、請求項１に記載の発明において、前記処理形態変更手段は、前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、前記動作周波数を調整し、前記動作周波数の前記所定周期以内に前記データ信号の送信完了を実現することを特徴としている。
【００１６】
請求項３に記載の発明は、請求項１に記載の発明において、前記処理形態変更手段は、前記クリティカルパスの経路を通る際、前記命令先読み実行手段を用いて、信号伝搬の立ち上がり時間に相関する信号強度レベルを調整し、前記動作周波数の前記所定周期以内に前記データ信号の送信完了を実現することを特徴としている。
【００１７】
請求項４に記載の発明は、請求項３に記載の発明において、記信号強度レベルは、電圧の増減であることを特徴としている。
【００１８】
請求項５に記載の発明は、請求項１から請求項４のいずれか１項記載の発明において、前記所定周期は、１周期であることを特徴としている。
【発明の効果】
【００１９】
以上説明したように、本願発明によれば、クリティカルパス上でのデータ信号の遅延による誤動作を防ぐことができるという効果が得られる。
【発明を実施するための最良の形態】
【００２０】
（本願発明の第１の実施の形態）
以下に、本願発明の第１の実施の形態を説明する。
【００２１】
図１は、本願発明の第１の実施の形態におけるマイクロコントローラ１００を示す構成図である。
【００２２】
このマイクロコントローラ１００は、クロック生成回路１０２、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０で構成されている。
【００２３】
クロック生成回路１０２では、クロックマスク回路１３０（処理形態変更手段）を含んで構成されており、マイクロコントローラ１００外部から供給されるクロックｃｌｋ０信号をマイクロコントローラ１００内部の各ブロックに供給する機能を有している。なお、クロックｃｌｋ０信号（他のクロック信号も含む）は、コンピュータ内部の各回路、又は各回路の各素子間での処理の同期をとるためのテンポを示す信号のことであり、このクロックｃｌｋ０信号（他のクロック信号も含む）の速さをクロック周波数（動作周波数、単にクロックとも呼ばれる）と呼ぶ。なお、動作周波数であるクロック周波数は、動作周波数生成手段によって生成され、半導体集積回路が動作する際、各回路間で処理の同期を取るための基準となるタイミングとなる。
【００２４】
さらに、クロックマスク回路１３０については、図６において、詳細に説明する。
【００２５】
また、マスタ１０４では、例えば、ＣＰＵで構成され、定められたプログラム（メモリ１０８等に格納されている）に従って処理を行う機能を有している。なお、このマスタ１０４は、データ処理のための命令（指示）を出力するものならば何でもよい。
【００２６】
さらに、スレーブ１０６では、例えば、メモリコントローラとして命令先読み回路１２０（命令先読み実行手段）を含んで構成され、マスタ１０４からのアクセス信号を受信し、応答を返す機能を有している。なお、スレーブ１０６は、システムコントローラであってもよく、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）等の方式を採用してもよい。また、命令先読み回路１２０は、図５において、詳細に説明する。
【００２７】
また、メモリ１０８は、データ及びプログラム等を記憶する装置（格納場所）である。
【００２８】
さらに、レギュレータ１１０は、マイクロコントローラ１００の外部から供給される電源電圧Ｖｄｄ０をマイクロコントローラ１００内部の各回路ブロック（クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８）に供給する機能を有する。なお、レギュレータ（Ｒｅｇｕｌａｔｏｒ）１１０は、調整装置という意味であり、コンピュータシステムでは、電源安定装置、又は変圧装置と呼ばれる。詳細には、本願発明では、３端子レギュレータを使用しており、入力、接地、出力の３端子を持ち、入力された直流電源を平滑定電流化して出力する電圧整流素子である。
【００２９】
詳細に説明すると、クロック生成回路１０２は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０に接続されており、クロック生成回路１０２から出力されるクロックｃｌｋ信号は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０に送信されている。また、レギュレータ１１０は、クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８に接続されており、レギュレータ１１０から出力される電源電圧Ｖｄｄは、クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８に供給される。
【００３０】
このマイクロコントローラ１００は所定のシーケンスによって動作する。なお、シーケンスとは、シーケンス制御（Ｓｅｑｕｅｎｔａｌ  Ｃｏｎｔｒｏｌ）のことであり、予め定められた順序又は手続きに従って、制御の各段階を逐次進めていく制御のことであるが、そのときの各段階に用いられる用語を予め説明しておく。
【００３１】
（命令フェッチ、ｏｐ＿ｆｅｔｃｈ信号、及びｒｅａｄｙ信号）
マスタ１０４は、実行すべきプログラムを実行するために命令フェッチ（プロセッサが処理する命令コードをメモリから取り出し、レジスタに転送すること）を行う。また、マスタ１０４は、命令フェッチが実行されていることを示すｏｐ＿ｆｅｔｃｈ信号をスレーブ１０６に出力する。そして、マスタ１０４が発行した命令及び次の命令を実行できることを示すｒｅａｄｙ信号を受信する。詳細には、この命令フェッチアクセスは、スレーブ１０６を介してメモリ１０８に格納されているプログラムをリードする（読み込む）。
【００３２】
（リードアクセス）
マスタ１０４から命令フェッチが実行されたため、スレーブ１０６はメモリに対してリードアクセス（所望のデータを読み込むためのアクセス）を行う。
【００３３】
（リードデータｒｄａｔａ１）
メモリ１０８は、スレーブ１０６からのリードアクセスに対応したアドレスに格納されているデータであるリードデータｒｄａｔａ１を出力し、スレーブ１０６はリードデータｒｄａｔａ１を受信する。
【００３４】
（リードデータｒｄａｔａ２）
スレーブ１０６は、メモリ１０８からリードデータｒｄａｔａ１を受信すると、マスタ１０４にリードデータｒｄａｔａ２を送信する。
【００３５】
（クロックｃｌｋ１信号）
クロックｃｌｋ１信号は、クロックマスク回路１３０から供給され、命令先読み回路１２０を動作させるクロック（クロック信号）である。
【００３６】
（ｃｒｉ＿ｆｌａｇ信号）
ｃｒｉ＿ｆｌａｇ信号は、命令先読み回路１２０から出力され、クリティカルパス４２０を通る命令が予め予測（特定）されており、将来実行されることを示す信号である。なお、クリティカルパス４２０を通る命令は予め予測（特定）されているが、それは、コンピュータ等を用いてシミュレーションして得られた結果でもあり、他にもクリティカルパス４２０を通る命令が特定できる手段があればどのような手段を用いてもよい。
【００３７】
（命令実行）
マスタ１０４は、スレーブ１０６を介してメモリ１０８から受け取ったリードデータｒｄａｔａ２に基づいてプログラムを実行する。詳細には、マスタ１０４がスレーブ１０６へ送信した命令フェッチ、ｏｐ＿ｆｅｔｃｈ信号、及びｒｅａｄｙ信号を基にして受信したリードデータｒｄａｔａ２には、マスタ１０４が実行すべき命令を判別できるように命令コード（図２の命令オペコード）が格納されている。そして、そのリードデータｒｄａｔａ２に格納されている命令コード、及びスレーブ１０６から送信されてくるｒｅａｄｙ信号に基づき、プログラムを実行する。
【００３８】
図２に本願発明の第１の実施の形態における命令フェッチ時のリードデータ例２００を示す。
【００３９】
命令フェッチ時のリードデータには、図２に示すような命令コード及び命令オペコード等のデータが格納されている。
【００４０】
命令オペコードとは、マスタ１０４が実行すべき命令がコード化されているものであり、リードデータｒｄａｔａ１の８ビット目から１０ビット目に格納されているものとする（図３の命令オペコード例３００参照）。
【００４１】
例えば、命令コードのロード命令は命令オペコード”０００”であり、命令コードのストア命令は命令オペコード”００１”であるというように、命令コードと命令オペコードの関係を示している。
【００４２】
なお、その他のビットには、マスタ１０４が命令を実行する際に使用するソースアドレス及びディスティネーションアドレス等が格納されている。
【００４３】
図３に本願発明の第１の実施の形態における命令フェッチ時のリードデータｒｄａｔａ１例３００を示す。
【００４４】
命令フェッチ時のリードデータｒｄａｔａ１例３００は、図２の命令オペコード（ｒｄａｔａ２のＯｐｃｏｄｅ）に示されている命令を対応させたものである。
【００４５】
マスタ１０４は、命令フェッチにより受信したリードデータｒｄａｔａ２に従ってプログラムを実行する。その際、命令の種類によってはクリティカルパス４２０を通る命令が存在する。
【００４６】
また、クリティカルパス４２０とは、信号の伝搬に最も時間のかかるパス（経路）のことであり、回路の動作を規制するパスのことである。なお、クリティカルパス４２０は、抽出手段によって抽出され、予め予測（特定）されているが、それは、コンピュータ等を用いてシミュレーションして得られた結果であり、他にもクリティカルパス４２０が特定できる手段があればどのような手段を用いてもよい。
【００４７】
従って、マイクロコントローラ１００の動作の性能を示す最高クロック周波数（最高動作周波数）は、このクリティカルパス４２０により決定される。信号の伝搬には、ゲート遅延及び配線遅延などがある。
【００４８】
なお、ゲート遅延とは、信号がＡＮＤ回路等のゲートを通る際に発生する遅延のことである。さらに、配線遅延とは、文字通り、配線に信号が伝わるタイミングの遅れのことであり、微細化が進み、トランジスタ性能が極限まで高速化した結果、トランジスタ同士を接続配線で起こる信号の送信の遅れが、マイクロコントローラ１００全体の高性能化を阻害する要因になってきている。
【００４９】
そして、０ビット目から３ビット目までは、ソースアドレスＲｓ（典拠アドレスであり、処理に使うデータの参照先とするアドレスのことである）を示しており、ｒｄａｔａ１［３：０］と表す。また、４ビット目から７ビット目までは、ディスティネーションアドレスＲｄ（目的地アドレスであり、処理結果の格納先とするアドレスのことである）を示しており、ｒｄａｔａ１［７：４］と表す。さらに、８ビット目から１０ビット目までは、Ｏｐｃｏｄｅ（命令オペコード）を示しており、ｒｄａｔａ１［１０：８］と表す。また、１１ビット目から３１ビット目までは、その他のコードｅｔｃを示しており、ｒｄａｔａ１［３１：１１］と表す。このように命令フェッチ時のリードデータｒｄａｔａ１例３００は”０”及び”１”のコードで表される３２ビットバス構成で示されている。
【００５０】
図４に本願発明の第１の実施の形態におけるクリティカルパス４２０の回路例４００を示す。
【００５１】
第１のフリップフロップ回路４０２、第２のフリップフロップ回路４０４、及び第３のフリップフロップ回路４０６は、クロック生成回路１０２で生成されたクロックｃｌｋ信号の立ち上がりエッジで動作する。
【００５２】
第１のフリップフロップ回路４０２は、４段のバッファ４１０、４１２、４１４、４１６を介して第２のフリップフロップ回路４０４に接続されている。
【００５３】
そこで、第１のフリップフロップ回路４０２に入力された信号Ｉは、４段のバッファ４１０、４１２、４１４、４１６を介して、第２のフリップフロップ回路４０４に信号ＶＩが入力され、信号ＶＩＩを出力する。
【００５４】
さらに、第３のフリップフロップ回路４０６と第１のフリップフロップ回路４０２の間に１段のバッファ４１８を介して接続されている。
【００５５】
詳細には、第１のフリップフロップ回路４０２から出力された信号ＩＩは、バッファ４１０に入力され、信号ＩＩＩを出力する。また、信号ＩＩＩを入力したバッファ４１２は信号ＩＶを出力する。さらに、信号ＩＶを入力したバッファ４１４は信号Ｖを出力する。そして、信号Ｖを入力したバッファ４１６は信号ＶＩを出力し、信号ＶＩを入力した第２のフリップフロップ回路４０４は、信号ＶＩＩを出力する。
【００５６】
なお、クロックｃｌｋ信号は、第１のフリップフロップ回路４０２、第２のフリップフロップ回路４０４、及び第３のフリップフロップ回路４０６に入力されて同期信号として使用される。また、電源電圧Ｖｄｄは、各回路（第１のフリップフロップ回路４０２、第２のフリップフロップ回路４０４、第３のフリップフロップ回路４０６、及びバッファ４１０、４１２、４１４、４１６、４１８）にそれぞれ供給される。
【００５７】
ここで、この回路のクリティカルパス４２０は第１のフリップフロップ回路４０２から第２のフリップフロップ回路４０４のパスであると仮定する。
【００５８】
また、これらの全てのセル（第１のフリップフロップ回路４０２、第２のフリップフロップ回路４０４、第３のフリップフロップ回路４０６、及びバッファ４１０、４１２、４１４、４１６、４１８のセル）は、電源電圧Ｖｄｄで動作する。なお、セルとは、半導体集積回路を設計する際、半導体の機能を表す最小単位のことである。
【００５９】
図５に本願発明の第１の実施の形態における命令先読み回路１２０の回路図を示す。
【００６０】
命令先読み回路１２０には、ｏｐ＿ｆｅｔｃｈ信号、ｒｅａｄｙ信号、クロックマスク回路１３０から供給されるクロックｃｌｋ１信号、及びメモリ１０８からのリードデータｒｄａｔａ１が入力され、ｃｒｉ＿ｆｌａｇ信号が出力される。
【００６１】
命令先読み回路１２０の第４のフリップフロップ回路５１０、第５のフリップフロップ回路５１２、及び第６のフリップフロップ回路５１４は、クロックｃｌｋ１信号の立ち上がりエッジで動作する。
【００６２】
第１のＡＮＤ回路５２０の出力は第４のフリップフロップ回路５１０の入力と接続され、第４のフリップフロップ回路５１０の出力は第２のＡＮＤ回路５２２の入力と接続されている。
【００６３】
ｏｐ＿ｆｅｔｃｈ信号及びｒｅａｄｙ信号が入力される第１のＡＮＤ回路５２０の出力信号は、第１のフリップフロップ回路５１０を介し、第２のＡＮＤ回路５２２に送信される。
【００６４】
命令先読み回路１２０の外部からリードデータｒｄａｔａ１［１０］が、インバータ５３０を介し、第２のＡＮＤ回路５２２の入力と接続されている。また、命令先読み回路１２０の外部からリードデータｒｄａｔａ１［９］及びリードデータｒｄａｔａ１［８］が、第２のＡＮＤ回路５２２の入力と接続されている。さらに、第２のＡＮＤ回路５２２の出力は、第１のセレクタ回路５４０の入力、及びインバータ５３４の入力に接続されている。
【００６５】
第２のＡＮＤ回路５２２では、第１のフリップフロップ回路５１０の出力信号、リードデータｒｄａｔａ１の１０ビット目をインバータ５３０で反転した信号、リードデータｒｄａｔａ１の９ビット目の信号、及びリードデータｒｄａｔａ１の８ビット目の信号を第２のＡＮＤ回路５２２に入力している。
【００６６】
また、第２のＡＮＤ回路５２２の出力信号は、第１のセレクタ回路５４０のセレクト信号（第１のセレクタ回路５４０の出力信号を選択制御するためのコントロール信号）、及びインバータ５３４の入力信号として送信される。
【００６７】
なお、第２のＡＮＤ回路５２２に接続されるリードデータｒｄａｔａ１の値は、命令フェッチのデータがクリティカルパス４２０を通る命令の乗算命令（図２の”０１１”）を示すものである（前提条件）。
【００６８】
第１のセレクタ回路５４０には、第２のＡＮＤ回路５２２の出力、１’ｂ１（１ビットのバイナリ（２進数）の”１”）及び第３のＡＮＤ回路５２４の出力が接続されている。また、第５のフリップフロップ回路５１２の入力に第１のセレクタ回路５４０の出力が接続され、第５のフリップフロップ回路５１２の出力に第２のセレクタ回路５４２及び第３のＡＮＤ回路５２４が接続されている。
【００６９】
第５のフリップフロップ回路５１２には、第１のセレクタ回路５４０の出力信号が入力されている。そこで、第１のセレクタ回路５４０に入力されるセレクト信号が”Ｈ”のときには、第１のセレクタ回路５４０の出力信号は”Ｈ”（１’ｂ１）となる。また、第１のセレクタ回路５４０に入力されるセレクト信号が”Ｌ”のときには、第１のセレクタ回路５４０の出力信号は第３のＡＮＤ回路５２４の出力信号が出力される。
【００７０】
なお、第５のフリップフロップ回路５１２の出力信号は、ｃｒｉ＿ｆｌａｇ信号として、命令先読み回路１２０から出力され、第３のＡＮＤ回路５２４の入力信号及び第２のセレクタ回路５４２のセレクト信号となって送信される。
【００７１】
第２のセレクタ回路５４２には、第５のフリップフロップ回路５１２の出力、カウンタ回路５６０の出力、及び第６のフリップフロップ回路５１４の出力が接続されている。また、インバータ５３４の出力が非同期リセット端子（ネガリセット端子）ｒｎを介し、第６のフリップフロップ回路５１４の入力に接続されており、第２のセレクタ回路の出力も第６のフリップフロップ回路５１４の入力に接続されている。さらに、第６のフリップフロップ回路５１４の出力は、第２のセレクタ回路５４２の入力、カウンタ回路５６０の入力、及び比較回路５５０の入力に接続されている。そして、比較回路５５０では、第６のフリップフロップ回路５１４の出力、及び’ｄ１００（ｄｅｃｉｍａｌ  ｄｉｇｉｔｓ（１０進数）の”１００”）が入力されている。また、第３のＡＮＤ回路５２４のもう一方の入力には、比較回路５５０の出力がインバータ５３２を介して接続されている。
【００７２】
第６のフリップフロップ回路５１４には、第２のセレクタ回路５４２の出力信号が入力されている。そこで、第２のセレクタ回路５４２に入力されるセレクト信号が”Ｈ”のときには、第２のセレクタ回路５４２の出力信号は、カウンタ回路５６０によって、第６のフリップフロップ回路５１４の出力信号＋１の値となる。また、第２のセレクタ回路５４２に入力されるセレクト信号が”Ｌ”のときには、第２のセレクタ回路５４２の出力信号は、第６のフリップフロップ回路５１４の出力信号が出力される。
【００７３】
そして、第６のフリップフロップ回路５１４には、非同期リセット信号（反転リセットを示すネガリセット信号）が、インバータ５３４及びネガリセット端子ｒｎを介し”Ｌ”のとき”０”を保持し、リセットを行う。また、比較回路５５０は、第６のフリップフロップ回路５１４の出力信号と固定値の１０進数の”１００”と比較し、第６のフリップフロップ回路５１４の値が１００になったときに出力信号”Ｈ”とし、それ以外の場合は出力を”Ｌ”とする回路である。詳細には、第６のフリップフロップ回路５１４の値が１００になり、出力信号”Ｈ”となったときには、第６のフリップフロップ回路５１４の値はリセットされ、出力信号”Ｌ”のときには、第６のフリップフロップ回路５１４の値は＋１ずつカウントを続行する。
【００７４】
また、第４のフリップフロップ回路５１０、第５のフリップフロップ回路５１２、第６のフリップフロップ回路５１４には、それぞれ同期して動作するようにクロックｃｌｋ１信号が入力されている。
【００７５】
さらに、非同期リセット信号については、一番はじめは、第２のＡＮＤ回路５２２のパルスが立ち上がったときをトリガーとして非同期にリセットをかける。
【００７６】
なお、リードデータｒｄａｔａ１［１０：８］は乗算命令の”０１１”を前提条件としているが、これは、乗算命令がクリティカルパス４２０を通る際に時間が最もかかりやすいことから選ばれたものである。従って、クリティカルパス４２０を通る際、乗算命令でない場合、例えば、ＡＮＤ命令”１０１”の場合には、リードデータｒｄａｔａ１［１０］に入力される場所にインバータ５３０はなく、リードデータｒｄａｔａ１［９］に入力される場所にインバータ５３０が設置される。以上、述べたようにクリティカルパス４２０において、どんな命令に時間がかかるか、どの程度の頻度で関わるかなどの条件を基に、ある程度の場所が分かって、はじめて、素子や配線等の遅延が大きくなることが前提条件となるので、本願発明のような乗算命令が前提条件とならない場合もある。
【００７７】
図６に本願発明の第１の実施の形態におけるクロックマスク回路１３０の回路図を示す。
【００７８】
第３のセレクタ回路６３０には、コントローラ信号として命令先読み回路１２０からの出力（ｃｒｉ＿ｆｌａｇ信号）、固定値”０”、及びインバータ６２０の出力が接続されている。また、第３のセレクタ回路６３０の出力は、第７のフリップフロップ回路６１０の入力に接続されている。さらに、第７のフリップフロップ回路６１０では、第７のフリップフロップ回路６１０の出力はインバータ６２０の入力及びＯＲ回路６４０の入力に接続されている。なお、クロックｃｌｋ０信号が、マイクロコントローラ１００の外部から、第７のフリップフロップ回路６１０の入力、及びＯＲ回路６４０の入力に接続されている。
【００７９】
クロックマスク回路１３０は、マイクロコントローラ１００の外部から供給されるクロックｃｌｋ０信号、及び命令先読み回路１２０からの出力信号であるｃｒｉ＿ｆｌａｇ信号が入力される。また、クロックマスク回路１３０は、命令先読み回路１２０を動作させるクロックｃｌｋ１信号を出力する。さらに、クロックマスク回路１３０は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０を動作させるクロックｃｌｋ信号を出力する。
【００８０】
入力信号ｃｒｉ＿ｆｌａｇ信号は、第３のセレクタ回路６３０のセレクト信号として送信される。
【００８１】
第３のセレクタ回路６３０は、セレクト信号（ｃｒｉ＿ｆｌａｇ信号）が”０”のときには第３のセレクタ回路６３０の出力は”０”で固定される。セレクト信号（ｃｒｉ＿ｆｌａｇ信号）が”１”のときには第３のセレクタ回路６３０の出力信号はインバータ６２０の出力信号を選択する。
【００８２】
第７のフリップフロップ回路６１０の出力信号は、インバータ６２０を介して、第３のセレクタ回路６３０に送信される。また、第７のフリップフロップ回路６１０の出力信号は、ＯＲ回路６４０の入力信号として入力される。なお、第７のフリップフロップ回路６１０には、クロックｃｌｋ０信号がマイクロコントローラ１００の外部から入っているので、初期値”０”が保持されている。
【００８３】
ＯＲ回路６４０のもう一方の入力には、クロックｃｌｋ０信号が入力され、出力信号はクロックｃｌｋ信号としてクロックマスク回路１３０から出力される。なお、もう一方の出力信号クロックｃｌｋ１信号はクロックｃｌｋ０信号がそのまま送信される（クロックｃｌｋ１信号＝クロックｃｌｋ０信号）。
【００８４】
以下、本願発明の第１の実施の形態の作用を説明する。
【００８５】
図７に本願発明の第１の実施の形態におけるタイムチャート７００を示す。
【００８６】
本願発明の第１の実施の形態において、乗算命令時にクリティカルパス４２０を通ると仮定する（前提条件）。
【００８７】
時刻Ｔ１において、マスタ１０４から命令フェッチＡＡＡが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【００８８】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパス４２０における乗算命令”０１１”である。
【００８９】
時刻Ｔ４において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０の第２のＡＮＤ回路５２２、第１のセレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【００９０】
時刻Ｔ５において、命令先読み回路１２０の第２のＡＮＤ回路５２２及び第１のセレクタ回路５４０の出力信号が”Ｌ”となり、命令先読み回路１２０の第５のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、第６のフリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ４において、第２のＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。また、ｃｒｉ＿ｆｌａｇ信号が”Ｈ”になることにより、クロックマスク回路１３０の第７のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクしていく。さらに、マスタ１０４は、次の命令ＢＢＢの命令フェッチを出力する。
【００９１】
時刻Ｔ６において、通常のクロック周波数であるクロックｃｌｋ１信号（クロックｃｌｋ０信号）の周期は遅くなり、クリティカルパス４２０を通っても誤動作を起こさないように、通常のクロック周波数の半分の速度に落としたクロックｃｌｋ信号に変更される。
【００９２】
時刻Ｔ７において、命令先読み回路１２０の第６のフリップフロップ回路５１４は’ｄ１００（１０進数の１００）となり、命令先読み回路１２０の第５のフリップフロップ回路５１２の入力信号は”Ｌ”となる。
【００９３】
時刻Ｔ８において、命令先読み回路１２０の第５のフリップフロップ回路５１２は”Ｌ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｌ”となり、通常のクロック周波数の半分の速度に変更されたクロックｃｌｋ信号は通常のクロック周波数に戻って動作する。
【００９４】
図８に本願発明の第１の実施の形態を実施した場合のクリティカルパス４２０を介したタイムチャート８００を示す。
【００９５】
タイムチャート８００は、図４の回路のタイムチャートである。
【００９６】
（経過１−１）時刻Ｔ１において、クロックｃｌｋ信号の立ち上がりにより第１のフリップフロップ回路４０２の信号Ｉが”１”に変化する。
【００９７】
（経過１−２）時刻Ｔ２において、クロックｃｌｋ信号の立ち上がりで信号Ｉが第１のフリップフロップ回路４０２に保持される。
【００９８】
（経過１−３）時刻Ｔ３において、信号ＩＩが”１”に変化する。
【００９９】
（経過１−４）時刻Ｔ４において、信号ＩＩＩが”１”に変化する。
【０１００】
（経過１−５）時刻Ｔ５において、信号ＩＶが”１”に変化する。
【０１０１】
（経過１−６）時刻Ｔ６において、信号Ｖが”１”に変化する。
【０１０２】
（経過１−７）時刻Ｔ７において、信号ＶＩが”１”に変化する。
【０１０３】
（経過１−８）時刻Ｔ８において、信号ＶＩが”１”に変化するとき、クロックｃｌｋ信号の立ち上がりエッジはないため、第１のフリップフロップ回路４０２で保持したクロックｃｌｋ信号の次の立ち上がりエッジはない。
【０１０４】
（経過１−９）時刻Ｔ９において、クロックｃｌｋ信号の立ち上がりで入力データを保持するので第２のフリップフロップ回路４０４は信号ＶＩを保持する。
【０１０５】
（経過１−１０）時刻Ｔ１０において、信号ＶＩＩが”１”と出力されるため、第１のフリップフロップ回路４０２から第２のフリップフロップ回路４０４までの信号伝搬時間が、クロックｃｌｋ信号のクロック周波数の所定周期である１周期（１サイクル）以内に収まる。
【０１０６】
従って、本願発明の第１の実施の形態によれば、クリティカルパス４２０を通る命令を先読みすることにより、クリティカルパス４２０を通るときのみクロック周波数の周波数を遅くすることができる。
【０１０７】
また、クリティカルパス４２０により、マイクロコントローラ１００の最高周波数を下げざるを得ない場合でも、命令先読み回路１２０を用いて、命令を先読みすることによって、その経路を通る期間だけクロック周波数を遅くし、随時、最適なクロック周波数でマイクロコントローラ１００を動作させることができる。
【０１０８】
さらに、クリティカルパス４２０を通る際に事前にソフト制御によってクロック周波数を遅くせず、ハード的にクロック周波数を制御するので、マイクロコントローラ１００全体の性能を向上させることができる。
【０１０９】
また、ソフトウェアでクロック周波数の切り替えシーケンスを守る必要がある場合、クロック周波数の切り替えを行うための余分な命令により、回路全体の性能を低下するが、本願発明の第１の実施形態ではそのような回路全体の性能の低下をさせずにすませることができる。
【０１１０】
さらに、クリティカルパスのみにおいて、応答（クロック周波数）をマルチサイクル方式により、遅らせる場合、ＩＰを流用して回路設計し、ＩＰ内部を変更すると内部機能変更に伴う設計・検証工数が膨大となるが、本願発明の第１の実施形態ではそのような手間はなくすことができる。
（本願発明の第２の実施の形態）
以下に、本願発明の第２の実施の形態を説明する。
【０１１１】
図９は、本願発明の第２の実施の形態を示す構成図である。
【０１１２】
図１の本願発明の第１の実施の形態を示す構成図と、同一の構成には、同一の符号を付す。
【０１１３】
また、命令先読み回路１２０は、第１の実施の形態と同様の回路構成であり、図５に示す要素と共通の回路である。
【０１１４】
さらに、命令先読み回路１２０に入力されるクロックｃｌｋ１信号は、マイクロコントローラ９００外部からのクロックｃｌｋ０信号と同一のクロック周波数である（クロックｃｌｋ０信号＝クロックｃｌｋ１信号）。
【０１１５】
そして、レギュレータ回路１１０には、電源電圧発生回路９３０（処理形態変更手段）が含んで構成されている点に違いがあり、第１の実施の形態とは違い、ｃｒｉ＿ｆｌａｇ信号は、クロックマスク回路１３０には入力されず、電源電圧発生回路９３０に入力される。また、電源電圧発生回路９３０は、信号伝搬の立ち上がり時間に相関する信号強度レベルを調整するものである。なお、電源電圧発生回路９３０の詳細は図１０で説明する。
【０１１６】
図１０に本願発明の第２の実施の形態における電源電圧発生回路９３０の回路図を示す。
【０１１７】
電源電圧発生回路９３０には、命令先読み回路１２０から出力されるｃｒｉ＿ｆｌａｇ信号及び外部からの電源電圧Ｖｄｄ０が入力され、ｃｒｉ＿ｆｌａｇ信号の状態により出力される電源電圧Ｖｄｄを変更する機能を有する。
【０１１８】
電源電圧発生回路９３０の出力される電源電圧Ｖｄｄは、通常時（ｃｒｉ＿ｆｌａｇ信号＝”０”＝”Ｌ”）は従来と同様の電圧（通常電圧）を出力するが、クリティカルパス４２０を通る命令が将来実行される場合（ｃｒｉ＿ｆｌａｇ信号＝”１”＝”Ｈ”）に出力される高い電源電圧Ｖｄｄ（高電圧）を出力する回路である。
【０１１９】
例えば、通常電圧が３．３Ｖ（規格は、３．３Ｖ±０．３Ｖ）の場合、高電圧となるのは、規格内の３．６Ｖ（＝３．３Ｖ＋０．３Ｖ）である。
【０１２０】
以下、本願発明の第２の実施の形態の作用を説明する。
【０１２１】
図１１に本願発明の第２の実施の形態におけるタイムチャート１１００を示す。図中に示している要素は図９及び図１０の要素と共通の要素には共通の符号が付されている。
【０１２２】
タイムチャート１１００は、図７の第１の実施の形態のタイムチャート７００と比較すると、クロック生成回路９０２の出力されるクロックｃｌｋ信号が第２の実施の形態の場合では、変更しない点が異なり、命令先読み回路１２０の動作は、第１の実施の形態の命令先読み回路１２０の動作と変わらない。
【０１２３】
また、図７の第１の実施の形態のタイムチャート７００と比較すると、第７のフリップフロップ回路６１０の波形のところに、電源電圧Ｖｄｄの電源電圧の状態を示している点に違いがある。
【０１２４】
図１２に本願発明の第２の実施の形態を実施した場合のクリティカルパス４２０を介したタイムチャート１２００を示す。
【０１２５】
タイムチャート１２００は、図４の回路のタイムチャートである。
【０１２６】
第２の実施の形態により、ｃｒｉ＿ｆｌａｇ信号が”Ｈ”の期間（高電圧期間）は、供給される電源電圧Ｖｄｄが高いため、図４のすべてのセルの素子遅延と比較すると小さくなる。
【０１２７】
（経過２−１）時刻Ｔ１において、クロックｃｌｋ信号の立ち上がりにより第１のフリップフロップ回路４０２の信号Ｉが”１”に変化する。
【０１２８】
（経過２−２）時刻Ｔ２において、クロックｃｌｋ信号の立ち上がりで信号Ｉが第１のフリップフロップ回路４０２に保持される。
【０１２９】
（経過２−３）時刻Ｔ３において、信号ＩＩが”１”に変化する。
【０１３０】
（経過２−４）時刻Ｔ４において、信号ＩＩＩが”１”に変化する。
【０１３１】
（経過２−５）時刻Ｔ５において、信号ＩＶが”１”に変化する。
【０１３２】
（経過２−６）時刻Ｔ６において、信号Ｖが”１”に変化する。
【０１３３】
（経過２−７）時刻Ｔ７において、信号ＶＩが”１”に変化する。
【０１３４】
（経過２−８）時刻Ｔ８において、信号ＶＩが”１”に変化するとき、第１のフリップフロップ回路４０２で保持したクロックｃｌｋ信号のクロック周波数は次の立ち上がりエッジがあるので、信号ＶＩのデータ信号を受信する。
【０１３５】
（経過２−９）時刻Ｔ９において、第２のフリップフロップ回路４０４は、信号ＶＩを保持する。
【０１３６】
（経過２−１０）時刻Ｔ１０において、信号ＶＩＩが”１”となるため、第１のフリップフロップ回路４０２から第２のフリップフロップ回路４０４までの信号伝搬時間がクロックｃｌｋ信号のクロック周波数の所定周期である１周期（１サイクル）以内に収まる。
【０１３７】
従って、本願発明の第２の実施の形態によれば、命令先読み回路１２０によって、クリティカルパス４２０を通る命令を先読みし、クリティカルパス４２０を通るときのみ供給電圧を高くする（通常電圧から高電圧にする）ことにより、高電圧のパワーで素子遅延及び配線遅延を小さくすることができる。
【０１３８】
また、クリティカルパス４２０により、マイクロコントローラ９００のクロック周波数の最高周波数を下げざるを得ない場合でも、命令先読み回路１２０を用いて、命令を先読みすることによって、その経路を通る期間だけ供給する電圧を高くし、随時、最適な電圧でマイクロコントローラ９００を動作させることができる。
【０１３９】
さらに、クリティカルパス４２０を通る際に、事前にソフト制御によって、クロック周波数を遅くする必要がなく、ハード的に電圧制御するため、マイクロコントローラ９００全体の性能を向上させることが可能となる。
【０１４０】
また、クリティカルパス４２０を通るときのみ高電圧を供給するため、低消費電力化に貢献できる。
【０１４１】
さらに、クリティカルパス４２０を通るときのみ高電圧を供給するため、クロック周波数の最高周波数を低下させずに動作させることができる。
【０１４２】
また、ソフトウェアでクロック周波数の切り替えシーケンスを守る必要がある場合、クロック周波数の切り替えを行うための余分な命令により、回路全体の性能を低下させずにすませることができる。
【０１４３】
さらに、クリティカルパスのみにおいて、応答（例えば、クロックｃｌｋ信号のクロック周波数）をマルチサイクル方式により、遅らせる場合、ＩＰを流用して回路設計し、ＩＰ内部を変更すると内部機能変更に伴う設計・検証工数が膨大となるが、本願発明の第２の実施形態ではそのような手間はなくすことができる。
【０１４４】
なお、本願発明の第１及び第２の実施形態では、クリティカルパス４２０を通るときの命令を１つ（本願発明では、乗算命令時）と仮定したが、クリティカルパス４２０が通る命令が１つ以上の場合でも命令先読み回路１２０の論理を変更することにより同様の効果を得ることができる。
【図面の簡単な説明】
【０１４５】
【図１】本願発明の第１の実施の形態におけるマイクロコントローラを示す構成図である。
【図２】本願発明の第１の実施の形態における命令フェッチ時のリードデータ例を示す。
【図３】本願発明の第１の実施の形態における命令フェッチ時のリードデータｒｄａｔａ１例を示す。
【図４】本願発明の第１の実施の形態におけるクリティカルパスの回路例を示す。
【図５】本願発明の第１の実施の形態における命令先読み回路の回路図を示す。
【図６】本願発明の第１の実施の形態におけるクロックマスク回路の回路図を示す。
【図７】本願発明の第１の実施の形態におけるタイムチャートを示す。
【図８】本願発明の第１の実施の形態を実施した場合のクリティカルパスを介したタイムチャートを示す。
【図９】本願発明の第２の実施の形態を示す構成図である。
【図１０】本願発明の第２の実施の形態における電源電圧発生回路の回路図を示す。
【図１１】本願発明の第２の実施の形態におけるタイムチャートを示す。
【図１２】本願発明の第２の実施の形態を実施した場合のクリティカルパスを介したタイムチャートを示す。
【符号の説明】
【０１４６】
１００、９００    マイクロコントローラ
１２０    命令先読み回路（命令先読み実行手段）
１３０    クロックマスク回路（処理形態変更手段）
４２０    クリティカルパス
９３０    電源電圧発生回路（処理形態変更手段）
【図１】
2009048264.tif 000003
【図２】
2009048264.tif 000004
【図３】
2009048264.tif 000005
【図４】
2009048264.tif 000006
【図５】
2009048264.tif 000007
【図６】
2009048264.tif 000008
【図７】
2009048264.tif 000009
【図８】
2009048264.tif 000010
【図９】
2009048264.tif 000011
【図１０】
2009048264.tif 000012
【図１１】
2009048264.tif 000013
【図１２】
2009048264.tif 000014