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

admin2014-04-17  31

问题 以下是计算两个向量点积的程序段:
    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)中条件不变的情况下,如果将数组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/W3ajFFFM
0

最新回复(0)