计算机组成原理.docx
- 文档编号:10172854
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:26
- 大小:83.78KB
计算机组成原理.docx
《计算机组成原理.docx》由会员分享,可在线阅读,更多相关《计算机组成原理.docx(26页珍藏版)》请在冰点文库上搜索。
计算机组成原理
课程设计报告
课程设计名称:
简单模型机的微程序设计
系:
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:
目录
一.课程设计题目、目的、要求-----------------------------2
二、机器指令的设计-----------------------------4
三、指令微流程设计-----------------------------6
四、微指令格式设计-----------------------------8
五、编写微程序-----------------------------9
六、课程设计总结-----------------------------15
一.课程设计题目、目的、要求
课程设计题目:
计算机组成原理课程设计——简单模型机的微程序设计
课程设计目的:
通过课程设计更清楚地理解下列基本概念:
1.计算机的硬件基本组成;
2.计算机中机器指令的设计;
3.计算机中机器指令的执行过程;
4.微程序控制器的工作原理。
5.微指令的格式设计原则;
在此基础上设计可以运行一些基本机器指令的微程序的设计
课程设计要求:
1.通过使用作者开发的微程序分析和设计仿真软件,熟悉本文介绍的为基本模型机而设计的微程序的执行过程。
必须充分理解并正确解释下列问题:
⑴微程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
答:
直接译码的是A、B、C字段;不译码的是S3~B0字段;而间接编码的是uA6~uA1。
⑵微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
答:
微程序中的微指令不是顺序执行的,如果遇到P
(1)~P(4)测试时,则根据机器指令,uA5~uA0字段及其他有关部件的内容,产生下一条微指令在空存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。
例如遇到P
(1)测试,则下一条微指令在空存中的微地址的4~1位是用次地址字段NA(4~1位)或指令寄存器IR(8~5位)所产生,下一条微指令的微地址仍为NA字段的6~5位。
如果没有遇到P
(1)~P(4)测试的话,那么次地址即为该微指令地址字段所指向的微地址。
⑶在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。
答:
微程序中是根据测试程序的机器指令中的8~5位和微程序中后六位进行“或”运算来实现分支的。
避免和解决与其它指令的微指令的微地址冲突的方法就是不用已经被其它微指令用过的微地址。
⑷哪些微指令是执行所有指令都要用到的。
答:
01:
000001011110110110000010
02:
000001001100000001000000
⑸解释一条机器指令的微程序的各条微指令的微地址是否连续?
这些微指令的微地址的安排的严重原则是什么?
答:
不连续。
严重原则是将各条机器指令的入口微地址置于地址连续的地址单元中,避免其它微指令乱用这一段地址。
⑹为什么读写一次内存总要用两条微指令完成?
答:
因为W/R只有两种状态,即要么是读,要么是写,所以,要完成一次读写总要用两条微指令完成。
⑺机器程序中的用到的寄存器是R0,是由机器指令中哪些位决定的?
如果要用R1或R2,是否要改写微程序或改写机器指令?
如果要,应如何改写?
答:
是由机器指令中的2~1位决定。
如果要用到R1或R2,那么不需要改写微程序,但得改写机器指令的低两位,即2~1位,若要用到R1,则将其改为01,若要用R2,则将其改为10。
2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
新增加的机器指令的功能是:
求反指令NOTRS,RD:
/(RS)→(RD)
与指令ANDRD,(addr):
(RD)与(addr)→(RD)
异或指令XORRD,(addr):
(addr)异或(RD)→(RD)
或指令ORRD,(addr):
(RD)或(addr)→(RD)
减法指令SUBRD,RS:
(RS)减(RD)→(RD)
其中的RS、RD可以是R0、R1、R2中的任何一个。
3.写出课程设计报告,解释你的设计思想,比如,如何实现各指令的分支,如何重新安排各指令对应的微程序中的微指令的微地址,如何设计各微指令的编码。
要求画出用微命令表示的微流程图并适当加以解释。
二、机器指令的设计
(1)设计思想
①实现各指令的分支:
每一条机器指令执行完之后,就进行一次P
(1)测试,根据P
(1)测试跳到下一条机器指令的微地址。
机械指令执行中则是根据微指令的后六位来确定下一条微指令的地址。
②安排各指令对应的微程序中的微指令的微地址
将各条机械指令(IN、ADD、STA、OUT、JMP、NOT、AND、XOR、OR、SUB)通过P
(1)测试,为各指令安排微地址,IN对应的为03,ADD对应的为04,STA对应的为05,OUT对应的为06,JMP对应的为0C,NOT为08,AND对应的为09,XOR为0A,OR对应的为0B,SUB对应的为07,然后将完成各条指令的其它微指令的微地址设置为连续的。
(2)基本模型机的指令设计:
根据基本模型机的硬件设计十条机器指令:
外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP、求反指令NOT、与指令AND、异或指令XOR、或指令OR、减法指令SUB。
指令格式如下:
助记符 机器指令码 说 明
IN 00000000;置数开关SW(KD0~KD7)的状态→R0
ADDaddr00010000××××××××;(R0)+(addr)→(R0)
STAaddr00100000××××××××;(R0)→(addr)
OUTaddr00110000××××××××;(addr)→输出设备"LED"
JMPaddr01000000××××××××;addr→PC
NOT10000000××××××××;/(RS)→(RD)
ANDaddr10010001××××××××;(RD)与(addr)→(RD)
XORaddr10100001××××××××;(addr)异或(RD)→(RD)
OR10110001××××××××;(RS)OR(RD)→(RD)
SUB11000001××××××××;(RS)-(RD)→(RD)
说明:
指令IN为单字节指令,其余均为双字节指令,××××××××为要读写的主存储器单元的二进制地址码。
编写的机器指令代码如下:
00H:
00110000;IN置数开关SW(KD0~KD7)的状态→R0
01H:
01000000;ADD(R0)+(0A)→(R0)
02H:
00010010;
03H:
01010000;STA(R0)→(13)
04H:
00010011;
05H:
01100000;OUT(13)→LED
06H:
00010011;
07H:
01110000;JMP00→pc
08H:
00010100;
09H:
10000001;NOTR0,R1:
/(R0)->(R1)
0AH:
10010001;ANDR1,ADDR1→R1
0BH:
00010101;
0CH:
10100001;XORR1,ADDR1→R1
0DH:
00010110
0EH:
10110001;ORR1,ADDR1→R1
0FH:
00010111
10H:
11000001;SUB(R0)-(R1)→R1
11H:
00000000
12H:
00000000
13H:
00000000
14H:
00000000
15H:
00000000
16H:
00000000
17H:
00000000
18H:
00000000
三、指令微流程设计
这十条指令的微流程如图所示:
运行微程序
PC→AR
PC+1
01
02
RAM→
BUS
BUS→IR
P
(1)测试
SUB
OR
XOR
AND
NOT
JMP
OUT
STA
ADD
IN
0A
0B
07
09
08
0C
06
05
04
03
R0→DR1
R0→
DR1
PC→AR
PC+1
PC→AR
PC+1
PC→AR
PC+1
PC→AR
PC+1
PC→AR
PC+1
PC→AR
PC+1
SWB
→R0
PC→AR
PC+1
11
24
17
16
0D
18
20
1C
13
R1→DR2
RAM→
BUSBUS→AR
RAM→
BUSBUS→AR
RAM→
BUSBUS→AR
RAM→
BUSBUS→PC
RAM→
BUSBUS→AR
RAM→
BUSBUS→AR
RAM→
BUSBUS→AR
R0求反→R1
01
25
21
1D
19
14
12
0E
(R0-R1)→R1
RAM→
BUSBUS→DR1
RAM→
BUSBUS→DR1
RAM→
BUSBUS→DR1
RAM→
BUSBUS→DR1
RAM→
BUSBUS→RAM
RAM→
BUS
BUS→
DR2
01
01
01
22
1E
1A
15
0F
R1→DR2
R1→DR2
R1→DR2
R0→DR1
01
DR1→LED
23
1B
10
DR2与DR1→R1
DR2或DR1→R1
DR1异或DR2→R1
01
(DR1+DR2)→R0
1F
01
01
01
01
图1用数据流表示的微程序流程
细微流程图如下:
运行微程序
PCB
LDAR
LDPC
01
02
CE有效
W/R=0
LDIR
P
(1)测试
SUB
OR
XOR
AND
NOT
JMP
OUT
STA
ADD
IN
0A
0B
07
09
08
0C
06
05
04
03
R0B
LDDR1
R0B
LDDR1
PCB
LDDRLDPC
PCB
LDARLDPC
PCB
LDARLDPC
PCB
LDAR
LDPC
PCB
LDAR
LDPC
PCB
LDAR
LDPC
SWB
有效
LDRi
PCB
LDAR
LDPC
24
17
16
0D
18
20
1C
13
11
R1B
LDDR2
CE有效
W/R=0LDAR
CE有效
W/R=0LDAR
CE有效
W/R=0
LDAR
ALU做“求反”LDRI
ALUB
CE有效
W/R=0
LOAD
CE有效
W/R=0
LDAR
CE有效
W/R=0
LDAR
CE有效
W/R=0
LDAR
01
1D
14
25
19
CE有效
W/R=0
LDDR1
R0B
CE有效
W/R=1
CE有效
W/R=0
LDDR2
21
12
0E
ALU做“减法”
LDRi
ALUB
CE有效
W/R=0
LDDR1
CE有效
W/R=0
LDDR1
CE有效
W/R=0
LDDR1
01
01
22
1E
1A
15
0F
R1B
LDDR2
R1B
LDDR2
R1B
LDDR2
ALUB
LEDB
ALU=A
W/R=1
R0B有效
LDDR1
01
01
23
1F
1B
ALU做“或”
LDRi
ALUB
ALU做“异或”
LDRi
ALUB
ALU做“与”
LDRi
ALUB
10
ALU做加法
LDRi
ALUB
01
01
01
01
01
图2用微命令表示的执行十条基本指令的微指令流程
四、微指令格式设计
本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:
编写的微指令如下:
01:
000001011110110110000010
02:
000001001100000001000000
03:
000001000001000000000001
04:
000001011110110110001101
05:
000001011110110110010001
06:
000001011110110110010011
07:
000001011010001000100100
08:
000001011010001000010111
09:
000001011110110110011000
0A:
000001011110110110011100
0B:
000001011110110110100000
0C:
000001011110110110010110
0D:
000001001110000000001110
0E:
000001001011000000001111
0F:
000001011010001000010000
10:
100101011001101000000001
11:
000001001110000000010010
12:
000001101000001000000001
13:
000001001110000000010100
14:
000001001010000000010101
15:
000001110000101000000001
16:
000001001101000110000001
17:
000010011001101000000001
18:
000001001110000000011001
19:
000001001010000000011010
1A:
000001011011010000011011
1B:
101110011001101000000001
1C:
000001001110000000011101
1D:
000001001010000000011110
1E:
000001011011010000011111
1F:
011010011001101000000001
20:
000001001110000000100001
21:
000001001010000000100010
22:
000001011011010000100011
23:
111010*********000000001
24:
000001011011010000100101
25:
011000011001101000000001
五、编写微程序
在了解了微指令格式后,就可以开始编写微程序了。
一般地讲,编写微程序可以分成以下几步:
1、设计机器的指令格式,如正文第二部分所示。
2、对所设计的指令进行分析,画出各指令的用微命令表示的微流程图,如本文第三部分所示。
不仅要画出每个对应一条微指令的功能框内的微命令,而且要初步确定该条微指令在控存中的微地址,以便于在设计微程序时确定前一条指令的次地址NA字段和C字段的编码。
在这个过程中,一定要注意P
(1)测试的规则以及指令高四位的编码。
执行十条基本指令的微指令流程如图2所示。
3、根据微流程图的顺序,一个功能框一个功能框地按照第四段所述的微指令格式,确定各字段的编码,将这些字段组合即可形成一条条的微指令编码。
这些微指令的集合就是可以完成所设计的指令功能的微程序。
当然这样设计的微程序有可能不完全正确,还需要进一步检查修改。
以上几步可以用脑、手、纸、笔即可完成。
4、对设计的微程序进行检查修改。
本模型机可以手动地用开关将微程序输入机器的控存。
为了能将要执行的指令输入主存,在微程序中必须安排一端相应的微程序;为了能检查输入的指令是否正确,也要设计一段微程序。
根据上述流程图,可设计相应的微程序。
将这段微程序(启动微地址为00H)和1~3步设计好的微程序组合成一个既可以向主存中写指令也可以从主存中读指令又可以运行主存中的程序的完整的微程序。
测试过程具体分析:
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
03
微指令000001000001000000000001
执行的操作是:
输入开关SWB有效,LDR0,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
04
微指令000001011110110110001101
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
0D
微指令000001001110000000001110
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
0E
微指令000001001011000000001111
执行的操作是:
存储器CE有效,存储器读,LDDR2,转微地址:
0F
微指令000001011010001000010000
执行的操作是:
R0→B,LDDR1,转微地址:
10
微指令100101011001101000000001
执行的操作是:
算术:
A加B,ALU→B,LDR0,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
05
微指令000001011110110110010001
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
11
微指令000001001110000000010010
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
12
微指令000001101000001000000001
执行的操作是:
存储器CE有效,写存储器,R0→B,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
06
微指令000001011110110110010011
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
13
微指令000001001110000000010100
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
14
微指令000001001010000000010101
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
15
微指令000001110000101000000001
执行的操作是:
算术:
A,数码管LEDB有效,写LED,ALU→B,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
07
微指令000001011010001000100100
执行的操作是:
R0→B,LDDR1,转微地址:
24
微指令000001011011010000100101
执行的操作是:
R0→B,LDDR2,转微地址:
25
微指令011000011001101000000001
执行的操作是:
算术:
A减B,ALU→B,LDR0,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
08
微指令000001011010001000010111
执行的操作是:
R0→B,LDDR1,转微地址:
17
微指令000010011001101000000001
执行的操作是:
逻辑:
/A,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
09
微指令000001011110110110011000
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
18
微指令000001001110000000011001
执行的操作是:
存储器CE有效,存储器读,LDAR,转微地址:
19
微指令000001001010000000011010
执行的操作是:
存储器CE有效,存储器读,LDDR1,转微地址:
1A
微指令000001011011010000011011
执行的操作是:
R1→B,LDDR2,转微地址:
1B
微指令101110011001101000000001
执行的操作是:
逻辑:
AB,ALU→B,LDR1,转微地址:
01
微指令000001011110110110000010
执行的操作是:
PC→B,LDAR,允许PC加1(LDPC=1),转微地址:
02
微指令000001001100000001000000
执行的操作是:
存储器CE有效,存储器读,LDIR,P
(1)测试:
NA(3~0)或(IR7~IR4),转微地址:
0A
微指令000001011110110110011100
执行的操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理