我们在进行并行程序的编程的时候,总是要考虑到互斥。但是我们平时所用的互斥锁,信号量这些是怎么来实现原子操作的啊,怎么来保证程序执行的顺序的啊。带着好奇学习了相关的内存屏障,对于理解原子性执行有一定的帮助。
首先来理清两个概念,在平时写程序的时候,我们都会遇到violate 关键字,该关键字只是提醒我们编译器在编译程序的时候,不要优化该变量。每次乖乖的去内存中取吧。
但是对于cpu来说。这并不能起到任何作用,cpu为了提高自己的执行速度,会存在乱序的执行顺序。这时候我们为了提醒cpu不要乱序执行,我们就要应用cpu的特有指令来告诉cpu。
cpu乱序主要是因为store buff 以及invalid queue来提高执行效率导致的??
为了在并行编程中理解cpu来实现cache line一致性,我们需要知道cpu的MSEI状态。
M(MODIFY):CPU特有数据,cache line和内存中的不一致
S(SHARE):共享,cache line和内存一致?
E():CPU特有,cache line与内存一致
I(IVLAID):EMPTY,无数据
阅读(1120) | 评论(0) | 转发(0) |