以下是计算两个向量点积的程序段: float dotproduct (float x L83 f float y [8] ) float sum=0.0; int i; for (i=0;i<8;1++) sum+=x [i] *y [i) ; re

admin2017-04-28  34

问题 以下是计算两个向量点积的程序段:
float  dotproduct (float  x L83 f float  y [8] )
float sum=0.0;
int i;
for (i=0;i<8;1++)
sum+=x *y [i) ;
return sum;
}
试回答以下问题:
将上述(2)中的数据Cache改用2—路组相联映射方式,块大小改为8B,其他条件不变,则该程序数据访问的命中率是多少?

选项

答案若Cache改用2一路组相联,块大小改为8B,则Cache共有4行,每组两行,共两组。两个数组元素占一个主存块。数组x有4个主存块,x[0]~x[1]、x[2]~x[3],x[4]~x[5],x[6]~x[7],分别在主存第8~11块中;数组y有4个主存块,y[0]~y[1]、y[2]~y[3],y[4]~y[5],y[6]~y[7],分别在主存第12~15块中;因为每组有两行,所以x[i]和y[i](0≤i≤7)虽然映射到同一个Cache组,但可以存放到同一组的不同Cache行内。因此,不会发生冲突。每调入一个主存块,装入的两个数组元素中,第2个数组元素总是命中的,所以命中率为50%。

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

最新回复(0)