实验6 再定序缓冲(ROB)原理
6.1实验目的
(1)加深对指令级并行性及其开发的理解。
(2)加深对基于硬件的前瞻执行的理解。
(3)掌握 ROB 在流出、执行、写结果确认4 个阶段所进行的操作
(4)掌握 ROB缓冲器的结构。
(5)给定被执行代码片段,对于具体某个时钟周期,能写出保留站ROB 以及浮点寄存器状态表内容的变化情况。
6.2实验平台
实验平台采用再定序缓冲ROB模拟器。
6.3实验内容及实验截图
首先要掌握 ROB模拟器的使用方法(见 6.4节)
(1)假设浮点功能部件的延迟时间为加法2个时钟周期,乘法 10个时钟周期,除法40个时钟周期,Load 部件 2 个时钟周期。
①对于下面的代码段,给出当指令MUL.D 即将确认时保站、ROB 以及浮点寄
器状态表的内容。
L.D F6,24(R2)
L.D F2,12(R3)
MUL.D FO,F2,F4
SUB.D F8,F6,F2
DIV.D F10,F0,F6
ADD.D F6,F8,F2
②按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每
一个时钟周期前后保留站、ROB 以及浮点寄存器状态表的内容的变化情况。
(2)对于与上面相同的延迟时间和代码段:
①给出在第 5个时钟周期时,保留站的内容
②步进5个时钟周期,ROB 的内容有哪些变化?
其保留站中红色部分为变化的内容
③再步进5个时钟周期,给出这时保留站ROB 以及浮点寄存器状态表的内容
(3)假设浮点功能部件的延迟时间为加减法 3 个时钟周期,乘法 8 个时钟周期,除法40个时钟周期。自己编写一段程序(要在实验报告中给出),重复上述步骤 2的工作。
第 1个时钟周期:
L.D F6, 24(R2):将从内存地址 R2+24 处加载双精度浮点数到 F6。
L.D F2, 12(R3):将从内存地址 R3+12 处加载双精度浮点数到 F2。
第 2个时钟周期:
MUL.D F0, F2, F4:乘法操作 F2 * F4,将结果存入 F0。
第 3个时钟周期:
SUB.D F8, F6, F2:减法操作 F6 - F2,将结果存入 F8。
第 4个时钟周期:
DIV.D F10, F0, F6:除法操作 F0 / F6,将结果存入 F10。
第 5个时钟周期:
ADD.D F6, F8, F2:加法操作 F8 + F2,将结果存入 F6。
程序如下:
L.D F6, 24(R2) ; 第 1 个时钟周期,F6 被加载到保留站
L.D F2, 12(R3) ; 第 1 个时钟周期,F2 被加载到保留站
NOP ; 第 2 个时钟周期,等待乘法完成
MUL.D FO,F2,F4 ; 第 3 个时钟周期,开始执行乘法
NOP ; 第 4 个时钟周期,等待减法和除法完成
SUB.D F8,F6,F2 ; 第 5 个时钟周期,开始执行减法
DIV.D F10,F0,F6; 第 5 个时钟周期,开始执行除法
ADD.D F6,F8,F2 ; 第 6 个时钟周期,开始执行加法
NOP ; 第 7 个时钟周期,等待加法完成