JP2001243065A - プロセッサ - Google Patents
プロセッサInfo
- Publication number
- JP2001243065A JP2001243065A JP2000051592A JP2000051592A JP2001243065A JP 2001243065 A JP2001243065 A JP 2001243065A JP 2000051592 A JP2000051592 A JP 2000051592A JP 2000051592 A JP2000051592 A JP 2000051592A JP 2001243065 A JP2001243065 A JP 2001243065A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- block
- clock
- clocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 パイプライン処理により命令を実行するプロ
セッサにおいて、機能ブロックへクロックを選択的に効
率よく供給する。 【解決手段】 クロック信号で動作を制御される複数の
機能ブロックを有し、上記複数の機能ブロックの少なく
ともいずれか一つは命令を実行する命令実行機能ブロッ
クであり、パイプライン処理により命令を処理するプロ
セッサにおいて、命令実行機能ブロックを動作させるの
に必要なクロック数を実行クロック数として判別する実
行クロック数判別部8と、実行クロック数判別部8で判
別された実行クロック数を入力し、入力された実行クロ
ック数に基づいて、クロックを供給する機能ブロックを
選択し、命令実行機能ブロックを動作させる時に、上記
実行クロック数の回数上記命令実行機能ブロックを選択
するブロック選択部5とを備えたことを特徴とする。
セッサにおいて、機能ブロックへクロックを選択的に効
率よく供給する。 【解決手段】 クロック信号で動作を制御される複数の
機能ブロックを有し、上記複数の機能ブロックの少なく
ともいずれか一つは命令を実行する命令実行機能ブロッ
クであり、パイプライン処理により命令を処理するプロ
セッサにおいて、命令実行機能ブロックを動作させるの
に必要なクロック数を実行クロック数として判別する実
行クロック数判別部8と、実行クロック数判別部8で判
別された実行クロック数を入力し、入力された実行クロ
ック数に基づいて、クロックを供給する機能ブロックを
選択し、命令実行機能ブロックを動作させる時に、上記
実行クロック数の回数上記命令実行機能ブロックを選択
するブロック選択部5とを備えたことを特徴とする。
Description
【0001】
【発明の属する技術分野】この発明は、プロセッサ(マ
イクロプロセッサ)における低消費電力化技術に関する
ものである。
イクロプロセッサ)における低消費電力化技術に関する
ものである。
【0002】
【従来の技術】従来のパイプライン処理により命令を実
行するマイクロプロセッサにおいては、すべての機能ブ
ロックに対して実行ステージでの動作の有無によらず常
に動作クロックを供給していた。従って、実行ステージ
で動作を行なう必要のない機能ブロックが動作し、余分
に電力を消費するという問題がある。これを改善する為
に、例えば、特開平3−10306のように、命令デコ
ード時に、実行ステージで動作する機能ブロックを検出
し、動作しない機能ブロックに対して動作クロックの供
給を制御するものがある。これによると、1命令毎に実
行に関与するブロックを判断して、そのブロックにのみ
クロックを供給し、命令実行に関与しない回路ブロック
にはクロックを供給しない為、木目細かな電力制御を行
なうことができる。
行するマイクロプロセッサにおいては、すべての機能ブ
ロックに対して実行ステージでの動作の有無によらず常
に動作クロックを供給していた。従って、実行ステージ
で動作を行なう必要のない機能ブロックが動作し、余分
に電力を消費するという問題がある。これを改善する為
に、例えば、特開平3−10306のように、命令デコ
ード時に、実行ステージで動作する機能ブロックを検出
し、動作しない機能ブロックに対して動作クロックの供
給を制御するものがある。これによると、1命令毎に実
行に関与するブロックを判断して、そのブロックにのみ
クロックを供給し、命令実行に関与しない回路ブロック
にはクロックを供給しない為、木目細かな電力制御を行
なうことができる。
【0003】図11は、従来例のマイクロプロセッサの
クロック供給系の構成の一例を示すブロック図である。
図において、1は次にフェッチすべき命令のアドレス値
を格納する命令アドレスレジスタ、2は命令を格納する
命令メモリ、3は命令アドレスレジスタのアドレスに従
い命令メモリからフェッチした命令を格納する命令レジ
スタ、4は命令レジスタの命令を解読する命令デコー
ダ、5は解読した命令を実行する機能ブロックへのクロ
ック制御部を選択するブロック選択部、6は各機能ブロ
ックへのクロック供給を制御するクロック制御部、60
〜62,6Nは6の構成要素であり、60は機能ブロッ
クAへのクロック供給を制御するクロック制御部A、6
1は機能ブロックBへのクロック供給を制御するクロッ
ク制御部B、62は機能ブロックCへのクロック供給を
制御するクロック制御部C、6Nは機能ブロックNへの
クロック供給を制御するクロック制御部N、7は命令を
実行する機能ブロック(命令実行機能ブロック)、70
〜72,7Nは7の構成要素であり、70は命令を実行
する機能ブロックA、71は命令を実行する機能ブロッ
クB、72は命令を実行する機能ブロックC、7Nは命
令を実行する機能ブロックNである。
クロック供給系の構成の一例を示すブロック図である。
図において、1は次にフェッチすべき命令のアドレス値
を格納する命令アドレスレジスタ、2は命令を格納する
命令メモリ、3は命令アドレスレジスタのアドレスに従
い命令メモリからフェッチした命令を格納する命令レジ
スタ、4は命令レジスタの命令を解読する命令デコー
ダ、5は解読した命令を実行する機能ブロックへのクロ
ック制御部を選択するブロック選択部、6は各機能ブロ
ックへのクロック供給を制御するクロック制御部、60
〜62,6Nは6の構成要素であり、60は機能ブロッ
クAへのクロック供給を制御するクロック制御部A、6
1は機能ブロックBへのクロック供給を制御するクロッ
ク制御部B、62は機能ブロックCへのクロック供給を
制御するクロック制御部C、6Nは機能ブロックNへの
クロック供給を制御するクロック制御部N、7は命令を
実行する機能ブロック(命令実行機能ブロック)、70
〜72,7Nは7の構成要素であり、70は命令を実行
する機能ブロックA、71は命令を実行する機能ブロッ
クB、72は命令を実行する機能ブロックC、7Nは命
令を実行する機能ブロックNである。
【0004】次に、動作について説明する。命令アドレ
スレジスタ1には次にフェッチすべき命令のアドレス値
が格納されており、メモリ上でそのアドレスに格納され
た命令を命令メモリ2より読み出し、命令レジスタ3に
格納する。格納された命令は命令デコーダ4に与えら
れ、命令を解読する。命令の解読により、実行する命令
に関与する機能ブロックが判明し、ブロック選択部5に
て実行に関与する機能ブロックのクロック制御部6を選
択し、クロック制御部6にて、実行に関与する機能ブロ
ックへのみクロックを供給するように制御(クロック供
給制御)する。
スレジスタ1には次にフェッチすべき命令のアドレス値
が格納されており、メモリ上でそのアドレスに格納され
た命令を命令メモリ2より読み出し、命令レジスタ3に
格納する。格納された命令は命令デコーダ4に与えら
れ、命令を解読する。命令の解読により、実行する命令
に関与する機能ブロックが判明し、ブロック選択部5に
て実行に関与する機能ブロックのクロック制御部6を選
択し、クロック制御部6にて、実行に関与する機能ブロ
ックへのみクロックを供給するように制御(クロック供
給制御)する。
【0005】
【発明が解決しようとする課題】しかしながら、理想的
なパイプライン処理では各ステージの実行クロック数は
1であるが、実際には命令の種類によりその実行に複数
クロック要するものがある。従来例の特開平3−103
06においては、パイプライン処理が1クロックで実行
することを前提としている為、実行に複数サイクル要す
る場合には前記の機能ブロックへのクロック供給制御に
対応できないという課題があった。例えば、除算命令で
はその実行に複数クロック要するが、上記従来例では、
除算命令ブロックへのクロックを1クロック分しか止め
ることができない。
なパイプライン処理では各ステージの実行クロック数は
1であるが、実際には命令の種類によりその実行に複数
クロック要するものがある。従来例の特開平3−103
06においては、パイプライン処理が1クロックで実行
することを前提としている為、実行に複数サイクル要す
る場合には前記の機能ブロックへのクロック供給制御に
対応できないという課題があった。例えば、除算命令で
はその実行に複数クロック要するが、上記従来例では、
除算命令ブロックへのクロックを1クロック分しか止め
ることができない。
【0006】また、一般的に実行に複数クロック要する
命令を実行する場合、パイプライン処理において他のス
テージの実行を停止(パイプラインストール)させてい
る。この場合、実行を停止させているステージの機能ブ
ロックに対しても動作クロックを供給しており、そこで
無駄な電力を消費するという課題があった。
命令を実行する場合、パイプライン処理において他のス
テージの実行を停止(パイプラインストール)させてい
る。この場合、実行を停止させているステージの機能ブ
ロックに対しても動作クロックを供給しており、そこで
無駄な電力を消費するという課題があった。
【0007】また、ジャンプ命令のような分岐命令を実
行した場合、パイプライン動作により並行して処理する
後続の命令に対し、そのフェッチ、デコードを行なう
が、その結果を使用せずにジャンプ先のアドレスの命令
を実行する為、実行した処理が無駄になるという課題が
あった。
行した場合、パイプライン動作により並行して処理する
後続の命令に対し、そのフェッチ、デコードを行なう
が、その結果を使用せずにジャンプ先のアドレスの命令
を実行する為、実行した処理が無駄になるという課題が
あった。
【0008】この発明は上記のような課題を解決するた
めになされたもので、上記のようなパイプライン動作が
乱れる場合においても、命令を実行する機能ブロック及
び命令実行以外の他のパイプライン機能ブロックへのク
ロックを選択的に効率良く供給制御することで無駄な電
力消費を抑えることを目的とする。
めになされたもので、上記のようなパイプライン動作が
乱れる場合においても、命令を実行する機能ブロック及
び命令実行以外の他のパイプライン機能ブロックへのク
ロックを選択的に効率良く供給制御することで無駄な電
力消費を抑えることを目的とする。
【0009】
【課題を解決するための手段】この発明に係るプロセッ
サは、クロック信号で動作を制御される複数の機能ブロ
ックを有し、上記複数の機能ブロックの少なくともいず
れか一つは命令を実行する命令実行機能ブロックであ
り、複数の機能ブロックから選択された複数の機能ブロ
ックを順番に動作させてパイプライン処理により命令を
処理するプロセッサにおいて、上記命令実行機能ブロッ
クを動作させるのに必要なクロック数を実行クロック数
として判別する実行クロック数判別部と、上記実行クロ
ック数判別部で判別された実行クロック数を入力し、入
力された実行クロック数に基づいて、クロックを供給す
る機能ブロックを選択するブロック選択部とを備えたこ
とを特徴とする。
サは、クロック信号で動作を制御される複数の機能ブロ
ックを有し、上記複数の機能ブロックの少なくともいず
れか一つは命令を実行する命令実行機能ブロックであ
り、複数の機能ブロックから選択された複数の機能ブロ
ックを順番に動作させてパイプライン処理により命令を
処理するプロセッサにおいて、上記命令実行機能ブロッ
クを動作させるのに必要なクロック数を実行クロック数
として判別する実行クロック数判別部と、上記実行クロ
ック数判別部で判別された実行クロック数を入力し、入
力された実行クロック数に基づいて、クロックを供給す
る機能ブロックを選択するブロック選択部とを備えたこ
とを特徴とする。
【0010】上記ブロック選択部は、上記命令実行機能
ブロックを動作させる時に、上記実行クロック数の回数
上記命令実行機能ブロックを選択することを特徴とす
る。
ブロックを動作させる時に、上記実行クロック数の回数
上記命令実行機能ブロックを選択することを特徴とす
る。
【0011】上記複数の機能ブロックは、上記命令実行
機能ブロック以外の命令を処理する命令処理機能ブロッ
クを含み、上記ブロック選択部は、入力された実行クロ
ック数が複数である命令を実行する期間に、クロックを
供給する機能ブロックとして上記命令処理機能を選択し
ないことを特徴とする。
機能ブロック以外の命令を処理する命令処理機能ブロッ
クを含み、上記ブロック選択部は、入力された実行クロ
ック数が複数である命令を実行する期間に、クロックを
供給する機能ブロックとして上記命令処理機能を選択し
ないことを特徴とする。
【0012】上記ブロック選択部は、入力された実行ク
ロック数が複数である命令実行機能ブロックを動作させ
ている期間に、クロックを供給する機能ブロックとして
上記動作させている命令実行機能ブロック以外の機能ブ
ロックを選択しないことを特徴とする。
ロック数が複数である命令実行機能ブロックを動作させ
ている期間に、クロックを供給する機能ブロックとして
上記動作させている命令実行機能ブロック以外の機能ブ
ロックを選択しないことを特徴とする。
【0013】この発明に係るプロセッサは、クロック信
号で動作を制御される複数の機能ブロックを有し、複数
の機能ブロックから選択された複数の機能ブロックを順
番に動作させてパイプライン処理により命令を処理する
プロセッサにおいて、デコードされた命令に基づいて、
クロックを供給する機能ブロックを選択するブロック選
択部を備え、上記ブロック選択部は、デコードされた命
令が、上記デコードされた命令の次に処理する命令の取
り出し先を変更する分岐命令である場合に、分岐命令に
後続する命令を取り出すまでの期間、処理を停止してい
る機能ブロックをクロックを供給する機能ブロックとし
て選択しないことを判断する分岐命令判断部を備えたこ
とを特徴とする。
号で動作を制御される複数の機能ブロックを有し、複数
の機能ブロックから選択された複数の機能ブロックを順
番に動作させてパイプライン処理により命令を処理する
プロセッサにおいて、デコードされた命令に基づいて、
クロックを供給する機能ブロックを選択するブロック選
択部を備え、上記ブロック選択部は、デコードされた命
令が、上記デコードされた命令の次に処理する命令の取
り出し先を変更する分岐命令である場合に、分岐命令に
後続する命令を取り出すまでの期間、処理を停止してい
る機能ブロックをクロックを供給する機能ブロックとし
て選択しないことを判断する分岐命令判断部を備えたこ
とを特徴とする。
【0014】
【発明の実施の形態】実施の形態1.図1は、この発明
の低消費電力マイクロプロセッサのクロック供給系の構
成の一例を示すブロック図である。図において、図11
と同じ番号の構成要素は、図11と同様のものである。
8は各命令の実行クロック数を判別する実行クロック数
判別部である。また、4の命令デコーダにおいて、パイ
プラインストール時は、前のクロックサイクルにおいて
デコードした結果を保持するものとする。
の低消費電力マイクロプロセッサのクロック供給系の構
成の一例を示すブロック図である。図において、図11
と同じ番号の構成要素は、図11と同様のものである。
8は各命令の実行クロック数を判別する実行クロック数
判別部である。また、4の命令デコーダにおいて、パイ
プラインストール時は、前のクロックサイクルにおいて
デコードした結果を保持するものとする。
【0015】また、この実施の形態では、一の命令の処
理過程を複数の段階に分割し、分割された複数の段階の
処理過程をそれぞれ処理する複数の機能ブロックを備
え、複数の命令を並行処理するプロセッサとして、パイ
プライン処理により命令を実行するマイクロプロセッサ
を一例として説明する。
理過程を複数の段階に分割し、分割された複数の段階の
処理過程をそれぞれ処理する複数の機能ブロックを備
え、複数の命令を並行処理するプロセッサとして、パイ
プライン処理により命令を実行するマイクロプロセッサ
を一例として説明する。
【0016】次に、動作について説明する。命令アドレ
スレジスタ1には次にフェッチすべき命令のアドレス値
が格納されており、メモリ上でそのアドレスに格納され
た命令を命令メモリ2より読み出し、命令レジスタ3に
格納する。格納された命令は命令デコーダ4に与えら
れ、命令を解読する。それにより、実行する命令に関与
する機能ブロックが判明する。
スレジスタ1には次にフェッチすべき命令のアドレス値
が格納されており、メモリ上でそのアドレスに格納され
た命令を命令メモリ2より読み出し、命令レジスタ3に
格納する。格納された命令は命令デコーダ4に与えら
れ、命令を解読する。それにより、実行する命令に関与
する機能ブロックが判明する。
【0017】また、実行クロック数判別部8にてその命
令を実行するクロック数を判別する。実行クロック数
(実行するクロック数)は、実行クロック数判別部8内
に、各命令に対応する実行クロック数を設定する回路を
設けること、または、各命令に対応する実行クロック数
を記憶したメモリを備えること等によって判別される。
判別された実行クロック数は、ブロック選択部5へ通知
される。その結果、ブロック選択部にて実行に関与する
機能ブロックへのクロック制御部を選択し、クロック制
御部6にて実行に関与する機能ブロックに対し、実行に
必要な数のクロックを供給するように制御する。
令を実行するクロック数を判別する。実行クロック数
(実行するクロック数)は、実行クロック数判別部8内
に、各命令に対応する実行クロック数を設定する回路を
設けること、または、各命令に対応する実行クロック数
を記憶したメモリを備えること等によって判別される。
判別された実行クロック数は、ブロック選択部5へ通知
される。その結果、ブロック選択部にて実行に関与する
機能ブロックへのクロック制御部を選択し、クロック制
御部6にて実行に関与する機能ブロックに対し、実行に
必要な数のクロックを供給するように制御する。
【0018】次に、図2に示すようなプログラムを実行
した場合を例として、そのパイプライン動作について、
図3により説明する。前提条件として、パイプラインの
段数が5段(IF:命令フェッチ、D:命令デコード、
E:命令実行、M:メモリアクセス、WB:ライトバッ
ク)で、DIV命令(除算命令)の実行に3クロック必
要であるとする。これらの命令を実行する場合、下記の
ようなパイプライン動作を行う。
した場合を例として、そのパイプライン動作について、
図3により説明する。前提条件として、パイプラインの
段数が5段(IF:命令フェッチ、D:命令デコード、
E:命令実行、M:メモリアクセス、WB:ライトバッ
ク)で、DIV命令(除算命令)の実行に3クロック必
要であるとする。これらの命令を実行する場合、下記の
ようなパイプライン動作を行う。
【0019】クロックサイクル1(C1):1番目の命
令(DIV命令)をフェッチする。 クロックサイクル2(C2):1番目の命令(DIV命
令)をデコードする。2番目の命令(ADD命令)をフ
ェッチする。 クロックサイクル3(C3):1番目の命令(DIV命
令)を実行する(1クロック目)。2番目の命令(AD
D命令)をデコードする。3番目の命令(SUB命令)
をフェッチする。
令(DIV命令)をフェッチする。 クロックサイクル2(C2):1番目の命令(DIV命
令)をデコードする。2番目の命令(ADD命令)をフ
ェッチする。 クロックサイクル3(C3):1番目の命令(DIV命
令)を実行する(1クロック目)。2番目の命令(AD
D命令)をデコードする。3番目の命令(SUB命令)
をフェッチする。
【0020】クロックサイクル4(C4):1番目の命
令(DIV命令)を実行する(2クロック目)。2番目
の命令(ADD命令)の実行は保留される。3番目の命
令(SUB命令)のデコードは保留される。
令(DIV命令)を実行する(2クロック目)。2番目
の命令(ADD命令)の実行は保留される。3番目の命
令(SUB命令)のデコードは保留される。
【0021】クロックサイクル5(C5):1番目の命
令(DIV命令)を実行する(3クロック目)。2番目
の命令(ADD命令)の実行は保留される。3番目の命
令(SUB命令)のデコードは保留される。
令(DIV命令)を実行する(3クロック目)。2番目
の命令(ADD命令)の実行は保留される。3番目の命
令(SUB命令)のデコードは保留される。
【0022】クロックサイクル6(C6):1番目の命
令(DIV命令)の実行結果をライトバックする。2番
目の命令(ADD命令)を実行する。3番目の命令(S
UB命令)をデコードする。4番目の命令(ADD命
令)をフェッチする。
令(DIV命令)の実行結果をライトバックする。2番
目の命令(ADD命令)を実行する。3番目の命令(S
UB命令)をデコードする。4番目の命令(ADD命
令)をフェッチする。
【0023】クロックサイクル7(C7):2番目の命
令(ADD命令)の実行結果をライトバックする。3番
目の命令(SUB命令)を実行する。4番目の命令(A
DD命令)をデコードする。 クロックサイクル8(C8):3番目の命令(SUB命
令)の実行結果をライトバックする。4番目の命令(A
DD命令)を実行する。
令(ADD命令)の実行結果をライトバックする。3番
目の命令(SUB命令)を実行する。4番目の命令(A
DD命令)をデコードする。 クロックサイクル8(C8):3番目の命令(SUB命
令)の実行結果をライトバックする。4番目の命令(A
DD命令)を実行する。
【0024】次に、上記プログラム実行時、パイプライ
ンにおけるクロック制御方法について、図1の一実施の
形態であるブロック図の一例を示す。図4と、図5に示
すタイムチャートにより説明する。図4において、6a
はDIV実行ブロックへのクロック供給を制御するDI
Vクロック制御部、6bはADD実行ブロックへのクロ
ック供給を制御するADDクロック制御部、6cはSU
B実行ブロックへのクロック供給を制御するSUBクロ
ック制御部、7aはDIV命令を実行するDIV実行ブ
ロック、7bはADD命令を実行するADD実行ブロッ
ク、7cはSUB命令を実行するSUB実行ブロックで
ある。
ンにおけるクロック制御方法について、図1の一実施の
形態であるブロック図の一例を示す。図4と、図5に示
すタイムチャートにより説明する。図4において、6a
はDIV実行ブロックへのクロック供給を制御するDI
Vクロック制御部、6bはADD実行ブロックへのクロ
ック供給を制御するADDクロック制御部、6cはSU
B実行ブロックへのクロック供給を制御するSUBクロ
ック制御部、7aはDIV命令を実行するDIV実行ブ
ロック、7bはADD命令を実行するADD実行ブロッ
ク、7cはSUB命令を実行するSUB実行ブロックで
ある。
【0025】図5において、CLKはシステムクロック
であり、IRは命令アドレスレジスタの値であり、フェ
ッチは命令フェッチフェーズでフェッチする命令を示
し、デコードはデコードステージにてデコードする命令
を示し、実行は実行ステージで実行する命令を示す。S
ELDIV、SELADD、SELSUBは、夫々DI
V、ADD、SUB命令を実行する機能ブロックへのク
ロック供給選択信号のタイミングであり、Hイネーブル
とする。CLKDIV、CLKADD、CLKSUB
は、夫々DIV、ADD、SUB命令を実行する機能ブ
ロックへ供給するクロック信号のタイミングを示す。
であり、IRは命令アドレスレジスタの値であり、フェ
ッチは命令フェッチフェーズでフェッチする命令を示
し、デコードはデコードステージにてデコードする命令
を示し、実行は実行ステージで実行する命令を示す。S
ELDIV、SELADD、SELSUBは、夫々DI
V、ADD、SUB命令を実行する機能ブロックへのク
ロック供給選択信号のタイミングであり、Hイネーブル
とする。CLKDIV、CLKADD、CLKSUB
は、夫々DIV、ADD、SUB命令を実行する機能ブ
ロックへ供給するクロック信号のタイミングを示す。
【0026】図5において、C1にてフェッチされたD
IV命令はC2にてデコードされる。この時、図4の命
令デコーダ部4は、この命令を実行するのがDIV実行
ブロックであることを判別する。実行クロック数判別部
8は、その実行クロック数を判別する。これにより、ブ
ロック選択部5は、SELDIV信号をC3からC5の
3クロックの間イネーブルとし、DIVクロック制御部
6aがSELDIV信号のイネーブル期間のみDIV実
行ブロックへのクロックであるCLKDIVを供給する
ように制御する。これにより、CLKDIVは、図に示
すようなタイミングで供給される。
IV命令はC2にてデコードされる。この時、図4の命
令デコーダ部4は、この命令を実行するのがDIV実行
ブロックであることを判別する。実行クロック数判別部
8は、その実行クロック数を判別する。これにより、ブ
ロック選択部5は、SELDIV信号をC3からC5の
3クロックの間イネーブルとし、DIVクロック制御部
6aがSELDIV信号のイネーブル期間のみDIV実
行ブロックへのクロックであるCLKDIVを供給する
ように制御する。これにより、CLKDIVは、図に示
すようなタイミングで供給される。
【0027】次の命令であるADD命令はC2にてフェ
ッチされ、C3にてデコードされるが、C4,C5は前
の命令が実行中である為、前の命令の実行が終了してい
るC6に実行される。その為、ブロック選択部5は、C
6にてSELADD信号をイネーブルとし、ADDクロ
ック制御部6bがADD命令実行ブロックへのクロック
であるCLKADDをC6のタイミングで供給するよう
に制御する。ブロック選択部5は、同様に、後続のSU
B、ADD命令を夫々C7,C8で実行するように制御
信号(クロック供給選択信号)を制御し、動作すべきタ
イミングのみクロックを供給する様に制御する。
ッチされ、C3にてデコードされるが、C4,C5は前
の命令が実行中である為、前の命令の実行が終了してい
るC6に実行される。その為、ブロック選択部5は、C
6にてSELADD信号をイネーブルとし、ADDクロ
ック制御部6bがADD命令実行ブロックへのクロック
であるCLKADDをC6のタイミングで供給するよう
に制御する。ブロック選択部5は、同様に、後続のSU
B、ADD命令を夫々C7,C8で実行するように制御
信号(クロック供給選択信号)を制御し、動作すべきタ
イミングのみクロックを供給する様に制御する。
【0028】図12は、図5と対応させて、図11に一
例として示した従来のマイクロプロセッサによって図2
のプログラムを実行した場合のタイムチャートを示して
いる。従来例の場合は、命令の実行に複数クロックを要
する場合に対応していないので、図2のプログラムを実
行した場合は、CLKDIVを1クロック分しか動作さ
せることができない(C3)。従って、C4,C5で
は、クロックは供給されない。
例として示した従来のマイクロプロセッサによって図2
のプログラムを実行した場合のタイムチャートを示して
いる。従来例の場合は、命令の実行に複数クロックを要
する場合に対応していないので、図2のプログラムを実
行した場合は、CLKDIVを1クロック分しか動作さ
せることができない(C3)。従って、C4,C5で
は、クロックは供給されない。
【0029】次に、図4のブロック選択部5におけるセ
レクト信号の発生方法について、一実施の形態を示しそ
の動作を説明する。例えば、図4のブロック選択部5内
にCLK信号に同期してデータをロードするカウンタ
(ダウンカウンタ)を設ける。このカウンタはシステム
リセット時にリセットされ、CLK立ち上がり時にカウ
ントダウンし、カウント値が0となった場合、それ以上
カウントダウンされずデータがロードされるまで値を0
のままとする。各クロックサイクルにおいて、ブロック
選択部5は、1つ前のクロックサイクルにおけるこのカ
ウンタ値に従い下記制御を行う。
レクト信号の発生方法について、一実施の形態を示しそ
の動作を説明する。例えば、図4のブロック選択部5内
にCLK信号に同期してデータをロードするカウンタ
(ダウンカウンタ)を設ける。このカウンタはシステム
リセット時にリセットされ、CLK立ち上がり時にカウ
ントダウンし、カウント値が0となった場合、それ以上
カウントダウンされずデータがロードされるまで値を0
のままとする。各クロックサイクルにおいて、ブロック
選択部5は、1つ前のクロックサイクルにおけるこのカ
ウンタ値に従い下記制御を行う。
【0030】A.1つ前のクロックサイクルでのカウン
タ値が0の場合 (1)1つ前のクロックサイクルにおけるデコード結果
の命令の実行クロック数により下記処理を行う。 ・命令の実行クロック数が1以上の場合:CLK信号に
同期してにて(命令の実行クロック数−1)をカウンタ
にロードする。 ・命令の実行クロック数が1の場合:カウンタに値をロ
ードしない。 ・まだデコードを行なっていない場合:カウンタに値を
ロードしない。 (2)1つ前のクロックサイクルにおけるデコード結果
に基づき、その命令に対応するクロック制御部6へのブ
ロックセレクト信号をイネーブルにする。デコードが行
われていない場合は何もしない。
タ値が0の場合 (1)1つ前のクロックサイクルにおけるデコード結果
の命令の実行クロック数により下記処理を行う。 ・命令の実行クロック数が1以上の場合:CLK信号に
同期してにて(命令の実行クロック数−1)をカウンタ
にロードする。 ・命令の実行クロック数が1の場合:カウンタに値をロ
ードしない。 ・まだデコードを行なっていない場合:カウンタに値を
ロードしない。 (2)1つ前のクロックサイクルにおけるデコード結果
に基づき、その命令に対応するクロック制御部6へのブ
ロックセレクト信号をイネーブルにする。デコードが行
われていない場合は何もしない。
【0031】B.1つ前のクロックサイクルでのカウン
タ値が0以外の場合 (1)1つ前のクロックサイクルでイネーブルとしたブ
ロックセレクト信号を引き続きイネーブルとする。
タ値が0以外の場合 (1)1つ前のクロックサイクルでイネーブルとしたブ
ロックセレクト信号を引き続きイネーブルとする。
【0032】この動作を、上記図2のプログラム実行時
を例に図5により説明する。この場合、C1の前のクロ
ックタイミングでシステムリセットを行なうとする。
を例に図5により説明する。この場合、C1の前のクロ
ックタイミングでシステムリセットを行なうとする。
【0033】クロックサイクル1(C1):C1の前の
タイミングでカウンタ値が0であるが、デコードを行な
っていない為、カウンタはそのままとしセレクト信号も
出さない。 クロックサイクル2(C2):C1時のカウンタ値が0
であるが、デコードを行なっていない為、カウンタはそ
のままとしセレクト信号も出さない。
タイミングでカウンタ値が0であるが、デコードを行な
っていない為、カウンタはそのままとしセレクト信号も
出さない。 クロックサイクル2(C2):C1時のカウンタ値が0
であるが、デコードを行なっていない為、カウンタはそ
のままとしセレクト信号も出さない。
【0034】クロックサイクル3(C3):C2時のカ
ウンタ値が0である為、C2時のデコード結果の命令の
実行クロック数を判別する。デコードした命令はDIV
でありその命令の実行クロック数は3である為、2をカ
ウンタにロードする。また、SELDIVをイネーブル
とする。 クロックサイクル4(C4):C3時のカウンタ値が2
である為、引き続きSELDIVをイネーブルとする。
カウンタ値はCLKにより1にカウントダウンされる。
ウンタ値が0である為、C2時のデコード結果の命令の
実行クロック数を判別する。デコードした命令はDIV
でありその命令の実行クロック数は3である為、2をカ
ウンタにロードする。また、SELDIVをイネーブル
とする。 クロックサイクル4(C4):C3時のカウンタ値が2
である為、引き続きSELDIVをイネーブルとする。
カウンタ値はCLKにより1にカウントダウンされる。
【0035】クロックサイクル5(C5):C4時のカ
ウンタ値が1である為、引き続きSELDIVをイネー
ブルとする。カウンタ値はCLKにより0にカウントダ
ウンされる。 クロックサイクル6(C6):C5時のカウンタ値は0
となっている為、C5時のデコード結果の命令の実行ク
ロック数を判別する。デコードした命令はADDであ
り、その命令の実行クロック数は1である為、カウンタ
はそのままとし、SELDIVをディセーブルとしSE
LADDをイネーブルとする。
ウンタ値が1である為、引き続きSELDIVをイネー
ブルとする。カウンタ値はCLKにより0にカウントダ
ウンされる。 クロックサイクル6(C6):C5時のカウンタ値は0
となっている為、C5時のデコード結果の命令の実行ク
ロック数を判別する。デコードした命令はADDであ
り、その命令の実行クロック数は1である為、カウンタ
はそのままとし、SELDIVをディセーブルとしSE
LADDをイネーブルとする。
【0036】クロックサイクル7(C7):C6時のカ
ウンタ値は0となっている為、C6時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
SUBであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、SELADDをディセー
ブルとし、SUBSELをイネーブルとする。
ウンタ値は0となっている為、C6時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
SUBであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、SELADDをディセー
ブルとし、SUBSELをイネーブルとする。
【0037】クロックサイクル8(C8):C7時のカ
ウンタ値は0となっている為、C7時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、SUBSELをディセー
ブルとし、ADDSELをイネーブルとする。
ウンタ値は0となっている為、C7時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、SUBSELをディセー
ブルとし、ADDSELをイネーブルとする。
【0038】上記のように、SELDIV、SELAD
D、SELSUB信号を制御することで、CLKDI
V、CLKADD、CLKSUB信号を制御する。
D、SELSUB信号を制御することで、CLKDI
V、CLKADD、CLKSUB信号を制御する。
【0039】このように、この発明のプロセッサ(マイ
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、命令デコード時に
その命令の実行に必要なクロック数を判別する手段と、
命令の実行に必要なクロック数だけ、その命令を実行す
る機能ブロックへクロックを供給する手段を備えること
を特徴とする。
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、命令デコード時に
その命令の実行に必要なクロック数を判別する手段と、
命令の実行に必要なクロック数だけ、その命令を実行す
る機能ブロックへクロックを供給する手段を備えること
を特徴とする。
【0040】以上のように、実行する命令とその命令に
必要なクロック数を判別し、実行に必要な機能ブロック
へ必要な数のみクロックを供給するようにしているの
で、複数クロック要する命令の実行に対しても、より木
目細かな電力を制御することができる。
必要なクロック数を判別し、実行に必要な機能ブロック
へ必要な数のみクロックを供給するようにしているの
で、複数クロック要する命令の実行に対しても、より木
目細かな電力を制御することができる。
【0041】実施の形態2.実施の形態1では、命令実
行ブロックのみクロック供給を制御するようにしたもの
であるが、命令実行ブロック以外のパイプライン機能ブ
ロックであるIF(命令フェッチ)実行ブロック、DE
C(命令デコード)実行ブロック等に対してクロックを
制御する場合の実施の形態について、実施の形態1と同
様な図2のプログラムを実行した場合を例として説明す
る。
行ブロックのみクロック供給を制御するようにしたもの
であるが、命令実行ブロック以外のパイプライン機能ブ
ロックであるIF(命令フェッチ)実行ブロック、DE
C(命令デコード)実行ブロック等に対してクロックを
制御する場合の実施の形態について、実施の形態1と同
様な図2のプログラムを実行した場合を例として説明す
る。
【0042】図6は、このような場合における低消費電
力マイクロプロセッサのクロック供給系の構成の一実施
の形態を示すブロック図である。図において、6dはI
F(命令フェッチ)実行ブロックへのクロック供給を制
御するIFクロック制御部、6eはDEC(命令デコー
ド)実行ブロックへのクロック供給を制御するDECク
ロック制御部、9は命令フェッチを実行するIF実行ブ
ロック、10は命令デコードを実行するDEC実行ブロ
ックである。
力マイクロプロセッサのクロック供給系の構成の一実施
の形態を示すブロック図である。図において、6dはI
F(命令フェッチ)実行ブロックへのクロック供給を制
御するIFクロック制御部、6eはDEC(命令デコー
ド)実行ブロックへのクロック供給を制御するDECク
ロック制御部、9は命令フェッチを実行するIF実行ブ
ロック、10は命令デコードを実行するDEC実行ブロ
ックである。
【0043】11は命令の実行を除く命令の処理過程を
処理する命令処理機能ブロックである。この実施の形態
では、IF実行ブロック9及びDEC実行ブロック10
とを含む。12は一の命令の処理過程を複数の段階に分
割し、分割された複数の段階の処理過程をそれぞれ処理
する複数の機能ブロックであり、この実施の形態では、
上記命令実行機能ブロック7と、命令処理機能ブロック
11とを含む。上記以外の構成は図4と同様である。
処理する命令処理機能ブロックである。この実施の形態
では、IF実行ブロック9及びDEC実行ブロック10
とを含む。12は一の命令の処理過程を複数の段階に分
割し、分割された複数の段階の処理過程をそれぞれ処理
する複数の機能ブロックであり、この実施の形態では、
上記命令実行機能ブロック7と、命令処理機能ブロック
11とを含む。上記以外の構成は図4と同様である。
【0044】図7は、上記プログラムを実行時のタイム
チャートを示す。図7において、SELIFはIFクロ
ック制御部選択信号のタイミング、SELDECはDE
Cクロック制御部選択信号のタイミングを示し、夫々H
イネーブルとする。CLKIFはIF実行ブロックへの
クロック信号のタイミング、CLKDECはDEC実行
ブロックへのクロック信号のタイミングである。
チャートを示す。図7において、SELIFはIFクロ
ック制御部選択信号のタイミング、SELDECはDE
Cクロック制御部選択信号のタイミングを示し、夫々H
イネーブルとする。CLKIFはIF実行ブロックへの
クロック信号のタイミング、CLKDECはDEC実行
ブロックへのクロック信号のタイミングである。
【0045】実施の形態1の場合と同様、C1にてフェ
ッチされたDIV命令は、C2にて図6の命令デコーダ
4により解読される。この時、DIV命令の実行に3ク
ロック必要であることを、図6の実行クロック数判別部
8にて判断する。これにより、図6のブロック選択部5
にてSELIF信号、SELDEC信号をパイプライン
ストール期間であるC4からC5の2クロックの間ディ
セーブルとする。この2つの信号は通常イネーブルとす
る。
ッチされたDIV命令は、C2にて図6の命令デコーダ
4により解読される。この時、DIV命令の実行に3ク
ロック必要であることを、図6の実行クロック数判別部
8にて判断する。これにより、図6のブロック選択部5
にてSELIF信号、SELDEC信号をパイプライン
ストール期間であるC4からC5の2クロックの間ディ
セーブルとする。この2つの信号は通常イネーブルとす
る。
【0046】次に、6dのIFクロック制御部、6eの
DECクロック制御部にて、これらの信号のディセーブ
ル期間のみパイプラインステージであるIFブロック、
DECブロックへのクロック供給を停止するように制御
する。それにより、IFブロック、DECブロックへ供
給するクロックであるCLKIF、CLKDECは、図
に示すように、C4,C5期間停止される。
DECクロック制御部にて、これらの信号のディセーブ
ル期間のみパイプラインステージであるIFブロック、
DECブロックへのクロック供給を停止するように制御
する。それにより、IFブロック、DECブロックへ供
給するクロックであるCLKIF、CLKDECは、図
に示すように、C4,C5期間停止される。
【0047】図13は、図7と対応させて、図11に一
例として示した従来のマイクロプロセッサによって図2
のプログラムを実行した場合のタイムチャートを示して
いる。従来例の場合は、命令の実行に複数クロックを要
する命令実行時に、動作に関与しない他のステージへ動
作クロックは供給される(C4,C5)。従って、CL
KIF,CLDDECは、常に、クロックが供給されて
いる状態となる。
例として示した従来のマイクロプロセッサによって図2
のプログラムを実行した場合のタイムチャートを示して
いる。従来例の場合は、命令の実行に複数クロックを要
する命令実行時に、動作に関与しない他のステージへ動
作クロックは供給される(C4,C5)。従って、CL
KIF,CLDDECは、常に、クロックが供給されて
いる状態となる。
【0048】次に、図6のブロック選択部5におけるパ
イプラインステージのクロック制御部に対するセレクト
信号の発生方法について、一実施の形態を示し、その動
作を説明する。例えば、図6のブロック選択部5内にC
LK信号に同期してデータをロードするカウンタ(ダウ
ンカウンタ)を設ける。このカウンタは、システムリセ
ット時にリセットされ、CLK立ち上がり時にカウント
ダウンし、カウント値が0となった場合、それ以上カウ
ントダウンされず、データがロードされるまで値を0の
ままとする。各クロックサイクルにおいて、ブロック選
択部5は、1つ前のクロックサイクルにおけるこのカウ
ンタ値に従い下記制御を行う。
イプラインステージのクロック制御部に対するセレクト
信号の発生方法について、一実施の形態を示し、その動
作を説明する。例えば、図6のブロック選択部5内にC
LK信号に同期してデータをロードするカウンタ(ダウ
ンカウンタ)を設ける。このカウンタは、システムリセ
ット時にリセットされ、CLK立ち上がり時にカウント
ダウンし、カウント値が0となった場合、それ以上カウ
ントダウンされず、データがロードされるまで値を0の
ままとする。各クロックサイクルにおいて、ブロック選
択部5は、1つ前のクロックサイクルにおけるこのカウ
ンタ値に従い下記制御を行う。
【0049】A.1つ前のクロックサイクルにおけるカ
ウンタ値が0の場合 (1)1つ前のクロックサイクルにおけるデコード結果
の命令の実行クロック数により下記処理を行う。 ・命令の実行クロック数が1以上の場合:CLK信号に
同期してにて(命令の実行クロック数−1)をカウンタ
にロードする。 ・命令の実行クロック数が1の場合:カウンタに値をロ
ードしない。 ・まだデコードを行なっていない場合:カウンタに値を
ロードしない。 (2)IF実行ブロック、DEC実行ブロックへのクロ
ックセレクト信号(SELIF、SELDEC)をイネ
ーブルとする。
ウンタ値が0の場合 (1)1つ前のクロックサイクルにおけるデコード結果
の命令の実行クロック数により下記処理を行う。 ・命令の実行クロック数が1以上の場合:CLK信号に
同期してにて(命令の実行クロック数−1)をカウンタ
にロードする。 ・命令の実行クロック数が1の場合:カウンタに値をロ
ードしない。 ・まだデコードを行なっていない場合:カウンタに値を
ロードしない。 (2)IF実行ブロック、DEC実行ブロックへのクロ
ックセレクト信号(SELIF、SELDEC)をイネ
ーブルとする。
【0050】B.1つ前のクロックサイクルにおけるカ
ウンタ値が0以外の場合 (1)IF実行ブロック、DEC実行ブロックへのクロ
ックセレクト信号(SELIF、SELDEC)をディ
セーブルとする。
ウンタ値が0以外の場合 (1)IF実行ブロック、DEC実行ブロックへのクロ
ックセレクト信号(SELIF、SELDEC)をディ
セーブルとする。
【0051】この動作を上記図2のプログラム実行時を
例に図7により説明する。この場合、C1の前のクロッ
クタイミングでシステムリセットを行なうとする。
例に図7により説明する。この場合、C1の前のクロッ
クタイミングでシステムリセットを行なうとする。
【0052】クロックサイクル1(C1):C1の前の
タイミングでカウンタ値が0であるが、デコードを行な
っていない為、カウンタはそのままとし、IF実行ブロ
ック、DEC実行ブロックへのクロックセレクト信号
(SELIF、SELDEC)をイネーブルとする。 クロックサイクル2(C2):C1時のカウンタ値が0
であるが、デコードを行なっていない為、カウンタはそ
のままとし、IF実行ブロック、DEC実行ブロックへ
のクロックセレクト信号(SELIF、SELDEC)
をイネーブルとする。
タイミングでカウンタ値が0であるが、デコードを行な
っていない為、カウンタはそのままとし、IF実行ブロ
ック、DEC実行ブロックへのクロックセレクト信号
(SELIF、SELDEC)をイネーブルとする。 クロックサイクル2(C2):C1時のカウンタ値が0
であるが、デコードを行なっていない為、カウンタはそ
のままとし、IF実行ブロック、DEC実行ブロックへ
のクロックセレクト信号(SELIF、SELDEC)
をイネーブルとする。
【0053】クロックサイクル3(C3):C2時のカ
ウンタ値が0である為、C2時のデコード結果の命令の
実行クロック数を判別する。デコードした命令はDIV
でありその命令の実行クロック数は3である為、2をカ
ウンタにロードする。IF実行ブロック、DEC実行ブ
ロックへのクロックセレクト信号(SELIF、SEL
DEC)をイネーブルとする。
ウンタ値が0である為、C2時のデコード結果の命令の
実行クロック数を判別する。デコードした命令はDIV
でありその命令の実行クロック数は3である為、2をカ
ウンタにロードする。IF実行ブロック、DEC実行ブ
ロックへのクロックセレクト信号(SELIF、SEL
DEC)をイネーブルとする。
【0054】クロックサイクル4(C4):C3時のカ
ウンタ値が2である為、IF実行ブロック、DEC実行
ブロックへのクロックセレクト信号(SELIF、SE
LDEC)をディセーブルとする。カウンタ値はCLK
により1にカウントダウンする。 クロックサイクル5(C5):C4時のカウンタ値が1
である為、IF実行ブロック、DEC実行ブロックへの
クロックセレクト信号(SELIF、SELDEC)を
ディセーブルとする。カウンタ値はCLKにより0にカ
ウントダウンする。
ウンタ値が2である為、IF実行ブロック、DEC実行
ブロックへのクロックセレクト信号(SELIF、SE
LDEC)をディセーブルとする。カウンタ値はCLK
により1にカウントダウンする。 クロックサイクル5(C5):C4時のカウンタ値が1
である為、IF実行ブロック、DEC実行ブロックへの
クロックセレクト信号(SELIF、SELDEC)を
ディセーブルとする。カウンタ値はCLKにより0にカ
ウントダウンする。
【0055】クロックサイクル6(C6):C5時のカ
ウンタ値は0となっている為、C5時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
ウンタ値は0となっている為、C5時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
【0056】クロックサイクル7(C7):C6時のカ
ウンタ値は0となっている為、C6時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
SUBであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
ウンタ値は0となっている為、C6時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
SUBであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
【0057】クロックサイクル8(C8):C7時のカ
ウンタ値は0となっている為、C7時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
ウンタ値は0となっている為、C7時のデコード結果の
命令の実行クロック数を判別する。デコードした命令は
ADDであり、その命令の実行クロック数は1である
為、カウンタはそのままとし、IF実行ブロック、DE
C実行ブロックへのクロックセレクト信号(SELI
F、SELDEC)をイネーブルとする。
【0058】上記のように、SELIF、SELDEC
信号の制御を行なうことで、CLKIF、CLKDEC
信号を制御する。
信号の制御を行なうことで、CLKIF、CLKDEC
信号を制御する。
【0059】このように、この発明のプロセッサ(マイ
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、複数クロックを要
する命令実行時に、命令実行以外の他のパイプラインス
テージの回路ブロックへ供給するクロックの動作を停止
させる手段を備えることを特徴とする。
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、複数クロックを要
する命令実行時に、命令実行以外の他のパイプラインス
テージの回路ブロックへ供給するクロックの動作を停止
させる手段を備えることを特徴とする。
【0060】以上のように、実行する命令とその命令に
必要なクロック数を判断し、複数クロック要する命令実
行時に他のパイプライン動作を実行するブロックへ供給
するクロックを停止制御することで、動作しない機能ブ
ロックへのクロック供給を停止でき、より木目細かな電
力を制御することができる。
必要なクロック数を判断し、複数クロック要する命令実
行時に他のパイプライン動作を実行するブロックへ供給
するクロックを停止制御することで、動作しない機能ブ
ロックへのクロック供給を停止でき、より木目細かな電
力を制御することができる。
【0061】実施の形態3.分岐命令デコード時に、そ
の分岐命令による分岐先の命令をフェッチするまでに並
行して実行する他のパイプラインステージの回路ブロッ
クへ供給するクロックを制御する場合の実施の形態につ
いて、図8のプログラムを実行した場合を例として説明
する。
の分岐命令による分岐先の命令をフェッチするまでに並
行して実行する他のパイプラインステージの回路ブロッ
クへ供給するクロックを制御する場合の実施の形態につ
いて、図8のプログラムを実行した場合を例として説明
する。
【0062】図9の低消費電力マイクロプロセッサのク
ロック供給系の構成の一実施の形態を示すブロック図
と、図10の上記プログラム実行時のタイムチャートに
より動作を説明する。図9において、51は命令デコー
ダによってデコードされた命令が次に処理する命令の取
り出し先を変更する分岐命令である場合に、クロックを
供給する機能ブロックの選択を制御する分岐命令判断部
である。上記以外の構成は、図4又は図6と同様であ
る。
ロック供給系の構成の一実施の形態を示すブロック図
と、図10の上記プログラム実行時のタイムチャートに
より動作を説明する。図9において、51は命令デコー
ダによってデコードされた命令が次に処理する命令の取
り出し先を変更する分岐命令である場合に、クロックを
供給する機能ブロックの選択を制御する分岐命令判断部
である。上記以外の構成は、図4又は図6と同様であ
る。
【0063】図10において、C1にてフェッチされた
JMP命令はC2において、図6の命令デコーダ4によ
り解読される。命令のデコードにより、解読した命令が
分岐命令であることが判明する。C3では、後続命令の
フェッチ及びデコードを停止し、次のC4でデコード動
作を停止制御させる為、8のブロック選択部にて、IF
実行ブロック、DEC実行ブロックへのブロック選択信
号を上記期間ディセーブルとする。これにより、C3で
は、IF実行ブロック、DEC実行ブロック、C4では
DEC実行ブロックへのクロック供給が停止される。C
4では、分岐先のアドレスの命令をフェッチするので、
以降、分岐先アドレスに引き続く命令を実行してゆく。
JMP命令はC2において、図6の命令デコーダ4によ
り解読される。命令のデコードにより、解読した命令が
分岐命令であることが判明する。C3では、後続命令の
フェッチ及びデコードを停止し、次のC4でデコード動
作を停止制御させる為、8のブロック選択部にて、IF
実行ブロック、DEC実行ブロックへのブロック選択信
号を上記期間ディセーブルとする。これにより、C3で
は、IF実行ブロック、DEC実行ブロック、C4では
DEC実行ブロックへのクロック供給が停止される。C
4では、分岐先のアドレスの命令をフェッチするので、
以降、分岐先アドレスに引き続く命令を実行してゆく。
【0064】また、この実施の形態では、図9のマイク
ロプロセッサを用いて説明したが、図11に示すブロッ
ク選択部5へ、上記分岐命令判断部51を追加すること
によって、同様の機能を実現することができる。
ロプロセッサを用いて説明したが、図11に示すブロッ
ク選択部5へ、上記分岐命令判断部51を追加すること
によって、同様の機能を実現することができる。
【0065】このように、この発明のプロセッサ(マイ
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、分岐命令デコード
時に、その分岐命令による分岐先の命令をフェッチする
までに並行して実行する他のパイプラインステージ回路
ブロックへのクロック供給を停止させる手段を備えるこ
とを特徴とする。
クロプロセッサ)は、パイプライン処理により命令を実
行するマイクロプロセッサにおいて、分岐命令デコード
時に、その分岐命令による分岐先の命令をフェッチする
までに並行して実行する他のパイプラインステージ回路
ブロックへのクロック供給を停止させる手段を備えるこ
とを特徴とする。
【0066】以上のように、命令が分岐命令であること
を判別した場合、分岐命令先の命令をフェッチするまで
の間、他のパイプラインブロックへ供給するクロックを
停止制御する事で、必要のない動作をせず、より木目細
かな電力を制御することができる。
を判別した場合、分岐命令先の命令をフェッチするまで
の間、他のパイプラインブロックへ供給するクロックを
停止制御する事で、必要のない動作をせず、より木目細
かな電力を制御することができる。
【0067】
【発明の効果】この発明によるプロセッサによれば、複
数クロックを要する命令の実行に対しても、木目細かな
電力の供給を制御することができる。
数クロックを要する命令の実行に対しても、木目細かな
電力の供給を制御することができる。
【0068】この発明によれば、動作しない機能ブロッ
クへのクロックの供給を停止することによって、電力の
供給を制御することができる。
クへのクロックの供給を停止することによって、電力の
供給を制御することができる。
【0069】この発明によれば、分岐命令によって機能
ブロックの処理が停止している間のクロックの供給を停
止することによって、電力の供給を制御することができ
る。
ブロックの処理が停止している間のクロックの供給を停
止することによって、電力の供給を制御することができ
る。
【図1】 この発明のマイクロプロセッサのクロック供
給系の構成の一例を示すブロック図。
給系の構成の一例を示すブロック図。
【図2】 実施の形態1または2で動作を説明する際に
一例として使用するプログラムを表わした図。
一例として使用するプログラムを表わした図。
【図3】 実施の形態1のプロセッサのパイプライン処
理によって命令を実行する動作を表わした図。
理によって命令を実行する動作を表わした図。
【図4】 実施の形態1または2のマイクロプロセッサ
のクロック供給系の構成の一例を示すブロック図。
のクロック供給系の構成の一例を示すブロック図。
【図5】 実施の形態1のプロセッサのパイプライン処
理によって図3に示す命令を実行した場合のタイムチャ
ート(命令実行機能ブロック)を表わした図。
理によって図3に示す命令を実行した場合のタイムチャ
ート(命令実行機能ブロック)を表わした図。
【図6】 実施の形態2のマイクロプロセッサのクロッ
ク供給系の構成の一例を示すブロック図。
ク供給系の構成の一例を示すブロック図。
【図7】 実施の形態2のプロセッサのパイプライン処
理によって図3に示す命令を実行した場合のタイムチャ
ート(命令処理機能ブロック)を表わした図。
理によって図3に示す命令を実行した場合のタイムチャ
ート(命令処理機能ブロック)を表わした図。
【図8】 実施の形態3で動作を説明する際に一例とし
て使用するプログラムの一例を表わした図。
て使用するプログラムの一例を表わした図。
【図9】 実施の形態3のマイクロプロセッサのクロッ
ク供給系の構成の一例を示すブロック図。
ク供給系の構成の一例を示すブロック図。
【図10】 実施の形態3のプロセッサのパイプライン
処理によって図8に示す命令を実行した場合のタイムチ
ャートを表わした図。
処理によって図8に示す命令を実行した場合のタイムチ
ャートを表わした図。
【図11】 従来のマイクロプロセッサのクロック供給
系の構成の一例を示すブロック図。
系の構成の一例を示すブロック図。
【図12】 図11に一例として示した従来のプロセッ
サのパイプライン処理によって図3に示す命令を実行し
た場合のタイムチャート(命令実行機能ブロック)を表
わした図。
サのパイプライン処理によって図3に示す命令を実行し
た場合のタイムチャート(命令実行機能ブロック)を表
わした図。
【図13】 図11に一例として示した従来のプロセッ
サのパイプライン処理によって図3に示す命令を実行し
た場合のタイムチャート(命令処理機能ブロック)を表
わした図。
サのパイプライン処理によって図3に示す命令を実行し
た場合のタイムチャート(命令処理機能ブロック)を表
わした図。
1 命令アドレスレジスタ、2 命令メモリ、3 命令
レジスタ、4 命令デコーダ、5 ブロック選択部、6
クロック制御部、6a DIVクロック制御部、6b
ADDクロック制御部、6c SUBクロック制御
部、6d IFクロック制御部、6e DECクロック
制御部、6N クロック制御部N、7 命令を実行する
機能ブロック(命令実行機能ブロック)、7a DIV
実行ブロック、7b ADD実行ブロック、7c SU
B実行ブロック、7N 機能ブロックN、8 実行クロ
ック数判別部、9 IF実行ブロック、10 DEC実
行ブロック、11 命令処理機能ブロック、12 機能
ブロック、51 分岐命令判断部、60 クロック制御
部A、61 クロック制御部B、62 クロック制御部
C、70 機能ブロックA、71 機能ブロックB、7
2 機能ブロックC。
レジスタ、4 命令デコーダ、5 ブロック選択部、6
クロック制御部、6a DIVクロック制御部、6b
ADDクロック制御部、6c SUBクロック制御
部、6d IFクロック制御部、6e DECクロック
制御部、6N クロック制御部N、7 命令を実行する
機能ブロック(命令実行機能ブロック)、7a DIV
実行ブロック、7b ADD実行ブロック、7c SU
B実行ブロック、7N 機能ブロックN、8 実行クロ
ック数判別部、9 IF実行ブロック、10 DEC実
行ブロック、11 命令処理機能ブロック、12 機能
ブロック、51 分岐命令判断部、60 クロック制御
部A、61 クロック制御部B、62 クロック制御部
C、70 機能ブロックA、71 機能ブロックB、7
2 機能ブロックC。
Claims (5)
- 【請求項1】 クロック信号で動作を制御される複数の
機能ブロックを有し、上記複数の機能ブロックの少なく
ともいずれか一つは命令を実行する命令実行機能ブロッ
クであり、複数の機能ブロックから選択された複数の機
能ブロックを順番に動作させてパイプライン処理により
命令を処理するプロセッサにおいて、 上記命令実行機能ブロックを動作させるのに必要なクロ
ック数を実行クロック数として判別する実行クロック数
判別部と、 上記実行クロック数判別部で判別された実行クロック数
を入力し、入力された実行クロック数に基づいて、クロ
ックを供給する機能ブロックを選択するブロック選択部
とを備えたことを特徴とするプロセッサ。 - 【請求項2】 上記ブロック選択部は、上記命令実行機
能ブロックを動作させる時に、上記実行クロック数の回
数上記命令実行機能ブロックを選択することを特徴とす
る請求項1記載のプロセッサ。 - 【請求項3】 上記複数の機能ブロックは、上記命令実
行機能ブロック以外の命令を処理する命令処理機能ブロ
ックを含み、 上記ブロック選択部は、入力された実行クロック数が複
数である命令を実行する期間に、クロックを供給する機
能ブロックとして上記命令処理機能を選択しないことを
特徴とする請求項1記載のプロセッサ。 - 【請求項4】 上記ブロック選択部は、入力された実行
クロック数が複数である命令実行機能ブロックを動作さ
せている期間に、クロックを供給する機能ブロックとし
て上記動作させている命令実行機能ブロック以外の機能
ブロックを選択しないことを特徴とする請求項1記載の
プロセッサ。 - 【請求項5】 クロック信号で動作を制御される複数の
機能ブロックを有し、複数の機能ブロックから選択され
た複数の機能ブロックを順番に動作させてパイプライン
処理により命令を処理するプロセッサにおいて、 デコードされた命令に基づいて、クロックを供給する機
能ブロックを選択するブロック選択部を備え、 上記ブロック選択部は、デコードされた命令が、上記デ
コードされた命令の次に処理する命令の取り出し先を変
更する分岐命令である場合に、分岐命令に後続する命令
を取り出すまでの期間、処理を停止している機能ブロッ
クをクロックを供給する機能ブロックとして選択しない
ことを判断する分岐命令判断部を備えたことを特徴とす
るプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000051592A JP2001243065A (ja) | 2000-02-28 | 2000-02-28 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000051592A JP2001243065A (ja) | 2000-02-28 | 2000-02-28 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001243065A true JP2001243065A (ja) | 2001-09-07 |
Family
ID=18573222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000051592A Withdrawn JP2001243065A (ja) | 2000-02-28 | 2000-02-28 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001243065A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123410A (ja) * | 2006-11-15 | 2008-05-29 | Yamaha Corp | デジタル信号処理装置 |
JP2008536201A (ja) * | 2005-03-04 | 2008-09-04 | インテル コーポレイション | クロック分布領域へのクロック分布シーケンスの制御 |
-
2000
- 2000-02-28 JP JP2000051592A patent/JP2001243065A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008536201A (ja) * | 2005-03-04 | 2008-09-04 | インテル コーポレイション | クロック分布領域へのクロック分布シーケンスの制御 |
JP2008123410A (ja) * | 2006-11-15 | 2008-05-29 | Yamaha Corp | デジタル信号処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7430678B2 (en) | Low power operation control unit and program optimizing method | |
US7861062B2 (en) | Data processing device with instruction controlled clock speed | |
US7457970B2 (en) | VLIW processor with power saving | |
US8195975B2 (en) | Semiconductor integrated circuit device and clock control method | |
JPH0922318A (ja) | プロセッサ及びその制御方法 | |
US20010016900A1 (en) | Dynamic allocation of resources in multiple microprocessor pipelines | |
KR20070039079A (ko) | 명령어 처리 회로 | |
US6125440A (en) | Storing executing instruction sequence for re-execution upon backward branch to reduce power consuming memory fetch | |
EP1728151A2 (en) | Instruction pipeline | |
JP2001243065A (ja) | プロセッサ | |
JPH0772864B2 (ja) | ディジタル信号プロセッサ | |
JP3459821B2 (ja) | マイクロプロセッサ | |
US6981130B2 (en) | Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel | |
US6704853B1 (en) | Digital signal processing apparatus and method for controlling the same | |
US7197653B2 (en) | Microcontroller for fetching and decoding a frequency control signal together with an operation code | |
US20050015561A1 (en) | Memory control method and memory control apparatus | |
JPH0683616A (ja) | 半導体集積回路 | |
JP5489402B2 (ja) | 信号処理プロセッサ | |
JPH1020959A (ja) | 低消費電力マイクロプロセッサ | |
JP3082103B2 (ja) | プロセッサ | |
JP2636192B2 (ja) | 情報処理装置 | |
JPH08101820A (ja) | マイクロプロセッサ | |
JP2002268876A (ja) | パイプライン処理方法、及び情報処理装置 | |
JP2006126893A (ja) | クロック制御装置、情報処理装置およびクロック制御方法 | |
EP0556825A1 (en) | Microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20051018 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20070501 |