cache性能分析及优化实验报告

上传人:206****923 文档编号:91845025 上传时间:2019-07-02 格式:DOC 页数:18 大小:551.02KB
返回 下载 相关 举报
cache性能分析及优化实验报告_第1页
第1页 / 共18页
cache性能分析及优化实验报告_第2页
第2页 / 共18页
cache性能分析及优化实验报告_第3页
第3页 / 共18页
cache性能分析及优化实验报告_第4页
第4页 / 共18页
cache性能分析及优化实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《cache性能分析及优化实验报告》由会员分享,可在线阅读,更多相关《cache性能分析及优化实验报告(18页珍藏版)》请在金锄头文库上搜索。

1、实 验 报 告实验名称:计算机原理cache性能分析及优化实验学 员: 张英杰 学 号: 201008040092 培养类型: 4+1军人 年 级: 任职培训队 专 业: 计算机科学与技术 所属学院: 计算机学院 指导教员: 唐玉华 职 称: 研究员 实 验 室:校计算机中心四号院机房 实验日期: 2010.12.12010.12.19国防科学技术大学训练部制实验报告填写说明1学员完成人才培养方案和课程标准要所要求的每个实验后,均须提交实验报告。2实验报告封面必须打印,报告内容可以手写或打印。3实验报告内容编排及打印应符合以下要求:(1)采用A4(21cm29.7cm)白色复印纸,单面黑字打印

2、。上下左右各侧的页边距均为3cm;缺省文档网格:字号为小4号,中文为宋体,英文和阿拉伯数字为Times New Roman,每页30行,每行36字;页脚距边界为2.5cm,页码置于页脚、居中,采用小5号阿拉伯数字从1开始连续编排,封面不编页码。(2)报告正文最多可设四级标题,字体均为黑体,第一级标题字号为4号,其余各级标题为小4号;标题序号第一级用“一、”、“二、”,第二级用“(一)”、“(二)” ,第三级用“1.”、“2.” ,第四级用“(1)”、“(2)” ,分别按序连续编排。(3)正文插图、表格中的文字字号均为5号。一 实验概述(一)实验目的1.掌握Cache的基本概念、基本组织结构2.

3、 掌握影响Cache性能的三个指标3. 了解相联度对Cache的影响4. 了解块大小对Cache的影响5. 了解替换算法对Cache的影响6. 了解Cache失效的分类及组成情况7. 了解一些基本的Cache性能优化方法(选做)(二)实验步骤1. 运行模拟器SimpleScalar2. 在基本配置情况下运行矩阵乘计算程序统计Cache失效次数,并统计三种 不同类型的失效3. 改变Cache容量,统计各种失效的次数,并进行分析4. 改变Cache的相联度,统计各种失效的次数,并进行分析5. 改变Cache块大小,统计各种失效的次数,并进行分析6. 改变Cache的替换策略,统计各种失效次数,并分

4、析7. 对给出的矩阵乘计算程序进行适当改写以优化cache性能。(选做)(三)实验平台Vmware 虚拟机,redhat 9.0 linux 操作系统,SimpleScalar模拟器 。(四)实验课时3课时(五)参考资料 计算机体系结构教材、SimpleScalar模拟器使用指南等二 背景知识(一) Cache基本知识(1) 可以从三个方面改进Cache的性能:降低失效率、减少失效开销、减少Cache命中时间;(2) 按照产生失效的原因不同,可以把Cache失效分为三类:1) 强制性失效(Compulsory miss)当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cach

5、e,这就是强制性失效。这种失效也称为冷启动失效或首次访问失效。2) 容量失效(Capacity miss)如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。3) 冲突失效(Conflict miss)在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也称为碰撞失效(collision)或干扰失效(interference)。(3) 降低Cache失效率的方法:增加Cache块大小、提高相联度、Vi

6、ctim Cache、伪相联Cache、硬件预取技术、由编译器控制的预取和编译器优化。(4) 替换算法 1) 先进先出法(FIFO)2) 随机法:为了均匀使用一组中的各块,这种方法随机地选择被替换的块。3) 最近最少使用法LRU(Least Recently Used):选择近期最少被访问的块作为被替换的块。但由于实现比较困难,现在实际上实现的LRU都只是选择最久没有被访问过的块作为被替换的块。(二) SimpleScalar简介及使用SimpleScalar 是上世纪由威斯康辛大学发布的一款开源模拟器,具备良好的可移植性和可扩展性。SimpleScalar 在学术界具有十分重要的影响力,根据

7、其官方网站统计,2000-2002 年体系结构顶级会议中有一半以上的研究者采用该模拟器来评估他们的研究成果。作为一款时钟精确的模拟器,SimpleScalar 采用执行驱动方式模拟,包含功能模拟和性能模拟。SimpleScalar 的指令集架构采用C 语言宏声明,目前3.0 版本主要支持PISA 指令集和Alpha 指令集。根据模拟的目的不同,SimpleScalar 包含多个模拟器实体,从最简单的Sim-fast 到最为复杂的Sim-outorder,可分别用于功能模拟、Cache 配置策略、流水线、前瞻预测等体系结构问题的全面研究。同时,随着SimpleScalar 一起发布的还有一系列工

