系统结构实践mycache模拟器,mipssim模拟器流_第1页
系统结构实践mycache模拟器,mipssim模拟器流_第2页
系统结构实践mycache模拟器,mipssim模拟器流_第3页
系统结构实践mycache模拟器,mipssim模拟器流_第4页
系统结构实践mycache模拟器,mipssim模拟器流_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

实践设计的目的和意义安装运行相关模拟器,熟悉各项功能设置。学习样例程序,观察相关变化。自己编写相应程序设计运行环境,观察运行结果。对计算机系统结构相关知识点进行模拟,对不同情况进行分析,对比,验证。实践设计的内容和要求内容1:1、安装运行MyCache模拟器,熟悉各项功能设置。2、运行样例程序,观察命中率变化,回顾所学知识,分析原因。尝试调整不同参数,分析命中率变化。3、要求学生根据样例程序,自主设计程序代码,能覆盖多种不同的情况变化对命中率的影响,如块大小,相联度,替换策略,预期策略,写策略等。内容2:1、安装运行MIPSsim模拟器,熟悉各项功能设置。2、运行样例程序,仔细观察指令在流水线中的执行过程,查看寄存器、内存内容,并运用所学知识,分析产生延迟的原因。尝试调整不同参数,观察流水线各段的调度情况和内存与寄存器的变化情况。3、自主设计程序代码,能覆盖多种不同的情况变化对流水线调度的影响,如读写数据指令,各种运算指令及所使用的寄存器等。设计所用设备仪器电脑、MyCache模拟器、MIPSsim模拟器。实践涉及的相关技术Cache的工作原理Cache的容量、相联度、块大小、替换算法、预取算法、(不)按写分配等技术的原理流水线技术。流水线冲突及其解决方案。项目设计与实现内容一:Cache性能分析Cache大小对命中率的影响选择统一Cache,在其他条件不变的情况下,改变Cache大小,观察其不命中率 2KB:不命中率为9.87% 8KB:不命中率为4.48% 32KB:不命中率为1.42% 128KB:不命中率为0.6% 512KB:不命中率为0.42%根据各次模拟的数据,绘制出曲线图。由此可以看出,其他条件不变的情况下,Cache越大命中率越高。但是Cache价格较为昂贵,因此需要在命中率与价格之间做出平衡。将统一Cache拆分为两个独立Cache选择的数据Cache与指令Cache之和和统一Cache大小一致,其他条件不变。 指令cache1k,数据cache1k:不命中率为:10.69% 指令cache4k,数据cache4k:不命中率为:4.16% 指令cache16k,数据cache16k:不命中率为:1.52% 指令cache64k,数据cache64k:不命中率为:0.53% 指令cache256k,数据cache256k:不命中率为:0.39%根据各次模拟的数据,绘制出曲线图。对图表进行分析,当Cache容量较小时,采用统一cache命中率较高,当Cache容量较大时,采用独立Cache,能降低块冲突的概率,提高命中率块大小对命中率的影响采用统一Cache8KB,在其他条件不变的情况下,改变块大小的值,观察其对命中率的影响。 块大小:16B,不命中率为5.79%块大小:32B,不命中率为4.48%块大小:64B,不命中率为4.03%块大小:128B,不命中率为4.60% 块大小:256B,不命中率为5.35%根据数据,画出曲线图为分析曲线图,当块大小慢慢变大时,命中率会随着提高,但是当块大小增加到一定大小后,命中率会随着下降,这是由于块大小越大,块数越少,导致某些块刚刚装入Cache就被替换掉,造成“抖动”现象,使命中率下降。相联度对命中率的影响采用直接相联,不命中率为0.89% 2路,不命中率为0.53% 4路,不命中率为0.47%8路,不命中率为0.45%16路,不命中率为0.44%32路,不命中率为0.44%根据数据,绘制出曲线图由折线图看出,直接映像到组相联映像,命中率大幅提高,这是由于虽然直接映像节省资源,但是Cache的块冲突概率很高,采用组相连会降低块冲突概率,因此命中率大幅提高。随着相联度增加,对命中率的提高也越来越不明显最终趋于稳定。替换策略对命中率的影响LRU:不命中率为0.69%FIFO:不命中率为0.78%RAND:不命中率为1.12%根据数据,绘制矩形图随机法算法简单,不考虑Cache块的使用情况,没有利用上层存储器使用的信息、没有根据访存的局部性原理,不能提高Cache的命中率。先进先出算法利用了历史信息,但没有根据访存的局部性原理,命中率也不高。LRU算法比较好的反映了程序局部性规律,但是实现起来比较复杂。预取策略不预取:不命中率为0.89% 不命中预取:不命中率为1.17%在其他条件不变的情况下,不预取的命中率高于不命中预取。写策略写回法:不命中率为0.89%写直达法:写回法和写直达法都需要少量寄存器,写回法中缓存器用于暂存将要写回的块,使之不必要等待被替换块写回主存才开始进行Cache取。写直达法中则用于缓冲由写Cache所要求的要写回主存的内容。写不命中的调块策略按写分配:不命中率为0.89% 不按写分配:不命中率为2.43%由数据可以看出,按写分配比不按写分配的命中率高。若未命中,按写分配会先将数据从主存调入Cache,然后在对Cache进行写,最后用写回法将Cache中的数据写会主存;而不按写分配,CPU会直接写入主存,不与Cache交互,此时未把主存块调入Cache,因此未命中。 内容二:流水与流水线冲突结构冲突定义:结构冲突是指因硬件资源满足不了指令重叠执行的要求而发生的冲突。原因:功能部件不是完全流水、资源分数不够。解决办法:在流水线处理机中设置相互独立的指令寄存器和数据寄存器。增加冲突硬件设备。 实验步骤:载入程序structure_hz.s,观察产生指令冲突时什么资源分配不足 当前资源如图所示: 当前程序为: .textmain:ADD.D$f2,$f0,$f1ADD.D$f3,$f0,$f1ADD.D$f4,$f0,$f1ADD.D$f5,$f0,$f1ADD.D$f6,$f0,$f1ADD.D$f7,$f0,$f1ADD.D$f8,$f0,$f1ADD.D$f9,$f0,$f1TEQ$r0,$r0 单步运行程序,当第四步执行时发生了结构冲突,这是由于第三步执行加法时占用了一个加法器,当第四步运行时还需要一个加法器,但是目前系统只有一个加法器,系统只能等待唯一的一个加法器释放资源。因此发生了结构冲突。继续单步执行直到第一个加法指令执行完毕。发现一个加法指令需要6步才能完成,因此,我改变了当前系统的加法器个数为6,重新运行上述代码直到执行结束,其结果没有了结构冲突。 为验证正确性,在改变了加法器个数后,我在其示例指令的基础上多加了几条加法指令,再次运行新的指令,观察其结果。执行的指令如下:.textmain:ADD.D$f2,$f0,$f1ADD.D$f3,$f0,$f1ADD.D$f4,$f0,$f1ADD.D$f5,$f0,$f1ADD.D$f6,$f0,$f1ADD.D$f7,$f0,$f1ADD.D$f8,$f0,$f1ADD.D$f9,$f0,$f1ADD.D$f10,$f0,$f1ADD.D$f11,$f0,$f1ADD.D$f12,$f0,$f1ADD.D$f13,$f0,$f1TEQ$r0,$r0 通过观察发现,当指令7开始执行时,指令1刚好执行完毕将加法器释放。其时钟周期图为:运行直到结束,其结构冲突为0,。 我尝试设置5个加法器,发现其指令冲突仍然存在,因此设计6个加法器是合理的。数据冲突数据冲突是指当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。 大致可分为三种类型:写后读、写后写、读后写读后写在这个流水线中不会发生,因为这样的流水线中所有的读操作都是在写结果操作之前发生。写后写在这样流水线中也不会发生,写后写只发生在流水线不止一段可以进行写操作或者指令被重新排序的情况下。因此只考虑写后读冲突即可。RAW:首先将参考样例装入处理机,单步运行到第4步结果为:执行完毕其在第4步发生了RAM停顿,这是由于指令1还未将寄存器R2中的真实值写回,而指令3需要使用R2的值,因此发生了数据冲突。采用定向技术可以减少数据冲突,即在发生数据冲突时,后面的指令并不是立即就要用到前一条指令的计算结果。如果能够将计算结果从其产生的地方直接送到需要它的地方,就可以避免暂停。当定向硬件检测到前面某条指令的结果寄存器就是当前指令的源寄存器时,控制逻辑会将前面那条指令的结果直接从其产生的地方定向到当前指令所需的位置。开启定向技术后,第四步的RAM停顿消失。执行完毕:执行完毕后对比,定向技术可以减少RAM停顿。进一步探究什么情况下需要使用定向技术,可按指令分为运算类指令与读写存储器类指令。运算类指令:将运算中间分别间隔0,1,2个空指令,观察结果。.textmain:loop:ADD$r1,$r1,$r3ADD$r1,$r1,$r3SLL$r0,$r0,0ADD$r1,$r1,$r3SLL$r0,$r0,0SLL$r0,$r0,0ADD$r1,$r1,$r3SLL$r0,$r0,0SLL$r0,$r0,0SLL$r0,$r0,0ADD$r1,$r1,$r3首先将r1,r3手动设置为2,5.通过观察寄存器值的变化来表示当前段是否执行完毕。通过观察发现,运算类指令使用定向技术主要在EX段和MEM段。EX段:当下一条指令需要上一条指令的运算结果时,上一条EX段执行完毕,则将运算结果直接送到下一条指令的EX段进行计算。MEM段:运算类指令在MEM段为空操作,但是还没有写入目标寄存器,因此当下一条指令需要上一条指令的计算结果时,则在MEM段将结果送到下一条指令的EX段。读写存储器类指令:读写指令间不间隔空指令:将R1,R2,R3手动设置为5,0x80,0x90,将存储器中0x80处设置为10,观察结果变化。.textmain:loop:LW$r1,0($r2)SW$r1,0($r3)SLL$r0,$r0,0 LOAD/STORE类指令在MEM段进行读写存储器操作,在WB段读入数据写入寄存器。观察发现,当SW指令需要上一条LW指令的R1值时,在MEM段R1读取完毕就将R1的值直接送入SW指令的MEM段。读写指令间隔一条空指令: .textmain:loop:LW$r1,0($r2)SLL$r0,$r0,0SW$r1,0($r3)SLL$r0,$r0,0总的来讲,若下面的指令需要用到上面尚未执行完的数据,则将计算结果从其产生的地方直接送到需要它的地方,包括寄存器或者ALU线路上。控制冲突含义:流水线遇到分支指令或者其他会改变PC值的指令所引起的冲突控制冲突的关键是在流水线的并行处理中,我们无法在一个流水阶段中迅速的得出分支指令的跳转情况,也就是无法确定并行进行的下一条指令究竟是哪一条。解决办法:冻结或排空流水线步骤:载入程序pipeline.s观察发现,第6个周期产生了控制冲突全部执行完毕:共产生11次控制停顿排空流水线与之前的暂停类似,这里的相关在于控制相关,所以我们需要等到分支指令计算出具体的跳转地址后在进行下一条指

温馨提示

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

评论

0/150

提交评论