计算机组成原理 课程设计报告

 

 

 

 

计算机组成原理学习

课程设计报告测试

 

   成员:许恺   2014011329编码

         胡强勇  2014011315spa

    时间:2016.12.20设计

 

 

 

 

 

 

 

 

一.简要总结计算机组成原理实验接口

计算机组成原理实验总共五个实验,首先咱们熟悉了教学机的使用方法,后面的实验咱们分为运算器、存储器、控制器,控制器分为两次实验。紧接的第二次实验咱们就进行了运算器的实验,对运算器的内部构造极其原理进行了验证理解,在这里咱们学习了运算器ALU的8种运算功能,以及其通用寄存器组,以及运算器的编码指令和每部分的做用。而后,咱们第三次实验对咱们课上所学的存储器进行了实验验证,按照书上的步骤进行了内存扩展,在此次实验中咱们了解了存储器的功能、组织以及静态存储器芯片的读写原理,经过实验对字扩展和位扩展有了理解和掌握。第四次和第五次实验都是关于微程序控制器的实验,这部分咱们先学习了不少图表,都是和微程序控制相关的,经过这些和实验,咱们理解了控制器的功能和组成,理解了各种典型指令的执行流程,对指令格式、寻址方式、指令系统、指令分类有了系统的概念,还让咱们学会了指令的设计以及相关技术。在这一部分,实验主要以教学机为基础来进行,经过让咱们本身学习研究指令代码并进行设计来让咱们对课本进行实践,让咱们,看懂、理解、会写、会设计指令代码。计算机就是由运算器、存储器、控制器以及I/O组成的,接口部分有专门的课程,因此咱们的计算机组成原理实验就从前三方面对咱们的理论知识进行实践教学,主体重点清楚明了,实验难易结合,有单步验证也有综合设计,对咱们的动手和设计能力有极大的提升。内存

二.回答下列问题table

1.微程序中的微指令是顺序执行的吗?下地址是如何产生的?class

1)不是。通常的微指令格式由操做控制和顺序控制两部分构成。操做控制部分用来发出管理和指挥全机工做的控制信号。其顺序控制部分用来决定产生下一个微指令的地址。基础

2)有两种方式

①计数器的方式:

微程序顺序执行时,其后继微地址就是现行微地址加上一个增量(一般为1);

当微程序遇到转移或转子程序时,由微指令的转移地址段来造成转移微地址。

特色:

优势:简单、易于掌握,编制微程序容易

缺点:这种方式不能实现两路以上的并行微程序转移,于是不利于提升微程序的执行速度。

②多路转移的方式:

转移条件:

   ①操做码

   ②状态条件及测试

   ③微指令中下地址

2.根据实验,哪些微指令是全部机器指令都要用到的?为何要这样设计?

答:加电启动(1条):0->PC,DI#=0;

取指(3条):PC->AR,PC+1->PC;

          MEM->DR;

          DR->IR;

执行完毕(2条):STR->Q、CC#=INT#;

          PC->AR、PC+1->PC

    由于这些指令都属于公操做。所谓公操做,就是一条指令执行完毕后,CPU所开始进行的操做,这些操做主要是CPU对外围设备请求的处理,如中断处理、通道处理等。因为全部的指令的取指周期是彻底同样的,所以,取指令也可认为是公操做。

3.一条机器指令与一段微指令相对应,完成这条机器指令的微程序的各条微指令存放在控制存储器中,存放这些微指令的微地址是否连续,为何?

答:不连续。由于微指令执行的顺序控制问题,就是如何肯定下一条微指令的地址问题。一般,产生后继微地址有两种方法。分别是计数器方式和多路转移方式。而这两种方式产生的下一条微指令的地址都不必定连续。

 

4.设计!

1)指令设计(题目要求)

