後藤弘茂のWeekly海外ニュース

NVIDIAのTegraを採用する任天堂の新ゲーム機「Nintendo Switch」

カスタムTegra SoCを搭載するSwitch

 任天堂が、新ゲーム機「Nintendo Switch」にNVIDIAの「Tegra」を採用する。任天堂が“NX”と呼ばれていた次世代機に、Tegraを採用するというウワサは、今年(2016年)の春頃から、半導体業界に飛び交っていた。チップ系のカンファレンスに行くと必ずそのウワサを聞かされる状況だった。

 NVIDIAによると、任天堂が採用するのはカスタム版のTegraとなっている。シリコンレベルからカスタマイズされたチップなのか、既存のTegraの機能を一部無効にするなどしたチップなのかはアナウンスされていない。しかし、任天堂のゲーム機の中核CPUチップは従来カスタム設計なので、今回もチップレベルから物理的にカスタマイズされたTegraの可能性は高い。ただし、NVIDIAのIPの流用となると見られるので、セミカスタム的なアプローチだと推測される。

 任天堂がNVIDIAを選んだことは、意外と思えるかも知れない。しかし、NVIDIAは、実は過去の任天堂ゲーム機開発の際も、任天堂とゲーム機のチップ提供で接触している。NVIDIAの技術スタッフが任天堂を訪れ、自社技術について説明を行ない、任天堂も検討を行なった。任天堂からしてみれば、可能性のある技術を検討するのは当たり前で、これまでも、NVIDIAと没交渉ではなかった。

 NVIDIAの任天堂へのアプローチが、過去のゲーム機世代で実を結ばなかった理由はいくつかある。ある業界関係者は、理由の1つとして、任天堂がゲーム機のチップを開発するにあたって、日本の半導体メーカーが間に入る仕組みを取っていたことを挙げる。実際のところは分からないが、任天堂とNVIDIAで折り合う点ができたと見られる。

 ゲーム機のチップの開発では、パートナーとなりうる企業の顔ぶれも変わってきた。任天堂がかつて組んだ巨人IBMは、もはやパートナーとはなりえない。一方、モバイルSoCを搭載したモバイル機器が強力なゲームプラットフォームとなりつつある。その中で、モバイルとPC/据え置きの両方に足を突っ込んでいるNVIDIAが、任天堂のSwitchのパートナーとなったのは、自然な流れとも言える。

依然として謎のSwitchのプロセス世代とマイクロアーキテクチャ

 任天堂のSwitchがカスタムTegraだということは分かったものの、その内容は、まだベールに包まれている。カスタムTegraが、どの世代のTegraをベースとしているのかは、まだ分かっていない。CPUとGPUのマイクロアーキテクチャの世代と、製造プロセス技術の世代のどちらも不明だ。

 NXのチップの情報としては、夏前には、Tegra X1をベースにしたチップだという報道が流れた。Tegra X1は、NVIDIAのSHIELDゲームコンソールに搭載されていたチップで、TSMCの20nmプロセスで製造されていた。しかし、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となっている。

20nmのTegra X1の大まかな構成
16nmのParkerの大まかな構成
Tegra X1とParker、さらに前世代のTegra K1の比較

 Tegra X1はモバイル向けをある程度意識して設計されているが、Parkerの方は、車載向けにある程度傾いた設計となっている。同じTegraの名前を冠していても、性格が異なるSoCだ。Tegra X1の構成は、2017年のゲーム機としては貧弱だ。なぜなら、2017年にはモバイル機器が10nmプロセスに突入するからだ。しかしParkerの構成は、Switchのような半モバイル的な使い方をするには、やや構成が高電力側に偏っている。その点からも、任天堂のチップがカスタム化されている可能性は高い。

CPU命令セットアーキテクチャはARMv8に

 CPUコアについては、任天堂の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コアとして搭載されるかがポイントとなる。

ParkerのCPUコア構成

NVIDIA独自開発のARM命令CPUコアDenver

 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なども同様)。

Denverのブロック図とダイナミックコード最適化

 それに対して、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コアを搭載するか

 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のMaxwell GPUコアアーキテクチャ
Tegra X1のMaxwellのSM(Streaming Multiprocessor)アーキテクチャ
Tegra X1のMaxwellのSM(Streaming Multiprocessor)ブロック図
PDF版はこちら

 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)となる。

メモリはParker並のインターフェイスとするなら50GB/sec以上

 モバイルでのグラフィックスの最大の性能制約要素はメモリ帯域だ。実は、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系と比較すると高価格であるため、ゲーム機にとってはコスト的に厳しい。

モバイル向けメモリの帯域幅
PDF版はこちら

NVIDIAが新APIとツール/ライブラリも提供

 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ベースだったためか、コンセプト的にも似通ったものを感じさせる。実際には、アタッチするコントローラのため、操作の雰囲気はかなり変わるが、半導体チップへの制約(消費電力)という面では似てくる。