色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CACHE高速緩沖存儲(chǔ)器技術(shù)在嵌入式系統(tǒng)中的應(yīng)用

牽手一起夢 ? 來源:電子技術(shù)應(yīng)用 ? 作者:陳曦,李漢寧 ? 2020-10-04 16:55 ? 次閱讀

描述了在實(shí)時(shí)嵌入式系統(tǒng)開發(fā)中遇到的與CACHE有關(guān)的問題?對(duì)引起這些問題的原因——CACHE和RAM的不一致性進(jìn)行了討論?最后,提出了解決問題的方法?

隨著社會(huì)的發(fā)展?人們生活水平的提高,人們對(duì)嵌入式計(jì)算機(jī)應(yīng)用的要求也越來越高?因此,對(duì)嵌入式系統(tǒng)的性能要求也越來越高?明顯體現(xiàn)在嵌入式系統(tǒng)的CPU速度的不斷提高上?但問題也隨之而來,嵌入式CPU的主頻不斷地提高,一方面加強(qiáng)了CPU的處理能力,另一方面,在速度上造成了與慢速的系統(tǒng)存儲(chǔ)器極不相配的情況,從而影響了整個(gè)系統(tǒng)的性能?

為了解決這個(gè)問題,引入了CACHE技術(shù)?CACHE是一種高速緩沖存儲(chǔ)器,是為了解決CPU和主存之間速度不匹配而采用的一項(xiàng)重要技術(shù)?通過在主存和高速CPU之間設(shè)置一個(gè)小容量的高速存儲(chǔ)器,在其中存放CPU常用的指令和數(shù)據(jù),CPU對(duì)存儲(chǔ)器的訪問主要體現(xiàn)在對(duì)SRAM的存取,CPU可以不必加等待狀態(tài)而保持高速操作?

采用CACHE技術(shù),解決了CPU與主存之間速度不匹配的問題;但它又帶來了一些其它問題,如本文將提到的一致性問題?

1 問題的發(fā)現(xiàn)與原因

在進(jìn)行某嵌入式系統(tǒng)項(xiàng)目的開發(fā)過程中,有一個(gè)環(huán)節(jié)需要使用DMA方式進(jìn)行數(shù)據(jù)傳輸?當(dāng)程序運(yùn)行后,發(fā)現(xiàn)傳到目的地的數(shù)據(jù)塊中經(jīng)常會(huì)有一些錯(cuò)誤的字節(jié)?如:數(shù)據(jù)本應(yīng)為00 01 02 03 04 05 06 07 08 09 0A 0B 。..(16進(jìn)制),結(jié)果卻是00 01 02 03 00 00 00 00 08 09 0A 0B 。..?在某些環(huán)節(jié)也出現(xiàn)了類似的問題?例如,通過HDLC通道向外發(fā)送數(shù)據(jù),發(fā)送的總是緩沖區(qū)初始化時(shí)的內(nèi)容,實(shí)際要發(fā)送的數(shù)據(jù)總是發(fā)不出去,但使用調(diào)試工具看內(nèi)存中的數(shù)據(jù),卻是正確的?

經(jīng)過一段時(shí)間的調(diào)試,發(fā)現(xiàn)出現(xiàn)這種現(xiàn)象的環(huán)節(jié)都使用了DMA傳輸數(shù)據(jù)?在通過HDLC通道發(fā)送數(shù)據(jù)的例子中,HDLC通道內(nèi)部也是用DMA方式從內(nèi)存直接讀數(shù)據(jù)并向外發(fā)送?經(jīng)過分析,認(rèn)為問題的原因是出在CACHE上,是由于CACHE數(shù)據(jù)與內(nèi)存數(shù)據(jù)的不一致性造成的?

所謂CACHE數(shù)據(jù)與內(nèi)存數(shù)據(jù)的不一致性,是指:在采用CACHE的系統(tǒng)中,同樣一個(gè)數(shù)據(jù)可能既存在于CACHE中,也存在于主存中,數(shù)據(jù)一樣則具有一致性,數(shù)據(jù)若不一樣就叫做不一致性?具體表現(xiàn)在兩個(gè)方面:

(1)更新時(shí)可能CACHE中的數(shù)據(jù)更新,而主存未更新,則造成數(shù)據(jù)丟失;

