CPUとは?
中央処理装置(Central Processing Unit)
CPUには制御装置と演算装置(ALU)が組み込まれていて、コンピュータの各装置を制御したり、演算を行う。人間でいう脳みそ。
CPUはプログラム(ソフトウェア)を読み込んで、書かれてある命令を実行していく。
CPUと5大装置
制御装置 | CPU(中央処理装置) | プログラムの命令を解釈してコンピュータの動作を制御する |
演算装置(ALU) | データ演算処理を行う | |
記憶装置 | 主記憶装置 | プログラムやデータを一時的に保存する装置(例:メモリ) |
補助記憶装置 | プログラムやデータを長期保存する装置(例:ハードディスク) | |
入力装置 | データ入力するための装置(例:マウス、キーボード、スキャナ) | |
出力装置 | データ出力するための装置(例:ディスプレイ、プリンタ) |
CPUの命令実行手順とレジスタ
プログラムは補助記憶装置(ハードディスクなど)に保存されており、プログラム実行時に主記憶装置(メモリ)上にロードし、命令を1つずつ取り出して順番に実行していく。
- プログラム実行時にメモリ上にロードする方式を「プログラム内蔵方式(プログラム格納方式)」
- 命令を1つずつ取り出して順番に実行する方式を「逐次制御方式」
この2つの特徴をもつコンピュータをノイマン型コンピュータという。
メモリ上にロード後にどういった手順で命令を取り出し実行するかというと、
命令実行手順
- フェッチ(命令の取り出し)
- プログラムカウンタが示すアドレスを参照して命令を取り出し、命令レジスタに保存
- 取り出したら、次の命令に備えてプログラムカウンタの値を増加させる - 命令の解読
- 命令レジスタに保存されている情報は、「命令部(命令の種類を示すコード番号)」と「オペランド部(処理対象のデータを納めたメモリアドレスなど)」に分けられる
- 命令部の中身を命令デコーダに送って解読し、必要な装置に制御信号を飛ばす - オペランド(対象データ)の読み出し
- 命令レジスタのオペランド部を参照して、必要なデータを読み出し、汎用レジスタなどに保存する - 命令実行
- 3で取り出したデータを使って命令を実行。実行結果を汎用レジスタなどに保存
- またフェッチから繰り返す
名称 | 役割 |
プログラムカウンタ | 次に実行する命令が入っているアドレスを記憶するレジスタ |
命令レジスタ | 取り出した命令を一時的に記憶しておくレジスタ 命令部とオペランド部に分けられる |
インデックスレジスタ | アドレス修飾※に用いる 配列のような連続したデータの取り出しに使うための増分値を保持 |
ベースレジスタ | アドレス修飾に用いる プログラムの先頭アドレスを保持 |
アキュームレータ | 演算対象の数や演算結果を記憶するレジスタ |
汎用レジスタ | 一時的な値の保持やアキュームレータの代用として使われる |
※ アドレス修飾・・・何らかの計算によってアドレスを求める方式
アドレス指定方式
命令レジスタのオペランド部には対象データの場所が入っているが、その指定方式はさまざま。
アドレス指定方式
- 即値アドレス指定方式
- オペランド部に対象データそのものが入っている
- 直接アドレス指定方式
- オペランド部に「対象データの場所(実効アドレス)」が記載されている
- 間接アドレス指定方式
- オペランド部に「対象データが入っているメモリアドレスを示すメモリアドレス」が記載されている
- インデックスアドレス指定方式
- オペランド部の値にインデックスレジスタの値を加算することで実効アドレスがわかる
- ベースアドレス指定方式
- オペランド部の値にベースレジスタの値を加算することで実効アドレスがわかる
- ベースレジスタにはプログラムがメモリ上にロードされたときの先頭アドレスが記憶されているので、プログラム先頭からの差分をオペランド部で指定する方式と言える
- プログラムがメモリ上のどこにロードされても命令を変える必要がないので便利
- 相対アドレス指定方式
- オペランド部の値にプログラムカウンタの値を加算することで実効アドレスがわかる
- ベースレジスタを持たない場合に使われる方式
CPUの性能指標
コンピュータの各装置は、クロックと呼ばれる周期的な信号に合わせて動作する。(CPUもそのひとつ)
クロックの1周期の時間が短いほど多く処理できる。
- クロック周波数(Hz):1秒間のクロック回数
- クロックサイクル時間:1クロックに要する時間
- CPI(Clock cycles Per Instruction):1命令あたりに必要なクロックサイクル
- MIPS(Million Instructions Per Second):1秒間に実行できる命令数
CPUの高速化
複数の命令を並行して実行する手法をパイプライン処理という。
命令をフェッチしてデコーダー(解読)に渡したら次の命令をフェッチすることで実行速度を高速化する
分岐処理がある場合、先読み分が無駄になる場合がある。これを分岐ハザードという。どの分岐が実施されるされるのか予測することを分岐予測。その予測に基づいて分岐先の命令を実行することを投機実行という。
スーパーパイプラインとスーパースカラ
パイプライン処理をさらに高速化する方法。
- スーパーパイプライン
- 各ステージの処理をさらに細かいステージに分割することで、パイプライン処理の効率を上げる
- ステージとは命令実行手順の各段階のこと
- スーパースカラ
- パイプライン処理を行う回路を複数用意することで、同時に複数の命令を実行できるようにする
おすすめ参考書
分厚いのでKindle版が良いです。(試験が終われば頻繁に開く本でもないですし)
キタミ式イラストIT塾 基本情報技術者 令和03年は読みやすいので1番オススメ。