什么是TLB击球?

mou*_*sey 66 caching operating-system smp tlb

什么是SMP中的TLB击落?

我无法找到有关此概念的更多信息.任何好的例子都会非常感激.

Gab*_*abe 101

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

这个过程被称为"TLB击落".


Car*_*rum 57

一个简单的例子:

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

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

  3. 现在,所有处理器都必须刷新它们的TLB,以便允许访问该页面的TLB不再这样做.

导致TLB在其他处理器上刷新的一个处理器的动作是所谓的TLB击落.


cod*_*oda 6

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

page table:存储虚拟内存(软件)和物理内存(硬件)之间映射的数据结构

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

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

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

TLB刷新可以通过各种虚拟内存操作来触发,这些操作可以更改页面表项,例如页面迁移,释放页面等.

  • *该特定 TLB 条目在所有内核中都无效* ...由操作系统。硬件不会自动执行此操作;如果其他内核当前正在运行使用它刚刚修改的页表的任务,内核必须发送处理器间中断或以其他方式向内核发送信号。但是 x86 至少不会做负缓存,所以映射新内存(将 PTE 从无效更改为有效)不需要运行任何 `invlpg` 指令。重新映射或取消映射确实需要失效以阻止内核使用不再有效的 TLB 条目。 (3认同)