文档库 最新最全的文档下载
当前位置:文档库 › 基于spim的cache实验

基于spim的cache实验

基于spim的cache实验
基于spim的cache实验

汕头大学实验报告

学院: 工学院系: 计算机系专业: 计算机科学与技术年级: 13实验时间: 2015.6.16 姓名: 林子伦学号: 2013101030实验名称:基于SPIM-CACHE的Cache实验

一.实验目的:

(1)熟悉SPIM-CACHE模拟器环境

(2)深入认识CACHE的工作原理及其作用。

二.实验内容:

(1)阅读实验指导书资料(虚拟教室提供了英文论文的电子版本);

(2)下载SPIM-CACHE软件,理解英文论文的基本内容之后,给出几种典型的cache配置,运行英文论文提供的代码,记录运行时CACHE命中率等重要数据;(3)运行Fig.4代码,了解mapping functions 即映射规则

(4)运行Fig.7代码,了解temporal and spatial locality 即时空局部性,进一步理解cache的工作原理;

(5)运行Fig.8代码,运行学习replacement algorithms 即替代算法,理解其工作原理。

三.实验地点,环境

实验地点:软件工程实验室

实验环境:

操作系统:Microsoft Windows 8 中文版

处理器:Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz 2.50GHz

内存: 4.00GB(3.82GB 可用)

四.实验记录及实验分析(80%):

4.1实验前配置:

1) 按下图配置好Spim设置

2)关于实验中cache设置如下(具体配置根据下面实验要求)

——》

——》

Cache size ——cache大小

Block size ——块大小

Mapping ——组相连

4.2实验一:fig4.s

实验目的:Algorithm and corresponding code to study mapping functions Cache配置:256-B size, 16-B line size, four-way set associative

实验操作:

1) Ctrl+O 打开运行代码fig4.s

代码如下:

.data 0x10000480

Array_A: .word 1,1,1,1,2,2,2,2

.data 0x10000CC0

Array_B: .word 3,3,3,3,4,4,4,4

.text

.globl _start

_start: la $2,Array_A

li $6,0

li $4,8

loop: lw $5,0($2)

add $6,$6,$5

addi $2,$2,4

addi $4,$4,-1

bgt $4,$0,loop

2) 按F5运行程序,得到结果如下图

Instruction cache’s hit rate : 0.792453

Data cache’s hit rate : 0.750000

4.3实验二:fig7.s

实验目的:Algorithm and corresponding code to study temporal and spatial locality

4.3.1 spatial locality

Cache配置:256-B size, four-way set associative, 分别定义block size

为16,8,4B

实验操作:

1) Ctrl+O 打开运行代码fig7.s

代码如下:

.data 0x10000480

Array_A: .word 1,1,1,1,2,2,2,2

.data 0x10000CC0

Array_B: .word 3,3,3,3,4,4,4,4

.text

.globl __start

__start: li $8,1

#这里要得到教程里的0.75,0.5,0 这里的$8里一定要为1

ext_loop: la $2,Array_A

la $3,Array_B

li $6,0 #sum=0

li $4,8 #number of elements

loop: lw $5,0($2)

lw $7,0($3)

add $6,$6,$5 #sum=sum+arrayA[i]

add $6,$6,$7 #sum=sum+arrayB[i]

addi $2,$2,4

addi $3,$3,4

addi $4,$4,-1

addi $8,$8,-1

bgt $8,$0,ext_loop

.end

2)按F5运行程序

Block size:16B

命中率为0.75

Block size:8B

命中率为0.5

Block size:4B

命中率为0

4.3.2 temporal locality

Cache配置:256-B size, 16-B line size, four-way set associative

实验操作:

1) Ctrl+O 打开运行代码fig7.s

代码如下:(代码中N每次改写为1或5或10或100)

.data 0x10000480

Array_A: .word 1,1,1,1,2,2,2,2

.data 0x10000CC0

Array_B: .word 3,3,3,3,4,4,4,4

.text

.globl __start

__start: li $8,N #N=1,5,10,100

ext_loop: la $2,Array_A

la $3,Array_B

li $6,0 #sum=0

li $4,8 #number of elements

loop: lw $5,0($2)

lw $7,0($3)

add $6,$6,$5 #sum=sum+arrayA[i]

add $6,$6,$7 #sum=sum+arrayB[i]

addi $2,$2,4

addi $4,$4,-1

bgt $4,$0,loop

addi $8,$8,-1

bgt $8,$0,ext_loop

.end

2) 按F5运行程序

N=1

命中率为0.759036。

N=5

命中率为0.950860。

N=10

命中率为0.975369。

N=100

命中率为0.997531。

4.4实验三:fig8.s

