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

Intelの次世代マイクロアーキテクチャ「Skylake」

CPUコア回りのレイアウトが大きく変わったSkylake

 Intelは次世代CPUマイクロアーキテクチャ「Skylake(スカイレイク)」について、アーキテクチャの概要をIntel Developer Forum(IDF) 2015で公開した。今回のIDFでは、基調講演ではSkylakeに触れず、3D XPointメモリをフィーチャ。CPUコアの重要度を一段下げたような印象の演出を行なった。しかし、技術セッションでは、Skylakeの概要は、特にグラフィックス回りを中心に深く掘り下げている。

 Intelは段階的にSkylakeのベールを剥がしており、今回のIDFでは、CPUのマイクロアーキテクチャの概要は最小限の公開に留められ、GPUマイクロアーキテクチャや省電力機能の公開にフォーカスされた。一気に公開するのではなく、部分的に明かして行くという、"じらし"手法を取っている。

 Skylakeも、従来通り、CPUコアとGPUコア、そしてかつてのノースブリッジ機能にあたるDRAMコントローラやI/O回りをシステムエージェントとして統合した半SoC(System on a Chip)となっている。内部インターコネクトも、帯域は拡張されたが従来通りリングバスだ。CPUコアやGPUコア以外のユニットの大きな違いとしては、カメラデータ処理の(Image Signal Processor)を統合したこと。

 Skylakeのダイ(半導体本体)を見ると、CPUコアの周囲をぐるっとLL(Last Level)キャッシュSRAMが囲っている。通常のCPUコアレイアウトでは、見慣れないSRAMの配置だ。これは、CPUコアの熱を効率的に分散するための工夫だと見られる。

LLキャッシュSRAMがCPUコアを取り囲んだSkylakeのCPUコアレイアウト

 プロセスが微細化すると、電力密度が高まる。回路面積は、1世代のプロセス微細化で50%にまで縮小するが、キャパシタンスは70%台にまでしか下がらず、電圧はほんの数%しか下がらない。電力はキャパシタンス×電圧の2乗×動作周波数に比例するため、微細化によって面積当たりの電力密度が上がってしまう。

 こうした技術上の理由があるため、プロセッサでは、微細化とともに、ダイ上でいかに熱を効率的に分散するかが重要となる。そのため、各社ともCPUコアの配置を工夫している。Intelの場合は、相対的にコールドなSRAMを、相対的にホットなCPUコアの回りに配置するという解決策だったようだ。

 Skylakeでは、Broadwellまでの世代と異なり、CPUコアとLLキャッシュが1列ではなく、2列となっている。しかし、それ以外の要素はBroadwellまでの世代と大きくは変わらず、ダイの片側にチップセット機能が集中し、逆サイドにGPUコアがあり、その間にCPUコアとLLキャッシュが挟まれ、それらをリングバスが繋いでいる。従来のIntel CPU設計のモジュールパターンを踏襲している。

バッファを深くして並列性を高めたCPUコア

 CPUコアのマイクロアーキテクチャも、これまでの流れを踏襲している。概要だけ簡単にさらうと、基本のパイプラインはHaswell/Broadwell世代をベースとしながら拡張を加えて、IPC(Instruction-per-Clock)の向上と動作周波数の向上を図っている。Haswell世代では、命令スケジューラから実行ユニットへの命令発行ポートを増やしたが、今回は、その前の命令デコーダ回りに拡張が加えられている。

 また、フロントエンドでは分岐予測機能も強化したと説明しているが、毎回のように分岐予測アルゴリズムをどうしているのかという説明はない。分岐予測はブラックボックスのまま、強化され続けている。また、アウトオブオーダウインドウは、Skylake世代でもさらに拡張された。ウインドウを拡張した分、スケジューリングに余裕を持たせるためのスケジューラのエントリも拡張され、レジスタ競合を避けるための物理レジスタ数も拡張されている。シンプルに言えば、より多くの命令を並列化しやすくなった。

 ロード/ストアでは、プリフェッチのインテリジェンスが高められた。不要なプリフェッチは、帯域と電力のムダになるため、不要な時はプリフェッチを行なわず、必要な時だけオンになることが理想だが、そのためのアルゴリズムが改良された。ストアバッファも強化された。また、キャッシュ管理の命令が追加された。

