今回の記事は基本情報資格勉強用の記事で、CPUに関してわかりやすくまとめた記事です。自身の勉強用にまとめた内容を共有する形で記事にしております。私も資格試験を受ける予定ですので一緒に頑張れれば幸いです。是非サイト内見ていってください。
CPUとは?
CPUはPCの脳みそにあたる最も重要な装置です。別名で、プロセッサとも呼ばれます。
CPUの性能は下記機能によって決まります。
- クロック周波数
- バス幅
それに加えて「レジスタ」という部分がCPUの各装置に対しての命令を担っている装置となっています。
順番に説明していきます。
クロック周波数とは?
コンピュータの内部では一定の間隔で電圧が規則的に「高」「低」を繰り返す信号が生成されます。この繰り返しをクロック信号といいます。
そして、クロック信号の1秒間に繰り返される回数をクロック周波数といいます。単位は「Hz」です。
クロック周波数は回数が多いほど性能が高いです。ただ、記憶装置との兼ね合いや排熱問題も絡んでくるので単純にクロック周波数のみでPCのスペックを判断することはできません。
CPUと主記憶などの周辺回路を結ぶ伝送路のクロック周波数を外部クロック、CPU内部のクロック周波数は内部クロックといいます。基本的にPCカタログに書かれるクロック数は内部クロックで、内部クロックと外部クロックでは数倍内部クロックの方が早いので注意が必要です。
バス幅とは?
バスはCPUや主記憶、キャッシュメモリなどでお互いがデータの送受信をするための伝送路のことです。バス幅ももちろん広い方がデータを送りやすいので性能が良いといえます。
では次にCPUの動く流れを追っていきましょう。
レジスタとは?
CPUに内蔵されている高速記憶装置です。レジスタは下記機能に分かれています。
- 命令レジスタ:実行命令を格納
- 命令アドレスレジスタ:次に実行する命令のアドレスを格納
- 指標レジスタ:基準となるアドレスを格納(指標アドレス方式で使用)
- 基底レジスタ:基準となるアドレスを格納(基底アドレス方式で使用)
- アキュムレータ:演算対象や演算結果を格納
- 凡用レジスタ:演算対象や演算結果を格納。その他機能もある。
CPUの命令とは?
プログラムはプログラミングによって記述されるプログラム言語(俗にいうPython・JAVAなど)が機械語(「0」「1」で記述)に変換されて解読・実行される。
機械語の命令後は「命令部」と「アドレス部(オペランド部)」で構成されます。
「メモ帳(アドレス部)」を「開け(命令部)」のようなイメージです。
ではCPUのレジスタと命令の流れをまとめてみます。
CPUの命令の仕組み
CPUの命令の仕組みは下記の流れになっています。
- 命令の取り出し:命令アドレスレジスタから(ソフトを開くなどの)命令が格納されている主記憶のアドレスを取得し(命令フェッチ)、命令レジスタにセットする。同時に次の命令アドレスも命令アドレスレジスタにセットする。
- 命令の解読:デコーダを使って命令を変換し、演算装置にセットする。
- 実行アドレス計算:命令のアドレス部により処理対象のデータが格納されているアドレスを取得する。
- オペランドの取り出し:処理対象のデータを取得し、演算装置に送る。
- 命令の実行:実際のデータと命令を受け取り、演算・処理を行う。
- 演算結果の格納:演算結果を格納する。
図で説明すると上記のようなイメージです。
ではしばしば出てきたCPUがアドレスを取得する方法に関して、特に処理を行う対象データの取得方法に関して説明しておきます。
アドレス指定方式に関して
アドレス指定方式とは上記で説明した流れの中で③にあたる処理を与えるデータ(実行アドレスのデータ)を取得する方式のことです。種類は下記です。
即値アドレス指定方式
命令のアドレス部の値はデータそのもの。
直接アドレス指定方式
アドレス部の値が実行アドレス。
間接アドレス指定方式
アドレス部の値が示すアドレスに格納されている値が実行アドレス。
相対アドレス指定方式
アドレス部の値+プログラムでの固有の数字から実行アドレスを算出。
指標アドレス指定方式
アドレス部の値+指標レジスタの値から実行アドレスを算出。
基底アドレス指定方式
アドレス部の値+基底レジスタの値から実行アドレスを算出。
では最後にCPUの高速化技術に関してまとめておきます。
CPUの高速化技術
CPUの命令実行順
CPUは命令を実行する役割を担っております。その命令実行に関して順番は効率を考えた上で非常に重要です。
例えば下記のような命令(仮)があります。
命令1
- メモ帳を開く
- メモ帳にデータを記載する
- メモ帳を閉じる
命令2
- エクセルを開く
- エクセルのA1セルに文字を記入する
- エクセルを保存する
- エクセルを閉じる
命令1、2の順番で命令を実行する場合を図に起こしてみます。
上記のように命令1が全て完了してから命令2を実行する方式を逐次制御方式 と言います。
しかし、これはCPUのスペックが高くとも命令1にCPU50%の力を使っている場合、命令1が終了するまでの間、CPUの余力50%は何も使われていない状態となり、非常にもったいないです。
これをより効率的にした方法がいくつかあるのでご紹介します。
パイプライン方式
命令を1つずらしで並行して行う施作。
仮に先行して開始された命令で分岐処理が走る場合、その後の命令実行は分岐処理により分岐して実行されます。そして、分岐決定後に分岐先の命令実行のみが保持されます。
ここで命令実行の順番が乱れることをパイプラインハザードといい、これに対処するために下記の施作が存在します。
- 分岐予測:実行される確率が高い方を予測する
- 投機実行:予測した分岐先の命令を実行し、値を保持しておく。
スーパーパイプライン方式
パイプライン方式よりもさらにタスクを細分化し、並行して命令を実行する。
スーパースカラ方式
パイプライン方式でさらに命令を並行して実行する施作。
CPUの命令体系
命令の構造(実行順など)は下記の2通り押さえておく必要があります。
- CISC(シスク):複雑な命令体系に対応。1回の命令で複雑な処理ができる。主にPCのCPUとして採用。
- RISC(リスク):単純な命令体系に対応。命令の時効時間が均一になりやすく、パイプラインで効率良く処理ができる。スマホや組み込みシステムなどで採用されている。
CPUとGPUの違い
CPUとGPUはPCの性能においてよくきくと思います。名前は似ていますが、こちらは違うものです。CPUは先ほどから述べているように命令をこなすことを主目的としています。しかし、GPUは行列計算を得意としており、画像しょりや3Dデータを扱う際などに画面のカクツキなどがなくなりスムーズな動作ができるものです。
では今回の記事は以上です。基本情報資格の勉強は継続して行っていきますので引き続き記事更新していきます。「本情報用語まとめ」
コメント