一、目的和要求
深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
要进行这项大型实验,必须清楚地懂得:
-
TEC-2机的功能部件及其连接关系
-
TEC-2机每个功能部件的功能与具体组成
-
TEC-2机支持的指令格式
-
TEC-2机的微指令格式,AM2910芯片的用法
-
已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接
-
要实现的新指令的格式与功能。
二、实验环境
TEC-2模拟机
三、具体内容
选定指令格式、操作码,设计如下指令:
(1)加法指令。
指令格式:D5DRSR,DISP 双字指令(控存入口100H)
功能: [DR]=[DR] +[[SR]+DISP]
微程序设计与实现
执行顺序 | 微指令 | 说明 |
---|---|---|
1 | PC->AR | 将DISP的地址放入AR,为偏移量读出做准备 |
2 | MEM->Q | 将DISP从内存读出放入Q寄存器 |
3 | SR->AR | 将SR寄存器的值放入AR,为SR读出做准备 |
4 | MEM+Q->AR | 将SR从内存读出并加上DISP后放入AR寄存器,为[[SR]+DIP]的读出做准备 |
5 | MEM->Q | 将[[SR]+DIP]读出放入Q寄存器 |
6 | DR->AR | 将DR放入AR,为DR读出做准备 |
7 | MEM+Q->Q | 将DR从AR中读出,让后放入Q寄存器 |
8 | Q->MEM,CC#=0 | 将Q寄存器的值放入DR中(上次放入AR的值是DR指向的地址)。 |
1.PC->AR
0000 0E00 9030 5002
微码介绍:
2.MEM->Q
0000 0E00 00F0 0000
微码介绍:
3.SR->AR
0000 0E00 9040 0082
微码介绍:
4.MEM+Q->AR
0000 0E01 10E0 0002
微码介绍:
5.MEM->Q
0000 0E00 00F0 0000
微码介绍:
6.DR->AR
0000 0E00 90B0 008A
微码介绍:
7.MEM+Q->Q
0000 0E01 00E0 0000
微码介绍:
8.Q->MEM,c#=0
0029 0300 1020 0010
微码介绍:
指令测试
如下图所示,[1800H]
单元存储了100
,[1700H]
单元存储了1800
,[1805H]
单元存储了10
,在使用该指令后,[1800H]
单元加上了[1805H]
单元的10
后存放在[1800]
单元中得到正确结果:110
.
(2)传送指令。
指令格式:D8××,ADDR1,ADDR2 三字指令(控存入口110H)
功能: [ADDR1]←[ADDR2]
微程序设计与实现
执行顺序 | 微指令 | 说明 |
---|---|---|
1 | PC+1->AR | 将ADDR2的指针地址放入AR,为ADDR2地址读出做准备 |
2 | MEM->AR | 将ADDR2的地址从地址中读出放入AR,为ADDR2读出做准备 |
3 | MEM->Q | 将ADDR1的值读出放入Q寄存器中 |
4 | PC->AR,PC+1->PC | 将ADDR1的内存地址送入AR,为ADDR1地址读出做准备 |
5 | MEM->AR | 将ADDR1的值读出放入AR,为ADDR1读出做准备 |
6 | Q->MEM,CC#=0 | 将Q寄存器的值放入,AR指向的内存单元(此时AR指向的内存单元是[ADDR1]) |
1.PC+1->AR
0000 0E00 9035 5402
微码介绍:
2.MEM->AR
0000 0E00 10F0 0002
微码介绍:
3.MEM->Q
0000 0E00 00F0 0000
微码介绍:
4.PC->AR,PC+1->PC
0000 0E00 A0B5 5402
微码介绍:
5.MEM->AR
0000 0E00 10F0 0002
微码介绍:
6.Q->MEM,c#=0
0029 0300 1020 0010
微码介绍:
指令测试
如下图所示[1800H]
单元存储了1
,[1805H]
单元存储了2
,使用该微程序后[1800]H
单元存储了[1805H]
单元的2
结果正确。
(3)转移指令。
注意:本题结果有误,但是用E501,0004可以得正确结果但不符合题目要求。期末复习任务重,具体正确做法请读者自行探究。
判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址((IP)+DISP),否则顺序执行。
指令格式:E1 DR SR,DISP 双字指令(控存入口130H, DISP为相对转移地址偏移量)
功能: if DR=SR goto (IP)+DISP else 顺序执行。
微程序设计与实现
执行顺序 | 微指令 | 说明 |
---|---|---|
1 | DR-SR,CC#=CND | 测试DR与SR是否相等,如果Z=1(/Z=0)则程序跳转到A4H |
2 | PC->AR,PC+1->PC | 为读取转移地址做准备 |
3 | IP+MEM->PC,CC#=0 | 读取偏移量并且加上当前地址,然后跳至指定地址 |
1.DR-SR,#CC=CND
0029 0371 9190 0088
微码说明:
2.PC->AR,PC+1->PC
0000 0E00 A0B5 5402
微码说明:
3.IP+MEM->PC,CC#=0
0029 0300 30D6 5000
微码说明:
指令测试
如图所示在R0,R1中分别存放1,1 使用该指令后不执行`MOV R2,0指令R2的值仍为1.
四.实验心得
略
五.附加材料
下面是对Tec-2机的一些总结
字长
TEC-2机字长为10位。
指令
TEC-2机指令字长位16位,其中有6位(IR_{15-10})操作码,之后两位IR_{9-8}是条件码。最多支持2^{6}=64条指令,其中有53条已经实现。
IR:指令寄存器,用于存储当前正在执行的指令
主存
主存支持64K字,4K\times 8的ROM存放监控程序,2K \times 8的RAM存放用户数据和数据。
运算器
运算器由四片AM2901级联而成,可以实现8种运算功能,16哥双端口(A,B)读出、单端口(B)写入的通用寄存器,其中R_{4-6} 分别为SP,PC,IP寄存器,其余寄存器可用于用户编程。
-
IP 寄存器
保存当前正在运行的指令的地址,用于转移变址的目的
-
I_{8-6}
进行寄存器结果和Y输出选择
-
I_{5-3}
进行运算功能选择
-
I_{2-0}
进行数据来源选择
控制器
控制器由一篇AM2910,7片6116(RAM,2K \times 8)(微控)、16位的指令寄存器IR和2片2716(存储用于实现53条机器指令的微程序,加电后读取送入微控存)等组成。
-
PC寄存器
程序计数器PC用运算器的R5寄存器表示,保存下一条指令的地址
-
IP寄存器
指令地址寄存器IP由运算器的R6寄存器表示,保存当前执行的指令
-
微控
已实现的53条指令的微程序存放在2片单独的8位 中,加电的过程自动调入控存(装入微 码)。
-
AR
地址总线的输入信号仅有一组,即地址寄存器( AR),而AR只能接收来自运算器的结果输出信号。
常用微指令
-
19H
取指令, 增量。
该条微指令公用于所有指令。
-
1AH
1AH
按新取来的指令的操作码找到该条指令本身的微程序段的入口地址。19H
之后一定是1AH
。 -
A4H
A4H 根据有无中断请求,决定是进入中断处理过程,还是顺序执行。
任何一条机器指令执行完都要去A4H检测中断
程序调试
以第一个微程序为例
前期准备
-
S_{2}S_{1}S_{0}
设为100
-
FS_{1}FS_{2}FS_{3}FS_{4}
设为1010
-
STEP/CONT
设为
CONT
输入并查看微码
-
E900
将微码输入到
900H
开始的内存单元中 -
D900
查看
900H
开始的内存单元的数据
将微码加载到微控
-
A800
输入加载微码的程序
-
G800
运行上边的代码,把微码装入微控存
100H
开始的单元中
测试指令
-
A820
输入测试指令的程序到
820H
开始的内存单元中 -
E830
把新指令写到
830H
开始的内存单元中 -
U820
反汇编,查看输入的测试指令的程序
-
G820
运行从
820H
开始的程序
观察运算结果
DA00