JP2950080B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ

Info

Publication number
JP2950080B2
JP2950080B2 JP5038267A JP3826793A JP2950080B2 JP 2950080 B2 JP2950080 B2 JP 2950080B2 JP 5038267 A JP5038267 A JP 5038267A JP 3826793 A JP3826793 A JP 3826793A JP 2950080 B2 JP2950080 B2 JP 2950080B2
Authority
JP
Japan
Prior art keywords
instruction
task
address
program
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.)
Expired - Lifetime
Application number
JP5038267A
Other languages
English (en)
Other versions
JPH06250863A (ja
Inventor
秀昭 石原
耕一 前田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP5038267A priority Critical patent/JP2950080B2/ja
Priority to DE69418916T priority patent/DE69418916T2/de
Priority to EP94102917A priority patent/EP0613085B1/en
Priority to US08/202,181 priority patent/US6304957B1/en
Publication of JPH06250863A publication Critical patent/JPH06250863A/ja
Application granted granted Critical
Publication of JP2950080B2 publication Critical patent/JP2950080B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、暴走検出構成に改良を
施したマイクロコンピュータに関するものである。
【0002】
【従来の技術】例えば、命令のワード数が固定されてい
ない多ワード命令体系(例えば1ワード命令もあれば、
2ワード以上の命令もあるという命令体系)では、オペ
コード・オペランドの誤認識により、命令を誤って解釈
してしまうことがあり、これがプログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く原因となってい
た。また、アドレスエラー等により、プログラムアドレ
スがプログラムメモリ内に設けられたテーブル即値デー
タ領域のアドレスに分岐し、テーブル即値データをオペ
コードとして認識して実行を開始してしまうことがあ
り、これもプログラム暴走やデータメモリ内の重要情報
の大量破壊を招く原因となっていた。このような場合の
復帰方法として、従来は、ウォッチドッグタイマ等の暴
走監視ロジックを周辺回路に設けていた。
【0003】
【発明が解決しようとする課題】しかしながら、上記従
来のようにウォッチドッグタイマ等の暴走監視ロジック
を設けた構成では、外部から暴走を監視するために、暴
走を検出するまでにタイムロスがあり、その間にメモリ
データやポートデータ等が破壊されてしまう欠点があ
る。
【0004】本発明はこのような事情を考慮してなされ
たもので、その目的は、オペコード・オペランドの誤認
識やアドレスエラー等によるプログラムの暴走に対し
て、ウォッチドッグタイマ等による外部監視法よりも遥
かに速い応答性で対処できるマイクロコンピュータを提
供することにある。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載のマイクロコンピュータは、プログラ
ムを格納したROM内に、演算に使うデータ領域が格納
されているものにおいて、前記プログラムの各命令及び
前記データ領域の各データは、プログラム暴走に至る危
険性のある分岐命令等の要注意命令であるか否かを、命
令内の少数ビットで判別できるように設計されており、
前記データ領域の各データについては、前記少数ビット
の値非要注意命令を示す値に設定される構成としたも
のである。また、請求項2記載のマイクロコンピュータ
は、前記データ領域の最後にエラー処理ルーチンが配置
される構成としたものである。
【0006】
【作用】万一、アドレスエラー等により、プログラムア
ドレスが演算に使うデータ領域のアドレスに分岐し、そ
のデータをオペコードとして認識して実行を開始したと
しても、データの要注意命令判別ビットに埋め込まれた
値により、非要注意命令を実行していくのみであり、分
岐命令等の要注意命令を実行することはない(請求項
1)。しかも、アドレスエラー等によりプログラムアド
レスがデータ領域のアドレスに分岐した場合には、デー
タ領域の最後に配置されたエラー処理ルーチンが実行さ
れることによって速やかにエラー処理を実行させること
ができて、従来のウォッチドッグタイマ等による外部監
視法よりも遥かに速い応答性で、エラー検出からエラー
処理までの処理を行うことができる(請求項2)
【0007】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。本実施例のマイクロコンピュータは、例えばワ
ンチップマイクロコンピュータにより構成され、CPU
11と、ROMにより構成されたプログラムメモリ12
と、RAMにより構成されたデータメモリ13と、I/
Oブロック14(入出力ピン)と、後述するCPU切替
信号(クロック信号)を発生するタイミングジェネレー
タ(図示せず)と、データを送受信するデータバス15
と、アドレス信号を送受信するアドレスバス16と、リ
ード信号とライト信号をそれぞれ送受信するコントロー
ルバス17,18とを備えている。
【0008】上記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に出力される。
【0009】また、CPU11内には、プログラムメモ
リ12から読み込まれた命令の属するタスクの種類を判
別してそのエラーを検出するエラー検出手段たるエラー
検出回路24と、このエラー検出回路24を通過した命
令をデコード(解読)する命令デコーダ・命令シーケン
サ25が設けられ、この命令デコーダ・命令シーケンサ
25によりデコードした命令の内容に応じて、演算器2
6(ALU)で演算レジスタ21,22を用いて演算し
たり、リード信号又はライト信号をコントロールバス1
7,18に出力するようになっている。
【0010】一方、プログラムメモリ12内には、CP
U0用(Lタスク用)のプログラム領域27と、CPU
1用(Aタスク用)のプログラム領域28と、テーブル
即値データ領域29とが設けられている。この場合、C
PU0用のプログラム領域27に格納されたLタスク
は、プログラム暴走に至る危険性のある分岐命令が禁止
された固定ループ化されたプログラムで構成されてい
る。これにより、Lタスクのプログラムの実行時には0
番地から実行を開始し、1番地,2番地,3番地,…と
順々に命令を実行していき、その後、所定番地まで行く
と、プログラムカウンタ23がオーバーフローして0番
地に戻り、以後、上述した番地順の命令実行を繰り返す
ようになる。また、このLタスクは、命令が全て1ワー
ド命令に固定されている。この理由は、命令のワード数
が固定されていない命令体系(例えば1ワード命令もあ
れば、2ワード命令もあるという命令体系)では、2ワ
ード命令を読み間違えて1ワード命令と解釈した場合
に、次のワードは本来の命令ではないので、何を実行す
るか分からないからである。
【0011】このLタスクは、シーケンス制御の処理を
行うのに適し、そのプログラム中に、他のタスクである
Aタスクの暴走監視用のルーチンと、システムのフェイ
ルセーフを成立させるためのバックアップシーケンス用
のルーチンが含まれている。更に、このLタスクは、固
定ループ動作によるタイマとしての機能も備え、例えば
インクリメント命令又はデクリメント命令を実行させて
そのカウント値が所定の設定値に達したときに、Aタス
クの処理に割込みを発生させることで、タイマ割込みと
等価な定時間処理が可能となっている。
【0012】一方、Aタスクは、Lタスクで禁止されて
いる分岐命令も許容されており、例えば複雑な解析処理
・数値処理に適している。このAタスクについても、L
タスクと同じく、命令が全て1ワード命令に固定されて
いる。このAタスクとLタスクは、1ワード内にオペコ
ードとオペランド(アドレス)の両方が割り付けられて
いる。
【0013】次に、本実施例で採用するパイプライン制
御方式について図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関係(一方のタスクの命令をフェッ
チしている間に他方のタスクの命令をデコードする関
係)となっている。
【0014】また、例えばCPU1(Aタスク)が複数
のサイクルを要する命令をフェッチした場合、CPU切
替信号によるプログラムの切替時に、この命令は実行途
中で切り替えられることになるが、この場合、命令デコ
ーダ・命令シーケンサ25が命令サイクル状態を記憶し
ており、次のCPU1のサイクルに、命令の途中状態よ
り実行開始し、必要サイクル数使って実行完了する。つ
まり、命令の必要サイクル数によらず、1:1の時分割
比で切り替えられる。このため、CPU0(Lタスク)
とCPU1(Aタスク)は、時間的独立性が確保され、
2つのCPUが存在しているように動作する。
【0015】更に、本実施例では、各タスクのプログラ
ムに含まれる分岐命令をフェッチしたときには、当該分
岐命令が含まれるタスクの次の命令フェッチステージで
分岐先アドレスの命令をフェッチするために、命令デコ
ードステージで、分岐先アドレスをセットするように構
成されている。
【0016】本実施例のパイプライン処理の手順は、図
4に示すように、CPU切替信号によりCPU0(Lタ
スク)の命令フェッチとCPU1(Aタスク)の命令フ
ェッチとを1:1の時分割比で交互に繰り返し、一方の
タスクの命令をフェッチしている間に他方のタスクの命
令(1サイクル前にフェッチされた命令)をデコードす
ると共に、他方のタスクの命令をデコードしている間に
一方のタスクの命令(1サイクル前にデコードされた命
令)を実行する。これにより、2つのタスクのプログラ
ムを1:1の時分割比で並行にパイプライン処理するも
のである。
【0017】このパイプライン処理中に、図4に示すよ
うに、例えば、CPU0のX+1番地の命令が分岐命令
(JMP)であるとすると、このX+1番地の分岐命令
をデコードする命令デコードステージで、分岐先アドレ
ス(XX番地)をセットし、当該分岐命令が含まれるタ
スク(CPU0)の次の命令フェッチステージで、分岐
先アドレス(XX番地)の命令をフェッチする。このた
め、分岐命令があっても、パイプラインに無駄サイクル
(遅延サイクル)が生じることは無く、パイプラインの
遅延を防止できる。この場合、分岐先アドレスのセット
(分岐命令実行)を命令デコードステージで行う結果、
分岐命令については命令実行ステージで何も処理を行わ
ないことになる。
【0018】一方、図2に示すように、プログラムメモ
リ12内のCPU0・CPU1のプログラム領域27,
28に格納されたLタスク・Aタスクのプログラムの各
命令には、タスクの種類を判別するタスク判別ビット3
0が例えばMSB(最上位ビット)に設けられている。
本実施例では、タスク判別ビット30をパリティビット
とし、Lタスクを奇数パリティ、Aタスクを偶数パリテ
ィとしている。この場合、タスク判別のみでなく、命令
コードチェックも実施できる。
【0019】これに対応して、CPU11内には、プロ
グラムメモリ12から読み込まれた命令の属するタスク
の種類をパリティチェックにより判別してそのエラーを
検出するエラー検出回路24が設けられている。このエ
ラー検出回路24は、ノイズ等の予期せぬ原因により誤
って他のタスクを実行し始めようとしているか否かを検
出するもので、図3に示すように、タスク判別回路3
1,エラーフラグ回路32,ノーオペレーション(NO
P)コード回路33,ハイアクティブ型・ローアクティ
ブ型の両トランスファゲート34,35から構成されて
いる。
【0020】上記タスク判別回路31は、プログラムメ
モリ12から読み込まれた命令の属するタスクの種類を
パリティチェックにより判別し(即ち奇数パリティであ
ればLタスク、偶数パリティであればAタスクと判別
し)、この判別結果をCPU切替信号と比較して、エラ
ーが発生しているか否かを判定し、もし、エラーが発生
していれば、エラーフラグ回路32へエラー信号(ハイ
レベル信号)を出力し、エラーが発生しているタスクの
アドレスレジスタ19,20をリセットする。この際、
エラー信号(ハイレベル信号)を、両トランスファゲー
ト34,35のコントロール端子にも与えて、ハイアク
ティブ型のトランスファーゲート34をオンさせ、NO
Pコード回路33から命令デコーダ・命令シーケンサ2
5へNOPコードの信号を出力する一方、ローアクティ
ブ型のトランスファーゲート35をオフさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を阻止す
る。このため、ノイズ等の予期せぬ原因により誤って他
のタスクのアドレスに分岐してその命令を実行し始めよ
うとした場合には、即座に1命令サイクルでNOPとす
ることができて、メモリデータ,ポートデータ等の破壊
を未然に防止できる。
【0021】一方、エラーが発生していない場合には、
タスク判別回路31の出力をローレベルに維持して、ハ
イアクティブ型のトランスファーゲート34をオフさ
せ、NOPコードの通過を阻止する一方、ローアクティ
ブ型のトランスファーゲート35をオンさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を許容する
ものである。
【0022】ところで、従来構成のものでは、多ワード
命令構成の場合、オペコード・オペランドの誤認識が、
プログラム暴走やデータメモリ内の重要情報の大量破壊
を招く原因となっていた。また、アドレスエラー等によ
り、プログラムアドレスがテーブル即値データ領域29
のアドレスに分岐し、テーブル即値データをオペコード
として認識して実行を開始し、プログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く可能性もあった。
【0023】これに対して、本実施例では、全命令を1
ワード固定長の設計とし、1ワード内にオペコードとオ
ペランドの両方を割り付けている。また、アドレス構成
は、プログラムメモリアドレスとデータメモリアドレス
を完全に分離している。この構成により、オペコード・
オペランドの誤認識やデータメモリ内データの命令実行
等によるプログラム暴走を未然に防止できる。
【0024】また、図2に示すように、本実施例のオペ
コードは、分岐命令等の危険命令と、その他の命令との
割り付けを分けてあり、オペコード内の特定ビットで判
別できる構成となっている。図2の要注意命令判別ビッ
ト37がこれに該当する。この要注意命令判別ビット3
7が“0”の場合、全てデータメモリ13から演算レジ
スタ21,22への演算転送命令(リード系命令)であ
る。テーブル即値データ領域29では、要注意命令判別
ビット37に“0”を埋め込む。
【0025】万一、アドレスエラー等により、プログラ
ムアドレスがテーブル即値データ領域29のアドレスに
分岐し、命令デコーダ・命令シーケンサ25がテーブル
即値データをオペコードとして認識して実行を開始した
としても、要注意命令判別ビット37にセットされた値
“0”により、データメモリ13から演算レジスタ2
1,22への演算転送命令を継続するのみであり、デー
タメモリ13内の重要情報は保守される。しかも、演算
レジスタ21,22への演算転送命令実行終了後は、テ
ーブル即値データ領域29の最後に記述されている初期
化処理等のエラー処理ルーチン38が命令デコーダ・命
令シーケンサ25によって実行される。これにより、従
来のウォッチドッグタイマ等による外部監視法よりも遥
かに速い応答性で、エラー検出からエラー処理までの処
理を行うことができる。
【0026】尚、本実施例では、テーブル即値データ領
域29の最後に、初期化ルーチン等のエラー処理ルーチ
ン38を書き込んでいるが、勿論、パリティチェックで
エラーを判定する命令を書き込んでも良いことは言うま
でもない。また、多ワード命令のデータワードにも要注
意命令判別ビットを埋め込むようにしても良く、このよ
うにすれば、オペコード・オペランドの誤認識を一層確
実に防止できる。
【0027】また、要注意命令判別ビット36,37の
ビット数も1ビットに限定されず、複数ビットであって
も良く、勿論、要注意命令判別ビット36,37を設け
る位置も本実施例に限定されないことは言うまでもな
い。
【0028】その他、本発明は、複数のタスクを時分割
並行処理するものに限定されず、1つのタスクのみを実
行するものについても、同様に適用して実施できる等、
要旨を逸脱しない範囲内で種々変更して実施できる。
【0029】
【発明の効果】以上の説明から明らかなように、本発明
によれば、万一、アドレスエラー等により、プログラム
アドレスがデータ領域のアドレスに分岐した場合でも、
データの要注意命令判別ビットに埋め込まれた値によ
り、非要注意命令を実行していくのみであり、データメ
モリ内の重要情報を保守できる(請求項1)。しかも、
アドレスエラー等によりプログラムアドレスがデータ領
域のアドレスに分岐した場合には、データ領域の最後に
配置されたエラー処理ルーチンが実行されることにより
速やかにエラー処理を実行させることができて、従来の
ウォッチドッグタイマ等による外部監視法よりも遥かに
速い応答性で、エラー検出からエラー処理までの処理を
行うことができる(請求項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…要注意命令判定ビット、38…エラー処理
ルーチン
フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 11/00 G06F 9/30 - 9/355 G06F 9/38 G06F 11/28 - 11/34

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 プログラムを格納したROM内に、演算
    に使うデータ領域が格納されているマイクロコンピュー
    タにおいて、 前記プログラムの各命令及び前記データ領域の各データ
    は、プログラム暴走に至る危険性のある分岐命令等の要
    注意命令であるか否かを、命令内の少数ビットで判別で
    きるように設計されており、前記データ領域の各データ
    については、前記少数ビットの値非要注意命令を示す
    値に設定されていることを特徴とするマイクロコンピュ
    ータ。
  2. 【請求項2】 前記データ領域の最後にエラー処理ルー
    チンが配置されていることを特徴とする請求項1記載の
    マイクロコンピュータ。
JP5038267A 1993-02-26 1993-02-26 マイクロコンピュータ Expired - Lifetime JP2950080B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP5038267A JP2950080B2 (ja) 1993-02-26 1993-02-26 マイクロコンピュータ
DE69418916T DE69418916T2 (de) 1993-02-26 1994-02-25 Multitaskingverarbeitungseinheit
EP94102917A EP0613085B1 (en) 1993-02-26 1994-02-25 Multitask processing unit
US08/202,181 US6304957B1 (en) 1993-02-26 1994-02-25 Multitask processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5038267A JP2950080B2 (ja) 1993-02-26 1993-02-26 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH06250863A JPH06250863A (ja) 1994-09-09
JP2950080B2 true JP2950080B2 (ja) 1999-09-20

Family

ID=12520547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5038267A Expired - Lifetime JP2950080B2 (ja) 1993-02-26 1993-02-26 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP2950080B2 (ja)

Also Published As

Publication number Publication date
JPH06250863A (ja) 1994-09-09

Similar Documents

Publication Publication Date Title
KR100588790B1 (ko) 데이터처리기에서의후속명령처리에작용하는방법및장치
JPH01161448A (ja) 開発支援特徴を具えるデータプロセツサ
JP4703718B2 (ja) 選択的サブルーチンリターン構造
EP0461792A2 (en) Master/slave checking system
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
US4373182A (en) Indirect address computation circuit
US4945472A (en) Data processor with I/O area detection
JP2950080B2 (ja) マイクロコンピュータ
US6990569B2 (en) Handling problematic events in a data processing apparatus
JP3129873B2 (ja) マイクロコンピュータ
JPH06250857A (ja) マイクロコンピュータ
KR940001268B1 (ko) 가변길이의 각 명령에 대하여 지시된 미정의 어드레싱의 감사기능을 가지는 데이타 프로세서
JPH06250856A (ja) マイクロコンピュータ
JP2536726B2 (ja) マイクロプロセッサ
JP4702004B2 (ja) マイクロコンピュータ
EP0525672A2 (en) Microprocessor with program tracing
JP2871429B2 (ja) 暴走監視機能を有するプロセッサ
JP2503210B2 (ja) マイクロプログラム制御装置
SU1124316A1 (ru) Микро-ЭВМ
JPH0744407A (ja) マイクロコンピュータのバックアップ装置
JPH0752402B2 (ja) データ処理装置
JPS58115559A (ja) プログラム暴走検出回路
JPH07105000A (ja) フェッチエラー制御装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120709

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120709

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 14

EXPY Cancellation because of completion of term