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