笠原一輝のユビキタス情報局

Armにとって劇的転換点となるWindows 11

Windows 11 Preview版を導入したSurface Pro X(Microsoft SQ2/16GB/256GB、1WT-00024)

 Windows 11 Insider Previewが公開されて2週間が経過した。既に多くの読者が試されていると思うが、筆者もさまざまな手持ちのノートPCなどにインストールし、テストしている。その中で最も劇的な環境の変化を迎えそうなのが、Arm版Windowsだ。

 というのも、従来のArm版Windowsではサポートされてこなかった「x64」への対応がWindows 11(とおそらくWindows 10 21H2)から対応されることになるからだ。これによりソフトウエアの互換性問題はかなりの部分で解消されていく可能性が高い。そうしたArm版Windows 11について、これまでと現状を振り返りながら、Windows 11をインストールした実機でその特徴を確認していきたい。

当初はx86のバイナリ変換だけをサポートしていたArm版Windows 10

Snapdragon 8cx

 Windows on Arm(以下Arm版Windows)が正式に発表されたのは、2017年の12月に米国ハワイ州マウイ島で行なわれた「Snapdragon Tech Summit」においてだった。

 当初はSnapdragon 835というスマートフォン向けのSoCがリリースされ、その半年後にSnapdragon 850というPC専用の製品が発表。さらに2018年末に行なわれた2回目のSnapdragon Tech SummitにおいてSnapdragon 8cxという本命製品がリリースされ、2020年の9月にはSnapdragon 8cx Gen 2というCPU高クロック版の製品がリリースされている。

 ローエンド製品の展開も始まっており、ミッドレンジ向けのSnapdragon 8c、エントリー向けのSnapdragon 7cという製品が2019年末のSnapdragon Tech Summitで発表され、今年の5月末の時点ではSnapdragon 7c Gen 2というSnapdragon 7cの高クロック版が投入されている。

Snapdragon 8c、Snapdragon 7c

 Arm版Windowsの特徴は、Windows 8に対するWindows RTのような特別版が用意されるのではなく、Windows 10 Home/Pro/Business/EnterpriseなどのSKUに、それぞれIA(x86/x64)版とArm版が用意されるという点。つまり、Arm版Windowsであっても、その機能はまったくIA版と同じで、同じUX(ユーザー体験)、同じ標準アプリケーション(メモ帳やWebブラウザー)、同じアプリストア(Microsoft Store)が利用でき、VBS(Virtualization-Based Security、仮想化ベースのセキュリティー)やBitLockerなどのセキュリティー機能など全く同じものが利用できる。1つだけ大きな違いは、アプリ側の対応が必要となる点だ。

 あたり前だが、WindowsアプリのほとんどはIA向けにしか作られていないので、そのままでは動かすアプリが最初はほとんどないという状態になってしまう。そこで、Arm版Windowsには、x86 32bit命令(以下x86で統一する)向けに書かれたアプリケーションをArm CPUで実行する仕組み「Dynamic Binary Translator」機能が搭載されている。

 これは32bitのx86命令をArm 32bitないしはArm 64bitの命令に変換して実行する機能。Dynamic Binary Translatorでは「JIT(Just-in-time) Compiler」と呼ばれる、動的に命令を変換する一種のエミュレータが用意されており、x86のアプリケーションが実行されるときにx86命令をArm命令に変換しながら実行する。初回はライブにバイナリを変換するが、2回目以降はキャッシュとしてストレージ上に変換データを保存しておくので実行が高速になるなどの特徴を備えている。

Windows 10のDynamic Binary Translator、x86バイナリ変換はWOW(Windows On Windows)というOSカーネルの上に別メモリ空間に構築されたWindows上のWindowsとして実行される。x86命令はバイナリ変換されるほか、DLLはArmネイティブのDLL(CHPE DLL)へと置き換えられ、ネイティブに近い速度で実行できる(出典:Windows 10 on ARM for developers、Microsoft Arun Kishan/Hari Pulapaka)

 また、CHPE(Compiled Hybird Portable Executables)と呼ばれるDLL(Dynamic Link Library、Windows OS上のアプリケーションが他のアプリケーションが共通で利用する外部ライブラリのこと)のArm命令への高速変換も用意されている。

 WindowsアプリケーションではこうしたDLLを常にコールしながらアプリケーションを実行している。例えば、DirectXのアプリケーションはDirectXのDLLを呼び出し、GPUに対して描画命令などを発効しながら動作している。その時、x86アプリケーションは、Arm版Windowsに実装されているx86版DLLをコールしながら実行するのだが、CHPE DLLはあらかじめArmネイティブDLLを別途用意しておき、x86のDLLがコールされると、それを乗っ取って、それ以後はArmネイティブのDLLとして動作する。

 これにより、CHPE DLLに渡された後はネイティブで実行されるため、Arm版Windowsはx86アプリケーションを大きな性能低下をすることなく実行できるのだ。

