2017年1月12日木曜日

Windows on ARMのx86に関する不思議な話


先月取り上げたWindows on ARMの話、続報も少なく期待されている空気も感じないので若干悲しんでいたんですが、今日のPC Watchの記事が意味不明すぎて気になった。
MicrosoftはWinHEC Shenzhen 2016にて、Qualcommがx86エミュレーション機能を実装するSpandragonを提供することも明らかにしている。
「x86エミュレーション機能を実装するSpandragon」???x86エミュレーションを、Windowsが、ではなくSnapdragonが?



x86エミュレータの在処


当然のことながら、と言っていいと思うんですが、自分はx86エミュレーションは「ARM版Windowsの機能」=ソフトウェアであってSnapdragonは一切関知していないと思っていました。というか今でも思っています。この記事は事実誤認じゃないの?と。

ARM版WindowsのローンチパートナーがQualcommで、SoCがSnapdragonに限定されていたのも、あくまでモデム・GPUといったCPU以外を含めたSoC全体をサポートするドライバセットを用意することが必要なのと、単純に性能面で2017年時点ではハイエンドSnapdragon以外厳しいから、というだけの話だと思っていました。

この記事(と引用元の記事)だとまるでSnapdragonにx86エミュレーションをサポートするための特別な機構が含まれていて、それがSnapdragonでしかWindowsが走らない理由かのように読めます。そして、この機構は他のチップメーカーにも載りうるとARM社の人間が言っていると。なぜARM社が出てくる?

ARM社の領分はARMアーキテクチャであって、x86は関係ないはずです。百歩譲ってSnapdragonにハード的なエミュレーション機構が載っていたとして、それはARMアーキテクチャの外側にあるものであってARM社の関知することではないんじゃ?

そもそも、チップ側にx86コードの実行機構があったらそれはもはやx86のCPUなわけで、明確にIntelのプロセッサーライセンスに抵触するはずです。
(広義ではAMDやIntel自身のCPUだってx86命令を内部RISC命令に変換してから実行していますし、そんな屁理屈っぽいことを持ち出すまでもなくCPUコアの外側(だけどOSより内側)でx86エミュレーションしていたCrusoeだって歴としたx86 CPUなわけで、内部でARM命令に変換してから実行していようとチップレベルでx86に対応したらもう完全にx86 CPUですよね)

というわけで、実際のところx86エミューレーションはARM版Windowsの一機能であって、Snapdragon自体は純粋なARM SoCだと思うんですが、どうなんでしょうか?


Snapdragon以外のSoC


そんな感じなのでこの記事の意味するところはよくわからないんですが、引用元の
Recently Qualcomm claimed that it’ll be the only ARM partner that will support x86 apps on its platform. Now, ARM executives clarify that not only Qualcomm, but any other manufacturer out there will be able to run x86 apps on its platform – whether its Samsung, Apple, Huawei or others.
という話は、「Qualcommは自分達だけがx86(というか多分Windowsのこと)をサポートすると言ってるけど、ARM社的にはSamsungだろうがAppleだろうがHuaweiだろうがx86エミュレーションを走らせられるよ(だってソフトウェアの問題だからARM関係ないもん)」くらいの話でしょうか。

Snapdragon自体が目下最強クラスのARM SoCなので、別にARM版Windowsが他のSoCに広がっていくことにそこまでの渇望はありませんが、まあエコシステムが広がるなら面白そうではあります。

Samsung


Snapdragon(のKyro)に比肩する性能のARM CPUコアを持っている数少ない企業の一つがSamsungですね。

ただ、ここのExynosはそもそもSamsungスマホにしか載せていないため、Samsung自身がWindowsあるいはWindows 10 Mobileに興味を持たない限りARM版Windowsに対応することは無い気がします。

Apple


同じく高性能ARM SoCを自前で作っているAppleですが、まあ当然ながらWindows機は出しませんw

しかしながら、macOS on ARMは十分すぎるほどにあり得そうな話です。そもそもiOS自体がMac OS X派生のOS X on ARM(MSにおけるWindows 10 Mobile)と言っていい存在であり、かつ「OS Xで非ネイティブコードを走らせる」というのはRosettaで通った道ですので、Apple Ax SoC上でフルmacOSを走らせること自体はすぐにでもできるはずです。というか、誓ってもいいですが計画の有無は別として内部的にテストしていないはずがない。

製品セグメントとしては、既にiPad Pro+キーボードがMacBook並みにでかくて重くて高いという事態になっていますが、こういう巨大タブレットが「iOSアプリときどきmacOSアプリ」みたいな感じでmacOSの要素を(ARM SoCのまま)取り込んでいく未来はありそう。

あるいは、将来的にARM SoCの性能が更に上がってきたときに、MacBookのセグメントに食い込んでくる可能性も考えられる。こちらについては、さすがにハイエンドMacまでARMにできないのでアーキテクチャ混在を避けるために実現しづらいシナリオですが。

まあ、あまりワクワクする話ではないですけれど。

Huawei、その他


MediaTekあたりの、Qualcommのライバルにあたる企業のSoCでWindowsが動くようになると、ローエンドまで裾野が広がるので面白くなりそう。

ただ、x86エミュレーションが相当重荷になると思われるので、CPU性能的に当面無理だとは思います(だから現状Snapdragonだけなんだよねと)。

これらの企業はARM製CortexシリーズをSoCに採用していますが、現在のCortex系統はコア単体性能ではSnapdragon等に見劣りし、big.LITTLEのコア数で底上げしている印象なので、コア性能が重要なPC OS、x86エミュレーションはしばらく厳しいでしょう・・・

NVIDIA


Tegraに載っているDenverが凄く強力なコアで、かつGPUもPC向けGeForceと同じコアなのでARM版Windowsとの親和性が最高に高いと思うんですが、NVIDIAはもうモバイルに見切りをつけて自動運転に舵(ハンドル?w)を切っちゃったんですよね・・・残念。


というわけでなんというか、特に夢が広がる話は何もなかったんですが、ちょっと気になったということで。

2 件のコメント:

  1. 私はその記事を読んで「x86エミュレーションに便利な追加命令」を実装したのだろうと理解しました。
    過去に龍芯3号がそのようなことをやっていて、情報が少ないのですが、「LoongBT」という独自技術なのかQEMUなのか、どちらかはともかく、そのバイナリ変換でx86を動かすためにMIPSに命令を追加しているようです。

    返信削除
    返信
    1. > LoongBT
      おお、こんなものがあったんですね・・・ARMにしろx86にしろ、ライセンス周りをどう解決してるのか気になるところですね(中国製だから何も解決していないという可能性から目を逸らしつつ)。

      x86に限定したものでなく、バイナリ変換に有用な追加命令が入っている、とかなら可能性はあるかもしれないですね。となるとデモしていたSnapdragon 821(820?)にも既に入っていたんでしょうか。

      削除