没有合适的资源?快使用搜索试试~ 我知道了~
4190海报:AArch64原子操作:它们可能会损害您的性能吗?0Ricardo Jesus EPCCEdinburgh大学 Edinburgh,United Kingdomrjj@ed.ac.uk0Michèle Weiland EPCCEdinburgh大学 Edinburgh,United Kingdomm.weiland@epcc.ed.ac.uk0摘要原子操作是不可分割的操作,保证作为一个整体执行。最重要和广泛使用的原子操作之一是“比较并交换”(CAS),它允许线程在同一内存位置上执行并发的读-修改-写操作,避免了数据竞争。在最近的Arm架构上,CAS操作可以直接通过CAS指令或通过加载链接/存储条件(LL-SC)指令对实现。在这项工作中,我们探索了CAS和LL-SC方法在最新的高性能AArch64CPU(即A64FX、ThunderX2(TX2)和Graviton3)上实现CAS操作的性能。我们观察到这些指令可以导致根本不同的性能特性。例如,在A64FX上,较新的CAS指令(编译器默认选择的指令)随着线程数量的增加,每个成功的CAS操作的平均时间呈二次增加,而较旧的LL-SC指令则呈线性增加。对于较高的线程计数,这意味着LL-SC比CAS快20多倍。在TX2和Graviton3上,LL-SC可以带来更为保守(但仍显著的)2-3倍的加速。我们描述了每种方法在每个CPU上提供更好性能的条件,包括控制A64FX性能的“延迟阈值”0CCS概念:•计算机系统组织→多核架构;•一般参考→性能;评估;•软件及其工程→并发控制;多线程。0关键词:A64FX、Graviton3、ThunderX2、原子操作、基准测试、比较并交换、性能分析0允许个人或课堂使用本作品的部分或全部进行数字或硬拷贝,但不得为了盈利或商业优势而复制或分发拷贝,并且复制件必须带有本通知和第一页的完整引用。必须尊重本作品第三方组件的版权。对于其他任何用途,请与所有者/作者联系。PPoPP’23,2023年2月25日至3月1日,加拿大蒙特利尔©2023版权由所有者/作者持有。ACM ISBN979-8-4007-0015-6/23/02。https://doi.org/10.1145/3572848.357983801 引言0在并发编程的上下文中,原子操作是保证在没有其他线程干扰的情况下完整执行的不可分割操作。这些操作对于多线程程序中线程的同步和协作至关重要[1]。最常见和通用的原子操作之一是“比较并交换”(CAS),它允许线程原子地比较存储在内存中的值与另一个值,并且如果值匹配,则用新值覆盖内存。CAS操作的适用范围从低级别的同步原语(如锁和信号量)到更高级别的代码(如并发数据结构[7, 8,11]和内存数据库[9])。在最近的Arm架构上,CAS操作可以通过显式的CAS指令或通过加载链接/存储条件(LL-SC)指令对实现。在这项工作中,我们探索了这些方法在最新的高性能AArch64 CPU(即A64FX、ThunderX2和Graviton3)上的性能。我们总结了我们工作的主要贡献如下:01.我们展示了较新的CAS指令对并行代码的负面影响(编译器默认选择这些指令);02 我们详细研究了CAS和LL-SC指令在最先进的AArch64CPU上的性能;03.我们描述了每种方法(CAS或LL-SC)在每个CPU上提供更好性能的条件,包括控制A64FX性能的“延迟阈值”;02 相关工作过去对CAS和其他原子操作的性能进行了广泛研究,特别是对x86目标进行了深入考虑[5, 6, 12, 16,17]。在这里,我们专注于AArch64CPU上的性能,相比之下,AArch64CPU接受的关注较少。在[14]中,作者研究了Graviton2和Kunpeng920处理器上CAS和LL-SC指令的性能,使用了LockHammer[2]和Splash-3[15]。关键是,他们没有识别出我们在A64FX和TX2上观察到的基本不同的扩展趋势,也没有研究Graviton2/3如何响应持续时间不同的循环,因此没有实现LL-SC指令带来的加速。0.0010.010.111010010001248163264124816326412481632641,00010,000100,0001,000,0004200PPoPP’23,2023年2月25日至3月1日,加拿大蒙特利尔 Ricardo Jesus and Michèle Weiland0微秒/线程/递增0线程数0TX2(CAS)0TX2(LL-SC)0A64FX(CAS)0A64FX(LL-SC)03x 3x 3x 3x 2x 2x0a)0uint64_t内核;A64FX,TX20线程数0TX2(CAS)0TX2(LL-SC)0A64FX(CAS)0A64FX(LL-SC)08x 8x 16x 16x 22x 22x b)0双精度内核;A64FX,TX20线程数0CAS0c)0uint64_t内核;Graviton30图1. CAS与LL-SC策略的性能比较。(a-b)整数(a)和双精度(b)内核在A64FX和TX2CPU上的结果。(c)不同迭代次数下Graviton3的结果。在(c)中,LL-SC运行结果以颜色表示,CAS运行结果以黑色表示(所有CAS线路重叠在一起);此外,仅显示整数内核的结果,因为双精度内核的结果是相同的。注释显示加速比(�最慢/�最快)。0在[13]中,作者发现LL-SC指令在Kunpeng 920CPU上的HMCS锁[3,10]中优于CAS,在单线程场景中。最后,在[4]中,作者利用原子计数器研究了LL-SC和ldadd指令的性能。我们的基准测试(如下所述)与他们的类似。03 基准描述0为了评估CAS和LL-SC指令的性能,我们开发了一组微基准测试,其中线程同时递增共享计数器,利用CAS操作(使用CAS或LL-SC指令实现)以线程安全的方式执行递增操作。使用整数和浮点数(双精度)计数器来演示CAS操作的延迟,即从加载到依赖的CAS/存储条件指令之间的时间,对性能的影响(例如,在A64FX上,整数计数器意味着CAS延迟约为6个周期,而双精度计数器的延迟约为38-41个周期)。内核使用汇编语言编写,以避免编译器引入的差异。除非另有说明,每个内核运行100,000次递增操作,我们报告每个线程执行递增操作所花费的平均时间。04 实验结果在图1(a-b)中,我们比较了CAS和LL-SC策略在TX2和A64FXCPU上的性能。如图所示,在TX2上,每个线程执行递增操作所花费的平均时间随着线程数量的增加呈近似二次增加,然后由于NUMA域的交叉而略微下降(所使用的系统具有两个32核的TX2处理器,每个处理器对应一个NUMA域)。在A64FX上,使用CAS指令进行高延迟CAS操作时,也出现了二次减速的情况,如双内核所示。转变为二次减速的情况也适用于A64FX的CAS指令。0当A64FX上的负载和依赖的CAS指令之间的时间超过39个时钟周期时(由于空间限制,这些结果未在此处显示),会导致性能降低。此外,图表还显示,对于任何计数器类型,LL-SC比TX2上的CAS快2-3�,并且对于双计数器,LL-SC在A64FX上可以带来超过20�的加速效果。这是因为,与CAS不同,LL-SC在高延迟的CAS操作中不会出现二次性能降低。在图1(c)中,我们比较了CAS和LL-SC在Graviton3上的性能。图表显示,当在Graviton3上使用LL-SC时,每次成功操作的平均时间会随着操作的数量增加而增加。实际上,这意味着在执行100万次操作时,使用64个线程的平均每个操作的时间几乎比执行1000次操作时的平均时间高10�。这种效果在A64FX或TX2上不会出现,Graviton3上的CAS指令也不会出现。然而,在操作计数较低(100,000以下)的情况下,LL-SC在Graviton3上可能比CAS快得多。例如,在1,000次迭代中,LL-SC在所有线程计数上大约比CAS快3�。因此,在不希望线程长时间争用相同内存位置的情况下,应优先选择LL-SC(在达到一定数量的失败LL-SC尝试后可能回退到CAS指令)。0致谢这项工作使用了Isambard英国国家二级HPC服务(http://gw4.ac.uk/isambard/),由GW4和英国气象局运营,并由EPSRC(EP/P020224/1)资助,以及Fulhame,作为CatalystUK计划的一部分,HPE、Arm和SUSE与英国合作加速采用基于Arm的超级计算机。4210海报:AArch64原子操作:它们可能会损害您的性能吗?PPoPP '23, 2023年2月25日至3月1日, 加拿大蒙特利尔0参考文献0[1] Victor Alessandrini. 2016. 并发访问共享数据.在《共享内存应用程序编程》中. Morgan Kaufmann, 波士顿, 101–127.https://doi.org/10.1016/B978-0-12-803761-4.00005-80[2] Arm Limited. 2022. 同步基准.https://github.com/ARM-software/synchronization-benchmarks0[3] Milind Chabbi, Michael Fagan和John Mellor-Crummey. 2015.多级NUMA系统的高性能锁. 在第20届ACMSIGPLAN并行编程原理和实践研讨会论文集中. ACM,美国加利福尼亚州旧金山, 215–226. https://doi.org/10.1145/2688500.26885030[4] Jim Cownie. 2021. AArch64中的原子操作.https://cpufun.substack.com/p/atomics-in-aarch640[5] Tudor David, Rachid Guerraoui和Vasileios Trigonakis. 2013.关于同步的一切,但又不敢问。在第24届ACM操作系统原理研讨会论文集中.ACM, 美国宾夕法尼亚州农田, 33–48.https://doi.org/10.1145/2517349.25227140[6] David Dice, Danny Hendler和Ilya Mirsky. 2013.高效的比较和交换操作的轻量级争用管理. 在Euro-Par2013并行处理研讨会中, David Hutchison, Takeo Kanade, Josef Kittler,Jon M. Kleinberg, Friedemann Mattern, John C. Mitchell, Moni Naor,Oscar Nierstrasz, C. Pandu Rangan, Bernhard Steffen, Madhu Sudan,Demetri Terzopoulos, Doug Tygar, Moshe Y. Vardi, Gerhard Weikum,Felix Wolf, Bernd Mohr和Dieter an Mey(编辑). 第8097卷. SpringerBerlin Heidelberg, 德国柏林, 波恩, 595–606.https://doi.org/10.1007/978-3-642-40047-6_600[7] Maurice Herlihy, Nir Shavit, Victor Luchangco和Michael Spear. 2021.《多处理器编程的艺术》(第二版). Morgan Kaufmann, 麻省剑桥.0[8] Michael Klemm和Jim Cownie. 2021. 6 互斥和原子性.在《高性能并行运行时:设计与实现》中. De Gruyter Oldenbourg,德国柏林, 波士顿, 146–193. https://doi.org/10.1515/9783110632729-0060[9] Darko Makreshanski, Justin Levandoski和Ryan Stutsman. 2015.锁定、交换还是排除:硬件事务内存与无锁索引的相互作用。VLDBEndowment论文集08, 11(2015年7月), 1298–1309. https://doi.org/10.14778/2809974.28099900[10] John M. Mellor-Crummey和Michael L. Scott. 1991.可扩展共享内存多处理器的同步算法. ACM计算系统事务 9, 1(1991年2月),21–65. https://doi. org/10.1145/103727.1037290[11] Maged M. Michael和Michael L. Scott. 1996.简单、快速和实用的非阻塞和阻塞并发队列算法.在第十五届ACM分布式计算原理研讨会(PODC '96)论文集中. ACM Press,美国宾夕法尼亚州费城, 267–275. https://doi.org/10.1145/248052.2481060[12] Adam Morrison和Yehuda Afek. 2013. X86处理器的快速并发队列.在第18届ACM SIGPLAN并行编程原理和实践研讨会(PPoPP '13)中. ACMPress, 中国深圳, 103. https://doi.org/10.1145/2442516.24425270[13] Jonas Oberhauser, Lilith Oberhauser, Antonio Paolillo, Diogo Behrens,Ming Fu和Viktor Vafeiadis. 2021. 验证和优化Arm服务器的HMCS锁.在Networked Systems中, Karima Echihabi and Roland Meyer(编辑).第12754卷. Springer International Publishing, 瑞士洛桑, 240–260.https://doi.org/10.1007/978-3-030-91014-3_170[14] Víctor Soria Pardos. 2022. Arm架构中原子内存操作的特性和建模.硕士论文. 加泰罗尼亚理工大学, 巴塞罗那. https://upcommons.upc.edu/handle/2117/3637280[15] Christos Sakalis, Carl Leonardsson, Stefanos Kaxiras和Alberto Ros.2016. Splash-3:用于当代研究的正确同步基准套件.在2016年IEEE系统和软件性能分析国际研讨会(ISPASS)中. IEEE,瑞典乌普萨拉, 101–111. https://doi.org/10.1109/ISPASS.2016.74820780[16] Hermann Schweizer, Maciej Besta和Torsten Hoefler. 2015.评估现代体系结构上原子操作的成本.在2015年国际并行架构和编译会议(PACT)中. IEEE,美国加利福尼亚州旧金山, 445–456. https: //doi.org/10.1109/PACT.2015.240[17] Hancheng Wu和Michela Becchi. 2020. 评估Intel XeonPhi上的线程粗化和低成本同步.在2020年IEEE国际并行与分布处理研讨会(IPDPS)中. IEEE,美国路易斯安那州新奥尔良, 1018–1029.https://doi.org/10.1109/IPDPS47924.2020.00108
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功