实验目的:Algorithm and corresponding code provided to work on replacement algorithms and strides.

Cache配置:256-B size, 16-B line, and direct mapped.

实验操作:

1) Ctrl+O 打开运行代码fig8.s

代码如下:

.data 0x10000000

Array_A: .word 0,1,2,3,4,5,6,7,8,9,10,11,...,125,126,127

.text

.globl __start

__start: li $8,100 #external loop

li $3,4 #stride value

li $6,0

sll $9,$3,2

ext_loop: li $5,128

li $4,0

int_loop: lw $7,Array_A($4)

add $6,$6,$7

add $4,$4,$9

sub $5,$5,$3

bgt $5,$0,int_loop

addi $8,$8,-1

bgt $8,$0,ext_loop

.end

五.实验体会(20%)

1. 本次试验对照着英语的教程,尝试的了解并发现了试验教程有些许错误:错误说明

1.1 从右边我们可以看到数组AB都只有8个元素

1.2 所以左边的循环应该一个为循环次数一个为数组个数

1.3 从右边我们可以看到内层循环次数固定为8 外层循环个数不定为N(根据实验要

求为1,5,10,100)

1.4 所以左边的c语言代码应该是

Sum=0;

For(j=0;j

For(i=0; i<8;i++)

Sum=sum+A[i]+B[i];

2. 本次实验过程中还经常遇到一个问题

无论是哪个程序,都提示在语句__start: 这条语句出现错误,这个问题的解决办法是打开菜单栏Simulator->Settings 红色框内的选项不能打钩

3. 本次实验很好地体会了cache的各种工作,对cache有了更深入的了解,对课程的学习有很大的帮助。

分析影响cache命中率的因素

分析影响cache命中率的因素 摘要: 存储器是计算机的核心部件之一。由于CPU和主存在速度上的存在着巨大差异,现代计算机都在CPU和主存之间设置一个高速、小容量的缓冲存储器cache。而它完全是是由硬件实现,所以它不但对应用程序员透明,而且对系统程序员也是透明的。Cache对于提高整个计算机系统的性能有着重要的意义,几乎是一个不可缺少的部件。 关键字:cache容量;失效率;块大小;相联度;替换策略。 一、概述 存储器是计算机的核心部件之一。其性能直接关系到整个计算机系统性能的高低。如何以合理的价格,设计容量和速度都满足计算机系统要求的存储器系统,始终是计算机系统结构设计的中关键的问题之一。 计算机软件设计者和计算机用户对于存储器容量的需求是没有止境的,他们希望容量越大越好,而且要求速度快、价格低。仅用单一的存储器是很难达到这一需求目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。 其中“cache-主存”和“主存-辅存”层次是常见的两种层次结构,几乎所有现代的计算机都同时具有这两种层次。我们都知道,程序在执行前,需先调入主存。在这里主要讨论的是“cache-主存”层次。 “cache-主存”是在为了弥补主存速度的不足,这个层次的工作一般来说,完全是由硬件实现,所以它不但对应用程序员透明,而且对系统程序员也是透明的。 如前所述,为了弥补CPU和主存在速度上的巨大差异,现代计算机都在CPU和主存之间设置一个高速、小容量的缓冲存储器cache。Cache对于提高整个计算机系统的性能有着重要的意义,几乎是一个不可缺少的部件。 Cache是按块进行管理的。Cache和主存均被分割成大小相同的块。信息以块为单位调入cache。相应的,CPU的访存地址被分割成两部分:块地址和块内位移。

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

实验报告答案

实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 二. 实验内容和步骤 首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。 (2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。 (3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。 (4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。 (5)、查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。 (6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条有 (有,无)符号载入字节 (字节,半字,字)指令。 3)单步执行一条指令(F7)。 4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。 5)下一条指令地址为0x00000008,是一条有 (有,无)符号载入字 (字节,半字,字)指令。 6)单步执行1条指令。 7)查看R1的值,[R1]=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条无 (有,无)符号载入字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,[R1]= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存字 (字节,半字,字)指令。 13)单步执行一条指令。

Cache实验

Caches实验 杨祯 15281139 实验目的 1.阅读分析附件模拟器代码 2.通过读懂代码加深了解cache的实现技术 3.结合书后习题1进行测试 4.通过实验设计了解参数(cache和block size等)和算法(LRU,FIFO 等)选择的优化配置与组合,需要定性和定量分析,可以用数字或图表等多种描述手段配合说明。 阅读分析模拟器代码

课后习题 stride=132下直接相连映射 1)实验分析 由题意得:cachesize=256B blockinbyte=4*4B Noofblock=256B/16B=16个组数位16 array[0]的块地址为0/4=0 映射到cache的块号为0%16=0 array[132]的块地址为132/4=33 映射到cache的块号为33%16=1

