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

世界最速スパコン中国「神威太湖之光」のCPU「SW26010」の概要

~PS3の「Cell B.E.」と似た設計

 半導体チップの国際カンファレンス「COOL Chips 20」が、4月19日より横浜情報文化センターで開催されている。COOL Chipsでは、世界の最先端のチップ技術が発表されるが、今回、世界最速のスーパーコンピュータ「Sunway TaihuLight (神威・太湖之光)」のプロセッサ「Shenwei 26010 (SW26010)」のコア概要が初めて明かされた。

中国開発の独自アーキテクチャCPUを積んだSunway TaihuLight

 Sunway TaihuLightは、中国のNational Supercomputing Center in Wuxiのスパコンだ。2016年6月のスパコンランキングTOP500でトップとなり話題をさらった。

 ピーク性能は125 PFLOPS、Linpackで105 PFLOPSと、初めての100 PFLOPSクラスのスパコンだ。Sunway TaihuLightの重要なポイントは、独自開発のプロセッサを採用した点にある。

 Sunwayのスパコンシリーズでは、独自のプロセッサが使われている。プロセッサを開発したのは、中国のShanghai High Performance IC Design Center。中国アーキテクチャの中国産プロセッサによるスパコンだ。

 TaihuLightの前の世代の「Sunway BlueLight」には、16コアの「Shenwei 1600」が搭載された。今回のTaihuLightには、260コアの「Shenwei 26010 (SW26010)」が搭載されている。独自開発というだけでなく、CPUマイクロアーキテクチャが非常に特殊である点も注目されている。

Sunway TaihuLightの概要
Sunway TaihuLightスパコンの全体構成
Cool Chipsで明らかにされたSunwayのプロセッサ開発の歴史
独自プロセッサを搭載するSunwayのスパコンの歴史

 SW26010プロセッサの特徴は、シンプルなスモールコアのメニーコア構成である点と、複数種類のコアによるヘテロジニアスマルチコア構成である点だ。

マイクロアーキテクチャをシンプルにしてコア数を増やす設計思想

PS3の「Cell B.E.」と似ているSW26010

 SW26010プロセッサは、ソニー製家庭用ゲーム機「PLAYSTATION 3(PS3)」のCPUである、「Cell Broadband Engine(Cell B.E.)」との類似性がよく言われる。

 今回、SW26010のよりディテールが明らかになったことで、Cell B.E.との類似性と相違点の両方が、よりクリアになった。

 SW26010は、マネージメントを行なう汎用的なメインプロセッサと、ベクターユニットを備えた多数の演算プロセッサのアレイでクラスタを構成する。演算プロセッサはデータキャッシュを持たず、ソフトウェア制御のスクラッチパッドメモリを備える。PS3ゲームプログラマにとっては、馴染み深いアーキテクチャだ。

中国で初めての自国産メニーコアプロセッサ

 かつてPS3をベースにしたスパコンがあったので、スパコン用のSW26010が似たような構成を取るのも不思議ではない。ゲームプログラミングとスパコンハックは近いところにあると言われることがあるが、SW26010はそれを象徴するようなアーキテクチャとなっている。

 ただし、時代とプロセス技術の違いから、Cell B.E.の9コアに対して、SW26010は260コアとなっている。また、プログラミングでは「OpenACC」をサポートし、これも時代のおかげだが、よりフレンドリーなモデルとなっている。Cell B.E.が進化していれば、SW26010に近い構成になっていたかも知れない。

3種類のプロセッサを搭載するSW26010

 細かく見ると、SW26010は3種類のプロセッシングエレメント(Processing Element: PE)、言い換えればCPUコアを持っている。マネージメントコア「MPE (Management Processing Element)」、演算コア「CPE (Computing Processing Element)」、メモリアクセスコア「IMPE (Intelligent Memory Processing Element)」だ。

 260コアとカウントしているのは、このうちMPEとCPEの数だ。

Cool Chipsで公開されたSW26010の全体構成
ISC16で公開されたSW26010の全体構成

 SW26010全体は、4つのコアグループで構成される。演算プロセッサであるCPEは、64プロセッサずつ「CPEクラスタ(CPE Cluster)」に構成されている。CPEクラスタが4個で、SW26010全体で256コアのCPEを搭載する。

 各CPEクラスタは、1個のMPEによってマネージされる。1個のMPEに対して、64個のCPEという比率となっている。言い換えれば、1個のMPEから、64個のCPEにタスクがオフロードされる。

 SW26010のCPEクラスタは8x8のメッシュとなっている。クラスタは、クラスタコントローラ経由でオンチップネットワークに接続されている。クラスタコントローラには、64コアで共有するL2キャッシュも内蔵されている。

CPEクラスタの構成

