由于性能原因,我发现TLB包含每个进程的PID,这意味着将每个进程的VA保留为TLB中的PA映射,以节省上下文切换成本。所以,我的问题是内核可以操纵TLB中的PID条目吗?
我很好奇,因为我听说TLB是MMU内部维护的缓存。请给我回答:)
*我假设x86 :)
答案 0 :(得分:3)
Intel® 64 and IA-32 Architectures Software Developer's Manual
流程上下文标识符(PCID)
进程上下文标识符(PCID)是逻辑处理器可以通过其缓存多个线性地址空间的信息的工具。当软件切换到具有不同PCID的不同线性地址空间时,处理器可以保留高速缓存的信息(例如,通过加载CR3;有关细节,请参见第4.10.4.1节)。 PCID是12位标识符。
...
当逻辑处理器在TLB(第4.10.2节)和分页结构缓存(第4.10.3节)中创建条目时,它将这些条目与当前PCID相关联。当使用TLB和分页结构缓存中的条目来转换线性地址时,逻辑处理器仅使用与当前PCID相关联的条目
相关:Does Linux use x86 CPU's PCID feature for TLB? If not, why?