首页 > 解决方案 > TLB 索引到底是干什么用的?

问题描述

所以我对TLB索引到底是什么感到困惑。假设我们有这个 TLB:

在此处输入图像描述

对于虚拟地址 0x021a,我们最终会得到:

VPN:0x8 TLB 索引:0x0 TLB 标签:0x2

这将导致错过。我不明白。我们没有得到标签 0x2 的命中吗?导致 PPN 为 0x20?我也无法真正看到索引在这里发挥作用的地方。我认为它可能会给我们一个集合中的块,但显然,这不是真的。

那么为什么会错过,索引在这里到底会做什么呢?

标签: cachingvirtual-memorytlb

解决方案


我们没有得到标签 0x2 的命中吗?

不可以。TLB 中带有标签 02 的两个条目用于完全不同的虚拟页码 (VPN)。即使它们共享相同的标签,它们也不适用于 VPN 8。Set 1 中的一个用于 VPN 9,而 Set 3 中的一个用于 VPN 0b(恰好是无效的)。在查找 VPN 8 时,只会搜索 Set 0,因为已知 VPN 8 只能在 Set 0 中。

仅仅因为 TLB 条目共享相同的标签并不意味着它们用于相同的 VPN。由于 TLB 不是完全关联的,各个 TLB 条目不必包含整个 VPN,因为 VPN 的一部分由存储条目的集合隐含。只有使用完全关联的 TLB,才有必要将整个 VPN 存储到每个 TLB 条目中。

因此,VPN 被拆分为 TLB Tag 和 TLB Index。在您的练习中,TLB 索引由 VPN 的两个最低有效位组成,TLB 标记由其余位组成。每个 TLB 条目中仅存储 TLB 标记,不存储 TLB 索引,因为它由 TLB 条目所在的集合暗示。


推荐阅读