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

admin2017-11-20  32

问题 以下是计算两个向量点积的程序段:
float dotproduct(float x[8],float y[8])
{
    float sum=0.0;
    int i;
    for(i=0;i<8;i++)
    sum+=x*y
    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/FNRi777K
0

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