《Armv8/armv9架构入门指南》-【第十三章】内存排序

本文详细介绍了ARMv8架构中的内存排序规则,包括内存类型、内存屏障指令和内存属性。内存排序在多核处理器和设备驱动程序开发中至关重要,弱排序的内存模型允许处理器对内存访问进行重新排序,可能导致数据一致性问题。内存屏障如ISB、DMB和DSB用于强制内存访问顺序,确保数据同步。此外,文章还讨论了设备内存、C语言中的内存屏障使用以及非暂存加载和存储(LDNP和STNP)的概念,强调了理解和正确使用内存属性对于确保代码正确性的重要性。
摘要由CSDN通过智能技术生成

13. 内存排序

如果您的代码直接与硬件或在其他内核上执行的代码交互,或者如果它直接加载或写入要执行的指令,或修改页表,您需要注意内存排序问题。

如果你是应用程序开发者,硬件交互可能是通过设备驱动,与其他内核的交互是通过 Pthreads 或其他多线程 API,而与分页内存系统的交互是通过操作系统。在所有这些情况下,相关代码都会为您处理内存排序问题。但是,如果您正在编写操作系统内核或设备驱动程序,或者实现管理程序、JIT 编译器或多线程库,则必须对 ARM 体系结构的内存排序规则有一个很好的理解。您必须确保在您的代码需要显式内存访问顺序的地方,您能够通过正确使用屏障来实现这一点。

ARMv8 架构采用弱排序的内存模型。一般来说,这意味着内存访问的顺序不需要与加载和存储操作的程序顺序相同。处理器能够相对于彼此重新排序内存读取操作。写入也可以重新排序(例如,写入组合)。因此,硬件优化(例如缓存和写入缓冲区的使用)以提高处理器性能的方式起作用,这意味着所需的带宽可以减少处理器和外部存储器之间的延迟,并且隐藏与此类外部存储器访问相关的长延迟。

对普通内存的读取和写入可以由硬件重新排序,仅受数据依赖性和显式内存屏障指令的影响。某些情况需要更严格的排序规则。您可以通过描述该内存的转换表条目的内存类型属性向核心提供有关此的信息。

非常高性能的系统可能支持诸如推测性内存读取、多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新程序圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值