CPU的MMU中有TLB还需要TTW的快速查找~

TTW的定义

TTW 是 Table Walk 的缩写,中文常翻译为"页表遍历"或"查表"。 它是指内存管理单元 在翻译后备缓冲器 未命中时,根据当前进程的页表结构,一步步地查询物理内存中的页表,最终将虚拟地址转换为物理地址的过程。


要理解 T4TW,需要先了解几个背景知识:

  1. MMU:内存管理单元,是 CPU 的一个硬件部件,负责将软件使用的虚拟地址转换为物理内存使用的物理地址。这是实现虚拟内存、内存保护和多任务隔离的基石。
  2. 页表:一个存储在物理内存中的数据结构,就像是 MMU 用来查的"地址翻译字典"。它定义了虚拟页到物理页帧的映射关系。现代系统通常使用多级页表(如 x86-64 的四级页表),像一个多层的索引目录。
  3. TLB:翻译后备缓冲器,是 MMU 内部的一个小型高速缓存。它缓存了最近使用过的"虚拟页号 -> 物理页帧号"的映射关系。当 CPU 需要转换地址时,MMU 首先在 TLB 中查找,如果找到(TLB 命中),转换在一个时钟周期内即可完成,速度极快。

TTW 发生的时机:

当 CPU 需要访问一个内存地址(比如加载指令或数据)时,MMU 首先用该地址的虚拟页号去查找 TLB。如果 TLB 中没有对应的有效表项(即TLB Miss),这时就需要启动 TTW 过程。

TTW 的过程:

TTW 就是 MMU"翻阅"内存中完整页表的过程。以经典的 x86-64 四级页表为例:

  1. MMU 从 CR3 寄存器(现在叫 IA32_PML4)中获取当前进程的顶级页表(PML4)的物理基地址。
  2. 用虚拟地址的第 1 段索引位,在 PML4 表中找到一项,获取下一级页表(页目录指针表)的物理基地址。
  3. 用虚拟地址的第 2 段索引位,在 PDPT 中找到一项,获取下一级页表(页目录)的物理基地址。
  4. 用虚拟地址的第 3 段索引位,在页目录中找到一项,获取最后一级页表(页表)的物理基地址。
  5. 用虚拟地址的第 4 段索引位,在页表中找到最终的表项,这个表项中就包含了目标物理页帧号。
  6. 将物理页帧号与虚拟地址中的页内偏移组合,得到完整的物理地址。
  7. (关键步骤) 将这次查找到的映射关系(虚拟页号 -> 物理页帧号)写入 TLB 中,以便后续快速访问。

这个过程可能需要 4 次物理内存访问(每一级页表访问一次内存)。由于内存访问速度远慢于 CPU 和 TLB,所以一次 TTW 的代价非常高(通常是数百个 CPU 周期)。


为什么 TTW 如此重要?

  1. 性能关键路径:TTW 是处理 TLB 未命中的核心操作。如果程序访问的内存模式空间局部性很差(频繁访问大量不连续的地址),会导致大量的 TLB Miss 和随之而来的 TTW,性能会急剧下降。这种现象称为 TLB 颠簸。
  2. 硬件与软件的实现:
    · 硬件 TTW:现代 CPU 的 MMU 内置了硬件表遍历单元。当发生 TLB Miss 时,由这个硬件电路自动完成上述多级页表的查找过程,操作系统无需干预。这是最常见的方式。
    · 软件 TTW:在一些较旧的架构(如 MIPS)或某些优化场景下,发生 TLB Miss 时,CPU 会触发一个异常(TLB Fault),并跳转到操作系统内核预设的异常处理程序。由操作系统的代码来执行页表遍历,找到映射后,手动写回 TLB。这给了操作系统更大的灵活性,但速度比硬件 TTW 慢。
  3. 与缺页异常的区别:TTW 查找的是页表本身。如果 TTW 过程中发现某一级页表项是空的(Present 位为 0),或者权限检查失败,MMU 会触发一个 缺页异常 或访问权限异常。此时,操作系统的缺页异常处理程序会被调用,负责分配物理页、建立映射、从磁盘加载数据等更复杂的工作。可以说,TTW 是"找地图",而缺页处理是"绘制新地图"。

简单比喻:

· TLB 就像是你记在脑子里的常用电话号码(快速,但容量小)。

· 页表 就像是一本厚厚的电话簿(完整,但在书架上,找起来慢)。

· TTW 就是当你想拨一个号码但脑子里没记住时,去书架上翻开电话簿查找的过程。查完后,你很可能会把这个新号码背下来(填入 TLB),下次再打就快了。

相关推荐
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
七夜zippoe7 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥7 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿7 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘7 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6488 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满8 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠9 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio9 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice9 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习