前置き
今回から、コンピュータのハード寄りの話が続きます。
個人的には、このあたりの知識を復習しておきたい。
プロセッサ
プロセッサはコンピュータ内部でコンピュータを動作させるためのハードウェア。CPUはこの一種。
命令のステージと実行手順
命令を実行する部分だが、命令自体は記憶装置にあるし、計算命令などの場合は入力データも必要になる。
一つの命令を実行するまでにやることをそれぞれステージと呼ぶ。
代表的なものは次の5つで、順番に実行される。(表題のカッコ内はこの中での略称)
1. 命令の取り出し(「取」)
実行する命令を記憶装置(またはキャッシュメモリ)から1行取り出す。
2. 命令の解読(「解」)
制御装置で命令を解読して何をするか知る。理解する。
3. データの取り出し(「デ」)
記憶装置(または…略)から命令の実行に使うデータを演算装置に取り出す。
4. 命令の実行(「実」)
演算装置で命令を実行。
5. 結果の格納(「格」)
演算結果を記憶装置(または…略)に格納。
プロセッサの高速化技術
高速化する最も単純な方法はクロック周波数を上げること。
ただ、それには限界があるので、以下のような様々な高速化技術が考えられた。
クロック周波数…1秒間に実行されるクロック(ステージ)の数。
1. パイプライン
命令のステージを一つずつずらして、同時に複数の命令を実行させる方法。
分岐命令などで順番が変わると、パイプラインハザードが発生し、処理のやり直しとなる。
2. スーパスカラ
パイプラインのステージを複数同時に実行し、効率化を実現。
演算の割り当てはハードウェアによって動的に行われる。
3. スーパパイプライン
パイプラインを更に細分化して、一度に実行できる命令数を増やす方法。
Pentium4では一つの命令を20ステージに分けている。
4. VLIW(Very Long Instruction Word:超長命令語)
命令語を長くすることで、一つの命令で複数の機能を一度に実行出来る。
パイプラインと合わせた実効イメージは右記。
パイプラインハザード
以下の三種類がある。
1. 制御ハザード…分岐処理で処理の順番が変わる
2. データハザード…複数の処理で同じデータを扱うことで不具合が生じる。
3. 構造ハザード…同じハードウェアを同時に使用することでの競合が原因となる。
マルチプロセッサ
複数のプロセッサを同時稼働させて高速化を図る。
1. 密結合マルチプロセッサ
複数のプロセッサがメモリ(主記憶)を共有するもの。
マルチコアプロセッサ(見た目は一つで仲は複数)もこの一種。
2. 疎結合マルチプロセッサ
複数のプロセッサに別々のメモリを割り当てたもの。
複数の独立したコンピュータのようなものなので、間に高速な通信システムを用いる。
クラスタシステムが代表例。
プロセッサの省電力技術
プロセッサは消費電力を抑える工夫も必要技術である。省電力化技術には、クロックゲーティング(動作してない回路ブロックへのクロック供給を停止)やパワーゲーティング(動作していない回路ブロックへの電源供給を遮断)などがある。
プロセッサの性能指標
代表的な指標は以下の通り
1. MIPS(Million Instructions Per Second)
1秒間に何百万個の命令が実行できるか。PCやサーバによく用いられる。
2. FLOPS(Floating-point Operatons Per Second)
1秒間に浮動小数点演算が何回出来るかを表したもの。スパコンやゲーム機の性能評価によく用いられる。
割込み
実行中のプログラムを中断し、別の処理を行うことを割込みという。以下の種類がある。
1. 内部割込み
実行プログラム内部からの割込み。以下の3通りがある。
○ プログラム割込み…0の割り算やオーバフローが起こった時に発生
○ SVC割込み…プログラムがOSに処理を依頼するときに発生
○ ページフォールト…仮想記憶管理において存在しないページにアクセスするとき発生
2. 外部割込み
ハードウェア関連の割込み。以下の種類がある。
○ タイマ割込み…タイマから行われる。
○ 機械チェック割込み…ハードウェアの異常を検出したとき発生
○ 入出力割込み…キーボードなどの入出力装置から行われる。
○ コンソール割込み…コンソールからスイッチが行われたとき発生。
※SVC(Super Visor Call):OSの中心部であるカーネルを呼び出す命令のこと。
エンディアン
複数バイトのデータを格納するとき、それをメモリに配置する方式。バイトオーダともいう。
データの上位バイトから順番にメモリに並べる方式をビッグエンディアン、逆に下位バイトからをリトルエンディアンという。
最後に
このあたりは組込み系のソフトウェア開発の時に本格的に学ぶと思います。