ある時はコンピュータの製品企画担当者、またある時は?

文科系のためのPOWER7プロセッサーの話 ~ 2

»

再びPOWER7プロセッサーの話である。前回はeDRAMテクノロジーを用いて搭載されたL3キャッシュが革新的であることを述べたが、パフォーマンスを向上させる仕組みは他にもある。HOT CHIPS 21と呼ばれるシンポジウムではSMT4もその要因として挙げていた。SMT(Simultaneous Multi Thread)とは、プロセッサーのレベルで同時に複数の命令群を実行できることだと思えば良いようだ。かなり乱暴な解釈かもしれないけれど、技術的な正確性を追求するのがこのカラムの目的ではないので、これでいいのだと開き直ってしまおう。従来はSMT2、要するに2つの命令群を同時実行できるに留まっていたが、それがSMT4ということで4つに拡大したわけだ。この数はおそらく多い方が優れているのだろう。

そもそも忙しそうに働いているはずなのに、プロセッサーはどうやって複数の命令群を同時実行するのだろうか。非常に簡単な答えは、その働き方には実は無駄があり仕事をしていない時間があるので、その休み時間に働かせるようにしているに過ぎないのだ、ということになるだろう。プロセッサーの中には工場のベルトコンベアのようなものがあって、工程を一つ一つ進めながら命令やデータに対する作業を少しずつ行ない、最終的に完成品を仕上げるようなものだと思えば良い。あらゆる作業工程上に、仕事の対象となる命令やデータがあればどこにも暇はないはずだが、どうも作業工程が穴だらけになってしまうのは仕方が無い、というか暇があるのは当たり前の現象なのだそうだ。どこかのプロセス上の欠陥というわけでもないらしい。

原因はいくつか考えられる。一つはデータの依存性の問題で、前の命令の結果を次の命令の入力データとして使用する場面を考えてみよう。通常ならば2つの命令が連続的にベルトコンベアの上を流れていくはずだが、2つ目の命令を実行する際に、前の命令の結果が必要だとしたらどうなるか。ベルトコンベアが、命令の取り出し・データ取り出しと命令の解釈・命令実行・結果格納という具合に進むものだとしたら、後から来る命令は作業対象となるデータがまだ利用可能ではないために、2番目のステージでしばらく先に進めなくなる。前の命令はとにかく先に進んでゆくから、そこでいくつかの空白状態が生じてしまう。これら2つの命令の間に、実行順序を入れ替えても結果に影響が無い命令を挿入してしまうというテクニックも使われるが、いずれにせよ空白状態は皆無にはできないそうだ。

どうせこういった空白状態が生じてしまうのだったら、それを利用して別の命令群を処理させてしまおうというのがSMTの考え方である。これを2系統同時処理するのがSMT2であり、既にいくつかのプロセッサーにおいて実装されている。これである程度の空白状態を埋めることはできるだろう。この考え方をさらに推し進め、プロセッサーを極限まで働かせようというのがSMT4である。これによりプロセッサー・コアあたり20~40%ほどパフォーマンスが向上するとのことである。より進化したSMTテクノロジーはPOWER7の特徴の一つだと言えるだろう。

Comment(3)

コメント

ゆも

「命令レベルの並列性(ILP:Instruction-Level Parallelism)」と「スレッドレベルの並列性(TLP:Thread-Level Parallelism)」を混同していませんか?
それともスレッドを命令群と表記していらっしゃるのかしら?

安井 賢克

コメントありがとうございます。少々乱暴なのを承知の上で、スレッドを一言でうまく言い表す方法が思いつかなかったので「命令群」という表現を使いました。誰にでもわかるより良い表現をご存知ないでしょうか?

ゆも

ご回答ありがとうございます。POWER7を検索してこちらに来ましたが、
メールソフトにも「スレッド表示」があったり、糸という意味からも離れますし
スレッドはスレッドのままでいいんじゃないでしょうか・・・

コメントを投稿する