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

admin2014-04-17  39

问题 以下是计算两个向量点积的程序段:
    float dotproduet(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/Vlxi777K
0

最新回复(0)