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

CPUの新しいトレンド「ヘテロジニアスマルチコア」




●ヘテロジニアスマルチコアがトレンドに

マルチコア時代のCPU技術トレンド
PDF版はこちら

 Cellプロセッサは、9個のCPUコアを搭載したマルチコアCPUだ。なかでも重要なのは、演算処理を担当する8個の「SPE(Synergistic Processor Element)」と呼ばれるプロセッサ群だ。SPEは、1命令で複数データに対する処理を行なうことができる「SIMD(Single Instruction, Multiple Data)」型のプロセッサで、ストリーム型の処理で強力な性能を発揮する。

 各SPEにはLocal Storeと呼ばれる256KBのメモリがある。これはL2キャッシュではなく、いわゆるスクラッチパッド的に、プログラマ側が明示的に自由に使うことができるメモリだ。Local Storeのメモリ空間は、SPE占有のローカルメモリ空間となっている。SPEのロード/ストア命令は、このローカルアドレススペースの中で実行され、SPEが、システムメモリにアクセスする場合にはDMAを経由する。

 SPEでのプログラム実行は、DMAでLocal Storeにデータ&プログラムを転送して行なう形となる。元々、Cellの基本的な考え方は、プログラムをソフトウェアCellと呼ばれる、プログラムピースとデータを格納したオブジェクト形状にして扱う。そのため、256KBに収まる程度のプログラムが始めから想定されていると見られる。

 Local Storeでは、キャッシュと異なりコヒーレントを取らない。そのため、Cellではチップ全体に渡って、キャッシュコヒーレンシを常に保つ必要がない。これも、マルチコアのオーバーヘッドを減らす重要な要素だ。

 Cellでは、各要素はElement Interconnect Bus(EIB)と呼ばれる広帯域のリング型バスで接続されている。SPEはDMA転送でEIBを経由して、システムメモリなどにアクセスする。DMAリクエストは、最大で16トランスファをオンザフライで発行することができる。


●コンテンツを保護する特殊モードを装備

 Cellプロセッサの重要性は、単に、ソニーグループ+IBM+東芝の新CPUでPlayStation 3にも搭載されるという点だけではない。アーキテクチャ上で非常に重要なのは、Cellが、CPUの最新技術トレンド「ヘテロジニアス(Heterogeneous:異種混合)マルチコア」を先取りしている点だ。

 ヘテロジニアスマルチコアCPUは、異なるタイプのCPUコアを複数個搭載したマルチコアCPUだ。これは、同じアーキテクチャのCPUコアを複数搭載する現在の主流マルチコアCPUとは大きく異なる。そして、Cellは、マスのコンピュータマーケットを狙う汎用型CPUの中では、現状で唯一のヘテロジニアスマルチコアCPUだ。

 もっとも、実際には、ヘテロジニアスマルチコアという呼称は定着したものではない。Cellのような非対称型のマルチコアCPUには、まだ定まった名称はない。しかし、最近登場したヘテロジニアスマルチコアという呼称は、まさしく本質を示しているので、ここではヘテロジニアスマルチコアと呼ぶことにしたい。ちなみに、Cellがヘテロジニアスマルチコアなら、Intelの「Pentium 4 8xx(Smithfield:スミスフィールド)」やIBMのPower4/5のような、同タイプのCPUコアを対称型に配置したCPUは「ホモジニアス(Homogeneous)マルチコア」ということになる。

 ヘテロジニアスマルチコアCPUは、ここへ来て急に脚光を浴び始めた。Cellが登場しただけではなく、さまざまな研究者・開発者が、突然、ヘテロジニアスマルチコアCPUについて語り出した。代表的なのは、Intelが今後数世代のうちに実現するとしている「メニイコア(Many-core)CPU」だ。IntelのMany-coreは、従来型の大きなスカラ型CPUコアと、シンプルで小さな(おそらくベクタ型にフォーカスした)CPUコア群を組み合わせる典型的なヘテロジニアスマルチコア型になると見られる。IntelがMany-coreについて語り出した時期は、Cellの論文の一端が業界で明らかになり始めた時期とリンクしている。構図としては、CellをIntelが追いかけていることになる。

