volatile和cpu缓存深夜疑惑

当变量m加了volatile后,cpu某一个核对m进行更改后会立刻将数据刷新回主内存,别的cpu核会嗅探总线上传播的数据来检查自己缓存的值是不是过期了(也就是缓存一致性协议)。那我有个疑问,m没加volatile,m被核A更改后,核A上的线程运行结束,m写回主存,核B之前缓存的变量m会失效吗?应该是不会失效的对吧?那这个时候还有缓存一致性协议一说吗?

深夜小疑问,麻烦各位帮忙解答一下?谢谢了🙏

没记错的话,缓存一致性本来就是不同框架的cpu厂商自己实现的,被volatile修饰的变量会强制禁止线程的缓存,从主内存直接读取和修改。如果不用volatile修饰,那线程就会在自己的缓存中读取和修改了