またもや大幅に強化されたGPUコア

 GPUコアについてはかなり大きなアーキテクチャ拡張が行なわれた。まず、各CPUコアの実行ユニットが、SIMT(Single Instruction, Multiple Thread)型のスカラ実行のみになった。また、Broadwell世代で導入されたものの、ほとんど宣伝されなかったCPUコアとGPUコアの間の共有仮想メモリとキャッシュコヒーレンシが、機能強化され、大々的に押し出された。ファイングレインのタスクスイッチングである、GPUのプリエンプションも、スレッドを実行途中で切り替えが可能になった。32-bit単精度演算ユニットを8個備えるEUを最大で72ユニット備えることで、最高性能はついに1TFLOPSを越えて、1,152GFLOPSとなった。詳細は別記事で紹介するが、GPUコア部分の強化は多岐に渡っている。

 Intelグラフィックスはもともと4-wayのSIMD(Single Instruction, Multiple Data)ユニットだった。128-bitのSIMDユニットを、32-bit単精度だけでなく、16-bit半精度や、各ビット幅の整数演算に分割して使用可能な仕様となっていた典型的なSIMD型アーキテクチャだ。しかし、今回のSkylakeのGPUコアからは、NVDIMMやAMDのGPUコアと似たようなスカラ実行型のみに変わった。GPU業界のトレンドに沿ったアーキテクチャへの変更だ。

 また、Skylake GPUコアは、共有仮想メモリとキャッシュコヒーレンシ、ファイングレインのタスクスイッチングが揃ったことで、GPUコンピューティングに非常に向いたアーキテクチャとなった。ちなみに、共有仮想メモリはAMDのAPU(Accelerated Processing Unit)でも実装されており、プリエンプションもAMDがCarrizoで実装した技術とほぼ同様だ。つまり、Skylake GPUコアは、HSA(Heterogeneous System Architecture)相当のGPUコンピューティング向け機能を備えることになる。加えて、CPUコアとGPUコアのキャッシュコヒーレンシはIntelだけの実装となる。

コンピューティング系の機能が強化された

コンピュートとグラフィックスのどちらの機能も強化したGPUコア

 このように、IntelはSkylake世代でGPUコアのコンピューティング機能を大幅に強化した。Intelは、GPU型の並列コンピューティングのソリューションとして、一時はIntelグラフィックスではなく、Larrabee(ララビ)を据えようとした。Skylake世代も、元々の計画ではLarrabeeアーキテクチャの並列コンピューティングコアを備えるはずだった。ところがLarrabee系アーキテクチャはXeon Phi系列だけになり、余波でIntelグラフィックスのGPUコンピューティング対応は遅れた。しかし、Skylake世代で、機能的には追いつき追い越す段階にまで来たと言えそうだ。

 また、GPUコンピューティングの機能を強化する一方で、グラフィックス固定機能も軒並み強化されている。テクスチャユニット、レンダーバックエンド、テッセレータなどが強化された。結局、ダークシリコン問題があるので、現在のCPUでは、CPUコアなどと同時にアクティブになることが少ないユニットを増やすことは、シリコン予算上問題がない。そのため、現在のCPUは固定機能を増やす傾向にある。

 eDRAMを使ったメモリ帯域拡張ソリューションはSkylakeでも提供されるが、アーキテクチャが変わった。従来はCPUコア側に格納していたキャッシュTagRAMが取り去られ、eDRAMを「メモリサイドキャッシュ(Memory Side Cache)」として使う。eDRAMサポートCPUのダイエリアを抑えることが可能になり、これまでのように、コストの高い大型ダイCPUだけしかeDRAMをサポートできない状況はなくなった。その結果、SkylakeではeDRAMサポートのスキューが拡大された。

 このほか、Skylakeの大きな特徴はセキュリティ向けの新命令などセキュリティ機能、そして、大幅に強化した省電力制御。Skylakeは、Haswell世代の「FIVR(Fully Integrated Voltage Regulator)」という、省電力機能の切り札をなくした。そのため、別な形での省電力化を図らなければならなかった。そうした理由から、省電力の制御は、特に力が入っている。

(後藤 弘茂 (Hiroshige Goto) E-mail