【问题标题】:Page size and block size页面大小和块大小
【发布时间】:2015-02-28 04:33:21
【问题描述】:

我们都知道在从虚拟地址到物理地址的地址转换中,低位用作页面偏移量,因此它们不被转换。相反,它们保持不变。这意味着虚拟内存中的页面大小与物理内存相同。

我们也知道,当使用取模方法将一个块从内存移动到缓存中时,两边的块大小是相同的。

我的问题是,这是否意味着虚拟内存中的页面大小应该与缓存中的块大小相同。

【问题讨论】:

    标签: caching virtual-memory


    【解决方案1】:

    不,缓存行是一种大小(例如:16、32 或 64 字节),虚拟页面是另一种独立大小(通常是 4K)。

    将整个 4K 页面读取到缓存中会太慢,并且对于大多数用例而言缓存无效,因此 CPU 使用更小的缓存行。

    【讨论】:

    • 为什么我会在需要时将 4K 从磁盘移动到内存,而我在缓存中需要的所有大小都是 64 字节。我不明白我将如何处理我没有使用的其余 4k。
    • 因为您只能将整个页面标记为可访问或不可访问。页面大得多的原因是由于较小页面所需的页表大小。映射 4GB 的 4KB 页面需要超过 4MB,如果页面是 64 字节,则需要超过 256MB 的页表才能在 32 位 CPU 上映射整个 4GB 内存。从 HDD 读取 1 个扇区的开销也很高,而读取多个连续扇区之后的开销要低得多,因此一次读取 4KB 的效率很高。
    • 如果我的块大小是 128MB,我想做 64KB 的页面怎么办?这有意义吗?
    猜你喜欢
    • 2011-08-21
    • 2018-03-09
    • 2010-10-10
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多