目的
この記事では、応用情報技術者試験の出題分野であるプロセッサに関する覚書きを列挙する。
プロセッサ
プロセッサとは、コンピュータを動作させるためのハードウェアのことで、プロセッサを使用する装置としてCPUがある。
また、一般的には、プロセッサの別名としてCPUと呼び、厳密な分類をしない表現が多い。
-
コンピュータ構成
コンピュータを多目的に使えるようにするため、内部にプログラムを保存できるよう設計された構成をプログラム内蔵方式といい、以下の構成に分類される。-
入力装置
外部からのデータやプログラム等を受け付けるマウスやキーボードなどのインターフェース。 -
記憶装置
入力、出力、CPUの制御・演算に関するデータをすべて保持し、メモリと呼ばれる。 -
CPU(制御・演算装置)
プログラム制御行う制御装置と演算を行う演算装置を指し、コンピュータの心臓部にあたるハードウェア。 -
出力装置
データ(結果)を外部に出力するモニターやプロジェクタなどの装置。
-
プロセッサの種類
以下、CPU以外で使用されている代表的なプロセッサ。
-
DSP(Digital Signal Processor)
- A/D変換等のディジタル信号処理に特化したプロセッサ。
-
FPU(Floating Signal Processor)
- 浮動小数点演算に特化したプロセッサ。
-
GPU(Graphics Processing Unit)
- 画像処理専用のプロセッサ。
- \(3D\) などのグラフィックを高速処理するために使用される。
また、GPUを画像処理以外の目的で使用する技術として、GPGPU(General-Purpose computing Graphics Processing Unit)があり、AIチップとしてディープラーニングなどの演算で用いられている。
プロセッサ命令とステージ
CPUにおけるプロセッサで一つの命令を実行する際、制御装置、演算装置以外にも、入力データの準備や、命令となるプログラムを記憶装置から演算装置に取出す処理など、命令実行完了となるまでにいくつかの工程がある。
この工程をステージと呼び、次の代表的なステージ(*1)~(*5)の順で実行される。
-
(*1)命令の取出し
- 記憶装置から実行する命令をから1行取出す。
-
(*2)命令の解読
- 制御装置で命令を解読する。
-
(*3)データの取出し
- 記憶装置から(*4)命令の実行に必要なデータを取出す。
-
(*4)命令の実行
- 演算装置で命令の実行を行う。
-
(*5)結果の格納
- 演算結果を記憶装置に格納する。
プロセッサの高速化技術
プロセッサは、単純にクロック周波数(GHz:1秒間に実行されるステージ数)を上げることにより高速化するが、さらに高速化するため、次の代表的な技術がある。
-
パイプライン
上記、(*1)~(*5)のステージを一つずつずらし、同時に複数の命令を実行する方法。
但し、条件分岐等でステージの順番が変わるとパイプラインハザード(*6)が発生し、処理を中止または、再実行しなければならない。(*6)パイプラインハザードとは、複数の命令を同時に実行する際、その依存関係が崩れ、パイプライン処理を中止または、再実行しなければならない状態を指す。
また、パイプラインハザードは、下記三つの種類がある。
-
制御ハザード
分岐処理により処理順が変わった場合。 -
データハザード
複数処理で同時にデータ操作したことによって不具合が起こった場合。 -
構造ハザード
同じハードウェアを同時に使用することによって競合が起こった場合。
-
-
スーパースカラ
上記パイプラインのステージを複数同時に実行させ、さらに効率化する方法。 -
スーパーパイプライン
ステージ単位にずらして同時実行している上記パイプラインより、さらに細分化して一度に実行できる命令数を増やす方法。 -
VLIW(Very Long Instruction Word:超長命令語)
命令語を長くすることで一つの命令で複数機能を一度に実行する方法。
マルチプロセッサ
上記のプロセッサ自体を高速化する技術以外に複数のプロセッサを同時稼働させて高速化を図るマルチプロセッサという技術がある。
複数プロセッサの結合方式は、下記二つの種類がある。
-
密結合マルチプロセッサ
複数のプロセッサがメモリ(主記憶)を共有し、同時稼働する方式。また、密結合マルチプロセッサに分類されるもので現在のCPU高速化技術の主流となっている、複数プロセッサ(コア)を外見的に一つに見えるプロセッサの中に封入したマルチコアプロセッサがある。
-
マルチコアプロセッサの代表例
-
デュアルコア
コア(プロセッサ)が \(2\) 個。
※ Intel Core \(i3\)、\(i5\) など -
クアッドコア
コア(プロセッサ)が \(4\) 個。
※ Intel Core \(i5\)、\(i7\) など -
ヘキサコア
コア(プロセッサ)が \(6\) 個。
※ Intel Core \(i5\)、\(i7\) など -
オクタコア
コア(プロセッサ)が \(8\) 個。
※ Intel Core \(i5\)、\(i7\)、\(i9\) など -
ドデカコア
コア(プロセッサ)が \(12\) 個。
※ Intel Core \(i9\)(\(X\)シリーズ)など -
ヘキサデカコア
コア(プロセッサ)が \(16\) 個。
※ Intel Core \(i9\)(\(X\)シリーズ)など
-
-
-
疎結合マルチプロセッサ
複数のプロセッサに別々のメモリを割当て、同時稼働する方式。複数独立したコンピュータシステムが動いているのと同じで、複数のサーバーを連携して一つのシステムとして運用するクラスタシステムも疎結合マルチプロセッサの一つ。
プロセッサの性能指標
以下、代表的な性能指標。
-
MIPS(Million Instructions Per Second)
- \(1\) 秒毎に命令実行が何百万個のできるかを表す。
但し、ほぼ分岐のないプログラムを実行させたときのピーク値を表すため、実際の動作性能と異なる。
-
FLOPS(Floating-point Operations Per Second)
- \(1\) 秒毎に浮動小数点演算が何回できるかを表す。
科学技術計算やシュミレーションを行うスーパーコンピュータなどの性能指標として用いられる。
- \(1\) 秒毎に浮動小数点演算が何回できるかを表す。
割込み
割込みとは、実行中のプログラムを中断して別処理を行うことで下記 \(2\) つの種類がある。
-
内部割込み
実行プログラム内部のソフトウェアによる割込みで次の種類がある。
※ ソフトウェア割込みとも呼ばれる。-
プログラム割込み
\(0\) 割りやオーバーフローが起こったときに発生する割込み。 -
SVC(Super Visor Call)割込み
OSの処理を呼出した場合(OS中心部のカーネルを呼出した場合)に発生する割込み。 -
ページフォールト
仮想記憶(仮想メモリ)上に存在しないページへアクセスした場合に発生する割込み。
-
-
外部割込み
ハードウェアによる割込みで次の種類がある。
※ ハードウェア割込みとも呼ばれる。-
タイマー割込み
タイマーにより発生する割込み。 -
機械チェック割込み
ハードウェアの異常が検出された場合に発生する割込み。 -
入出力割込み
キーボード等の入力装置から発生する割込み。 -
コンソール割込み
管理コンソールから発生する割込み。
-
エンディアン
エンディアンとは、\(2\) バイト以上のデータを格納する際のデータの並び順のことで、バイトオーダーとも呼ばれる。
並び順については、上位バイトから並べるビッグエンディアンと下位バイトから並べるリトルエンディアンがある。
参考文献
- 瀬戸 美月(\(2020\))『徹底攻略 応用情報技術者教科書』株式会社インプレス