指令设计:

  指令:SBB

  指令格式:16位一个字长  

  功能:DR-SR-CF->DR

  微程序地址映射:指令编码 00100001->51

  选择寄存器:目的寄存器R0,源寄存器R1

  指令存储格式:2101

  微程序与32位微码:

     01:PC->AR,PC+1->PC; 8D05505E

     02:MEM->IR;                     20800008

     03:/MAP; 80800000

     51:DR-SR-CF->DR;   30 0011 0000 100 001 011 001 0000 0001 001 010 000 000                           

     30:STR->Q,CC#=INT#;             9C000003

     31:PC->AR,PC+1->PC,CC#=0;       8D05505E       

 

指令设计:

  指令:STRX DR,OFFSET[SR]

  指令格式:16位两个字长

  功能:PC->AR,PC+1->PC,MEM+SR->AR,CC#=0,DR->MEM

  微程序地址映射:指令编码11100110->61

  选择寄存器:不用

  指令存储格式:E601

  微程序与32位微码:

     01:PC->AR,PC+1->PC; 8D05505E

 02:MEM->IR; 20800008

 03;/MAP; 80800000

 61:PC->AR,PC+1->PC;00 1110 0000 100 011 010 000 0101 0101 000 001 011 000

 62:MEM+SR->AR,CC#=0;00 1110 0000 001 101 011 000 0000 0000 000 000 011 000

 63:DR->MEM;        30 0011 0000 000 100 001 000 1000 0000 000 000 000 001

 30:STR->Q,CC#=INT#;    9C000003

 31:PC->AR,PC+1->PC,CC#=0; 8D05505E

 

指令设计:

  指令:JMPR

  指令格式:16位一个字长      

  功能:JMPR SR

  微程序地址映射:指令编码01100000->5A

  选择寄存器:源寄存器R0

  指令存储格式:6000 

  微程序与32位微码:

    01:PC->AR,PC+1->PC

    02:MEM->IR

03:/MAP

5A: SR->PC,CC#=0    30 0011 0000 100 100 011 000 0101 0000 000 000 000 000

30:STR->Q,CC#=INT#

31:PC->AR,PC+1->PC,CC#=0

 

指令设计:

  指令:CALR

  指令格式:16位两个字长

  功能:调用SR指明的子程序

  微程序地址映射:指令编码11100000->64

  肯定转移

  指令存储格式:E000

  微程序与32位微码:

     01:PC->AR,PC+1->PC;

 02:MEM->IR;

 03:/MAP

 64:SP-1->SP、AR;   00 1110 0000 100 011 011 001 0100 0000 000 001 011 000

 65:PC->MEM;  00 1110 0000 000 100 001 000 0000 0101 000 000 000 001

 66:SR->PC、CC#=0;  30 0011 0000 100 100 011 000 0101 1000 000 000 000 000

 30:STR->1,CC#=INT#; 9C000003

 31:PC->AR,PC+1->PC; 8D05505E

 

指令设计:

  指令:ADC

  指令格式:16位一个字长      

  功能:DR+SR+C->DR

  微程序地址映射:指令编码00100000->50

  选择寄存器:目的寄存器R0,源寄存器R1

  指令存储格式:2001 

  微程序与32位微码:

01:PC->AR,PC+1->PC

02:MEM->IR

03:/MAP

50:DR+SR+CF->DR    30 0011 0000 100 001 011 000 0000 0001 001 010 000 000

30:STR->Q,CC#=INT#

31:PC->AR,PC+1->PC,CC#=0

 

指令设计:

  指令:STC

  指令格式:16位一个字长      

  功能:C=1

  微程序地址映射:指令编码01101101->57

  指令存储格式:6D00

  微程序与32位微码:

    01:PC->AR,PC+1->PC

02:MEM->IR

03:/MAP

57:STC,CC#=0    30 0011 0000 100 011 001 000 0000 0000 100 000 000 000

30:STR->Q,CC#=INT#

31:PC->AR,PC+1->PC,CC#=0

 

指令设计(拓展)

指令设计:

  指令:RCL DR

  指令格式:16位一个字长      

  功能:DR带进位C循环左移

  微程序地址映射:指令编码00101010->54

  所用寄存器:源寄存器R0

  指令存储格式:2A00

  微程序与32位微码:

    01:PC->AR,PC+1->PC;

02:MEM->IR;

03:/MAP;