第一次访问cache中的0号块与1号块时,会发生强制性失效,之后因为调入了cache中,不会发生失效,所以 misscount=2 missrate=2/(2*10000)=1/10000 hitcount=19998 hitrate=9999/10000 实验验证

stride=131下直接相连映射 实验分析 由题意得:cachesize=256B blockinbyte=4*4B Noofblock=256B/16B=16个组数位16 array[0]的块地址为0/4=0 映射到cache的块号为0%16=0 array[131]的块地址为131/4=32 映射到cache的块号为32%16=0 第一次访问cache中的0号时,一定会发生强制性失效,次数为1;之后因为cache中块号为0的块不断地被替换写入,此时发生的是冲突失效,冲突失效次数为19999, 则发生的失效次数为19999+1=20000 所以 misscount=20000 missrate=20000/(2*10000)=1

实验1 Cache性能分析

实验1 Cache性能分析 1 实验目的 (1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。 (2)掌握Cache容量、相联度、块大小对Cache性能的影响。 (3)掌握降低Cache 2 实验平台 采用MyCache模拟器。 MyCache模拟器的使用方法: (1) 双击MyCache.exe,启动模拟器。 (2) 系统打开操作界面,如下图所示: (3) 写不命中时的调块策略。可以直接从列表中选择。 (4) 访问地址可以选择来自地址流文件,也可以选择手动输入。如果是前者,则可以通过单击“浏览”按钮,从模拟器所在文件夹下的“地址流”文件夹中选取地址流文件(.din)文件,然后执行。执行得方式可以是单步,也可以选择一次执行结束。如果选择手动输入,就可以在“执行控制”区域中输入块地址,然后单击“访问”按钮。系统会在界面的右边显示访问类型、地址、块号以及块内地址。 3 实验内容和步骤 3.1 Cache容量对不命中率的影响 (1) 启动MyCache。 (2) 单击“复位”按钮,将各参数设置为默认值。 (3) 选择一个地址流文件。具体方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 (4) 选择不同的Cache容量,包括2KB,4 KB,8 KB,16 KB,32 KB,64 KB,128 KB和256 KB,分别执行模拟器(单击“执行到底”按钮就可执行),然后在表1.1中记录各种情况下的不命中率。 地址流文件名:all.din 表1.1 不同容量下Cache的不命中率

(5)指明地址流文件名,以容量为横坐标,画出不命中率虽Cache容量变化而变化的曲线 (6) 根据该模拟结果,能得出什么结论? 相同的地址流文件,Cache容量越大,Cache的不命中率越低,命中率越高,但当Cache 容量达到一定程度时,Cache的命中率将不变。 3.2 相联度对不命中率的影响 (1) 单击“复位”按钮,将各参数设置为默认值。此时的Cache容量为64KB。 (2) 选择一个地址流文件。具体方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 (3) 选取不同的Cache相联度,包括直接映像、2路、4路、8路、16路和32路。分别执行模拟器(单击“执行到底”按钮),然后再表1.2中记录各种情况下的不命中率。 地址流文件名:all.din (4) 把Cache的容量设置为256KB,重复(3)步骤填表1.3。

Java网上订餐系统与分析大型实验报告

Java系统与分析大型实验报告设计题目:基于JavaEE的网上订餐系统 班级:软件801 姓名:*** 学号:*** 指导老师:*** 2011年12月

1、需求分析 网上订餐系统需要提供客户快捷、方便的订餐服务,开发本系统的具体要求如下: (1)在系统首页需要提供推荐菜单、热门菜单已经菜单搜索功能,方便用户快速选购自己喜欢的菜单。 (2)系统要求用户进行注册和登录。 (3)在用户订餐完毕后,需要能够自动计算菜单价格。同时在用户提交订单时,需要用户确定订单无误,同时还将自动生成订单号,并保存到系统的剪贴板中,方便用户保存订单号。 (4)系统还需要提供会员服务功能,会员每消费一块钱将增加一积分。同时在系统首页将显示积分榜,鼓励会员消费。 (5)系统需要提供菜单分类查看功能,从而方便用户选购。 2、功能分析 模块: 餐店简介模块:用来介绍餐店信息,例如餐店名称、联系人、地址、电话等。 美食分类模块:用来分类显示美食信息,可以通过单击菜单来查看菜单详细信息,可以发表评论信息。 订餐模块:点击菜单的订餐按钮,进入购物车,提供订餐功能。 会员中心模块:用来显示会员身份信息,并提供会员信息更新功能。 订单查询模块:负责订单的查询功能,提供订单时间、订单号查询功能。 功能说明用例图: 用户 查询菜单 提交订单 删除订单图1 用户用例图

管理员 查询菜单 添加菜单 删除菜单 查询订单 删除订单 图2 管理员用例图 3、系统设计 系统流程图: 身份识别 是否合法后台订餐页面 是查看美事信息放入购物车查看购物车提交订单查看订单否 评价美食 图3 前台系统流程图 身份识别 是否合法 后台订餐页面 是增加美食删除美事查看订单删除订单修改美事信息 否 图4 后台系统流程图

现代cache技术的研究 课程设计报告

计算机组成与体系结构课程设计报告题目:现代计算机cache技术的研究 学生姓名:谱 学号: 10204102 班级:10204102 指导教师:谌洪茂 2013 年1月6日

摘要 随着集成电路制造技术的持续发展,芯片的集成度和工作速度不断增加,功耗密度显著增大,功耗已经成为计算机系统设计中与性能同等重要的首要设计约束。在现代计算机系统中,处理器速度远远高于存储器速度,Cache作为处理器与主存之间的重要桥梁,在计算机系统的性能优化中发挥着重要作用,但Cache也占据着处理器的大部分能耗。处理器及其Cache存储器是整个计算机系统能耗的主要来源,降低其能耗对于优化计算机系统,特别是嵌入式系统,有着重要的意义。本文主要研究体系结构级的低能耗技术,利用优化Cache结构和动态电压缩放两种技术来实现处理器及其Cache的低能耗。本文首先详细地分析了低能耗Cache技术的研究现状,将该技术总结为基于模块分割的方法、基于路预测的方法、添加一级小Cache的方法、优化标识比较的方法和动态可重构Cache的方法等五大类,并在此基础上,提出了带有效位预判的部分标识比较Cache、带有效位判别的分离比较Cache、基于程序段的可重构Cache等三种Cache结构。然后从不同的实现层面分析比较了现有的电压缩放技术及其缩放算法,提出了一种基于程序段的动态电压缩放算法。最后结合可重构Cache和动态电压缩放技术,提出了一种基于程序段的可重构Cache及处理器电压自适应算法。本文通过仿真实验证明了上述几种方法的有效性。本文所取得的研究成果主要有: 1.一种带有效位预判的部分标识比较Cache(PTC-V Cache)。组相联Cache实现了高命中率,但同时也带来了更多的能耗。本文针对组相联Cache,提出了一种带有效位预判的部分标识比较Cache,它能够有效地节省Cache中信号放大器和位线的能耗。结果表明,PTC-V Cache平均能够节省指令Cache中约55%的能耗。 2.一种带有效位判别的分离比较Cache(SC-V Cache)。该Cache基于路暂停Cache结构,在此基础上,设计了有效位判断和分离标识比较器。它能缩短标识比较的时间,并且减少对无效数据块读取的能耗,以确保同时获得高性能和低能耗。该方案很大程度上节省了路暂停Cache的平均能耗,尤其对于大容量Cache。 3.一种基于程序段的可重构Cache自适应算法PBSTA。该算法使用建立在指令工作集签名基础上的程序段监测状态机来判断程序段是否发生变化,并做出容量调整决定;在程序段内,该算法使用容量调整状态机来指导Cache进行容量调整。与先前的算法相比,该算法不仅有效地降低了Cache存储系统的能耗,而且减少了不必要的重构所带来的性能损失。 4.一种基于程序段的动态电压缩放算法PBVSA。该算法使用程序段监测状态机来判断程序段是否发生变化,并做出CPU电压和频率调整决定,在程序段内,该算法通过计算该程序段的频率缩放因子β(片外工作时间与片上工作时间的比例关系)来设定CPU的电压和频率。结果表明,该算法在保证系统性能的前提下,有效地降低了处理器的能耗。 5.一种基于程序段的可重构Cache 与处理器电压自适应算法CVPBSTA。该算法结合PBSTA算法与PBVSA算法的特点,使用程序段监测状态机来判断程序段是否发生变化,并做出Cache容量及CPU电压和频率的调整决定。在程序段内,该算法采用了与PBSTA相似的Cache容量调整策略和与PBVSA相似的CPU电压和频率调整策略,先后对Cache容量及CPU电压和频率进行调整。结果表明,该算法在保证性能的前提下,更大程度上地节省了系统的能耗。

CACHE的一些名词术语

CACHE的一些名词术语 Allocation 在CACHE中发现一个位置,并把新的cache数据存到这个位置的过程。这个处理过程可能包括evicting(驱逐)cache中已存在的数据,从而为新的数据腾出空间。 Associativity 指每个Set(集)里包含的line frames(行帧)数。也就是cache的way(路)数。 Capacity miss容量失效 因为cache的容量限制,导致不能包括一个程序的整个working set(工作集),从而造成cache失效。这是三个cache失效原因(容量、强制、冲突)之一。Clean干净 一个有效的cache行,它的内容没有被更高层内存或CPU修改写过,我们称这个cache行是“干净”的,显然相反状态是dirty(“脏”) Coherence一致性 如果读内存任意地址的数据返回的总是这个地址的数据最近的更新,我们说内存系统是一致的。存取指CPU和EDMA等的存取。 Compulsory miss强制失效 有时称为首次引用失效。强制失效是一种肯定发生的一种失效,因为数据事先从没有使用过也就没有机会被cache。但有些情况也被称为强制失效,尽管它们不是第一被引用的数据,比如对非写定位的cache进行同一位置的重复写,以及对一个不被cache内存区域的存取。这是三个cache失效原因(容量、强制、冲突)之一。 Conflict miss 冲突失效 由于Associativity的限制导致的而非容量限制造成的cache失效。 Direct-mapped cache直接映射cache 直接映射cache映射低层内存的每个地址到cache的一个单一位置。这样低层内存的多个地址可能被映射到cache中的同一位置上。它相当于1-way set-associative cache。 Dirty脏 对writeback回写cache,写到达多级存储结构的某一层,并更新这一层内容,但并不更新更低层的内存,这样,当一个cache行有效并包含更新后的数据,但却不更新下一更低层的内存,我们说这个cache是“脏”的,显然一个有效行的相反状态是“干净”。 DMA直接内存存取

计算机组成原理之Cache模拟器的实现

实验一Cache模拟器的实现 一.实验目的 (1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。 (2)掌握Cache容量、相联度、块大小对Cache性能的影响。 (3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。 (4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。 二、实验内容和步骤 1、启动Cachesim 2.根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。 Cache概念:高速缓冲存 Cache工作机制:大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率 3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。Cache容量块容量映射方式替换策略写策略 8 32 全相联映射先进先出算法写回法(1)Cache容量: 启动CacheSim,提示请输入Cache容量,例如1、2、4、8......。此处选择输入4。 (2)块容量: 如下图所示,提示输入块容量,例如1、2、4、8......。此处选择输入16。

(3)映射方式: 如下图所示,提示输入主存储器和高速缓存之间的assoiativity方法(主存地址到Cache地址之间的映射方式),1代表直接映射(固定的映射关系)、2代表组相联映射(直接映射与全相联映射的折中)、3代表全相联映射(灵活性大的映射关系)。此处选择全相联映射。 (4)替换策略: 如下图所示,提示输入替换策略,1代表先进先出(First-In-First-Out,FIFO)算法、2代表近期最少使用(Least Recently Used,LRU)算法、3代表最不经常使用(Least Frequently Used,LFU)、4代表随机法(Random)。此处选择先进先出。 (5)写策略: 如下图所示,提示输入Cache的读写操作,1代表写直达法(存直达法)即写操作时数据既写入Cache又写入主存、2代表写回法(拷回法)即写操作时只把数据写入Cache而不写入主存,但当Cache数据被替换出去时才写回主存。

计算机组成原理之Cache模拟器的实现

实验一Cache模拟器得实现 一、实验目得 (1)加深对Cache得基本概念、基本组织结构以及基本工作原理得理解。 (2)掌握Cache容量、相联度、块大小对Cache性能得影响。 (3)掌握降低Cache不命中率得各种方法以及这些方法对提高Cache性能得好处。 (4)理解LRU与随机法得基本思想以及它们对Cache性能得影响. 二、实验内容与步骤 1、启动Cachesim 2、根据课本上得相关知识,进一步熟悉Cache得概念与工作机制。 Cache概念:高速缓冲存 Cache工作机制:大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。程序与数据具有局限性,即在一个较短得时间内,程序或数据往往集中在很小得存储器地址范围内。因此,在主存与CPU之间可设置一个速度很快而容量相对较小得存储器,在其中存放CPU当前正在使用以及一个较短得时间内将要使用得程序与数据,这样,可大大加快CPU访问存储器得速度,提高机器得运行效率 3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略与写策略. (1)Cache容量: 启动CacheSim,提示请输入Cache容量,例如1、2、4、8、、、、、、。此处选择输入4。 (2)块容量: 如下图所示,提示输入块容量,例如1、2、4、8、、、、、、。此处选择输入16。 (3)映射方式: 如下图所示,提示输入主存储器与高速缓存之间得assoiativity方法

(主存地址到Cache地址之间得映射方式),1代表直接映射(固定得映射关系)、2代表组相联映射(直接映射与全相联映射得折中)、3代表全相联映射(灵活性大得映射关系)。此处选择全相联映射。 (4)替换策略: 如下图所示,提示输入替换策略,1代表先进先出(First-In—First—Out,FIFO)算法、2代表近期最少使用(Least RecentlyUsed,LRU)算法、3代表最不经常使用(Least Frequently Used,LFU)、4代表随机法(Random)。此处选择先进 先出. (5)写策略: 如下图所示,提示输入Cache得读写操作,1代表写直达法(存直达法)即写操作时数据既写入Cache又写入主存、2代表写回法(拷回法)即写操作时只把数据写入Cache而不写入主存,但当Cache数据被替换出去时才写回主存。此处选写回法

cache性能分析实验报告

计算机系统结构实验报告 名称: Cache性能分析学院:信息工程 姓名:陈明 学号:S121055 专业:计算机系统结构年级:研一

实验目的 1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理解; 2.了解Cache的容量、相联度、块大小对Cache性能的影响; 3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处; 4.理解Cache失效的产生原因以及Cache的三种失效; 5.理解LRU与随机法的基本思想,及它们对Cache性能的影响; 实验平台 Vmware 虚拟机,redhat 9.0 linux 操作系统,SimpleScalar模拟器 实验步骤 1.运行SimpleScalar模拟器; 2.在基本配置情况下运行程序(请指明所选的测试程序),统计Cache总失效 次数、三种不同种类的失效次数; 3.改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序), 统计各种失效的次数,并分析Cache容量对Cache性能的影响; 4.改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所 选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响; 5.改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选的测试程 序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响; 6.分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序 (指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。 预备知识 1. SimpleScalar模拟器的相关知识。详见相关的文档。 2. 复习和掌握教材中相应的内容 (1)可以从三个方面改进Cache的性能:降低失效率、减少失效开销、减少Cache命中时间。 (2)按照产生失效的原因不同,可以把Cache失效分为三类: ①强制性失效(Compulsory miss)

根据spim的cache实验

汕头大学实验报告 学院: 工学院系: 计算机系专业: 计算机科学与技术年级: 13实验时间: 2015.6.16 姓名: 林子伦学号: 2013101030实验名称:基于SPIM-CACHE的Cache实验 一.实验目的: (1)熟悉SPIM-CACHE模拟器环境 (2)深入认识CACHE的工作原理及其作用。 二.实验内容: (1)阅读实验指导书资料(虚拟教室提供了英文论文的电子版本); (2)下载SPIM-CACHE软件,理解英文论文的基本内容之后,给出几种典型的cache配置,运行英文论文提供的代码,记录运行时CACHE命中率等重要数据;(3)运行Fig.4代码,了解mapping functions 即映射规则 (4)运行Fig.7代码,了解temporal and spatial locality 即时空局部性,进一步理解cache的工作原理; (5)运行Fig.8代码,运行学习replacement algorithms 即替代算法,理解其工作原理。 三.实验地点,环境 实验地点:软件工程实验室 实验环境: 操作系统:Microsoft Windows 8 中文版 处理器:Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz 2.50GHz 内存: 4.00GB(3.82GB 可用) 四.实验记录及实验分析(80%): 4.1实验前配置: 1) 按下图配置好Spim设置

2)关于实验中cache设置如下(具体配置根据下面实验要求) ——》 ——》 Cache size ——cache大小 Block size ——块大小 Mapping ——组相连 4.2实验一:fig4.s 实验目的:Algorithm and corresponding code to study mapping functions Cache配置:256-B size, 16-B line size, four-way set associative 实验操作: 1) Ctrl+O 打开运行代码fig4.s 代码如下: .data 0x10000480 Array_A: .word 1,1,1,1,2,2,2,2 .data 0x10000CC0 Array_B: .word 3,3,3,3,4,4,4,4 .text .globl _start _start: la $2,Array_A li $6,0 li $4,8 loop: lw $5,0($2) add $6,$6,$5 addi $2,$2,4

Cache命中率分析工具的使用(附源代码)

题目:安装一种Cache命中率分析工具,并现场安装、演示。 一、什么是CPU-Cache CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容 量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解 决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读 写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。 在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先缓存中调用,从而加快读取速度。CPU包 含多个核心,每个核心又有独自的一级缓存(细分成代码缓存和数据缓存)和二 级缓存,各个核心之间共享三级缓存,并统一通过总线与内存进行交互。 二、关于Cache Line 整个Cache被分成多个Line,每个Line通常是32byte或64byte,Cache Line 是Cache和内存交换数据的最小单位,每个Cache Line包含三个部分 Valid:当前缓存是否有效 Tag:对应的内存地址 Block:缓存数据 三、Cache命中率分析工具选择 1、Linux平台:Valgrind分析工具; 2、Windows平台如下: java的Jprofiler; C++的VisualStudio2010及以后的版本中自带profile工具; Application Verifier; intel vtune等。 四、选用Valgrind分析工具在Linux-Ubuntu14.04环境下实验 1.Valgrind分析工具的常用命令功能: memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。 cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。 helgrind:用于检查多线程程序的竞态条件。 massif:堆栈分析器,指示程序中使用了多少堆内存等信息。 2.Valgrind分析工具的安装: 使用Ubuntu统一安装命令:sudo apt-get install valgrind 之后等待安装完成即可。 安装界面如图(由于我已经安装了此工具,而且没有更新的版本,图上结果为无可用升级)。

Cache控制器设计实验

实验3 Cache 控制器设计 1、实验目的 (1)掌握Cache控制器的原理及其设计方法。 (2)熟悉FPGA应用设计及EDA 软件的使用。 (3) 熟悉Vivado软件的使用及FPGA应用设计。 2、实验原理 Cache是介于CPU与主存之间的小容量存储器,包括管理在内的全部功能由硬件实现,对程序员是透明的,在一定程度上解决了CPU与主存之间的速度差异、与主存容量相比,Cac he的容量特不小,它保存的内容只是内存内容的一个子集,且Cache与主存的数据交互以块为单位、把主存中的块放到Cache中时必须把主存地址映射到Cache中,即确定位置的对应关系,并采纳硬件实现,以便CPU给出的访存地址能够自动变换成Cache地址。由于程序访问的局部性,使得主存的平均读出时间接近Cache的读出时间,大大提高了CPU的访存效率、 地址映射方式有全相联方式、直截了当相联方式、组相联方式,本实验采纳的是直截了当方式,这种变换方式简单而直截了当,硬件实现特不简单,访问速度也比较快,然而块的冲突率比较高、其主要原则是:主存中一块只能映象到Cache的一个特定的块中、假设主存的块号为B,Cache的块号为b,则它们之间的映象关系能够表示为:b=B mod Cb其中,Cb是Cache的块容量、设主存的块容量为Mb,区容量为Me,则直截了当映象方法的关系如图3、19所示。把主存按Cache的大小分成区,一般主存容量为Cache容量的整数倍,主存每一个分区内的块数与Cache的总块数相等、直截了当映象方式只能把主存各个区中相对块号相同的那些块映象到Cache中同一块号的那个特定块中、例如,主存的块0只能映象到Cache的块0中,主存的块1只能映象到Cache的块1中,同样,主存区1中的块Cb(在区1中的相对块号是0)也只能映象到Cache 的块0中、依照上面给出的地址映象规则,整个Cache地址与主存地址的低位部分是完全相同的。

cache性能分析报告

《计算机系统结构课内实验》 实验报告

一、实验目的及要求 1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理 解; 2.了解Cache的容量、相联度、块大小对Cache性能的影响; 3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能 提高的好处; 4.理解Cache失效的产生原因以及Cache的三种失效; 5.理解LRU与随机法的基本思想,及它们对Cache性能的影响; 二、实验环境 Vmware 虚拟机,redhat 9.0 linux 操作系统,SimpleScalar模拟器 三、实验内容 1.运行SimpleScalar模拟器; 2.在基本配置情况下运行程序(请指明所选的测试程序),统计 Cache总失效次数、三种不同种类的失效次数; 3.改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的 测试程序),统计各种失效的次数,并分析Cache容量对Cach e性能的影响; 4.改变Cache的相联度(1路,2路,4路,8路,64路),运行 程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响; 5.改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选 的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;

