一、CPU高速缓存(Cache Memory)
概念简介
CPU缓存(Cache Memory)即高速缓冲存储器,是位于CPU和主内存之间的一种容量较小但速度很快的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,减少CPU的等待时间,提高了系统的效率。

CPU缓存的两个特性
在CPU访问存储设备时,无论是存取数据还是存取指令,都趋于集中在一片连续的区域中,这就是局部性原理。
时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
比如循环、递归、方法的反复调用等。
空间局部性(Spatial Locality):如果一个存储器的位置被引用,那么将来他附近的位置也很可能会被引用。
比如顺序执行的代码、连续创建的两个对象、数组等。
多CPU多核缓存架构
物理CPU:物理CPU就是插在主机上的真实的CPU硬件,在Linux下可以数不同的physical id 来确认主机的物理CPU个数。
核心数:我们常常会听说多核处理器,其中的核指的就是核心数。在Linux下可以通过cores来确认主机的物理CPU的核心数。
逻辑CPU:逻辑CPU跟超线程技术有联系,假如物理CPU不支持超线程的,那么逻辑CPU的数量等于核心数的数量;如果物理CPU支持超线程,那么逻辑CPU的数目是核心数数目的两倍。在Linux下可以通过 processors 的数目来确认逻辑CPU的数量。 (扩展: 超线程是一种虚拟化技术,在CPU性能有剩余时靠软件来虚拟出另一个线程来辅助计算工作。)

现代CPU为了提升执行效率,减少CPU与内存的交互,一般在CPU上集成了多级缓存架构,常见的为三级缓存结构<

文章介绍了CPU高速缓存的作用和原理,包括局部性原理的两个方面:时间局部性和空间局部性。现代CPU通常采用多级缓存架构,以提高效率。接着讨论了缓存一致性的重要性和实现机制,如写传播和事务串行化,并提到了总线仲裁和一致性协议如MESI。最后,文章阐述了伪共享问题及避免策略,如缓存行填充和使用特定的Java注解。
1045

被折叠的 条评论
为什么被折叠?



