Volátil é uma maneira adequada de tornar atômico um único byte em C / C ++?

Eu sei que o volátil não impõe atomicidade no int, por exemplo, mas o faz se você acessar um único byte? A semântica exige que as gravações e leituras estejam sempre na memória, se bem me lembro.

Ou, em outras palavras: as CPUs lêem e escrevem bytes sempre atomicamente?