Transcript パート11
コンピュータアーキテクチャ 第 11 回 1 パイプラインとメモリ・レジスタ間命令 * パイプライン (pipeline) 処理 ⇒ 複数マイクロ操作の並列処理 – 性能向上 – 性能低下の回避 メモリ・レジスタ間命令 – 第 2オペランド * の アドレスフィールド * 値の読み込み – パイプラインで効率化 今回の内容 – パイプラインがなぜ効果的なのかを知る プリフェッチ (prefetch) * :あらかじめデータを読み込む ベルトコンベア的流れ作業 – 制御部をメモリ・レジスタ間命令対応に拡張 – メモリ・レジスタ間ロード命令,ストア命令の実行制御 2 パイプライン処理の概念 4 クロックで 1 命令 * 定常的には 2 クロックで 1 命令 * 命令を時間差並列処理 ⇒ 並列性はアーキテクチャに依存 3 パイプラインによるレジスタ間命令の 実行制御を表す状態図 * パイプライン処理 しない場合 4 パイプライン処理の命令フェッチ (1) bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F1: 000 010000 00010000 000 0111000000 000; MAR←PR, PR←PR+1 * 5 パイプライン処理の命令フェッチ (2) bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F2: 000 010000 00010000 000 0111110000 010; MDR←mem(MAR), MAR←PR, PR←PR+1 * 6 パイプライン処理の命令フェッチ (3) bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F3: 101 010000 00010000 000 0001110000 010; * IR←MDR, MDR←mem(MAR), MAR←PR 7 演習問題 11.1 パイプライン処理における命令フェッチのタイム チャートを書け. 8 4 段パイプライン処理 • 定常的には 1 クロックで 1 命令 * • 本講義のアーキテクチャでは要改造 9 デコード時間と演算・データ転送時間 * CISC(複合命令セットコンピュータ) など 10 パイプラインによる性能低下回避 定常的には 2 クロックで 1 命令 ⇒ 1 周期でデコードできる場合と同等 * 11 メモリ・レジスタ間命令 コード r,adr [,x] ・・・ 例: LD GR1,#1000,GR2 ロードアドレス命令 LAD 以外は メモリアクセス* POP, RET 命令以外は 2ワード命令 * パイプライン処理のプリフェッチによって 命令の 第1ワード * を IR へ, 第2ワード * を MDR へとりこむ 実効アドレスの計算が必要 (POP, RET を除く) 実行ステップにかかる クロックサイクル数は様々 12 メモリ・レジスタ間命令を含めたデコーダ * ⇒組み合せ回路 の追加 * 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 命令は独自に実効アドレス計算 13 メモリ・レジスタ間命令を含めた 実行制御を表す状態図 * 実効アドレス計算 IR, MAR, MDR の内容を捨ててやり直し * 14 メモリ・レジスタ 間命令を含む 制御信号 生成回路例 * * * 実効アドレス計算 の開始信号生成 フリップフロップの追加 インデックスレジスタが 省略されたとき(PB=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 * 16 ロード命令 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) * 17 ロード命令 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 18 LD 命令の実行ステップの タイムチャート * bA IAa Dec-Ea:001 Ld0:000 Ld1:000 bB BPAbSD 100000 000000 000100 A/S_op c0123aLR 00111000 00000000 00010000 F Fcn 000 000 101 bC GiPAmDdSsD 0001000000 0000110000 1000000000 Mem srw 000; 010; 000 19 ST 命令の実行ステップの 制御信号とタイムチャート * bA IAa Dec-Ea:010 St0:010 St1:000 bB BPAbSD 000100 000000 000000 A/S_op c0123aLR 00111000 00100000 00000000 F Fcn 000 000 000 bC GiPAmDdSsD 0001000000 0000010000 0000000000 Mem srw 000; 000; 001 20 演習問題 11.2 CPA r,adr,x 命令の実行ステップの制御信号と タイムチャートを示せ. 21