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