内存排序是指CPU访问主存时的顺序。可以是编译器在编译时产生,也可以是CPU在运行时产生。反映了内存操作重排序,乱序执行,从而充分利用不同内存的总线带宽。
现代处理器大都是乱序执行。因此需要内存屏障以确保多线程的同步。
这些内存屏障阻止编译器在编译时乱序指令,但在运行时无效。
asm volatile("" ::: "memory");
或者
__asm__ __volatile__ ("" ::: "memory");
阻止GCC编译器跨越它乱序读/写指令。
atomic_signal_fence(memory_order_acq_rel);
阻止编译器跨越它乱序读/写指令。
__memory_barrier()
指令。
_ReadWriteBarrier()
运行时内存排序
- happens-before:按照程序的代码序执行
- synchronized-with:不同线程间,对于同一个原子操作,需要同步关系,store()操作一定要先于 load(),也就是说 对于一个原子变量x,先写x,然后读x是一个同步的操作
对称多处理器(SMP)系统
对称多处理器(SMP)系统有多个内存一致模型。
某些老的x86有更弱内存序。
SPARC 内存序:
lfence (asm), void _mm_lfence(void)sfence (asm), void _mm_sfence(void)mfence (asm), void _mm_mfence(void)
- PowerPC
sync (asm)
- MIPS
sync (asm)
- Itanium
mf (asm)
- POWER
dcs (asm)
- ARMv7
dmb (asm)dsb (asm)isb (asm)
编译器对硬件内存屏障的支持
- GCC, version 4.4.0 and later, has
__sync_synchronize
. - C11/C++11
atomic_thread_fence()
支持一条命令 - Microsoft Visual C++ has
MemoryBarrier()
. - Sun Studio Compiler Suite has
__machine_r_barrier
,__machine_w_barrier
and__machine_rw_barrier
.
参见
- 内存模型 (程序设计)(英语:Memory model (programming))
参考文献
- ^ GCC compiler-gcc.h. . (原始内容存档于2011-07-24).
- ^ 存档副本. . (原始内容存档于2020-08-10).
- ^ ECC compiler-intel.h. . (原始内容存档于2011-07-24).
- ^ Intel(R) C++ Compiler Intrinsics Reference (页面存档备份,存于互联网档案馆)
Creates a barrier across which the compiler will not schedule any data access instruction. The compiler may allocate local data in registers across a memory barrier, but not global data.
相关
- 泛称在生物分类中,俗名是指任何非拉丁学名的名称。在同一种语言的俗名中,又分普通名(common name)和别名。普通名是在该语言中被广泛接受使用名称;别名是普通名之外的其他所有俗名
- 宋志平宋志平(1956年10月-),河北深泽人。中国建筑材料集团有限公司、中国建材股份有限公司(3323.HK)前董事长及常务董事。毕业于河北大学化学系、工商管理硕士和管理工程博士,以及武汉
- 氟化锌氟化锌(化学式:ZnF2)是锌最常见的氟化物。无色针状晶体或白色粉末。有无水物和四水合物两种。与其他卤化锌不同,有明显的离子键化合物特性:熔点很高,溶解度也较小。金红石型结构,锌
- 武汉市新洲区公交线路2015年,新洲邾城开通7条公交线路,由湖北公路客运(集团)新洲公交有限公司运营。
- 阿卜杜尔·穆伊斯阿卜杜尔·穆伊斯(印尼语:Abdul Muis,1886年7月3日-1959年6月17日),印尼作家、记者,在荷属东印度时期参与了印度尼西亚的独立运动,并曾因此多次入狱。他的代表作为《错误的教育(英语:S
- 你们在哪里?我在这里《你们在哪里?我在这里》(意大利语:)是于1993年上映的意大利剧情片。该片由莉莉安娜·卡瓦尼(英语:Liliana Cavani)执导。电影入选第50届威尼斯电影节,而安娜·博纳奥图赢得沃尔庇杯
- 毁灭者柯南《毁灭者柯南》(英语:Conan the Destroyer)是一部于1984年上映的美国剑与魔法冒险电影,由理查德·弗莱彻执导,阿诺德·施瓦辛格领衔,其他演员包括葛蕾丝·琼斯、奥利薇亚·阿波、
- 威廉一世 (巴伐利亚)威廉一世,(1330年5月12日-1389年4月),维特尔斯巴赫家族成员,巴伐利亚公爵(1347年—1388年在位)、荷兰伯爵(是为威廉五世)、泽兰伯爵(是为威廉四世)和埃诺伯爵(英语:County of Hainaut)(是为
- 马路须加学园3《马路须加学园3》(日语:マジすか学園3)是东京电视台系列电视剧24(每周星期五24:12 - 24:53、JST)由岛崎遥香主演的电视剧。马路须加学园系列的第三作,也是全系列唯一背景设定不同的作品。前作担任主演的前田敦子更替为岛崎遥香主演。同时,主要成员和角色设定也大幅度地变更。而且,舞台与前作的以不良学园的设定也改变,以20XX年的少年刑务所(民间更生教育法人的“监狱 HOPE”经营)为设定。20XX年,少年法被修正,法务省矫正局委托由民间企业经营管理的少女监狱。没有记忆的少女・Paru被监狱监禁的地
- 数学能力及性别一般人常认为数学能力会因为性别不同而有差异。男性通常被认为在数学方面的表现会比女性好。有两个领域被认为有这种差异:第二个说法的争议性相当高。在工程师等以数学为基础的职业里,女性与男性的从业人数有相当大的差距。 因为这些事业会要求数学能力显著高于一般人的人。有性别引起的技能差异比一般的高。所以,当讨论女性在工程事业上的数量的时候,比较一般水平并非十分有用,而且应该比较女性工程师在女性当中的比例而非比较男、女工程师的比例。有很多理论解释性别所造成的数学能力差距。有些研究者认为是环境造成。例如,由家庭与学校中,