通常のCPUアーキテクチャのMPE

 MPE (Management Processing Element)は、Cell B.E.でいえば「PPU (Power Processor Unit)」にあたるマネージメント用のCPUコアだ。

 一般的なCPUコアの構造をしており、3命令イシューのアウトオブオーダ実行スーパースカラコア。命令とデータの両方を、L1とL2の階層でキャッシュする。OSやランタイムなど、コントロール系やコミュニケーション系のプログラムを走らせることが主目的となっている。

 MPEは、64-bit RISC系の独自命令セットを採用。ユーザーモードとシステムモードの両方をサポート。Cool Chipsでの発表によると、実行パイプは3本で、1ユニットが、メモリ命令や分岐命令などのハンドリング、残りの2ユニットが整数と浮動小数点の演算パイプとなっている。

 MPEは、256-bitのSIMD (Single Instruction, Multiple Data)ユニットを2ユニット備えるので、2パイプに256-bit SIMDが1ユニットづつ割り当てられていると見られる。64-bit倍精度浮動小数点演算で、16オペレーション/サイクルとなる。

 命令実行は、命令単位でのアウトオブオーダ。キャッシュはL1命令キャッシュが32KB、L1データキャッシュが32KB、L2キャッシュが256KB。

Cool Chipsで公開されたMPEのブロック図
ISC16時のMPEとCPEの説明スライド

Cell B.E.のSPUと共通する部分があるCPE

 CPE(Computing Processing Element)は、Cell B.E.でいえば「SPU(Synergistic Processor Unit)」にあたる、演算用のCPUコアだ。MPEと比べると、ずっとシンプルなスモールコアだ。

 2命令イシューで、L1命令キャッシュは備えるが、L1データキャッシュは持たない。256-bitのSIMD(Single Instruction, Multiple Data)ユニットを備えて、並列化された演算タスクを実行することに最適化されている。

 CPEの命令セットも、64-bit RISC独自命令。ユーザーモードのみサポートする。アウトオブオーダ実行だが、命令単位で自由にアウトオブオーダができるわけではない。命令ストリームをコードブロックに構成し、コードブロックベースでアウトオブオーダ実行が可能な場合に実行する。

 16KBのL1命令キャッシュを持つが、L1データキャッシュがなく、64KBのスクラッチパッドメモリ(Scratch Pad Memory: SPM)を備える。このメモリは、LDM(ローカルデータメモリ: Local Data Memory)と呼ばれ、ソフトウェアマネージドで、プログラマに対して露出している。このLDMのデータロカリティを有効に使うことが、SW26010のパフォーマンス最適化のカギとなりそうだ。

 CPEの重要な特徴として、オンチップレジスタコミュニケーションがある。CPE間でレジスタ内容のダイレクトなフォワードが可能となっている。

 メモリ階層的には、CPEクラスタで共有するL2キャッシュも備えるが、これは64 CPEコアの共有だ。CPEのレジスタコミュニケーション機能では、レジスタから直接オンチップネットワーク経由で、ほかのCPEにレジスタ内容を送ることができる。メモリ階層を経由しない。レジスタコミュニケーション命令が設定されており、ポイントツーポイントまたはマルチキャストの両方がサポートされている。ネットワークプロセッサなどに見られるようなアーキテクチャだ。

CPE間のレジスタコミュニケーション

 CPEの実行パイプは2本で、1本はメモリアクセスや分岐などコントロールを、もう1本が演算となっている。演算パイプは、MPEと同様に256-bit SIMDユニットだ。

 ちなみに、ゲーム向けのCell B.E.は32-bit単精度浮動小数点演算に最適化されていたので、FP32x4の128-bit SIMDだった。それに対して、SW26010はスパコン向けなので、64-bit倍精度浮動小数点演算に最適化されており、FP64x4の256-bit SIMDとなっている。64-bit倍精度浮動小数点演算では、8オペレーション/サイクルとなる。

Cool Chipsで公開されたCPEのブロック図

単体プロセッサでGPU並の性能を発揮

 IMPE (Intelligent Memory Processing Element)は、SW26010の3つ目のプロセッシングユニットだ。CPEクラスタに付属するメモリコントロールユニットと統合され、メモリアクセスオペレーションをターゲットとしたプロセッサだ。

 シングルイシューの命令ユニットのインオーダ実行コアで、各実行パイプにバッファがある。データシャッフルネットワークがあり、異なるレイアウトのメモリアクセスオペレーションに対して、メモリアクセス前に対応できるようになっている。

Cool Chipsで公開されたIMPEのマイクロアーキテクチャ

 SW26010は、単体プロセッサで3.06 TFLOPS (64-bit倍精度浮動小数点演算)と、GPU並の演算性能を達成する。

 動作周波数は1.45GHzで、256個のCPEがそれぞれ256-bit(64-bit x4way)の積和算が各サイクルに可能、4個のMPEが2ユニットの256-bit(64-bit x4way)の積和算が各サイクルに可能。合計で3.06 TFLOPSとなる。Sunway TaihuLightシステム全体では、40,960ノードとなり、ピーク性能は125PFLOPSとなる。

Sunway TaihuLightのスペック
SW26010のスペック
極めて高いワットパフォーマンス

 演算性能は極めて高いSW26010とSunway TaihuLightだが、メモリ帯域はSW26010で136.5GB/sと非常におとなしい。GPUが500GB/sを超えていることを考えると、バイト/FLOPS比では不利となる。

 また、ディープラーニングで脚光を浴びている低精度演算もサポートしておらず、目的とユースケースをある程度限定したスパコンと言える。ただし、ディープラーニングを視野に入れた研究開発も行なっているようだ。

National Supercomputing Center in Wuxiの最近の発表の中では、ディープラーニング向けのSunway Chipのプランの可能性も示唆されている