TLB 是什么,它和页表、CPU 缓存是什么关系
2026/3/26大约 3 分钟约 791 字
TLB 是面试里经常顺带被问到的概念,通常出现在虚拟内存、页表或者进程切换相关问题后面。
一、TLB 是什么
TLB 全称是 Translation Lookaside Buffer,通常可以把它理解成地址转换缓存,或者快表。
程序运行时,CPU 使用的通常是虚拟地址,而不是物理地址。访问内存前,需要先把虚拟地址翻译成物理地址,这个过程依赖页表。
但如果每次访存都去查页表,速度会比较慢,所以硬件会把最近常用的页表项缓存起来,这就是 TLB。
更准确一点说,TLB 缓存的是:
- 常用的虚拟页到物理页框的映射关系
它缓存的不是数据本身,而是地址映射关系。
二、TLB 和页表是什么关系
页表是完整的地址映射表,通常放在内存里;TLB 是页表项的高速缓存,用来加速地址翻译。
可以简单记成:
- 页表是正式映射表
- TLB 是常用页表项的缓存
三、为什么进程切换会受到 TLB 影响
因为不同进程有不同的地址空间。
同一个虚拟地址,在进程 A 里可能映射到物理页 X,在进程 B 里则可能映射到物理页 Y。
所以当 CPU 从进程 A 切换到进程 B 时,之前缓存的很多地址映射可能已经不适用了,需要失效或重新建立,这就带来了额外开销。
这也是为什么说,进程切换通常比线程切换更重,而 TLB 是其中一个原因。
四、TLB 和 CPU 的三级缓存不是一回事
这个点非常容易混。
CPU 的 L1/L2/L3 Cache
缓存的是:
- 数据本身
- 指令本身
它的目标是减少 CPU 访问主存的延迟。
TLB
缓存的是:
- 虚拟地址到物理地址的映射关系
它的目标是加速地址翻译。
所以可以简单记成:
- Cache 缓存数据和指令
- TLB 缓存地址映射
五、TLB 是整个操作系统唯一的吗
不是。
TLB 是 CPU 或 MMU 里的硬件缓存,不是操作系统里唯一的一张全局表。
在多核 CPU 下,通常每个核心都有自己的 TLB。
所以更准确的理解应该是:
- 页表是进程地址空间的一部分
- TLB 是 CPU 用来加速地址转换的硬件缓存
六、总结
TLB 是页表项的高速缓存,用来加速虚拟地址到物理地址的转换。页表是完整的地址映射表,TLB 则缓存常用的页表项。进程切换时由于地址空间发生变化,原来的 TLB 映射可能失效,需要重新建立,因此会带来额外开销。需要注意的是,TLB 和 CPU 的三级缓存不是一回事,前者缓存地址映射,后者缓存数据和指令。
