Appearance
408
计算机组成原理
CO-03-12 TLB(快表)与地址转换过程
一、定位信息
| 项目 | 内容 |
|---|---|
| 所属圈层 | 核心层 |
| 前置知识回顾 | 需了解页式虚拟存储器的地址转换过程(CO-03-11),了解Cache的基本原理(CO-03-08),了解页表存储在主存中、每次地址转换都需要查页表的性能问题 |
| 知识网络定位 | 本单元是虚拟存储器(CO-03-11)的加速机制——TLB将最近使用的页表项缓存在快速硬件中,避免每次地址转换都访问主存中的页表。TLB + Cache + 虚拟存储器构成了完整的多级存储-地址转换体系 |
| 考点热度等级 | H级 — TLB与地址转换的综合计算是高频大题,近5年出现≥4次,分值5–10分,是408计算机组成原理部分的压轴题型之一 |
二、知识点讲解
2.1 为什么需要TLB
页式虚拟存储器中,每次访存都需要先查页表(存储在主存中)得到物理地址,再用物理地址访问主存中的数据。这意味着一次数据访问需要两次访存(一次查页表,一次取数据),速度大幅降低。
TLB(Translation Lookaside Buffer,地址转换后备缓冲器/快表) 是一个高速缓存,存储最近使用的页表项。它的作用类似于Cache对主存的作用——用少量快速硬件避免频繁访问慢速的页表。
2.2 TLB的基本结构
TLB是一个全相联或组相联的高速存储器,每个TLB项包含:
- 虚拟页号(Tag部分):用于匹配
- 物理页框号:地址转换的结果
- 有效位:该TLB项是否有效
- 其他标志位:访问权限、脏位等
TLB的容量很小(通常16~512个项),但速度极快(1个时钟周期内完成查找)。
2.3 使用TLB的地址转换过程
当CPU发出虚拟地址时:
- 查TLB:用虚拟页号在TLB中查找
- TLB命中:
- 直接从TLB中取出物理页框号
- 拼接页内偏移得到物理地址
- 用物理地址查Cache(或直接访问主存)
- 总访存次数:0次额外访存(TLB在CPU内部,不占访存周期)
- TLB未命中:
- 查主存中的页表
- 如果页在主存中(有效位=1):取出物理页框号,将该页表项写入TLB,后续访问可命中TLB
- 如果页不在主存中(缺页):处理缺页中断
- 总访存次数:1次查页表 + 1次访问数据 = 2次访存
2.4 TLB + Cache + 页式虚拟存储器的完整地址转换
这是考研中最重要的综合题型。完整的地址转换过程:
步骤1:查TLB
- 用虚拟页号查TLB
- TLB命中 → 得到物理页框号 → 跳到步骤3
- TLB未命中 → 继续步骤2
步骤2:查页表(TLB未命中时)
- 用虚拟页号查主存中的页表
- 页在主存(有效位=1)→ 得到物理页框号,更新TLB → 继续步骤3
- 页不在主存(缺页)→ 缺页中断处理
步骤3:构造物理地址
- 物理地址 = 物理页框号 + 页内偏移
步骤4:查Cache
- 用物理地址查Cache
- Cache命中 → 数据送CPU
- Cache未命中 → 访问主存获取数据,更新Cache
2.5 各种命中/未命中的组合情况
| TLB | 页表 | Cache | 处理过程 | 访存次数 |
|---|---|---|---|---|
| 命中 | — | 命中 | TLB直接给出物理地址,Cache命中 | 0 |
| 命中 | — | 未中 | TLB给出物理地址,Cache未中,访问主存 | 1 |
| 未中 | 命中 | 命中 | 查页表得到物理地址,Cache命中 | 1 |
| 未中 | 命中 | 未中 | 查页表得到物理地址,访问主存 | 2 |
| 未中 | 未中 | — | 缺页中断,从磁盘调入 | 2+磁盘访问 |
2.6 TLB与Cache的对比
| 对比项 | TLB | Cache |
|---|---|---|
| 缓存内容 | 页表项(地址映射) | 数据/指令 |
| 输入 | 虚拟页号 | 物理地址 |
| 输出 | 物理页框号 | 数据内容 |
| 作用 | 加速地址转换 | 加速数据访问 |
| 位置 | MMU内部 | CPU与主存之间 |
| 容量 | 小(16~512项) | 较大(KB~MB级) |
| 映射方式 | 全相联/组相联 | 直接/组相联 |
2.7 有效访存时间的计算
设TLB命中率为 ,TLB访问时间为 ,主存访问时间为 ,Cache命中率为 ,Cache访问时间为 。
简化模型(只考虑TLB和主存,不含Cache):
(TLB命中时只需1次访存取数据;TLB未命中时需1次查页表+1次取数据=2次访存)
完整模型(TLB + Cache + 主存):
需要综合考虑各种命中/未命中组合,根据题目给定的条件计算。
三、记忆与理解辅助
3.1 口诀记忆
口诀:"TLB快页表,命中一次到,未中查主存,缺页盘上找"
口诀:"先查TLB快不快,不快查表在不在,不在缺页盘上来"
3.2 地址转换流程口诀
"虚拟地址分两段,页号查TLB,偏移往右搬;TLB没有查页表,页表没有找磁盘;物理地址拼出来,Cache里找数据快"
3.3 对比表:各级查找的目的
| 查找层次 | 输入 | 输出 | 目的 |
|---|---|---|---|
| TLB | 虚拟页号 | 物理页框号 | 加速地址转换 |
| 页表 | 虚拟页号 | 物理页框号 | 地址转换(TLB的后备) |
| Cache | 物理地址(Tag+Index) | 数据内容 | 加速数据访问 |
| 主存 | 物理地址 | 数据内容 | 数据存储(Cache的后备) |
3.4 访存次数速查
| 场景 | 访存次数 |
|---|---|
| TLB命中 + Cache命中 | 0次额外访存 |
| TLB命中 + Cache未中 | 1次(访问主存取数据) |
| TLB未中 + 页表命中 + Cache命中 | 1次(查页表,但Cache有数据) |
| TLB未中 + 页表命中 + Cache未中 | 2次(查页表+取数据) |
| 缺页 | 2次+磁盘I/O |
四、例题与精解
例题1(基础)
题目:某计算机采用页式虚拟存储器,页大小4KB,TLB采用全相联映射,共16项。主存访问时间为100ns,TLB访问时间为10ns,TLB命中率为98%。 (1)TLB命中时的有效访存时间是多少? (2)TLB未命中时的有效访存时间是多少? (3)平均有效访存时间是多少?
命题意图:考查TLB对访存时间的影响。
审题分析:,,。
解题思路:TLB命中时只需1次访存(取数据),TLB未命中时需2次访存(查页表+取数据)。
完整步骤:
(1)TLB命中时:
注:TLB访问10ns(在CPU内部,不计入访存),然后访问主存取数据100ns。有些题目将TLB访问时间忽略(因为它和访存并行),此时 。具体以题目说明为准。
如果按简化模型(TLB访问时间和访存时间重叠):
(2)TLB未命中时:
需要先查页表(1次访存),再取数据(1次访存)。
(加上TLB查找的开销:)
(3)平均有效访存时间:
按简化模型:
方法反思:TLB的命中率通常很高(>95%),所以即使TLB未命中时需要2次访存,平均访存时间也接近1次访存。这就是TLB的价值。
例题2(中等)
题目:某系统参数如下:
- 虚拟地址32位,物理地址30位,页大小4KB
- TLB:全相联,64项,命中率96%,访问时间5ns
- Cache:8路组相联,64KB,块大小64B,命中率95%,访问时间10ns
- 主存访问时间:200ns
假设TLB和Cache的查找可以部分重叠(TLB查完后才能用物理地址查Cache),求: (1)TLB命中+Cache命中时的访存时间; (2)TLB命中+Cache未命中时的访存时间; (3)TLB未命中+页表命中+Cache命中时的访存时间; (4)假设所有页都在主存中(无缺页),且在TLB命中的条件下Cache命中率为95%,在TLB未命中的条件下Cache命中率也为95%。求平均有效访存时间。
命题意图:考查TLB + Cache + 主存三级存储系统的综合访存时间计算。
审题分析:三级存储系统,需要考虑各种命中/未命中组合。
解题思路:逐情况分析访存时间,再用概率加权求平均。
完整步骤:
(1)TLB命中 + Cache命中:
(TLB查5ns → 得到物理地址 → Cache查10ns → 命中,不需要访问主存)
(2)TLB命中 + Cache未中:
(TLB查5ns → Cache查10ns未中 → 访问主存200ns)
(3)TLB未中 + 页表命中 + Cache命中:
(TLB查5ns未中 → 查页表200ns → 得到物理地址 → Cache查10ns命中)
(4)平均有效访存时间:
四种情况的概率和时间:
| 情况 | 概率 | 访存时间 |
|---|---|---|
| TLB命中 + Cache命中 | 15ns | |
| TLB命中 + Cache未中 | 215ns | |
| TLB未中 + 页表命中 + Cache命中 | 215ns | |
| TLB未中 + 页表命中 + Cache未中 | 415ns |
注:TLB未中 + Cache未中 = (查TLB → 查页表 → 查Cache未中 → 访问主存)
方法反思:
- 完整的三级存储系统计算需要考虑所有组合情况。
- TLB命中率和Cache命中率通常独立(TLB缓存页表项,Cache缓存数据)。
- 实际系统中,TLB + Cache的多级加速效果非常显著——从200ns的主存访问时间降到平均33ns。
五、考情分析
| 项目 | 内容 |
|---|---|
| 近5年考查频次 | ≥4次 |
| 常见题型 | 综合计算题(TLB+页表+Cache完整地址转换)、选择题(TLB基本概念) |
| 分值占比 | 综合题5–10分,选择题2分 |
| 命题趋势 | TLB + Cache + 虚拟存储器的综合地址转换是408计算机组成原理部分的压轴题型。近年趋势是增加复杂度——要求考生画出完整的地址转换流程图,并计算各种情况下的访存时间 |
六、易错点提醒
易错点1
- 错误表现:TLB命中时仍然去查页表
- 错误原因:没有理解TLB就是页表的缓存,命中意味着已经得到了物理页框号
- 正确做法:TLB命中 = 页表项已在TLB中,不需要再查主存中的页表。直接用TLB中的物理页框号拼接偏移得到物理地址
易错点2
- 错误表现:计算访存次数时,将TLB的访问时间算作一次"访存"
- 错误原因:TLB在CPU内部(或MMU内部),不是独立的访存操作
- 正确做法:TLB的访问时间通常与访存时间重叠或非常短,不算作独立的访存周期。"访存次数"指的是访问主存的次数
易错点3
- 错误表现:用虚拟地址查Cache
- 错误原因:混淆了虚拟地址和物理地址的作用
- 正确做法:Cache通常用物理地址查(物理索引物理标签,PIPT)。需要先通过TLB/页表将虚拟地址转为物理地址,再用物理地址查Cache。少数系统使用虚拟索引(VIPT),但考研中通常按PIPT处理
易错点4
- 错误表现:计算平均访存时间时,漏掉了某些命中/未命中组合
- 错误原因:没有系统地列出所有可能的组合
- 正确做法:TLB有2种状态(命中/未中),页表有2种状态(在主存/缺页),Cache有2种状态(命中/未中)。组合后共有 种情况,但实际中有些组合概率为0或题目忽略,需要根据题意分析
易错点5
- 错误表现:TLB未命中时,认为必须访问2次主存(查页表+取数据)
- 错误原因:忽略了Cache可能命中的情况
- 正确做法:TLB未命中后查页表得到物理地址,此时如果Cache命中,只需要1次访存(查页表那次)。只有Cache也未命中才需要2次访存
七、来源标注
- 依据2026考研统考大纲(408-计算机组成原理-第三章"存储器层次结构")
- 依据大学本科经典教材共识:唐朔飞《计算机组成原理》、白中英《计算机组成原理》、Patterson & Hennessy《计算机组成与设计》