cache性能分析及优化实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验名称:计算机原理cache性能分析及优化实验
学员:张英杰学号: 201008040092 培养类型: 4+1军人年级:任职培训队
专业:计算机科学与技术所属学院:计算机学院
指导教员:唐玉华职称:研究员
实验室:校计算机中心四号院机房实验日期: 2010.12.1—2010.12.19国防科学技术大学训练部制
《实验报告》填写说明
1.学员完成人才培养方案和课程标准要所要求的每个实验后,均须提交实验报告。
2.实验报告封面必须打印,报告内容可以手写或打印。
3.实验报告内容编排及打印应符合以下要求:
(1)采用A4(21cm×29.7cm)白色复印纸,单面黑字打印。上下左右各侧的页边距均为3cm;缺省文档网格:字号为小4号,中文为宋体,英文和阿拉伯数字为Times New Roman,每页30行,每行36字;页脚距边界为2.5cm,页码置于页脚、居中,采用小5号阿拉伯数字从1开始连续编排,封面不编页码。
(2)报告正文最多可设四级标题,字体均为黑体,第一级标题字号为4号,其余各级标题为小4号;标题序号第一级用“一、”、“二、”……,第二级用“(一)”、“(二)” ……,第三级用“1.”、“2.”……,第四级用“(1)”、“(2)” ……,分别按序连续编排。
(3)正文插图、表格中的文字字号均为5号。
一实验概述
(一)实验目的
1.掌握Cache的基本概念、基本组织结构
2.掌握影响Cache性能的三个指标
3.了解相联度对Cache的影响
4.了解块大小对Cache的影响
5.了解替换算法对Cache的影响
6.了解Cache失效的分类及组成情况
7.了解一些基本的Cache性能优化方法(选做)
(二)实验步骤
1.运行模拟器SimpleScalar
2.在基本配置情况下运行矩阵乘计算程序统计Cache失效次数,并统计三种
不同类型的失效
3.改变Cache容量,统计各种失效的次数,并进行分析
4.改变Cache的相联度,统计各种失效的次数,并进行分析
5.改变Cache块大小,统计各种失效的次数,并进行分析
6.改变Cache的替换策略,统计各种失效次数,并分析
7.对给出的矩阵乘计算程序进行适当改写以优化cache性能。(选做) (三)实验平台
Vmware 虚拟机,redhat 9.0 linux 操作系统,SimpleScalar模拟器。(四)实验课时
3课时
(五)参考资料
计算机体系结构教材、SimpleScalar模拟器使用指南等
二背景知识
(一)Cache基本知识
(1) 可以从三个方面改进Cache的性能:降低失效率、减少失效开销、减少Cache 命中时间;
(2) 按照产生失效的原因不同,可以把Cache失效分为三类:
1)强制性失效(Compulsory miss)
当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性失效。这种失效也称为冷启动失效或首次访问失效。
2)容量失效(Capacity miss)
如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。
3)冲突失效(Conflict miss)
在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也称为碰撞失效(collision)或干扰失效(interference)。
(3) 降低Cache失效率的方法:增加Cache块大小、提高相联度、Victim Cache、伪相联Cache、硬件预取技术、由编译器控制的预取和编译器优化。
(4) 替换算法
1)先进先出法(FIFO)
2)随机法:为了均匀使用一组中的各块,这种方法随机地选择被替换的块。
3)最近最少使用法LRU(Least Recently Used):选择近期最少被访问的块作
为被替换的块。但由于实现比较困难,现在实际上实现的LRU都只是选择
最久没有被访问过的块作为被替换的块。
(二)Simpl eScalar简介及使用
SimpleScalar 是上世纪由威斯康辛大学发布的一款开源模拟器,具备良好的可移植性和可扩展性。SimpleScalar 在学术界具有十分重要的影响力,根据其官方网站统计,2000-2002 年体系结构顶级会议中有一半以上的研究者采用该模拟器来评估他们的研究成果。
作为一款时钟精确的模拟器,SimpleScalar 采用执行驱动方式模拟,包含功能模拟和性能模拟。SimpleScalar 的指令集架构采用C 语言宏声明,目前3.0 版本主要支持PISA 指令集和Alpha 指令集。根据模拟的目的不同,SimpleScalar 包含多个模拟器实体,从最简单的Sim-fast 到最为复杂的Sim-outorder,可分别用于功能模拟、Cache 配置策略、流水线、前瞻预测等体系结构问题的全面研究。同时,随着SimpleScalar 一起发布的还有一系列工具链(交叉编译器,汇编器,流水线跟踪器等),他们与SimpleScalar 的交互过程如图4.1所示。Fortran 代码需要先由F2C工
具转换为标准C 代码,交叉编译器则将标准C 代码编译为模拟器后端指令集下的二进制代码,交由模拟器执行模拟,通过这些交互最终实现一个完整的模拟平台。
图1 SimpleScalar模拟流程
1.编写测试程序
2.编译程序
sslittle-na-sstrix-gcc hello.c
含义:用simplescalar的编译器对hello.c进行编译,以生成能够在模拟器中运行的可执行文件,此条命令将hello.c编译成a.out.这种可执行文件并不是通常意义下的可执行文件,它的可执行性是相对于模拟器程序而已的。(在这里我们猜测生成的可执行文件默认为a.out,a.out是默认生成的。
3.模拟运行
sim-safe a.out
含义:用sim-safe对a.out进行模拟运行。Sim-safe是simplescalar中的一个模拟器,它会在指令的执行时检查指令的齐整性,检查访存指令的合法性等一些安全