因为眼镜坏了,这篇文章写起来花了不少功夫,里面还有些错字,请见谅= =
我们上一个 part 聊过了 direct-mapped cache,这一节我们重复一些 cache 的 basics,然后聊 cache 相关的优化。
Recall
我们之前介绍过了 direct-mapped cache,之所以叫这个名字,是因为:
This cache structure is called direct mapped, since each memory location is mapped directly to exactly one location in the cache.
我们上一节中,一个地址可以被分成:
- tag
- index
- offset
而 cache 本身的存储不只是存放地址,它需要存放的是:
- Invalid bit
- tag
- block data
我查了一下,这里 block 的概念比较接近 cacheline 的概念. 我的电脑 lscpu 下试试:
我的台式,使用 lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 43 bits physical, 48 bits virtual
CPU: 16
在线 CPU 列表: 0-15
每个核的线程数: 2
每个座的核数: 8
座: 1
NUMA 节点: 1
厂商 ID: AuthenticAMD
CPU 系列: 23
型号: 113
型号名称: AMD Ryzen 7 3800X 8-Core Processor
步进: 0
Frequency boost: enabled
CPU MHz: 1961.707
CPU 最大 MHz: 3900.0000
CPU 最小 MHz: 2200.0000
BogoMIPS: 7802.74
虚拟化: AMD-V
L1d 缓存: 256 KiB
L1i 缓存: 256 KiB
L2 缓存: 4 MiB
L3 缓存: 32 MiB
NUMA 节点0 CPU: 0-15</