x64非対応による、ソフトの少なさに光明が

 ただし、このバイナリ変換には大きな弱点があった。それは、x86 64bit拡張(以下x64に統一する)への変換には対応していなかったことだ。このため、例えば、64bitしかないAdobeアプリケーションの大半などが動かない。

 実際、Arm版、IA版それぞれのAdobe Creative Cloud Desktopで確認すると、Arm版では、Photoshop(およびその関連ツールのCamera Raw)、Lightroom CC、Acrobat DCという4つのツールしかインストールすることができない。それに対して、x64版のWindowsでは22個のアプリが表示されている。この差は決して小さくないだろう。

Arm版WindowsでのAdobe Creative Cloud Desktop。4つのアプリのみが提供されている
IA版でのCreative Cloud Desktop。22個のアプリが用意されている

 そこで、MicrosoftとQualcommは、昨年(2020年)以来Arm版Windows 10 Insider Previewにx64バイナリ変換の仕組みを導入し、その動作を検証してきた。Windows 11 Preview版にもこの機能は搭載されており、Microsoftから正式な発表はまだないが、おそらく製品版でも搭載されるものと考えられる。

Qualcomm Snapdragon担当シニアダイレクター ミゲル・ヌネス氏(2018年のSnapdragon Tech Summitにおいて撮影)

 Qualcomm Snapdragon担当シニアダイレクター ミゲル・ヌネス氏は「x64のサポートを追加したのは、レガシーアプリケーションとの互換性を維持するためだ。ISV(独立系ソフトウエアベンダ、Microsoft以外のソフトウエアベンダのこと)の中には、32bitアプリケーションのインストーラ提供を既に止めているところも増えている。われわれは依然としてソフトウエアベンダに対してArmネイティブアプリの開発を薦めているが、誰もがそれに応じているわけではないという現実は見つめないといけない」と、x64サポートの背景を説明している。

 なお、MicrosoftはWindows 11の発表と同時に「ARM64EC」という新しいプログラミングモデルを公開した。1つのアプリの中にx64とArm64の混載が可能になる。いきなりArm64のアプリを書くのが難しい場合、徐々にArm64のコードを増やしていく形でArm64アプリへの移行が実現できる。

 Microsoftは、Arm版OfficeでARM64ECを利用することを明らかにしている。Armネイティブ版のOffice登場が明らかになったのが、このARM64ECのニュースの最も重要なポイントだ。

サードパーティーIME問題は残る

 こうしたx64への対応が目玉となるArm版Windows 11を、MicrosoftのSurface Pro X(Microsoft SQ2=Snapdragon 8cx Gen 2の高クロック版/16GBメモリ/256GB SSD)にインストールしてみたが、とても快適に利用できている。

x64版のLightroom CCをArm版Windows 11で動作させているところ

 特にx64に対応したことは大きく、これまでx64版しかないため使えなかった写真編集ソフトや動画編集ツールなどが使えるようになった。その恩恵はMicrosoft Storeのいわゆるストアアプリにもある。AdobeのLightroom CCのストア版はx64版のみとなっていて、x64変換には対応していないWindows 10では、MicrosoftストアでLightroom CCを検索しても、表示すらされないが、Windows 11では表示され、インストールして動かすことができる。

 もちろん、Lightroom CCに関しては既にArmネイティブ版が存在しているので、わざわざ性能が劣るであろうx64版をインストールする必要はないのだが、このほかにも、Cinebench R23のようなx64版しかないベンチマークなどもArm版Windows 11では動作するようになっている。

x64版Cinebench R23も動作するようになった

 したがって、将来的には他のCreative Cloudのx64アプリもArm版Windows 11上で使えるようになるだろう。現在はCreative Cloud Desktopの側で、x64アプリはインストールできないように設定されているようだが、Windows 11が正式にリリースされれば、その状況も変わっていくだろう。x64変換対応により、ソフトウエアの互換性問題はかなりの部分が対応され、性能面はさておき、DirectXゲームも動くようになるだろう(ゲームのほとんどはx64アプリであるため、これまでArm版Windowsではゲームアプリがほとんど動かなかった)。

 また、TeamsやZoomといったビデオ会議ソフトウエアは既に64bitのArmネイティブ版がリリースされている。これらでは、Windows 11 Arm環境で快適にビデオ会議ができる。例えばTeamsでは背景フィルターを有効にし、ノイズ抑制機能を有効にすることが可能だった。

