「Windows Embedded Compact 7」は、従来のWindows Embedded CE 6.0と何が、どのように違うのか。あらためて強化された代表的な機能と、Windows Embedded CE 6.0との比較に基づいた違いについて詳しく解説する。
以前お届けした特集記事「最新! Windows Embedded Compact 7の概要」では、Windows Embedded Compact 7のCommunity Technology Preview(以下、CTP)版を基に、新しく追加された機能や開発環境にフォーカスして、その概要を紹介しました。
その後、2011年3月にWindows Embedded Compact 7の製品版がリリースされ(関連記事)、少し時間がたってしまいましたが……、あらためて本稿では「最新! Windows Embedded Compact 7の概要」で紹介し切れなかった新機能の詳細と、前バージョンであるWindows Embedded CE 6.0との比較に基づいた違いを見ていきたいと思います。
Windows Embedded CE 6.0と比較し、Windows Embedded Compact 7ではどのような機能面での強化がなされているのでしょうか。主なものを以降で順番に紹介していきます。
SKU(Stock Keeping Unit)は、搭載するOSの機能によってOSライセンスの価格が異なります。開発者は提供する機能に応じて必要なOSコンポーネントを選択し、SKUを決める必要があります(表1)。
SKU名 | 概要・用途 |
---|---|
C7P | Windows Embedded Compact 7で可能な全てのコンポーネントを含む |
C7K | ネットワークプロジェクター向け機能 |
C7G | コンシューマデバイス向け機能 |
C7NR | PND向け機能 |
C7E | |
表1 「Windows Embedded Compact 7」のSKU(※2012年3月16日現在。詳細については販売代理店へお問い合わせください) |
各SKUに含まれるOSコンポーネントについては、以下のWebサイトで確認できます。
参考リンク: | |
---|---|
⇒ | Operating System Components |
Windows Embedded Compact 7におけるコンパイラの強化は、開発者の利便性に大きな変化をもたらしました。新しいコンパイラでは、Vector Floating Point(VFP)およびNEON、Symmetric Multiprocessing(SMP)へのサポートがなされました。また、これまでのWindows Embedded CE 6.0 R3では、コンパイルされた結果がARMv4コア向けの命令セットであったのに対し、Windows Embedded Compact 7ではARMv7命令セットでのコンパイルが可能となっています。
参考リンク: | |
---|---|
⇒ | ARMアーキテクチャはどのように進化してきたのか? |
つまり、Windows Embedded CE 6.0上で動作させていたコードを、Windows Embedded Compact 7でコンパイルし直すだけで、CPUの命令セットを効率的に利用できるようになります。そして、これまで単純にCPUクロックに頼っていたアプリケーションの性能を、飛躍的に向上させることとなります。
実際に同じデバイスを用い、まったく同じ演算処理をWindows Embedded Compact 7とWindows Embedded CE 6.0上で実装し、その処理時間を比較してみたいと思います。
ターゲットデバイスは、ディジ インターナショナル社の「ConnectCore for i.MX51 JumpStart Kits」を利用します。このキットに付属する評価ボードには、ディジ インターナショナル社の「ConnectCore i.MX51」が搭載されています。
ConnectCore i.MX51には、ARM Cortex-A8コアとLCD、タッチパネル、SDカードスロット、無線/有線LAN、シリアルポート、USBポートなど、よく利用されるペリフェラルが一通り実装されています。
また、ソフトウェアは、Windows Embedded Compact 7とWindows Embedded CE 6.0のBSPが用意されており、キットに付属している評価ボードを利用して、OSの評価ができるようになっています。
参考:ディジ インターナショナル社「ConnectCore for i.MX51 JumpStart Kits」
Windows Embedded Compact 7とWindows Embedded CE 6.0、それぞれのOSイメージを作成し、サブプロジェクトとしてアプリケーションを追加します。
今回は、アプリケーションに以下のような演算処理を実装しました。なお、測定はQueryPerformanceCounterを利用しています。QueryPerformanceCounterは、ハードウェアタイマーのカウント値を取得するAPIで高い精度が求められる計測などに用いられます。
LARGE_INTEGER freq, startcount, endcount; double result = 0; QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&startcount); //測定用のコード。乱数発生と浮動小数点演算 for(int i = 0; i < 10000; i++) { a=rand(); b=rand(); c=rand(); d=rand(); e = a / b; f = c / d; g = e / f; } QueryPerformanceCounter(&endcount); result = (double)(endcount.QuadPart - startcount.QuadPart) / freq.QuadPart * 1000000;
測定結果は、以下の通りです。
今回の実験から、Windows Embedded Compact 7の処理がいかに高速かが分かると思います。命令セットの適正化、VFPおよびNEONの効果が出ているといってよいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.