コンピュータシステムの説明で使われる「リアルタイム」という用語を目にしたり、LabVIEW Real-Timeモジュールという用語を耳にしたことがある方も多いのではないでしょうか。これは何を指す用語なのでしょうか。システムが「リアルタイム」となるためには、どのようなコンポーネントが必要なのでしょうか。リアルタイムシステムを採用すべきプロジェクトとは、どのようなものでしょうか。
このドキュメントでは、そのような疑問にお答えするとともに、どのような場合にリアルタイムシステムを構築すべきかについても解説します。その後のステップとして、「NIハードウェアとソフトウェアでリアルタイムシステムを構築する」をお読みいただくことをお勧めします。このページでは、短時間で優れたリアルタイムシステムを構築する方法を解説しています。
リアルタイムコンピュータシステムは、極めて明確なタイミング要件のプログラムでも確実に実行する高い信頼性を備えています。これは多くの科学/工学プロジェクトに求められる性能です。リアルタイムシステムの構築に必要な主要コンポーネントとして、リアルタイムオペレーティングシステム (RTOS) があります。リアルタイムシステム全体を構成するソフトウェア/ハードウェアコンポーネントについては、次のセクションで説明します。
多くのエンジニアや研究者にとって、汎用OS (Windowsなど) を搭載した標準PC上で計測/制御プログラムを実行するのは、受け入れられることではありません。オペレーティングシステムでは、ウイルススキャン、画像の更新、システムのバックグラウンドタスクの実行など、さまざまな理由で、ユーザプログラムの実行が遅延する可能性が常にあります。割り込まれることなく特定のレートで実行する必要のあるプログラム (クルーズコントロールシステムなど) では、そのような遅延はシステムの機能停止につながります。
そうした特性は意図されたものであり、汎用オペレーティングシステムは、多くのプロセスやアプリケーションを同時に実行し、ユーザインタフェースグラフィックの充実など他の機能を提供するよう設計されているのです。一方、リアルタイムオペレーティングシステムは、1つのプログラムを極めて高精度なタイミングで実行することを目的としています。具体的には、リアルタイムオペレーティングシステムで以下のことが可能です。
リアルタイムコンピュータシステムについて調べると、「ハードリアルタイム」や「ソフトリアルタイム」という用語を目にすることがあります。ハードリアルタイムシステムとは、特定の最悪ケース時間枠内でタスクが実行されることを絶対的に保証するように設計されているシステムです。したがって、安全性に関わるプロジェクトや、機能停止により多額の損害が発生する可能性のあるプロジェクトでは、多くの場合ハードリアルタイムが必要となります。一方、ソフトリアルタイムシステムは、タイミング要件をほぼ満たすよう設計されていますが、絶対的な確実性はありません。これは、データフレームが失われることは望ましくないが、それが必ずしも重大な問題とはならない処理 (ビデオ処理など) で使用されます。
図1. ハードリアルタイムシステムは、正しくプログラミングすれば、期限は一貫して守られますが、ソフトリアルタイムシステムでは、期限を超える可能性があります。
リアルタイムオペレーティングシステムの仕組みに関する詳細情報、または「確定性」や「ジッタ」といった一般的なリアルタイム用語については、「リアルタイムオペレーティングシステムとは」を参照してください。
リアルタイムシステムは、高精度タイミングのほか、数日、数ヶ月、あるいは数年にもわたって確実に実行するように設定することもできます。これは、24時間365日稼動するシステムだけでなく、ダウンタイムによってコストの問題が発生するアプリケーションにとっても重要なことです。 ユーザプログラムが停止するという状況が発生した場合、コンピュータ全体が自動で再起動されるよう、リアルタイムシステムには通常「ウォッチドッグ」機能が搭載されています。さらに、リアルタイムシステムに使用されるハードウェアは、極めて堅牢に設計されていることが多く、過酷な条件や長期稼動にも耐えることができます。
リアルタイムシステムの構築に必要な主要コンポーネントはRTOSですが、他にもさまざまなソフトウェアやハードウェアが必要です。
結論として、リアルタイムシステムは、プログラムの特定部分を一定時間内に実行する必要がある場合や、プログラムを長期間にわたって安定して稼動させる必要がある場合に適しています。ミッションクリティカルなプロジェクトや安全性に関わるプロジェクトであれば、明らかにリアルタイムシステムが必要です。
高精度タイミングや長期間にわたる安定稼動が絶対条件ではないプロジェクトでも、リアルタイムシステムを構築しておけば、計測/制御プロセスを中断することなく継続的にプログラムを稼動できるという安心感が得られます。現在構築しているシステムの動作が停止した場合の保守費用を考えれば、リアルタイムシステムの構築に必要なソフトウェアやハードウェアの費用も無駄ではないかもしれません。
リアルタイムシステムは、すべての計測/制御プロジェクトに適しているわけではありません。リアルタイムオペレーティングシステムは通常一度に1つのプログラムしか実行せず、ほとんどのリアルタイムシステムはユーザインタフェースがありません。その場合グラフィックやユーザ制御には別のコンピュータが必要となります。プロジェクトによっては、ASICやFPGAにロジックを実装したハードウェア確定性が必要なものもあります。それでも現在数千ものリアルタイムシステムが稼動しており、今後も高精度タイミングと高信頼性が求められるプロジェクトには積極的に採用され続けるでしょう。
以下の資料では、NIのソフトウェアとハードウェアを使用し、できるだけ短時間で優れたリアルタイムシステムを構築する方法を解説しています。