(2)在有DMA控制器的系統(tǒng)和多處理器系統(tǒng)中,有多個(gè)部件可以訪問主存?這時(shí),可能其中有些部件是直接訪問主存,也可能每個(gè)DMA部件和處理器配置一個(gè)CACHE?這樣,主存的一個(gè)區(qū)塊可能對(duì)應(yīng)于多個(gè)CACHE中的一個(gè)區(qū)塊?于是會(huì)產(chǎn)生主存中的數(shù)據(jù)被某個(gè)總線部件更新過,而某個(gè)CACHE中的內(nèi)容未更新,造成數(shù)據(jù)過時(shí)?

基于CACHE高速緩沖存儲(chǔ)器技術(shù)在嵌入式系統(tǒng)中的應(yīng)用

2 問題的分析

要解釋這個(gè)問題,首先要了解CACHE的工作模式?CACHE的基本工作模式有兩種:write-through模式和 copyback模式?在write-through模式下,所有的寫操作都寫入CACHE和RAM,保證了CACHE和RAM的一致?然而,每次對(duì)RAM都有寫操作會(huì)使處理器的處理能力降低,并且占用總線帶寬?在copyback模式下,寫操作只寫入CACHE,不寫入RAM,從而提高了處理器性能和總線帶寬?copyback模式下,CACHE中的內(nèi)容只有在需要的時(shí)候才寫到RAM中?當(dāng)CACHE中無可用空間時(shí),一般使用最近最少使用算法(LRU)來決定哪一個(gè)CACHE項(xiàng)被替換?copyback模式提供了很高的系統(tǒng)性能,但是需要更多的一致性作保證?為了便于理解,給出一個(gè)使用了CACHE的系統(tǒng)的邏輯框圖,如圖1所示?

該系統(tǒng)中兩個(gè)地方會(huì)發(fā)生CACHE的不一致性:

(1)數(shù)據(jù)CACHE / RAM

數(shù)據(jù)CACHE與RAM之間的問題源于處理器和其他總線控制器對(duì)RAM的異步讀寫訪問?DMA設(shè)備和其他總線控制器對(duì)RAM的訪問是引起CACHE一致性問題的主要原因,這個(gè)問題可以通過在程序中加入一些代碼來解決?

(2)共享CACHE LINE

當(dāng)一個(gè)CACHE LINE被兩個(gè)以上的線程共享時(shí),也會(huì)產(chǎn)生一致性問題?當(dāng)某個(gè)線程使一個(gè)CACHE LINE無效時(shí),這個(gè)CACHE LINE中的一些項(xiàng)可能屬于另外一個(gè)線程?這個(gè)問題也可以通過一定的方法來避免,只要在分配內(nèi)存時(shí)大小是CACHE LINE大小的整數(shù)倍即可?

在哈佛體系結(jié)構(gòu)?copyback模式和無軟件干預(yù)的前提下,最佳的保持一致性的方法就是使用具有總線監(jiān)聽能力的硬件?將CACHE?RAM?DMA設(shè)備和其它所有的總線主控設(shè)備都連到一個(gè)物理總線上,以使CACHE可以對(duì)該總線上的總線交互過程進(jìn)行監(jiān)聽,CACHE將對(duì)總線上的地址周期和控制(讀/寫)比特監(jiān)聽,數(shù)據(jù)周期則被延遲到需要時(shí)才進(jìn)行?當(dāng)CACHE中的一項(xiàng)被一個(gè)異步操作修改時(shí),該CACHE項(xiàng)就會(huì)被標(biāo)為無效?如果處理器對(duì)一個(gè)已經(jīng)被標(biāo)為無效的CACHE項(xiàng)進(jìn)行訪問時(shí),CACHE就會(huì)從RAM中重新載入有效數(shù)據(jù)?在copyback模式下,處理器對(duì)CACHE進(jìn)行寫操作時(shí),RAM相應(yīng)地址中的內(nèi)容就變成過時(shí)?如果另外一個(gè)設(shè)備想訪問RAM中的這部分內(nèi)容,CACHE就會(huì)搶占該訪問周期,將有效的數(shù)據(jù)寫入RAM?然后被搶占的訪問周期重新開始并將讀到RAM中的有效數(shù)據(jù)?但是,目前提供監(jiān)聽能力的板子并不多?

