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

问题 以下是计算两个向量点积的程序段:
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)中条件不变的情况下,如果将数组x定义为float[12],则数据访问的命中率又是多少?

选项

答案若(2)中条件不变,数组x定义了12个元素,则12个元素共有48B,使得y从主存第7块开始存放,即x[0]~x[3]在主存第4块,x[4]~x[7]在主存第5块,x[8]~x[11]在主存第6块中,y[0]~y[3]在主存第7块,y[4]~x[7]在主存第8块。因而,x[i]和y[i](0≤i≤7)就不会映射到同一个Cache行中。每调入一个主存块,装入4个数组元素,第一个元素不命中,后面3个总命中,所以命中率为75%。

解析
转载请注明原文地址:https://jikaoti.com/ti/yEfjFFFM
0

最新回复(0)