内存排序

✍ dations ◷ 2025-11-15 06:49:31 #内存排序

内存排序是指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))

参考文献

  1. ^ GCC compiler-gcc.h. . (原始内容存档于2011-07-24). 
  2. ^ 存档副本. . (原始内容存档于2020-08-10). 
  3. ^ ECC compiler-intel.h. . (原始内容存档于2011-07-24). 
  4. ^ 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.

相关

  • 重商主义重商主义(英语:mercantilism)是在16世纪到18世纪之间盛行的经济理论、经济政策。重商主义是民族主义在经济上的一种形式。它的目标是最大限度的使国家富足与强盛,借由获取并留下
  • 阿努希-拉瓦尼·哈姆拉巴德阿努希-拉瓦尼·哈姆拉巴德(波斯语:سجاد انوشیروانی‎,1984年5月21日-)是一名伊朗举重运动员,身高1.9米。2010年,在广州亚运会中以427千克夺得男子105公斤以上级举重
  • 列克星敦 (南卡罗来纳州)列克星敦(英文:Lexington),是美国南卡罗来纳州下属的一座城市。城市类型是镇。其面积大约为8.95平方英里(23.17平方公里)。根据2010年美国人口普查,该市有人口17,870人,人口密度约为
  • 埃朗单位埃朗(英语:Erlang,简写为 E)是无量纲计量单位之一,广泛用于统计电讯流量大小上。如果某通信系统采用一个频道,在无间断持续及资源满载的情况下,其流量为1个埃朗单位。如果有两条频
  • 凯拉芒格阿拉姆凯拉芒格阿拉姆(Kelamangalam),是印度泰米尔纳德邦Dharmapuri县的一个城镇。总人口10994(2001年)。该地2001年总人口10994人,其中男性5655人,女性5339人;0—6岁人口1619人,其中男877
  • 阿鸽阿鸽(1948年5月-)别名邓明英,国家一级美术师,是一位中国艺术家。1948年出生于西康省凉山越西县的一个彝族家庭,1964年毕业于四川美术学院民族班,后进入位于重庆化龙桥的中国美术家
  • 阿斯米尔·贝戈维奇阿斯米尔·贝戈维奇(拉丁字母:Asmir Begović,1987年6月20日-)是一名波斯尼亚和黑塞哥维那足球运动员,司职守门员,现效力英冠球队伯恩茅斯。他现在也是波斯尼亚和黑塞哥维那国家足
  • 一家团圆《一家团圆》(英语:Family Reunion),为三立台湾台八点档连续剧。2021年11月10日在“2021 TCCF创意内容大会”活动中举办新八点台剧《一家团圆》首波卡司发布会,接档《天之骄女》于每周一至周五晚间八点播出。
  • 南京外国语学校仙林分校南京外国语学校仙林分校是南京市政府为扩大优质教育资源于2002年决策创建的一所由名校南京外国语学校控股的具有多种经济成分参与的股份制新型民办寄宿学校,其管理体制为董事会领导下的校长负责制。学校主校区坐落在南京仙林大学城,占地410亩,校舍建筑15.8万平方米。学校有东校区(2003)、西校区(2010)和燕子矶校区(2019)三个校区,总占地面积510亩。学校设有小学部、中学部(完中)和国际高中部。学校分设小学部、中学部、国际高中部,全校现有230个班级共8900多名学生,1200多名教职工中,有专职教师
  • 沃草 (公司)沃草有限公司(英语:Watchout, Co.),在2013年11月由台派金主出资新台币2200万元创办,标榜以社会企业形态经营及“亚洲第一个监督政府运作的独立网络平台”。其名称“沃草”,为英文“Watch out”的翻译,原意是“提防警戒”,意思是要“提防警戒”政客的作为。沃草主要目的在于监督国会议员与其他民意代表、政府官员等政治人物,时常在网络上转播立法院议场质询实况。在2014年台北市市长选举中,沃草成功举办“市长,给问吗”的活动,邀请三位候选人柯文哲、连胜文、冯光远在网络上回答网友问题,大获好评。