【问题标题】:What is the address of L1 L2 LLC? (Cache memory)L1 L2 LLC的地址是什么? (高速缓存存储器)
【发布时间】:2020-08-04 19:12:50
【问题描述】:

我正在开展一个项目,该项目涉及从 LLC(最后一级缓存)获取信息的主题,我开始想更多地了解内存寻址。当与内存有关时,大多数时候我们与 RAM 或带有地址的 HDD、SSD 等驱动器有关,但高速缓存的内存地址(L1、L2、LLC)呢?它们的地址是否在同一个地址空间中?或者我什至以与物理内存相同的方式考虑缓存地址可能是错误的?如果有人能解释 I/O 外围设备的整个概念,我会很高兴!

【问题讨论】:

  • 从应用程序的角度来看,它是不可寻址的,甚至是不可访问的。它被封装在处理器本身内部。

标签: caching memory-management io memory-address cpu-cache


【解决方案1】:

我建议您查看问题中的缓存系统的内存管理单元是如何工作的。学习缓存寻址方案也很重要。无论如何,这里是基础知识的简要介绍。这并不能反映所讨论的系统如何工作,但通常数据在多级缓存系统中的处理方式与数据在物理内存中的处理方式不同。为了从缓存中获取数据,使用了特殊的缓存地址。缓存地址通常分为多个部分:

  • 标记位以标识正在获取/更新的缓存块。这些通常取决于您的系统一次可以处理多少缓存块。
  • 设置位(也称为索引位)以标识将存储块的缓存集。这是数据存储在缓存中的位置。如果缓存是 k 路关联的,那么设置位会告诉您可以找到数据块的哪组缓存方式,但不会告诉您哪种方式,因为这在很大程度上取决于替换策略。
  • 偏移位通常仅由 CPU 直接使用。 CPU 请求从内存中取出一个准确的高速缓存字。偏移位告诉 CPU 正在寻找高速缓存块中的哪个字。它可以是用于处理的指令或数据字。当您查看直接连接到 CPU 的缓存(L1 指令或数据缓存)的缓存地址时,您只会想到偏移位。

您的 LLC 很可能是一个 k 路关联缓存(LLC 很少有不同的缓存结构,例如完全关联或直接映射)。实际上,LLC 应该只访问完整的数据块(通常为 64 字节块,但如果缓存更大,则可以更大)而不是特定的缓存字。由于 RAM 有完整的页面,一旦请求一个数据块,您的 MMU 将找到该块属于哪个页面并为其分配一个唯一标签并将其从 RAM 获取到 LLC(这非常简单地说明了这个过程是如何发生的,但我希望你明白了)。 同样,最好尝试找出 MMU 在做什么以及它是如何做的。缓存地址不是缓存中的直接位置,其工作方式与物理地址不同。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2015-06-29
    • 2019-09-23
    • 2017-09-24
    • 2010-11-09
    • 2020-05-19
    相关资源
    最近更新 更多