CPUが動作する基準となる信号の周波数(Hz)
クロック周波数とは、CPU(=中央処理装置。コンピュータの計算の中心)が動作する基準となる信号が、1秒間に何回くり返すかを表す値です。この信号をクロック信号と呼び、ON(高電位)とOFF(低電位)を規則正しくくり返す矩形波になっています。
身近な例で言うと、合唱の指揮者が振るタクト(指揮棒)に似ています。指揮者が「1・2・1・2」と速くタクトを振れば歌い手も速く歌い、ゆっくり振ればゆっくり歌う。CPUの中の回路もこのクロック信号の「拍」に合わせて一斉に動くので、拍が速い(=周波数が高い)ほどたくさんの処理を進められます。
上のツールで周波数スライダーを動かすと、クロック信号の波の密度が変わります。周波数を上げると波が密になり、1周期(波1回ぶんの時間)が短くなるのを確かめてください。
周波数の単位は Hz(ヘルツ)です。1 Hz = 1秒間に1回くり返すという意味で、CPUのクロックは桁が大きいので接頭語をつけて表します。
よく使う単位は次のとおりです。
・kHz(キロヘルツ):1,000 Hz(103)
・MHz(メガヘルツ):100万 Hz(106)
・GHz(ギガヘルツ):10億 Hz(109)
クロック周期は周波数の逆数で求めます。周波数が高いほど周期は短くなります。
クロック周期 = 1 / 周波数
例: 2.5 GHz の場合
周期 = 1 ÷ 2,500,000,000
= 0.0000000004 秒
= 0.4 ns(ナノ秒)
1 ns(ナノ秒)= 10億分の1秒。つまり 2.5 GHz の CPU は、1秒間に25億回もの拍を刻んでいることになります。「周波数 ⇔ 周期」は逆数の関係でつながっています。
クロック周波数が高いほど、同じ時間でより多くの拍を刻めるので、一般には処理が速くなります。CPUの実行時間は次の式で表せます。
実行時間 = 命令数 × CPI × クロック周期
ここで注意したいのは、周波数が高い=必ず高性能、とは限らない点です。性能は次の3つの掛け算で決まります。
・命令数:プログラムが実行する命令の総数
・CPI:1命令あたりに必要なクロックサイクル数
・クロック周期:1拍にかかる時間(=1/周波数)
たとえば周波数が同じでも、1命令にたくさんの拍が必要(CPIが大きい)なら遅くなります。だから CPU を比べるときは、周波数だけでなく CPI や MIPS といった指標も合わせて見ることが大切です。「クロック周波数が高い=必ず高性能」とは単純に言い切れない点に注意が必要です。
「速ければ速いほど良い」なら、クロック周波数をどんどん上げればよいように思えます。しかし実際には上限があります。なぜでしょうか。
クロックを速くするほど、CPUの中の電子回路が1秒間に切り替わる回数が増えます。この切り替えのたびに電気が流れて熱が生まれます。消費電力はクロック周波数に比例して増え、発熱量も増します。問題は主に2つです。
・発熱:熱が多すぎると回路が誤動作したり、最悪の場合は壊れたりする。冷却が必要になり、コスト・サイズが増える
・電力:スマートフォンのようなバッテリー動作の機器では、消費電力が大きいと電池がすぐに尽きる
これが「クロック周波数の壁」と呼ばれる現実です。2000年代以降、CPU業界はクロックを際限なく上げるのを諦め、「1つのCPUを速くする代わりに、複数のCPUコア(=処理の核)を1チップに並べる(マルチコア化)」という方向へ切り替えました。スマートフォンにもパソコンにも「4コア」「8コア」などと書かれているのはこの流れです。クロック周波数は性能の1要素に過ぎず、コア数や1命令あたりの効率も合わせて見る必要があります。
Card 3 で出てきた CPI(Cycles Per Instruction)とは、命令を1つ実行するのに何クロック(拍)かかるかを表す数値です。CPI が小さいほど1命令を少ない拍で終わらせられる、つまり効率が高い、ということになります。
なぜ CPI が変わるのか。命令の種類によって必要なステップ数が異なるからです。単純な足し算(ADD)は少ない拍で終わりますが、メモリからデータを読み込む命令(LOAD)はメモリアクセスの待ち時間がある分、多くの拍がかかります。
具体的に計算してみましょう。
CPU-A: 3 GHz, CPI = 2
CPU-B: 2 GHz, CPI = 1
─────────────────────
A の実行時間 = 命令数 × 2 × (1/3G)
B の実行時間 = 命令数 × 1 × (1/2G)
→ B の方が速い(Aはクロックが高くてもCPIが2倍)
このように、クロック周波数が高くても CPI が大きければ遅くなります。CPUの速さを比べるときは「周波数 × 1/CPI」の組み合わせで考えるのが本質です。スライダーで周波数を変えながら「クロック周期 = 1/周波数」が変化するのを確認しつつ、このCPIの考え方も頭に置いておくと、CPUの性能評価の全体像がつかめます。