JPH06250855A - マイクロコンピュータ - Google Patents
マイクロコンピュータInfo
- Publication number
- JPH06250855A JPH06250855A JP5038268A JP3826893A JPH06250855A JP H06250855 A JPH06250855 A JP H06250855A JP 5038268 A JP5038268 A JP 5038268A JP 3826893 A JP3826893 A JP 3826893A JP H06250855 A JPH06250855 A JP H06250855A
- Authority
- JP
- Japan
- Prior art keywords
- task
- instruction
- program
- address
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 ノイズ等の予期せぬ原因により誤って他のタ
スクのアドレスに分岐した場合に、それを速く検出す
る。 【構成】 2つのタスク(CPU0,CPU1)に対応
して2つのアドレスレジスタ19,20と演算レジスタ
21,22を設け、これらアドレスレジスタ19,20
と演算レジスタ21,22をCPU切替信号により交互
に切り替えることで、2つのタスクを時分割で並行にパ
イプライン処理する。そして、各タスクのプログラムの
各命令に、タスクの種類を判別するためのタスク判別ビ
ットを設け、各命令をプログラムメモリ12から読み出
す際にその命令の属するタスクの種類をエラー検出回路
24で判別してエラーの有無を判定する。このため、ノ
イズ等の予期せぬ原因により誤って他のタスクのアドレ
スに分岐した場合でも、それをエラー検出回路24によ
って速く検出することができ、各タスクのプログラムの
独立性が確保される。
スクのアドレスに分岐した場合に、それを速く検出す
る。 【構成】 2つのタスク(CPU0,CPU1)に対応
して2つのアドレスレジスタ19,20と演算レジスタ
21,22を設け、これらアドレスレジスタ19,20
と演算レジスタ21,22をCPU切替信号により交互
に切り替えることで、2つのタスクを時分割で並行にパ
イプライン処理する。そして、各タスクのプログラムの
各命令に、タスクの種類を判別するためのタスク判別ビ
ットを設け、各命令をプログラムメモリ12から読み出
す際にその命令の属するタスクの種類をエラー検出回路
24で判別してエラーの有無を判定する。このため、ノ
イズ等の予期せぬ原因により誤って他のタスクのアドレ
スに分岐した場合でも、それをエラー検出回路24によ
って速く検出することができ、各タスクのプログラムの
独立性が確保される。
Description
【0001】
【産業上の利用分野】本発明は、複数のタスクを時分割
並行処理する機能を備えたマイクロコンピュータに関す
るものである。
並行処理する機能を備えたマイクロコンピュータに関す
るものである。
【0002】
【従来の技術】近年のマイクロコンピュータにおいて
は、複数のタスクを並行処理するために、例えば、特開
昭58−155406号公報、特開昭59−19165
4号公報等に記載されているように、複数のタスクの処
理をレジスタカウンタやマルチプレクサにより順次切り
替えることで、複数のタスクを時分割並行処理するよう
にしたものがある。
は、複数のタスクを並行処理するために、例えば、特開
昭58−155406号公報、特開昭59−19165
4号公報等に記載されているように、複数のタスクの処
理をレジスタカウンタやマルチプレクサにより順次切り
替えることで、複数のタスクを時分割並行処理するよう
にしたものがある。
【0003】
【発明が解決しようとする課題】上記従来構成におい
て、ノイズ等の予期せぬ原因により誤って他のタスクの
アドレスにジャンプしてその命令を実行し始めることが
ある。このような場合の復帰方法として、従来は、ウォ
ッチドッグタイマ等の暴走監視ロジックを周辺回路に設
けていたが、この方法では、外部から暴走を監視するた
めに、暴走を検出するまでにタイムロスがあり、その間
にメモリデータやポートデータ等が破壊されてしまう欠
点がある。
て、ノイズ等の予期せぬ原因により誤って他のタスクの
アドレスにジャンプしてその命令を実行し始めることが
ある。このような場合の復帰方法として、従来は、ウォ
ッチドッグタイマ等の暴走監視ロジックを周辺回路に設
けていたが、この方法では、外部から暴走を監視するた
めに、暴走を検出するまでにタイムロスがあり、その間
にメモリデータやポートデータ等が破壊されてしまう欠
点がある。
【0004】本発明はこのような事情を考慮してなされ
たもので、その目的は、ノイズ等の予期せぬ原因により
誤って他のタスクのアドレスに分岐した場合に、これを
ウォッチドッグタイマ等による外部監視法よりも遥かに
速い応答性で検出することができて、メモリデータやポ
ートデータ等を破壊せずに済むと共に、各タスクのプロ
グラムを他のタスクのプログラムから保護することがで
きるマイクロコンピュータを提供することにある。
たもので、その目的は、ノイズ等の予期せぬ原因により
誤って他のタスクのアドレスに分岐した場合に、これを
ウォッチドッグタイマ等による外部監視法よりも遥かに
速い応答性で検出することができて、メモリデータやポ
ートデータ等を破壊せずに済むと共に、各タスクのプロ
グラムを他のタスクのプログラムから保護することがで
きるマイクロコンピュータを提供することにある。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、本発明のマイクロコンピュータは、複数のプログラ
ムを数サイクルごとに一定時分割で切り替えながら並行
処理する機能を備えたものにおいて、前記複数のプログ
ラムの各命令には、プログラムの種類を判別するための
タスク判別ビットが付加されており、命令読出し後、エ
ラーチェックすることより、各プログラムは、別のプロ
グラムから保護され、独立性が確保されるようになって
いる。
に、本発明のマイクロコンピュータは、複数のプログラ
ムを数サイクルごとに一定時分割で切り替えながら並行
処理する機能を備えたものにおいて、前記複数のプログ
ラムの各命令には、プログラムの種類を判別するための
タスク判別ビットが付加されており、命令読出し後、エ
ラーチェックすることより、各プログラムは、別のプロ
グラムから保護され、独立性が確保されるようになって
いる。
【0006】この場合、2個のプログラムを並行処理す
る場合、タスク判定ビットとして、パリティビットを付
加するようにしても良い。
る場合、タスク判定ビットとして、パリティビットを付
加するようにしても良い。
【0007】
【作用】上記構成によれば、複数のタスクを時分割並行
処理する際に、各命令に設けられたタスク判別ビットの
値により、タスクの種類を判別して、エラーの有無を判
定する。従って、もし、ノイズ等の予期せぬ原因により
誤って他のタスクのアドレスに分岐した場合でも、それ
を速く検出することができる。また、タスクの数が2個
の場合、タスク判定ビットとして、パリティビットを使
用することもできる。
処理する際に、各命令に設けられたタスク判別ビットの
値により、タスクの種類を判別して、エラーの有無を判
定する。従って、もし、ノイズ等の予期せぬ原因により
誤って他のタスクのアドレスに分岐した場合でも、それ
を速く検出することができる。また、タスクの数が2個
の場合、タスク判定ビットとして、パリティビットを使
用することもできる。
【0008】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。本実施例のマイクロコンピュータは、例えばワ
ンチップマイクロコンピュータにより構成され、CPU
11と、ROMにより構成されたプログラムメモリ12
と、RAMにより構成されたデータメモリ13と、I/
Oブロック14(入出力ピン)と、後述するCPU切替
信号(クロック信号)を発生するタイミングジェネレー
タ(図示せず)と、データを送受信するデータバス15
と、アドレス信号を送受信するアドレスバス16と、リ
ード信号とライト信号をそれぞれ送受信するコントロー
ルバス17,18とを備えている。
明する。本実施例のマイクロコンピュータは、例えばワ
ンチップマイクロコンピュータにより構成され、CPU
11と、ROMにより構成されたプログラムメモリ12
と、RAMにより構成されたデータメモリ13と、I/
Oブロック14(入出力ピン)と、後述するCPU切替
信号(クロック信号)を発生するタイミングジェネレー
タ(図示せず)と、データを送受信するデータバス15
と、アドレス信号を送受信するアドレスバス16と、リ
ード信号とライト信号をそれぞれ送受信するコントロー
ルバス17,18とを備えている。
【0009】上記CPU11は、例えば、2種類のタス
ク(Lタスク,Aタスク)を時分割で並行にパイプライ
ン処理するために、2つのアドレスレジスタ19,20
と2つの演算レジスタ21,22を備え、これらアドレ
スレジスタ19,20と演算レジスタ21,22をタイ
ミングジェネレータにより発生したCPU切替信号によ
り交互に切り替えることで、見掛上、2つのCPUを交
互に切り替えて動作させるように機能する。この場合、
一方のアドレスレジスタ19と演算レジスタ21がCP
U0用(Lタスク用)のレジスタとなり、他方のアドレ
スレジスタ20と演算レジスタ22がCPU1用(Aタ
スク用)のレジスタとなる。これらアドレスレジスタ1
9,20の切替えに応じてプログラムカウンタ23の値
(次にフェッチする命令のアドレス)が更新され、この
プログラムカウンタ23からCPU0用(Lタスク用)
とCPU1用(Aタスク用)のアドレス信号が交互にプ
ログラムメモリ12に出力される。
ク(Lタスク,Aタスク)を時分割で並行にパイプライ
ン処理するために、2つのアドレスレジスタ19,20
と2つの演算レジスタ21,22を備え、これらアドレ
スレジスタ19,20と演算レジスタ21,22をタイ
ミングジェネレータにより発生したCPU切替信号によ
り交互に切り替えることで、見掛上、2つのCPUを交
互に切り替えて動作させるように機能する。この場合、
一方のアドレスレジスタ19と演算レジスタ21がCP
U0用(Lタスク用)のレジスタとなり、他方のアドレ
スレジスタ20と演算レジスタ22がCPU1用(Aタ
スク用)のレジスタとなる。これらアドレスレジスタ1
9,20の切替えに応じてプログラムカウンタ23の値
(次にフェッチする命令のアドレス)が更新され、この
プログラムカウンタ23からCPU0用(Lタスク用)
とCPU1用(Aタスク用)のアドレス信号が交互にプ
ログラムメモリ12に出力される。
【0010】また、CPU11内には、プログラムメモ
リ12から読み込まれた命令の属するタスクの種類を判
別してそのエラーを検出するエラー検出回路24と、こ
のエラー検出回路24を通過した命令をデコード(解
読)する命令デコーダ・命令シーケンサ25が設けら
れ、この命令デコーダ・命令シーケンサ25によりデコ
ードした命令の内容に応じて、演算器26(ALU)で
演算レジスタ21,22を用いて演算したり、リード信
号又はライト信号をコントロールバス17,18に出力
するようになっている。
リ12から読み込まれた命令の属するタスクの種類を判
別してそのエラーを検出するエラー検出回路24と、こ
のエラー検出回路24を通過した命令をデコード(解
読)する命令デコーダ・命令シーケンサ25が設けら
れ、この命令デコーダ・命令シーケンサ25によりデコ
ードした命令の内容に応じて、演算器26(ALU)で
演算レジスタ21,22を用いて演算したり、リード信
号又はライト信号をコントロールバス17,18に出力
するようになっている。
【0011】一方、プログラムメモリ12内には、CP
U0用(Lタスク用)のプログラム領域27と、CPU
1用(Aタスク用)のプログラム領域28と、テーブル
即値データ領域29とが設けられている。本実施例で
は、CPU0用のプログラム領域27に格納されたLタ
スクのプログラムは、プログラム暴走に至る危険性のあ
る分岐命令が禁止され且つ固定ループ化されたプログラ
ムで構成されている。これにより、Lタスクのプログラ
ムの実行時には0番地から実行を開始し、1番地,2番
地,3番地,…と順々に命令を実行していき、その後、
所定番地まで行くと、プログラムカウンタ23がオーバ
ーフローして0番地に戻り、以後、上述した番地順の命
令実行を繰り返すようになる。また、このLタスクは、
命令が全て1ワード命令に固定されている。この理由
は、命令のワード数が固定されていない命令体系(例え
ば1ワード命令もあれば、2ワード命令もあるという命
令体系)では、2ワード命令を読み間違えて1ワード命
令と解釈した場合に、次のワードは本来の命令ではない
ので、何を実行するか分からないからである。
U0用(Lタスク用)のプログラム領域27と、CPU
1用(Aタスク用)のプログラム領域28と、テーブル
即値データ領域29とが設けられている。本実施例で
は、CPU0用のプログラム領域27に格納されたLタ
スクのプログラムは、プログラム暴走に至る危険性のあ
る分岐命令が禁止され且つ固定ループ化されたプログラ
ムで構成されている。これにより、Lタスクのプログラ
ムの実行時には0番地から実行を開始し、1番地,2番
地,3番地,…と順々に命令を実行していき、その後、
所定番地まで行くと、プログラムカウンタ23がオーバ
ーフローして0番地に戻り、以後、上述した番地順の命
令実行を繰り返すようになる。また、このLタスクは、
命令が全て1ワード命令に固定されている。この理由
は、命令のワード数が固定されていない命令体系(例え
ば1ワード命令もあれば、2ワード命令もあるという命
令体系)では、2ワード命令を読み間違えて1ワード命
令と解釈した場合に、次のワードは本来の命令ではない
ので、何を実行するか分からないからである。
【0012】このLタスクは、シーケンス制御の処理を
行うのに適し、そのプログラム中に、他のタスクである
Aタスクの暴走監視用のルーチンと、システムのフェイ
ルセーフを成立させるためのバックアップシーケンス用
のルーチンが含まれている。更に、このLタスクは、固
定ループ動作によるタイマとしての機能も備え、例えば
インクリメント命令又はデクリメント命令を実行させて
そのカウント値が所定の設定値に達したときに、Aタス
クの処理に割込みを発生させることで、タイマ割込みと
等価な定時間処理が可能となっている。
行うのに適し、そのプログラム中に、他のタスクである
Aタスクの暴走監視用のルーチンと、システムのフェイ
ルセーフを成立させるためのバックアップシーケンス用
のルーチンが含まれている。更に、このLタスクは、固
定ループ動作によるタイマとしての機能も備え、例えば
インクリメント命令又はデクリメント命令を実行させて
そのカウント値が所定の設定値に達したときに、Aタス
クの処理に割込みを発生させることで、タイマ割込みと
等価な定時間処理が可能となっている。
【0013】一方、Aタスクは、Lタスクで禁止されて
いる分岐命令も許容されており、例えば複雑な解析処理
・数値処理に適している。このAタスクについても、L
タスクと同じく、命令が全て1ワード命令に固定されて
いる。このAタスクとLタスクは、1ワード内にオペコ
ードとオペランド(アドレス)の両方が割り付けられて
いる。
いる分岐命令も許容されており、例えば複雑な解析処理
・数値処理に適している。このAタスクについても、L
タスクと同じく、命令が全て1ワード命令に固定されて
いる。このAタスクとLタスクは、1ワード内にオペコ
ードとオペランド(アドレス)の両方が割り付けられて
いる。
【0014】また、図2に示すように、プログラムメモ
リ12内のCPU0・CPU1のプログラム領域27,
28に格納されたLタスク・Aタスクのプログラムの各
命令には、タスクの種類を判別するタスク判別ビット3
0が例えばMSB(最上位ビット)に設けられている。
本実施例では、タスク判別ビット30をパリティビット
とし、Lタスクを奇数パリティ、Aタスクを偶数パリテ
ィとしている。この場合、タスク判別のみではなく、命
令コードチェックも実施できる。
リ12内のCPU0・CPU1のプログラム領域27,
28に格納されたLタスク・Aタスクのプログラムの各
命令には、タスクの種類を判別するタスク判別ビット3
0が例えばMSB(最上位ビット)に設けられている。
本実施例では、タスク判別ビット30をパリティビット
とし、Lタスクを奇数パリティ、Aタスクを偶数パリテ
ィとしている。この場合、タスク判別のみではなく、命
令コードチェックも実施できる。
【0015】これに対応して、CPU11内には、プロ
グラムメモリ12から読み込まれた命令の属するタスク
の種類をパリティチェックにより判別してそのエラーを
検出するエラー検出回路24が設けられている。このエ
ラー検出回路24は、ノイズ等の予期せぬ原因により誤
って他のタスクを実行し始めようとしているか否かを検
出するもので、図3に示すように、タスク判別回路3
1,エラーフラグ回路32,ノーオペレーション(NO
P)コード回路33,ハイアクティブ型・ローアクティ
ブ型の両トランスファゲート34,35から構成されて
いる。
グラムメモリ12から読み込まれた命令の属するタスク
の種類をパリティチェックにより判別してそのエラーを
検出するエラー検出回路24が設けられている。このエ
ラー検出回路24は、ノイズ等の予期せぬ原因により誤
って他のタスクを実行し始めようとしているか否かを検
出するもので、図3に示すように、タスク判別回路3
1,エラーフラグ回路32,ノーオペレーション(NO
P)コード回路33,ハイアクティブ型・ローアクティ
ブ型の両トランスファゲート34,35から構成されて
いる。
【0016】上記タスク判別回路31は、プログラムメ
モリ12から読み込まれた命令の属するタスクの種類を
パリティチェックにより判別し(即ち奇数パリティであ
ればLタスク、偶数パリティであればAタスクと判別
し)、この判別結果をCPU切替信号と比較して、エラ
ーが発生しているか否かを判定し、もし、エラーが発生
していれば、エラーフラグ回路32へエラー信号(ハイ
レベル信号)を出力し、エラーが発生しているタスクの
アドレスレジスタ19,20をリセットする。この際、
エラー信号(ハイレベル信号)を、両トランスファゲー
ト34,35のコントロール端子にも与えて、ハイアク
ティブ型のトランスファーゲート34をオンさせ、NO
Pコード回路33から命令デコーダ・命令シーケンサ2
5へNOPコードの信号を出力する一方、ローアクティ
ブ型のトランスファーゲート35をオフさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を阻止す
る。このため、ノイズ等の予期せぬ原因により誤って他
のタスクのアドレスに分岐してその命令を実行し始めよ
うとした場合には、即座に1命令サイクルでNOPとす
ることができて、メモリデータ,ポートデータ等の破壊
を未然に防止できる。
モリ12から読み込まれた命令の属するタスクの種類を
パリティチェックにより判別し(即ち奇数パリティであ
ればLタスク、偶数パリティであればAタスクと判別
し)、この判別結果をCPU切替信号と比較して、エラ
ーが発生しているか否かを判定し、もし、エラーが発生
していれば、エラーフラグ回路32へエラー信号(ハイ
レベル信号)を出力し、エラーが発生しているタスクの
アドレスレジスタ19,20をリセットする。この際、
エラー信号(ハイレベル信号)を、両トランスファゲー
ト34,35のコントロール端子にも与えて、ハイアク
ティブ型のトランスファーゲート34をオンさせ、NO
Pコード回路33から命令デコーダ・命令シーケンサ2
5へNOPコードの信号を出力する一方、ローアクティ
ブ型のトランスファーゲート35をオフさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を阻止す
る。このため、ノイズ等の予期せぬ原因により誤って他
のタスクのアドレスに分岐してその命令を実行し始めよ
うとした場合には、即座に1命令サイクルでNOPとす
ることができて、メモリデータ,ポートデータ等の破壊
を未然に防止できる。
【0017】一方、エラーが発生していない場合には、
タスク判別回路31の出力をローレベルに維持して、ハ
イアクティブ型のトランスファーゲート34をオフさ
せ、NOPコードの通過を阻止する一方、ローアクティ
ブ型のトランスファーゲート35をオンさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を許容する
ものである。
タスク判別回路31の出力をローレベルに維持して、ハ
イアクティブ型のトランスファーゲート34をオフさ
せ、NOPコードの通過を阻止する一方、ローアクティ
ブ型のトランスファーゲート35をオンさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を許容する
ものである。
【0018】ところで、従来構成のものでは、多ワード
命令構成の場合、オペコード・オペランドの誤認識が、
プログラム暴走やデータメモリ内の重要情報の大量破壊
を招く原因となっていた。また、アドレスエラー等によ
り、プログラムアドレスがテーブル即値データ領域29
のアドレスに分岐し、テーブル即値データをオペコード
として認識して実行を開始し、プログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く可能性もあった。
命令構成の場合、オペコード・オペランドの誤認識が、
プログラム暴走やデータメモリ内の重要情報の大量破壊
を招く原因となっていた。また、アドレスエラー等によ
り、プログラムアドレスがテーブル即値データ領域29
のアドレスに分岐し、テーブル即値データをオペコード
として認識して実行を開始し、プログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く可能性もあった。
【0019】これに対して、本実施例では、全命令を1
ワード固定長の設計とし、1ワード内にオペコードとオ
ペランドの両方を割り付けている。また、アドレス構成
は、プログラムメモリアドレスとデータメモリアドレス
を完全に分離している。この構成により、オペコード・
オペランドの誤認識やデータメモリ内データの命令実行
等によるプログラム暴走を未然に防止できる。
ワード固定長の設計とし、1ワード内にオペコードとオ
ペランドの両方を割り付けている。また、アドレス構成
は、プログラムメモリアドレスとデータメモリアドレス
を完全に分離している。この構成により、オペコード・
オペランドの誤認識やデータメモリ内データの命令実行
等によるプログラム暴走を未然に防止できる。
【0020】また、図2に示すように、本実施例のオペ
コードは、分岐命令等の危険命令と、その他の命令との
割り付けを分けてあり、オペコード内の特定ビットで判
別できる構成となっている。図2の要注意命令判別ビッ
ト37がこれに該当する。この要注意命令判別ビット3
7が“0”の場合、全てデータメモリ13から演算レジ
スタ21,22への演算転送命令(リード系命令)であ
る。テーブル即値データ領域29では、要注意命令判別
ビット37に“0”を埋め込む。
コードは、分岐命令等の危険命令と、その他の命令との
割り付けを分けてあり、オペコード内の特定ビットで判
別できる構成となっている。図2の要注意命令判別ビッ
ト37がこれに該当する。この要注意命令判別ビット3
7が“0”の場合、全てデータメモリ13から演算レジ
スタ21,22への演算転送命令(リード系命令)であ
る。テーブル即値データ領域29では、要注意命令判別
ビット37に“0”を埋め込む。
【0021】万一、アドレスエラー等により、プログラ
ムアドレスがテーブル即値データ領域29のアドレスに
分岐し、テーブル即値データをオペコードとして認識し
て実行を開始した場合、要注意命令判別ビット37にセ
ットされた値“0”により、データメモリ13から演算
レジスタ21,22への演算転送命令を継続するのみで
あり、データメモリ13内の重要情報は保守される。し
かも、演算レジスタ21,22への演算転送命令実行終
了後は、テーブル即値データ領域29の最後に記述され
ている初期化処理等のエラー処理ルーチン38が実行さ
れる。これにより、従来のウォッチドッグタイマ等によ
る外部監視法よりも遥かに速い応答性で、エラー検出か
らエラー処理までの処理を行うことができる。
ムアドレスがテーブル即値データ領域29のアドレスに
分岐し、テーブル即値データをオペコードとして認識し
て実行を開始した場合、要注意命令判別ビット37にセ
ットされた値“0”により、データメモリ13から演算
レジスタ21,22への演算転送命令を継続するのみで
あり、データメモリ13内の重要情報は保守される。し
かも、演算レジスタ21,22への演算転送命令実行終
了後は、テーブル即値データ領域29の最後に記述され
ている初期化処理等のエラー処理ルーチン38が実行さ
れる。これにより、従来のウォッチドッグタイマ等によ
る外部監視法よりも遥かに速い応答性で、エラー検出か
らエラー処理までの処理を行うことができる。
【0022】次に、本実施例で採用するパイプライン制
御方式について図4に基づいて説明する。本実施例のパ
イプラインは、例えば、命令フェッチ,命令デコード,
命令実行の各ステージからなる3段のパイプラインとし
て構成され、全命令がこの3段のパイプラインで遅滞な
く処理できるように設計されている。各ステージはそれ
ぞれ1サイクルで実行され、3サイクルで1命令を実行
するようになっているが、3段のパイプラインにより3
つの命令を並行処理することで、見掛上、1命令を1サ
イクルで実行するのと等価となっている。1サイクル
(各ステージ)の時間は、タイミングジェネレータから
出力されるCPU切替信号(クロック信号)により規定
されている。このCPU切替信号は、ローレベルの時間
TLoとハイレベルの時間THiとが同一であり、このCP
U切替信号のローレベル期間でCPU0(Lタスク)の
命令フェッチを行い、ハイレベル期間でCPU1(Aタ
スク)の命令フェッチを行うことにより、CPU0(L
タスク)とCPU1(Aタスク)の両プログラムを1:
1の時分割比で並行にパイプライン処理するようになっ
ている。これにより、両タスクの命令フェッチと命令デ
コードは、逆CPU関係(一方のタスクの命令をフェッ
チしている間に他方のタスクの命令をデコードする関
係)となっている。
御方式について図4に基づいて説明する。本実施例のパ
イプラインは、例えば、命令フェッチ,命令デコード,
命令実行の各ステージからなる3段のパイプラインとし
て構成され、全命令がこの3段のパイプラインで遅滞な
く処理できるように設計されている。各ステージはそれ
ぞれ1サイクルで実行され、3サイクルで1命令を実行
するようになっているが、3段のパイプラインにより3
つの命令を並行処理することで、見掛上、1命令を1サ
イクルで実行するのと等価となっている。1サイクル
(各ステージ)の時間は、タイミングジェネレータから
出力されるCPU切替信号(クロック信号)により規定
されている。このCPU切替信号は、ローレベルの時間
TLoとハイレベルの時間THiとが同一であり、このCP
U切替信号のローレベル期間でCPU0(Lタスク)の
命令フェッチを行い、ハイレベル期間でCPU1(Aタ
スク)の命令フェッチを行うことにより、CPU0(L
タスク)とCPU1(Aタスク)の両プログラムを1:
1の時分割比で並行にパイプライン処理するようになっ
ている。これにより、両タスクの命令フェッチと命令デ
コードは、逆CPU関係(一方のタスクの命令をフェッ
チしている間に他方のタスクの命令をデコードする関
係)となっている。
【0023】また、例えばCPU1(Aタスク)が複数
のサイクルを要する命令をフェッチした場合、CPU切
替信号によるプログラムの切替時に、この命令は実行途
中で切り替えられることになるが、この場合、命令デコ
ーダ・命令シーケンサ25が命令サイクル状態を記憶し
ており、次のCPU1のサイクルに、命令の途中状態よ
り実行開始し、必要サイクル数使って実行完了する。つ
まり、命令の必要サイクル数によらず、1:1の時分割
比で切り替えられる。このため、CPU0(Lタスク)
とCPU1(Aタスク)は、時間的独立性が確保され、
2つのCPUが存在しているように動作する。
のサイクルを要する命令をフェッチした場合、CPU切
替信号によるプログラムの切替時に、この命令は実行途
中で切り替えられることになるが、この場合、命令デコ
ーダ・命令シーケンサ25が命令サイクル状態を記憶し
ており、次のCPU1のサイクルに、命令の途中状態よ
り実行開始し、必要サイクル数使って実行完了する。つ
まり、命令の必要サイクル数によらず、1:1の時分割
比で切り替えられる。このため、CPU0(Lタスク)
とCPU1(Aタスク)は、時間的独立性が確保され、
2つのCPUが存在しているように動作する。
【0024】更に、本実施例では、各タスクのプログラ
ムに含まれる分岐命令をフェッチしたときには、当該分
岐命令が含まれるタスクの次の命令フェッチステージで
分岐先アドレスの命令をフェッチするために、命令デコ
ードステージで、分岐先アドレスをセットするように構
成されている。
ムに含まれる分岐命令をフェッチしたときには、当該分
岐命令が含まれるタスクの次の命令フェッチステージで
分岐先アドレスの命令をフェッチするために、命令デコ
ードステージで、分岐先アドレスをセットするように構
成されている。
【0025】本実施例のパイプライン処理の手順は、図
4に示すように、CPU切替信号によりCPU0(Lタ
スク)の命令フェッチとCPU1(Aタスク)の命令フ
ェッチとを1:1の時分割比で交互に繰り返し、一方の
タスクの命令をフェッチしている間に他方のタスクの命
令(1サイクル前にフェッチされた命令)をデコードす
ると共に、他方のタスクの命令をデコードしている間に
一方のタスクの命令(1サイクル前にデコードされた命
令)を実行する。これにより、2つのタスクのプログラ
ムを1:1の時分割比で並行にパイプライン処理するも
のである。
4に示すように、CPU切替信号によりCPU0(Lタ
スク)の命令フェッチとCPU1(Aタスク)の命令フ
ェッチとを1:1の時分割比で交互に繰り返し、一方の
タスクの命令をフェッチしている間に他方のタスクの命
令(1サイクル前にフェッチされた命令)をデコードす
ると共に、他方のタスクの命令をデコードしている間に
一方のタスクの命令(1サイクル前にデコードされた命
令)を実行する。これにより、2つのタスクのプログラ
ムを1:1の時分割比で並行にパイプライン処理するも
のである。
【0026】このパイプライン処理中に、図4に示すよ
うに、例えば、CPU0のX+1番地の命令が分岐命令
(JMP)であるとすると、このX+1番地の分岐命令
をデコードする命令デコードステージで、分岐先アドレ
ス(XX番地)をセットし、当該分岐命令が含まれるタ
スク(CPU0)の次の命令フェッチステージで、分岐
先アドレス(XX番地)の命令をフェッチする。このた
め、分岐命令があっても、パイプラインに無駄サイクル
(遅延サイクル)が生じることは無く、パイプラインの
遅延を防止できる。この場合、分岐先アドレスのセット
(分岐命令実行)を命令デコードステージで行う結果、
分岐命令については命令実行ステージで何も処理を行わ
ないことになる。
うに、例えば、CPU0のX+1番地の命令が分岐命令
(JMP)であるとすると、このX+1番地の分岐命令
をデコードする命令デコードステージで、分岐先アドレ
ス(XX番地)をセットし、当該分岐命令が含まれるタ
スク(CPU0)の次の命令フェッチステージで、分岐
先アドレス(XX番地)の命令をフェッチする。このた
め、分岐命令があっても、パイプラインに無駄サイクル
(遅延サイクル)が生じることは無く、パイプラインの
遅延を防止できる。この場合、分岐先アドレスのセット
(分岐命令実行)を命令デコードステージで行う結果、
分岐命令については命令実行ステージで何も処理を行わ
ないことになる。
【0027】以上説明した本実施例によれば、Lタスク
・Aタスクのプログラムの各命令にタスクの種類を判別
するためのタスク判別ビット30を付加し、各命令をプ
ログラムメモリ12から読み出す際に、その命令の属す
るタスクの種類をエラー検出回路24により判別してエ
ラーの有無を判定するようにしたので、ノイズ等の予期
せぬ原因により誤って他のタスクのアドレスに分岐した
場合には、その命令をデコードする前に早期にエラーの
検出することができて、その命令をNOP等の無効命令
とすることができ、メモリデータ,ポートデータ等の破
壊を未然に防止でき、各タスクは、他のタスクから保護
され、独立性が確保される。
・Aタスクのプログラムの各命令にタスクの種類を判別
するためのタスク判別ビット30を付加し、各命令をプ
ログラムメモリ12から読み出す際に、その命令の属す
るタスクの種類をエラー検出回路24により判別してエ
ラーの有無を判定するようにしたので、ノイズ等の予期
せぬ原因により誤って他のタスクのアドレスに分岐した
場合には、その命令をデコードする前に早期にエラーの
検出することができて、その命令をNOP等の無効命令
とすることができ、メモリデータ,ポートデータ等の破
壊を未然に防止でき、各タスクは、他のタスクから保護
され、独立性が確保される。
【0028】但し、本発明は、エラーを検出したときの
処理をNOP等の無効命令とするものに限定されず、例
えばエラーが発生したタスクをリセットするようにして
も良いことは言うまでもない。また、本実施例では、タ
スク判別ビット30をパリティビットとしたが、例え
ば、タスク判別ビット30の値を、Lタスクが“0”、
Aタスクが“1”にセットして、タスク判別ビット30
の値が“0”か“1”かによってタスクの種類を判別す
るようにしても良い。
処理をNOP等の無効命令とするものに限定されず、例
えばエラーが発生したタスクをリセットするようにして
も良いことは言うまでもない。また、本実施例では、タ
スク判別ビット30をパリティビットとしたが、例え
ば、タスク判別ビット30の値を、Lタスクが“0”、
Aタスクが“1”にセットして、タスク判別ビット30
の値が“0”か“1”かによってタスクの種類を判別す
るようにしても良い。
【0029】また、タスク判別ビット30のビット数も
1ビットに限定されず、複数ビットであっても良く、ま
た、タスクの数が3以上の場合には複数ビットでタスク
判別ビットを構成すれば良い。勿論、タスク判別ビット
30を設ける位置もMSBに限定されず、他の位置であ
っても良いことは言うまでもない。
1ビットに限定されず、複数ビットであっても良く、ま
た、タスクの数が3以上の場合には複数ビットでタスク
判別ビットを構成すれば良い。勿論、タスク判別ビット
30を設ける位置もMSBに限定されず、他の位置であ
っても良いことは言うまでもない。
【0030】その他、本発明は、エラー検出回路24の
構成を適宜変更しても良い等、要旨を逸脱しない範囲内
で種々変更して実施できる。
構成を適宜変更しても良い等、要旨を逸脱しない範囲内
で種々変更して実施できる。
【0031】
【発明の効果】以上の説明から明らかなように、本発明
によれば、複数のタスクを時分割並行処理する際に、各
命令に設けられたタスク判別ビットの値により、エラー
検出手段でタスクの種類を判別して、エラーの有無を判
定するようにしたので、もし、ノイズ等の予期せぬ原因
により誤って他のタスクのアドレスに分岐した場合に
は、これをウォッチドッグタイマ等による外部監視法よ
りも遥かに速い応答性で検出することができて、メモリ
データ,ポートデータ等の破壊を未然に防止でき、かつ
各タスクのプログラムの独立性が確保される。また、タ
スクの数が2個の場合、タスク判定ビットとして、パリ
ティビットを使えば、命令コードチェックも実施でき
る。
によれば、複数のタスクを時分割並行処理する際に、各
命令に設けられたタスク判別ビットの値により、エラー
検出手段でタスクの種類を判別して、エラーの有無を判
定するようにしたので、もし、ノイズ等の予期せぬ原因
により誤って他のタスクのアドレスに分岐した場合に
は、これをウォッチドッグタイマ等による外部監視法よ
りも遥かに速い応答性で検出することができて、メモリ
データ,ポートデータ等の破壊を未然に防止でき、かつ
各タスクのプログラムの独立性が確保される。また、タ
スクの数が2個の場合、タスク判定ビットとして、パリ
ティビットを使えば、命令コードチェックも実施でき
る。
【図1】本発明の一実施例を示すマイクロコンピュータ
のブロック図
のブロック図
【図2】プログラムメモリ内におけるプログラムとテー
ブル即値データの格納状態を概念的に示す図
ブル即値データの格納状態を概念的に示す図
【図3】エラー検出回路の具体的構成を示すブロック図
【図4】パイプライン処理を説明するタイムチャート
11…CPU、12…プログラムメモリ、13…データ
メモリ、19,20…アドレスレジスタ、21,22…
演算レジスタ、23…プログラムカウンタ、24…エラ
ー検出回路、25…命令デコーダ・命令シーケンサ、2
6…演算器、27…CPU0(Lタスク)プログラム領
域、28…CPU1(Aタスク)プログラム領域、29
…テーブル即値データ領域、30…タスク判定ビット、
36,37…要注意命令判定ビット。
メモリ、19,20…アドレスレジスタ、21,22…
演算レジスタ、23…プログラムカウンタ、24…エラ
ー検出回路、25…命令デコーダ・命令シーケンサ、2
6…演算器、27…CPU0(Lタスク)プログラム領
域、28…CPU1(Aタスク)プログラム領域、29
…テーブル即値データ領域、30…タスク判定ビット、
36,37…要注意命令判定ビット。
Claims (2)
- 【請求項1】 複数のプログラムを数サイクルごとに一
定時分割で切り替えながら並行処理する機能を備えたマ
イクロコンピュータにおいて、前記複数のプログラムの
各命令には、プログラムの種類を判別するためのタスク
判別ビットが付加されており、命令読出し後、エラーチ
ェックすることより、各プログラムは、別のプログラム
から保護され、独立性が確保されることを特徴とするマ
イクロコンピュータ。 - 【請求項2】 複数のプログラムを数サイクルごとに一
定時分割で切り替えながら並行処理する機能を備えたマ
イクロコンピュータにおいて、2個のプログラムを並行
処理する場合、タスク判定ビットとして、パリティビッ
トを付加することを特徴とするマイクロコンピュータ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05038268A JP3129873B2 (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
DE69418916T DE69418916T2 (de) | 1993-02-26 | 1994-02-25 | Multitaskingverarbeitungseinheit |
US08/202,181 US6304957B1 (en) | 1993-02-26 | 1994-02-25 | Multitask processing unit |
EP94102917A EP0613085B1 (en) | 1993-02-26 | 1994-02-25 | Multitask processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05038268A JP3129873B2 (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06250855A true JPH06250855A (ja) | 1994-09-09 |
JP3129873B2 JP3129873B2 (ja) | 2001-01-31 |
Family
ID=12520577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05038268A Expired - Fee Related JP3129873B2 (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3129873B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6074059A (ja) * | 1983-09-30 | 1985-04-26 | Fujitsu Ltd | 記憶装置アクセス制御方式 |
JPH0287239A (ja) * | 1988-09-22 | 1990-03-28 | Nec Corp | マイクロプログラム処理装置 |
JPH03266154A (ja) * | 1990-03-16 | 1991-11-27 | Nec Corp | 情報処理装置 |
-
1993
- 1993-02-26 JP JP05038268A patent/JP3129873B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6074059A (ja) * | 1983-09-30 | 1985-04-26 | Fujitsu Ltd | 記憶装置アクセス制御方式 |
JPH0287239A (ja) * | 1988-09-22 | 1990-03-28 | Nec Corp | マイクロプログラム処理装置 |
JPH03266154A (ja) * | 1990-03-16 | 1991-11-27 | Nec Corp | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3129873B2 (ja) | 2001-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100588790B1 (ko) | 데이터처리기에서의후속명령처리에작용하는방법및장치 | |
EP0702297B1 (en) | A data processor with breakpoint circuit | |
JP4703718B2 (ja) | 選択的サブルーチンリターン構造 | |
US20070136565A1 (en) | Stack underflow debug with sticky base | |
US7243372B2 (en) | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection | |
EP0613085B1 (en) | Multitask processing unit | |
US8127183B2 (en) | Microcomputer system | |
US5469552A (en) | Pipelined data processor having combined operand fetch and execution stage to reduce number of pipeline stages and penalty associated with branch instructions | |
US6990569B2 (en) | Handling problematic events in a data processing apparatus | |
JP3129873B2 (ja) | マイクロコンピュータ | |
JP2950080B2 (ja) | マイクロコンピュータ | |
JPH06250857A (ja) | マイクロコンピュータ | |
JPH06250856A (ja) | マイクロコンピュータ | |
JPS62197831A (ja) | デ−タ処理装置 | |
EP0525672A2 (en) | Microprocessor with program tracing | |
JP2536726B2 (ja) | マイクロプロセッサ | |
JP4702004B2 (ja) | マイクロコンピュータ | |
JP2503210B2 (ja) | マイクロプログラム制御装置 | |
JP2871429B2 (ja) | 暴走監視機能を有するプロセッサ | |
JPH03209523A (ja) | 命令データエラー検出方式 | |
JPH0258648B2 (ja) | ||
JPH06139084A (ja) | 情報処理装置 | |
JPH0371236A (ja) | エラー検出システム | |
JPH04290130A (ja) | プロセッサのエラー管理方式 | |
JPH0752402B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19980120 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101117 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121117 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |