80

什么是 SMP 中的 TLB 击落?

我无法找到有关此概念的太多信息。任何好的例子将不胜感激。

4

3 回答 3

111

TLB(Translation Lookaside Buffer)是从虚拟内存地址到物理内存地址的转换的缓存。当一个处理器更改地址的虚拟到物理映射时,它需要告诉其他处理器在其缓存中使该映射无效。

该过程称为“TLB 击落”。

于 2010-09-20T02:50:38.550 回答
74

一个简单的例子:

  1. 您有一些内存由系统中的所有处理器共享。

  2. 您的一个处理器限制对该共享内存页面的访问。

  3. 现在,所有处理器都必须刷新它们的 TLB,这样那些被允许访问该页面的处理器就不能再这样做了。

一个处理器导致 TLB 在其他处理器上刷新的操作称为 TLB 击落。

于 2010-09-20T02:49:13.967 回答
14

我认为这个问题需要更详细的答案。

页表:存储虚拟内存(软件)和物理内存(硬件)之间映射关系的数据结构

但是,页表可能非常大,并且遍历页表(以查找虚拟地址对应的物理地址)可能是一个耗时的过程。为了使这个过程更快,使用了一个称为 TLB(Translation Lookaside Buffer)的缓存,它存储最近访问的虚拟内存地址。

可以清楚地看到,TLB 条目需要始终与它们各自的页表条目同步。现在TLB 是每个核心的缓存,即。每个内核都有自己的 TLB。

每当任何内核修改页表条目时,该特定 TLB 条目在所有内核中都会失效。这个过程称为 TLB 击落。

TLB 刷新可以由各种更改页表条目的虚拟内存操作触发,例如页面迁移、释放页面等。

于 2018-01-26T16:33:36.000 回答