特集
» 2011年06月24日 10時34分 公開

汎用OSにリアルタイム性を付加するアプローチ:Windowsのリアルタイム拡張「RTX」と組み込み機器への応用 (3/3)

[石黒一敏(東京エレクトロン デバイス エンベデッド・ソリューション部),@IT MONOist]
前のページへ 1|2|3       

8.RTXの特徴:ブルースクリーンとRTX

 RTXにはいろいろな特徴がありますが、その中でも注目すべきはWindowsがブルースクリーンになっても動作を継続できることです。

 「なぜ、ブルースクリーン後でも動作するのか?」という質問はよく聞かれます。これは、

  1. ブルースクリーンは、いわゆるクラッシュとは異なる予期された動作であること
  2. RTXサブシステムとRTXアプリケーションは、非ページメモリに常駐していること

が理由です。

 ブルースクリーンが発生すると(何も操作できなくなるので)、「もうダメだ……」と思ってしまいがちですが、これはWindowsシステムがシステムクラッシュの危険を事前に検知して停止している状態です。つまり、このまま処理を続けるとメモリ、ファイルを破壊してしまうなどの危険性があるので止まっているだけで、実際RTXが走っている非ページメモリ自体は健在であることがほとんどです。残念ながら、Windows側のユーザーI/Fは停止してしまっているので、通常通りの操作は継続できませんが、“フェイルセーフ”という観点からは十分です。

9.RTXの特徴:何でもできてしまうRTXアプリケーション

 RTXを使うと物理メモリ、I/Oなどのシステムリソースへアクセスすることが簡単にできてしまいます。取り扱いを間違えれば、Windowsカーネルさえも破壊してしまう危険性はありますが、その半面、この機能は非常に魅力的ともいえます。

 実際、RTXのユーザーから「CPUコアの温度を知りたい」という要望がありました。最近のCPUは、各コア上に温度センサーを備えており、Windows側はACPI(Advanced Configuration and Power Interface)にて、常に温度の監視を行っています。万一、CPUファンが停止して急激に温度が上昇した場合、Windowsはクリティカルシャットダウンしてシステムを緊急停止します。

 高価なダイアモンドを研磨するような工作機械を考えた場合、機械がいきなり止まって何十万円もする素材がダメになってしまっては、たとえ1カ月に1回の頻度であったとしても大問題です。温度検知とリアルタイム性能とは関係ありませんが、温度が上昇してWindows側がシャットダウンしてしまうような兆候を検知し、対処することがRTX側で必要となりました。

 Intel CPUの場合、CPUのコア温度であるDTS(デジタル温度センサー)値はMSRレジスタのインデックス「0x19c」で読み出され、RDMSR命令を実行したCPUコアのセンサー値が得られます。RDMSRは特権命令であるため通常のユーザーモードのアプリケーションからは実行させることはできません。しかし、RTXの場合は、次のように直接RTXアプリケーションの中にインラインアセンブラで記述し、そのまま実行させることができます。

code01

 このファンクションで得られるDTS値は、「TJunction」と呼ばれる各CPUシリーズによって異なる基準温度からの差分となります。テストした環境のCPUでは、“TJunction=100℃”なので差分を計算して表示させると次のような結果となります。

code02
RtxServerによるメッセージの表示 図6 RtxServerによるメッセージの表示

 このようにRTXアプリケーション内で出力されたメッセージは、「RtxServer」と呼ばれるコンソールに出力されます。RTXアプリケーション内でも、Windowsと同じように「Printf()」関数が使えますが、Windows側のダイアログに結果を表示させるとリアルタイム性がその時点で失われます。従って、RTXのシステムにおいては非ページメモリ内に確保されたバッファにメッセージはいったん出力され、それをRtxServerにて表示させることでリアルタイム性に影響しない工夫がなされています。

10.RTXの性能と今後

 RTXをCore 2 Duo(2.66GHz)のシステムで動作させたときの各種状態遷移の時間を示します。ほとんどの遷移は、1マイクロセカンド前後で完了しています。いままでハードリアルタイムの指標であった1ミリセカンドのさらに1000分の1です。

RTXの性能実測値 図7 RTXの性能実測値

 多くのユーザーは、1ミリセカンドで応答してくれれば十分で、この数値は過剰であるといいます。しかし、これは従来のシステムでは1ミリセカンド程度のリアルタイム性が限界だったので、それに合うだけのシステム設計しか行わなかったということではないでしょうか?

 マイクロセカンドオーダーのリアルタイム性能が、PCとRTXのような製品との組み合わせで得られるとすればどうでしょうか。既に、DSPとの置き換えは始まっています。将来はさらに新しい応用分野、アイデアが生まれてくるはずです。なお、今回紹介したRTXは、今後、64ビット化、次世代WindowsのARMプロセッサへの対応、より高性能なマルチプロセッサシステムであるNUMAへの対応などが予定されています。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.