日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

點(diǎn)擊上方公眾號(hào)名稱(chēng)關(guān)注,獲得更多內(nèi)容

??編 者 悟 語(yǔ)

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

文 章 導(dǎo) 讀

? ? 今天總結(jié)一下DMA導(dǎo)致Cache數(shù)據(jù)一致性問(wèn)題的原因及其解決方式,首先介紹的Cache及其出現(xiàn)的原因,而后介紹的引起Cache數(shù)據(jù)一致性問(wèn)題的原因,最后簡(jiǎn)要說(shuō)了兩種解決Cache數(shù)據(jù)一致性問(wèn)題的方式,此為理論篇,以后有時(shí)整篇實(shí)踐性的哈,!

????公眾號(hào)新增了“讀者討論”功能,新公眾號(hào)不能留言,大家不要浪費(fèi)討論的機(jī)會(huì)哈,!

1Cache及其出現(xiàn)的原因

????1)概述

??? Cache是高速緩存,它主要在內(nèi)存與CPU直接提供一個(gè)中間環(huán)節(jié),以提供數(shù)據(jù)的讀寫(xiě)速度。

??? Cache用于保存最近被訪問(wèn)的存儲(chǔ)空間內(nèi)容的備份。

??? Cache是比較貴的,它用于暫存數(shù)據(jù),一般芯片的空間都不會(huì)太大。

????2)Cache出現(xiàn)的原因

??? Cache的出現(xiàn)是基于兩種因素。

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

????二是程序執(zhí)行的局部規(guī)律性。

??? 3)補(bǔ)充:程序執(zhí)行的局部規(guī)律性

????程序執(zhí)行的局部規(guī)律性包括時(shí)間局部規(guī)律性和空間局部規(guī)律性。

????時(shí)間局部規(guī)律性:在程序執(zhí)行過(guò)程中,剛剛被訪問(wèn)的信息可能很快被再次訪問(wèn),典型情況是程序中存在大量的循環(huán)。

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

????從局部性規(guī)律可知,程序中的數(shù)據(jù)或者代碼被訪問(wèn)后,該數(shù)據(jù)和代碼以及鄰近的數(shù)據(jù)代碼近期再被訪問(wèn)的概率要遠(yuǎn)大于,近期未被訪問(wèn)的數(shù)據(jù)或者代碼被訪問(wèn)的概率。

????因此,才用速度比較快而容量有限的SRAM構(gòu)成Cache,用來(lái)改善速度較慢的存儲(chǔ)器或總線寬度較窄的存儲(chǔ)器的性能。

????對(duì)于ARM的Cortex-M系列內(nèi)核,到Cortex-M7才出現(xiàn)Cache,前面的Cortex-M0、Cortex-M3、Cortex-M4等都是不帶Cache的。

2Cache的幾個(gè)常用概念

????這里只介紹兩個(gè)原來(lái)文章中少的兩個(gè),其他的概念可以看我后面提到的另一篇文章哈,因?yàn)閷?xiě)過(guò),所以就不在這再列一次了。

????① 命中。

??? Cache hit(命中):要訪問(wèn)的數(shù)據(jù)/指令在cache里面。

??? Cache miss(非命中/無(wú)效):要訪問(wèn)的數(shù)據(jù)/指令不在cache里面。

????在Cache開(kāi)啟的情況下,設(shè)備訪問(wèn)某地址的數(shù)據(jù)時(shí)之所以先去找Cache是因?yàn)镃ache的訪問(wèn)速度是比訪問(wèn)內(nèi)存快的,在Cache中找到了想要的數(shù)據(jù)(命中了),訪問(wèn)就會(huì)比較快,找不到再到指定的內(nèi)存位置去找。

????② Non-cachable。

??? CPU對(duì)內(nèi)存的讀寫(xiě)不經(jīng)過(guò)Cache。

????讀分配、寫(xiě)分配、寫(xiě)通、寫(xiě)回等概念我另一篇文章中已經(jīng),請(qǐng)受累移步結(jié)合RT1052談?wù)勗L問(wèn)存儲(chǔ)機(jī)制——緩沖、緩存、共享、執(zhí)行、阻塞,這里就不贅述了。

3數(shù)據(jù)一致性問(wèn)題及其解決方式

????1)數(shù)據(jù)一致性問(wèn)題

????引發(fā)數(shù)據(jù)一致性問(wèn)題的情況主要有兩個(gè)。

????① Cache中的數(shù)據(jù)未及時(shí)更新到內(nèi)存。

????② DMA修改了內(nèi)存數(shù)據(jù),但未及時(shí)更新到Cache。

????2)數(shù)據(jù)一致性問(wèn)題的解決方式

????解決數(shù)據(jù)一致性問(wèn)題的方法也很簡(jiǎn)單,只需要手動(dòng)(程序員編寫(xiě)程序)更新數(shù)據(jù)即可,并且NXP官方SDK提供了更新數(shù)據(jù)的函數(shù)。針對(duì)兩種數(shù)據(jù)一致性問(wèn)題解決方法如下:

????① 更新Cache數(shù)據(jù)到內(nèi)存。

????一般芯片自帶的函數(shù)庫(kù)中一般會(huì)提供這樣的更新函數(shù)。

????比如,RT1052函數(shù)庫(kù)中的更新函數(shù)是L1CACHE_CleanDCacheByRange。

????② 無(wú)效化Cache中的數(shù)據(jù)。

????如果內(nèi)存中的數(shù)據(jù)被DMA更改,CPU讀取數(shù)據(jù)之前要無(wú)效化Cache,這樣CPU在Cache中找不到數(shù)據(jù)備份則會(huì)直接從內(nèi)存中讀取。

總結(jié)

? ? 今天總結(jié)了DMA導(dǎo)致Cache數(shù)據(jù)一致性問(wèn)題的原因及其解決方式,此為理論篇,后期有時(shí)整篇實(shí)踐性的哈,還會(huì)有存儲(chǔ)相關(guān)的內(nèi)容,小伙伴們敬請(qǐng)期待哈,。

? ? 有問(wèn)題可以參與讀者討論或后臺(tái)留言交流,公眾號(hào)18年后新申請(qǐng)的,文章后不支持留言功能的。

免責(zé)聲明:本文內(nèi)容來(lái)源于網(wǎng)絡(luò)和技術(shù)文檔,版權(quán)歸原作者所有。如涉及侵權(quán)問(wèn)題,請(qǐng)與我聯(lián)系刪除。

推薦文章:

結(jié)合RT1052談?wù)勗L問(wèn)存儲(chǔ)機(jī)制——緩沖、緩存、共享、執(zhí)行、阻塞

操作系統(tǒng)中幾個(gè)容易混淆的概念

UCOSIII共享資源管理方式匯總

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

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

在RT1052下使用uC-Probe 監(jiān)控UCOSIII中的資源

專(zhuān)輯推薦:

Python技能專(zhuān)輯

C語(yǔ)言專(zhuān)輯

IDE調(diào)試專(zhuān)輯

軟件推薦專(zhuān)輯

軟實(shí)力專(zhuān)輯

Linux專(zhuān)輯

掃碼關(guān)注我們

?Game Over!

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。