某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下:假定int类型数据用32位补码表示,程序

admin2013-04-26  90

问题 某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下:假定int类型数据用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?

选项

答案编译时i、j、sum均分配在寄存器中,故数据访问命中率仅考虑数组a的情况。①该程序的特点是数组中的每个元素仅被使用一次。数组a按行优先存放,数据Cache正好放下数组半行中的全部元素,即元素的存储顺序与使用次序高度的吻合,每个字块的16个int型元素中,除访问的第一个不会命中,接下来的15个都会命中。访问全部字块都符合这一规律,故命中率为15/16,即程序A的数据访问命中率为93.75%。②程序B按照数组的列执行外层循环,在执行内层循环的过程中,将连续访问不同行的同一列的数据,不同行的同一列数组使用的是同一个Cache单元,每次都不会命中,故命中率为0。由于从Cache读数据比从主存读数据快很多,所以程序A的执行比程序B快得多。

解析
转载请注明原文地址:https://kaotiyun.com/show/E5xi777K
0

相关试题推荐
最新回复(0)