Windows 10 デスクトップ画面Windows RTではサポートされなかったこの画面がARM版Windows 10ではサポートされ、既存のWin32版アプリも利用できるようになる

Windows対応を射程に入れたSnapdragon ~Qualcomm、Snapdragon 835を発表~ 後編

  • このエントリーをはてなブックマークに追加

by [2017年2月01日]

前編ではQualcommの最新プロセッサであるSnapdragon 835のハードウェア仕様についてみてきました。

後編ではこのプロセッサで新機能の目玉となるフルスペック版Windows 10への対応についてみてゆきたいと思います。

フルスペック版Windows 10への対応

Windows 10 デスクトップ画面Windows RTではサポートされなかったこの画面がARM版Windows 10ではサポートされ、既存のWin32版アプリも利用できるようになる

Windows 10 デスクトップ画面
Windows RTではサポートされなかったこの画面がARM版Windows 10ではサポートされ、既存のWin32版アプリも利用できるようになる

このSnapdragon 835の今後の展開を占う上で最も重要な要素、それは恐らく昨年末に発表されたWindows 10のフルスペック版、つまりWindows RTのようにタブレットモードだけでなく、いわゆるデスクトップアプリが動作する完全なWindows 10(の移植版)がサポートされることでしょう。

現状ではその詳細は明らかにされていませんが、これは少なくとも既存のパソコン用デスクトップアプリ、具体的にはAdobeのPhotoShopが特に問題なく動作するレベルの互換性と速度※注10が確保されることは明らかになっています。

 ※注10:一応、発表時点では当時Snapdragonシリーズの最上位モデルであったSnapdragon 820を搭載したマシンでのデモンストレーションが示されていましたが、Snapdragon 820レベルの性能では、特に問題はないもののその動作速度について若干厳しい印象がありました。

そこで、ここからはSnapdragonシリーズを含むARM系プロセッサでこれまで何故Windows RTのような機能を限定したバージョンしか提供されず、フルスペックのWindows 8/8.1/10がサポートされなかったのか、そして今回どうしてできるようになったのかについて考えてみたいと思います。

何故フルスペックのWindows 10が動かなかったのか?

読者諸氏は「これまでもデスクトップ版WindowsとWindows RTでは同じWindowsストアアプリが動作していたのに何故デスクトップアプリはWindows RTで動作しなかったのだろう?」と疑問に思ったことはなかったでしょうか。

あるいは、「Windows 7の上でより古いWindows XPが動作する環境をまるごと用意しXPモードとして提供できたのならば、どうしてWindows RTでそれができなかったのか」と。

これらは、現在のWindowsパソコンで用いられている、俗にx86系と呼ばれる32ビットアーキテクチャのプロセッサ、およびx64系と呼ばれるx86を拡張した64ビットアーキテクチャのプロセッサと、Windows RTで標準だった32ビットのARM v7アーキテクチャおよびその後継でSnapdragon 835を含む今のQualcomm製Snapdragonシリーズプロセッサの多くで採用されている64ビットのARM v8Aアーキテクチャでは、その基本的なハードウェア構成から命令セットまで、全く互換性がないことが問題の根底にあります。

現在のWindowsストアアプリでは、アプリ本体のプログラム部分について、コンパイルの際に共通中間言語(Common Intermediate Language Infrastructure:CIL)と呼ばれる、x86系ともARM系とも異なる、抽象化された命令セットによる中間言語コードに変換してあります。

そして、そのアプリが実行される際には、実行時コンパイラ(Just-In-Time Compiler:JITコンパイラ)と呼ばれる各動作環境のハードウェアの種類ごとに提供されているコンパイラによってそのハードウェア固有の命令セットで書かれたバイナリコードにリアルタイムで変換の上で実行されるようになっています。

