JavaScriptをがんばるブログ

React,OSS,ソフトウェア開発が中心のブログです👨‍💻

「コンピュータアーキテクチャ技術入門」読書会#5

2.2 プロセッサの基本構造

パイプラインプロセッサの構造を図で学んだ

  • 命令の読み出し(IFサイクル)
  • 命令の解釈(DEサイクル)
  • オペランドの読み出し(OPサイクル)
  • 演算の実行(EXサイクル)
  • 演算結果の書き込み(WBサイクル)

これらのサイクルを実際に行うハードウェアについて学ぶ章でした。

フェッチユニット

  • 次に実行する命令を取得するユニット
  • 命令切り出しユニットが命令のバイト列から次に実行する命令1つを取得する

デコードユニット

  • フェッチユニットから受け取った命令の実行を制御するユニット
  • 資源予約表レジスタ状態表を使って、命令に必要なI/Oユニット、レジスタが使用できる状態なのか確認して、問題なければ命令を実行パイプラインへ渡す

実行パイプライン

  • デコードユニットから出力レジスタ番号動作入力レジスタ番号を受け取って命令の実行を行うユニット
  • 動作の種類に応じて加減算ユニット乗算ユニット論理演算ユニットロード/ストアユニットに振り分けられる

ロード/ストアユニット

  • メモリへのアクセスを司るユニット
  • デコードユニットから受け取った入力レジスタ1、入力レジスタ2の値を加算器で計算し、対象のメモリアドレスを求める
  • 対象のメモリアドレスのデータがキャッシュメモリにあれば、そちらを優先して使用する

条件分岐命令の処理

  • レジスタ内にCondition codeと呼ばれる欄があり、条件判定する値を格納する
  • 分岐ユニットで条件を判定し、分岐処理を行う

分岐ユニット

  • 分岐条件、分岐先命令のアドレス、条件判定する値(CC欄)を受け取り、分岐処理を行う
  • 条件判定に使用する値(CC欄)が確定するまで、それと条件判定が終了し次の命令が確定するまで、サイクル単位では処理を待ったり、キャンセルが発生したりする