旁观缓冲区 (Look aside Buffer)
什么是旁观缓冲区?
旁观缓冲区 (LAB) 是一种用于计算机系统中存储频繁访问数据的缓存内存。LAB 位于 CPU 和主内存之间,充当高速缓冲区以提高系统性能。
LAB 的工作原理是缓存主内存中 CPU 频繁访问的部分数据。当 CPU 请求主内存中的数据时,LAB 首先检查缓冲区中是否存在该数据。如果在 LAB 中找到数据,则立即将其检索并发送到 CPU,这与从主内存中提取数据相比,可以显著减少访问时间。
旁观缓冲区在哪里使用?
LAB 通常用于主内存访问时间较慢的计算机系统(例如硬盘驱动器)中,以提高系统的整体性能。它也用于虚拟内存系统中,在其中存储频繁访问的页面以减少页面错误并提高性能。
转换旁观缓冲区 (TLB)
转换旁观缓冲区 (TLB) 是一种特殊的缓存类型,可以帮助处理器快速访问最近使用的数据。它存储最近访问的页表条目,并帮助处理器在给定虚拟地址时快速检索帧号并形成实际地址。
当处理器在 TLB 中查找虚拟地址时,它要么找到页表条目(称为 TLB 命中),要么找不到(称为 TLB 未命中)。如果是命中,处理器将检索帧号并形成实际地址。如果是未命中,则在处理页表时将页号用作索引。TLB 首先检查所需页面是否已存在于主内存中。如果不存在,则发出页面错误,并更新 TLB 以包含新的页面条目。
TLB 比主内存更快更小,但比寄存器更便宜更大。它用作高速关联缓存,用于减少有效内存访问时间 (EMAT)。EMAT 使用 TLB 的命中率、内存访问时间和 TLB 访问时间计算。
在场景 1 中,TLB 找到相关虚拟地址的页表条目,并返回相应的物理地址供 CPU 访问主内存。这是 TLB 命中。
在场景 2 中,TLB 未找到相关虚拟地址的页表条目,因此它将页号发送到 CPU 以在页表中查找。如果页面不存在于主内存中,则会发生页面错误,并且 TLB 将使用新的页面条目进行更新。这是 TLB 未命中。
局部性原理
TLB 只包含频繁访问页面的条目
遵循局部性原理
操作系统转换旁观缓冲区
TLB 使用标签和键进行映射
当在 TLB 中找到所需条目时发生 TLB 命中
如果发生 TLB 命中,CPU 可以访问主内存中的实际位置
如果发生 TLB 未命中,CPU 必须访问主内存中的页表,然后访问实际帧
TLB 命中率会影响有效访问时间 (EAT)
可以通过提高 TLB 命中率来降低 EAT
分页的缺点
页表大小可能非常大,浪费主内存
CPU 从主内存读取单个字需要更多时间
可以通过增加页面大小来减小页表大小,但这会导致内部碎片和页面浪费
多级分页会增加有效访问时间
使用存储在内部的页表的寄存器可以减少访问时间,但与页表大小相比,寄存器价格昂贵且空间小
转换旁观命中和未命中的访问时间
有效访问时间 (EAT)
TLB 用作高速关联缓存,用于减少有效内存访问时间。
TLB 可以通过减少访问页表的时间来降低 EAT
EAT 公式:EAT = P(t + m) + (1 - P)(t + k.m + m)
P = TLB 命中率,t = 访问 TLB 的时间,m = 访问主内存的时间,k = 单级分页为 1
提高 TLB 命中率会降低 EAT
多级分页会增加 EAT
结论
分页是操作系统中的一种内存管理技术,它将内存划分为页面,并将进程划分为块。但是,页表的大小可能会变得非常大,从而浪费内存并增加访问时间。转换旁观缓冲区 (TLB) 充当常用页表条目的高速缓存,从而减少页表的有效访问时间。TLB 命中率会影响有效访问时间,提高它会减少访问时间。TLB 比主内存更快更小,但比寄存器更便宜更大。总的来说,TLB 在减少内存访问时间和提高系统性能方面起着至关重要的作用。