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 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)?
Thank you so much for sharing this. I think you cannot explain it better!
In 48:18, why is it DSB OSHST and not DSB SYST?
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.
any chance that the slides are shared somewhere? :)