NVDAのGPUが任天堂に必要とされる理由
初代シールドだと、3DSとモロかぶりだし、シールドのコンソール版だとPS4と変わらんし・・・。
ということで、シールドタブレットタイプしかないんじゃね?
とは大抵の人が思っていたんですけれど、まさにその進化版になりましたね。
まだまだ未発表の要素もたくさんありそうだし、楽しみすぎる!
NVDAは、任天堂とともにコンソールでも覇権握っちゃうのかな?
儲けすぎ注意!
(部分引用)
Nintendo Switchは,メインプロセッサとしてNVIDIA製SoC(System-on-a-Chip)である「Tegra」のカスタム版を採用する。
2009年頃に、3DS用プロセッサ選定時に,NVIDIAが任天堂にTegraの売り込みを行ったとされるが、最終的にTegraは落選し,日本企業であるディジタルメディアプロフェッショナル製の「PICA200」が採用された。
当時,PICA200採用の決め手になったのは,「Tegraは省電力性能に弱点がある」点だったという。また,3DSがデビューした2011年当時だと,携帯機サイズの電気容量(=バッテリー容量)でプログラマブルシェーダを動かすことが現実的でなかった。
PICA200は,「固定機能シェーダ」でも「プログラマブルシェーダ」でもない「コンフィギュラブルシェーダアーキテクチャ」を採用していた。これはゲームグラフィックスで用いられる定番のシェーダ部品をハードウェアで提供し,これらをある程度の制限内で組み合わせたり,パラメータで制御したりするもので,固定機能シェーダの持つ省電力性能と,プログラマブルシェーダに近い表現自由度を兼ね備えた,ハイブリッドなアーキテクチャであったのだ。
ただ、今やスマートフォンのSoCでPS4やXbox Oneと同等世代のプログラマブルシェーダが動いている時代なので,このタイミングでプログラマブルシェーダアーキテクチャの採用を渋る理由はない。
半導体の製造プロセスも微細化が進んでいるため,消費電力的にも問題ないという判断があったのだろう。
むしろ,2017年発売機ではコンフィギュラブルシェーダアーキテクチャを採用する必然性がない。
ところで,任天堂のWii,そしてWii UはGPUとしてAMD(旧ATI Technologies)のプロセッサを採用していたはず。今回のNintendo Switchでは,同系のAMD製組み込み型APU(CPU+GPU) SoCの選択は考えられなかったのだろうか。
「携帯ゲーム機としても据え置き型ゲーム機としても使える」コンセプトだと,PS4やXbox Oneで採用しているようなAPU(CPU+GPU)は,消費電力的に採用しにくい。
400ドル以下のノートPCが採用するようなエントリー市場向けAPUなら,消費電力面のハードルはクリアできるが,今度は性能的要件を満たせない。
なら,QualcommのSnapdragonシリーズに代表される,スマートフォン向けに提供されるハイエンドSoCという選択肢はなかったかといえば,ないこともなかったとは思う。
スマートフォン向けのSoCが採用するGPUコアのトップエンドモデルだと,単精度浮動小数点(FP32)理論演算性能は1TFLOPSを超えているものもあるからだ。高性能すぎて純粋なスマートフォンでは採用例がなかったりするが。
ただ,「既存のゲーム開発環境との親和性」「ほかのゲームプラットフォームとの相互移植性」などを考えると,「NVIDIAという選択肢」はなにより安定感がある。というのも,NVIDIAは「GameWorks」などに代表されるゲーム開発向けの技術支援を積極的に行ってきた実績があり,ゲーム開発シーンからの信頼が厚い。
そして,GeForceの流れを汲むGPUコアは,過去にPlayStation 3や初代Xboxに採用されたことがあり,なによりPCゲーム市場の主役であって,GeForceベースのソフトウェア資産は潤沢だ。おそらく今回決め手となったのは,このあたりではないだろうか。
◎Nintendo Switchの性能はどれほどか
GPUアーキテクチャだが,2017年登場のマシンである以上,現時点における最新世代,すなわちPascal世代になる可能性が高い。
Pascal世代のGPUを搭載したTegraとして,NVIDIAは2016年8月に,自動運転向けとなる「Parker」を発表しているが、これが1つの目安にはなる。
なおNVIDIAは,次世代Tegraとして2016年9月に開発コードネーム「Project Xavier」の存在を公表している。こちらはPascalの次世代アーキテクチャである「Volta」を採用したSoCだが,
最新を追いすぎない任天堂の方針
最新を他社に提供しないNVIDIAの戦略
を考えると,Xavierもしくはそれに近いSoCを採用する可能性は極めて低い。
もちろん,「最新を追いすぎない任天堂の方針」からすれば,前世代のMaxwellアーキテクチャを採用した「Tegra X1」系プロセッサを採用する可能性もなくはないのだが。
ただ携帯前提の端末において、いまさらTSMCの20nmプロセス技術をベースとした物理設計を採用する意味があるとは思えないので,16nm FinFETプロセス技術を採用するPascalを使うだろう。Pascal系ならParkerのカスタムだろう。
さて,気になる性能に話を戻すと,GPUの単精度浮動小数点演算性能は
WiiU 352 GFLOPS
PlayStation 3 224 GFLOPS
対PS3で約1.57倍という数字になっていた。
それに対し,Parkerだと768 GFLOPS。NVIDIAはParkerの性能をアピールするとき,1.5 TFLOPSという表現を好んで使うのだが,これは自動運転やディープラーニングの処理で重要な半精度浮動小数点(FP16)の演算性能値なので注意してほしい。
タブレット端末向けSoCのTDP(Thermal Design Power,熱設計消費電力)は高くても10W~15W程度である。
このTDPだと,16nm FinFETプロセス技術を用いたとしても,単精度の浮動小数点性能値は1 TFLOPS前後だろう。
Nintendo Switchの理論性能値を仮に768 GFLOPSもしくは1 TFLOPSと仮定すると,順にWii Uの2.18倍,2.84倍という理論演算性能ということになる。
そしてその場合,Nintendo Switchは,Wii Uより高性能でも,PS4の1.84 TFLOPS,PS4 Proの4.2 TFLOPS,Xbox Oneの1.31 TFLOPSには歯が立たないということになる。
しかし,任天堂はWiiの時代で競合との性能競争から下りているため,いまやここに驚きはない。
ただ「もっと高性能だったら!」の希望的観測をするならば,Nintendo Switchは「携帯ゲーム機モードと据え置き型ゲーム機モード,2つの動作モードを持つゲーム機」なので,ACアダプター駆動時となる電源接続時の据え置きモードではより多くのGPUコアが駆動するとか,より高いクロックで動作するとかして1 TFLOPSオーバーの性能を発揮し,バッテリー駆動時は稼働するコアや動作クロックを抑え,相応の性能に留めてゲームプレイ時間を延ばす,なんて仕様を採用している可能性はある。
もちろん,「ACアダプター接続時に768 GFLOPSで,バッテリー駆動時は384 GFLOPSに落ちて解像度が下がります」という逆パターンも考えられる。
少なくとも,Nintendo Switchが,バッテリー駆動時に単精度浮動小数点演算性能で1.5 TFLOPSを超えてくる可能性はほぼないと言っていいように思う。
◎Wii Uや3DSとの互換性はなく,PS4と同様のリニアなモデルチェンジを採用か
新世代ゲーム機が登場するたびに話題となるのは下位互換性だが,今回,TegraというARMベース,正確には「ARMv8-Aアーキテクチャ」ベースのCPUコアを統合するSoCを採用したことによって,WiiおよびWii Uとの互換性はなくなったと考えられる。
3DSはARM系のARMv6アーキテクチャを採用しているので,可能性はなくもないが,Nintendo Switchとは画面構成や操作系の違いがありすぎるので,こちらも互換性はなくなったと見るのが自然か。
一方で,将来に関しては重要な示唆がある。Nintendo Switchは,カスタム版とはいえ,完全に新規開発のプロセッサではなく,NVIDIAのTegraという「ブランドもの」「シリーズもの」を採用した。
そこに向けて任天堂とNVIDIAは,Nintendo Switch(≒カスタムTegra)専用のゲーム開発API「NVN」を共同開発したと,NVIDIAがblogエントリーで明らかにしているのだ。
NVNの「NV」は「NVIDIA」,「N」は「Nintendo」のような気もするが,API( Application Programming Interface)の名称はともかく,ここでポイントになるのは,任天堂とNVIDIAが,Nintendo Switchプラットフォームを共同で成長させていく可能性が高いということである。
そして,その場合に導き出されるシナリオは,「Nintendo Switchが,Tegraプロセッサの進化とともに成長する」だ。
つまり,Nintendo Switchは,後方互換性だけでなく,前方互換性を維持しつつ高性能化していくことがありうるのだ。PS4 Proのような「ハーフ次世代機」の形になる可能性もある。
いずれにせよ,PS4やXbox Oneと同じく,Nintendo Switchも,そのライフタイム中に性能が固定化する可能性は低いと,筆者は考えている。
そもそも任天堂はすでに,3DSの発売から3年後にあたる2014年に,高性能版である「New Nintendo 3DS」を市場投入済みだ。これくらいの時間感覚で,“New Nintendo Switch”的な高性能版が出てくることは十分にあり得るだろう。
なお,NVIDIAサイドの話をすると,同社はTegraをスマートフォンなどのいわゆるモバイルデバイスへ展開していく可能性を否定しており,現在は自動運転用のドライブコンピュータと,NVIDIA自社ゲームプラットフォーム「SHIELD」用に開発を進めている状態だ。
後者は必ずしもうまくいっているとは言えないだけに,ゲーム分野でNintendo Switchがサポート対象に加わるというのは,NVIDIAにとっても大きい。
ビデオの後半で,Splatoonの続編らしきゲームが出てくる以上,Nintendo Switch側に加速度やジャイロといったIMU(Inertial Measurement Unit,慣性計測装置)機能くらいは搭載されると思うが。
(部分引用)
Switchは、同機専用に再設計されたNvidia Tegraプロセッサーを使っている。その強力なモバイルプロセッサーは、Nvidiaのモバイルゲーム機SHIELDで使われている。
SHIELDにはOS(Android)があり、モバイル-ファーストで作られたゲームと、PCやそのほかのゲーム機からの移植作品の、両方プレイできる。そして家庭でも出先でも同じく良質のゲーム体験を、SHIELDとSwitchは追及している。
家庭と外が両立するハイブリッドゲーム機に、ゲーマーは何を望むのか。
Nvidiaはその探求に多くの時間と労力を割いた。
SHIELDのさまざまな変種やモード、姿形(置き方)が、そのことを物語っている。最初のSHIELDポータブルは電話機能のないAndroidフォーンで、コントローラーハードウェアと合体されていた。
次のSHIELDタブレットはSwitchに近いものになり、そしてSHIELDセットトップボクスは、今でもAndroid TVの突出的スターだ。
そうやって進化してきたSHIELDは、いずれも仕上がりが良く、PCや従来のゲーム専用機でゲームを楽しんできたゲーマーがモバイルに感じる不満を、一掃していた。
そして今度のNintendo Switchは、SHIELDのニッチな成功から多くを学び、その客層を大きく広げようとしている。
Switchが実現しているリビングルームとポータブルのシームレスな移行は、SHIELDがやろうとしていたことの続編のようだ。
それをTegraが動かしていることは、単なるモバイル体験の拡張ではない、本格的なゲーム専用機体験を実現するにふさわしい。
ふつうの消費者から高度なゲーマーまで、多様なユーザー層を抱えるエコシステムという点では、NintendoはNvidiaよりも有利だし、ゲームに関する技術的蓄積も厚い。
表面的には、NvidiaとNintendoの関係は、部品の提供業者とそのユーザーにすぎないが、NVDAが提供したのは部品だけでなく、将来の大きなビジョン、だったのではないか。
てそのビジョンを実体化したのが、Nintendoの、リビング/モバイルハイブリッド機なのだ。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
任天堂のゲーム機の中核CPUチップは従来カスタム設計なので、今回もチップレベルから物理的にカスタマイズされたTegraの可能性は高い。
ただし、NVIDIAのIPの流用となると見られるので、セミカスタム的なアプローチだと推測される。
2017年3月という発売時期を考えると、20nmプロセスは考えにくく、少なくとも製造プロセスは16nm FinFETプロセスの可能性が高い。
ファウンダリ側も、20nmプレーナプロセスは短命で、16/14nm FinFETプロセスへと切り替えている。だとすれば、2016年から2017年のゲーム機は、いずれもFinFETプロセスに突入することになる。
ちなみに、2017年なら10nmプロセスも量産が立ち上がっているが、ゲーム機の場合は発売前にゲーム開発を進めなければならないため、少量生産を先行させる必要があり、最先端プロセスは使いにくい。
NVIDIA自身のTegra SoCは、20nmプロセスが「Tegra X1」(Erista:エリスタ)。
CPUコアがARMのCortex-A57クアッドとCortex-A53クアッドの合計8コア。
GPUコアがMaxwellアーキテクチャで256積和算ユニット構成、
メモリがLPDDR4x64となっている。
16nmプロセスは、一般に「Tegra X2」(またはTegra P1とも)と呼ばれている「Parker」。
CPUコアがNVIDIA開発のDenver2デュアルコアとCortex-A57クアッドコア。
GPUコアがPascalアーキテクチャーで256積和算ユニット構成、
メモリがLPDDR4x128となっている。
Tegra X1はモバイル向けをある程度意識して設計されているが、Parkerの方は、車載向けにある程度傾いた設計となっている。同じTegraの名前を冠していても、性格が異なるSoCだ。
Tegra X1の構成は、2017年のゲーム機としては貧弱だ。なぜなら、2017年にはモバイル機器が10nmプロセスに突入するからだ。しかしParkerの構成は、Switchのような半モバイル的な使い方をするには、やや構成が高電力側に偏っている。その点からも、任天堂のチップがカスタム化されている可能性は高い。
任天堂のSwitchは、Tegraを採用したことで命令セットアーキテクチャ(ISA)はARMv8-Aとなることは確実だ。ARMv8-Aは、64-bit拡張されたARMのA系列命令セット(ARMはCortex-A/R/Mで命令セットが異なる)だ。
ARMv8-Aは、ゲーム機では新しいISAだが、スマートフォンやタブレットのCPUコアはほとんどがARMv8-Aなので、馴染みは深い。ちなみに、ARMv8-A命令のCPUは、64-bitと32-bitの両モードを実行できる。
ARM命令自体は、任天堂プラットフォームでは馴染みがある。
3DSは、デュアルコアのARM11とシングルコアのARM9を搭載していた。ARM11はARMv6命令セットアーキテクチャだ。
その前身となるニンテンドーDSも、ARMv5命令世代のARM9コアだった。過去の任天堂ハードのARMコアは、いずれも32-bit命令アーキテクチャの世代だ。
同じARM命令系でも、64-bit拡張されたARMv8-Aは、任天堂ハードでは初めてとなる。
ちなみに、PS VitaもARMのCortex-A9クアッドコアで、これも32-bitのARMv7-A命令のコアだ。
ゲーム機としては、64-bit ARM命令が新しい点となる。ARM命令セットは、ARMv8-Aの64-bitで命令の仕切り直しとなっており、命令体系が大きく異なる。
従来のARM系命令(ARMやThumbなど)は特殊な命令を含むが、ARMv8の64-bit命令は“普通のRISC”風に切り替わっている。
ゲーム機のCPUアーキテクチャは、前世代はPowerPC系が占め、その前はMIPSとx86、PowerPCが併存した。しかし、今はx86(PS4とXbox One)とARMv8という、コンピューティングデバイスの市場と同じ構図になりつつある。
NVIDIAの現在のTegra系SoCのCPUコアは、いずれもARMv8命令セットだが、2系統のコアがある。ARM開発のCortex-AシリーズCPUコアと、NVIDIA開発のDenver系コアだ。SwitchのCPUコアについては、そのどちらの系統がメインCPUコアとして搭載されるかがポイントとなる。
ARMは現在方針として、一定以上の性能を持つCPUコアは自社IPとして提供していない。ARM命令セットの高性能なCPUコアが欲しいメーカーは、ARMからアーキテクチャルライセンスを受けて、ARM命令互換のCPUコアを開発している。
同じARMv8命令が走るが、マイクロアーキテクチャが全く異なり、ARM自身のコアよりも高性能だ。NVIDIAのDenverはそうしたコアの1つで、AppleやQualcomm、Samsungも同様に自社で高性能CPUコアを開発している。
NVIDIAのDenverは中でも特殊なマイクロアーキテクチャを取っている。Denver系CPUは、ARM命令を、命令デコーダで2命令/サイクルで、内部マイクロ命令に変換。
マイクロ命令をそのまま実行するだけでなく、何度も実行されるパスでは、マイクロ命令の最適化を行なう。最適化によって、最大7並列まで並列化されたマイクロ命令は最適化キャッシュ(オンメモリ)に格納、次回から最適化された並列度の高いコードを実行する。最適化によってピークで7+のIPC(Instruction-per-Clock)を達成できる。
かつてのTransmeta CPUの、ハードウェアアシスト版のようなアーキテクチャとなっている。
Denverはピークのシングルスレッド性能は高いが、ややクセのあるアーキテクチャだ。また、Denver系はARM自身のCPUコアと比べるとダイエリアもかなり大きい(これはAppleなども同様)。
それに対して、ARMのCortex-A57やその後継のCortex-A72は、もっと一般的なアウトオブオーダCPUコアの設計を取っている。
3命令デコードで、ハードウェアスケジューリングで並列実行する。
Tegra X1では、Cortex-A57とCortex-A53を組み合わせているが、これは、低負荷時には低電力のCortex-A53に切り替えることで消費電力を抑えるためだ。
Parkerでは、NVIDIAはDenver2とCortex-A57を組み合わせているが、これはメインターゲットが車載であるため、低電力にそれほどフォーカスしなくていいためだ。モバイル的な利用では、Cortex-A53のような省電力コアと組み合わせることが望ましい。
ゲーム機としてのSwitchが、NVIDIAのCPUコアをどのように組み合わせるのかが興味深い。性能と電力はトレードオフであるため、このあたりの設計選択は、任天堂が据え置き的な利用を中心に考えているか、タブレットゲーム機的な利用を中心に考えているかによって分かれる。
GPUコアはTegra X1がMaxwell世代、ParkerがPascal世代となっている。しかし、グラフィックス向けのPascalは、Maxwellと非常にマイクロアーキテクチャが似通っているため、どちらであっても差は少ない。
NVIDIAはMaxwell世代から、PC向けGPUとモバイル向けGPUのマイクロアーキテクチャを統合した。それまでは、世代遅れのGPUコアがモバイルに搭載されていたが、Maxwellからずれがほとんどなくなった。
Maxwellアーキテクチャでは、GPUコアのバンドルであるSM(Streaming Multiprocessor)の中に、128個のCUDAコア(FP32浮動小数点演算ユニット)が搭載されている。これは、グラフィックス向けのPascalも同様だ。
Maxwellで見ると、デスクトップ版との大きな違いは、FP16アクセレーションが加わっていること、シェアードメモリが64KBとやや少ないことなど。実際には、物理設計やトランジスタなどが異なっているが、マイクロアーキテクチャ的な違いは少ない。
Tegra X1ではGPUコアの中に2個のSMがあり、合計で256個のCUDAコが搭載されている。Parkerも256 CUDAコアとなっているので、同様の構成だとみられる。
任天堂がモバイル並の消費電力とダイエリアに抑えようとするなら、GPUコアの規模はTegra X1/Parkerと同様に256 CUDAコアになるだろう。しかし、電力より性能を優先するなら、コア数を増やす可能性がある。この辺りの選択は、任天堂の想定するSwitchの使い方によって異なってくる。
ちなみに、Tegra X1は256個のCUDAコアをピーク1GHzで動作させること512GFLOPSのFP32演算性能を実現する。FP16の場合は、その倍の1TFLOPSとなる。
Parkerの場合は、さらに周波数を上げることで750GFLOPS(FP32)/1.5TFLOPS(FP16)となる。
モバイルでのグラフィックスの最大の性能制約要素はメモリ帯域だ。実は、Tegra X1とParkerでは、この部分が大きく異なっている。
どちらもLPDDR4をメモリとして採用しているが、Tegra X1はメモリインターフェイスがx64(64-bit)、Parkerはx128(128-bit)となっている。
メモリ帯域は3.2Gbpsの転送レート時に、Tegra X1が25.6GB/sec、Parkerが2倍の51.2GB/secとなる。
50GB/secクラスのメモリ帯域は、デスクトップPCならDDR4-3200のデュアルチャネル(128-bit)インターフェイス並の帯域となる。
もちろん、メモリインターフェイスが2倍の方がインターフェイスの電力消費は大きい。また、DRAM個数も多くなるため、DRAM自体の消費電力も響く。
ただし、2017年のSwitchにはLPDDR4Xという選択肢もある。LPDDR4Xでは、I/O電圧を下げることで、LPDDR4よりさらに電力を下げている。その分、同じ電力消費で、メモリ帯域を広げることが可能だ。
モバイルメモリには、このほか、スタックドのWide I/O2もあるが、こちらは高価格になるため、普及しておらず、価格コンシャスなゲーム機には使うことができない。
ちなみに、LPDDR系もDDR系と比較すると高価格であるため、ゲーム機にとってはコスト的に厳しい。
NVIDIAは任天堂のSwitchに対して、SoCハードウェアを提供するだけでなく、ローレベルの新API「NVN」も提供する。また、そのほかのツールやライブラリなども提供するという。NVIDIAのAPIは意外に聞こえるかも知れないが、NVIDIAはVulkanの前に、Googleと新APIを策定して普及させようとしていた。実は、AMDだけでなく、NVIDIAもAPIには熱心に取り組んでいる。
任天堂がNVIDIAを採用したことで、ゲーム機のアーキテクチャはさらに錯綜してきた。これまでは、任天堂のWii UがAMDアーキテクチャであったため、AMDは現行世代のゲーム機のグラフィックスは全てAMDと言い切れた。
前世代では、PS3がNVIDIA、Xbox 360がAMD、WiiがAMD(ATI)系だが独自アーキテクチャ。それが、今世代では、PS4系とXbox One系がAMD、SwitchがNVIDIAとなる。さらに遡ると、PS2は独自アーキテクチャ、初代XboxはNVIDIA、GAMECUBEはATIだった。世代毎に入れ替わるところが面白い。
タブレット+コントローラのモバイルゲーム機にも、大画面TVに出力する据え置きゲーム機にもなるというSwitchのコンセプトは、どことなく、NVIDIAのSHIELD Tabletを思い起こさせる。SHIELD TabletはTegra K1ベースだったためか、コンセプト的にも似通ったものを感じさせる。実際には、アタッチするコントローラのため、操作の雰囲気はかなり変わるが、半導体チップへの制約(消費電力)という面では似てくる。