『Hyper-Threading Technology』

はじめに

1つのCPUを擬似的に2つのCPUのように扱うことができる、IntelのHyper-Threading Tecnologyについてお話しします。

Hyper-Threading Technology

インテルが開発した、一つの物理CPUで複数の論理CPUを使えるようにする技術です。コンシューマー向けにはPentium4 3.06GHzから採用されましたが、サーバー・ワークステーション向けのXeonにはすでに採用されていました。実はPentium4も初代Willametteコアからこの技術が内臓されていたようなのですが、物理的に無効になってるから使えないだけだったのです。

もともと、Pentium4はそのことを前提に作られているCPUだったらしいのです。このため、Hyper-Threading technologyが無効になっている今までは、やれ性能が悪いだの無駄が多いだの批判されていたのです。当然ながら本来の力を発揮していなかったのだからしょうがないですね。

Pentium4のフロントバスは3200MB/sと4200MB/s程度です。PentiumIIIの800MB/sと1066MB/sの実に4倍です。PentiumIIIは確かにフロントバスがボトルネックになっていたのですが、4倍までするのは意味がないと言われていました。事実、ほぼ同等の性能を誇るAthlonは1600MB/sと2100MB/s程度でした。この程度でも充分だったのです。ではなぜこの広い帯域が必要だったかというと、Hyper-Threading technologyに他なりません。二個分のCPUが一個のCPUに入ってるわけですから、二つのCPUのデータが滞りなくやりとりするためにはAthlonの2倍のバス幅の理由も納得が行きます。

また、Pentium4はPentiumIIIに比べてクロックあたりの性能が低いです。これはパイプラインが深すぎるからですが、パイプラインが深いと計算ミスが多くなるのですが、それ以外にCPUで計算していない部分、つまり暇している部分も多くなるのです。Pentium4は、現在実に無駄が多く、CPUの半分づつぐらいしか使われていないようなのです。この答えも、Hyper-Threadingtechnologyというわけです。 どちらが先だかは分かりません。半分無駄になってるからHyper-Threading technologyを導入したのか、最初からそのつもりだったから無効になっている今は無駄になっているのか…。とにかく、その使っていない部分を仮想的にもう一つのCPUのように見せることによってマルチプロセッサーとして活用するのです。

Pentium4は、シングルでしか利用できません。IntelのPentiumシリーズはPentiumのころから一部を除いてデュアルに対応していました。もちろん、Pentium3も一部を除いてデュアルに対応しています。しかしなぜか、Pentium4だけはなぜかデュアルをサポートしていなかったのです。これは、なにもデュアルに対してIntelが非協力的になったわけでありません。もともと、Intelは他のメーカーに比べて非常にマルチプロセッサーに対しても積極的でコンシューマ向けのチップセットやCPUでもほとんど追加せずにデュアル仕様にできるようにしていました。Athlonが第四世代からマルチプロセッシングに対応したのに対して、IntelはPentiumから既に対応していたのですから。ちなみにそのころAMDはK5あたりを作っていました。そんなIntelがシングル専用にした理由もHyper-Threadingtechnologyが控えていたためでした。

元来ならば、IntelはTejasと呼ばれる次期Pentium4(または5にでもするつもりだったのか)からHyper-Threading technologyを有効にする予定でした。しかし、先に有効にしたXeonの評価が高かったのか、Northwoodと呼ばれる現在のPentium4でも高クロック版の3.06GHzから有効にすることになります。さらにAMDのAthlon64に対抗してか下位クロックのCPUにもHyper-Threading technologyを有効にして投入してくることになりました。