volatile 與 cache 的疑惑

     有一段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


C語言中volatile關鍵字的作用

發佈了39 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章