Caching 二级页面何时复制到一级页面?

Caching 二级页面何时复制到一级页面?,caching,operating-system,cpu-architecture,cpu-cache,Caching,Operating System,Cpu Architecture,Cpu Cache,我不确定我是否正确理解了一级缓存和L2cache背后的概念 当我们使用read命令时,逻辑落后于: 首先检查数据是否存储在L1缓存中(速度更快),如果没有,则检查L2缓存。 因此,如果数据存储在L2缓存中,操作系统是否会立即将此页面复制到L1缓存中 现在,如果我们想写入数据,它会立即写入L1或L2缓存吗 因此,如果数据存储在二级缓存中,操作系统是否会立即将此页面复制到一级缓存 通常是的。这允许一级缓存稍后在需要数据时执行其工作 现在,如果我们想写入数据,它会立即写入一级或二级缓存吗 到一级

我不确定我是否正确理解了一级缓存和
L2
cache背后的概念

当我们使用
read
命令时,逻辑落后于:

  • 首先检查数据是否存储在
    L1
    缓存中(速度更快),如果没有,则检查
    L2
    缓存。
  • 因此,如果数据存储在
    L2
    缓存中,操作系统是否会立即将此页面复制到
    L1
    缓存中
  • 现在,如果我们想
    写入
    数据,它会立即写入
    L1
    L2
    缓存吗
因此,如果数据存储在二级缓存中,操作系统是否会立即将此页面复制到一级缓存

通常是的。这允许一级缓存稍后在需要数据时执行其工作

现在,如果我们想写入数据,它会立即写入一级或二级缓存吗

到一级缓存。通常,它会在一级缓存中标记为“修改”,在二级缓存中标记为“无效”,以便缓存硬件知道最新值的位置

请注意,这些是通常的做法。有各种各样的疯狂变化

因此,如果数据存储在二级缓存中,操作系统是否会立即将此页面复制到一级缓存

通常是的。这允许一级缓存稍后在需要数据时执行其工作

现在,如果我们想写入数据,它会立即写入一级或二级缓存吗

到一级缓存。通常,它会在一级缓存中标记为“修改”,在二级缓存中标记为“无效”,以便缓存硬件知道最新值的位置

请注意,这些是通常的做法。有各种各样的疯狂变化

因此,如果数据存储在二级缓存中,操作系统是否会立即将此页面复制到一级缓存

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

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

因此,如果数据存储在二级缓存中,操作系统是否会立即将此页面复制到一级缓存

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


很少有处理器可以由操作系统控制缓存的内容。

请注意措辞,硬件是这样做的,而不是操作系统。请注意措辞,硬件是这样做的,而不是操作系统。感谢您澄清这一点。我希望处理器能让操作系统更好地控制上层缓存。这对于构建面向性能的应用程序和操作系统来说是非常酷的。感谢您澄清这一点。我希望处理器能让操作系统更好地控制上层缓存。这对于构建面向性能的应用程序和操作系统来说非常酷。CPU缓存以称为“行”的块(例如,在大多数现代CPU上为64字节)运行。虚拟内存页要大得多,例如4KB。另外,
read
write
是系统调用名。你是说系统呼叫吗?或者您是指一条名为“读取”的CPU指令?指令名始终使用加载/存储(或移动),而不是读/写。e、 g.ARM
LDR0,[r1]
使用r1作为指针,并将一个字从指向内存加载到r0中。(缓存命中/未命中详细信息和硬件预取对于软件来说都是不可见的,由硬件处理。您只能通过计时或性能计数器进行测量)CPU缓存以称为“行”的块(例如,大多数现代CPU上的64字节)运行。虚拟内存页要大得多,例如4KB。另外,
read
write
是系统调用名。你是说系统呼叫吗?或者您是指一条名为“读取”的CPU指令?指令名始终使用加载/存储(或移动),而不是读/写。e、 g.ARM
LDR0,[r1]
使用r1作为指针,并将一个字从指向内存加载到r0中。(缓存命中/未命中详细信息和硬件预取对于软件都是不可见的,由硬件处理。您只能通过计时或性能计数器进行测量)