计算机体系结构实验设计文档模板.docx
《计算机体系结构实验设计文档模板.docx》由会员分享,可在线阅读,更多相关《计算机体系结构实验设计文档模板.docx(18页珍藏版)》请在冰豆网上搜索。
计算机体系结构实验设计文档模板
表1指令系统定义
编号
汇编码
操作
指令码
1
MOVA,Ri
(Ri)→A
00000iii
2
MOVRi,A
(A)→Ri
00001iii
3
MOVA,@Ri
(7EH[Ri])→A
00010iii
4
MOV@Ri,A
(A)→7EH[Ri]
00011iii
5
MOVA,#data8
Data8→A
00100000dddddddd
6
MOVRi,#data8
Data8→Ri
00101iiidddddddd
7
ADDA,Ri
(A)+(Ri)→A
00110iii
8
SUBA,Ri
(A)–(Ri)→A
00111iii
9
SUBA,addr
(A)-(addr)→A
01000000addrhaddrl
10
LDAaddr
(addr)→A
01001000addrhaddrl
11
STAaddr
(A)→addr
01010000addrhaddrl
12
JCaddr
ifCY=1thenaddr→PCelse(PC)+3→PC
01011000addrhaddrl
13
JMPaddr
addr→PC
01100000addrhaddrl
14
JNKBaddr
ifKRIX=0thenaddr→PCelse(PC)+3→PC
01101000addrhaddrl
15
JNPBaddr
ifPRIX=0thenaddr→PCelse(PC)+3→PC
01110000addrhaddrl
16
JNZadde
IfZ=0thenaddr→PCelse(PC)+3→PC
01111000addrhaddrl
17
RSP
7fffH→SP
10000000
18
PUSHA
A→堆栈,SP-1
10001000
19
POPA
SP+1,堆栈→A
10010000
20
CMPA,#data8
(A)-Data8,按结果置C和Z
10011000dddddddd
21
RRCA
(A)右移一位
10100000
22
CPL@Ri
取反(7EH(Ri))存储单元
10101iii
23
CALLaddr
保存PC进栈,按addr转到子程序
10110000addrhaddrl
24
RET
PC退栈,子程序返回
10111000
注:
对寄存器间接寻址指令,如MOV@Ri,A,由于Ri为8位,而存储器地址为16位,故取Ri为地址低8位,高8位固定为7EH。
图1CPU结构框图
图1微程序控制计算机CPU框图
表2指令流程定义
编号
汇编码
指令流程
0
取指令(所有指令的最后一步)
T0:
(PC)MC=00>AB;(M)CRDX=0>DBGI=0>IR;
(PC)+1PINC=0>PC;(A)GC=0>ACT;MPLD=0;
1
MOVA,Ri
T1:
(Ri)MA=0S=011>ALUMB=00>DBGA=0>A;
2
MOVRi,A
T1:
(ACT)S=010>ALUMB=00>DBWRE=0>Ri;
3
MOVA,@Ri
T1:
(Ri)MA=1S=011>ALUMB=00>DBGA2=0>ADRL;
7EHAHS=0>ADRH;
T2:
(ADR)MC=01>AB;(M)CRDX=0>DBGA=0>A;
4
MOV@Ri,A
T1:
(Ri)MA=1S=011>ALUMB=00>DBGA2=0>ADRL;
7EHAHS=0>ADRH;
T2:
(ADR)MC=01>AB;(ACT)S=010>ALUMB=00>DBCWRX=0>M;
5
MOVA,#data
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA=0>A;(PC)+1PINC=0>PC;
6
MOVRi,#data
T1:
(PC)MC=00>AB;(M)CRDX=0>DBWRE=0>Ri;(PC)+1PINC=0>PC;
7
ADDA,Ri
T1:
(ACT)+(Ri)MA=1S=000>ALUMB=00>DBGA=0>A;COUTCP=0ME=0>CY;
8
SUBA,Ri
T1:
(ACT)-(Ri)MA=1S=001>ALUMB=00>DBGA=0>A;COUTCP=0ME=0>CY;
9
SUBA,addr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>AB;(M)CRDX=0>DBGT=0>TMP;
T4:
(PC)MC=00>AB;(ACT)-(TEMP)MA=1S=001>ALUMB=00>DBGA=0>A;COUTCP=0ME=0>CY;
10
LDAaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>AB;(M)CRDX=0>DBGA=0>A;
11
STAaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>AB;(ACT)S=010>ALUMB=00>DBCWRX=0>M;
12
JCaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>ABPLD2,1,0=001>PC;
13
JMPaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>ABPLD2,1,0=010>PC;
14
JNKBaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>ABPLD2,1,0=011>PC;
15
JNPBaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>ABPLD2,1,0=100>PC;
16
JNZaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(ADR)MC=01>ABPLD2,1,0=010>PC;
17
RSP
T1:
7FFFHSSP=11>SP;
18
PUSHA
T1:
(SP)MC=10>AB;(ACT)S=010>ALUMB=00>DBCWRX=0>M;(SP)-1SSP=01>SP;
19
POPA
T1:
(PC)MC=00>AB;(SP)+1SSP=10>SP;
T2:
(SP)MC=10>AB;(M)CRDX=0>DBGA=0>A
20
CMPA,#data
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGT=0>TEMP;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;A-TEMPCP=0,ZP=0>置位
21
RRCA
T1:
A与CY循环右移
22
CPL@Ri
T1:
T1:
(Ri)MA=1S=011>ALUMB=00>DBGA2=0>ADRL;
7EHAHS=0>ADRH;
T2:
(ADR)MC=01>AB;(M)CRDX=0>DBGT=0>TMP;T3:
(ADR)MC=01>AB;/(TMP)S=100>ALUMB=00>DBCWRX=0>M;
23
CALLaddr
T1:
(PC)MC=00>AB;(M)CRDX=0>DBGA1=0>ADRH;(PC)+1PINC=0>PC;
T2:
(PC)MC=00>AB;(M)CRDX=0>DBGA2=0>ADRL;(PC)+1PINC=0>PC;
T3:
(SP)MC=10>AB;(PCH)MB=01>DBCWRX=0>M;(SP)-1SSP=01>SP;
T4:
(SP)MC=10>AB;(PCL)MB=10>DBCWRX=0>M;(SP)-1SSP=01>SP;
T5:
(ADR)MC=01>ABPLD2,1,0=010>PC;
24
RET
T1:
(SP)+1SSP=10>SP;
T2:
(SP)MC=11>AB;(M)CRDX=0>DBGA2=0>ADRL;(SP)+1SSP=10>SP;
T3:
(SP)MC=11>AB;(M)CRDX=0>DBGA1=0>ADRH;
T4:
(ADR)MC=01>ABPLD2,1,0=010>PC;
注1:
除箭头上标注的信号,其它信号皆为无效状态。
注2:
MA、MB、MC等分别为MXA、MXB、MXC的缩写。
表3微操作信号表
部件
信号
功能
有效位
累加器A
GA
RRC
A功能
GA
累加器A接数允许
禁止(无操作)
移位
0
1
0
暂存器TMP
GT
TMP接数允许
0
暂存器ACT
GC
暂存器接数允许
0
寄存器Ri
WRE
寄存器写入允许
0
MUXA(FB的多路选择)
MXA
ALU的第二个操作数多路开关选择
0:
寄存器内容送ALU
1:
暂存器TMP送ALU
算术逻辑运算单元ALU
S2,S1,S0
ALU功能
S2S1S0
F=A+B
F=A-B
F=A
F=B
F=~B
备用
备用
备用
000
001
010
011
100
101
110
111
CY
MXE
进位位CY接数COUT
CY接数移位输入
0
1
CP
CY接数允许
0
指令寄存器IR
GI
指令寄存器IR接数允许
0
地址寄存器ADR
GA1
高位地址寄存器ADRH接数允许
0
GA2
低位地址寄存器ADRL接数允许
0
MUXC(地址AB多路开关选择)
MXC1,0
MUXC功能
MC1MC0
PC送至地址总线AB
ADR送至地址总线AB
SP送至地址总线AB
备用
00
01
10
11
程序计数器PC
PINC
PC加1信号
0
PRST
PC清零信号
0
MUXD(控制PC接数的多路选择)
PLD2,1,0
PC接数控制
PLD2PLD1PLD0
禁止
CY=1转移
ZY=0
KB=0
PB=0
必转
备用
000
001
010
011
100
101
其余
微程序计数器MPC
MPLD
MPC接数允许
0
存储器M
CRDX
读存储器
0
CWRX
写存储器
0
堆栈SP
SSP
SP减一信号
01
SP增一信号
10
SP初始化为7FFFH
11
MUXB(数据总线DB多路开关选择)
MXB1,0
MUXB功能
MXDB1MXDB2
ALU结果送至数据总线DB
PCH送至数据总线DB
PCL送至数据总线DB
三态
00
01
10
11
注意:
✧图1中的寄存器选择信号(RC、RB、RA)不属于微指令编码范围,应直接来自指令码(I2、I1、I0)。
表4微指令控制微操作对应表
微指令的
控制位
微操作
有效状态
微操作
功能描述
0
WRE
0
1
GA
0
2
RRC
0
3
GC
0
4
GT
0
5
GI
0
6
GA1
0
7
AHS
0
8
GA2
0
9
OB
0
10
MXB0
X
11
MXB1
X
12
ZP
0
13
CP
0
14
MXE
0
15
S0
X
16
S1
X
17
S2
X
18
MXA
0
19
PLD0
X
20
PLD1
X
21
PLD2
X
22
PINC
0
23
SSP0
X
24
SSP1
X
25
MXC0
X
26
MXC1
X
27
MPLD
0
28
CRDX
0
29
CWRX
0
30
31
指令助记符
微指令
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
信号
CWRX
CRDX
MPLD
MXC1
MXC0
SSP1
SSP0
PINC
PLD2
PLD1
PLD0
MXA
S2
S1
S0
MXE
CP
ZP
MXB1
MXB0
OB
GA2
AHS
GA1
GI
GT
GC
RRC
GA
WRE
有效状态
0
0
0
X
X
0
0
0
X
X
X
0
X
X
X
0
0
0
X
X
0
X
0
X
0
0
0
0
0
0
无效状态
1
1
1
X
X
1
1
1
X
X
X
1
X
X
X
1
1
1
X
X
1
X
1
X
1
1
1
1
1
1
取指令
000
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
1
0
1
1
1
001-6
MOVA,Ri
007
1
1
1
0
0
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
1
1
1
1
1
1
1
0
1
008
取指令
MOVRi,A
00F
1
1
1
0
0
0
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1
1
1
0
010
取指令
MOVA,@Ri
017
1
1
1
0
0
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
1
1
1
1
1
1
1
018
1
0
1
0
1
0
0
1
0
0
0
0
0
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
019
取指令
MOV@Ri,A
01F
1
1
1
0
0
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
1
1
1
1
1
1
1
020
0
1
1
0
1
0
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1
1
1
1
021
取指令
ADDA,Ri
027
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
028
取指令
SUBA,Ri
02F
1
1
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
030
取指令
MOVA,#data
037
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
038
取指令
MOVRi,#datta
03F
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
040
取指令
LDAaddr
047
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
048
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
049
1
0
1
0
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
04A
取指令
指令助记符
微指令
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
信号
CWRX
CRDX
MPLD
MXC1
MXC0
SSP1
SSP0
PINC
PLD2
PLD1
PLD0
MXA
S2
S1
S0
MXE
CP
ZP
MXB1
MXB0
OB
GA2
AHS
GA1
GI
GT
GC
RRC
GA
WRE
有效状态
0
0
0
X
X
X
X
0
X
X
X
0
X
X
X
0
0
0
X
X
0
0
0
0
0
0
0
0
0
0
无效状态
1
1
1
X
X
X
X
1
X
X
X
1
X
X
X
1
1
1
X
X
1
1
1
1
1
1
1
1
1
1
STAaddr
04F
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
050
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
051
0
1
1
0
1
0
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1
1
1
1
052
取指令
JCaddr
057
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
058
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
059
1
1
1
0
1
0
0
1
0
0
1
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
05A
取指令
JMPaddr
05F
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
060
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
061
1
1
1
0