系统结构实验报告_第1页
系统结构实验报告_第2页
系统结构实验报告_第3页
系统结构实验报告_第4页
系统结构实验报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机系统结构实验报告实验一 流水线的相关实验目的:1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。实验平台:WinDLX模拟器实验内容和步骤:一.用WinDLX模拟器执行下列三个程序:求阶乘程序fact.s求最大公倍数程序gcm.s求素数程序prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,

2、观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。1、求阶乘程序fact.s (1)分别以步进、连续、设置断点的方式运行程序 图1.1.1 求阶乘程序fact.s运行统计数据步进方式运行 图1.1.2 求阶乘程序fact.s运行统计数据连续方式运行 图1.1.3 求阶乘程序fact.s运行统计数据连续方式运行(2)数据统计图1.1.4 求阶乘程序fact.s运行统计数据图1.1.5 求阶乘程序fact.s流水线执行情况图1.1.6 求阶乘程序fact.s寄存器使用情况2、 求最大公倍数程序gcm.s图1.2.1 求最大公倍数程序gcm.s运行统计数据图1.2.2 求最大公倍数

3、程序gcm.s流水线执行情况图1.2.3 求最大公倍数程序gcm.s寄存器使用情况3、求素数程序prim.s 图1.3.1 求素数程序prim.s运行统计数据 图1.3.2 求素数程序prim.s流水线执行情况 图1.3.3 求素数程序prim.s寄存器使用情况 二、用WinDLX运行程序structure_d.s, 通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。图1.4.1 程序structure_d.s流水线执行过程其中,有如下几种情况,产生了资源