54:DCL DR;    30 0011 0000 100 011 111 000 0000 0000 110 101 000 000

30:STR->Q,CC#=INT#;

31:PC->AR,PC+1->PC,CC#=0;

 

指令设计:

  指令:IRET

  指令格式:16位一个字长      

  功能:中断返回

  微程序地址映射:指令编码11101111->67

  所用寄存器:无

  指令存储格式:EF00

  微程序与32位微码:

    01:PC->AR,PC+1->PC;

02:MEM->IR;

03:/MAP;

67:SP->AR,SP+1->SP;  00 1110 0000 100 011 010 000 0000 0100 000 001 011 000

68:MEM->STR、CC#、INTOLD#;  30 0011 0000 001 111 001 000 0000 0000 000 000 100 000

30:STR->Q,CC#=INT#;

31:PC->AR,PC+1->PC,CC#=0;

 

 

指令设计:

  指令:NOT              

  指令格式:16位一个字长       

  功能:DR<-/DR

  微程序地址映射:指令编码00101101->52

  选择寄存器:目的寄存器R0

  指令存储格式:2D00 

  微程序与32位微码:

01:PC->AR,PC+1->PC;

02:MEM->IR;

03:/MAP;

52:/DR->DR;    30 0011 0000 100 011 011 111 0000 0000 001 000 000 000

30:STR->Q,CC#=INT#;

31:PC->AR,PC+1->PC,CC#=0;

 

 

指令设计:

指令:STRA [ADR],SR              

指令格式:16位两个字长       

功能:[ADR]<-SR

微程序地址映射:指令编码11100111->5F

选择寄存器:目的寄存器R0

指令存储格式:E701 

微程序与32位微码:

01:PC->AR,PC+1->PC;

02:MEM->IR;

03:/MAP;

5F: PC->AR,PC+1->PC;    60 1110 0000 100 011 010 000 0101 0101 000 001 011 000

60:MEM->AR;            30 0011 0000 001 111 001 000 0000 0000 000 000 011 000

30:STR->Q,CC#=INT#;

31:PC->AR,PC+1->PC,CC#=0;

 

 

2)错误和遇到的问题以及解决

指令设计中出现了不少错误和问题,咱们说一下遇到的问题和错误以及解决。

  1. SST问题?

 解答:SST标志位问题,对标志位无影响时使用000;对标志位产生影响时用001;想  经过标志位直接输出0或1时用011或100;RAM0表示将16位最低位放进标志位;同  RAM15表示将最高位放到标志位,在移位时使用;Q0指将Q寄存器的最低位放到标  志位,用法不详。

  1. I2~00A和0B的区别?

解答:没什么区别,若是若是须要输出给运算寄存器,则须要用B;若是须要直接从A输出,则用A。

  1. I2~0中Q和D的含义?

解答:Q寄存器是一个乘商寄存器,当运算涉及乘除法时,会使用Q寄存器,其余状况为通用寄存器同AB;D寄存器一般用于有内存读的时候,表明了内存和内存的一些指令,实验书上未详细介绍。

  1. DC1中中断向量低位到内部总线的含义?

解答:中断向量的低位指中断向量16位的低四位,将其送到内部总线判断指令是否产生中断。(DC1中的000约等于111,没什么做用。)

  1. CC#=0为什么有时加有时不加?

解答:CC#=0放在非公操做指令的最后一条微指令的末尾,表示指令执行结束,跳转到30公操做。

  1. RCL的SSH SCI 中为何用逻辑移位?

解答:应该用的是循环移位。

5.回答问题

1)设计指令系统

 

 

2)设计上述6条机器指令对应的微指令

答:此题在上面已经解答,在此不作重复。

3)除公操做外,每一个指令用哪几条微指令实现指令功能?

答:此题在上面已经解答,在此不作重复。

4)分析说明三条扩展指令的32位微码的设置原理。

在这里选择三条扩展指令进行详细的32微码设置的分析:

1.SBB指令分析                        

SBB DR,SR

DR-SR-CF->DR

MRW

I2-0

I8-6

I5-3

B口

A口

SST

SSH.SCI

