快速连接
👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈
内存屏障(Memory Barrier)和缓存(Cache)之间有密切的关系。它们都是计算机系统中用于确保内存操作顺序和一致性的重要概念。
内存屏障是一种指令或操作,用于控制处理器或编译器的内存访问和重排行为,以确保在特定的位置或时机上,内存操作按照所需的顺序执行。内存屏障可以分为读屏障(Read Barrier)和写屏障(Write Barrier)两种类型。
- 读屏障:读屏障用于确保在读取操作之前,所有之前的内存写入操作都已经完成。它可以防止读取到过期或无效的数据。
- 写屏障:写屏障用于确保在写入操作之后,所有之前的内存读取和写入操作都已经完成。它可以防止写入操作的结果在后续的读取操作中不可见或混乱。
缓存在计算机系统中用于提高内存访问的速度和效率。缓存通过在处理器核心和主存之间提供一个快速访问的存储区域,减少了对主存的频繁访问,从而加速了程序的执行。
内存屏障和缓存之间的关系在于,缓存系统也会参与到内存屏障的实现中,以确保内存操作的顺序和一致性。内存屏障的执行会导致缓存的刷新和失效操作,以确保最新的数据在不同的核心和缓存之间得到正确的同步。缓存的一致性协议(如MESI)会与内存屏障一起工作,以保证缓存之间的数据一致性和正确的读写顺序。
因此,内存屏障和缓存是协同工作的,以确保多核处理器系统中的内存访问操作的正确执行顺序和数据一致性。内存屏障的使用可以影响缓存的刷新和失效操作,以保证正确的数据同步和可见性。
DMB – Data Memory Barrier 数据内存屏障
确保位于 “DMB 指令前的所有显式内存访问” 早于 " DMB 指令后的显示内存访问"( 注意:data cache的操作也被看做是显示的访问)
DSB – Data Synchronization Barrier 数据同步屏障,确保:
(1)位于此指令前的所有显式内存访问均完成。 (2)位于此指令前的所有缓存、跳转预测和 TLB 维护操作全部完( 注意:cache/TLB/branch的维护操作如果广播,那么要等待广播的完成)
ISB – Instruction Synchronization Barrier 指令同步屏障
确保提取时间晚于 ISB 指令的指令能够检测到 ISB 指令执行前就已经执行的上下文更改操作的执行效果
关注"Arm精选"公众号,备注进ARM交流讨论区。