CPUとは?クロック周波数・MIPS・コアを初心者向け解説|基本情報対策

IT就活

基本情報技術者試験のCPU分野では、用語の意味だけでなく、クロック周波数やCPIから処理性能を計算する問題も出題されます。

計算式だけを見ると難しく感じるかもしれません。しかし、CPUが一定のリズムに合わせて命令を処理していると考えれば、仕組みを理解しやすくなります。

この記事では、次の内容を初心者向けに解説します。

  • CPU(プロセッサ)とは何か
  • クロック周波数とクロックサイクル
  • 1秒間に実行できる命令数の計算
  • MIPSによる性能の表し方
  • CPUのコアとマルチコア
  • 基本情報技術者試験での注意点

CPUは基本情報技術者試験の出題範囲

CPUは、基本情報技術者試験の科目Aで問われる「コンピュータ構成要素」の一つです。IPAの基本情報技術者試験シラバスでは、プロセッサに関する項目として、CPUの構成や動作原理に加え、クロック周波数、CPI、MIPSなどの意味を理解することが求められています。また、プロセッサの高速化技術やマルチプロセッサについても学習対象です。

現行試験では科目Aが90分・60問、科目Bが100分・20問で構成されています。CPUの基礎知識や性能計算は、主に知識を問う科目Aの対策として押さえておきたい内容です。なお、IPAは2027年度に向けた試験制度の見直しを公表していますが、基本情報技術者試験自体は継続予定です。学習時点の最新情報は、IPAの試験要綱・シラバスで確認してください。

CPU(プロセッサ)とは

CPUは「Central Processing Unit」の略で、日本語では中央処理装置と呼ばれます。プロセッサという呼び方もあります。CPUの役割を簡単に表すと、コンピュータ全体に指示を出しながら計算や判断を行うことです。そのため、CPUはよく「コンピュータの頭脳」に例えられます。例えば、私たちがパソコンで次の操作をしたとします。

  • 数値を計算する
  • Webページを表示する
  • ファイルを保存する
  • プログラムを実行する

これらの処理では、CPUがメモリから命令を読み出し、その内容を解読して実行します。CPUが命令を処理する基本的な流れは、次の3段階です。

  1. 命令を主記憶装置から取り出す
  2. 取り出した命令の内容を解読する
  3. 命令に従って演算などを実行する

それぞれを「命令の取出し(フェッチ)」「命令の解読(デコード)」「命令の実行」と呼びます。基本情報技術者試験では、CPUの主な構成要素も押さえておきましょう。

演算装置

加算や減算などの算術演算、大小比較などの論理演算を行います。

制御装置

命令を解読し、コンピュータを構成する各装置へ制御信号を送ります。

レジスタ

CPU内部にある、非常に高速で容量の小さい記憶装置です。計算途中の値や、実行する命令の情報などを一時的に保持します。

クロックとはCPUが動作するタイミングの基準

CPUは、クロックと呼ばれる周期的な信号に合わせて動作します。クロックは、運動会の笛や音楽のメトロノームのようなものです。一定の間隔で信号が発生し、その信号を基準としてCPU内部の処理が進みます。

クロック信号が1回発生する時間を「1クロック」または「1クロックサイクル」と呼びます。ただし、CPUが1クロックで必ず1命令を完了できるとは限りません。1命令を実行するために、複数のクロックサイクルを必要とすることがあります。

クロック周波数とは

クロック周波数とは、1秒間に発生するクロック信号の回数です。単位にはHz(ヘルツ)を使用します。例えば、クロック周波数が1GHzのCPUでは、1秒間に10億回のクロック信号が発生します。主な単位は次のとおりです。

単位意味
1kHz1秒間に1,000回
1MHz1秒間に100万回
1GHz1秒間に10億回

試験では、次の接頭語も覚えておきましょう。

  • k(キロ):10の3乗
  • M(メガ):10の6乗
  • G(ギガ):10の9乗

これを数式で表すと、次のようになります。

