【问题标题】:How does lookup the L1 and L2 cache?如何查找 L1 和 L2 缓存?
【发布时间】:2011-03-14 13:27:27
【问题描述】:

最近我在阅读一些关于 cpu 缓存的资料。我想知道cpu如何查找L1和L2缓存以及cpu缓存中的数据以什么格式存储?

我认为缓存的线性扫描效率低下,有没有更好的解决方案?

谢谢。

【问题讨论】:

    标签: caching cpu cpu-cache


    【解决方案1】:

    它使用从它正在查找的地址中提取的索引位和标签。

    假设您正在访问一些 32 位地址 ADDR

    ADDR 将有位:31--------------------------0,[------tag|index|offset]

    然后根据缓存的大小: 假设您有一个 32K 的 Direct Mapped 缓存,每块 32 字节。

    偏移位用于查找每行中的数据,因为 8 字节是被带入缓存的最小数据大小(你总是会得到完整的 32 字节,但在 32 字节内你会得到你的数据。)

    这说明了一个有 1024 行或集合的缓存,同样每行有 32 个字节。为了索引 1024 个集合,您需要 10 位。因此,您地址中的 10 位用作缓存的索引。偏移位用于查看数据在该行内的位置,标记位用于匹配您正在查找的地址,因为两个或多个地址将映射到缓存的同一行。 有意义吗?

    【讨论】:

      【解决方案2】:

      我不知道你的答案,但我可以推荐一本好书,可能会引导你找到答案 - The Essentials Of Computer Organization and Architecture

      【讨论】:

        猜你喜欢
        • 2014-07-04
        • 1970-01-01
        • 2013-01-20
        • 2011-03-27
        • 2011-04-11
        • 2015-06-29
        • 1970-01-01
        • 2017-09-24
        • 2010-11-09
        相关资源
        最近更新 更多