JP4893427B2 - マイクロコンピュータシステム - Google Patents

マイクロコンピュータシステム Download PDF

Info

Publication number
JP4893427B2
JP4893427B2 JP2007096634A JP2007096634A JP4893427B2 JP 4893427 B2 JP4893427 B2 JP 4893427B2 JP 2007096634 A JP2007096634 A JP 2007096634A JP 2007096634 A JP2007096634 A JP 2007096634A JP 4893427 B2 JP4893427 B2 JP 4893427B2
Authority
JP
Japan
Prior art keywords
task
cpu
runaway
address register
area
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 - Fee Related
Application number
JP2007096634A
Other languages
English (en)
Other versions
JP2008033890A (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 JP2007096634A priority Critical patent/JP4893427B2/ja
Priority to US11/819,555 priority patent/US8127183B2/en
Publication of JP2008033890A publication Critical patent/JP2008033890A/ja
Application granted granted Critical
Publication of JP4893427B2 publication Critical patent/JP4893427B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、複数のタスクを時分割並行的に実施可能であると共に、それらの内1つのタスクが最重要タスクに設定されているマイクロコンピュータシステムに関する。
複数のタスクを時分割並行的に実施可能であるマルチタスク構成のマイクロコンピュータにおいては、それら複数のタスクのうちでシステム的な処理を司るタスク、即ち、最も基層的な処理を行なうタスクの重要度が高くなる。何故なら、その最重要タスクが暴走した場合には、システム全体に多大な影響を及ぼすことになるからである。
一般に、上記のような暴走対策としてはウォッチドッグタイマ機能が周知であるが、ウォッチドッグタイマを用いた場合、暴走が発生してからそれが検知されるまでのタイムラグが比較的大きいため、暴走状態が放置される期間が長くなり、マイクロコンピュータシステムに対して及ぼす影響がより大きくなるおそれがある。
また、特許文献1には、命令コードの一部に判定用のデータを埋め込むようにして、CPUがフェッチした命令が現在実行すべきタスクの命令か否かを識別する技術が開示されている。
特開平6−250855号公報
しかしながら、特許文献1の構成では、有限の命令コードの一部を判定用データとして使用することになり、使用できる命令コード数が制限されてしまうという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、命令コードの一部を使用することなく、タスクの暴走を迅速に検知することができるマイクロコンピュータシステムを提供することにある。
請求項1記載のマイクロコンピュータシステムによれば、信号出力部は、CPUが最重要タスクを実行している期間にタスク実行信号を出力し、プログラム領域判定部は、最重要タスクのプログラムが格納されているメモリ領域の開始アドレス,終了アドレスが設定されているレジスタ値とCPUが実行中のアドレスとを比較して、最重要タスクのプログラム領域であるか否かを判定する。そして、暴走検知部は、プログラム領域判定部による判定結果とタスク実行信号の出力状態とが不一致である場合に暴走を検知する。従って、ロジック回路により迅速に暴走を検知することができる。また、暴走検知のために特許文献1のように命令コードの一部を用いないので、命令コードの使用数を制限することがない。
また、データ領域判定部は、最重要タスクのデータが格納されているメモリ領域の開始アドレス,終了アドレスが設定されているレジスタ値とCPUが実行中のアドレスとを比較して、最重要タスクのデータ領域であるか否かを判定する。そして、暴走検知部は、データ領域判定部による判定結果とタスク実行信号の出力状態とが不一致である場合に暴走を検知する。従って、最重要タスクのデータ領域に対して不正なアクセスが行われた場合にも暴走を検知することができる。
また、暴走検知部は、タスク実行信号がアクティブである場合に、領域判定部による判定結果が最重要タスクの領域外であることを示すと暴走を検知する。即ち、このケースでは、最重要タスクのアドレスが何らかの理由により誤って出力されている可能性が高いので、暴走を確実に検知することができる。
更に、暴走検知部は、タスク実行信号がインアクティブである場合に、領域判定部による判定結果が最重要タスクの領域内であることを示すと暴走を検知する。即ち、このケースでは、本来は最重要タスク以外タスクのアドレスであるものが、何らかの理由により誤って出力されている可能性が高いので、暴走を確実に検知することができる。
加えて、CPUは、最重要タスクの各実行周期毎に、当該タスクで管理する監視カウンタの値を「1」ずつ変化させ、最重要タスク以外のタスクにおいては、一定の処理手順毎に各タスクが共通にアクセス可能な共有データ領域に監視カウンタのクリア要求フラグをセットする。そして、最重要タスクでは、共有データ領域にクリア要求フラグがセットされたことを確認すると監視カウンタの値を初期値にクリアし、監視カウンタの値が予め設定された限界値を超えた場合に暴走を検知する。
即ち、上記のように暴走を検知する方式は「ウォッチドッグタイマ」に類似したものであるが、本発明では、CPUにより複数のタスクが時分割並行的に実行されることを前提としているので、最重要タスクとそれ以外のタスクとの処理を組み合わせることで、CPUが最重要タスクにおいて、それ以外のタスクによる挙動が正常かどうかを監視することができる。
また、一般的なウォッチドッグタイマの場合、そのタイムアップ時間は、プログラムによるクリア間隔に対して長めに設定されることが多いので冗長性が高く、暴走が検知させるまでに時間がかかってしまう。これに対して、本発明の方式によれば、監視カウンタ値の変更は最重要タスクにおいて行なわれると共に、そのカウンタ値の変化もCPUが最重要タスクを実行することで監視するので、その他のタスクにおいてクリア要求がセットされなかった場合に、暴走を極めて短時間で検出することができる。
請求項記載のマイクロコンピュータシステムによれば、開始アドレスレジスタ,終了アドレスレジスタの少なくとも何れか一方について、MSB側より1つ以上のビットを予め固定する。即ち、システムの仕様上、最重要タスクのプログラムやデータの配置領域をある程度の範囲に制限しても問題がない場合には、例えば、ノイズなどの影響によってアドレスの上位が変更されないように固定することで、レジスタの一部のビットが影響を受けた場合にアドレスが変動する範囲を制限でき、開始アドレスと終了アドレスとの大小関係の逆転を防止することができる。
請求項記載のマイクロコンピュータシステムによれば、開始アドレスレジスタ,終了アドレスレジスタの少なくとも何れか一方ついて、LSB側より1つ以上のビットも予め固定する。即ち、LSB側のビットを固定しても、領域設定の自由度を大幅に制限することにはならないので、ノイズなどの影響による領域の上限−開始アドレス,下限−終了アドレスの変動をより制限することができる。
請求項記載のマイクロコンピュータシステムによれば、開始アドレスレジスタ,終了アドレスレジスタの少なくとも何れか一方の全ビットを固定する。即ち、開始アドレス,終了アドレスを完全に固定することで、ノイズなどの影響によって終了アドレスが変更されることを回避できる。
請求項記載のマイクロコンピュータシステムによれば、暴走検知部は、暴走を検知すると開始アドレスレジスタ,終了アドレスレジスタをリセットすると共に、CPUに対して割り込みを発生させ、前記CPUは暴走の検知に基づく例外処理を実行する。従って、CPUは、例外処理においてタスクの暴走状態を解消することで、正常な実行状態を復帰させることができる。
請求項記載のマイクロコンピュータシステムによれば、CPUは、例外処理において、開始アドレスレジスタ,終了アドレスレジスタにアドレスデータを再設定する。従って、暴走が発生した場合でも、例外処理を実行することで処理が正常に実行されるように復帰させることができる。
(第1実施例)
以下、本発明をワンチップマイクロコンピュータに適用した場合の第1実施例について図1乃至図5を参照して説明する。図1は、マイクロコンピュータの構成を本発明の要旨に係る部分について示す機能ブロック図である。マイコン(マイクロコンピュータシステム)1は、CPU2,内蔵メモリ3,暴走検知部4などから構成されており、これらは、アドレスバス5,データバス6を介して互いに接続されている。
CPU2は、制御部(信号出力部)7,デコード部8,演算部9,レジスタ部10などを内蔵しており、制御部7は、R/W(リード/ライト)などの制御信号を出力してバス5及び6に対するアクセスを行い、外部とのデータ転送を制御する。内蔵メモリ3にはCPU2の制御プログラムが記憶されており、CPU2が前記プログラムの命令や、内蔵メモリ3に記憶されているデータを読み込むとそれらはレジスタ部10に格納され、デコード部8によりデコードされる。すると、演算部9がその読み込み結果に基づいて演算処理を実行し、演算結果のデータは、必要に応じてレジスタ部10内のデータレジスタ18や内蔵メモリ3に書き込まれる。
また、制御部7は、CPU2がバス5及び6に対してアクセスを行っている間、そのアクセスサイクルが「命令フェッチ」であるか、それ以外の「データアクセス」等であるのかを示す命令フェッチ信号を出力するようになっている。また、CPU2は、例えば2つのタスクを時分割並行的に処理するマルチタスクの実行に特化して構成されており、CPU2が現在実行中であるタスクが、2つのうち何れであるのかを示すタスク情報信号(タスク実行信号)も出力するようになっている。そして、各タスクのプログラムは、内蔵メモリ3に記憶されている。
ここで、2つのタスクのうち一方は、マイコン1におけるシステムの基層的な部分を管理するため重要度がより高いタスク(最重要タスク,以下、タスクSと称す)として設定されている(特許文献1の「Lタスク」に相当する)。即ち、他方のタスク(以下、タスクXと称す)の暴走を監視するためのルーチンや、フェイルセーフ用のバックアップシーケンスなどを実行する。そして、タスクSは、固定ループ動作することでソフトウエアタイマとしても機能するため、分岐命令などのコーディングは予め禁止されており、基本的にループ周回周期毎に実行が必要な処理を行う。
また、他方のタスクX(特許文献1の「Aタスク」に相当する)は、数値演算処理などを行なうのに適したタスクであり、分岐命令の実行も許可されている。そして、タスクXは、タスクSのループ周回回数によって計時される時間を利用した処理も行なうようになっている。
暴走検知部4は、タスクS領域上限レジスタ11,タスクS領域下限レジスタ12,領域判定部13,3入力ANDゲート14及び15などを備えて構成されている。上限レジスタ11,下限レジスタ12には、CPU2が起動した場合の初期処理において、内蔵メモリ3におけるタスクSのアドレスの上限値(終了アドレス),下限値(開始アドレス)が夫々書き込まれるようになっている。ここで、図5にはマイコン1のメモリマップの一例を示す。この場合、タスクXの下限アドレスは1000Hであり、上限アドレスは7FFFHに設定されており、この間がタスクXのプログラム領域に設定されている。
領域判定部13は、アドレスバス3に出力されるアドレスと、上記レジスタ12,13に設定保持されるアドレスとを比較して、前者のアドレスがタスクSのプログラム領域内(上限,下限の間)であるか否かを判定する。そして、タスクSのプログラム領域内である場合は、その状態を示す領域判定信号をアクティブ(ハイ)にする。領域判定信号は、ANDゲート14の入力端子に与えられると共に、NOTゲート16を介してANDゲート15の入力端子にも与えられている。
ANDゲート14の他の入力端子の1つには、CPU2の制御部7によって出力される制御信号R/W(リード/ライト)が与えられている。制御信号R/Wは、CPU2がリードサイクルを実行する場合にロウレベルを、ライトサイクルを実行する場合にハイレベルを示すように出力される。そして、ANDゲート14の残る1つの入力端子には、CPU2の制御部7により出力されるタスク情報信号が、NOTゲート17を介して与えられている。また、上記タスク情報信号は、ANDゲート15の入力端子にもそのまま与えられている。
ANDゲート15の残る1つの入力端子には、CPU2の制御部7によって出力される命令フェッチ信号が与えられている。命令フェッチ信号は、CPU2が命令リードサイクルを実行する場合にハイレベルを示すようになっている。そして、ANDゲート14,15の出力端子は、具体的には図示しないが、CPU2に対して例外処理を実行させるための割り込み信号として出力されるようになっている。
図2は、CPU2の内部におけるレジスタ部10の構成をより詳細に示すものであり、図3は、CPU2の動作の一例を示すタイミングチャートである。レジスタ部10は、データレジスタ群18,タイマ19,タスク切替えレジスタ(PCT)20,プログラムカウンタ(PC)21などを備えている。タイマ19は、予め固定された初期値をCPU2の動作クロックでダウンカウントし、タイマ値が「0」になると初期値がリロードされてダウンカウント動作を繰り返すようになっている。あるいは、カウンタ値を設定することで、任意の値でダウンカウントを繰り返すようになっている。制御部7は、上記タイマ値を参照しており、その値が「1」から「0」に切替わる際にタスク切換え処理を行う。
タスク切替えレジスタ20は、制御部7によって制御され、プログラムカウンタ21との間でアドレスを待避,復帰させるように動作する。例えば、図3に示すように、タイマ値「5」(初期値ではない)の時点でCPU2がタスクXを実行しているとすると((d)参照)、タイマ値の減少に応じてプログラムカウンタ21のアドレス(命令フェッチアドレス)は「2」ずつ(16ビットアクセス)増加して行く((a),(b)参照)。それに応じて、CPU2の実行アドレスは、1つ前のクロックでフェッチされた命令のアドレスとなっている((c)参照)。
そして、タイマ19のタイマ値が「1」になると、制御部7はタスク切替えレジスタ20に待避指令を出力し、その時点のプログラムカウンタ21のアドレス「X+8」より「2」を減じた「X+6」をレジスタ20に待避させる。即ち、この時点の実行アドレスは「X+6」となっているが、そのアドレスに対応する実行結果は完了していないため、次回のタスクXは、アドレス「X+6」から実行を再開することになる。
続いて、タイマ値が「0」になると、制御部7はタスク切替えレジスタ20に復帰指令を出力し、その時点で自身が保持していたタスクSのアドレス「S+0」をプログラムカウンタ21に復帰させる。この時、制御部7は、タスク情報信号をアクティブにする((e)参照)。またこの時、CPU2は実質的にアドレス「S+0」の命令フェッチを行うだけであり、NOP(No OPeration)命令を実行することになる。
次に、本実施例の作用について説明する。ここで、暴走検知部4におけるANDゲート14の出力端子がハイレベルになる条件は、
1:出力アドレスがタスクS領域内
2:ライトアクセス
3:CPU2より与えられるタスク情報がタスクX
の3条件が同時に成立した場合であり、マイコン1の動作状態が正常であれば成立しない条件である。
また、ANDゲート15の出力端子がハイレベルになる条件は、
1:出力アドレスがタスクS領域外
2:命令フェッチサイクル
3:CPU2より与えられるタスク情報がタスクS
の3条件が同時に成立した場合であり、やはり、マイコン1の動作状態が正常であれば成立しない条件である。
即ち、ANDゲート14,15の何れかの出力端子がハイレベルになった場合は、CPU2が実行中であることを示すタスクと、アドレスバス5に出力されているアドレス値とが不一致となっているので、CPU2の動作が暴走したと判定することができる。従ってこの場合は、CPU2に対して割込み(INT)を発生させて例外処理を実行させることで、必要な初期化を行い暴走状態を解消させるようにする。
図4は、CPU2による処理内容を概略的に示すフローチャートである。図4(a)に示すように、CPU2はリセットが解除されると、初期処理として暴走検知部4のレジスタ11,12にタスクSのプログラム領域の上限,下限を夫々設定する(ステップS1)。それ以降は、メインルーチンにおいて、図3に示したようにタスクS,タスクXを交互に実行する(ステップS2)。
一方、図4(b)は、CPU2に対して割込みが発生した場合に行われる処理を示す。CPU2は、割込みが発生すると、先ず割込み要因レジスタ(図示せず)などを参照して割込み要因の判定を行う。そして、暴走検知部4のANDゲート14により検知されたタスクXによるタスクS領域内のアクセスか(ステップS11,「YES」)、或いは、ANDゲート15により検知されたタスクSによる自身の領域外アクセスである場合は(ステップS12,「YES」)、夫々の要因に応じた例外処理を実行する(ステップS14,S15)。また、割込み要因がこれらの何れでもない場合は(ステップS12,「NO」)その他の要因に応じた例外処理を実行する(ステップS13)。
以上のように本実施例によれば、CPU2の制御部7は、CPU2がタスクSを実行している期間にタスク情報信号をアクティブにして、暴走検知部4の領域判定部13は、タスクSのプログラムが格納されている内蔵メモリ3の上限アドレス,下限アドレスが設定されているレジスタ11,12のレジスタ値とCPU2が実行中のアドレスとを比較して、後者がタスクSの実行領域を示すか否かを判定する。そして、暴走検知部4は、領域判定部10による判定結果とタスク実行信号の出力状態とが不一致である場合に暴走を検知するようにした。従って、ロジック回路により迅速に暴走を検知することができる。また、暴走検知のために特許文献1のように命令コードの一部を用いないので、命令コードの使用数を制限することは回避される。
そして、暴走検知部4は、タスク情報信号がアクティブである場合に、領域判定部13による判定結果がタスクSの実行領域外であることを示すと暴走を検知するので、タスクSのアドレスが何らかの理由により誤って出力されている場合に、暴走を確実に検知することができる。
更に、暴走検知部4は、タスク情報信号がインアクティブである場合に、領域判定部13による判定結果がタスクSの実行領域内であることを示すと暴走を検知するので、タスクS以外のアドレスが何らかの理由により誤って出力されている場合にも、暴走を確実に検知することができる。加えて、暴走検知部4は、暴走を検知するとCPU2に対して割り込みを発生させ、CPU2は暴走の検知に基づく例外処理を実行するので、例外処理においてタスクの暴走状態を解消して正常な実行状態に復帰することができる。
(第2実施例)
図6は、本発明をマルチCPUシステムに適用した場合の第2実施例を示すものである。第2実施例のマルチCPUシステム(マイクロコンピュータシステム)31では、複数のCPU32(0,1,・・・,n)を備えており、それらによりメモリ33に記憶されている複数のタスクプログラムを並列的に実行可能となっている。
この場合、例えばCPU32(0)はマスタCPUとして動作するもので、パワーオン時には最初にCPU32(0)だけが起動される。そして、CPU32(0)は、システムに必要な初期処理を行った後、他のスレーブCPU32(1,・・・,n)にどのタスクを割り当てて実行させるかを決定したり、スレーブCPU32のリセットを必要なタイミングで解除して起動を制御するようになっている。即ち、上記の意味において、CPU32(0)により実行されるタスクの重要度は最も高いと言える。
そして、暴走検知部34は、CPU32(0)により実行されるプログラムについて、第1実施例の暴走検知部4と同様の処理を行うようになっている。即ち、CPU0領域上限レジスタ35,CPU0領域下限レジスタ36には、CPU32(0)によって自身が実行するプログラム領域の上限値,下限値が夫々セットされる。領域判定部37は、それらのレジスタ値とアドレスバス38に出力されているアドレス値とを比較して、後者のアドレス値がCPU32(0)のプログラム領域外である場合に領域外判定信号をアクティブ(ハイ)にしてANDゲート39に出力する。
ANDゲート39の他方の入力端子には、信号出力部としてのCPU32(0)がバスアクセスを行っている場合に出力されるアクセス実行信号が与えられている。従って、ANDゲート39は、領域判定部37が領域外判定信号をアクティブにしているにもかかわらず、CPU32(0)のアクセス実行信号が与えられている場合に、出力信号をハイレベルにする。すると、その出力信号はCPU32(0)に対して割込みを発生させ、CPU32(0)は割り込み要因に応じた例外処理を実行して暴走状態の解消を図る。
以上のように第2実施例によれば、複数のCPU32を備えて構成されるマルチCPUシステム31についても、本発明を同様に適用することができる。
(第3実施例)
図7乃至図10は本発明の第3実施例を示すものであり、第1実施例と異なる部分のみ説明する。第1実施例では、マイコン1の暴走検知部4が、タスクSのプログラム領域について領域判定を行うことで暴走を検知したが、第3実施例では、タスクSのデータ領域についても同様の領域判定に基づく暴走検知を行う。
図8には、アドレスマップを示す。但し、第1実施例の図5に示すアドレスマップとは領域設定が異なっている。第3実施例では、0x2E00〜0x2FFFがタスクSのデータ領域に設定されており(領域(1))、0xF000〜0xFFFFがタスクSのプログラム領域に設定されている(領域(2))。
図1相当図である図7において、第3実施例のマイコン41(マイクロコンピュータシステム)は、第1実施例のマイコン1における暴走検知部4を、暴走検知部42に置き換えたものである。暴走検知部42において、タスクS領域(2)上限レジスタ11A,同下限レジスタ12A及びプログラム領域判定部13は、実質的に第1実施例の上限レジスタ11,下限レジスタ12及び領域判定部13と同じものである。また、ANDゲート14は削除されている。
そして、暴走検知部42には、タスクS領域(1)上限レジスタ43,同下限レジスタ44及びデータ領域判定部45が追加されている。そして、ANDゲート14に替わってANDゲート46が配置されている。上限レジスタ43には、データ領域の上限値(開始アドレス0x2E00)が設定され、下限レジスタ44には、データ領域の下限値(終了アドレス0x2FFF)が設定される。
データ領域判定部45は、プログラム領域判定部13と同様に、アドレスバス3に出力されるアドレスと、上記レジスタ43,44に設定保持されるアドレスとを比較して、前者のアドレスがタスクSのデータ領域内(上限,下限の間)であるか否かを判定する。そして、タスクSのデータ領域内である場合は、その状態を示す領域判定信号をアクティブ(ハイ)にする。領域判定信号は、ANDゲート46の入力端子に与えられている。ANDゲート46の他の入力端子の1つには、制御信号R/W(リード/ライト)が与えられており、残る1つの入力端子には、タスク情報信号がNOTゲート47を介して与えられている。
ここで、図9には、各アドレスレジスタ11A,12A,43,44の設定状態を示す。第3実施例では、各領域の上限を規定するレジスタ43,11Aは、全てのビットが予め固定されている。また、データ領域の下限を規定するレジスタ44は、MSB側の6ビットとLSB側の4ビットが予め固定され、プログラム領域の下限を規定するレジスタ12Aは、MSB側,LSB側の各4ビットが予め固定されている。
従って、データ領域及びプログラム領域の上限は、ユーザプログラムによって設定する必要はなく、データ領域の下限は、0x2C00〜0x2FF0の範囲でのみユーザプログラムによる設定が可能となっている。また、プログラム領域の下限は、0xF000〜0xFFF0の範囲でのみユーザプログラムによる設定が可能となっている。
また、ANDゲート15,46の出力端子は、ORゲート48の各入力端子に夫々接続されており、ORゲート48の出力端子は、レジスタ11A,12A,43,44のクリア端子に接続されており、ANDゲート15,46の何れの出力レベルがハイになると、各レジスタはクリアされるようになっている。但し、レジスタ11A,43についてはデータ値が変化しないため、クリア端子を削除しても良い。
次に、第3実施例の作用について図10も参照して説明する。暴走検知部42においてANDゲート46の出力端子がハイレベルになる条件は、
1:出力アドレスがタスクSのデータ領域内
2:ライトアクセス
3:(CPU2に替わる)CPU2A(図示せず)より与えられる
タスク情報がタスクX
の3条件が同時に成立した場合であり、やはり、マイコン41の動作状態が正常であれば成立しない条件である。また、ANDゲート15については、第1実施例と同様である。
そして、ANDゲート15,46の何れかの出力端子がハイレベルになった場合は、CPU2Aが実行中であることを示すタスクと、アドレスバス5に出力されているアドレス値とが不一致となっているので、CPU2Aの動作が暴走したと判定することができる。従ってこの場合は、CPU2Aに対して割込み(INT)を発生させて例外処理を実行させ、必要な初期化を行い暴走状態を解消させる。
図10は、例外処理の内容を概略的に示すフローチャートである。マイコン41において暴走検知部42により暴走が検知され、CPU2Aが例外処理を開始する場合、先ず、CPU2Aのハードウエアロジックによって各レジスタが初期化される(ステップS20)。但し、タスクSのデータ領域,プログラム領域を規定するレジスタについては、実質的にレジスタ12A,44の一部のみが初期化される。
それから、CPU2Aは、プログラムに基づく例外処理を開始し(スタート)、各レジスタの値を書き込んで再設定する(ステップS21)。この場合、レジスタ12Aに対しては実質的に6ビットのデータだけを設定し、レジスタ44に対しては実質的に8ビットのデータだけを設定することになる。そして、その他の初期設定などを含むエラー復帰処理を実行すると(ステップS22)、通常処理に移行する。
以上のように第3実施例によれば、データ領域判定部45は、最重要タスクSのデータが格納されているメモリ領域の開始アドレス,終了アドレスが設定されているレジスタ値とCPU2Aが実行中のアドレスとを比較して、最重要タスク3のデータ領域であるか否かを判定し、暴走検知部42は、データ領域判定部45による判定結果とタスク実行信号の出力状態とが不一致である場合に暴走を検知するので、最重要タスクSのデータ領域に対して不正なアクセスが行われた場合にも、第1実施例と同様にして暴走を検知することができる。
そして、データ領域,プログラム領域の上限を規定するレジスタ43,11Aは、全てのビットを予め固定し、データ領域,プログラム領域の下限を規定するレジスタ44,12Aは、MSB側,LSB側の一部のビットだけを予め固定した。従って、システムの仕様上、最重要タスクSのプログラムやデータの配置領域をある程度の範囲に制限しても問題がない場合には、ノイズなどの影響によってアドレスが変動する範囲を制限でき、開始アドレスと終了アドレスとの大小関係の逆転を防止することができる。
また、CPU2Aは、例外処理においてレジスタ44,12Aにアドレスデータを再設定するので、暴走が発生した場合でも、処理が正常に実行されるように復帰させることができる。
(第4実施例)
図11は本発明の第4実施例を示すものである。図11(a)は、例えばCPU2Aによる各タスクの実行状態を示す。タスクSと、それ以外のタスク(X等)とは、基本的に(例外処理が発生しない状態では)一定の周期(処理間隔)tで交互に実行されるようになっている。そして、タスクSは、図11(b)に示すように、自身の処理内でウォッチドックタイマ(ソフトウエアタイマ,監視カウンタ)を操作するようになっている。即ち、周期tで自身の処理を実行する毎にタイマ値をインクリメントする。
一方、タスクX等は、図11(c)に示すように、一定の処理手順を進めた段階で、各タスクがメモリ3において共通にアクセス可能である共有データ領域に、ウォッチドッグタイマのクリア要求フラグを「1」にセットするよう設定されている。そして、タスクSは、共有データ領域における上記フラグの状態を監視し、当該フラグがセットされたことを確認するとウォッチドッグタイマの値をゼロクリアする。図11(b)の例では、タイマ値が「3」になった段階で、クリアされている。
この場合、タスクX等の処理に何らかの異常が発生したことで、クリア要求フラグがセットされなくなると、ウォッチドッグタイマの値は「4」,「5」と増加して行く。そして、タスクSは、上記タイマ値が、例えば限界値である「4」を超えて「5」に達した場合は、タスクX等が所定の処理手順を正常に実行しなくなったと判断して暴走を検知し、例外処理を実行する。
即ち、本発明では、CPU2Aにより複数のタスクが時分割並行的に実行されることを前提としているので、最重要タスクSとそれ以外のタスクX等との処理を組み合わせることで、CPU2AがタスクSによりタスクX等における挙動が正常かどうかを監視することができる。また、一般的なウォッチドッグタイマの場合、そのタイムアップ時間は、プログラムによるクリア間隔に対して長めに設定されることが多いので冗長性が高く、暴走が検知させるまでに時間がかかってしまう。
これに対して、上記の方式によれば、ウォッチドッグタイマ値のインクリメントはCPU2AがタスクSにおいてて行うと共に、タイマ値の変化もCPU2AがタスクSにおいて監視するので、その他のタスクX等においてクリア要求がセットされなかった場合は、暴走を極めて短時間で検出することができる。
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
第1実施例において、暴走検知部4のANDゲート14,15は、何れか一方のみを備えても良い。
また、ANDゲート14は、「ライトアクセス」に替えて「リードアクセス」の場合に(入力端子にNOTゲートを追加)暴走検知を行なうようにしても良い。
また、第1実施例において、並列に実行するタスクの数は「3」以上であっても良い。
暴走を検知した場合は、CPUに例外処理を実行させるものに限らず、CPU,或いはマイコン全体にハードウエア的にリセットをかけるようにしても良い。
図4(b)において、ステップS14,S15における例外処理内容が同一である場合は、両者を1つにまとめれば良い。
第2実施例の暴走検知部34において、第1実施例のANDゲート14に相当する暴走検知を行っても良い。即ち、アドレスバス38上に出力されたアドレスがCPU32(0)のプログラム領域内であるのに対して、他のCPU32(1,・・・,n)がバスアクセスを行っていることを示す信号が出力された場合に暴走を検知する。
また、第2実施例において、CPU32(0)がバスアクセスを行っていることを示す信号は、例えば、複数のCPU32によるバスアクセスの調停を行うアービタ(信号出力部)が出力するバスアクセス許可(バスグラント)信号であっても良い。
第3実施例の構成に、第1実施例のANDゲート14を追加しても良い。
第4実施例において、ウォッチドッグタイマをダウンカウント動作させても良い。
データ領域,プログラム領域を規定するアドレスレジスタについては、上限側,下限側の何れか一方だけ、データビットを予め固定しても良い。またその場合、少なくともMSB,LSB側の何れかについて、一部のビットだけを固定しても良い。
また、下限レジスタの全ビットを固定しても良い。
2つのタスクを並列的に実行する方式については、特許文献1と同様の構成を採用しても良い。
システムとして最重要タスクのプログラム領域が固定である場合は、上限,下限レジスタによって付与されるアドレス値を、予めハードウエアにより固定的に設定しても良い。
CPUのビットサイズは16ビットに限ることなく、8ビットや32ビット、或いは64ビット以上であっても良い。
本発明の第1実施例であり、マイクロコンピュータの構成を本発明の要旨に係る部分について示す機能ブロック図 CPUの内部におけるレジスタ部の構成をより詳細に示す図 CPUの動作の一例を示すタイミングチャート CPUの処理内容を示すフローチャートであり、(a)は初期処理に引き続き実行されるメインルーチン,(b)は割り込み処理 マイクロコンピュータのメモリマップの一例を示す図 本発明の第2実施例であり、マルチCPUシステムの構成を示す図 本発明の第3実施例を示す図1相当図 図5相当図 各アドレスレジスタの設定状態を示す図 例外処理の内容を概略的に示すフローチャート 本発明の第4実施例であり、CPUによる各タスクの実行状態を示すシーケンス図
符号の説明
図面中、1はマイクロコンピュータ(マイクロコンピュータシステム)、2はCPU、3は内蔵メモリ、4は暴走検知部、7は制御部(信号出力部)、11はタスクS領域上限レジスタ、12はタスクS領域下限レジスタ、13は領域判定部、31はマルチCPUシステム(マイクロコンピュータシステム)、32はCPU、32(0)はCPU(信号出力部)、33はメモリ、34は暴走検知部、35はCPU0領域上限レジスタ、36はCPU0領域下限レジスタ、41はマイクロコンピュータ(マイクロコンピュータシステム)、42は暴走検知部、43はタスクS領域(1)上限レジスタ、44はタスクS領域(1)下限レジスタ、45は領域判定部を示す。

Claims (6)

  1. 複数のタスクを時分割並行的に実施可能であると共に、それらの内1つのタスクは、システム上の重要度が最高に設定されている最重要タスクであり、
    CPUが前記最重要タスクを実行している期間に、タスク実行信号を出力する信号出力部と、
    前記最重要タスクのプログラムが格納されているメモリ領域の開始アドレス,終了アドレスを書込み設定するための開始アドレスレジスタ並びに終了アドレスレジスタと、
    これらのアドレスレジスタの設定値と、前記CPUが実行中のアドレスとを比較することで、前記最重要タスクのプログラム領域であるか否かを判定するプログラム領域判定部と、
    前記最重要タスクのデータが格納されているメモリ領域の開始アドレス,終了アドレスを書込み設定するための開始アドレスレジスタ並びに終了アドレスレジスタと、
    これらのアドレスレジスタの設定値と、前記CPUが実行中のアドレスとを比較することで、前記最重要タスクのデータ領域であるか否かを判定するデータ領域判定部と、
    前記プログラム領域判定部による判定結果と前記タスク実行信号の出力状態とを参照して、双方が不一致である場合に暴走を検知し、また、前記データ領域判定部による判定結果と前記タスク実行信号の出力状態とを参照して、双方が不一致である場合に暴走を検知する暴走検知部とを備え、
    前記暴走検知部は、前記タスク実行信号がアクティブである場合に、前記領域判定部による判定結果が前記最重要タスクの領域外であることを示すと暴走を検知し、前記タスク実行信号がインアクティブである場合に、前記領域判定部による判定結果が前記最重要タスクの領域内であることを示すと暴走を検知し、
    前記最重要タスクは、前記CPUによる実行間隔が基本的に一定となるように設定されており、
    前記CPUは、
    前記最重要タスクの各実行周期毎に、当該タスクにおいて管理する監視カウンタの値を「1」ずつ変化させ、
    前記最重要タスク以外のタスクにおいては、一定の処理手順毎に、各タスクが共通にアクセス可能な共有データ領域に前記監視カウンタのクリア要求フラグをセットし、
    前記最重要タスクにおいて、前記共有データ領域に、前記クリア要求フラグがセットされたことを確認すると、前記監視カウンタの値を初期値にクリアすると共に、前記監視カウンタの値が予め設定された限界値を超えると暴走を検知することを特徴とするマイクロコンピュータシステム。
  2. 前記開始アドレスレジスタ,前記終了アドレスレジスタの少なくとも何れか一方は、MSB(Most Significant Bit)側より1つ以上のビットが予め固定されていることを特徴とする請求項1記載のマイクロコンピュータシステム。
  3. 前記開始アドレスレジスタ,前記終了アドレスレジスタの少なくとも何れか一方は、LSB(Least Significant Bit)側より1つ以上のビットも予め固定されていることを特徴とする請求項2記載のマイクロコンピュータシステム。
  4. 前記開始アドレスレジスタ,前記終了アドレスレジスタの少なくとも何れか一方は、全ビットが固定されていることを特徴とする請求項2または3記載のマイクロコンピュータシステム。
  5. 前記暴走検知部は、暴走を検知すると前記開始アドレスレジスタ,前記終了アドレスレジスタをリセットすると共に、前記CPUに対して割り込みを発生させ、
    前記CPUは、前記暴走の検知に基づく例外処理を実行することを特徴とする請求項1乃至4の何れかに記載のマイクロコンピュータシステム。
  6. 前記CPUは、前記例外処理において、前記開始アドレスレジスタ,前記終了アドレスレジスタにアドレスデータを再設定することを特徴とする請求項5記載のマイクロコンピュータシステム。
JP2007096634A 2006-06-30 2007-04-02 マイクロコンピュータシステム Expired - Fee Related JP4893427B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007096634A JP4893427B2 (ja) 2006-06-30 2007-04-02 マイクロコンピュータシステム
US11/819,555 US8127183B2 (en) 2006-06-30 2007-06-28 Microcomputer system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006181510 2006-06-30
JP2006181510 2006-06-30
JP2007096634A JP4893427B2 (ja) 2006-06-30 2007-04-02 マイクロコンピュータシステム

Publications (2)

Publication Number Publication Date
JP2008033890A JP2008033890A (ja) 2008-02-14
JP4893427B2 true JP4893427B2 (ja) 2012-03-07

Family

ID=38950712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007096634A Expired - Fee Related JP4893427B2 (ja) 2006-06-30 2007-04-02 マイクロコンピュータシステム

Country Status (2)

Country Link
US (1) US8127183B2 (ja)
JP (1) JP4893427B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5053109B2 (ja) * 2008-01-23 2012-10-17 株式会社日立製作所 制御装置
DE102008010233A1 (de) * 2008-02-21 2009-08-27 Robert Bosch Gmbh Anordnung zur Überprüfung eines Programmspeichers einer Recheneinheit
CN102656568B (zh) * 2009-10-15 2015-09-02 株式会社雷捷电子科技 微计算机及其动作方法
JP5987723B2 (ja) * 2013-02-18 2016-09-07 株式会社デンソー 通信用スレーブ
US11182208B2 (en) * 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
JPS61107456A (ja) * 1984-10-30 1986-05-26 Toshiba Corp 割込制御方式
JPS63280345A (ja) * 1987-05-13 1988-11-17 Fujitsu Ltd プログラム異常検出方法
JPH05189255A (ja) * 1992-01-14 1993-07-30 Matsushita Electric Ind Co Ltd プログラム暴走検知方法
US6304957B1 (en) 1993-02-26 2001-10-16 Nippondenso Co., Ltd. Multitask processing unit
US5889988A (en) * 1995-01-03 1999-03-30 Intel Corporation Debugger for debugging tasks in an operating system virtual device driver
JPH08292901A (ja) 1995-04-21 1996-11-05 Hitachi Ltd ウォッチドッグタイマ及びこれを用いたコンピュータシステム
US5983355A (en) * 1996-05-20 1999-11-09 National Semiconductor Corporation Power conservation method and apparatus activated by detecting specific fixed interrupt signals indicative of system inactivity and excluding prefetched signals
JP3684831B2 (ja) * 1998-03-31 2005-08-17 セイコーエプソン株式会社 マイクロコンピュータ、電子機器及びデバッグシステム
JP2003099293A (ja) * 2001-09-21 2003-04-04 Denso Corp 携帯端末およびコンピュータプログラム
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
TW591525B (en) * 2003-03-07 2004-06-11 Novatek Microelectronics Corp Interrupt-processing system for shortening interrupt latency in microprocessor
US7013383B2 (en) * 2003-06-24 2006-03-14 Via-Cyrix, Inc. Apparatus and method for managing a processor pipeline in response to exceptions
US7359834B2 (en) * 2004-08-13 2008-04-15 Sun Microsystems, Inc. Monitoring system-calls to identify runaway processes within a computer system
JP4522799B2 (ja) * 2004-09-08 2010-08-11 ルネサスエレクトロニクス株式会社 半導体回路装置及び暴走検出方法
JP2007323631A (ja) * 2006-05-01 2007-12-13 Shinko Electric Ind Co Ltd Cpu暴走判定回路

Also Published As

Publication number Publication date
US20080016509A1 (en) 2008-01-17
JP2008033890A (ja) 2008-02-14
US8127183B2 (en) 2012-02-28

Similar Documents

Publication Publication Date Title
JP4893427B2 (ja) マイクロコンピュータシステム
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
JP2007249323A (ja) マイクロコンピュータ
JP2013250980A (ja) プロセッサ資源および実行保護の方法および装置
JP5703378B2 (ja) アラインメント制御
JP2009157542A (ja) 情報処理装置及びそのスタックポインタ更新方法
JP2014063258A (ja) 半導体集積回路装置及びマイクロコントローラ
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
JP2013225208A (ja) 情報処理装置、情報処理方法、及びプログラム
JP5999216B2 (ja) データ処理装置
JP2018067047A (ja) 制御装置
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
JP2006221606A (ja) データプロセッサ
Farrall et al. Hardware and software support for mixed-criticality multicore systems
JP4856023B2 (ja) リアルタイムウォッチ装置及びその方法
US20120265904A1 (en) Processor system
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP5703505B2 (ja) バスパーティション構造を備えるコンピュータ
JP6645467B2 (ja) マイクロコンピュータ
JP2017208058A (ja) 情報処理装置
JP4543505B2 (ja) マイクロコンピュータの制御方法及び異常監視装置
JP4702004B2 (ja) マイクロコンピュータ
JPH01180656A (ja) メモリ保護装置
JPH0287239A (ja) マイクロプログラム処理装置
JP3129873B2 (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111122

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111205

R151 Written notification of patent or utility model registration

Ref document number: 4893427

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees