有一段DDR內存區,我用一個volatile變量指向起始位置,這段內存區會被一個FPGA以DMA的方式修改數據。
如果我用volatile變量能否讀取到FPGA修改後的內存數據,還是說我應該在讀取volatile變量前使無效這段內存對應的cache?
讀取volatile變量對應的彙編語言是ldr r0 [r1]。這個語句會不會導致讀取的r1對應地址是在cache中的數據,而不是內存中的實際數據?還是說volatile跳過cache,直接訪問內存中的數據?
查看過相關資料後得出答案:volatile不會跳過cache!!需要cache invalidate
傳送門:volatile、內存屏障、Acquire&Release語義 三者的差別和關係(一) —— 之volatile
http://blog.csdn.net/answer3y/article/details/21476787