後藤弘茂のWeekly海外ニュース

Intelがひたすらメモリ帯域の拡大にこだわる理由


●どんどん上がるIntelのFSB&メモリ帯域

 Pentium 4系CPUのFSB(フロントサイドバス)は、400MHz(3.2GB/sec)からスタートして約1年半で533MHz(4.3GB/sec)に、そして来年には667MHz(5.3GB/sec)に上がる。さらに、将来はおそらく800MHz FSB(6.4GB/sec)もやってくる。それに合わせてIntelはメモリ帯域も引き上げる。デュアルチャネルPC800(3.2GB/sec)からデュアルチャネルPC1066またはデュアルチャネルDDR266(4.3GB/sec)、そしてデュアルチャネルDDR333(5.3GB/sec)へと。なぜIntelはここまでメモリとFSBの帯域にこだわるのか。

 面白いのは、ライバルのAMDはメモリ(&FSB)帯域よりメモリレイテンシを重視していることだ。例えば、次世代デスクトップAthlon(ClawHammer:クローハマー)は、シングルチャネルのDDR266(2.1GB/sec)または333(2.7GB/sec)。Intelと比べたらメモリ帯域は半分だが、その代わり、DRAMコントローラをCPUに搭載することによって、メモリレイテンシ12ns(2GHz時)という驚異的な短さになる。

 普通に考えれば、Hammerの方がパフォーマンス面では賢い選択に思える。というのは、一般的なアプリケーションの多くは、メモリの帯域の向上よりもレイテンシの短縮で性能がアップするからだ。

 FSB&メモリ帯域を引き上げても、原理的には帯域を圧迫するアプリケーションでしか、利点を享受できない。現状ではソフトウェアの多くは、実際のところメモリ帯域の数分の1程度しか使わない。つまり、データ量の多いマルチメディアや科学技術演算などでは生きるが、通常のオフィスアプリケーションだと効果が出にくいことになる。

 それに対して、ほとんどのソフトウェアは分岐を多く含み、そしてL2キャッシュミスした場合にはCPUコアはDRAMアクセスで100サイクル以上をロスしてしまう。つまり、現状ではCPUはメモリからのデータを待っている無駄な時間で性能を落としてしまっている。つまり、レイテンシの短縮はほとんどのソフトウェアに効く。


●IntelとAMDで一致する見解

 じつは、これについては、Intel、AMDとも全く同じ見解だ。例えば、Intelのパトリック・ゲルシンガーCTO兼副社長(Patrick Gelsinger, Vice President & Chief Technology Officer)は「(CPUの性能向上にとって)メモリレイテンシはクリティカルだ。L1とL2キャッシュをミスすると、メモリからのバックまでの間、CPUは文字通り数100クロックも待たなければらなない。最悪のケースではロスは1,000クロック以上になる」、「メモリレイテンシが、性能向上の最大の制約なのは確かだ」と言う。

 一方AMDのダーク・メイヤー(Dirk Meyer)グループ副社長(Computation Products Group)も「CPUのパフォーマンスには3つの基本的な制約がある。1は命令のパス長。2はオペレーションのレイテンシ、これは特にメモリのレイテンシが大きい。3はコントロールフローの予測性、つまり分岐予測だ」、「この3点を考えると、DRAMインターフェイスの統合(それによりレイテンシを短くすること)のアドバンテージは明確だ」という。

 つまり、IntelもAMDも、どちらもCPU開発の長期的な方向性を決定する立場にある人物は、メモリレイテンシの短縮が最大の課題のひとつだと考えている。そして、AMDは素直に、メモリレイテンシを短縮する方向へ向かった。それなのに、Intelはメモリのレイテンシを減らすのではなくメモリ帯域を引き上げる方向へ向かっている。これはなぜだろう。


●Hyper-Threadingでメモリレイテンシを隠蔽

 じつは、これには明快な理由がある。Intelはメモリの帯域を引き上げることで、最終的にメモリのレイテンシを隠蔽しようとしているのだ。つまり、Intelの長期戦略の中では、『メモリ帯域の拡大=メモリレイテンシの短縮』なのだ。

 どうして? と思うかもしれない。しかし、Intelが複数スレッド(命令の流れ)の並列処理「スレッドレベルパラレリズム(TLP:Thread-Level Parallelism)」技術へと邁進していることを考えると、この謎が解ける。IntelはTLP技術の第一歩として、Xeonや来年のデスクトップCPU「Prescott(プレスコット)」でサポートする「Hyper-Threading」で、ひとつのCPUが2つのスレッドを同時に処理できるようにした。そして、これが、最終的にメモリレイテンシ対策となるという。

 「最大の課題は、メモリレイテンシの制約を超えてIPC(instruction per cycle:1サイクルで実行できる命令数)を高め続けることだ。そして、Hyper-Threadingだと、高メモリレイテンシでも許容できるようになる。例えば、10スレッドを並列に実行できるなら、1スレッドがキャッシュミスで待っている間に、ほかの9スレッドを実行し続けることができる。つまり、事実上、メモリレイテンシを隠蔽できる」とIntelのゲルシンガーCTOは説明する。

 もちろん、現状の2スレッドだけを並列実行するアーキテクチャではメモリレイテンシ隠蔽の効果は大きくない。しかし、今後CPUアーキテクチャを改良して、スレッド/クロックをどんどん向上させ、CPU側のユニット数も増やすと効果は出てくるだろう。

 ただし、この場合、メモリレイテンシを隠蔽できるというのはCPU側からみた話でしかない。つまり、CPUの内部の実行ユニットが、メモリ待ちのために遊ぶことがなくなるという話だが、その場合もメモリ待ちで個々のプログラムがストールすること自体は変わらない。すなわち、DRAMインターフェイスのCPUへの搭載のように、あらゆるプログラムに対するレイテンシ短縮による性能向上は期待できない。