3 解決的方法

根據(jù)上面的分析和討論,可見問題正是由數(shù)據(jù)CACHE / RAM的不一致性引起的?雖然關(guān)掉CACHE就可以解決一致性的問題,并且能夠減小程序開發(fā)的復(fù)雜度?但是一個(gè)高性能的系統(tǒng)是需要CACHE的,關(guān)掉CACHE會(huì)大大降低系統(tǒng)的性能?因此,本文僅討論在程序中加入代碼來克服一致性問題的方法?

可以采用以下幾種加入代碼的方法來解決一致性的問題?本文使用WIND RIVER公司的嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)VxWORKS,下面的函數(shù)都是VxWORKS提供的 :

(1)對(duì)于時(shí)間上不是那么關(guān)鍵的程序段,可以先用下面的代碼維護(hù)數(shù)據(jù)CACHE的一致性?

cacheInvalidate DATA_CACHE address bytes

/ 輸入緩沖區(qū)/

。..

cacheFlush DATA_CACHE address bytes

/輸出緩沖區(qū)/

(2)對(duì)于時(shí)間上比較關(guān)鍵的程序段采用如下原則:在每次使用輸出緩沖區(qū)前將其更新;在每次使用輸入緩沖區(qū)前使其無效?

將緩沖區(qū)標(biāo)示為“non-cacheable”可以防止一致性問題,這需要MMU支持?在分配緩沖區(qū)時(shí),將其標(biāo)示為“non-cacheable”即可?然而,動(dòng)態(tài)緩沖區(qū)在釋放時(shí)要標(biāo)為“cacheable”,否則內(nèi)存總會(huì)產(chǎn)生大量的緩沖區(qū)碎片?

下面給出一個(gè)高性能的驅(qū)動(dòng)程序例子,它把更新/無效的概念進(jìn)行了擴(kuò)展?不是對(duì)整個(gè)CACHE系統(tǒng),而是對(duì)每一個(gè)緩沖區(qū)都這樣做?即通過分配對(duì)CACHE安全的緩沖區(qū),在一個(gè)緩沖區(qū)的基礎(chǔ)上操作,從而防止了不需要的更新/無效操作?在這個(gè)例子中使用了CACHE庫中的函數(shù)cacheDMAMalloc? ,宏CACHE_DMA_INVALIDATE和CACHE_DMA_FLUSH實(shí)現(xiàn)一致性?在第4行調(diào)用函數(shù)cacheDMAMalloc 后,如果指針返回為非空,則說明分配到了一塊對(duì)于一致性問題來說是安全的緩沖區(qū)?

第7行驅(qū)動(dòng)程序在緩沖區(qū)中寫入要傳給外部設(shè)備的數(shù)據(jù),在第9行準(zhǔn)備傳給外設(shè)之前,驅(qū)動(dòng)程序必須更新數(shù)據(jù)CACHE以保證要傳的數(shù)據(jù)是在內(nèi)存中,而不是在CACHE中?

當(dāng)驅(qū)動(dòng)程序準(zhǔn)備讀外設(shè)傳給內(nèi)存的數(shù)據(jù),在第13行驅(qū)動(dòng)程序處理這些數(shù)據(jù)之前,必須使數(shù)據(jù)CACHE中對(duì)應(yīng)于輸入緩沖區(qū)的那部分無效以消除這些包含過時(shí)內(nèi)容的條目?之后,驅(qū)動(dòng)程序才能安全地處理從內(nèi)存中取來的輸入數(shù)據(jù)?

1: STATUS drvExample pBuf

2: void pBuf / 緩沖區(qū)指針 /