●なぜヘテロジニアスマルチコアなのか

 なぜ、ここへ来てヘテロジニアスマルチコアがCPUのトレンドとなったのか。それには2つの理由と方向性が考えられる。(1)ヘテロジニアスマルチコアならシングルスレッド性能を維持しつつ、マルチスレッド性能を大幅に高めることができる。(2)それぞれのCPUコアを用途に最適化することで、ホモジニアスマルチコアでは実現できない高効率を実現できる。前者はIntelなどが考えている路線で、後者はCellの採った手法だ。

 Cellは、OSを走らせることを想定しコントロール系処理にフォーカスしたCPUコア「PPE(Power Processor Element)」を1個と、主にストリーム型のデータ処理に最適化した「SPE(Synergistic Processor Element)」を8個搭載する。

 「Cellは、1個のコントロールポイントプロセッサと、複数のデータポイントプロセッサを持つ。この組み合わせは、非常に効率的にプログラムを走らせることができる。データポイントプロセッサであるSPEエンジン群は、可能な限り最適化されているからだ。データポイントプロセッサはOSを走らせるようには設計しておらず、その代わりに、パワフルにアプリケーションを走らせることに特化した。その結果、データポイントプロセッサでは、性能を犠牲にすることなく、より小さく効率的にすることができた。我々はアプリケーション実行に特化した、非常に効率的なプロセッサを作った。

 一方、コントロールポイントプロセッサはOSを走らせ、プログラム実行をコーディネイトするように設計した。リソースをコーディネイトして、他のデータポイントプロセッサにワークを割り当てることで、マシン全体を効率的に走らせる。この2種類のプロセッサの組み合わせは、非常にうまく働いている」とCell開発を担当したIBMのJim Kahle(ジム・ケール)氏(IBM Fellow)は語る。

 PPEはHyper-ThreadingライクなマルチスレッドCPUで、スレッド切り替えも速く、OSのような頻繁なスレッド切り替えのある環境向けに設計されている。一方のSPEは、SIMD(Single Instruction, Multiple Data)演算に最適化されており、ストリームデータを想定して余計なキャッシュ階層も持たない。だが、SPEはスレッド切り替えが重く、少数のスレッドの処理を継続して行なうことを想定しており、OSを走らせることは想定していない。

 Cellの場合は、このようにCPUコアをあらゆる用途に対応させるのではなく、用途にある程度最適化した2種類のコアに分化させることで、CPUコアを性能を維持しながら徹底的にシンプル化した。その結果、90nmプロセスで200平方mm台のダイ(半導体本体)に9コアを集積することが可能になり、4GHz時に256GFLOPSという途方もない浮動小数点演算性能を実現できた。同じ90nmプロセスでは、IntelやAMDは同程度のダイに、たった2個のCPUコアしか搭載できない。

 Cellでは、二兎を追う単一のCPUコアを無理に作るのではなく、一兎だけを負うCPUコアを2種類用意する。それによって、二兎とも逃すことなく、確実に兎を得るのがCellと形容できるかもしれない。

●CPUの性能が行き詰まりマルチコアが必要に

 ヘテロジニアスマルチコアが浮上して来た背景には、CPUの性能向上が行き詰まってきたという事情がある。

 これまでCPUは、シングルコアで性能を引き上げるために、(1)動作周波数の向上と、(2)IPC(instruction per cycle:1サイクルで実行できる命令数)の向上にフォーカスしてきた。周波数の向上のためにパイプラインを細分化し、IPCの向上のために、動的に命令レベルの並列性(Instruction-Level Parallelism:ILP)を高めるout-of-order型実行とそれに付随するさまざまな高速化技術が導入された。

 以前にもこのコーナーで説明したが、こうした手法での性能向上は、CPUの複雑化というコストを伴っていた。現在の最先端CPUは、ILP向上のためのスケジューリング制御部分などが膨大な面積を占める。そのため、性能向上は非効率となり、ダイサイズ(半導体本体の面積)を2倍に増やしても、増やしたダイの平方根分(約1.4倍)程度しかパフォーマンスが上がらない。つまり、CPUではプロセス世代毎に2倍という「ムーアの法則」に沿った性能向上が得られていなかったわけだ。その結果、最新CPUはパフォーマンス/wattとパフォーマンス/ダイエリアが悪化した、非効率なものになってしまった。Intelはこの経験則を「ポラックの法則」と呼んでいる。

 先端CPUの性能向上がこのように非効率になってしまった理由は、シングルスレッドのスカラ演算性能を引き上げなければならないという呪縛があったからだ。x86のような命令セットの場合、多数のソフトウェア資産を抱えている。そして、既存のアプリケーションの性能を引き上げるためには、シングルスレッドで、主にスカラ演算の性能を上げる必要がある。

 だが、ここ数年はCPUのクロック向上は鈍化し、消費電力の増大から、より効率のいい性能向上が求められるようになった。そこで、CPU業界はマルチスレッド性能の向上へと向かい始めた。マルチコア化により「スレッドレベル並列性(TLP:Thread-Level Parallelism)」を向上させれば、これまでより効率よくCPU性能を上げることができるようになる。

 しかし、ここにも問題があった。IntelやAMDはシングルスレッド性能も維持するために、従来のシングルコアCPUのコアを再利用してマルチコアを実現した。そのために、消費電力やダイエリア当たりのパフォーマンスは依然としてそれほどよくない。現状90nmプロセスでは、2way以上のマルチコア化も難しい。

 だが、この問題の解決策は単純で、CPUコアをシンプルにすれば回避できる。複雑な制御機構を省けば、ずっと小さなCPUコアでそこそこのパフォーマンスを維持できる。ポラックの法則を逆に考えるなら、CPUコアのダイエリアを1/4にしても性能は1/2にしか落ちないことになる。シンプルなCPUコアなら多数搭載できるから、マルチスレッド性能はずっと高くなる。簡単にダイ&電力効率のいいマルチコアCPUを作ることができる。

