本实验通过实现Tomasulo算法,探索现代处理器中动态调度和资源共享的技术。学生将掌握并行计算中的关键概念与应用。
### 计算机系统结构-实验四 Tomasulo算法
#### 实验目的
通过本次实验,学生将能够:
1. **深化理解**:加强对指令集并行性和如何开发这些并行性的理解。
2. **深入研究Tomasulo算法**:更好地理解Tomasulo算法的核心原理及其在现代处理器设计中的应用。
3. **掌握处理机制**:了解Tomasulo算法在不同阶段(如指令流出、执行、写结果等)是如何处理浮点操作指令、load和store指令的。
4. **理解硬件架构**:熟悉采用Tomasulo算法的浮点处理部件的具体结构。
5. **学习保留站结构**:掌握保留站的结构和工作原理。
6. **实践能力培养**:能够在给定特定代码片段的情况下,分析并记录出每个时钟周期内保留站、指令状态表以及浮点寄存器状态表内容的变化情况。
#### 实验平台
- **MIPSsim**:一种用于指令级和流水线操作级模拟的工具,适用于本实验中的模拟和分析需求。
#### 实验内容和步骤
##### 第一部分:代码段分析
考虑以下代码段:
```asm
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 个周期,乘法 10 个时钟周期,除法 40 个时钟周期,load 部件 2 个时钟周期。
1. **指令 MUL.D 写结果时的状态分析**:
- **指令状态**:
- `L.D F6,24(R2)`:CP 1 → CP 2-3 → CP 4
- `L.D F2,45(R3)`:CP 2 → CP 3-4 → CP5
- `MUL.D F0,F2,F4`:CP 3 → CP 6-15 → CP 16
- `SUB.D F8,F2,F6`:CP 4 → CP 6-7 → CP 8
- `DIV.D F10,F0,F6`:CP 5
- `ADD.D F6,F8,F2`:CP 6 → CP 9-10 → CP 11
- **保留站内容**:
- Add1:No
- Add2:No
- Add3:No
- Mult1:No
- Mult2:Yes (DIV.D D3 D10 0)
- Load1:No
- Load2:No
- Load3:No
- **Load缓冲器内容**:
- Load1:No
- Load2:No
- Load3:No
- **寄存器状态表**:
- F0:0
- F2:0
- F4:0
- F6:Mult2 (值 D3)
- F8:0
- F10:0
- F12:Qi 0000
2. **步进5个时钟周期后的情况**:
- **指令状态**:
- `L.D F6,24(R2)`:CP 1 → 执行完成
- `L.D F2,45(R3)`:CP 2 → 剩余 1 CP
- `MUL.D F0,F2,F4`:CP 3
- `SUB.D F8,F2,F6`:CP 4 → 剩余 2 CP
- `DIV.D F10,F0,F6`:CP 5
- `ADD.D F6,F8,F2`:CP 6
- **保留站内容**:
- Add1:No
- Add2:Yes (ADD.D D4 D2 0)
- Add3:No
- Mult1:Yes (MUL.D D2 R[F4] 0)
- Mult2:Yes (DIV.D D1 Mult1 0)
- **Load缓冲器内容**:
- Load1:Yes (L.D R[R2]+24)
- Load2:Yes (L.D R[R3]+12)
- Load3:No
- **寄存器状态表**:
- F0:0
- F2:Mult1
- F4:Load