3: { /*

4: pBuf = cacheDMAMalloc BUF_SIZE

5: if pBuf == NULL

6: return ERROR /內(nèi)存分配失敗/

7: /其它初始化代碼和向發(fā)送緩沖區(qū)填數(shù)據(jù)/

8: CACHE_DMA_FLUSH pBuf BUF_SIZE

9: drvWrite pBuf /向外設(shè)發(fā)送數(shù)據(jù)/

10: …… / 其它代碼 /

11: drvWait /等待外設(shè)來的數(shù)據(jù)/

12: CACHE_DMA_INVALIDATE pBuf BUF_SIZE

13: / 處理外設(shè)來的數(shù)據(jù) /

14: cacheDMAFree pBuf /釋放內(nèi)存 /

15: return OK

16:}

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19404

    瀏覽量

    230814
  • 嵌入式
    +關(guān)注

    關(guān)注

    5090

    文章

    19176

    瀏覽量

    306946
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7528

    瀏覽量

    164194
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    高速緩沖存儲(chǔ)器部件結(jié)構(gòu)及原理解析

    高速緩沖存儲(chǔ)器部件結(jié)構(gòu)及原理解析 高速緩存 CACHE用途 設(shè)置 CPU 和 主存儲(chǔ)器之間,
    發(fā)表于 04-15 11:18 ?4714次閱讀

    低功耗的高性能四路組相聯(lián)CMOS高速緩沖存儲(chǔ)器

    低功耗的高性能四路組相聯(lián)CMOS高速緩沖存儲(chǔ)器
    發(fā)表于 01-19 21:22 ?12次下載

    高速緩沖存儲(chǔ)器的作用解析

    高速緩沖存儲(chǔ)器Cache)其原始意義是指存取速度比一般隨機(jī)存取記憶體(RAM)來得快的一種RAM,一般而言它不像系統(tǒng)主記憶體那樣使用DRAM技術(shù)
    發(fā)表于 11-15 09:50 ?7530次閱讀
    <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b>的作用解析

    高速緩沖存儲(chǔ)器的特點(diǎn)解說

    高速緩沖存儲(chǔ)器是存在于主存與CPU之間的一級(jí)存儲(chǔ)器, 由靜態(tài)存儲(chǔ)芯片(SRAM)組成,容量比較小但速度比主存高得多, 接近于CPU的速度。
    發(fā)表于 11-15 10:08 ?1.1w次閱讀

    高速緩沖存儲(chǔ)器電腦硬件的位置分析

    高速緩沖存儲(chǔ)器通常由高速存儲(chǔ)器、聯(lián)想存儲(chǔ)器、替換邏輯電路和相應(yīng)的控制線路組成。在有高速
    發(fā)表于 11-15 10:38 ?4069次閱讀
    <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b><b class='flag-5'>在</b>電腦硬件<b class='flag-5'>中</b>的位置分析

    高速緩沖存儲(chǔ)器的作用是什么_有什么特點(diǎn)

    高速緩沖存儲(chǔ)器Cache)其原始意義是指存取速度比一般隨機(jī)存取記憶體(RAM)來得快的一種RAM,一般而言它不像系統(tǒng)主記憶體那樣使用DRAM技術(shù)
    發(fā)表于 12-06 15:26 ?2.1w次閱讀
    <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b>的作用是什么_有什么特點(diǎn)

    高速緩沖存儲(chǔ)器基礎(chǔ)知識(shí)詳細(xì)介紹

    高速緩沖存儲(chǔ)器Cache)其原始意義是指存取速度比一般隨機(jī)存取記憶體(RAM)來得快的一種RAM基于緩存的存儲(chǔ)器層次結(jié)構(gòu)行之有效,是因?yàn)檩^慢的存儲(chǔ)
    發(fā)表于 12-06 17:35 ?1.1w次閱讀
    <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b>基礎(chǔ)知識(shí)詳細(xì)介紹

    介紹 TMS320C64x 多極高速緩沖存儲(chǔ)器

    TMS320C64x+網(wǎng)絡(luò)課程5——多極高速緩沖存儲(chǔ)器,包cache的概念,cache miss的一些類型以及關(guān)于cache的使用優(yōu)化。此網(wǎng)
    的頭像 發(fā)表于 06-26 13:00 ?3880次閱讀
    介紹 TMS320C64x 多極<b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b>

    高速緩沖存儲(chǔ)器Cache的原理、設(shè)計(jì)及實(shí)現(xiàn)

    既可以以較快速度存取SRAM的數(shù)據(jù),又不使系統(tǒng)成本上升過高,這就是Cache法。還有一種方法,采用新型存儲(chǔ)器。目前,一般采用第3種方法。它是PC
    發(fā)表于 04-02 14:38 ?2478次閱讀

    EE-271: 高速緩沖存儲(chǔ)器Blackfin?處理的應(yīng)用

    EE-271: 高速緩沖存儲(chǔ)器Blackfin?處理的應(yīng)用
    發(fā)表于 03-21 07:50 ?8次下載
    EE-271: <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b><b class='flag-5'>在</b>Blackfin?處理<b class='flag-5'>器</b><b class='flag-5'>中</b>的應(yīng)用

    CPU設(shè)計(jì)之Cache存儲(chǔ)器

    Cache存儲(chǔ)器也被稱為高速緩沖存儲(chǔ)器,位于CPU和主存儲(chǔ)器之間。之所以CPU和主存之間要加
    的頭像 發(fā)表于 03-21 14:34 ?1343次閱讀
    CPU設(shè)計(jì)之<b class='flag-5'>Cache</b><b class='flag-5'>存儲(chǔ)器</b>

    高速緩沖存儲(chǔ)器有什么作用

    技術(shù)實(shí)現(xiàn),而不是像系統(tǒng)主存那樣使用動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)技術(shù)。SRAM具有訪問速度快但成本較高的特點(diǎn),這使得高速
    的頭像 發(fā)表于 09-10 14:09 ?1818次閱讀

    高速緩沖存儲(chǔ)器與內(nèi)存的區(qū)別

    高速緩沖存儲(chǔ)器Cache)與內(nèi)存(Memory)計(jì)算機(jī)體系結(jié)構(gòu)扮演著至關(guān)重要的角色,它們之間存在顯著的區(qū)別。以下將從定義、功能、
    的頭像 發(fā)表于 09-10 14:12 ?1918次閱讀

    高速緩沖存儲(chǔ)器的基本組成和工作原理

    高速緩沖存儲(chǔ)器Cache)的工作原理,是基于計(jì)算機(jī)程序和數(shù)據(jù)訪問的局部性原理,即程序執(zhí)行過程,對(duì)數(shù)據(jù)的訪問往往呈現(xiàn)出時(shí)間和空間的局部性
    的頭像 發(fā)表于 09-10 14:14 ?722次閱讀

    EE-271: 高速緩沖存儲(chǔ)器Blackfin處理的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《EE-271: 高速緩沖存儲(chǔ)器Blackfin處理的應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:18 ?0次下載
    EE-271: <b class='flag-5'>高速</b><b class='flag-5'>緩沖存儲(chǔ)器</b><b class='flag-5'>在</b>Blackfin處理<b class='flag-5'>器</b><b class='flag-5'>中</b>的應(yīng)用
    主站蜘蛛池模板: 亚洲1区2区3区精华液 | 我和黑帮老大第365天第2季在线 | 甜性涩爱免费下载 | 欧美精品一区二区在线电影 | 福利啪啪吧 | 我不卡影院手机在线观看 | 欧美人与动牲交XXXXBBBB免费 | 亚洲精品乱码久久久久久v 亚洲精品乱码电影在线观看 | 夜夜躁婷婷AV蜜桃视频 | 秋霞影音先锋一区二区 | 久久无码人妻AV精品一区 | 91精品一区二区三区在线观看 | 两个奶被男人揉了一个晚上 | 天天狠狠色综合图片区 | 亚洲AV综合99一二三四区 | 俺来也俺去也视频久久 | 国产九色在线 | 小泽玛丽av无码观看 | 在线中文字幕亚洲日韩 | 美女一级毛片免费不卡视频 | 国产精品永久免费视频观看 | 男女牲交大战免费播放 | 久久99精品国产自在自线 | 秋霞伦理机在线看片 | 成人毛片手机版免费看 | 免费无码国产欧美久久18 | 青娱国产区在线 | 欧美精品一区二区在线电影 | 久久久久久久久人体 | 青柠在线观看免费高清电视剧荣耀 | 亚洲成人欧美 | 狠狠色狠狠色综合日日2019 | 亚洲七七久久桃花综合 | 竹菊影视一区二区三区 | 免费亚洲视频 | 亚洲国产高清在线观看视频 | 小草视频免费观看在线 | 国产成人精品永久免费视频 | 亚洲中文字幕欧美自拍一区 | 嗯啊快拔出来我是你老师视频 | 在线va无卡无码高清 |