はじめに
こんにちは!
今回はコンピュータの頭脳ともいえる「CPU」について学習したことを書いていきます。
1.CPUとは
CPU(Central Processing Unit)とは、コンピュータの制御や演算や情報転送をつかさどる中枢部分のこと。プロセッサなどとも呼ばれる。
CPUの性能は、主に「クロック周波数」と「パス幅」で表現される。
・クロック周波数(クロックパルス)
各装置の動作のタイミングを合わせるためにCPUが発する周期的な信号のこと。
最も基本的なものは一定時間ごとに高電圧と低電圧が切り替わる信号で、
このサイクルが1秒間に繰り返される回数を「クロック周波数」といい、単位として
Hz(ヘルツ)が使われる。
・パス
コンピュータ内部でデータをやり取りするための伝送路のこと。人間の血管のようなもの。
CPUは一般的にパス幅が広く、クロック周波数は大きいほど、高速にデータを送受信することができる。
2.レジスタ
CPUに内蔵されている高速な記憶装置。種類としては以下があり、命令の実行時に使用する。
- 命令レジスタ
- 実行する命令を格納する。
- 命令アドレスレジスタ(プログラムカウンタ)
- 次に実行する命令のアドレスを格納する。
- 指標レジスタ (インデックスレジスタ)
- 基準となるアドレスを格納する。指標アドレス方式(後述)で使用する。
- 基底レジスタ(ベースレジスタ)
- 基準となるアドレスを格納する。基底アドレス方式(後述)で格納する。
- アキュムレータ(累算器)
- 演算対象や演算結果を格納する。
- 汎用レジスタ
- 演算対象や演算結果を格納する。そのほか各種の目的に使用する。
3.命令語
プログラムとは、コンピューターに対して「〇〇しなさい!」というような命令を集めたもの。
プログラム言語で記述された命令は最終的に0と1の機械語(命令語)に変換され実行される。
命令語は命令部とアドレス部(オペラント部)で構成されている。
また、アドレス部がないものや、逆にアドレス部が複数あるものも存在する。4.命令実行サイクル
コンピュータが一つの命令を実行するときは、次のような流れで進んでいく。
①命令の取り出し(命令フェッチ)
命令を主記憶から取り出し、CPUの命令レジスタに取り込む。
この時、命令アドレスレジスタには次の命令アドレスをセットしておく。②命令の解読
命令レジスタの命令部はデコーダ(解読器) で解読され、演算装置に支持を出す。
③実行アドレス計算
命令レジスタのアドレス部はアドレスレジスタに送られ、処理対象のデータが格納されているアドレス(実効アドレス)を計算する。
④オペラントの呼び出し
処理対象のデータを取り出し、演算装置に送る。
⑤命令の実行
演算装置で演算を実行する。
⑥演算結果の格納
演算結果を格納する。
5.アドレス指定方式
命令のアドレス部の値から処理対象のデータが格納されている実効アドレス(有効アドレス)を求める方式。アドレス修飾とも呼ばれる。
・即値アドレス方式
命令のアドレス部にデータそのものを格納している方式
・直接アドレス方式
命令のアドレス部の値を実効アドレスとする方式
・間接アドレス方式
命令のアドレス部の値が示すアドレスに格納されている値を実効アドレスとする方式
・相対アドレス方式
命令のアドレス部の値と命令アドレスレジスタ(プログラムカウンタ)の値の和を実効アドレスとする方式
・指標アドレス方式(インデックスアドレス方式)
命令のアドレス部の値と指標レジスタ(インデックスレジスタ)の値の和を実効アドレスとする方式。
また、基準値のアドレスを格納し、同じ和を加算していくことで、連続したデータに対して同じ処理を繰り返し実行することが可能。
・基底アドレス方式(ベースアドレス方式)
命令のアドレス部の値と基底レジスタ(ベースレジスタ)の値の和を実効アドレスとする方式。
また、プログラムの先頭のアドレスが記憶されるため、プログラムが主記憶のどこに配置されても命令を変更することなく実行できるというメリットがある。
まとめると以下のようになる。
アドレス指定方式 実行アドレスの求め方 即値 命令アドレスの値はデータそのもの 直接 アドレス部の値 間接 命令のアドレス部の値が示すアドレスに格納されている値 相対 命令のアドレス部の値+プログラムカウンタの値 指標 命令のアドレス部の値+指標レジスタの値 基底 命令のアドレス部の値+基底レジスタの値 6.CPUの高速化
項番4で見た命令実行には次のような方式がある。
・逐次実行方式
1命令づつ順番に繰り返し実行する方式。
制御装置や演算装置が動作しない時間が生じてしまい、処理効率が悪くなる。・パイプライン方式
複数の命令を1ステージづつずらしながら並行して処理することで高速化を図る方式。
ただし、分岐命令がある場合、それまで先読みしていた命令を破棄し、分岐先の命令を実行しなければいけなくなる。
これに対処するために、実行される確率の高い方を予測する分岐予測や、予測した分記載先の命令を開始しておいて結果を保持して分岐先が正しい場合にその結果を利用する投機実行などの技術が使われている。・スーパーパイプライン方式
パイプライン方式の1ステージをさらに細分化する方式。
・スーパースカラ方式
複数のパイプラインを使用して同時に複数の命令を実行することで高速化を測る方式。
7.マルチコアプロセッサ
一つのCPU内に複数のコアを備えたもの。従来のシングルコアに比べてそれぞれのコアが同時に別の処理を実行することで、消費電力を抑えながら処理速度の高速化を図っている。
8.GPU(Graphical Processing Unit)
行列演算(後の章で学習)を用いて3Dの画像処理を高速で実行する画像処理装置。
最近のCPUの大半にはGPUの機能が統合されていることが多い。
私はPCゲームを遊ぶのでよく聞く名称でしたが、人工知能などの分野でも広く普及しているそうです。前回とはうってかわって難易度がかなり高くなりましたね。。。
後の章で補完される用語も出てきているので、とにかく学習を進めたいと思います。今回はここまで!
次回はメモリについて勉強していきます。エンジニアファーストの会社 株式会社CRE-CO Y.K