从TLB中删除条目时是否更新了页表?如果是这样,为什么?页表中更新了哪些信息?我认为当被驱逐的页面干净时不需要更新页面表。
同样,在TLB中缓存(引入)页面时页面表是否更新?
答案 0 :(得分:4)
硬件页表walker(例如为x86定义)可以在加载页表条目(PTE)时修改访问和修改的指示符。由于可以在非写入未命中时对PTE进行请求加载,因此可以在将PTE加载到TLB之后改变修改的指示符。 (也可以将PTE预取到TLB中,在这种情况下,甚至可能需要在将PTE插入TLB后设置所访问的指示符。传统的聚簇TLB条目,每个条目存储多个PTE像常规内存缓存的子块一样的单个标签自然可以从预取与标签相关联的其他页面中受益,因为它不涉及额外的存储(即,没有来自这种预取的缓存污染效应),并且相邻的PTE存储在一个标签中。已经从内存中获取的对齐块(对于典型的多级页表)。)
TLB通常使用直写策略。这具有使最近使用PTE所在的高速缓存块的优点。它还可以避免在清除访问或脏位时使用处理器间中断的需要。由于TLB通常不一致,因此使用回写会使软件强制一致性(当操作系统清除访问或脏位时)更多地参与其中。
某些硬件TLB管理体系结构不支持访问硬件设置和脏指示器。而是生成异常并且软件处理这些特殊情况。由于设置这些指标并不像更改地址转换或权限那样罕见,因此在不需要操作系统参与的情况下这样做可能会有一些优势。
(脏指示符用于允许操作系统避免(不必要地)写回页面从内存中删除时不脏的页面。访问的指示符用于支持(通常基于新近度){{3}在操作系统中。)