MicrosoftがARMアーキテクチャ上で動作するWindows 10の存在を明らかにしたのは昨年12月、中国・深センで開催したWinHECにおいてのことだった。その後、目を引くような情報は出てこなかったが、5月初旬のBuild 2017では、ARM版Windows 10を紹介するセッションが行われた。
上図はBuild 2017で示されたスライドだが、ARM版Windows 10はQualcomm Snapdragon 835とともに、LTEレベルの相互通信能力と驚くほどのバッテリー寿命を実現する。ARM版Windows 10は、UWP (ユニバーサルWindowsプラットフォーム) アプリケーションはもちろん、デスクトップアプリも動作する。ARM版Windows 10のデモンストレーションでは、システムタイプに「64-bit Operating System, ARM-based processer」の文字列が確認でき、この上でデスクトップアプリの7-Zipが動作し、ドメイン参加が可能であることをアピールしていた。
異なるアーキテクチャでOSを動かす際に問題となるのがデバイスドライバーだが、デモンストレーションではECサイトで購入したWebカメラをQualcomm Snapdragon 835のテストPCに接続し、問題なく動作させていた。このあたりはWindows 10と同じくインボックスドライバーを充分に用意しているのだろう。
ARM版Windows 10が実装する「X86 Win32 Emulation」については、「既存のx86 Win32アプリケーションをそのまま実行」「ユーザーまたはアプリケーション開発者にとって透過的 (な存在)」「他のPCと同様に (アプリケーションを) インストールし、実行できる」「x86命令は実行時にARM64に変換され、将来の使用するためにディスクにキャッシュされる」と説明する。
ARM版Windows 10を紹介するMicrosoft Director of DevelopmentのArun Kishan氏 (左) とMicrosoft Group Program ManagerのHari Pulapaka氏 (右) |
多くの読者が人を持つのは、このエミュレーター部分だろう。上図はARM版Windows 10のユーザーモードをイラスト化したものだが、エクスプローラーやMicrosoft EdgeといったインボックスプログラムはARMコードとして実装している (図の左側)。ポイントは右側の「Emulated Process」だ。x86コードはシステムサービス経由で「Windows On Windows」に渡され、x86コードをARMコード化するエミュレーション処理を経て、プログラムを実行している。このWOWの仕組みは説明されていないが、64ビット版Windows 10上でx86コードを実行する際のWOW64 (Windows 32-bit On Windows 64-bit) と同じ仕組みのようだ。
エミュレーターは、異なるハードウェア構成をソフトウェア的に再現するため、実機と同等のパフォーマンスで動作させることは難しい。もっとも昨今は、Intel VTやAMD-Vといったハードウェア支援機能をCPUが備えているため、ある程度は快適に動作するようになった。他方でARM版Windows 10では、動的バイナリー変換で発生するオーバーヘッドを避けるため、コンパイラーチームが開発した「CHPE (Compiled Hybrid PE)」を実装している。Microsoftは、ネイティブと非常に近いパフォーマンスを引き出すと説明している。これらのエミュレーションロジックはあくまでもデスクトップアプリ (x86コード) に限られ、UWPアプリケーションはARMネイティブで動作するという。
Microsoftは2015年7月のWindows 10リリース時に「数年内に10億デバイス上で使用」されていることを目標に掲げていた。そしてBuild 2017の基調講演では、約2年で目標の半分である5億台を突破したことを明らかにした。本稿執筆時点でARM版Windows 10のリリース時期は明言されていないものの、その存在が10億デバイスを目指すための布石となるだろう。
阿久津良和(Cactus)