【问题标题】:What exactly is the TLB index for?TLB 索引到底是干什么用的?
【发布时间】:2020-05-03 03:35:09
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: caching virtual-memory tlb


    【解决方案1】:

    我们不会因为标签 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 不是fully associative,因此各个 TLB 条目不必包含整个 VPN,因为 VPN 的一部分隐含在存储条目的集合中。只有使用完全关联的 TLB,才有必要将整个 VPN 存储到每个 TLB 条目中。

    因此,VPN 被拆分为 TLB Tag 和 TLB Index。在您的练习中,TLB 索引由 VPN 的两个 least significant bits 组成,TLB 标记由剩余的位组成。每个 TLB Entry 中只存储 TLB Tag,不存储 TLB Index,因为它是由 TLB Entry 所在的 Set 所暗示的。

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多