1kHz=103Hz1\mathrm{kHz}=10^3\mathrm{Hz}
1kHz=106Hz1\mathrm{kHz}=10^6\mathrm{Hz}
1kHz=109Hz1\mathrm{kHz}=10^9\mathrm{Hz}

例えば、3GHzは次のように変換できます。

3GHz=3×109Hz3\mathrm{GHz}=3\times10^9\mathrm{Hz}

つまり、3GHzのCPUでは、1秒間に30億回のクロック信号が発生します。

1クロックにかかる時間の求め方

クロック周波数から、1クロックにかかる時間を計算できます。

計算式は次のとおりです。

1=1\mathrm{1クロックの時間} = \frac{1}{\mathrm{クロック周波数}}

例えば、クロック周波数が2GHzの場合を考えてみましょう。

2GHzは、2×10の9乗Hzです。

2GHz=2×109Hz2\mathrm{GHz}=2\times10^9\mathrm{Hz}

1クロックの時間は次のように求められます。

12×109=0.5×109\frac{1}{2\times10^9} = 0.5\times10^{-9}\mathrm{秒}

10のマイナス9乗秒は1ナノ秒です。したがって、0.5×10のマイナス9乗秒は0.5ナノ秒となります。

0.5×109=0.5ns0.5\times10^{-9}\mathrm{秒} = 0.5\mathrm{ns}

周波数は「1秒間に何回発生するか」、1クロックの時間は「1回に何秒かかるか」を表します。

この2つは逆数の関係にあることを覚えておきましょう。

CPIとは

CPIは「Cycles Per Instruction」の略で、1命令を実行するために必要な平均クロックサイクル数を表します。例えば、CPIが4なら、1命令を実行するために平均4クロックかかるという意味です。CPIが小さいほど、少ないクロック数で命令を実行できます。そのため、ほかの条件が同じであれば、CPIが小さいCPUほど多くの命令を処理できます。

ここで注意したいのは、クロック周波数と命令実行数は同じではないという点です。例えば、クロック周波数が3GHzでも、CPIが3なら、1命令の実行に平均3クロック必要です。この場合、1秒間に発生するクロック信号は30億回ですが、実行できる命令数は10億命令です。

1秒間に実行できる命令数の計算式

基本情報技術者試験で特に重要なのが、1秒間に実行できる命令数の計算です。

計算式は次のとおりです。

1=CPI\mathrm{1秒間の命令実行数} = \frac{\mathrm{クロック周波数}}{\mathrm{CPI}}

「1秒間に使えるクロック数を、1命令に必要なクロック数で割る」と考えましょう。

例題1:1秒間の命令実行数

クロック周波数が2GHz、CPIが4のCPUがあります。このCPUは、1秒間に平均何命令を実行できるでしょうか。

まず、クロック周波数をHzに変換します。

2GHz=2×109Hz2\mathrm{GHz}=2\times10^9\mathrm{Hz}

次に、クロック周波数をCPIで割ります。

2×1094=0.5×109=5×108\frac{2\times10^9}{4} = 0.5\times10^9 = 5\times10^8

5×10の8乗は5億です。

したがって、このCPUは1秒間に平均5億命令を実行できます。

プログラムの実行時間を求める計算式

プログラムの実行時間は、命令数、CPI、クロック周波数から計算できます。

まず、プログラムの実行に必要なクロック数を求めます。

=×CPI\mathrm{必要なクロック数} = \mathrm{命令数}\times\mathrm{CPI}

必要なクロック数をクロック周波数で割ると、実行時間を求められます。

=×CPI\mathrm{実行時間} = \frac{\mathrm{命令数}\times\mathrm{CPI}} {\mathrm{クロック周波数}}

例題2:プログラムの実行時間

6億命令で構成されたプログラムがあります。

このプログラムを、クロック周波数3GHz、CPIが5のCPUで実行すると、何秒かかるでしょうか。

条件を数値で表すと次のようになります。

  • 命令数:6億命令
  • クロック周波数:3GHz
  • CPI:5

