PC 教室ハードウエア ⇒ キャッシュ

ハードウエア~CPU の進化とメモリ(キャッシュ)

CPU は、色々な技術改良がなされ、大変なスピードで処理能力を高めてきました。 それに比べると、メモリは、基本的な部分は何も変わっていないと言って良いほど、変わっていません。 未だに、リフレッシュサイクルが必要な DRAM を使っています。

つまり、CPU がメモリにアクセスしたとたんに、 CPU が、待たされてしまうようになってしまったのです。 CPU の処理能力を高めても、計算機全体の処理能力が、さほど上がらなくなってしまい、 メモリの遅さが、 ボトルネックになってしまったのです。

メインメモリに低速な DRAM を使わず、 高速なメモリチップに交換すれば、このボトルネックを解消することが出来ます。 しかし、DRAM 以外のメモリチップは、 DRAM と比べると価格が高いのです。 もし、DRAM の代わりに、これらの高速なメモリチップを採用すると、 PC の値段が跳ね上がってしまい、現実的な選択肢とはなりません。

Pentium II ブロック図

そこで、CPU とメモリの間に、 コストと折り合いがつく範囲の容量で、高速なメモリを搭載するようにしました。 このメモリのことをキャッシュメモリ(Cache Memory)と呼んでいます。 単にキャッシュということもあります。

結論から言うと、これだけでも CPU が、メモリアクセスによって足を引っ張られる度合いが激減したのです。

視覚的に理解する手助けとして、Pentium II の内部のブロック図を示してあります。 参考にしてください。

CPU は、直接メモリと話をせずに、キャッシュメモリと話をすることで、間接的にメモリと話をするようになりました。 CPU は、メモリからデータを読み込む場合、キャッシュメモリにお願いをします。 CPU からお願いされたキャッシュメモリは、 お願いされたメモリ番地のデータが、自分の中に無いと、 そのデータをメモリから読み出して、CPU へ渡します。 この場合は、CPU が直接メモリへアクセスしたのと同じ事になります。

ただし、この時、キャッシュメモリは、そのメモリ番地を先頭にして、 キャッシュメモリの容量分のデータを一気にメモリから読み込み、キャッシュを満たします。

CPU のメモリアクセスは、比較的番地の近いデータに集中する傾向があります。 ですから、このようにしておくと、CPU が次回に必要とするデータは、キャッシュ内に貯えられている可能性が高くなります。 キャッシュ内に蓄えられているデータならば、メモリから読み出す必要はなく、 CPU は、キャッシュからデータを貰えば良いことになります。 キャッシュは、アクセス時間が短いので、CPU が待たされることはありません。

キャッシュを構成する論理は、こんなに単純なものではありませんが、概要はこういう事です。

キャッシュメモリは、 そのアクセススピードの速い順に、階層化されて実装するのが普通です。 早いものほど、CPU に近く、遅いものほど、メモリの近くに実装します。

アクセススピードの早いものほどコストも高いので、容量も少なくなります。 Pentium II の場合は、二つの階層があります。 それ以上の階層を持つものもあります。

CPU に近い所から、 1 次キャッシュ(L1 キャッシュ)、 2 次キャッシュ(L2 キャッシュ)、 3 次キャッシュ(L3 キャッシュ) ... と呼ばれます。

メモリモジュールの方でも工夫がなされました。 CPU が直接繋がっていた時は、リフレッシュサイクルとリフレッシュサイクルの間で、 やり取りできるデータの量が少なかったのですが、キャッシュとのやり取りのことを考慮して、 バーストモードという、一度に大量のデータを転送できるモードなどを用意するなど、 処理能力が高まるような様々な改良が施されています。

また、PC/AT 互換機の場合は、 CPU とメモリ間のデータ転送スピードを高める為、 メモリ専用のバスを別にしました。このバスのことを FSB と言います。 メモリモジュールは、この FSB に適合するものにしないといけないわけです。 PC100 SDRAM DIMM は、 動作クロック 100Mhz FSB に繋げる為の DIMM です。 他には、 PC133 SDRAM とか、 バーチャルチャネル SDRAM とか、 DDR SDRAM とか、 Direct RDRAM RIMM などの種類があります。

Pentium II は、L1 キャッシュも、 L2 キャッシュも、 CPU に実装されています。 ですから、キャッシュメモリを目にすることは出来ませんが、 CPU の善し悪しを判断する上で、 このキャッシュメモリも大きな要因の一つですから、理屈を理解する必要はなくとも、 こういうものがあり、判断材料の一つであることだけは、押さえておいてください。

キャッシュメモリの性能を決めるのは、容量と動作クロックです。 容量は大きい程、動作クロックは、早ければ早い程良いと言えるでしょう。 AB、二つのものを比較したら、 A のキャッシュメモリは、 B のそれの 2 倍の容量があるけれど、 動作クロックは、 B のそれの ½ の速さしかないとしたら、 多分、B の方が処理能力が高いと判断できます。