日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方公眾號名稱關注,獲得更多內容

??編 者 悟 語

? ????唉!嫉妒之心真的能俘獲它所接觸到的任何目標啊——“欲加之罪,何患無辭”呢?“覺悟高的”更有“愛屋及烏”的絕技哈,。(看到些人和事,感慨一番)

文 章 導 讀

? ? 今天總結一下DMA導致Cache數據一致性問題的原因及其解決方式,首先介紹的Cache及其出現的原因,而后介紹的引起Cache數據一致性問題的原因,最后簡要說了兩種解決Cache數據一致性問題的方式,此為理論篇,以后有時整篇實踐性的哈,!

????公眾號新增了“讀者討論”功能,新公眾號不能留言,大家不要浪費討論的機會哈,!

1Cache及其出現的原因

????1)概述

??? Cache是高速緩存,它主要在內存與CPU直接提供一個中間環節,以提供數據的讀寫速度。

??? Cache用于保存最近被訪問的存儲空間內容的備份。

??? Cache是比較貴的,它用于暫存數據,一般芯片的空間都不會太大。

????2)Cache出現的原因

??? Cache的出現是基于兩種因素。

????一是由于CPU的速度和性能提高很快而主存速度較低且價格高。

????二是程序執行的局部規律性。

??? 3)補充:程序執行的局部規律性

????程序執行的局部規律性包括時間局部規律性和空間局部規律性。

????時間局部規律性:在程序執行過程中,剛剛被訪問的信息可能很快被再次訪問,典型情況是程序中存在大量的循環。

????空間局部規律性:在程序執行過程中,那些與被訪問的地址相臨近的信息也有可能很快被訪問。典型情況是程序中存在大量的順序執行。

????從局部性規律可知,程序中的數據或者代碼被訪問后,該數據和代碼以及鄰近的數據代碼近期再被訪問的概率要遠大于,近期未被訪問的數據或者代碼被訪問的概率。

????因此,才用速度比較快而容量有限的SRAM構成Cache,用來改善速度較慢的存儲器或總線寬度較窄的存儲器的性能。

????對于ARM的Cortex-M系列內核,到Cortex-M7才出現Cache,前面的Cortex-M0、Cortex-M3、Cortex-M4等都是不帶Cache的。

2Cache的幾個常用概念

????這里只介紹兩個原來文章中少的兩個,其他的概念可以看我后面提到的另一篇文章哈,因為寫過,所以就不在這再列一次了。

????① 命中。

??? Cache hit(命中):要訪問的數據/指令在cache里面。

??? Cache miss(非命中/無效):要訪問的數據/指令不在cache里面。

????在Cache開啟的情況下,設備訪問某地址的數據時之所以先去找Cache是因為Cache的訪問速度是比訪問內存快的,在Cache中找到了想要的數據(命中了),訪問就會比較快,找不到再到指定的內存位置去找。

????② Non-cachable。

??? CPU對內存的讀寫不經過Cache。

????讀分配、寫分配、寫通、寫回等概念我另一篇文章中已經,請受累移步結合RT1052談談訪問存儲機制——緩沖、緩存、共享、執行、阻塞,這里就不贅述了。

3數據一致性問題及其解決方式

????1)數據一致性問題

????引發數據一致性問題的情況主要有兩個。

????① Cache中的數據未及時更新到內存。

????② DMA修改了內存數據,但未及時更新到Cache。

????2)數據一致性問題的解決方式

????解決數據一致性問題的方法也很簡單,只需要手動(程序員編寫程序)更新數據即可,并且NXP官方SDK提供了更新數據的函數。針對兩種數據一致性問題解決方法如下:

????① 更新Cache數據到內存。

????一般芯片自帶的函數庫中一般會提供這樣的更新函數。

????比如,RT1052函數庫中的更新函數是L1CACHE_CleanDCacheByRange。

????② 無效化Cache中的數據。

????如果內存中的數據被DMA更改,CPU讀取數據之前要無效化Cache,這樣CPU在Cache中找不到數據備份則會直接從內存中讀取。

總結

? ? 今天總結了DMA導致Cache數據一致性問題的原因及其解決方式,此為理論篇,后期有時整篇實踐性的哈,還會有存儲相關的內容,小伙伴們敬請期待哈,。

? ? 有問題可以參與讀者討論或后臺留言交流,公眾號18年后新申請的,文章后不支持留言功能的。

免責聲明:本文內容來源于網絡和技術文檔,版權歸原作者所有。如涉及侵權問題,請與我聯系刪除。

推薦文章:

結合RT1052談談訪問存儲機制——緩沖、緩存、共享、執行、阻塞

操作系統中幾個容易混淆的概念

UCOSIII共享資源管理方式匯總

UCOSIII源碼分析之——bsp_os.c文件分析

UCOSIII源碼分析之——bsp_cpu.c文件分析

在RT1052下使用uC-Probe 監控UCOSIII中的資源

專輯推薦:

Python技能專輯

C語言專輯

IDE調試專輯

軟件推薦專輯

軟實力專輯

Linux專輯

掃碼關注我們

?Game Over!

總結

以上是生活随笔為你收集整理的dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。