ポストPC時代のキーワード「エンベデッド」のすべて ――転換点はカー・ナビゲーション・システム
4.カーナビに見る組み込みシステム設計のポイント
カーナビに必要とされる機能を列挙してみると,自動車の走行中に実にさまざまなことを処理しながら,ドライバに情報を提供している.これらの処理を列挙してみると,だいたい表2のようになる.
このなかで,「目的地までの最適ルートの算出」は非常にCPUパワーを消費する演算である.カーナビは,重たい演算処理をたびたび行いながら,その他の入力情報の処理や結果の表示を,つねに並行処理で行っているわけである.車載で利用されるカーナビは,動作環境が苛酷である.だからといって,処理がもたつき方向指示などが遅れると,ドライバに負担をかけるばかりか,大きな事故につながりかねない.こうした並行処理をリアルタイムに実現するために,高性能なRISC CPUを搭載して十分なCPUパワーをもたせるだけでなく,ソフトウェアの組み方にも工夫をしている.実際,CPUを2個搭載している製品も珍しくない.
一般的なソフトウェアはシーケンシャルに処理を実行していくのに対し,カーナビなどのアプリケーションはその処理をマルチタスク化している.さまざまな処理を並列的に進めていくためには,マルチタスク化したほうが有利な場合が断然多い.
〔表2〕カーナビに必要な機能
入力処理 | (1)GPSからの位置情報 (2)ジャイロスコープからの位置補正情報 (3)VICSからの渋滞情報 (4)車速情報 (5)CD-ROMあるいはDVD-ROMからの地図情報 |
演算処理 | 目的地までの最適ルートの算出 |
出力処理 | (1)地図表示 (2)位置表示 (3)ルート表示 (4)方向指示の音声出力 |
●シーケンシャル処理とマルチタスク処理の違い
シーケンシャル・プログラムとマルチタスク・プログラムでは,構造的にどのように違うのであろうか.シーケンシャル・プログラムは,一つのプログラムがつねにぐるぐると回っており,一つのプログラムとして構成されている.これに対し,マルチタスク・プログラムは,プログラムをタスク(スレッドともいう)に分割しているところ(マルチタスク化という)がもっとも違う部分である.
マルチタスク化されたプログラムでは,各タスクをどのような順番で実行するかを決めるスケジューリングを行う必要がでてくる.OSが行う,もっとも重要な処理はこのスケジューリングである.用途によって,スケジューリング方式は変わってくる.