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