CPUとは?基本情報技術者試験で問われる重要ポイントを解説!
更新日:2021年4月28日
CPUはコンピュータの頭脳部分であり心臓部分でもあるといってよいでしょう。CPUはコンピュータが動作するために必要な様々な演算処理を担当します。コンピュータが高速に処理を行うことができるのは、CPUが高速で動作するからです。
基本情報技術者試験では、CPUの仕組みや命令実行方法、CPUの高速化手法などCPUをテーマにした様々な問題が出題されます。この記事では、CPUの技術のうち特に基本情報技術者試験で出題されるポイントについて解説します。
CPUとは
CPUとはCentral Processing Unitの略称であり、日本語では中央処理装置または中央演算処理装置と呼ばれます。CPUは情報の加算・減算・乗算などの演算処理を行う演算機器であり、主記憶装置などからデータを読み出したり書き込んだりする制御装置でもあります。
CPUはプロセッサと呼ばれることもあります。CPUとプロセッサはほぼ同一の意味で利用されますが、厳密にはプロセッサのうち特にコンピュータの中心で動作するものをCPUと呼びます。
CPU以外のプロセッサとしては、画像処理に関する演算を行うGPU(Graphics Processing Unit)などが挙げられます
CPUは、全体を制御する制御装置や加算・減算などの演算を行う演算装置に加え、データを一時保管するレジスタや処理を高速化するためのキャッシュメモリなどから構成されます。
クロック周波数
CPU内部の制御装置や演算装置などは一定の周波数に合わせて同期して動作します。この周波数をクロック周波数と呼びます。クロック周波数が大きいほど、一定時間内に多くの回数の処理を行えることになります。
現代のCPUでは、クロック周波数は2Ghz~5Ghz程度が一般的です。これはつまり、1秒間に20億回~50億回の動作を実現できることを意味します。
MIPS
CPUの指標を示すもう一つの単位にMIPSというものがあります。MIPSはMillion Instructions Per Secondの略称であり、一秒間に実行できる命令回数を示す値です。1MIPSという場合には、1秒間に100万回の命令を処理できることを意味します。
CPUの純粋な動作回数を示すクロック周波数とは異なり、MIPSはキャッシュメモリおよびメモリやCPUと他の機器を接続するバスの性能にも依存します。クロック周波数よりもMIPSのほうがより実際に近い形でCPUの性能を表しているといえるでしょう。
レジスタ
CPUは主記憶装置であるメモリから命令やデータを取り出して処理を行いますが、都度メモリにアクセスしていては高速に処理を行うことができません。そこで、CPUにはレジスタと呼ばれる小さな記憶装置が設けられています。
レジスタは、CPUが行う処理を一時的に保持しておくために設けられます。レジスタはその目的に応じて、様々な種類が存在します。
下表でCPUに設けられるレジスタについて紹介します。
種類 | 概要 |
---|---|
アキュムレータ | 演算結果を累積して総和を得るために用いるレジスタ |
データレジスタ | 演算結果を置いたりデータを一時的に格納したりするためのレジスタ |
アドレスレジスタ | 主記憶装置にアクセスする際のアドレスを指定するためのレジスタ |
プログラムカウンタ | アドレスレジスタの一種であり、特に実行する命令が格納されたアドレスを保持するためのレジスタ |
汎用レジスタ | 特定の目的を持たず、汎用的に利用できるレジスタ |
CPUの命令実行方法
CPUは与えられたデータに加算・減算などの命令を適用して結果を出力します。以下では、CPUの命令実行方法について解説します。
命令部とアドレス部
CPUに与えられる命令は、処理内容が記載された命令部と処理対象のデータやデータ保管場所が示されたアドレス部から構成されます。なお、命令部に登録されている命令をオペコード、アドレス部に登録されている処理対象となるデータのことをオペランドといいます。
例えば、命令部に加算、アドレス部に#1111、#1112という情報が登録された命令であれば、#1111と#1112を合算した値をCPUは出力します。
命令実行サイクル
CPUには膨大な数の命令が与えられ、CPUはそれを一つずつ処理していきます。CPUに与えられた命令は、命令実行サイクルに従って処理されます。命令実行サイクルは、命令フェッチ、命令の解読、実効アドレス計算、オペランド読み出し、命令の実行という手順で行われ、この一連の流れでようやく一つの命令が完了します。
下表では、命令実行サイクルの各処理の概要について紹介します。
処理名 | 概要 |
---|---|
命令フェッチ | 命令を主記憶装置から取り出し、CPUのレジスタに取り込む |
命令の解読 | 命令の命令部を解読し、実施する命令を把握する |
実効アドレス計算 | 命令のアドレス部を解読し、処理対象とするオペランドを把握する |
オペランド読み出し | 主記憶装置からオペランドを読み出す |
命令の実行 | 命令を実行し、演算を行う。必要に応じて主記憶装置に結果をかき出す |
アドレス指定方式
アドレス指定方式とは、命令のアドレス部に設定する主記憶装置のアドレスの指定方法のことです。アドレスの指定方法には様々な種類が存在します。
以下で、それぞれの指定方法について解説します。
即値アドレス指定方式
即値アドレス指定方式とは、アドレス部に対象データそのものを格納するもっともわかりやすい方法です。データがすでにアドレス部に格納されているために、主記憶装置にアクセスする必要がなく高速に処理が可能となりますが、値を修正することができないため主に定数の入力に使われます。
直接アドレス指定方式
直接アドレス指定方式とは、アドレス部に対象データを示すアドレスを設定する最も一般的な方法です。実データを取得するために、CPUはアドレス部で指定された主記憶装置のアドレスにアクセスを行います。
主記憶装置へのアクセスが必要であるため即値アドレス指定方式よりも速度は落ちますが、データの値が変更されてもアドレスを修正する必要がないため変数処理に利用されます。
間接アドレス指定方式
間接アドレス指定方式とは、アドレス部に対象データのアドレス情報が格納されたアドレスを指定する方法です。少しわかりづらいですが、アドレス部に指定された主記憶装置のアドレス上に、さらに別のアドレスが格納されているケースとなります。
CPUが実データを取得するためには、まずアドレス部に指定された主記憶装置のアドレスAにアクセスします。そして、そのアドレスAに格納されていたアドレスBに、さらにアクセスを行います。アドレスBに格納された値が、実際にCPUで処理する値となります。
高速化のための技術
CPUの至上命題は、いかに高速に処理を行うかです。高速処理を実現するために、CPUには様々な高速化技術が用いられています。ここでは、基本情報技術者試験で取り上げられる主な高速化技術について解説します。
並列処理(パイプライン処理)
並列処理とは、一つの命令実行サイクルが完了する前に次の命令を実行することで、並列で処理を行うことです。並列処理は、パイプライン処理と呼ばれることもあります。
上述した通り、一つの命令実行サイクルは命令フェッチから命令の実行までの複数の段階に分かれます。そこで、ある命令Aの命令フェッチが終了し命令の解読に移ったら、すぐに次の命令Bの命令フェッチを開始することで、一つの命令の完了前に次の命令を開始することができます。
これにより、全体の命令実行時間を短縮させることができます。
一方で、複数の命令実行装置を設け、同時に複数の命令を実行できるようにすることをスーパースカラといいます。複数の命令実行装置が同時に命令フェッチから命令の実行までを行うことで、命令処理能力が倍増します。
マルチコアプロセッサ
現代のCPUは、1つのCPUの中に複数のCPUコアを設けることで、並列で処理を行えるようにしています。これをマルチコアプロセッサといいます。
一般に、CPUのクロック周波数を上げると消費電力が高まり、またCPUが発する熱量も多くなります。そのため、クロック周波数を上昇させることによるCPUの高速化には限界があります。
そこで、近年ではクロック周波数を上げるのではなく、複数のCPUコアを並行で稼働させることで、さらなる高速化を図っています。
CPUの投機実行
CPUの処理において上述した並列処理を用いたとしても、もし処理途中に条件分岐があった場合はその条件分岐の結果を待つまで次の処理に進むことができません。つまり、条件分岐が処理のボトルネックとなってしまうのです。
そこで、次の処理が変わるような分岐命令があった場合に、分岐先の処理を事前に行ってしまう方法が考え出されました。これを、CPUの投機実行といいます。投機実行では、過去の実績から条件分岐の結果を予測し、可能性が高い後続処理をあらかじめ実施しておきます。
もし予想が当たればすでに実施した処理を利用しますし、予想が外れたとしても確定した結果を待つのと変わらないタイミングで処理を継続できるため、全体的には高速化が見込めます。
まとめ
この記事では、基本情報技術者試験を受けようとされている方に向けて、CPUについての解説を行いました。CPUはコンピュータの頭脳であり、コンピュータの処理速度に関わる重要なパーツです。
基本情報技術者試験では、例年CPUの動作について出題されます。
普段PCを利用する中ではあまりCPUの動作について意識することはないかもしれませんが、ぜひCPUがどのようにして処理を行っているのかを学んでみてください。