2016年12月14日水曜日

Windows on ARMで何が起こるのか?


のっけから関係ない話ですが、GPD WINのBIOSを11/18版から10/25版に戻しました。どうにも不安定で・・・一見スリープ死していないように見せかけて、実は落ちて再起動していただけとかが発生してちょっと使い物にならず。戻してからは順調です。

さて、もうニュースというほど新しい話でもないですが、先週MicrosoftよりARM版のWindows 10が発表(PC Watch)されました。

ARMということはどういう形態を採るにせよモバイル寄りのデバイスに載ることになるわけで、ニッチなガジェットオタクとしては非常に気になる存在です。

というわけで、ARM版Windowsとは何なのか、何ができるのか、これから何が起こるのか、などを考察のフリして妄想していきたいと思います。

いつも通り書きたいだけ書いたので無駄に長いです。


ARMで動くWindowsとは?


割と前触れ無く降って湧いたような今回の発表、ビックリした方も多いんじゃないでしょうか。自分は椅子から転げ落ちるほどではないですがそこそこ驚きました。そして最初に思ったことが「凄いけど凄くない」でした。

凄いところ


そのまんま、ARM、というより「x86以外で動くフルWindows」がMicrosoftから出てきたことです。

もちろん、古くはWindows CE、Windows Mobileなど非x86、ARMデバイスのWindowsはありましたが、あくまでマーケティング的にWindowsの名を冠した別のOSでした。

後でまた触れますがWindows RTや最近のWindows Phoneなど、ARMに移植されたWindowsカーネルが動くOSもありますが、こちらは機能的にフルデスクトップOSではないわけで、いわゆる「フルWindows」が動くほとんど初めての非x86環境になります。

(「PowerPCとかで動くRISC版Windows NTあっただろこのガキ」とかツッコまれないよう「ほとんど」としておきます)

非x86、というところを強調しておきながら、これらの過去・現在の非x86 Windowsとの最大の違い、ARM版WindowsをフルWindowsたらしめる点がx86エミュレーション機能があることです。

Windowsプラットフォームで発展し続けてきた膨大なソフトウェア資産が(例外はあるだろうけども)そのまま活かせる、そんなフルWindowsがいわゆる「スマホのハードウェア」で動くようになるわけです。

凄くないところ


ずっとx86で続いてきたWindowsをARMに移植し、それどころかx86アプリケーションも動作する、となると一見壮大な話ですが、実は技術的には凄くない、いや凄いんだけど必要な要素は元々ほとんど揃っているものだったりします。

まず、コアとなる「ARMで動くWindows」自体は超が付くほどの黒歴史であるWindows RT(冒頭画像のSurface RTに載ってたOS)で実現されています。

Surface RTはTegraの載った「スマホ・タブレットハードウェア」のARMデバイスであり、そこで動くWindows RTはれっきとした(CEなどとは違う)WindowsカーネルのOSだったわけです。

ですので、今回のARM版Windows 10のベース技術がWindows RTであるのは容易に想像できます。

そして、Windows RTがSurface Mini砂漠に埋めたくなるレベルで失敗した要因こそが「x86アプリケーションが動かない」ことでした。って公式に誰かが言ったわけではないですが誰もがそう思ってますよね?

その問題を解決したのがx86エミュレータなわけですが、こういうシームレスなバイナリ変換も真新しいわけではなく、Apple信者視点だとPowerPCバイナリをIntel Macで動かすRosettaを思い出した人も多いんじゃないかと思います。
(発想として新しくないだけでちゃんとした速度で動かすのは凄いことですが)

なので、技術的に凄いハードルを越えたとか斬新な発想で生まれたというよりは、こういったものを出す、という判断をしたことが驚きであって、いろいろ邪推したいところですね。


何ができて、できない?


周辺機器は厳しそう


CPUがARMと言えど、x86エミュレータが載っている以上なんでもできる・・・と言いたいところですが、現実はそうもいかないでしょう。

x86エミュレータがIntel Mac+Rosettaに近いものとして考えると、ハードウェアを叩かないアプリケーションは問題なく動くでしょうが、恐らくデバイスドライバはネイティブコードで書かないと動かないと思われるので、ドライバを必要とする周辺機器、ソフトウェアはサードパーティーが対応しない限り動かない気がします。

もちろんARM版Windowsが普及して対応されればいいんでしょうが、そうだとしても通常のWindowsでやるような古いハードウェアを気合いでドライバ入れて動かす、とかは無理そう。

とはいえ、プラットフォームの性格上デスクトップや自作PCでARM版Windowsを動かすことは考えにくく、元から拡張性の制限されたモバイルデバイスで動くだろう事を考えると、そんなに問題にはならない気はします。(USB+標準ドライバで動くような機器は多分動くので)

当然気になる性能面


