我是cloud3,我画了一张图。
这张图非常重要,展示了从CPU到外设的各个部件的速率,尤其是处理器内部的速率和延迟。从这里就可以看出cpu为什么要加那么多的告诉缓存L1 L2 L3了,相对于内存和其他外设,CPU实在是太快了。
另外各个外设的速率也在图中标注了,大家可以自己算算和CPU的速率差距。
备注:下面以Intel i7-4470处理器速率举例:
Intel i7-4770 (Haswell), 3.4 GHz (Turbo Boost off), 22 nm.
RAM: 32 GB (PC3-12800 cl11 cr2).
- L1 Data cache = 32 KB, 64 B/line, 8-WAY.
- L1 Instruction cache = 32 KB, 64 B/line, 8-WAY.
- L2 cache = 256 KB, 64 B/line, 8-WAY
- L3 cache = 8 MB, 64 B/line
- L1 Data Cache Latency = 4 cycles for simple access via pointer
- L1 Data Cache Latency = 5 cycles for access with complex address calculation (size_t n, *p; n = p[n]).
- L2 Cache Latency = 12 cycles
- L3 Cache Latency = 36 cycles (3.4 GHz i7-4770)
- L3 Cache Latency = 43 cycles (1.6 GHz E5-2603 v3)
- L3 Cache Latency = 58 cycles (core9) - 66 cycles (core5) (3.6 GHz E5-2699 v3 - 18 cores)
- RAM Latency = 36 cycles 57 ns (3.4 GHz i7-4770)
- RAM Latency = 62 cycles 100 ns (3.6 GHz E5-2699 v3 dual)
另外关于CPU和Cache的关系可以看看我的系列文章:
1高速缓存基本原理:
图解 | CPU-Cache
2高速缓存中的歧义和别名:
图解 | CPU-Cache | 2
3高速缓存一致性:
图解 | CPU-Cache | 一致性
4理解高速缓存对写代码的重要性:
图解Cache | 一个月代码白写了
5高速缓存是如何走入CPU的:
L1 L2 L3 Cache到底放在哪里好呢?
6自旋锁的发展和高速缓存的关系:
等待的艺术 | 自旋锁的前世今生
我是cloud3