こうすることで、Windows RTでもWindows 8/8.1/10でも、最終的に実行されるプロセッサのアーキテクチャの相違に関わりなく、同じアプリを問題なく実行できる※注11ように設計されています。

 ※注11:この仕組み自体はWindowsでは元々「.NET Framework」として2000年頃から採用されていたもので、「.NET Framework」のバージョン1はWindows 98やWindows NT 4.0まで対応していました。

このように、Windowsストアアプリはその設計段階からCPUのアーキテクチャやハードウェアの設計に極力依存しないような仕組みで設計されているため、Windows RTとWindows 8/8.1/10で基本的には同じアプリが同じように動作するようになっています。

Windows 8 スタート画面Windows RTではこの画面のみが利用でき、デスクトップ画面や既存のWin32デスクトップアプリが利用できなかった。これはWindows RTマシンの性能不足による部分が大きいが、結果としてWindows RTマシンの不振と打ち切りにつながった

Windows 8 スタート画面
Windows RTではこの画面のみが利用でき、デスクトップ画面や既存のWin32デスクトップアプリが利用できなかった。これはWindows RTマシンの性能不足による部分が大きいが、結果としてWindows RTマシンの不振と打ち切りにつながった

一方、Windows RTでいわゆるWin32デスクトップアプリが動作しなかったのは、端的に言えば既存のデスクトップアプリが俗にx86系と呼ばれるIntel 386(1985年)以来の32ビット命令セットで書かれていて、同じく32ビット命令セットでもアーキテクチャの全く異なる※注12ARM v7系命令セットによるCPUを搭載していたWindows RTのハードウェア環境ではそれを直接実行できなかったためです。

 ※注12:単純に命令セットに互換性が無いというだけではなく、CPUが計算等の処理を行う際に用いるレジスタと呼ばれる小容量かつ高速のメモリの本数やその構成・機能が大きく異なっています。

これは直接で無い手段、つまりそのプログラムの実行コード部分をx86命令からARM v7命令へリアルタイムで命令の変換を行うソフトウェア※注13を利用してWindows RTのソフトウェア環境で実行できるようにすれば理屈上は動作可能でした。

 ※注13:エミュレータやトランスレータなど。

しかし、こうした変換プロセスを介在させるということは、そのアプリの動作にあたって余計な処理やメモリ消費、ストレージ容量の消費が生じることになります。

もちろん、充分高性能かつ大容量のメモリとストレージを搭載したマシンならば、これは重要な問題とはならないでしょう。

Microsoft SurfaceMicrosoft自身が発売した、Tegra3をプロセッサとして搭載するWindows RTタブレットWin32アプリをエミュレートし実用的な速度で動作させられるだけのCPUパワーが備わっていなかった

Microsoft Surface
Microsoft自身が発売した、Tegra3をプロセッサとして搭載するWindows RTタブレット
Win32アプリをエミュレートし実用的な速度で動作させられるだけのCPUパワーが備わっていなかった

しかし、残念ながらMicrosoft Surfaceの初代と2、つまりWindows RT搭載マシンのリファレンスに位置づけられる機種でさえ、それらの条件を満たしていませんでした。

具体的に言うと、初代Surfaceが搭載したARMのCortex-A9コアを4+1構成で内蔵するTegra 3の浮動小数点演算性能(倍精度)が10.2GFLOPS、同じくSurface 2が搭載したCortex-A9 R4コア4+1構成のTegra 4でも13.8GFLOPSで、単純な演算性能だけで見ても、これらのプロセッサはいずれも10年ほど前のIntel製CPUで主力だったCore2Duo 上位機種※注14の半分程度しか出ていません。

 ※注14:CPUコアが2コア搭載のCore2Duo E8600でさえ、倍精度で26.64GFLOPSの演算性能が理論値として示されており、1コアあたりの演算性能で見るとTegra 4でCore2Duo E8600の1/4程度しかないことがわかります。このことからTegra 3/4搭載のWindows RTマシンでデスクトップモードを実装しそこでx86系Windowsアプリを実行するというのは、プロセッサの性能からおよそ実用的では無かったと判断できます。なお、Windows RT搭載マシンはMicrosoft Surface以外にもDellのXPS10やNokiaのLumia 2520などがあって、これらは32ビットのSnapdragon 800などを搭載していました。

