一、实验目的
(1)加深对指令级并行性及开发的理解。
(2)加深对Tomasulo算法和基于硬件的前瞻执行算法的理解。
(3)掌握Tomasulo算法在指令流出、执行、写结果各阶段的操作以及ROB在流出、执行、写结果和确认4个阶段所进行的操作。
(4)掌握采用了Tomasulo算法的浮点处理部件的结构。
(5)掌握保留站的结构和ROB缓冲器的结构。
(6)给定被执行代码片段,对于具体某个时钟周期,能够写出保留站、指令状态表以及浮点寄存器状态表内容的变化情况。
(7)给定被执行代码片段,对于具体某个时钟周期,能写出保留站、ROB以及浮点寄存器状态表内容的变化情况。
二、实验环境
实验平台采用Tomasulo算法模拟器和再定序缓冲ROB模拟器。
- 实验内容和步骤
- Tomasulo算法
首先要掌握Tomasulo模拟器的使用方法。
(1)假设浮点功能部件的延迟时间为加减法2个时钟周期,乘法2个时钟周期,除法2个时钟周期,Load部件2个时钟周期。
①对于下面的代码段,给出当指令MUL.D写结果时,保留站、load缓冲器以及寄存器状态表中的内容。
L.D F6,24(R2)
L.D F2,12(R3)
MUL.D F0,F2,F4
SUB.D F8,F6,F2
DIV.D F10,F0,F6
ADD.D F6,F8,F2
②按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每一个时钟周期前后各信息表中内容的变化情况。
(2)对与上面相同的延迟时间和代码段。
①给出在第3个时钟周期时,保留站、load缓冲器以及寄存器状态表中的内容。
![]() | |
②步进5个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。
③再步进到10个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。
(3)假设浮点功能部件的延迟时间为加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。自己编写一段程序(要在实验报告中给出),重复上述步骤(2)的工作。
L.D F8,26(R3)
L.D F4,10(R4)
MUL.D F2,F4,F6
SUB.D F8,F6,F2
DIV.D F12,F2,F8
ADD.D F8,F10,F4
①第3个时钟周期
②步进5个时钟周期
步进到10个时钟周期
- 基于硬件的前瞻执行算法
首先要掌握ROB模拟器的使用方法。
(1)假设浮点功能部件的延迟时间为加法2个时钟周期,乘法10个时钟周期,除法40个时钟周期,Load部件2个时钟周期。
①对于下面的代码段,给出当指令MUL.D即将确认时保留站、ROB以及浮点寄存器状态表的内容。
②按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每一个时钟周期前后保留站、ROB以及浮点寄存器状态表的内容的变化情况。
- 对于与上面相同的延迟时间和代码段:
①给出在第5个时钟周期时,保留站的内容。
②步进5个时钟周期,ROB的内容有哪些变化?
![]() | |
③再步进5个时钟周期,给出这时保留站、ROB以及浮点寄存器状态表的内容。
(3)假设浮点功能部件的延迟时间为加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。自己编写一段程序(要在实验报告中给出),重复上述步骤(2)的工作。
L.D F8,24(R2)
L.D F2,13(R3)
MUL.D F4,F8,F12
SUB.D F8,F6,F2
DIV.D F10,F4,F6
ADD.D F6,F12,F4
①步进5个时钟周期
②步进5个时钟周期
③步进5个时钟周期