CPU(Central Processing Unit|中央処理装置)はコンピュータのエンジン、脳、などと表現される処理速度の中心となる部品です。
一般的にCPUの能力が高いとPCは高性能で高速、値段も高くなる傾向にあります。メモリ、HDDは増設できたりしますがCPUは付け替えるということは一般的ではないため購入時はまずCPUから見ることも多いです。
クロック周波数
コンピュータは0と1しか理解できないと言われます。モールス信号を打っている人を想像してください。指で電鍵を押した時に電気が流れてはなした時に電気が流れなくなります。CPUでも原理は同じで内部にある発振機を使ってそれを超高速に行っているんです。このON、OFFがどれだけ早く実行できるかがクロック周波数として表現され単位はHz(ヘルツ)と呼ばれます。またON、OFFの動作を1回行うことを1クロックと表現します。クロック周波数とクロック数を使うと1秒間に実行できる命令数を割り出すこともできます。
1秒間に実行できる命令数 = クロック周波数 ÷ 1つの命令を実行するのに必要なクロック数
例として命令数を計算してみます。クロック周波数2GHzのCPUが1秒間に処理できるクロック数を考えてみます。この時1つの命令にかかるクロック数が4クロックだった場合次のような計算になります。
5億命令 = 20億クロック ÷ 4
CPUの速さを見る時、基本的にはクロック周波数が高いほど早くなります。
MIPS
MIPS(Million Instructions Per Second)はCPUが1秒間に何百万(ミリオン)個の命令を実行できるかを表す単位で、例えば3MIPSは1秒間に300万個の命令を実行するという意味になります。
ただこの命令は実行するのに長い時間がかかるものもあれば短い時間で実行できるものもあります。そこで平均命令実行時間というものを使ってMIPSを計算します。
MIPS = 1秒 ÷ 平均命令実行時間 x 10^-6(MIPSは百万単位なので10^-6で計算する)
次に平均命令実行時間を求めてみましょう。4MIPSの平均命令実行時間を求めてみます。ここでは平均命令実行時間をTとします。
4MIPS = 1秒 ÷ T x 10^-6
4000000 = 1秒 ÷ T
4000000T = 1秒
T = 1 ÷ 4000000
T = 250ナノ秒
コア
コアとはCPUの中にある演算を行う装置のことです。最近のCPUではマルチコアというコアを複数搭載しているものが多く、2つのコアを持つプロセッサをデュアルコアプロセッサ、4つのコアをもつプロセッサをクアッドコアプロセッサと呼びます。マルチコアプロセッサはそれぞれのコアが別々の処理を実行できるのでコア数が多いほど性能が高くなります。
試験によく出る項目
・CPUの性能は「クロック周波数」「MIPS」「コア」の3つの要素で評価されます。
・1秒間に実行できる命令数=クロック周波数÷1つの命令を実行するのに必要なクロック数
・MIPS=1秒÷平均命令実行時間x10^-6
レジスタ
CPU内部にある一時記憶装置のことです。詳細はこちらをご参照ください。
CPUが命令を処理する流れ
1.コンピュータが起動したらCPUはプログラムカウンタに格納されている「次の命令のアドレス」を見て主記憶装置に「命令」を取りに行きます。
2.プログラムカウンタは一度参照されると自動的に数値を加算し、次の命令アドレスを指すように更新されます。
3.主記憶装置から取り出された命令は「命令レジスタ」に格納されます。この動きを「フェッチ」と呼びます。
4.命令はCPUの中にある命令デコーダー(命令解読器)という装置で解読されます。
5.解読した結果を仮に「6番地にあるデータを取り出せ」というものだった場合、メモリの6番地にあるデータを取りに行きます。
6.取り出されたデータは汎用レジスタに格納されます。
試験によく出る項目
・プログラムカウンタ(プログラムレジスタ)は次の命令のアドレスを格納しています。
・命令レジスタは「命令」を格納しています。
・汎用レジスタは「データ」を格納するレジスタです。
アドレス指定方式
メモリの番地を指定して目的のデータにアクセスすることをアドレス指定方式と呼びます。このアドレス指定方式には大きく直接アドレス指定と間接アドレス指定の2種類があります。
直接アドレス指定
命令のアドレス部に有効なアドレス(番地)が入っていて、メモリ内のそのアドレスにアクセスするとデータが入っている場合、直接アドレス指定と呼びます。
間接アドレス指定
命令のアドレス部に有効なアドレス(番地が入っていて)、メモリ内のそのアドレスにアクセスするとまた新しいアドレスの指定が入っている場合、間接アドレス指定と呼びます。
間接アドレス指定のメリットは命令のアドレス部に格納できないような大きなサイズのアドレスを、メモリ内に保存できることになります。ただ間接アドレス方式の場合はCPUからメモリへのアクセスが2回発生するので処理に時間がかかるデメリットもあります。
試験によく出る項目
・間接アドレス指定の流れを図で示されて、穴埋めのような形で出題されることが多いです。
割込み
現在実行中のプログラムを中断して、別のプログラムに切り替えることを割り込みと呼びます。
割り込み処理が走るとCPUは次のような動きをします。
1.現在実行中のプログラムカウンタを別の場所に退避させます。
2.割り込んできたプログラムのアドレスをプログラムカウンタにセットします。
3.割り込みの処理が完了したら退避させていたアドレスをプログラムカウンタに復帰させて処理を再開します。
割り込みを行う主な目的は優先度の高い命令を先に処理してCPUを効率よく利用することです。
もう一つはプログラムエラー、ハードウェアのエラー時に割り込み処理を発生させて問題を解決するというパターンもあります。
また割り込み処理は内部割り込みと外部割り込みの2種類があります。内部割り込みは実行中のプログラムが原因の割り込み、外部はそれ以外の原因で発生する割り込みです。
試験によく出る項目
試験ではその処理が内部割り込みなのか、外部割り込みなのかという点を問われる問題がよく出ます。
内部割り込み
実行中のプログラムが原因で発生する割り込みを内部割り込みと言います。内部割り込みには以下のものがあります。
種類 | 説明 |
プログラム割り込み | プログラム実行中に発生したエラーが原因の割り込み。 ・ゼロ除算(数値を0でわり算するとエラーになるというもの) ・演算結果のオーバーフロー(予想外に計算結果のデータが大きくなってしまったなど) ・未定義命令を実行した時(プログラム例外) ・メモリ、デバイスなど存在しない領域にアクセスした時(アドレス例外) |
スーパーバイザコール割込み | OSの機能を利用するときに起こる割り込み。 例えばプログラムの実行中にデータの入力をユーザーに要求するなど |
ページフォールト | 仮想記憶管理での主記憶装置に存在しないページへのアクセスが発生した時 |
外部割込み
実行中のプログラム以外が原因で起こる割り込みを外部割り込みと言います。
種類 | 説明 |
タイマ割込み | CPUのタイマによって発生する割り込み。 ・インターバルタイマによる指定時間の経過時(ラウンドロビン方式で一定時間ごとにCPUの使用権を切り替える時など) ・ウォッチドッグタイマによるタイムアウト(永久ループのあるプログラムを停止させる時など) |
入出力割込み | 入出力が完了したことによる割込み ・入出力処理終了のお知らせ ・処理中の入力装置、出力装置に異常が発生した時 |
機械チェック割込み | 装置内の検査によって異常を検出したときに起こる割込み ・停電などの電源異常による割込み ・メモリパリティエラーが発生したことによる割込み |
コンソール割込み | プログラムの実行中にオペレータがコンソールから処理要求を出したときに発生する割込み |
試験によく出る項目
・割り込みが起こるとCPUはプログラムカウンタいあるアドレスを別の場所に退避させ、割り込んできた命令のアドレスをプログラムカウンタにセットする
・割り込みの命令が完了したらCPUは退避させていたアドレスをプログラムカウンタに復帰させて処理を再開する
・割り込みの事例に対してそれが内部か外部かを問われる問題が出題される。
・内部割込みの代表例はゼロ除算
・外部割込みの代表例はインターバルタイマによって指定時間経過時に生じる割込み
コメントを残す