虚拟内存,LRU和页面错误 - 家庭作业

时间:2012-05-04 14:30:15

标签: mips virtual-memory lru page-fault

我一直在研究以下程序,感觉它缺少一些信息或a)和b)有点诡计:

循环作为虚拟内存系统上程序的一部分执行,该系统使用4KB页面。假设在需要时使用LRU替换算法来选择要在存储器中替换的页面。标记为“开始”的指令从页面边界开始,循环体包含4601对移位指令(sll& srl)。

Start:  addi    $3,$0,32

Loop:   sll $4,$4,1

srl $4,$4,1

...         # previous two instructions are

...         # repeated  4600 times

addi    $3,$3,-1

bne $3,$0,loop

a)如果内存包含8个4KB帧,在执行循环期间会发生多少页错误?

b)如果内存包含9个4KB帧,在执行循环期间会发生多少页面错误?

不会a)和b)都是5页错误吗?每次循环时有4602条指令,MIPS指令为4B,页面大小为4KB。 4KB / 4B =每页1024条指令,因此第一次循环:

指令0 - 1023第0帧错误是

说明1024 - 2047第1页错误是

说明2048 - 3071第2页错误是

说明3072 - 4096第3页错误是

指令4096 - 4602第4页错误是

因此,当我们在第二次交互时回到循环中时,LRU策略尚未替换页面,因此我们可以再次引用它们。为什么这会改变我们在32次循环迭代中是否有8帧或9帧?

1 个答案:

答案 0 :(得分:0)

循环体包含4601个移位指令。除了addibne说明外,每个循环总共有 9204 指令。