图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

目录
  • PAGE_PAT 原理

  • PAGE_PAT 的应用

  • PAGE_PAT 使用场景

图片无法显示,请右键点击新窗口打开图片


PAGE_PAT/PAGE_PWT/PAGE_PCD 原理

图片无法显示,请右键点击新窗口打开图片

在 Linux 内核以及 x86 架构中,PAGE_PAT(Page Attribute Table)、PAGE_PWT(Page Write-Through)和 PAT_PCD(Page Cache Disable) 与内存缓存控制有关。它们是与页表条目相关的标志位,用于控制CPU缓存策略,影响内存页如何被缓存, 三种标志位共同使用决定 CACHE MODE.

  • PAGE_PAT(Page Attribute Table): PAT 是在更现代的 x86 处理器中引入的,它增加了控制页面级别缓存策略的能力。PAT 允许操作系统在页面级别上为内存区域指定不同的缓存类型(例如,写回、写通、不缓存、写保护等)。它通常与 PTE 的其他位(如 PWT 和 PCD)一起使用,提供更细粒度的缓存控制
  • PAGE_PWT(Page Write-Through): PWT 标志控制页面的写入策略。当设置为写通(write-through)时,对页面的写入会立即写入到内存,并通过所有的缓存层级。这与写回(write-back)策略相对,写回策略下,数据首先被写入缓存,然后在某个时间点写入内存
  • PCD(Page Cache Disable): PCD 标志用于禁用对特定页面的缓存。当设置该标志位时,对应的物理内存页不会被缓存在 CPU 的缓存中。这在映射设备内存(如 MMIO 区域)时非常有用,因为设备内存需要直接访问,不能有缓存延迟或不一致性的问题

PAGE_PAT、PAGE_PWT 和 PAGE_PCD 标志位组合起来,与 MTRRs 机制共同决定了页面的缓存类型,因此不能单独的使用其中一个.

图片无法显示,请右键点击新窗口打开图片

PAGE_PAT/PAGE_PCD/PAGE_PWT 标志位可能在不同的硬件架构的位置不同,但 Linux 为了屏蔽硬件差异,统一使用 _PAGE_PAT/_PAGE_PCD/_PAGE_PWT 标志位表示. 例如在 X86/I386 中 PAGE_PAT 位于页表的 BIT7.

图片无法显示,请右键点击新窗口打开图片

图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片