最近、家のPCがやたら遅いなぁと思ったら、メインPCの故障で
サブPCがメインPCに昇格したときに、メモリが512MBになってました。
Windows XPを512MBで動かして、eclipseやらVisual Studioやら使うのは無理があります。
下手すると常駐ソフト+Firefoxでページファイルが512MBを超えます。
余裕がない!
まぁ、チューンドFirefoxなので、あまりブラウジングスピードは変わってませんが、
やっぱりeclipseやらVisual Studioやらは重いし、
複数並行処理するには無理がありました。

そこで、GARO君が久しぶりに出てくれたのを受け、
2GBのメモリを2枚買ってきて、見事に認識してくれないのでした。

というわけで今日交換にいってきました。
結論、マザーボードが1GBまでしか認識しないらしい…。
お店の人に確認したのに。
お店でネットが使いたかったです。

2GBの中古メモリが1枚8000円位だったのですが、
1GBの新品ノーブランドメモリが1枚8000円します。
流石に、同じ値段出して容量半分になるのは・・・
と、512MB×2にしたのでした。

1GB×1にしなかったのはデュアルチャネルを使いたいから。
ボクのメモリPC3200のDDR400なので、同じメモリを探すのが難しいのです。

デュアルチャネルってRAID1みたくするのかと思ったら、
仕組みはRAID0なのですね。

Pentium3位で自作しなくなったので、あまり最近のCPUやらメモリ事情に
明るくなかったのです。

昔々、ベースクロックが66MHzsと100MHzsと133MHzsだったのです。
そのまた昔は486SXだったので20MHzsとかでしたが、
セレロンが出てきたころはこの3つ。

PC3200は、データ転送速度が3200MHzsということ。
1秒間に3200MBytes相当のデータを送ることができます。

実はベースクロックは100MHzsのままだったんですね。
CPUのクロックはCPUのベースクロックの掛け算だったので、
メモリは100MHzs以上になる必要がなかったのです。

当時メモリの主流はSIMMでした。Single In-line Memory Module.
何かというと、裏表にメモリ素子をつけて、同時に読み書きしていました。
この制御を別々にしたのがDIMM Double In-line Memory Module.

そして、ダイレクトマッピングという、CPUとメモリのアドレスを1対1対応させた
DRAM Dynamic Random Access Memoryというメモリが主流になりました。
バスがベースクロックと同期するので、Synchronous DRAMということで、
SDRAMでした。
この同期のスピードを2倍に拡張したのが、
Double Data Rate SDRAM、DDR SDRAM。
クロック信号の立ち上がりと立下りの両方を利用することで
2倍の通信速度を実現しました。

なので、DDR400は200MHzsのベースクロックに対して、200MHzsのクロックで
400MHzsとして動作します。
64bitモジュールなので、8Byte すなわち3200MHzsのデータを転送できます。
だから、PC3200のDDR400
計算すると、PC3200はDDR400にしかならないのですね。
2つ数字を併記してあるので2つ必要なのだろうと思い込んでいたあたりから
間違えていたようです。

DDRは2bitのプリフェッチ機能を持ってます。
これを4bitに拡張したのがDDR2
8bitに拡張したのがDDR3
それぞれ、SDRAMに比べると、4倍、8倍の転送速度を実現しています。
ビット単位で拡張するから、DDRの2倍の次は3倍ではなくて4倍=2×2倍なのですね。

次に問題になるのが、CPUはメモリコントローラとやりとりするのですが、
実メモリのアドレスを指定するには、メモリの行と列を指定する必要があります。
ここで出てくるのがCASレイテンシ Column Access Strobe latency (CL)です。
メモリの列を指定してから、実際に転送できるようになるまでの時間です。
通常、列を指定してから、行を指定します。
列に対する遅延時間がRASレイテンシ Row Access Strobe latency
列指定の時間を求めることにあまり意味がないのでCASレイテンシに注目されます。

これはクロックであらわされてCL2なら2クロック、CL3なら3クロックかかります。
要は実際のデータ転送の時間プラス2クロック、3クロックの時間が必要です。
とはいえ、クロックが400MHzsなら、400万分の1×2なので、200万分の1秒
取得するデータ量が多ければあまり問題にはなりません。

ところで、デュアルチャネルで早くなるのはOSのメモリアクセス等であって、
インテルのチップセット内部の処理は早くならないんですね。
ちょっと残念。

きちんと理解するにはインテルの資料を読むのが一番でした。
いやぁ、電子工作とPCの知識が重なると楽しいです。

参考)
Intel Dual-Channel DDR Memory Archtecture White Paper
http://www.kingston.com/newtech/MKF_520DDRWhitepaper.pdf
Wikipedia SIMM
http://ja.wikipedia.org/wiki/SIMM
Wikipedia DIMM
http://ja.wikipedia.org/wiki/DIMM
Wikipedia DDR SDRAM
http://ja.wikipedia.org/wiki/DDR_SDRAM
Wikipedia DDR2 SDRAM
http://ja.wikipedia.org/wiki/DDR2_SDRAM
Wikipedia DDR3 SDRAM
http://ja.wikipedia.org/wiki/DDR3_SDRAM
e-words CASレイテンシ
http://e-words.jp/w/CASE383ACE382A4E38386E383B3E382B7.html