计算机组成原理课程设计汇编.docx
《计算机组成原理课程设计汇编.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计汇编.docx(22页珍藏版)》请在冰豆网上搜索。
计算机组成原理课程设计汇编
课程设计说明书
计算机组成原理课程设计
院系:
计算机科学与工程学院
专业班级:
学号:
学生姓名:
指导教师:
2014年12月26日
安徽理工大学课程设计(论文)任务书
计算机科学与工程院系
学号
2012303287
学生姓名
专业(班级)
设计题目
设计基本模型机的指令系统实现循环左移
设
计
技
术
参
数
计算机组成原理教学实验仪一台,排线若干;
PC机一台
DJ-CPT816组成原理实验软件
模型机的指令系统,微程序,微指令,程序
设
计
要
求
1、在基本模型机的基础上构建一组能够实现输入、输出、加、减、逻辑与、逻辑或、逻辑非、转移指令等八个功能的指令,这些指令的助记符不得与指导书上相同。
2、指令包括立即数寻址、寄存器直接寻址、存储器直接寻址三种寻址方式。
3、输入一个16位的数,对其进行循环左移。
工
作
量
1、画流程图,编写微指令代码和程序。
工
作
计
划
1、首先认真研究老师所给的题目,了解题目要求做什么。
2、查阅资料,解决问题。
3、编写源程序并调试之。
4、写课程设计说明书。
参
考
资
料
[1]张昆藏.计算机系统结构.北京:
科学出版社,1994
[2]白中英.计算机组成原理(第二版).北京:
科学出版社,1998
[3]DJ-CPTH超强型计算机组成原理与系统结构实验指导书
指导教师签字
系主任签字
2014年12月1日
指导教师评语:
成绩:
指导教师:
年月日
安徽理工大学课程设计(论文)成绩评定表
摘要
计算机组成原理课程设计课题是基本模型机的设计与实现。
利用CPU与简单模型机来实现计算机组成原理课程设计,编写指令的应用程序,用微程序控制器实现一系列的指令功能,最终达到将理论与实践相联系。
本次设计完成了相关指令的格式以及编码的设计,实现了机器指令微代码,完成具有一定功能的程序。
本次课程设计的题目是输入一个16位的数,对其进行循环左移。
通过设计流程图,编写机器指令,微指令和控制信号程序。
首先向存储器中装入数据和程序,然后检查写入是否正确,启动程序执行。
另外,还需设计微程序:
本课程设计要求实现机器指令:
MOVV(传送),RU(输入),HUO(逻辑或),JIA(加法运算),JIAC(带进位的加法),TZ(判断A寄存器里的内容是否为零),TIAO(跳转)。
以上各微指令设计完毕后,用设计好的指令实现逻辑运算,连接线路在CPTH计算机组成原理教学实验箱运行程序,并将实验结果显示输出。
本次课程设计偏重于对计算机工作的原理和计算机微机的指令系统学习和深入的了解。
对以后的学习打下一个好的基础。
这一课题的实现不仅使我们对各种微指令有了熟练的掌握,更对以后的学习、工作中有深远的影响。
关键词:
微指令,机器指令,循环左移
目录
1原理介绍1
1.1cpu功能与原理1
1.2指令周期1
1.3微程序控制1
1.4微程序控制原理2
1.5微程序控制器2
2实验环境介绍3
2.1设计背景分析3
2.2设计目的与要求5
3系统设计6
3.1.不带进位的循环左移6
3.2机器指令集的编写与功能6
3.3程序系统分析7
3.4程序微指令分析8
3.5实验结果10
4实验总结13
4.1设计体会13
4.2系统改进13
5参考文献14
1原理介绍
1.1cpu功能与原理
数据缓存寄存器(DR)数据缓存寄存器用来暂时存放ALU的运算结果,或由数据存储器读出的一个数据字,或来自外部接口的一个数据字。
指令寄存器(IR)指令寄存器用来保存当前正在执行的一条指令,当执行一条指令时,先把它从指令cache存储器读出,然后再传送至指令寄存器。
程序计数器(PC)为了保证程序能够连续的执行下去,CPU必须具有某些首段来确定下一条指令的地址。
数据地址寄存器(AR)数据地址寄存器用来保存当前CPU所访问的cache存储器单元的地址.通用寄存器(R0~R3)当算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
状态字寄存器(PSW)状态字寄存器保存由算数指令和逻辑指令运算或测试结果建立的各种条件代码。
1.2指令周期
计算机所以能自动的工作,是因为CPU能从存放程序的内存里取出一条指令并执行这一条指令。
例如MOV指令的指令周期,MOV是一条RR型指令,它需要两个CPU周期,其中一个是取指周期,一个是执行周期。
取指周期中完成三件事:
从指存取出指令,对程序计数器加1,以便为取下条指令做好准备,对指令操作码进行译码或测码。
执行周期操作控制器送出控制信号到通用寄存器,操作控制器送出控制信号到ALU,指定ALU做传送工作,操作控制器送出控制信号,打开ALU输出三态门,操作控制信号送出控制信号,将DBUS上的数据打入到数据缓冲寄存器中,操作控制信号送出控制信号,将数据韩冲寄存器打入到目标寄存器中。
1.3微程序控制
微程序控制器同硬布线控制器相比较,具有规整性,灵活性,可维护性等一系列优点,在计算机系统中,微程序设计技术是利用软件方法来设计的一门技术。
微程序控制思想,就是仿照通常的解题程序方法,把操作控制信号编程所谓的微指令,存放到一个只读存储器中,当机器运行时,有一条一条的读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应的部件执行所规定的操作呢。
由于数据通路的结构关系,微操作可分为相容的和互斥的两种:
互斥的微操作,是指不能同时或不能在同一个节拍内并行执行的微操作。
相容的微操作,是指能够同时或在同一个节拍内并行执行的微操作。
系列微指令的有序集合就是微程序。
一段微程序对应一条机器指令。
微地址 :
存放微指令的控制存储器的单元地址。
1.4微程序控制原理
控制存储器(UCM):
这是微程序控制器的核心部件,用来存放微程序。
其性能(包括容量、速度、可靠性等)与计算机的性能密切相关。
微指令寄存器(UIR):
存放从UCM取出的正在执行的微指令,它的位数同微指令字长相等。
微地址形成部件:
用来产生初始微地址和后继微地址,以保证微指令的连续执行。
微地址寄存器(UMAR):
它接受微地址形成部件送来的微地址,为下一步从μCM中读取微指令作准备。
1.5微程序控制器
模型机作为一个整体来工作的,所有的微程序控制信号由微程序存储器UM输出,而不是由开关输出,在进行试验之前,先用8芯电缆接J1和J2,是系统处于非手动状态,这样试验仪的监控系统会自动打开uM的输出允许,由软件控制程序实现单指令执行,单微指令执行等,设计微指令应当追求的目标,有利于缩短微指令的长度,有利于缩小CM的容量,有利于提高微程序的执行速度。
2实验环境介绍
2.1设计背景分析
2.1.1模型机指令集分析
本次课程设计是在DJ-CPT816计算机组成原理实验仪和仿真软件上进行的。
该模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数,指令码的最低两位用来选择R0-R3寄存器。
在微程序控制方式下,用指令码作为微地址来寻址微程序存储器,找到执行该指令的微程序。
在本模型机中,一条指令最多分为四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24位控制位以控制寄存器的输入输出,选择运算器的运算功能,存储器的读写。
简言之,这次设计,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序,一条微程序又有若干微指令组成,一条微指令的功能由24位操作信号(即控制位)实现。
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打入允许,与指令寄存器的IR2.,IR3位结合,控制程序跳转。
MAREN:
将数据总线DBUS上数据打入地址寄存器MAR
MAROE:
将地址寄存器MAR的值送到地址总线ABUS上
OUTEN:
将数据总线DBUS上数据送到输出端口寄存器OUT里
STEN:
将数据总线DBUS上数据存到堆栈寄存器里
RRD:
读寄存器组R0-R3,寄存器R?
的选择由指令的最低两位决定
RWR:
写寄存器组R0-R3,寄存器R?
的选择由指令的最低两位决定
CN:
决定运算器是否带进位移位,CN=1带进位,CN=0不带进位
FEN:
将标志位存入ALU内部的标志寄存器
X2,X1,X0三位组合来译码选择将数据送到DBUS上的哪个寄存器,见表2-1
WEN:
将数据总线DBUS的值打入工作寄存器W中
AEN:
将数据总线DBUS的值打入累加器A中
S2,S1,S0三位组合决定ALU做何种运算,见表2-2
表2-1寄存器选择控制表
X2X1X0
输出寄存器
000
IN_OE外部输入门
001
IA_OE中断向量
010
ST_OE堆栈寄存器
011
PC_OEPC寄存器
100
D_OE直通门
101
R_OE右移门
110
L_OE左移门
111
没有输出
表2-2运算器功能控制
S2S1S0
功能
000
A+W加
001
A-W减
010
A|W或
011
A&W与
100
A+W+C带进位加
101
A-W-C带进位减
110
~AA取反
111
A输出A
2.1.2模型机寻址方式分析
模型机的寻址方式分四种:
(1)累加器寻址:
操作数为累加器A,例如“CPLA”是将累加器A值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。
(2)寄存器寻址:
参与运算的数据在R0-R3的寄存器中,例如“ADDA,R0”指令是将寄存器R0的值加上累加器A的值,再存入累加器A中。
(3)存储器直接寻址:
参与运算的数据在存储器EM中,数据的地址为指令的操作数。
例如“ANDA,40H”指令是将存储器EM中40H单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。
(4)立即数寻址:
参与运算的数据为指令的操作数。
例如“SUBA,#10H”是从累加器A中减去立即数10H,结果存入累加器A。
2.2设计目的与要求
(1)在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本模型计机。
(2)为其定义机器指令,并编写相应的微程序,具体上机调试掌握整机概念。
(3)掌握微程序控制器的组成原理。
(4)编写自己的指令集,并用此指令集来实现编程
(5)掌握微程序的编写、写入,观察微程序的运行。
(6)通过课程设计,使学生将掌握的计算机组成基本理论应用于实践中,在实际操作中加深对计算机各部件的组成和工作原理的理解,掌握微程序计算机中指令和微指令的编码方法,深入理解机器指令在计算机中的运行过程。
本课程设计要求实现机器指令:
MOVV(传送),RU(输入),HUO(逻辑或),JIA(加法运算),JIAC(带进位的加法),TZ(判断A寄存器里的内容是否为零),TIAO(跳转)。
要包括直接寻址,立即数寻址,寄存器寻址,间接寻址四种寻址方式。
最后要在设计的指令系统基础上,编写程序实现16位数不带进位的循环左移。
3系统设计
3.1.不带进位的循环左移
16位数的循环左移原理图3-1如下:
图3-1不带进位的循环左移
程序设计思路:
一个16位数不带进位的循环左移,相当于该数与自身相加,程序流程图3-2如下:
图3-2程序框图
3.2机器指令集的编写与功能
(1)按照系统分析中得到的指令集,在DJ-CPT816实验软件中新建指令系统,生成.mac文件和.mic文件;
(2)在DJ-CPT816实验软件中新建.asm文件,输入程序:
LOOP1:
RU
MOVVR1,A
RU
MOVVR0,A
LOOP:
MOVVA,R0
JIAA,R0
MOVVR0,A
MOVVA,R1
JIACA,R1
MOVVR1,A
HUOA,R0
TZLOOP1
TIAOLOOP
3.3程序系统分析
(1)程序开始执行一条取指的微指令,读入程序第一条指令。
LOOP1:
RU//手动输入一个数,存入A寄存器中
MOVVR1,A//将A寄存器的内容存入R1寄存器作为16位数的高8位
RU//手动输入一个数,存入A寄存器中
MOVVR0,A//将A寄存器的内容存入R0寄存器作为16位数的低8位
LOOP:
MOVVA,R0//将R0寄存器的数即第八位存到A寄存器
JIAA,R0//将低八位数与自身相加,即*2
MOVVR0,A//将相加后的结果回存到R0寄存器,作为新的第八位
MOVVA,R1//将R1寄存器的数即高八位存到A寄存器
JIACA,R1//将低八位数与自身以及低位相加送来的进位相加
MOVVR1,A//将相加后的结果回存到R1寄存器,作为新的高八位
HUOA,R0//将A寄存器的内容即高八位数与R0寄存器即第八位数相或
TZLOOP1//若相或的结果为0则跳转至Loop1,重新输入新的数据进行移位
TIAOLOOP//否则跳转至Loop继续左移
(2)将程序另存为.asm文件,再汇编成机器码,调试窗口会显示出程序、机器码、反汇编指令,见表3-1。
表3-1译码表
程序地址
机器码
反汇编指令
指令说明
00
24
RU
端口RU的内容输入到累加器A
01
18
MOVVR1,A
累加器A中的数送入寄存器R1
02
24
RU
端口RU的内容输入到累加器A
03
18
MOVVR0,A
累加器A中的数送入寄存器R0
04
08
MOVVA,R0
寄存器R0中的内容送到A中
05
14
JIAA,R0
将A中的内容和R0中的内容相加
06
18
MOVVR0,A
累加器A中的数送入寄存器R0
07
08
MOVVA,R1
寄存器R1中的内容送到A中
08
0C
JIACA,R1
将A中的内容与R1中的内容相加再加上进位
09
18
MOVVR1,A
累加器A中的数送入寄存器R1
0A
2C
HUOA,R0
将R0中的内容与A中的内容相或
0B
3000
TZLOOP1
若A=0跳转至00地址
0D
1004
TIAOLOOP
无条件跳转至04地址
3.4程序微指令分析
将程序在DJ-CPT816软件上单步运行结束后可得微指令跟踪图如下表3-2所示:
表3-2微指令跟踪表
助记符
状态
微地址
微程序
数据输出
数据打入
地址输出
运算器
移位控制
uPC
PC
_FATCH_
T0
00..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
RU
T1
C0..>
FFFF17
用户IN
寄存器A
A输出
+1
T0
C1..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVR?
,A
T1
80..>
FFFB9F
ALU直通
寄存器R?
A输出
+1
T0
81..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
RU
T1
C0..>
FFFF17
用户IN
寄存器A
A输出
+1
T0
C1..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVR?
,A
T1
80..>
FFFB9F
ALU直通
寄存器R?
A输出
+1
T0
81..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVA,R?
T1
70..>
FFF7EF
寄存器值R?
寄存器A
A输出
+1
T0
71..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
JIAA?
R
T2
10..>
FFF7EF
寄存器值R?
寄存器W
A输出
+1
T1
11..>
FFFE90
ALU直通
寄存器A标志位CZ
加运算
+1
T0
12..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVR?
A
T1
80..>
FFFB9F
ALU直通
寄存器R?
A输出
+1
T0
81..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVA,R?
T1
70..>
FFF7F7
寄存器值R?
寄存器A
A输出
+1
T0
71..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
JIACA,R?
T2
20..>
FFF7EF
寄存器值R?
寄存器W
A输出
+1
T1
21..>
FFFE94
ALU直通
寄存器A标志位CZ
带进位加
+1
T0
22..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
MOVVR?
A
T1
80..>
FFFB9F
ALU直通
寄存器R?
A输出
+1
T0
81..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
HUOA,R?
T2
60..>
FFF7EF
寄存器值R?
寄存器W
A输出
+1
T1
61..>
FFFE92
ALU直通
寄存器A标志位CZ
或运算
+1
T0
62..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
TZ*
T1
A4..>
C6FFFF
存贮器值EM
寄存器PC
PC输出
A输出
+1
写入
T0
A5..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
TIAO*
T1
AC..>
CGFFFF
存贮器值EM
寄存器PC
PC输出
A输出
+1
写入
T0
AD..>
CBFFFF
指令寄存器IR
PC输出
A输出
写入
+1
3.5实验结果
测试数据:
高八位R1低八位R0
30H80H
左移一位61H00H
左移两位C2H00H
左移三位84H00H
置开关k23-k16为00110000
R1中输入30H
K23-k16开关置为10000000
R0中输入80H
(如图3-3所示)
图3-3:
R1输入30H,R0输入80H
将16位数左移一位得到的16位数为6100H(如图3-4所示):
图3-4:
16位数左移,结果为6100H
再分别将R1和R0中的数左移一位,此时16位数为C200H(如图3-5所示:
)
图3-5:
R1,R0左移,结果为8400H
再分别将R1和R0中的数左移一位,此时16位数为C200H(如图3-6所示)
图3-6:
R1,R0左移,结果为8400H
4实验总结
4.1设计体会
本次课程设计我们做的题目是输入一个16位的数,对其进行循环左移。
刚拿到这个题目时我们小组就进行了商讨,分配每个人的任务,我的任务是:
设计指令集,并且检查她们所写代码实现的功能。
在设计指令集的过程中,我对指令周期和24位控制位做了深入的了解,学到了好多知识,学会了怎么设计一条程序指令以达到相应的功能。
在这次课程设计我遇到了好多问题,由于是第一次接触新建指令系统,其中很多地方都不懂,后来通过查找资料,自己琢磨,问老师和还有大家一起讨论才逐渐有了思路。
在设计指令的过程中,有时候会遇到一些小问题,但通过与其他组同学的讨论终于使问题得到了解决。
创建新的指令系统需要知道每条指令需要几个状态周期来完成,以及实现相应功能的微程序应该怎么设计,还要考虑要怎么设计才能达到精简指令的目的。
这次课程设计之所以能够成功与我们组员的相互合作有很大的关系,这次刚拿到题目时,我们小组分析了一下实验的要求,将我们六个人分成三个小组,每个小组负责一项任务,各个小组紧密配合,遇到问题时大家互相讨论找出最佳的解决方案,最终使任务得以圆满的完成。
另外在这一次的课题设计中,当自己创建的指令集能够成功运行时,我体会到了成功的喜悦和极大的成就感,通过对系统的跟踪测试,自己的动手和实践能力都有了一定的提高,也让我更加喜欢去自己动手做实验了。
4.2系统改进
本次指令设计,我们利用指令流水操作,进行了指令的精简设计,其中
RU指令的取值操作和输出操作可并行执行,精简后该指令为1个状态周期。
MOVVA,R?
指令,由于预指操作和数据总线可并行工作,该指令只有一个状态周期。
例如:
改进前:
改进后:
RUT124FFFF17RUT024CBFF17
T055CBFFFF
MOVVA,R?
T170FFF7F7MOVVA,R?
T070CBF7F7
T071CBFFFF
5参考文献
[1]张昆藏.计算机系统结构.北京:
科学出版社,1994
[2]著平玲娣,潘雪增.《计算机组成与设计》.浙江:
浙江大学出版社,2004
[3]白中英.计算机组成原理(第二版).北京:
科学出版社,1998
[4]DJ-CPTH超强型计算机组成原理与系统结构实验指导书
[5]陈泽宇,《计算机组成与系统结构》.清华大学出版社
[6]李敬兆,《汇编语言》.中国科学技术大学出版社