以前对volatile的了解,都是可以防止被编译器优化,从而从内存中都读写数据。
但当ddr中的数据被cache了以后,然后又是被命中了,那么下次你去读写数据时,CPU还是中cache中去操作的。这就引来了和硬件的不一致性,但简单的volatile也不能解决cache的一致性。因为CPU会认为当前的数据就是从内存中去读写的(cache也属于内存级别)。所以只能通过专门的cache一致性的writeback和invalid来完成。
总结,cache场合下volatile不能解决一致性问题。要通过cache自身来完成。传统的volatile不单单是只认可ddr内存,cache也是被认可的,是CPU认可的读写内存。