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ドライバを拡張することで対応していこうと考えているのだろう。
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プログラムをエミュレートするので、高いパフォーマンスが出せない。そこで、Microsoftが新たに開発した「Compiled Hybrid PE(CHPE)」を使って、x86アプリケーション内にあるDLLをARMコードベースのDLLに変換する。最初の実行時にx86コードをARMコードに変換していく。一度変換したコードは、ディスクにキャッシュされるため、再度起動したときにはすぐにアプリケーションが動作する(一度目は、変換に少し時間がかかる)。
CHPEにより、x86アプリケーションがエミュレーションであっても、高いパフォーマンスで動作する。デモでは、「Adobe Photoshop」を動かしたり、ゲームを動作させたりしていた。デモを見る限りでは、十分実用になるパフォーマンスで動作すると思われる。
ただ、ARM版Windows 10では、ARMコードのデスクトップアプリケーション(Win32アプリケーション)の動作は許されていないようだ。
Copyright © ITmedia, Inc. All Rights Reserved.