Can somebody please explain how barrier transactions in ACE work?
Thanks in advance.
Josesmn said:1. So in the case of a Memory Barrier, to ensure the ordering, the interconnect should pass all the transactions issued before the Barrier to the slaves before passing the Barrier itself to the slaves.
It would depend which component is required to enforce this ordering. If the downstream slave is enforcing the barrier ordering then yes, the pre-barrier transactions and the barrier would need to be passed to the slave in the same order.
If the interconnect is performing the ordering, then barrier just needs to ensure that the pre barrier transactions are observable to post barrier transactions. If the interconnect had a Point of Serialisation through which all accesses to that location had to pass, then it could just stall subsequent accesses to the same location until it could guarantee that the pre-barrier accesses are observable.
Josesmn said:2. In the case of a Synchronization Barrier, the interconnect should wait until it receive responses to all transaction issued before the Barrier before issuing a response to the Barrier itself.
Not necessarily. The ACE definition is only that the transactions are observable when the barrier completes. Only system domain transactions must have reached the end point before the barrier completes.
Similarly in the Arm Architecture, 'completed' only means that the access is observable to all masters in that domain.
Josesmn said:3. Is it necessary to pass the barrier to the slaves? Or will it be enough to maintain the order in the interconnect and provide apt reply to the issuing Master?
It entirely depends on the system. The barrier needs to be propagated far enough into the system that it can provide the required ordering guarantee for a group of masters. For example, Figure D8-1 in the ACE Spec is an example of a system where the first interconnect may need to pass the barrier downstream.
Thank you so much for all your replies. I may get back to you if I need more help.
Jose.