(57)【要約】【課題】マイクロコンピュータにおいて、メモリの消費電力を削減することができると共に、処理効率の低下を防ぐことができる。【解決手段】メモリユニット８０は複数の動作モードに対応する。これらの複数の動作モードは、アクセス可能な通常モードと、通常モードより消費電力の少ないスタンバイモードを含む。分岐検出部７２は、ＣＰＵ６０がメモリユニット８０からフェッチした命令に対して、分岐命令を検出する。モード制御部７４は、分岐検出部７２による検出結果に応じて、メモリユニット８０の動作モードを変更する【選択図】図１
2010015375.tif 000002
【特許請求の範囲】
【請求項１】
複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備えることを特徴とするメモリ制御回路。
【請求項２】
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行うことを特徴とする請求項１に記載のメモリ制御回路。
【請求項３】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項２に記載のメモリ制御回路。
【請求項４】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項２または３に記載のメモリ制御回路。
【請求項５】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項４に記載のメモリ制御回路。
【請求項６】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項４または５に記載のメモリ制御回路。
【請求項７】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項６に記載のメモリ制御回路。
【請求項８】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項７に記載のメモリ制御回路。
【請求項９】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項８に記載のメモリ制御回路。
【請求項１０】
ＣＰＵと、
複数の動作モードを有するメモリユニットと、
メモリ制御部とを有し、
前記メモリ制御部は、
ＣＰＵが前記メモリユニットからフェッチした命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備えることを特徴とするモード制御部とを備えることを特徴とする集積回路。
【請求項１１】
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行うことを特徴とする請求項１０に記載の集積回路。
【請求項１２】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項１１に記載の集積回路。
【請求項１３】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項１１または１２に記載の集積回路。
【請求項１４】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項１３に記載の集積回路。
【請求項１５】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項１３または１４に記載の集積回路。
【請求項１６】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項１５に記載の集積回路。
【請求項１７】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項１６に記載の集積回路。
【請求項１８】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項１７に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの制御、特にマイクロコンピュータにおけるメモリの制御技術に関する。
【背景技術】
【０００２】
近年、環境問題などから電子機器の低消費電流化が強く要求されており、電子機器に備えられたマイクロコンピュータの消費電流を削減する試みがなされている。
【０００３】
図９を参照して特許文献１に開示された手法を説明する。図９は、特許文献１の図１に対応する。図示のプロセッサにおいて、ＰＣレジスタ１１はプログラムカウンタで、実行する命令のアドレスをサイクルごとに更新する。ＰＣレジスタ１１の値は実行する命令のアドレスであり、そのアドレスの命令がキャッシュメモリ１３に存在する場合にはキャッシュヒットとなり、存在しない場合にはキャッシュミスとなる。キャッシュヒットの場合には、命令デコーダ１５はその命令をデコードし、演算実行装置１６は演算を実行してＰＣレジスタ１１の値を更新する。キャッシュミスの場合には、外部記憶装置１２（メモリ）からＰＣレジスタ１１が示す命令をキャッシュメモリ１３へダウンロードする。また、周辺のアドレスの命令も同時にキャッシュメモリ１３をダウンロードしキャッシュリプレースを行う。
【０００４】
この際、分岐予測装置１４は、キャッシュリプレースした命令について分岐命令が存在するかの検索を行い、分岐命令が存在する場合には、分岐先の命令がキャッシュヒットするかキャッシュミスするかを解析する。解析の結果、分岐先の命令がキャッシュミスする場合、分析先の命令が外部記憶装置１２に存在すると考えられるので、分岐予測装置１４は分岐先の命令についてキャッシュリプレースを行って将来に備える。このとき、キャッシュリプレースに伴う外部記憶装置１２へのアクセスによって演算の待ち時間が発生する。分岐予測装置１４は、これをペナルティとしてその時間を計算すると共に、現在実行されている命令から何サイクル目に当該分岐命令が発行されるかを算出して、演算処理の実行周波数を低く変更する。
【０００５】
例えば、当該分岐命令が発行されるまで実行すべき命令数が５であり、ペナルティが２５サイクルであれば、３０サイクル内でこの５命令を実行すればよく、実行周波数を１／６低減できる。これにより、プロセッサの低消費電力化を図る。
【０００６】
また、携帯端末などの小型電子機器の機能向上に伴って、これらに備えられたマイクロコンピュータのユーザプログラムは増大の一途をたどっている。そのため、マイクロコンピュータで使用されるメモリのサイズも飛躍的に増大し、マイクロコンピュータにおいて、メモリの消費電力が大きな割合を占めるようになっている。
【０００７】
特許文献２には、メモリの消費電流を抑制することによりマイクロコンピュータの消費電流を削減する手法が開示されている。
【０００８】
この手法は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）から発行されるアドレスを監視し、現在アクセスされているメモリバンクのみを高電力レベルで活性化することによってハイパワーモードにし、他のメモリバンクをスタンバイモードにする。こうすることによって、アクセスされていないメモリバンクの消費電力は低減され、メモリ全体乃至マイクロコンピュータの消費電力が削減される。
【特許文献１】特開２００７−１９３４３３
【特許文献２】特開平１０−２８３２７５
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１の手法は、キャッシュリプレースに伴うペナルティを逆手にとって演算処理の実行周波数を下げることによって低消費電力化を図っているが、メモリの消費電力が大きな割合を占める昨今では、メモリそのものの消費電力を削減しないのでは、マイクロコンピュータ全体の消費電力の削減効用はそれほど望めない。
【００１０】
また、特許文献２の手法は、ＣＰＵが発行するアドレスを監視し、現在アクセスされているメモリバンクのみをハイパワーモードにし、それ以外のメモリバンクをスタンバイモードにしている。すなわち、スタンバイモードになっているメモリバンクがハイパワーモードに切り替わるタイミングは、アドレスが確定した後である。
【００１１】
一方、メモリをスタンバイモードからハイパワーモードへ切り替えるためには、停止中の回路の起動時間が発生する。この起動時間は、メモリリードアクセス時間よりも長いため、モードの切替えが完了するまでの間にメモリアクセスに待ち時間が生じ、システムの処理性能が低下してしまう。
【課題を解決するための手段】
【００１２】
本発明の１つの態様は、メモリ制御回路である。このメモリ制御回路は、分岐検出部とモード制御部を有する。
【００１３】
分岐検出部は、複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する。
モード制御部は、分岐検出部による検出結果に応じて、メモリユニットの動作モードを変更する。
【００１４】
なお、上記態様の回路を装置や方法、システムに置き換えて表現したものも、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明にかかる技術によれば、マイクロコンピュータにおいて、メモリの消費電力を削減することができると共に、処理効率の低下を防ぐことができる。
【発明を実施するための最良の形態】
【００１６】
本発明の具体的な実施の形態を説明する前に、まず、本発明の原理を説明する。なお、分かりやすいように、以下において、本発明の技術を適用しうる集積回路（例えばマイクロコンピュータ）に通常備えられているが、本発明の技術を説明する上で関連性の少ないものについて、説明および図示を省略する。
【００１７】
図１は、本発明にかかる技術を適用したマイクロコンピュータ５０の模式図である。マイクロコンピュータ５０は、ＣＰＵ６０と、メモリコントローラ７０と、メモリユニット８０を備える。メモリユニット８０は、複数のメモリ（図示の例では、メモリ０〜３の４つ）を有する。
【００１８】
メモリコントローラ７０は、分岐検出部７２と、モード制御部７４と、アクセス制御部７６を備える。アクセス制御部７６は、通常のマイクロコンピュータにおけるメモリコントローラの機能を担うものである。分岐検出部７２とモード制御部７４は、本発明にかかる技術の特徴部分であり、後にそれらの詳細を説明する。なお、例としてメモリコントローラ７０に備えるように図示しているが、メモリコントローラ７０と分離して設けるようにしてもよい。
【００１９】
メモリ０〜３は、不揮発性メモリセルと、センスアンプと、チャージポンプなどで構成され、ＣＰＵ６０で実行される命令や、ＣＰＵ６０が使用するデータなどを、対応するアドレスに格納している。これらのメモリは、通常モードすなわちＣＰＵ６０がそのメモリから命令をフェッチ可能な動作モード以外に、通常モードで動作時より消費電力が少ないスタンバイモードを有する。メモリのスタンバイモードは、複数の種類が考えられ、センスアンプとチャージポンプが停止するものが一例として挙げることができる。また、メモリの構成は、ここで述べたものに限られることがなく、例えば揮発性メモリであっても、本発明の技術を適用することができる。
【００２０】
分岐検出部７２は、ＣＰＵ６０がメモリ０〜３のいずれかからフェッチした命令を監視し、分岐命令であるかを検出する。また、プリフェッチの場合、一度に複数の命令がメモリからフェッチされる場合がある。この場合、分岐命令であるか否かの検出は、分岐命令が含まれているか否かの検出になる。以下の説明において、「分岐命令であるか否か」と、「分岐命令の有無」とを同じ意味で用いる。また、メモリからフェッチ（プリフェッチを含む）された命令を「フェッチコード」といい、分岐命令以外の命令を「通常命令」という。
【００２１】
分岐命令の有無の検出は、たとえば、予め分岐命令のコードをテーブル化しておき、フェッチコードとテーブルとを比較することで実現可能である。
【００２２】
分岐検出部７２は、上記検出の結果に応じて、分岐命令の有無を示す分岐検出信号をモード制御部７４に出力する。
【００２３】
モード制御部７４は、分岐検出部７２からの分岐検出信号と、分岐命令の分岐先アドレスに基づいてモード制御信号を生成してメモリ０〜３に出力して各メモリの動作モードを制御する。なお、分岐命令の分岐先アドレスは、ＣＰＵ６０により分岐命令をデコードした後に確定するものである。また、モード制御信号の例として、ここではスタンバイ信号を用いる。スタンバイ信号は、メモリ０〜３にそれぞれ対応するスタンバイ信号０〜３（図示せず）を有する。スタンバイ信号の詳細について、分岐検出部７２とモード制御部７４の具体的な動作と共に説明する。
【００２４】
図２は、分岐検出部７２とモード制御部７４の動作を説明するためのタイミングチャートである。図２に示す例において、ＣＰＵ６０が発行したフェッチアドレスのうちに、Ａ０−１〜４はメモリ０のアドレスであり、Ａ２−５〜１０はメモリ２のアドレスである。フェッチコードのうちに、命令１、分岐２、命令３、命令４は、Ａ０−１〜４にそれぞれ対応する命令であり、命令５、命令６、分岐７、命令８、命令９、命令１０は、Ａ２−５〜１０にそれぞれ対応するものである。ここで、分岐２は、メモリ２のアドレスＡ２−５へ分岐する命令であり、分岐７は、メモリ２のアドレスＡ２−８へ分岐する命令である。分岐２と分岐７は、無条件分岐と条件分岐のどちらでも構わないが、Ａ２−５への分岐、Ａ２−８への分岐は、ＣＰＵ６０が命令フェッチの後、デコードと実行などの処理を経て確定するものである。
＜時刻ｔ０＞
【００２５】
今までの処理の結果、スタンバイ信号０が非アクティブであり、メモリ０は通常モードである。他のメモリについて、スタンバイ信号がアクティブであり、これらのメモリはスタンバイモードである。
【００２６】
ＣＰＵ６０は、前にフェッチした命令のデコードや実行などの処理を行うと共に、通常モードであるメモリ０に対して、アドレスＡ０−１の命令のフェッチ要求をする。
＜時刻ｔ１＞
【００２７】
アドレスＡ０−１のフェッチの結果、メモリ０からメモリコントローラ７０を介して命令１がＣＰＵ６０に読み込まれる。ＣＰＵ６０は、次の命令をフェッチするために、メモリ０に対してアドレスＡ０−２の命令のフェッチ要求をする。また、分岐検出部７２は、命令１が分岐命令であるかの検出を行う。
【００２８】
時刻ｔ１〜ｔ２の間、ＣＰＵ６０は、命令１をデコードし実行する。命令のデコードや実行などの処理は、ＣＰＵが行う通常のパイプライン処理であり、ここで詳細を省略する。
＜時刻ｔ２＞
【００２９】
命令１が分岐命令ではないため、分岐検出部７２は、分岐検出信号を出力しない。図示のように、分岐検出信号が非アクティブのままである。そのため、モード制御部７４から出力されるスタンバイ信号０〜３は、時刻ｔ０のときと変わらない。
【００３０】
アドレスＡ０−２のフェッチの結果、分岐命令である分岐２がＣＰＵ６０に読み込まれる。また、ＣＰＵ６０は、メモリ０に対してアドレスＡ０−３の命令のフェッチ要求をし、分岐検出部７２は分岐２が分岐命令であるかの検出を行う。
時刻ｔ２〜ｔ３の間、ＣＰＵ６０は分岐２のデコードや実行を行う。
＜時刻ｔ３＞
【００３１】
ＣＰＵ６０は、メモリ０に対してアドレスＡ０−４の命令のフェッチ要求をする。
【００３２】
また、命令２が分岐命令であるため、分岐検出部７２は、分岐検出信号をアクティブにする。モード制御部７４は、分岐検出信号がアクティブになった時点で、すべてのメモリの動作モードを通常モードに移行させるためにスタンバイ信号０〜３を非アクティブにする。これにより、メモリ１〜３はスタンバイモードから通常モードに移行し、元々通常モードであるメモリ０は通常モードを維持する。
＜時刻ｔ４＞
【００３３】
ＣＰＵ６０は、時刻ｔ２でフェッチした分岐２に対してデコードし実行した結果、分岐先がメモリ２のアドレスＡ２−５であることが分かり、アドレスＡ２−５のフェッチ要求をする。
【００３４】
また、分岐２の分岐先がメモリ２であることが分かったため、モード制御部７４は、メモリ２のみを通常モードにし、他のメモリ０、１、３をスタンバイモードにする。モード制御部７４は、スタンバイ信号２を非アクティブのままにしておき、スタンバイ信号０、１、３をアクティブにする。また、分岐検出部７２は、分岐検出信号を非アクティブにする。
【００３５】
なお、命令３と命令４は、分岐２の分岐先アドレスが確定するまでＣＰＵ６０がプリフェッチした命令であり、これらは実行されずに破棄される。
【００３６】
以降、メモリ２のみが通常モードの状態で処理が進み、モード制御部７４は、時刻ｔ５までスタンバイ信号０〜３を、時刻ｔ４時の状態に維持する。
【００３７】
時刻ｔ５で再び分岐命令（分岐５）が検出される。このとき、ＣＰＵ６０、分岐検出部７２、モード制御部７４が行う処理は、時刻ｔ３からｔ４までの処理と同様であるため、説明を省略する。
【００３８】
すなわち、本発明にかかるメモリ制御技術は、メモリからフェッチされた命令に対して、ＣＰＵによる該命令のデコードや実行などの処理に並行して、分岐命令であるか否かの検出を行う。分岐命令である場合には、すべてのメモリの動作モードが通常モードになるように制御を行うと共に、ＣＰＵによるデコードの結果、該分岐命令の分岐先が確定した時点で、分岐先のメモリが通常モードになり、他のメモリがスタンバイモードになるように制御を行う。
【００３９】
こうすることにより、複数のメモリのうちの、ＣＰＵが次の命令をフェッチするためにアクセスするメモリが通常モードでありフェッチ可能である一方、他のメモリがスタンバイモードになるため、メモリユニット全体の消費電力を削減するができる。また、ＣＰＵによる分岐命令のデコードが終わり、分岐先のアドレスが確定する前にすべてのメモリが通常モードになるため、分岐先のアドレスが確定してから該当するメモリをスタンバイモードから通常モードに変更する手法より高い処理性能を得ることができる。
【００４０】
以上の説明を踏まえて、本発明の具体的な実施の形態について説明する。
・第１の実施の形態
図３は、本発明の第１の実施の形態にかかるマイクロコンピュータ１００を示す。マイクロコンピュータ１００は、ＣＰＵ１０１と、キャッシュメモリ１０２と、複数のメインメモリ（メインメモリ１０７〜１１０）を備え、ＣＰＵ１０１は、フェッチアドレス制御回路１０３と、フェッチコード制御回路１０４と、データセレクタ１０５と、メモリ制御回路２００を介してキャッシュメモリ１０２と各メインメモリと接続される。
【００４１】
キャッシュメモリ１０２は通常のキャッシュメモリであり、メインメモリ１０７〜１１０は、通常モードと、通常モードより消費電力の少ないスタンバイモードを有し、いずれのモードになるかはメモリ制御回路２００により制御される。なお、本実施の形態において、スタンバイモードの例として、メインメモリにおいて定常的に電流が流れる回路を停止したものである。スタンバイモードから通常モードに戻る際に、該メインメモリ内の停止した回路の動作が復帰するまでの時間は、一般的にリードサイクルより長い。例として、メインメモリのスタンバイモードの解除に所要する時間を、リードサイクルの８つ分とする。また、本実施の形態において、ＣＰＵ１０１が一度に８命令分のコードをリードでき、各メインメモリの動作周波数がＣＰＵ１０１の動作周波数の１／２であるとする。
【００４２】
フェッチアドレス制御回路１０３は、ＣＰＵ１０１からのフェッチ要求に応じて、命令アドレスバス１１４上の値に対応するキャッシュアドレスをキャッシュアドレスバス１１６に出力することにより、当該命令をキャッシュメモリ１０２からフェッチする。また、フェッチアドレス制御回路１０３は、メインメモリからのプリフェッチも行い、プリフェッチ時には、ＣＰＵ１０１が出力する命令アドレスの上位アドレスに対応する複数の命令を一度にキャッシュメモリ１０２に読み込む。これらについて、プリフェッチ機能を有する通常のフェッチアドレス制御回路と同様であるので、詳細な説明を省略する。
【００４３】
本実施の形態において、各メインメモリは、８命令分のコードを一度にリード可能であり、フェッチアドレス制御回路１０３はプリフェッチする際に、一度に８命令をフェッチする。
【００４４】
本実施の形態において、フェッチアドレス制御回路１０３は、上記処理以外に、メモリ制御回路２００にフェッチイニシャライズ信号１３４を出力する。このフェッチイニシャライズ信号１３４は、ＣＰＵ１０１により分岐命令が実行される最初のサイクルにだけアクティブにされる。
【００４５】
フェッチコード制御回路１０４とデータセレクタ１０５は、メインメモリとキャッシュメモリを有するマイクロコンピュータのメモリコントローラに通常備えられたものと同様の動作を行うものであり、ここで詳細な説明を省略する。
【００４６】
後に説明しやすいように、いくつかの用語と符号を規定する。
ＣＰＵ１０１がフェッチ要求する際に、フェッチ目標の命令のアドレス（フェッチアドレス）を命令アドレスバス１１４に出力する。以下、「命令アドレスバス１１４上の値」と「フェッチアドレス」とを同じ意味で用いると共に、フェッチアドレスに対しても命令アドレスバスの符号「１１４」を用いる。
【００４７】
フェッチアドレス制御回路１０３は、プリフェッチする際に、フェッチアドレスに対応する上位アドレスをメインアドレスバス１１９にフェッチアドレスを出力する。以下、メインアドレス１１９に出力される上位アドレスに対してメインアドレスバスの符号「１１９」を用いる。
【００４８】
フェッチコード制御回路１０４とキャッシュメモリ１０２間に接続されるキャッシュリードコードバス１１７には、キャッシュメモリ１０２からＣＰＵ１０１に出力するコードが流れる。ＣＰＵ１０１のフェッチ要求に応じてキャッシュメモリ１０２からキャッシュリードコードバス１１７に出力する命令コードを、以下「キャッシュフェッチコード」という。また、キャッシュフェッチコードに対しても、キャッシュリードコードバスの符号「１１７」を用いる。
【００４９】
フェッチコード制御回路１０４とキャッシュメモリ１０２間に接続されるキャッシュライトコードバス１１８には、メインメモリからフェッチされ、キャッシュメモリ１０２に書き込まれる命令コードが流れる。以下、この命令コードを「キャッシュ更新コード」という。また、キャッシュ更新コードに対しても、キャッシュライトコードバス１１８の符号「１１８」を用いる。
【００５０】
メインメモリから出力される命令コードは、データセレクタ１０５とメインコードバス１２０を介してフェッチコード制御回路１０４とメモリ制御回路２００に出力される。以下、メインコードバス１２０上の命令コードを「メインフェッチコード」といい、メインフェッチコードに対してもメインコードバスの符号「１２０」を用いる。
【００５１】
フェッチコード制御回路１０４は、フェッチコードバス１１５を介してメインフェッチコード１２０またはキャッシュフェッチコード１１７をＣＰＵ１０１に出力する。フェッチコードバス１１５上に流れる命令コードを以下単に「フェッチコード」といい、それに対しても、フェッチコードバスの符号「１１５」を用いる。
【００５２】
続いてメモリ制御回路２００を説明する。メモリ制御回路２００は、分岐検出回路１１１と、アドレス保持回路１１２と、分岐準備制御回路１１３と、フェッチアドレス制御回路１０３を備える。分岐検出回路１１１は、図１に示すマイクロコンピュータ５０における分岐検出部７２に対応し、他の回路は、マイクロコンピュータ５０におけるモード制御部７４に対応する。メモリ制御回路２００の詳細構成を示す図４を参照してメモリ制御回路２００を説明する。
＜分岐検出回路１１１＞
【００５３】
分岐検出回路１１１は、分岐命令コードのテーブルを備えており、データセレクタ１０５を介してメインメモリから出力されたメインフェッチコード１２０に分岐命令コードが含まれているかの検出を行う。メインフェッチコード１２０に分岐命令が含まれていれば、分岐検出回路１１１は、分岐準備制御回路１１３に出力する分岐一致信号１２９をアクティブにすると共に、分岐命令がメインフェッチコード１２０における配列順位を示す分岐命令下位アドレス１３０をアドレス保持回路１１２に出力する。
【００５４】
図４に示すように、分岐検出回路１１１は、分岐コード発生器２０１と、比較器群２０２と、ＯＲ回路２０３と、エンコーダ２０４を備える。
【００５５】
分岐コード発生器２０１は、分岐命令コードのテーブルを有し、テーブル内の分岐命令コードを、比較器群２０２に含まれる各比較器にそれぞれ出力する。比較器群２０２は、メインフェッチコード１２０に含まれるコード数分（ここでは８命令分）の比較器を備え、各比較器は、分岐コード発生器２０１からの分岐命令コードと、メインフェッチコード１２０から分けられたオペコード２０５とをそれぞれ比較して、比較結果を示す分岐一致信号２０６をＯＲ回路２０３とエンコーダ２０４に出力する。なお、分岐一致信号２０６は、比較結果が「一致する」である場合にアクティブになり、比較結果が「一致しない」である場合に非アクティブになる。
【００５６】
ＯＲ回路２０３は、各分岐一致信号２０６の論理和をとって分岐一致信号１２９として分岐一致保持回路２０７に出力する。分岐一致信号１２９は、分岐命令が検出されていないときに「０」（非アクティブ）であり、分岐命令が検出されたときに「１」（アクティブ）になる。
【００５７】
エンコーダ２０４は、各分岐一致信号２０６をエンコードしてアドレス保持回路１１２に出力する。分岐命令が含まれている場合には、エンコーダ２０４のエンコード結果が分岐命令下位アドレス１３０になる。
＜アドレス保持回路１１２＞
【００５８】
アドレス保持回路１１２は、後述するアドレス保持イネーブル信号１３３がアクティブになったときに、エンコーダ２０４からの分岐命令下位アドレス１３０と、上位アドレス１１９から分岐命令アドレス１３１を生成して、アドレス保持イネーブル信号１３３が次にアクティブになるまで保持する。
【００５９】
アドレス保持イネーブル信号１３３が次にアクティブになったときに、アドレス保持回路１１２は新しい分岐命令アドレス１３１を生成して保持する。すなわち、アドレス保持回路１１２は、アドレス保持イネーブル信号１３３がアクティブになる度に、保持する分岐命令アドレス１３１を更新する。
【００６０】
アドレス保持イネーブル信号１３３は、分岐準備制御回路１１３における後述の反転入力付きＡＮＤ回路２０８から出力されるものである。後に分岐準備制御回路１１３の説明から分かるが、アドレス保持イネーブル信号１３３は、メインフェッチコード１２０から初めて分岐命令が検出された時と、検出された分岐命令の実行開始後に次の分岐命令が検出された時にのみアクティブになる。分岐命令の実行前に別の分岐命令が検出されても、アドレス保持イネーブル信号１３３は、アクティブにならず、アドレス保持回路１１２による分岐命令アドレス１３１の更新も行われない。
【００６１】
アドレス保持回路１１２により保持中の分岐命令アドレス１３１は、分岐準備制御回路１１３の後述する比較器２１０に供される。
＜分岐準備制御回路１１３＞
【００６２】
分岐準備制御回路１１３は、アドレス保持回路１１２で保持されている分岐命令アドレス１３１と、ＣＰＵ１０１が要求するフェッチアドレス１１４と、フェッチアドレス制御回路１０３から出力されるフェッチイニシャライズ信号１３４と、分岐一致信号１２９とを入力し、これらに基づいて分岐準備信号１３２を生成してスタンバイ制御回路１０６に出力する。また、分岐準備制御回路１１３は、前述したアドレス保持イネーブル信号１３３をアドレス保持回路１１２に出力する機能も担う。
【００６３】
図４に示すように、分岐準備制御回路１１３は、分岐一致保持回路２０７と、反転入力付きＡＮＤ回路２０８と、加算器２０９と、比較器２１０と、セレクタ２１６と、シフトレジスタ２１８と、アドレス一致保持回路２１１と、ＯＲ回路２１２を備える。
【００６４】
分岐一致保持回路２０７は、分岐命令が実行される最初のサイクルにだけアクティブになるフェッチイニシャライズ信号１３４と、分岐検出回路１１１からの分岐一致信号１２９を入力し、アドレス比較信号２１３を出力する。アドレス比較信号２１３は、分岐一致信号１２９がアクティブになったときにアクティブになり、フェッチイニシャライズ信号１３４がアクティブになったときにリセットされる。このアドレス比較信号２１３は、反転入力付きＡＮＤ回路２０８、セレクタ２１６、比較器２１０に入力される。
【００６５】
反転入力付きＡＮＤ回路２０８は、アドレス比較信号２１３の反転信号と、分岐一致信号１２９との論理積をとってアドレス保持イネーブル信号１３３を得る。
【００６６】
アドレス比較信号２１３は、メインフェッチコード１２０から初めて分岐命令が検出されるまでの間と、メインフェッチコード１２０から分岐命令が検出される度の、分岐命令が検出されてから、実行される最初のサイクルまでの間にのみアクティブである。そのため、アドレス保持イネーブル信号１３３は、メインフェッチコード１２０から初めて分岐命令が検出された時と、検出された分岐命令の実行開始後に次の分岐命令が検出された時にのみアクティブになる。分岐命令の実行前に別の分岐命令が検出されても、アドレス保持イネーブル信号１３３は、アクティブにならない。
このアドレス保持イネーブル信号１３３は、前述したアドレス保持回路１１２に入力される。
【００６７】
加算器２０９は、フェッチアドレス１１４に所定値Ｋ（Ｋ：１以上の整数）を加算して加算アドレス２１４を得て比較器２１０に出力する。本実施の形態において、この所定の値は、メインメモリはスタンバイ解除操作がなされてから通常モードに復帰するまでにかかるサイクル数に応じて予め設定され、ここでは８とする。なお、所定値Ｋの詳細について後に説明する。
【００６８】
比較器２１０は、加算アドレス２１４と、分岐命令アドレス１３１と、アドレス比較信号２１３を入力し、アドレス比較信号２１３がアクティブである間、加算アドレス２１４と分岐命令アドレス１３１とを比較し、比較結果を示すアドレス一致信号２１５を出力する。アドレス比較信号２１３は、メインフェッチコード１２０から分岐命令が検出された時点から、該分岐命令が実行開始されるまでの間にアクティブであるので、比較器２１０は、この間で加算アドレス２１４と分岐命令アドレス１３１を比較する。アドレス一致信号２１５は、加算アドレス２１４と分岐命令アドレス１３１とが同一である場合にアクティブになり、加算アドレス２１４と分岐命令アドレス１３１とが異なる場合に非アクティブになる。
このアドレス一致信号２１５は、セレクタ２１６に出力される。
【００６９】
シフトレジスタ２１８は、フェッチイニシャライズ信号１３４に対して、分岐レイテンシの分だけアクティブになるようにシフトしてフェッチイニシャライズシフト信号２１９を得る。すなわち、フェッチイニシャライズシフト信号２１９は、ＣＰＵ１０１により分岐命令が実行される最初のサイクルから分岐レイテンシ長の期間にのみアクティブである。このフェッチイニシャライズシフト信号２１９は、セレクタ２１６とＯＲ回路２１２に出力される。
【００７０】
セレクタ２１６は、シフトレジスタ２１８からのフェッチイニシャライズシフト信号２１９をセレクト信号として、分岐一致保持回路２０７からのアドレス比較信号２１３と、比較器２１０からのアドレス一致信号２１５のいずれかを選択して、アドレス一致保持入力信号２１７としてアドレス一致保持回路２１１に出力する。選択に際して、具体的には、フェッチイニシャライズシフト信号２１９が非アクティブであるときにはアドレス一致信号２１５を選択し、フェッチイニシャライズシフト信号２１９がアクティブであるときにはアドレス比較信号２１３を選択する。
【００７１】
アドレス一致保持回路２１１は、セレクタ２１６からのアドレス一致保持入力信号２１７と、フェッチイニシャライズ信号１３４とを入力する。アドレス一致保持回路２１１は、アドレス一致保持入力信号２１７がアクティブになったときにアドレス一致保持出力信号２２０をアクティブにし、フェッチイニシャライズ信号１３４がアクティブになったときにアドレス一致保持出力信号２２０を非アクティブにしてリセットする。
【００７２】
ＯＲ回路２１２は、フェッチイニシャライズシフト信号２１９と、アドレス一致保持出力信号２２０を入力し、論理和をスタンバイ制御回路１０６に出力する。この論理和は、分岐準備信号１３２としてスタンバイ制御回路１０６に出力される。
【００７３】
アドレス一致信号２１５がアクティブになった時点から、アドレス比較信号２１３がアクティブになるまで、アドレス一致保持入力信号２１７がアクティブであるので、この間、分岐準備信号１３２はアクティブである。
【００７４】
また、フェッチイニシャライズ信号１３４がアクティブになり、アドレス一致保持出力信号２２０が非アクティブになっても、その時点から分岐レイテンシ長の間にフェッチイニシャライズシフト信号２１９がアクティブであるので、この間にも、分岐準備信号１３２はアクティブである。
【００７５】
その後、フェッチイニシャライズシフト信号２１９も非アクティブになると、１つの例該を除き、分岐準備信号１３２は非アクティブになる。
【００７６】
上記例外は、フェッチイニシャライズ信号１３４がアクティブになる前に、分岐一致信号１２９がアクティブになった場合に生じる。これは、前にフェッチした分岐命令の実行開始の前に新たな分岐命令が検出された場合である。この場合、前の分岐命令に対応するフェッチイニシャライズシフト信号２１９が非アクティブになっても分岐準備信号１３２はアクティブであり続ける。そして、新たに検出された分岐命令に対応するフェッチイニシャライズシフト信号２１９が非アクティブになったときに非アクティブになる。
＜スタンバイ制御回路１０６＞
【００７７】
スタンバイ制御回路１０６は、現在の上位アドレス１１９と、分岐準備信号１３２とを入力し、各メインメモリの動作モードを制御する。具体的には、分岐準備信号１３２がアクティブであるときに、すべてのメインメモリのスタンバイを解除するために、メインメモリスタンバイ信号１２５〜１２８を非アクティブにする。また、分岐準備信号１３２が非アクティブになったときに、上位アドレス１１９に対応するメインメモリのメインメモリについては、そのメインメモリスタンバイ信号を非アクティブに維持して通常モードを継続させる一方、他のメインメモリについては、それらのメインメモリスタンバイ信号をアクティブにして動作モードをスタンバイモードに変更する。
【００７８】
図５を参照して、フェッチ動作に関連してマイクロコンピュータ１００がとりうる状態を５つに分けてメモリ制御回路２００の動作をまとめて説明する。
【００７９】
ＣＰＵ１０１が行うフェッチ動作は、「通常フェッチ」と「分岐フェッチ」がある。「通常フェッチ」は、ＣＰＵ１０１が同じメモリに対して、連続したアドレスに格納された命令を順次フェッチすることを意味する。「分岐フェッチ」は、ＣＰＵ１０１が同じメモリ内の、前回フェッチした命令のアドレスと連続していないアドレスの命令をフェッチすることか、前回フェッチした命令が格納されたメモリとは別のメモリ内の命令をフェッチすることを意味する。
【００８０】
また、今行っているフェッチが「通常フェッチ」と「分岐フェッチ」のいずれであっても、分岐命令が検出されたものの、この分岐命令がまだフェッチされていないケースがある。このような場合を「分岐あり」という。また、検出され、まだフェッチされてない分岐命令が無い場合を「分岐なし」という。
【００８１】
また、「分岐あり」状態にて通常フェッチを行っている間、全てのメインメモリのスタンバイ解除をして、分岐命令の実行開始に伴う分岐先のメインメモリへのアクセスに備える期間があり、この期間の状態を「分岐準備」という。
上述した各ケースの組合せにより、下記の５つの状態が考えられる。
【００８２】
・状態１：「通常フェッチ（分岐なし）」
これは、ＣＰＵ１０１が通常フェッチを行っており、メインメモリからプリフェッチされ、まだフェッチされていない分岐命令がない状態である。
【００８３】
・状態２：「通常フェッチ（分岐あり）」
これは、状態１において、メインメモリからプリフェッチした命令コードから分岐命令が検出された時から、すべてのメインメモリのスタンバイ解除がなされるまでの状態である。
【００８４】
・状態３：「通常フェッチ（分岐準備）」
これは、「分岐あり」の場合、すべてのメインメモリのスタンバイ解除から、分岐命令が実行開始されるまでの状態である。この状態は、上記状態２と、後述する状態５から遷移しうる。
【００８５】
・状態４：「分岐フェッチ（分岐なし）」
これは、ＣＰＵ１０１が分岐フェッチを行っており、メインメモリからプリフェッチした命令コードからは分岐命令が検出されていない状態である。
【００８６】
・状態５：「分岐フェッチ（分岐あり）」
この状態は、状態３において、分岐命令が実行開始され、該分岐命令の分岐先アドレスのメモリからプリフェッチされた命令コードからもフェッチ命令であるときの状態である。
【００８７】
この５つの状態は、フェッチ動作に伴って互いに遷移する。
図５に示すように、「通常フェッチ（分岐なし）」の状態１において、メインメモリからフェッチした命令から分岐命令コードが検出されない限り、すなわち分岐一致信号１２９が非アクティブにならない限り、状態１は継続する。一方、状態１において、分岐一致信号１２９がアクティブになったとき、「通常フェッチ（分岐あり）」の状態２になる。
【００８８】
状態２において、アドレス一致信号２１５が非アクティブになるまで、状態２は継続する。アドレス一致信号２１５がアクティブになるのは、加算器２０９より得た加算アドレス２１４と、アドレス保持回路１１２に保持された分岐命令アドレス１３１とが一致するときである。また、加算アドレス２１４が、現在のフェッチアドレス１１４に所定値Ｋを加算して得たものであるため、加算アドレス２１４と分岐命令アドレス１３１とが一致するのは、分岐命令アドレス１３１に対応する分岐命令がＣＰＵ１０１によりデコードを終え、実行開始されるサイクルよりＫサイクル前のタイミングである。
【００８９】
分岐命令が実行される最初のサイクル、すなわち分岐先アドレスが確定されたサイクルで、ＣＰＵ１０１は、デコードにより得た該分岐命令が示す分岐先アドレスを出力してフェッチ要求をする。そのため、このサイクルまでにすべてのメインメモリをアクセス可能な通常モードにする必要がある。前述したように、スタンバイモード中のメインメモリの復帰に時間がかかるため、メインメモリのスタンバイ解除は、分岐命令が実行される最初のサイクルを基準とした場合の、メインメモリの復帰にかかる時間分前に行う必要がある。
【００９０】
一方、スタンバイ解除が早いほどメインメモリの消費電流が大きくなるので、スタンバイ解除と、分岐命令が実行される最初のサイクルとの時間間隔は、メインメモリの復帰にかかる時間に対応するサイクル数であることが好ましい。本実施の形態において、メインメモリの復帰にかかる時間が８サイクルであるので、所定値Ｋは８に設定されている。
【００９１】
状態２は、アドレス一致信号２１５がアクティブするまで継続する。アドレス一致信号２１５がアクティブになったときに、「分岐フェッチ（分岐準備）」の状態３になる。この状態において、すべてのメインメモリが、分岐命令の実行開始に備え、通常モードにされている。
【００９２】
状態３は、フェッチイニシャライズ信号１３４がアクティブになるまで、すなわち分岐命令が実行開始されるまで継続する。分岐命令の実行開始に伴って分岐先アドレスに対応する命令がメインメモリからフェッチされる。この命令から分岐命令が検出されたか否かによって、次になる状態が異なる。
【００９３】
図５に示すように、状態３において、フェッチイニシャライズ信号１３４がアクティブになり、かつ、分岐一致信号１２９が非アクティブであるときに、「分岐フェッチ（分岐なし）」の状態４になる。これは、分岐命令の実行中に他の分岐命令が検出されていない場合である。
【００９４】
状態４は、フェッチイニシャライズシフト信号２１９がアクティブである分岐レイテンシ長の間にのみ存在する。フェッチイニシャライズシフト信号２１９がアクティブになったときに、状態１になる。なお、フェッチイニシャライズシフト信号２１９が非アクティブになったときに、実行開始された分岐命令の分岐先アドレスのメインメモリも分かったので、分岐先のメインメモリのみ通常モードが維持され、他のメインメモリは、スタンバイモードに入る。
【００９５】
一方、状態３において、フェッチイニシャライズ信号１３４がアクティブになり、かつ、分岐一致信号１２９がアクティブになったときに、状態３は、「分岐フェッチ（分岐あり）」の状態５に遷移する。これは、分岐命令が実行開始され、分岐先アドレスに対応する命令から分岐命令が検出された場合である。
【００９６】
状態５は、現在実行中の分岐命令に対応するフェッチイニシャライズシフト信号２１９がアクティブである分岐レイテンシの間にのみ存在する。このフェッチイニシャライズシフト信号２１９が非アクティブになったときに、状態３になる。そして、新しい分岐命令が実行開始されると、再び状態５に戻る。続いて、状態５において、新しい分岐命令に対応するフェッチイニシャライズシフト信号２１９が非アクティブになると、状態３に戻る。
【００９７】
このような、分岐命令の実行開始時に新たな分岐命令が検出された場合、前の分岐命令に対応する実行フェッチイニシャライズシフト信号２１９が非アクティブになっても、全てのメインメモリの通常モードは維持される。そして、新たな分岐命令に対応するフェッチイニシャライズシフト信号２１９が非アクティブになったときに、分岐先のメインメモリを除き、他のメインメモリは通常モードからスタンバイモードに変更される。
【００９８】
次いで、具体的な動作例を用いてメモリ制御回路２００の動作をより詳細に説明する。
【００９９】
図６は、「分岐フェッチ（分岐あり）」の状態５が発生しない場合のイミングチャートである。
【０１００】
図６に示すように、まず、フェッチアドレス制御回路１０３は、フェッチアドレス１１４の命令をキャッシュメモリ１０２からフェッチする傍ら、メインメモリ１０７に対してプリフェッチを行う。
【０１０１】
Ｔ３１でメインフェッチコード１２０から分岐命令が検出されると、分岐一致信号１２９がアクティブになり、アドレス保持イネーブル信号１３３によりイネーブルにされたたアドレス保持回路１１２に、そのときの上位アドレス１１９と分岐命令下位アドレス１３０とから得られた分岐命令１３１が保持される。同時にアドレス比較信号２１３がアクティブになり、比較器２１０はアドレスの比較が開始する。
【０１０２】
Ｔ３２で、分岐命令アドレス１３１と、フェッチアドレス１１４に「８」を加算して得た加算アドレス２１４とが一致すると、アドレス一致信号２１５と、アドレス一致保持出力信号２２０と、分岐準備信号１３２がアクティブになる。分岐準備信号１３２がアクティブになるのと同時に、メインメモリスタンバイ信号１２６〜１２８が非アクティブになり、メインメモリ１０８〜１１０のスタンバイが解除される。
【０１０３】
Ｔ３４で、分岐先アドレスからフェッチが開始されると、フェッチイニシャライズ信号１３４がアクティブになり、アドレス比較信号２１３とアドレス一致保持出力信号２２０がリセットされる。またフェッチイニシャライズシフト信号２１９が、分岐レイテンシ期間内にアクティブになる。
【０１０４】
Ｔ３５で、分岐フェッチから通常フェッチになると、分岐準備信号１３２が非アクティブになり、上位アドレス１１９が示すメインメモリ１０８以外のメインメモリのスタンバイ信号１２５、１２７、１２８がアクティブになり、メインメモリ１０７、１０９、１１０はスタンバイモードへ移行する。
【０１０５】
図７は、状態５が発生する場合のタイミングチャートである。図６と重複する部分について説明を省略する。
【０１０６】
Ｔ４１で、分岐命令が検出され、Ｔ４２で分岐準備信号１３２がアクティブになり、Ｔ４４で分岐先アドレスからのフェッチが開始される。
【０１０７】
Ｔ４４で、メインフェッチコード１２０から再び分岐命令が検出されると、分岐一致信号１２９がアクティブになるため、一度非アクティブになったアドレス比較信号２１３が再びアクティブになる。このとき、フェッチイニシャライズシフト信号２１９がアクティブであるため、セレクタ２１６ではアドレス比較信号２１３が選択されて、アドレス一致保持出力信号２２０がアクティブになり、分岐準備信号１３２はＴ４５以降もアクティブのままでなる。
【０１０８】
Ｔ４６で、分岐フェッチがなされ、そのときのメインフェッチコード１２０から分岐命令が検出されなかったため、Ｔ４７で分岐準備信号１３２は非アクティブになり、メインメモリスタンバイ信号１２５、１２６、１２８はアクティブになる。
【０１０９】
本実施の形態のマイクロコンピュータ１００は、本発明の原理を具現化したものであり、マイクロコンピュータ５０により得られた効果を得ることができる。
【０１１０】
昨今のマイクロコンピュータでは、プリフェッチに際して一度に複数の命令（命令列）が読み出される。本実施の形態において、プリフェッチされた命令列から分岐命令が検出された際に、それの分岐命令アドレスを算出して保持すると共に、ＣＰＵが出力する命令アドレスと、メインメモリのスタンバイ解除に必要最少なサイクル数とを加算して加算アドレスを得る。そして、保持された分岐命令アドレスと加算アドレスとが一致した際に全てのメインメモリのスタンバイ解除を行う。こうすることにより、分岐命令が示す分岐先アドレスが確定したときに、全てのメインメモリが通常モードになっているため、分岐先アドレスがいずれのメインメモリのものであっても、ＣＰＵは待たずにそれをフェッチすることができ、性能の低下を回避することができる。
【０１１１】
メインメモリＣＰＵが出力する命令アドレスと加算する値Ｋが小さいほどメインメモリのスタンバイ解除が早くなり、また、値Ｋが上記最少サイクル数より大きいとＣＰＵのメモリリードに待ち時間が生じる。そのため、メモリ制御回路２００において、値Ｋをメインメモリのスタンバイ解除に必要最少なサイクル数にし、ＣＰＵの性能の確保とメモリの消費電力の削減効果を最も良いバランスにしている。
【０１１２】
勿論、最少サイクル数より小さく、１以上の任意の整数Ｋを用いても、ＣＰＵの性能低下を防ぐ視点から従来の技術より効果を得ることができる。
・第２の実施の形態
【０１１３】
図８に示す集積回路５００は、図３に示すマイクロコンピュータ１００におけるメモリ制御回路２００と各メインメモリに対応する。これを適用したマイクロコンピュータを本発明の第２の実施の形態とする。なお、重複を避けるため、集積回路５００を除いた他の構成について、説明および図示を省略する。また、図８において、図４に示すメモリ制御回路２００のものと同様の構成または機能を有する部分に対して同一の符号を付与している。
【０１１４】
図５に示すメインメモリ５０１〜５０４は、複数のスタンバイモードの切り替えを行うスタンバイモード選択信号５０９が接続される。分岐準備制御回路５１３は、メモリ制御回路２００の分岐準備制御回路１１３に対して、加算器５０５とセレクタ５０６を追加したものである。セレクタ５０６は、比較器２１０に入力する加算アドレス２１４として、加算器２０９と加算器５０５のどちらの出力を選択するかを、スタンバイモード選択信号５０９により切り替える。加算器５０５と加算器２０９とは異なる値が加算される。例えば加算器２０９ではＫ１（＝８）が加算され、加算器５０５ではＫ２（＝４）が加算される。
【０１１５】
集積回路５００を適用したマイクロコンピュータは、加算器２０９を選択するようにスタンバイモード選択信号５０９が設定されている場合、マイクロコンピュータ１００と同様の動作をする。
【０１１６】
加算器５０５を選択するようにスタンバイモード選択信号５０９を設定している場合、集積回路５００を適用したマイクロコンピュータの動作において、例えばマイクロコンピュータ１００の動作例を示す図６では、Ｔ３２、Ｔ３３のタイミングが、Ｔ３４から命令アドレスバス１１４の８サイクル前から４サイクル前に変わる。
【０１１７】
本実施の形態において、各メインメモリが複数のスタンバイモードを有する場合、メインメモリの消費電力をより削減することができる。例えば、各メインメモリ５０１〜５０４が、小電流スタンバイモードと、大電流スタンバイモードに対応する。
【０１１８】
小電流スタンバイモードでは、メインメモリ５０１〜５０４のリードサイクル８回分のスタンバイ解除時間が必要であるが、消費電流が少ない。
【０１１９】
一方、中電流スタンバイモードでは、メインメモリ５０１〜５０４のリードサイクル４回分のスタンバイ解除時間のみが必要であるが、消費電流は小電流スタンバイモードよりも大きい。
【０１２０】
メインメモリの消費電力削減量は、ユーザプログラム中の全命令に占める分岐命令の割合に影響されるため、全命令に占める分岐命令の割合が大きければ中電流スタンバイモードを選択した方が、ユーザプログラムを実行したときの消費電力が小さくなる可能性がある。本実施の形態のマイクロコンピュータのように、このような複数のスタンバイモードの選択をユーザにより切り替え可能な構成とすることによって、ユーザがより消費電力の小さい設定を選択できる。
【０１２１】
なお、コンピュータによりユーザプログラムの全命令における分岐命令の割合を解析し、解析結果に応じたスタンバイモード選択信号５０９を出力することによって、スタンバイモード選択の自動化を図ることも考えられる。
【０１２２】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対して、さまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【０１２３】
【図１】本発明の原理を説明するために用いられたマイクロコンピュータの模式図である。
【図２】図１に示すマイクロコンピュータにおける動作例を示すタイミングチャートである。
【図３】本発明の第１の実施の形態にかかるマイクロコンピュータを示す図である。
【図４】図３に示すマイクロコンピュータにおけるメモリ制御回路を示す図である。
【図５】図ＣＰＵのフェッチ動作に関連した５つの状態を示す図である。
【図６】図３に示すマイクロコンピュータの動作例を示すタイミングチャートである（その１）。
【図７】図３に示すマイクロコンピュータの動作例を示すタイミングチャートである（その２）。
【図８】本発明の第２の実施の形態のマイクロコンピュータにおける集積回路を示す図である。
【図９】従来の技術を示す図である。
【符号の説明】
【０１２４】
５０  マイクロコンピュータ  ６０  ＣＰＵ
７０  メモリコントローラ  ７２  分岐検出部
７４  モード制御部  ７６  アクセス制御部
８０  メモリユニット    １００  マイクロコンピュータ
１０１  ＣＰＵ  １０２  キャッシュメモリ
１０３  フェッチアドレス制御回路  １０４  フェッチコード制御回路
１０５  データセレクタ  １０６  スタンバイ制御回路
１０７〜１０８  メインメモリ  １１１  分岐検出回路
１１２  アドレス保持回路  １１３  分岐準備制御回路
１１４  命令アドレスバス（フェッチアドレス）
１１５  フェッチコードバス（フェッチコード）
１１６  キャッシュアドレスバス（キャッシュリードコードバス）
１１７  キャッシュフェッチコード
１１８  キャッシュライトコードバス（キャッシュ更新コード）
１１９  メインアドレスバス（上位アドレス）
１２０  メインコードバス（メインフェッチコード）
１２１〜１２４  メインメモリデータバス
１２５〜１２８  メインメモリスタンバイ信号
１２９  分岐一致信号  １３０  分岐命令下位アドレス
１３１  分岐命令アドレス  １３２  分岐準備信号
１３３  アドレス保持イネーブル信号  １３４  フェッチイニシャライズ信号
２００  メモリ制御回路  ２０１  分岐コード発生器
２０２  比較器群  ２０３  ＯＲ回路
２０４  エンコーダ  ２０５  オペコード
２０６  分岐一致信号  ２０７  分岐一致保持回路
２０８  反転入力付きＡＮＤ回路  ２０９  加算器
２１０  比較器  ２１１  アドレス一致保持回路
２１２  ＯＲ回路  ２１３  アドレス比較信号
２１４  加算アドレス  ２１５  アドレス一致信号
２１６  セレクタ  ２１７  アドレス一致保持入力信号
２１８  シフトレジスタ  ２１９  フェッチイニシャライズシフト信号
２２０  アドレス一致保持出力信号  ５００  集積回路
５０１〜５０４  メインメモリ  ５０５  加算器
５０６  セレクタ  ５０７  加算アドレス
５０８  加算アドレス  ５０９  スタンバイモード選択信号
５１３  分岐準備制御回路
【図１】
2010015375.tif 000003
【図２】
2010015375.tif 000004
【図３】
2010015375.tif 000005
【図４】
2010015375.tif 000006
【図５】
2010015375.tif 000007
【図６】
2010015375.tif 000008
【図７】
2010015375.tif 000009
【図８】
2010015375.tif 000010
【図９】
2010015375.tif 000011
【手続補正書】
【提出日】平成21年4月28日(2009.4.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行い、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とするメモリ制御回路。
【請求項２】
複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、前記複数のメモリのいずれかからプリフェッチされた命令に分岐命令が検出されたことに応じて、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで他のメモリに対してスタンバイ解除を行うことを特徴とするメモリ制御回路。
【請求項３】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項１に記載のメモリ制御回路。
【請求項４】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項２に記載のメモリ制御回路。
【請求項５】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項２から４のいずれか１項に記載のメモリ制御回路。
【請求項６】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項２から５のいずれか１項に記載のメモリ制御回路。
【請求項７】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項６に記載のメモリ制御回路。
【請求項８】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項７に記載のメモリ制御回路。
【請求項９】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐先アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項８に記載のメモリ制御回路。
【請求項１０】
ＣＰＵと、
複数の動作モードを有するメモリユニットと、
メモリ制御部とを有し、
前記メモリ制御部は、
ＣＰＵが前記メモリユニットからフェッチした命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行い、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする集積回路。
【請求項１１】
ＣＰＵと、
複数の動作モードを有するメモリユニットと、
メモリ制御部とを有し、
前記メモリ制御部は、
ＣＰＵが前記メモリユニットからフェッチした命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、前記複数のメモリのいずれかからプリフェッチされた命令に分岐命令が検出されたことに応じて、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで他のメモリに対してスタンバイ解除を行うことを特徴とする集積回路。
【請求項１２】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項１０に記載の集積回路。
【請求項１３】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項１１に記載のメモリ制御回路。
【請求項１４】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項１１から１３のいずれか１項に記載の集積回路。
【請求項１５】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項１１から１４のいずれか１項に記載の集積回路。
【請求項１６】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項１５に記載の集積回路。
【請求項１７】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項１６に記載の集積回路。
【請求項１８】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐先アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項１７に記載の集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
時刻ｔ５で再び分岐命令（分岐７）が検出される。このとき、ＣＰＵ６０、分岐検出部７２、モード制御部７４が行う処理は、時刻ｔ３からｔ４までの処理と同様であるため、説明を省略する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
フェッチアドレス制御回路１０３は、プリフェッチする際に、フェッチアドレスに対応する上位アドレスをメインアドレスバス１１９に出力する。以下、メインアドレス１１９に出力される上位アドレスに対してメインアドレスバスの符号「１１９」を用いる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
続いてメモリ制御回路２００を説明する。メモリ制御回路２００は、分岐検出回路１１１と、アドレス保持回路１１２と、分岐準備制御回路１１３と、スタンバイ制御回路１０６を備える。分岐検出回路１１１は、図１に示すマイクロコンピュータ５０における分岐検出部７２に対応し、他の回路は、マイクロコンピュータ５０におけるモード制御部７４に対応する。メモリ制御回路２００の詳細構成を示す図４を参照してメモリ制御回路２００を説明する。
＜分岐検出回路１１１＞
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００８７
【補正方法】変更
【補正の内容】
【００８７】
この５つの状態は、フェッチ動作に伴って互いに遷移する。
図５に示すように、「通常フェッチ（分岐なし）」の状態１において、メインメモリからフェッチした命令から分岐命令コードが検出されない限り、すなわち分岐一致信号１２９がアクティブにならない限り、状態１は継続する。一方、状態１において、分岐一致信号１２９がアクティブになったとき、「通常フェッチ（分岐あり）」の状態２になる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
状態２において、アドレス一致信号２１５がアクティブになるまで、状態２は継続する。アドレス一致信号２１５がアクティブになるのは、加算器２０９より得た加算アドレス２１４と、アドレス保持回路１１２に保持された分岐命令アドレス１３１とが一致するときである。また、加算アドレス２１４が、現在のフェッチアドレス１１４に所定値Ｋを加算して得たものであるため、加算アドレス２１４と分岐命令アドレス１３１とが一致するのは、分岐命令アドレス１３１に対応する分岐命令がＣＰＵ１０１によりデコードを終え、実行開始されるサイクルよりＫサイクル前のタイミングである。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
状態２は、アドレス一致信号２１５がアクティブするまで継続する。アドレス一致信号２１５がアクティブになったときに、「通常フェッチ（分岐準備）」の状態３になる。この状態において、すべてのメインメモリが、分岐命令の実行開始に備え、通常モードにされている。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
状態４は、フェッチイニシャライズシフト信号２１９がアクティブである分岐レイテンシ長の間にのみ存在する。フェッチイニシャライズシフト信号２１９が非アクティブになったときに、状態１になる。なお、フェッチイニシャライズシフト信号２１９が非アクティブになったときに、実行開始された分岐命令の分岐先アドレスのメインメモリも分かったので、分岐先のメインメモリのみ通常モードが維持され、他のメインメモリは、スタンバイモードに入る。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１１１
【補正方法】変更
【補正の内容】
【０１１１】
ＣＰＵが出力する命令アドレスと加算する値Ｋが小さいほどメインメモリのスタンバイ解除が早くなり、また、値Ｋが上記最少サイクル数より大きいとＣＰＵのメモリリードに待ち時間が生じる。そのため、メモリ制御回路２００において、値Ｋをメインメモリのスタンバイ解除に必要最少なサイクル数にし、ＣＰＵの性能の確保とメモリの消費電力の削減効果を最も良いバランスにしている。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
図８に示すメインメモリ５０１〜５０４は、複数のスタンバイモードの切り替えを行うスタンバイモード選択信号５０９が接続される。分岐準備制御回路５１３は、メモリ制御回路２００の分岐準備制御回路１１３に対して、加算器５０５とセレクタ５０６を追加したものである。セレクタ５０６は、比較器２１０に入力する加算アドレス２１４として、加算器２０９と加算器５０５のどちらの出力を選択するかを、スタンバイモード選択信号５０９により切り替える。加算器５０５と加算器２０９とは異なる値が加算される。例えば加算器２０９ではＫ１（＝８）が加算され、加算器５０５ではＫ２（＝４）が加算される。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
本実施の形態において、各メインメモリが複数のスタンバイモードを有する場合、メインメモリの消費電力をより削減することができる。例えば、各メインメモリ５０１〜５０４が、小電流スタンバイモードと、中電流スタンバイモードに対応する。
【手続補正書】
【提出日】平成21年6月12日(2009.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行い、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とするメモリ制御回路。
【請求項２】
複数の動作モードを有するメモリユニットからフェッチされた命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、前記複数のメモリのいずれかからプリフェッチされた命令に分岐命令が検出されたことに応じて、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで他のメモリに対してスタンバイ解除を行うことを特徴とするメモリ制御回路。
【請求項３】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項１に記載のメモリ制御回路。
【請求項４】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項２に記載のメモリ制御回路。
【請求項５】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項２から４のいずれか１項に記載のメモリ制御回路。
【請求項６】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項２から５のいずれか１項に記載のメモリ制御回路。
【請求項７】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項６に記載のメモリ制御回路。
【請求項８】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項７に記載のメモリ制御回路。
【請求項９】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐先アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項８に記載のメモリ制御回路。
【請求項１０】
ＣＰＵと、
複数の動作モードを有するメモリユニットと、
メモリ制御部とを有し、
前記メモリ制御部は、
ＣＰＵが前記メモリユニットからフェッチした命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記モード制御部は、前記複数のメモリのいずれかからフェッチされた命令に分岐命令が検出されたことに応じて、他のメモリに対してスタンバイ解除を行い、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする集積回路。
【請求項１１】
ＣＰＵと、
複数の動作モードを有するメモリユニットと、
メモリ制御部とを有し、
前記メモリ制御部は、
ＣＰＵが前記メモリユニットからフェッチした命令に対して、分岐命令を検出する分岐検出部と、
該分岐検出部による検出結果に応じて、前記メモリユニットの動作モードを変更するモード制御部とを備え、
前記メモリユニットは、複数のメモリより構成され、
前記複数の動作モードは、アクセス可能な通常モードと、該通常モードより消費電力の少ないスタンバイモードを含み、
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、前記複数のメモリのいずれかからプリフェッチされた命令に分岐命令が検出されたことに応じて、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで他のメモリに対してスタンバイ解除を行うことを特徴とする集積回路。
【請求項１２】
前記分岐検出部は、ＣＰＵが出力した、フェッチ対象の命令アドレスであるフェッチアドレスに応じてプリフェッチされた命令の中から分岐命令を検出し、
前記モード制御部は、プリフェッチされた前記分岐命令がフェッチされるタイミングと、予め決められた所定時間とで決まるタイミングで前記スタンバイ解除を行うことを特徴とする請求項１０に記載の集積回路。
【請求項１３】
前記モード制御部は、前記分岐命令の分岐先アドレスが確定した段階で、分岐先アドレスに対応するメモリ以外のメモリを前記スタンバイモードに変更することを特徴とする請求項１１に記載の集積回路。
【請求項１４】
前記所定時間は、前記複数のメモリが有する、スタンバイ解除がなされてから通常モードに復帰するまでに要する時間で決まることを特徴とする請求項１１から１３のいずれか１項に記載の集積回路。
【請求項１５】
前記モード制御部は、前記スタンバイ解除を行うタイミングを、前記分岐命令の命令アドレスと前記所定時間とから求め、ＣＰＵから出力された前記フェッチアドレスが、前記スタンバイ解除を行うタイミングを示すアドレスになったときに、前記スタンバイ解除を行うことを特徴とする請求項１１から１４のいずれか１項に記載の集積回路。
【請求項１６】
前記分岐検出部は、ＣＰＵが出力した前記フェッチアドレスに応じて第１のアドレスからプリフェッチされた複数の命令からなる命令列から前記分岐命令を検出し、
前記モード制御部は、
前記第１のアドレスと、前記複数の命令にそれぞれ対応する第２のアドレスとから前記分岐命令の命令アドレスを生成して保持するアドレス保持部と、
前記所定時間に対応するサイクル数の値Ｋ（Ｋ：１以上の整数）と、ＣＰＵが出力した前記フェッチアドレスとを加算して加算アドレスを得る加算処理部と、
前記アドレス保持部に保持された前記分岐命令の命令アドレスと、前記加算処理部により得られた加算アドレスとが一致するときに、前記スタンバイ解除を行うスタンバイ制御部とを備えることを特徴とする請求項１５に記載の集積回路。
【請求項１７】
前記複数のメモリは、スタンバイ解除がなされてから通常モードに復帰するまでにかかる前記所定時間が異なる複数のスタンバイモードを有し、
前記加算処理部は、前記複数のスタンバイモードに夫々対応する前記値Ｋから、スタンバイモード選択信号に対応した値と、ＣＰＵが出力した前記フェッチアドレスとを加算して前記加算アドレスを作成することを特徴とする請求項１６に記載の集積回路。
【請求項１８】
前記スタンバイ制御部は、前記分岐命令の分岐先アドレスが確定した段階で、該分岐先アドレスに対応するメモリ以外のメモリを、前記複数のスタンバイモードのうちの、前記スタンバイモード選択信号が示すスタンバイモードに変更することを特徴とする請求項１７に記載の集積回路。