6.分别采用LRU与随机法,在不同的Cache容量、不同的相联度 下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。 四、实验步骤 1、关于simplescalar的简要说明 SimpleScalar包括多个仿真器:sim-fast ,sim-safe,sim-cache,sim-cheetah,sim-pro和sim-outorder。 本次实验使用的是sim-cache,下面说明一下sim-cache。sim-cache:在这个仿真中加入了cache,用户可以对cache及TLB 进行设置,支持两级的cache和一级的TLB,第一级cache和TLB 均分为数据和指令两部分。(摘自百度百科) 下面简要说明一下有关cache的信息: 一般来说,Cache的结构参数主要包括以下几个方面:容量、块大小、相联度、替换算法等。在SimpleScalar模拟器中,采用了两级Cache结构,同时数据和指令Cache分开。SimpleScalar的Cache参数配置命令为::::: :Cache的名称,其中: dl1:一级数据Cache; dl2:二级数据Cache; il1:一级指令Cache; il2:二级指令Cache;

Cache模拟器实验报告

Cache模拟器 一、实验目标: 程序运行时,都会对内存进行相关操作,所访问的内存地址可以被记录下来,形成memory trace文件。在本实验中,你将使用benchmark 程序产生的memory trace文件来测试Cache命中率,文件可以在https://www.wendangku.net/doc/356094661.html,/classes/fa07/cse240a/proj1-traces.tar.gz上获得。每次存储器访问都包含了三个信息: 1.访问类型,’l’表示Load操作,’s’表示Store操作; 2.地址。采用32位无符号的十六进制表示; 3.存储器访问指令之间的间隔指令数。例如第5条指令和第10条指 令为存储器访问指令,且中间没有其他存储器访问指令,则间隔指令数为4。 通过写一段程序,模拟Cache模拟器的执行过程。 二、实验要求: 写一段程序模拟Cache模拟器的执行过程,并对5个trace文件进行测试,完成以下目标: 1.请统计Load类型指令和Store类型指令在这5个trace文件中的指令比例。 2.设Cache总容量为32KB,对以下所有参数进行组合(共有72种组合),测量相应5个文件的Cache命中率。通过对命中率的分析,可以发现什么规律。

