大事なメモリー

私がコンピューターに出会ったのは 言葉通り前世紀の話なのでメモリーが非常に高い時代でした。

標準メモリーが128Byteという時代なので、あまり聞かれたくない時代です。

その頃と比較するつもりはないので、PCと呼ばれるようになった時代いからだと、NECがPCという言葉を本格的に使いだした PC-8001の標準メモリーが16Kbyteその後の8801になって最大拡張メモリーが64kByteとなるわけです。

これは まあ必然で8BitのCPUで16Bitのメモリー空間だとアドレス空間がそこで限界だったからです。

そのあとのCPUの変化は16Bitになり32Bitになり今の主流は64Bitとなっているわけです。

それ以上は、通常の計算ではあまり必要がないのでGPUとかにお任せしたほうが効率が良いのでしょう。

 

そのメモリーですが PCにはかなりたくさんの種類のメモリーが積まれています。

RAMとSSDの話で両方をメモリーと言うにはちょっと無理があるといわれそうですがそっちではない。

RAMだけの話です。

今うちの家のPCは Ryzen CPUを積んでいるのですが一般的に言うRAMはDDR4と言われる規格のD-RAMが4本で32G刺さっています。

ちょっと多めなのですが それでも極端には多いわけではない時代になってきています。

ノートPCでもそれぐらいは積んでいるものがありますので。

それに GDDR6と呼ばれるより高速なRAMを12Gほど積んでいます。

これは、CPUに直結しているのではなく GPUの先 つまりグラフィックカード上にもメモリーがあります。

単純に足し算すると 44Gという結構な容量のRAMを積んでいます。

これらはプログラムを置いて実行したり計算式や計算結果を置いたりすることに使われています。

 

今日の話は実はここでもありません。

この先のもう少し容量の小さなRAMたちの話です。

分かりやすいのは SSDやHDDに積まれているRAMでしょうか

キャッシュと呼ばれるもので 読み書きの遅いHDDなどのメディアとの間に入って 一旦データをためて書き出したり 直前に書いたデータを覚えていてそこから引き出したりすることでスピードを上げるためのものです。

勿論、書き込みの時にブロック単位の書き込みなので それだけのデータをためるとかの働きもあるわけです。

これがあるおかげで、実際の速度の10倍程度の体感で処理されているといわれています。

その容量が数十メガと最初に書いたPCのRAM容量の話からすると遥か広大な空間になっていてちょっと感慨深いものがあったという話なのです。

これらのRAMは速いといいうのはHDDやSSDに比べてと言う話で PCの中の通常のRAMに比べるとはるかに遅いものが多いわけです。

それでもこれだけの効果があるわけです。

 

ところが、メインメモリーとなるRAMよりはるかに速いRAMもPCには搭載されています。

これがCPUの中にある 同じくキャッシュと呼ばれるメモリーです。

例えば (1+1)*(2+2)=?という式を考えた時に

処理的には 1+1を計算して その次に 2+2を計算します。

そして、その二つの結果を掛け算して結果を求めるわけですが、1+1を計算した結果をPCのRAMに置くより CPUの中のキャッシュメモリーを経由して書くことで っ次の計算で呼び出したときに通常のRAMに読みにいかなくても 消えていなければキャッシュメモリー内の答えを参照すればずっと時間が短縮できます。

この程度の計算であれば CPUの中のレジスタと言う箱に収めておけば CPUの動作速度と同じ速度で読み出し可能なのですが それは幾つかしかないので RAMに書き出すとなるときに CPUには3つのキャッシュが存在して それを経由します。

ただ、残念なことに高速なメモリーは 非常にコストが高くCPUとの結合方法も難しいことから(すごく近くに置かないと信号が移動する速度分の遅れが出るレベルです)容量が限られていて 最近のCPUでは 3段階の速度と容量で設置されています。

最も高速なものはL1キャッシュと呼ばれるもので 私のCPUでは1M搭載されています。これはCPUのクロック4回分で読み出し可能な超高速RAMです。

そして、もう少し遅いがもう少し容量の多いL2キャッシュと呼ばれるものは 6M搭載されていて こちらはCPUの15クロックぐらいでの読み出しが可能でL1に比べると6~7倍時間がかかるものの その倍数ぐらいの容量があります。

そして 最も遅くて容量が多い L3キャッシュと呼ばれるものは64M搭載されています。これってPC-8801の最大容量のちょうど1024倍なんですけどね・・・・

これで CPUの50クロックぐらいで読み出し可能となり L1と比べると1/12ぐらいの速度の鈍足感ですが それでもメインメモリーとなるDDR4メモリーに比べると 6倍ほどの速度なので十分に効果があります。

 

最近の高性能CPUはキャッシュ容量でグレードを作り分けているようなところもあるので(コア数とか 付帯する計算回路の追加などもある)キャッシュの効果は言うまでもありません。

ちなみにHDDと比べると メインメモリーで0が6個分ぐらい違うのでやはりそれでもRAMが速いとなるわけなのです。

さて、CPUだけで 1+64+1024なので合計1089MのRAMが搭載されているのですが これらのRAMはHDDやSSDのキャッシュを含めて一時置き場で記憶場所として使えるわけではありません。

PC-8001の頃はRAM不足で FDDのユニットのRAMまで利用してRAM不足を解消したのですが 今やCPUだけで その1000倍以上は速度を上げるための通過路として使われているに過ぎないのです。

よく、SDカードの容量の変化で時代を語ったりしますが 私の生きていた時代で考えるとそんなもんじゃない変化が感じられるわけです。

そして、その時代に大事にしてきた小さな単位は 今では容量的には無駄に使っている部分だとするとなると感慨深いものがありますね。

勿論、そういいながらSmartPhoneにすら 12GRAM256GSSDなんて選んでいるわけですが・・・・