实验五 再定序缓冲ROB工作原理
实验名称: 再定序缓冲(ROB)工作原理、实验性质: 验证性 、 成绩:
实验学时数: 2 、 姓名: 、学号:
一、实验目的 1、加深对指令集并行性及其开发的理解。 2、加深对基于硬件的前瞻执行的理解。 3、掌握ROB在流出、执行、写结果、确认4个阶段所进行的操作。 4、掌握ROB缓冲器的结构。 5、给定被执行代码片段,对于具体某个时钟周期,能写出保留站、ROB以及浮点寄存器状态表内容的变化情况。 |
二、实验平台 实验平台采用再定序缓冲ROB模拟器。 |
三、实验内容和步骤 首先要掌握ROB模拟器的使用方法。
- 假设浮点功能部件的延迟时间为加法2个时钟周期,乘法10个时钟周期,除法40个时钟周期,Load部件2个时钟周期。
- 对于下面的代码段,给出当指令MUL.D即将确认时保留站、ROB以及浮点寄存器状态表的内容。
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 保留站
Time | 名称 | Busy | Op | Vj | Vk | Qj | Qk | 目的地 | | Add1 | No | | | | | | | | Add2 | No | | | | | | | | Add3 | No | | | | | | | | Mult1 | No | | | | | | |
再定序缓冲器ROB
标记 | 项号 | Busy | 指令 | 目的地 | 值 | | #1 | No | | | | | #2 | No | | | | HEAD | #3 | Yes | MUL.D3 | F0 | D3 | | #4 | Yes | SUB.D4 | F8 | D4 | | #5 | Yes | DIV.D5 | F10 | | | #6 | Yes | ADD..D6 | F6 | D6 | TAIL | #7 | | | | | | #8 | | | | | | #9 | | | | | | #10 | | | | |
寄存器
字段 | F0 | F2 | F4 | F6 | F8 | F10 | F12 | F14 | F16 | F18 | F20 | F22 | F24 | F26 | F28 | F30 | ROB项号 | #3 | 0 | | #6 | #4 | #5 | | | | | | | | | | | Busy | | | | | | | | | | | | | | | | | 值 | | D2 | | D1 | | | | | | | | | | | | |
- 按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每一个时钟周期前后保留站、ROB以及浮点寄存器状态表的内容的变化情况。
- 对于与上面相同的延迟时间和代码段:
Time | 名称 | Busy | Op | Vj | Vk | Qj | Qk | 目的地 | 2 | Add1 | Yes | SUB.D | D1 | D2 | 0 | 0 | #4 | | Add2 | No | | | | | | | | Add3 | No | | | | | | | 10 | Mult1 | Yes | MUL.D | D2 | R[F4] | 0 | 0 | #3 |
再定序缓冲器(ROB)
标记 | 项号 | Busy | 指令 | 目的地 | 值 | | #1 | No | | | | | #2 | Yes | L.D2 | F2 | D2 | HEAD | #3 | Yes | MUL.D3 | F0 | | | #4 | Yes | SUB.D4 | F8 | | | #5 | Yes | DIV.D5 | F10 | | | #6 | No | | | | TAIL | #7 | | | | | | #8 | | | | | | #9 | | | | |
- 再步进5个时钟周期,给出这时保留站、ROB以及浮点寄存器状态表的内容。
保留站:
Time | 名称 | Busy | Op | Vj | Vk | Qj | Qk | 目的地 | | Add1 | No | | | | | | | | Add2 | Yes | ADD.D | D4 | D2 | 0 | 0 | #6 | | Add3 | No | | | | | | | | Mult1 | Yes | MUL.D | D2 | R[F4] | 0 | 0 | #3 |
ROB:
标记 | 项号 | Busy | 指令 | 目的地 | 值 | | #1 | No | | | | | #2 | No | | | | HEAD | #3 | Yes | MUL.D3 | F0 | | | #4 | Yes | SUB.D4 | F8 | D4 | | #5 | Yes | DIV.D5 | F10 | | | #6 | Yes | ADD.D6 | F6 | | TAIL | #7 | | | | | | #8 | | | | | | #9 | | | | | | #10 | | | | |
寄存器:
字段 | F0 | F2 | F4 | F6 | F8 | F10 | F12 | F14 | F16 | F18 | F20 | F22 | F24 | F26 | F28 | F30 | ROB项号 | #3 | 0 | | #6 | #4 | #5 | | | | | | | | | | | Busy | | | | | | | | | | | | | | | | | 值 | | D2 | | D1 | | | | | | | | | | | | |
- 假设浮点功能部件的延迟时间为加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。自己编写一段程序(要在实验报告中给出),重复上述步骤2的工作。
程序: 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 给出在第5个时钟周期时,保留站的内容 保留站:
Time | 名称 | Busy | Op | Vj | Vk | Qj | Qk | 目的地 | 3 | Add1 | Yes | SUB.D | D1 | D2 | 0 | 0 | #4 | | Add2 | No | | | | | | | | Add3 | No | | | | | | | 8 | Mult1 | Yes | MUL.D | D2 | R[F4] | 0 | 0 | #3 |
步进5个时钟周期,ROB的内容有哪些变化?
标记 | 项号 | Busy | 指令 | 目的地 | 值 | | #1 | No | | | | | #2 | Yes | L.D2 | F2 | D2 | HEAD | #3 | Yes | MUL.D3 | F0 | | | #4 | Yes | SUB.D4 | F8 | | | #5 | Yes | DIV.D5 | F10 | | | #6 | No | | | | TAIL | #7 | | | | | | #8 | | | | | | #9 | | | | |
再步进5个时钟周期,给出这时保留站、ROB以及浮点寄存器状态表的内容。 保留站:
Time | 名称 | Busy | Op | Vj | Vk | Qj | Qk | 目的地 | | Add1 | No | | | | | | | | Add2 | Yes | ADD.D | D4 | D2 | 0 | 0 | #6 | | Add3 | No | | | | | | | | Mult1 | Yes | MUL.D | D2 | R[F4] | 0 | 0 | #3 |
ROB:
标记 | 项号 | Busy | 指令 | 目的地 | 值 | | #1 | No | | | | | #2 | No | | | | | #3 | Yes | MUL.D3 | F0 | | | #4 | Yes | SUB.D4 | F8 | D4 | HEAD | #5 | Yes | DIV.D5 | F10 | | | #6 | Yes | ADD.D6 | F6 | | TAIL | #7 | | | | | | #8 | | | | | | #9 | | | | | | #10 | | | | |
寄存器:
字段 | F0 | F2 | F4 | F6 | F8 | F10 | F12 | F14 | F16 | F18 | F20 | F22 | F24 | F26 | F28 | F30 | ROB项号 | #3 | 0 | | #6 | #4 | #5 | | | | | | | | | | | Busy | | | | | | | | | | | | | | | | | 值 | | D2 | | D1 | | | | | | | | | | | | | |
四 、实验总结 |