今回はメモリのCAS Latencyについてお話したいと思います。
CAS Latencyは自作ショップでメモリなどの説明にCL=14などという表記で書いてあることがありますが、普通の家電量販店などでは店員さんに聞いてもわからないかもしれません。
「DDR4 SDRAM」のSDRAMとはSynchronus DRAMの略で動作クロックと同期して動作するのDRAMのことです。
SDRAMは基本的にメモリの動作クロックと同期して動作しますので言葉通りの性能が発揮できればLatency(遅延)は発生しないように思えます。
しかし、残念ながらメモリにアクセスするときには待ち時間が発生します。これが一般にCAS Latencyと呼ばれるものです。
CAS Latencyはなぜ発生するのか?
メモリセルとアクセスの仕組み
メモリセルは上の図のように格子状になっており、アクセスするにはRowとColumnのアドレスを指定する必要があります。
行(Row)のアドレスを指定してから列(Column)のアドレス指定して読み込みをするという手順になります。
またDRAMの特性として読み込んだ後はメモリの内容が空になるので、メモリの内容をあらかじめ別の場所にコピーしておき、読み込みが終わったら再度メモリの内容を移さなくてはならなりません。
この動作をプリチャージと言い、この動作にも待ち時間が発生します。
列のアドレス(Column)を指定してから実際にデータが送られてくるまでの待ち時間をCAS Latencyと言い、CL=9などの数字で表します。
自作パーツショップで販売されているメモリの解説に「CL2-2-2-6」などの数字が入っていることがあります。
この数字が具体的に何を指すのかを解説したのが上の図です。
非常に簡略化されている図ですので、これがすべてではありません。
赤字のカッコ内に書いてあるのが順番になり、
CAS Latency - Row Col Delay - Row Precharge - Row Accesstime
となります。4番目の数字は入っていないこともあります。
上の図は作成の都合上CAS Latencyが小さかった時代のメモリを例にして解説しています。
上の図の場合、CL2-2-2-7になります。
DDR以降のメモリの場合、クロックの立ち上がりと下がりを同期信号としているため、CAS Latencyの最小値は0.5となります。
また、DDR3、DDR4など新しいメモリになればなるほどCAS Latencyの数字は大きくなる傾向があります。
過去にあったCAS Latencyに対する誤解
CAS Latencyは新しいメモリになればなるほど大きくなっていくため、DDR2世代くらいまではネットでは「新しいメモリの方がアクセス速度が遅くなる」と言われていました。
これは間違いです。
CAS Latencyはあくまでもクロック単位での遅延です。
新しいメモリは動作クロックが上がっておりますので、CAS Latencyの値が大きくなってもアクセスの絶対速度は速くなります。
但し、例えばDDR3とDDR4で同じ速度のメモリだった場合、DDR4のほうがCAS Latencyが大きくなる傾向がありますので、その場合は速度は遅くなります。
各世代ごとにメモリの速度はオーバーラップしていますので、このような逆転現象が起きることがあります。
各メモリの動作クロックごとのCAS Latencyでどのくらいの速度になるかをまとめたのが下の表です。
SDR-DDR2 CAS Latency VS True Latency
世代 | 型式 | 速度(MT/s) | Cycle Time(ns) | CAS latency | 実際の遅延(ns) |
SDRAM | PC100 | 100 | 10.000 | 2 | 20.00 |
PC133 | 133 | 7.500 | 3 | 22.50 | |
DDR SDRAM | DDR-333 | 333 | 6.000 | 2.5 | 15.00 |
DDR-400 | 400 | 5.000 | 3 | 15.00 | |
2.5 | 12.50 | ||||
2 | 10.00 | ||||
DDR2 SDRAM | DDR2-400 | 400 | 5.000 | 4 | 20.00 |
3 | 15.00 | ||||
DDR2-533 | 533 | 3.750 | 4 | 15.00 | |
3 | 11.25 | ||||
DDR2-667 | 667 | 3.000 | 5 | 15.00 | |
4 | 12.00 | ||||
DDR2-800 | 800 | 2.500 | 6 | 15.00 | |
5 | 12.50 | ||||
4.5 | 11.25 | ||||
4 | 10.00 | ||||
DDR2-1066 | 1066 | 1.875 | 7 | 13.13 | |
6 | 11.25 | ||||
5 | 9.38 | ||||
4.5 | 8.44 | ||||
4 | 7.50 |
DDR3 CAS Latency VS True Latency
型式 | 速度(MT/s) | Cycle Time(ns) | CAS latency | 実際の遅延(ns) |
DDR3-1066 | 1066 | 1.875 | 7 | 13.13 |
DDR3-1333 | 1333 | 1.500 | 9 | 13.50 |
7 | 10.50 | |||
6 | 9.00 | |||
DDR3-1600 | 1600 | 1.250 | 11 | 13.75 |
10 | 12.50 | |||
9 | 11.25 | |||
8 | 10.00 | |||
7 | 8.75 | |||
6 | 7.50 | |||
DDR3-1866 | 1866 | 1.071 | 10 | 10.71 |
9 | 9.64 | |||
8 | 8.57 | |||
DDR3-2133 | 2133 | 0.938 | 12 | 11.25 |
11 | 10.31 | |||
10 | 9.38 | |||
9 | 8.44 | |||
8 | 7.50 | |||
7 | 6.56 | |||
DDR3-2400 | 2400 | 0.833 | 13 | 10.83 |
12 | 10.00 | |||
11 | 9.17 | |||
10 | 8.33 | |||
9 | 7.50 | |||
DDR3-2666 | 2666 | 0.750 | 15 | 11.25 |
13 | 9.75 | |||
12 | 9.00 | |||
DDR3-2933 | 2933 | 0.682 | 12 | 8.18 |
DDR3-3000 | 3000 | 0.667 | 12 | 8.00 |
DDR4 CAS Latency VS True Latency
型式 | 速度(MT/s) | Cycle Time(ns) | CAS latency | 実際の遅延(ns) |
DDR4-2133 | 2133 | 0.938 | 16 | 15.00 |
15 | 14.06 | |||
14 | 13.13 | |||
DDR4-2400 | 2400 | 0.833 | 17 | 14.17 |
16 | 13.33 | |||
15 | 12.50 | |||
DDR4-2666 | 2666 | 0.750 | 17 | 12.75 |
16 | 12.00 | |||
15 | 11.25 | |||
13 | 9.75 | |||
12 | 9.00 | |||
DDR4-2800 | 2800 | 0.714 | 17 | 12.14 |
16 | 11.43 | |||
15 | 10.71 | |||
14 | 10.00 | |||
DDR4-3000 | 3000 | 0.667 | 17 | 11.33 |
16 | 10.67 | |||
15 | 10.00 | |||
14 | 9.33 | |||
DDR4-3200 | 3200 | 0.625 | 16 | 10.00 |
15 | 9.38 | |||
14 | 8.75 | |||
DDR4-3300 | 3300 | 0.606 | 16 | 9.70 |
DDR4-3333 | 3333 | 0.600 | 16 | 9.60 |
DDR4-3400 | 3400 | 0.588 | 16 | 9.41 |
DDR4-3466 | 3466 | 0.577 | 18 | 10.38 |
17 | 9.81 | |||
16 | 9.23 | |||
DDR4-3600 | 3600 | 0.556 | 18 | 10.00 |
17 | 9.44 | |||
16 | 8.89 | |||
15 | 8.33 | |||
DDR4-3733 | 3733 | 0.536 | 17 | 9.11 |
DDR4-3866 | 3866 | 0.517 | 18 | 9.31 |
DDR4-4000 | 4000 | 0.500 | 19 | 9.50 |
DDR4-4133 | 4133 | 0.484 | 19 | 9.19 |
DDR4-4200 | 4200 | 0.476 | 19 | 9.05 |
DDR4-4266 | 4266 | 0.469 | 19 | 8.91 |
18 | 8.44 | |||
DDR4-4800 | 4800 | 0.417 | 19 | 7.92 |
CAS Latencyの違いで演算結果にどのくらいの差が表れるのか?
SuperPIを使って演算させたとき、DDR3-1333のCL7とCL9で約1%程差がつくようです。
科学技術演算などでずっと演算させておく場合にはトータルで考えると結構な差となる可能性がありますが、ゲーミングPCではそれほど神経質になるような差はつかないと考えておいた方がよいでしょう。
※ もっともCLを明示しているBTOショップは見たことがありませんが・・・。
BTOの場合は「2枚一組になっているか」や「メモリの速度そのもの」を気にしたほうが良いでしょう。
オーバークロッカーでベンチマークの結果に一喜一憂している方ならメモリ設定もギリギリまで詰めるのでしょうが、少なくともこうした特殊な用途に使ってない限りはそれほど神経質になるようなものではありません。
オーバークロッカーという人種は個人で液体窒素を購入したり、こんな風にメモリにも偏執的にこだわる人たちです。
あまり一般的とはいいがたい感覚だとは思いますが、ゲーマーの方も偏執的なこだわりを持っている方が少なからずいると思いますので、気持ちはわかるのではないでしょうか。
メモリのランクもそうですが、ゲーミングPCに使う皆さんに知っておいて欲しいのは、同一容量メモリでも内部的な違いがあるということです。
そのため、デュアルチャンネルの場合、メモリは出来る限り二枚一組セットで購入していくのが原則です。
ちなみにCAS Latencyの違う同一容量、同ランクのメモリ同士を混ぜて使った場合、高速なメモリは低速なメモリの設定を持っているため、問題なく動く可能性が高いです。
但し、絶対に正常動作することを保証するものではありませんし動かない可能性もありますので、あまりお勧めしません。
CAS Latencyはランクと違って普通に使う分には知らなくても問題はあまり発生しないため、解説するかどうか迷いましたが、知っておいた方がよいと思うので、一応簡単な説明を行いました。
あくまでも自作ユーザーから見た簡易的な説明ですので、もっと詳しく知りたい方はご自分で調べられることをお勧めします。
また、もっと詳細に解説できる方から見ると「厳密にいえば違う」というような表現もあろうかと思いますが、簡易的な説明ですので、ご容赦ください。