三度目の正直? ARM版Windows 10は離陸するのかEnterprise IT Kaleidoscope(2/3 ページ)

» 2017年07月12日 13時00分 公開
[山本雅史ITmedia]

ARM版Windows 10の実装は?

 ARM版Windows 10は、OSの内部コード、エクスプローラー、WebブラウザのEdgeなどは、ARMネイティブコードで書かれている。このためARM版のWindows OSは、ARMのネイティブコードで動作する(エミュレーションでないため、高いパフォーマンスで動作する)。

 さらに、外付けのデバイスに関しては、MicrosoftがInboxドライバをARMコード化しているため、多くのデバイスがARM版Windows 10で動作する。もし、Inboxにドライバがない場合は、ネットワーク経由でMicrosoftのサイトからドライバをダウンロードしてインストールする。

 ただ、古いデバイスがARM版Windows 10で動作するかは不明だ。サードパーティー独自のドライバしかサポートしていない周辺機器の場合は、もしかするARM版Windows 10では動作しないかもしれない(もしくは、機能的な制限がある可能性も)。

 Microsoftでは、ユニバーサルWindowsドライバという複数のWindows 10(Windows 10 Home/Pro/Enterpriseなどのデスクトップエディション、Windows 10 Mobile、Windows 10 IoTなど)で動作するフレームワークを用意している。ARM版Windowsでは、ユニバーサルWindowsドライバを拡張することで対応していこうと考えているのだろう。

ARM版Windows 10デモ デモでは、Amazonで購入したUSBカメラをARM版Windows 10に接続(Microsoftのセッションビデオから引用)
ARM版Windows 10デモ 自動的にドライバがインストールされるため、市場に出回っている周辺デバイスがARM版Windows 10で利用できる(Microsoftのセッションビデオから引用)。

 2017年中にリリースされるARM版Windows 10の最初のリリースでは、32ビットのx86コードのエミュレーションだけがサポートされる。64ビットのx64コードのエミュレーションに関しては、最初のリリースではサポートされない。64ビットのx64コードのサポートは、2018年3月以降のアップデートとなる。

 x86のアプリケーションを動かすには、元々Windows OSが持っているWindows On Windows(WOW)を拡張して、x86コードをエミュレーションする機能を追加している。WOWは、x64(64ビット)環境でx86(32ビット)アプリケーションを動かすために用意されたレイヤーだ。

x86 Win32エミュレーション ARM版Windows 10には、x86 Win32エミュレーションが用意されている。これにより、x86のコードをARMプロセッサで動かせる(Microsoftのセッションビデオから引用)

 ただ、全てのx86プログラムをエミュレートするので、高いパフォーマンスが出せない。そこで、Microsoftが新たに開発した「Compiled Hybrid PE(CHPE)」を使って、x86アプリケーション内にあるDLLをARMコードベースのDLLに変換する。最初の実行時にx86コードをARMコードに変換していく。一度変換したコードは、ディスクにキャッシュされるため、再度起動したときにはすぐにアプリケーションが動作する(一度目は、変換に少し時間がかかる)。

 CHPEにより、x86アプリケーションがエミュレーションであっても、高いパフォーマンスで動作する。デモでは、「Adobe Photoshop」を動かしたり、ゲームを動作させたりしていた。デモを見る限りでは、十分実用になるパフォーマンスで動作すると思われる。

 ただ、ARM版Windows 10では、ARMコードのデスクトップアプリケーション(Win32アプリケーション)の動作は許されていないようだ。

CHPE on ARM版Windows 10 ARM版Windows 10は、CHPEによりx86DLLを初回起動時にARMコードに変換する。ARMコード化されたDLLは、ディスクにキャッシュされることで、エミュレーションモードよりも高いパフォーマンスで動作する(Microsoftのセッションビデオから引用)

Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

注目のテーマ