计算机组成原理实验报告
T1 11 CBFE91 ALU直通 寄存器A标志位C,Z 加运算
12 FFFFFF 指令寄存器IR PC输出 A输出
13 FFFFFF A输出
输出 T1 14 CBDF9F ALU直通 用户 OUT A输出
15 FFFFFF 存贮器值EM 寄存器W MAR输出 A输出
16 FFFFFF ALU直通 寄存器A 标志位C,Z 加运算
5.在4的基础上改动mic中的“A-W”和“输出”的指令,把取指指令改为“FFFFFF”,保存文件。
5.打开CP226,打开调入指令系统,把原来4改过的指令集调入到CP226中,打开asm文件,打开实验箱,编译、全速运行,观察实验箱中OUT现象。
6.打开调入指令系统,调入5中改过的程序,编译、全速运行。观察实验箱中OUT中的现象。
2.改造实验十二中自己编制的指令集,使其中至少一条指令成流水方式。
3.在自己编制的两个令集中运行同一个程序,观测运行情况和效率。程序来源自定。
四、实验步骤
1.在CP226环境中,通过“文件”下拉菜单的“调入指令系统/微程序”操作,把“c:\ program files\CP226计算机组成原理\data\”目录下的insfile2.MIC调入系统,在指令系统窗口逐条观察指令的各微指令码,与指导书103到110页的对应指令的微指令码比较,分析二者的异同。
T2 1D CBFFFF 指令寄存器IR PC输出 A输出
1E FFFFFF A输出
1F FFFFFF A输出
mac:
_FATCH_ 000000xx 00-03 1
000001xx 04-04 1
000010xx 08-0B 1
000011xx 0C-0F 1
A-W A,#* 000100xx 10-13 II 2
mac:
_FATCH_ 000000xx 00-03 1
000001xx 04-04 1
000010xx 08-0B 1
000011xx 0C-0F 1
A-W A,#* 000100xx 10-13 II 2
输出 000101xx 14-17 1
跳到* 000110xx 18-1B MM 2
输入 A,#* 000100xx 1C-1F II 2
17 FFFFFF 指令寄存器IR PC输出 A输出
跳到* T1 18 C6FFFF 存贮器值EM 寄存器PC PC输出 A输出
T0 19 CBFFFF 指令寄存器IR PC输出 A输出
1A FFFFFF A输出
1B FFFFFF A输出
输入 A,#* T1 1C C7FFF7 存贮器值EM 寄存器A PC输出 A输出
asm文件:
L1:
输入 A,#55h
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
输入 A,#22h
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
输入 A,#55h
A-W A,#22h
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
跳到L1
END
4中修改的指令集:
mic:
_FATCH_ T0 00 CBFFFF 指令寄存器IR A输出
0D FFFFFF A输出
0E FFFFFF A输出
0F FFFFFF A输出
A-W A,#* T2 10 C7FFEF 存贮器值EM 寄存器W PC输出 A输出
T1 11 FFFE91 ALU直通 寄存器A标志位C,Z 加运算
T0 12 CBFFFF 指令寄存器IR PC输出 A输出
13 FFFFFF A输出
01 FFFFFF A输出
02 FFFFFF A输出
03 FFFFFF A输出
04 FFFFFF A输出
05 FFFFFF A输出
06 FFFFFF A输出
07 FFFFFF A输出
08 FFFFFF A输出
09 FFFFFF A输出
0A FFFFFF A输出
0B FFFFFF A输出
0C FFFFFF A输出
六、实验结论
流水系统可以缩短指令执行的时间,实验现象与实验预期一致。
七、建议
八、体会
这次实验时在实验十二编写自己的汇编指令集的基础上来做的,只不过把实验十二中指令集mic文件中的“A-W”和“输入”取值指令“CBFFFF”改为“FFFFFF”,然后把指令集中所有与“延迟”有关的指令都删去,把asm文件延迟去练换为7-8个“输出”指令。
九、思考题
无
06 FFFFFF A输出
07 FFFFFF A输出
08 FFFFFF A输出
09 FFFFFF A输出
0A FFFFFF A输出
0B FFFFFF A输出
0C FFFFFF A输出
0D FFFFFF A输出
0E FFFFFF A输出
0F FFFFFF A输出
A-W A,#* T2 10 C7FFEF 存贮器值EM 寄存器W PC输出 A输出
dat:
A-W A,#* 10 2
输出 14 1
跳到* 18 2
输入 A,#* 1C 2
5中修改的指令集(流水系统):
mic:
_FATCH_ T0 00 CBFFFF 指令寄存器IR A输出
01 FFFFFF A输出
02 FFFFFF A输出
03 FFFFFF A输出
04 FFFFFF A输出
05 FFFFFF A输出
输出 T1 14 FFDF9F ALU直通 用户 OUT A输出
T0 15 CBFFFF 存贮器值EM 寄存器W MAR输出 A输出
16 FFFFFF ALU直通 寄存器A 标志位C,Z 加运算
17 FFFFFF 指令寄存器IR PC输出 A输出
跳到* T1 18 C6FFFF 存贮器值EM 寄存器PC PC输出 A输出
T0 19 CBFFFF 指令寄存器IR PC输出 A输出
1A FFFFFF A输出
1B FFFFFF A输出
输入 A,#* T1 1C C7FFF7 存贮器值EM 寄存器A PC输出 A输出
T2 1D CBFFFF 指令寄存器IR PC输出 A输出
1E FFFFFF A输出
1F FFFFFF A输出
通过实验,深刻体会到了流水系统指令可以加快缩短指令执行的时间,有助于指令执行的速度提升。和试验十二一样,我们也可以编写自己的指令集,使指令编写更加的快捷。
这个学期的实验结束了,通过这么多的实验,从内存系统、程序转移、中断的调用、到汇编指令系统和指令流水系统,我学到了很多,更加了解了指令在计算机内部的执行、存储情况,也是对计算机组成原理的一种更深入、切身的理解。相信以后会有更大的提高。
2.仿照insfile1.MIC和insfile2.MIC的异同改造自己编制的指令集。并在两个指令系统中运行同一个程序。
3.在实验十二中我们已经编制了自己的指令集,稍加修改即可
4.把实验十二中的asm文件中的“延迟”去掉,在其后加上7-8个“输出”;把dat、mic、mac中的“延迟”相关的东西都去掉,保存程序。
2.指令流水执行
指令流水模式,每条指令都应该分成几个独立的子操作,当前趋指令的后几个子操作与后继指令的前几个子操作不使用同样的硬件时,系统就可设计成流水线方式。同一时间有多条指令各自在不同的硬件中执行,而对同一条指令而言,不同时间顺序在不同的硬件中执行
3.实验箱系统的指令流水硬件基础
“取指令”的微操作,其微指令码微CBFFFF,与大多数的微操作无关。在厂家给的默认指令系统中这个操作编在了每条指令的最后一个状态,即每条指令的操作完成后就取进下一条指令。这是典型的“取指、执行、取指……”模式。即一条指令先被“取指”,再执行其他微操作,完成后再取下一条指令。如果一条指令的最后一个微操作与取指无关,就可以把二者合并成一个微指令,于是这个指令的最后一个微操作与取下一条指令并行进行。对下一条指令而言,其“取指”与“其他操作”在不同硬件中顺序执行——指令二级流水。
计算机组成原理实验报告
上海大学计算机学院
《计算机组成原理实验》报告十三
实验名称:建立指令流水系统
一、实验目的
1.了解指令流水系统的设计方式。
2.编制一条可以流水方式运行的指令。
二、实验原理
1.硬部件的并行工作。
A+W、把“和”右移一位、把值送OUT。这三个子操作为什么可以同时进行呢?因为这三个子操作使用的硬件(包括总线)互不相同,于是可以同时工作。这一特点表现在微指令编码上,就是这三个子操作的微指令码中为低电平(有效)的都不相同,于是可以将这三个子操作的微指令码合并成一个微指令
4.实验箱系统实现指令流水的技巧
一条指令的最后一个微操作与取指无关,就可以把二者合并成一个微指令。若取指令操作(CBFFFF)与它前面的微操作码没有相同的位为0,则这两个微操作码的“与”就是二者合并后的微指令。在程序中这条指令就会和它的后继指令形成二级流水模式。
三、实验内容
1.分析流水指令集insfile2.MIC。
输出 000101xx 14-17 1
跳到* 000110xx 18-1B MM 2
输入 A,#* 000100xx 1C-1F II 2
dat:
A-W A,#* 10 2
输出 14 1
跳到* 18 2
输入 A,#* 1C 2
五、实验现象
调用4中修改的指令集后,OUT依次交替显示55、22、33,调用5中修改的流水程序后,交替显示55、22、33的速度加快。