エンタープライズ:特集 2002/11/28 18:24:00 更新

Linuxでハイパー・スレッディング――Pentium4/3.06GHzで遊ぼう
第1回 Linux上でなかなか動かないHT (2/6)

 たとえば図1のような、2命令のスーパースケーラのCPUがあるとする。ここに、図2のような2つの命令ストリームを順に実行させることを考えてみよう。

01b.gif
図1■2命令のスーパースケーラのCPU模式図
02b.gif
図2■順に実行させる2つの命令ストリーム

 通常だと、パイプラインは図3のような動作をする。最初の2つの命令(1)、(2)はスムーズに流れるが、3つ目の命令(3)は、1および2の実行が完了しないと処理を始められない。そこでいったんScheduleに入ってから、(1)と(2)の結果が書き戻し(WriteBack)されるまでExecute(実行)に入れず、この結果パイプラインには空きが発生してしまうことになる。また処理(4)〜(6)は、(1)〜(3)と別のストリームだから、Fetchの段階で別々に分ける必要があり、結果としてこの6つの命令の処理が終わるまで10クロックかかることになる。(※1)

(※1)アーキテクチャによっては、いったんここでパイプラインのフラッシュが必要になるものもある。その場合は(4)および(5)がFetchに投入されるのは早くて8クロック目、(6)の処理が終わるのは14クロック目になる。

03b.gif
図3■横軸がクロック数。通常だと最初の2つの命令(1)、(2)はスムーズに流れるが、3つ目の命令(3)は、(1)および(2)の実行が完了しないと処理を始められない。そこでいったんScheduleに入ってから、(1)と(2)の結果が書き戻し(WriteBack)されるまでExecute(実行)に入れず、この結果パイプラインには空きが発生してしまうことになる。また処理(4)〜(6)はFetchの段階で別々に分ける必要があり、処理が終わるまで10クロックかかる

 これがSMTを利用するとどうなるかというと、まず複数の命令ストリームを同時に処理できるから、(3)と(4)を同時に投入できる。またExecuteの段で、(3)が実行できなくても4が処理可能になるから、結果としてここでやや処理をつめることが可能になり、トータル9クロックで処理が完了することになる(図4)。この例では何しろ実行ユニットの数が少ないから、それほど効果が上がるようには見えないが、処理ユニットの数が多く、かつそれがあまり使われていないほど、SMTによって処理ユニットの利用効率が上がることが期待できる。

04b.gif
図4■SMTならば、まず複数の命令ストリームを同時に処理できるので、(3)と(4)を同時に投入でき、またExecuteの段で、(3)が実行できなくても(4)が処理可能になり、トータル9クロックで処理が完了する

 HTはまさしくこうした効果を期待したものである。実を言うと、そもそもNetBurstアーキテクチャの設計段階からSMTは考慮されていたようである。HTの開発コード名であるJackson Technologyの名前が出始めたのは2000年の春のことだが、まだこの時点でのデスクトップ向け製品はCoppermineコアのPentiumIII。WillametteコアのPentium4がリリースされたのは2000年8月の時点だから、つまり製品に先立ってアナウンスがあったわけである。そして実際にHTを搭載したWillametteコアのXeon/Xeon MPが存在する以上、Willamette(というかNetBurstアーキテクチャ)の設計段階で、HTのインプリメントがなされていたと考えるのが妥当だろう。実際、こちらでWillametteコアのCPUIDを確認して「HTが搭載されているが、無効化」という状態にあることが分かる。ちなみに2.80GHzまでのNorthwoodコアPentium4も、これと同一のフラグになっている。

 ちなみになぜこれを無効化していたか、には諸説あるが

  • SMTに関する関連特許を旧DEC(というか旧コンパック)が多数押さえており、これに抵触するためにリリースできなかった。ところが2001年6月、インテルは旧コンパックのAlphaプロセッサ関連資産一式の技術移転を受けることとなり、特許関連の縛りがなくなった
  • 別にHTを利用しなくても十分高速に動作するため、将来急速にプロセッサ性能を上げる必要が出てくる際の切り札として温存した
  • HTを利用する場合、ソフトウェア側としてはマルチプロセッサ環境に対応する必要がある(HTは、ソフトウェアから見ると複数の仮想プロセッサとして認識される)。ところが当時コンシューマ向けには、マルチプロセッサをサポートしないWindows9x系OSが主流であり、WindowsNT4.0/Windows2000はビジネス系に利用されているだけだった。従って、コンシューマ系がマルチプロセッサに対応するWindowsXPが普及するまで、リリースを遅らせた

あたりが主なところだ。実際のところ、これらの要因はすべてもっともな話である。実際、最初のライセンスに関しては、HTをアナウンスしたのが2001年9月の「IDF Fall 2001」だったことを考えると、実にそれらしいと感じるところだ。また2番目についても、当初は90nmプロセスを利用したPrescottコアPentium4でHTを導入とか言っていたのが、急遽前倒しで3.06GHzに搭載され、しかも現在はそれがさらに極端になり、来年第2四半期にはすべてのPentium4にHTを搭載するとかいう話になってきているわけで、HTが対Hammerの性能アップの切り札になっていることを強くうかがわせる動きである。3番目についてはもはや説明の必要もないだろう。

前のページ | 1 2 3 4 5 6 | 次のページ

[大原雄介,ITmedia]