IT技術についてのトレンドや、ベンダーの戦略についての考察などを書いていきます。

Windows on ARM で Microsoft が実現したいこととは

»

私はここ1年以上、Windows on ARMに注目してきました。Win32アプリが動かずに失敗したWindows RTではなく、Win32アプリがそのまま動くとされるARM版Windowsです。このブログでも何回か取り上げてきましたが、

モバイル向けARM版Windows10もQualcommを選んでいた!?

無事に実機がでたARM版Windows10PC

実機が発表され、出荷が開始されたのは良いのですが、その後、レビュー記事なども出ず、日本では入手できない状況が続いており、どうしたのかと思っていました。

ついにARM版Windows10マシンが出荷開始。しかし、何かおかしい。。

ここへきて、やっとレビュー記事が出たのと、Microsoftからも新しい発表がありました。

遅い。。のか?

レビュー記事はこれです。

Snapdragon搭載のラップトップ「Asus Nova Go」レビュー:スマートフォン譲りの驚きの電池持久力

なんかもう、タイトルからしてWin32に正面から向き合っていませんね。。電池持久力じゃ無いだろ! と言いたいのですが。。しかし、中を読んでみると、Win32にはあえて触れたくなかったのかな、と思いました。

ラップトップのテストによく使うベンチマークを複数使ったところ、Nova Goはここ最近見ないような低スコアを出してしまいました。

ということです。うーん、厳しいな、これ。

携帯と同じプロセッサである以上、リソースを激しく使うWindows OSのパフォーマンスは決して最高とは言えません。

とも書いてあります。やはり、どこかに無理があったんでしょうか。なんか残念。一応、

本来はMicrosoft Storeで購入できるネイティブのWindows Universal Platform(UWP)アプリで性能を発揮できるようにデザインされている

とフォローはされていますが、つまりはネイティブでないアプリは使い物にならない、ということのようです。Win32アプリについては書かれていませんが、この状況だと速いわけがありませんよね。暗雲が立ちこめてきました。。

Microsoft Buildでの発表

実は上のレビューは先月見つけていたのですが、別に「MicrosoftがBuild 2018でWindows on ARMについての発表を行う」という情報があり、様子を見ていたのです。実際、先週(5/7-9)行われたBuildでのWIndows on ARMに関するメインの発表は、Win64アプリのサポートを開始した、という話でした。

マイクロソフト、ARM版Windows 10で64ビットアプリのサポート開始。ただし新SDKにより再コンパイルが必要

Win64で再コンパイルが必要なことはわかっていましたので、そのための環境が整備されたということですね。とにかく、Microsoftが引き続きWindows on ARMに取り組んでいるというのは朗報です。(ひょっとしてやめちゃうんじゃ無いか、とも思っていましたので)

そして、今回のBuildのセッションに「Windows 10 on ARM for developers」というのがあったのですが、そのビデオの中に、以下のスライドがありました。

WOA_Win32.pngWin32アプリのパフォーマンスが「Emulation」になっています。これはEmulation並のパフォーマンスですよ、ということでしょう。Bestではないことは仕方ないですが、昨年のBuildでは、少なくとも単なるEmulation以上のパフォーマンスが出ると行っていたはず。。

Win32のバイナリをARM上で「動かす」だけであれば、これは実は簡単なんです。何十年も前から「エミュレーション」という技術があります。これは、あるハードウェア(A)上で別のハードウェア(B)を「真似る」ソフトウェアを動かすことで、本当はAなんだけど、Bの振りをして、B用のソフトウェア(バイナリ)を実行させるというものです。しかし、これの問題は「実行速度がめちゃくちゃ遅くなる」ことです。B用のプログラムをいちいちA用のプログラムに翻訳しながら実行するからで、1/10とか1/100とかの実行速度になってしまいます。もちろんそれでも「動かないよりは良い」と思えるなら、やる価値はあるわけですが、多くの場合は「使い物にならないくらい遅い」のですよね。

昨年のBuildで、MicrosoftはWindows on ARMのアーキテクチャについて、Windows 10 on ARMというセッションを行っていますが、その中でWin32のエミュレーションの構造が解説されています。

WOA.png単なるエミュレーションであれば、X86-to-ARM CPU Emulatorがあれば良いのですが、このスライドではWOW(Windows on Windows)とSystem Services(NTDLL)、そしてCHPE DLLというコンポーネントが書かれていて、「普通の」エミュレーションとは違う、という説明になっています。この時点では、「near native or very close to native performance」が期待できると解説しています。これを見て、「結構期待できる」と思っていたのですが、今出てきている情報を見る限り、あまりうまく行かなかったようです。これは、今後良くなっていく可能性はあるのでしょうか?

「プロセッサ」に依存しないOS!?

