计算机组成原理课程设计模型机.docx
《计算机组成原理课程设计模型机.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计模型机.docx(28页珍藏版)》请在冰豆网上搜索。
计算机组成原理课程设计模型机
模型机详细介绍
1.模型机的结构
模型机主要由运算器、控制器、存储器、数据总线、输入输出和时序产生器组成,模型机的结构图如图1所示。
图1模型机结构图
(1)运算器。
运算器又由运算逻辑单元、数据暂存器、通用寄存器组成。
在图1模型机的结构图中,ALU、ALU_G和74299组成运算逻辑单元,其中ALU是由2个4位的74LS181串联成8位的运算器,ALU_G是ALU-G实现用于控制ALU的运算结果的输出,74299用74LS299实现用于对ALU的运算结果进行移位运算;数据暂存器在图1中由DR1和DR2组成,DR1和DR2都是用74LS273实现,它们用于存储运算器进行运算的两个操作数;通用寄存器在图1中由R0、R1和R2组成,R0、R1和R2都是用74LS374实现,它们用作目的寄存器和源寄存器。
(2)控制器。
控制器由微程序控制器、指令寄存器、地址寄存器和程序计数器组成。
在图1中微程序控制器表示为MControl,它里面存放了指令系统对应的全部微程序,微程序控制器是由微控制存储器和3个138译码器实现(A138、B138和P138),用于产生控制信号来控制各个组件的工作状态;在图1中指令寄存器表示为IR,指令寄存器由一个74LS273实现,用于存放当前正在执行的指令;在图1中地址寄存器表示为AR,地址寄存器由一个74LS273实现,在读取或者写入存储器时用于指明要读取或写入的地址;程序计数器在图1中由PC_G和PC组成,其中PC是由八位二进制同步计数器实现,用于产生程序指针pc的下一个值,PC_G由PC-G实现,用于存储程序的程序指针pc的值。
(3)存储器。
存储器在图1中表示为MEN,存储器用静态随机存储器6116实现,用来存储用户程序和数据。
(4)数据总线。
数据总线用于连接运算器、存储器、输入输出等模块,数据总线由ccp_DataBus实现。
(5)输入输出。
输入输出类似于键盘和显示器。
(6)时序产生器。
在图1中T1、T2、T3和T4等控制信号都是由时序产生器生产,时序产生器由时序电路实现如图2所示,时序产生器一个周期中产生四个脉冲信号T1~T4,这四个脉冲信号用于控制组件的执行顺序,组件在这些信号的控制下有序的执行,一个周期中完成一条微指令的执行。
图2时序产生器
2.模型机的工作过程
模型机的工作过程可以归纳如下:
(1)控制器把PC中的指令地址送往地址寄存器AR,并发出读命令。
存储器按给定的地址读出指令,经由存储器数据寄存器MDR送往控制器,保存在指令寄存器IR中。
(2)指令译码器ID对指令寄存器IR中的指令进行译码,分析指令的操作性质,并由控制电路向存储器、运算器等有关部件发出指令所需要的微命令。
(3)当需要由存储器向运算器提供数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并送往地址寄存器AR,然后向存储器发出读命令,从存储器中读出的数据经由存储器数据寄存器MDR送往运算器。
(4)当需要由运算器向存储器写入数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并送往存储器地址寄存器AR,再将欲写的数据存入存储器数据寄存器MDR,最后向存储器发出写命令,MDR中的数据即被写入由MAR指示地址的存储单元中。
(5)一条指令执行完毕后,控制器就要接着执行下一条指令。
为了把下一条指令从存储器中取出,通常控制器把PC的内容加上一个数值,形成下一条指令的地址,但在遇到“转移”指令时,控制器则把“转移地址”送入PC。
控制器不断重复上述过程的
(1)到(5),每重复一次,就执行了一条指令,直到整个程序执行完毕。
3.中央处理器
中央处理器(CPU)是计算机系统的核心组成部件,它通常包括控制器和运算器两大部分。
CPU所能完成的基本功能是读取并执行指令。
这里将中央处理器作为一个整体来讨论。
介绍了中央处理器的功能、计中央处理器的组成、指令周期。
1)中央处理器的功能
计算机必须要有一个控制并执行指令的部件,该部件不仅要与计算机的其他功能部件进行信息交换,还要能控制它们的操作,这个部件就是中央处理器(CPU)。
CPU硬件组织所完成的基本功能是:
读取并执行指令。
对于整个计算机系统,它有如下几方面功能:
(1)指令控制:
控制指令按一定顺序执行。
(2)操作控制:
控制其他功能部件按指令要求进行操作。
(3)时间控制:
整个计算机系统程序的执行及各种操作实施都在严格的时间控制下有条不紊地自动工作。
(4)数据加工:
对数据进行各种运算。
2)中央处理器的组成
根据计算机对CPU的要求,CPU必须做如下事情:
(1)取指令:
读取某一主存单元的内容,并将其装入CPU的某个寄存器中。
(2)解释指令:
对指令进行译码,以确定所需要的动作。
(3)取数据:
一条指令的执行可能要求存储器或I/O模块读取数据。
(4)处理数据:
一条指令的执行可能要求对数据完成某些算术或逻辑运算。
(5)写数据:
执行的结果可能要求写数据到存储器或I/O模块。
显然,要完成这些事情,CPU需要由运算器(ALU)、控制器及寄存器组成。
如图3所示为一个简化了的CPU构成。
图3CPU构成
ALU完成数据的实际计算或处理。
控制器控制数据和指令移入/移出CPU并控制ALU的操作。
寄存器用于CPU暂存数据和指令。
3)寄存器组织
在CPU中有两类功能寄存器:
读者可见寄存器和控制状态寄存器。
读者可见寄存器:
读者通过使用机器指令显式或隐式可访问的寄存器。
它允许机器语言或汇编语言的编程人员通过优化寄存器的使用来减少对主存的访问。
它们可以是以下寄存器:
(1)通用寄存器:
可被程序员指派各种用途。
(2)数据寄存器:
仅可用于保持数据而不能用于操作数地址的计算。
(3)地址寄存器:
用于保存地址,它可以有自身的某些通用性,也可以是某种具体的寻址方式,如段指针、变址寄存器或堆栈指针等。
(4)条件代码寄存器:
用于保持条件代码,CPU硬件设置这些条件作为操作的结果。
通常机器指令允许这些位以隐式读出,但不能被程序员修改。
(5)控制和状态寄存器:
用于被控制器用来控制CPU的操作并被具有特权的操作系统程序用来控制程序的执行。
大多数是读者不可见的。
它们有:
·程序计数器(PC):
保存将要执行指令的地址。
·指令寄存器(IR):
保存当前执行的指令。
·存储地址寄存器(MAR):
保存CPU所访问存储器单元的地址。
·存储缓冲寄存器(MBR):
保存从内存中读出的数据或是将要写入内存的数据。
·程序状态字(PSW):
保存运算或测试结果的各种条件码内容及中断和系统工作状态等信息。
4)指令周期
CPU从主存中取出一条指令到执行完这条指令的所有的操作所需要的时间通常称为一个指令周期。
由于指令从简单到复杂不尽相同,因此各种指令的指令周期也是不同的。
如图4所示的指令周期图。
图4指令周期图
一个指令周期通常又由若干个CPU周期组成,CPU周期也称为机器周期。
而一个CPU周期又由若干个时钟周期组成,时钟周期是计算机中的最小处理单位。
CPU周期有定长和不定长两种,即固定或是可变时钟周期数。
图5是采用定长CPU周期的指令周期示意图。
图5定长CPU周期的指令周期图
一条指令至少应包括取指令和执行指令这两个CPU周期,对于复杂的指令可能就需要更多的CPU周期。
4.控制器
控制器是计算机的核心部件,计算机的所有硬件都是在控制器的控制下完成程序规定的操作的。
控制器的基本功能就是把机器指令转换为按照一定时序控制机器各部件的工作信号,使各部件产生一系列动作,完成指令所规定的任务。
控制器有两大类:
硬布线控制器和微程序控制器。
模型机中采用的是微程序控制的方式。
4.1控制器的功能和结构
1)控制器的功能
计算机是根据人们编写的放在主存中的程序来完成一系列任务的,但如何来完成每一条指令的操作呢?
这就需要控制器来“解释”,即把指令转化为按照一定的时序来控制机器各部件的工作信号,使各部件产生一系列动作,完成指令所规定的任务。
计算机程序是由若干条指令组成的,而每一条机器指令又执行若干条微指令,每条微指令又由若干个微操作组成,每个微操作控制实现微指令的硬件逻辑电路。
计算机对信息处理的过程就是不断地取指令、分析指令和执行指令。
所以控制器具有如下基本功能:
(1)取指令。
从主存中取出程序计数器(PC)所指下条待执行指令地址的指令。
(2)分析指令。
对取出的指令进行分析,指出它要做什么操作,产生相应操作的操作控制信号。
(3)执行指令。
根据分析指令的结果,得到“操作命令”和“操作数地址”,产生一系列对各部件进行控制的信号序列,从而完成指令的执行。
(4)对异常情况及中断请求处理。
发生异常情况或设备发出中断请求时,就暂停当前的程序并转到相应的中断服务程序,处理完后再返回到原程序中断处继续执行。
2)控制器的组成
控制器由如下基本部分组成:
(1)程序计数器(PC):
用来存放下条将要执行的指令在主存中的地址。
(2)指令寄存器(IR):
用来存放当前正在执行的指令。
(3)指令译码器(ID):
对指令寄存器中的指令的操作码进行译码,向微操作控制信号形成部件提供特定的操作控制信号。
(4)时序发生器:
用于产生机器所需的各种时序信号,以控制有关部件在不同的时间完成的不同操作。
(5)微操作控制信号形成部件:
根据不同的时序关系、操作码和有关的状态标志给出所需要的微操作控制信号序列。
(6)中断机构:
对异常情况及某些中断请求进行处理。
(7)总线控制逻辑:
对总线上各部件使用总线进行仲裁。
3)控制器的结构
控制器的结构可分为硬布线控制结构和微程序控制结构,在本模型机中采用的是微程序控制结构。
(1)硬布线控制器:
又称组合逻辑控制器。
用组合逻辑电路,将时序信号、指令译码信息、条件状态标志信号等输入逻辑信号转换成一组各部件需要的控制信号序列。
(2)微程序控制器:
将指令的微操作信号编成微指令,存放在控制存储器中。
当机器运行时,一条一条地读出这些微指令,从而产生各部件所需要的微操作控制信号。
4.2微程序控制器的原理及结构
1)微程序控制器的原理
微程序控制器的基本思想可以概括如下:
(1)将每种机器指令分解为若干条微操作序列,用若干条微指令来解释一条机器指令。
再根据整个指令系统的需要,编制出一套完整的微程序,预先存入控制存储器中。
(2)将控制器所需要的微命令以微代码的形式编成微指令,存入控制存储器中,这个控制存储器由只读存储器ROM构成。
在计算机运行时,不断从控制存储器中取出微指令,用其所包含的微命令来控制有关部件的操作。
2)有关术语与概念
这里涉及两个层次,一层是机器指令级——机器指令,它是程序员可以操作的,放在主存中;另一层是微程序级——微指令,它对程序员是透明的,不能操作,而底层硬件设计者可以操作,存放在控制存储器中。
(1)微命令:
又称微信号,是直接作用于控制电路的控制命令,是控制信号序列的最小单位。
控制部件通过控制总线向执行部件发出各种微命令。
(2)微操作:
由微命令控制实现最基本的操作。
(3)微周期:
从控制存储器中读取一条微指令并执行完相应的所有微操作所用的时间,通常是一个时钟周期。
(4)微指令:
每个微周期所需的微命令组成一条微指令,它以二进制形式编码存放在控制存储器中,一个控制存储器单元存放一条微指令。
(5)微程序:
由若干条微指令组成的有序序列。
每条机器指令都对应着一段微程序。
3)微程序控制器的结构
微程序控制器的组成结构如图6所示。
图6微程序控制器组成结构图
(1)控制存储器(CM):
用来存放微程序的存储器,它是只读存储器。
在它的每个单元存放一条微指令的代码。
它的字长就是微指令字的长度。
(2)微指令寄存器(μIR):
用于存放由控制存储器中读出的一条微指令。
它分为两大部分:
一部分提供微命令的控制字段,其代码直接或经过译码后产生微命令;另一部分为顺序控制字段,它指明后续微地址的形成方式,以控制微程序连续运行。
(3)微地址形成电路:
根据微指令寄存器中的顺序控制字段、机器指令及有关状态等确定后续微地址形成的电路。
(4)微地址寄存器(μAR):
用于保存下一条微指令的地址。
读取CM中的微指令时是按微地址寄存器中指向的单元读取的,当微指令读出或执行完后,微地址形成电路将后续微地址输入到微地址寄存器中,为下次读取微指令作好准备。
4)机器指令的执行过程
(1)在微指令序列中,有一些指令是进行公共操作的,如取指等。
在一个机器周期的开始,先执行取指操作,从主存中取出机器指令,送入指令寄存器,修改程序计数器PC的值。
(2)根据指令译码器对指令译码,取出操作码通过微地址形成电路产生对应的微程序入口地址,并送入微地址寄存器。
(3)从被选中的单元中取出相应的一条微指令送入微指令寄存器。
(4)微指令寄存器中的微指令操作控制字段经过译码或直接输出产生一组微命令,送往有关的执行部件,在时序的控制下完成其规定的微操作。
(5)微指令寄存器中的顺序控制字段及有关状态通过微地址形成电路产生后续微地址,并输入到微地址寄存器中,继续读取下一条微指令。
(6)执行完一条机器指令对应的一段微程序后,又返回到公共微程序取指。
4.3后续微地址的形成方法
微指令要按顺序一条一条地执行下去,就要能确定下一条微指令的地址。
通常有如下两种方法:
1)计数器方式(增量方式)
计数器方式采用一个微地址计数器(μPC)来产生下一条微指令的微地址。
当顺序执行微程序时,后续微指令地址由现行的微指令地址加上一个增量来产生;当遇到转移时,根据测试条件将要转移的地址输入到μPC中。
2)判定方式
判定方式是一种直接给定与测试判定相结合的方式。
后续微地址直接包含在当前微指令的代码中。
将指令中的微地址分成两部分:
直接给定的高位部分和根据判定条件形成的低位部分。
在微指令的顺序控制段中设置或注明判定条件,即微地址低位段的形成条件,则根据测试条件就可以形成不同的低位地址,产生不同的微程序分支。
5.模型机的实验原理
模型机在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。
本实验采用五条机器指令:
IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下(前4位为操作码):
助记符机器指令码说明
IN00000000“INPUTDEVICE”中的开关状态–>RO
ADDaddr00010000××××××××二进制加法R0+[addr]–>R0
STAaddr00100000××××××××存数RO–>[addr]
OUTaddr00110000××××××××输出[addr]–>LED
JMPaddr01000000××××××××无条件转移addr–>PC
其中IN为单字长(8位)指令,其余为双字长指令,××××××××为addr对应的二进制地址码。
图7模型机数据通路图
根据模型机的数据通路图(如图7所示)和指令的要求定义微代码如下:
表1微代码定义
微程序
24~21
20
19
18
17
16
15~13
12~10
9~7
6~1
控制信号
S3~S0
M
CN
RD
M17
M16
A
B
P
uA5~uA0
表2A、B、P字段
A字段
B字段
P字段
15
14
13
控制信号
12
11
10
控制信号
9
8
7
控制信号
0
0
0
0
0
0
0
0
0
0
0
1
LDRI
0
0
1
RS_G
0
0
1
P1
0
1
0
LDDR1
0
1
0
RD_G
0
1
0
P2
0
1
1
LDDR2
0
1
1
RI_G
0
1
1
P3
1
0
0
LDIR
1
0
0
299_G
1
0
0
P4
1
0
1
LOAD
1
0
1
ALU_G
1
0
1
AR
1
1
0
LDAR
1
1
0
PC_G
1
1
0
LDPC
表中μA5~μA0为6位后续微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。
P字段中的P
(1)~P(4)是四个测试字位。
其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。
B字段中的RS-B、RD-B、RI-B分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码。
A字段中的LDRI为从输入设备组件中读入数据使能控制信号。
系统涉及到的微程序流程如图8所示,这里“取指”是公用微指令,为了能确定不同机器指令有各自不同的微程序转向,我们在这里以指令寄存器的前4位(IR7~IR4)作为测试条件,引入了P
(1)指令测试字段,如此,对于五条机器指令,就可以有五路P
(1)测试分支,对于每一指令分别予以微程序解释。
由图8微程序流程图中可以看到,在执行机器指令IN的时候要执行三条微指令:
01、02和10,每个微指令需要一个CPU周期来执行,所以执行一条机器指令IN需要三个CPU周期。
图8微程序流程图
当全部微程序设计完毕后,应将每条微指令代码化,表3即为将图8的微程序流程图按微指令格式转化而成的二进制微代码表。
表3二进制代码表
微地址
S3S2S1S0MCNWEM17M16
A
B
P
μA5…μA0
00
000000011
000
000
100
010000
01
000000011
110
110
110
000010
02
000000001
100
000
001
001000
03
000000001
110
000
000
000100
04
000000001
011
000
000
000101
05
000000011
010
001
000
000110
06
100101011
001
101
000
000001
07
000000001
110
000
000
001101
10
000000000
001
000
000
000001
11
000000011
110
110
110
000011
12
000000011
110
110
110
000111
13
000000011
110
110
110
001110
14
000000011
110
110
110
010110
15
000000101
000
001
000
000001
16
000000001
110
000
000
001111
17
000000001
010
000
000
010101
20
000000011
110
110
110
010010
21
000000011
110
110
110
010100
22
000000001
010
000
000
010111
23
000000011
000
000
000
000001
24
000000000
010
000
000
011000
25
000001110
000
101
000
000001
26
000000001
101
000
110
000001
27
000001110
000
101
000
010000
30
000001101
000
101
000
010000
本实验设计机器指令程序如表4所示。
表4实验中机器指令解释表
地址(二进制)
内容(二进制)
助记符
说明
00000000
00000000
IN
将输入数据送R0寄存器
00000001
00010000
ADD[0AH]
RO+[0AH]—>R0
00000010
00001010
地址
00000011
00100000
STA[0BH]
R0—>[0BH]
00000100
00001010
地址
00000101
00110000
OUT[0BH]
[0BH]—>LED
00000110
00001011
地址
00000111
01000000
JMP[00H]
00H—>PC
00001000
00000000
跳转地址
00001010
00000001
加数,可自定
00001011
求和结果保存在0B单元中
本程序使用五条机器指令编写指令程序,内存映象(装入起始地址00H)如表4。
本程序从输入设备组件中读入数据,与内存组件中地址为OAH中的数据进行相加,和存入内存中的OBH中,并在输出设备组件中显示,本程序不断循环运行,直到用户中断实验。
6.模型机连线说明
模型机的组成结构复杂,引脚很多,所以连线很复杂,模型机的连线图如图9所示,在搭建模型机图的时候最好参考图1中的模型机结构图,这里将模型机分成五个部分来让大家看清模型机中各个组件的连线方法。
这五个部分包括:
模型机各个组件之间的数据连线、模型机微控中的控制信号的连线、模型机脉冲信号的连线、模型机中用来对组件进行功能控制的开关的连线及开关值的设置、模型机通用寄存器的连线。
图9模型机的连线图
1)各个组件之间数据信号的连线
如图9所以为模型机各个组件之间的数据信号连线图,在这个文档的同一目录有个图片文件“模型机各个部件的连接关系.jpeg”可以看得更清晰,其中大多数用到了4、8、3连线组,同时可以看到大多数组