已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 计算机科学与技术学院 计算机体系结构 课程实验 学 号 班 级 专 业 学生姓名 年 月 日 2 实实 验验 报报 告告 学生姓名 学生姓名 学学 号 号 时间 时间 地点 地点 实验课程名称 实验课程名称 计算机体系结构 一 实验名称 一 实验名称 流水线中的相关 求 n 个数的方差 二 实验原理 二 实验原理 1 WinDLX WinDLX 模拟器是一个图形化 交互式的 DLX 流水线模拟器 能够演示 DLX 流水线是 如何工作的 该模拟器可以装载 DLX 汇编语言程序 后缀为 s 的文件 然后单步 设断 点或是连续执行该程序 CPU 的寄存器 流水线 I O 和存储器都可以用图形表示出来 以 形象生动的方式描述 DLX 流水线的工作过程 模拟器还提供了对流水线操作的统计功能 便于对流水线进行性能分析 2 流水线执行过程 指令执行的5个阶段 1 取指令周期 2 指令译码 读寄存器周期 3 执行 有效地址计算周期 4 存储器访问 分支完成周期 5 写回周期 3 流水线中的相关 1 结构相关 当某一条机器指令需要访问物理器件时 如加法器 此时加法器正被另 一条机器指令使用 从而产生结构相关 2 数据相关 当某一条指令需要访问某个寄存器时 此时这个寄存器正被另一条指令 所使用 从而产生数据相关 3 控制相关 当程序执行到某个分支语句时 顺序执行的下一条语句将被跳过而去执 行分支语句中满足条件的那条指令 从而产生控制相关 3 三 实验目的 三 实验目的 1 通过该模拟实验 进一步掌握和巩固流水线的基本知识 2 初步掌握在特定体系结构下的汇编代码的编写和优化 3 培养运用所学知识解决实际问题的能力 4 对流水线性能分析 5 了解影响流水线效率的因素 6 了解各类相关及解决方法 四 实验内容 四 实验内容 使用 WinDLX 模拟器 对 Variance s 做如下分析 1 分析 Variance s 和 Input s 输入顺序不同时产生的影响 2 分析 Variance s 中汇编语言含义 同时分析程序执行流程 3 观察程序中出现的数据 控制 结构相关 指出程序中出现上述现象的指令组合 4 考察增加运算部件对性能的影响 5 考察增加 forward 部件对性能的影响 6 观察转移指令在转移成功和转移不成功时候的流水线开销 注意 除 4 以外 加 乘 除部件都只有一个 本问题中所有部件延迟设置为 加 法 2 个延迟周期 乘法 5 个延迟周期 除法 19 个延迟周期 五 实验器材 设备 元器件 五 实验器材 设备 元器件 IBM PC 兼容机 Windows 3 0 以上的操作系统 六 实验步骤及操作 六 实验步骤及操作 1 双击 WinDLX 图标运行 WinDLX 装入测试程序之前 先初始化 WinDLX 模拟器 点击 File 菜单中的 Reset all 菜单项 弹出一个 Reset DLX 对话框 然后点击窗口中的 确 认 按钮即可 2 选择 File Load Code or Data 按如下步骤操作 可将 Variance s 和 Input s 这两个程 序装入主存 点击 Variance s 点击 select 按钮 点击 Input s 点击 select 按钮 点击 load 按钮 3 按 F7 键程序顺序执行观察 6 个子窗口的情况 4 七 实验数据及结果分析 七 实验数据及结果分析 1 先装入 Variance s 再转入 Input s 时 因为程序顺序执行 地址顺序符合程序执行 顺序 程序能够正确执行 顺序相反时 因为 Input s 的地址高 而程序顺序执行到 Input s 时将没有正确的输入窗口 程序执行到输出结果时 也不会出现结果 2 程序中出现的三种相关 1 数据相关 以图 1 中出现的两个数据相关为例 下面两条指令中 因为第二条指令要读 r3 而执行到此操作时加载指令仍对 r3 进行操作 因此出现了数据相关 lbu r3 0 r2 seqi r5 r3 10 下面两条指令中 因为加法指令要读 r1 而执行到此操作时乘法指令仍对 r 进行 操作 因此出现了数据相关 multu r1 r1 r4 add r1 r1 r3 图 1 数据相关 2 控制相关 以图 2 中出现的控制相关为例 下面两条指令中 因为第一条指令出现跳转指令时 存储指令的取指将作废 所 以出现控制相关 jal InputUnsigned sw PrintfValue r3 r1 图 2 控制相关 5 3 结构相关 以图 3 中出现的结构相关为例 下面两条指令中 因为当第二条乘法指令需要使用乘法器时 第一条乘法指令仍 在使用乘法器 所以出现结构相关 mult r2 r0 r0 mult r3 r0 r0 图 3 结构相关 3 主程序 Variance s 的代码 data data 标识下面的数据放在数据区中 输入语句 指示你输入要求多少个数的方差 Prompt asciiz Please input An integer which is array s size value 0 输入语句 指示你输入要求方差的数 PromptLast asciiz Please input the integer 输出格式 表示求出的方差按什么格式输出 PrintfFormat asciiz the Variance is g 表示下面采用字对齐 align 2 word 在存储器中顺序存放列出的字 PrintfPar word PrintfFormat 在存储区中空出相应大小的区域 Printf space 8 Variance space 8 PrintfValue space 1024 text text 标识下面的代码存放在代码区中 global main global 标识 main 可以被全局访问 main 将 Prompt 字符串首地址放入 r1 寄存器中 addi r1 r0 Prompt 跳转向 InputUnsigned 标识的地址 调用 input 子函数读取数组大小的 值 jal InputUnsigned 将 input 函数读取的数放入寄存器中 add r5 r0 r1 add r6 r0 r1 6 add r7 r0 r1 add r8 r0 r1 addi r3 r0 0 循环调用 input 函数读数 InputArray r5 寄存器中的值为 0 则跳转向 ProcessPart 标识的地址 beqz r5 ProcessPart addi r1 r0 PromptLast jal InputUnsigned 将 r1 寄存器中的数放入 r3 寄存器中所存数地址的存储器中 sw PrintfValue r3 r1 addi r3 r3 4 subi r5 r5 1 无条件跳转向 InputArray 标识的指令地址 j InputArray ProcessPart r2 r3 寄存器中数清 0 mult r2 r0 r0 mult r3 r0 r0 Loop1 r6 寄存器中的值为 0 则跳转向 Average1 标识的地址 beqz r6 Average1 将 r3 寄存器中所存地址的存储器中的数加载到 r1 中 lw r1 PrintfValue r3 求出 n 个数的累加和存入 r2 中 add r2 r2 r1 addi r3 r3 4 subi r6 r6 1 无条件跳转向 Loop1 标识的指令地址 j Loop1 Average1 求出 n 个数的平均数存入 r9 中 div r9 r2 r8 r2 r3 寄存器中数清 0 mult r2 r0 r0 mult r3 r0 r0 Loop2 r7 寄存器中的值为 0 则跳转向 Average2 标识的地址 beqz r7 Average2 将 r3 寄存器中所存地址的存储器中的数加载到 r1 中 lw r1 PrintfValue r3 求出 n 个数与平均数差值平方的累加和 7 sub r10 r1 r9 mult r10 r10 r10 add r2 r2 r10 addi r3 r3 4 subi r7 r7 1 无条件跳转向 Loop2 标识的指令地址 j Loop2 Average2 求出方差存入 r11 中 div r11 r2 r8 output 将方差存入 Variance 所指存储空间中 sw Variance r11 转换为双精度并输出 lf f2 Variance cvti2d f0 f2 sd Printf f0 addi r14 r0 PrintfPar trap 5 调用中断 格式化输出转化为标准输出 over trap 0 调用系统中断 0 表示程序执行结束 4 样例输出 以图 4 中数据为例 输入需要求方差数的个数为 4 4 个数分别为 3 5 6 2 输出结果为 2 图 4 输出界面 5 尽量减少和消除程序中出现的相关 1 消除数据相关 a 采用定向技术 在发生数据相关时 等待前面计算结果的指令并不一定真的马 上就用到该计算结果 如果能够将该计算结果从其产生的地方直接送到其他指令需要 它的地方 就可以避免暂停 具体操作为 在 WinDLX 模拟器中选中 Configuration 菜 单中的 Enable Forwarding 选项 b 手动优化 以图 1 中的一个数据相关为例 交换两条加法指令的顺序可消除数 据相关 multu r1 r1 r4 multu r1 r1 r4 8 add r1 r1 r3 addi r2 r2 1 addi r2 r2 1 add r1 r1 r3 2 消除控制相关 循环展开 将循环体代码复制多次实现 即减少跳转指令执行的次数 循环展开 能够增大指令调度的空间 减少循环分支指令的开销 以 Variance s 中的一个循环体 为例 循环展开一次后 j Loop1 指令执行次数减少了一半 Loop1 Loop1 beqz r6 Average1 beqz r6 Average1 lw r1 PrintfValue r3 lw r1 PrintfValue r3 add r2 r2 r1 add r2 r2 r1 addi r3 r3 4 addi r3 r3 4 subi r6 r6 1 subi r6 r6 1 j Loop1 beqz r6 Average1 lw r1 PrintfValue r3 add r2 r2 r1 addi r3 r3 4 subi r6 r6 1 j Loop1 3 消除结构相关 结构相关的起因是资源争用 考虑采用资源充分重复设置的方法来避免结构相关 在本程序中产生结构相关的原因是乘法器争用 增加一个乘法器可以消除结构相关 具体操作为 在 WinDLX 模拟器中选中 Configuration 菜单中的 Floating Point Stages Configuration 选项 在弹出的对话框中设置 6 程序流程图 1 输入函数 Input s 流程图 9 开始 输入数字n1 n2 回车结束 初始化sum 0 j 1 取n j 其值是否为 10 为换行符 sum放入存储器中 是 结束 n j n j 48 sum sum 10 n j j 否 2 主程序 Variance s 流程图 10 开始 输入数组 大小n i 1 是 否 初始化Loop1 循环数j n j 1 否 j j 1 是 结束 调用输入 子函数 调用输入子 函数 将输入累加 求平均数 初始化Loop2 循环数k n K 1 否 k k 1 是 求第j个数与 平均数的差 将差的平方 累加 求出方差 初始化InputArray 循环数i n i i 1 11 八 实验结论 八 实验结论 1 程序的装入要严格按照顺序 顺序将影响程序的正确执行 2 程序执行顺序 部件的个数都会对程序的执行产生影响 3 为减少数据相关 应调整程序的执行顺序或采用定向技术 4 为减
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版矿山地质环境治理施工与矿山环境治理项目合同3篇
- 2024年支模架租赁及施工安全培训服务合同3篇
- 2024年商铺委托租赁与共享经济合作协议3篇
- 供水企业安全操作指引
- 建筑智能化净化施工合同
- 型材耐热水性检测合同
- 项目执行监控指南
- 林业项目招投标制度优化
- 电子商务平台建设项目归档
- 2024年茶文化艺术交流合作合同3篇
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 国家开放大学电大专科《管理会计》期末试题及答案
- 内蒙古师范大学论文封面
- 移交涉密载体签收单(模板)
- (整理)《运筹学》期末考试试题与参考答案
- 机动车检测站内部管理制度.doc
- (完整版)《金匮要略》方剂总汇(完整版)
- 供电服务突发事件专项应急预案
- 美国签证在职收入证明中英文对照模版
- 中铁集团会计核算手册
- 光缆线路基础知识
评论
0/150
提交评论