【发布时间】:2019-11-22 13:12:47
【问题描述】:
我不确定我是否正确理解 L1 和 L2 缓存背后的想法。
当我们使用read命令时,背后的逻辑:
- 首先检查数据是否存储在
L1缓存中(这样更快),如果没有,则检查L2缓存。- 那么如果数据存储在
L2缓存中,操作系统是否会立即将此页面复制到L1缓存中? - 现在,如果我们要
write数据,是立即写入L1或L2缓存?
- 那么如果数据存储在
【问题讨论】:
-
CPU 缓存在称为“行”的块中运行(例如,在大多数现代 CPU 上为 64 字节)。虚拟内存页面要大得多,例如4kiB。此外,
read和write是系统调用名称。你是说系统调用吗?还是您的意思是一条名为read的CPU 指令?指令名称总是使用加载/存储(或移动),而不是读/写。例如ARMldr r0, [r1]使用 r1 作为指针并将一个字从指向的内存加载到 r0 中。 (缓存命中/未命中细节和硬件预取对软件都是不可见的,由硬件处理。您只能通过时间或性能计数器来衡量)
标签: caching operating-system cpu-architecture cpu-cache