什么是 SMP 中的 TLB 击落?
我无法找到有关此概念的太多信息。任何好的例子将不胜感激。
TLB(Translation Lookaside Buffer)是从虚拟内存地址到物理内存地址的转换的缓存。当一个处理器更改地址的虚拟到物理映射时,它需要告诉其他处理器在其缓存中使该映射无效。
该过程称为“TLB 击落”。
一个简单的例子:
您有一些内存由系统中的所有处理器共享。
您的一个处理器限制对该共享内存页面的访问。
现在,所有处理器都必须刷新它们的 TLB,这样那些被允许访问该页面的处理器就不能再这样做了。
一个处理器导致 TLB 在其他处理器上刷新的操作称为 TLB 击落。
我认为这个问题需要更详细的答案。
页表:存储虚拟内存(软件)和物理内存(硬件)之间映射关系的数据结构
但是,页表可能非常大,并且遍历页表(以查找虚拟地址对应的物理地址)可能是一个耗时的过程。为了使这个过程更快,使用了一个称为 TLB(Translation Lookaside Buffer)的缓存,它存储最近访问的虚拟内存地址。
可以清楚地看到,TLB 条目需要始终与它们各自的页表条目同步。现在TLB 是每个核心的缓存,即。每个内核都有自己的 TLB。
每当任何内核修改页表条目时,该特定 TLB 条目在所有内核中都会失效。这个过程称为 TLB 击落。
TLB 刷新可以由各种更改页表条目的虚拟内存操作触发,例如页面迁移、释放页面等。