(57)【要約】【課題】動作環境に応じた、特定の命令コードに対してウェイト挿入することにより、安定した動作性能を維持することのできるマイクロプロセッサ及び画像形成装置を提供する。【解決手段】マイクロプロセッサ１０は、ウェイト挿入を用いて命令コードの処理時間を延長する手段を有するマイクロプロセッサ１０であって、命令コードの処理時間を延長するウェイトモードの設定値を記憶するレジスタ１５を有し、出荷又は起動時に、動作環境に応じた、前記命令コードに対するウェイトモードの設定値を、レジスタ１５へ設定するウェイトモード設定手段３１と、レジスタ１５が記憶するウェイトモードの設定値を取得する、ウェイトモード設定取得手段３２と、ウェイトモード設定取得手段３２により取得したウェイトモードの設定値に従って、特定の命令コードに対してウェイト挿入するウェイト挿入手段３３とを有することを特徴とする。【選択図】図５
2008071084.tif 000002
【特許請求の範囲】
【請求項１】
ウェイト挿入を用いて命令コードの処理時間を延長する手段を有するマイクロプロセッサであって、
命令コードの処理時間を延長するウェイトモードの設定値を記憶するレジスタを有し、
出荷又は起動時に、動作環境に応じた、前記命令コードに対するウェイトモードの設定値を、前記レジスタへ設定するウェイトモード設定手段と、
前記レジスタが記憶するウェイトモードの設定値を取得する、ウェイトモード設定取得手段と、
前記ウェイトモード設定取得手段により取得したウェイトモードの設定値に従って、特定の命令コードに対してウェイト挿入するウェイト挿入手段とを有することを特徴とするマイクロプロセッサ。
【請求項２】
当該マイクロプロセッサは、
複数個の命令コードを実行し、該マイクロプロセッサの動作環境に応じた動作検証を行う動作検証手段を有し、
前記動作検証手段により、該マイクロプロセッサの動作環境においてウェイト挿入を行う必要がある特定の命令コードを判断することを特徴とする請求項１に記載されたマイクロプロセッサ。
【請求項３】
当該マイクロプロセッサは、
不揮発性記憶装置を有し、
前記動作検証手段による検証結果に基づいて、特定の命令コードに対するウェイトモードの設定値を、前記不揮発性記憶装置に記憶することを特徴とする請求項１又は２に記載されたマイクロプロセッサ。
【請求項４】
当該マイクロプロセッサは、
前記レジスタにおけるデータの入出力を制御する入出力制御回路を有し、
前記動作検証手段による検証結果に基づいて、前記入出力制御回路をトリミングし、
特定の命令コードに対するウェイトモードの設定値を記憶することを特徴とする請求項１又は２に記載されたマイクロプロセッサ。
【請求項５】
請求項１ないし４の何れか一項に記載のマイクロプロセッサを備えた画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ及び画像形成装置に係り、特にウェイト挿入により命令実行時のサイクル数を変更するマイクロプロセッサ及び画像形成装置に関するものである。
【背景技術】
【０００２】
画像形成装置の印刷性能は、画像形成装置が備えるマイクロプロセッサ（MPU：Micro Processing Unit）の処理性能に依存する。そのため、マイクロプロセッサの性能指標である最大駆動周波数を実現することが、高性能な画像形成装置を設計する上で重要になる。
【０００３】
マイクロプロセッサの最大駆動周波数は、演算命令、データ操作命令、分岐命令、入出力命令など、処理する上で最も時間がかかり複雑な命令（以下、「クリティカルな命令：インストラクション」と言う。）を処理可能な周波数により決定される。
【０００４】
しかしながら、様々な動作環境下において、クリティカルな命令を安定した最大駆動周波数により処理可能なマイクロプロセッサを実現するのは、製造者にとって難しい。例えば、プリント基板のプリントパターンによるクロストーク（信号線が互いにノイズになる現象）や電源供給環境により発生したノイズによる電源電圧のIRドロップ（配線の抵抗成分による電位降下）など、マイクロプロセッサは、設置される回路基板や動作環境などの影響を受けやすいため、クリティカルな命令が1サイクルで実行不可能な場合があり、その結果、全体の命令のうちわずかな比率しかない実行不可能なクリティカルな命令のために、駆動周波数を下げざるを得ない（駆動周波数の上限）。
【０００５】
マイクロプロセッサは、演算命令、データ操作命令、分岐命令、入出力命令など、処理する上でクリティカルな命令が順次パイプライン処理された場合、複数個の命令が、レジスタリード（F）・デコード（D）・演算実行（E）・レジスタライト（W）の各ステージにて、1命令1サイクルで処理される。
【０００６】
このような順次パイプライン処理において、何らかの理由でクリティカルな命令が処理不可能な場合（駆動周波数が上限に達した場合）、一般的に、ウェイト信号（Low）を送出（ウェイト挿入）し、サイクル時間の延長（パイプライン延長）を行う。
【０００７】
しかし、この方法では、延長したサイクル時間のうち、最大の延長時間に基づいてマイクロプロセッサのサイクル時間が決定されるため、サイクル時間を延長する必要がない命令においてもサイクル時間が延長（ウェイト挿入）された状態で動作し、マイクロプロセッサ全体の処理性能を低下させてしまう。
【０００８】
そこで、上記の問題を解決するため、マイクロプロセッサのウェイト挿入を制御する方法が提案されている（例えば、特許文献１、２を参照）。
【特許文献１】特開２００３−２９９６５号公報
【特許文献２】特開２００３−３６２４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記述される方法では、ウェイト挿入の対象となる特定の命令コードに対して、命令コードの一部にウェイト数を設定する付加し、命令実行時に付加したコードにより設定されたウェイト数のウェイトを挿入するもので、ウェイト挿入を特定の命令コードに対して行うように制御すると言う意味では効果があるが、ウェイト挿入が必要な命令コード全てに対して対応コードが必要となり、プログラム上の変更や修正が煩雑で、対応したコードサイズ分、プログラム全体のサイズが増加してしまう（プログラムを記憶する領域を圧迫してしまう）。
【００１０】
また、特許文献２に記述される方法では、外部デバイス装着時におけるウェイト挿入の制御方法が提案されているが、対応範囲が外部デバイス装着時と限定されており、動作環境の影響により、マイクロプロセッサの動作性能を維持するためウェイト挿入が必要となる場合など、外部デバイス装着時以外のウェイト挿入を制御できない。
【００１１】
本発明は、上記従来技術の問題点を鑑み、動作環境に応じた、特定の命令コードに対してウェイト挿入することにより、安定した動作性能を維持することのできるマイクロプロセッサ及び画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明のマイクロプロセッサは、ウェイト挿入を用いて命令コードの処理時間を延長する手段を有するマイクロプロセッサであって、命令コードの処理時間を延長するウェイトモードの設定値を記憶するレジスタを有し、出荷又は起動時に、動作環境に応じた、前記命令コードに対するウェイトモードの設定値を、前記レジスタへ設定するウェイトモード設定手段と、前記レジスタが記憶するウェイトモードの設定値を取得する、ウェイトモード設定取得手段と、前記ウェイトモード設定取得手段により取得したウェイトモードの設定値に従って、特定の命令コードに対してウェイト挿入するウェイト挿入手段とを有することを特徴とする。
【００１３】
これによって、本発明のマイクロプロセッサは、動作環境に応じた、特定の命令コードに対してウェイト挿入することにより、安定した動作性能を維持することができる。
【００１４】
その結果、上記マイクロプロセッサを備えた画像形成装置においても、同様の効果を奏することができる。
【００１５】
上記目的を達成するため、本発明のマイクロプロセッサは、複数個の命令コードを実行し、該マイクロプロセッサの動作環境に応じた動作検証を行う動作検証手段を有し、前記動作検証手段により、該マイクロプロセッサの動作環境においてウェイト挿入を行う必要がある特定の命令コードを判断することを特徴とする。
【００１６】
これによって、本発明のマイクロプロセッサは、動作環境の変化により、動作性能を維持する上でウェイト挿入を行う必要がある命令コードを検出することができる。
【００１７】
上記目的を達成するため、本発明のマイクロプロセッサは、不揮発性記憶装置を有し、前記動作検証手段による検証結果に基づいて、特定の命令コードに対するウェイトモードの設定値を、前記不揮発性記憶装置に記憶することを特徴とする。
【００１８】
上記目的を達成するため、本発明のマイクロプロセッサは、前記レジスタにおけるデータの入出力を制御する入出力制御回路を有し、前記動作検証手段による検証結果に基づいて、前記入出力制御回路をトリミングし、特定の命令コードに対するウェイトモードの設定値を記憶することを特徴とする。
【００１９】
これによって、本発明のマイクロプロセッサは、工場出荷時の製品検査において、プリント基板のプリントパターンによるクロストークなどの影響により、動作性能を維持する上でウェイト挿入を行う必要がある特定の命令コードが検出された場合、その命令コードのウェイトモードの設定値を初期設定値（工場出荷時の設定値）として記憶させることができる。
【００２０】
上記目的を達成するため、本発明の画像形成装置は、請求項１ないし４の何れか一項に記載のマイクロプロセッサを備えた画像形成装置であることを特徴とする。
【発明の効果】
【００２１】
本発明は、動作環境に応じた、特定の命令コードに対してウェイト挿入することにより、安定した動作性能を維持することのできるマイクロプロセッサ及び画像形成装置を提供することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の好適な実施の形態（以下、「実施形態」と言う。）について、図面を用いて詳細に説明する。
【００２３】
＜マイクロプロセッサ１０の構成例について＞
図１は、本発明の実施形態に係るマイクロプロセッサ１０の構成例を示す図である。
【００２４】
図１において、実施形態に係るマイクロプロセッサ（以下、「MPU」と言う。）１０は、汎用レジスタ１１、シーケンスユニット（SCU：Sequence Unit）１２、演算回路（ALU：Arithmetic and Logic Unit）１３、クロックジェネレータ（CG：Clock Generator）１４、ウェイトモード設定用レジスタ１５、バス１６a〜cを備えている。
【００２５】
汎用レジスタ１１は、一度に扱える情報量は少ないが、極めて高速な記憶素子であり、メモリから、MPU１０が演算処理などを行う際に必要な命令コードやデータなどを読み込み、一時的に記憶する（以下、「フェッチ」と言う）。また、汎用レジスタ１１は、メモリから転送された命令コードを一時的に記憶しておく命令レジスタIR（IR：instruction register）、演算結果などを一時的に記憶しておくデータレジスタDR（DR：data register）として使用される。
【００２６】
シーケンスユニット（以下、「SCU」と言う。）１２は、MPU１０の制御部であり、命令レジスタ（以下、「IR」と言う。）に転送された命令コードを解読（以下、「デコード」と言う。）し、演算指令などの制御信号を送出し、MPU１０を制御する。
【００２７】
演算回路（以下、「ALU」と言う。）１３は、MPU１０の演算部であり、命令実行の段階において、SCU１２からの制御信号により、入力されたデータの算術演算及び論理演算を行う。
【００２８】
クロックジェネレータ（以下、「CG」と言う。）１４は、SCU１２からのクロック制御信号に従いクロックを送出する。サイクル時間の延長を行うためのウェイト挿入は、SCU１２からウェイト挿入したクロック送出（サイクル数の変更）を指示する制御信号が送られてくるため、それに従いウェイト挿入したクロックを各回路へ送出する。
【００２９】
ウェイトモード設定用レジスタ１５は、レジスタが備える複数ビットに、単独の命令コード又は命令グループ（複数の命令コードをグループ化したもの）などの単位で、動作環境に応じた命令コードの処理時間の延長（ウェイト挿入）を行う設定値（以下、「ウェイトモードの設定値」と言う。）を記憶する。また、ウェイトモード設定用レジスタ１５は、MPU１０を備えた装置に電源が投入された際、後述する自己診断プログラムにより、ウェイト挿入が必要な命令コードを検出し、その結果を基に（ウェイト挿入が必要な命令コードである場合）該当する命令コード又は複数の命令グループのウェイトモードの設置値をレジスタのビットに記憶する。
【００３０】
バス１６a〜cは、アドレスバス１６a、データバス１６b及び制御バス（コントロールバス）１６cであり、回路上のデータ伝送路である。
【００３１】
アドレスバス１６aは、メモリ上のプログラムやデータを指定するためのアドレス情報を伝送するためのバス、データバス１６bは、バスに接続されたデバイス同士が必要なデータを伝送するバス、制御バス１６cは、SCU１２を含むMPU１０内の制御部より送出される制御信号を伝送するバスである。
【００３２】
本発明の実施形態に係るMPU１０が、ハードウェア構成として従来のMPU１０と異なる点は、動作環境に応じた、特定の命令コードのウェイトモードの設定値を記憶するウェイトモード設定用レジスタ１５を備えている点である。
【００３３】
＜SIMDプロセッサ２０の構成例について＞
図２は、本発明の実施形態に係るSIMD（Single Instruction/Multiple Data）プロセッサ２０の構成例を示す図である。
【００３４】
本実施形態においてSIMDプロセッサ２０を例としてあげる理由は、SIMDプロセッサ２０は、構造上全てプロセッサエレメント（PE：Processor Element）が動作する場合、本発明で解決したい問題（動作環境に応じたウェイト挿入が必要な状態）が発生しやすい特性をもっているからである。ただし、本発明はMPU１０全般に適用可能なものである。
【００３５】
SIMDプロセッサ２０は、MPU１０において、1つの命令で複数のデータを扱う処理方式を有し、画像処理、暗号化及び復号化などに使用される並列処理プロセッサの1つである。以下に、SIMDプロセッサ２０の主な構成及び処理の流れについて説明する。
【００３６】
SIMDプロセッサ２０は、グローバルプロセッサ（GP：Global Processor）２１、プログラムRAM２２、データRAM２３、バス２４、プロセッサエレメント（以下、「PE」と言う。）２５を備えている。
【００３７】
SIMDプロセッサ２０が備えるグローバルプロセッサ（以下、「GP」と言う。）２１は、プログラムRAM２２上にあった命令コードをデコードし、デコードされた結果から、制御信号を、制御バス２４を介して、対象となる各回路に送出するものである。GP２１から送出される制御信号の先には複数個のPE２５nがある。PE２５nは、演算データを保持する複数個のRレジスタＲｎ、演算回路であるALU２５３、フラグレジスタFLAG（FF：flag register Flag）２５２、アキュムレータACC（ACC：accumulator）２５４で構成されており、外部端子入出力２６から入力されたデータをRレジスタ２５１に保持し、ALU２５３により演算処理を行い、その結果をアキュムレータACC２５４に格納し、Rレジスタ２５１に戻され、外部端子入出力２６nへ出力される。
【００３８】
このように、SIMDプロセッサ２０は、GP２１から複数個のPE２５nへ同一の制御信号が送出され、その指示に従い複数個のPE２５nによって並列演算処理を行う。
【００３９】
ここで、SIMDプロセッサ２０の最大駆動周波数について考えてみると、SIMDプロセッサ２０において、GP２１は、プロセッサ全体から比べると占有面積が少なく、GP２１内全てのブロックを使って命令実行させたとしても、その際の1クロックの消費電力は少ない。一方、プロセッサ全体において、GP２１に比べ複数個のPE２５nの比率が大きいため、命令実行する上でクリティカルな命令（最も時間がかかり複雑な命令）を実行させた場合、複数個のPE２５nを同時に動作させるためには1クロックで多くの消費電力が必要となる。このような多くの消費電力が必要な場合や、プリント基板のプリントパターンによるクロストークや電源供給環境により発生したノイズによる電源電圧のIRドロップなど（プロセッサの動作環境による影響）、SIMDプロセッサ２０は、クリティカルな命令が1クロックで実行不可能な場合があり、その結果、全体の命令のうちわずかな比率しかない実行不可能なクリティカルな命令のために、駆動周波数を下げざるを得ない。以下に、駆動周波数を下げざるを得ない状態について、図３の本発明の実施形態に係るSIMDプロセッサ２０（CMOS（Complementary Metal Oxide Semiconductor）で構成されている場合）における連続したクリティカルな命令を実行した際のクロックと電源電圧（VCC）との関係を示す図を用いて説明する。
【００４０】
SIMDプロセッサ２０がCMOSで構成される場合、その性質上、ゲートが"0"から"1"、"1"から"0"と変化したときに電流を消費し、扱うデータによっては全て同時に変化する場合があり、図３に示すように、その消費電力の急激な変化によって電源電圧が不安定な状態となり、1クロック内で安定した状態へ回復するのが難しく、クロックが進む毎に電圧が低下し、このような電源電圧が不安定な状態でSIMDプロセッサ２０を動作させることになる。このように、多くの電力を消費するクリティカルな命令が連続した場合、駆動周波数が低下する。このような、駆動周波数を低下させるクリティカルな命令を、製品出荷時に命令コードの全ての組み合わせに対して検査することは難しく、劣悪な動作環境下では誤作動を招く恐れがある。
【００４１】
よって、SIMDプロセッサ２０において、予測し得ない動作環境においても安定した動作性能を維持する必要がある。
【００４２】
本発明は、上記のような問題を鑑みて、動作環境に応じた、特定の命令コードに対してウェイト挿入することにより、安定した動作性能を維持することのできるMPU１０を実現するものである。
【００４３】
＜MPU１０の動作例について＞
図４は、本発明の実施形態に係るMPU１０の動作の流れを示す図である。
【００４４】
MPU１０の基本機能は、命令コードの読み出し（F：命令フェッチ）、命令コードのデコード（D：命令デコード）、算術及び論理演算の実行（E：演算実行）、実行結果の書き込み（W：結果格納）であり、命令コードの読み出し、デコード及び実行の順の流れで処理が行われている。
【００４５】
まず、命令フェッチ（F）では、メモリ上から実行する命令コードの読み出しを行うため、命令コードのアドレスが一時的に記憶されているプログラムカウンタ（PC：Program Counter）４１から、アドレスバス１６aを介してメモリへアドレス信号が送られる。その結果、命令キャッシュ４２を介してIR４３へ命令コードがフェッチされる。
【００４６】
次に、命令デコード（D）では、フェッチされた命令コードは、SCU１２によってデコードされ、その結果に応じた制御信号が制御バス１６cを介してCG１４へ送られ、CG１４は、制御信号に従ったクロックを各回路に送出する。この時、ウェイトモード設定用レジスタ１５に記憶されている、動作環境においてウェイト挿入を行う命令コード又は命令グループのウェイトモードの設定値に基づいて、SCU１２からウェイト挿入したクロック送出（サイクル数の変更）を指示する制御信号（ウェイト信号）がCG１４に送られ、CG１４によって各回路にクロックが送出される。
【００４７】
このように、SCU１２において、ウェイトモード設定用レジスタ１５に記憶されている、動作環境においてウェイト挿入を行う命令コード又は命令グループのウェイトモードの設定値に基づいて、動作環境に応じた特定の命令コードのみウェイト挿入したクロック送出（サイクル数の変更）を指示する制御信号（ウェイト信号）がCG１４に送出するようにデコーダを構成している。
【００４８】
その後、演算実行（E）では、データバス１６bを介してDR１１に記憶された演算データをALU１３により演算実行し、結果格納（W）では、その結果をアキュムレータACC２５４へ格納する。
【００４９】
そして、プログラムカウンタ４１（以下、「PC」と言う。）を1つ進め、命令フェッチ（F）、命令デコード（D）、演算実行（E）、結果格納（W）の順番に繰り返す。
【００５０】
＜MPU１０における主な機能構成について＞
図５は、本発明の実施形態に係るMPU１０における主な機能部の構成例を示すブロック図である。
【００５１】
図５に示すように、本実施形態のMPU１０における主な機能構成は、ウェイトモード設定手段３１、ウェイトモード設定取得手段３２及びウェイト挿入手段３３とから構成されている。
【００５２】
ウェイトモード設定手段３１は、MPU１０を備えた装置に電源が投入された際、自己診断プログラムにより、電源投入時の動作環境においてウェイト挿入を行う必要がある命令コードを検出し、その結果に基づいたウェイトモードの設定値を、ウェイトモード設定用レジスタ１５へ設定する。ウェイトモード設定用レジスタ１５は、予め、命令コード、命令（オペレーション部）とアドレス（オペランド部）の組み合わせ、又は、これらの組み合わせをグループ化したものなどに分類されたウェイト挿入を行う対象それぞれに対して、レジスタの1ビットが割り当てられ（対応付けられ）、その1ビットに、ウェイトモード情報が記憶される。
【００５３】
また、ウェイトモード設定用レジスタ１５に対して、リセット命令が実行された場合のウェイトモードの初期設定値は、製品出荷時のウェイトモードの設定値が設定されている。製品出荷時のウェイトモードの設定値は、製品出荷を行う際の検査段階において、製品の動作環境を考慮したMPU１０の動作検証を実施し、その結果を基にウェイトモードの設定値を設定しておく。設定方法の例として、不揮発性の記憶装置NVRAM（Non-Volatile Random Access Memory）などに記憶させる方法や、ウェイトモード設定用レジスタ１５の入出力回路に対してレーザトリミング（回路パターンの一部をレーザーによって切断する）を行う方法などがある。
【００５４】
ウェイトモード設定手段３１において述べた自己診断プログラム（動作検証手段）は、電源投入時における動作環境に応じたMPU１０の動作検証を行うための各命令コードが記述されたプログラムで、自己診断プログラムを、MPU１０において実行し、期待値と結果値を比較することで動作検証を行い、現在の動作環境において、MPU１０が動作仕様に従い正常に動作しているか（最大駆動周波数において命令を処理できているか）否かを判断するものである。よって、自己診断プログラムを実行することで、現在の動作環境において、製品の動作性能を維持する上でウェイト挿入を行う必要がある命令コードを検出することができ、ウェイトモード設定手段３１により、検出された特定の命令コードに対して、ウェイトモード設定用レジスタ１５へ、ウェイトモードの設定値を設定することができる。また、MPU１０において、自己診断プログラムを実行する際には、正常時の最大駆動周波数に対してマージンをとった駆動周波数により実行する。
【００５５】
ウェイトモード設定取得手段３２は、ウェイトモード設定用レジスタ１５から、ウェイトモード設定手段３１により設定されたウェイトモードの設定値を取得する。取得したウェイトモードの設定値は、実行される命令コードが、現在の動作環境に応じたウェイト挿入を行う対象であるか否かの判断に用いられる。また、ウェイトモード設定取得手段３２の中で行われる、実行される命令コードがウェイト挿入の対象か否かの判断は、SCU１２のデコード時に行われる。
【００５６】
ウェイト挿入手段３３は、ウェイトモード設定取得手段３２により、取得したウェイトモードの設定値に基づき、実行される命令コードが、現在の動作環境に応じたウェイト挿入を行う対象であるかを判断し、ウェイト挿入の対象と判断された場合に、ウェイト挿入したクロック送出（サイクル数を変更）を指示する制御信号を、制御バス１６cを介してCG１４へ送る。また、命令コードがウェイト挿入の対象であるか否かについて判断する方法は、命令コード、命令（オペレーション部）とアドレス（オペランド部）の組み合わせ、又は、これらの組み合わせをグループ化したものなどに分類されたウェイト挿入を行う対象それぞれに対して、ウェイトモード設定用レジスタ１５の各ビットが割り当てられて（対応付けられて）いるため、判定中の命令コードに対応付けられたビットに設定されたウェイトモードの設定値を参照することで判断することができる。
【００５７】
このように、本発明では、MPU１０を備えた装置に電源が投入された際、自己診断プログラム（動作検証手段）により、動作環境に応じたMPU１０の動作性能が検証され、自己診断プログラムが検出したウェイト挿入を行う必要がある命令コードに対応したウェイトモードの設定値が、ウェイトモード設定手段３１により、ウェイトモード設定用レジスタ１５に設定される。次に、MPU１０が動作中に実行される命令コードがSCU１２においてデコードされる際、ウェイトモード設定取得手段３２により、ウェイトモード設定用レジスタ１５に設定されたウェイトモードの設定値を取得し、ウェイト挿入手段３３により、取得したウェイトモードの設定値に基づいて、実行される命令コードがウェイト挿入の対象であるかを判断し、ウェイト挿入を行う必要がある命令コードであれば、ウェイト挿入したクロック送出（サイクル数の変更）を指示する制御信号を、制御バス１６cを介してCG１４へ送り、CG１４から各回路へクロックが送出される。
【００５８】
＜MPU１０における動作環境に応じたウェイト挿入の処理手順について＞
図６は、本発明の実施形態に係るMPU１０におけるウェイトモードを設定する処理手順の一例を示すフローチャートである。
【００５９】
図６は、自己診断プログラムによる動作検証中に、ウェイトモードの設定値を、ウェイトモード設定手段３１により、ウェイトモード設定用レジスタ１５へ設定する処理手順の一例を示すものである。
【００６０】
まず、MPU１０を備えた装置に電源が投入される（Ｓ１０１）。
【００６１】
次に、MPU１０は、自己診断プログラムをメモリ上へ読み出し（Ｓ１０２）、読み出した自己診断プログラムの実行を開始する（Ｓ１０３）。
【００６２】
次に、現在の動作環境において、各命令コードを順次実行し、動作検証を行う（Ｓ１０４）。
【００６３】
次に、実行中の命令コードが、期待値と結果値を比較しMPU１０の動作検証を行った結果に基づいて、ウェイト挿入が必要な命令コードを判定する（Ｓ１０５）。
【００６４】
実行中の命令コードがウェイト挿入の対象と判断された場合（Ｓ１０５がYESの場合）、ウェイトモード情報設定手段３１により、ウェイト挿入の対象となる命令コードに割り当てられた（対応付けられた）ウェイトモード設定用レジスタ１５の所定のビットに対して、ウェイトモードの設定値を設定し（例えば、「ウェイト挿入するは"1"」を設定するなど。）、命令コードに対応したウェイトモードの設定値を設定する（1ビットのデータをレジスタに設定値を設定）（Ｓ１０６）。この時、ウェイトモード設定用レジスタ１５に設定されている製品出荷時の初期設定は、自己診断プログラムによる命令コード検証後、ウェイトモード設定手段３１により、最新の動作環境に応じたウェイトモードの設定値へ更新される。
【００６５】
また、実行中の命令コードがウェイト挿入の対象でないと判断された場合（Ｓ１０５がNOの場合）、ウェイトモード設定用レジスタ１５には、製品出荷時の初期設定値であるウェイトモードの設定値が設定された状態となる。
【００６６】
次に、命令コードの動作検証が終了したかを判定する（Ｓ１０７）。
【００６７】
自己診断プログラムによる命令コードの動作検証が終了した場合（Ｓ１０７がYESの場合）、自己診断プログラムを終了する。
【００６８】
また、自己診断プログラムによる動作検証が行われていない命令コードがある場合（Ｓ１０７がNOの場合）、自己診断プログラムによる命令コードの動作検証が終了するまで、各項目の動作検証を継続して行う。
【００６９】
このように、ウェイトモード設定用レジスタ１５には、MPU１０が搭載された装置に電源が投入された際に、自己診断プログラムによって、ウェイト挿入が必要な命令コードが検出され、その結果を基づいて、ウェイトモード設定手段３１により、最新の動作環境に応じたウェイトモードの設定値が設定される。
【００７０】
図７は、本発明の実施形態に係るMPU１０におけるウェイト挿入されたクロックを送出する処理手順の一例を示すフローチャートである。
【００７１】
図７は、図５で示したウェイトモード設定手段３１により設定されたウェイトモードの設定値が、ウェイトモード設定取得手段３２により取得され、ウェイト挿入を行う命令コードが実行された際に、取得したウェイトモードの設定値に基づいて、ウェイト挿入手段３３によりウェイト挿入したクロックを各回路に送出する処理手順の一例を示すものである。
【００７２】
まず、MPU１０は、実行しようとしている命令コードのアドレスを記憶したPC４１から、アドレスバス１６aを介して、命令キャッシュ４２へアドレス信号を送る（Ｓ２０１）。
【００７３】
次に、命令キャッシュ４２から、制御バス１６cを介して、命令レジスタIR１１に制御信号が送られ、メモリから命令コードを命令レジスタIRへフェッチする（Ｓ２０２）。
【００７４】
次に、命令レジスタIR１１から、制御バス１６cを介して、SCU１２へ制御信号が送られ、SCU１２は、命令レジスタIR１１の命令コードをデコードする（Ｓ２０３）。
【００７５】
次に、ウェイトモード設定取得手段３２により、ウェイトモード設定用レジスタ１５に設定されたウェイトモードの設定値を取得する（Ｓ２０４）。
【００７６】
次に、ウェイト挿入手段３３により、ウェイトモード設定取得手段３２により取得したウェイトモードの設定値に基づき、実行される命令コードがウェイト挿入の対象であるかを判定する（Ｓ２０５）。
【００７７】
実行される命令コードがウェイト挿入の対象である場合（Ｓ２０５がYESの場合）、ウェイト挿入手段３３は、ウェイト挿入したクロック送出を指示（サイクル数を変更する）する制御信号を、制御バス１６cを介して、クロックを各回路に送出するCG１４へ送る（Ｓ２０６）。
【００７８】
また、実行される命令コードがウェイト挿入の対象でない場合（Ｓ２０５がNOの場合）、ウェイト挿入手段３３は、最大駆動周波数のクロック送出を指示する制御信号を、制御バス１６cを介して、クロックを各回路に送出するCG１４へ送る（Ｓ２０７）。
【００７９】
最後に、ウェイト挿入手段３３によりクロック送出を指示する制御信号に従い、CG１４から各回路へクロックを送出する（Ｓ２０８）。
【００８０】
このように、MPU１０が動作中に実行される命令コードがデコードされる際、ウェイトモード設定取得手段３２により、ウェイトモード設定用レジスタ１５に設定されたウェイトモードの設定値を取得し、ウェイト挿入手段３３により、取得したウェイトモードの設定値に基づいて、実行される命令コードがウェイト挿入の対象であるかを判断し、ウェイト挿入の対象であれば、ウェイト挿入したクロック送出を指示する制御信号が、制御バス１６cを介してCG１４へ送られ、CG１４から各回路へクロックが送出される。
【００８１】
このように、本発明の実施形態に係るMPU１０は、動作環境に応じた、ウェイト挿入を必要とする命令コード（動作性能に影響を及ぼす命令コード）を特定し、ウェイトを挿入したクロックを送出するため、予測し得ない動作環境においても安定した動作性能を維持することができる。
【００８２】
＜MPU１０におけるパイプライン処理の例について＞
図８〜１０は、本発明の実施形態に係るMPU１０におけるパイプライン処理の一例を示す図である。
【００８３】
図８は、MPU１０が最大駆動周波数で動作した場合のパイプライン処理（その１）を示している。それに対し、図９は、MPU１０が動作環境によってウェイト挿入され最大駆動周波数が変更された場合のパイプライン処理（その２）を示している。
【００８４】
図８と図９を比較すると、図８の最大駆動周波数fmax1より図９の最大駆動周波数fmax2の方が低く（1クロックのサイクル時間が長い）、ウェイト挿入された状態で全ての命令が動作していることから、MPU１０の処理性能が低下していることが分かる。
【００８５】
それに対し、図１０は、動作環境に応じたウェイト挿入を行う必要がある命令コードに対し、ウェイト挿入した場合のパイプライン処理（その３）を示しており、図９と図１０が異なる点は、図９の場合、MPU１０の全ての命令においてウェイト挿入され、最大駆動周波数がfmax2の状態であるのに対し、図１０の場合、ウェイト挿入が必要な特定の命令コードのみウェイト挿入された駆動周波数fmax2の状態となっており、その他の命令コード（ウェイト挿入が必要ない命令コード）に関しては、最大駆動周波数fmax1の状態で動作している点である。
【００８６】
このように、本発明の実施形態に係るMPU１０は、CG１４からのウェイト挿入したクロック送出を、動作環境に応じた、ウェイト挿入が必要な特定の命令コードに限定することで、ウェイト挿入による最大駆動周波数の低下を最低限の範囲に止めるとともに、予測し得ない動作環境において安定した動作性能を維持することができる。
【００８７】
＜まとめ＞
以上のように、本発明の実施形態によれば、MPU１０は、MPU１０を備えた装置に電源が投入された際、自己診断プログラム（動作検証手段）が実行され、ウェイトモード設定手段３１により、自己診断プログラムにより検出されたウェイト挿入を行う命令コードに対応したウェイトモードの設定値が、ウェイトモード設定用レジスタ１５に設定され、現在の動作環境において、安定した動作性能を維持する上でウェイト挿入を行う命令コードを特定する。これによって、MPU１０は、実行される命令コードがSCU１２においてデコードされる際に、ウェイトモード設定取得手段３２により、ウェイト挿入を行う命令コードのウェイトモードの設定値を取得し、ウェイト挿入手段３３により、取得したウェイトモードの設定値に基づいて、実行される命令コードがウェイト挿入の対象であるかを判断し、ウェイト挿入の対象であれば、ウェイト挿入したクロック送出（サイクル数の変更）を指示する制御信号を、制御バス１６cを介してCG１４へ送り、CG１４から各回路へクロックが送出される。
【００８８】
よって、本発明の実施形態に係るMPU１０は、ウェイト挿入における最大駆動周波数の低下を限定した命令の動作範囲に止め、予測し得ない動作環境においても安定した動作性能を維持することができる。
【００８９】
その結果、上記MPU１０を備えた画像形成装置においても、同様の効果を奏することができる。
【００９０】
最後に、上記実施形態に基づき本発明の説明を行ってきたが、上記実施形態に挙げた形状に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。
【００９１】
これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態に係るマイクロプロセッサの構成例を示す図である。
【図２】本発明の実施形態に係るSIMDプロセッサの構成例を示す図である。
【図３】本発明の実施形態に係るSIMDプロセッサ（CMOSで構成されている場合）における連続したクリティカルな命令を実行した際のクロックと電源電圧（VCC）との関係を示す図である。
【図４】本発明の実施形態に係るマイクロプロセッサの動作の流れを示す図である。
【図５】本発明の実施形態に係るマイクロプロセッサにおける主な機能部の構成例を示すブロック図である。
【図６】本発明の実施形態に係るマイクロプロセッサにおけるウェイトモードを設定する処理手順の一例を示すフローチャートである。
【図７】本発明の実施形態に係るマイクロプロセッサにおけるウェイト挿入されたクロックを送出する処理手順の一例を示すフローチャートである。
【図８】本発明の実施形態に係るマイクロプロセッサにおけるパイプライン処理（その１：最大駆動周波数の場合）の一例を示す図である。
【図９】本発明の実施形態に係るマイクロプロセッサにおけるパイプライン処理（その２：動作環境によって最大駆動周波数が変更された場合）の一例を示す図である。
【図１０】本発明の実施形態に係るマイクロプロセッサにおけるパイプライン処理（その３：動作環境に応じた特定の命令実行時のみウェイト挿入を行った場合）の一例を示す図である。
【符号の説明】
【００９３】
１０  マイクロプロセッサ（MPU）
１１  汎用レジスタ
１２  シーケンスユニット（SCU）
１３  演算回路（ALU）
１４  クロックジェネレータ（CG）
１５  ウェイトモード設定用レジスタ
１６a、１６b、１６c  バス
３１  ウェイトモード設定手段
３２  ウェイトモード設定取得手段
３３  ウェイト挿入手段
【図１】
2008071084.tif 000003
【図２】
2008071084.tif 000004
【図３】
2008071084.tif 000005
【図４】
2008071084.tif 000006
【図５】
2008071084.tif 000007
【図６】
2008071084.tif 000008
【図７】
2008071084.tif 000009
【図８】
2008071084.tif 000010
【図９】
2008071084.tif 000011
【図１０】
2008071084.tif 000012