(57)【特許請求の範囲】
【請求項１】
複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの削減数を信号により設定できる削減命令検出手段と、前記削減命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック削減数に応じたクロックを生成するクロック生成手段と、を備えたことを特徴とするクロック数可変プロセッサ。
【請求項２】
前記クロックの削減数を内部レジスタに設定することを特徴とする請求項１に記載のクロック数可変プロセッサ。
【請求項３】
複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの増加数を信号により設定できる増加命令検出手段と、前記増加命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック増加数に応じたクロックを生成するクロック生成手段と、を備えたことを特徴とするクロック数可変プロセッサ。
【請求項４】
複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの削減数を信号により設定できる削減命令検出手段と、前記削減命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック削減数に応じたクロックを生成するクロック生成手段と、を備え、クロック数が多くなった命令に対して、削減したクロック数を設定できることを特徴とするクロック数可変プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、命令に応じて動作クロック数が異なるプロセッサに係り、クロック数の削減を行う機能を有するクロック数可変プロセッサに関するものである。
【０００２】
【従来の技術】
近年の半導体製造技術（以下、プロセス）の進歩によりＬＳＩは常に微細化に進んでおり、これによりチップ面積の縮小によるチップ単価のコストダウンや動作周波数の高速化等の性能面での向上が図れることとなる。
【０００３】
マイクロプロセッサ等の処理装置も同様に微細化に伴いシュリンクが行われているが、シュリンク時においては、旧プロセスで設計したプロセッサのクリティカルパス等に対して高速化対策をとることで、さらなる性能向上を図っている。
【０００４】
図１に単クロックまたは複数のクロックを使用して命令を実行しているプロセッサにおいて、シュリンク時の命令実行時間とクロック数との一般的な関係を示す。この例では、旧プロセスで、最高動作周波数２００ＭＨｚで動作するプロセッサの命令ＡからＤの命令実行時間がそれぞれ４、９、１４、１９ｎｓであるとしている。この条件では、使用されるクロック数はそれぞれ１、２、３、４となる。尚、図２にパイプライン命令処理の流れとクロックについて示している。
【０００５】
このプロセッサを新プロセスでシュリンクして動作周波数の向上を図った結果、最高動作周波数は４００ＭＨｚとなり、各命令の実行時間が旧プロセスの１／２になったとする。この場合、命令Ａ、Ｂ、Ｃ、Ｄに必要なクロック数は旧プロセスと同じとなり、新プロセス下でのプロセッサは動作周波数の向上が図られ、性能は向上したことになる。
【０００６】
このプロセッサを４００ＭＨｚで使用するＬＳＩチップを新規仕様で設計する場合には、このプロセッサで問題はない。しかし、既存ＬＳＩチップに対して、コストダウンのために旧プロセスから新プロセスへのシュリンクを採用し、動作周波数やアプリケーションやシステムは変更せず、ＬＳＩチップの交換だけで対応する場合もある。この場合には、動作周波数を２００ＭＨｚに落として使用することになる（図１のＴＹＰＥ１参照）。また、別のユーザーからは、新規プロセス版を２００ＭＨｚで使用するが、総処理時間を短くしたいという要求も予想される。例えば、２００ＭＨｚ動作では命令Ｂ、Ｃ、Ｄのクロックを単純に１、２、２とする（図１のＴＹＰＥ２参照）や１、２、３（図１のＴＹＰＥ２参照）とすることで処理速度を上げることができれば要求を満たすことが可能となる。
【０００７】
総処理時間の短縮化技術という点では、従来技術として以下のような手法が考えられている。
【０００８】
特開平９−２２３０１０号公報の「マイクロプロセッサおよびその処理方法」においては、プロセッサ内で使用されるクロック周波数よりも速いクロックを入力し、命令解析結果から実行に必要な時間分の内部クロックを分周器を用いて生成し、命令によるサイクル時間を可変として全体の実行時間を短縮する技術が開示されている。
【０００９】
特開平１１−１６１４９０号公報の「命令実行サイクル可変回路」においては、アプリケーションにおいて、使用頻度が高く実行時間の短い命令処理サイクルを基本クロックとし、使用頻度が低く実行時間の長い命令処理に対しては、その命令を解析してその結果と外部からのクロック数設定レジスタからクロックをロックするロック信号を生成して不要なクロックを消し、サイクル時間を基本クロックの整数倍で実行させる手段を持つことで、全体の実行時間を短縮する技術が開示されている。
【００１０】
特開２０００−２６７８４９号公報の「パイプライン・プロセッサ」においては、プロセッサ内で使用されるクロック周波数よりも速いクロックを入力し、特別に命令コード内に埋め込まれた処理時間を解析し、解析結果から実行に必要な時間分だけクロックの間引き処理を行なうことで内部クロックを生成し、命令によるサイクル時間を可変として全体の実行時間を短縮する技術が開示されている。
【００１１】
【発明が解決しようとする課題】
しかしながら、これらの手法も少なからず問題がある。例えば、高周波数のクロックから内部クロックを作る手法として分周もしくは間引きを行っている処理があるが、分周器では高速なクロックで分周することから消費電力増加が挙げられる。
【００１２】
また、間引き処理では命令コードにその命令がパイプライン処理されていくステージであるデコード、実行、メモリアクセス、ライトバック処理に対して、それぞれ必要なクロック数を予め埋め込んでおく必要があり、その埋め込んだ数を元に間引き処理を行っている。命令コードはＲＯＭやＲＡＭに配置されることから、命令コードの増加はＲＯＭやＲＡＭのビット方向の容量を増加させることになりコスト高となると言える。
【００１３】
サイクル数設定とロック信号のものは、サイクル数を１度に１種しか設定できないことから、アプリケーションを１回実行させた場合、削減されるサイクル数は制限されることとなる。すなわち、図１で最も高率の良いＴＹＰＥ２の１、２、２のクロックは実現できない。
【００１４】
次の課題として、単クロックまたは複数のクロックを使用して命令を実行しているプロセッサにおいてのシュリンク時の命令実行時間と基準クロック数との一般的な関係を図３に示した。この例では、旧プロセスにおいて、最高動作周波数２００ＭＨｚで動作するプロセッサの命令ＡからＤの命令実行時間がそれぞれ４、９、１４、１９ｎｓであったとする。この条件の場合、使用されるクロック数はそれぞれ１、２、３、４となる（図２にパイプライン命令処理の流れとクロックについて示した）。
【００１５】
このプロセッサを新プロセスでシュリンクして動作周波数の向上を図った結果、最高動作周波数は４００ＭＨｚとなり、各命令の実行時間が旧プロセスの１／２になったとする。また命令Ｃでは設計変更による高速化を実施したことで、さらに実行時間が短縮されたとする。この場合、命令Ａ、Ｂ、Ｄに必要なクロック数は旧プロセスと同じとなる。また高速化を行った命令Ｃは５ｎｓ以内となるため、クロック数は２に変更され、プロセッサは作りこまれている。
【００１６】
新プロセス下でのプロセッサは動作周波数の向上が図られ、命令Ｃ実行時間の高速化により基準クロック数も削減でき性能は上がったことになる。
【００１７】
このプロセッサを４００ＭＨｚで使用するＬＳＩチップを新規仕様で設計する場合には、このプロセッサで問題はない。しかし、既存ＬＳＩチップに対して、コストダウンのために旧プロセスから新プロセスへのシュリンクを採用し、動作周波数やアプリケーションやシステムは変更せず、ＬＳＩチップの交換だけで対応する場合もある。この場合、新規プロセス版で変更された命令Ｃの基準クロック数を旧プロセスと同じ数にしたいという要求が発生することも考えられる（図３のＴＹＰＥ３参照）。また、当然のことながら新規プロセス版を２００ＭＨｚで高速化したクロック数で使用する場合（図３のＴＹＰＥ４参照）もあり、両者の要求を満足する必要がある。
【００１８】
しかしながら、従来のプロセッサでは前記ＴＹＰＥ３のように、実行時間を速くした命令を遅くして旧プロセス版とのハード的完全互換をとる場合と、ＴＹＰＥ３のように動作周波数を落としてもそのまま使用する機能を持つものは一般的ではない。
【００１９】
また、別の例として旧版の方がクロック数が少なく、新版の方がクロック数が多い場合も想定できる。
【００２０】
この発明では、前記従来技術の問題点を解消し、総実行時間の短縮化すなわち、同時に異なるクロック数の削減を行うとともに既存プロセッサと同じクロック数で処理を行うことができるプロセッサを提供することを目的とする。
【００２１】
また、この発明は、本来のクロック数での実行と既存プロセッサとのクロック数の完全互換に対応でき、両者を選択的に切り替えて使用できるプロセッサを提供することを目的とする。
【００２２】
【課題を解決するための手段】
この発明は、複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの削減数を信号により設定できる削減命令検出手段と、前記削減命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック削減数に応じたクロックを生成するクロック生成手段と、を備えたことを特徴とする。
【００２３】
また、前記クロックの削減数を内部レジスタに設定するように構成することができる。
【００２４】
上記した構成によれば、総実行時間の短縮化、すなわち、同時に異なるクロック数の削減を行い、クロック数の削減化を行う機能および、既存プロセッサと同じクロック数で処理を行う機能を含み、選択的に切り替えて使用することができる。
【００２５】
また、この発明は、複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの増加数を信号により設定できる増加命令検出手段と、前記増加命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック増加数に応じたクロックを生成するクロック生成手段と、を備えたことを特徴とする。
【００２６】
また、この発明は、複数のパイプラインステージを有し、クロックに同期してパイプライン方式で命令を実行し、命令によっては複数のクロックを使用して実行処理されるクロック数可変プロセッサにおいて、クロック数が同じもしくは異なる命令に対して、クロックの削減数を信号により設定できる削減命令検出手段と、前記削減命令検出手段から与えられる検出出力に応じて命令ごとに異なるクロック削減数に応じたクロックを生成するクロック生成手段と、を備え、クロック数が多くなった命令に対して、削減したクロック数を設定できることを特徴とする。
【００２７】
上記した構成によれば、本来のクロック数での実行と既存プロセッサとのクロック数の完全互換に対応でき、両者を選択的に切り替えて使用できることができる。
【００２８】
【発明の実施の形態】
以下、この発明の実施形態につき図面を参照して説明する。まず、この発明の前提につき説明する。
【００２９】
単クロックを使用して命令を実行するか複数クロックを用いて命令を実行するかは、その命令中にあり、デコードステージにおいて命令を解析することで処理を行っていることとなる。例えば、複数クロックを必要とする命令は乗算命令や除算命令などで、ＡＬＵなどの演算器を使用する実行が一般的に考えられる。この場合、複数クロックを使用しての実行処理は複数クロックを単クロックでの処理に細分化して演算実行をパイプラインライン的に処理させ、同時刻にある他のステージはパイプラインの流れを乱さない様に複数クロックによる実行処理が終了するまで、止める等の制御を行っている場合が考えられる。
【００３０】
また他には命令に応じて複数クロックからバスクロック的なクロックを生成し、そのクロックに同期させてパイプライン処理を行っている場合も考えられる。
【００３１】
前記の複数クロックを単クロックでの処理に細分化している技術、例えば、演算命令実行に３クロック必要となっているプロセッサについての動作であるが、このようなプロセッサは３クロックの命令を逐次実行しないと演算結果が得られない。すなわち、プロセッサに搭載されている特定のハードウエア（例えばＡＬＵなど）を複数回使用して演算結果を生成するようなハードウエア構成を持っていると考えられる。この様なプロセッサでは、低周波数動作時に何らかの手段を用いて２クロック目や１クロック目に演算終了信号を発行させてクロック数を削減しても、演算途中で強制的に終了させることとなり、正しい演算結果は得られないので、周波数に応じてクロックを削減することはできない。
【００３２】
次に、命令に応じて複数クロックからバスクロック的なクロックを生成して、そのクロックに同期させてパイプライン処理を行っているプロセッサについての動作であるが、この場合の演算はハードウエア的に１サイクルで処理できるように構成されていると考えられる。すなわち、演算実行開始から結果を生成するまでには、プロセッサに搭載されている特定のハードウエア（例えば乗算器など）を１度使用するだけでよいこととなる。当然ながらプロセッサとしては、アプリケーションを実行させた時の総実行時間を短くできるようにしたいためできるだけ高速なクロックで命令実行処理を行わせることとなるが、乗算器等を使用する命令処理は他の命令処理よりもかなりの時間を要する。この処理時間をクロック周波数とした場合、他の命令もこのクロック周波数で動作することとなり、総実行時間は大きくなることは明らかであり、遅い命令に対しては複数クロックで処理し、速い命令に対しては１クロックで処理させる方が総実行時間は短くなる。なお、複数クロックが必要な処理に対してはあらかじめ、命令デコードにおいて生成される制御信号に必要なクロック数情報を出力し、クロック数制御を行っていると考えられる。
【００３３】
以上を踏まえ、この発明の実施形態の説明を行う。この発明の第１の実施形態の前提となるプロセッサを図４に示す。
【００３４】
図４は、プロセッサ１の構成を概略的に示したブロック図であり、プロセッサ１以外のメモリに命令コード１６が配置されている。このコードはプロセッサ１に入力される。プロセッサ１に入力されたコードは命令フェッチ部１１に取り込まれる。そして、命令デコード部１２で取り込まれた命令を解析する。解析された命令の結果に従い実行部１３が命令を実行する。命令デコード部１２で命令解析された結果及び外部クロック数設定信号から次の実行サイクルで必要なクロック数の情報信号１７がクロック制御部１４に通知する。クロック制御部１４では外部入力クロックとクロック数の情報信号１７により内部クロック信号を生成する。生成された内部クロック信号は各ブロックへ供給される。供給されたクロックに従い各ブロックで命令が実行される。この図４に示すプロセッサ１においては、同時に異なるクロック数の削減を行うことはできない。
【００３５】
そこで、この発明の第１の実施形態は、同時に異なるクロック数の削減を行い、クロック数の削減化を行う機能および、既存プロセッサと同じクロック数で処理を行う機能を含み、選択的に切り替えて使用できるように構成したものである。図５は、この発明の第１の実施形態に係るプロセッサ２の構成を概略的に示したブロック図である。
【００３６】
プロセッサ２以外のメモリに命令コード２６が配置されている。このコードはプロセッサ２に入力される。プロセッサ２に入力されたコードは命令フェッチ部２１に取り込まれる。命令フェッチ部２１に取り込まれたコードは削減命令検出装置２２及び命令デコード部２３に与えられる。そして、命令デコード部２３で取り込まれた命令を解析する。解析された命令の結果に従い実行部２４が命令を実行する。
【００３７】
クロック削減検出装置２２は、複数クロックを用いている命令を解析して、周波数に対応して削減可能であればクロック制御部２５にクロック数削減要求信号２８を通知する。また、クロック削減検出装置２２にプロセッサ２の外部から入力されるクロック削減命令設定信号３０は、対象となる命令に対してクロックを削減するかどうかの設定信号である。
【００３８】
クロック制御部２５にプロセッサ２の外部から入力されるクロック削減数信号２９は、複数クロックの内いくつ削減するかの設定信号である。
【００３９】
命令デコード２３で命令解析された結果から命令デコード２３はクロック制御部２５に次の実行サイクルで必要なクロック数を含む情報信号２７を通知する。
【００４０】
クロック制御部２５では、外部入力クロック、情報信号２７、クロック数削減要求信号２８とクロック削減数信号２９とにより内部クロック信号を生成する。生成された内部クロック信号は各ブロックへ供給される。
【００４１】
次に、図６に削減命令検出装置２２の構成例を示す。
この実施形態では、クロック数のグループが２つの場合の例であり、この場合には２つの信号Ｃ４，Ｃ５が出力されるが、３つの信号を出力するように構成することもできる。削減命令検出装置２２は複数クロックの命令を解析する複数クロック命令解析部２２１を備え、複数クロック命令解析部２２１からそれぞれ複数クロック命令検出信号がアンド回路２２２，２２３，２２０，２２５に与えられる。この複数クロック命令検出信号は、複数クロック命令１、２、３、４を検出した時“１”を出力する。ここで、命令１、２はほぼ同じ実行時間とし、ここでは７ｎｓとする。命令３、４も同じ実行時間とし、ここでは９.５ｎｓとする。
【００４２】
アンド回路２２２，２２３，２２０，２２５の他方の入力にはクロック削除命令設定信号３０が与えられる。この信号は、使用する周波数帯で命令１、２、３、４それぞれに対してクロック数の削減が可能ならばこの例では“１”を設定し、不可ならば“０”を設定する。また使用する周波数帯でクロック数の削減が可能であっても、削減しない場合は“０”を設定することも可能である。オア回路２２３，２２７から生成されるＣ４、５は命令１、２および命令３、４からのクロック数削減要求信号である。
【００４３】
次に、複数クロックから所定のクロック数を削減する方法について述べる。
【００４４】
プロセッサ２は命令に対応したクロック数を命令デコード部２３で解読して、各ブロックへの制御信号を生成する。この制御信号の中には命令に応じたクロック数情報を持つ信号があり、その情報はクロック制御部２５へ送られ、１クロック目を内部クロックとして出力すると同時にその情報を取り込み、２クロック目をその情報から消す方法や、クロック数情報から分周器等で必要なサイクルを作る方法等をとっている。このことからクロック数情報を制御できればクロック数の削減は可能となることがわかる。ここで図７にそのクロック制御部２５の実施形態を示す。
【００４５】
今、削減するクロック数を１または２または３とすると、選択器２５１はデータとして、命令デコード部２３からのクロック数情報、クロック数１削減情報、クロック数２削減情報、クロック数３削減情報、クロック数強制１情報となる。また、その選択信号は、削減命令検出装置２２からのクロック数削減要求信号Ｃ４、Ｃ５（信号２８と同意）から生成される信号２９と、クロック削減数信号Ａの信号２６３，２６４、クロック削減数信号Ｂの信号２６５，２６６をデータとし、選択信号をＣ４、Ｃ５とする選択器２６２の出力データ２５６，２５７とで生成される。
【００４６】
また、Ｃ４、Ｃ５はオア回路２２５に与えられ、このオア回路２２５の出力がアンド回路２５３，２５４に与えられる。このアンド回路２５３，２５４には、選択器２６２の出力データ２５６，２５７が与えられ、アンド回路２５３，２５４の出力２６０，２６１が選択器２５１に与えられる。
【００４７】
Ｃ４が“１”ならばクロック削減信号Ａに設定した削減数により、対応するクロック数削減ｎ情報が選ばれることとなる。また、同様にＣ５が“１”ならばクロック削減信号Ｂに設定した削減数により、対応するクロック数削減ｎ情報が選ばれることとなる。このことは、クロック削減数信号はプロセッサのクロック数情報として変換し、クロック数削減要求信号により切り替えることで、複数クロック必要な命令であっても強制的にクロック数の削減が図れることとなる。
【００４８】
今、周波数２００ＭＨｚ下において命令１、２の削減できるクロック数がそれぞれ１、命令３、４の削減できるクロック数がそれぞれ１または２とすると、命令３、４のクロック数を２減らせる方が全体の処理時間を短縮できることとなる。そこで、クロック削減数信号Ａに削減数１、クロック削減数信号Ｂに削減数２を設定することで、所望のクロック数情報がクロック生成装置２５５に通知されることとなる。このように命令に対してのクロック削減数を複数種設定できることで、アプリケーションの総実行時間の短縮が図れることとなる。なお、実施形態では削減数設定を２種としているが、さらに増やすことも可能である。
【００４９】
上記以外に選択器２５１に与えられる信号２５８もクロック削減信号であるが、この信号に“１”を設定すると全命令１クロックで動作する設定が可能としている。この例の命令４が最も遅い命令であったとすると、動作周波数を１００ＭＨｚとした時この信号により全命令１クロックで処理可能となる。また、Ｃ４、Ｃ５、信号２５８が“０”ならば命令のクロック数情報に従うこととなる。
【００５０】
この発明の第２の実施形態の前提となるプロセッサを図８に示す。
【００５１】
図８は、プロセッサ１の構成を概略的に示したブロック図であり、プロセッサ１以外のメモリに命令コード１６が配置されている。このコードはプロセッサ１に入力される。プロセッサ１に入力されたコードは命令フェッチ部１１に取り込まれる。そして、命令デコード部１２で取り込まれた命令を解析する。解析された命令の結果に従い実行部１３が命令を実行する。内部レジスタ１８にはクロック数設定値が与えられて格納されている。命令デコード部１２で命令解析された結果及び内部レジスタ１８によるクロック数設定値から次の実行サイクルで必要なクロック数の情報信号１７が生成され、クロック制御部１４に与えられる。クロック制御部１４では外部入力クロックとクロック数の情報信号１７により生成された内部クロック信号を各ブロックへ供給する。供給されたクロックに従い各ブロックで命令が実行される
【００５２】
図９は、この発明の第２の実施形態に係るプロセッサ２の構成を概略的に示したブロック図である。図１０は、第２の実施形態に用いられる削減命令検出装置の構成例を示すブロック図、図１１は、第２の実施形態に用いられるクロック制御部の構成例を示すブロック図である。この第２の実施形態と第１の実施形態と相違するところは、第１の実施形態がクロック数削減命令信号が外部から入力されるのに対して、この第２の実施形態では、予め内部のレジスタ３１に格納されている点である。その他の構成は、第１の実施形態、第２の実施形態とも相違がないので、説明の重複を避けるために、同一部分には同一符号を付し、ここでは説明を割愛する。
【００５３】
第２の実施形態のように、クロック数削減命令を設定する信号３０ａによりクロック削減数を内部レジスタ３１に格納される。このように、クロック削減数を内部レジスタ３１に持たせている場合、すなわち図１１に示したクロック削減数設定Ａ、Ｂについても先の第１の実施形態と同様にクロック削減数はプロセッサ２のクロック数情報として変換され、クロック数削減要求信号により切り替えることで、複数クロック必要な命令であっても強制的にクロック数の削減が図れることとなる。なおこの場合、内部レジスタによる削減数の設定はプログラムで行なうことが可能となり、無駄な端子は不要となる。さらに、この第２の実施形態では、図９、図１０に示している、クロック削減命令の設定を内部レジスタによる設定とすることも可能であることから、同様にプログラムで行うことが可能となる。
【００５４】
次に、この発明の第３の実施形態につき図１２乃至図１４に従い説明する。この第３の実施形態は、特定の命令に対してその実行時間の高速化を図るため、実行に費やされていた複数のクロックを最適化し、クロック数の削減を図ったプロセッサに対して、従来のクロック数で処理できるようにクロック数を増加させるものである。尚、第１の実施形態とプロセッサの基本構成は同じであり、第１の実施形態の削減命令検出装置の変わりにクロック増加命令検出装置２２９を用いた点が相違する。
【００５５】
プロセッサ２以外のメモリに命令コード２６が配置されている。このコードはプロセッサ２に入力される。そして、命令フェッチ部２１で先のコードを取り込む。命令デコード部２３で取り込まれた命令を解析する。実行部２４で解析された結果に従い命令を実行する。
【００５６】
この実施形態のクロック増加命令検出装置２２９は、複数クロックを用いている命令を解析して、周波数に対応して増加が必要であればクロック制御部２５にクロック数増加要求信号２８を通知する。またクロック増加命令検出装置２２９に入力されるクロック増加命令設定信号３０は、対象となる命令に対してクロックを増加するかどうかの設定である。
【００５７】
クロック増加数設定信号２９は、複数クロックの内いくつ増加させるかの設定信号である。信号２７は命令デコード部２３で命令解析された結果から次の実行サイクルで必要なクロック数の情報信号で、クロック制御部２５に通知する。クロック制御部２５では外部入力クロックと信号２７により内部クロック信号を生成する。生成された内部クロック信号は各ブロックへ供給される。
【００５８】
次に、図１３にクロック増加命令検出装置２２９の構成例を示す。複数クロック命令解析部２２１は、２つの信号Ｋ４，Ｋ５が出力される。増加命令検出装置２２９は複数クロックの命令を解析する複数クロック命令解析部２２１を備え、複数クロック命令解析部２２１からそれぞれ複数クロック命令検出信号がアンド回路２２２，２２３，２２０，２２５に与えられる。この複数クロック命令検出信号は、複数クロック命令１、２、３、４を検出した時“１”を出力する。ここで、命令１、２はほぼ同じ実行時間とし、ここでは単なるシュリンクでは４.５ｎｓだったが回路の最適化により２ｎｓに短縮されているとする。命令３、４も同じ実行時間としここでは単なるシュリンクでは９.５ｎｓだったが回路の最適化により４.５ｎｓに短縮されたとする。
【００５９】
アンド回路２２２，２２３，２２０，２２５の他方の入力にはクロッククロック数増加命令設定信号３０ａが与えられる。この信号は、使用する周波数帯で命令１、２、３、４それぞれに対してクロック数の増加が可能ならばこの例では“１”を設定し、不可ならば“０”を設定する。オア回路２２３，２２７から生成されるＫ４、Ｋ５は命令１、２および命令３、４からのクロック増加要求信号である。
【００６０】
次に複数クロックから所定のクロック数を増加する方法について述べる。
【００６１】
プロセッサは命令に対応したクロック数を命令をデコード部２３で解読して、各ブロックへの制御信号を生成する。この制御信号の中には命令に応じたクロック数情報を持つ信号があり、その情報はクロック制御装置へ送られ、１クロック目を内部クロックとして出力すると同時にその情報を取り込み、２クロック目をその情報から消す方法や、クロック数情報から分周器等で必要なサイクルを作ることも考えられる。このことからクロック数情報を制御できればクロック数の削減は可能となることがわかる。
【００６２】
図１４にその実施形態を示した。今、増加するクロック数を１または２または３とすると、選択器２５１はデータとして、命令デコードからのクロック数情報、クロック数１増加情報、クロック数２増加情報、クロック数３増加情報を用意することとなる。またその選択信号は、Ｋ４、Ｋ５のクロック数増加要求信号（２８と同意）から生成される２５９と、クロック増加数設定Ａの２６３、２６４、クロック増加数設定Ｂの２６５、２６６を内部レジスタ２６７に設定され、選択信号をＫ４、Ｋ５とする選択器２６２の出力データ２５６、２５７とで生成される。Ｋ４が“１”ならばクロック増加数設定ＡからレジスタＬ１３に設定した増加数により、対応するクロック数増加ｎ情報が選ばれることとなる。また同様にＫ５が“１”ならばクロック増加数設定ＢからレジスタＬ１３に設定した増加数により、対応するクロック増加減ｎ情報が選ばれることとなる。このことは、クロック増加数信号はプロセッサのクロック数情報として変換し、クロック数増加要求信号により切り替えることで、強制的にクロック数の増加が図れることとなる。
【００６３】
今、周波数２００ＭＨｚ下において命令１、２の増加すべきクロック数がそれぞれ１、命令３、４の増加すべきクロック数がそれぞれ２とすると、クロック増加数設定Ａでレジスタ２６７に増加数１、クロック増加数信号Ｂで同じくレジスタ２６７に増加数２を設定することで、所望のクロック数情報がクロック生成装置２５５に通知される。信号Ｋ４、Ｋ５が“０”ならば実行は命令のクロック数情報に従うこととなる。この様にクロックの増加数設定を従来のクロック数と同じとなるように複数種設定できることで従来のプロセッサとのクロック数の互換が図れることとなる。
【００６４】
次に、この発明の第４の実施形態にある、特定の命令に対してその実行処理ため、実行に費やされるクロック数が増加されたプロセッサに対して、従来のクロック数で処理できるようにクロック数を削減させる例を以下に示す。
【００６５】
図１５は、この発明の第４の実施形態のプロセッサ２の概略構成を示すブロック図であり、プロセッサ２以外のメモリに配置された命令コード２６がプロセッサ２に入力される。命令フェッチ部２１で先のコードを取り込む。
【００６６】
命令デコード部２３で取り込まれた命令を解析する。そして、実行部２４で解析された結果に従い命令を実行する。クロック削減命令検出装置２２で、複数クロックを用いている命令を解析して、周波数に対応して削減が可能であればクロック制御部２５にクロック数削減要求信号２８を通知する。また削減命令検出装２２に入力されるクロック削減命令設定信号３０は、対象となる命令に対してクロックを削減するかどうかの設定である。また、クロック削減数設定２９は、複数クロックの内いくつ削減させるかの設定信号である。命令デコード２３からは命令解析された結果から次の実行サイクルで必要なクロック数の情報信号２７を出力すし、クロック制御部２５に通知する。クロック制御部２５では外部入力クロックと信号２７により内部クロック信号を生成する。生成された内部クロック信号は各ブロックへ供給される。
【００６７】
次に、図１６に削減命令検出検出装置の構成例を示す。複数クロック命令解析部２２１は、それぞれ複数クロック命令検出信号を出力し、複数クロック命令１、命令２、命令３、命令４を検出した時“１”を出力する。仮に既存のプロセッサが２００ＭＨｚで命令１、２を９ｎｓ（２クロック）で実行し、命令３、４を９.５ｎｓ（２クロック）で実行していたとする。新版のプロセッサでは４００ＭＨｚ動作を基準に設計され、命令１、２の実行が７ｎｓ（３クロック必要）、命令３、４の実行が８ｎｓ（４クロック必要）となったとする。この場合、クロック数では新版の方が多くなっていることとなる。しかし周波数が２００ＭＨｚでは新版も命令１、２、３、４、を２クロックで動作させることが可能であると言える。
【００６８】
クロック削減命令設定信号３０はレジスタ２２９に設定され、その出力は、アンド回路２２２，２２３，２２５，２２０の一方の入力信号となる。使用する周波数帯で命令１、２、３、４それぞれに対してクロック数の削減を行うならばこの例では“１”を設定し、不可ならば“０”を設定する。またクロック数の削減が不要の場合は“０”を設定することで対応可能である。オア回路２２４，２２７から生成されるＣ４、５は命令１、２および命令３、４からのクロック数削減要求信号である。
【００６９】
次に複数クロックから所定のクロック数を削減する方法について述べる。プロセッサ２は命令に対応したクロック数を命令をデコード部で解読して、各ブロックへの制御信号を生成する。この制御信号の中には命令に応じたクロック数情報を持つ信号があり、その情報はクロック制御装置へ送られ、１クロック目を内部クロックとして出力すると同時にその情報を取り込み、２クロック目をその情報から消す方法や、クロック数情報から分周器等で必要なサイクルを作ることも考えられる。このことからクロック数情報を制御できればクロック数の削減は可能となることがわかる。
【００７０】
図１７にその実施形態を示した。今、削減するクロック数を１または２または３とすると、選択器２５１はデータとして、命令デコードからのクロック数情報、クロック数１削減情報、クロック数２削減情報、クロック数３削減情報を用意することとなる。またその選択信号は、Ｃ４、Ｃ５のクロック数削減要求信号（２８と同意）から生成される２５９と、クロック削減数設定Ａの２６３、２６４、クロック削減数設定Ｂの２６５，２６６を内部レジスタ２６７に設定され、選択信号をＣ４，Ｃ５とする選択器２６２の出力データ２５６，２５７とで生成される。Ｃ４が“１”ならばクロック削減数設定Ａからレジスタ２６７に設定した削減数により、対応するクロック数削減ｎ情報が選ばれることとなる。また同様にＣ５が“１”ならばクロック削減数設定Ｂからレジスタ２６７に設定した削減数により、対応するクロック数削減ｎ情報が選ばれることとなる。このことは、クロック削減数信号はプロセッサのクロック数情報として変換し、クロック数削減要求信号により切り替えることで、強制的にクロック数の削減が図れることとなる。
【００７１】
先の例により、周波数２００ＭＨｚ下において命令１、２の削減すべきクロック数がそれぞれ１、命令３、４の削減すべきクロック数がそれぞれ２とすると、クロック削減数設定Ａでレジスタ２６７に削減数１、クロック削減数信号Ｂで同じくレジスタ２６７に削減数２を設定することで、所望のクロック数情報がクロック生成装置２５５に通知される。Ｃ４、Ｃ５が“０”ならば実行は命令のクロック数情報に従うこととなる。この様にクロックの削減数設定を従来のクロック数と同じとなるように複数種設定できることで従来のプロセッサとのクロック数の互換が図れることとなる。
【００７２】
【発明の効果】
以上説明したように、請求項１のプロセッサにおいては、命令ごとに異なるクロック数を設定できることにより、本来より少ないクロック数で処理を行うことが可能となり、アプリケーションの総実行時間を短縮できる。
【００７３】
また、請求項２のプロセッサにおいては、命令ごとに異なるクロック数を設定できることにより、本来より少ないクロック数で処理を行うことが可能となり、アプリケーションの総実行時間を短縮できる。
【００７４】
また、請求項３のプロセッサにおいては、クロック数が少なくなった命令に対して、従来のクロック数を設定できるので、従来と同じクロック数での処理が可能となる。
【００７５】
また、請求項４のプロセッサにおいては、クロック数が多くなった命令に対して、従来のクロック数を設定できるので、従来と同じクロック数での処理が可能となる。
【図面の簡単な説明】
【図１】単クロックまたは複数のクロックを使用して命令を実行しているプロセッサにおいて、シュリンク時の命令実行時間とクロック数との一般的な関係を示す図である。
【図２】パイプライン命令処理の流れとクロックの関係を示す図である。
【図３】単クロックまたは複数のクロックを使用して命令を実行しているプロセッサにおいて、シュリンク時の命令実行時間とクロック数との一般的な関係を示す図である。
【図４】この発明の第１の実施形態の前提となるプロセッサを示すブロック図である。
【図５】この発明の第１の実施形態に係るプロセッサの構成を概略的に示したブロック図である。
【図６】第１の実施形態に用いられる削減命令検出装置の構成例を示すブロック図である。
【図７】第１の実施形態に用いられるクロック制御部の構成例を示すブロック図である。
【図８】この発明の第２の実施形態の前提となるプロセッサを示すブロック図である。
【図９】この発明の第２の実施形態に係るプロセッサの構成を概略的に示したブロック図である。
【図１０】第２の実施形態に用いられる削減命令検出装置の構成例を示すブロック図である。
【図１１】第２の実施形態に用いられるクロック制御部の構成例を示すブロック図である。
【図１２】この発明の第３の実施形態に係るプロセッサの構成を概略的に示したブロック図である。
【図１３】第３の実施形態に用いられる増加命令検出装置の構成例を示すブロック図である。
【図１４】第３の実施形態に用いられるクロック制御部の構成例を示すブロック図である。
【図１５】この発明の第４の実施形態に係るプロセッサの構成を概略的に示したブロック図である。
【図１６】第４の実施形態に用いられる削減命令検出装置の構成例を示すブロック図である。
【図１７】第４の実施形態に用いられるクロック制御部の構成例を示すブロック図である。
【符号の説明】
２  プロセッサ
２６  命令コード
２１  命令フェッチ部
２２  削減命令検出装置
２３  命令デコード部
２４  実行部
２５  クロック制御
【図１】
0003716923.tif 000002
【図２】
0003716923.tif 000003
【図３】
0003716923.tif 000004
【図４】
0003716923.tif 000005
【図５】
0003716923.tif 000006
【図６】
0003716923.tif 000007
【図７】
0003716923.tif 000008
【図８】
0003716923.tif 000009
【図９】
0003716923.tif 000010
【図１０】
0003716923.tif 000011
【図１１】
0003716923.tif 000012
【図１２】
0003716923.tif 000013
【図１３】
0003716923.tif 000014
【図１４】
0003716923.tif 000015
【図１５】
0003716923.tif 000016
【図１６】
0003716923.tif 000017
【図１７】
0003716923.tif 000018