Skip to content

方法Method

大页与TLB覆盖范围

Huge pages · Superpages · TLB reach

在数据全部驻留的模型中复算大页减少TLB未命中的条件,分开翻译覆盖、物理连续性、内部碎片与权限变更粒度。

八个数据页都在内存里,访问它们仍可能反复遍历页表。TLB缓存的是翻译,不是数据;当翻译条目容不下正在轮流访问的页时,数据驻留与翻译命中就分成两项不同问题。

形式陈述 ​

一条翻译可以覆盖更大的对齐区间 ​

设基本页大小为 B 字节,大页大小为 H=gB,其中 g 是系统支持的幂二倍数。在本页模型中,一个大页翻译把虚拟区间 [V,V+H) 映到物理区间 [P,P+H),并要求 V,P 都是 H 的整数倍。区间内所有字节共用此条翻译的权限。

对任意偏移 0≤d<H,地址关系为 V+d↦P+d。大页并未把不连续物理页任意拼在一起;它用一个物理起点和偏移表示整段,所以需要连续且正确对齐的物理区域。具体硬件支持哪些页大小和页表叶节点位置,由体系结构规定。

若TLB有 E 个同大小条目,名义TLB覆盖范围为 E×B;改用大页且仍有 E 个相应条目时为 E×H。这是可同时表示的地址范围上限,不保证任意访问都会命中。组相联冲突、混合页大小、身份标签、页表变化和其他任务竞争,都可能减少实际保留的翻译。

直觉

连续地址共用一个偏移空间 ​

把一份地址簿中连续四栋房屋的四条记录,改成“这一整段都按同样规则平移”,就可以用一条记录描述四倍范围。成立条件是整段映射确实规则、连续并具有统一权限;只有虚拟地址相邻而物理页四散,不能压成这种条目。

因此大页的收益主要发生在需要覆盖较大而有用的地址区域时。若每个大页只访问一个字节,翻译条目数可能仍很多,却要为每个大页准备整片区域。减少页表项或TLB miss,不等于减少实际分配字节。

例子与边界

二十四次访问,零次缺页 ​

MEM-16在本实验中每基本页256字节,取8个相邻、对齐且已经驻留的基本页,对应虚拟基本页号0到7。TLB初始为空,只有2个条目,全相联、LRU替换,单一地址空间。每次访问一页中的固定字节,顺序为 0 1 2 3 4 5 6 7,重复3轮,共24次。

基本页翻译下,循环距离超过2项容量,每次所需页号都已不在TLB,24次全miss。但页表中的映射始终有效,所有24次都能通过遍历取得翻译,缺页次数为0。

再从空TLB重放同一地址序列,改用1024字节大页,每页覆盖4个基本页。翻译标签变为 0 0 0 0 1 1 1 1,重复3轮。第一次碰到标签0、1各miss一次,之后两条翻译都留在TLB,总miss仅2次;数据仍然没有缺页。

数据驻留不变,只改变翻译粒度

名义覆盖从 2×256=512 字节增至 2×1024=2048 字节,恰好覆盖本例8个基本页的2048字节。若改成12个基本页,就对应3个大页标签,超过2项容量;不能沿用“只有2次miss”的结论。

地址拆分也随页大小改变 ​

取虚地址 0x1A5F。在1024字节即 0x400 的页大小下,大页号为6,页内偏移为 0x25F,因为 0x1A5F = 6 × 0x400 + 0x25F。若该大页映到对齐物理基址 0x6000,物理地址为 0x625F。

若错误地保留256字节页的低8位偏移,只拿 0x5F 去拼接,就丢了大页偏移中的高两位。大页的页号和偏移划分必须一起更新。物理基址 0x6100 虽按基本页对齐,却未按1024字节对齐,不满足本页大页合同。

连续性与稀疏使用的账单 ​

伙伴分配可以作为取得4帧对齐连续块的工具。若只有四个分散空闲页,基本页映射可能成功,大页分配却失败;压实或回退到小页的成本要另计。这里的4倍关系是教学尺寸,不代表某平台支持256字节硬件页。

另起稀疏快照:在四个不同1024字节大页中各写1字节,实际只改4字节,却需为这些大页分别备好整个物理区域,共4096字节。若按需只分配被碰到的256字节基本页,则对应1024字节。这个比较假定未访问的基本页不分配,也不利用共享零页;不同分配合同会改变占用量。

推论与应用

改小一处权限,可能要拆大页 ​

若一整个大页只有一套读写执行权限,而程序要让其中一个基本页只读、其他仍可写,原条目无法表达这种差异。可以把大页拆成多个基本页映射,再逐页设置权限。拆分涉及页表表示和翻译失效;是否必须拆分底层物理分配,是另一项由实现决定的操作。

同样,合并成大页时必须检查每个子页的物理连续性、权限、后备对象和其他属性是否兼容,并按照翻译失效合同停止使用过时表示。只替换页表中的指针,而不处理仍缓存的小页或大页翻译,不能保证后续访问遵守新权限。

实际机器必须分别量两个层次 ​

本例固定两种页大小都有2个TLB条目,专门隔离粒度作用。现实CPU可能为不同页大小设置不同组数或独立TLB;大页覆盖增加多少,应使用各自容量计算。透明大页与显式大页接口也有不同的保留、回退和拆分行为,不能仅凭“开启了大页”就断言全部映射已变大。

一份可比较的结果应同时记录TLB未命中、真正缺页、物理内存占用、建立/拆分耗时与访问模式。若只交出24变2而省略其余前提,就无法判断这种翻译优化是否值得用于另一个程序。

参考资料
关系图谱4 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系