计算机考研408统考真题及答案解析

您所在的位置:网站首页 计算机考研历年真题及答案 计算机考研408统考真题及答案解析

计算机考研408统考真题及答案解析

2024-07-09 15:06| 来源: 网络整理| 查看: 265

解答:

(1) 第一问。数组a分为2个页面存储。根据C语言程序段,数组a共有24×64=1536个元素,每个数组元素类型为int,sizeof(int)=4,即一个元素占4B内存,所以数组a占1536×4B=6KB内存。页面大小为4KB,数组元素在内存空间连续存放,需要占 ⌈6KB/4KB⌉=2 个页面。

第二问。对于数组a的访问,会发生2次缺页异常。因为在M上执行上述程序段之前数组a不在主存,且数组a分为2个页面存储。所以当访问这两个页面中第一个元素时,页面尚未调入内存,会产生缺页异常,总计2次缺页异常。

第三问。两个页故障地址分别是0042 2000H和0042 3000H。虚拟地址格式为,页面大小为4KB= 2^12 B,按字节编址,页内地址占低12位,虚拟地址为32位,虚页号占高32-12=20位。数组a在虚拟地址空间中分配的起始地址为0042 2000H,第一次缺页访问虚拟页号为0042 2H,数组元素在内存空间从低地址到高地址连续存放,所以第二次缺页访问虚拟页号为0042 3H,访问该页面第一个元素所在页内地址为000H,即访问位置为0042 3000H。所以两个页故障地址分别是0042 2000H和0042 3000H。

(2) 第一问。该程序段的数据访问没有时间局部性。

第二问。时间局部性是指如果某数据被访问过,不久以后该数据可能再次被访问。显然a中每个元素仅被访问1次,不存在重复访问,所以没有时间局部性。

(3) 第一问和第二问。组相联映射格式为  ,主存块大小为32B= 2^5 B,按字节编址,块内地址占低5位,数据区大小为8KB,有8KB/32B= 2^8 行,数据Cache采用4路组相联映射,有 2^8/4=2^6 组,组号占中间6位,虚拟地址为32位,主存字块标记占高32-5-6=21位。综上,虚拟地址中低5位(A4~A0)用作块内地址,低11位中高6位(A10~A5)用作Cache组号。

a[1][0]的虚拟地址0042 2100H。因为a的起始地址为0042 2000H,一行有64个元素,一个元素占4个地址单元,所以a[1][0]的虚拟地址是0042 2000H+(64×1+0)×4H=0042 2100H。

第四问。a[1][0]所在主存块对应的Cache组号是8。因为a[1][0]的虚拟地址0042 2100H =  ,组号001 000B=8。

(4) 第一问。数组a占192个主存块。根据(1)第一问的结论,数组a占6KB内存,主存块大小为32B,由于a的起始地址为0042 2000H =  ,第一个元素的块内地址是00000B=0,也就是数组a占用每个块都是用a中元素占满了,不存在数组a占了某个块的仅一部分内存空间的情况。所以数组a恰好占6KB/32B=192个主存块。

第二问。数组a的Cache命中率为87.5%。主存块大小为32B,数组a每个元素大小为4B,一个主存块包含32B/4B=8个元素,数组a按行优先存放,C语言程序段按行访问数组元素,每个元素仅访问一次,所以每访问每个主存块中第一个元素产生Cache缺失,剩余8-1=7次Cache命中,所以数组a的Cache命中率为7/8=87.5%。

第三问。数组a的Cache命中率为87.5%。将循环中i和j的次序调换后的C语言程序段按列访问数组元素,数据Cache采用4路组相联映射,a的起始地址为0042 2000H。

数组a按行优先存放,外层循环j总共有64次迭代,外层循环j的每8次迭代元素都会被映射到8个组中,数组a共有24行,外层循环j的每一次迭代只会映射到这8个组中某24/8=3行,每组有4行,3



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3