题目重点:TLB miss先walk,不等同page fault;PTE修改后还要撤销旧翻译。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练多级页表、ASID/地址空间标识和权限检查;页表层数/页尺寸依ISA配置。
- 不假设全部page walk都去DRAM,PTE也可能命中cache或page-walk cache。
解题路线
- TLB缓存VA页到PA页及权限等,hit仍检查访问类型;miss由walker读取多级PTE,找到有效叶后填TLB。页表无映射/权限错误才走fault路径,操作系统再按类型处理。
- 上下文切换可用ASID减少全刷,但ASID重用要避免旧翻译串空间。修改PTE后需按架构规则同步内存写、发送跨核shootdown并等ack,安全回收旧物理页不能先于相关核停止使用旧映射。
- 性能分析看TLB reach≈entries×pageSize、工作集页数、walker并发、walk层级cache命中与huge page碎片成本。不能把所有miss时延设为层数×DRAM而忽略缓存/并行。
手动走一遍
TLB miss但所有PTE有效且已在cache中,是一次正常walk,没有page fault。撤销某页后另核TLB仍有旧权限,不等待失效就复用该物理页可能导致旧访问写入新对象。
规模与取舍
L级walk基本最多L次依赖PTE读取,不含特殊结构;translation reach与entries×页尺寸相关。shootdown消息成本依共享地址空间的核数。
易错点与追问
容易失分的边界
- 权限变化只更新PTE不invalidate,旧TLB权限仍可能有效。
- 大页不免费:内部碎片、迁移/拆分和权限粒度都需讨论。
继续深挖
- 并发walker合并同页miss如何限制资源且保留fault语义?
- 如何用统计区分data-cache miss与translation bottleneck?
技术参考
- Linux TLB失效接口:技术语义参考,具体题目按本文约定。
