CPU读取volatile关键字修饰的变量是直接从内存读还是从内存拷到寄存器再读

CPU读取volatile关键字修饰的变量是直接从内存读还是从内存拷到寄存器再读?

还没学计算机组成原理,我们常说编译器优化会把变量从内存拷到寄存器里再读,那是谁在读呢?CPU吗?但是寄存器也是CPU的一部分啊,还是说CPU里的运算器之类硬件的和寄存器在进行交互?

我想要达到的结果

是CPU里的什么部件在和寄存器交互?volatile修饰的关键字是从内存直接读,还是从内存拷到寄存器里再读?因为读之前经过内存就可以保持内存可见性,所以不清楚里面具体的流程?又或者是根据变量的类型读取时的策略也不同。

麻烦指点,感谢!