JP2012133458A - マイコン、リソース割り当て方法 - Google Patents
マイコン、リソース割り当て方法 Download PDFInfo
- Publication number
- JP2012133458A JP2012133458A JP2010283151A JP2010283151A JP2012133458A JP 2012133458 A JP2012133458 A JP 2012133458A JP 2010283151 A JP2010283151 A JP 2010283151A JP 2010283151 A JP2010283151 A JP 2010283151A JP 2012133458 A JP2012133458 A JP 2012133458A
- Authority
- JP
- Japan
- Prior art keywords
- core
- program
- abnormality
- local
- priority
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
【課題】リソースを有効に活用できる信頼性の高いマイコンを提供すること。
【解決手段】ローカルメモリ15とコア13が対に配置され、コアが対のローカルメモリを作業メモリとするCPU11を2つ以上有するマイコン100であって、コア又はローカルメモリの異常を検出する異常検出手段41と、各プログラム31の優先度が登録された優先度テーブルと、コア又はローカルメモリの異常が検出された場合、優先度の高いプログラムほど優先的に、コアが該コアと対のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更するリソース割り当て変更手段43と、を有することを特徴とする。
【選択図】図1
【解決手段】ローカルメモリ15とコア13が対に配置され、コアが対のローカルメモリを作業メモリとするCPU11を2つ以上有するマイコン100であって、コア又はローカルメモリの異常を検出する異常検出手段41と、各プログラム31の優先度が登録された優先度テーブルと、コア又はローカルメモリの異常が検出された場合、優先度の高いプログラムほど優先的に、コアが該コアと対のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更するリソース割り当て変更手段43と、を有することを特徴とする。
【選択図】図1
Description
本発明は、コアやRAMの異常を検出可能なマイコンに関し、特に、プログラムをコアやマイコンに動的に割り当てるマイコン等に関する。
車載装置の電子化が進み、車載装置を制御するための多くの電子制御装置が車両に搭載されるようになった。電子制御装置にはマイコンが搭載されマイコンには1つ以上のCPUが搭載されるが、車載装置を制御するマイコンはその性質上、高い信頼性が要求される。
また、近年CPUのマルチコア化やマルチCPU化が進んでおり、マイコンが複数のコアやCPUを有することを利用してマイコンの信頼性を向上させる技術が考案されている(例えば、特許文献1参照。)。特許文献1には、コアが故障した場合、プロセッサユニット内に代替実行可能なプロセッサコアが存在しなければ、最も優先度の低いプロセッサユニット内のプロセッサコアにアプリケーションを代替実行させるマルチプロセッサシステムが開示されている。このように、コアに故障が生じても、他の正常なコアが代替することで、マイコン全体の信頼性を向上させることができる。
ところで、コアやCPUがプログラムを実行する場合は、RAMなどの作業メモリが必要になるため、故障する可能性はコアやCPUだけでなくRAMにもある。しかし、特許文献1に記載されたマルチプロセッサシステムはCPUとRAMの故障の切り分けについて考慮されていないという問題がある。例えば、コアやCPUに故障が生じたがRAMに故障が生じていない場合、RAMを有効に活用することで高い信頼性を維持したままリソースを有効に活用できる。この逆に、RAMに故障が生じたがコアやCPUに故障が生じていない場合も同様である。
本発明は、上記課題に鑑み、リソースを有効に活用できる信頼性の高いマイコンを提供することを目的とする。
本発明は、上記課題に鑑み、ローカルメモリとコアが対に配置され、コアが対のローカルメモリを作業メモリとするCPUを2つ以上有するマイコンであって、コア又はローカルメモリの異常を検出する異常検出手段と、各プログラムの優先度が登録された優先度テーブルと、 コア又はローカルメモリの異常が検出された場合、優先度の高いプログラムほど優先的に、コアが該コアと対のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更するリソース割り当て変更手段と、を有するマイコンを提供する。
リソースを有効に活用できる信頼性の高いマイコンを提供することができる。
以下、本発明を実施するための形態について図面を参照しながら説明する。
本実施形態では、コアに少なくとも1つのローカルRAMが対に配置されたCPUにおいて、何らかの異常が検出された場合に、コアがワークメモリとするローカルRAMを、プログラムの優先度に応じて柔軟に組み替えるマイコンについて説明する。
本実施形態では、コアに少なくとも1つのローカルRAMが対に配置されたCPUにおいて、何らかの異常が検出された場合に、コアがワークメモリとするローカルRAMを、プログラムの優先度に応じて柔軟に組み替えるマイコンについて説明する。
図1は、ローカルRAMの異常が検出された場合のコアとローカルRAMの組合せをプログラムの優先度に応じて変更する過程を説明する図の一例である。3つのコア1〜3がそれぞれローカルRAM1〜3をワークメモリにしてプログラム1〜3を実行している。また、予め優先度テーブルにプログラム1〜3の優先度が定義されている。
例えばローカルRAM1の異常が検出された場合、コア1は優先度テーブルを参照して、コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行しているか否かを判定する。
(1)コア2がプログラム1よりも優先度の低いプログラム2を実行している場合、コア1はローカルRAM2をワークメモリとしたまま優先度の低いプログラム2を自機に割り当てる。
(1)コア2がプログラム1よりも優先度の低いプログラム2を実行している場合、コア1はローカルRAM2をワークメモリとしたまま優先度の低いプログラム2を自機に割り当てる。
また、コア2はローカルRAM2をワークメモリとして、優先度の高いプログラム1を自機に割り当てる。
プログラム2はプログラム1よりも優先度が低いので、コア1がコア2のローカルRAM2をワークメモリにプログラム2を実行することにより処理速度が低下しても、許容しやすい。また、プログラム1はプログラム2よりも優先度が高いが、コア2が対のローカルRAM2をワークメモリにしてプログラム1を実行するので、処理速度が低下することを防止できる。
(2)コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行していない場合、コア1はローカルRAM2をワークメモリとしてプログラム1を実行する。
(2)コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行していない場合、コア1はローカルRAM2をワークメモリとしてプログラム1を実行する。
この場合、プログラム1が最も優先度が低いので、コア1がコア2のローカルRAM2をワークメモリにプログラム1を実行することにより処理速度が低下しても、許容しやすい。
図2は、コアの異常が検出された場合のコアとローカルRAMの組合せをプログラムの優先度に応じて変更する過程を説明する図の一例である。コア1の異常が検出された場合、例えばコア2は優先度テーブルを参照して、コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行しているか否かを判定する。
(3)例えばコア2がプログラム1よりも優先度の低いプログラム2を実行している場合、コア2はローカルRAM1をワークメモリとして優先度の低いプログラム2を実行する。また、コア2はローカルRAM2をワークメモリとして優先度の高いプログラム1を実行する。
(3)例えばコア2がプログラム1よりも優先度の低いプログラム2を実行している場合、コア2はローカルRAM1をワークメモリとして優先度の低いプログラム2を実行する。また、コア2はローカルRAM2をワークメモリとして優先度の高いプログラム1を実行する。
プログラム2はプログラム1よりも優先度が低いので、コア2がコア1のローカルRAM1をワークメモリにプログラム2を実行することにより処理速度が低下しても、許容しやすい。また、プログラム1はプログラム2よりも優先度が高いが、コア2が対のローカルRAM2をワークメモリにしてプログラム1を実行するので、処理速度が低下することを防止できる。
(4)コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行していない場合、コア2はローカルRAM1をワークメモリとしてプログラム1を実行する。
(4)コア2又はコア3がプログラム1よりも優先度の低いプログラムを実行していない場合、コア2はローカルRAM1をワークメモリとしてプログラム1を実行する。
この場合、プログラム1が最も優先度が低いので、コア2がコア1のローカルRAM1をワークメモリにプログラム2を実行することにより処理速度が低下しても、許容しやすい。
このように、本実施形態のマイコンは、コア又はローカルRAMに異常が生じても、異常が生じていないリソースを活用してプログラムの実行を継続できる。その際、マイコンは、プログラムの優先度を考慮して、コアが優先度の高いプログラムを優先的にコアと対のローカルRAMをワークメモリにして実行するようにコアとワークメモリの組み合わせを決定する。
異常がない、コアと対のローカルRAMの数よりもプログラムの数の方が多い場合、優先的に割り当てられないプログラムは、コアが対でないローカルRAMをワークメモリにして実行する。
よって、優先度の高いプログラムの実行速度の低下を防止しながら、優先度の低いプログラムの実行を継続することができる。
〔構成〕
図3は、マイコン100のハードウェア構成図の一例を示す。マイコン100は、マルチレイヤバス28を介して接続されたプロセッサ21、DMAC22、SDRAM23、I/Oブリッジ25及びROM24を有する。プロセッサ21は、3つのCPU(以下、区別する場合CPU1〜3という)11を有するが、CPU11の数は2つ以上であれば4つ以上でもよい。各CPU1〜3は、コア間通信部12、リセット部14、コア13、及び、ローカルRAM15を有する。ローカルRAM15は1つのCPU11内に複数個存在してもよい。なお、各CPU1〜3の機能を区別するため、CPU内の各機能にCPU1〜3と同じ番号を付す。
図3は、マイコン100のハードウェア構成図の一例を示す。マイコン100は、マルチレイヤバス28を介して接続されたプロセッサ21、DMAC22、SDRAM23、I/Oブリッジ25及びROM24を有する。プロセッサ21は、3つのCPU(以下、区別する場合CPU1〜3という)11を有するが、CPU11の数は2つ以上であれば4つ以上でもよい。各CPU1〜3は、コア間通信部12、リセット部14、コア13、及び、ローカルRAM15を有する。ローカルRAM15は1つのCPU11内に複数個存在してもよい。なお、各CPU1〜3の機能を区別するため、CPU内の各機能にCPU1〜3と同じ番号を付す。
コア1〜3は、PC(プログラムカウンタ)、命令バッファ、IFU(Instruction Fetch Unit)、DEC(DECoder)、RF(Register Fetch)、REG(REGister)、SH(Shifter)、ALU、MUL及びFPU等の演算回路、汎用レジスタ、及び、ロード/ストアユニット等を有する。これらが1クロック毎に命令実行段階の各ステージを実行することでいわゆるパイプライン制御が実現されている。
ローカルRAM1はコア1に専用のメモリ(一次キャッシュ)であり、ローカルRAM2はコア2に専用のメモリであり、ローカルRAM3はコア3に専用のメモリである。専用のメモリとは、コア1はローカルRAM1〜3を使用することができるが、ローカルRAM1に比べ、コア1がローカルRAM2,3をワークメモリとする際には制限があることをいう。例えば、コア2,3によるローカルRAM2、3の使用許可が必要であったり、コア2,3がローカルRAM2,3の容量を所定量以上使用している場合は使用できなかったり、コア2,3がローカルRAM2,3にアクセスしている場合は待機する必要があったりすることである。また、コア1がローカルRAM2,3にアクセスする際は、コア通信バス17又はマルチレイヤバス28を経由する必要があるので、バスの調停など物理的な距離や構成に起因して、コア1のローカルRAM2,3に対するアクセスの優先度は低くなる。これも制限の1つである。
コア1〜3は、ROM24に記憶されたフェールセーフプログラム32及びOS33を実行する。プログラム31(以下、区別する場合プログラム1〜3という)は、OS33などによりコア1〜3に任意に割り当てられて、各コア1〜3が実行することが可能である。起動時の割り当ては決まっていてもいなくてもよいが、起動時、コア1〜3は専用のローカルRAM1〜3をワークメモリとする。以下では、コア1〜3と専用のローカルRAM1〜3との組み合わせを「専用組み合わせ」という。
コア間通信部1〜3は、コア通信バス17を介してコア1〜3が相互に通信することを可能にする。コア1〜3は、コア間通信部1〜3により、他のコアの異常の有無を監視したり、ローカルRAM1〜3にアクセスする。コア間通信部1〜3はローカルRAM1〜3を介してデータを相互に通信することができる。また、コア間通信部1〜3は、専用組み合わせでないコア1〜3からローカルRAM1〜3へのアクセス要求を遮断するスイッチや、専用組み合わせでないコア1〜3からアクセス可能なローカルRAM1〜3の領域を一部に制限するアクセス制限の機能を備える。なお、コア1〜3は、マルチレイヤバス28を経由して互いに通信することもできる。
コア間通信部1〜3は、コア通信バス17を介してコア1〜3が相互に通信することを可能にする。コア1〜3は、コア間通信部1〜3により、他のコアの異常の有無を監視したり、ローカルRAM1〜3にアクセスする。コア間通信部1〜3はローカルRAM1〜3を介してデータを相互に通信することができる。また、コア間通信部1〜3は、専用組み合わせでないコア1〜3からローカルRAM1〜3へのアクセス要求を遮断するスイッチや、専用組み合わせでないコア1〜3からアクセス可能なローカルRAM1〜3の領域を一部に制限するアクセス制限の機能を備える。なお、コア1〜3は、マルチレイヤバス28を経由して互いに通信することもできる。
リセット回路1〜3は、自コア又は他コアをリセットする回路である。自コアをリセットするのは例えばマイコン100の起動時にCPU1〜3をそれぞれ自コアが初期化してOS33等を起動するためである。他コアをリセットするのは、主に他コアを停止させるためである。リセット回路1はリセット回路2,3にリセット信号(HighアクティブでもLowアクティブでもよい)を継続的に出力することができる(結線は不図示)。リセット回路2,3についても同様である。リセット信号が継続的に出力されるとクロック信号が停止したままになるので、リセット信号が入力されたコア2,3は停止したままとなる。
DMAC22は、マルチレイヤバス28に接続された各ブロックからのSDRAM23へのアクセス要求を調停すると共に、I/Oブリッジ25からSDRAM23へ又はSDRAM23からI/Oブリッジ25へ、コア1〜3を介在することなくデータを転送する。DMAC22は転送終了によりコア1〜3に適宜割込みをかけることできる。
SDRAM23は、コア1〜3にプログラム又はデータを提供するためのメモリ(二次キャッシュ)である。SDRAM23の少なくとも一部はコア1〜3により共有される。ROM24にはプログラム1〜3、フェールセーフプログラム32、及び、OS33が記憶されている。説明の都合上、プログラム1〜3は3つとしたがプログラムの数は4つ以上でもよい。この場合、複数のプログラム31が割り当てられるコア13が存在することになる。
I/Oブリッジ25は、マルチレイヤバス28とI/Oバス27の間で相互に周波数や電圧値などを変換する。I/Oバス27には種々のI/O26が接続されている。I/O26はマイコン100と外部の機器を接続するインタフェースであり、各種のセンサ、アクチュエータ、CANコントローラ等が接続される。なお、このマイコン100は例えば車両のECU(electronic control unit)に適用される。
〔プログラムのコアへの割り当て〕
本実施形態のマイコン100は、プログラム1〜3の優先度を考慮してプログラム1〜3が実行されるコア1〜3とローカルRAM15の組合せを任意に変更するので、いわゆるSMP(Symmetric Multi‐processing)の実行態様といえる。または、あるプログラムだけ割り当てられるコアを固定にしておき、その他のプログラムをマイコン100がコア1〜3に動的に割り当てることもできる(BMP(Bound Multi‐processing))。
本実施形態のマイコン100は、プログラム1〜3の優先度を考慮してプログラム1〜3が実行されるコア1〜3とローカルRAM15の組合せを任意に変更するので、いわゆるSMP(Symmetric Multi‐processing)の実行態様といえる。または、あるプログラムだけ割り当てられるコアを固定にしておき、その他のプログラムをマイコン100がコア1〜3に動的に割り当てることもできる(BMP(Bound Multi‐processing))。
本実施形態のマイコン100は、OS33がコア1〜3とローカルRAM15の組合せを制御するものとするが、この機能はプログラム31が提供してもよい。OS33は、プログラム1〜3の優先度と状態(実行可能、実行中、実行待ち等)に応じてコア1〜3にプログラム1〜3を割り当てる。プログラム1〜3は、互いに独立して実行可能な場合も、相互に関連している場合もある。前者の場合、OS33は優先度にだけ基づいてコア1〜3にプログラム1〜3を割り当てればよい。
図4(a)は、プログラム1〜3の優先度が登録された優先度テーブルの一例を示す。優先度テーブルはROM24に記憶されており、コア1〜3が参照することができる。図では、プログラム1の優先度を「高」、プログラム2の優先度を「中」、プログラム1の優先度を「低」としたがあくまで一例である。
後者の場合(相互に関連している場合)が生じるのは、例えばプログラム2がプログラム1の処理結果を利用する場合等である。このような場合、プログラム2はサービスコールをOS33に要求して、実行待ち状態となる。プログラム1は処理が完了すると同様にサービスコールをOS33に要求してプログラム2を実行可能状態にする。OS33は、このような状態遷移を監視して、優先度を考慮しながらコア1〜3にプログラム1〜3を割り当てていく。
図4(b)は、OS33が割り当てたコア1〜3とプログラム1〜3の関係の一例を示す。コアとプログラムの数が等しいので、プログラム1〜3に優先度の違いがあっても、各コア1〜3に1つのプログラム1〜3が割り当てられている。コア1〜3が実行しているプログラム1〜3の情報はコア間通信部1〜3を介して交換されるので、各コア1〜3は最新の割り当て状況を共有することができる。
なお、一般的なSMPではいずれかのコアがOS33を実行して、OS33が複数のコアへのプログラムの割り当てを制御するが、こうするとOS33を実行するコア13に異常が生じた場合に、コア1〜3とワークメモリの組合せの変更が困難になる。そこで、本実施形態は、コア1〜3とワークメモリの組合せを変更する機能(後述する割り当て制御部)は各コア1〜3が有しているものとする。
具体的には、例えば、コア1〜3又はローカルRAM1〜3の異常を検出したコア13が、OS33又はOS33と同様の機能を使って、異常が検出されたコア1〜3又はローカルRAM1〜3で実行されていたプログラム1〜3を、その優先度に応じて、専用割り当て又は専用割り当てでない組み合わせのコア13とローカルRAM15に割り当てる。
〔機能ブロック図〕
図5は、コア1〜3の機能ブロック図の一例である。コア1〜3はそれぞれ、異常監視部41、停止部42、及び、割り当て制御部43を有する(各CPUの機能を区別するため、機能ブロックにCPUと同じ番号を付す。)。各機能ブロックは、コア1〜3がフェールセーフプログラム32及びOS33の少なくとも一方を実行することで実現される。
図5は、コア1〜3の機能ブロック図の一例である。コア1〜3はそれぞれ、異常監視部41、停止部42、及び、割り当て制御部43を有する(各CPUの機能を区別するため、機能ブロックにCPUと同じ番号を付す。)。各機能ブロックは、コア1〜3がフェールセーフプログラム32及びOS33の少なくとも一方を実行することで実現される。
<異常監視部>
異常監視部41は、コア13及びローカルRAM15の異常を監視する。監視形態はいくつか考えられるが、1つの異常監視部41はコア1〜3の全ての異常を監視する能力、及び、ローカルRAM1〜3の全ての異常を監視する能力を有するものとし、適宜、監視形態を変える。
異常監視部41は、コア13及びローカルRAM15の異常を監視する。監視形態はいくつか考えられるが、1つの異常監視部41はコア1〜3の全ての異常を監視する能力、及び、ローカルRAM1〜3の全ての異常を監視する能力を有するものとし、適宜、監視形態を変える。
(1)監視形態
A.コア1〜3及びRAM1〜3が正常な場合
・コアの監視
異常監視部1はコア2の異常を、異常監視部2はコア3の異常を、異常監視部3はコア1の異常を、それぞれ監視する。コア13に異常が生じると異常監視部41の監視結果の信頼性も低下するので、各異常監視部1〜3が隣のコア1〜3の異常を監視することで、異常のあるコア自身が自機の異常を監視することを回避している。
・ローカルRAMの監視
異常監視部1はローカルRAM1の異常を、異常監視部2はローカルRAM2の異常を、異常監視部3はローカルRAM3の異常を、それぞれ監視する。専用組み合わせのコア13とローカルRAM15はプログラムの実行速度が速いので、このように監視することで負荷を抑制しやすい。コアの監視のように隣のローカルRAMを監視してもよい。
A.コア1〜3及びRAM1〜3が正常な場合
・コアの監視
異常監視部1はコア2の異常を、異常監視部2はコア3の異常を、異常監視部3はコア1の異常を、それぞれ監視する。コア13に異常が生じると異常監視部41の監視結果の信頼性も低下するので、各異常監視部1〜3が隣のコア1〜3の異常を監視することで、異常のあるコア自身が自機の異常を監視することを回避している。
・ローカルRAMの監視
異常監視部1はローカルRAM1の異常を、異常監視部2はローカルRAM2の異常を、異常監視部3はローカルRAM3の異常を、それぞれ監視する。専用組み合わせのコア13とローカルRAM15はプログラムの実行速度が速いので、このように監視することで負荷を抑制しやすい。コアの監視のように隣のローカルRAMを監視してもよい。
B.いずれかのコアの異常が検出された場合
・コアの監視
例えば、コア1の異常が検出されたとして説明する。コア1に異常が生じることにより、異常監視部1はコア2の異常を監視できないが、異常監視部1を監視していた異常監視部3はもはやコア1の異常を監視する必要がない。そこで、異常監視部3はコア2の異常を監視する。異常監視部2はコア3の異常を監視したままである。このように、コア1の異常が検出されても、異常監視部1〜3が監視対象を切り替えることでコア2,3の監視を継続できる。
・ローカルRAMの監視
例えば、コア1の異常が検出されたとして説明する。コア1の異常が生じることにより、異常監視部1はローカルRAM1の異常を監視できない。このため、異常監視部3が、コア1と共にローカルRAM1の異常を監視する。すなわち、異常監視部2はローカルRAM2の異常を監視したままであり、異常監視部3はローカルRAM3とローカルRAM1の異常を監視する。このように、コア1の異常が検出されても、異常監視部1〜3が監視対象を増やすことでローカルRAM1〜3の監視を継続できる。
・コアの監視
例えば、コア1の異常が検出されたとして説明する。コア1に異常が生じることにより、異常監視部1はコア2の異常を監視できないが、異常監視部1を監視していた異常監視部3はもはやコア1の異常を監視する必要がない。そこで、異常監視部3はコア2の異常を監視する。異常監視部2はコア3の異常を監視したままである。このように、コア1の異常が検出されても、異常監視部1〜3が監視対象を切り替えることでコア2,3の監視を継続できる。
・ローカルRAMの監視
例えば、コア1の異常が検出されたとして説明する。コア1の異常が生じることにより、異常監視部1はローカルRAM1の異常を監視できない。このため、異常監視部3が、コア1と共にローカルRAM1の異常を監視する。すなわち、異常監視部2はローカルRAM2の異常を監視したままであり、異常監視部3はローカルRAM3とローカルRAM1の異常を監視する。このように、コア1の異常が検出されても、異常監視部1〜3が監視対象を増やすことでローカルRAM1〜3の監視を継続できる。
C.いずれかのローカルRAMの異常が検出された場合
・コアの監視
コア1〜3は正常なので、異常監視部1〜3によるコア1〜3の監視形態に変更はない。
・ローカルRAMの監視
例えば、ローカルRAM1の異常が検出されたとして説明する。すでに、ローカルRAM1の異常が検出されたので、異常監視部1はローカルRAM1の監視を終了する。したがって、引き続き、異常監視部2はローカルRAM2を監視し、異常監視部3はローカルRAM3を監視する。
・コアの監視
コア1〜3は正常なので、異常監視部1〜3によるコア1〜3の監視形態に変更はない。
・ローカルRAMの監視
例えば、ローカルRAM1の異常が検出されたとして説明する。すでに、ローカルRAM1の異常が検出されたので、異常監視部1はローカルRAM1の監視を終了する。したがって、引き続き、異常監視部2はローカルRAM2を監視し、異常監視部3はローカルRAM3を監視する。
このように、コア1〜3の1つ又はローカルRAM1〜3の1つに異常が検出されても、異常監視部1〜3は異常の監視を継続できる。
(2)異常の監視方法
A.コアの異常
コアの異常を検出する方法としては、コア同士の処理結果を比較する方法が知られている。例えば、異常監視部1は、コア2に診断プログラムの実行を要求し、同じ診断プログラムをコア1で実行して処理結果を比較する。コア1〜3には、SH、ALU、MUL及びFPU等の演算器が実装されているので、コアを監視するためにはこれら全ての演算器の異常を監視することが好ましい。このため、診断プログラムには、各演算器のみを1回以上使用するいくつかの関数が記述されており、各演算器毎の関数の処理結果を別々に出力するようになっている。
A.コアの異常
コアの異常を検出する方法としては、コア同士の処理結果を比較する方法が知られている。例えば、異常監視部1は、コア2に診断プログラムの実行を要求し、同じ診断プログラムをコア1で実行して処理結果を比較する。コア1〜3には、SH、ALU、MUL及びFPU等の演算器が実装されているので、コアを監視するためにはこれら全ての演算器の異常を監視することが好ましい。このため、診断プログラムには、各演算器のみを1回以上使用するいくつかの関数が記述されており、各演算器毎の関数の処理結果を別々に出力するようになっている。
異常監視部1は、コア2とコア1の演算器毎の処理結果を比較して、演算器毎に異常の有無を監視することができる。個別の演算器の異常が検出されれば、後の解析に有効な情報となる。本実施形態では、1つでも演算器に異常が検出されればコアに異常があると判定する。
異常監視部1〜3は、コア1〜3に異常があると判定すると、コア間通信部1〜3を介して異常が検出されたコア13をコア1〜3を通知する(例えば、コア1にコア1の異常を通知する必要はない。)。これにより、各コア1〜3が異常状態を共有できる。
なお、コア1〜3による診断プログラムの処理結果は、コアが正常であれば固定の値を取るので、異常監視部1は、コア2に診断プログラムの実行を要求し、その処理結果と予め記憶している診断プログラムの処理結果とを比較してもよい。コア1が診断プログラムを実行する必要がないので負荷を低減できる。
異常を監視するタイミングは、例えば、監視対象のコア1〜3の負荷状態が比較的低い場合や、負荷状態が低くなくても定期的なタイミング等である。負荷状態を知らせるため、各コアは例えばコアの使用率が所定値以下になると、他のコアに負荷状態が低下したことを通知する。
B.ローカルRAMの異常
ローカルRAM1〜3の異常を検出する方法には種々の方法がある。例えば、“0”を書き込んで“1”のままのbitがあるか否か(又はその逆)、なんらかのデータを読み書きして読み書きの前後で一致するか否か、全領域に“1010…”のパターンのデータを書き込み読み出せるか否か、メモリ上のまとまった領域を別の領域に正しくコピーできるか否か、等の方法がある。異常監視部1〜3は、ローカルRAM1〜3に対しこのような診断を行い、異常の有無を判定する。
ローカルRAM1〜3の異常を検出する方法には種々の方法がある。例えば、“0”を書き込んで“1”のままのbitがあるか否か(又はその逆)、なんらかのデータを読み書きして読み書きの前後で一致するか否か、全領域に“1010…”のパターンのデータを書き込み読み出せるか否か、メモリ上のまとまった領域を別の領域に正しくコピーできるか否か、等の方法がある。異常監視部1〜3は、ローカルRAM1〜3に対しこのような診断を行い、異常の有無を判定する。
異常監視部1〜3は、ローカルRAM1〜3の異常が検出された場合、初期化するなどの回復を試みて異常が解消されない場合はフェールセーフを行う。例えば、コア間通信部1〜3を構成する複数のチップの1つを分離可能であれば、異常が生じたチップを使用しないようにする。このような分離が困難であったあり、又は、チップの一部を分離可能でもローカルRAM1〜3の所定の割合以上が使用不可になるような場合、異常監視部1〜3はローカルRAM1〜3に異常があると判定する。
異常監視部1〜3は、ローカルRAM1〜3に異常があると判定すると、コア間通信部1〜3を介して異常が検出されたローカルRAM1〜3をコア1〜3に通知する。これにより、各コア1〜3が異常状態を共有できる。
図6(a)は、異常の検出結果を模式的に示す図の一例である。コア1〜3は、コア1〜3又はローカルRAM1〜3の異常の通知を受け付けると、現在の異常状態を更新して記憶する。したがって、各コア1〜3は、図6(a)のような異常状態を共有して、異常が検出されていないコアやローカルRAMを組合せて、プログラム1〜3を割り当てることができる。
異常を監視するタイミングは、例えば、マイコン100の起動直後や、自コアの負荷状態が比較的低い場合などである。負荷状態は例えばコアの使用率に基づいて判定する。
<停止部>
図5に戻り、停止部1〜3は異常が検出されたコア1〜3を停止する。停止部1〜3と、停止部1〜3が停止するコア1〜3の関係は、異常監視部1〜3が監視する対象のコア1〜3と同じである。すなわち、停止部1はコア2に異常が検出された場合コア2を停止させ、停止部2はコア3に異常が検出された場合コア3を停止させ、停止部3はコア1に異常が検出された場合コア1を停止させる。
図5に戻り、停止部1〜3は異常が検出されたコア1〜3を停止する。停止部1〜3と、停止部1〜3が停止するコア1〜3の関係は、異常監視部1〜3が監視する対象のコア1〜3と同じである。すなわち、停止部1はコア2に異常が検出された場合コア2を停止させ、停止部2はコア3に異常が検出された場合コア3を停止させ、停止部3はコア1に異常が検出された場合コア1を停止させる。
異常監視部1〜3が監視しているコア1〜3は既知なので、自コアの異常監視部1〜3が監視しているコア1〜3に異常が検出されたことが図6(a)のような異常状態から明らかになると、停止部1〜3は異常が検出されたコアを停止する。停止するには上記のリセット回路1〜3を作動させ、停止対象のコア13にリセット信号を継続的に出力すればよい。
停止部1〜3はコア1〜3を停止させると、又は、コア1〜3を停止させる所定時間前に、コア間通信部1〜3を介して停止させたコア1〜3をコア1〜3に通知する(例えば、コア1にコア1の停止を通知する必要はない。)。所定時間前に通知することで、コアが停止する前に、他のコアが必要なデータをローカルRAM15から取得することができる。図6(b)は、停止状態のコアが登録された図の一例である。これにより、各コア1〜3が停止されたコアを共有できる。
<割り当て制御部>
図5に戻り、割り当て制御部1〜3は、コア1〜3やローカルRAM1〜3の異常状態に更新があると、コア1〜3とローカルRAM1〜3の組合せの制御を開始する。
図5に戻り、割り当て制御部1〜3は、コア1〜3やローカルRAM1〜3の異常状態に更新があると、コア1〜3とローカルRAM1〜3の組合せの制御を開始する。
図7は、各コアに共通の割り当て制御の手順を示すフローチャート図の一例である。
異常監視部1〜3は、それぞれ個別にコア1〜3及びローカルRAM1〜3の異常を検出している(S10)。
異常監視部1〜3は、それぞれ個別にコア1〜3及びローカルRAM1〜3の異常を検出している(S10)。
まず、コア1〜3のいずれかの異常が検出された場合(S20のYes)、割り当て制御部1〜3は、異常が検出されたコア1〜3が実行していたプログラム1〜3と、他のコア1〜3が実行しているプログラム1〜3の優先度を比較する(S30)。この判定を行うのは、異常が検出されたコア1〜3を監視していたコア1〜3の割り当て制御部43である。
・コア1の異常:割り当て制御部3は、プログラム1と、プログラム2,3の優先度を比較する。
・コア2の異常:割り当て制御部1は、プログラム2と、プログラム1,3の優先度を比較する。
・コア3の異常:割り当て制御部2は、プログラム3と、プログラム2,3の優先度を比較する。
・コア1の異常:割り当て制御部3は、プログラム1と、プログラム2,3の優先度を比較する。
・コア2の異常:割り当て制御部1は、プログラム2と、プログラム1,3の優先度を比較する。
・コア3の異常:割り当て制御部2は、プログラム3と、プログラム2,3の優先度を比較する。
異常が検出されたコア1〜3が実行していたプログラム1〜3よりも、優先度の低いプログラム1〜3がない場合(S40のNo)、異常が検出されたコア1〜3が実行していたプログラム1〜3の優先度が最も低いことになるので、割り当て制御部1〜3は異常が検出されたコア1〜3が実行していたプログラム1〜3を自コアに割り当てる(S50)。ただし、ワークメモリは元のローカルRAM1〜3のままとする。
・コア1の異常:割り当て制御部3は、ワークメモリをローカルRAM1としたままプログラム1をコア3に割り当てる。
・コア2の異常:割り当て制御部1は、ワークメモリをローカルRAM2としたままプログラム2をコア1に割り当てる。
・コア3の異常:割り当て制御部3は、ワークメモリをローカルRAM3としたままプログラム3をコア2に割り当てる。
・コア1の異常:割り当て制御部3は、ワークメモリをローカルRAM1としたままプログラム1をコア3に割り当てる。
・コア2の異常:割り当て制御部1は、ワークメモリをローカルRAM2としたままプログラム2をコア1に割り当てる。
・コア3の異常:割り当て制御部3は、ワークメモリをローカルRAM3としたままプログラム3をコア2に割り当てる。
こうすることで、実行速度は低下しても優先度の低いプログラム1〜3を継続して実行することができる。
異常が検出されたコア1〜3が実行していたプログラム1〜3よりも、優先度の低いプログラムがある場合(S40のYes)、割り当て制御部1〜3は優先度のより高いプログラム1〜3が専用組み合わせのコアとローカルRAM1〜3で実行されるように、コア1〜3とコア1〜3がワークメモリとするローカルRAM1〜3との組合せを変更する(S60)。この場合、専用組み合わせでないコアとローカルRAMで実行されるのは、最も優先度の低いプログラム31である。
・コア1の異常
プログラムP1、P2>P3の場合
割り当て制御部3は、ローカルRAM3をワークメモリにしてプログラム1をコア3に割り当てる。割り当て制御部3は、プログラム3(低)をコア3に割り当てたまま、ワークメモリをローカルRAM1に変更する。
プログラムP1、P3>P2の場合
割り当て制御部3は、ローカルRAM2をワークメモリにしてプログラム1をコア2に割り当てる。割り当て制御部3は、プログラム2(低)をコア2に割り当てたまま、ワークメモリをローカルRAM1に変更する。
・コア2の異常
プログラムP2、P3>P1の場合
割り当て制御部1は、ローカルRAM1をワークメモリにしてプログラム2をコア1に割り当てる。割り当て制御部1は、プログラム1(低)をコア1に割り当てたまま、ワークメモリをローカルRAM2に変更する。
プログラムP2、P1>P3の場合
割り当て制御部1は、ローカルRAM3をワークメモリにしてプログラム2をコア3に割り当てる。割り当て制御部1は、プログラム3(低)をコア3に割り当てたまま、ワークメモリをローカルRAM2に変更する。
・コア3の異常
プログラムP1、P3>P2の場合
割り当て制御部2は、ローカルRAM2をワークメモリにしてプログラム3をコア2に割り当てる。割り当て制御部2は、プログラム2(低)をコア2に割り当てたまま、ワークメモリをローカルRAM3に変更する。
プログラムP2、P3>P1の場合
割り当て制御部2は、ローカルRAM1をワークメモリにしてプログラム3をコア1に割り当てる。割り当て制御部2は、プログラム1をコア1に割り当てたまま、ワークメモリをローカルRAM3に変更する。
・コア1の異常
プログラムP1、P2>P3の場合
割り当て制御部3は、ローカルRAM3をワークメモリにしてプログラム1をコア3に割り当てる。割り当て制御部3は、プログラム3(低)をコア3に割り当てたまま、ワークメモリをローカルRAM1に変更する。
プログラムP1、P3>P2の場合
割り当て制御部3は、ローカルRAM2をワークメモリにしてプログラム1をコア2に割り当てる。割り当て制御部3は、プログラム2(低)をコア2に割り当てたまま、ワークメモリをローカルRAM1に変更する。
・コア2の異常
プログラムP2、P3>P1の場合
割り当て制御部1は、ローカルRAM1をワークメモリにしてプログラム2をコア1に割り当てる。割り当て制御部1は、プログラム1(低)をコア1に割り当てたまま、ワークメモリをローカルRAM2に変更する。
プログラムP2、P1>P3の場合
割り当て制御部1は、ローカルRAM3をワークメモリにしてプログラム2をコア3に割り当てる。割り当て制御部1は、プログラム3(低)をコア3に割り当てたまま、ワークメモリをローカルRAM2に変更する。
・コア3の異常
プログラムP1、P3>P2の場合
割り当て制御部2は、ローカルRAM2をワークメモリにしてプログラム3をコア2に割り当てる。割り当て制御部2は、プログラム2(低)をコア2に割り当てたまま、ワークメモリをローカルRAM3に変更する。
プログラムP2、P3>P1の場合
割り当て制御部2は、ローカルRAM1をワークメモリにしてプログラム3をコア1に割り当てる。割り当て制御部2は、プログラム1をコア1に割り当てたまま、ワークメモリをローカルRAM3に変更する。
こうすることで、優先度のより高いプログラム1〜3は専用組み合わせで処理されるので実行速度の低下を防止でき、優先度のより低いプログラム1〜3も継続して実行することができる。
なお、コア1〜3にプログラム1〜3を割り当てるとは、各コア1〜3の割り当て制御部1〜3の監視対象にプログラム1〜3を登録することであり、具体的には、プログラム1〜3のIDや先頭アドレスを他のコアの割り当て制御部1〜3に通知することである。割り当て制御部1〜3は、実行可能状態のプログラム1〜3を実行キューに登録して順番に実行する。
また、コア1〜3に異常が検出された場合、コア1〜3が複数のプログラム1〜3を実行することになるので、割り当て制御部1〜3は優先度の高いプログラムの実行頻度を優先度の低いプログラムよりも大きくする。
また、コア1〜3がワークメモリとして使用するローカルRAM1〜3を変更するとは、変更前のローカルRAM1〜3から移動先のローカルRAMにコア1〜3のアクセス先を移動することである(プログラムやデータを移動する)。プログラム1〜3は、ベースレジスタの値からのオフセットを指定することでアクセスされる再配置可能なプログラムである。割り当て制御部1〜3はこれを利用して、プログラム1〜3が専用組み合わせのコア1〜3とローカルRAM1〜3で実行される場合は、ベースレジスタにローカルRAM1〜3におけるプログラム1〜3の先頭アドレスを設定する。
コア1〜3が専用組み合わせでないローカルRAM1〜3をワークメモリとする場合、例えば、プログラムによってはコア間通信部1〜3やマルチレイヤバス28を介してローカルRAM1〜3にアクセスする必要がある。この場合、割り当て制御部1〜3は、ベースレジスタにローカルRAM1〜3を指定するアドレスとローカルRAM1〜3におけるプログラムの先頭アドレスを組み合わせて設定する。これにより、コア1〜3は、コア間通信部1〜3又はマルチレイヤバス28を介して他コアのローカルRAM1〜3にアクセスすることができる。
次に、ローカルRAM1〜3のいずれかの異常が検出された場合(S120のYes)、割り当て制御部1〜3は、異常が検出されたローカルRAM1〜3をワークメモリにしていたプログラム1〜3と、他のプログラム1〜3の優先度を比較する(S130)。この判定を行うのは、ローカルRAM1〜3の異常を検出したコアの割り当て制御部43である。
・ローカルRAM1の異常
割り当て制御部1は、プログラム1と、プログラム2,3の優先度を比較
・ローカルRAM2の異常
割り当て制御部2は、プログラム2と、プログラム1,3の優先度を比較
・ローカルRAM3の異常
割り当て制御部3は、プログラム3と、プログラム1,2の優先度を比較
異常が検出されたローカルRAM1〜3をワークメモリにしていたプログラム1〜3よりも優先度が低いプログラム1〜3がない場合(S140のNo)、異常が検出されたローカルRAM1〜3をワークメモリとするプログラム1〜3の優先度が最も低いことになるので、割り当て制御部1〜3は異常が検出されたローカルRAM1〜3をワークメモリとするプログラム1〜3を、他コアがワークメモリとするローカルRAM1〜3をワークメモリにして実行を継続する(S150)。この「他コア」は例えばコア間通信部1〜3の空き容量が最も大きいコアである。または、比較的低い優先度のプログラム1〜3を実行しているコアでもよい。ここでは、監視対象のコア1〜3に割り当てるとする。
・ローカルRAM1の異常
割り当て制御部1は、プログラム1のワークメモリをローカルRAM2に変更する。
・ローカルRAM2の異常
割り当て制御部2は、プログラム2のワークメモリをローカルRAM3に変更する。
・ローカルRAM3の異常
割り当て制御部3は、プログラム3のワークメモリをローカルRAM1に変更する。
・ローカルRAM1の異常
割り当て制御部1は、プログラム1と、プログラム2,3の優先度を比較
・ローカルRAM2の異常
割り当て制御部2は、プログラム2と、プログラム1,3の優先度を比較
・ローカルRAM3の異常
割り当て制御部3は、プログラム3と、プログラム1,2の優先度を比較
異常が検出されたローカルRAM1〜3をワークメモリにしていたプログラム1〜3よりも優先度が低いプログラム1〜3がない場合(S140のNo)、異常が検出されたローカルRAM1〜3をワークメモリとするプログラム1〜3の優先度が最も低いことになるので、割り当て制御部1〜3は異常が検出されたローカルRAM1〜3をワークメモリとするプログラム1〜3を、他コアがワークメモリとするローカルRAM1〜3をワークメモリにして実行を継続する(S150)。この「他コア」は例えばコア間通信部1〜3の空き容量が最も大きいコアである。または、比較的低い優先度のプログラム1〜3を実行しているコアでもよい。ここでは、監視対象のコア1〜3に割り当てるとする。
・ローカルRAM1の異常
割り当て制御部1は、プログラム1のワークメモリをローカルRAM2に変更する。
・ローカルRAM2の異常
割り当て制御部2は、プログラム2のワークメモリをローカルRAM3に変更する。
・ローカルRAM3の異常
割り当て制御部3は、プログラム3のワークメモリをローカルRAM1に変更する。
こうすることで、各コア1〜3は、実行速度は低下しても優先度の低いプログラム1〜3を継続して実行することができる。
異常が検出されたローカルRAM1〜3をワークメモリにしていたプログラム1〜3よりも優先度が低いプログラム1〜3がある場合(S140のYes)、割り当て制御部1〜3は優先度のより高いプログラム1〜3を、コア1〜3が専用組み合わせのローカルRAM1〜3をワークメモリとして実行するように、コア1〜3とローカルRAM1〜3の組合せを変更する(S160)。この場合、専用組み合わせでないコアとローカルRAMで実行されるのは、最も優先度の低いプログラム31である。
・ローカルRAM1の異常
プログラム1、3>プログラム2
割り当て制御部1は、最も優先度の低いプログラム2を実行しているコア2にプログラム1を割り当て、専用組み合わせになるようにワークメモリをローカルRAM2に変更する。また、割り当て制御部1は、ワークメモリを変更することなく、プログラム1の割り当て先のコア2が実行していたプログラム2を自コア(コア1)に割り当てる。
プログラム1、2>プログラム3
プログラム2、コア2,ローカルRAM2を、プログラム3、コア3,ローカルRAM3で置き換えた関係になる。
・ローカルRAM2の異常
プログラム1,2>プログラム3
割り当て制御部2は、最も優先度の低いプログラム3を実行しているコア3にプログラム2を割り当て、専用組み合わせになるようにワークメモリをローカルRAM3に変更する。また、割り当て制御部2は、ワークメモリを変更することなく、プログラム2の割り当て先のコア3が実行していたプログラム3を自コア(コア2)に割り当てる。
プログラム2、3>プログラム1
プログラム3、コア3,ローカルRAM3を、プログラム1、コア1,ローカルRAM1で置き換えた関係になる。
・ローカルRAM3の異常
プログラム2,3>プログラム1
割り当て制御部3は、最も優先度の低いプログラム1を実行しているコア1にプログラム3を割り当て、専用組み合わせになるようにワークメモリをローカルRAM1に変更する。また、割り当て制御部3は、ワークメモリを変更することなく、プログラム3の割り当て先のコア1が実行していたプログラム1を自コア(コア3)に割り当てる。
プログラム1,3>プログラム2
プログラム1、コア1,ローカルRAM1を、プログラム2、コア2,ローカルRAM2で置き換えた関係になる。
・ローカルRAM1の異常
プログラム1、3>プログラム2
割り当て制御部1は、最も優先度の低いプログラム2を実行しているコア2にプログラム1を割り当て、専用組み合わせになるようにワークメモリをローカルRAM2に変更する。また、割り当て制御部1は、ワークメモリを変更することなく、プログラム1の割り当て先のコア2が実行していたプログラム2を自コア(コア1)に割り当てる。
プログラム1、2>プログラム3
プログラム2、コア2,ローカルRAM2を、プログラム3、コア3,ローカルRAM3で置き換えた関係になる。
・ローカルRAM2の異常
プログラム1,2>プログラム3
割り当て制御部2は、最も優先度の低いプログラム3を実行しているコア3にプログラム2を割り当て、専用組み合わせになるようにワークメモリをローカルRAM3に変更する。また、割り当て制御部2は、ワークメモリを変更することなく、プログラム2の割り当て先のコア3が実行していたプログラム3を自コア(コア2)に割り当てる。
プログラム2、3>プログラム1
プログラム3、コア3,ローカルRAM3を、プログラム1、コア1,ローカルRAM1で置き換えた関係になる。
・ローカルRAM3の異常
プログラム2,3>プログラム1
割り当て制御部3は、最も優先度の低いプログラム1を実行しているコア1にプログラム3を割り当て、専用組み合わせになるようにワークメモリをローカルRAM1に変更する。また、割り当て制御部3は、ワークメモリを変更することなく、プログラム3の割り当て先のコア1が実行していたプログラム1を自コア(コア3)に割り当てる。
プログラム1,3>プログラム2
プログラム1、コア1,ローカルRAM1を、プログラム2、コア2,ローカルRAM2で置き換えた関係になる。
こうすることで、優先度のより高いプログラム1〜3は専用組み合わせで処理されるので実行速度の低下を防止でき、優先度のより低いプログラム1〜3も継続して実行することができる。
また、ローカルRAM1〜3に異常が検出された場合、複数のプログラム1〜3が1つのローカルRAM1〜3を共有することになるので、割り当て制御部1〜3はローカルRAM1〜3の領域毎にプログラム1〜3を割り当てる。この際、優先度の高いプログラム1〜3に多くの領域を割り当てることで(例えば、優先度が高と中又は中と低の組み合わせでは3対2、優先度が高と低の組み合わせでは3対1などとする)、メモリスワップを少なくでき、優先度の高いプログラム1〜3をより高速に実行できるようになる。なお、領域の割り当ては、例えばコア間通信部1〜3により実現される。
なお、ローカルRAM1〜3の一部の異常が検出された場合に、一部のプログラムだけを移動することもできる。例えば、コア1がローカルRAM1をワークメモリにしてプログラム1,4を実行中、ローカルRAM1の一部に異常が検出された場合、優先度の高いプログラム1はコア1がローカルRAM1をワークメモリして実行を継続し、優先度の低いプログラム4はコア1がローカルRAM2又は3をワークメモリして実行する。こうすることで、ローカルRAM1の一部の異常が検出された場合に、プログラム1〜4の配置を最低化できる。
以上説明したように、本実施形態のマイコン100は、コア1〜3又はローカルRAM1〜3に異常が検出された場合、優先度が高いプログラムを専用組み合わせで実行するようにコア13とローカルRAM15の組合せを変更するので、優先度の高いプログラム31は正常時と同等の速度で実行が継続される。また、優先度の低いプログラムは実行速度は低下しても継続して実行される。
〔変形例〕
<マルチプロセッサ>
図8は、マルチプロセッサ型のマイコン100のハードウェア構成図の一例を示す。図8において図3と同一部には同一の符号を付しその説明は省略する。このマイコン100は図3と同様にCPU1〜3を有しているが、各CPU1〜3は1つのプロセッサ21に搭載されている。この場合、プロセッサ21とCPU1〜3はほぼ同じ意味になる場合がある。したがって各プロセッサ21は、DMAC22の調停を受けてマルチレイヤバス28を介して他のプロセッサ21と通信する。
<マルチプロセッサ>
図8は、マルチプロセッサ型のマイコン100のハードウェア構成図の一例を示す。図8において図3と同一部には同一の符号を付しその説明は省略する。このマイコン100は図3と同様にCPU1〜3を有しているが、各CPU1〜3は1つのプロセッサ21に搭載されている。この場合、プロセッサ21とCPU1〜3はほぼ同じ意味になる場合がある。したがって各プロセッサ21は、DMAC22の調停を受けてマルチレイヤバス28を介して他のプロセッサ21と通信する。
しかしながら、異常監視部1〜3の監視形態及び監視方法、停止部1〜3の停止方法、並びに、割り当て制御部1〜3のプログラム1〜3の割り当て方法はマルチコアの場合と同じである。
したがって、本実施形態のコア1〜3がプログラム1〜3を実行する際のコア1〜3とローカルRAM1〜3の組合わせの変更は、マルチプロセッサ型のマイコン100についても有効である。
<マスター・スレーブ型>
図9は、マルチコア型又はマルチプロセッサ型のマイコン100において、コア1、2のフェールセーフ処理を1つのコア13が集中的に制御する場合の機能ブロック図の一例を示す。この場合のハードウェア構成は図3又は図8のどちらでもよい。また、図10は、コア3がコア1、2を監視する手順のシーケンス図の一例である。
図9は、マルチコア型又はマルチプロセッサ型のマイコン100において、コア1、2のフェールセーフ処理を1つのコア13が集中的に制御する場合の機能ブロック図の一例を示す。この場合のハードウェア構成は図3又は図8のどちらでもよい。また、図10は、コア3がコア1、2を監視する手順のシーケンス図の一例である。
図9に示すように、コア3が異常監視部41、停止部42及び割り当て制御部43を有する。コア3は、異常監視等の専用のコアでもよいし、図3などのようにプログラム31を実行してもよく、処理能力などにより設計できる。
図10のステップS300とS400はいずれもコア3が図7と同様の手順を行うステップである。コア3は、ステップS300ではコア1に対し、S400ではコア2に対し、それぞれ図7の制御を行う。すなわち、異常監視部41は、コア1、2に異常が検出される否かを監視し、また、ローカルRAM1,2に異常が検出されるか否かを監視する。コア1又は2に異常が検出された場合、停止部42はコア1又はコア2を停止する。
例えば、コア1に異常が検出された場合、割り当て制御部43は、コア2が優先度の高いプログラム1,2を、ローカルRAM2をワークエリアにして実行するように、コア1、2とローカルRAM2の組合せを変更する。優先度の低いプログラム1,2は、コア2がローカルRAM1をワークエリアにして実行することになる。コア2に異常が検出された場合はこの逆になる。
また、ローカルRAM1に異常が検出された場合、割り当て制御部43は、コア2が優先度の高いプログラム1又は2をローカルRAM2をワークエリアにして実行するように、コア1、2とプログラム1,2の組合せを変更する。優先度の低いプログラム1又は2は、コア1がローカルRAM2をワークエリアにして実行することになる。ローカルRAM2に異常が検出された場合はこの逆になる。
このように、本実施形態のプログラムとワークメモリの組合せは、各コアがそれぞれ制御することも、マスター・スレーブ型で1つのコアが制御することもできる。
12 コア間通信部
13 コア
14 リセット回路
15 ローカルRAM
21 プロセッサ
22 DMAC
23 SDRAM
24 ROM
25 I/Oブリッジ
28 マルチレイヤバス
41 異常監視部
42 停止部
43 割り当て制御部
100 マイコン
13 コア
14 リセット回路
15 ローカルRAM
21 プロセッサ
22 DMAC
23 SDRAM
24 ROM
25 I/Oブリッジ
28 マルチレイヤバス
41 異常監視部
42 停止部
43 割り当て制御部
100 マイコン
Claims (10)
- ローカルメモリとコアが対に配置され、コアが対のローカルメモリを作業メモリとしてプログラムを実行するCPUを2つ以上有するマイコンであって、
コア又はローカルメモリの異常を検出する異常検出手段と、
各プログラムの優先度が登録された優先度テーブルと、
コア又はローカルメモリの異常が検出された場合、優先度の高いプログラムほど優先的に、コアが該コアと対のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更するリソース割り当て変更手段と、
を有するマイコン。 - 前記リソース割り当て変更手段は、コアが該コアと対のローカルメモリを作業メモリとして実行できない優先度の低いプログラムを、コアが該コアと対でないローカルメモリを作業メモリとして実行するように、コアとローカルメモリの組合せを変更する、
請求項1記載のマイコン。 - 前記異常検出手段が異常を検出した第1のコアが実行していた第1のプログラムの優先度が、第2のコアが実行している第2のプログラムよりも高い場合、
前記リソース割り当て変更手段は、前記第2のコアが前記第1のプログラムを前記第2のコアと対の第2のローカルメモリを作業メモリとして実行するようにコアと作業メモリの組合せを変更する、
請求項1又は2記載のマイコン。 - 前記リソース割り当て変更手段は、前記第2のコアが前記第2のプログラムを前記第1のコアと対の第1のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更する、
請求項3記載のマイコン。 - 前記異常検出手段が異常を検出した第1のコアが実行していた第1のプログラムの優先度が、第2のコアが実行している前記第2のプログラムよりも低い場合、
前記リソース割り当て変更手段は、前記第2のコアが第1のプログラムを前記第1のコアと対の第1のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更する、
請求項1〜4いずれか1項記載のマイコン。 - 前記異常検出手段が異常を検出した第1のローカルメモリを作業メモリとして第1のコアが実行していた第1のプログラムの優先度が、第2のローカルメモリを作業メモリとして第2のコアが実行していた第2のプログラムよりも高い場合、
前記リソース割り当て変更手段は、前記第2のコアが前記第1のプログラムを前記第2のコアと対の前記第2のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更する、
請求項1〜5いずれか1項記載のマイコン。 - 前記リソース割り当て変更手段は、前記第1のコアが前記第2のプログラムを前記第2のコアと対の前記第2のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更する、請求項6記載のマイコン。
- 前記異常検出手段が異常を検出した第1のローカルメモリを作業メモリとして第1のコアが実行していた第1のプログラムの優先度が、第2のローカルメモリを作業メモリとして第2のコアが実行していた第2のプログラムよりも低い場合、
前記リソース割り当て変更手段は、前記第1のコアが前記第1のプログラムを前記第2のコアと対の前記第2のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更する、請求項6又は7記載のマイコン。 - 前記異常検出手段がコアの異常を検出した場合、異常が検出されたコアを停止するコア停止手段と、
を有する請求項1〜8いずれか1項記載のマイコン。 - ローカルメモリとコアが対に配置され、コアが対のローカルメモリを作業メモリとするCPUを2つ以上有するマイコンのリソース割り当て方法であって、
異常検出手段が、コア又はローカルメモリの異常を検出するステップと、
コア又はローカルメモリの異常が検出された場合、リソース割り当て変更手段が、各プログラムの優先度が登録された優先度テーブルを参照して、
優先度の高いプログラムほど優先的に、コアが該コアと対のローカルメモリを作業メモリとして実行するように、コアと作業メモリの組合せを変更するステップと、
を有するリソース割り当て方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010283151A JP2012133458A (ja) | 2010-12-20 | 2010-12-20 | マイコン、リソース割り当て方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010283151A JP2012133458A (ja) | 2010-12-20 | 2010-12-20 | マイコン、リソース割り当て方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2012133458A true JP2012133458A (ja) | 2012-07-12 |
Family
ID=46649009
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010283151A Pending JP2012133458A (ja) | 2010-12-20 | 2010-12-20 | マイコン、リソース割り当て方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2012133458A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2015229467A (ja) * | 2014-06-06 | 2015-12-21 | 本田技研工業株式会社 | 電子制御システム |
| JP2021026577A (ja) * | 2019-08-07 | 2021-02-22 | 三菱電機株式会社 | 制御装置、演算装置、制御方法、及び制御プログラム |
| JP2021172142A (ja) * | 2020-04-21 | 2021-11-01 | 株式会社東海理化電機製作所 | 異常検出装置 |
-
2010
- 2010-12-20 JP JP2010283151A patent/JP2012133458A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2015229467A (ja) * | 2014-06-06 | 2015-12-21 | 本田技研工業株式会社 | 電子制御システム |
| JP2021026577A (ja) * | 2019-08-07 | 2021-02-22 | 三菱電機株式会社 | 制御装置、演算装置、制御方法、及び制御プログラム |
| JP2021172142A (ja) * | 2020-04-21 | 2021-11-01 | 株式会社東海理化電機製作所 | 異常検出装置 |
| JP7332529B2 (ja) | 2020-04-21 | 2023-08-23 | 株式会社東海理化電機製作所 | 異常検出装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100578437B1 (ko) | 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 | |
| US9690719B2 (en) | Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof | |
| US9032482B2 (en) | Information processing apparatus and control method | |
| US12282794B2 (en) | Data processing systems | |
| JP4874165B2 (ja) | マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法 | |
| CN104798046A (zh) | 对称多处理器布置、安全关键系统及其方法 | |
| JP2008242593A (ja) | マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス保護方法 | |
| JP2012133458A (ja) | マイコン、リソース割り当て方法 | |
| JP4457047B2 (ja) | マルチプロセッサシステム | |
| KR101067264B1 (ko) | 컴퓨터 시스템의 제어 방법 및 장치 | |
| US20240004767A1 (en) | Data processing systems | |
| JP2019126034A (ja) | 仮想割り込みサービスプロバイダのためのサービス要求割り込みルータ | |
| JP5996110B2 (ja) | 計算機システム及び制御方法 | |
| JP7236811B2 (ja) | 情報処理装置 | |
| JP2008026944A (ja) | バス結合型マルチプロセッサ | |
| US9990131B2 (en) | Managing memory in a multiprocessor system | |
| JP2012113632A (ja) | 情報処理装置、情報処理装置の排他的アクセス権管理方法 | |
| JP2010092101A (ja) | 情報処理装置 | |
| JP2020204877A (ja) | 半導体装置及びその動作方法 | |
| US12450084B2 (en) | System and operation method of hybrid virtual machine managers | |
| JP5651209B2 (ja) | マルチプロセッサシステム | |
| JP3540119B2 (ja) | 割り込みルーティング機構およびマルチプロセッサ制御方式 | |
| JP6645467B2 (ja) | マイクロコンピュータ | |
| JP4853620B2 (ja) | マルチプロセッサシステムと初期立ち上げ方法およびプログラム | |
| JP2020030507A (ja) | マルチコア制御装置 |