図1●体感で遅く感じる三つの場合と実施したテスト
元々時間がかかる処理が早く終われば,誰にとっても体感速度の向上を感じやすい。パソコンで時間がかかる処理には3種類ある。OS/アプリケーションの起動と,多数のファイルに対する操作,巨大なファイルに対する操作の三つである。テストに使ったWindows XPには,Norton AntiVirus2003とOutlook Express 6を常駐させた。Windows XPの起動時間は,常駐ソフトがすべて起動するまでを測った。
図2●キャッシュの構成
CPUと主記憶,ハードディスクという三つの構成要素の間にそれぞれ2種類ずつのキャッシュがある。下の構成要素ほどデータ転送速度が遅く,その遅さを隠すためにキャッシュを使う。図はIntelのCPUの場合。
図3●パソコンの内部構造とキャッシュの仕組み
大きくCPU,チップセット,主記憶,グラフィックス・サブシステム,ハードディスクからなる。図は米Intel社のCPUを使った場合。
 「パソコンを買い換えたら,体感速度が向上した」――。

 ここでいうパソコンの「体感速度」とは,何を表しているのだろうか。少なくとも,CPUの動作周波数やハードディスクの容量ではないはずだ。体感速度はその名の通り,人が体で感じる速度のことである。

 誰も体感速度が遅いパソコンは使いたくない。パソコンの体感速度を上げる方法があれば知りたいだろう。しかし,体感速度の感じ方には個人差がある。

 そこで,体感速度を単純化してとらえてみることにした。体感速度が遅いということは,要するに,一定の間待たされてイライラするということだ。つまり普段長くかかる処理が短時間で終われば,誰にとっても体感速度は向上するといえる。

 パソコンを普通に使っていて時間がかかる処理には,大きく次の三つがある(図1[拡大表示])。(1)OSやアプリケーションの起動,(2)多数のファイルに対する操作,(3)巨大なファイルに対する操作,である注1)。今回は,同じパソコンのCPUと主記憶,ハードディスクを交換しながら,これらの処理時間がどれだけ変わるかを調べた。すると,体感速度向上の決め手となる機能が浮かび上がってきた。それはCPUとハードディスクが備える「キャッシュ」だった。キャッシュ・サイズの大小が体感速度の向上に大きな影響を与えるのだ。

CPUや主記憶の速度ギャップを埋める

 パソコンは大きく三つの構成要素からなる。CPUと主記憶,ハードディスクである。速度で見ると,CPUが最も高速で,主記憶が中間,ハードディスクが最も遅い。キャッシュは,このように速度が違う構成要素の間に置く。目的は,速度の遅い構成要素に対して,見かけ上高速にアクセスできるようにすることである。

 キャッシュを使うとなぜアクセスが高速になるのか。CPUと主記憶の間のキャッシュを考えてみよう。CPUが主記憶にアクセスする際には,まずそのデータがキャッシュ内にあるかどうかを調べる。キャッシュにあれば高速にデータを取り出せる。キャッシュには主記憶に用いるDRAMより高速なSRAMを使うからである。

 キャッシュにない場合はCPUが主記憶に直接アクセスする。その際に,目的とするデータだけでなく,そのデータを含む一定サイズの主記憶の領域を読み出しキャッシュに入れておく。その領域に存在するデータであれば,次回のアクセスではキャッシュから高速に取り出せる。Pentium 4/Celeronの場合は,1回につき128バイトずつ主記憶からデータを読み出す。このサイズをラインサイズという。

 データの書き込みも,キャッシュに対して行うことで高速化できる。ただし書き込んだ内容はいずれ主記憶に反映しなければならない。通常は,そのデータがキャッシュから消去されるタイミングで主記憶に書き出す(ライトバックという)。

 主記憶とハードディスク間のキャッシュも基本的な仕組みは同じである。ハードディスクはディスクよりも高速なDRAMをキャッシュとして内蔵している。これを使って,主記憶とハードディスクの間のデータ転送を高速にする。

 CPUと比べると主記憶は遅く,主記憶と比べるとハードディスクは遅い。そうした遅い構成要素の代わりに,キャッシュにアクセスする頻度が上がれば,それだけパソコンは速くなる。そのためにはキャッシュは通常,容量が大きいほど効果が高い。容量が少ないと,欲しいデータが既にキャッシュから消去されている可能性が高まるからだ。しかしキャッシュを大容量化するとコストがかさむ。実際にはコストや実装のしやすさを考慮してキャッシュ・サイズを決めることになる。