つまり、もう10年も前、Windows RT開発の時点から見ても6年以上前のPC用プロセッサにボロ負けする程度の演算性能しか出ないこれらの機種では、それより更に速度が落ちるのが明白なエミュレーションによるx86命令セットで書かれたWin32デスクトップアプリの実行は、全く現実的では無かったのです。

Windows XP ModeWindows 7に搭載されていて、Windows 8以降で搭載されなくなった機能の中で最も影響の大きなものの1つ。実態はWindows XPそのものが動作するPC/AT互換機エミュレータで、同じCPUアーキテクチャのマシンをエミュレートするが故にロスやオーバーヘッドが少なく比較的非力なマシンでも実用になった

Windows XP Mode
Windows 7に搭載されていて、Windows 8以降で搭載されなくなった機能の中で最も影響の大きなものの1つ。実態はWindows XPそのものが動作するPC/AT互換機エミュレータで、同じCPUアーキテクチャのマシンをエミュレートするが故にロスやオーバーヘッドが少なく比較的非力なマシンでも実用になった

これに対し、Windows 7の一部エディションに搭載/提供されていたXPモードが速度的にそれほど遅くならなかったのは、XPモードで提供されているWindows XPの動作する仮想マシン環境が前提とするCPUアーキテクチャが、そのWindows 7の動作しているマシンで実際に稼働しているCPUのアーキテクチャと基本的に同一で、命令の翻訳というプロセスがほとんど必要なかったためです。つまりXPモードの基礎となるエミュレータはハードウェア固有の処理を行う部分を別にすれば、ほぼそのまま特に変換処理を行わずともアプリを高速実行できました。

これにより、XPモードはWindows 7上でWindows XP時代のアプリを利用するための手段として比較的低性能なマシンでもそれなりに実用になり、また特により古いWin16アプリがCPUのアーキテクチャ的な制約で動作しないx64版Windows 7上でそうしたコードを含むアプリを動作させるための手段として役立てられました。

今回のSnapdragon 835でCPUコア数が4から8に強化され、メモリコントローラが2基搭載に増強されたのは、恐らくこうしたWindows環境でのx86コードで書かれたWin32アプリのソフトウェアエミュレーションによる実行を睨んでの部分が大きい※注15と筆者は考えます。

 ※注15;もちろんサムスンの Exynos M1をはじめとする競合各社が独自開発したCPUコアの性能向上に対抗するための強化策という性格があることも否定できませんし、メモリコントローラの増強はメモリをCPUと共有するGPUの性能向上へ向けたものでもあるとも言えます。

というのは、x86命令で書かれたWin32アプリの動作に必要なエミュレーション処理は、異なるアーキテクチャのCPUで行う場合、先にも少し触れたように結構重く、CPUコアを割り当てて処理させた方がより良いパフォーマンスが得られると考えられ、さらにはこの種の処理はメモリアクセスの負荷が通常よりも大きくなるためです。

また、登場して間もないKyroコアにわざわざ手を入れてKyro 280と改名していることから、CPU側でもアプリのエミュレーションで性能低下が最小限で収まるよう、何らかの対策を講じた可能性※注16が高いと言えます。

 ※注16:この種のCPUエミュレーションをソフトウェアで行う場合、一般的な傾向として、CPUコアに内蔵されるキャッシュメモリの容量がその性能にかなり大きく影響します。過去の例でもキャッシュ容量が倍でCPUコア自体の速度がやや低速な古いCPUの方が、CPUコアそのものの動作速度は高いもののキャッシュ容量が半減された新しいCPUと比較して明らかに高速でエミュレータが動作したケースがありました。そのため、そうした対策を講じている可能性があります。

