x86 - x86_64 架构中多页大小的 TLB 使用情况

标签 x86 x86-64 tlb mmu

有人知道 TLB(L1 和 L2)是否支持在现代 x86_64 微处理器(Intel SandyBridge、AMD Bulldozer)中同时访问多个页面大小? x86 核心管道是否向 MMU 提供有关页面大小的信息?

最好的问候,

亚历克斯

最佳答案

这不是 TLB 允许什么的问题,而是架构允许什么的问题。该架构表明,您可以在同一页面层次结构中混合小 (4k)、大 (2M) 和大 (1G) 页面,方法是在适当级别的页面目录条目中设置 PS 位。

并非所有级别的 TLB 都必须能够缓存各种大小的页面,但这不应该阻止您混合页面。

现在,在 MMU 之前的 x86 管道中没有任何东西实际上需要有关页面大小的数据。这都是在页面层次结构本身中编码的。


关于页面拆分,如果您在地址 x 处有一个页面边界,并且您有一个从 x - 1 开始的大于 1 字节宽的内存访问,它将访问两个页面。即使两个页面的大小不同,这也可以工作。

关于x86 - x86_64 架构中多页大小的 TLB 使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398178/

相关文章:

assembly - 这个 shellcode 中的堆栈指针有什么用?

performance - 调用门和陷阱门之间有速度差异吗?

c++ - 除了提供必要的保证之外,硬件内存屏障还可以使原子操作的可见性更快吗?

c++ - 使用 Intel Pin 时跟踪不匹配的 CALL 和 RET 指令数

operating-system - 虚拟内存页表增长

architecture - 如何导致用户进程的 TLB 抖动?

assembly - 设置IRQ映射

windows - 当控制权返回操作系统时,操作系统是否会假设有关被调用者保存的寄存器的任何信息?

ios - Titanium : build error after upgrade to 3. 5.0.GA(体系结构 x86_64 的 undefined symbol )