TLB缺失的处理,既可以由硬件自动完成,也可以由软件(特别是操作系统)介入完成。当软件介入TLB缺失处理时,主要涉及操作系统层面的软件处理机制。
1. 操作系统内核处理
当TLB缺失发生时,如果系统配置为软件处理或硬件处理与软件处理结合,操作系统内核会介入处理。内核中的特定处理程序(如TLB miss异常处理程序)会被触发,该程序负责查找缺失的页表项,更新TLB,并重启导致TLB缺失的指令。
2. 软件TLB(STLB)管理
在某些系统中,可能会使用软件TLB(STLB)来管理TLB缺失。软件TLB不是物理上的TLB缓存,而是操作系统维护的一个数据结构,用于模拟TLB的行为。当硬件TLB缺失时,操作系统可以在软件TLB中查找缺失的映射,如果找到,则直接更新硬件TLB;如果软件TLB中也缺失,则进行常规的页表查找和更新操作。
3. 页表遍历和更新
无论是由硬件还是软件处理TLB缺失,最终都可能需要遍历页表来查找缺失的映射。在软件处理的情况下,操作系统负责执行这一遍历过程,找到正确的物理地址后,将其加载到TLB中。
4. 上下文切换和进程管理
在涉及进程切换的上下文中,操作系统可能需要更新TLB以反映新进程的地址空间映射。这通常涉及清除旧的TLB条目并加载与新进程相关的条目。虽然这一过程可能由硬件辅助完成(如通过快速上下文切换扩展FSCE),但在某些情况下,操作系统软件也需要介入以确保TLB的正确性。