一、实验内容与目的
实验要求:
利用CP226实验仪上的小键盘将程序输入主存储器EM,通过指令的执行实现微程序控制器的程序控制。
实验目的:
1.掌握模型机的操作码测试过程;
2.掌握模型机微程序控制器的基本结构以及程序控制的基本原理。
二、实验步骤
一条机器指令有一个微程序解释执行,一个微程序有若干条微指令构成。每条指令的操作码OP就是微程序第一条微指令在控制存储器uM的微地址,通过操作码找到第一条微指令地址的过程称为操作码测试或P1测试。微程序的多条微指令在控制存储器uM的组织方式可以是链表式(下一条微指令的微地址由当前微指令的顺序控制部分决定),也可以是顺序式(下一条微指令的微地址是当前微指令的微地址加1产生)。
模型机的操作码测试规则如下:
指令的六位操作码 OP,低位补加两个零构成八位微地址作为微程序第一条微指令的微地址。
指令 MOV A, #12H 的操作码OP=011111B,低位补加00B,解释执行该机器指令的第一条微指令的微地址是01111100B,即7CH。该微指令在控制存储器的7CH单元。
模型机的微程序组织方式是顺序式。
实验程序段:
MOV A, #12H
MOV A, R1
MOV A,@R2
MOV A, 10H
IN A,SW
OUT LED,A
将该程序转换为机器码写入主存储器 EM。
2.1 微地址实验
下面以第一条指令为例说明微地址的形成方式。
指令MOV A, #12H 开始执行的第1条微指令一定是取指令的微指令,由于所有指令取指令的微指令都一样,所以取指令的微指令作为公共操作放在控制存储器的00H单元。
解释执行指令MOV A, #12H 的第一条微指令的微地址是7CH。
执行完指令MOV A, #12H 需要取下一条指令,第二条微指令是取值的微指令,微地址是7DH。
标明微地址的指令周期图如下所示。指令周期图的一个方块是一个机器周期(一次STEP 按键操作),对应一条微指令,方框上面的数字就是微地址,波浪号是取指公操作。
将指令地址 PC 和微指令地址 uPC 置为 00H,如果不是可以通过小键盘输入改写,按下 STEP 按键,观察 uPC 值得变化。
2.2 微指令实验
模型机的微程序组织方式是顺序式,微指令只有 24 位操作控制字段,没有顺序字段,微指令格式如下:
X R D | E M W R | E M W R | P C O E | E M E N | I R E N | E I N T | E L P | M A R E N | M A R O E | O U T E N | S T E N | R R D | R W D | C N | F E N | X 2 | X 1 | X 0 | W E N | A E N | S 2 | S 1 | S 0 |
24 个操作控制位是 3 个字节,最高 8 位称为微指令的高字节,简写为 MH;中间 8 位称为微指令的中字节,简写为 MM;最低 8 位称为微指令的低字节,简写为 ML。
下面以第一条指令为例说明微微程序控制。
指令 MOV A, #12H 开始执行的第 1 条微指令是取指令的微指令,取指的微指令在控存 00H 单元,将 00H 单元的微指令读出,其值为 CBFFFFH,具体操作详见 1.3 的第 5 部分的观察和修改微程序控制器 uM 的内容。
该微指令对应的三个控制位是 EMRD、PCOE、及 IREN 为低,此三位有效,其它所有位都处于无效状态。在程序第一次运行时或复位后,uPC 和 PC 的值都为 0。PCOE 有效将 PC 值送到 ABUS,做为主存储器 EM 的指令地址,同时 PC 加 1;EMRD 信号有效就是从主存储器 EM 中读出程序指令,IREN 将读出的指令送到 IR 寄存器。
此微指令的作用就是:从主存储器 EM[0]的读取指令,并存入 IR 中进行操作码测试,得到微程序入口地址 7CH 来修改 uPC,同时 PC 加 1 为读下一条指令或数据做准备。
将 7CH 单元的微指令读出,其值为 C7FFF7H,对应到各个控制位是 EMRD、PCOE、 EMEN 及 AEN 为低,处于有效状态,其它控制位为无效状态。PCOE 是将 PC 输出到 ABUS 做为主存储器 EM 的地址,同时 PC 加 1;EMRD 就是从程序存储 EM 中读出数据,EMEN 将读出的数据送到 DBUS 总线上,AEN 是将 DBUS 总线上的值存入累加器 A 中。
此微指令的作用就是:从主存储器 EM[1] 的读取数据 12H 送入 A,uPC 加 1,给出下一条微指令的地址,同时 PC 加 1 为读下一条指令或数据做准备。
将 7DH 单元的微指令读出,其值为 CBFFFFH 与 00H 单元微指令作用一样。
三、实验过程分析
3.1 微地址实验
1. 实验过程分析
- 实验准备:
在开始实验之前,需要将指令地址 PC 和微指令地址 uPC 设置为 00H,以确保模型机处于初始状态。这样,我们可以从第一条微指令开始执行,并观察微地址的变化。
- 第一条指令 MOV A, #12H:
根据给定的程序段,第一条指令是将立即数 12H 存储到寄存器 A 中。根据转换得到的机器码(0111 1100),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取指令的微指令,微地址为 7CH。
- 第二条指令 MOV A, R1:
根据给定的程序段,第二条指令是将寄存器 R1 的值存储到寄存器 A 中。根据转换得到的机器码(0111 0001),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 71H。
- 第三条指令 MOV A, @R2:
根据给定的程序段,第三条指令是将寄存器 R2 指向的内存单元的值存储到寄存器 A 中。根据转换得到的机器码(0111 0110),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 76H。
- 第四条指令 MOV A, 10H:
根据给定的程序段,第四条指令是将立即数 10H 存储到寄存器 A 中。根据转换得到的机器码(0111 1000),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 78H。
- 第五条指令 IN A, SW:
根据给定的程序段,第五条指令是将开关 SW 的值输入到寄存器 A 中。根据转换得到的机器码(1100 0000),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 C0H。
- 第六条指令 OUT LED, A:
根据给定的程序段,第六条指令是将寄存器 A 的值输出到 LED 灯。根据转换得到的机器码(1100 0100),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 C4H。
通过按下 STEP 按键,我们可以观察到微地址在每个指令周期(一次按键操作)中的变化。微地址的变化对应着不同的微指令的执行,通过控制存储器中存储的微指令,模型机可以按照特定的顺序执行指令,并完成相应的操作。
2. 补全指令流程图中的微地址
3.2 微指令实验
实验过程分析:
- 第一条指令:MOV A, #12H
微地址 7CH:将立即数 12H 送入累加器 A
EMRD、PCOE、EMEN、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
从主存储器 EM 中读取数据 12H,将数据存入累加器 A
图1 第一条指令的微程序
- 第二条指令:MOV A, R1
微地址 70H:将寄存器 R1 的值送入累加器 A
EMRD、PCOE、EMEN、REN、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
从主存储器 EM 中读取寄存器 R1 的值,将值存入累加器 A
图2 第二条指令的微程序
- 第三条指令:MOV A, @R2
微地址 74H:将间址存储器 R2 的值送入累加器 A
EMRD、PCOE、EMEN、MA、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
从主存储器 EM 中读取间址存储器 R2 的值,将值存入累加器 A
图3 第三条指令的微程序
- 第四条指令:MOV A, 10H
微地址 78H:将立即数 10H 送入累加器 A
EMRD、PCOE、EMEN、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
从主存储器 EM 中读取数据 10H,将数据存入累加器 A
图4 第四条指令的微程序
- 第五条指令:IN A, SW
微地址 C0H:将开关 SW 的值输入到累加器 A
EMRD、PCOE、INEN、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
从主存储器 EM 中读取开关 SW 的值,将值存入累加器 A
图5 第五条指令的微程序
- 第六条指令:OUT LED, A
微地址 C4H:将累加器 A 的值输出到 LED
EMRD、PCOE、OUTEN、AEN 有效,其余控制位无效
将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1
将累加器 A 的值输出到 LED
图6 第六条指令的微程序
四、实验总结
本次实验旨在通过实践,掌握模型机的程序控制方式以及微程序控制器的基本结构和原理。实验一主要针对微地址的形成方式进行了实验,而实验二则重点在于微指令的执行和控制过程。通过对实验一和实验二的进行分析和实验操作,我们对模型机的程序控制有了更深入的了解。
实验一中,我们使用了给定的程序段,并将其转换为机器码写入主存储器 EM。通过将指令转换为机器码,我们能够更好地理解指令在计算机中的表示方式和存储方式。在实验过程中,我们首先设置微地址为00H,并通过按下STEP按键,观察uPC值的变化。实验结果表明,uPC值根据指令的执行逐步递增,说明微程序控制器按顺序执行微指令。通过这一实验,我们深入了解了微地址的形成方式以及微程序控制的基本原理。
实验二则更加注重微指令的执行和控制过程。我们根据实验中给定的微指令格式,以第一条指令为例,详细分析了微指令的控制位和对应的操作。通过对微指令的解析,我们了解到微指令中的每个控制位都对应着不同的控制信号,控制着计算机的各个部件的工作状态。实验过程中,我们根据微指令的地址,逐步执行微指令,并观察各个控制信号的状态变化。这样的实验设计使我们更加直观地了解了微指令的执行流程和控制机制。
通过本次实验,我们对模型机的程序控制方式有了更深入的了解。我们掌握了指令的机器码表示和存储方式,了解了微地址的形成方式以及微程序控制器的基本结构和原理。我们通过实验操作,观察了微指令的执行过程,并分析了不同控制位对计算机各部件的控制作用。这些实验帮助我们更好地理解了计算机的工作原理和程序执行的过程。
通过本次实验,我们还加深了对计算机体系结构的认识。我们理解了指令的执行过程是通过微程序控制器来实现的,微指令控制着计算机的各个部件的工作状态,从而完成指令的执行。我们意识到微程序控制器在计算机体系结构中的重要性,它为计算机提供了灵活的指令执行方式和可扩展的控制功能。
总而言之,我们在实践中深入了解了模型机的程序控制方式和微程序控制器的工作原理。我们通过对实验一和实验二的分析和操作,掌握了指令的机器码表示、微地址的形成方式以及微指令的执行和控制过程。这些实验对于我们加深对计算机体系结构的理解和掌握计算机的程序控制技术具有重要意义。通过实验,我们提高了对计算机工作原理的认识和理解,为今后的学习和研究打下了坚实的基础。