Arm® AMBA® 协议中内存事务的排序是一项重要要求,即内存更新/访问的顺序必须遵循规范中定义的顺序。排序对于处理器与停用加载/存储指令相关的同步事件非常重要。AMBA ACE 屏障事务用于维护整个系统的内存顺序。了解障碍事务的学习曲线可能会成为彻底验证设计的障碍。此博客提供了见解,使理解和验证障碍交易变得更加容易。该博客将介绍不同类型的障碍事务、用法和域边界。
屏障交易提供了一系列有助于解决订购要求的功能,包括:
—订购装载/存储指令
—完成跨适用域的加载/存储指令
—上下文同步
障碍交易的类型
有两种类型的屏障事务:内存和同步屏障。根据 AMBA ACE 规范,内存和同步屏障之间的区别最好通过查看它们的定义及其在处理器间通信方面的预期用途来理解。
内存屏障的定义 – *如果*相应域中的另一个主节点观察到在屏障之后发出的事务,则*则*该主节点必须能够观察在屏障之前发出的每笔事务。
同步屏障的定义 – 当屏障完成时,相应域中的*每个*主节点必须能够观察在屏障之前发出的所有事务。
这两个定义的不同之处在于,在同步屏障的情况下,屏障事务本身的完成保证了,对于原始主服务器来说,域中的*任何*其他代理将观察之前发出的所有事务。这种差异对两种类型的通信障碍的预期用途有影响,ACE 规范在 Sect 中对此进行了澄清。C8.1.
用法:
内存屏障 – 用于基于内存的通信。详细地说,生产者在内存中生成数据,发出内存屏障,然后写入内存中的标志。任何不断轮询标志的使用者,一旦观察到修改后的标志,也将能够观察生成的数据。
同步屏障 – 用于基于事件的边带通信。因为屏障交易的完成意味着相应域中的*每个*主节点必须能够观察在屏障之前发出的每笔交易。一旦同步。屏障已经完成,生产者可以使用边带信令机制(例如事件、中断)明确地查明域中的任何主站,以发出所生成数据可用性的信号。
验证挑战和解决方案:
创建准确验证障碍交易的场景非常耗时且具有挑战性,需要深厚的协议和方法专业知识。验证这些方案是一项挑战,因为 ACE 协议对屏障事务提出了许多注意事项,尤其是内存更新的正确排序及其可观察性。观察障碍响应的顺序并向观察者提供标志增强了复杂性。
如下图所示,序列发送许多基于num_pre_barrier_stores的屏障前存储事务,然后是屏障对和屏障后标志事务。有关障碍交易的考虑因素和交易流程将更深入地介绍将在即将发布的博客中介绍。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !