美文网首页
CPU缓存及内存屏障

CPU缓存及内存屏障

作者: 任性一把 | 来源:发表于2019-12-31 16:09 被阅读0次

CPU 性能优化手段 - 缓存

为了避免 CPU 访问主内存的时间开销,处理器会利用高速缓存来提高性能。

CPU 缓存模型:

image.png

多级缓存

L1 Cache (一级缓存) CPU第一级高速缓存,分为数据缓存和指令缓存,一般服务器 CPU 的缓存容量通常在32-4096KB

L2 Cache (二级缓存)为了突破一级缓存的容量限制,提高CPU的性能,CPU外部放置的高速存储器。

L3 Cache (三级缓存)同理二级缓存,提高缓存的容量限制,一般多核共享 L3 缓存,

CPU 优先一级缓存查找数据,逐级查找,最后到外置硬盘。

缓存协议

缓存协议为了处理多核 CPU 缓存数据一致性问题,在多核处理器中,CPU 对缓存中的数据进行修改,需要通知其他 CPU,同理,CPU 不但要处理缓存的读写,也要监听和通知替他CPU,保证数据一致性。

MESI协议定义了四种缓存状态:

修改态 (Modified)缓存内容与主内存不同,为此Cache专有
专有态 (Exclutive)缓存内容与主内存相同,并且仅出现在此 Cache 中
共享态 (Shared) 缓存内容与主内存相同,同时出现在其他 Cache 中
无效态 (Invalid)Cache 中内存无效,需要从主内存获取

问题

CPU 缓存不是实时同步,因此在统一时刻,各 CPU 看到的同一内存地址的缓存数据可能出现不一致情况。

CPU 性能优化手段 - 指令重排

CPU 处理写缓存时可能出现缓存区块被其他 CPU 占用,为了提高性能,可能将后面的读缓存优先执行。当然,指令重排不能影响程序的运行结果,不能对有数据依赖关系的只能进行重排。

问题

在多 CPU 中 指令逻辑无法分辨因果关联,出现乱序执行,影响执行结果。

内存屏障

写内存屏障 (Store Memory Barrier)指定命令强制写入祝内存,CPU 就不会因为考虑性能而对指令重排。能让写入缓存中的最新数据写入主内存,让其他线程可见。

读内存屏障 (Read Memory Barrier)指定命令强制读取主内存,让缓存与主内存一致,避免缓存不一致问题。能让高速缓存中的数据失效,强制从新获取主内存数据。

相关文章

  • CPU缓存及内存屏障

    CPU 性能优化手段 - 缓存 CPU 缓存模型: 多级缓存 L1 Cache (一级缓存) CPU第一级高速缓存...

  • 内存屏障

    内存屏障(Memory barrier) 为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3...

  • CPU缓存和内存屏障

    CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化例如: CPU高速缓存...

  • CPU缓存和内存屏障

    CPU性能优化手段-缓存 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可...

  • CPU缓存和内存屏障

    CPU性能优化手段 缓存 运行时指令重排 缓存 为了提高程序运行的性能,处理器大多会利用缓存来提高性能,而避免访问...

  • 内存屏障和CPU缓存

    CPU缓存 CPU高速缓存类型有一级缓存,二级缓存,三级缓存。在读取数据时会先从一级缓存查找,再找二级缓存,再找三...

  • 杂谈 什么是伪共享(false sharing)?

    问题 (1)什么是 CPU 缓存行? (2)什么是内存屏障? (3)什么是伪共享? (4)如何避免伪共享? CPU...

  • 杂谈 什么是伪共享(false sharing)?

    问题 (1)什么是 CPU 缓存行? (2)什么是内存屏障? (3)什么是伪共享? (4)如何避免伪共享? CPU...

  • 1.1.4 CPU缓存和内存屏障

    CPU缓存 由于CPU的运算速度高出CPU和内存之间的数据传输速度一个级别,CPU厂商为了尽可能的利用CPU的性能...

  • 二、CPU缓存与内存屏障

    CPU缓存介绍 1、位置:磁盘 -> 内存 -> CPU缓存 2、结构:cpu缓存分3层 CPU < - > L1...

网友评论

      本文标题:CPU缓存及内存屏障

      本文链接:https://www.haomeiwen.com/subject/dfwboctx.html