某C语言程序段如下:
for (i=0; i<=9; i++) { temp=1; for (j=0; j<=i; j++) temp*=a[j]; sum+=temp; }
下列关于数组a的访问局部性的描述中,正确的是( )。
A. 时间局部性和空间局部性皆有
B. 无时间局部性,有空间局部性
C. 有时间局部性,无空间局部性
D. 时间局部性和空间局部性皆无
由4个DRAM芯片采用交叉编址方式构成主存可知主存地址最低二位表示该字节存储的芯片编号。
double型变量占64位,8个字节。它的主存地址804 001 AH最低二位是10,说明它从编号为2的芯片开始存储(编号从0开始)。
时间局部性指的是程序在某个时间点访...
用户登录可进行刷题及查看答案
时间局部性指的是程序在某个时间点访问的数据或指令很可能在未来的某个时间点再次被访问。换句话说,如果程序在某个时刻访问了一条指令或数据,那么在接下来的一段时间内,程序可能会再次访问相同的指令或数据。这种局部性特性可以通过缓存来提高程序的执行效率。缓存将最近被访问过的数据或指令保存在高速存储器中,以便更快地满足程序的访问需求。
空间局部性指的是程序在某个时间点访问的数据或指令的附近地址上的数据或指令也很可能在接下来的一段时间内被访问。换句话说,如果程序在某个时刻访问了特定的数据或指令,那么在其附近的地址上的数据或指令也很可能在接下来的访问中被访问到。这种局部性特性可以通过预取和数据块传输来提高程序的访问效率。预取将紧邻的数据或指令提前加载到高速缓存中,而数据块传输则是将一块数据同时传输到高速缓存以满足未来的访问。
for循环具有时间局部性,每次迭代调用的指令序列相同,所以第一次迭代的指令在第二次迭代中将再次被访问。每次迭代调用的部分数据相同,分析代码可知,外层for循环每次迭代都会访问a[0]且会访问上一次迭代访问过的元素。
数组占用一段连续的内存区域,所以相邻的数组元素大概率在一个块中,根据内层for循环的代码,可知程序依次访问a[0], a[1], …, a[i],符合空间局部性的性质。
综上,该C语言程序段时间局部性和空间局部性皆有。
本题选A。
登录后提交答案