Think Parallelで行こう!

第2回 現代のプロセッサと並列実行

株式会社フィックスターズ
中村 孝史

2009/8/24

ハードウェアマルチスレッド

 さて、先ほど解説したスーパースカラーのように、シングルコアプロセッサであってもプロセッサ内には並列化されている部分がいくつかあります。

 また、ここでは解説しませんでしたが、パイプライン実行も一種の並列実行とみなせますし、名前だけ紹介したメモリコントローラなどもプロセッサとは独立して動作できるので、これも一種の並列実行であるといえます。

 このように考えると、1つのコアの中にも並列実行できる個所がかなりあることが分かります。しかし、すべてのプログラムが常に並列実行できるわけではありません。

 プログラム中の依存性や例外などが原因で処理が並列に実行がされない場合があります。その場合、本来ならば並列実行できるだけの能力を持つプロセッサ内のハードウェアが有効活用されないことになります。

 なんとかしてこれを有効活用できないだろうか、ということで考えられたのが、ハードウェアマルチスレッドという仕組みです。ハードウェアマルチスレッドは、architectural stateを並列化したものです。ハードウェアマルチスレッドのブロック図を図6に示します。

図6 ハードウェアマルチスレッドのブロック図
SIMDプロセッサのブロック図

 architectural stateには、OSのスレッドを実行するために必要な状態がすべて、例えば、全レジスタの値、プログラムカウンタ、メモリ保護の状態などが含まれています。

 ここにはメモリ保護の状態なども含まれているため、ハードウェアマルチスレッドを実装したプロセッサ上では、一度に複数のOSスレッド、プロセスを実行することができます。

 ここで実行される複数のスレッドは実際には同じプロセッサコア上で動作するのですが、1つのスレッドでは使い切れなかった余分なリソースを活用できるようになるため、シングルスレッドでの処理と比較して速くなる場合があるのです。

 例えば、Intelのハードウェアマルチスレッド技術であるHyper-Threading Technologyを実装したPentium 4は、Hyper-Threading Technologyを実装しないPentium 4に比べ、30%の性能向上があるといわれています。

 ハードウェアマルチスレッドは、ソフトウェアから見た場合、マルチコアやマルチプロセッサと同じように見えます。その利用方法も同じで、OSが用意するインターフェイスを使います。

 次回は、Intel Core i7やCell/B.E.など、具体的なプロセッサにみられる並列ハードウェアを紹介します。

prev
3/3
 

Index
現代のプロセッサと並列実行
  Page1
マルチプロセッサ概説
いまどきのプロセッサの構成
スーパースカラー
  Page2
Single Instruction Multiple Data
マルチコア・マルチプロセッサ
Page3
ハードウェアマルチスレッド

index Think Parallelで行こう!


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間