Tomasulo算法在循环中的性能分析:时钟周期与指令调度
需积分: 0 152 浏览量
更新于2024-08-05
收藏 143KB PDF 举报
在这个关于Tomasulo算法的练习中,学生需要分析PB17000297罗晏宸在2020年4月的Homework4,具体是Exercise3.15。该任务涉及一个非流水化MIPS微处理器架构,采用Tomasulo算法的单发射变体来执行一个循环,用于处理连续的乘法和加法操作。循环的目标是计算数组a与数组X和Y的元素相乘并累加的结果。
循环的核心功能单元包括一个整数加法器(DADDIU),浮点乘法器(MUL.D),浮点加法器(ADD.D),以及数据加载和存储单元。由于存在共享数据总线(CDB)且没有流水线化,指令执行流程如下:
1. **功能单元类型和配置**:
- EX:执行单元,负责有效地址计算和存储器访问。
- IF/ID/IS/EX/WB:流水线阶段,IF(指令解析)、ID(指令解码)、IS(指令发射)、EX(执行)、WB(写回)。
- 没有转发,数据通过CDB传递。
- 保留站数限制了流水线容量。
- 流水线延迟考虑:载入指令需1周期,发射和写回各需1周期。
2. **循环结构**:
- 循环体内的指令依次执行,每轮迭代执行8个步骤。
- 需要注意的是,循环从第二个指令开始,因为第一条指令(DADDIU R4, R1, #800)被忽略了。
3. **指令执行分析**:
- 指令执行顺序和时钟周期如下:
- 第二条指令(L.D F2, 0(R1)):载入X(i),停顿周期=1,进入EX周期1。
- 第三条指令(MUL.D F4, F2, F0):乘法运算,停顿周期=2,进入EX周期2。
- 第四条指令(L.D F6, 0($2)):载入Y(i),停顿周期=3,进入EX周期3。
- 第五条指令(ADD.D F6, F4, F6):加法运算,停顿周期=4,进入EX周期4。
- 第六条指令(S.D 0(R2), F6):存储Y(i),停顿周期=5,进入EX周期5。
- 第七条指令(DADDIU R1, R1, #8):增加X索引,停顿周期=6,进入EX周期6。
- 第八条指令(DADDIU R2, R2, #8):增加Y索引,停顿周期=7,进入EX周期7。
- 第九条指令(SGTIU R3, R1, R4):条件测试,停顿周期=8,进入EX周期8。
- 第十条指令(BEQZ R3, foo):循环条件判断,停顿周期取决于测试结果。
4. **时钟周期计算**:
- 第1次迭代:由于从第二条指令开始,实际执行时间为9个时钟周期(1-8,不包括发射阶段)。
- 后续两次迭代:每次循环增加一个乘法和两个加法指令的停顿时间,所以第二次迭代需要12个周期,第三次迭代需要15个周期。
5. **表格表示**:
- 创建一个表格,包括迭代次数、指令名称、发射周期、执行周期、存储器访问周期、写入CDB周期以及注释(说明等待事件)。
通过以上分析,可以清晰地看到每个指令在不同阶段的延迟和执行情况,这对于理解Tomasulo算法在非流水化系统中的性能表现和优化至关重要。学生需要根据这些信息填充表格,并总结出整个循环的总时钟周期数。
2022-08-04 上传
2022-08-04 上传
2023-09-17 上传
2023-05-16 上传
2023-07-14 上传
2023-07-27 上传
2023-06-01 上传
2023-06-08 上传
2023-07-13 上传
2023-07-17 上传
![](https://profile-avatar.csdnimg.cn/76d0927231f045b0bdf25b51448ee8c5_weixin_35757191.jpg!1)
王元祺
- 粉丝: 72
- 资源: 303
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景