Caching 什么是TLB击落?

Caching 什么是TLB击落?,caching,operating-system,tlb,smp,Caching,Operating System,Tlb,Smp,SMPs中的TLB故障是什么 我找不到关于这个概念的更多信息。任何好的例子都将不胜感激。一个简单的例子: 系统中的所有处理器都共享一些内存 您的一个处理器限制对共享内存页的访问 现在,所有处理器都必须刷新它们的TLB,这样那些被允许访问该页面的处理器就不能再这样做了 一个处理器导致TLB在其他处理器上刷新的操作称为TLB故障排除。TLB(转换查找缓冲区)是从虚拟内存地址到物理内存地址的转换缓存。当处理器更改地址的虚拟到物理映射时,它需要通知其他处理器在其缓存中使该映射无效 这个过程被称为“TLB

SMPs中的TLB故障是什么

我找不到关于这个概念的更多信息。任何好的例子都将不胜感激。

一个简单的例子:

  • 系统中的所有处理器都共享一些内存

  • 您的一个处理器限制对共享内存页的访问

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

  • 一个处理器导致TLB在其他处理器上刷新的操作称为TLB故障排除。

    TLB(转换查找缓冲区)是从虚拟内存地址到物理内存地址的转换缓存。当处理器更改地址的虚拟到物理映射时,它需要通知其他处理器在其缓存中使该映射无效


    这个过程被称为“TLB击落”。我认为这个问题需要更详细的答案

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

    但是,页表可能非常大,遍历页表(查找虚拟地址对应的物理地址)可能是一个耗时的过程。为了加快这个过程,使用了一个名为TLB(翻译查找缓冲区)的缓存,它存储最近访问的虚拟内存地址

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

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


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

    这是一个编程问题吗?@Gabe,如果@mousey试图实现内核,我想这是一个编程问题。如果他能澄清一下,我将不胜感激。是的,我正在尝试实现一个内核。不断教条式地试图将编程与系统概念分开是Stackoverflow的一个根本缺陷。站点的名称本身就是一个系统概念。如果你是一个系统程序员,你不能把这些概念和控制它们的代码分开。我们应该停止尝试这样做。特定的TLB条目在所有核心中都无效。。。由操作系统提供。硬件不会自动执行此操作;如果内核当前正在运行使用刚刚修改的页表的任务,那么内核必须发送处理器间中断或以其他方式向其他内核发送信号。但x86至少不进行负缓存,因此映射新内存(将PTE从无效更改为有效)不需要运行任何
    invlpg
    指令。重新映射或取消映射确实需要失效,以阻止核心使用不再有效的TLB条目。