8、具链(交叉编译器,汇编器,流水线跟踪器等),他们与SimpleScalar 的交互过程如图4.1所示。Fortran 代码需要先由F2C工具转换为标准C 代码,交叉编译器则将标准C 代码编译为模拟器后端指令集下的二进制代码,交由模拟器执行模拟,通过这些交互最终实现一个完整的模拟平台。图1 SimpleScalar模拟流程1.编写测试程序#include int main() printf(Hello world!n); return 0;2.编译程序sslittle-na-sstrix-gcc hello.c含义:用simplescalar的编译器对hello.c进行编译,以生成能够在模拟器中

9、运行的可执行文件,此条命令将hello.c编译成a.out.这种可执行文件并不是通常意义下的可执行文件,它的可执行性是相对于模拟器程序而已的。(在这里我们猜测生成的可执行文件默认为a.out,a.out是默认生成的。3.模拟运行sim-safe a.out含义:用sim-safe对a.out进行模拟运行。Sim-safe是simplescalar中的一个模拟器,它会在指令的执行时检查指令的齐整性,检查访存指令的合法性等一些安全性检查。SimpleScalar包含多个模拟器,复杂度由最简单的Sim-safe到最复杂的Sim-outordor,下面简要介绍这些模拟器。(1)Sim-fastSim-

10、fast是执行速度最快,最不关心模拟过程细节信息的子模拟器程序。它采用顺序执行指令的方式,没有指令并行;不支持cache的使用,也不进行指令正确性检查,由程序员保证每条指令的正确性;不支持模拟器本身内嵌的Dlite!调试器(类似于gdb调试器)。为了模拟器的速度优化,在缺省情况下,sim-fast模拟器不进行时间统计,不对指令的有关信息(如指令总数及访存指令数目)进行统计。当然,可以修改模拟器源程序,通过改变其设置,使模拟器更加符合设计人员的需求。(2)Sim-safe在工具集中,是最简单的最友好的模拟器,检查所有的指令错误,不讲究速度。(3)Sim-bpred实现一个分支预测分析器。(4)S

11、im-cache这个工具实现cache模拟功能,为用户择的cache和快表设置生成cache统计,其中可能包含两级指令和数据cache ,还有一级指令和数据快表,不会生成时间信息。(5)Sim-eio 这个模拟器支持生成外部事件跟踪(EIO traces)和断点文件。外部事件跟踪俘获程序的执行,并且允许被打包到一个单独的文件,以备以后的再次执行。这个模拟器也提供在外部事件跟踪执行中在任意一点做断点。断点文件可被用于在程序运行中启动simplescalar 模拟器。(6)Sim-outorder最完整的工具。支持依序和乱序执行,branch predictor,memory hierarchy,

12、function unit个数等参数设定。这个模拟器追踪潜在的所有流水(pipeline)操作。(7)Sim-profile 也叫functional simulation,但提供较完整的模拟参数,可依照使用者之设定,决定所要模拟之项目,如instruction classes and addresses、text symbols、memory accesses、branches and data segment symbols以方使用者整收集数据材料。三 实验内容(一) SimpleScalar基本运行模拟开启虚拟机软件Vmware,点击菜单“Flie-Open”,打开目录” D:Red H

13、at Linux”下的Red Hat虚拟机。该虚拟机的用户名和密码如下:用户名为:root密码:123456其中,SimpleScalar模拟器安装在目录/root/SimpleScalar下,test目录为矩阵乘测试程序所在目录点击右键-新建终端,进入目录/root/SimpleScalar/test/目录,命令为:rootlocalhost root# cd /root/simplescalar/test/1. 编译测试程序该目录下有一个1.c文件,该文件为矩阵乘测试程序文件,首先需要使用SimpleScalar的交叉编译器将该文件便以为SimpleScalar模拟器上可以执行的二进制文件

14、,编译命令为:rootlocalhost test# sslittle-na-sstrix-gcc 1.c此时该目录下会多出来一个a.out文件,该文件即为SimpleScalar上可执行二进制文件。2模拟执行我们采用SimpleScalar的sim-cache模拟器对刚才编译出来的可执行文件进行模拟执行,最简单的执行命令为:rootlocalhost test# sim-cache a.out如果执行成功,会出现如下图所示的界面:此时输入三个矩阵A,B,C的大小M、N、K,得到模拟执行结果,如下图所示:3Cache配置在上述的执行中,没有对Cache的结构进行配置,使用了默认的Cache配置。在我们的实验中,需要对Cache 参数进行详细配置。一般来说,Cache的结构参数主要包括以下几个方面:容量、块大小、相联度、替换算法等。在SimpleScalar模拟器中,采用了两级Cache结构,同时数据和指令Cache分开。SimpleScalar的Cache参数配置命令为::其中: : Cache的名称,其中: dl1:一级数据Cache dl2:二级数据Cache il1:一级指令Cache il2:二级指令Cache dtlb:数据TLBitlb:指令TLB : 组的数目:块大小 -:相联度 -:替换策略此时,Cache容量为:ns

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号