快表(TLB)解读

2024-07-03 23:32:39 浏览数 (2)

虚拟存储器是一种至关重要的技术,它允许程序使用比物理内存更大的地址空间。然而,虚拟地址到物理地址的转换过程带来了额外的开销。为了减少这种开销并提高系统性能,转址旁路缓存(Translation Lookaside Buffer,TLB)被广泛应用

虚拟存储器与地址翻译 虚拟存储器是一种内存管理技术,它为每个程序提供了一致的地址空间,并允许程序使用比物理内存更大的地址空间。当CPU生成虚拟地址时,需要通过地址翻译将虚拟地址转换为物理地址。这一过程通常涉及到对主存中的页表进行访问。

依据程序执行的局部性原理,当 CPU 在一段时间内总是经常访问某些页时,若把这些页对应的页表项存放在 Cache 中,就可以不访问主存直接进行地址翻译了;这样明显能提高效率。

TLB是一种特殊的缓存,它存储了最近使用的页表项。在地址翻译时,如果能够在TLB中找到对应的页表项,就可以直接进行地址翻译,而不需要访问主存中的页表。这样可以显著减少地址翻译的开销,提高系统性能。

在快表(TLB)的参与下,可以有效地减少地址翻译的时间。以下是详细的步骤:

虚拟地址解析

  • CPU生成一个虚拟地址,该地址由虚拟页号(VPN)和页内偏移(Offset)组成。
  • 系统使用虚拟页号来查找快表(TLB),以确定是否存在对应的物理页号(PPN)。

快表查询(TLB查找)

  • 如果快表中存在与虚拟页号匹配的条目(TLB命中),则直接使用该条目中的物理页号。
  • 结合虚拟地址的页内偏移,计算出最终的物理地址:物理地址 = PPN Offset

快表未命中: 如果快表中没有找到对应的条目(TLB未命中),则需要访问内存中的页表。

  • 系统根据虚拟页号在页表中找到对应的物理页号,并将其加载到快表中(如果快表有空间)。
  • 结合虚拟地址的页内偏移,计算出最终的物理地址。

快表更新

  • 如果快表已满,且需要加载新的页表项,则根据一定的替换策略(如最近最少使用(LRU))替换掉快表中的一个旧页表项。
  • 新的页表项被加载到快表中,以便未来的地址翻译可以更快地进行。

完成地址转换

  • 一旦计算出物理地址,CPU就可以使用该地址访问物理内存中的数据或指令。

TLB的全相联映射 TLB通常采用全相联映射方式,这意味着TLB中的每个条目都可以映射到任何一个虚拟页号。每个TLB条目包含页表项的内容、一个或多个标志位(如有效位、脏位等),以及一个TLB标记字段。TLB标记用于指示该条目对应的虚拟页号。

0 人点赞