【问题标题】:When the L2 page is copied to L1 page?L2页面何时复制到L1页面?
【发布时间】:2019-11-22 13:12:47
【问题描述】:

我不确定我是否正确理解 L1 和 L2 缓存背后的想法。

当我们使用read命令时,背后的逻辑:

  • 首先检查数据是否存储在L1 缓存中(这样更快),如果没有,则检查L2 缓存。
    1. 那么如果数据存储在L2缓存中,操作系统是否会立即将此页面复制到L1缓存中?
    2. 现在,如果我们要write 数据,是立即写入L1L2 缓存?

【问题讨论】:

  • CPU 缓存在称为“行”的块中运行(例如,在大多数现代 CPU 上为 64 字节)。虚拟内存页面要大得多,例如4kiB。此外,readwrite 是系统调用名称。你是说系统调用吗?还是您的意思是一条名为read 的CPU 指令?指令名称总是使用加载/存储(或移动),而不是读/写。例如ARMldr r0, [r1] 使用 r1 作为指针并将一个字从指向的内存加载到 r0 中。 (缓存命中/未命中细节和硬件预取对软件都是不可见的,由硬件处理。您只能通过时间或性能计数器来衡量)

标签: caching operating-system cpu-architecture cpu-cache


【解决方案1】:

那么如果数据存储在 L2 缓存中,操作系统是否会立即将此页面复制到 L1 缓存中?

没有。操作系统不会在缓存之间移动数据。

操作系统可以控制缓存内容的处理器非常少。

【讨论】:

  • 感谢您澄清这一点。我希望处理器允许操作系统更多地控制上层缓存。这对于构建面向性能的应用程序和操作系统来说非常酷。
【解决方案2】:

那么如果数据存储在 L2 缓存中,操作系统是否会立即将此页面复制到 L1 缓存中?

通常是的。如果需要数据,这允许 L1 缓存稍后完成其工作。

现在,如果我们要写入数据,是立即写入 L1 还是 L2 缓存?

到 L1 缓存。通常,它会在 L1 缓存中标记为已修改,在 L2 缓存中标记为无效,以便缓存硬件知道最新值所在的位置。

请注意,这些是通常的处理方式。那里有各种各样的疯狂变化。

【讨论】:

  • 只是要小心措辞,硬件会这样做,而不是操作系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2013-08-26
  • 2021-12-21
  • 2022-09-26
相关资源
最近更新 更多