DRDRAMは復活するか?





実はたるさんはずっと以前から 「メインメモリは質より量」説 を周囲に流布してきた。

その昔、メモリがSIMMだった頃、FPメモリ搭載マシンのユーザーに 「雑誌にEDOメモリが速いと書いてあるので差し替えたいが、 どうしたらよいのか?」 という相談を受けた事がある。 そのときは、「EDOとFPの混載ができないマザーだから、差し替えると 今のFPが無駄になる。メインメモリは質より量だから、 黙って、FPメモリを追加しておけ。」という指示を出した。

これは、時代が変わってSIMMがDIMMになっても同じであった。 たるさんはDRDRAMやDDR−SDRAMに浮気したことはない。 これに投資するくらいだったら、安くなったSDRAMを追加したほうが よっぽど現実的とわかっていたからだ。2)

また、DRAM製造メーカーもその事はちゃんとわきまえていた。 パソコンユーザーの間では、DDRがどうのとか、DRDRAMがどうのとかが 話題になるが、メーカー間で争われてきたのはメモリの速度ではなくて、 常にメモリの容量であった。 速度の速いメモリを他社に先駆けて出そうという機運は、 容量競争や歩留まり競争に比べると、あまり強くなかったのだ。3)

というわけで、つい先日まで「メインメモリは質より量」と考えていて、 実際、この通りで間違いはなかったのである。

が、パソコンレベルでは、 「質より量」理論もついに破綻する日が来たようだ。

最近のメモリの劇的値下がり (2001年8月現在では、なんと製造原価以下で売っている!) で、貧乏人たるさんのマシンもメモリ御大尽になった。 メインマシンは256MBのSDRAMを2枚挿して計512MBになったのだ。 4)

ところが、これが速くない。試しに、タスクマネージャでメモリ使用量を見てみると、 Windows2000起動時で約120MB、webを見ながらエディタでメール入力といった よくある作業で約150MB、オフィスアプリをガンガン使って 約180MBといったところだ。

う〜ん、これじゃ確かに256MBから倍増させても効果が薄いわけだ。 ビデオ編集でもしなければ、無駄メモリだな。

世の中には、ここで、「では、そろそろビデオ編集に手を出すかな?」といった 「手段のためには目的を選ばず。」という廃人腕利きの技術派も いらっしゃるけれど、 まあ、たるさんはそこまで悟りきった廃...パソコンマニアではない。 と言うわけで、メモリは256MBに戻して、余った1枚は サブマシンに分け与える事とした。

ってなわけで、メモリの今後の方向を改めねばならないようだ。 では、今後、メモリはどのような方針で購入すべきなのであろうか?  たるさんの考えたことを述べてみよう。

まず単純に、量がダメなら質で勝負というわけにもいかないようだ。

パソコン雑誌にはDDRやDRDRAMでパソコンが変わるような話が書いてある。 しかし、これは株の雑誌が決して「株が下がる。」と書かないのと同じで、 ウソ八百という奴である。こう書かないと雑誌が売れないからだ。 パソコン雑誌は新技術に対して常に肯定的であると言うことを忘れてはならない。

実際、会社で使っているDRDRAMマシンは、スワップが発生しなくても 同クロックのSDRAMマシンより特に速いという感じはしない。5) メインメモリのように、頻繁にアクセスされる記憶デバイスに、パケットタイプの 伝送方式はロスが大きいのだろう。

まあ、これは以前から予想の付いたことだ。 SDRAMとDRDRAMの違いは、 ハードディスクのIDEとSCSIの違いに似ている。 SCSIもDRDRAMも、プロトコルで決められたパケットを伝送する構造なので 肝心のデータ長が長くないとロスが大きい。

その昔、まだSCSIのハードディスクがIDEよりずっと速かった頃、 SCSIのハードディスクがシーケンシャルアクセスではIDEに圧勝なのに、 Windowsの起動などで思ったほど性能の差が出なかったのはよく知られている。 DRDRAMのバンド幅はSDRAMとは比較にならないほど大きいのに、 マシンの体感速度にまったく差がないのは、これと同様な事が起こっているからだろう

また、別の所でも書いたけれど、 DDRやDRDRAMは連続したアクセスには めっぽう強いけれど(高バンド幅)、ランダムなアクセスには意外なほど脆い。 (高レイテンシ)

ところが、最近はキャッシュが進歩した(主にオンダイ化と容量増)ので、 連続したアクセスはキャッシュに当たってしまう確率が高くなる。 残ったアクセスはキャッシュのミスヒット分となり、 これは五月雨式なランダムアクセスが多いので、 せっかくの高バンド幅が生かせないのだ。