6億を指数で表すと、6×10の8乗です。また、3GHzは3×10の9乗Hzです。

計算式に代入します。

=6×108×53×109\mathrm{実行時間} = \frac{6\times10^8\times5} {3\times10^9}

計算すると、次のようになります。

3×1093×109=1\frac{3\times10^9} {3\times10^9} = 1\mathrm{秒}

したがって、プログラムの実行時間は1秒です。

MIPSとは

MIPSは「Million Instructions Per Second」の略です。CPUが1秒間に何百万命令を実行できるかを表します。

  • 1MIPS:1秒間に100万命令
  • 100MIPS:1秒間に1億命令
  • 1,000MIPS:1秒間に10億命令

MIPS値は、1秒間の命令実行数を100万で割ることで求められます。

MIPS=1106\mathrm{MIPS値} = \frac{\mathrm{1秒間の命令実行数}} {10^6}

1秒間の命令実行数は「クロック周波数÷CPI」で求められます。

したがって、MIPS値は次の式でも計算できます。

MIPS=HzCPI×106\mathrm{MIPS値} = \frac{\mathrm{クロック周波数(Hz)}} {\mathrm{CPI}\times10^6}

クロック周波数がMHzの場合の計算式

クロック周波数がMHzで与えられている場合は、MIPS値を簡単に計算できます。

MIPS=MHzCPI\mathrm{MIPS値} = \frac{\mathrm{クロック周波数(MHz)}} {\mathrm{CPI}}

1MHzが1秒間に100万クロックを意味するため、10の6乗で割る計算を省略できます。

基本情報技術者試験では、GHzをMHzへ変換してから計算すると分かりやすくなります。

例えば、2.4GHzは2,400MHzです。

2.4GHz=2400MHz2.4\mathrm{GHz}=2400\mathrm{MHz}

MIPSの計算例

クロック周波数が2.4GHz、CPIが3のCPUについて考えます。

まず、2.4GHzをMHzへ変換します。

2.4GHz=2400MHz2.4\mathrm{GHz}=2400\mathrm{MHz}

MIPS値の計算式に代入します。

MIPS=24003=800\mathrm{MIPS値} = \frac{2400}{3} = 800

したがって、このCPUの性能は800MIPSです。

800MIPSは、1秒間に平均8億命令を実行できることを意味します。

MIPS値から実行時間を求める方法

MIPS値と命令数から、プログラムの実行時間を求めることもできます。

計算式は次のとおりです。

=MIPS×106\mathrm{実行時間(秒)} = \frac{\mathrm{命令数}} {\mathrm{MIPS値}\times10^6}

例えば、500MIPSのCPUで20億命令を実行する場合を考えます。

20億命令は、2×10の9乗命令です。

=2×109500×106\mathrm{実行時間} = \frac{2\times10^9} {500\times10^6}

計算結果は次のとおりです。

=4\mathrm{実行時間}=4\mathrm{秒}

したがって、実行時間は4秒です。

MIPSだけでCPUの性能を比較できない理由

MIPSが高いほど、1秒間に実行できる命令数は多くなります。ただし、MIPS値だけを見て、異なる種類のCPUの性能を単純に比較することはできません。CPUによって、用意されている命令の種類や、1命令で行える処理の内容が異なるからです。

例えば、CPU Aでは一つの複雑な命令で完了する処理が、CPU Bでは複数の単純な命令を必要とすることがあります。この場合、CPU BのMIPS値が高くても、プログラム全体の実行時間がCPU Aより短いとは限りません。試験対策として、次の点を覚えておきましょう。

  • 同じ命令体系や同じ条件なら、MIPS値が高いほど高速と考えられる
  • 命令体系が異なるCPUは、MIPS値だけで公平に比較できない
  • 実際の性能は、命令の種類やメモリ性能にも影響される
  • キャッシュメモリやプログラムの性質も性能に関係する

CPUのコアとは

