Tomasulo算法在循环中的性能分析:时钟周期与指令调度
需积分: 0 93 浏览量
更新于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 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
王元祺
- 粉丝: 753
- 资源: 303
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率