うろ覚えだった知識をまとめてみたよ【ハードウェア編①】
学習エントリ。 全体的な知識の底上げをすべく、復習も兼ねてまとめてみる。
ハードウェアとは
ハードウェアとは、コンピュータを構成する要素の総称。処理・記憶・入力・出力それぞれ4種類の機能を持つ装置のこと。
CPUとは
- コンピュータの頭脳みたいな
- メモリから命令やデータを取り出して、それを実行し、またメモリに結果を格納する
CPUの動作
- 命令フェッチ:メモリから命令を取得
- デコード:取得した命令を解読。CPUのどの回路に動作させるか決める
- オペランドフェッチ :メモリから処理対象のデータを取得
- 実行
- 結果の書き込み:結果をメモリに書き込む
これらの流れを命令サイクルという。オペランドは処理の対象となるデータ。命令もデータもとりあえずはメモリに置いてある。
CPUの構成要素
中でも重要な3点 * レジスタ :メモリから取得した命令やデータ、計算結果を格納する変数みたいなもの。まずはこのレジスタに入れて、演算を行い、結果をレジスタに戻す。命令レジスタ、凡庸レジスタ、アキュムレータ、インデックスレジスタ、ベースレジスタなど * ALU:四則演算や論理演算を行う機構。 * デコーダ:命令レジスタが保持している命令を解読し、CPU内部のどの部分を動作させるか決める機能
クロック周波数
CPUが全体として正しく動作するためには、レジスタ、デコーダがタイミングをあわせて正しく動作する必要があり、そのタイミングを合わせるための信号がクロック。クロックを一秒間にどれくらい発生させるかをクロック周波数という(単位はHz)。一般的にクロック周波数が高いとCPUの動作は早くなる。3GHzのCPUなら、一秒間に約30億回のクロック。
CPUの構造
CISC:複合命令セットコンピュータ。高性能な命令を豊富に用意したCPU。 便利だけど、すべてをハードウェアでコントロールすることが出来ず、一部はソフトウェア(マイクロプログラム)で管理されている。そのため速度は若干遅い。
RISC:基本的な命令のみに絞ったCPU。CISCと違い、CPU内部の回路は単純なため、全てをハードウェアで管理(ワイヤードロジック制御)。動作は早い。
パイプライン制御とハザード
命令サイクルをプロセッサ内で複数のステージに細分化し、複数の命令を並列に実行することで命令を高速で処理できる様になった。ベルトコンベアのようなイメージ。これをパイプライン制御という。パイプライン制御を阻害する様々な要因がハザード。主に以下の2つ。 * 制御ハザード:条件分岐命令、ジャンプ命令の実行 * データハザード:直前の命令の実行結果を利用する
マルチコアプロセッサ
CPU本体の回路をコアという。ひとつのCPUに複数のコアがあるのでマルチコアプロセッサ。消費電力を抑えつつ、処理性能を高められるのがいいとこ。
機械言語とその命令の種類
機械語(アセンブラ言語)はCPUが直接理解できる唯一の言語。 * 転送命令:メモリ〜レジスタ間のデータの転送 * 演算命令:算術、論理演算 * 比較演算命令:大小関係の比較 * シフト演算命令:レジスタに格納されている数値の桁を移動する * 分岐命令:プログラムの実行順序を変える
機械言語命令の構成
命令部 オペランド部:処理対象のデータを指定。データが何番地にあるのか?その指定の事をアドレッシングモードという。
アドレッシングモード
- 直接アドレス指定:オペランド部に書いてある数値が格納場所の番地であるとする
- 間接アドレス指定:オペランド部に書いてある数値が有効アドレスがある番地を指している(有効アドレス=データが格納させれている番地)。2回メモリにアクセスせにゃならん。
- インデックスアドレス指定:インデックスレジスタとオペランド部に書いてある数値を足した値が格納場所の番地であるとする。配列のアクセスなどに使う。
- ベースアドレス指定:ベースレジスタとオペランド部に書いてある数値を足した値が格納場所の番地であるとする。
割込み
割込みが発生するとCPUは処理を停止し、割込みの対応を行う。それが終わると停止したプログラムを再開する。 内部割り込み:プログラムを実行した結果として発生する割込み 外部割り込み:CPUに接続される周辺装置が状況により発生させる割込み