以下是计算两个向量点积的程序段: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];

admin2018-07-17  19

问题 以下是计算两个向量点积的程序段: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.路组相联映射方式,块大小改为8字节,其他条件不变,则该程序数据访问的命中率是多少?

选项

答案若Cache改用2—路组相联,块大小改为8B,则Cache共有4行,每组2行,共2组。两个数组元素占一个主存块。数组x占4个主存块,数组元素x[0]~x[1]、x[2]~x[3]、x[4]~x[5]、x[6]~x[7]分别在第8~11块中(与上题同理,这里00H~07H为第0块,08H~0FH为第1,以此类推);数组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个数组元素中,第2个数组元素总是命中,故命中率为50%。 [*]

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

最新回复(0)