for(k=0; k<1000; k++) a[k] = a[k]+32;
若数组a及变量k均为int型,int型数据占4B,数据Cache采用直接映射方式,数据区大小为1KB、块大小为16B,该程序段执行前Cache为空,则该程序段执行过程中访问数组a的Cache缺失率约为 ()
1.25%
2.5%
12.5%
25%
解析:
分析语句“a[k]=a[k]+32”:首先读取a[k]需要访问一次a[k],之后将结果赋值给a[k]需要访问一次,共访问两次。第一次访问a[k]未命中,并将该字所在的主存块调入Cache对应的块中,对于该主存块中的4个整数的两次访问中只在访问第一次的第一个元素时发生缺失,其他的7次访问中全部命中,故该程序段执行过程中访问数组a的Cache缺失率约为1/8(即12.5%)。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
解析:
分析语句“a[k]=a[k]+32”:首先读取a[k]需要访问一次a[k],之后将结果赋值给a[k]需要访问一次,共访问两次。第一次访问a[k]未命中,并将该字所在的主存块调入Cache对应的块中,对于该主存块中的4个整数的两次访问中只在访问第一次的第一个元素时发生缺失,其他的7次访问中全部命中,故该程序段执行过程中访问数组a的Cache缺失率约为1/8(即12.5%)。