1)所以让我们说一个单级页表
3)发生TLB未命中
3)所需的页表位于主存储器
问题:MMU是否总是获取其中的多个寄存器所需的页表,以便可以执行像TLB这样的快速硬件搜索?我想这不会是昂贵的硬件
4)MMU获取物理页码(我猜MMU必须以高n位格式保存,如虚拟页面编号和低m位作为物理页面帧号。请纠正并解释我是否错误)
问题:我想必须有一个键值映射,其中虚拟页面号为关键和物理帧号。作为价值。 MMU如何在页面表中搜索密钥。如果它是线性搜索的s / w,那么它将非常昂贵。
5)使用硬件,它将偏移位附加到页框号
最后读取物理地址。
所以这个问题让我很烦恼,MMU如何在页面表中搜索给定的密钥(虚拟页面条目)?
答案 0 :(得分:2)
如果页面使用页表的寄存器是令人满意的 表格相当小(例如,256个条目)。最现代的 但是,计算机允许页表非常大(对于 例如,100万条)。对于这些机器,使用速度快 寄存器实现页表是不可行的。相反, 页面表保存在主内存中,页面表格基本寄存器( PTBR )指向页面表。 更改页表只需要更改这一个寄存器, 大大减少了上下文切换时间。
这个问题 方法是访问用户存储器位置所需的时间。要是我们 想要访问位置 i ,我们必须首先索引到页面表, 使用PTBR中的值偏移 i 的页码。这个任务 需要内存访问权限。它为我们提供了帧号 与页面偏移量组合以产生实际地址。我们可以 然后访问内存中的所需位置。有了这个方案,两个内存 访问一个字节需要访问(一个用于页表条目, 一个字节)。因此,内存访问速度减慢了2倍。 在大多数情况下,这种延迟是不能容忍的。我们可能会这样 很好地交换!
这个问题的标准解决方案是 使用一个特殊的小型fastlookup硬件缓存,称为转换后备缓冲区(TLB)。该 TLB是关联的高速内存。 TLB中的每个条目都包含在内 两部分:一个键(或标签)和一个值。当联想记忆时 出现一个项目,该项目与所有键进行比较 同时。如果找到该项,则相应的值字段为 回。搜索速度很快;然而,硬件很昂贵。 通常,TLB中的条目数量很少,通常是编号 介于64和1,024之间。
资料来源: Silberschatz等人的操作系统概念。第333页