2段階のキャッシュで高速アクセス

 主記憶やディスクの“速度”には,厳密には二つある。一つはデータを連続して転送する速度。もう一つが,「レイテンシ」の短さである。レイテンシとは遅延時間のことだ。アクセス要求を出してから,実際の読み出し/書き込みが始まるまでのクロック数で表す。どちらもパソコンの実効性能に大きく影響する。

 レイテンシは特にCPUのキャッシュで重要になる(図2[拡大表示])。Pentium 4とCeleronの場合,CPUと主記憶間のキャッシュはCPUチップに内蔵されている。内蔵するキャッシュには1次キャッシュと2次キャッシュの2種類がある。データ転送速度は基本的に同じで,レイテンシが異なる。

 レイテンシが短い1次キャッシュは,2次キャッシュよりも容量が小さい。なぜなら,短いレイテンシを確保するには,CPUチップの内部でCPUコアの近くに実装する必要があり,容量に制限が生まれるからだ。Pentium 4/Celeronの場合,1次キャッシュは命令用とデータ用に分かれている。命令用キャッシュには,マシン語の命令を,CPU内で実行するマイクロ命令にデコードした結果を格納する。約1万2000個のマイクロ命令を保持できる。命令キャッシュのレイテンシは0である。データ用には8Kバイト用意されおり,レイテンシは2クロック(2GHz動作のCPUの場合,1クロックは0.5ナノ秒)である。

 1次キャッシュの厳密なデータ転送速度は計算しにくい。個々の命令のメモリー・アクセスをデータ転送速度に換算しづらいからである。

 2次キャッシュは,レイテンシが7クロックと遅いが容量が大きい。Pentium 4では512Kバイト,Celeronでは128Kバイトである。Pentium 4やCeleronの2次キャッシュには命令用とデータ用の区別がない。バス幅は256ビット(32バイト)。現在のPentium 4の動作周波数は最高で3.2GHzなので,その場合の最高データ転送速度は,32×3.2G=102.4Gバイト/秒となる。Celeronの動作周波数は最高2.6GHzで,そのときのデータ転送速度は83.2Gバイト/秒である。

CPUキャッシュは主記憶より20倍高速

 この2次キャッシュの速度と主記憶のデータ転送速度を比べてみよう。

 CPUから見た主記憶のアクセス速度は,二つの要素で決まる。CPUと主記憶の間には「チップセット」が介在する。CPUとチップセット間の速度と,チップセットと主記憶間の速度はそれぞれ異なる場合がある(図3[拡大表示])。その二つの速度の遅い方が,CPUから主記憶へのアクセス速度となる。

 CPUとチップセット間のバスは,FSB(フロントサイド・バス)と呼ばれる。Pentium 4は製品によってFSBの周波数が異なる。400MHz,533MHz,800MHz注2)の3種類がある。Celeronは動作周波数が1.7GHz以上の製品はすべて400MHzである注3)。FSBのバス幅はどちらも64ビット(8バイト)。データ転送速度はPentium 4が最高8×0.8G=6.4Gバイト/秒,Celeronが3.2Gバイト/秒となる。

 チップセットと主記憶間のデータ転送速度は利用するメモリー・モジュールの規格によって異なる。現在販売されている最高性能のPC3200の場合で転送速度は3.2Gバイト/秒である。これを2枚同時に読み書きするデュアル・チャネル構成で使うと6.4Gバイト/秒になる注4)。つまり現時点で最高性能のメモリーを使えば,CPUはFSBの最高速度で主記憶にアクセスできる。Pentium 4の主記憶へのアクセス速度は最高6.4Gバイト/秒,Celeronは最高3.2Gバイト/秒となる。

 一方の2次キャッシュのデータ転送速度は,Pentium 4が最高102.4Gバイト/秒で,Celeronが83.2Gバイト/秒。主記憶へのアクセス速度と比べると,どちらも20倍前後高速である。

(安東 一真)