【深大计算机系统(2)】实验五 Cache实验 实验报告 附实验代码、常用指令、实验数据

目录

一、实验目的:

二、实验环境:

三、实验内容与步骤:

四、实验过程及内容:

1. 分析Cache访存模式对系统性能的影响:

2. 测量分析出Cache 的层次结构、容量以及L1 Cache行有多少?

3. 尝试测量你的x86机器TLB有多大?(选作)

五、实验总结与体会

尾注

附录:

实验代码:

1. 矩阵运算代码:

2. mountain绘图代码(matlab):

3. 测量TLB代码:

常用虚拟机指令:


写在前面:

上交的实验报告需要包含账户的姓名全拼以及学号,本报告的相应部分已经打码处理,请在自己的环境中完成实验!

一、实验目的:

1.    加强对Cache工作原理的理解;

2.    体验程序中访存模式变化是如何影响cahce效率进而影响程序性能的过程;

3.    学习在X86真实机器上通过调整程序访存模式来探测多级cache结构以及TLB的大小。

二、实验环境:

X86真实机器

三、实验内容与步骤:

1. 分析Cache访存模式对系统性能的影响

        (1)给出一个矩阵乘法的普通代码A,设法优化该代码,从而提高性能。

        (2)改变矩阵大小,记录相关数据,并分析原因。

2. 编写代码来测量x86机器上(非虚拟机)的Cache 层次结构和容量

        (1)设计一个方案,用于测量x86机器上的Cache层次结构,并设计出相应的代码;

        (2)运行你的代码获得相应的测试数据;

        (3)根据测试数据来详细分析你所用的x86机器有几级Cache,各自容量是多大?

        (4)根据测试数据来详细分析L1 Cache行有多少?

3. 尝试测量你的x86机器TLB有多大?(选作)

四、实验过程及内容:

准备工作:

        首先在虚拟机桌面上新建一个实验五的文件夹experiment_5用于保存本实验所用的所有文件。下载main_a.c文件后使用指令gcc -o main_a main_a.c 进行编译,发现没有错误。

图:编译main_a.c

        图中,第一次编译错误是由于“-o”的命令出错,具体原因是ppt中给出的指令使用的符号并不是标准的“-”,而是“–”,导致机器无法识别。修改后即可正确编译并生成可运行文件。

接下来即可开始实验:

1. 分析Cache访存模式对系统性能的影响:

        使用指令./main_a x,以x*x为矩阵的大小运行程序./main_a,并记录运行时间,填入表中(单位为秒)。

        接下来阅读源代码,并尝试优化:

        阅读代码可以得知,程序的主要功能是实现两个矩阵的相乘运算,将大小为x*x的矩阵a,b相乘的结果保存在矩阵c中。但此代码的空间局部性较差,常常访问距离当前访问地址较远的地址,具体而言,在对c某个位置的计算时,对矩阵b的访问中,程序每次访问的地址将会增加size,此时如果size较大,访问的空间将会距离较大,因此空间局部性差。

        优化方法:将原始的整块矩阵相乘拆分为一个个小矩阵块相乘,从而提高了空间局部性,提高运行效率。计算部分的代码如图:

图:核心代码

        其中,BLOCK_SIZE即为矩阵块的大小。

        接下来,由于我们并不能直接确定块的合适大小,因此我尝试将此参数进行多次调整,找到一个较优的值:

图:参数调整过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值