言い替えると、Snapdragon 835でこれだけ大きく手を入れてきたことから判断する限り、Snapdragon 820/821ではWindows 10の動作は一応可能であるものの、例えばノートパソコンやタブレットに搭載してIntelの Core iプロセッサと競合するには性能不足である、とQualcommが判断していた可能性が強いと言えます。

ちなみに、Snapdragon 835の約30億トランジスタという規模は2015年頃のノートパソコン用Core iシリーズプロセッサさえ軽く上回る値です。

もちろん、それらのプロセッサとSnapdragon 835では内蔵するGPUの規模や性能、CPUのコア数、あるいは内蔵しているキャッシュメモリ容量などが大きく異なっているため、それが即Snapdragon 835がWindows環境でそうしたCore iプロセッサよりも高い性能を発揮することを保証するものではありません。

むしろそこまでプロセッサの機能・性能を強化せねば、このSnapdragon 835はWidnwos 10における実用的な既存デスクトップアプリの動作環境となり得なかったのだと考える方が妥当でしょう。だからかどうか、ARM版フルスペックWindows 10については、対応するアプリケーションとしていわゆるWindowsストアアプリとWin32、つまり32ビット版の既存デスクトップアプリが挙げられるばかりで、64ビット版であるWin64で書かれたアプリへの対応は言及がありません。このあたりからも、充分実用的にデスクトップアプリが動作する環境の実現が難しいことが見て取れます。

高性能なことは申し分なく、Windows 10が充分動作しうるスペックだが……

以上、QualcommがSnapdragonシリーズのハイエンドモデルとして発表したSnapdragon 835について見てきました。

下手なノートパソコン用CPUを大きく上回る総トランジスタ数が発表された段階で、このプロセッサの規模や性能がこれまでのSnapdragonシリーズ各機種とは一線を画するレベルで向上するのはわかりきった状況であったとも言えますが、それにしても大がかりな機能強化であり、いささか過剰なほどの性能向上実現です。

これは見方を変えればSnapdragon 800世代におけるSnapdragon 805に相当するハイエンド機種であるとも言えますが。Snapdragon 805の時代にはなかった新しく負荷の高い用途がしばらく途絶えていたこの系統のプロセッサの復活をもたらしたとも言えそうです。

もちろん、これは従来通りAndroid搭載のスマートフォンやタブレットに搭載することも考慮されていますが、搭載可能なバッテリー容量や周辺回路の規模、それにアンテナやRFモジュールなどの数といった制約を考えると、このプロセッサがその性能をフルに発揮しうるのは、恐らくWindows 10搭載のタブレット/ノート/省スペースデスクトップパソコンに搭載された場合に限られるでしょう。

もっとも、スマートフォンなどに搭載し厳しい制約下での性能が落ちた状態を前提としても、公表されているこの機種のスペックから推測できる性能は充分以上に高くなると期待できます。

それだけに、早期の搭載製品発表を期待したいところで、一応今年前半の搭載製品発表というスケジュールがQualcommから示されていますが、どうやらチップの供給問題があるらしく、これは今年夏以降の主力商品となりそうな状況です。

このあたりはARM版フルスペックWindows 10の開発スケジュールも関わっているようですが、それ以上に今回初採用の10nm FinFETプロセスでのチップ製造歩留まりの問題が無視できないようです。

実は、10nm級の半導体製造プロセスはIntelでもまだ量産製品には採用していない本当に最新のプロセスルール※注17によるものですから、充分チップが行き渡らない状況で製品を無理に発売しても仕方ないでしょう。

 ※注17:Intelの現行Core iプロセッサは14nmプロセスでの製造となっています。

いずれにせよ、破格の高性能プロセッサであることは疑う余地がありません。早く搭載製品を見てみたいものです。

▼参考リンク
Snapdragon 835 Processor | Qualcomm
Qualcomm Snapdragon 835 Mobile Platform to Power Next-Generation Immersive Experiences | Qualcomm
Meet the Snapdragon 835: a next-gen processor made for power users | Qualcomm

タグ:
PageTopへ