gpt4 book ai didi

architecture - Intel 的 Sandy Bridge CPU 中 TLB 的大小是如何确定的?

转载 作者:行者123 更新时间:2023-12-01 08:51:32 30 4
gpt4 key购买 nike

wiki 网页( https://en.wikipedia.org/wiki/Sandy_Bridge )提到,对于 4KB、2MB 和 1GB 的页面,Data TLB 分别有 64、32 和 4 个条目。

我发现这些数字很难理解。 Sandy Bridge 有一个 48 位的虚拟地址,这意味着对于 4K 页面,可以有 2^36 个页面,对于 2MB 和 1GB 页面,应该有 2^27 和 2^18 个页面。如果TLB 有64 个条目用于4K 页,则每个条目的大小应不小于6+36 = 42 位。为什么 2M 页只有 32 个条目,而不是 2^15 (42-27) 个条目?

我知道在 TLB 条目中会有额外的位用于控制目的。但是对于不同的页面大小,该空间不应该是恒定的吗?

最佳答案

因为它们是 不同的 TLB。
在我的 Haswell 上用 EAX=2 执行 cpuid 并解码 TLB 描述符得到:

Instruction TLB:
              2M/4M pages, fully associative, 8 entries
              4KByte pages, 8-way, 64 entries

Data TLB:
              2M/4M pages, 4-way, 32 entries and a separate array with 1 GByte pages, 4-way, 4 entries
              4 KByte pages, 4-way, 64 entries

Shared 2nd-Level TLB:
              4 K/2M pages, 8-way, 1024 entries



TLB 缓存是一种高度特化的 CAM 具有固定布局,它不是具有通用布局的暂存存储器。

一些 TLB 可以处理超过一页的大小,但这些都是权衡,因为信息是以一种通用格式缓存的。
使用不同的 TLB 处理不同的页面大小可以提高缓存命中率,就像使用 DTLB 和 ITLB 一样。

数据缓存的工作方式不同,因为它们不缓存信息,它们缓存没有布局的数据,这就是为什么以 KiB 为单位给出大小是有意义的,但对于处理结构化信息的缓存则不然。

关于architecture - Intel 的 Sandy Bridge CPU 中 TLB 的大小是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40649655/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com