CPU的L1、L2、L3缓存笔记

1、在L2或L3命中,就往上逐级复制填满到 L1,CPU 永远只吃 L1 的数据。(缓存全不命中 → 读物理内存 → 整行拉回 → 依次存入 L3、L2、L1 → CPU 从 L1 取数)

* L1 = 手边办公桌

* L2 = 隔壁书柜

* L3 = 公司大仓库

* 内存 = 城市图书馆

2、L1 / L2 / L3 的区别: 速度与容量的矛盾

L1(每核私有)

* 极小:64KB 左右

* 极快:1~2 个时钟周期

* 就在运算单元隔壁 缺点:做不大,做大就变慢、功耗爆炸

L2(每核私有)

* 中等:512KB~1MB

* 速度中等:十几周期

* 比 L1 慢,但比 L3 快 做折中:比 L1 大,比 L3 快

L3(所有核共享)

* 巨大:几十 MB

* 最慢:几十周期

* 所有核心共用,用来:

  1. 给各核做数据共享

  2. 缓存更大范围内存,减少往内存跑的次数

3、为什么不能只做一个「又大又快」的缓存?

物理上做不出来:

  1. 缓存越大,走线越长,延迟必然变大

  2. 越大越耗电、发热暴涨

  3. 全大缓存成本天价

4、缓存的数据类似一个带基地址的数组

缓存最小单位不是字节,是缓存行 Cache Line

ARM/Intel 现在标准都是:64 Byte 一行

每一条缓存行存两样东西:1. Tag:物理地址高位 2. Data:64 字节真实数据

CPU 缓存底层就是数组逻辑,根本不是哈希 Map、不是字典。

相关推荐
Shining059610 天前
QEMU 编译开发环境搭建
人工智能·语言模型·自然语言处理·云原生·qemu·vllm·华为昇腾
高铭杰13 天前
Postgresql热迁移pgbench持续读写零中断
postgresql·qemu·neon
高铭杰23 天前
QEMU网络配置1
qemu·vxlan
enjoy嚣士2 个月前
Windows10下安装arm64架构的centos
qemu·aarch64 linux·arm64 linux·arm64 centos
x-cmd3 个月前
[x-cmd] QEMU 10.2.0 发布:虚拟机实时更新与性能飞跃的技术深度解读
安全·qemu·虚拟机·x-cmd
yao000373 个月前
基于QEMU+OpenSBI+edk2的riscv启动流程解析
qemu·riscv·uefi·bios·固件·opensbi
三雷科技3 个月前
qemu-img 使用手册(含详细案例)
qemu
河码匠3 个月前
libvirt xml 配置文件说明
qemu·kvm·libvirt