Architecture 英特尔&x27;桑迪桥在哪里?

Architecture 英特尔&x27;桑迪桥在哪里?,architecture,cpu,tlb,Architecture,Cpu,Tlb,wiki网页()提到,对于4KB、2MB和1GB页面,数据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条目中会有额外的位用于控制目的。但是对于不同的页面大小,这个空间不应该是恒定的吗 因为

wiki网页()提到,对于4KB、2MB和1GB页面,数据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描述符,得到:

指令TLB
2M/4M页面,完全关联,8个条目
4字节页面,8路,64个条目

数据TLB
2M/4M页,4路,32个条目,一个独立的数组,带有1 GB字节 页面,4向,4个条目
4 KB页,4路,64个条目

共享二级TLB
4K/2M页,8向,1024条

TLB缓存是具有固定布局的高度专用内存,而不是具有通用布局的临时内存

某些TLB可以处理一个以上的页面大小,但如果信息以通用格式缓存,则这些是折衷办法。
使用不同的TLB处理不同的页面大小可以提高缓存命中率,就像使用DTLB和ITLB一样


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

这真的有意义!非常感谢。