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

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

[石黒一敏(東京エレクトロン デバイス エンベデッド・ソリューション部),@IT MONOist]

4.HAL拡張アプローチのメリット

 WindowsのHAL(Hardware Abstraction Layer)は、ハードウェア抽象化層を意味する、マルチプラットフォームに対応するためのレイヤーです。

 かつて、Windows NTが登場したとき、WindowsはDEC Alpha、MIPS、PowerPCなどx86アーキテクチャ以外のRISC CPU上でも動作していました。プラットフォームの相違をHALによって吸収することで、さまざまなプラットフォーム上で共通仕様のOSを動作させようとする仕組みです。その後、IntelのCPUが、ほぼWindowsのベースCPUとなり、“Windows=Intelプラットフォーム”という図式が出来上がりました。

 ところが、2011年春。ラスベガスで開催されたCESにおいて、マイクロソフトは“開発中の次期Windows OS「Windows 8」はARMプロセッサもサポートする”と発表し、実際に動作デモも行いました。この展開に世間はあっと驚いたわけですが、もともとHALによってマルチプラットフォーム対応できるWindowsとしてみれば、それほど大変ではなかったものと想像できます。

RTXソースコードは、ビルドオプションでいろいろな実行形式に対応 図3 RTXソースコードは、ビルドオプションでいろいろな実行形式に対応

 実は、HAL上に位置するRTXも同じように、HALの恩恵を受けることができます。CPUアーキテクチャが変更されても、RTXサブシステムとRTXアプリケーションは新しいCPU用に再コンパイルすれば容易に動作可能です。また、リリース予定の64ビット版RTX、そして、将来WindowsがARM対応したときのARM版RTXにおいて、RTXはソースコードレベルで互換性があります。つまり、プラットフォームが変わっても一度作成したソースコードをそのまま流用できるということです。

 その他、リアルタイム性はありませんが、RTXアプリケーションをWindows上で動作するファイル(*.exe)としてビルドし、テストすることも可能です。

5.マルチコア対応

 前述の通り、最新のRTX 2011は、最大32コアのシステムまでサポート可能となっています。この機能に対して、多くのユーザーは「そんなに多くのコアを何に使うの?」という反応を示します。実際、RTXを使ったモーションコントロールの事例でも「デュアルコアCPUで十分!」との評価が多数です。

 実は、その答えは意外な分野にありました。最初にRTXの最大32コアサポートを応用したのはマルチメディア系のソリューションです。

 デジタルオーディオミキサーへの応用として、従来DSPを使っていたデジタルオーディオのピッチコントロール、ミキシングコントロールなどを各CPUコアでオーディオチャネルごとに処理するというものです。これまで高価なDSPボードを何枚も並べて実現していた20chのデジタルミキサーは、Xeon(6コア)×4プロセッサのボード1枚とRTXで置き換えることが可能となりました。

 これは、先のマルチプラットフォーム対応と組み合わせることで、スケーラビリティメリットを発揮します。例えば、デジタルミキサーにおいて、より高性能な応用であれば64ビット版RTX、コンシューマ向けの数チャネルのミキサーであればARMプロセッサを使用した安価なシステムを選択できます。さらに、これらのシステム構築において各チャネルを制御するRTXアプリケーションは、全く同一のソースコードで管理できるわけです。

RTXのエディションとコアの関連 図4 RTXのエディションとコアの関連

 現在、RTXには6種類のエディションが用意されており、RTXが使用するCPUコアの数に応じて柔軟に対応可能となっています。今後、急速にマルチコア化が進む中、RTXにはいろいろな活用方法が準備されています。さらに、RTXのマルチコア対応はSMP(Symmetric Multi Processing)を完全サポートしており、コアの数が増えても各RTXアプリケーションのオーバーヘッドが増加しないという特徴があります。

6.RTXの開発

 RTXでの開発/デバッグは「Visual Studio」を使用します。RTXアプリケーションについては、ドライバのデバッグと同じくVisual Studioに「WinDbg」を併用するなどの手法が用いられますが、実際はリアルタイム動作しているアプリケーションをブレークさせても有用な情報を得られることは少なく、付属のツール類を使用してタスクの状態、使用されているリソースなどをチェックする手法が効率的です。また、既に最大32CPUまでのマルチコアに対応したRTXですが、これらのマルチコア対応された複数のスレッドを効率的にデバッグできるような対応も計画されています。

RTXアプリの状態を確認できるツール「RTSS Object Viewer」 図5 RTXアプリの状態を確認できるツール「RTSS Object Viewer」

 Visual Studioは「Visual Studio 2010」まで対応しており、RTXのSDKをVisual Studioのアドインとしてインストールする形態を取ります。これでRTXアプリケーション、DLLなどを新規プロジェクトとして選択するだけでRTXのひな型が準備され、開発を進めることができます。使用するAPIも従来のWin32APIをそのまま流用できることもRTXを導入するメリットの1つです。

 RTXの開発言語は、基本的にC/C++ですが、.NET FrameworkのマネージドコードであるC#からもRTXを呼び出せるようなライブラリが用意されています。C#を使って、Windows側のアプリケーションを開発し、RTXと連携して動作させることが可能です。

 また、マルチコアの並列処理を考える場合、単純にコンパイラを変更するだけで大きな効果が得られることも覚えておくとよいでしょう。RTXは、代表的なIntelコンパイラにも対応していますので、性能面を追求する場合、これらを試してみる価値はあると思われます。

7.RTXの実装

 RTXを動作させるためには、Windows上にRTXサブシステムをインストールする必要があります。このモジュール群を「RTXランタイム」と呼び、RTXはWindows NTから最新のWindows 7 SP1まで1種類のパッケージで対応しています。

 組み込み用の「Windows Embedded Standard 2009(XP Embedded)」、あるいは「Windows Embedded Standard 7」で動作させることも問題ありません。RTXサブシステムは、自動起動設定を行っておけばWindowsと同時にサービスを起動できるので、電源を投入後Windowsロゴが表示されるタイミングとほぼ同時に使用を開始することができます。

Copyright © ITmedia, Inc. All Rights Reserved.