### 计算机系统结构-实验四 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:Load2 - F6:Load1 - F8:0 - F10:0 - F12:Qi 0000 3. **再步进 10 个时钟周期后的情况**: - **指令状态**: - `L.D F6,24(R2)`:CP 1 → CP 2-3 → CP 4 - `L.D F2,45(R3)`:CP 2 → CP 3-4 → CP 5 - `MUL.D F0,F2,F4`:CP 3 → 剩余 7 CP - `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 - **保留站内容**: - 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:No - Load2:No - Load3:No - **寄存器状态表**: - F0:0 - F2:0 - F4:0 - F6:Mult1 - F8:Add2 - F10:0 - F12:Qi 0000 #### 总结 通过以上实验步骤,我们可以看到Tomasulo算法如何有效地管理指令流,并在不同阶段处理各种指令。保留站和寄存器状态表的更新反映了算法在每个时钟周期内的行为变化。这种动态调度机制允许指令在资源可用时尽早执行,从而提高并行性和整体性能。通过模拟不同指令序列的执行,可以进一步理解和评估Tomasulo算法的有效性和局限性。
- 粉丝: 122
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助