使用进程标识符时何时需清除TLB?罕见场景具体指什么?
ASID设计中需刷新TLB的罕见场景
你提到的罕见情况不是TLB被单个进程的翻译缓存占满,而是以下两类场景:
ASID循环复用:
ASID的位数是固定的(比如Intrinsity FastMATH用8位,最多支持256个独立进程)。当系统中运行的进程数量超过ASID的最大可用数时,操作系统必须回收并复用已分配给旧进程的ASID。此时,旧进程留在TLB中的条目仍绑定着该ASID,新进程使用相同ASID会触发错误的TLB命中(匹配到旧进程的虚拟地址翻译),因此必须刷新TLB中所有属于该ASID的条目。全局地址映射修改:
系统中存在全局共享的地址空间(比如内核页表条目),这类条目通常不绑定ASID(因为所有进程都需要访问)。如果操作系统修改了全局页的映射关系,所有缓存了这些全局条目的TLB条目都会失效,此时必须刷新TLB中对应的全局条目,甚至整个TLB——这种场景不受ASID机制保护,属于需要手动刷新的罕见情况。
补充说明:单个进程占满TLB只会导致该进程的新地址翻译无法命中,触发页表查询,但不需要刷新TLB,这不属于文中提到的需刷新TLB的场景。
内容的提问来源于stack exchange,提问作者An5Drama
相关产品推荐
相关产品推荐