●投機マルチスレッディングが次のステップ

 しかし、Intelは次のステップでは、それも考えている。それは「投機的マルチスレッディング(Speculative Multithreading)」と呼ばれる技術で、Intelは昨年「Speculative Precomputation : Long-range Prefetching of Delinquent Loads」という論文を発表している。これはTLP技術を使って、完全なデータロードのプリフェッチを実現してしまおうという技術だ。

 具体的には、ひとつのスレッドに対して、“投機スレッド”と呼ばれるスレッド群をコンパイラで生成する。これは、本来のスレッドのうち、ロード命令(メモリからデータを読み出す命令)とそれに依存する命令だけを抜き出したスレッドとなる。そして、本スレッドと平行してこの投機スレッドを、TLPアーキテクチャの上で実行してしまう。つまり、投機スレッドが時間のかかるロード命令を前もって投機実行してしまうわけだ。そうすると、本来のスレッドがロード命令を実行するときには、必要なデータが全てL1キャッシュにロードされていることになる。

 「(Speculative Precomputationは)まだ研究段階だが、革新的な技法だ。スレッドがどう実行されるかを予測して(別なスレッドを)実行し、それによって、別スレッドがキャッシュをウォームアップする。そうすると、本当のスレッドがそこ(ロード命令)に来たときには、すでに正しい情報がプリロードされている」、「完全なプリフェッチが行なわれるため、メモリにアクセスに行く必要は、ほぼなくなる。非常にパワフルだ」とゲルシンガーCTOは説明する。


●メモリレイテンシはCPUアーキテクチャで隠蔽する

 こうしたSpeculative Multithreadingを、コンパイラで静的に実現するのではなく、ランタイム環境で実現できれば、シングルスレッドのアプリケーションでも、メモリアクセスのレイテンシが隠蔽され、劇的に性能が向上できるようになる。実際に、Intelはそうしたランタイムの研究開発を行なっている。実現するときには、アプリケーションの下にSpeculative Multithreadingのランタイムレイヤが来るようになるだろう。

 こうしたIntelの技術的な方向性を見ると、メモリのレイテンシをCPUのアーキテクチャでカバーしようとする姿勢が明確に見える。つまり、AMDやTransmetaのようにCPUにDRAMコントローラを内蔵することで、物理的にメモリのレイテンシを減らすのではなく、CPUのアーキテクチャを改良することで、実質的にメモリのレイテンシを見えなくしようとしている。じつに、壮大で大胆な戦略だ。

 そして、このアプローチでメモリレイテンシを隠蔽しようとすると、その場合にはメモリ帯域が必要となる。投機的なロードが増えれば(破棄されるケースも出るので)ロードの回数も増えるし、そもそもTLPの度合いを高めるにつれてロード/ストアユニット自体も数を増やすことになるだろう。つまり、メモリ帯域は必要になるが、メモリレイテンシは最終的になくなると、そういう図式だと想像される。

 もちろん、メモリ帯域の引き上げは、データ量の多いマルチメディアアプリケーションのためでもあるわけだが、プラスしてTLP化される今後を考えていることは間違いない。そして、そのために、メモリの帯域を引き上げるように必死に誘導していると思われる。メモリ帯域を引き上げるのは一夜ではできないから、今からがんがんメモリを広帯域化しているのだろう。


●短期的には不利なIntelのアプローチ

 Intelが、物理的にDRAMレイテンシを短縮するのではなく、CPUアーキテクチャで解決しようとした理由もよくわかる。まず(1)DRAMインターフェイスをCPUに搭載してレイテンシを短縮することは技術的にはかなりリスキーだ。それから(2)中期的に見ても汎用DRAM(Commodity DRAM)自体のレイテンシが劇的に低減される見込みがない。ただし(3)DRAMの帯域は引き上げることが比較的容易に見える。というあたりではないだろうか。

 しかし、このアプローチ自体もリスキーではある。というのは、少なくとも短期的にはDRAMインターフェイスの搭載の方が有利だからだ。DRAMインターフェイスの搭載なら、CPUに増やすロジックはごくわずかですむ(ただし困難は大きい)。Speculative Multithreadingなんて面倒なことをしなくても、簡単にDRAMレイテンシを数分の1にできる。しかもそれは既存のソフトウェア環境で有効だから、すぐに効果が見える。デスクトップCPUなら、年末のHammerで誰もが効果を体感できる。

 つまり、Intelのアプローチは、当たれば大きいが、仕込みに時間も手間もかかるというわけだ。そして、成果が見えてくるまでは、(PC向けには)ムダに多い帯域や効率の悪いCPUコアが批判にさらされてしまいがちなのだ。


バックナンバー

(2002年6月24日)

[Reported by 後藤 弘茂]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
個別にご回答することはいたしかねます。

Copyright (c) 2002 impress corporation All rights reserved.