转载:https://www.jianshu.com/p/9ce55861e4ce
4.1 CPU缓存
为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。使用CPU高速缓存就是其中一种途径。目的就是为了尽可能地避免处理器访问主内存的时间开销。
现代CPU一般有三级缓存,使用cpu-z能清楚地看到。
CPU-Z截取的三级缓存
图一
多级缓存:
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。(每个核心都有自己的L1缓存)
L2由于L1级高速缓存容量的限制,为了再次提升CPU的运行速度,在CPU外部放置多一个高速缓存(每个核心都有自己的L2缓存)
L3都是内置的。L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能,具有较大的L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。一般是多核共享一个L3缓存。
图二
缓存同步协议(MESI协议):
多CPU读取同样的数据进行缓存,进行不同运算之后,最终写入主内存以哪个CPU为准?
在这种高速缓存回写的场景下,有一个缓存一致性协议,多数CPU厂商对它进行了实现。MESI协议,它规定每条缓存有个状态位,同时定义了下面四个状态:
1)修改态(Modified):此cache行已被修改过(脏行),内容已不同于主存,为此cache专有2)专有态(Exclusive):此cache行内容同于
Cpu Cache and Memory Barrier(CPU缓存与内存屏障)
本文介绍了CPU缓存的三级结构及其优化手段,特别是 MESI 协议保证缓存一致性。同时探讨了指令重排在CPU性能优化中的作用,以及如何通过内存屏障解决多核环境下数据同步问题。
摘要由CSDN通过智能技术生成