### 计算机系统结构-实验四 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算法的有效性和局限性。
- 粉丝: 123
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Pygame库实现新年烟花效果的Python代码
- 浪漫节日代码 - 爱心代码、圣诞树代码
- 睡眠健康与生活方式数据集,睡眠和生活习惯关联分析()
- 国际象棋检测10-YOLO(v5至v9)、COCO、CreateML、Paligemma数据集合集.rar
- 100个情侣头像,唯美手绘情侣头像
- 自动驾驶不同工况避障模型(perscan、simulink、carsim联仿),能够避开预设的(静态)障碍物
- 使用Python和Pygame实现圣诞节动画效果
- 数据分析-49-客户细分-K-Means聚类分析
- 车辆轨迹自适应预瞄跟踪控制和自适应p反馈联合控制,自适应预苗模型和基于模糊p控制均在simulink中搭建 个人觉得跟踪效果相比模糊pid效果好很多,轨迹跟踪过程,转角控制平滑自然,车速在36到72
- 企业可持续发展性数据集,ESG数据集,公司可持续发展性数据(可用于多种企业可持续性研究场景)