8得票1回答
1GB页面和透明巨大页面(Linux)

最近的Linux内核中,透明巨型页面(THP)支持自动在不同页面大小(例如在x86-64中为4KB和2MB)之间进行提升/降级。但我不确定THP是否也可以在4KB和1GB页面之间,或者是在2MB和1GB页面之间进行页面大小的提升/降级。请问有人能对此发表评论吗?

7得票1回答
Linux内核使TLB条目无效化

在 Linux 内核中,我编写了类似 copy_page_range(mm/memory.c)的代码,以 COW 优化的方式将内存从一个进程复制到另一个进程。目标和源地址可以通过 PAGE_SIZE 进行偏移,COW 仍然有效。然而,我发现在用户程序中,当我从同一源地址复制到不同的目标地址时,...

7得票1回答
如何使用户进程引起TLB抖动?

我的当前工作需要在英特尔Core系列CPU上生成指定数量的TLB(转换后备缓冲器)失效,但是进展并不顺利。我尝试了许多方法,但它们都有非常高的TLB命中率。是否有人知道关于x86 TLB如何工作的一些有用信息,或者一些在用户进程中生成大量TLB失效的方法?

7得票2回答
在x86架构上跨页面边界进行软件预取

我的理解是,硬件预取永远不会跨越页面边界。我想知道软件预取是否有同样的限制,即我是否可以使用软件预取来避免未来的TLB缺失。从搜索结果来看,这似乎是可能的,但我在文档中没有找到确定性的说明,因此需要提供参考文献。 我特别关注 Nehalem、Sandy Bridge 和 Westmere。

7得票1回答
VIPT缓存:TLB和高速缓存之间的连接?

我只是想澄清这个概念,并找到足够详细的答案,以便了解硬件中实际的工作原理。请提供任何相关细节。 在VIPT缓存的情况下,内存请求同时发送到TLB和Cache。 从TLB中获取翻译后的物理地址。 从缓存索引中获取标记列表(例如,来自属于集合的所有高速缓存行)。 然后将翻译的TLB地址与标记...