CPUキャッシュの効果

2002年11月2日公開

CPUキャッシュについて
 CPUにキャッシュと呼ばれるメモリーが内蔵されているのは、ちょっとPCをかじっていればご存知のことと思います。
 CPUの処理速度に比べてメインメモリーのアクセス速度は遅いため、そのままではシステム全体の速度はメモリーに制限されてしまうのですが、CPUとメインメモリーの間にキャッシュメモリーという高速なメモリーを用意し、ここに頻繁にアクセスするデータを置いておくことで、低速なメインメモリーへのアクセスを減らし、システム全体の性能を上げると言うものです。現在ではキャッシュメモリーは2段構えになっていて、超高速で数十〜百数十KBほどの容量の一次(L1)キャッシュと、それなりに高速で数百KB〜数MBの容量を持つ二次(L2)キャッシュに分かれています。
 プログラムの中で頻繁にアクセスする部分が全てキャッシュメモリーに収まってしまえば、実質的にキャッシュメモリーの速度がシステム全体の速度を決めてしまうわけで、CPUメーカーはキャッシュメモリーの容量や速度、キャッシュのアルゴリズム(プログラムのどの部分を、頻繁にアクセスする部分と判断するかを決めるやり方)の改善に力を注ぐわけです。
 CPU選びの指針にしている人もいるのではないでしょうか?

CPUキャッシュの効果の検証
 と、良いことずくめのキャッシュメモリーですが、本当のところその効果は一体どの程度なのでしょうか?
 BIOSの設定画面を見ると、Internal CacheやExternal Cacheの設定画面があり、一次キャッシュと二次キャッシュをそれぞれ有効/無効に出来るとあります。そこで、このBIOSのキャッシュ設定を色々変えて、CPUキャッシュの効果を検証してみることにしました。
 検証に使ったPCは私のメインマシンで、CPUはDuron/1GHz(L1-128KB、L2-64KB)、マザーボードはAOpenのAK-73Pro、メモリーはVC-SDRAM(PC133-CL2)-256MB、ビデオカードは初期型RADEON 64MB DDR(RADEON7200)です。

メモリー
mspeed  最初は、メモリーベンチマークです。
 MemSpped1.1での結果が右のグラフです。BIOSのキャッシュ有効/無効の設定によってアクセススピードが変化し、設定が効いている様子が良く現れています。
 L2をOFFにすると128KB領域の速度が遅くなるのは当然のことですが、256KB以上の領域に於いても、若干の速度の低下が見られます。
 L1をOFFにするとメモリースピードは激減し、全ての領域で10MB/s程度の速度になってしまいました。L1をOFF、L2をONにしても結果は全く同じで、L1がOFFだとL2は自動的にOFFになってしまうものと推察されます。

coretest99  上の結果は、Coretest99でのベンチマーク(右図)でもまったく同じでした。

HDBENCH
hdbench330  次は定番中の定番ベンチマーク、HDBench。
 L2−OFFでは、DirectDrawが4割ほど、全体的におおよそ約1割程度の性能低下が見られました。
 L1−OFFでは、メモリーベンチマークの結果を反映して、ほとんどの項目で性能が激減しました。ただディスクアクセスにはさほど影響を受けず、またBitbltはビデオボード内で処理されているせいか、7割程度の性能低下にとどまっています。

Superπ
Superπ  次は数値演算系の定番Superπ。
 L1−OFFで性能が激減するのは他と同じですが、L2−OFFでも性能が半分以下と、かなりの影響を受けています。
 104万桁では8MB程度しかメモリーを使わないので、さらにメモリー使用量が多い419万桁でも試してみました。
 NormalL2 OFFL2 OFF/Normal
104万桁123sec283sec43.5%
419万桁603sec1608sec37.5%
 一番右の列を見てもらえば分かるように、メモリー使用量の多い419万桁の方がL2−OFFによる性能の低下が大きいのが分かります。メモリー使用量が多くなると、キャッシュ効率は低下すると思っていただけに意外な結果です。

3DMark
3DMark  最後に重量級グラフィックベンチマーク3DMark。
 このような重量級ベンチマークに於いてもL2キャッシュの影響は顕著で、L2−OFFで約3割程度性能が低下しました。さすがにグラフィックカードへの依存性が強い3DMark2001では低下率は2割強となっていますが、L2キャッシュの重要性を示す結果です。

まとめ
 L1キャッシュを無効にした場合、性能は元の数%程度に激減し、L1キャッシュがメモリーアクセス速度だけでなく、CPUの動作にも深く影響しているのがよく分かります。
 L2キャッシュに関しては、アプリケーションにもよりますが、その効果は約1割〜3割程度のようです。重量級ソフトではL2キャッシュはあまり効果が無いのではと思っていましたが、それなりの効果があるのは間違いありません。
 L2キャッシュ容量が64KBしかないDuronですが、これほど効果がはっきり出たというのは興味深いことです。


PC雑記帳に戻る
トップページに戻る