現状ではDDRもDRDRAMも、体感速度向上にはまったく役立たない シチュエーションなのである。

質も量も効かないのではどうしようもない。 メモリ・チューンはすべて無駄金か?

この問題を解決する何かいい方法はないのであろうか? そう思った矢先に、アスロンMPが出た。 これが、今回の予言の中心である。

第一印象は、これは検討に値するCPUだろう という感想だ。CPUにプリフェッチ機構が内蔵されたからだ。 プリフェッチの概念自体は新しくはないとはいえ、 これは、ひさびさに成長性のある新技術だろう。

アスロンMPのハードウエア・プリフェッチ機構を簡単に説明すると、 必要になるメモリ内容を予測して、 事前にアクセスしておこうという仕組みである。 事前にアクセスするわけであるから、レイテンシが大きい事は 問題にならなくなるという仕組みだ。

例えば、ある分岐命令が実行されたとしよう。 分岐先のアドレスがプログラムカウンタを進めるものと、戻るものの2種類であった 場合は、戻るアドレスへ分岐する確率が高い。 従って、キャッシュには戻るアドレスに続く命令が入っているだろう。 しかし、分岐がループの終了を判断している様な場合には、いずれ アドレスが先に進む場合がくる。

この場合、プリフェッチ無しではメインメモリへのアクセスが始まって、 CPUのパイプラインがストールするわけであるが、 プリフェッチ機構が事前にメインメモリからキャッシュに命令を読み込んでおけば、 CPUから見た場合、すべてがキャッシュ内でカタが付くと言うわけである。

もちろん、分岐が多ければ読み込まなければならない予測先が指数関数的に増えるので 高いバンド幅が要求される。しかし、事前に読むので低いレイテンシでも問題は少ない。

つまり、プリフェッチ無しでは要求されるメモリ性能が低レイテンシ中心 なのに対して、プリフェッチが効けば高バンド幅中心になるのである。

また、CPU負荷の増大に対する抗堪性も強いと予想できる。

現代のCPU高速化の中心的役割を 果たしているのがキャッシュであることに異存のある方はいないだろう。 しかし、キャッシュには負荷が増えるとヒット率が低下して効力が下がるという 問題点がある。以前述べたとおり、2次キャッシュを強化すればある程度は この問題を回避し速度低下を少なくすることはできる。 しかし、それは程度が緩和されるというだけで、 それでも速度が低下すること自体には変わりがないのだ。

現状でのこれらに対する対策はプアである。一つは、単純にキャッシュ容量を増やす というもので、一定の効果はあるが、いわば力業であってスマートではない。 しかも、容量を増やせば増やすほど向上率が低下し、性能が伸び悩むのである。 6)

また、これらの方法ではキャッシュするデータを自分で選ぶことは無い。 キャッシュ内に取り込まれるコードは、いわばバイナリーコードの進行に伴って パッシブに決定される。 そして、負荷の増大で効力が低下する傾向には変わりがない。

しかし、どうやらプリフェッチは違うと考えられるのだ。 プリフェッチが効力を落とすのは、予測できないような複雑なアクセスが いかに増えるか(予測の質の問題)であって、単純に負荷が増えても、 予測内容が簡単であれば、予測のヒット率の低下はないだろう。 ここが、キャッシュと違うところだ。 予測の複雑性は、命令コードの質(アルゴリズム等)には強く依存するが、 コードの量にはあまり関係がないからだ。

また、予測機構の精度が上がれば、キャッシュ容量が小さくても 効果を上げやすい。単純にキャッシュ容量を増やすよりも、 よほど費用対効果は大きいと予想できる。

うむ、これならばDRDRAMやDDRも実力を発揮できる。 CPUとメインメモリの速度の乖離を埋める有効な方法は、 従来はキャッシュ増量しかないといわれてきた。 しかし、プリフェッチはこれに代わりうる技術では無かろうか?

では、DDRとDRDRAMとではどちらが良いのであろうか? 現状ではバンド幅ではDRDRAM優位、価格ではDDR優位である。 が、この手の話は(予言だから)将来性で語るべきであろう。

まっ、DDRは原理的にSDRAMと同程度の価格が実現できるから、 FPがEDOに変わったときのように、性能の実効性にかかわらず 今後SDRAMを置き換えると予想される。

また、現状ではプリフェッチの予測機構がそれほど高性能ではないため、 DRDRAM以外のメモリのバンド幅でも当面は十分対応できよう。

つまり、Pentium4用チップセットもDRDRAM以外のメモリに対応し始めた今、 最後の牙城であったPentium4分野でも、雪崩を打ってDRDRAM優位は崩れると思われる。 7)

では、現状では負け組確定のDRDRAMであるが、 このまま死に絶えるのであろうか?