行大小:32字节、64字节、128字节 相连度:8路相联、4路相联、2路相联、1路相联 替换策略:FIFO,随机替换,LRU 写策略:写直达、写回 3. 给出5个文件的最佳Cache命中率的参数组合。针对不同的trace 文件,最佳配置是否相同。 4. 测量各种组合下Cache和主存之间的数据传输量。 5. 给出5个文件的最小数据传输量的参数组合。这个组合和第3问中得到的组合是否一致。针对不同的trace文件,最佳配置是否相同。 6. Cache缺失有三种原因:1)强制缺失;2)容量缺失;3)冲突缺失。分析这三种缺失并说明你的分析方法。 7. 请给出5个trace文件在最优Cache命中率的情况下,这三种缺失所占的比例,并和教材图C.8给出的比例进行比较。 三、程序设计与实现: 本程序我打算采用java进行编写,因为java能够很好地体现面向对象编程的优点。首先需要定义相关的数据类型。 将指令定义为一个单独的指令类,好方便操作和记录统计,其中属性包括该指令的类型,比如是Load指令还是Store指令,还包括指令的地址。 class Instruction { String type; String addrs; }

大连理工大学计算机系统结构实验-实验四

大连理工大学实验报告计算机系统结构实验 实验四Cache性能分析 学院(系):电子信息与电气工程学部专业:计算机科学与技术 学生姓名: 班级: 学号: 大连理工大学 Dalian University of Technology

