bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD

Download Report

Transcript bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD

コンピュータアーキテクチャ
第 12 回
1
各種メモリ・レジスタ間命令

COMETⅡの命令の分類
–
–
–
–
–
–
–

ロード,ストア,ロードアドレス命令 :LD, ST, LAD
算術,論理演算命令:ADDA, ADDL, SUBA, SUBL, AND, OR, XOR
比較演算命令: CPA, CPL
実行制御の点で類似 *
シフト演算命令: SLA, SRA, SLL, SRL
分岐命令: JPL, JMI, JNZ, JZE, JOV, JUMP
スタック操作命令: PUSH, POP
コール,リターン命令: CALL, RET
今回の内容
– LAD命令の実行制御


–
–
–
–
共通の実効アドレス計算状態に推移しない
実際にはメモリにアクセスしない
SLA命令の実行制御
JPL命令の実行制御
PUSH・POP命令の実行制御
2
CALL・RET命令の実行制御... PUSH・POP命令に類似
ロードアドレス命令の実行制御状態
ロードアドレス命令検出
*
共通の実効アドレス計算状態には推移しない *
3
制御信号生成
回路における
ロードアドレス
命令の処理
*
デコードの開始
*
デコードの完了:
ロードアドレス命令の特定
*
ロードアドレス命令
の制御信号生成へ
ロードアドレス命令の制御
命令の例: LAD GR0,#****,GR1
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Dec-Lad: 001 100000 00111000 000 1000000000 000; if Lad = 1
then GRA←MDR+GRB
*
5
シフト命令の実行概念
SLA GR1,#****,GR2
* 実効アドレス値だけ1ビットシフトの繰り返し
ただし,現在の主流はバレルシフタ(1ステップで任意ビットシフト)
6
制御信号生成
回路における
SLA 命令の処理
*
デコードの開始
*
デコードの完了:
SLA命令の特定
*
実効アドレス計算の開始
*
SLA命令の
実行ステップの
制御信号生成へ
シフト演算命令の制御
命令の例: SLA GR1,#0003 (クロックサイクル Sla0)
#FFFD *
*#0003
*
バス A の
値が 0
* #FFFD
=-(MAR)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Sla0: 000 001000 11111000 000 0000000000 000; SNC←-MAR
*
8
シフト演算命令の制御信号生成回路
命令の例: SLA GR1,#0003 (クロックサイクル Sla0)
*
#FFFD
#FFFD
9
シフト演算命令の制御
命令の例: SLA GR1,#0003 (クロックサイクル Sla1)
*#FFFD →#FFFE
→#FFFF →#0000
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Sla1: 010 000000 00100110 100 1000000000 000;
*
*
値が 0 で
なければ
If SNC <> 0
then {GRA←Sla(GRA),
SNC←SNC+1,Sla1}
10
シフト演算命令の制御信号生成回路
命令の例: SLA GR1,#0003 (クロックサイクル Sla1)
*
#FFFD →#FFFE
→#FFFF →#0000
11
演習問題 12.1
前述のシフト演算命令 SLA GR1,#0003 の実行
ステップのタイムチャートを示せ.
12
分岐命令の制御信号生成回路
命令の例: JPL #****,GRB (クロックサイクル Jpl0)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Jpl0: 000 001000 00010000 000 0010000000 000 ; if (SF=0)AND(ZE=0)
then PR←MAR
*
13
演習問題 12.2
JPL 命令の実行ステップのタイムチャートを示せ.
ただし,実行時の SF および ZF の値はともに 0 で
あるとする.
14
プッシュ命令の制御信号とデータの流れ(1)
(実効アドレス計算のサイクル Dec-Ea は省略)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Push0: 000 001000 00010000 000 0000001101 000 ; SDR←MAR, SP←SP-1
*
15
プッシュ命令の制御信号とデータの流れ(2)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Push1: 000 000000 00000000 000 0000000000 101 ; mem(SP)←SDR
*
16
POP命令の実行制御状態
POP命令検出
*
状態 F3 に推移(パイプラインを崩さない) *
17
ポップ命令の制御信号とデータの流れ(1)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Dec-Pop0: 000 000010 10111000 000 0000000111 110 ; if POP = 1
then {SDR←mem(SP),
18
*
SP←SP+1}
ポップ命令の制御信号とデータの流れ(2)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Pop1:000 000001 00010000 000 1110000000 000; GRA←SDR, PR←PR+1
*
レジスタ間命令と同様 * 19
ポップ命令の実行ステップの
タイムチャート
*
bA
IAa
Dec-Pop0:000
Pop1:000
bB
BPAbSD
000010
000001
A/S_op
c0123aLR
10111000
00010000
F
Fcn
000
000
bC
GiPAmDdSsD
0000000111
1110000000
Mem
srw
110;
000;
20
コール命令(CALL命令)の制御信号
プッシュ命令(PUSH命令)に類似
PUSH命令の制御信号
bA
IAa
Push0: 000
Push1: 000
bB
BPAbSD
001000
000000
A/S_op
c0123aLR
00010000
00000000
F
Fcn
000
000
bC
GiPAmDdSsD
0000001101
0000000000
Mem
srw
000 ; SDR←MAR, SP←SP-1
101 ; mem(SP)←SDR
F
Fcn
000
000
bC
GiPAmDdSsD
0000001101
0010000000
Mem
srw
000 ; SDR←PR, SP←SP-1
101 ; mem(SP)←SDR, PR←MAR
CALL命令の制御信号
bA
IAa
Call0: 000
Call1: 000
bB
BPAbSD
010000
001000
A/S_op
c0123aLR
00010000
00010000
*
*
21
RET命令の実行制御状態
RET命令検出
状態 F1 に推移(パイプラインが崩れる)
*
*
22
リターン命令(RET命令)の制御信号
ポップ命令(POP命令)に類似
POP命令の制御信号
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Dec-Pop0: 000 000010 10111000 000 0000000111 110 ; if POP = 1 then
{SDR←mem(SP), SP←SP+1}
Pop1:000 000001 00010000 000 1110000000 000 ; GRA←SDR, PR←PR+1
RET命令の制御信号
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Dec-Ret0: 000 000010 10111000 000 0000000111 110 ; if RET = 1 then
{SDR←mem(SP), SP←SP+1}
Ret1:000 000001 00010000 000 0010000000 000 ; PR←SDR
*
*
23
演習問題 12.3
RET 命令の実行ステップのタイムチャートを示せ.
24