计算机组成原理-附加实验二-设计微程序
一、实验要求
1.编写程序和微程序实现反复r0+1,并求和的功能
| 指令助记符 | 指令功能 |
A: | ADD R0,#01H | 相加 |
| JMP A | 跳转到A标号处 |
2.系统支持的基本指令格式有三种,本题选用格式一来定义指令系统
格式1
OP(4位) | Rs(2位) | Rd(2位) |
Addr/DATA/Disp/X (8位) |
注:
① ADD和JMP操作码分别为0101和1000.
② JMP寻址方式自定义。
系统CLR, PC=0.
3.模型机内部结构图
4.模型机24位微指令的格式
M23~M21 | M20~M18 | M17 ~ M15 | M14 | M13 | M12 | M11 | M10 | M9 | M8 | M7 | M6~M0 |
BTO(3) | OTB(3) | FUNC(3) | FS | S3 | S2 | S1 | S0 | M | Ci | 空 | MA6-MA0 |
5.微指令字段编码表
编码+译码 | BTO | OTB | FS=1 | FS=0 |
FUNC | FUNC | |||
000 |
|
| PC+1(t4) |
|
001 | B-DA1(t4) | ALU-B | J1 | M-W(t3) |
010 | B-DA2(t4) | 299-B | J2 | M-R(t2) |
011 | B-IR(t3) | SR-B | J3 | I/O-W(t3) |
100 | B-DR(t4) | DR-B | J4 | I/O-R (t2) |
101 | B-SP(t4) | SI-B | J5 | INT-R (t2) |
110 | B-AR(t3) | SP-B | CyCn | INT-E (t3) |
111 | B-PC | PC-B | CyNCn |
|
6.下址字段设计
微地址转移选择J1,加入跳转微指令中的7位下址是MA6 ~MA0,指令操作码是 I7I6I5I4,硬件求下条微指令地址的方法是:= MA6 MA5 MA4 I7I6I5I4.系统CLR,微地址=0。
二、实验微程序流程图
三、微指令和操作码
四:心得体会
实验总体是不难的,按步骤来:先画微程序流程图,根据流程图,对照表格,写好一条条微指令,有了微指令,然后再设计操作码。操作码一般来说最后才能写,因为操作码是按照微指令一步一步走的,微指令改动了,操作码不一定能够跑通。
实验中还碰到了一些有趣的事情。刚开始,lym同学跑yy-z02模型机的时候,没有设置兼容模式,指令一运行就崩溃,我们三还以为微指令设计有问题,不断的对照改动,最后恍然大悟,内心一万个***奔腾而过。
解决崩溃问题后,设计过程中发现下址和JUMP指令的微程序入口地址冲突了,微程序入口地址是由操作码决定的,我脑洞大开,把JUMP的操作码从1000改成1001,快被队友笑死了。老师的要求JUMP就是用1000操作码,我这样相当于考试做不出答案,反过来把题目改了,捂脸。最加简单的办法就是改下址,终于回归正途,完美解决。