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:
; if Lad = 1
then GRA←MDR+GRB
*
5
シフト命令の実行概念
SLA GR1,#****,GR2
*
ただし,現在の主流はバレルシフタ(1ステップで任意ビットシフト)
6
制御信号生成
回路における
SLA 命令の処理
シフト演算命令の制御
命令の例: SLA GR1,#0003 (クロックサイクル Sla0)
*
*
*
*
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Sla0:
; SNC←-MAR
*
8
シフト演算命令の制御信号生成回路
命令の例: SLA GR1,#0003 (クロックサイクル Sla0)
*
9
シフト演算命令の制御
命令の例: SLA GR1,#0003 (クロックサイクル Sla1)
*
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Sla1:
;
*
*
If SNC <> 0
then {GRA←Sla(GRA),
SNC←SNC+1,Sla1}
10
シフト演算命令の制御信号生成回路
命令の例: SLA GR1,#0003 (クロックサイクル Sla1)
*
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:
*
; 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:
*
; SDR←MAR, SP←SP-1
15
プッシュ命令の制御信号とデータの流れ(2)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Push1:
*
; mem(SP)←SDR
16
POP命令の実行制御状態
*
*
17
ポップ命令の制御信号とデータの流れ(1)
bA bB
A/S_op
F
bC
Mem
IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw
Dec-Pop0:
*
; 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:
*
; 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命令の実行制御状態
*
*
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