ARM、かつx86コードをエミュレーションで動かして速度面が実用になるか?はかなり気になるところだと思います。


Microsoftによるデモを見る限りでは、過不足なくヌルヌル動いているように見えます。

ARMネイティブコードについてはほとんど心配していません。x86 CPUとARM CPUの性能を直接比較するのは難しいですが、Core i7のようなハイエンドCPUが比べものにならないくらい速い一方で、ARM版Windowsが対象とするのはAtom、良くてCore m搭載PCのセグメントでしょうから、それらより極端に遅いことはないはずです。

しかも、最初の搭載製品は2017年末に出るハイエンドSoCであるSnapdragon 835とのことですから、よっぽど最適化に失敗していない限りAtomとトントンどころかよっぽど高速なんじゃないかと思います。

また、グラフィック面についても、グラフィック周りは元々Intel・Radeon・GeForceといった複数のアーキテクチャをDirectX等で吸収しているので、オーバーヘッドなく動くでしょう。というより、近年のARM SoCのGPUは凄まじく強力なので、x86エミュレーションを挟まないゲームはもの凄く速く、多分Intel GPU以上なんじゃないかと思います。

やはり最大の懸念はx86エミュレーションで、自分が言うのも失礼ですがこれはもうMicrosoftのウデ次第というところで使ってみないとわからない。

ただ、Intel MacにおけるRosettaは当時非力だったPowerPC G4向けコードをよっぽど高速なCore Duoで動かす、という力技だからこそ通用した面もあり、アーキテクチャの複雑度・規模的に「格上」であるx86をARMでエミュレーションするのは結構重荷じゃないかなあ、とは感じています。

ヘテロジニアスマルチコアへの対応は?


あまり重要な点ではないですが、今回気になったのは当面のプラットフォームとしてQualcommのSnapdragonのみを対象としている点です。

しかも、今回デモされたのがSnapdragon 821でありながらリリースされる最初のプラットフォームはSnapdragon 835決め打ち(ミッドレンジなどは対象外)でした。
(Pentium 4でデモしてCore Duoから発売したIntel Macを彷彿とさせますね)

ARMの世界はx86のPC/ATと違い、SoC間の差異が大きいので当初は最大勢力のQualcomm製SoCにしか対応できない、というのはわかります。が、最上位と思われる835にしか対応しないのは狭すぎるのでは?という気が。

考えられるのが以下の2点です。
  • x86エミュレーションの負荷を考えると最上位SoCでないと厳しい
  • Windowsを動かせるCPU構成が限られる
前者は性能面の制約、で終わってしまいますし、Snapdragon 821でそこそこ動くならば次期ミッドレンジSnapdragonでも過不足ないのでは?と思ってしまいます。ですので後者について考えてみたいです。

そこで思ったのが、ARM版Windowsはbig.LITTLEのようなラージコア+スモールコアによるヘテロジニアス構成に対応していないんではないか?という疑問です。

デモで使われていたSnapdragon 821はQualcomm独自のハイスペックコアであるKyroの4コア構成ですが、1個下のSnapdragon 652となるとARM純正?のCortex-A72+A53のbig.LITTLEです。

次期Snapdragonもハイエンドは独自コアのホモジニアス(835は8コアらしい?)、ミッドレンジはARM純正big.LITTLEのヘテロジニアスだとしたら、後者は採用できなかったのかもしれません。

(Snapdragon 617など、ローエンド寄りミッドレンジではCortex-A53オクタコア、あるいは10コアのホモジニアス構成はありますが、スモールコアでは確実に力不足なのでこちらは性能面でサポートできないでしょう)

とはいえ、同系統のカーネルを採用してると思われるWindows PhoneのLumia 950などはヘテロジニアスヘキサコアのSnapdragon 808を載せているので完全に勘違いかもしれませんが・・・

ヘテロジニアスに対応してないんじゃ?と思ったもう1つの理由が、今回のデモにおけるシステム情報が「Snapdragon 820 1.59GHz」になっていた(PC Watch)点です。

そもそも821じゃないんかい、というツッコミもそうなんですが、1.59≒1.6GHzというのはSnapdragon 820/821の省電力コアの動作周波数なんですよね。

ややこしいんですが、Snapdragon 820/821はコア自体は同一でありながら、4コア中2コアの動作周波数が低い省電力コアだったりします。

単に良心的に低い方の周波数の表示に合わせただけかもしれませんが、もし「全コア1.6GHz均一でしか動かせない」だとするとやはりヘテロジニアスでは動かないのか?と思ってしまいます。

この邪推が誤りで、Windows上でヘテロジニアス構成がうにょうにょ動く様を眺められた方がよっぽど楽しいのでそうなってほしいですがw

このあたり凄く興味があるので長々脱線しました。


搭載製品は?


Surface


最初の搭載製品は大方の予想通りSurface 4(あるいは1個飛ばしてSurface 5)になるんじゃないかと思います。

