首页 > 试题广场 >

以下是计算两个向量点积的 C 语言程序段,假定数据 Cach

[问答题]
以下是计算两个向量点积的 C 语言程序段,假定数据 Cache 采用 2-路组相联映射方式, 数据区容量为 64 字节,每个主存块大小为 16 字节;编译器将变量 sum 和 i 分配再寄存器中, 数组 a 存放在 0000 0040H 开始的 48 字节的连续存储区中,数组 b 则紧跟在 a 后进行存放。 请回答下列问题。
float dotmultiply(float a[12], float b[12]){
float sum=0.0;
int i;
for(i=0;i<12;i++)
sum+=a[i]*b[i];
return sum;
}
(1)说明访问数组 a 和 b 的局部性?
(2)该程序数据访问的命中率是多少?
(3)若 CPU 通过存储总线读取数据的过程为:发送地址和读命令需要 1 个时钟周期,存储 器准备 1 个数据需要 6 个时钟周期,总线上每传送 1 个数据需要 1 个时钟周期,存取宽度和 总线宽度都为 4 字节,则 Cache 一次缺失损失至少为多少个时钟周期?
3
发表于 2020-05-11 11:01:31 回复(0)