(57)【要約】【課題】ハーバードアーキテクチャを有するＣＰＵを用いて構成されたマイクロコンピュータにおいて、命令側バスに接続されるバスコントローラ等の回路から出力されるウエイト要求により、ＣＰＵの処理能力が低下することを簡易な方法で防止する。【解決手段】バスコントローラとコプロセッサとがいずれもウエイト要求を発生させ（ＷＣ＝１，ＷＤ＝１）、バスコントローラからのウエイト要求が先に解除（ＷＣ＝０）された場合（時刻ｔ６〜ｔ７）、その後、コプロセッサからのウエイト要求も解除（ＷＤ＝０）されるまでの間は、バスコントローラの内部状態を、ウエイト要求ＷＣの生成を行うことができない「ＣＹＣＷ」状態に遷移させる。【選択図】　　図３
2004110256.tif 000002
【特許請求の範囲】
【請求項１】
ハーバードアーキテクチャにて構成され、外部からのウエイト要求に従ってパイプライン処理のステージを延長する中央処理ユニットと、
該中央処理ユニットの命令側バスに接続され、前記中央処理ユニットからのアクセス要求があるとアクセス対象に対するデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成するバスコントローラと、
を備えたマイクロコンピュータのウエイト制御方法であって、
前記中央処理ユニットのパイプライン処理が、前記バスコントローラからのウエイト要求の解除後も解除前と同じステージを継続する場合、該パイプライン処理が次ステージに移行するまでの間、前記バスコントローラによるウエイト要求の生成を禁止することを特徴とするウエイト制御方法。
【請求項２】
ハーバードアーキテクチャにて構成され、外部からのウエイト要求に従ってパイプライン処理のステージを延長する中央処理ユニットと、
該中央処理ユニットの命令側バスに接続され、前記中央処理ユニットからのアクセス要求があるとアクセス対象に対するデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成するバスコントローラと、
前記中央処理ユニットのデータ側バスに接続され、前記中央処理ユニットからのアクセス要求があるとデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成する周辺回路と、
を備えたマイクロコンピュータにおいて、
前記バスコントローラは、
前記中央処理ユニットに対するウエイト要求を解除したときに、前記周辺回路からのウエイト要求が継続中であれば、該周辺回路からのウエイト要求が解除されるまでの間、前記中央処理ユニットに対するウエイト要求の生成を禁止することを特徴とするマイクロコンピュータ。
【請求項３】
ハーバードアーキテクチャにて構成され、外部からのウエイト要求に従ってパイプライン処理のステージを延長する中央処理ユニットと、
該中央処理ユニットの命令側バスに接続され、前記中央処理ユニットからのアクセス要求があるとアクセス対象に対するデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成するバスコントローラと、
前記中央処理ユニットのデータ側バスに接続され、前記中央処理ユニットからのアクセス要求があるとデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成する周辺回路と、
を備えたマイクロコンピュータにおいて、
前記中央処理ユニットは、
前記周辺回路からのウエイト要求の継続中に、前記バスコントローラからのウエイト要求が解除されると、前記周辺回路からのウエイト要求が解除されるまでの間、前記バスコントローラに対するアクセス要求を解除することを特徴とするマイクロコンピュータ。
【請求項４】
ハーバードアーキテクチャにて構成され、ウエイト要求に従ってパイプライン処理のステージを延長する中央処理ユニットの命令側バスに接続されるバスコントローラであって、
前記中央処理ユニットからのアクセス要求があるとアクセス対象に対するデータの入出力が可能となるまでの間、前記中央処理ユニットに対するウエイト要求を生成するウエイト要求生成手段と、
該ウエイト要求生成手段が前記ウエイト要求を解除したときに、前記中央処理ユニットのデータ側バスに接続された周辺回路からのウエイト要求が継続中であれば、該周辺回路からのウエイト要求が解除されるまでの間、前記ウエイト要求生成手段によるウエイト要求の生成を禁止する禁止手段と、
を備えることを特徴とするバスコントローラ。
【請求項５】
前記ウエイト要求生成手段は、
前記アクセス対象毎に、必要なウエイト要求の継続サイクル数を対応付けた対応情報を記憶する記憶手段と、
前記ウエイト要求の生成時に、該ウエイト要求の継続サイクル数をカウントするカウント手段と、
を備え、前記記憶手段に記憶された対応情報から設定される継続サイクル数の設定値と、前記カウント手段にてカウントされる継続サイクル数のカウント値とを比較することで、前記ウエイト要求の解除タイミングを得ることを特徴とする請求項４記載のバスコントローラ。
【請求項６】
ハーバードアーキテクチャにて構成され、命令側バスに接続されるバスコントローラ又はデータ側バスに接続される周辺回路のうち少なくとも一方からのウエイト要求があるとパイプライン処理のステージを延長する中央処理ユニットにおいて、
前記周辺回路からのウエイト要求の継続中に、前記バスコントローラからのウエイト要求が解除されると、前記周辺回路からのウエイト要求が解除されるまでの間、前記バスコントローラに対するアクセス要求を解除するアクセス要求解除手段を備えることを特徴とする中央処理ユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハーバードアーキテクチャを有し、パイプライン処理を実行するマイクロコンピュータのウエイト制御方法、そのマイクロコンピュータ、及びマイクロコンピュータを構成するバスコントローラ、中央処理ユニットに関する。
【０００２】
【従来の技術】
従来より、中央処理ユニット（ＣＰＵ）として、メモリから命令を読み込んで実行するための処理動作を、複数種類の機能ブロックで行われる動作ステージに分割し、各ステージの処理を並列に実行することにより、複数の命令の処理を重複したタイミングで実行する、いわゆるパイプライン処理を行うものが知られている（例えば、非特許文献１）。
【０００３】
ここで、図７（ａ）は、実行すべき各命令を、五つのステージからなる命令処理サイクルにて表わし、これら命令処理サイクルを５段パイプライン処理にて実行する場合のタイミング図である。
但し、各命令処理サイクルは、命令を読み込むＩＦ（フェッチ）ステージと、ＩＦステージで読み込んだ命令を解読するＤＥＣ（デコード）ステージと、ＤＥＣステージで解読された命令の内容に応じて、算術，論理等の演算を行ったり、メモリへアクセスする際のアドレス等を計算するＥＸＥ（実行）ステージと、ＥＸステージで計算したアドレスに対してアクセスを行うＭＡ（メモリアクセス）ステージと、ＤＥＣステージで解読された命令の内容に応じて、演算データを内部レジスタに書き込むＷＢ（ライトバック）ステージとからなり、一つの命令処理の実行は、ＩＦステージ，ＤＥＣステージ，ＭＡステージ，ＷＢステージの一連の処理により実現される。
【０００４】
そして、ＣＰＵは、五つの命令処理サイクルを、それぞれ１ステージずつずれたタイミングで並列に実行することにより、見かけ上１サイクルで一つの命令を実行するように構成されている。
また、パイプライン処理に加え、フェッチとメモリアクセスの動作を同時に行う場合に、バスが一本しかないために競合が起こることを防止するため、接続されるバスとして、フェッチを行うための命令側バス、メモリアクセスを行うためのデータ側バスの２本を設ける、ハーバードアーキテクチャを採用したＣＰＵが知られている。
【０００５】
ところで、マイクロコンピュータシステムにおいて使用されるメモリや周辺回路の中には、速度が遅く、ＣＰＵの１クロックサイクルの間では、データの入出力を行うことのできないものや、入出力部のビット幅がＣＰＵのビット幅と異なるために、アクセスを何回か繰り返さなければならないものが存在する。
【０００６】
上記のようなメモリや周辺回路へＣＰＵがアクセスする場合、ＣＰＵとの間にウエイトコントローラやバスコントローラと呼ばれるユニットを設けて、ＣＰＵに対してアクセス対象が入出力可能となるまでの期間ウエイトをかけ、フェッチやメモリアクセスが複数サイクルで行われるようにするのが一般的である。
【０００７】
例えば、命令Ｃｎ＋３　を格納した命令格納用メモリにアクセスした時に、データの読み出しが可能となるまでに２サイクルが必要な場合を考える。この場合、図７（ｂ）に示すように、命令Ｃｎ＋３　に対する命令処理サイクルのＩＦステージ（サイクルＣＹｍ）で、ＣＰＵが命令格納用メモリに対するアクセス要求を発生させると、これに対して、バスコントローラはウエイト要求を発生させる。このウエイト要求によりＣＰＵは、次のサイクルＣＹｍ＋１　で同じステージを保持する。そして、同サイクルＣＹｍ＋１　でバスコントローラがウエイト要求を解除すると、ＣＰＵは、次のサイクルＣＹｍ＋２　で、処理を次ステージに移行させる。
【０００８】
【非特許文献１】
株式会社超Ｌメディア技術ドキュメントグループ編，「日立ＳｕｐｅｒＨ　ＲＩＳＣ　ｅｎｇｉｎ　ＳＨ１／ＳＨ２／ＳＨ−ＤＳＰプログラミングマニュアル」第６版，株式会社日立製作所，平成１１年５月，ｐ３６９
【０００９】
【発明が解決しようとする課題】
命令側バス１０３と、命令の実行に必要なデータの入出力を行うためのデータ側バスからなる２系統のバスを備え、内部でパイプライン処理を実行するＣＰＵ１１０を用いた図８に示すマイクロコンピュータ１０１では、ＩＦステージでの命令側バス１０３を介したメモリアクセスと、ＭＡステージでのデータ側バス１０５を介したメモリや周辺回路（以下単に「周辺回路」という）へのアクセスとを同時に行うことができる。
【００１０】
このため、命令側バス１０３にバスコントローラ１２０を接続し、データ側バスにコプロセッサ等のウエイト要求を発生させる可能性のある別の周辺回路１３０を接続した場合、マイクロコンピュータ１０１では、命令側バス１０３のバスコントローラ１２０と、データ側バス１０５の周辺回路１３０とが同時にＣＰＵ１１０に対してウエイト要求ＷＣ，ＷＤを発生させる場合がある。
【００１１】
この場合、ＣＰＵ１１０は、両ウエイト要求ＷＣ，ＷＤのいずれか一方でも継続している場合は、次のステージの処理に移行せず、ステージの状態を保持し続ける。
ステージの状態が保持されている間、バスコントローラ１２０や周辺回路１３０に対するアクセス要求ＳＣ，ＳＤも保持し、しかも、周辺回路１３０からのウエイト要求ＷＤの継続サイクル数がバスコントローラ１２０からのウエイト要求ＷＣの継続サイクル数より大きい場合を考える。
【００１２】
図９に示すように、サイクルＣＹ１にて両ウエイト要求ＷＣ，ＷＤが発生し、サイクルＣＹ４にてバスコントローラ１２０からのウエイト要求ＷＣが解除されると、次のサイクルＣＹ５では、ＣＰＵ１１０では周辺回路１３０からのウエイト要求ＷＤによりウエイト状態が継続される。
【００１３】
このとき、周辺回路１３０に対するアクセス要求ＳＤとバスコントローラ１２０に対するアクセス要求ＳＣの状態は保持されるため、バスコントローラ１２０は、アクセス要求ＳＣに従って、先に発生させたものと同じ継続サイクル数を有するウエイト要求ＷＣを再び発生させてしまう。
【００１４】
この結果、ＣＰＵ１１０では、サイクルＣＹ５にて周辺回路１３０からのウエイト要求ＷＤが解除された後も、再発生したバスコントローラ１２０からのウエイト要求ＷＣによって、ウエイト状態がサイクルＣＹ８まで継続され、必要以上（図の例では、必要数５サイクルが８サイクル）にステージ動作が延長されることになり、ＣＰＵ１１０の処理能力を低下させてしまうという問題があった。
【００１５】
本発明は、上記問題点を解決するために、ハーバードアーキテクチャを有するＣＰＵを用いて構成されたマイクロコンピュータにおいて、命令側バスに接続されるバスコントローラ等の回路から出力されるウエイト要求により、ＣＰＵの処理能力が低下することを簡易な方法で防止することを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するための発明である請求項１記載のウエイト制御方法では、ハーバードアーキテクチャにて構成された中央処理ユニットのパイプライン処理が、命令側バスに接続されたバスコントローラからのウエイト要求の解除後も、その解除前と同じステージを継続している場合、そのパイプライン処理が次ステージに移行するまでの間、バスコントローラによるウエイト要求の生成を禁止する。
【００１７】
従って、本発明のウエイト制御方法によれば、一度解除されたウエイト要求が、同一ステージの継続中に再び生成されてしまうことがなく、不必要なウエイト要求によって、中央処理ユニットの処理能力が低下してしまうことを確実に防止できる。
【００１８】
なお、命令側バスとは、主として命令フェッチ時に使用されるバスであり、後述するデータ側バスとは、主として命令の実行に必要なデータの入出力に使用されるバスのことである。
次に、請求項２記載のマイクロコンピュータでは、ハーバードアーキテクチャにて構成された中央処理ユニットの命令側バスに接続されるバスコントローラが、中央処理ユニットに対するウエイト要求を解除したときに、データ側バスに接続された周辺回路からのウエイト要求が継続中であれば、該周辺回路からのウエイト要求が解除されるまでの間、中央処理ユニットに対するウエイト要求の生成を禁止する。
【００１９】
つまり、本発明のマイクロコンピュータは、請求項１記載のウエイト制御方法を実現するものであり、従って、請求項１記載の方法を実行した場合と同様の効果を得ることができる。
なお、本発明では、周辺回路からのウエイト要求に基づいて、バスコントローラが、ウエイト要求の生成を禁止するように構成されているため、中央処理ユニットには何ら変更を加える必要がなく、既製の中央処理ユニットをそのまま使用することができる。
【００２０】
また、請求項３記載のマイクロコンピュータでは、ハーバードアーキテクチャにて構成された中央処理ユニットが、データ側バスに接続された周辺回路からのウエイト要求の継続中に、命令側バスに接続されたバスコントローラからのウエイト要求が解除されると、周辺回路からのウエイト要求が解除されるまでの間、同一ステージの継続中にも関わらず、バスコントローラに対するアクセス要求を解除することで、バスコントローラによるウエイト要求の生成を禁止する。
【００２１】
つまり、本発明のマイクロコンピュータは、請求項１記載のウエイト制御方法を実現するものであり、従って、請求項１記載の方法を実行した場合と同様の効果を得ることができる。
なお、本発明では、中央処理ユニットが、バスコントローラに対するアクセス要求を解除することで、バスコントローラでのウエイト要求の生成を間接的に禁止するように構成されているため、バスコントローラには何ら変更を加える必要がなく、既製のバスコントローラをそのまま使用することができる。
【００２２】
次に、請求項４記載のバスコントローラでは、ウエイト要求生成手段が、中央処理ユニットからのアクセス要求があるとアクセス対象に対するデータの入出力が可能となるまでの間、中央処理ユニットに対するウエイト要求を生成する。そして、このウエイト要求生成手段がウエイト要求を解除したときに、中央処理ユニットのデータ側バスに接続された周辺回路からのウエイト要求が継続中であれば、禁止手段が、周辺回路からのウエイト要求が解除されるまでの間、ウエイト要求生成手段によるウエイト要求の生成を禁止する。
【００２３】
つまり、本発明のバスコントローラは、請求項２記載のマイクロコンピュータ構成するバスコントローラとして好適に用いることができる。
なお、禁止手段は、中央処理ユニットからのアクセス要求を無効にするように構成してもよいし、ウエイト要求生成手段の動作自体を禁止するように構成してもよい。
【００２４】
また、ウエイト要求生成手段は、例えば請求項５記載のように、アクセス対象毎に必要なウエイト要求の継続サイクル数を対応付けた対応情報を記憶手段に記憶させ、この記憶手段に記憶された対応情報から設定される継続サイクル数の設定値と、ウエイト要求の生成時にそのウエイト要求の継続サイクル数をカウントするカウント手段でのカウント値とを比較することで、ウエイト要求の解除タイミングを得るように構成してもよい。
【００２５】
次に、請求項６記載の中央処理ユニットでは、アクセス要求解除手段が、データ側バスに接続された周辺回路からのウエイト要求の継続中に、命令側バスに接続されたバスコントローラからのウエイト要求が解除されると、周辺回路からのウエイト要求が解除されるまでの間、バスコントローラに対するアクセス要求を解除する。
【００２６】
つまり、本発明の中央処理ユニットは、請求項３記載のマイクロコンピュータ構成する中央処理ユニットとして好適に用いることができる。
【００２７】
【発明の実施の形態】
以下に本発明の実施形態を図面と共に説明する。
［第１実施形態］
図１は、本発明が適用された第１実施形態のマイクロコンピュータ（以下「マイコン」という。）の概略構成を表わすブロック図である。
【００２８】
図１に示すように、本実施形態のマイコン１は、命令側バス３及びデータ側バス５からなる２系統のバスを有する、いわゆるハーバードアーキテクチャにて構成されたＲＩＳＣ型の中央処理ユニット（ＣＰＵ）１０を備えている。そして、命令側バス３には、周辺バス７を制御するバスコントローラ２０が接続され、データ側バス５には、ＣＰＵ３での処理に必要な各種データを一時的に記憶するための作業用メモリ（図示せず）や、浮動小数点演算等を行うコプロセッサ３０が接続されている。
【００２９】
また、バスコントローラ２０が制御する周辺バス７には、１クロックでのアクセスが不可能なメモリや周辺回路（以下「命令側メモリ等」という。）が接続され、これら命令側メモリ等の一つとして、少なくともＣＰＵ１０が実行する命令を格納した命令格納用メモリ（図示せず）が接続されている。
【００３０】
このうち、コプロセッサ３０は、ＣＰＵ１０からのアクセス（読出／書込）要求ＳＤがあると、所定の演算を実行すると共に、その演算結果の読み出しが可能となるまでの間（本実施形態ではＣＰＵ１０の動作クロックの５サイクル分）、ＣＰＵ１０に対してウエイト要求ＷＤを出力するように構成されている。なお、ウエイト要求ＷＤは、バスコントローラ２０にも通知されるように構成されている。
【００３１】
一方、バスコントローラ２０は、周辺バス７に接続された命令側メモリ等のアドレスと、そのアドレスにて特定される命令側メモリ等へのアクセス時間とを対応させた対応テーブルを記憶するテーブル記憶部２１と、ＣＰＵ１０からのアクセス（読出）要求ＳＣがあると、アドレスバスに示されたアドレスからアクセス対象となる命令側メモリ等を特定し、テーブル記憶部２１に記憶された対応テーブルを用いて、その特定された命令側メモリ等に対する制御信号ＳＳを生成する制御信号生成部２３と、ＣＰＵ１０の動作クロックにより動作するカウンタ（以下「継続カウンタ」という）を備え、その継続カウンタのカウント値、制御信号生成部２３にて特定された命令側メモリ等へのアクセス時間、及びコプロセッサ３０から通知されるウエイト要求ＷＤに基づいてが、ＣＰＵ１０に対するウエイト要求ＷＣを生成するウエイト要求生成部２５とを備えている。
【００３２】
なお、テーブル記憶部２１に記憶される対応テーブルでは、アクセス時間が、ＣＰＵ１０の動作クロックのサイクル数Ｎ（Ｎは正整数）にて表わされており、以下では、このアクセス時間を「継続サイクル数」ともよぶ。
ここで、図２は、バスコントローラ２０の内部状態を表わす状態遷移図である。
【００３３】
図２に示すように、バスコントローラ２０の内部状態は、「ＲＥＳＥＴ」「ＣＹＣ１」「ＣＹＣｎ」「ＣＹＣＷ」の４つの状態からなり、ＣＰＵ１０の動作クロックに同期して、以下のように状態遷移をする。
バスコントローラ２０がリセットされている間は「ＲＥＳＥＴ」状態に保持され、リセットが解除されると、「ＣＹＣ１」状態に遷移する。
【００３４】
「ＣＹＣ１」状態では、バスコントローラ２０管理下の命令側メモリ等へのアクセス要求がない（ＳＣ＝０）か、又はアクセス要求があっても継続サイクル数Ｎが１サイクルである（ＳＣ＝１かつＮ＝１）場合は、現在の状態、即ち「ＣＹＣ１」状態に遷移し（図３の時刻ｔ１参照）、一方、アクセス要求があり且つ継続サイクル数Ｎが複数サイクルである（ＳＣ＝１かつＮ＞１）場合は「ＣＹＣｎ」状態に遷移する（時刻ｔ２，ｔ５参照）。
【００３５】
なお、「ＣＹＣ１」状態への遷移があった場合に、継続カウンタのカウント値ＣＮＴは１にプリセットされる。
「ＣＹＣｎ」状態では、継続カウンタによるカウント値ＣＮＴが継続サイクル数Ｎより小さい（ＣＮＴ＜Ｎ）場合は、現在の状態、即ち「ＣＹＣｎ」状態に遷移し（時刻ｔ３，ｔ６参照）、一方、カウント値ＣＮＴが継続サイクル数Ｎ以上（ＣＮＴ≧Ｎ）である場合は、コプロセッサ３０からのウエイト要求があれば（ＷＤ＝１）、「ＣＹＣＷ」状態に遷移し（時刻ｔ７参照）、そのウエイト要求がなければ（ＷＤ＝０）、「ＣＹＣ１」状態に遷移する（時刻ｔ４参照）。
【００３６】
「ＣＹＣＷ」状態では、コプロセッサ３０からのウエイト要求があれば（ＷＤ＝１）、現在の状態、即ち「ＣＹＣＷ」状態に遷移し（時刻ｔ８参照）、そのウエイト要求がなければ（ＷＤ＝０）、「ＣＹＣ１」状態に遷移する（時刻ｔ９参照）。
【００３７】
このようにして決定される内部状態に従って、ウエイト要求生成部２５は、「ＣＹＣ１」状態から「ＣＹＣｎ」状態に遷移すると、ウエイト要求ＷＣを生成する（ＷＣ←１）と共に継続カウンタの動作を開始させ、「ＣＹＣｎ」状態から「ＣＹＣ１」又は「ＣＹＣＷ」状態に遷移すると、ウエイト要求ＷＣを解除する（ＷＣ←０）する。また、上述したようにどの状態からでも「ＣＹＣ１」状態に遷移すると継続カウンタのカウント値ＣＮＴを１にプリセット（ＣＮＴ←１）するように構成されている。
【００３８】
つまり、バスコントローラ２０は、ＣＰＵ１０からのアクセス要求ＳＣがあると（ＳＣ＝１）、命令側バス３と周辺バス７とを接続すると共に、アドレスから対応テーブルにより特定される命令側メモリ等に対して、その命令側メモリ等に応じた制御信号ＳＳを出力する。
【００３９】
そして、特定された命令側メモリ等についての継続サイクル数Ｎが１より大きい場合には、ＣＰＵ１０に対してウエイト要求ＷＣを出力し（ＷＣ←１）、継続サイクル数Ｎ分の時間が経過するとウエイト要求ＷＣを解除する。但し、ウエイト要求ＷＣを解除（ＷＣ←０）した時に、コプロセッサ３０からのウエイト要求ＷＤが継続（ＷＤ＝１）していれば、「ＣＹＣＷ」状態に遷移することで、コプロセッサ３０からのウエイト要求が解除されるまでの間は、再びウエイト要求ＷＣを発生させてしまうことがないようにされている。
【００４０】
次に、ＣＰＵ１０は、従来装置と同様に、実行すべき各命令を、いずれも動作クロックの１サイクルにて実行可能なＩＦステージ，ＤＥＣステージ，ＥＸＥステージ，ＭＡステージ，ＷＢステージの五つのステージからなる命令処理サイクルにて表わし、これら命令処理サイクルを５段パイプライン処理にて実行するように構成されている（図７参照）。
【００４１】
そして、ＣＰＵ１０は、バスコントローラ２０からのウエイト要求ＷＣ、及びコプロセッサ３０からのウエイト要求ＷＤのうち、いずれか一方でも要求があれば、その要求が継続している間、次のステージに移行することなく、実行中のステージを延長するステージ制御部１１と、ＩＦステージや、ＭＡステージにて、命令側バス３を介して周辺バス７に接続された命令側メモリ等からデータを読み込む場合や、データ側バス５を介してコプロセッサ３０を動作させる場合に出力するアクセス要求ＳＣ，ＳＤを生成するアクセス要求制御部１３とを備えている。
【００４２】
但し、アクセス要求制御部１３は、ステージ制御部１１にて、実行中のステージが延長された場合、そのステージが終了するまでの間、生成したアクセス要求ＳＣ，ＳＤの状態を保持するように構成されている。
つまり、ＣＰＵ１０は、データ側バス５に接続されたコプロセッサ３０を動作させる場合、コプロセッサ３０に対するアクセス要求ＳＤを生成（ＳＤ←１）する。そして、コプロセッサ３０とは、データ側バス５を介して直接的にデータの入出力を行う。一方、周辺バス７に接続された命令側メモリ等へのアクセスを行う場合、バスコントローラ２０に対するアクセス要求ＳＣを生成（ＳＣ←１）する。そして、命令側メモリ等とは、命令側バス３に接続されたバスコントローラ２０を介してデータの入出力を行う。
【００４３】
なお、図７からわかるように、ＩＦステージはどのサイクルでも必ず実施されるため、命令格納用のメモリが接続された周辺バス７を制御するバスコントローラ２０へのアクセス要求は、通常、設定されたままの状態（ＳＣ＝１）とされ、一方、ＭＡステージにてアクセスされるコプロセッサ３０へのアクセス要求ＳＤは、ＣＰＵ１０での必要に応じて設定される。
【００４４】
このように構成されたマイコン１では、例えば、命令Ｃｎ＋３　，Ｃｎ＋４　を格納する命令格納用メモリの継続サイクル数がＮ＝３である場合、図３に示すように、命令Ｃｎ＋３　を読み出すＩＦステージが開始されると（時刻ｔ１）、バスコントローラ２０からウエイト要求ＷＣが発生し、ＣＰＵ１０はウエイト状態となる。その後、継続カウンタのカウント値ＣＮＴが継続サイクル数Ｎに等しくなる時刻ｔ３を経過すると、バスコントローラ２０は、ＣＰＵ１０に対するウエイト要求ＷＣを解除し、続く時刻ｔ４では、次のステージに移行する。
【００４５】
このステージでは、命令Ｃｎ＋４　を読み出すＩＦステージが開始されるため、バスコントローラ２０からウエイト要求ＷＣが発生し、ＣＰＵ１０はウエイト状態となる。この時、同時に実行される命令Ｃｎ＋１　のＭＡステージにて、コプロセッサ３０へのアクセスが行われたとすると、コプロセッサ３０からもウエイト要求ＷＤが発生する。
【００４６】
その後、継続カウンタのカウント値ＣＮＴが継続サイクル数Ｎに一致する時刻ｔ６を経過すると、バスコントローラ２０からのウエイト要求ＷＣは解除されるが、コプロセッサ３０からのウエイト要求ＷＤは継続中であるため、ＣＰＵ１０の処理では、次のステージに移行せず、同ステージが延長される。また、バスコントローラ２０では、内部状態が「ＣＹＣＷ」状態に遷移し、ＣＰＵ１０からのアクセス要求ＳＣがあってもウエイト要求ＷＣを生成しない状態となる。
【００４７】
そして、時刻ｔ８を経過して、コプロセッサ３０からのウエイト要求ＷＤが解除されると、続く時刻ｔ９にて、ＣＰＵ１０は、処理を次のステージに移行させ、また、バスコントローラ２０は、内部状態を「ＣＹＣ１」状態に遷移させて、新たなウエイト要求ＷＣの生成が可能な状態に復帰する。
【００４８】
なお、ＣＰＵ１０は、コプロセッサ３０からのウエイト要求ＷＤよりバスコントローラ２０からのウエイト要求ＷＣが先に解除された場合、命令側メモリ等からのデータを、ウエイト要求ＷＤ解除後のステージ終了時（時刻ｔ９）に取り込むように構成されている。但し、ウエイト要求ＷＣの解除後に直ちに（時刻ｔ７）取り込むように構成してもよい。
【００４９】
以上説明したように、本実施形態のマイコン１においては、バスコントローラ２０とコプロセッサ３０とがいずれもウエイト要求を発生させ（ＷＣ＝１，ＷＤ＝１）、バスコントローラ２０からのウエイト要求が先に解除（ＷＣ＝０）された場合、その後、コプロセッサ３０からのウエイト要求も解除（ＷＤ＝０）されるまでの間は、バスコントローラ２０に対するアクセス要求（ＳＣ＝１）があっても、バスコントローラ２０が新たなウエイト要求ＷＣを発生させることがないようにされている。
【００５０】
従って、本実施形態のマイコン１によれば、不必要なウエイト要求ＷＣによって、必要以上にステージが延長されてしまうことを確実に防止できるため、ウエイト要求発生時の処理を必要最小限の時間で行うことができる。
なお、本実施形態では、バスコントローラ２０からのウエイト要求ＷＣと、コプロセッサ３０からのウエイト要求ＷＤとを個別にＣＰＵ１０に取り込むようにされているが、ＣＰＵ１０においては、両ウエイト要求ＷＣ，ＷＤを区別する必要がないため、両ウエイト要求ＷＣ，ＷＤの論理和をＣＰＵ１０に入力するように構成してもよい。
［第２実施形態］
次に第２実施形態について説明する。
【００５１】
本実施形態のマイコン１ａは、第１実施形態のマイコン１とは、ＣＰＵ１０ａ及びバスコントローラ２０ａの構成が一部異なるだけであるため、この相違する部分を中心に説明する。
即ち、本実施形態のマイコン１ａにおいて、バスコントローラ２０ａは、コプロセッサ３０からのウエイト要求ＷＤの通知を受けておらず、従って、ウエイト要求生成部２５ａは、コプロセッサ３０からのウエイト要求ＷＤとは無関係に動作する。つまり、バスコントローラ２０ａでは、図２に示した内部状態のうち「ＣＹＣＷ」状態がなく、「ＣＹＣｎ」状態のときに、継続カウンタのカウント値ＣＮＴが継続サイクル数Ｎ以上となると、ウエイト要求ＷＤの状態に関係なく、無条件に「ＣＹＣ１」状態に遷移するように構成されている。
【００５２】
また、ＣＰＵ１０ａは、アクセス要求制御部１３ａのうちバスコントローラ２０ａに対するアクセス要求ＳＣを生成するフェッチ制御回路が、バスコントローラ２０ａからのウエイト要求ＷＣ及びコプロセッサ３０からのウエイト要求ＷＤと、図５の状態遷移図に示す内部状態とに基づいて動作するように構成されている。
【００５３】
即ち、内部状態は「ＲＥＳＥＴ」「ＩＦ１」「ＩＦｎ」「ＩＦＷ」の四つの状態からなり、ＣＰＵ１０の動作クロックに同期して、以下のように状態遷移をする。
ＣＰＵ１０ａがリセットされている間は「ＲＥＳＥＴ」状態に保持され、リセットが解除されると、「ＩＦ１」状態に遷移する。
【００５４】
「ＩＦ１」状態では、バスコントローラ２０ａからのウエイト要求がなければ（ＷＣ＝０）、現在の状態、即ち「ＩＦ１」状態に遷移し（図６の時刻ｔ１参照）、一方、バスコントローラ２０ａからのウエイト要求があれば（ＷＣ＝１）、「ＩＦｎ」状態に遷移する（時刻ｔ２，ｔ５参照）。
【００５５】
「ＩＦｎ」状態では、バスコントローラ２０ａからのウエイト要求が継続していれば（ＷＣ＝１）、現在の状態、即ち「ＩＦｎ」状態に遷移し（時刻ｔ３，ｔ６参照）、一方、バスコントローラ２０ａからのウエイト要求が解除（ＷＣ＝０）された場合には、コプロセッサ３０からのウエイト要求がなければ（ＷＤ＝０）、「ＩＦ１」状態に遷移し（時刻ｔ４参照）、そのウエイト要求があれば（ＷＤ＝１）、「ＩＦＷ」状態に遷移する（時刻ｔ７参照）。
【００５６】
「ＩＦＷ」状態では、コプロセッサ３０からのウエイト要求が継続していれば（ＷＤ＝１）、現在の状態、即ち「ＩＦＷ」状態に遷移し（時刻ｔ８参照）、そのウエイト要求が解除されると（ＷＤ＝０）、「ＩＦ１」状態に遷移する（時刻ｔ９参照）。
【００５７】
このようにして決定される内部状態に従って、アクセス要求制御部１３ａのフェッチ制御回路は、「ＩＦＷ」状態である期間だけ、バスコントローラ２０ａに対するアクセス要求を解除する（ＳＣ＝０）ように構成されている。
このように構成されたマイコン１では、例えば、命令Ｃｎ＋３　，Ｃｎ＋４　を格納する命令格納用メモリの継続サイクル数がＮ＝３である場合、図６に示すように、命令Ｃｎ＋３　を読み出すＩＦステージが開始されると（時刻ｔ１）、バスコントローラ２０ａからウエイト要求ＷＣが発生し、ＣＰＵ１０ａはウエイト状態となる。その後、継続サイクル数Ｎに相当する時間が経過し、バスコントローラ２０ａがウエイト要求ＷＣを解除（ＷＣ＝０）した後の時刻ｔ４では、ＣＰＵ１０ａのステージ制御部１１は、処理を次のステージに移行させる。
【００５８】
このステージでは、命令Ｃｎ＋４　を読み出すＩＦステージが開始されるため、バスコントローラ２０ａから再びウエイト要求ＷＣが発生し（ＷＣ＝１）、ＣＰＵ１０ａはウエイト状態となる。この時、同時に実行される命令Ｃｎ＋１　のＭＡステージにて、コプロセッサ３０へのアクセスが行われたとすると、コプロセッサ３０からもウエイト要求ＷＤが発生する（ＷＤ＝１）。
【００５９】
その後、継続サイクル数Ｎに相当する時間が経過し、バスコントローラ２０ａがウエイト要求ＷＣを解除（ＷＣ＝０）した後の時刻ｔ７では、コプロセッサ３０からのウエイト要求ＷＤは継続中（ＷＤ＝１）であるため、ＣＰＵ１０ａのステージ制御部１１は、処理を次のステージに移行させずに、同ステージを延長する。このとき、アクセス要求制御部１３ａのフェッチ制御回路は、内部状態が「ＩＦＷ」状態に遷移するため、バスコントローラ２０ａへのアクセス要求ＳＣを解除（ＳＣ←０）する。
【００６０】
そして、コプロセッサ３０へのアクセスが可能となり、コプロセッサ３０がウエイト要求ＷＤを解除（ＷＤ＝０）した後の時刻ｔ９では、ＣＰＵ１０のステージ制御部１１が、処理を次のステージに移行させる。このとき、アクセス要求制御部１３ａのフェッチ制御回路は、内部状態が「ＣＹＣ１」状態に遷移するため、バスコントローラ２０ａへのアクセス要求ＳＣを解除状態から復帰させる（ＳＣ←１）。
【００６１】
以上説明したように、本実施形態のマイコン１ａにおいては、バスコントローラ２０ａとコプロセッサ３０とがいずれもウエイト要求を発生させ（ＷＣ＝１，ＷＤ＝１）、バスコントローラ２０ａからのウエイト要求が先に解除（ＷＣ＝０）された場合、その後、コプロセッサ３０からのウエイト要求も解除（ＷＤ＝０）されるまでの間は、バスコントローラ２０ａに対するアクセス要求を解除（ＳＣ←０）することにより、延長されたステージの途中でバスコントローラ２０ａが新たなウエイト要求を発生させることがないようにされている。
【００６２】
従って、本実施形態のマイコン１ａによれば、第１実施形態のマイコン１と同様に、不必要なウエイト要求によって必要以上にステージが延長されてしまうことを確実に防止できるため、ウエイト要求が発生した場合の処理を必要最小限の時間で行うことができる。
【図面の簡単な説明】
【図１】第１実施形態のマイクロコンピュータの主要部の構成を示すブロック図である。
【図２】バスコントローラの内部状態に関する状態遷移図である。
【図３】マイコンの動作例を示したタイミング図である。
【図４】第２実施形態のマイクロコンピュータの主要部の構成を示すブロック図である。
【図５】フェッチ制御回路の内部状態に関する状態遷移図である。
【図６】マイコンの動作例を示したタイミング図である。
【図７】パイプライン処理の概要を説明するためのタイミング図である。
【図８】従来装置の主要部の構成を示すブロック図である。
【図９】従来装置の問題点を説明するためのタイミング図である。
【符号の説明】
１，１ａ…マイクロコンピュータ（マイコン）、３…命令側バス、５…データ側バス、７…周辺バス、１０，１０ａ…中央処理ユニット（ＣＰＵ）、１１…ステージ制御部、１３，１３ａ…アクセス要求制御部、２０，２０ａ…バスコントローラ、２１…テーブル記憶部、２３…制御信号生成部、２５，２５ａ…ウエイト要求生成部、３０…コプロセッサ、ＳＣ，ＳＤ…アクセス要求、ＳＳ…制御信号、ＷＣ，ＷＤ…ウエイト要求。
【図１】
2004110256.tif 000003
【図２】
2004110256.tif 000004
【図３】
2004110256.tif 000005
【図４】
2004110256.tif 000006
【図５】
2004110256.tif 000007
【図６】
2004110256.tif 000008
【図７】
2004110256.tif 000009
【図８】
2004110256.tif 000010
【図９】
2004110256.tif 000011