たるさんはそうは思っていない。 実はDRDRAMはバンド幅の今後の向上という意味では将来性があると考えている。 データバス幅16bitという、半ばシリアル転送的にデータを送るDRDRAMは、 メモリーバスをたくさん並べて並列動作させることによって バンド幅を稼ごうとした場合に、配線ライン数がそれほど増えないという 実装上の利点がある。 DDRで4バンク取ろうとしたら 64bit×4=256bit となって 配線の引き回しだけで大変である。 まして、128bitと噂されるDDRIIへ拡張したとしたら... (増補:規格審議中ではあるが、DDRIIは64bit幅のまま クロックを2倍にすることでバンド幅2倍とする規格に ほぼ決まったようである。)

また、データバスの幅を増やして対応しようとするならば、普通はスキューの 問題が発生する。しかし、プリフェッチによって 高レイテンシが許容されるならば、8bit程度のデータ ラインとクロックラインをまとめてグループを組めばよい。そうやって、 半シリアル的に伝送すれば、スキューの問題もずっと避けやすいのである。 (これは動作がシリアル的だからこそ可能なワザで、DDR系では不可能である。)

逆に、もしプリフェッチ機構が無ければ、この方法を採用したが最後、 高いレイテンシによって実効性能が大幅に低下してしまうだろう。

プリフェッチ機構が効果を上げれば、低レイテンシは不要になるが 逆にバンド幅が要求される。 パケットタイプのメモリは、レイテンシ減には不利だが、バンド幅を稼ぐには 有利なのである。 だから、現状ではともかく将来性という意味ではDRDRAMに軍配を揚げたい。

というわけで、今まで世間でなにかとカタログ性能と実性能の差が云々されていた DRDRAMであるが、プリフェッチ機構付き新型CPUの普及に従って いずれブレイクすると予想している。たるさんは、 高バンド幅・高レイテンシ型の見かけ倒しなメモリが、プリフェッチ機構によって 実際に使えるメモリに変わる意義は決して小さくない と考える。DRDRAMはプリフェッチ機構と組み合わせることで、はじめて 本来のうま味を発揮するのではないだろうか?

このコンテンツを書きながらwebサイトを見て回ったのだが、アスロンMPの ハードウエアプリフェッチによる速度の向上は10%程度のようだ。 う〜ん、思ったよりは少ないというのが感想だ。 なんせ、パソコン用CPUに採用されるのは初めての技術 (明示的なプリフェッチではSSEの先例があるし、単なる決め打ち先行取得的動作なら Pentium4も持っているが...)だから 予測のアルゴリズムがプアなのだろう。 しかし、最新CPUで重要な役割を果たしている分岐予測も、 初めて取り入れられたときは無いよりマシ程度の効果しか無かった。 最初は、こんなもので我慢すべきなのかもしれない。

そこで、この部屋の趣旨に戻るのであるが、たるさんの予言である。

−たるさんの予言−

第一の予言
DRDRAMはPenium4用チップセットの非DRDRAM化でいったんは 絶滅の危機に瀕する。
勝ち組はDDRであり、DRDRAMは非パソコン用途で細々と命脈を保つ事になるであろう。

第二の予言
しかし、もしこの危機を乗り越えることができれば、 いずれ奇跡の復活を遂げることができるだろう。
タコ・メモリの烙印を押されていたDRDRAMは、プリフェッチ機構付き 新型CPUの進歩により本来の性能を取り戻し、 再評価される日が来るであろう。8)


当たるも八卦、当たらぬも八卦。この予想は当たるのであろうか?
これを確認したいのであるが、現状ではアスロンMPとDRDRAMの双方に対応 したチップセットはない。しかも、短期的にはバンド幅の要求が厳しくないはずなので DDRの方がマッチングがよいと予想される。したがって、第一段階は こちらで普及する可能性が大だ。

もっとも、このようなマザーがあったとしても、 貧乏人たるさんの財布を見ると...ふうぅ〜、 ため息である。




2)
ただし、実験のためVC-SDRAMを1枚買った事はある。 悲しいことに、思ったよりも効果は少なかった。

3)
DRDRAMや、たるさんが試みに買ったVC−SDRAMは、その希有な例である。

4)
これはPentiumII-266を使用している家のメインマシンでは上限値である。 これ以上増設すると、2次キャッシュのタグRAM容量が足らないので、 これ以上のメモリ領域は2次キャッシュが効かなくなる。

5)
念のため書いておくが、スワップさえなければ家の PentiumII-266マシンよりはもちろん速い。腐っても鯛である。

