内容发布更新时间 : 2025/1/31 13:04:24星期一 下面是文章的全部内容请认真阅读。
实验一 流水线中的相关
一.实验目的
1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解;
3. 进一步了解DLX基本流水线各段的功能以及基本操作;
4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;
5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二.实验平台 WinDLX模拟器
三.预备知识 1. WinDLX
WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线 是如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设 断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来, 以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的统计功能, 便于对流水线进行性能分析。
有关WinDLX的详细介绍,见WinDLX教程。 2. 熟悉WinDLX指令集和WinDLX源代码的编写 3. 复习和掌握教材中相应的内容 (1)DLX基本流水线
(2)流水线的结构相关与数据相关
结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求, 发生资源冲突时,将产生“结构相关”。
数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中 重叠执行时,就可能引起“数据相关”。
(3)定向技术的主要思想:在发生数据相关时,等待前面计算结果的指令并不一定真的 马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令 需要它的地方,就可以避免暂停。
四.实验内容及结果
1. 用 WinDLX 模拟器执行下列三个程序(任选一个): 求阶乘程序 fact.s
求最大公倍数程序 gcm.s 求素数程序 prim.s
分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况, 观察CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。
注意:fact.s 中调用了input.s 中的输入子程序。load 程序时,要两个程序一起装入 (都select 后再点击load)。gcm.s 也是如此。
说明:此实验我们选择:求阶乘程序fact.s
1)用WinDLX模拟器执行求阶乘程序fact.s 。
2)程序的作用:这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了input.s中的输入子程序,这个子程序用于读入正 整数。
3)实验结果:
i . 分别以步进、连续、设置断点的方式运行程序
图1. 求阶乘程序fact.s运行统计数据步进方式运行
图2 求阶乘程序fact.s运行统计数据连续方式运行
图3 求阶乘程序fact.s运行统计数据连续方式运行 ii. 数据统计
图1.1.4 求阶乘程序fact.s运行统计数据