cache性能分析及优化实验报.pdf
《cache性能分析及优化实验报.pdf》由会员分享,可在线阅读,更多相关《cache性能分析及优化实验报.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 实 验 报 告实验名称:计算机原理cache性能分析及优化实验学员:张英杰学号:201008040092 培养类型:4+1军人年级:任职培训队专业:计算机科学与技术所属学院:计算机学院指导教员:唐玉华职称:研究员实 验 室:校计算机中心四号院机房实验日期:2010.12.1 2010.12.19国防科学技术大学训练部制2 实验报告填写说明1学员完成人才培养方案和课程标准要所要求的每个实验后,均须提交实验报告。2实验报告封面必须打印,报告内容可以手写或打印。3实验报告内容编排及打印应符合以下要求:(1)采用 A4(21cm 29.7cm)白色复印纸,单面黑字打印。上下左右各侧的页边距均为 3
2、cm;缺省文档网格:字号为小4 号,中文为宋体,英文和阿拉伯数字为 Times New Roman,每页 30 行,每行 36 字;页脚距边界为 2.5cm,页码置于页脚、居中,采用小 5 号阿拉伯数字从 1 开始连续编排,封面不编页码。(2)报告正文最多可设四级标题,字体均为黑体,第一级标题字号为 4号,其余各级标题为小 4 号;标题序号第一级用“一、”、“二、”,,第二级用“(一)”、“(二)”,,第三级用“1.”、“2.”,,第四级用“(1)”、“(2)”,,分别按序连续编排。(3)正文插图、表格中的文字字号均为5 号。3 一实验概述(一)实验目的1.掌握 Cache的基本概念、基本组织
3、结构2.掌握影响 Cache性能的三个指标3.了解相联度对 Cache的影响4.了解块大小对 Cache的影响5.了解替换算法对 Cache的影响6.了解 Cache失效的分类及组成情况7.了解一些基本的 Cache性能优化方法(选做)(二)实验步骤1.运行模拟器 SimpleScalar 2.在基本配置情况下运行矩阵乘计算程序统计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)4 当第一次访问一个块时,该块不在 Cache中,需从下一级存储器中调
5、入Cache,这就是强制性失效。这种失效也称为冷启动失效或首次访问失效。2)容量失效(Capacity miss)如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。3)冲突失效(Conflict miss)在组相联或直接映象 Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也称为碰撞失效(collision)或干扰失效(interference)。(3)降低 Cache失效率的方法:增加 Cache块大小、提高相
6、联度、Victim 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 工5 具转换为标准 C 代码,交叉编译器则将标准C 代码编译为模拟器后端指令集下的二进制代码,交由模拟器执行模拟,通过这些交互最终实现一个完整的模拟平台。F2CGCCGASGLDSimulatorBin Utilslibf77.alibf2c.alibc.aFortran codeC codeAsssembly codeObject files模拟执行图 1 SimpleScalar 模拟流程1.编写测试程序#include int
9、 main()printf(Hello world!n);return 0;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是 simplescal
10、ar中的一个模拟器,它会在指令的执行时检查指令的齐整性,检查访存指令的合法性等一些安全6 性检查。SimpleScalar 包含多个模拟器,复杂度由最简单的Sim-safe 到最复杂的Sim-outordor,下面简要介绍这些模拟器。(1)Sim-fast Sim-fast 是执行速度最快,最不关心模拟过程细节信息的子模拟器程序。它采用顺序执行指令的方式,没有指令并行;不支持cache的使用,也不进行指令正确性检查,由程序员保证每条指令的正确性;不支持模拟器本身内嵌的Dlite!调试器(类似于 gdb 调试器)。为了模拟器的速度优化,在缺省情况下,sim-fast模拟器不进行时间统计,不对指令
11、的有关信息(如指令总数及访存指令数目)进行统计。当然,可以修改模拟器源程序,通过改变其设置,使模拟器更加符合设计人员的需求。(2)Sim-safe 在工具集中,是最简单的最友好的模拟器,检查所有的指令错误,不讲究速度。(3)Sim-bpred 实现一个分支预测分析器。(4)Sim-cache 这个工具实现 cache模拟功能,为用户择的cache和快表设置生成 cache统计,其中可能包含两级指令和数据cache,还有一级指令和数据快表,不会生成时间信息。(5)Sim-eio 这个模拟器支持生成外部事件跟踪(EIO traces)和断点文件。外部事件跟踪俘获程序的执行,并且允许被打包到一个单独
12、的文件,以备以后的再次执行。这个模拟器也提供在外部事件跟踪执行中在任意一点做断点。断点文件可被用于在程序运行中启动 simplescalar 模拟器。(6)Sim-outorder 最完整的工具。支持依序和乱序执行,branch predictor,memory hierarchy,function unit 个数等参数设定。这个模拟器追踪潜在的所有流水(pipeline)操作。(7)Sim-profile 也叫 functional simulation,但提供较完整的模拟参数,可依照使用者之设定,决定所要模拟之项目,如instruction classes and addresses、te
13、xt symbols、memory accesses、branches and data segment symbols以方便使用者整 理收集数据材料。7 三实验内容(一)SimpleScalar 基本运行模拟开启虚拟机软件 Vmware,点击菜单“Flie-Open”,打开目录”下的 Red Hat虚拟机。该虚拟机的用户名和密码如下:用户名为:root 密码:123456 其中,SimpleScalar模拟器安装在目录/root/SimpleScalar下,test目录为矩阵乘测试程序所在目录点击右键-新建终端,进入目录/root/SimpleScalar/test/目录,命令为:rootl
14、ocalhost root#cd/root/simplescalar/test/1.编译测试程序该目录下有一个1.c 文件,该文件为矩阵乘测试程序文件,首先需要使用SimpleScalar的交叉编译器将该文件便以为SimpleScalar模拟器上可以执行的二进制文件,编译命令为:rootlocalhost test#sslittle-na-sstrix-gcc 1.c 此时该目录下会多出来一个a.out文件,该文件即为 SimpleScalar上可执行二进制文件。2模拟执行我们采用 SimpleScalar的 sim-cache模拟器对刚才编译出来的可执行文件进行模拟执行,最简单的执行命令为:
15、rootlocalhost test#sim-cache a.out 如果执行成功,会出现如下图所示的界面:8 此时输入三个矩阵 A,B,C 的大小 M、N、K,得到模拟执行结果,如下图所示:9 3Cache配置在上述的执行中,没有对Cache的结构进行配置,使用了默认的Cache配置。在我们的实验中,需要对Cache 参数进行详细配置。一般来说,Cache的结构参数主要包括以下几个方面:容量、块大小、相联度、替换算法等。在 SimpleScalar模拟器中,采用了两级Cache结构,同时数据和指令Cache分开。SimpleScalar的 Cache参数配置命令为::其中:Cache 的名称
16、,其中:dl1:一级数据 Cache dl2:二级数据 Cache il1:一级指令 Cache il2:二级指令 Cache dtlb:数据TLB itlb:指令 TLB :组的数目:块大小-:相联度-:替换策略此时,Cache 容量为:*替换策略主要有以下几种:l:LRU,最近最少使用f:FIFO,先进先出r:RANDOM,随机策略例如:-cache:dl1 dl1:1024:32:2:l 表示对一级数据 cache进行配置,1024表示有 1024组,Cache块大小为 32 个byte,每个组有 2 个 Cache块,即相联度为 2,替换策略为 LRU。在此配置下,一级数据 Cache
17、的容量为 1024*32*2=64K byte。例如对上述矩阵乘测试程序,使用该配置进行模拟执行的命令为:10 rootlocalhost test#sim-cache-cache:dl1 dl1:1024:32:2:l a.out(二)SimpleScalar 模拟统计信息详解采用上述命令执行后,得到如下所示的信息,其详解如下:rootlocalhost test#sim-cache-cache:dl1 dl1:1024:32:2:l a.out sim-cache:SimpleScalar/PISA Tool Set version 3.0 of August,2003.Copyright
18、(c)1994-2003 by Todd M.Austin,Ph.D.and SimpleScalar,LLC.All Rights Reserved.This version of SimpleScalar is licensed for academic non-commercial use.No portion of this work may be used by any commercial entity,or for any commercial purpose,without the prior written permission of SimpleScalar,LLC().s
19、im:command line:sim-cache-cache:dl1 dl1:1024:32:2:l a.out sim:simulation started Sun Nov 28 22:49:41 2010,options follow:sim-cache:This simulator implements a functional cache simulator.Cache statistics are generated for a user-selected cache and TLB configuration,which may include up to two levels
20、of instruction and data cache(with any levels unified),and one level of instruction and data TLBs.No timing information is generated.#-config#load configuration from a file#-dumpconfig#dump configuration to a file#-h false#print help message#-v false#verbose operation#-d false#enable debug message#-
21、i false#start in Dlite debugger-seed 1#random number generator seed(0 for timer seed)#-q false#initialize and terminate immediately#-chkpt#restore EIO trace execution from#-redir:sim#redirect simulator output to file(non-interactive only)#-redir:prog#redirect simulated program output to file-nice 0#
22、simulator scheduling priority-max:inst 0#maximum number of insts to execute-cache:dl1 dl1:1024:32:2:l#l1 data cache config,i.e.,|none-cache:dl2 ul2:1024:64:4:l#l2 data cache config,i.e.,|none-cache:il1 il1:256:32:1:l#l1 inst cache config,i.e.,|dl1|dl2|none-cache:il2 dl2#l2 instruction cache config,i
23、.e.,|dl2|none-tlb:itlb itlb:16:4096:4:l#instruction TLB config,i.e.,|none-tlb:dtlb dtlb:32:4096:4:l#data TLB config,i.e.,|none-flush false#flush caches on system calls-cache:icompress false#convert 64-bit inst addresses to 32-bit inst equivalents#-pcstat#profile stat(s)against text addrs(mult uses o
24、k)The cache config parameter has the following format:-name of the cache being defined -number of sets in the cache -block size of the cache -associativity of the cache -block replacement strategy,l-LRU,f-FIFO,r-random Examples:-cache:dl1 dl1:4096:32:1:l-dtlb dtlb:128:4096:32:r Cache levels can be u
25、nified by pointing a level of the instruction cache hierarchy at the data cache hiearchy using the dl1 and dl2 cache configuration arguments.Most sensible combinations are supported,e.g.,A unified l2 cache(il2 is pointed at dl2):-cache:il1 il1:128:64:1:l-cache:il2 dl2-cache:dl1 dl1:256:32:1:l-cache:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cache 性能 分析 优化 实验
限制150内