[windows内核]PWT&PCD

更多详细解释请看

手册第三卷: 4.9 PAGING AND MEMORY TYPING
手册第三卷: CHAPTER 11 MEMORY CACHE CONTROL

在学习PDE与PTE的属性时,我们对两个位做只做了简单的说明,并没有说明其实际作用,那就是今天要学习的PWT位与PCD位
在这里插入图片描述

CPU缓存

描述:

  1. CPU缓存是位于CPU与物理内存之间的临时存储器,它的容量比内存小的多,但是交换速度(读写速度)比内存要快得多
  2. CPU缓存可以做的很大,有几K、几十K、几百K、甚至上M,这决定于CPU的版本

Intel 64 and IA-32 processors may implement four types of caches: the trace cache, the level 1 (L1) cache, the level 2 (L2) cache, and the level 3 (L3) cache.

CPU缓存与TLB的区别

TLB:

存储了线性地址物理地址之间的对应关系

CPU缓存:

存储了物理地址内容之间的对应关系

The processor allows any area of system memory to be cached in the L1, L2, and L3 caches. In individual pages or regions of system memory, it allows the type of caching (also called memory type) to be specified (see Section11.5). Memory types currently defined for the Intel 64 and IA-32 architectures are (see Table 11-2)

The TLBs store the most recently used page-directory and page-table entries. They speed up memory accesses
when paging is enabled by reducing the number of memory accesses that are required to read the page tables
stored in system memory. The TLBs are divided into four groups: instruction TLBs for 4-KByte pages, data TLBs for
4-KByte pages; instruction TLBs for large pages (2-MByte, 4-MByte or 1-GByte pages), and data TLBs for large
pages. The TLBs are normally active only in protected mode with paging enabled. When paging is disabled or the
processor is in real-address mode, the TLBs maintain their contents until explicitly or implicitly flushed (see Section
11.9, “Invalidating the Translation Lookaside Buffers (TLBs)”).

有了CPU缓存,当CPU再去查找/读取某一个线性地址对应的物理页时,就可以:

  1. 先查TLB,找到它的物理地址
  2. 再找CPU缓存,找到它的内容

CPU缓存的大小决定了CPU的执行速度(CPU缓存越大,速度越快,当然也会越贵)
在这里插入图片描述

PWT(Page Write Through)

PWT=1:写Cache的时候也要将数据写入内存中
PWT=0:写Cache时不会更新内存值,只有当Cache换出时才更新内存

PCD(Page Cache Disable)

PCD=1:禁止某个页写入缓存(直接写入内存)
比如:做页表用的页,已经存储在TLB中,可能就不需要再做缓存,而它的PCD一定为1

PAT:

当CPU支持PAT模式的时候 PWT 和PCD将不再单独解释,而是和PAT组成一个3位的指针 指向 MSR寄存器中的 8 个PATX寄存器,然后在这个8个寄存中存储对应的行为类型

排列顺序 PAT PCD PWT 一个单位可以表示0-7,对应PAT0-PAT7
在这里插入图片描述
在这里插入图片描述
我们注意到 除CR3寄存器不带PAT 之外,其余表项都是带PAT PWT PCD,这里要区分他们描述的是他们地址所指向的内存页,而不是寻址经过他的所有页。

举个例子就是,CR3的PWT和PCD只决定CR3地址指向的存储着PLM4T表的那页的属性

同样PLM4T的 PAT PWT PCD 值只决定它直接指向的1G页或者PDTT所在的那一页的属性,而不是说他所指向的PDTT中所有下级表指定的也都受它控制。

关于缓存更详细的解释

想更深入的了解只能去参考手册中的解释了

CHAPTER 11 MEMORY CACHE CONTROL

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值