6)
もう一つは、キャッシュアルゴリズムを変えるという方法で、 従来はダイレクトマップ方式が主流だったアルゴリズムが、最近では4Way程度の セットアソシエイティブ方式を採用するCPUが多いようだ。 しかし、この方法は副作用(タグRAM参照時間の増加等)も強く、 フルアソシエイティブに近づくほど速くなるかというと、 必ずしもそうでもないといわれている。

7)
せっかくの高バンド幅が生かせないという意味で、Pentium4と DRDRAMの組み合わせには、ちぐはぐな印象を受けている。 この組み合わせがうまく機能するのはビデオ編集くらいだと思う。 Pentium4とSDRAMの組み合わせが解禁された現在(2001年8月末日)、 いずれユーザーによってPentium4システムではDRDRAMと SDRAMにほとんど体感速度差がでない事が示されるのではないか?  これは、もちろんPentium4に効果的なハードウエアプリフェッチ機構が 組み込まれていない事による。
(増補2001 9/27)Pentium4に組み込まれている プリフェッチ機構は以下の通り。
1.プリフェッチ命令による明示的なソフトプリフェッチ機構
  ソフトウエアなのでアプリ側の対応が無いとまったく機能しない。
2.命令プリフェッチ
  命令を一度に32byteずつ読み込むという機構。だが、単にこれだけでプリフェッチ を名乗るのはおこがましいのではないか?
3.データプリフェッチ
  数回データミスが続くと発動し、256byte先の内容を キャッシュライン2つ分取り込むというもの。必要な情報がどこにあるかを予測せず、 勝手に256byte先に決め打ちでフェッチするため、 これもプリフェッチとは言い難いのではないか?
(たるさんの考えでは、予測に基づいて先行アクセスするのが 本当の意味でのプリフェッチである。 決め打ちフェッチでも名乗る資格ありとするならば、 単なるパイプライン動作でのフェッチもエグゼキュートに 先立つという意味ではプリフェッチになってしまう。)

8)
某社には大変失礼ながら、もしDRDRAMがそこまで持ちこたえられなかった場合、 次期スタンダードメモリはプロトコルタイプの 半シリアル伝送方式を採用すると予想する。 DDRII程度までは従来タイプのインターフェイスでも性能向上を維持できるだろうが、 それ以降はバスのbit数でバンド幅を稼ぐ構造での性能向上は難しいだろう。 かといって、高周波化もバス構造では限界が近いと思われる。

(補足 2001年9/14追加)
プリフェッチ機構の背景について、「初心者にもっとわかりやすく解説するように。」 というメールが来たので補足を追加した。 テクニカルターム無しでわかりやすく説明する分、 細部が不正確になるのはお許しいただきたい。

まず、今のパソコンであるが、CPU内部のクロックと CPUが外部にアクセスするクロックの周波数の乖離が どんどん大きくなっていることはよくご存じだろう。 では、乖離が進むとどうなるのであろうか?  例えば、内部クロック1GHzで外部クロック100MHzの場合、 外部で1クロック遅れが出ると、内部の遅れは10倍の 10クロックにもなるわけである。 だから、乖離が進めば進むほどメインメモリ(外部クロックで動作する)に アクセスすることが不利になるわけである。

この対策として、2次キャッシュの増量などが打ち出されているが、 これはあくまで対症療法である。 遅れを解消するための基本は、メインメモリが読み出し要求を受けてから 少しでも素速くデータを読み出すことにある。 しかし、現状のメモリはコンデンサに電荷を蓄える方法でデータを記憶しており、 この場合、現状のテクノロジではどうしても30ns程度待たされるのは やむを得ないのである。

今日の高速メモリでも、実はこの「最初に待たされる時間」は ほとんど高速化していない。 そのあとに連続して出てくるデータが非常に高速なので、 「平均の」待たされ時間が小さくなるだけなのである。

ところが、実効的な処理能力は、この「最初に待たされる時間」で決まる のである。 長く待たされた後で大量のデータが届くようなメモリでは 「単位時間当たりの転送データ量(バンド幅)が大きくなる」ので カタログ性能は上がるが、 実効的な処理能力はデータストリーム処理以外ほとんど変わらない。 つまり現状の高速メモリは、カタログ性能だけの見かけ倒しなのである。

この問題を解消するために考え出されたのがプリフェッチ機構である。 この動作原理は以下の通りだ。「最初に待たされる時間」を0にするために、 読み出すデータを事前に予想し、読み出しの要求が出る前に事前に 読み出しておくのである。 読み出しに30nsかかるのであれば、 30ns前に予測に従って読み出し要求を出しておけば、遅延0で データを取り込めるという理屈である。




讖書とは?
讖書とは予言の書を意味する。当たるも八卦、当たらぬも八卦のコーナーである。