您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 实验八-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
本文标题:实验八-cache和程序访问的局部性
链接地址:https://www.777doc.com/doc-5896983 .html