首页 习题正文

45.假设对于44题中的计算机 M 和程序 P的机器代码,M

45.假设对于44题中的计算机
M、和程序 P的机器代码,M采用页式虚拟存储管理∶ P开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码已调入主存但不在 Cache中;数组 A未调入主存,且所有数组元素在同一页,并存储在磁盘同一个扇区。请回答下列问题并说明理由。 1)P执行结束时,R2的内容是多少? 2)M 的指令Cache 和数据Cache分离。若指令 Cache 共有16行,Cache 和主存交换的块大小为32字节,则其数据区的容量是多少?若仅考虑程序段P的执行,则指令 Cache 的命中率为多少? 3)P在执行过程中,哪条指令的执行可能发生溢出异常?哪条指令的执行可能产生缺页异常?对于数组 A的访问,需要读磁盘和TLB至少各多少次?



【参考答案及解析】
该题继承了上题中的相关信息,统考中首次引入此种设置,具体考察到程序的运行结果、Cache 的大小和命中率的计算以及磁盘和 TLB的相关计算,是一题比较综合的题型。 (1)R2里装的是i的值,循环条件是iN(1000),即当i自增到不满足这个条件时跳出循环,程序结束,所以此时i的值为1000。(1分) (2)C ache共有16行,每块32字节,所以Cache数据区的容量为16*32B=512B。(1分)P共有6条指令,占24字节,小于主存块大小(32B),其起始地址为0804 8100H,对应一块的开始位置,由此可知所有指令都在一个主存块内。读取第一条指令时会发生 Cache 缺失,故将 P 所在的主存块调入 Cache 某一行,以后每次读取指令时,都能在指令 Cache 中命中。因此在1000次循环中。只会发生1 次指今访问缺失。所以指令Cache 的命中率为(1000×6-1)/(1000×6)=99.98%。(2分) 【评分说明】 若考生给出正确的命中率,而未说明原因和过程,给1分。若命中率计算错误,但解题思路正确,可酌情给分。 (3)指令4为加法指令,即对应 sum+=A[i],当数组A中元素的值过大时,则会导致这条加法指令发生溢出异常∶而指令 2、5 虽然都是加法指令。但他们分别为数组地址的计算指令和存储变量i的寄存器进行自增的指令,而i最大到达 1000,所以他们都不会产生溢出异常。(2分) 只有访存指令可能产生缺页异常,即指令3可能产生缺页异常。(1分) 因为数组 A在磁盘的一页上,而一开始数组并不在主存中,第一次访问数组时会导致访益,把A 调入内存,而血以后数组A 的元素都在内存中,则不会导致访盘,所以该程序共访盘一次。(2分) 每访问一次内存数据就会查 TLB一次,共访问数组1000次,所以此时又访问 TLB1000 次,还要考虑到第一次访问数组A,即访问 A[0]时,会多访问一次 TLB(第一次访问 A[0]会先香一次TLB,然后产生缺页,处理完缺页中断后,会重新访问 A[0],此时又香TLB),所以访问TLB的次数一共是1001次。(2分) 【评分说明】 ①对于第1问,若答案中除指令 4外还包含其他运算类指令(即指令1、2、5),则给1 分,其他情况,则给0分。 ②对于第2问,只要回答"load指令",即可得分。 ③对于第3问,若答案中给出的读 TLB的次数为 1002,同样给分。若直接给出正确的TLB及磁盘的访问次数,而未说明原因,给3分。若给出的 TLB及磁盘访问次数不正确,但解题思路正确,可酌情给分。

正在整理中,欢迎在文下评论区提供答案解析,谢谢!
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接:https://scpro.cn/v/018ef9b4b7d94f09.html