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