4、相关:(1)导致资源相关的部件:浮点数寄存器f4addd f0,f0,f4 指令在译码阶段ID停滞1周期(2)导致资源相关的部件: ALUaddi r2,r2,0x8 指令在执行阶段intEX停滞1周期图1.4.2 程序structure_d.s运行统计信息 由资源相关引起的暂停周期数为:30总执行周期数为:139暂停周期数占总执行周期数的百分比:21.58%分析:资源相关使相关指令在流水线上停滞,降低了执行效率。解决方法:在合理的指令调度范围内,尽量避免执行重复的指令。尽量避免同一寄存器的频繁使用,若无法避免,则使用寄存器换名的方法。3、 在不采用定向技术的情况下(去掉Configurati

5、on菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s 记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。图1.5.1 不采用定向技术,程序data_d.s运行统计信息 由数据相关引起的暂停时钟周期数为:104 总执行周期数为:202 暂停周期数占总执行周期数的百分比:51.48%在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。图1.5.2 采用定向技术,程序data_d.s运行统

6、计信息由数据相关引起的暂停时钟周期数为:30总执行周期数为:128暂停周期数占总执行周期数的百分比:23.44%通过这两个统计可以发现,在使用定向技术下运行程序指令将大幅降低数据相关发生的次数,这大幅提升了CPU的性能。实验二 循环展开及指令调度实验目的:1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2. 熟悉用指令调度技术来解决流水线中的数据相关的方法;3. 了解循环展开、指令调度等技术对CPU性能的改进。实验平台:WinDLX模拟器实验内容和步骤:1用指令调度技术解决流水线中的结构相关与数据相关(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与

7、结构相关(假设:加法乘法除法部件各有2个,延迟时间都是3个时钟周期)程序代码:.data.global ONEONE: .word 1.text.global mainmain:lf f1,ONE cvti2f f7,f1 nop divf f1,f8,f7 divf f2,f1,f7 divf f13,f2,f7divf f10,f3,f7 addf f5,f12,f7 addf f3,f1,f2multf f6,f4,f5Finish: trap 0(2)通过Configuration菜单中的“Floating point stages” 选项,把加法乘法除法部件的个数设置为2个,把延迟都

8、设置为3个时钟周期;图2.1.1 设置运算器数量及时钟周期(3)用WinDLX运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;图2.1.2 程序执行统计信息如图,程序总共执行了23个时钟周期,共有12个时钟周期的系统停滞。经分析,程序执行过程中出现了结构相关:图2.1.3 流水线执行情况如图,在时钟周期-11、-12时,指令divf f13,f2,f7需要在其执行阶段使用除法运算器,而此时两个除法运算器都在使用中,故产生了器件冲突,结构相关导致该指令在译码阶段停滞2个时钟周期。(4)采用指令调度技术对程序进行指令调度,消除相关;通过指令调度,程序

9、的执行顺序调整为:.data.global ONEONE: .word 1.text.global mainmain:lf f1,ONE cvti2f f7,f1 nop divf f1,f8,f7 addf f5,f12,f7 multf f6,f4,f5divf f2,f1,f7 divf f10,f3,f7 addf f3,f1,f2divf f13,f2,f7Finish: trap 0(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;图2.1.4 指令调度后,程序执行统计信息图2.1.5 指令调度后,流水线执行情况可见,执行总周期数为21

10、,由于器件冲突产生的结构相关已经部分消除。指令调度后,CPU运行周期是调度前的21/23=0.91倍。2. 用循环展开、寄存器换名以及指令调度提高性能(1)用DLX汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单循环;程序代码:.datax: .word 1i: .word 4.text.global mainmain: lf f1,x lf f9,i movf f5,f1Loop: eqff9,f0 bfptFinish addf f0,f0,f1 divf f3,f4,f5 j LoopFinish:trap 0(2)用WinDLX运行该程序。记录执行过程中各种相关发生

11、的次数以及程序执行的总时钟周期数;图2.2.1 程序执行统计情况总计执行周期:38总计停滞周期:7 图2.2.2 流水线执行情况(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;展开后的程序代码:.datax: .word 1i: .word 4.text.global mainmain: lf f1,x lf f9,i movf f5,f1 divf f3,f4,f5 divf f3,f4,f5 divf f3,f4,f5 divf f3,f4,f5 trap 0(4)用WinDLX运行修改后的程序,记录执行过程中各

12、种相关发生的次数以及程序执行的总时钟周期数;图2.2.3 循环展开后,程序执行统计情况总计执行周期:20总计停滞周期:13 图2.2.4 循环展开后后,流水线执行情况可见,在相同器件的情况下,指令调度对于提高CPU性能的意义非常重大。实验三 Cache性能分析实验目的: 1 加深对Cache的基本概念、基本组织结构以及基本工作原理的理解; 2 了解Cache的容量、相联度、块大小对Cache性能的影响; 3 掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处; 4 理解Cache失效的产生原因以及Cache的三种失效; 5 理解LRU与随机法的基本思想,及它们对Cach

13、e性能的影响; 实验平台: SimpleScalar模拟器实验内容及步骤: 1在基本配置情况下运行程序(请指明所选的测试程序),统计Cache总失效次数、三种不同种类的失效次数; 2改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Cache性能的影响; 3改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响; 4改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache块

14、大小对Cache性能的影响; 5分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。测试程序: 用于实验的测试程序可以使用现有的,即benchmark目录下的所有程序;也可以自己用C 语言直接生成各类典型程序比如:数学运算类、输入输出类等,通过本环境提供的特定C编译器,编译生成对应的xxx.out(默认是a.out)测试程序用于实验。每个测试程序所需时间大概是10分钟,选择测试程序时注意从不同组中选择,以便使得出的结果不会因为对单项有所侧重而有失偏颇。每个人从中选出46个测

15、试程序进行测试。实验内容及步骤:1在基本配置情况下运行程序(请指明所选的测试程序),统计Cache总失效次数、三种不同种类的失效次数;图3.1.1 默认配置下,Cache的失效次数与统计概率2改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Cache性能的影响;(1)-dl1:512:32:1:l (*2)图3.1.2 -dl1:512:32:1:l (*2)配置下,Cache的失效次数与统计概率(2)-dl1:1024:32:1:l (*4)图3.1.3 -dl1:1024:32:1:l (*4)配置下,Cache的失

16、效次数与统计概率 (3)-dl1:2048:32:1:l (*8) 图3.1.4 -dl1:2048:32:1:l (*8)配置下,Cache的失效次数与统计概率 (4)-dl1:16384:32:1:l (*64) 图3.1.5 -dl1:16384:32:1:l (*64)配置下,Cache的失效次数与统计概率经分析,扩大Cache容量有助于失效率的降低,提高Cache性能,但在cache集合数达到1024之后并没有明显的变化,这可能是由于饱和造成的。3改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能

17、的影响;(1)-dl1:256:32:2:l (2路)图3.1.6 -dl1:256:32:2:l(2路)配置下,Cache的失效次数与统计概率(2)-dl1:256:32:4:l (4路)图3.1.7 -dl1:256:32:4:l(4路)配置下,Cache的失效次数与统计概率 (3)-dl1:256:32:64:l (64路)图3.1.8 -dl1:256:32:64:l(64路)配置下,Cache的失效次数与统计概率经分析,扩大Cache相连度有助于失效率的降低,提高Cache性能,但是同样在达到4路之后,失效次数的概率不再降低。4改变Cache块大小(*2,*4,*8,*64),运行程

18、序(指明所选的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;(1)-dl1:256:64:1:l (*2)图3.1.9-dl1:256:64:1:l (*2)配置下,Cache的失效次数与统计概率(2) -dl1:256:64:1:l (*4)(3) 图3.1.10 -dl1:256:64:1:l (*4)配置下,Cache的失效次数与统计概率经分析,扩大Cache块大小明显有助于失效率的降低,提高Cache性能。但是不能超过界限,否则不能命中。5分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论