java高级-高性能-多线程并发编程--1.1.4 CPU优化的两种方法及二次问题的修复 读写-内存屏障
CPU性能优化之一–缓存cache L1-L3缓存 L1-L3缓存 CPU 缓存一致性协议 CPU 主内存 多级缓存,不断提高容量 L1 Cache (一级缓存)是CPU第一层高速缓存, 分为数据缓存和指令缓存, 一般服务器CPU的L1缓存的容量通常在32-4096kb L2 Cache (二级缓存) 由于L1高速缓存的容量限制, 为了再次提高CPU的运算速度, 在CPU外部放置一高速缓存存储器, 即二级缓存 L3 Cache(三级缓存)现在都是内置的, 而它的实际作用既是, L3缓存的应用可以进一步降低内存延迟, 同时提升大数据量计算时处理器的性能. 具有较大 L3缓存的处理器更有效的文件系统缓存行为及较短消息和处理器队列长度. 一般是多核共享一个L3缓存 CPU在读取数据时, 先在L1中寻找, 再从L2中寻找, 再从L3中寻找, 然后是内存, 最后是外存储器 缓存同步协议 多CPU读取同样的数据进行缓存, 进行不同运算之后, 最终写入主内存以那个CPU为准? 在这种高速缓存回写的场景下, 有一个缓存一致性协议, 多数CPU厂商对它进行了实现. 即MESI协议, 它规定每条缓存有个状态位, 同时定义了下面四种状态: 修改态(Modified) 此cache行已被修改过(脏行), 内容已不同于主内存, 为此cache专有 专有态(Exclusive) 此cache行同于主存,