cache命中率实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矩阵乘程序的cache失效率实验

实验目的:

使用project4中实现的cache验证结论:对于矩阵乘程序,当矩阵规模N=512(或1024)时,数据cache的失效率高于N=513(或1025)时的。

实验环境:

Dev-c++。

实验内容:

使用for循还将地址流保存到二位数组中,随后模拟矩阵乘运算的过程,计算当N=512、513、1024、1025时cache的命中率(源代码中N为DATA)。

方法一是通过真实执行矩阵乘运算来计算cache命中率,而方法二仅仅是模拟取地址的过程,可见方法二的操作包含在方法一的操作中,故显然方法二的时间比方法一的时间短。

实验非常重要的一项内容就是优化算法,使得程序执行时间变短,为此,我分别采用了三种方法来计算地址流:

1、使用三个大小为N的矩阵,其将其内容循环赋值为a、b、c的地址然后依次对相应地址进行访问。该方法的优点是算数运算较少,且简单直接,但是执行时间较长。

2、将地址流写入文件,然后读取文件内容进行访问。但是在实际操作时发现,由于矩阵太过庞大,导致文件过大无法实现(当矩阵大小为1025时,我发现txt文件大小为10G 多而且还在不断变大,所以就果断的杀掉还在执行的程序,并且放弃了这种方法)。

3、不将地址流保存,而是在访问过程中计算地址流,但是由于算数运算过多,时间也并不快。

综上考虑,仍然使用第一种方法实现本实验。

结果检验:

由于算法实现问题,导致程序执行需要较长时间,但是从结果上依然能够证明当矩阵规模N=512(或1024)时,数据cache的失效率高于N=513(或1025)时的。

相关文档
最新文档