この試みが重要なのは、過去のWin32アプリの有効利用ということだけでは無いのではないかと考えています。Microsoftは、特定のプロセッサへの頸木(くびき)から逃れたいのでは無いでしょうか。クラウドはプラットフォームを抽象化し、プロセッサやOSの違いはユーザーからは見えなくなりました。しかし、OSそのものは、そうはいきません。今、クラウドのサーバーはIntel(とAMD)が主流ですが、今後IoTなどを睨んでARMになるかも知れませんし、その先に違うアーキテクチャがあるかもしれないのです。(量子コンピュータがそれに当たるのかどうかはわかりませんが)

そのときに、同じ騒ぎを繰り返さないよう、あらゆるプロセッサに対応できる技術の開発に取り組む、というのがMicrosoftの真の狙いでは無いでしょうか。実際、これまでもMicrosoftはWindowsをIntel以外のプロセッサにも対応させてきましたが、どれもあまりうまくは行きませんでした。いろいろなプロセッサ上でWindowsが動く「だけ」では、メリットが少ないということなんでしょう。

Microsoftの最大の強みはアプリケーションの蓄積です。どのようなプロセッサにも簡単に移植可能で最高のパフォーマンスを出せるWindows、そしてその上で、過去の資産であるWin32/64アプリがそのまま動いてこそ、Microsoftの強みが活かせるということではないでしょうか。その意味で、Intelよりも非力なARM上でWin32アプリを「ネイティブに近い」パフォーマンスで動作させることができるかどうかは重要な試金石です。この技術にはこれからも注目していきたいと思います。

Comment(4)

コメント

jecht

理由は異なりますがAppleが20年前に通った道ですね。おかげでAppleはハードウェア移行はおてのもの?ですね。いずれCPUはARM(Aシリーズ)へ移行するでしょう。
サービス部門の売上も急成長中ですがiCloudやAppleMusicなど同期トラブルも多く(MobileMe時代よりはましですが)個人的にはもっと洗練させてほしいと思います。

morya

大越さん、こんにちわ。
この件で前回の「ついにARM版Windows10マシンが出荷開始。しかし、何かおかしい。。」の時にコメントしようと思ってたのですが、タイミングがなくなってしまったので、今回書きます。
ARM版Win10については去年暮れにすでにインプレスウォッチさんの記事で、
「明らかになってきたArm版Windows 10の課題とそのメリット」
https://pc.watch.impress.co.jp/docs/column/ubiq/1095498.html

「Snapdragon 835ベースのArm版Windows 10デバイスの処理能力がどの程度なのか~中略~OEMメーカーの関係者によれば、OEMメーカーで一般的に言われているのは、Cherry Trailよりは速いが、Coreプロセッサよりは遅い、そのあたりの性能だと認識されている点。実際筆者もさわって、Officeの起動などを行なってみたが、Cherry Trailよりは速いかなという印象だった。実際、手持ちの第7世代Core i7と比べてみたが、Officeの起動は俄然Coreプロセッサのほうが速かった。」と書かれています。

また、64bitアプリについても、「このWindowsインストラクションレイヤーのバイナリトランスレーションで、変換できるx86命令は、32bitのx86命令のみとなる。64bitのx86-64(ないしはx64)のコードで書かれているアプリケーションは変換できない。この点に関して(Microsoftの)チャップル氏は「弊社で調査したところ、64bit版しか用意されていないアプリケーションは19%で、その多くはハイエンドゲームだった。そうしたハイエンドゲームをこうしたデバイスでやろうというユーザーはいないという結論に達したため、32bitのみのサポートになっている。これは純粋にエンジニアリング的な理由だ」と説明する。チャップル氏は言及しなかったが、仮にx64のバイナリトランスレーションも行なうとなると、バイナリトランスレーション自体の肥大化につながり、性能が低下する可能性もある。そう考えれば32bitのみに絞ったのは理解はできる。」と書かれています。

現状のSnapdragon 835のWin10PCでは、速度を期待出来るほどのPCにはなってないということです。
なので、インプレスウォッチでのその後のArmWin10PCの持ち上げ方は、長時間駆動押しになっています。
そこそこの速度は、845やその次のCPUのPCに期待しましょう。

morya

「マイクロソフト、ARM版Windows 10で64ビットアプリのサポート開始。ただし新SDKにより再コンパイルが必要」の部分ですが。
要するにソフトメーカーがARMネイティブの64ビットアプリとしてリコンパイルしないといけないという話ですよね?
大越さんはエミュ上で既存の32ビットアプリしか動かないことに不満を漏らしていたのではないのでは?
上記のマイクロソフトの対応では、「既存の64ビットアプリは相変わらずエミュ上で動かない」ということに変わりないと思うのですが?
果たしてどれくらいのソフトメーカーが対応してくれるんでしょうねぇ?
今はweb上でいくらでも公開出来るとはいえ、やっちゃうとサポートしないといけませんからねぇ。

コメントを投稿する