DC2

DC1

100

001

011

001

0000

0001

001

010

000

000       

 

MRW

由于此指令无内存和I/O读写,故选1XX

I2-0

由于涉及DR和SR,因此用A和B两个锁存器,故为001

I8-6

由于要->DR,因此要输出到DR上,因此选F->B,Y=F,故为011

I5-3

由于是减法运算,因此选R-S,故为001

B口

由于B口使用R0,故为0000

A口

A口使用R1,故为0001

SST

因减法运算还有-CF,会有标志位的运算,因此选择001

SSH,SCI

由于运算中存在CF故标志位不定,,因此选010

DC2

指令并无对AR,IR,INT操做,故不操做,选000

DC1

由于不须要用到DC1故选000

 

2.JMPR指令分析        

JMPR SR

SR->PC,CC#=0

MRW

I2-0

I8-6

I5-3

B口

A口

SST

SSH.SCI

DC2

DC1

100

100

011

000

0101

1000

000

000

000

000       

 

MRW

由于此指令无内存和I/O读写,故选1XX

I2-0

由于SR直接赋值,因此用A锁存器,R为0,故为100

I8-6

由于要->SP,因此要输出到SP上,因此选F->B,Y=F,故为011

I5-3

由于是0+SR运算,因此选R+S,故为000

B口

由于B口使用SP,R5,故为0101

A口

A口使用SR,R8,故为1000

SST

由于不会存在标志位的改变,因此选择000

SSH,SCI

由于不须要用标志位,因此选000

DC2

指令并无对AR,IR,INT操做,故不操做,选000

DC1

由于不须要用到DC1故选000

 

 

 

3.STRA指令分析                     

STRA [ADR],SR

   PC->AR,PC+1->PC;   

MRW

I2-0

I8-6

I5-3

B口

A口

SST

SSH.SCI

DC2

DC1

100

011

010

000

0101

0101

000

001

011

000       

 

MRW

由于此指令无内存I/O读写,故选1XX

I2-0

由于PC既要被运算也要被输出,故选B锁存器,故为011

I8-6

由于要->AR,PC,因此要输出到PC上,因此选F->B,Y=A,故为010

I5-3

由于是加法运算,因此选R+S,故为000

B口

由于B口使用PC,R5,故为0101

A口

A口使用PC,R5,故为0101

SST

不会有标志位的运算,因此选择000

SSH,SCI

因PC需+1,标志位须要为1,因此选001

DC2

由于须要AR接收,故选011

DC1

由于不须要用到DC1故选000

 

MEM->AR;   

MRW

I2-0

I8-6

I5-3

B口

A口

SST

SSH.SCI

DC2

DC1

001

111

001

000

0000

0000

000

000

011

000       

 

MRW

由于此指令须要读取内存,故选000

I2-0

由于从内存读取,因此使用D直接赋值,故为001

I8-6

由于直接输出,不用改变B的值,因此选Y=F,故为001

I5-3

由于加0运算,因此选R+S,故为000

B口

由于B口没使用,故为0000

A口

A口没使用,故为0000

SST

因不会有标志位的运算,因此选择000

SSH,SCI

由于没有标志位运算,因此选000

DC2

指令要写入AR,故选011

DC1

由于不须要用到DC1故选000

 

6.总结感悟

  此次的计算机组成原理课程设计我组成员收获颇丰,在掌握知识的同时,还加强了克服困难的信心。整体来讲,本次的报告难度适中,若是上课认真学习报告是没有问题的,在报告的写的过程当中,咱们复习了不少课上还有实验中的知识,同时也查了一些资料,问了老师一些问题,感受懂得了很多课内外的知识。不只如此,完成报告也给了咱们鼓励,让咱们在面对困难的时候可以认真的一步一步去完成,不断提升本身。在和老师的交流中咱们也发现了实验的一些小漏洞,好比可能对于学生来讲实验书写的知识太少了,有的知识点不能理解的很好,我认为能够在实验书上写更多的扩展知识,让同窗们更加的理解整个知识体系,也学的更多。谢谢。

相关文章
相关标签/搜索