コアとは、CPU内部で実際に命令の解読や演算を行う処理部分です。従来のCPUは、一つのCPUに一つのコアを持つシングルコアが中心でした。現在は、一つのCPUに複数のコアを搭載するマルチコアCPUが一般的です。代表的な呼び方は次のとおりです。

コア数呼び方
1コアシングルコア
2コアデュアルコア
4コアクアッドコア
6コアヘキサコア
8コアオクタコア

複数のコアがあれば、複数の処理を並行して実行できます。飲食店に例えると、CPUは厨房、コアは料理人です。料理人が1人なら、基本的には料理を順番に作ります。料理人が4人いれば、複数の料理を分担して同時に作れます。

コア数が2倍なら処理速度も2倍になる?

コア数が2倍になっても、すべてのプログラムが必ず2倍の速度になるわけではありません。マルチコアによって処理を高速化するには、プログラムの処理を複数のコアへ分担できる必要があります。例えば、次のような処理は完全には並列化できません。

  • 前の計算結果を待つ必要がある処理
  • 一つのコアでしか実行できない処理
  • 複数のコアが同じデータを使う処理
  • コア同士で頻繁にデータを受け渡す処理
  • コア間の調整が必要になる処理

料理に例えると、野菜を切り終えるまで加熱を開始できない場合、料理人を増やしても待ち時間はなくなりません。そのため、基本情報技術者試験では、次のように理解しておきましょう。

マルチコアによって複数の処理を並列に実行できるが、コア数に比例して必ず処理速度が向上するとは限らない。

コアとスレッドの違い

コアは、CPU内部にある物理的な処理装置です。一方、スレッドは、CPUが処理する仕事の流れや、OSから見た実行単位を指します。CPUによっては、一つの物理コアで複数のスレッドを同時に処理する技術が使われています。

例えば、4コア8スレッドのCPUは、物理的には4個のコアを持っていますが、OSからは8個の処理単位があるように見えます。ただし、4コア8スレッドが8個の物理コアと同じ性能になるわけではありません。一つのコアを利用するスレッド同士が、CPU内部の処理資源を一部共有するためです。試験対策としては、次の違いを整理しておきましょう。

  • コア:CPU内部にある物理的な処理部分
  • スレッド:処理の流れや論理的な実行単位
  • マルチコア:複数のコアを搭載したCPU
  • マルチスレッド:複数の処理の流れを並行して扱う仕組み

クロック周波数が高ければ必ず高速なのか

クロック周波数は、CPUの性能を判断する材料の一つです。しかし、クロック周波数だけでCPUの処理速度が決まるわけではありません。CPUの性能には、次のような要素が関係します。

  • CPI
  • コア数
  • キャッシュメモリの容量と速度
  • CPUの設計
  • 命令の種類
  • 主記憶装置へのアクセス速度
  • 同時に実行できる命令数
  • 実行するプログラムの性質

例えば、CPU Aのクロック周波数が3GHz、CPU Bのクロック周波数が2GHzだったとします。CPU Bのほうが少ないクロック数で命令を実行できる場合、クロック周波数が低いCPU Bのほうが高い性能を発揮する可能性があります。試験問題では、クロック周波数だけで判断せず、CPI、命令数、コア数など、問題文に書かれた条件を確認しましょう。

基本情報技術者試験で覚えたい計算式

CPUの計算問題で使用する式をまとめます。

1クロックの時間

1=1\mathrm{1クロックの時間} = \frac{1}{\mathrm{クロック周波数}}

1秒間に実行できる命令数

1=CPI\mathrm{1秒間の命令実行数} = \frac{\mathrm{クロック周波数}} {\mathrm{CPI}}

プログラムの実行時間

=×CPI\mathrm{実行時間} = \frac{\mathrm{命令数}\times\mathrm{CPI}} {\mathrm{クロック周波数}}

MIPS値

MIPS=HzCPI×106\mathrm{MIPS値} = \frac{\mathrm{クロック周波数(Hz)}} {\mathrm{CPI}\times10^6}

