車載システムにおける高信頼性と電力管理機能の実現 ――ソフトウェアにもフェイル・セーフの考えかたが必須

岡澤幸一

tag: 組み込み

技術解説 2004年1月15日

1 ソフトにおけるフェイル・セーフ機能とは

 車載システムでは高信頼性が要求されます.これはあたりまえの話といえますが,では実際にどのようなことが求められるのでしょうか.ひと言で言うと,「システムの機能が『停止』しない」という点に集約されます.

 ソフトウェア・システムの場合,完全にバグを除去することはかなり難しいことです.しかし,かりにバグが原因のトラブルが発生したとしても,システムとしての機能は継続しなければなりません.自動車に限らず,機械分野においてフェイル・セーフという機能は重要です.このことは,ソフトウェアにも求められます.

●ソフトウェアの信頼性を示す三つの指標

 高信頼性を実現するための基本的な項目は次の三つです.

1)堅ろうさ

 同じレベルの障害が発生したとき,システムがダウン(停止)する場合としない場合があります.このとき,停止しないシステムのほうが「より頑健である」,あるいは「堅ろうさを持っている」と言います.

 ここで,汎用OSの基本的な障害であるメモリの不正アクセスを考えてみましょう.メモリ障害が検知されたとき,汎用OSでは不正アクセスを行ったプロセスがセグメント・フォールト注1で停止します.この場合,被害はユーザ・プロセスにのみ限定することができ,ほかのプロセスは走行しています.つまり,メモリ障害の検知機能を持ったOSは堅ろうさを持っていると言えます.

 注1;CPUが検知する基本的な障害によってアクセスできない領域をプログラム・コードがアクセスした場合,通常,CPUはセグメント・フォールト用のトラップ・ベクタにジャンプする.それ以降はOSが受け取り,セグメント・フォールト障害として対応する処理(シグナル通知)を行う.

2)異常の検知

 上記のメモリの不正アクセスの例では,メモリ障害を検知する機能が重要な役割を果たしています.ここでは,アルゴリズム的なバグを考えてみましょう.あるコード内でループとなり,次のステップに移らないようなケースがあります.この場合,プログラムとしては動作を継続していますが,動作そのものは異常になっています.

 物理的な異常検知はOSの機能で実現することが可能ですが,システム的な異常(例えば,ハードウェアにアクセスする順番やタイミングの異常)を検知する場合,プログラムの中になんらかの機能を組み込む必要があります.システムを構築するたびに検知機能を組み込むのではなく,フレームワーク注2として提供された環境を使うことができれば,ソフトウェア開発者の手間を軽減できます.

 注2;ソフトウェア・システムを設計,実装する際の「枠組み」を指す. 実装におけるソフトウェア部品(ライブラリ,マネージャ)も含む.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日