Microsoftは、Windows 11 on ARMの新ABI「ARM64EC」を発表した。ARM64ECを利用すると、ARMをサポートしていない依存関係やプラグインを含むアプリケーションも、ARM上で動作させることができ、ネイティブARMアプリへと徐々に移行できる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2021年6月28日(米国時間)、「ARM64EC」(Emulation Compatible)を発表した。
最新の「Visual Studio」プレビュー版や「Windows 11 Insider SDK」とともにARM64ECを利用すれば、ARMをサポートしていない依存関係やプラグインを含むアプリケーションをARM上で動作させることができ、ネイティブARMアプリケーションへと徐々に移行できる。移行途上でも、ARM上でネイティブアプリケーション並みの実行速度を部分的に確保することが可能だ。
ARM64ECは、Windows 11 on ARMの新しいアプリケーションバイナリインタフェース(ABI)。ARM上のネイティブ速度で動作し、x64と互換性がある。アプリケーションやプロセス、モジュールにおいて、ARM64ECコードとx64コードを必要に応じて組み合わせることができる。
アプリケーション内のARM64ECコードはネイティブに動作する一方、x64コードはWindows 11 on ARMに搭載されたエミュレーション機能を用いて動作する。
ARM64EC ABIは、x64コードとのバイナリ互換性があるという点で、既存の「ARM64 ABI」とは少し異なる。ARM64EC ABIは、x64ソフトウェアの規約(呼び出し規約やスタック使用、データアラインメントなど)に従うため、ARM64ECとx64は相互運用が可能だ。ARM64ECでビルドされたアプリケーションは、x64コードを含むことができる(必ずしも含む必要はない)。ARM64ECは、自己完結したファーストクラスのWindows ABIだからだ。
これまでは、アプリケーションをARM向けに再構築するには、アプリケーション全体をコンパイルし直す必要があった。
コンパイルし直すことにより、顧客は、ARMデバイスのパワーをフルに活用した優れたネイティブエクスペリエンスを得ることができた。だが、開発者の観点からすると、アプリケーションの移植は「オールオアナッシング」となる。顧客がそうしたメリットを享受するには、プロセス内の全てのバイナリを再ビルドする必要があるからだ。
ARM64ECでは、小さく始めて徐々に再ビルドの範囲を広げることができる。まずはコードベースの中で、ネイティブパフォーマンスの恩恵を最も受ける部分を特定し、それをARM64ECで再ビルドするといったことが可能だ。アプリケーションの他の部分はx64エミュレーションによって機能し、再コンパイルされたARM64EC部分は、ネイティブ速度で動作する。時間とともに、より多くの部分をARM64ECで再コンパイルすれば、パフォーマンスを一段と向上させることができる。さらにアプリケーションを使う顧客はバッテリー消費電力をより節約できるようになる。
x64コードとARM64ECコードを組み合わせるメリットはもう一つある。Windows 11 on ARMアプリケーションが、開発者のコントロールの及ばないx64コードに依存する場合でも、そうしたアプリケーションを開発できることだ。
ARMをサポートしないサードパーティー依存関係を含むプロジェクトも、その部分をx64コードのままにしておくことが可能だ。インプロセスプラグインエコシステムを採用したアプリケーションも、ARM64ECでビルドしてネイティブ速度を確保する一方、x64プラグインを読み込んで使用し続けることができる。
Microsoftは、Windows 11 on ARM自体のバイナリをARM64ECで再ビルドし、x64アプリケーションで読み込まれるシステムコードがネイティブ速度で動作するようにした。
「Microsoft Office」の開発チームは、開発中の「Office for ARM」でARM64ECを使用し、既存のx64プラグインをシームレスに動作させようとしているという。
Copyright © ITmedia, Inc. All Rights Reserved.