早期的CPU没有Cache,随着CPU频率的提高,主内存跟不上CPU的频率,CPU需要等待主存,所以 Cache 的出现了,它是解决CPU和内存之间的频率不匹配的问题。
在《图解 | CPU-Cache》一文中介绍了VIVT、PIPT、VIPT三种查找方式。下面分析一下其歧义别名问题。 歧义:查找到的Cacheline先后指向多个物理地址。
在《图解 | CPU-Cache》一文中介绍了VIVT、PIPT、VIPT三种Cache查找方式。 在一文《图解 | CPU-Cache | 2》中介绍了Cache的歧义和别名问题。
对Cache还不太熟悉的朋友可以先看看我的系列文章: 1高速缓存基本原理: 图解 | CPU-Cache 2高速缓存中的歧义和别名: 图解 | CPU-Cache | 2 3高速缓存一致性: 图解 | CPU-Cache | 一致性 4理解高速缓存对写代码的重要性: 图解Cache | 一个月代码白写了 5自旋锁的发展和高速缓存的关系: 等待的艺术 | 自旋锁的前世今生 好了,今天不讲原理,只看历史
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 | 一个月代码白写了
对Cache还不太熟悉的朋友可以先看看我的系列文章: 1高速缓存基本原理: 图解 | CPU-Cache 2高速缓存中的歧义和别名: 图解 | CPU-Cache | 2 3高速缓存一致性: 图解 | CPU-Cache | 一致性 4理解高速缓存对写代码的重要性: 图解Cache | 一个月代码白写了 5高速缓存的历史 L1 L2 L3 Cache到底放在哪里好呢?
2.69772688.1649206191.1539071986-1093133560.1531447977developer.arm.com [2] 高速缓存与一致: https://zhuanlan.zhihu.com/cpu-cache
有兴趣的读者还可以查阅另一篇国人对Page Align导致效率低的实验:http://evol128.is-programmer.com/posts/35453.html 想要知道更多关于内存地址对齐在目前的这种CPU-Cache