Mr.M.P.Iのプロセッサ・レビュー ――マルチスレッド化するシンメトリカル・マルチプロセッサ

M.P.I

tag: 半導体

コラム 2004年6月 2日

 筆者が執筆した「組み込みプロセッサの最新動向」を読み返してみて,コンフィギャラブル・プロセッサやヘテロジニアスなマルチプロセッサばかりを持ち上げて書きすぎてしまったような気がする.今回はシンメトリカル(対称型)マルチプロセッサを中心にコメントしたい.

●レイアウトがみごとに線対称のUltraSPARC IV

 シンメトリカルに触れなければと思ったのは,今度,新しく出る米国Sun Microsystems社の「UltraSPARC IV」のチップ写真を見たからである.これは,単なるシンメトリカルなマルチプロセッサを1チップ化したというのとは違うのだが,見た目がとてもシンメトリカル,すなわちきれいな線対称なのだ.同じ形をしたFPU(浮動小数点演算ユニット)などのブロックが左右対称に配置されている.このチップは1次キャッシュを含むコア・パイプラインと2次キャッシュのタグ(tag)部までを含むのだが,それぞれまったく等価な2個のパイプラインを搭載している.もちろん外に出るバスは統合されており,実際には中央にアービタがあって,外へ出るトラフィックに対して交通整理しているはずなのだが,小倍率のチップ写真では2個のコアが中央に対称に並んでいるだけのように見える.

 SPARCファミリは,このチップ・レベルのマルチプロセッサを「マルチスレッディング・プロセッサ」と呼んでいるようだ.たぶん,古典的なシングル・プロセッサをシンメトリカルに結合したマルチプロセッサ・システムはずいぶん前から出しているので,それと区別する意味合いで強調しているのだろう.富士通も,チップ・レベルのマルチプロセッサ(マルチスレッド化)に積極的なようで,「SPARC64V」で2個のコアを集積するようだ.

 SPARCファミリのこのようなマルチスレッディング・プロセッサは,米国Intel社のハイパー・スレッディング(Hyperthreading)とは,だいぶ異なるように見える.Intel社は,並列度の高い単一のスーパスカラ・プロセッサのパイプライン中の実行ユニットがけっこう遊んでいる点に目をつけて,1個のプロセッサのハードウェア資源の中で複数のスレッドを同時に動かせるようにした.目のつけどころはスマートだが,資源が2倍あるわけではないので,同じパイプラインを共有するスレッドの間で"密に"絡み合い,競合しながら実行が進んでいくはずである.

 これに対してSPARC系のほうは,コアそのものを実質2個積んでいる.パイプライン実行資源は完全に独立,1次キャッシュも独立なので,2次キャッシュから外へ出るような事態に至るまで競合することはない.その代わり,チップ写真を眺めただけで感心するくらい対称的なチップができ上がるというわけである.線対称の構成が点対称になるのも時間の問題,という感じもする.

 SPARCとIntel社のハイパー・スレッディングの中間の事例がないかと思って探していると,あった.米国IBM社のPOWER5がそんな感じの構成のようだ.実行ユニットそのものは二つのパイプラインの間でシェアされているが,パイプラインのかなりの部分が独立しているらしい.一方,米国Lexra社というMIPS互換プロセッサを開発しているベンチャは,Intel社に似た資源節約型のマルチスレッド・プロセッサを作ったようだ.

●伝統的なシンメトリカルの延長線上ではない

 このような「マルチスレッド」を標榜するチップは,レイアウト上で2個のプロセッサを一つのチップに載せたように見えても,昔からあったシンメトリカルなマルチプロセッサ・システムの延長線上にあると言うべきではないようだ.だいたい,マルチスレッドなプロセッサ・チップをさらにシンメトリカルに複数個つないで,マルチプロセッサ・システムを構成するのが普通だ.ただ2個載せるだけというのでは芸がない.

 アーキテクチャの側から言えば,先ほども触れたスーパスカラで並列度を上げたものの,実は実行ユニットをフルに使い切るような状況が少なく,マルチスレッド化によってもともとある資源を有効活用したという面は確かにあると思う.2個載せたように見えるケースでも,完全にすべての資源が2個あるわけではなく,共有している部分もあるから,有効活用には根拠がある.

 その資源を使って動作するソフトウェアの側から考えると,マルチスレッド化が有効となるようなアプリケーションが増え,OSも対応できるようになってきたと言える.極端な例は,多くのネットワーク・トランザクションをさばくサーバ系だ.通常のデスクトップ応用でもマルチスレッド化によってスループットが上がるケースが増えていると聞く.もともとシリアルに時分割でスレッドの切り替えを行っていれば,かならずスイッチングのオーバヘッドが存在する.ハードウェア的に複数のスレッドを同時実行できれば,少なくともスレッドの個数分くらいはスイッチングを行わなくて済むのだから,むだなOS の実行時間が減るのは確かである.これに加えて,アプリケーション側がマルチスレッドの能力を引き出せば,効果は非常に大きくなるのだろう.

(本コラムはDESIGN WAVE MAGAZINE 2004年3月号に掲載されました)


◆筆者プロフィール◆
M.P.I(ペンネーム).若いころ,米国系の半導体会社で8ビット,16ビットのプロセッサ設計に従事.ベンチャ企業に移って,コードはコンパチ,ハードは独自の32ビット互換プロセッサのアーキテクトに.米国,台湾の手先にもなったが,このごろは日本の半導体会社でRISCプロセッサ担当の中間管理職のオヤジ.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日