Contents What's New! Diary Profile Link

Kirin's room

Top NSX STEPWGN Fit  
 トヨタ自動車は,1999年6月にマイナーチェンジした新型車「プラド」のエンジン制御システムで32ビット・マイクロプロセサを初めて採用し,さらにリアルタイムOS「μITRON4.0」を用いたことを明らかにした。1999年6月30日に東京で開催された「第10回ITRONオープンセミナー」で発表したもの。システムの開発に当たっては,デンソー,富士通テン,NEC,東芝の協力を得たという。
 自動車のエンジン制御システムは点火タイミングや最適な燃料噴射量などを1サイクルごとに算出しているが,排気ガス規制などに対応するためにその制御はますます高度化,複雑化している。これに対応するため,搭載するマイクロプロセサを従来の8ビット品や16ビット品から32ビット品に切り替えた。さらにITRONを採用することで,複雑なエンジン制御プログラムの開発期間を従来に比べて3割程度短縮できたという。同社は今後,他車種にもエンジンのモデルチェンジに合わせて,ITRONが稼動する32ビット・マイクロプロセッサを順次,採用していく計画。(日経BPより転載)

 以前、小生は大手半導体メーカーの子会社で、組み込み機器用リアルタイムOS(ITRON=Industrial The Real-time Operating system Nucleus)の担当をしてました。上記のトヨタのエンジン制御システムにリアルタイムOS(RTOS)が採用されることも早々に知っていましたし、プロジェクトに一部携わってました。
 今ではRTOSは民生機器に深く浸透しており、特に日本国内では東大の坂村先生が提唱されたTRONプロジェクトのひとつで、組み込み機器用のRTOSであるITRONが数多く採用されています。
 しかし、小生が入社した頃は、半導体の性能やRTOSに対する理解がなかったので、あまり普及しませんでした。しかし、その後の拡販活動や半導体性能の向上により、徐々に普及するようになりました。現在、国内で普及しているRTOSのほとんどはμITRONという仕様だと思います。きっと、あなたが持ってる民生機器の中にも1つくらいは入ってるはずです。有名どころでは、カーナビや携帯電話、カーステレオやデジカメなどです。
 ITRONが16ビットのMPU(マイクロ・プロセッサ・ユニット)を対象として仕様化されたものに対して、μITRONは、当初8ビット・シングルチップ・マイコンを対象として仕様化されたものです。今では32ビット・シングルチップ・マイコンや32ビットMPUにも応用されています。

 製品のライフサイクルが早くなり、それにともなって開発期間の短縮やディバッグ工数の削減などが開発側から要求されるようになったためRTOSが日の目を見ることになりました。現在、RTOS+C言語という組み合せがベストだと思われます。
 なぜRTOSなのかというと、通常のプログラミングだと、プログラムとして本来やってほしいこと(アプリケーション・プログラム)以外に、アプリケーション・プログラムを制御するプログラム(制御プログラム)というものも、開発者が作成する必要があります。しかし、制御プログラム部分をRTOSに置き換えることで、開発者が制御プログラムをわざわざ作成することがなくなり、制御プログラム部の動作もRTOS仕様によって保証されるのでディバッグなどにかかる時間も短縮することができます。
 また、RTOSはプログラムをタスクという単位で管理しますので、プログラムの部品化、標準化を図ることができるようになります。部品化することによって次期システムへの流用性が向上し、開発期間の短縮が実現できます。部品化することによってタスク・プログラムは比較的小さくなるのでソースコードも見やすくなりバグの発生率も減少します。
 TRON仕様のRTOSは、仕様が統一されているので一度覚えてしまうと使用する半導体が異なっても、RTOSの知識はそのまま使えるので教育面でも優れています。

 RTOSは、複数のタスクを管理することになるので、マルチタスクOSという側面も持つことになります。マルチタスクの利点は複数のタスクを平行処理できるので処理効率がよくなります。よってRTOSを正確に呼ぶのなら『マルチタスク・リアルタイムOS』ということになります。

 『リアルタイム』という言葉は、世間一般では『即時(瞬間)』という意味ですが、RTOSにおける『リアルタイム』とは、『実時間(ある一定時間)』という意味になります。RTOSは、『タスクの処理順番を決める』という役割があります。よってRTOSは『ある一定時間までにある処理を順序よく処理するOS』ということになります。

 RTOSを導入すると処理が早くなると思われる方がいますが、実は処理は早くはなりません。
 RTOSはマルチタスクOSの機能も持っていることは先程お話しましたが、マルチタスクOSの役割にはタスクを切りかえるという仕事があります。MPUやシングルチップには通常CPUは1つしかありませんので、ある瞬間では1つのタスクしか処理できないということになります。
 RTOSは複数のタスクを切り替える際、現在CPU上で動作しているタスクが使用していたレジスタ情報をRAMやスタックに退避してタスクを停止させ、これから動作させようとするタスクのRAMやスタックに退避していたレジスタの内容を復帰したりします。このようなレジスタ情報の退避/復帰やRTOS自身の情報の操作などするため、それなりの時間がかかります。この時間をOSのオーバーヘッドと呼んでいます。
 RTOS導入前では、ユーザ自身がシステムに合った制御プログラムをプログラミングしているため、それほど大きなオーバーヘッドは発生しませんが、リアルタイムOSを導入すると、余計なオーバーヘッドが発生しますので、RTOSを導入しても処理が早くなるということはないのです。
 システムによっては、それほど時間シビア(ここでいう時間はμsecオーダーですけどね。)じゃないものがありますので、そういったシステムではRTOSを導入するメリットの方が多いと思います。

 メリットばかりではありません。やっぱりデメリットもあります。先程説明しましたオーバーヘッドもそのひとつです。それ以外には、RAMを多く使用します。これは、タスクがいつ切り替えられるかRTOSは分からないので、レジスタ情報を保存するためのRAM領域がタスクごとに必要になるためです。だからWindows98やWindowsNTなどはRAMを多く積むと速くなるのです。ハードディスクよりRAMの方がアクセススピードが速いでしょ。
 それ以外は、初めてRTOSを導入するための準備が必要になります。RTOS導入前までのプログラミングとは考え方がまったく異なるためです。

 色々難しいことを書いてきましたが、小生はRTOSについての知識が多少なりともあるつもりです。