| 项目 | 值 |
|---|---|
| 虚地址 → 实地址 | 通过页表 / TLB 转换 |
| 虚地址 → Cache | 通过 Cache 映射(直接 / 全相联 / 组相联) |
| TLB | 页表的高速缓存,加速地址转换 |
| 页表基址 | 存在页表基址寄存器(PTBR)中 |
| 多级页表 | 减少页表占用的连续内存 |
CPU 发出虚地址后,需要经过以下步骤获取数据:
虚地址(VA)
│
├─→ TLB查页框号 ──→ 物理地址(PA) ──→ Cache查数据
│ │ │
│ ├ TLB命中 ├ Cache命中→返回数据
│ │ └ Cache未命中→访问主存
│ └ TLB未命中→查页表→更新TLB
│ │
│ └ 缺页→调页→重试
└─→ 直接查页表(无TLB时)
虚地址 = 虚页号(VPN) + 页内偏移(VPO)
物理地址 = 物理页框号(PPN/PFN) + 页内偏移(PO)
物理地址在 Cache 中的划分(组相联):
物理地址 = 标记(Tag) + 组号(Index) + 块内偏移(Offset)
| TLB | Page | Cache | 说明 |
|---|---|---|---|
| 命中 | 命中 | 命中 | 最快,直接取数据 |
| 未命中 | 命中 | 命中 | 查页表得到 PA,Cache 命中取数据 |
| 未命中 | 命中 | 未命中 | 查页表得 PA,Cache 未命中访问主存 |
| 未命中 | 未命中 | — | 缺页中断,OS 调页 |
| 性质 | 说明 |
|---|---|
| TLB 命中 → 页必命中 | TLB 是页表的子集 |
| 页未命中 → TLB 必未命中 | 页表中没有,TLB 也不会有 |
| Cache 命中需要 PA | 先完成虚→实转换才能查 Cache |
| 地址偏移不变 | 虚地址和物理地址的页内偏移相同 |
| 多级 Cache | L1 → L2 → L3 → 主存,逐级查找 |
| 考法 | 解题套路 |
|---|---|
| 求有效访问时间 | 根据 TLB 命中率、Cache 命中率、缺页率逐层计算 |
| 地址划分 | 页号 + 页内偏移;标记 + 组号 + 块内偏移 |
| TLB/页表/Cache 联合计算 | 分情况讨论各种命中组合 |
| 缺页中断处理 | OS 介入,调页 → 更新页表 → 重试指令 |
| 地址转换过程描述 | 按步骤画出完整流程 |
TLB 命中率 98%,Cache 命中率 95%,缺页率 0.1%;TLB 访问 1 ns,Cache 访问 10 ns,主存访问 100 ns,磁盘 10 ms:
↑ 站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。