(57)【要約】【課題】時分割並行処理される複数のタスクのうち少なくとも１つが特定タスクとして記述される場合でも、その特定タスク中における条件付制御フローの実行を可能としたマイクロコンピュータを提供する。【解決手段】ＣＰＵ３２は、Ｌタスクに記述されている条件判断命令を実行した結果、当該命令以降に記述されている命令の実行が不要となる場合でも、見かけ上はその実行不要な命令を実行するので、Ｌタスクを実行した場合のプログラムカウンタ２３の値は当該命令の実行を要する場合と同様に増加するが、当該命令の実行結果をＣＰＵ３２自身又は周辺回路３８又は３９に反映させることは禁止される。【選択図】図１
2006202265.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを時分割並行的に実施可能であると共に、それらの内少なくとも１つのタスクは、命令アドレスの増分が一定となるようにして固定ループ化されたプログラムが記述されている特定タスクであり、
ＣＰＵが前記特定タスクに記述されている条件判断命令を実行した結果、当該命令以降に記述されている命令の実行が不要となる場合は、前記命令の実行結果を前記ＣＰＵ又はその周辺回路に反映させることを禁止するように構成されていることを特徴とするマイクロコンピュータ。
【請求項２】
前記ＣＰＵは、前記実行が不要となる命令がロード命令である場合は、当該ロード命令を実行して読み出したデータの内部レジスタに対する書込みを禁止することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記ＣＰＵは、前記実行が不要となる命令がロード命令である場合は、当該ロード命令を実行して読み出したデータを内部レジスタに対して書込む際に、前記データを前記内部レジスタのデータ値に変換して当該内部レジスタに上書きすることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵは、前記実行が不要となる命令が演算命令である場合は、当該演算命令を実行した結果であるデータの内部レジスタに対する書込みを禁止することを特徴とする請求項１乃至３の何れかに記載のマイクロコンピュータ。
【請求項５】
前記ＣＰＵは、前記実行が不要となる命令が演算命令である場合は、当該演算命令を実行した結果であるデータを内部レジスタに対して書込む際に、前記データを前記内部レジスタのデータ値に変換して当該内部レジスタに上書きすることを特徴とする請求項１乃至３の何れかに記載のマイクロコンピュータ。
【請求項６】
前記ＣＰＵは、前記実行が不要となる命令がストア命令である場合は、当該ストア命令のオペランドアドレスを、実際にはデータの書き込み対象が存在しないダミーアドレスに変換して出力し、
前記ＣＰＵの外部回路は、前記ダミーアドレスによるアクセスに対してアクノリッジ信号を返すように構成されていることを特徴とする請求項１乃至５の何れかに記載のマイクロコンピュータ。
【請求項７】
前記ＣＰＵは、前記ストア命令のオペランドアドレスを前記ダミーアドレスに変換する場合には、前記オペランドアドレスの下位ビット側を所定ビット数だけ全て「１」に変換することを特徴とする請求項６記載のマイクロコンピュータ。
【請求項８】
前記ＣＰＵは、前記ストア命令のオペランドアドレスを前記ダミーアドレスに変換する場合には、前記オペランドアドレスに所定のアドレス値を加算することを特徴とする請求項６記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを時分割並行的に実施可能であると共に、それらの内少なくとも１つのタスクが、命令アドレスの増分が一定となるように固定ループ化されたプログラムが記述される特定タスクとなっているマイクロコンピュータに関する。
【背景技術】
【０００２】
特許文献１には、図５に示す構成のマイクロコンピュータが開示されている。このマイクロコンピュータは、ＣＰＵ１１と、ＲＯＭにより構成されたプログラムメモリ１２と、ＲＡＭにより構成されたデータメモリ１３と、Ｉ／Ｏブロック１４（入出力ピン）と、後述するＣＰＵ切替信号（クロック信号）を発生するタイミングジェネレータ（図示せず）と、データを送受信するデータバス１５と、アドレス信号を送受信するアドレスバス１６と、リード信号とライト信号をそれぞれ送受信するコントロールバス１７，１８とを備えている。
上記ＣＰＵ１１は、例えば、２種類のタスク（Ｌタスク，Ａタスク）を時分割で並行にパイプライン処理するため２つのアドレスレジスタ１９，２０と２つの演算レジスタ２１，２２を備え、これらアドレスレジスタ１９，２０と演算レジスタ２１，２２をＣＰＵ切替信号により交互に切り替えることで、見掛上、２つのＣＰＵを交互に切り替えて動作させるように機能する。
【０００３】
この場合、一方のアドレスレジスタ１９と演算レジスタ２１がＣＰＵ０用（Ｌタスク用）のレジスタとなり、他方のアドレスレジスタ２０と演算レジスタ２２がＣＰＵ１用（Ａタスク用）のレジスタとなる。これらアドレスレジスタ１９，２０の切替えに応じてプログラムカウンタ２３の値（次にフェッチする命令のアドレス）が更新され、このプログラムカウンタ２３からＣＰＵ０用（Ｌタスク用）とＣＰＵ１用（Ａタスク用）のアドレス信号が交互にプログラムメモリ１２に出力される。
また、ＣＰＵ１１内には、プログラムメモリ１２から読み込まれた命令の属するタスクの種類を判別してそのエラーを検出するエラー検出回路２４と、このエラー検出回路２４を通過した命令をデコード（解読）する命令デコーダ・命令シーケンサ２５が設けられ、この命令デコーダ・命令シーケンサ２５によりデコードした命令の内容に応じて、演算器２６（ＡＬＵ）で演算レジスタ２１，２２を用いて演算したり、リード信号又はライト信号をコントロールバス１７，１８に出力するようになっている。
【０００４】
一方、プログラムメモリ１２内には、ＣＰＵ０用（Ｌタスク用）のプログラム領域２７と、ＣＰＵ１用（Ａタスク用）のプログラム領域２８と、テーブル即値データ領域２９とが設けられている。この場合、ＣＰＵ０用のプログラム領域２７に格納されたＬタスクは、プログラム暴走に至る危険性のある分岐命令が禁止されて固定ループ化されたプログラムで構成されている。これにより、Ｌタスクのプログラムの実行時には０番地から実行を開始し、１番地，２番地，３番地，…と順々に命令を実行していき、その後、所定番地まで行くと、プログラムカウンタ２３がオーバーフローして０番地に戻り、以後、上述した番地順の命令実行を繰り返すようになる。また、このＬタスクの命令が全て１ワードに固定されている。
【０００５】
Ｌタスクは、シーケンス制御の処理を行うのに適し、そのプログラム中に、Ａタスクの暴走監視用のルーチンと、システムのフェイルセーフを成立させるためのバックアップシーケンス用のルーチンが含まれている。更に、このＬタスクは、固定ループ動作によるタイマとしての機能も備え、例えばインクリメント命令又はデクリメント命令を実行させてそのカウント値が所定の設定値に達したときに、Ａタスクの処理に割込みを発生させることでタイマ割込みと等価な定時間処理が可能となっている。
一方、Ａタスクは、Ｌタスクで禁止されている分岐命令も許容されており、例えば複雑な解析処理・数値処理に適している。このＡタスクについても、Ｌタスクと同じく、命令が全て１ワード命令に固定されている。このＡタスクとＬタスクは、１ワード内にオペコードとオペランド（アドレス）の両方が割り付けられている。
【０００６】
次に、上記構成のマイクロコンピュータが採用しているパイプライン制御方式について図６に基づいて説明する。このパイプラインは、例えば、命令フェッチ，命令デコード，命令実行の各ステージからなる３段のパイプラインとして構成され、全命令がこの３段のパイプラインで遅滞なく処理できるように設計されている。各ステージはそれぞれ１サイクルで実行され、３サイクルで１命令を実行するようになっているが、３段のパイプラインにより３つの命令を並行処理することで、見掛上、１命令を１サイクルで実行するのと等価となっている。
【０００７】
１サイクル（各ステージ）の時間は、ＣＰＵ切替信号（クロック信号）により規定されている。このＣＰＵ切替信号は、ローレベルの時間ＴLoとハイレベルの時間ＴHiとが同一であり、ローレベル期間でＣＰＵ０（Ｌタスク）の命令フェッチを行い、ハイレベル期間でＣＰＵ１（Ａタスク）の命令フェッチを行うことにより、ＣＰＵ０（Ｌタスク）とＣＰＵ１（Ａタスク）の両プログラムを１：１の時分割比で並行にパイプライン処理するようになっている。
更に、ＣＰＵ１がＡタスクのプログラムに含まれる分岐命令をフェッチしたときには、当該分岐命令が含まれるＡタスクの次の命令フェッチステージで分岐先アドレスの命令をフェッチするために、命令デコードステージで分岐先アドレスをセットするように構成されている。図６では、パイプライン処理中において、ＣＰＵ１の（Ｙ＋１）番地の命令がＹＹ番地への分岐命令（ＪＭＰ）である場合の処理タイミングが示されている。
【０００８】
ＣＰＵ１１は、プログラムカウンタ２３に異なる命令アドレスを順次セットするための複数のアドレスレジスタと１９，２０と、命令デコーダ・命令シーケンサ２５によってデコードされた命令を、演算器２６に順次セットするための複数の演算レジスタ２１，２２とを備え、前記複数のアドレスレジスタ１９，２０及び複数の演算レジスタ２１，２２を順次切替えることで、プログラムメモリ１２に記憶されている複数のプログラム２７，２８をパイプライン処理可能に構成されている。
【特許文献１】特開平６−２５０８５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１のマイクロコンピュータにおいては、上述したように、Ｌタスクでは分岐命令の実行を禁止（即ち、プログラム中における分岐命令の記述を禁止）しているので、プログラムカウンタ２３の値は常に「１」ずつ増加するようになっており（この場合、１命令のバイト数にかかわらずそのように設定されている）、Ａタスク側の暴走監視処理やプログラムカウンタ２３のカウンタ値を利用したタイマ機能を実現することが可能となっている。
しかしながら、Ｌタスク側には、分岐命令の禁止という制約が加えられているため分岐処理が実行できず、例えば、所定の条件判断を行った結果に応じて所定の演算処理の実行可否を選択するような条件付制御フローを実現することができないという問題があった。
【００１０】
本発明は上記事情に鑑みてなされたものであり、その目的は、時分割並行処理される複数のタスクのうち少なくとも１つが特定タスクとして記述される場合でも、その特定タスク中における条件付制御フローの実行を可能としたマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【００１１】
請求項１記載のマイクロコンピュータによれば、ＣＰＵは、特定タスクに記述されている条件判断命令を実行した結果、当該命令以降に記述されている命令の実行が不要となる場合でも、見かけ上はその実行不要な命令を実行するので、特定タスクを実行した場合のプログラムカウンタの値は当該命令の実行を要する場合と同様に増加し、また、当該命令を実行した場合と同様の処理時間が経過する。しかし、当該命令の実行結果をＣＰＵ又は周辺回路に反映させることは禁止されるので、実質的には命令を実行しない場合と同じ状態になる。
従って、条件判断命令の判断結果によらず、命令アドレスの増分値は一定になると共に命令の実行時間も同一となるので、特定タスクにおいても、処理時間の等時性を維持した上で条件分岐処理が可能となり、プログラムをより多様に記述することができる。
【００１２】
請求項２記載のマイクロコンピュータによれば、ＣＰＵは、実行不要となる命令がロード命令である場合は、そのロード命令を実行して読み出したデータを内部レジスタに書込みすることを禁止するので、ロード命令の実行結果がＣＰＵに反映されることはなく、実質的にロード命令を実行しない場合と同じ状態を維持することができる。
【００１３】
請求項３記載のマイクロコンピュータによれば、ＣＰＵは、実行が不要となる命令がロード命令である場合は、当該ロード命令を実行して読み出したデータを内部レジスタに対して書込む際に、前記データを前記内部レジスタのデータ値に変換して当該内部レジスタに上書きする。従って、請求項２と同様に、ロード命令の実行結果がＣＰＵに反映されることはなく、実質的にロード命令を実行しない場合と同じ状態を維持することができる。
【００１４】
請求項４記載のマイクロコンピュータによれば、ＣＰＵは、実行不要となる命令が演算命令である場合は、その演算命令を実行した結果のデータを内部レジスタに書込みすることを禁止するので、演算命令の実行結果がＣＰＵに反映されることはなく、実質的に演算命令を実行しない場合と同じ状態を維持することができる。
【００１５】
請求項５記載のマイクロコンピュータによれば、ＣＰＵは、実行が不要となる命令が演算命令である場合は、当該演算命令を実行した結果であるデータを内部レジスタに対して書込む際に、前記データを前記内部レジスタのデータ値に変換して当該内部レジスタに上書きする。従って、請求項４と同様に、演算命令の実行結果がＣＰＵに反映されることはなく、実質的に演算命令を実行しない場合と同じ状態を維持することができる。
【００１６】
請求項６記載のマイクロコンピュータによれば、ＣＰＵは、実行不要となる命令がストア命令である場合は、そのストア命令のオペランドアドレスを、実際にはデータの書き込み対象が存在しないダミーアドレスに変換して出力する。そして、ＣＰＵの外部回路は、ダミーアドレスによるアクセスに対してアクノリッジ信号を返すので、バスエラーが発生することはなく、且つ、ストア命令の実行結果が外部回路に反映されることはない。従って、実質的にストア命令を実行しない場合と同じ状態を維持することができる。
【００１７】
請求項７記載のマイクロコンピュータによれば、ＣＰＵは、ストア命令のオペランドアドレスをダミーアドレスに変換する場合には、そのオペランドアドレスの下位ビット側を所定ビット数だけ全て「１」に変換する。即ち、前記オペランドアドレスが書き込み対象とする周辺回路に割り当てられているアドレス領域内において、当該領域の先頭から所定部分までが書き込み対象となり、それ以降をダミーアドレスに応答する部分に割り当てておく。すると、オペランドアドレスの上位ビットをそのまま維持することで前記アドレス領域内へのアクセスを確保し、残りの下位ビット側を全て「１」に変換すれば、ＣＰＵを、前記アドレス領域の後尾側に配置されるダミーアドレス領域にアクセスさせることができる。
【００１８】
請求項８記載のマイクロコンピュータによれば、ＣＰＵは、ストア命令のオペランドアドレスをダミーアドレスに変換する場合には、オペランドアドレスに所定のアドレス値を加算するので、請求項７と同様に、ＣＰＵを、前記アドレス領域の後尾側に配置されるダミーアドレス領域にアクセスさせることができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施例について図１乃至図４を参照して説明する。図１は、本発明のマイクロコンピュータ３１におけるＣＰＵ３２の構成を示す機能ブロック図である。尚、ＣＰＵ３２の基本的な構成は図５に示すＣＰＵ１１と同様であるが、図１では、図示の都合上、本発明の要旨にかかる部分のみを抽出して示している。ＣＰＵ３２において新規な構成部分は、主としてスキップ判別回路３３を設けた点にある。尚、本実施例では、ＣＰＵ３２は２バイト命令にアクセスするものとして、プログラムカウンタ２３の増分値は「２」となっている。
【００２０】
スキップ判別回路３３には、プログラムカウンタ２３より出力される命令アドレスと、ＣＰＵ切替信号と、命令デコーダ・命令シーケンサ（以下、単に命令デコーダと称す）２５より出力される分岐命令信号及びロード／ストア信号とが与えられている。命令デコーダ２５は、デコードした命令が分岐命令（条件付分岐命令を含む）であり、且つその分岐判断が成立して演算器２６からの条件判定結果信号がアクティブになると分岐命令信号を出力するように構成されている。この信号は、分岐命令で指定される分岐（ステップ）数だけアクティブ（ハイ）期間が確保される。
また、命令デコーダ２５は、デコードした命令がロード命令又は演算命令である場合はロード／ストア信号をロウレベルに変化させ、デコードした命令がストア命令である場合はロード／ストア信号をハイレベルに変化させるようになっている（それ以外の命令の場合は、信号レベルを維持する）。
【００２１】
スキップ判別回路３３は、ＣＰＵ切替信号がロウレベルでありＣＰＵ０によるＬタスク（特定タスク）の処理期間であることを示す場合に、命令レジスタ３４を介してフェッチされた命令を命令デコーダ２５がデコードした結果が分岐命令であり、且つ分岐判断が成立した場合に分岐命令信号を出力すると、その信号をスキップ信号として認識する。その場合、スキップ判別回路３３は、分岐の実行条件が成立しなかった場合に実行する命令がロード命令又は演算命令である場合は、プログラムカウンタ２３及び（汎用）レジスタ３５に対して所定の期間書込み禁止信号を出力するように構成されている。
【００２２】
また、スキップ判別回路３３は、スキップ信号を認識している際に、分岐の実行条件が成立しなかった場合に実行する命令がストア命令である場合は、プログラムカウンタ２３及びレジスタ３５に対して同様に書込み禁止信号を出力すると共に、アドレスバス／ロードストアユニット３６に対してダミーアドレス切替え信号を出力する。そして、アドレスバス／ロードストアユニット３６は、ダミーアドレス切替え信号が与えられた場合、その時点で自身に格納されているストア命令のオペランドアドレスの下位側ビットを所定ビット数だけ全て「１」に変換するようになっている。例えば、アドレスが１６ビットであり、図２に示す周辺回路３８のアクセスアドレスが「０ｘ４×××」である場合、そのアドレスは、周辺回路３８のアドレス領域の末尾である「０ｘ４ＦＦＦ」となるように変換される。
レジスタ３５は、書込み禁止信号がアクティブである期間は、ロード命令が実行された結果ロードストアユニット３６を介して周辺回路より得られたデータが格納されないように構成されている。また、演算器２６が演算命令を実行した結果得られたデータについても、同様に格納が禁止される。
【００２３】
図２は、マイクロコンピュータ３１全体の構成を概略的に示す機能ブロック図である。ＣＰＵ３２には、アドレスバス１５及びデータバス１６を介してデータメモリ１３としてのＲＯＭ３６，ＲＡＭ３７や、Ｉ／Ｏブロック１４としての周辺回路３８，３９（周辺１，２）がバスステートコントローラ（ＢＳＣ，外部回路，周辺回路）４０を介して接続されている。ＢＳＣ４０は、ＣＰＵ３２がアクセススピードが遅い周辺回路３８，３９に対してアクセスを行った場合、ウエイトサイクルを挿入するなどのサイクル調整を行うと共に、ＣＰＵ３２に対してアクノリッジ信号を返すようになっている。
【００２４】
また、周辺回路３８，３９においては、夫々に割り付けられているアドレス領域が、データの書き込みが行われる内部レジスタなどの領域に、実際にはデータの書き込みが行われることはないダミーアドレス領域を末部に加えて設定されている。そして、ＢＳＣ４０は、ＣＰＵ３２がこのダミーアドレス領域にアクセスを行った場合もアクノリッジ信号を返すように構成されている。
尚、ＣＰＵ３２が周辺回路３８，３９にアクセスを行う場合にＢＳＣ４０がウエイトサイクルを挿入すれば、ＣＰＵ３２のパイプライン処理における命令実行ステージが遅延することになる。しかし、そのような情報はプログラムの記述時に予め把握することができるので、ＣＰＵ３２がＬタスク中で実行に遅延が生じるアクセスを行う場合には、プログラムカウンタ２３の増分値に遅延分の重みを持たせるように計算処理を行う。
【００２５】
次に、本実施例の作用について図３及び図４も参照して説明する。図３（ａ）は、本実施例におけるマイクロコンピュータ３１がＬタスクを実行する場合における処理の流れの一例を示すものである。本実施例では、Ｌタスクにおいても条件付き分岐命令と等価な処理を実現可能としている。
例えば、図３（ｂ）は従来のＬタスクの処理の流れを示しており、分岐命令の実行は禁止され、処理ステップ（１）から処理ステップ（５）までを順次実行してプログラムカウンタ２３がオーバーフローすると、プログラムカウンタ２３は初期値の「０」番地に戻り、また、処理ステップ（１）から（５）までを繰り返し実行するように固定ループ化されている。尚、これらはＣＰＵによって実行される多数の命令を例示的に示したものであるから、処理ステップ数と命令アドレスの増分とは一致していない。
【００２６】
これに対して、本実施例のＬタスクでは、処理ステップ（５）に替えて処理ステップ（１）と処理ステップ（２）との間に「判定」ステップが挿入されている。その条件判定の結果が真（Ｔ）である場合は処理ステップ（２），（３）を実行し、条件判定の結果が偽（Ｆ）である場合は処理ステップ（２），（３）の実行をスキップ（Ａ，Ｂ）して処理ステップ（４）を実行する。
ただし、Ｌタスクにおいては、プログラムカウンタ２３の増分値が一定であることと、処理時間の等時性とが保証される必要がある。即ち、これらが「判定」ステップの結果に応じて変動することがあってはならない。そこで、本実施例では、処理ステップ（２），（３）に替わるスキップ処理Ａ，Ｂを、図４に示すように実行する。
【００２７】
図４は、図３（ａ）のフローチャートに応じて処理を実行した場合のタイミングチャートを示すものであり、（ａ）は判定ステップの結果が「真」であった場合、（ｂ）は判定ステップの結果が「偽」であった場合に対応する。尚、処理ステップ（２）は周辺回路３８または３９に対するロード命令であり、処理ステップ（３）は周辺回路３８または３９に対するストア命令であるものとする。そして、ＣＰＵ３２がそれらの命令に応じて実行するリードアクセス，ライトアクセスには、ＢＳＣ４０によって例えば２サイクル分のウエイトサイクルが挿入され、処理ステップ（２），（３）の実行には３サイクルを要するようになっている。
【００２８】
図４（ｂ）に示すように、スキップＡの場合、ＣＰＵ３２は（ａ）のケースと同様に処理（２）のロード命令をフェッチ，デコード，実行する。但し、ロード命令をデコードした段階で、レジスタ３５にはスキップ判別回路３３から書込み禁止信号が出力される（ハイアクティブ）。その結果、リードサイクルを実行し、アドレスバス／ロードストアユニット３６を介して読み出されたデータは、レジスタ３５には書き込まれることはない。従って、リードサイクルの実行結果はＣＰＵ３２の内部に反映されず、実質的にはロード命令を実行していない状態に等しくなる。
尚、処理（２）における命令が演算命令であった場合もロード命令のケースと同様に処理され、ＣＰＵ３２は演算器２６において演算命令を実行するが、その実行結果がレジスタ３５に書き込まれることはない。
【００２９】
また、スキップＢの場合、ＣＰＵ３２はやはり（ａ）のケースと同様に処理（３）のストア命令をフェッチ，デコード，実行するが、ストア命令をデコードした場合も、アドレスバス／ロードストアユニット３６にはスキップ判別回路３３から書込み禁止信号が出力される。その結果、ライトサイクルを実行した場合にアドレスバス１５に出力されるアドレスは、周辺回路３８又は３９のダミーアドレス領域に変換される。従って、周辺回路３８又は３９に対してはデータが書き込まれることはなく、実質的にストア命令を実行していない状態に等しくなる。
【００３０】
以上のように本実施例によれば、ＣＰＵ３２は、Ｌタスクに記述されている条件判断命令を実行した結果、当該命令以降に記述されている命令の実行が不要となる場合でも、見かけ上はその実行不要な命令を実行する。従って、Ｌタスクを実行した場合のプログラムカウンタ２３の値は当該命令の実行を要する場合と同様に増加し、当該命令を実行した場合と同様の時間が経過するが、当該命令の実行結果をＣＰＵ３２自身又は周辺回路３８又は３９に反映させることは禁止されるので、実質的には命令を実行しない場合と同じ状態になる。
従って、分岐命令を実行した場合と同様の結果が得られることになる。そして、条件判断命令の判断結果によらず、命令アドレスの増分値は一定になると共に命令の実行時間も同一となるので、Ｌタスクにおいても、処理時間の等時性を維持した上で条件分岐処理が可能となり、プログラムをより多様に記述することができる。
【００３１】
また、ＣＰＵ３２は、実行不要となる命令がロード命令である場合は、そのロード命令を実行して読み出したデータを内部レジスタ３５に書込むことを禁止するので、ロード命令の実行結果がＣＰＵ３２に反映されることはなく、実質的にロード命令を実行しない場合と同じ状態を維持することができる。また、実行不要となる命令が演算命令である場合も同様である。
また、ＣＰＵ３２は、実行不要となる命令がストア命令である場合は、そのストア命令のオペランドアドレスを、実際にはデータの書き込み対象が存在しないダミーアドレスに変換して出力し、ＢＳＣ４０は、そのアクセスに対してアクノリッジ信号を返すので、バスエラーが発生することはなく、ストア命令の実行結果が周辺回路３８，３９に反映されることはない。従って、実質的にストア命令を実行しない場合と同じ状態を維持することができる。
【００３２】
また、ＣＰＵ３２は、ストア命令のオペランドアドレスをダミーアドレスに変換する場合には、そのオペランドアドレスの下位ビット側を所定ビット数だけ全て「１」に変換するので、オペランドアドレスの上位ビットをそのまま維持することで周辺回路３８又は３９のアドレス領域内へのアクセスを確保し、そのアドレス領域の後尾側に配置されるダミーアドレス領域にアクセスさせることができる。
【００３３】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
ＣＰＵ３２がオペランドアドレスをダミーアドレスに変換する場合には、オペランドアドレスに所定のアドレス値を加算するように構成しても良い。また、ダミーアドレスは、アクセス対象毎に設定する必要はなく、１つの共通領域を設定しても良い。
ＢＳＣ４０は、必要に応じて設ければ良い。
ＣＰＵが並行処理するタスクの数は、「３」以上であっても良い。
特定タスクにおける命令アドレスの増分値は「１」又は「４」などでも良い。
【００３４】
分岐命令信号は、命令デコーダ２５が出力するものに限らず、演算器２６やスキップ判別回路３３で生成出力するようにしても良い。
上記実施例では、書込み禁止信号がアクティブである期間にロード命令又は演算命令が実行されると、その実行結果データをレジスタ３５に格納することを禁止したが、格納を禁止することに替えて、命令の実行結果として得られたデータを、その時点でレジスタ３５に格納されているデータ値に変換して上書きするようにしても良い。斯様に構成した場合も、命令の実行結果がＣＰＵ３２に反映されることはないので、実質的にロード命令，演算命令を実行しない場合と同じ状態を維持することができる。
命令長については、例えば１ワード長と２ワード長というように、２種類以上あっても良い。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施例であり、マイクロコンピュータにおけるＣＰＵの構成を示す機能ブロック図
【図２】マイクロコンピュータ全体の構成を概略的に示す機能ブロック図
【図３】（ａ）は本実施例におけるマイクロコンピュータがＬタスクを実行する場合の処理を示すフローチャート、（ｂ）は従来のＬタスクの処理の流れを示すフローチャート
【図４】図３（ａ）のフローチャートに応じて処理を実行した場合のタイミングチャートであり、（ａ）は判定ステップの結果が「真」であった場合、（ｂ）は判定ステップの結果が「偽」であった場合を示す図
【図５】従来技術のマイクロコンピュータの構成を示す機能ブロック図
【図６】ＣＰＵ１の（Ｙ＋１）番地の命令がＹＹ番地への分岐命令（ＪＭＰ）である場合のパイプライン処理を示すタイミングチャート
【符号の説明】
【００３６】
図面中、２３はプログラムカウンタ、３１はマイクロコンピュータ、３２はＣＰＵ、３３はスキップ判別回路、３５はレジスタ、３８，３９は周辺回路、４０はＢＳＣ（外部回路，周辺回路）を示す。
【図１】
2006202265.tif 000003
【図２】
2006202265.tif 000004
【図３】
2006202265.tif 000005
【図４】
2006202265.tif 000006
【図５】
2006202265.tif 000007
【図６】
2006202265.tif 000008