(57)【要約】【課題】半導体素子のデータの伝送のタイミング条件が変更され、分岐命令により読み出された命令を、予め定められたタイミング条件で実行する。【解決手段】分岐命令の命令データ（１００）を読み出した後、クリティカルパスを通過する命令データ（０１１）を読み出し、クリティカルパスを命令データ（０１１）が通過することに備えて、クロック信号ｃｌｋ１を２つに１つマスクして、クリティカルパスの半導体素子に入力するクロック信号ｃｌｋの周波数を小さくすることを開始（Ｔ９）しても、分岐命令の命令データ（１００）に応じて命令データを読み出し実行する際に、クロック信号ｃｌｋ１をマスクすることを停止させる（Ｔ１０）ので、分岐命令により読み出された命令を、予め定められたタイミング条件で実行する。【選択図】図１１
2010231542.tif 000002
【特許請求の範囲】
【請求項１】
処理の実行を命ずる命令を識別する各々異なる複数の命令データを記憶する記憶手段と、
複数の半導体素子を備え、データの伝送のタイミングに影響を及ぼす予め定められたタイミング条件において各半導体素子間でデータを第１の時間で伝送可能な第１の半導体集積回路部と、複数の半導体素子を備え、該予め定められたタイミング条件では各半導体素子間でデータを該第１の時間よりも長い第２の時間でなければ伝送し終わらない第２の半導体集積回路部と、を備え、実行する命令及び該命令の次に実行予定の命令の命令データを含む複数の命令データを順に読み出す指示を与え、該指示に応じて順に読み出された複数の命令データ各々が入力されて、各命令データに応じて定まる該第１の半導体集積回路部又は該第２の半導体集積回路部に伝送させる制御手段と、
前記制御手段により前記読み出す指示が与えられ、該指示に応じて前記複数の命令データを順に前記記憶手段から読み出して、前記制御手段に入力する読出入力手段と、
前記第１の時間間隔で前記各半導体素子にデータの伝送のタイミングの基準となる基準信号を生成して前記各半導体素子に入力する生成手段と、
所定の指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更する変更手段と、
前記読出入力手段により出力される前記複数の命令データが順に入力され、該入力された命令データが、前記第２の半導体集積回路部に伝送されるものであると予め定められた第１の命令データである場合、前記制御手段により前記第２の半導体集積回路部を該第１の命令データが伝送され始めるときから、前記指示信号を前記変更手段に入力し続ける指示手段と、
次に実行すべき命令を識別する第２の命令データを前記記憶手段から次に読み出すことを内容とする分岐命令を識別する第３の命令データが予め定められ、前記読出入力手段により出力される前記複数の命令データが順に入力され、該入力された命令データが前記第３の命令データでありかつ前記指示手段が前記指示信号を前記変更手段に入力している場合、前記記憶手段から読み出された前記第２の命令データが前記制御手段により前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻す停止手段と、
を備えた半導体集積回路装置。
【請求項２】
前記分岐命令には、予め定められた実行条件が満たされている場合にのみ、前記第２の命令データを前記記憶手段から次に読み出すことを命ずる条件付き分岐命令が含まれ、
前記第３の命令データには、前記条件付き分岐命令を識別する第４の命令データが含まれ、
前記制御手段は、前記第４の命令データの入力に応じて前記実行条件が満たされているか否かを判断し、前記実行条件が満たされていないと判断した場合には、前記停止手段による前記中断が無効となるように制御する
ことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
前記変更手段は、前記タイミング条件の変更として、前記基準信号の入力間隔を長くする第１の変更処理及び各半導体素子へ印加する電圧を大きくする第２の変更処理の少なくとも一方を行なうことを特徴とする請求項１又は請求項２に記載の半導体集積回路装置。
【請求項４】
請求項１に記載の半導体集積回路装置のデータ伝送方法であって、
前記制御手段が、前記第３の命令データ、前記第１の命令データ、及び前記第２の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第３の命令データ、前記第１の命令データ、及び前記第２の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、
前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、
前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、
前記制御手段が、前記第３の命令データの次に入力された前記第１の命令データを無視して、前記第２の命令データを、前記第１の半導体集積回路部に伝送するステップと、
前記停止手段が、前記制御手段により前記第２の命令データが前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻すステップと、
を備えた半導体集積回路装置のデータ伝送方法。
【請求項５】
請求項１に記載の半導体集積回路装置のデータ伝送方法であって、
前記制御手段が、前記第１の命令データ、前記第３の命令データ、及び前記第２の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第１の命令データ、前記第３の命令データ、及び前記第２の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、
前記制御手段が、前記第１の命令データを前記第２の半導体集積回路部に伝送するステップと、
前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、
前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、
前記制御手段が、前記第１の命令データを前記第２の半導体集積回路部に伝送した後、前記読出入力手段により入力された第２の命令データを、前記第１の半導体集積回路部に伝送するステップと、
前記停止手段が、前記制御手段により前記第２の命令データが前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻すステップと、
を備えた半導体集積回路装置のデータ伝送方法。
【請求項６】
請求項２に記載の半導体集積回路装置のデータ伝送方法であって、
前記制御手段が、前記第４の命令データ及び前記第１の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第４の命令データ及び前記第１の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、
前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、
前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、
前記制御手段が、前記第４の命令データの入力に応じて前記予め定められた実行条件が満たされているか否かを判断し、該実行条件が満たされていないと判断した場合、前記停止手段による前記中断が無効となるように制御すると共に、前記第１の命令データを前記第２の半導体集積回路部に伝送するステップと、
を備えた半導体集積回路装置のデータ伝送方法。
【請求項７】
前記変更手段は、前記タイミング条件の変更として、前記基準信号の入力間隔を長くする第１の変更処理及び各半導体素子へ印加する電圧を大きくする第２の変更処理の少なくとも一方を行なうことを特徴とする請求項４〜請求項６の何れか１項に記載の半導体集積回路装置のデータ伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置及び半導体集積回路装置のデータ伝送方法に係り、特に、第１の半導体集積回路部と、第２の半導体集積回路部と、を備え、複数の命令データを順に読み出し、読み出した複数の命令データ各々を、各命令データに応じて定まる該第１の半導体集積回路部又は該第２の半導体集積回路部に伝送させる半導体集積回路装置及び半導体集積回路装置のデータ伝送方法に関するものである。
【背景技術】
【０００２】
従来、半導体集積回路装置の中には、クロック生成回路、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔであり、以下、ＣＰＵと呼ぶ）、メモリコントローラ、メモリ、及びレギュレータで構成されているものがある。
【０００３】
このような半導体集積回路装置のメモリには、処理の実行を命ずる命令を識別する各々異なる複数の命令データが記憶されている。ＣＰＵは、各々複数の半導体素子を備えた複数の半導体集積回路部を備え、メモリコントローラを制御して、メモリから読み出された命令データを、該命令データに応じて定まる半導体集積回路部を伝送して、命令データにより識別される命令を実行するようにしている。
【０００４】
このような半導体集積回路装置は、コンピュータシステムを１つの集積回路に組み込んだものであり、電子機器の制御用に最適化されている。パーソナルコンピュータに用いられる汎用マイクロプロセッサと比較すると、自己充足性と低価格性を重視したタイプのマイクロプロセッサと言える。
【０００５】
ところで、上記中央処理装置が備える複数の半導体集積回路部各々は、データの伝送のタイミングに影響を及ぼす予め定められたタイミング条件（例えば、所定周期で入力されるクロック信号の入力タイミング）において各半導体素子間でデータを所定の時間で伝送可能である。しかし、中には、このような予め定められたタイミング条件では各半導体素子間でデータを該所定の時間よりも長い時間でなければ伝送し終わらないものも存在する。このような半導体集積回路部のデータが伝送されるルートはクリティカルパスと言われる。
【０００６】
ここで、ＣＰＵがメモリから読み出された命令データを上記クリティカルパスに、上記予め定められたタイミング条件で伝送しようとする場合に、次のようなことが生ずる。即ち、上記のようにクリティカルパスでは各半導体素子間でデータを該所定の時間よりも長い時間でなければ伝送し終わらない。よって、ある半導体素子が、上記タイミング条件でデータを伝送しなければならない次の半導体素子にデータを伝送しても、次の半導体素子がデータを伝送するタイミングまでに、当該ある半導体素子から伝送されたデータが間に合わないことがある。
【０００７】
そこで、このような事実に鑑み、従来、命令データがクリティカルパスを伝送されるときのみタイミング条件の変更として、例えば、クロック信号の入力間隔を長くする技術が提案されている（例えば特許文献１参照）。
【０００８】
ところで、クロック信号の入力間隔を長くする技術として次のものもある。
【０００９】
即ち、携帯用のコンピュータでは、電池で使用している場合、電池が消耗して来ているのを知らずに使用していると、コンピュータが突然システムダウンしてしまうことがあることに鑑み、電池の電圧を監視し、ある程度まで電池が消耗してくると、その後の電池の消耗を抑制してシステムダウンに至るのを防止するため、コンピュータを動作させるクロックの周波数を低下させる技術が提案されている（例えば、特許文献２参照）。しかしながら、クロック周波数を低下させる措置を、電池がある程度消耗して来てから初めて取るので、電池の寿命を長くするという観点から見た場合、不充分である。
【００１０】
そこで、従来、ＣＰＵが実行する命令を識別する命令データが格納されているメモリから、直近に実行する命令データばかりではなく、続けて実行する命令データも複数連続して予め読み出し、それら連続する命令データが、ＣＰＵをアイドル状態にすることが可能なアイドル命令である場合には、クロック発生器に周波数変更指令を送って、クロック周波数を予め定めてある低い周波数に低下させる技術が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−４８２６４号公報
【特許文献２】特開平３−２６９７１１号公報
【特許文献３】特開平６-３３２５６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、上記命令には、上記アイドル命令の他に、割り込み命令、即ち、ある条件を満たしているか否かを判断し、その判断結果に応じて次に実行すべき命令を決定する分岐命令もあり、連続的に読み出した命令が、分岐命令、アイドル命令、アイドル命令の場合がある。
【００１３】
しかし、この場合、分岐命令による判断結果に応じて読み出した命令を実行する際に、上記のようにアイドル命令が連続して読み出されてクロック周波数が低下されてしまうので、分岐命令の読出しに応じて読み出した命令を、低下したクロック周波数で実行することになり、動作性能が遅くなる。
【００１４】
本発明は、上記事実に鑑みなされたもので、半導体素子のデータの伝送のタイミング条件が変更され、分岐命令により読み出された命令を、予め定められたタイミング条件で実行することが可能な半導体集積回路装置及び半導体集積回路装置のデータ伝送方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、請求項１記載の発明の半導体集積回路装置は、処理の実行を命ずる命令を識別する各々異なる複数の命令データを記憶する記憶手段と、複数の半導体素子を備え、データの伝送のタイミングに影響を及ぼす予め定められたタイミング条件において各半導体素子間でデータを第１の時間で伝送可能な第１の半導体集積回路部と、複数の半導体素子を備え、該予め定められたタイミング条件では各半導体素子間でデータを該第１の時間よりも長い第２の時間でなければ伝送し終わらない第２の半導体集積回路部と、を備え、実行する命令及び該命令の次に実行予定の命令の命令データを含む複数の命令データを順に読み出す指示を与え、該指示に応じて順に読み出された複数の命令データ各々が入力されて、各命令データに応じて定まる該第１の半導体集積回路部又は該第２の半導体集積回路部に伝送させる制御手段と、前記制御手段により前記読み出す指示が与えられ、該指示に応じて前記複数の命令データを順に前記記憶手段から読み出して、前記制御手段に入力する読出入力手段と、前記第１の時間間隔で前記各半導体素子にデータの伝送のタイミングの基準となる基準信号を生成して前記各半導体素子に入力する生成手段と、所定の指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更する変更手段と、前記読出入力手段により出力される前記複数の命令データが順に入力され、該入力された命令データが、前記第２の半導体集積回路部に伝送されるものであると予め定められた第１の命令データである場合、前記制御手段により前記第２の半導体集積回路部を該第１の命令データが伝送され始めるときから、前記指示信号を前記変更手段に入力し続ける指示手段と、次に実行すべき命令を識別する第２の命令データを前記記憶手段から次に読み出すことを内容とする分岐命令を識別する第３の命令データが予め定められ、前記読出入力手段により出力される前記複数の命令データが順に入力され、該入力された命令データが前記第３の命令データでありかつ前記指示手段が前記指示信号を前記変更手段に入力している場合、前記記憶手段から読み出された前記第２の命令データが前記制御手段により前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻す停止手段と、を備えている。
【００１６】
請求項２記載の発明の半導体集積回路装置は、請求項１に記載の発明において、前記分岐命令には、予め定められた実行条件が満たされている場合にのみ、前記第２の命令データを前記記憶手段から次に読み出すことを命ずる条件付き分岐命令が含まれ、前記第３の命令データには、前記条件付き分岐命令を識別する第４の命令データが含まれ、前記制御手段は、前記第４の命令データの入力に応じて前記実行条件が満たされているか否かを判断し、前記実行条件が満たされていないと判断した場合には、前記停止手段による前記中断が無効となるように制御することを特徴とする。
【００１７】
請求項３記載の発明の半導体集積回路装置は、請求項１又は請求項２に記載の発明において、前記変更手段は、前記タイミング条件の変更として、前記基準信号の入力間隔を長くする第１の変更処理及び各半導体素子へ印加する電圧を大きくする第２の変更処理の少なくとも一方を行なうことを特徴とする。
【００１８】
請求項４記載の発明は、請求項１に記載の半導体集積回路装置のデータ伝送方法であって、前記制御手段が、前記第３の命令データ、前記第１の命令データ、及び前記第２の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第３の命令データ、前記第１の命令データ、及び前記第２の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、前記制御手段が、前記第３の命令データの次に入力された前記第１の命令データを無視して、前記第２の命令データを、前記第１の半導体集積回路部に伝送するステップと、前記停止手段が、前記制御手段により前記第２の命令データが前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻すステップと、を備えている。
【００１９】
請求項５記載の発明は、請求項１に記載の半導体集積回路装置のデータ伝送方法であって、前記制御手段が、前記第１の命令データ、前記第３の命令データ、及び前記第２の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第１の命令データ、前記第３の命令データ、及び前記第２の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、前記制御手段が、前記第１の命令データを前記第２の半導体集積回路部に伝送するステップと、前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、前記制御手段が、前記第１の命令データを前記第２の半導体集積回路部に伝送した後、前記読出入力手段により入力された第２の命令データを、前記第１の半導体集積回路部に伝送するステップと、前記停止手段が、前記制御手段により前記第２の命令データが前記第１の半導体集積回路部に伝送される際に、前記指示手段による前記指示信号の入力を停止させて前記変更されたタイミング条件を前記予め定められたタイミング条件に戻すステップと、を備えている。
【００２０】
請求項６記載の発明は、請求項２に記載の半導体集積回路装置のデータ伝送方法であって、前記制御手段が、前記第４の命令データ及び前記第１の命令データを順に読み出す指示を与えると共に、前記読出入力手段が、前記指示に応じて前記第４の命令データ及び前記第１の命令データを順に前記記憶手段から読み出して、前記制御手段、前記指示手段、及び前記停止手段に入力する場合、前記指示手段が、前記第１の命令データの入力に応じて前記指示信号を前記変更手段に入力するステップと、前記変更手段が、前記指示信号が入力され続ける間、前記基準信号の入力間隔に応じて定まる所定時間以内に、前記第２の半導体集積回路部が前記データの伝送を終了するように、前記第２の半導体集積回路部に対する前記タイミング条件を変更するステップと、前記制御手段が、前記第４の命令データの入力に応じて前記予め定められた実行条件が満たされているか否かを判断し、該実行条件が満たされていないと判断した場合、前記停止手段による前記中断が無効となるように制御すると共に、前記第１の命令データを前記第２の半導体集積回路部に伝送するステップと、を備えている。
【００２１】
請求項７記載の発明の半導体集積回路装置のデータ伝送方法は、請求項４〜請求項６の何れか１項に記載の発明において、前記変更手段は、前記タイミング条件の変更として、前記基準信号の入力間隔を長くする第１の変更処理及び各半導体素子へ印加する電圧を大きくする第２の変更処理の少なくとも一方を行なうことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、分岐命令データが読み出されかつタイミング条件が変更されている場合、分岐命令データに応じた命令データが半導体集積回路部に伝送される際に、変更されたタイミング条件を予め定められたタイミング条件に戻すようにしているので、当該分岐命令に応じて読み出された命令を、予め定められたタイミング条件で実行することができる、という効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】従来技術のマイクロコントローラ１００を示す構成図である。
【図２】従来技術の命令フェッチ時のリードデータ例２００を示す図である。
【図３】従来技術の命令オペコード例３００を示す図である。
【図４】クリティカルパスの概念図である。
【図５】従来技術の命令先読み回路１２０の回路図である。
【図６】従来技術のクロックマスク回路１３０の回路図である。
【図７】従来技術のタイムチャートである。
【図８】クリティカルパスを介したタイムチャートである。
【図９】従来技術の他のタイムチャートである。
【図１０】本願発明の第１の実施の形態における命令先読み回路１２０の回路図である。
【図１１】本願発明の第１の実施の形態における分岐命令後のクリティカルパス命令のタイムチャートである。
【図１２】本願発明の第１の実施の形態におけるクリティカルパス命令後の分岐命令のタイムチャートである。
【図１３】本願発明の第２の実施の形態におけるマイクロコントローラ１００の構成図である。
【図１４】本願発明の第２の実施の形態における命令先読み回路１２０の回路図である。
【図１５】本願発明の第２の実施の形態における分岐命令後のクリティカルパス命令のタイムチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の好ましい実施の形態について図面を参照しながら詳細に説明する。
【００２５】
本願発明の以下の第１の実施の形態及び第２の実施の形態は、上記従来技術の特許文献１の内容を前提としているので、以下、この技術を詳細に説明する。
【００２６】
（従来技術の構成）
図１は、従来技術のマイクロコントローラ１００を示す構成図である。
【００２７】
このマイクロコントローラ１００は、クロック生成回路１０２（生成手段）、マスタ１０４（制御手段）、スレーブ１０６（読出入力手段）、メモリ１０８（記憶手段）、及びレギュレータ１１０で構成されている。
【００２８】
クロック生成回路１０２では、クロックマスク回路１３０（処理形態変更手段）を含んで構成されており、マイクロコントローラ１００外部から供給されるクロックｃｌｋ０信号に基づいて、クロック信号ｃｌｋ、ｃｌｋ１をマイクロコントローラ１００内部の各ブロックに供給する機能を有している。なお、クロック信号ｃｌｋ、ｃｌｋ１は、コンピュータ内部の各回路、又は各回路の各素子間での処理の同期をとるための、データ伝送のタイミングの基準となる信号のことであり、このクロックｃｌｋ、ｃｌｋ１信号（他のクロック信号も含む）の速さをクロック周波数（動作周波数、単にクロックとも呼ばれる）と呼ぶ。
【００２９】
さらに、クロックマスク回路１３０については、図６において、詳細に説明する。
【００３０】
また、マスタ１０４では、例えば、ＣＰＵで構成され、定められたプログラム（メモリ１０８等に格納されている）に従って処理を行う機能を有している。即ち、マスタ１０４は、各々複数の半導体素子を備え、データの伝送のタイミングに影響を及ぼす予め定められたタイミング条件（クロック信号の入力タイミング）において各半導体素子間でデータを伝送する複数の半導体集積回路部を備えている。なお、このマスタ１０４は、データ処理のための命令（指示）を出力するものならば何でもよい。
【００３１】
さらに、スレーブ１０６では、例えば、メモリコントローラとして命令先読み回路１２０を含んで構成され、マスタ１０４からのアクセス信号を受信し、応答を返す機能を有している。なお、スレーブ１０６は、システムコントローラであってもよく、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）等の方式を採用してもよい。また、命令先読み回路１２０は、図５において、詳細に説明する。
【００３２】
また、メモリ１０８は、データ（命令データ）及びプログラム等を記憶する装置である。
【００３３】
さらに、レギュレータ１１０は、マイクロコントローラ１００の外部から供給される電源電圧Ｖｄｄ０をマイクロコントローラ１００内部の各回路ブロック（クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８）に供給する機能を有する。なお、レギュレータ（Ｒｅｇｕｌａｔｏｒ）１１０は、調整装置という意味であり、コンピュータシステムでは、電源安定装置、又は変圧装置と呼ばれる。詳細には、本願発明では、３端子レギュレータを使用しており、入力、接地、出力の３端子を持ち、入力された直流電源を平滑定電流化して出力する電圧整流素子である。
【００３４】
詳細に説明すると、クロック生成回路１０２は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０に接続されており、クロック生成回路１０２から出力されるクロックｃｌｋ信号は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０に送信されている。また、レギュレータ１１０は、クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８に接続されており、レギュレータ１１０から出力される電源電圧Ｖｄｄは、クロック生成回路１０２、マスタ１０４、スレーブ１０６、及びメモリ１０８に供給される。
【００３５】
このマイクロコントローラ１００は所定のシーケンスによって動作する。なお、シーケンスとは、シーケンス制御（Ｓｅｑｕｅｎｔａｌ  Ｃｏｎｔｒｏｌ）のことであり、予め定められた順序又は手続きに従って、制御の各段階を逐次進めていく制御のことであるが、そのときの各段階に用いられる用語を予め説明しておく。
【００３６】
（命令フェッチ、ｏｐ＿ｆｅｔｃｈ信号、及びｒｅａｄｙ信号）
マスタ１０４は、実行すべきプログラムを実行するために命令フェッチ（プロセッサが処理する命令オペコード（命令データ）をメモリから取り出し、レジスタに転送すること）を行う。また、マスタ１０４は、命令フェッチが実行されていることを示すｏｐ＿ｆｅｔｃｈ信号をスレーブ１０６に出力する。そして、マスタ１０４が発行した命令及び次の命令を実行できることを示すｒｅａｄｙ信号を受信する。詳細には、この命令フェッチアクセスは、スレーブ１０６を介してメモリ１０８に格納されているプログラムをリードする（読み込む）。
【００３７】
（リードアクセス）
マスタ１０４から命令フェッチが実行されたため、スレーブ１０６はメモリに対してリードアクセス（所望のデータを読み込むためのアクセス）を行う。
【００３８】
（リードデータｒｄａｔａ１）
メモリ１０８は、スレーブ１０６からのリードアクセスに対応したアドレスに格納されているデータであるリードデータｒｄａｔａ１を、スレーブ１０６に出力する。
【００３９】
（リードデータｒｄａｔａ２）
スレーブ１０６は、メモリ１０８からリードデータｒｄａｔａ１が入力されると、マスタ１０４にリードデータｒｄａｔａ２を入力する。
【００４０】
（クロックｃｌｋ１信号）
クロックｃｌｋ１信号は、クロックマスク回路１３０から供給され、命令先読み回路１２０を動作させるクロック（クロック信号）である。
【００４１】
（ｃｒｉ＿ｆｌａｇ信号）
ｃｒｉ＿ｆｌａｇ信号（指示信号）は、命令先読み回路１２０からクロックマスク回路１３０に出力され、クロック信号ｃｌｋ０を、所定間隔（２クロック信号に対して１つのクロック信号を）マスクすることにより、クロック周波数を遅くしてクロック信号ｃｌｋを出力させる指示を信号である。
【００４２】
（命令実行）
マスタ１０４は、スレーブ１０６を介してメモリ１０８から受け取ったリードデータｒｄａｔａ２に基づいてプログラムを実行する。詳細には、マスタ１０４がスレーブ１０６へ送信した命令フェッチ、ｏｐ＿ｆｅｔｃｈ信号、及びｒｅａｄｙ信号を基にして受信したリードデータｒｄａｔａ２には、マスタ１０４が実行すべき命令を判別できるように命令コード（図２の命令オペコード）が格納されている。そして、そのリードデータｒｄａｔａ２に格納されている命令コードを、該命令コードに応じて定まる半導体集積回路部を伝送させて、所定のプログラムを実行する。
【００４３】
命令フェッチ時のリードデータには、図２に示すような命令オペコード等のデータが格納されている。命令オペコードとは、マスタ１０４が実行すべき命令がコード化されているものであり、リードデータｒｄａｔａ１の８ビット目から１０ビット目に格納されているものとする（図３の命令オペコード例３００参照）。
【００４４】
例えば、命令コードのロード命令は命令オペコード”０００”であり、命令コードのストア命令は命令オペコード”００１”であるというように、命令コードと命令オペコードの関係を示している。なお、命令オペコードの上記各値は左から、リードデータｒｄａｔａ１における１０〜８ビット目に位置する。
【００４５】
なお、リードデータｒｄａｔａ１の他のビットには、図２に示すように、マスタ１０４が命令を実行する際に使用するソースアドレス及びディスティネーションアドレス等が格納されている。即ち、０ビット目から３ビット目までは、ソースアドレスＲｓ（典拠アドレスであり、処理に使うデータの参照先とするアドレスのことである）を示しており、ｒｄａｔａ１［３：０］と表す。また、４ビット目から７ビット目までは、ディスティネーションアドレスＲｄ（目的地アドレスであり、処理結果の格納先とするアドレスのことである）を示しており、ｒｄａｔａ１［７：４］と表す。さらに、上記のように、８ビット目から１０ビット目までは、Ｏｐｃｏｄｅ（命令オペコード）を示しており、ｒｄａｔａ１［１０：８］と表す。また、１１ビット目から３１ビット目までは、その他のコードｅｔｃを示しており、ｒｄａｔａ１［３１：１１］と表す。このように命令フェッチ時のリードデータｒｄａｔａ１例３００は”０”及び”１”のコードで表される３２ビットバス構成で示されている。
【００４６】
マスタ１０４は、命令フェッチにより受信したリードデータｒｄａｔａ２に従ってプログラムを実行する。その際、命令の種類によってはクリティカルパス４２０を通る命令が存在する。
【００４７】
また、クリティカルパス４２０とは、上記のように信号の伝搬に最も時間のかかるパス（経路）のことであり、回路の動作を規制するパスのことである。なお、複数の半導体集積回路部の内、どの半導体集積回路部がクリティカルパス４２０なのかは、コンピュータ等を用いてシミュレーションして予め特定されている。なお、クリティカルパス４２０が特定できる手段があればどのような手段を用いてもよい。
【００４８】
従って、クリティカルパス４２０における信号の伝搬には、ゲート遅延及び配線遅延などがある。
【００４９】
なお、ゲート遅延とは、信号がＡＮＤ回路等のゲートを通る際に発生する遅延のことである。さらに、配線遅延とは、文字通り、配線に信号が伝わるタイミングの遅れのことであり、微細化が進み、トランジスタ性能が極限まで高速化した結果、トランジスタ同士を接続配線で起こる信号の送信の遅れが、マイクロコントローラ１００全体の高性能化を阻害する要因になってきている。
【００５０】
図４にクリティカルパス４２０の概念図を示す。
【００５１】
フリップフロップ回路４０２、フリップフロップ回路４０４、及びフリップフロップ回路４０６は、クロック生成回路１０２で生成されたクロックｃｌｋ信号の立ち上がりエッジで動作する。
【００５２】
フリップフロップ回路４０２は、４段のバッファ４１０、４１２、４１４、４１６を介してフリップフロップ回路４０４に接続されている。
【００５３】
そこで、フリップフロップ回路４０２に入力された信号Ｉは、４段のバッファ４１０、４１２、４１４、４１６を介して、フリップフロップ回路４０４に信号ＶＩが入力され、信号ＶＩＩを出力する。
【００５４】
さらに、フリップフロップ回路４０６とフリップフロップ回路４０２の間に１段のバッファ４１８を介して接続されている。
【００５５】
詳細には、フリップフロップ回路４０２から出力された信号ＩＩは、バッファ４１０に入力され、信号ＩＩＩを出力する。また、信号ＩＩＩを入力したバッファ４１２は信号ＩＶを出力する。さらに、信号ＩＶを入力したバッファ４１４は信号Ｖを出力する。そして、信号Ｖを入力したバッファ４１６は信号ＶＩを出力し、信号ＶＩを入力したフリップフロップ回路４０４は、信号ＶＩＩを出力する。
【００５６】
なお、クロックｃｌｋ信号は、フリップフロップ回路４０２、フリップフロップ回路４０４、及びフリップフロップ回路４０６に入力されて同期信号として使用される。また、電源電圧Ｖｄｄは、各回路（フリップフロップ回路４０２、フリップフロップ回路４０４、フリップフロップ回路４０６、及びバッファ４１０、４１２、４１４、４１６、４１８）にそれぞれ供給される。
【００５７】
ここで、この回路のクリティカルパス４２０はフリップフロップ回路４０２からフリップフロップ回路４０４のパスであると仮定する。
【００５８】
また、これらの全てのセル（フリップフロップ回路４０２、フリップフロップ回路４０４、フリップフロップ回路４０６、及びバッファ４１０、４１２、４１４、４１６、４１８のセル）は、電源電圧Ｖｄｄで動作する。なお、セルとは、半導体集積回路を設計する際、半導体の機能を表す最小単位のことである。
【００５９】
図５に命令先読み回路１２０の回路図を示す。
【００６０】
命令先読み回路１２０には、ｏｐ＿ｆｅｔｃｈ信号、ｒｅａｄｙ信号、クロックマスク回路１３０から供給されるクロックｃｌｋ１信号、及びメモリ１０８からのリードデータｒｄａｔａ１が入力され、ｃｒｉ＿ｆｌａｇ信号が出力される。
【００６１】
命令先読み回路１２０のフリップフロップ回路５１２、及びフリップフロップ回路５１４は、クロックｃｌｋ１信号の立ち上がりエッジで動作する。
【００６２】
ＡＮＤ回路５２０の出力端子はＡＮＤ回路５２２の入力と接続されている。
【００６３】
ｏｐ＿ｆｅｔｃｈ信号及びｒｅａｄｙ信号が入力されるＡＮＤ回路５２０の出力信号は、ＡＮＤ回路５２２に送信される。
【００６４】
命令先読み回路１２０の外部からリードデータｒｄａｔａ１［１０］（１０ビット目）が、インバータ５３０を介し、ＡＮＤ回路５２２の入力と接続されている。また、命令先読み回路１２０の外部からリードデータｒｄａｔａ１［９］（９ビット目）及びリードデータｒｄａｔａ１［８］（８ビット目）が、ＡＮＤ回路５２２の入力と接続されている。さらに、ＡＮＤ回路５２２の出力端子は、セレクタ回路５４０の入力、及びインバータ５３４の入力に接続されている。
【００６５】
ＡＮＤ回路５２２には、リードデータｒｄａｔａ１の１０ビット目をインバータ５３０で反転した信号、リードデータｒｄａｔａ１の９ビット目の信号、及びリードデータｒｄａｔａ１の８ビット目の信号が入力される。
【００６６】
また、ＡＮＤ回路５２２の出力信号は、セレクタ回路５４０のセレクト信号（セレクタ回路５４０の出力信号を選択制御するためのコントロール信号）、及びインバータ５３４の入力信号として送信される。
【００６７】
なお、ＡＮＤ回路５２２は、ＡＮＤ回路５２２へのリードデータｒｄａｔａ１の値が、命令フェッチのデータがクリティカルパス４２０を通る命令の乗算命令（図２の”０１１”）の場合に信号を出力する（前提条件）。
【００６８】
セレクタ回路５４０には、ＡＮＤ回路５２２の出力、１’ｂ１（１ビットのバイナリ（２進数）の”１”）及びＡＮＤ回路５２４の出力端子が接続されている。また、フリップフロップ回路５１２の入力端子にセレクタ回路５４０の出力端子が接続され、フリップフロップ回路５１２の出力端子にセレクタ回路５４２及びＡＮＤ回路５２４が接続されている。
【００６９】
フリップフロップ回路５１２には、セレクタ回路５４０の出力信号が入力されている。そこで、セレクタ回路５４０に入力されるセレクト信号が”Ｈ”のときには、セレクタ回路５４０の出力信号は”Ｈ”（１’ｂ１）となる。また、セレクタ回路５４０に入力されるセレクト信号が”Ｌ”のときには、セレクタ回路５４０の出力信号はＡＮＤ回路５２４の出力信号が出力される。
【００７０】
なお、フリップフロップ回路５１２の出力信号は、ｃｒｉ＿ｆｌａｇ信号として、命令先読み回路１２０から出力されると共に、ＡＮＤ回路５２４の入力信号及びセレクタ回路５４２のセレクト信号となって送信される。
【００７１】
セレクタ回路５４２には、フリップフロップ回路５１２の出力、カウンタ回路５６０の出力、及びフリップフロップ回路５１４の出力の各々の端子が接続されている。また、インバータ５３４の出力端子が非同期リセット端子（ネガリセット端子）ｒｎを介し、フリップフロップ回路５１４の入力端子に接続されており、セレクタ回路５４２の出力端子もフリップフロップ回路５１４の入力端子に接続されている。さらに、フリップフロップ回路５１４の出力端子は、セレクタ回路５４２の入力、カウンタ回路５６０の入力、及び比較回路５５０の入力端子に接続されている。そして、比較回路５５０では、フリップフロップ回路５１４の出力、及び’ｄ１００（ｄｅｃｉｍａｌ  ｄｉｇｉｔｓ（１０進数）の”１００”）が入力されている。また、ＡＮＤ回路５２４のもう一方の入力端子には、比較回路５５０の出力端子がインバータ５３２を介して接続されている。
【００７２】
フリップフロップ回路５１４には、セレクタ回路５４２の出力信号が入力されている。そこで、セレクタ回路５４２に入力されるセレクト信号が”Ｈ”のときには、セレクタ回路５４２の出力信号は、カウンタ回路５６０によって、フリップフロップ回路５１４の出力信号＋１の値となる。また、セレクタ回路５４２に入力されるセレクト信号が”Ｌ”のときには、セレクタ回路５４２の出力信号は、フリップフロップ回路５１４の出力信号が出力される。
【００７３】
そして、フリップフロップ回路５１４は、非同期リセット信号（反転リセットを示すネガリセット信号）が、インバータ５３４及びネガリセット端子ｒｎを介して入力され、”Ｌ”のとき”０”を保持し、リセットを行う。また、比較回路５５０は、フリップフロップ回路５１４の出力信号と固定値の１０進数の”１００”と比較し、フリップフロップ回路５１４の値が１００になったときに出力信号”Ｈ”とし、それ以外の場合は出力を”Ｌ”とする回路である。詳細には、フリップフロップ回路５１４の値が１００になり、出力信号”Ｈ”となったときには、フリップフロップ回路５１４の値はリセットされ、出力信号”Ｌ”のときには、フリップフロップ回路５１４の値は＋１ずつカウントを続行する。
【００７４】
また、フリップフロップ回路５１２、フリップフロップ回路５１４には、それぞれ同期して動作するようにクロックｃｌｋ１信号が入力されている。
【００７５】
さらに、非同期リセット信号については、一番はじめは、ＡＮＤ回路５２２のパルスが立ち上がったときをトリガーとして非同期にリセットをかける。
【００７６】
なお、インバータ５３０、ＡＮＤ回路５２３を備えるように構成したのは、クリティカルパス４２０を通る乗算命令データが”０１１”であるとしているからである。従って、クリティカルパス４２０を通る際、乗算命令でない場合、例えば、ＡＮＤ命令”１０１”の場合には、リードデータｒｄａｔａ１［１０］に入力される場所にインバータ５３０はなく、リードデータｒｄａｔａ１［９］に入力される場所にインバータ５３０が設置される。以上、述べたようにクリティカルパス４２０において、どんな命令に時間がかかるか、どの程度の頻度で関わるかなどの条件を基に、ある程度の場所が分かって、はじめて、素子や配線等の遅延が大きくなることが前提条件となるので、本願発明のような乗算命令が前提条件とならない場合もある。
【００７７】
図６にクロックマスク回路１３０の回路図を示す。
【００７８】
セレクタ回路６３０には、コントローラ信号として命令先読み回路１２０からの出力（ｃｒｉ＿ｆｌａｇ信号）、固定値”０”、及びインバータ６２０の出力の出力端子が接続されている。また、セレクタ回路６３０の出力端子は、フリップフロップ回路６１０の入力端子に接続されている。さらに、フリップフロップ回路６１０では、フリップフロップ回路６１０の出力端子はインバータ６２０の入力及びＯＲ回路６４０の入力端子に接続されている。なお、クロックｃｌｋ０信号端子が、マイクロコントローラ１００の外部から、フリップフロップ回路６１０の入力、及びＯＲ回路６４０の入力の入力端子に接続されている。
【００７９】
クロックマスク回路１３０は、マイクロコントローラ１００の外部から供給されるクロックｃｌｋ０信号、及び命令先読み回路１２０からの出力信号であるｃｒｉ＿ｆｌａｇ信号が入力される。また、クロックマスク回路１３０は、命令先読み回路１２０を動作させるクロックｃｌｋ１信号を出力する。さらに、クロックマスク回路１３０は、マスタ１０４、スレーブ１０６、メモリ１０８、及びレギュレータ１１０を動作させるクロックｃｌｋ信号を出力する。
【００８０】
入力信号ｃｒｉ＿ｆｌａｇ信号は、セレクタ回路６３０のセレクト信号として送信される。
【００８１】
セレクタ回路６３０は、セレクト信号（ｃｒｉ＿ｆｌａｇ信号）が”０”のときにはセレクタ回路６３０の出力は”０”で固定される。セレクト信号（ｃｒｉ＿ｆｌａｇ信号）が”１”のときにはセレクタ回路６３０の出力信号はインバータ６２０の出力信号を選択する。
【００８２】
フリップフロップ回路６１０の出力信号は、インバータ６２０を介して、セレクタ回路６３０に送信される。また、フリップフロップ回路６１０の出力信号は、ＯＲ回路６４０の入力信号として入力される。なお、フリップフロップ回路６１０には、クロックｃｌｋ０信号がマイクロコントローラ１００の外部から入っているので、初期値”０”が保持されている。
【００８３】
ＯＲ回路６４０のもう一方の入力には、クロックｃｌｋ０信号が入力され、出力信号はクロックｃｌｋ信号としてクロックマスク回路１３０から出力される。なお、もう一方の出力信号クロックｃｌｋ１信号はクロックｃｌｋ０信号がそのまま送信される（クロックｃｌｋ１信号＝クロックｃｌｋ０信号）。
【００８４】
（従来技術の作用）
次に、以下、従来技術の作用を説明する。
【００８５】
最初に、図７を参照して、分岐命令データの読み出しが指示されていない場合の作用を説明する。
【００８６】
時刻Ｔ１において、マスタ１０４からアドレス0x0000_0000（Hexadecimal）に対する命令フェッチが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【００８７】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【００８８】
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパスの乗算命令”０１１”である。
【００８９】
時刻Ｔ４において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０のＡＮＤ回路５２２、セレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【００９０】
時刻Ｔ５において、命令先読み回路１２０のＡＮＤ回路５２２の出力信号が”Ｌ”となり、命令先読み回路１２０のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ４において、ＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。さらに、マスタ１０４は、次のアドレス0x0000_0004（Hexadecimal）に対する命令フェッチを出力する。
【００９１】
時刻Ｔ６において、時刻Ｔ５でｃｒｉ＿ｆｌａｇ信号が”Ｈ”になることにより、クロックマスク回路１３０のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクしていく。通常のクロック周波数であるクロックｃｌｋ１信号（クロックｃｌｋ０信号）の周期は遅くなり、クリティカルパスを通っても誤動作を起こさないように、通常のクロック周波数の半分の速度に落としたクロックｃｌｋ信号に変更される。
【００９２】
時刻Ｔ７において、命令先読み回路１２０のフリップフロップ回路５１４は’ｄ１００（１０進数の１００）となり、命令先読み回路１２０のフリップフロップ回路５１２の入力信号は”Ｌ”となる。
【００９３】
時刻Ｔ８において、命令先読み回路１２０のフリップフロップ回路５１２は”Ｌ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｌ”となり、通常のクロック周波数の半分の速度に変更されたクロックｃｌｋ信号は通常のクロック周波数に戻って動作する。
【００９４】
次に、図８を参照して、クリティカルパス４２０を介したタイムチャート８００を示す。
【００９５】
タイムチャート８００は、図４の回路のタイムチャートである。
【００９６】
（経過１−１）時刻Ｔ１において、クロックｃｌｋ信号の立ち上がりによりフリップフロップ回路４０２の信号Ｉが”１”に変化する。
【００９７】
（経過１−２）時刻Ｔ２において、クロックｃｌｋ信号の立ち上がりで信号Ｉがフリップフロップ回路４０２に保持される。
【００９８】
（経過１−３）時刻Ｔ３において、信号ＩＩが”１”に変化する。
【００９９】
（経過１−４）時刻Ｔ４において、信号ＩＩＩが”１”に変化する。
【０１００】
（経過１−５）時刻Ｔ５において、信号ＩＶが”１”に変化する。
【０１０１】
（経過１−６）時刻Ｔ６において、信号Ｖが”１”に変化する。
【０１０２】
（経過１−７）時刻Ｔ７において、信号ＶＩが”１”に変化する。
【０１０３】
（経過１−８）時刻Ｔ８において、信号ＶＩが”１”に変化するとき、クロックｃｌｋ信号の立ち上がりエッジはないため、フリップフロップ回路４０２で保持したクロックｃｌｋ信号の次の立ち上がりエッジはない。
【０１０４】
（経過１−９）時刻Ｔ９において、クロックｃｌｋ信号の立ち上がりで入力データを保持するのでフリップフロップ回路４０４は信号ＶＩを保持する。
【０１０５】
（経過１−１０）時刻Ｔ１０において、信号ＶＩＩが”１”と出力されるため、フリップフロップ回路４０２からフリップフロップ回路４０４までの信号伝搬時間が、クロックｃｌｋ信号のクロック周波数の所定周期である１周期（１サイクル）以内に収まる。
【０１０６】
このように上記従来技術では、クリティカルパス４２０を通る命令を先読みすることにより、クリティカルパス４２０を通るときのみクロック周波数の周波数を遅くすることができる。
【０１０７】
次に、図９を参照して、上記従来技術において、分岐命令データの読み出しが指示された場合の作用を説明する。
ここで、上記のように分岐命令とは、割り込み命令、即ち、次に実行すべき命令をメモリから次に読み出すことを内容とする命令である。したがって、通常マスタから命令フェッチが実行された場合、そのアドレスはインクリメントされるが、分岐命令により一連の命令から離れたアドレスに制御が移ると命令アドレスは単なるインクリメントとならない。一例として、ARM926の命令フェッチでは、命令フェッチする場合、命令フェッチアドレスは0x0000_0010（Hexadecimal）の後0x0000_0014（Hexadecimal）のように+4されるが、分岐命令の場合は0x0000_0010（Hexadecimal）の後0xD000_0000（Hexadecimal）のように単なるインクリメントではなく離れたアドレスに制御が移る。
時刻Ｔ１において、マスタ１０４からアドレス0x0000_0010（Hexadecimal）に対する命令フェッチが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１０８】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１０９】
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、分岐命令”１００”である。
【０１１０】
時刻Ｔ４において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時にｒｅａｄｙ信号が”Ｈ”となる。
時刻Ｔ５において、マスタ１０４は、次のアドレス0x0000_0014（Hexadecimal）に対する命令フェッチを出力する。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１１１】
時刻Ｔ６において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１１２】
時刻Ｔ７において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパスの乗算命令”０１１”である。
【０１１３】
時刻Ｔ８において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０のＡＮＤ回路５２２、セレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【０１１４】
時刻Ｔ９において、命令先読み回路１２０のＡＮＤ回路５２２の出力信号が”Ｌ”となり、命令先読み回路１２０のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ８において、ＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。さらに、マスタ１０４は、次のアドレス0xD000_0000（Hexadecimal）に対する命令フェッチを出力する。このアドレスは、時刻Ｔ１でマスタ１０４が受け取った分岐命令により分岐したアドレスである。マスタ１０４は、分岐命令を実行することにより、分岐命令の次の命令である0x0000_0014（Hexadecimal）の命令は実行しない。この命令0x0000_0014（Hexadecimal）は分岐命令から戻ってきた際に再度命令フェッチすることにより実行される。
【０１１５】
時刻Ｔ１０において、時刻Ｔ９でｃｒｉ＿ｆｌａｇ信号が”Ｈ”になることにより、クロックマスク回路１３０のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクしていく。通常のクロック周波数であるクロックｃｌｋ１信号（クロックｃｌｋ０信号）の周期は遅くなり、クリティカルパスを通っても誤動作を起こさないように、通常のクロック周波数の半分の速度に落としたクロックｃｌｋ信号に変更される。
【０１１６】
時刻Ｔ１１において、クロック周波数を遅くしても、分岐命令によりクリティカルパスがある乗算命令は実行されないため、LSI全体としてみるとクロック周波数のみ遅くなる。したがって、LSI全体の性能が落ちるという問題がある。
【０１１７】
時刻Ｔ１３において、アドレス0x0000_0010（Hexadecimal）に対する分岐命令が完了し、マスタ１０４は、次のアドレス0x0000_0014（Hexadecimal）に対する命令フェッチを出力する。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１１８】
時刻Ｔ１４において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１１９】
時刻Ｔ１５において、命令先読み回路１２０のフリップフロップ回路５１４は’ｄ１００（１０進数の１００）となり、命令先読み回路１２０のフリップフロップ回路５１２の入力信号セレクタ５４０の出力は”Ｌ”となる。それと同時に、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパスの乗算命令”０１１”である。
【０１２０】
時刻Ｔ１６において、命令先読み回路１２０のフリップフロップ回路５１２は”Ｌ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｌ”となり、通常のクロック周波数の半分の速度に変更されたクロックｃｌｋ信号は通常のクロック周波数に戻って動作する。また、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０のＡＮＤ回路５２２、セレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【０１２１】
時刻Ｔ１７において、命令先読み回路１２０のＡＮＤ回路５２２の出力信号が”Ｌ”となり、命令先読み回路１２０のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ１６において、ＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。
このように、分岐命令を実行している時刻Ｔ９から時刻Ｔ１６の期間に、クロック周波数が遅くなり、LSI全体の性能が低下することとなる。
【０１２２】
（第１実施の形態）
次に、本願発明の第１の実施の形態を説明する。
【０１２３】
（第１実施の形態の構成）
図１０に、第１の実施の形態における命令先読み回路１２０の回路図を示す。なお、上記の従来技術の命令先読み回路１２０の回路を示す構成図と、同一の構成には、同一の符号を付して、その説明を省略する。
【０１２４】
第１の実施の形態における命令先読み回路１２０には、上記の従来技術の命令先読み回路１２０の回路に図１０の点線で囲まれた命令先読み付加回路１２１を付している。
【０１２５】
第１の実施の形態における命令先読み付加回路１２１のフリップフロップ回路７３０は、クロックｃｌｋ１信号の立ち上がりエッジで動作する。
【０１２６】
ＡＮＤ回路７００には、ＡＮＤ回路５２０の出力信号、外部からリードデータｒｄａｔａ１の１０ビット目の信号、外部からリードデータｒｄａｔａ１の９ビット目をインバータ回路７１１で反転した信号、及び外部からのリードデータｒｄａｔａ１の８ビット目をインバータ回路７１０で反転した信号を入力している。よって、ＡＮＤ回路７００は、リードデータｒｄａｔａ１に、分岐命令データ”１００”が存在する場合に、信号（Ｈ）を出力する。
【０１２７】
またＡＮＤ回路７００の出力信号端子は、ＯＲ回路７４０に接続され、ＯＲ回路７４０のもう一方の入力端子にはインバータ回路７１２の出力信号端子が接続されている。
【０１２８】
インバータ回路７１２は、フリップフロップ回路７３０の出力信号が０の時に“Ｈ”となる信号が入力される。
【０１２９】
ＯＲ回路７４０の出力信号は、セレクタ回路７２０のセレクト信号に接続される。また、セレクタ回路７２０には、フリップフロップ回路７３０の出力信号及びその出力に＋１した信号が接続されている。
【０１３０】
セレクタ回路７２１には、セレクタ回路７２０の出力、フリップフロップ回路７３０の出力信号が５の時に“Ｈ”となる信号及び３‘ｂ０００（３ビットのバイナリ（２進数）の”０００”）の各端子が接続されている。セレクタ回路７２１のセレクト信号はフリップフロップ回路７３０の出力信号が５の時に“Ｈ”となる信号である。
【０１３１】
また、フリップフロップ回路７３０の入力端子に、セレクタ回路７２１の出力端子が接続されている。そこで、セレクタ回路７２１に入力されるセレクト信号が“Ｈ”のときには、セレクタ回路７２１の出力信号は３‘ｂ０００となる。また、セレクタ回路７２１に入力されるセレクト信号が“Ｌ”のときには、セレクタ回路７２１の出力信号はセレクタ回路７２０の出力信号が出力される。すなわち、セレクタ回路７２１に入力されるセレクト信号が“Ｌ”かつセレクタ回路７２０に入力されるセレクト信号が“Ｈ”のときには、セレクタ回路７２１の出力信号はフリップフロップ７３０の出力に＋１した信号が出力され、セレクタ回路７２１に入力されるセレクト信号が“Ｌ”かつセレクタ回路７２０に入力されるセレクト信号が“Ｌ”のときには、セレクタ回路７２１の出力信号はフリップフロップ７３０の出力信号が出力される。なお、フリップフロップ７３０の初期値は“0”である。
【０１３２】
インバータ回路７１３には、フリップフロップ回路７３０の出力信号が５の時に“Ｈ”となる信号が入力され、ＡＮＤ回路７０１に接続されている。ＡＮＤ回路７０１は、上記従来の命令先読み回路のＡＮＤ回路５２４の代わりとなるが、ＡＮＤ回路７０１は入力にインバータ回路７１３の出力信号が入力されること以外は、ＡＮＤ回路５２４と同様の構成である。
【０１３３】
（第１実施の形態の作用）
次に、第１の実施の形態の作用を説明する。図１１に、本願発明の第１の実施の形態における分岐命令後のクリティカルパス命令のタイムチャートを示す。
【０１３４】
本願発明の第１の実施の形態において、乗算命令時にクリティカルパスを通ると仮定する（前提条件）。また、マスタ１０４は、リードデータｒｄａｔａ２（分岐命令）を受け取った後、5サイクル後に分岐命令を実行すると仮定する。
時刻Ｔ１において、マスタ１０４からアドレス0x0000_0010（Hexadecimal）に対する命令フェッチが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。このように、マスタ１０４により命令フェッチが実行されたので、スレーブ１０６により、この命令に従うため、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１３５】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１３６】
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令データが、分岐命令データ”１００”であるとする。
【０１３７】
時刻Ｔ４において、スレーブ１０６は、マスタ１０４及び命令先読み回路１２０に対してリードデータｒｄａｔａ２を出力する。このようにスレーブ１０６は、マスタ１０４による命令フェッチを実行したので、次の命令フェッチが可能にするため、ｒｅａｄｙ信号を”Ｈ”とする。上記のように、リードデータｒｄａｔａ２の１０〜８ビット目はそれぞれ、分岐命令データの１、０、０であるので、当該１０ビット目の１、９ビット目の０がインバータ７１１で反転し、８ビット目の０がインバータ７１０で反転して、命令先読み回路１２０のＡＮＤ回路７００に入力され、ＡＮＤ回路７００の出力信号も“Ｈ”となる。
時刻Ｔ５において、マスタ１０４は、次のアドレス0x0000_0014（Hexadecimal）に対する命令フェッチを出力する。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”のままである。なお、上記のようにｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化される。
【０１３８】
ところで、このとき、フリップフロップ回路７３０の信号は、０であり、５ではないので、Ｌの信号がセレクト信号としてセレクタ７２１に入力される。また、＋１回路で＋１された信号がセレクタ回路７２０の１（Ｈ）側に入力されている。そして、上記のように、ＡＮＤ回路７００の出力信号が“Ｈ”となることにより、ＯＲ回路７４０を介してセレクタ回路７２０のセレクト信号が“Ｈ”となり、＋１された信号がセレクタ回路７２０、セレクタ回路７２１を介して、フリップフロップ回路７３０に入力され、フリップフロップ回路７３０は、初期値“０”からカウントアップを開始する。
【０１３９】
時刻Ｔ６において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。なお、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”のままである。
【０１４０】
時刻Ｔ７において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令が、クリティカルパスの乗算命令データ”０１１”であるとする。
【０１４１】
時刻Ｔ８において、スレーブ１０６からマスタ１０４及び命令先読み回路１２０に対してリードデータｒｄａｔａ２（１０〜８ビット目がそれぞれ、０、１、１である）を出力し、上記のように、ｒｅａｄｙ信号は”Ｌ”から”Ｈ”に変化される。
【０１４２】
リードデータｒｄａｔａ２の１０ビット目（０）がインバータ５３０で反転し、９ビット目（１）、８ビット目（１）がそれぞれ命令先読み回路１２０のＡＮＤ回路５２２に入力され、また、上記のように、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”のままであり、ｒｅａｄｙ信号も”Ｈ”であるので、ＡＮＤ回路５２２の出力信号が”Ｈ”となる（トリガーとなる）。これにより、セレクト回路５４０から出力信号（Ｈ）が命令先読み回路１２０のフリップフロップ回路５１２に入力される。
【０１４３】
このようにセレクト回路５４０から出力信号（Ｈ）が命令先読み回路１２０のフリップフロップ回路５１２に入力されたので、フリップフロップ回路５１２の出力信号は”Ｈ”となる。このため、時刻Ｔ９直後にｃｒｉ＿ｆｌａｇ信号が”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。
【０１４４】
ところで、上記のように時刻Ｔ４で０からクロック信号ｃｌｋ１の入力毎にカウントアップし始めたフリップフロップ回路７３０の出力は、時刻Ｔ９に至って“５”となるため、当該信号が５のとき信号（Ｈ）を出力する回路から信号（Ｈ）が出力され、セレクタ回路７２１のセレクト信号は“Ｈ”となり、セレクト回路７２１から０（３’ｂ０００）が出力され、フリップフロップ７３０はカウントを停止され、かつ、インバータ回路７１３の出力は“Ｌ”となる。インバータ回路７１３の出力が“Ｌ”となることによりＡＮＤ回路７０１の出力も“Ｌ”となり、セレクタ回路５４０の出力も“Ｌ”となる。それと同時に、フリップフロップ回路５１２の入力信号は“Ｌ”となる。
【０１４５】
一方、マスタ１０４は、分岐命令データに応じて次のアドレス0xD000_0000（Hexadecimal）に対する命令フェッチを出力する。このアドレスは、時刻Ｔ１でマスタ１０４が発行した命令フェッチアドレスの分岐命令により分岐したアドレスである。マスタ１０４は、分岐命令を実行するので、分岐命令の次の命令である0x0000_0014（Hexadecimal）の命令は実行しない。
【０１４６】
上記のように、時刻Ｔ９でｃｒｉ＿ｆｌａｇ信号が”Ｈ”になったので、クロックマスク回路１３０のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクすることを開始したが、上記のように、時刻Ｔ９直後でフリップフロップ回路５１２の入力信号は“Ｌ”となるため、時刻Ｔ１０直後において、ｃｒｉ＿ｆｌａｇ信号も”Ｌ”となる。また、時刻Ｔ９直後でセレクタ回路７２１へのセレクト信号が“Ｈ”となったため、セレクト回路７２１から０が出力されて、フリップフロップ回路７３０の出力は“０”となる。
【０１４７】
時刻Ｔ１１において、分岐命令の実行により乗算命令は実行されないため（クリティカルパスを通過しない）、クロック周波数を低下させる必要はない。この点、まず、時刻Ｔ８直後に、ＡＮＤ回路５２２の出力がＨとなり、時刻Ｔ９直後にｃｒｉ＿ｆｌａｇ信号がＨとなるが、フリップフロップ７３０の出力が５となり、５のとき信号（Ｈ）を出力する回路から信号（Ｈ）が出力され、インバータ７１３で反転され、ＡＮＤ回路７０１に入力され、ＡＮＤ回路７０１の出力がＬとなり、フリップフロップ回路５１２に入力され、フリップフロップ回路５１２のｃｒｉ＿ｆｌａｇ信号も”Ｌ”となり、フリップフロップ６１０が停止し、クロック周波数は元に戻る。
【０１４８】
一方、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。
【０１４９】
時刻Ｔ１２において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時にｒｅａｄｙ信号が”Ｈ”となる。以降、クリティカルパスによるクロック周波数変更は行われずに、時刻Ｔ９において指定され、読み出された命令（命令コード０００（ロード））を通常の条件で実行する。
また、図１２に本願発明の第１の実施の形態におけるクリティカルパス命令後の分岐命令のタイムチャートを示す。
【０１５０】
時刻Ｔ１において、マスタ１０４からアドレス0x0000_0010（Hexadecimal）に対する命令フェッチが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１５１】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１５２】
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパスの乗算命令”０１１”であるとする。
【０１５３】
時刻Ｔ４において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０のＡＮＤ回路５２２、セレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【０１５４】
時刻Ｔ５において、命令先読み回路１２０のＡＮＤ回路５２２の出力信号が”Ｌ”となり、命令先読み回路１２０のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ４において、ＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。さらに、マスタ１０４は、次のアドレス0x0000_0014（Hexadecimal）に対する命令フェッチを出力する。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１５５】
時刻Ｔ６において、時刻Ｔ５でｃｒｉ＿ｆｌａｇ信号が”Ｈ”になることにより、クロックマスク回路１３０のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクしていく。通常のクロック周波数であるクロックｃｌｋ１信号（クロックｃｌｋ０信号）の周期は遅くなり、クリティカルパスを通っても誤動作を起こさないように、通常のクロック周波数の半分の速度に落としたクロックｃｌｋ信号に変更される。また、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１５６】
時刻Ｔ７において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、分岐命令”１００”であるとする。また、それと同時にクロックマスク回路１３０のフリップフロップ回路６１０は”Ｌ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつｃｌｋ信号をマスクしていく。
【０１５７】
時刻Ｔ８において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時にｒｅａｄｙ信号が”Ｈ”となる。また、命令先読み回路１２０のＡＮＤ回路７００も“Ｈ”となる。
時刻Ｔ９において、マスタ１０４は、次のアドレス0x0000_0018（Hexadecimal）に対する命令フェッチを出力する。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。また、フリップフロップ回路７３０は、ＡＮＤ回路７００が“Ｈ”となることにより、セレクタ回路７２０のセレクト信号が“Ｈ”、セレクタ回路７２１のセレクト信号が“Ｌ”であるため、初期値“０”からカウントアップを開始する。
【０１５８】
時刻Ｔ１０において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。
【０１５９】
時刻Ｔ１１において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、ロード命令”０００”であるとする。
【０１６０】
時刻Ｔ１２において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時にｒｅａｄｙ信号が”Ｈ”となる。
【０１６１】
時刻Ｔ１３において、マスタ１０４は、次のアドレス0xD000_0004（Hexadecimal）に対する命令フェッチを出力する。このアドレスは、時刻Ｔ5
でマスタ１０４が発行した命令フェッチアドレスの分岐命令により分岐したアドレスである。マスタ１０４は、分岐命令を実行することにより、分岐命令の次の命令である0x0000_0018（Hexadecimal）の命令は実行しない。
【０１６２】
時刻Ｔ１４において、フリップフロップ回路７３０の出力は“５”となるため、セレクタ回路７２１のセレクト信号は“Ｈ”となり、インバータ回路７１３の出力は“Ｌ”となる。インバータ回路７１３の出力が“Ｌ”となることによりＡＮＤ回路７０１の出力も“Ｌ”となり、セレクタ回路５４０の出力も“Ｌ”となる。それと同時に、フリップフロップ回路５１２の入力信号は“Ｌ”となる。
【０１６３】
時刻Ｔ１５において、時刻Ｔ１４でフリップフロップ回路５１２の入力信号は“Ｌ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｌ”となる。また、時刻Ｔ１４でセレクタ回路７２１のセレクト信号が“Ｈ”となるため、フリップフロップ回路７３０の出力は“０”となる。
【０１６４】
時刻Ｔ１６において、マスタ１０４は、分岐命令を実行しているため、クリティカルパスがある乗算命令は実行していない。したがって、クロック周波数を遅くする必要もないため、フリップフロップ回路５１４のカウントアップは停止し、クロック周波数は元に戻る。以降、クリティカルパスによるクロック周波数変更は行われずに、通常の動作を行う。
以上説明したように、本願発明の第１の実施の形態によれば、クリティカルパス命令前後に分岐命令がある場合でも、分岐命令を実行する際にはクロック周波数を元に戻して命令を実行するため、分岐命令を実行している期間は、通常のクロック周波数で動作することとなり、ＬＳＩ全体の性能低下を防ぐことが出来る。この結果、マスタの処理時間の低減、及びＬＳＩ全体の性能向上が期待できる。
【０１６５】
（第２実施形態）
（第２実施形態の構成）
図１３に本願発明の第２の実施の形態における構成図を示すが、上記従来技術のマイクロコントローラ１００を示す構成図と同一の構成には同一の符号を付してその説明を省略する。
【０１６６】
マイクロコントローラ１００は、アドレス１５０（addr）を、マスタ１０４から出力し、スレーブ１０６へ入力する。
図１４に本願発明の第２の実施の形態における命令先読み回路１２０の回路図を示す。なお、図１０の第1の実施の形態における命令先読み回路１２０の回路を示す構成図と、同一の構成には、同一の符号を付す。
【０１６７】
命令先読み回路１２０には、図１０の第1の実施の形態における命令先読み回路１２０に図１４の点線で囲まれた命令先読み付加回路１２２を更に付している。
【０１６８】
第２の実施の形態における命令先読み付加回路１２２のフリップフロップ回路８００は、クロックｃｌｋ１信号の立ち上がりエッジで動作する。
【０１６９】
フリップフロップ回路８００には、外部からのアドレスａｄｄｒの出力端子が接続されている。
【０１７０】
外部からのアドレスａｄｄｒ及びフリップフロップ８００の出力信号に＋４した信号は、比較回路８１０に接続されている。比較回路８１０は、外部からのアドレスａｄｄｒがフリップフロップ８００の出力信号又はフリップフロップ８００の出力信号に＋４した信号と同じ値であるときには“Ｈ”を出力し、それ以外の値である時には“Ｌ”を出力する。
【０１７１】
また比較回路８１０の出力信号端子は、ＯＲ回路８２０に接続され、ＯＲ回路８２０のもう一方の入力にはインバータ回路７１３の出力信号端子が接続されている。
【０１７２】
ＯＲ回路８２０の出力信号端子は、ＡＮＤ回路８３０に接続されている。このＡＮＤ回路８３０の接続は、本願発明の図１０の第1の実施の形態における命令先読み回路１２０の回路のＡＮＤ回路７０１と前記１つの接続のみ異なるが、それ以外は、本願発明の図１０の第1の実施の形態における命令先読み回路１２０のＡＮＤ回路７０１と同様の構成である。
【０１７３】
（第２実施形態の作用）
以下、本願発明の第２の実施の形態の作用を説明する。図１５に、本願発明の第２の実施の形態における分岐命令後のクリティカルパス命令のタイムチャートを示す。
【０１７４】
図１３に本願発明の第２の実施の形態における分岐命令後のクリティカルパス命令のタイムチャートを示す。なお、この分岐命令は条件分岐命令であり、図１１のタイムチャートにおいて条件分岐命令の条件を満たさなかった場合のものである。ここで、条件分岐命令とは、ある条件が成り立った場合のみ分岐（次の命令データを読出）し、ある条件が成り立たなかった場合は分岐しない命令である。
【０１７５】
本願発明の第２の実施の形態において、乗算命令時にクリティカルパスを通ると仮定する（前提条件）。また、マスタ１０４は、リードデータｒｄａｔａ２（分岐命令）を受け取った後、5サイクル後に分岐命令を実行すると仮定する。
時刻Ｔ１において、マスタ１０４からアドレス0x0000_0010（Hexadecimal）に対する命令フェッチが実行される。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。
【０１７６】
時刻Ｔ２において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。それと同時にフリップフロップ８００は、アドレスａｄｄｒの値0x0000_0010を保持する。また、比較回路８１０の出力は、アドレスａｄｄｒとフリップフロップ８００の出力信号の値が同じであるため“Ｈ”となる。
【０１７７】
時刻Ｔ３において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、分岐命令”１００”である。ただし、この分岐命令は条件分岐命令である。
【０１７８】
時刻Ｔ４において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時にｒｅａｄｙ信号が”Ｈ”となる。また、命令先読み回路１２０のＡＮＤ回路７００も“Ｈ”となる。
時刻Ｔ５において、マスタ１０４は、次のアドレス0x0000_0014（Hexadecimal）に対する命令フェッチを出力する。このとき、命令フェッチを示す信号ｏｐ＿ｆｅｔｃｈ信号は”Ｈ”となる。なお、同時にｒｅａｄｙ信号は”Ｈ”から”Ｌ”に変化する。また、フリップフロップ回路７３０は、ＡＮＤ回路７００が“Ｈ”となることにより、セレクタ回路７２０のセレクト信号が“Ｈ”、セレクタ回路７２１のセレクト信号が“Ｌ”であるため、初期値“０”からカウントアップを開始する。このとき、比較回路８１０の出力は、アドレスａｄｄｒとフリップフロップ８００の出力信号に＋４した値が同じであるため“Ｈ”となる。
【０１７９】
時刻Ｔ６において、スレーブ１０６からメモリ１０８に対してリードアクセスが発生する。それと同時にフリップフロップ８００は、アドレスａｄｄｒの値0x0000_0014を保持する。また、比較回路８１０の出力は、アドレスａｄｄｒとフリップフロップ８００の出力信号の値が同じであるため“Ｈ”となる。
【０１８０】
時刻Ｔ７において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。このときの命令は、クリティカルパスの乗算命令”０１１”である。
【０１８１】
時刻Ｔ８において、スレーブ１０６からマスタ１０４に対してリードデータｒｄａｔａ２を出力する。それと同時に命令先読み回路１２０のＡＮＤ回路５２２、セレクタ回路５４０、及びｒｅａｄｙ信号が”Ｈ”となる（トリガーとなる）。
【０１８２】
時刻Ｔ９において、命令先読み回路１２０のＡＮＤ回路５２２の出力信号が”Ｌ”となり、命令先読み回路１２０のフリップフロップ回路５１２は”Ｈ”となるため、ｃｒｉ＿ｆｌａｇ信号も”Ｈ”となり、フリップフロップ回路５１４は０からカウントアップを開始する。詳細には、時刻Ｔ８において、ＡＮＤ回路５２２の”Ｈ”信号がトリガーパルスとなってカウント開始している。また、フリップフロップ回路７３０の出力は“５”となるため、セレクタ回路７２１のセレクト信号は“Ｈ”となり、インバータ回路７１３の出力は“Ｌ”となる。インバータ回路７１３の出力が“Ｌ”となるが、比較回路８１０の出力は“Ｈ”であるため、ＯＲ回路８２０の出力も“Ｈ”となり、ＡＮＤ回路７０１の出力、セレクタ回路５４０の出力、及びフリップフロップ回路５１２の入力信号は“Ｈ”のままである。ここで、マスタ１０４は、次のアドレス0x0000_0018（Hexadecimal）に対する命令フェッチを出力する。このアドレスは、時刻Ｔ１でマスタ１０４が発行した命令フェッチアドレスの分岐命令により分岐するアドレスであるが、この場合条件分岐命令の条件が成立しなかったため、分岐アドレスではなくインクリメントしたアドレス0x0000_0018（Hexadecimal）を発行する。
【０１８３】
時刻Ｔ１０において、時刻Ｔ９でｃｒｉ＿ｆｌａｇ信号が”Ｈ”になることにより、クロックマスク回路１３０のフリップフロップ回路６１０も”Ｈ”となり、クロックｃｌｋ０信号（＝クロックｃｌｋ１信号）の立ち上がりに合わせて１サイクル（周期）ずつマスクしていく。また、時刻Ｔ９でセレクタ回路７２１のセレクト信号が“Ｈ”となるため、フリップフロップ回路７３０の出力は“０”となる。
【０１８４】
時刻Ｔ１１において、メモリ１０８からリードデータｒｄａｔａ１が出力され、スレーブ１０６がリードデータｒｄａｔａ１を受信する。以降、乗算命令が実行されている間は、クロック周波数を変更して動作する。
【０１８５】
以上説明したように、本願発明の第２の実施の形態によれば、本願発明の第１の実施の形態の効果に加えて、条件分岐命令により、分岐しない場合でも、最適なクロック周波数で動作することが可能となり、ＬＳＩ全体の性能低下を防ぐことが出来る。この結果、マスタの処理時間の低減、及びＬＳＩ全体の性能向上が期待できる。
【０１８６】
（第１の実施形態及び第２実施形態の変形例）
以上説明した第１の実施形態及び第２実施形態では、タイミング条件の変更として、クロック信号の入力間隔を長くする処理（第１の変更処理）を実行するようにしているが、本発明は、これに限定されるものではない。即ち、上記特許文献１においても示されているように、クリティカルパスにおける各半導体素子へ印加する電圧を大きくすれば、各半導体素子のデータの伝送速度が速くなるので、クロック信号の入力間隔を長くしなくとも、各半導体素子のデータの伝送速度を速くすることにより、１サイクル内でデータの伝送を完了させることができる。そこで、上記第１の変更処理に代えて、クリティカルパスにおける各半導体素子へ印加する電圧を大きくする処理（第２の変更処理）を行なってもよい。
【０１８７】
なお、第２の変更処理では電圧を大きくするので、その分消費電力が大きくなる。一方、第１の変更処理ではクロック信号の入力間隔を長くするので、その分処理性能が低下する。そこで、消費電力の増加をある程度抑えかつ処理性能が低下することもある程度抑えるため、上記例よりクロック信号の入力間隔を短くした第１の変更処理と、上記例よりクリティカルパスにおける各半導体素子へ印加する電圧の増加を小さくした第２の変更処理と、を同時に行なうようにしてもよい。
【符号の説明】
【０１８８】
１００    マイクロコントローラ
１２０    命令先読み回路
１３０    クロックマスク回路（変更手段）
４２０    クリティカルパス
４２０    クリティカルパス（第２の半導体集積回路部）
【図１】
2010231542.tif 000003
【図２】
2010231542.tif 000004
【図３】
2010231542.tif 000005
【図４】
2010231542.tif 000006
【図５】
2010231542.tif 000007
【図６】
2010231542.tif 000008
【図７】
2010231542.tif 000009
【図８】
2010231542.tif 000010
【図９】
2010231542.tif 000011
【図１０】
2010231542.tif 000012
【図１１】
2010231542.tif 000013
【図１２】
2010231542.tif 000014
【図１３】
2010231542.tif 000015
【図１４】
2010231542.tif 000016
【図１５】
2010231542.tif 000017