




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术学院计算机体系结构课程实验学 号:班 级:专 业: 学生姓名: 年 月 日实 验 报 告学生姓名: 学 号:时间:地点:实验课程名称:计算机体系结构一、实验名称:流水线中的相关求n个数的方差二、实验原理:1、WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。2、流水线执行过程:指令执行的5个阶段 (1)取指令周期(2)指令译码/读寄存器周期(3)执行/有效地址计算周期(4)存储器访问/分支完成周期(5)写回周期3、流水线中的相关:(1)结构相关:当某一条机器指令需要访问物理器件时,如加法器,此时加法器正被另一条机器指令使用,从而产生结构相关;(2)数据相关:当某一条指令需要访问某个寄存器时,此时这个寄存器正被另一条指令所使用,从而产生数据相关;(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个子窗口的情况。七、实验数据及结果分析: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,r4add r1,r1,r3图1 数据相关(2)控制相关:以图2中出现的控制相关为例下面两条指令中,因为第一条指令出现跳转指令时,存储指令的取指将作废,所以出现控制相关jal InputUnsignedsw PrintfValue(r3),r1图2 控制相关(3)结构相关:以图3中出现的结构相关为例下面两条指令中,因为当第二条乘法指令需要使用乘法器时,第一条乘法指令仍在使用乘法器,所以出现结构相关mult r2,r0,r0mult r3,r0,r0图3 结构相关3、主程序Variance.s的代码.data ;.data标识下面的数据放在数据区中;输入语句,指示你输入要求多少个数的方差Prompt: .asciiz Please input An integer which is arrays size value0: ;输入语句,指示你输入要求方差的数PromptLast: .asciiz Please input the integer :;输出格式,表示求出的方差按什么格式输出PrintfFormat: .asciiz the Variance is : %g ;表示下面采用字对齐.align 2; .word在存储器中顺序存放列出的字PrintfPar: .word PrintfFormat;在存储区中空出相应大小的区域Printf: .space 8Variance: .space 8PrintfValue: .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 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 InputArrayProcessPart: ;r2,r3寄存器中数清0 mult r2,r0,r0 mult r3,r0,r0Loop1: ;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 Loop1Average1: ;求出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个数与平均数差值平方的累加和 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,r4add r1,r1,r3 addi r2,r2,1addi 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流程图:(2)主程序Variance.s流程图: 八、实验结论:1、程序的装入要严格按照顺序,顺序将影响程序的正确执行;2、程序执行顺序,部件的个数都会对程序的执行产生影响;3、为减少数据相关,应调整程序的执行顺序或采用定向技术;4、为减少控制相关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 延边大学《城市设计Ⅰ》2023-2024学年第二学期期末试卷
- 四川省成都经开区实验高级中学2025届高考模拟调研卷数学试题(一)含解析
- 江苏省盐城市东台实验中学2025年中考抽测语文试题样题(A卷)试卷含解析
- 武夷学院《细胞生物学实验》2023-2024学年第一学期期末试卷
- 辽宁省抚顺市清原县2025年数学三下期末统考试题含解析
- 上海市金山区金山中学2025届高三期末试题含解析
- 江苏省丹阳市2025年校初三4月考语文试题含解析
- 重庆第二师范学院《多媒体制作》2023-2024学年第一学期期末试卷
- 泰州学院《外科学各论》2023-2024学年第二学期期末试卷
- 闽南理工学院《隧道工程(B)》2023-2024学年第二学期期末试卷
- 2024年音乐节行业发展前景预测及投资策略研究报告
- 2024西部县域经济百强研究
- 2025-2030年中国IPTV产业行业发展趋势及前景调研分析报告
- 国企改革三年行动培训
- 医美诊所院感知识培训课件
- 河北省气象部门招聘笔试冲刺题2025
- 上海市家庭居室装饰装修施工合同书
- 物联网技术及应用基础(第2版) -电子教案
- 新能源汽车租赁市场发展方案
- 货架回收合同范例
- (2024年)中国传统文化介绍课件
评论
0/150
提交评论