Thank you for this very clear explanation of DMB, DSB, and ISB. My question, surely very dumb, is (1) what tools can I use to identify when a piece of software (say, the JVM or Go runtime) are over-zealously using barriers (either overscoped, or unnecessary barriers), using userspace tools? And what does it look like in high-level code (C/C++, Java, Go, Rust, C#) to optimize this (either reducing scope, moving from a DSB to a DMB, or removing unnecessary barriers)?
Thanks! I read the barrier litmus test earlier today, and it was completely indecipherable without this video.
Thank you so much for sharing this. I think you cannot explain it better!
Thank you for this very clear explanation of DMB, DSB, and ISB. My question, surely very dumb, is (1) what tools can I use to identify when a piece of software (say, the JVM or Go runtime) are over-zealously using barriers (either overscoped, or unnecessary barriers), using userspace tools? And what does it look like in high-level code (C/C++, Java, Go, Rust, C#) to optimize this (either reducing scope, moving from a DSB to a DMB, or removing unnecessary barriers)?
In 48:18, why is it DSB OSHST and not DSB SYST?
any chance that the slides are shared somewhere? :)
At approx. 21:45, it is assumed that the DMA buffer is Normal Non-cacheable. Why do you still need a DC?
No, I believe you are good if your line is non cacheable.