重叠技术模型机实验
一、实验目的
1、了解微程序控制器是如何控制模型机运行的,掌握整机动态工作过程;
2、掌握重叠和流水线结构的工作原理及实现方法;
3、定义七条机器指令,编写相应微程序并具体上机调试。
二、实验环境
COP2000软件。
三、实验原理及说明
1、COP2000总体结构
COP2000 模型机包括了一个标准 CPU 所具备所有部件,这些部件包括:运算器 ALU、累加器 A、工作寄存器 W、左移门 L、直通门 D、右移门 R、寄存器组 R0-R3、程序计数器PC、地址寄存器 MAR、堆栈寄存器 ST、中断向量寄存器 IA、输入端口 IN、输出端口寄存器 OUT、程序存储器 EM、指令寄存器 IR、微程序计数器 uPC、微程序存储器 uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用 CPLD 来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。模型机为 8 位机,数据总线、地址总线都为 8 位,但其工作原理与 16 位机相同。相比而言 8 位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。
模型机的指令码为 8 位,根据指令类型的不同,可以有 0 到 2 个操作数。指令码的最低两位用来选择 R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有 24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。如图1所示。

图1
2、实验原理
叠技术模型机引入“指令预取”部件BIU,使指令预取与指令执行的工作重叠进行。这里,计算机“执行部件”数据通路的控制仍由微程序控制器来完成,而“指令预取”部件的数据通路由一片CPLD来模拟。“指令预取”部件的内部采用三字节的先进先出栈(FIFO),在程序运行过程中,预取部件将指令从存储器中取到FIFO里,满为止。执行部件从FIFO中取得指令,在预取与执行的过程中互不影响。当执行部件遇到访内的指令时,先给BIU发一个请求信号,BIU收到该请求信号后,停止给FIFO 写数,这时总线空闲,执行部件就可以对外部设备进行读写操作。
四、实验步骤
1、在 COP2000 软件中,用菜单的[文件|调入指令系统/微程序]功能,打开 COP2000 下的
“INST2.INS”,这就是流水操作的指令/微指令系统。
2、在 COP2000 软件中,用菜单的[文件|打开文件]功能,打开 COP2000 下的“EX1.ASM”。
源程序
MOV A, #12h
MOV A, R0
MOV A, @R0
MOV A, 01H
IN
OUT
END
3、按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的
输入/输出状态,各控制信号的状态,PC 及 uPC 如何工作。特别是在每条指令的 T0 状态周期,取指操作是否和其它指令并行执行。
4、根据前面的实验步骤完成下列表格。
操作前寄存器数值 |
PC=00 |
指令 |
_FATCH_ |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= |
指令 |
MOV A, #12 |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= |
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、A= |
指令 |
MOV A, R0 |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、L= D= 、R= |
指令 |
MOV A, @R0 |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= |
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、A= L= 、D= 、R= |
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、A= MAR= |
指令 |
MOV A, 01H |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、A= L= 、D= 、R= |
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、MAR= |
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= |
指令 |
IN |
有无并行;如果有,在何处 |
|
执行过程 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、L= D= 、R= |
指令 |
OUT |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、A= |
指令 |
_FATCH_ |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= 、L= D= 、R= |
指令 |
_FATCH_ |
执行过程 |
|
微指令 |
|
状态 |
|
微地址 |
|
操作后寄存器数值 |
PC= 、EM= 、IR= 、μPC= |