クロック周波数がMHzで与えられている場合は、次の式を使用できます。

MIPS=MHzCPI\mathrm{MIPS値} = \frac{\mathrm{クロック周波数(MHz)}} {\mathrm{CPI}}

MIPS値から実行時間を求める式

=MIPS×106\mathrm{実行時間} = \frac{\mathrm{命令数}} {\mathrm{MIPS値}\times10^6}

公式を丸暗記するだけでなく、次の関係を理解することが大切です。

1秒間に使えるクロック数を、1命令に必要なクロック数で割ると、1秒間に実行できる命令数になる。

この関係を理解していれば、公式を忘れても考え直すことができます。

練習問題

クロック周波数が3.2GHz、CPIが4のCPUがあります。このCPUのMIPS値はいくつでしょうか。

まず、3.2GHzをMHzへ変換します。

3.2GHz=3200MHz3.2\mathrm{GHz}=3200\mathrm{MHz}

MIPS値の計算式に代入します。

MIPS=32004=800\mathrm{MIPS値} = \frac{3200}{4} = 800

したがって、答えは800MIPSです。

次に、このCPUで16億命令を実行する場合の実行時間を求めます。

16億命令は、1.6×10の9乗命令です。

=1.6×109800×106\mathrm{実行時間} = \frac{1.6\times10^9} {800\times10^6}

計算結果は次のようになります。

=2\mathrm{実行時間}=2\mathrm{秒}

したがって、答えは2秒です。

計算問題でよくあるミス

GHzやMHzを変換していない

2GHzは、2Hzでも2MHzでもありません。

2GHz=2×109Hz=2000MHz2\mathrm{GHz} = 2\times10^9\mathrm{Hz} = 2000\mathrm{MHz}

MIPS値を求めるときは、GHzをMHzへ変換すると計算しやすくなります。

CPIを掛ける場面と割る場面を間違える

1秒間に実行できる命令数を求めるときは、クロック周波数をCPIで割ります。

一方、プログラムの実行に必要なクロック数を求めるときは、命令数にCPIを掛けます。

  • 実行できる命令数を求める:CPIで割る
  • 必要なクロック数を求める:CPIを掛ける

クロック数と命令数を同じものだと考える

CPIが1でない限り、クロック数と命令数は一致しません。

CPIが5なら、1命令を実行するために平均5クロック必要です。

1秒間に50億クロックが発生しても、実行できる命令数は10億命令となります。

5×1095=1×109\frac{5\times10^9}{5} = 1\times10^9

マルチコアなら単純にコア数を掛ける

問題文に「各コアが完全に並列で処理する」などの条件がない限り、単純にコア数を掛けて性能を求められるとは限りません。並列処理できる割合や各コアの使用率など、問題文の条件を確認しましょう。

まとめ

CPUは、命令を読み出し、解読し、実行するコンピュータの中心的な装置です。基本情報技術者試験では、次のポイントを押さえておきましょう。

  • CPUは演算や各装置の制御を行う
  • クロック周波数は1秒間に発生するクロック信号の回数
  • CPIは1命令の実行に必要な平均クロック数
  • 1秒間の命令実行数は「クロック周波数÷CPI」で求める
  • MIPSは1秒間に実行できる百万命令の数
  • コアはCPU内部で実際に処理を行う部分
  • マルチコアでも処理速度が必ずコア数倍になるとは限らない
  • CPUの性能はクロック周波数だけでは決まらない

CPUの計算問題では、最初にGHz、MHz、Hzなどの単位をそろえることが重要です。そのうえで「1秒間に使えるクロック数を、1命令に必要なクロック数で割る」と考えれば、計算式の意味を理解しながら解答できます。クロック周波数、CPI、MIPSは基本情報技術者試験のシラバスに含まれているため、用語を暗記するだけでなく、数値を使った基本的な計算まで練習しておきましょう。

参考資料:

コメント

タイトルとURLをコピーしました