有如下C语言程序段: for (k=0; k<1000; k++) a[k]=a[k]+32; 若数组a及变量k均为int型, int型占4B,数据Cache采用直接映射方式,数据区大小为1KB,块大小为16B,该程序段执行过程中访问数组a的Cache缺失率约为 A. 1.25% B. 2.5 % C.12.5 % D. 25 %
a[k]的访问步骤是:先访问cache,cache缺失,之后从主存中取出一个块(有4个int)调入cache,这个块中的后几个数据都是命中的,本题中一个数据占4B,一个块大小是16B,这说明一个块中有4个数据,关键是后面还有一次写,每个数据都有一次访问(数组)和一次写(赋值),这说明一次循环要2*4=8次访问cache,其中只有第一次访问(数组)是缺失的,后面七次都是命中的,所以缺失率是12.5%;
答案解析:C,a[k]的访问步骤是...
用户登录可进行刷题及查看答案
答案解析:C,a[k]的访问步骤是:先访问cache,cache缺失,之后从主存中取出一个块调入cache,这个块中的后几个数据都是命中的,本题中一个数据占4B,一个块大小是16B,这说明一个块中有4个数据,关键是后面还有一次写,这说明一次循环要八次访问cache,其中只有第一次是缺失的,后面七次都是命中的,所以缺失率是12.5%。
登录后提交答案