计算机组成原理十二条指令.docx
- 文档编号:4729410
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:41
- 大小:548.75KB
计算机组成原理十二条指令.docx
《计算机组成原理十二条指令.docx》由会员分享,可在线阅读,更多相关《计算机组成原理十二条指令.docx(41页珍藏版)》请在冰豆网上搜索。
计算机组成原理十二条指令
计算机学院计算机科学与技术专业
《计算机组成原理课程设计》报告
(2008/2009学年第一学期)
学生姓名:
闫全胜
学生班级:
计算机062202H
学生学号:
200620030227
指导教师:
康葆荣
2009年1月3日
目录
1关于此次课程设计1
1.1设计的目的:
1
1.2设计内容及要求:
1
2分析阶段2
2.1指令译码电路分析2
2.2寄存器译码电路分析3
2.3微指令格式分析4
2.4时序分析6
3初步设计阶段7
3.1数据格式7
3.2指令描述7
3.3存储器分区9
3.4控制台微程序流程:
10
3.5运行微程序11
4详细设计阶段12
4.1控制台流程分解12
4.2运行微程序子流程14
4.3微程序总流程图25
5实现阶段25
5.1所用模型机数据通路的介绍25
5.2微程序代码设计与编写27
微程序二进制代码表27
5.3机器指令的输入及运行28
心得体会31
参考资料31
1关于此次课程设计
1.1设计的目的:
本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。
目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。
1.2设计内容及要求:
基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。
设计过程中要求考虑到以下各方面的问题:
1、指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);
2、数据类型(无符号数,有符号数,整型,浮点型);
3、存储器划分(指令,数据);
4、寻址方式(立即数寻址,寄存器寻址,直接寻址等);
5、指令格式(单字节,双字节,多字节);
6、指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出);
7、依据CPI值对指令系统进行性能分析。
要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。
2分析阶段
2.1指令译码电路分析
指令译码工作原理图:
图2.1指令译码工作原理图
根据上图得出指令译码器的逻辑表达式如下。
其中P
(1)~P(4)为低电平有效,当选用时该信号为零;I7~I2表示机器指令前六位;SE5~SE1为微控制器但愿位地址锁存器的强制端输出;SWASWB均为1(启动程序时)。
此设计中设定为P
(1)有效,P
(2)P(3)均无效,FCFZT4无需考虑。
由算出的SE5~SE1可知操作码对应的入口微地址。
2.2寄存器译码电路分析
寄存器译码原理图如下:
图2.2寄存器译码原理图
寄存器的输入、输出不仅决定于输入、输出开关,还与机器指令的后四位(即I3~I0)有关,由其决定哪个寄存器被选中。
2.2.1寄存器的输入
LDRi为寄存器的输入开关,且为低电平有效(即LDRi=0),I1、I0对寄存器进行选择,决定数据进入哪个寄存器。
2.2.2寄存器的输出
RS-B、RD-B、RI-B为寄存器的输出开关,且为低电平有效;I3、I2对寄存器进行选择,决定从哪个寄存器输出指令;从原理图上可以得出R2-B的输出,若RI-B有效则无需关注I3、I2因而I3、I2可为任意状态。
2.3微指令格式分析
微代码格式如下
每个字段的具体含义如下:
(1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。
本设计中全部为正逻辑运算。
(2)字段18为控制对主存W/R的开关
A9
A8
WE
说明
0
1
0
对主存进行对操作
0
1
1
对主存进行写操作
(3)字段17、16控制24译码器的输出端,对Y0、Y1、Y2进行选择。
(4)字段15~7为A、B、C三个开关控制端。
A字段
B字段
12
11
10
开关
说明
0
0
1
RS-B
寄存器R0、R1、R2的输出开关
0
1
0
RD-B
寄存器R0、R1、R2的输出开关
0
1
1
RI-B
寄存器R0、R1、R2的输出开关
1
0
1
ALU-B
运算器ALU的输出开关
1
1
0
PC-B
PC计数器的输出开关
1
0
0
299-B
本设计中不涉及
0
0
1
NULL
空操作
C字段
(5)字段6~1为该条微程序的八位二进制后继地址,其决定顺序执行哪条微程序。
2.4时序分析
T1、T2、T3、T4为节拍控制端,本设计用了T4节拍控制端,当指令通过译码器P
(1)时,P
(1)对操作码进行测试,通过节拍脉冲T4的控制,以便识别所要求的操作。
图2.4时序信号图
TS1时进行微程序控制器控制,TS2时进行微指令寄存器控制,TS时控制LDIR、LDAR,TS4时对P
(1)、P
(2)、P(3)、P(4)、AR、LOPC、LDRi、LDDR1、LDDR2进行控制。
3初步设计阶段
3.1数据格式
本设计中所有需要处理的数据全部采用定点无符号整数表示,8个bit位,格式如下:
7
6
5
4
3
2
1
0
数值
数据的范围是0~28-1,即0~255。
3.2指令描述
指令
类型
指令名称
指令格式
助记符
寻址方式
说明
输
入
输
出
类
指
令
输入指令
7
6
5
4
3
2
1
0
OP
Rd
IN1(R
寄存器寻址
IN→Rd
输出指令
OUTAddr
直接寻址
[Addr]→LED-B
存
储
器
访
问
指
令
取数指令
LDAaddr,Rd
直接寻址
[addr]→Rd
存数指令
STARs,addr
直接寻址
RS→[addr]
指令
类别
指令名称
指令格式
助记符
寻址方式
功能说明
寄存器访问类指令
寄存器间传送指令
7
6
5
4
3
2
1
0
OP
Rs
Rd
MOVRs,Rd
寄存器寻址
Rs→Rd
程
序
控
类
指
令
无条件转移
JMPaddr
立即寻址
Addr→PC
停机指令
STP
程序到此处终止
算
术
逻
辑
运
算
指
令
算术减法指令
SUBRs,Addr,Rd
直接寻址
Rs-[Addr]→Rd
逻辑与运算指令
ANDRs,Addr,Rd
直接寻址
Rs*[Addr]→Rd
3.3存储器分区
设计中将主存储器划分为两部分,地址单元00H~1DH为指令存储区,地址单元1FH~FFH为数据存储区,其中每个地址单元中能够保存一个八位二进制的数据。
划分如下图所示:
3.4控制台微程序流程:
PC计数器在用清零开关CLR清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q的后继地址设为20Q(即010000)。
此时只有P(4)有效,即P(4)=0,P
(1)=P
(2)=P(3)=1。
且SEi为1时无效,不能改变;只有SEi为0时,才能对该位上的数进行改变;但只能由0变成1,而不能逆转。
3.4.1强置写
当进行机器指令写入时,将SWB,SWA置成01状态,通过指令译码器的逻辑表达式即可算出入口地址。
SE5=1
SE4=1
SE3=1
SE2=1
SE1=0
SE5~SE2均无效,只有SE1有效,即可得出010000改变为010001,即强置写的入口地址为21Q。
3.4.2强置读
当进行机器指令写入时,将SWB,SWA置成00状态,通过指令译码器的逻辑表达式即可算出入口地址。
SE5=1
SE4=1
SE3=1
SE2=1
SE1=1
SE5~SE1均无效,不能对010000进行改变,即强置写的入口地址为20Q。
3.4.3程序执行
当进行机器指令写入时,将SWB,SWA置成11状态,通过指令译码器的逻辑表达式即可算出入口地址。
SE5=1
SE4=1
SE3=1
SE2=0
SE1=0
SE5~SE3均无效,SE2和SE1有效,即可得出010000改变为010011,即强置写的入口地址为23Q。
3.5运行微程序
PC计数器在用清零开关CLR清零后,通过控制台进入机器指令执行状态,然后开始运行微程序。
此时只有P
(1)有效,即P
(1)=0,P
(2)=P(3)=P(4)=1,且SWB,SWA仍为11。
此处将运行P
(1)的上一步微指令的后继地址设为40Q(即100000),应用指令译码器的逻辑表达式对其进行改变得出微程序入口地址。
由于决定入口地址的只有机器指令的前四位(即I7~I4),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。
4详细设计阶段
4.1控制台流程分解
4.1.1公操作
对机器进行总清零CLR1-0-1。
选中P(4),通过译码形成入口地址。
4.1.2强置写
形成入口地址后,执行写操作。
1.
(1)打开PC-B将数据送到总线上;
(2)打开LDAR将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
2.
(1)打开SW-B将数据送到总线上,
(2)打开LDDR1将数据从总线流到DR1中。
3.
(1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU中做F=A的运算;
(2)打开CE、WE置成01状态,将数据从总线流到主存相应地址单元中,完成数据写操作。
4.1.3强置读
形成入口地址后,执行读操作。
1.
(1)打开PC-B将数据送到总线上;
(2)打开LDAR将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
010
000
000
NULL
WE
CE
LDDR1
NULL
(1)打开CE、WE置成00状态,将数据从主存送到总线上;
(2)打开LDDR1将数据从总线流到DR1中。
3.
S3S2S1S0MCN
WE
A9A8
A
B
C
000001
1
10
000
101
000
F=A
NULL
LED-B
NULL
ALU-B
NULL
(1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU中做F=A的运算;
(2)打开LED-B,数据从总线流到输出单元,在数码管上显示出来,完成数据读操作。
4.1.4执行程序
形成入口地址后,开始执行程序。
所有都为空操作,只是要通过后继地址转入到运行微程序的流程中。
4..1.5控制台流程图
由上可知控制台的总流程图为:
4.2运行微程序子流程
4.2.1公操作
所有的子流程都要运行取指的公操作,然后才能进行各自的操作。
运行微程序1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
110
110
110
NULL
LDAR
PC-B
LDPC
(1)打开PC-B,将PC中的数据(指令操作码地址)送到总线上;
(2)打开LDAR将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
100
000
001
NULL
WE
CE
LDIR
NULL
P
(1)
(1)打开CE、WE置成00状态,对主存进行读操作,访问AR中保存地址的地址单元中指令;
(2)打开LDIR,将主存中被访问的地址单元中指令送到IR;
(3)选中P
(1),根据刚保存到IR中的指令,通过指令译码器,形成执行该指令的微程序入口地址。
4.2.2IN1指令操作
2完成公操作后,根据形成的入口地址运行IN1指令操作。
(1)打开SW-B,将“INPUTDEVICE”中输入的数据流到总线上;
(2)打开LDRi,在T4脉冲作用下打开R0输入端据IN1机器指令的后两位决定让数据从总线上送入R0。
4.2.3ADD指令操作
完成公操作后,根据形成的入口地址运行ADD指令操作。
1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
110
110
110
NULL
LDAR
PC-B
LDPC
(1)打开PC-B,将PC中的数据送到BUS;
(2)打开LDAR,在T3脉冲作用下将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
1010
000
000
NULL
WE
CE
LDAR
NULL
(1)打开CE、WE置成00状态,将数据从主存送到总线上;
(2)打开LDAR,在T3脉冲作用下将数据从总线流到AR中。
3.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
011
000
000
NULL
WE
CE
LDDR2
NULL
(1)打开CE、WE置成00状态,据AR中保存的指令地址码,在主存相同地址单元中,读出保存的操作数,并放置到总线上;
(2)打开LDDR2,在T4脉冲作用下将数据从总线流到DR2中。
4.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
010
001
000
NULL
LDDR1
RS-B
NULL
(1)打开RS-B,即打开R0的输出,将数据送到总线上;
(2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。
5.
S3S2S1S0MCN
WE
A9A8
A
B
C
100101
0
11
001
101
000
F=A+B
NULL
LDRi
ALU-B
NULL
(1)将ALU的控制端S3~CN置成F=A+B,两数相加,打开ALU-B将运算结果送到总线上;
(2)打开LDRi,在T4脉冲作用下打开R0输入端据ADD机器指令的后两位决定让数据从总线上送入R0。
4.2.4SUB指令操作
完成公操作后,根据形成的入口地址运行SUB指令操作。
1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
010
001
000
NULL
LDDR1
RS-B
NULL
(1)打开RS-B,即打开R0的输出,将数据送到总线上;
(2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
011
011
000
NULL
LDDR2
RI-B
NULL
(1)打开RI-B,即打开R2的输出,将数据送到总线上;
(2)打开LDDR2,在T4脉冲作用下让操作数经由总线进入到DR2中。
3.
S3S2S1S0MCN
WE
A9A8
A
B
C
011000
0
11
001
101
000
F=A-B
NULL
LDRi
ALU-B
NULL
(1)将ALU的控制端S3~CN置成F=A-B,两数相减,打开ALU-B将运算结果送到总线上;
(2)打开LDRi,在T4脉冲作用下打开R0输入端据SUB机器指令的后两位决定让数据从总线上送入R0。
4.2.5AND指令操作
完成公操作后,根据形成的入口地址运行AND指令操作。
1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
110
110
110
NULL
LDAR
PC-B
LDPC
(1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上;
(2)打开LDAR将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
110
000
000
NULL
WE
CE
LDAR
NULL
(1)打开CE、WE置成00状态,将数据从主存送到总线上;
(2)打开LDAR,在T3脉冲作用下将数据从总线流到AR中。
3.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
011
000
000
NULL
WE
CE
LDDR2
NULL
(1)打开CE、WE置成00状态,据AR中保存的指令地址码,在主存相同地址单元中,读出保存的操作数,并放置到总线上;
(2)打开LDDR2,在T4脉冲作用下将数据从总线流到DR2中。
4.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
010
001
000
NULL
LDDR1
RS-B
NULL
(1)打开RS-B,即打开R0的输出,将数据送到总线上;
(2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。
5.
S3S2S1S0MCN
WE
A9A8
A
B
C
101111
0
11
001
101
000
F=AANDB
NULL
LDRi
ALU-B
NULL
(1)将ALU的控制端S3~CN置成F=AANDB,两数相与,打开ALU-B将运算结果送到总线上;
(2)打开LDRi,在T4脉冲作用下打开R0输入端据AND机器指令的后两位决定让数据从总线上送入R0。
4.2.6OR指令操作
完成公操作后,根据形成的入口地址运行AND指令操作。
1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
010
001
000
NULL
LDDR1
RS-B
NULL
(1)打开RS-B,即打开R0的输出,将数据送到总线上;
(2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。
2.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
011
011
000
NULL
LDDR2
RI-B
NULL
(1)打开RI-B,即打开R2的输出,将数据送到总线上;
(2)打开LDDR2,在T4脉冲作用下让操作数经由总线进入到DR2中。
3.
S3S2S1S0MCN
WE
A9A8
A
B
C
111011
0
11
001
101
000
F=AORB
NULL
LDRi
ALU-B
NULL
(1)将ALU的控制端S3~CN置成F=AORB,两数相或,打开ALU-B将运算结果送到总线上;
(2)打开LDRi,在T4脉冲作用下打开R0输入端据OR机器指令的后两位决定让数据从总线上送入R0。
4.2.7MOVE指令操作
完成公操作后,根据形成的入口地址运行MOVE指令操作。
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
001
001
000
NULL
LDRi
RS-B
NULL
(1)打开RS-B,即打开R0的输出门让其中保存的数据流到总线上;
(2)打开LDRi,在T4脉冲作用下打开R2的输入端据MOVE机器指令的后两位决定让数据从总线上送入R2。
4.2.8STA指令操作
完成完成公操作后,根据形成的入口地址运行STA指令操作。
1.
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
11
110
110
110
NULL
LDAR
PC-B
LDPC
(1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上;
(2)打开LDAR将数据从总线流到AR中;
(3)打开LDPC,让自动加1的数据进入PC中。
S3S2S1S0MCN
WE
A9A8
A
B
C
000000
0
01
110
000
000
NULL
WE
CE
LDAR
NULL
2.
(1)打开CE、WE置成00状态,将数据(指令地址码)从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 十二 指令