Cellのマルチスレッディングの考え方
PDF版はこちら

●ヘテロジニアスマルチコアでCPUの効率を高める

 だが、この手法にもトレードオフがある。(1)シンプルコアにした場合には、どうしてもシングルスレッドのスカラ性能が落ちてしまう。(2)OSなどに多いコントロール系中心のタスクと、マルチメディア系のストリーム型処理、この両方を高速に処理できるシンプルコアを作ることが難しい。

 そこで出てきたアイデアが、ヘテロジニアス型のマルチコアだったというわけだ。

 例えば、シングルスレッド性能を追求した大型のCPUコアと、シンプルな構造にして効率を追求した小型CPUコアを組み合わせれば、シングルスレッド性能を維持しながら、高並列のマルチスレッドを実現できる。IntelのMany-coreはこの方法を採り、2~4個程度の大型CPUコアと、数十個~100個程度のシンプルCPUコアを組み合わせる方法を採るようだ。シングルスレッド性能が必要とされるプログラムは、フル機能の従来アーキテクチャの延長にある大型CPUコアで走らせることで、従来通り比較的高いILPで高パフォーマンスを維持できる。一方、マルチスレッド化された新しいアプリケーションは、複数のシンプルCPUコア群に割り当てられ、高いマルチスレッド性能を享受できる。

 一方、Cellのように、CPUコアを、コントロール系CPUコアとデータ系CPUコアに切り分けるアプローチもある。既に説明したように、Cellでは、それぞれのCPUコアを特化させることで、小さく保ちながら、高性能を達成する。

 ちなみに、CellのPPEは、Power命令セット互換という言葉から、シングルスレッド性能を追求したリッチコアの印象を受けるかもしれないが、実際にはそうではない。

 あるIntel関係者は「CellについてはISSCC発表前から概要は掴んでおり、社内でも研究していた。CellのPowerPCコアは、それほど高いシングルスレッド性能を持ったCPUコアではないと考えている。我々の考えているMany-coreとは、本質的に違う」と語る。

 PPEも、SPEほどではないが、比較的シンプルなCPUコアだ。インオーダ型実行のCPUで、レジスタリネーミングなどの手法も取らない。PowerPC 970のような、最先端CPUと比べると、制御系は簡素化されている。Cellの場合は、PPEはOSを走らせることと、SPEに対してのタスクの割り当てなどの制御を担当する。つまり、SPE制御にもプロセッサパワーを取られる。Intelのように、このコアでシングルスレッド性能を要求する既存アプリケーションを走らせることを想定しているわけではない。

 この違いは、既存のソフトウェア資産の継承に縛られるIntelと、ゼロから立ち上げるCellという立場の相違から来ていると推測される。Cellでは、ソフトウェアのエコシステムもゼロから構築し直すことを前提に、ラディカルな変革ができた。これは、Cellの大きな強みとなっているように見える。もっとも、Cellでも、コントロール用CPUコアをもっとリッチにして、シングルスレッド性能をある程度高めた構成が可能かもしれない。また、Intelにしても、ヘテロジニアスマルチコアで性能を引き出すには、ソフトウェア側のかなりのレベルの対応が必要となる。

□関連記事
【2月12日】【海外】コンテンツ保護機能を備えたCellのCPUコア
http://pc.watch.impress.co.jp/docs/2005/0212/kaigai157.htm
【2月12日】【海外】Cellのパワーの源「SPE」の正体
http://pc.watch.impress.co.jp/docs/2005/0212/kaigai156.htm
【2月11日】【海外】PCを遙かに超える、Cellのメモリ/IO帯域
http://pc.watch.impress.co.jp/docs/2005/0211/kaigai155.htm
【2月9日】【海外】PlayStation 3に搭載されるCellの性能
http://pc.watch.impress.co.jp/docs/2005/0209/kaigai154.htm

バックナンバー

(2005年2月18日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright ©2005 Impress Corporation, an Impress Group company. All rights reserved.