计算机组成原理.docx

上传人:b****3 文档编号:10172854 上传时间:2023-05-24 格式:DOCX 页数:26 大小:83.78KB
下载 相关 举报
计算机组成原理.docx_第1页
第1页 / 共26页
计算机组成原理.docx_第2页
第2页 / 共26页
计算机组成原理.docx_第3页
第3页 / 共26页
计算机组成原理.docx_第4页
第4页 / 共26页
计算机组成原理.docx_第5页
第5页 / 共26页
计算机组成原理.docx_第6页
第6页 / 共26页
计算机组成原理.docx_第7页
第7页 / 共26页
计算机组成原理.docx_第8页
第8页 / 共26页
计算机组成原理.docx_第9页
第9页 / 共26页
计算机组成原理.docx_第10页
第10页 / 共26页
计算机组成原理.docx_第11页
第11页 / 共26页
计算机组成原理.docx_第12页
第12页 / 共26页
计算机组成原理.docx_第13页
第13页 / 共26页
计算机组成原理.docx_第14页
第14页 / 共26页
计算机组成原理.docx_第15页
第15页 / 共26页
计算机组成原理.docx_第16页
第16页 / 共26页
计算机组成原理.docx_第17页
第17页 / 共26页
计算机组成原理.docx_第18页
第18页 / 共26页
计算机组成原理.docx_第19页
第19页 / 共26页
计算机组成原理.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机组成原理.docx

《计算机组成原理.docx》由会员分享,可在线阅读,更多相关《计算机组成原理.docx(26页珍藏版)》请在冰点文库上搜索。

计算机组成原理.docx

计算机组成原理

 

课程设计报告

 

课程设计名称:

简单模型机的微程序设计

系:

学生姓名:

班级:

学号:

成绩:

指导教师:

开课时间:

目录

 

一.课程设计题目、目的、要求-----------------------------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

执行的操

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2