基本模型机的设计与实现
设计目的
1、 综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机.
2、 通过一台模型机的设计过程,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。
3、 掌握整机概念,并设计机器指令系统,编写相应的微程序,在所设计的模型计算机上调试运行。
实验设备
Dais-CMX16+ 计算机组成原理教学实验系统一台。
设计分析
实验原理
本实验将能在微程序控制下自动产生各部件单元的控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从EM主存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
机器指令格式
表1 指令格式
其中OP-CODE为操作码段,位于指令字节高三位(IR7~IR5);第四位IR4是保留位,指定为零;低四位为源与目的寄存器地址,它们的编码见表2;Addr定义操作数或操作地址。
表2 寄存器地址编码
微指令格式
按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换成十六进制格式文件,如表3所示。表3 微指令格式
表4 源编码与目的编码指令格式
指令程序设计
指令系统
本实验设计了八条机器指令:IN(输入)、ADD(二进制加法)、SUB(二进制减法)、STA(存数)、OUT(输出)、MOV(传送)、RR(循环右移)、JMP(无条件转移)。
表5 指令系统
其中IN为单字节(8位)指令,其余为三字节指令,XXXXXXXXXXXXXXXX为addr对应的二进制地址码,XXXXXXXX为立即数。
指令流程图
源程序
#LOAD "DEMO.IS" ;预调入指令系统/微程序#SET RAM 0260h = 1100h ;数据区0260H单元预置数据1100h#SET RAM 0120h = 2200hdata segment ;将程序装载到数据存储器assume ds:dataorg 0start: in r0, iol;将IO低位送至R0寄存器add r0, 0260h;将R0的内容与内存0260单元的内容相加,送回R0sub r0, 0120h;将R0的内容与内存0260单元的内容相减,送回R0sta 0261h, r0;将0261单元的内容载入到RAM中out ioh, 0261h;将内存0261单元的内容输出到IO高位mov sp,0260h;将内存0260单元的内容传送到SP寄存器rr r0;将R0寄存器的内容循环右移一位jmp 0000;将PC的内容置零,返回第一条机器指令data endsend start
微程序控制实现过程
所用的机器指令程序
表6 机器指令程序基本模型机微指令表
由于表格数据太多无法并列列举所以基本模型机微指令表将由表7-1、表7-2、表7-3三个表进行表示。表7-1 M23-M16指令集
表7-2 M15-M8指令集
表7-3 M7-M0指令集
调试过程
该基本模型机运行如下图2-0至图2-1所示。
图2-1初始化
INRO,IOL
图2-2IN指令
ADDR0,[addr]
图2-3ADD指令
SUBR0,[addr]
图2-4SUB指令
STA[addr],R0
图2-5STA指令
OUTIOH,[addr]
图2-6OUT指令
MOVSP,[addr]
图2-7MOV指令
RRR0
图2-8RR指令
JMP*
图2-9JMP指令
结果分析
该基本模型机运行的结果如表8所示。
表8 运行结果