TeamsのArm 64bit版
ZoomのArm 64bit版

 だが、それでも依然として互換性の問題として残るソフトウエアが2つある。1つがサードパーティーのセキュリティーソフトウエアで、もう1つがATOKなどのサードパーティーIMEだ。

 前者に関してはOSの深い部分までチェックしなければいけないという性質上、どうしてもバイナリ変換では対応できない。ただ、これはWindows 10/11標準搭載の「Windowsセキュリティー」で十分に代替可能である。

 問題なのはどちらかと言えば後者で、ユーザーの慣れが入力効率に大きな影響を与えるIMEで自分の使い慣れたIMEが使えないというのは、「生産性」を向上させるためのデバイスであるPCとしては大きな課題と言える。サードパーティーIMEが正常に動作しない問題は、Arm版Windowsのリリース当初からずっと言われてきた問題だが、Windows 11 Insider Previewでも解決していない。

 例えばジャストシステムのATOK for Windows(最新版のTech Ver 32、アプリとしては32bit)は、x86とx64アプリ上では動作するが、WindowsのUIやMicrosoft Edgeなどの標準アプリといったArmネイティブのアプリでは動作しない。この場合はMS-IMEに切り替える必要がある。

 IMEもシステムと深く関わっている特殊なアプリなので、バイナリトランスレーションだけではArmネイティブアプリへの橋渡しができないのは容易に想像できるのだが、この問題はArm版Windowsが登場してから4年近く放置されている。それに対して、Apple M1を搭載したArm版のmacOSでは、IA用のATOKがそのままArmネイティブアプリで動作していたことと比較すると、なんとも残念な状況だとしか表現のしようがない。

 ぜひ日本マイクロソフトにはこの点を、早急にOS側で対応するなり、サードパーティーに働きかけをするなどして解消してほしい。

IntelのCoreやApple M1に対抗できる高性能製品の投入に期待

 ただ、逆に言えば、サードパーティーIME以外では、Arm版Windowsのプラットフォームにおける障壁はなくなりつつある。サードパーティーのIMEを諦めて、MS-IMEに乗り換えることができるのであれば、Arm版Windowsのデメリットはほぼなくなってきたと言える。あとは、性能やバッテリ駆動時間、セルラー回線への標準対応といったIA版に比べたハードウェア側のメリット/デメリットをどう評価するかが焦点になってくるだろう。

 そうした中で注目したいのは、QualcommがハイエンドモデルとなるSnapdragon 8cxを2018年後半に発表してから、既に2年半近くが経過しているということだ。

 同時期にIntelは第8世代Core(Whiskey Lake)を発表しているが、その翌年(2019年)に第10世代Core(Ice Lake)、さらに2020年には第11世代Core(Tiger Lake)を発表するなど、既に2世代に渡る新製品をリリースしている。加えて今年後半には、第12世代製品となるAlder Lakeのリリースが予定されている。そしてAppleがM1で、Armでも高性能なCPUを製造できることを証明したのは記憶に新しい所だ。

 同じ事は、Qualcomm自身のスマートフォン向けプロセッサとの比較でも言える。Snapdragon 8cxは同時期に発表されたスマートフォン向けのSnapdragon 855とCPUやGPUなどの基本的なアーキテクチャを共有している。その後、QualcommはSnapdragon 865を2019年末に、そしてSnapdragon 888を2020年の末に発表と、既に2つの製品が登場している。

 つまり2年半近くPC向けのSnapdragon 8cxがほとんど進化していないという状況になってしまっているのだ。この点に関してQualcommのヌネス氏は「それはスマートフォンとPCのビジネスモデルの違いだ。スマートフォンは年々進化していくのに対して、PCはそれに比べるとやや遅い。このため、ここ数年われわれはミッドレンジ向けやエントリー向けなどの製品ラインアップを増やし、搭載製品を増やすことに注力してきた」と述べる。

 そして、ハイエンドについては、「むろん将来のロードマップはあるが、現時点では公開できない」(ヌネス氏)とのこと。ぜひとも近い将来にはIntelのAlder LakeやAMDのZen 4ベースのCPUとも戦える性能をもった製品のリリースに期待したいところだ。実際、そのヒントを、QualcommのパートナーであるArmが既に発表している。

 Qualcomm製品は、ArmのCortexシリーズのIPデザインをベースに改良を加えたモノになっているのが近年の通例なのだが、Armは5月に新しいCPUのIPデザインを発表している。Cortex-A710(big側)、Cortex-A510(LITTLE側)の2つがそれで、同時にA710のカスタムデザインとしてCortex-X2が発表されている。

 Arm自身もこのCortex-X2やCortex-A710のターゲットアプリケーションがPCであることを盛んに強調しており、現状PC向けのハイエンドなArmプロセッサをリリースしているのはQualcommだけだという事実に照らし合わせれば、Qualcommがそうした製品をSnapdragon 8cxの後継として用意していることは想像に難しくない。

 x64変換機能を搭載したことで完成度が高まったArm版Windows、そしてその最新バージョンとなるWindows 11、そこにCortex-X2ベースの新しいSnapdragonが加われば、来年のモバイルPC市場はとても興味深いものになる可能性を秘めている。