元々、このブログで散々言っているように小型タブレット向けSoCとしてのAtomからIntelが撤退し、小型Windowsタブレット(=Surface 3)の市場が消えかかっていたことがこのARM版Windowsを出したことの動機だと思います。

Surface 3自体、爆死したSurface RT/RT 2の流れを汲みつつCPUをAtomに替えてx86アプリケーションが動くようになってようやく製品として完成したタブレットですが、結局Atomが消えてしまったので今度は爆死しないようx86エミュレーションを載せてまたARMに戻ってくると。

ただ、わざわざ別アーキテクチャのWindowsをSurfaceのためだけに作るわけはなく、そもそもWindowsを抜きにしても小型タブレット市場自体Intelが撤退してAndroidもiPadも新製品が全然出ないほど不毛なわけで、もっと拡げたい市場があるはずです。

IoT・VR/AR/MR系はちょっと考えにくい


最近Microsoftが力を入れているセグメントとして、Windows 10 IoT Coreを提供しているIoTやHololensといったVR/AR/MRがあります。

ここは元からARMだったりHololensに至ってはx86 Windowsが動いている世界ではありますが、こういった新規領域はそもそも既存ソフトウェア資産を活かす領域ではないので、x86エミュレーションが売りになるARM版のフルWindowsを持ってくる場所ではないように思えます。

Windows Mobile Continuum


すぐ思いつくのはここです。Windows 10 Mobileと融合するのか、Windows PhoneにフルWindowsを載せるのかはわかりませんが、Windows Phoneに載せてContinuumでx86アプリケーションが動かせる世界観です。

正直、現状のContinuumは「OfficeとEdgeが動くだけ」というWindows RTの焼き直しにしか見えませんが(暴論)、x86エミュレーションが組み合わされば完全にPCとして機能するわけです。

Snapdragonで動くWindowsなわけですから、フツーのスマホに入り、モニタに繋げばフルWindowsとして使えるようになる、というのはド劣勢のWindows 10 Mobileからするとかなり強力な武器になるように思います。

個人的にはAtomがスマートフォンに入ってこれできる世界を夢見ていたんですけどね・・・

もっと古典的なノートPC


Snapdragonが更に速くなり、x86エミュレーションが速くなる、あるいはARMネイティブアプリが増えていけばもっと上位のセグメントを侵食できる気もします。

何せ、中身はスマホなわけですから11インチくらいのノートを作れば常時スタンバイ・LTE常時接続でバッテリーが一週間持つPC、とかも結構余裕で作れるんじゃないでしょうか。

UMPC


嘘です。多分作られません。僕が欲しいだけです。
しかしながら、理屈の上では中華スマホを作る勢いでサクッとSnapdragon版Windows機が作れるようになるはずなので、GPDのようなメーカーが本気を出してくれたらお目にかかれる日が来るかもしれません。


最後に:Intelはどうするの


ARM版Windowsがどうなっていくか考える上できになったのはここです。

今回わかったのは、Intelとしては諦めた市場に対して、MicrosoftはフルWindowsを持ち込みたい意志が残っていた、という見解の相違です。Windows RTが失敗し、x86エミュレーションを載せてきたくらいですから、そもそもIntelが同じ市場にAtomを提供してくれていればそれを載せて済んだ話です。

Intelの読みが正しく、ARM版Windows(がターゲットにするセグメント)が鳴かず飛ばずに終わるか、強力なプレーヤーに成るかは未知数ですが、後者の場合は事件です。

ARM版Windowsが一定の地位を確保してしまったら、前述のようにもっと上位のセグメント、つまりCore m/Core iで現在Intelが利益を出せている領域までARMが侵食してくる可能性があるわけです。

今までIntelはPCはガッチリ押さえつつ、ARMが独占していた市場への切り込みを狙って(そして失敗して)いたわけですが、この場合は逆転してしまいます。

余談ですが、ARMで動くiOSはそもそもOS Xベースで、OS X自体がPower PCからIntelに移植されてきたOSなので、Mac向けOS XのARM対応もやろうと思えばすぐできるはずです。個人的には、iPhoneが高性能化しだした頃からAppleが社内でARM版OS Xをテストしていないはずがないとすら思っています。

こうなると、スマホ・タブレット市場から撤退してIoTに舵を切ったIntelも、PC市場のシェアを守るために再度この領域に引きずり出されるんじゃ?と思っています。

恐らくWindows RTが爆死した頃のIntelは「所詮Microsoftはx86が無いと生きていけない」と高みの見物だったんじゃないかと思いますが(妄想)、もしMicrosoftがx86依存を脱却しパワーバランスに変化が出てくると、PC向けCPUを取り巻く環境はARMを巻き込んで面白くなっていくんじゃないかと思いました。

0 件のコメント:

コメントを投稿