单级分页内存管理器...访问内存所需的时间

单级分页内存管理器...访问内存所需的时间

如果我的系统带有单级分页内存管理器(无 TLB),那么该系统访问内存需要多长时间?在没有内存管理器的情况下,我的阅读时间是原来的两倍。这是真的吗?如果不是,那么在没有内存管理器的情况下需要多长时间(大概)呢?

答案1

如果你使用 MMU,每次内存访问都必须查找从虚拟地址到物理地址的映射,这会导致每级内存访问一次的开销页表层次. 实践中,大多数现代 MMU 采用大约三个级别。

此数据结构有一个分为多个级别的表。第一级对应于虚拟地址的高位,下一级对应于接下来的几位,依此类推。从虚拟地址映射到物理地址涉及在页表的每个级别查找虚拟地址的相关位。叶节点在物理内存中有一个页码,还有一些标记保护、脏页以及页面是否物理存在于内存中的标志。

在某些架构(例如 SPARC64 和 PPC)中,有一种称为“倒排页表'用作标准分层页表在如此大的地址空间中可能太大或太深。倒置页表在进程地址空间中为每个虚拟页面都有一个条目,并使用哈希来查找物理页面数据。这名义上是 O(1),但可能导致冲突,从而导致额外的内存访问。

可以推测,这个过程相当缓慢,尤其是当页表数据不在缓存中并导致缓存未命中成本(可能需要数百个周期)时。幸运的是,MMU 访问通常表现出非常高的引用局部性,因此它们适合缓存。逻辑物理页面映射的缓存机制称为转换后备缓冲区 (TLB)。

转换后备缓冲区缓存映射,从而减少必须遍历页表数据结构的次数。通常,只需要一个相当小的 TLB 即可获得良好的效率,尽管编写以破坏 TLB 的模式访问内存的代码相当容易。

如果没有 MMU,内存访问就不必进行任何间接访问,因此它与系统上的内存访问一样长,但缓存访问模式的优化仍然会对性能产生很大影响。

答案2

不幸的是,您需要提供更准确的信息才能得到答案,但我会尝试:

这取决于分页内存管理器的工作方式、设置以及与它一起使用的系统组件。“两倍长”可能是一个不错的大概数字,但您只能通过亲自测试是否使用内存管理器才能真正知道。

相关内容