コンピュータアーキテクチャ 第 11 回
パイプラインとメモリ・レジスタ間命令 パイプライン (pipeline) 処理 ⇒ 複数マイクロ操作の並列処理 メモリ・レジスタ間命令 * パイプライン (pipeline) 処理 ⇒ 性能向上 性能低下の回避 メモリ・レジスタ間命令 第 の 値の読み込み パイプラインで効率化 今回の内容 パイプラインがなぜ効果的なのかを知る :あらかじめデータを読み込む ベルトコンベア的な流れ作業 制御部をメモリ・レジスタ間命令対応に拡張 メモリ・レジスタ間ロード命令,ストア命令の実行制御 複数マイクロ操作の並列処理 * * 2オペランド アドレスフィールド * プリフェッチ (prefetch)
パイプライン処理の概念 4 クロックで 1 命令 定常的には 2 クロックで 1 命令 * * 命令を時間差並列処理 ⇒ 並列性はアーキテクチャに依存
パイプラインによるレジスタ間命令の 実行制御を表す状態図 * パイプライン処理 しない場合
パイプライン処理の命令フェッチ (1) * bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F1: ; MAR←PR, PR←PR+1 000 010000 00010000 000 0111000000 000 *
パイプライン処理の命令フェッチ (2) * bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F2: ; MDR←mem(MAR), MAR←PR, PR←PR+1 000 010000 00010000 000 0111110000 010 *
パイプライン処理の命令フェッチ (3) * bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F3: ; IR←MDR, MDR←mem(MAR), MAR←PR 101 010000 00010000 000 0001110000 010 *
演習問題 11.1 パイプライン処理における命令フェッチのタイム チャートを書け.
4 段パイプライン処理 定常的には 1 クロックで 1 命令 * 本講義のアーキテクチャでは改造が必要
演習問題 11.2 レジスタ間命令だけを実装した COMETⅡプロセッサで,4 段パイプライン処理を可能とするためにはどのような改造が必要か述べよ.
デコード時間と演算・データ転送時間 * CISC(複合命令セットコンピュータ) など
パイプラインによる性能低下回避 定常的には 2 クロックで 1 命令 * ⇒ 1 周期でデコードできる場合と同等
メモリ・レジスタ間命令 コード r,adr [,x] ・・・ 例: LD GR1,#1000,GR2 ロードアドレス命令 LAD 以外は POP, RET 命令以外は パイプライン処理のプリフェッチによって 命令の を IR へ, を MDR へとりこむ 実効アドレスの計算が必要 (POP, RET を除く) 実行ステップにかかる メモリアクセス * 2ワード命令 * 第1ワード * 第2ワード * クロックサイクル数は様々
メモリ・レジスタ間命令を含めたデコーダ ⇒組み合せ回路 の追加 LDm , ST , LAD , ADDAm , ADDLm , * ⇒組み合せ回路 の追加 * LDm , ST , LAD , ADDAm , ADDLm , SUBAm , SUBLm , ANDm , ORm , XORm , CPAm , CPLm , SLA , SRA , SLL , SRL , JPL , JMI , JNZ , JZE , JOV , JUMP , PUSH , POP , CALL, RET LAD, POP, RET を除くメモリ・レジスタ間命令の信号の論理和 * ⇒ LAD 命令は独自に実効アドレス計算
メモリ・レジスタ間命令を含めた 実行制御を表す状態図 * 実効アドレス計算 IR, MAR, MDR の内容を捨ててやり直し *
メモリ・レジスタ 間命令を含む 制御信号 生成回路例 * 実効アドレス計算 の開始信号生成 * フリップフロップの追加 * インデックスレジスタが 省略されたとき(RB=0000), バスBに値 0 を出力するよう制御
ロード命令における実効アドレス計算の制御 命令の例: LD GR0,#****,GR1 bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Ea: ; 001 100000 00111000 000 0001000000 000 if LD_m = 1 then MAR←MDR+GRB *
ロード命令 LD GR0,#****,GR1 における制御信号 クロックサイクル Ld0; MDR←mem(MAR) bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Ld0: ; 000 000000 00000000 000 0000110000 010 MDR←mem(MAR) *
ロード命令 LD GR0,#****,GR1 における制御信号 クロックサイクル Ld1; GRA←MDR bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Ld1: ; * 000 000100 00010000 101 1000000000 000 GRA←MDR
LD 命令の実行ステップの タイムチャート * bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Ea:001 100000 00111000 000 0001000000 000; Ld0:000 000000 00000000 000 0000110000 010; Ld1:000 000100 00010000 101 1000000000 000
ST 命令の実行ステップの 制御信号とタイムチャート * bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Ea:010 000100 00111000 000 0001000000 000; St0:010 000000 00100000 000 0000010000 000; St1:000 000000 00000000 000 0000000000 001
演習問題 11.3 CPA r,adr,x 命令の実行ステップの制御信号と タイムチャートを示せ.