>> Yes it does. That's the whole point. If memory changes due to a device, volatile is what ensures that change is seen.
When I say "memory visibility", I'm not talking about compiler optimizations. Volatile only affects compiler behavior - it does not affect anything at the hardware level.
Memory barrier - Wikipedia, the free encyclopedia