实验四Cache性能分析 一、实验目的和要求 (1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。 (2)掌握Cache容量、相联度、块大小对Cache性能的影响。 (3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。 (4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。 二、实验步骤与操作方法 1、Cache容量对不命中率的影响。 (1)启动MyCache。 (2)用鼠标单击“复位”按钮,把各参数设置为默认值。 (3)选择一个地址流文件。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。 (4)选择不同的Cache容量,包括2KB、4KB、8KB、16KB、32KB、64KB、128KB和256KB。分别执行模拟器(单击“执行到底”按钮即可执行),然后在下表中记录各种情况下的不命中率。 表不同容量下Cache的不命中率 (5)以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线,并指明地址流文件名。

(6)根据该模拟结果,你能得出什么结论? 答:随着Cache容量的增大,不命中率降低,但是降低的幅度由较大差别,Cache容 量足够大以后,不命中率降到一定程度以后,降低效果不再明显。 2.相联度对不命中率的影响 (1)用鼠标单击“复位”按钮,把各参数设置为默认值。此时的Cache容量为64KB。 (2)选择一个地址流文件。 (3)选择不同的Cache相联度,包括2路、4路、8路、16路和32路。分别执行模拟器,然后在下表中记录各种情况下的不命中率。 表当容量为64KB时,不同相联度下Cache的不命中率 (4)把Cache的容量设置为256KB,重复(3)的工作,并填写下表。 表当容量为256KB时,不同相联度下Cache的不命中率 (5)以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变化的曲线,并指明地址流文件名。

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 实验平台: WinDLX模拟器 实验内容和步骤: 1.用WinDLX模拟器执行下列三个程序: 求阶乘程序fact.s 求最大公倍数程序gcm.s 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察 CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。 2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相 关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的 百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。 3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的 总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 1. 求阶乘程序 用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准 输入读入一个整数,求其阶乘,然后将结果输出。 该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。 实验结果: 在载入fact.s和input.s之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果

相关文档
相关文档 最新文档