在指令获取管道中是否使用了TLB?
这种架构/微体系结构是否依赖?
答案 0 :(得分:3)
通常,支持分页的处理器(通常包括用于排除执行权限的机制,即使不与读取权限分开)也将作为指令获取的一部分访问TLB。
虚拟标记指令缓存不需要这样的甚至是权限检查,只要在将块插入指令缓存时检查权限(这通常涉及TLB访问,尽管权限缓存可以与虚拟一起使用)标记的L2缓存;这包括预取到指令缓存中),权限域包含在虚拟标记中(通常与地址空间标识符相同,这对于避免缓存刷新非常有用),系统软件确保删除了块当执行权限被撤销时(或者权限域/地址空间标识符被重用于不同的权限域/地址空间)。
(通常,虚拟标记的缓存不需要转换后备缓冲区;权限映射的缓存就足够了,或者可以使用标记缓存权限以及权限域的指示。内存将使用TLB,但缓存命中不需要转换。权限缓存比转换缓存便宜,因为粒度可能更大,因为表示权限信息需要更少的位。)
物理标记的指令缓存需要地址转换以进行命中确定,但是这可以通过推测访问是命中(可能使用方式预测)而显着延迟。命中确定甚至可以延迟到指令提交/结果写回的时间,尽管早期处理通常更好。
由于指令访问通常具有相当大的空间局部性,因此非常小的TLB可以提供适当的命中率,并且相当快速,更大的备份TLB可以降低错失成本。这样的microTLB可以通过过滤掉大多数指令访问来促进在数据和指令访问之间共享TLB。
显然,不支持分页的体系结构不会使用TLB(尽管它可能使用内存保护单元来检查是否允许访问,或使用不同的转换机制,例如添加可能带边界检查的偏移量) 。面向单地址空间操作系统的架构可能会使用虚拟标记的缓存,因此仅在缓存未命中时访问TLB。