メイン コンテンツにスキップ
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Windows IoT Enterprise のソフト リアルタイム
- [アーティクル]
- 09/22/2022
この記事の内容
Windows 10 ソフトリアルタイムは、Windows 10 IoT Enterprise バージョン 21H2 の新機能で、デバイス メーカーがデバイスにソフト リアルタイム機能を導入できます。
このリアルタイム動作は、4 つの重要な設定によって導入されます。
CPU の分離: システムレベルの障害を分離された CPU から移行することで、ユーザーのリアルタイム アプリケーションへの潜在的なジッターを低減します
分離された CPU 上のカスタム ISR/DPC ピニング: すべてのハードウェア割り込みは、システム コアと非リアルタイム コアにルーティングされますが、カスタム ISR/DPCドライバーを記述することで、デバイス固有の割り込みをリアルタイム コアにルーティングできます。
ミューテックスの優先度継承: この設定により、複雑なマルチスレッド シナリオでも、優先度の高いスレッドが確実に実行されます。
最大 16 個の RT スレッド優先度レベル: これにより、プログラマは、最も重要なものが最初に実行されるように、リアルタイムのタスク間でリソースを分割できます。
リアルタイム オペレーティング システムとは
プログラムを実行するとき、通常のオペレーティング システムでは決定論的な結果が得られますが、タスクを完了するには非決定論的な時間が必要です。 リアルタイム オペレーティング システムでは、プログラムの実行結果とそれらの結果を取得するためにかかった時間の両方が、(少なくとも部分的に) 決定的になります。
ハード リアルタイムとソフト リアルタイム
ハード リアルタイム オペレーティング システムは、時間を正確に決定するものです。 これらのオペレーティング システムは、結果を時間通りに得られないとシステム全体の故障となるようなユースケースに導入されます。 例としては、車のエンジンや飛行機、プリンター、レーザー カッターなどのマイクロコントローラーがあります。Azure Real-Time OS は、そのような OS の一例です。
ソフト リアルタイム オペレーティング システムでは、オペレーティング システムからのわずかなずれによる正確なタイミングではなく、プログラム完了に一定の短時間が必要です。 ソフト リアルタイム システムは、正確ではありませんが、複数のコアで実行でき、アプリケーションに対する制限が少なくなります。 このガイドを把握した後、Windows 10 IoT Enterprise に期待できるのは、このようなリアルタイムのパフォーマンスです。
リアルタイム パフォーマンスが必要がなのはいつですか?
リアルタイム パフォーマンスでは、必ずしもパフォーマンスが向上するとは限りません。 パフォーマンスが予測可能なだけです。 システム全体のパフォーマンスを向上させる必要がある場合は、ソフト リアルタイムがそれを実現する最適な方法とは限りません。 しかし、現実的な制約がある場合 (ロボットの環境が変わる前に計算をしなければならないとか、ベルト コンベアが動く前にモーターを作動させなければならないなど) には、ソフト リアルタイムが必要になるかもしれません。
ソフト リアルタイム デバイスは、より広範な制御ループ内で、ステート マシンからの動作をトリガーするために頻繁に使用されます。 小さなハード リアルタイム制御ループは、より広範なループ内に配置され、ソフト リアルタイム マシンからの入力で動作が変わるまで、独立したマイクロコントローラーで動作します。 コマンドと制御のループの多くはサイクル タイムの要求が厳しいため、ループ内でハード リアルタイム デバイスを使用して直接制御する必要があります。
次: リアルタイムのパフォーマンスのデバイスを設定する方法
組み込みOSのリアルタイム性とは、組み込みシステムがある入力を受けてから出力するといった処理に、時間的制約が設けられる性質のことです。組み込みOSにはリアルタイム性を持たないOSもありますが、ここではリアルタイム性を持った組み込みOSについて解説していきます。具体的には、組み込みOSの「リアルタイム性」・「リアルタイムOSの処理の種類」といったテーマを軸に、分かりやすく解説します。 組み込みOSにおけるリアルタイム(RT)性とは ソフトウェア(software)などの組み込みシステム(embedded
system)がある入力を受けて、対応した出力を行う際に、出力内容だけではなく入力から出力までに時間的制約を求められるという性質の事です。これは単純な早い遅いといった作業速度の話ではない為、通常は0.001秒で対応できるという高速なwindowsなどのパソコン(PC)であっても、ウィルスチェック・ネットワークの通信・アプリケーション実行中などの場合には速度が変動します。その時間を見積もる事ができないような場合には、リアルタイム性があるとは言いません。逆に、0.5秒かかるような組み込みシステムでも、どんな状況でも1秒以内に作業を完了する必要があるという時間制約がある場合には、リアルタイム性がある組み込みシステムとなります。この時の組み込みリアルタイムシステム(realtime system)の時間制約の事を、デッドラインといいます。組み込みOSの基礎知識として、割り込みハンドラなども知っておいた方がいいと思いますが、割込ハンドラについては別の組み込みOSのコラムで解説します。 組み込みOSのリアルタイム性について例えを挙げて説明していきます。ボタンを押してLEDを点灯させるといった、簡単な組込機器の組込み制御(マイコン機能)の例で考えてみましょう。この時、ボタンを押してからLEDを点灯させるまでに必要な時間は、「LED点灯させる為の時間(以後①)」だけではなく、「ボタンを押してからOS作業が開始されるまでの時間(以後②)」も含まれます。又、実際の組み込み機器は、1つのボタンに1つのLEDといった構成ではなく、複数の入出力制御を並列で扱っていますので、さらに「①の処理中に他のOS作業が動作した場合の時間(以後③)」も考える必要があります。
ボタンを押してからLEDが点灯するまでの時間 ①は単純な作業時間ですので、比較的簡単に見積ったり測定したりする事が出来ますが、②や③は組み込みシステムの設計やボタンが押された時の組み込みシステムの状態によって都度変化します。この②と③のワーストケースを見積る事ができて、ボタンを押してからLEDを点灯するまでの時間(①+②+③)が、最悪でもXXXまでには完了できる事が見積れる組み込みシステムを、リアルタイムシステム(real time systems)と呼びます。 リアルタイム性を持ったコンピュータやデジタル機械の開発においては、目標時間内に処理が終了しなかった場合の結末を考慮して、組み込み開発を行う必要があります。組み込みリアルタイムOSは、優先度によって下記の3種類の特長を持った処理を選択し、プログラミングしなければなりません。 (1)OSのハードリアルタイム処理 (2)OSのファームリアルタイム処理 (3)OSのソフトリアルタイム処理(ファームリアルタイム処理を含めてソフトリアルタイム処理と表現する事もあります) ハードリアルタイム>ファームリアルタイム>ソフトリアルタイムという順番でより厳しい時間制約が課された処理という事になります。自動車のECU(EngineControlUnit)制御、ロボットの関節制御など組み込みシステムにおいては、応答の遅れが故障に結びつく様なケースが多く、ハードリアルタイム処理を求められることが多いです。最近では、多くの組込みソフトウェア(組込ソフト)・組み込みミドルウェア・組み込みハードウェアで使用されるオペレーティングシステム(OS)も、メリットの高いリアルタイム性を実現する為に設計されています。リアルタイム性とは
= ② ボタンを押してから処理が開始されるまでの時間
+ ① LED点灯させる為の処理時間
+ ③ 他の処理が動作した場合に①の処理が遅れる時間リアルタイム処理の種類
規定時間内にOS作業が終わらない場合、システムの故障など致命的な結果が待っている様な組込みOS処理です。電車のATS(自動列車停止装置)の様な車載安全装置は基本的にハードリアルタイムシステム(ハードシステム)に該当します。規定時間内に停止を完遂できなければ電車は前の列車に衝突したり脱線するなど、致命的な結果が待っていますので、この組込処理のデッドラインを超える事は許されません。よってハードリアルタイムのプログラムが要求されるのです。
規定時間内にOS作業が終わらなかった場合、価値が無くなるOS処理です。処理が遅れた場合は、結果を破棄します。携帯電話での通話などマルチメディア系のエンコードなどが該当します。携帯電話は音声データを受信するとデコードしてスピーカーから再生しますが、これが遅れた場合、遅れを引きずったまま再生を続けるのではなく、遅れた部分のデータは破棄して、正しい時間軸のデータから継続して再生します。結果、通話としては音飛びする事になりますが、携帯電話に致命的な故障などの問題が 発生するわけではありません。
規定時間内にOS作業が終わらなかった場合に、価値が減少するOS処理です。スマートフォンの画面表示で、ボタン押下から画面表示が0.5秒以内に出来る事という時間的制約が求められている状態などがこれに該当します。この時間制約を破り0.5秒以上かかった場合、情報表示を速やかに表示するという機能の価値は落ちますが、価値がなくなるわけではありません。
このように、組込みソフトウェア開発および、組込みシステム開発(システム開発)を行うエンジニアは、組み込みOSのリアルタイム性を考慮して、システムソフトウエアに制御プログラミング・システムプログラミングしていく必要があります。リアルタイムOSにおいて、汎用システムと組み込みシステムでは基本の組込み開発環境や組込み技術は多少違うかもしれませんが、デバイス・プロセッサ作成のプロセスは似ていると思います。
組み込み技術者も目指す方へ
組み込み開発の技術者を目指している人は、まず単行本などを読みc言語などの入門知識を得て下さい。「組込みシステムとは」「エンベデッドシステムとは」「オペレーティングシステムとは」「ソフトウェアとは(ソフトとは)」「rtとは」「オペレーティングとは」「組込みとは」「組み込み開発とは」「システムとは」などといった質問に、即答で意味の説明ができるようになれば、組み込みについての知識がついてきている証拠です。また、組み込み技術の資格を取ることもひとつの手です。自分で組み込み開発してみたい方は、開発支援・サポートソフトなどのサービスを使ってもいいかもしれません。いずれにしても、目的を持って組み込み開発の道を歩んでいってください。
関連記事
-
組み込み開発において進化する!組み込みOSのモジュール化...
-
組み込み制御に関わる「割り込み処理」とは...
-
組み込みOSとは?...
-
【Linux Tipsシリーズ】平凡なソフトウェア開発者が自...
-
【Linux Tipsシリーズ】平凡なソフトウェア開発者が自...
-
【Linux Tipsシリーズ】平凡なソフトウェア開発者が自...
-
キャッシュレス時代に潜む脅威を防ぐセキュリティ対策...
-
金融サービス企業はどのようにモバイルセキュリティの脅威から防...