题30

题目

Q:【2016 统考真题】有如下 C 语言程序段:

for (k = 0; k < 1000; k++)
    a[k] = a[k] + 32;

若数组 a 以及变量 k 均为 int 型,int 型数据占 4B,数据 Cache 采用直接映射方式,数据区大小是 1KB,块大小是 16B,该程序段执行前 Cache 为空,则该程序段执行过程中,访问数组 a 的 Cache 的缺失率是( )。
A. 1.25%
B. 2.5%
C. 12.5%
D. 25%

分析

A:分析语句 “ ” : 首先读取 需要访问一次 ,之后将结果赋值给 需要访问一次, 共访问两次。
第一次访问 未命中,并将该字所在的主存块调入 Cache 对应的块中, 对该主存块中的 4 个整数的两次访问中, 只在访问第一次的第一个元素时发生缺失, 其他的 7 次访问中全部命中, 因此该程序段执行过程中访问数组 a 的 Cache 缺失率约为 1/8。

C