美文网首页
二、CPU缓存与内存屏障

二、CPU缓存与内存屏障

作者: 温不胜_kangle | 来源:发表于2020-06-06 15:35 被阅读0次

CPU缓存介绍

1、位置:磁盘 -> 内存 -> CPU缓存

2、结构:cpu缓存分3层   CPU  < - > L1-L3缓存

                                         CPU  < - > L1-L3缓存   < - >    缓存一致性协议  < - >   主内存

                                         CPU  < - > L1-L3缓存

    L1:cpu一级缓存,分为数据缓存和指令缓存,一般服务器的容量在32~4096KB,多处理器时独立

    L2:cpu二级缓存,对L1缓存容量不足的的外层备份,多处理器时独立

    L3:cpu三级缓存,进一步降低内存延迟,提高大数据量时处理器的性能,多处理器时公用

    数据查找顺序:L1、L2、L3、内存、外部存储器(磁盘)    


缓存一致性协议

1、多CPU时,缓存写入CPU为准的协议MESI协议(缓存一致性协议),枚举每个CPU高速缓存的状态

M(Modified) :修改态:此缓存行已经被修改过,与主存不一致,此缓存专有

E(Exclusive):专有态:与主存一致,但不同于其他缓存

S(Shared):共享态:与主存一致,与其他缓存一致

I(Invalid):无效态:缓存内容无效(空行)


运行时指令重排序

1、场景:

x = 100; y = z;

CPU写缓存时发现缓存区块正被其他CPU占用,为了提高CPU处理性能,可能将后面的读缓存命令优先执行

2、as-if-serial语义

重排序并非随便重排序,遵守as - if - serial语义(不论怎么重排序,单线程程序的执行结果不能被改变。编译器和处理器都必须遵守该语义。也就是说编译器和处理器不会对存在数据依赖关系的操作做重排序)


两个问题

1、CPU高速缓存的问题

CPU缓存中的数据与主存数据不能实时同步,各并行CPU缓存之间信息不能实时同步

2、运行时指令重排序的问题

as-if-serial语义只能确保单线程,也就是单cpu的执行结果,多CPU时会出现乱序的问题(volatile、final)


处理器提供两个内存屏障指令(Memory Barrier)来解决以上问题

1、写内存屏障(Store Memory Barrier)

在指令后加入Memory Barrier,能让写入缓存的最新数据更新到主内存,让其他线程(CPU)可见

2、读内存屏障(Load Memory Barrier)

在指令前加入Memory Barrier,让当前CPU高速缓存中的数据失效,强制加载主内存数据

相关文章

  • 二、CPU缓存与内存屏障

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

  • 内存屏障

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

  • CPU缓存和内存屏障

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

  • CPU缓存和内存屏障

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

  • CPU缓存和内存屏障

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

  • 内存屏障和CPU缓存

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

  • CPU缓存及内存屏障

    CPU 性能优化手段 - 缓存 CPU 缓存模型: 多级缓存 L1 Cache (一级缓存) 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缓存与内存屏障

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