JP3562215B2 - マイクロコンピュータ及び電子機器 - Google Patents
マイクロコンピュータ及び電子機器 Download PDFInfo
- Publication number
- JP3562215B2 JP3562215B2 JP13771097A JP13771097A JP3562215B2 JP 3562215 B2 JP3562215 B2 JP 3562215B2 JP 13771097 A JP13771097 A JP 13771097A JP 13771097 A JP13771097 A JP 13771097A JP 3562215 B2 JP3562215 B2 JP 3562215B2
- Authority
- JP
- Japan
- Prior art keywords
- clock
- data
- circuit
- bus
- pipeline
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、マイクロコンピュータ及び電子機器に関する。
【0002】
【背景技術及び発明が解決しようとする課題】
近年、家庭用のゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末などの電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。
【0003】
このようなマイクロコンピュータでは、処理の高速化を図ることが重要な課題となっており、これを達成するものとしてパイプライン処理と呼ばれる技術が知られている。パイプライン処理では、命令の処理を複数のステージ(パイプラインステージ)に分け各命令のステージを並列処理する。即ち命令の処理を、例えば命令フェッチ、命令デコード、レジスタリード、アドレス計算、命令実行、レジスタライトのステージに分ける。そして例えば第1の命令によるレジスターリードやアドレス計算を行っている際に、第2の命令のデコードやフェッチを行う。このように命令をパイプラインにより処理することで、命令の処理のスループットを格段に向上できる。
【0004】
しかしながら、このパイプライン処理においては、データの依存関係等に起因するストールの問題がある。この問題は例えば、第1の命令でメモリからロードしたデータを直後の第2の命令で使用する場合等に生じる。パイプラインを採用して処理の高速化を図りながらも、回路の小規模化を図るためには、ストール発生時におけるパイプライン制御をできる限り簡易化することが望まれる。
【0005】
一方、マイクロコンピュータは携帯用の電子機器などに使用されることが多く、このような電子機器においては電池駆動による長時間動作への要求が高まっている。従って、このような電子機器に組み込まれるマイクロコンピュータは、できる限り低消費電力であることが望まれる。
【0006】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ストールが発生した場合にも簡易にパイプライン制御できると共に、省電力を実現できるマイクロコンピュータ及び電子機器を提供することにある。
【0007】
【課題を解決するための手段】
上記課題を解決するために本発明に係るマイクロコンピュータは、発行された各命令のパイプラインステージをパイプライン制御により並列処理する中央処理ユニットと、前記中央処理ユニットを動作させる第1のクロックを制御するクロック制御回路とを含み、前記クロック制御回路が、並列処理されるパイプラインステージの中の少なくとも1つが所与の要因によりストールした場合に、前記第1のクロックを停止する制御を行うことを特徴とする。
【0008】
本発明によれば、パイプラインが所与の要因によりストールした場合に、中央処理ユニットを動作させる第1のクロックが停止する。そしてストールの解消後に第1のクロックの停止が解除され、中央処理ユニットの動作が再開する。本発明によれば、パイプライン制御される回路間の同期を保つことができるため、ストール時のパイプライン制御を簡易化できる。またストール時に中央処理ユニットの大部分の動作を停止できるため、省電力化を図れる。
【0009】
また本発明は、前記クロック制御回路が、命令のフェッチ要求に対する第1のアクノリッジ信号が少なくとも1クロックサイクル遅延した場合、命令データの第1のバリッド信号が少なくとも1クロックサイクル遅延した場合、データのアクセス要求に対する第2のアクノリッジ信号が少なくとも1クロックサイクル遅延した場合、データの第2のバリッド信号が少なくとも1クロックサイクル遅延した場合、前記中央処理ユニットが内蔵する汎用レジスタのインターロックが発生した場合、前記中央処理ユニットのバスアクセス要求よりも高い優先順位を持つバスアクセス要求が発生した場合の少なくとも1つの場合に、前記第1のクロックを停止する制御を行うことを特徴とする。例えば命令フェッチ要求に対する第1のアクノリッジ信号が遅延した場合には、第1のクロックを停止し、第1のアクノリッジ信号がアクティブになるのを待つことでストールを解消できる。またレジスタ・インターロックが生じた場合には、第1のクロックを停止し、レジスタ・インターロックが解除されるのを待つことでストールを解消できる。またDMAリクエストや外部バスマスタによるリクエストなどの高い優先順位を持つバスアクセス要求が発生した場合には、第1のクロックを停止し、そのバスアクセス要求の処理が完了するのを待つことでストールを解消できる。
【0010】
また本発明は、前記クロック制御回路が、前記第1のアクノリッジ信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第1のステートマシーン、前記第1のバリッド信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第2のステートマシーン、前記第2のアクノリッジ信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第3のステートマシーン、前記第2のバリッド信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第4のステートマシーンの少なくとも1つを含むことを特徴とする。このように未返却数が0、1、2であることを表すステートを持たせることで、例えばリクエスト信号が連続して出され且つアクノリッジ信号の返却が遅延した場合にも、正常な動作を保証できることになる。
【0011】
また本発明は、前記クロック制御回路が、前記中央処理ユニットを動作させる第2のクロックを、パイプラインステージが前記所与の要因によりストールした場合にも停止しないように制御することを特徴とする。このような第2のクロックを、ストール時にも動作する必要がある回路ユニットに供給することで、マイクロコンピュータの正常動作を保証できる。
【0012】
また本発明は、前記第2のクロックが、前記中央処理ユニットが内蔵する汎用レジスタへのデータアクセスを制御するレジスタ制御回路及び前記クロック制御回路の少なくとも一方を動作させるクロックであることを特徴とする。このようにレジスタ制御回路を第2のクロックにより動作させることで、レジスタへのデータ書き込み時の誤動作等を防止できる。またクロック制御回路を第2のクロックにより動作させることで、第1のクロックの停止処理を適正に行うことが可能となる。
【0013】
また本発明は、前記中央処理ユニットが、前記クロック制御回路に出力され且つ1つのバスアクセス要求について1クロックサイクル期間だけアクティブになる第1のリクエスト信号と、前記中央処理ユニットからのバスアクセス要求を受け付けるバス制御ユニットに対して出力され且つ前記第1のリクエスト信号がアクティブになってから前記バス制御ユニットからのアクノリッジ信号がアクティブになるまでの期間アクティブになる第2のリクエスト信号とを生成するインターフェース回路を含むことを特徴とする。このようにすることで、クロック制御回路は、パイプラインがストールしたか否かを第1のリクエスト信号を用いて判断できる。またバス制御ユニットは、中央処理ユニットからバスアクセス要求があったか否かを第2のリクエスト信号を用いて判断できる。このように2種類のリクエスト信号を用意することで、クロック制御回路を正常に動作させることができる共に、バス制御ユニットとのインターフェース処理を適正化できる。
【0014】
また本発明は、前記クロック制御回路が、前記中央処理ユニットの制御の下で動作する所与の回路ユニットを動作させる第3のクロックを、パイプラインステージが前記所与の要因によりストールした場合及び前記回路ユニットを使用しない命令を処理する場合のいずれかの場合に停止する制御を行うことを特徴とする。このようにすることで、中央処理ユニットと所与の回路ユニットとの同期関係を維持できると共に、この回路ユニットの無駄な電力の消費を解消できる。
【0015】
また本発明は、前記回路ユニットが、積和演算回路、乗算器、加算器、除算器及びバレルシフタの少なくとも1つであることを特徴とする。これらの回路ユニットは回路規模が大きく高速度で動作する。従って、ストール時や、これらの回路ユニットを使用しない命令の処理時に、これらの回路ユニットの動作を停止することで、消費電力の大幅な低減化を期待できる。
【0016】
また本発明は、前記中央処理ユニットからのバスアクセス要求を受け付けるバス制御ユニットと、前記バスアクセス要求に対する前記バス制御ユニットの応答のウェイトサイクル数を制御するウェイト制御回路とを含むことを特徴とする。
【0017】
本発明によれば、バス制御ユニットの応答のウェイトサイクル数を制御することで、第1のクロックの停止期間が制御される。これにより中央処理ユニットの実行速度や消費電力を自動的に制御できることになる。
【0018】
また本発明は、前記ウェイト制御回路が、所与の設定値に基づき決定される周期でアクティブになる周期信号を生成する回路と、前記中央処理ユニットからのリクエスト信号がアクティブとなり且つ前記周期信号がアクティブとなった場合にアクティブになるアクノリッジ信号を生成する回路とを含むことを特徴とする。このような周期信号を用いてアクノリッジ信号を生成すれば、少ない回路規模で簡易にウェイトサイクル数を制御できるようになり、中央処理ユニットの実行速度や消費電力を制御できるようになる。
【0019】
また本発明に係る電子機器は、上記のいずれかのマイクロコンピュータと、前記マイクロコンピュータの処理対象となるデータの入力源と、前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする。このようにすれば、小規模で省電力のマイクロコンピュータを電子機器に組み込むことが可能となり、電子機器の低コスト化、コンパクト化、低消費電力化を図ることができる。
【0020】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【0021】
(実施例1)
1.構成
実施例1は、パイプラインステージがストールした場合に、CPU(中央処理ユニット)の動作クロックを停止する実施例である。
【0022】
図1にマイクロコンピュータ100のブロック図の例を示す。このブロック図は、実施例1、2、3に共通に使用されるブロック図である。
【0023】
ここでマイクロコンピュータ100は、発行された命令を処理するCPU102、バスの制御を行うBCU(バス制御ユニット)108、命令やデータを記憶する内部メモリ110を含む。なおマイクロコンピュータ100の外部には外部アドレスバス、外部データバスが設けられており、これらの外部アドレスバス、外部データバスには、外部メモリ114などの各種の周辺装置が接続される。
【0024】
BCU(バス制御ユニット)108は、各種のバスの制御を行うものであり、これにより、例えばCPU102と、内部メモリ110、外部メモリ114との間でのデータ転送等が可能となる。
【0025】
I_ADDR_BUSは命令アドレスバスであり、I_DATA_BUSは命令データバスである。これらのバスを用いて内部メモリ110や外部メモリ114から命令が読み出される。またD_ADDR_BUSはデータアドレスバスであり、D_DATA_BUSはデータバスである。これらのバスを用いて内部メモリ110や外部メモリ114から命令処理に必要なデータが読み出される。このように本実施例のマイクロコンピュータではいわゆるハーバードアーキテクチャのバス構成を採用している。
【0026】
CPU102は、命令デコーダ120、PC(プログラムカウンタ)126、汎用レジスタ130、レジスタ制御回路131、ALU136、積和演算回路140、クロック制御回路10、インターフェース回路30などを含む。
【0027】
ここで命令デコーダ120は、I_DATA_BUSからIRINを介して入力された命令を受け付けると共に解析し、命令の実行に必要な種々の制御信号を出力する。例えば命令に応じた種々の指示を、即値生成器122を介してCPU102の各部に与える。
【0028】
即値生成器122は、命令に含まれる即値に基づき、命令の実行時に使用する32ビットの即値データを生成したり、各命令の実行に必要な0、±1、±2、±4のconstantデータを生成したりする。PCインクリメンタ124は、1つの命令を実行する毎にPC126の値をインクリメントする処理を行う。アドレス加算器128は、各種レジスタに格納されている情報や即値生成器122で生成される即値データを用いて加算処理を行い、内部メモリ110や外部メモリ114からの読み出し処理に必要なアドレスを生成する。
【0029】
汎用レジスタ130は、16本の32ビットのレジスタR0〜R15を含んでおり、読み出しポート118、119を有する。レジスタ制御回路131は、汎用レジスタ130へのデータアクセス(データ書き込み・読み出し)を制御する。SP132は、スタックポインタ専用の32ビットのレジスタであり、スタックの先頭番地を指すスタックポインタを格納する。PSR(プロセッサステータスレジスタ)134は、各種のフラグを格納する32ビットのレジスタである。
【0030】
ALU(算術論理演算ユニット)136は、CPU102の制御の下で、加減演算などの算術演算や論理和、論理積、論理シフトなどの論理演算を行うものである。ゼロディテクタ138は、ALU136の演算結果が零か否かを検出するものである。積和演算回路140は、バスマルチプレクサ139、AUX_BUSを介して入力されるデータに基づき、CPU102の制御の下で積和演算を実行するものであり、図示しない乗算器、加算器、積和結果レジスタを含む。この積和演算回路140は乗算器や除算器としても機能する。バスバイバス142は、所与の期間にバスのバイパスを行う回路である。
【0031】
クロック制御回路10は、CPU102を動作させるクロックCLK1、CLK2の制御を行う。インターフェース回路30は、各種のインターフェース信号(リクエスト信号、アクノリッジ信号、データバリッド信号等)を用いて、BCU108との間のデータ転送のインターフェースを行う。
【0032】
なおPA_BUS、PB_BUS、WW_BUS、XA_BUSは、CPU102の内部バスである。IA、DAは、各々、CPU102からI_ADDR_BUS、D_ADDR_BUSにアドレスを出力するためのものである。DINは、D_DATA_BUSからのデータをCPU102に入力するためのものであり、DOUTは、CPU102からのデータをD_DATA_BUSに出力するためのものである。
【0033】
2.本実施例の特徴及びパイプラインのストール
さて本実施例の特徴は、パイプラインステージがストールした場合に、CPU102の一部を除く大部分を動作させるクロックであるCLK1(第1のクロック)を停止する点にある。CLK1を停止する制御は図1のクロック制御回路10が行う。クロック制御回路10には、マイクロコンピュータ100の内部に設けられる図示しない発振回路或いは外部から、クロックCLKが供給される。そしてパイプラインが後述する所与の要因によりストールした場合にCLKを所与の期間だけマスクして、これをCLK1として出力する。これによりストールが生じた場合にもパイプラインを適正に制御できる。またCLK1が停止することにより無駄な電力の消費を回避できる。
【0034】
なお本実施例のクロック制御回路10は、ストールが発生した場合にも停止しないクロックであるCLK2(第2のクロック)も出力する。CPU102の回路ユニットの中で、ストールが発生した場合にも動作させる必要がある回路ユニットは、このCLK2により動作させる。
【0035】
次にパイプラインのストールについて説明する。ストールは、CPU102のバスアクセス(メモリアクセス)要求が待たされた場合(図2(A))や、レジスタのインターロック(データ・ハザード)が生じた場合(図2(B))などに発生する。なお図2(A)、(B)に示すように本実施例では、各命令の処理は、F(命令フェッチ)、D(命令デコード)、R(レジスタリード)、A(アドレス計算)、E(命令実行)、W(レジスタライト)というように6段のステージに分けられる。また各命令の処理は3クロックサイクルで完了する。
【0036】
図2(A)のパイプライン処理では、レジスタR8の内容で指定されるアドレス[%R8]によりメモリからデータを読み出しレジスタR0に書き込む第1のロード命令が、まず処理される。次にレジスタR9の内容で指定されるアドレス[%R9]によりメモリからデータを読み出しレジスタR1に書き込む第2のロード命令が処理される。次に上記第1、第2のロード命令によりレジスタR0、R1に書き込まれたデータを加算し、加算結果をレジスタR0に書き込む加算命令が処理される。この時、アドレス[%R8]は外部メモリ114のアドレスであるため、上記第2のロード命令と異なり上記第1のロード命令によるバスアクセス要求は例えば1クロックサイクルだけ待たされる。
【0037】
本実施例では、このようにバスアクセス要求が待たされパイプラインがストールした場合に、図2(A)のD1に示すようにCPU102の大部分を動作させるクロックであるCLK1を停止する。このようにすることで、アドレス[%R8]から読み出されたデータをレジスタR0に適正に書き込めると共に(D2)、第2のロード命令や加算命令を適正に実行できるようになる(D3)。即ち、ストールが生じた場合にもパイプラインを適正に制御できる。またCPU102の大部分を動作させるクロックであるCLK1が停止することで、無駄な電力の消費を回避できる。またパイプラインがストールした場合に、自動的に省電力モードにすることが可能となる。
【0038】
図2(B)のパイプライン処理では、レジスタR3の内容で指定されるアドレス[%R3]によりメモリからデータを読み出しレジスタR1に書き込むロード命令が、まず処理される。次にレジスタR5に書き込まれたデータと上記ロード命令によりレジスタR1に書き込まれたデータを加算して、加算結果をレジスタR5に書き込む加算命令が処理される。このように第1の命令でメモリからレジスタにデータをロードし、その直後の第2の命令でそのレジスタのデータを使用すると、いわゆるレジスタ・インタロックが発生する。即ち加算命令を適正に実行するためにはD4の時点でレジスタR1にデータが書き込まれている必要があるが、図2(B)ではD5の時点でデータが書き込まれるため加算命令を適正に実行できない。
【0039】
そこで本実施例では、このようなレジスタ・インタロックが生じパイプラインがストールした場合に、D6に示すようにCLK1を停止する。これにより加算命令のEステージがD7に示す位置にシフトするため、加算命令を適正に実行できると共に、省電力化も図れる。
【0040】
バスアクセス要求が待たされた場合のパイプライン制御について図3(A)、(B)、(C)を用いて更に詳しく説明する。図3(A)に示すように、CPU102(インターフェース回路30)とBCU108は、CPU_IR_REQ_1L、CPU_IR_ACK_1L、CPU_IR_VLD_1L、CPU_DATA_REQ_1L、CPU_DATA_ACK_1L及びCPU_DATA_VLD_1Lを用いてデータ転送を制御している。なお上記の”1L”の表記は、クロックの立ち上がりで信号がアクティブになることを意味する。
【0041】
図3(B)に、命令のフェッチ要求の際のタイミングチャートを示す。命令フェッチを要求する場合には、CPU102(インターフェース回路30)は、CPU_IR_REQ_1L(命令リクエスト)をアクティブ(=1)にし(図3(B)のE1)、その1/2クロックサイクル後にIA及びI_ADDR_BUSを介してBCU108に命令アドレスを出力する(E2)。
【0042】
ノーウェイトで命令フェッチ要求をアクノリッジできる場合には、BCU108は、CPU_IR_REQ_1Lがアクティブになってから1クロックサイクル後にCPU_IR_ACK_1L(命令アクノリッジ)をアクティブにする(E3)。更にノーウェイトで命令データをバリッドにできる場合には、BCU108は、CPU_IR_VLD_1L(命令バリッド)をCPU_IR_ACK_1Lと同時にアクティブにし(E4)、その1/2クロックサイクル後にI_DATA_BUS及びIRINを介してCPU102に命令データを出力する(E5)。
【0043】
CPU102が、内部メモリ110に対してハーバードアーキテクチャのバスを用いてアクセスできる時には、このようにノーウェイトで命令をフェッチできる。そしてこの時にはCLK1は停止しない。
【0044】
一方、BCU108が、優先度の高いバス要求を処理している場合等には、例えばDMAリクエストやDRAMリフレッシュを処理している場合には、命令フェッチ要求に対するアクノリッジ信号が遅延する。即ちCPU_IR_REQ_1Lがアクティブになってから例えば2クロックサイクル後にCPU_IR_ACK_1Lがアクティブになる(E6)。このようにCPU_IR_ACK_1Lがアクティブになるのが遅延すると、クロック制御回路10は、CLK1を例えば1クロックサイクルだけ停止する(E7)。これにより、アクノリッジ信号が遅延した場合にもパイプラインを適正に制御することが可能となる。なおCPU102は、CPU_IR_ACK_1Lがアクティブになるまで、CPU_IR_REQ_1Lのレベル及びIAの値を保持する。
【0045】
図3(C)に、データのリード要求の際のタイミングチャートを示す。CPU102は、CPU_DATA_REQ_1L(データリクエスト)をアクティブにしてデータのリード要求を行い、DA及びD_ADDR_BUSを介してアドレスを出力する。BCU108は、CPU_DATA_ACK_1L(データアクノリッジ)、CPU_DATA_VLD_1L(データバリッド)をアクティブにして、バスアクセスのアクノリッジ信号やデータのバリッド信号をCPU102に出力し、D_DATA_BUS及びDINを介してデータをCPU102に出力する。そしてアクノリッジ信号やバリッド信号が遅延した場合には、クロック制御回路10がCLK1を停止し、これに対処する。
【0046】
なおデータライトを行う場合には、CPU102は、図3(C)のDAと同じタイミングでDOUTにデータを出力する。またデータライト時には、CPU_DATA_VLD_1Lは使用されない。
【0047】
BCU108が、メモリアクセスに時間を要する外部メモリ114にアクセスする場合や、16ビットのデータバスを用いバスサイクルを2回起動し32ビットのデータをリードする場合(16ビットの外部データバスを用いてマイクロコンピュータの周辺装置にアクセスする場合)等には、データのバリッド信号が遅延する。即ちCPU_DATA_ACK_1Lがアクティブになってから(E8)、例えば1クロックサイクル後にCPU_DATA_VLD_1Lがアクティブになる(E9)。このようにCPU_DATA_VLD_1Lがアクティブになるのが遅延すると、クロック制御回路10は、CLK1を例えば1クロックサイクルだけ停止する(E10)。これにより、データのバリッド信号が遅延した場合にもパイプラインを適正に制御できることになる。
【0048】
さてストール時にパイプラインを適正に制御する手法の1つとして、各ステージの処理に必要な各種の制御信号(フェッチ信号、デコード信号、レジスタリード信号、メモリリード信号、演算開始信号、レジスタライト信号等)の状態をパイプラインレジスタに格納し、ストールが解消するまでこれらの制御信号の状態が変化しないように保持しておく手法が考えられる。
【0049】
しかしながら、この手法によると、上記制御信号を格納するためにパイプラインレジスタが大規模化し、消費電力の増加を招く。また制御信号の状態が変化しないように、各ステージ毎に制御回路(ステートマシーン)を設ける必要があり、回路設計が複雑化する。また、CPUを動作させるクロック、特にCPU内のパイプラインレジスタや各ステージ毎に設けられた上記制御回路を動作させるクロックは、パイプラインのストール時にも停止していないため、電力が無駄に消費されてしまう。
【0050】
本実施例によれば、CPUを動作させるクロックをストール時に停止することでストール時のパイプライン制御の適正化を図っている。従って、上記手法で問題となった回路規模や消費電力の増加、回路設計の複雑化、電力の無駄な消費などの問題を解消できることになる。
【0051】
3.クロック制御回路
図4にクロック制御回路10の回路図の例を示す。命令アクノリッジウェイト回路12(第1のステートマシーン)、命令バリッドウェイト回路14(第2のステートマシーン)、データアクノリッジウェイト回路16(第3のステートマシーン)、データバリッドウェイト回路18(第4のステートマシーン)、インターロックウェイト回路20及び外部リクエストウェイト回路22の出力のいずれかがアクティブになると、CPU_STOP_0Lがアクティブになる。するとこのCPU_STOP_0LによりCLKがマスクされ、CPU_STOP_0Lがアクティブになる期間、CLK1が停止する。一方、パイプラインのストール時にも動作させる回路ユニットに対しては、CLKをバッファリングした第2のクロックCLK2が供給される。
【0052】
各回路12〜22の出力は、以下に示す要因FC1〜FC6が生じた場合にアクティブになる。
【0053】
▲1▼FC1
CPUからBCUへの命令フェッチ要求に対するアクノリッジ信号が遅延した場合(アクノリッジ信号がアクティブになるのを待つ場合)
▲2▼FC2
命令フェッチ要求に対するアクノリッジ信号をBCUがCPUに返したが命令データのバリッド信号が遅延した場合(バリッド信号がアクティブになるのを待つ場合)
▲3▼FC3
CPUからBCUへのデータアクセス要求に対するアクノリッジ信号が遅延した場合(リード及びライト時)
▲4▼FC4
データアクセス要求に対するアクノリッジ信号をBCUがCPUに返したがデータのバリッド信号が遅延した場合(リード時のみ)
▲5▼FC5
データリード時にレジスタ・インタロックが生じた場合
▲6▼FC6
CPU以外のバスアクセス要求にBCUが応答するためにCPUのメモリアクセスが待たされた場合(周辺装置が外部バスマスタになる場合等)
3.1 命令アクノリッジウェイト回路(第1のステートマシーン)
図5(A)、(B)に、命令アクノリッジウェイト回路12の状態遷移図及びこの回路の動作を説明するためのタイミングチャートを示す。
【0054】
図5(A)に示すように、命令アクノリッジウェイト回路12は、”00”、”01”、”11”の3つのステート(STATE_WAIT_IR_ACK)を持ち、これらの”00”、”01”、”11”は、各々、アクノリッジ信号の未返却数が0、1、2であることを示す。また命令アクノリッジウェイト回路12の入力信号はREQ(=PRIME_IR_REQ)及びACK(=CPU_IR_ACK_1L)であり、出力信号はWAIT_IR_ACK_0Lである。なお”0L”の表記は、クロックの立ち下がりで変化する信号であることを意味する。
【0055】
ここでCPU_IR_REQ_1Lは、CPUがBCUに命令のフェッチ要求をした時にアクティブになる信号であり、CPU_IR_ACK_1Lは、CPUからの命令フェッチ要求をBCUが受け付けた時にアクティブになる信号である。またPRIME_IR_REQは、1つの命令の実行を終了した場合に次の命令をフェッチするための信号である。PRIME_IR_REQは、CPU_IR_ACK_1Lがアクティブになったか否かに関わらず、1つの命令の実行に対して1クロックサイクルのみアクティブになるのに対し、CPU_IR_REQ_1Lは図5(B)のF1、F2に示すように、対応するCPU_IR_ACK_1Lがアクティブになるまでアクティブ状態を保持する。命令アクノリッジウェイト回路12の状態を変化させる信号として、CPU_IR_REQ_1LではなくPRIME_IR_REQを使用することで、必要な数だけの命令リクエストをステートマシーンに入力できるため、回路を正常動作させることができる。
【0056】
図5(A)の状態遷移図について説明する。REQが1(アクティブ)になると(F3)、ステート(STATE_WAIT_IR_ACK)が”01”に移行する(F4)。そして次にACKが1になると”00”に戻る(F5、F6)。
【0057】
一方、REQが1になり”01”に移行した後(F7、F8)、REQ及びACKが共に0であるとステートが”01”に留まり、ウェイト状態になる(F9、F10)。そして次にREQが0のままでACKが1になると”00”に戻る(F11、F12)。
【0058】
REQ3が出された後、ACK3が返される前にREQ4が出された場合には(F13、F14)、ステートは、”01”、”11”、”01”、”00”というように変化する(F15)。REQ3が出された後にCLK1はすぐに停止しないため(F16)、次のREQ4が出されてしまう。従って、これらのREQ3、REQ4に対応するACK3、ACK4が返されるのを待つ必要がある。本実施例によれば、アクノリッジ信号の未返却数が2であることを表すステート”11”を用意することで、このような場合にも適正に対処できる。即ちACK3及びACK4が返された後に、CPU_IR_REQ_1Lがインアクティブになるように制御できる(F2)。
【0059】
なおREQに対してACKがノーウェイトで返されない場合には、REQ4が出された後にCLK1は停止する(F18)。これによりCPUの動作も停止するため、REQ4の次のリクエストがCPUから連続して出ることはない。従って、アクノリッジ信号の未返却数が3以上あることを表すステートを用意する必要はない。
【0060】
命令アクノリッジウェイト回路12は、ステートが”01”又は”11”で且つACK(CPU_IR_ACK_1L)がインアクティブの時にアクティブになる信号WAIT_IR_ACK_1Lを生成し、このWAIT_IR_ACK_1Lを1/2クロックサイクル遅延させた信号であるWAIT_IR_ACK_0Lを出力する。WAIT_IR_ACK_0Lがアクティブになると、そのアクティブ期間にCLKがマスクされるため(図4参照)、CLK1が停止することになる(F17〜F20)。
【0061】
3.2 命令バリッドウェイト回路(第2のステートマシーン)
図6(A)、(B)に、命令バリッドウェイト回路14の状態遷移図及びこの回路の動作を説明するためのタイミングチャートを示す。
【0062】
図6(A)に示すように命令バリッドウェイト回路14は、前述の命令アクノリッジウェイト回路12と同様に”00”、”01”、”11”の3つのステート(STATE_WAIT_IR_VLD)を持つ。これらのステートは、各々、バリッド信号の未返却数が0、1、2であることを表すものである。また命令バリッドウェイト回路14の入力信号はACK(=CPU_IR_ACK_1L)及びVLD(=CPU_IR_VLD_1L)であり、出力信号はWAIT_IR_VLD_0Lである。ここでCPU_IR_VLD_1Lは、BCUがCPUに対して命令データを出力する時にアクティブになる信号である。
【0063】
図6(A)の状態遷移図について説明する。ACKが1(アクティブ)になった時に、VLDもノーウェイトで1になるとステートは”00”に留まる(G1、G2、G3)。
【0064】
一方、ACKは1になったがVLDが0(インアクティブ)のままであるとステートは”01”に移行する(G4、G5、G6)。即ちVLDがアクティブになるのを待つ状態になる。その後、ACK及びVLDが共に0のままである場合にはステートは”01”に留まり(G7、G8、G9)、VLDが1になると、ステートは”00”に戻る(G10、G11、G12)。
【0065】
ACK3を受け付けた後、VLD3を受け付ける前にACK4を受け付けた場合には(G13、G14、G15)、ステートは、”01”、”11”、”01”、”00”というように変化する(G16)。REQ3が出された後にCLK1はすぐに停止しないため、次のREQ4が出されてしまい、これらのREQ3、REQ4に対応するVLD3、VLD4がアクティブになるのを待つ必要がある。本実施例によれば、バリッド信号の未返却数が2であることを表すステート”11”を用意することで、このような場合にも適正に対処できる。
【0066】
命令バリッドウェイト回路14は、ステート(STATE_WAIT_IR_VLD)が”01”又は”11”で且つCPU_IR_VLD_0L(CPU_IR_VLD_1Lを1/2クロックサイクル遅延させた信号)がインアクティブの時にアクティブになる信号WAIT_IR_VLD_0Lを出力する。WAIT_IR_VLD_0Lがアクティブになると、そのアクティブ期間にCLKがマスクされるため(図4参照)、CLK1が停止することになる(G17〜G22)。
【0067】
3.3 データアクノリッジウエイト回路(第3のステートマシン)、データバリッドウェイト回路(第4のステートマシーン)
データアクノリッジウェイト回路16の状態遷移図及びタイミングチャートは、
図5(A)、(B)とほぼ同様であり、データバリッドウェイト回路18の状態遷移図及びタイミングチャートは図6(A)、(B)とほぼ同様にあるため、詳しい説明を省略する。
【0068】
なおデータアクノリッジウェイト回路16の入力信号はREQ(=PRIME_DATA_REQ)及びACK(=CPU_DATA_ACK_1L)であり、出力信号はWAIT_DATA_ACK_0Lである。またデータバリッドウェイト回路18の入力信号はACK(=CPU_DATA_ACK_1L)及びVLD(=CPU_DATA_VLD_1L)であり、出力信号はWAIT_DATA_VLD_0Lである。ここでCPU_DATA_REQ_1Lは、CPUがBCUにデータのアクセス要求をした時にアクティブになる信号であり、CPU_DATA_ACK_1Lは、CPUからのデータアクセス要求をBCUが受け付けた時にアクティブになる信号である。またPRIME_DATA_REQは、CPUがメモリアクセスをする命令を実行した時にRAフェーズでアクティブになる信号である。またCPU_DATA_VLD_1Lは、BCUがCPUに対しデータを出力する時にアクティブになる信号である。
【0069】
3.4 インターロックウェイト回路
まずレジスタ・インタロックについて詳細に説明する。レジスタ・インタロックは、第1の命令でメモリからレジスタにデータをロードし、その直後の第2の命令でそのレジスタのデータを使用する場合に発生する。例えば第1、第2の命令が下記に示すものである場合を考える。
【0070】
LD %R1,[%R3]・・・(第1の命令)
ADD %R5,%R1 ・・・(第2の命令)
上記の命令の実行前にレジスタR1、R3、R5及びアドレス[K]で指定されるメモリ領域に格納されているデータ、並びに上記の命令実行後にこれらのレジスタ及びメモリ領域に格納されるべきデータを、図7(A)に示す。図中の”−”はドントケアである事を表し、ここではレジスタR1にデータJが格納されていたとする。
【0071】
図7(B)に、クロック停止及びバスバイパスを行わない場合のタイミングチャートを示す。まず第1の命令のRAフェーズにより、汎用レジスタ130の読み出しポート118(図1参照)からデータKが読み出される(H1)。このデータKは、DAを介してD_ADDR_BUSに出力され(H2)、これによりメモリからデータMが読み出され、D_DATA_BUS、DINを介してCPUにデータMが入力される(H3)。
【0072】
一方、第2の命令のRAフェーズにより、読み出しポート118、119からデータJ、Lが読み出され、PA_BUS、PB_BUSに出力される(H4、H5)。次に第2の命令のEWフェーズにより、PA_BUS、PB_BUS上のデータJ、Lが加算され(H6)、レジスタR5に加算結果データJ+Lが書き込まれる(H7)。
【0073】
このように、クロック停止及びバスバイパスを行わない図7(B)の例では、レジスタR5に誤ったデータJ+L(正しいデータはM+L)が書き込まれてしまう。加算処理のオペランドが、メモリから読み出したデータMではなくJになってしまうからである。
【0074】
そこで本実施例では、図8に示すように、レジスタ・インタロックが発生した場合にクロックCLK1を停止すると共にバスのバイパスを行うことで、この問題を解消している。
【0075】
まず第1、第2の命令のFDフェーズ(I1、I2)で得られたデコード情報に基づいて、レジスタ・インタロックが発生するか否かを命令デコーダ120が判断する。即ち第1の命令でメモリからレジスタにデータをロードし、第2の命令でそのレジスタのデータを使用する場合にレジスタ・インタロックが発生すると判断する。レジスタ・インタロックが発生すると判断すると、命令デコーダ120はDIN_INT_1Lをアクティブにする(I3)。するとクロック制御回路10の中のインタロックウェイト回路20(図4)がこのDIN_INT_1Lを受け、これを1/2クロックサイクル遅延させた信号DIN_INT_0Lを出力する。このDIN_INT_0LによりCLKがマスクされ、CLK1が停止する(I4)。これにより第1の命令のEWフェーズ、第2の命令のRAフェーズの期間が延長され(I5、I6)、第2の命令のEWフェーズが1クロックサイクルだけ遅延する。即ち加算処理の実行を1クロックサイクルだけ遅延できる。
【0076】
一方、この時、図1のバスバイパス142が、WW_BUSとPA_BUSの間をバイパスする。これにより、D_DATA_BUS、DINを介してWW_BUSに入力されたデータMが(I8)、PA_BUSに出力される(I9)。この結果、PA_BUS、PB_BUS上のデータM、Lが、第2の命令のEWフェーズで加算され(I10)、レジスタR5に正しいデータM+Lが書き込まれることになる(I11)。
【0077】
以上のように本実施例によれば、レジスタ・インタロックが生じた場合にも、パイプラインを適正に制御でき、正しい結果を得ることができる。
【0078】
3.5 外部リクエストウェイト回路
BCU108は、バスのアクセス要求に対してバスの使用権の調停を行っている。そして例えばDMAリクエスト、外部バスマスタからのリクエスト、DRAMリフレッシュのリクエスト等は、CPU102のバスアクセスリクエストよりも優先順位が高い。従って、このようにBCU108が優先順位の高いリクエストに応答している場合には、図4の外部リクエストウェイト回路22がEX_REQ_0Lをアクティブにする。これによりEX_REQ_0Lがアクティブとなる期間、CLK1が停止することになり、CPU102の動作が停止する。
【0079】
4.停止しないクロックCLK2
上述したように、例えばパイプラインレジスタなど、CPU102の大部分の回路ユニットは、パイプラインのストール時に停止するクロックCLK1により動作する。しかしながら、回路ユニットによっては、パイプラインのストール時に停止しないクロックCLK2により動作させることが望ましいものもある。
【0080】
本実施例では第1に、クロック制御回路10については、CLK1ではなくCLK2により動作させている。クロック制御回路10は、CLK1を停止させるか否かを判断する回路だからである。
【0081】
また本実施例では第2に、DINを介してCPU102に入力されるデータを汎用レジスタ130に書き込むための制御等を行うレジスタ制御回路131(図1参照)を、CLK2により動作させている。図9に、レジスタ制御回路131の構成例(書き込み回路の部分のみ)を示し、図10、図11にそのタイミングチャートを示す。
【0082】
図9において、REG_WR_SELはレジスタR0〜R15のいずれかを選択するための4ビットの信号であり、この信号はレジスタセレクトデコーダ40によりデコードされる。
【0083】
DIN2WW_1Lは、命令をデコードした結果、メモリから読み出したデータを汎用レジスタ130に書き込む命令であると判断された場合に、アクティブになる信号である。REG_WR_1Lは、命令をデコードした結果、ALU136などのメモリ以外の回路ユニットからのデータを汎用レジスタ130に書き込む命令であると判断された場合に、その命令のEWフェーズの期間にアクティブになる信号である。
【0084】
汎用レジスタ130のラッチ信号であるREG_LATCH_SIGは、REG_WR_1L、DIN2WW_1L、CPU_DATA_VLD_1L及びストール時に停止しないクロックCLK2に基づき論理回路42が生成する。またDINからのデータをWW_BUSに伝える3ステートバッファ42のイネーブル信号DIN_ENBは、DIN2WW_1L、CLK2に基づきAND回路44が生成する。
【0085】
図10は、ノーウェイトでメモリアクセスする場合のタイミングチャートである。まず第1の命令のWステージで、REG_LATCH_SIGがアクティブになりデータ0x74がレジスタR1に書き込まれる(J1)。この際、REG_WR_SELに基づき、データを書き込むレジスタが決められる(J2)。次に、レジスタR1に格納されるデータ0x74が、メモリの読み出しアドレスとしてDAに出力され(J3)、これによりメモリからDINを介してデータ0x1234が読み出される(J4)。そしてこのデータ0x1234は第2の命令のWステージでレジスタR2に書き込まれる(J5)。次に、データ0x04と、レジスタR1に格納されるデータ0x74とが第3の命令により加算され、加算結果がレジスタR1に書き込まれる(J6)。
【0086】
一方、図11は、メモリアクセスにウェイトがある場合のタイミングチャートである。図11では、アクノリッジ信号CPU_DATA_ACK_1Lが1クロックサイクル遅延し(K1)、バリッド信号CPU_DATA_VLD_1Lが2クロックサイクル遅延している(K2)。まず第1の命令のWステージでデータ0x74がレジスタR1に書き込まれる(K3)。次にアクノリッジ信号の遅延によりWAIT_DATA_ACK_0Lがアクティブになり(K4)、バリッド信号の遅延によりWAIT_DATA_VLD_0Lがアクティブになる(K5)。これによりCPU_STOP_0Lがアクティブになり(K6)、CLK1が停止する(K7)。
【0087】
さて、第2の命令によりメモリから読み出されたデータ0x1234をレジスタR2に書き込むためには、図11のK8においてREG_LATCH_SIGをアクティブにすることが望ましい。DIN上のデータ0x1234が有効になるのは、CPU_DATA_VLD_1Lがアクティブになってから1/2クロックサイクル後を起点として1クロックサイクル期間だけだからである(K9)。
【0088】
しかしながら、例えば図9に示すラッチ信号REG_LATCH_SIGやイネーブル信号DIN_ENBを、ストール時に停止するクロックCLK1に基づき生成すると、データ0x1234をレジスタR2に適正に書き込めないという問題が発生する。
【0089】
そこで本実施例では、これらのREG_LATCH_SIGやDIN_ENBを、ストール時に停止しないクロックCLK2に基づき生成することで、上記問題を解決している。
【0090】
5.リクエスト信号の生成
本実施例のインターフェース回路30は、クロック制御回路10に出力され1つのバスアクセス要求について1クロックサイクル期間だけアクティブになる第1のリクエスト信号(PRIME_IR_REQ、PRIME_DATA_REQ)と、BCU108に出力され第1のリクエスト信号がアクティブになってからBCU108からのアクノリッジ信号がアクティブになるまでの期間アクティブになる第2のリクエスト信号(CPU_IR_REQ_1L、CPU_DATA_REQ_1L)とを生成している。このように2種類のアクノリッジ信号を用意することで、パイプラインにストールが生じた場合にも、BCU108との間のデータ転送を適正に制御できると共にクロック制御回路10が含むステートマシーンを適正に動作させることが可能になる。
【0091】
図12に、PRIME_IR_REQ(第1のリクエスト信号)、CPU_IR_REQ_1L(第2のリクエスト信号)を生成する回路の例を示し、図13にその動作を説明するためのタイミングチャートを示す。この回路は、図1のインターフェース回路30に含まれるものである。
【0092】
IR_REQ_1Lは、1つの命令の実行を終了した時に次の命令をフェッチするための信号である。IR_REQ_1Lは命令の最後のRAフェーズでアクティブになる(L1、L2)。このIR_REQ_1LとCPU_STOP_1L(CPU_STOP_0Lを1/2クロックサイクル遅延させた信号)の反転信号の論理積をとることで、PRIME_IR_REQが得られる。このPRIME_IR_REQは、クロック制御回路10に含まれる命令アクノリッジウェイト回路12(第1のステートマシーン)に出力され、命令アクノリッジウェイト回路12は、このPRIME_IR_REQに基づいてステートを変化させる。この時、PRIME_IR_REQは、1つのバスアクセス要求(1つの命令の実行)について1クロックサイクル期間だけアクティブになる(L3〜L6)。このようなPRIME_IR_REQを使用することで、命令アクノリッジウェイト回路12が1つのリクエストを2つ以上のリクエストと誤認することを防止できる。即ちPRIME_IR_REQの代わりにCPU_IR_REQ_1Lを使用すると、命令アクノリッジウェイト回路12に入力されるリクエスト信号が例えば図13のL7の期間においてもアクティブであると判断されてしまい、命令アクノリッジウェイト回路12が誤動作するが、PRIME_IR_REQを使用することでこの問題を解消できる。
【0093】
論理回路46は、CPU_IR_ACK_1L、STATE_WAIT_IR_ACK(図5参照)に基づいて、EXTEND_IR_REQ_1Lを生成する。このEXTEND_IR_REQ_1Lは、▲1▼STATE_WAIT_IR_ACKが”01”又は”11”且つCPU_IR_ACK_1Lが0の場合或いは▲2▼STATE_WAIT_IR_ACKが”11”の場合に、アクティブになる。このEXTEND_IR_REQ_1LとPRIME_IR_REQの論理和をとることで、CPU_IR_REQ_1Lが得られる。即ちPRIME_IR_REQのアクティブ期間を、EXTEND_IR_REQ_1Lにより延長したものがCPU_IR_REQ_1Lになる。そして、このCPU_IR_REQ_1Lは、対応するアクノリッジ信号がアクティブになるまでの期間、アクティブになる(L8〜L11)。これにより、パイプラインがストールした場合にも、BCU108との間の適正なデータ転送制御が可能となる。即ちCPU_IR_REQ_1Lの代わりにPRIME_IR_REQを使用すると、BCU108からのアクノリッジ信号が返される前(例えばL12)にBCU108に出力されるリクエスト信号がインアクティブになってしまうが、CPU_IR_REQ_1Lを使用することでこの問題を解消できる。
【0094】
(実施例2)
実施例2は、積和演算回路140(所与の回路ユニット)を動作させる第3のクロックCLK3を、パイプラインステージがストールした場合又は積和演算回路140を使用しない命令を処理する場合に停止する実施例である。
【0095】
図14(A)に実施例2のマイクロコンピュータに使用されるクロック制御回路の構成例を示す。図4との相違点は、第3のクロックCLK3を生成するための論理回路50を新たに設けた点である。ここでMAC_INSTは、積和演算命令を処理するときにアクティブになる信号であり、命令デコーダ120から入力される。このMAC_INSTは、ラッチ52によりラッチされ、インバータ回路54により反転される。そして、この反転された信号とCPU_STOP_0LがOR回路56に入力され、MAC_STOP_0Lが生成される。このMAC_STOP_0LがアクティブになるとCLK3は停止する。
【0096】
図14(B)のタイミングチャートに示すように、CLK3は、CPU_STOP_0Lがアクティブになった場合、即ちパイプラインがストールした場合に停止する(M1、M2)。また積和演算命令以外の命令が処理されている場合にも停止する(M3〜M6)。
【0097】
積和演算回路140はCPU102の制御の下で動作しており、例えば積和演算回路140の入力データはCPU102の制御の下で供給される。従って、積和演算回路140は、CPU102の動作と同期をとる必要がある。しかしながら、パイプラインがストールした場合には、実施例1で説明したようにCPU102の大部分を動作させるクロックCLK1も停止する。これによりCPU102の動作との同期がとれなくなってしまう。
【0098】
そこで本実施例では、パイプラインがストールした場合にCLK1のみならずCLK3も停止する。これにより、CPU102の動作と同期をとることが可能となり、パイプラインの適正な制御が可能となる。
【0099】
また積和演算命令以外の命令が処理されている場合に、積和演算回路140を動作させると無駄な電力を消費することになる。特に積和演算回路140は高速動作すると共に回路規模が大きいため、積和演算回路140の無駄な動作に起因する電力の消費は非常に大きなものとなる。
【0100】
そこで本実施例では、積和演算命令以外の命令が処理されている場合に、積和演算回路140を動作させるCLK3を停止する。これにより、消費電力を格段に低減できる。
【0101】
なおCLK3により動作する回路ユニットとしては、積和演算回路のみならず、乗算器、加算器、除算器、或いはALUに含まれるバレルシフタ等、種々のものを考えることができる。
【0102】
(実施例3)
実施例3は、CPUからのバスアクセス要求に対するBCUの応答のウェイトサイクル数を制御することで、CPUのクロック周波数を変更することなく、CPUの命令実行速度及び消費電力を制御する実施例である。
【0103】
図15に実施例3のマイクロコンピュータのブロック図の例を示す。ここでBCU108が含むバスインターフェース回路60は、バスのインターフェースを行う回路であり、各種のバス(I_ADDR_BUS等)や各種のインターフェース信号(CPU_IR_REQ_1L等)が接続される。そしてバスインターフェース回路60は、バスアクセス要求に対するBCUの応答のウェイトサイクル数を制御するウェイト制御回路68を含む。
【0104】
第1のウェイト制御レジスタ62は、メモリマップの各エリア毎にウェイトサイクル数を設定するためのレジスタである。例えば内部メモリ110はメモリアクセスに時間をあまり要しないため、内部メモリ110が割り当てられるエリアには小さなウェイトサイクル数が設定される。一方、外部メモリ114はメモリアクセスに時間を要するため、外部メモリ114が割り当てられるエリアには大きなウェイトサイクル数が設定される。
【0105】
第2のウェイト制御レジスタ64は、ウェイトサイクル数の制御により消費電力を制御するためのレジスタであり、本実施例では2ビットのレジスタになっている。第2のウェイト制御レジスタ64に”00”、”01”、”10”、”11”が設定されると、図16(A)、(B)、(C)に示す信号REQ_WIN(周期信号)のデューティが、各々、1/1デューティ、1/2ディーティ、1/4デューテイ、1/8デューティに設定される。この信号REQ_WINの生成は、ウェイト制御回路68が行う。
【0106】
REQ_WINが1/1デューティに設定されている場合には、図16(A)に示すように、REQ_WINは常にアクティブになり、CPU_IR_REQ_1Lに対してノーウェイトでCPU_IR_ACK_1Lが返されることになる。
【0107】
REQ_WINが1/2デューティに設定されている場合には、図16(B)に示すように、REQ_WINは2クロックサイクルに1回アクティブになる。そしてアクノリッジ信号CPU_IR_ACK_1Lは、CPU102からのリクエスト信号CPU_IR_REQ_1Lがアクティブであり且つ周期信号REQ_WINがアクティブとなった場合に、アクティブになる(N1、N2、N3)。これによりCPU_IR_ACK_1Lのウェイトサイクル数が、ほぼ1に設定されることになる。
【0108】
REQ_WINが1/4デューティに設定されている場合には、図16(C)に示すように、REQ_WINは4クロックサイクルに1回アクティブになる。そしてアクノリッジ信号CPU_IR_ACK_1Lは、CPU_IR_REQ_1Lがアクティブであり且つREQ_WINがアクティブとなった場合に、アクティブになる(N4、N5、N6)。これによりCPU_IR_ACK_1Lのウェイトサイクル数が、ほぼ3に設定されることになる。
【0109】
このように本実施例では、第2のウェイト制御レジスタ64の設定により、アクノリッジ信号CPU_IR_ACK_1Lのウェイトサイクル数を制御できる。そしてアクノリッジ信号にウェイトサイクルが挿入されると、実施例1で説明したように、CPU102の大部分を動作させるクロックであるCLK1がウェイトサイクルの期間停止する。従って、ウェイトサイクル数を大きくすると、CLK1の停止期間も長くなる。これにより、クロック周波数を低くすることなく、CPU102の実行速度を低くし、省電力化を図ることができる。
【0110】
CPUの消費電力を制御する1つの手法として、CPUのクロック周波数を制御する手法がある。しかしながら、この手法を採用すると、クロックを分周する回路が必要となり回路規模が増加する。また高速で動作する分周回路の付加は消費電力の増加を招く。更に分周比の切り替えタイミングの制御が難しいという問題もある。
【0111】
本実施例によれば、ウェイトサイクル数を制御することで、CLK1の停止期間が制御され、CPUの実行速度及び消費電力が自動的に制御されるため、分周回路の付加に伴い生じる上記問題点を解消できる。特に本実施例は、パイプラインのストール時にCLK1を停止するために設けられたハードウェア資源を利用して、CPUの実行速度及び消費電力の制御を実現している点に特徴がある。
【0112】
なおウェイトサイクル数を制御する手法としては、図16(A)〜(C)で説明したREQ_WINを利用する手法が、回路及び制御の簡易性の観点から特に望ましいが、これに限られるものではない。
【0113】
(実施例4)
実施例4は、本発明のマイクロコンピュータの詳細例を示す実施例である。
【0114】
図17に示すように実施例4のマイクロコンピュータ700は、32ビットのマイクロコンピュータであり、CPU710、ROM720、RAM730、高周波発振回路910、低周波発振回路920、リセット回路930、プリスケーラ940、16ビットプログラマブルタイマ950や8ビットプログラマブルタイマ960やクロックタイマ970などのタイマ回路、インテリジェントDMA980や高速DMA990などのデータ転送制御回路、割り込みコントローラ800、シリアルインターフェース810、BCU740、A/D変換器830やD/A変換器840などのアナログインターフェース回路、入力ポート850や出力ポート860やI/Oポート870などのI/O回路、及びそれらを接続する各種バス750、760、各種端子890を含む。
【0115】
1チップの半導体基板上に形成されるこのマイクロコンピュータ700は、32ビットのデータを処理できるRISC方式のマイクロコンピュータである。そしてパイプライン方式及びロード・ストア方式のアーキテクチャーを採用し、ほとんど全ての命令を1クロックの期間で実行する。全ての命令は16ビットの固定長で記述されており、これにより極めて小さい命令コードサイズを実現している。
【0116】
(実施例5)
実施例5は、実施例1〜4で説明したマイクロコンピュータを含む電子機器に関する実施例である。実施例1〜4のマイクロコンピュータによれば、適正なパイプライン制御を行いながら、マイクロコンピュータの小規模化、省電力化を実現できる。これによりこのマイクロコンピュータが組み込まれる電子機器の低コスト化、コンパクト化、低消費電力化を図ることが可能となる。
【0117】
例えば図18(A)に電子機器の1つであるカーナビゲーションシステムの内部ブロック図を示し、図19(A)にその外観図を示す。カーナビゲーションシステムの操作はリモコン510を用いて行われ、GPSやジャイロからの情報に基づいて位置検出部520が車の位置を検出する。地図などの情報はCDROM530(情報記憶媒体)に格納されている。画像メモリ540は画像処理の際の作業領域になるメモリであり、生成された画像は画像出力部550を用いてドライバーに表示される。マイクロコンピュータ500は、リモコン510、位置検出部520、CDROM530などのデータ入力源からデータを入力し、種々の処理を行い、処理後のデータを画像出力部550などの出力装置を用いて出力する。
【0118】
図18(B)に電子機器の1つであるゲーム装置の内部ブロック図を示し、図19(B)にその外観図を示す。このゲーム装置では、ゲームコントローラ560からのプレーヤの操作情報、CDROM570からのゲームプログラム、ICカード580からのプレーヤ情報等に基づいて、画像メモリ590を作業領域としてゲーム画像やゲーム音を生成し、画像出力部610、音出力部600を用いて出力する。
【0119】
図18(C)に電子機器の1つであるプリンタの内部ブロック図を示し、図19(C)にその外観図を示す。このプリンタでは、操作パネル620からの操作情報、コードメモリ630及びフォントメモリ640から文字情報に基づいて、ビットマップメモリ650を作業領域として、印刷画像を生成し、プリント出力部660を用いて出力する。またプリンタの状態やモードを表示パネル670を用いてユーザに伝える。
【0120】
なお本発明のマイクロコンピュータを適用できる電子機器としては、上記以外にも例えば、携帯電話(セルラーフォン)、PHS、ページャ、オーディオ機器、電子手帳、電子卓上計算機、POS端末、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、パーソナルコンピュータ、テレビ、ビューファインダ型又はモニタ直視型のビデオテープレコーダなど種々のものを考えることができる。
【0121】
なお、本発明は上記実施例1〜5に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【0122】
例えばマイクロコンピュータの構成、バスや命令やデータのビット数、使用する汎用レジスタの数、パイプラインステージの構成等は、上記実施例で説明したものに限らず種々の変形実施が可能である。
【0123】
またパイプラインのストール要因も上記実施例で説明したものに限られるものではない。またクロック制御回路、インターフェース回路、バス制御回路の構成も上記実施例で説明したものに限られるものではない。
【0124】
また上記実施例3は実施例1との組み合わせにおいて特に効果を奏するが、これに限られるものではない。
【0125】
【図面の簡単な説明】
【図1】マイクロコンピュータの構成例を示す図である。
【図2】図2(A)、(B)は、パイプラインのストール及びストール時のクロック停止について説明するための図である。
【図3】図3(A)、(B)、(C)は、バスアクセス要求が待たされた場合のパイプライン制御について説明するための図である。
【図4】クロック制御回路の構成例を示す図である。
【図5】図5(A)、(B)は、命令アクノリッジウェイト回路の状態遷移図及びその動作を説明するためのタイミングチャートである。
【図6】図6(A)、(B)は、命令バリッドウェイト回路の状態遷移図及びその動作を説明するためのタイミングチャートである。
【図7】図7(A)、(B)は、レジスタ・インターロック時のパイプライン制御について説明するための図である。
【図8】レジスタ・インターロック時のパイプライン制御について説明するための図である。
【図9】レジスタ制御回路の構成例を示す図である。
【図10】パイプラインのストール時に停止しないクロックについて説明するための図である。
【図11】パイプラインのストール時に停止しないクロックについて説明するための図である。
【図12】リクエスト信号を生成回路の構成例を示す図である。
【図13】2種類のリクエスト信号の生成について説明するための図である。
【図14】実施例2に係るクロック制御回路の構成例を示す図である。
【図15】実施例3に係るマイクロコンピュータの構成例を示す図である。
【図16】実施例3の動作について説明するための図である。
【図17】実施例4に係るマイクロコンピュータの構成例である。
【図18】図18(A)、(B)、(C)は、種々の電子機器の内部ブロック図の例である。
【図19】図19(A)、(B)、(C)は、種々の電子機器の外観図の例である。
【符号の説明】
10 クロック制御回路
30 インターフェース回路
60 バスインターフェース回路
62 第1のウェイト制御レジスタ
64 第2のウェイト制御レジスタ
68 ウェイト制御回路
100 マイクロコンピュータ
102 CPU
108 BCU
110 内部メモリ
114 外部メモリ
120 命令デコーダ
122 即値生成器
124 PCインクリメント
126 PC
130 汎用レジスタ
131 レジスタ制御回路
132 SP
134 PSR
136 ALU
138 ゼロディテクタ
139 バスマルチプレクサ
140 積和演算回路
Claims (10)
- 各パイプラインステージの処理のための制御信号の状態が格納されるパイプラインレジスタを有し、発行された各命令のパイプラインステージをパイプライン制御により並列処理する中央処理ユニットと、
前記パイプラインレジスタに供給される第1のクロックを制御するクロック制御回路とを含み、
前記クロック制御回路が、
並列処理されるパイプラインステージの中の少なくとも1つが所与の要因によりストールした場合に、前記第1のクロックを停止する制御を行い、前記中央処理ユニットのパイプライン処理を停止させることを特徴とするマイクロコンピュータ。 - 請求項1において、
前記クロック制御回路が、
命令のフェッチ要求に対する第1のアクノリッジ信号が少なくとも1クロックサイクル遅延した場合、命令データの第1のバリッド信号が少なくとも1クロックサイクル遅延した場合、データのアクセス要求に対する第2のアクノリッジ信号が少なくとも1クロックサイクル遅延した場合、データの第2のバリッド信号が少なくとも1クロックサイクル遅延した場合、前記中央処理ユニットが内蔵する汎用レジスタのインターロックが発生した場合、前記中央処理ユニットのバスアクセス要求よりも高い優先順位を持つバスアクセス要求が発生した場合の少なくとも1つの場合に、前記第1のクロックを停止する制御を行うことを特徴とするマイクロコンピュータ。 - 請求項2において、
前記クロック制御回路が、
前記第1のアクノリッジ信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第1のステートマシーン、前記第1のバリッド信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第2のステートマシーン、前記第2のアクノリッジ信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第3のステートマシーン、前記第2のバリッド信号の未返却数が0であることを表すステート、1であることを表すステート及び2であることを表すステートを有する第4のステートマシーンの少なくとも1つを含むことを特徴とするマイクロコンピュータ。 - 請求項1乃至3のいずれかにおいて、
前記クロック制御回路が、
前記中央処理ユニットを動作させる第2のクロックを、パイプラインステージが前記所与の要因によりストールした場合にも停止しないように制御することを特徴とするマイクロコンピュータ。 - 請求項1乃至4のいずれかにおいて、
前記中央処理ユニットが、
前記クロック制御回路に出力され且つ1つのバスアクセス要求について1クロックサイクル期間だけアクティブになる第1のリクエスト信号と、前記中央処理ユニットからのバスアクセス要求を受け付けるバス制御ユニットに対して出力され且つ前記第1のリクエスト信号がアクティブになってから前記バス制御ユニットからのアクノリッジ信号がアクティブになるまでの期間アクティブになる第2のリクエスト信号とを生成するインターフェース回路を含むことを特徴とするマイクロコンピュータ。 - 請求項1乃至5のいずれかにおいて、
前記クロック制御回路が、
前記中央処理ユニットの制御の下で動作する所与の回路ユニットを動作させる第3のクロックを、パイプラインステージが前記所与の要因によりストールした場合及び前記回路ユニットを使用しない命令を処理する場合のいずれかの場合に停止する制御を行うことを特徴とするマイクロコンピュータ。 - 請求項1乃至6のいずれかにおいて、
前記中央処理ユニットからのバスアクセス要求を受け付けるバス制御ユニットと、
前記バスアクセス要求に対する前記バス制御ユニットの応答のウェイトサイクル数を制御するウェイト制御回路とを含むことを特徴とするマイクロコンピュータ。 - 各パイプラインステージの処理のための制御信号の状態が格納されるパイプラインレジスタを有し、発行された各命令のパイプラインステージをパイプライン制御により並列処理する中央処理ユニットと、
前記パイプラインレジスタに供給される第1のクロックを制御するクロック制御回路と、
前記中央処理ユニットからのバスアクセス要求を受け付けるバス制御ユニットと、
前記バスアクセス要求に対する前記バス制御ユニットの応答のウェイトサイクル数を制御するウェイト制御回路と、
前記バス制御ユニットの応答が遅延した場合に、前記第1のクロックを停止する制御を行い、前記中央処理ユニットのパイプライン処理を停止させるクロック制御回路とを含むことを特徴とするマイクロコンピュータ。 - 請求項7又は8において、
前記ウェイト制御回路が、
所与の設定値に基づき決定される周期でアクティブになる周期信号を生成する回路と、
前記中央処理ユニットからのリクエスト信号がアクティブとなり且つ前記周期信号がアクティブとなった場合にアクティブになるアクノリッジ信号を生成する回路とを含むことを特徴とするマイクロコンピュータ。 - 請求項1乃至9のいずれかのマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力源と、
前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする電子機器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13771097A JP3562215B2 (ja) | 1997-05-13 | 1997-05-13 | マイクロコンピュータ及び電子機器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13771097A JP3562215B2 (ja) | 1997-05-13 | 1997-05-13 | マイクロコンピュータ及び電子機器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10312222A JPH10312222A (ja) | 1998-11-24 |
JP3562215B2 true JP3562215B2 (ja) | 2004-09-08 |
Family
ID=15205023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13771097A Expired - Fee Related JP3562215B2 (ja) | 1997-05-13 | 1997-05-13 | マイクロコンピュータ及び電子機器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3562215B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073406A (ja) * | 2000-08-30 | 2002-03-12 | Matsushita Electric Ind Co Ltd | メモリアクセス制御装置 |
CN100399262C (zh) * | 2003-08-26 | 2008-07-02 | 国际商业机器公司 | 用于降低功率的按需驱动时钟调节的处理器 |
WO2008120274A1 (ja) * | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 演算能力を制御する処理装置 |
JP2011044072A (ja) * | 2009-08-24 | 2011-03-03 | Panasonic Corp | アイドル状態検出回路、半導体集積回路、信号処理装置、アイドル状態検出方法 |
-
1997
- 1997-05-13 JP JP13771097A patent/JP3562215B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10312222A (ja) | 1998-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6327647B1 (en) | Method and apparatus for interfacing a processor to a coprocessor | |
JP3206704B2 (ja) | 複数のオンチップメモリバスを備えたデータ処理装置 | |
US5923893A (en) | Method and apparatus for interfacing a processor to a coprocessor | |
US5584031A (en) | System and method for executing a low power delay instruction | |
US5440747A (en) | Data processor with control logic for storing operation mode status and associated method | |
US20080301409A1 (en) | Scheduling threads in a processor | |
US7308320B2 (en) | Processor core for using external extended arithmetic unit efficiently and processor incorporating the same | |
JPH09212358A (ja) | データ処理装置及びマイクロプロセッサ | |
JPH06139189A (ja) | 共有バス調停機構 | |
WO2008023426A1 (fr) | Dispositif de traitement de tâche | |
JP2003196084A (ja) | リードモディファイライトユニットを有するシステム | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US5983338A (en) | Method and apparatus for interfacing a processor to a coprocessor for communicating register write information | |
US6044453A (en) | User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure | |
US6233596B1 (en) | Multiple sum-of-products circuit and its use in electronic equipment and microcomputers | |
WO2008023427A1 (fr) | Dispositif de traitement de tâche | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
US5410721A (en) | System and method for incrementing a program counter | |
JPH10207717A (ja) | マイクロコンピュータ | |
US6986028B2 (en) | Repeat block with zero cycle overhead nesting | |
JP3510729B2 (ja) | 命令実行方法および命令実行装置 | |
JP3562215B2 (ja) | マイクロコンピュータ及び電子機器 | |
US20070143579A1 (en) | Integrated data processor | |
JP2002229779A (ja) | 情報処理装置 | |
JPH0916409A (ja) | マイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040216 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040524 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090611 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100611 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110611 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110611 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120611 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130611 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130611 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |