实验八-cache和程序访问的局部性

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机组成原理实验报告实验八cache和程序访问的局部性201411011120高敏一、实验目的通过实际程序的执行结果,了解程序访问的局部性对带有cache的计算机系统性能的影响。二、实验要求在main函数中定义一个16*16二维整形数组,然后分别调用程序A和程序B对二维数组中的元素进行求和。在代码中增加计时函数,比较程序A和程序B执行时间是否有差异。程序段Adoublesum_array_rows(doublea[16][16]){doublesum=0;for(intr=0;r16;r++){for(intc=0;c16;c++){sum+=a[r][c];}}returnsum;}程序Bdoublesum_array_cols(doublea[16][16]){doublesum=0;for(intc=0;c16;c++){for(intr=0;r16;r++){sum+=a[r][c];计算机组成原理实验报告}}returnsum;}三、实验报告1、给出源程序(文本文件)和执行结果。程序Aintmain(intargc,constchar*argv[]){doublesum;intcount;doubleTotal_time;clock_tstart,finish;doublea[16][16];inti,j;for(i=0;i16;i++){for(j=0;j16;j++){a[i][j]=1;}}start=clock();for(count=0;count1000;count++)sum=sum_array_rows(a);finish=clock();Total_time=(double)(finish-start)/CLOCKS_PER_SEC;printf(A=%fseconds\n,Total_time);return0;}运行结果程序B:intmain(intargc,constchar*argv[]){doublesum;intcount;doubleTotal_time;clock_tstart,finish;doublea[16][16];inti,j;计算机组成原理实验报告for(i=0;i16;i++){for(j=0;j16;j++){a[i][j]=1;}}start=clock();for(count=0;count1000;count++)sum=sum_array_cols(a);finish=clock();Total_time=(double)(finish-start)/CLOCKS_PER_SEC;printf(A=%fseconds\n,Total_time);return0;}运行结果执行时间有差异,计算二维数组和时,先算行的计算时间比先算列的时间更短。2、对实验结果进行分析,说明局部数据块大小、数组访问顺序等和执行时间之间的关系。在局部数据块大小相同情况下,数组访问顺序按照行优先访问的顺序,执行时间更短。因为计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。一般采用顺序存储方法表示数组。C语言中,数组按行优先顺序存储。即将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。二维数组Amn的按行优先存储的线性序列为:a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功