计算机组成原理课程设计报告Word文档下载推荐.docx
《计算机组成原理课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。
3.模型机指令集
模型机的缺省的指令集分几大类:
算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。
算术运算指令:
逻辑运算指令:
数据传输指令:
跳转指令:
ADDA,R?
ADDA,@R?
ADDA,MM
ADDA,#II
ADDCA,R?
ADDCA,@R?
ADDCA,MM
ADDCA,#II
SUBA,R?
SUBA,@R?
SUBA,MM
SUBA,#II
SUBCA,R?
SUBCA,@R?
SUBCA,MM
SUBCA,#II
ANDA,R?
ANDA,@R?
ANDA,MM
ANDA,#II
ORA,R?
ORA,@R?
ORA,MM
ORA,#II
CPLA
MOVA,R?
MOVA,@R?
MOVA,MM
MOVA,#II
MOVR?
A
MOV@R?
A
MOVMM,A
#II
JCMM
JZMM
JMPMM
CALLMMRET
移位指令:
中断返回指令:
输入/输出指令:
RRA
RLA
RRCA
RLCA
RETI
READMM
WRITEMM
IN
OUT
4.模型机指令格式
该模型机微指令系统的特点(包括其微指令格式的说明等):
1.总体概述
该模型机的微命令是以直接表示法进行编码的,其特点是操作控制字段中的每一位代表一个微命令。
这种方法的优点是简单直观,其输出直接用于控制。
缺点是微指令字较长,因而使控制存储器容量较大。
2.模型机微指令格式
3.模型机微指令格式的说明
微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,也就是说24位控制信号是由指令码确定的。
该模型机的微指令的长度为24位,其中微指令中只含有微命令字段,没有微地址字段。
其中微命令字段采用直接按位的表示法,哪位为0,表示选中该微操作,而微程序的地址则由指令码指定。
24位控制位分别介绍如下:
XRD:
外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
EMWR:
程序存储器EM写信号。
EMRD:
程序存储器EM读信号。
PCOE:
将程序计数器PC的值送到地址总线ABUS上。
EMEN:
将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
IREN:
将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。
EINT:
中断返回时清除中断响应和中断请求标志,便于下次中断。
ELP:
PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。
MAREN:
将数据总线DBUS上数据打入地址寄存器MAR。
MAROE:
将地址寄存器MAR的值送到地址总线ABUS上。
OUTEN:
将数据总线DBUS上数据送到输出端口寄存器OUT里。
STEN:
将数据总线DBUS上数据存入堆栈寄存器ST中。
RRD:
读寄存器组R0-R3,寄存器R?
的选择由指令的最低两位决定。
RWR:
写寄存器组R0-R3,寄存器R?
CN:
决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。
FEN:
将标志位存入ALU内部的标志寄存器。
X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。
X2X1X0
输出寄存器
000
IN_OE外部输入门
001
IA_OE中断向量
010
ST_OE堆栈寄存器
011
PC_OEPC寄存器
100
D_OE直通门
101
R_OE右移门
110
L_OE左移门
111
没有输出
WEN:
将数据总线DBUS的值打入工作寄存器W中。
AEN:
将数据总线DBUS的值打入累加器A中。
S2、S1、S0三位组合决定ALU做何种运算。
S2S1S0
功能
A+W加
A-W减
A|W或
A&
W与
A+W+C带进位加
A-W-C带进位减
~AA取反
A输出A
2.计算机中实现乘法和除法的原理
(1)无符号乘法
①算法流程图:
Y
N
②硬件原理框图:
判断乘数末位
ALU
(2)无符号除法
NY
NN
YY
3.对应于以上算法如何分配使用COP2000实验仪中的硬件
硬件名称
实现算法功能描述
寄存器R0
①初始化时,用来存放被乘数;
②在程序执行的过程中,用来存放向左移位后的被乘数。
寄存器R1
①初始化时,用来存放乘数;
②在程序执行的过程中,用来存放向右移位后的乘数。
寄存器R2
计算时用来存放部分积和最后的积
累加器A
执行ADDA,R?
(加法)、SHLR?
(左移一位)、SHRR?
(右移一位)等命令时所必须使用的寄存器。
寄存器W
(加法)、TESTR?
#II(测试R2的末位)等双操作数命令时所必须使用的寄存器。
左移门L
用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
直通门D
用来控制ALU的执行结果是否输出到数据总线。
右移门R
用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
程序计数器PC
①控制程序按顺序正常执行;
②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。
③当要从EM中读取数据时,由PC提供地址。
存储器EM
存储指令和数据。
微程序计数器μPC
向微程序存储器μM提供相应微指令的地址。
微程序存储器μM
存储相应指令的微指令。
输出寄存器OUT
可以将运算结果输出到输出寄存器OUT(本实验未用)。
堆栈ST
当存储于累加器A的值将要受到破坏时,将其数据保存在堆栈ST中,使程序能够正常地执行。
初始化时,用来存放被除数和计算后的余数。
①初始化时,用来存放除数;
②在程序执行的过程中,用来存放向右移位后的除数。
在程序执行过程中,用来保存当前算得的商。
寄存器R3
当作计数器使用,用来控制程序是否结束。
①计算时用来存放中间结果;
②执行ADDA,R?
(加法)、SUBA,R?
(减法)等命令时所必须使用的寄存器。
执行SUBA,R?
(减法)等双操作数命令时所必须使用的寄存器。
4.在COP2000集成开发环境下设计全新的指令/微指令系统
设计结果如表所示(可按需要增删表项)
(1)新的指令集
(如果针对乘除法设计了两个不同指令集要分别列表)
助记符
机器码1
机器码2
指令说明
_FATCH_
000000xx
00-03
实验机占用,不可修改。
复位后,所有寄存器清0,首先执行_FATCH_指令取指。
MOV
R?
#II
000001xx
04-07
II
将立即数II存放到寄存器R?
中。
A
000010xx
08-0B
将寄存器A内容送入寄存器R?
中
MOVA,R?
000011xx
0C-0F
将寄存器R?
中的数放入累加器A中。
ADDR?
A
000100xx
10-13
将累加器A中的数加入到寄存器R?
中,并影响标志位。
ADDA,R?
000101xx
14-17
中的数加入到累加器A中
SUBA,R?
000110xx
18-1B
将寄存器A中的数据与R?
中的内容相减,结果存入A中。
ADD
000111xx
1C-1F
中的数据与立即数相与,结果存入R?
。
NOTR?
001000xx
20-23
中的数据取反。
RLR?
001001xx
24-27
中的数据逻辑左移一位。
RRR?
001010xx
28-2B
中的数据逻辑右移一位。
RLCR?
001011xx
2C-2F
中的数据带进位左移一位。
RRCR?
001100xx
30-33
中的数据带进位右移一位。
CLRR?
001101xx
34-37
中的内容清零。
TESTR?
001110xx
38-3B
测试寄存器R?
中的内容是否为零。
ENDP
001111xx
3C-3F
程序结束。
JCMM
010000XX40-43
MM
若进位标志位置1,跳转到MM地址。
JZMM
010001XX44-47
若零标志位置1,跳转到MM地址。
01001048-4B
无条件跳转到MM地址。
(2)新的微指令集
状态
微地址
微程序
数据输出
数据打入
地址输出
运算器
移位控制
PC
PC
_FATCH_
T0
00
CBFFFF
浮空
指令寄存器IR
PC输出
A输出
写入
+1
01
FFFFFF
02
03
T1
04
C7FBFF
存储器值EM
寄存器R?
T0
05
06
07
08
FFFB9F
ALU直通
09
0A
0B
0C
FFF7F7
寄存器值R?
寄存器A
0D
0E
0F
T2
10
FFF7EF
11
FFFB98
12
13
14
15
FFFE90
寄存器A,标志位C,Z
16
17
18
寄存器值R?
19
FFFE91
减运算
1A
1B
ANDR?
T3
1C
C7FFEF
存贮器值EM
1D
1E
FFFB9B
寄存器R?
与运算
1F
20
21
FFFB9E
A取反
22
23
24
25
FFF8DF
ALU左移
标志位C,Z
左移
26
27
28
29
FFF8BF
ALU右移
右移
2A
2B
2C
2D
FFFADF
带进位左移
2E
2F
30
31
FFFABF
带进位右移
32
33
34
35
36
FFFB99
37
38
39
3A
FFFE92
或运算
3B
3C
3D
3E
3F
40
C6FFFF
寄存器PC
41
指令寄存器IR
42
43
44
45
46
47
48
49
4A
4B