- 相關推薦
嵌入式系統中的CACHE問題
摘要:描述了在實時嵌入式系統開發中遇到的與CACHE有關的問題。對引起這些問題的原因——CACHE和RAM的不一致性進行了討論。最后,提出了解決問題的方法。關鍵詞:嵌入式實時系統 CACHE 不一致性
隨著社會的發展、人們生活水平的提高,人們對嵌入式計算機應用的要求也越來越高。因此,對嵌入式系統的性能要求也越來越高。明顯體現在嵌入式系統的CPU速度的不斷提高上。但問題也隨之而來,嵌入式CPU的主頻不斷地提高,一方面加強了CPU的處理能力,另一方面,在速度上造成了與慢速的系統存儲器極不相配的情況,從而影響了整個系統的性能。
為了解決這個問題,引入了CACHE技術。CACHE是一種高速緩沖存儲器,是為了解決CPU和主存之間速度不匹配而采用的一項重要技術。通過在主存和高速CPU之間設置一個小容量的高速存儲器,在其中存放CPU常用的指令和數據,CPU對存儲器的訪問主要體現在對SRAM的存取,CPU可以不必加等待狀態而保持高速操作。
采用CACHE技術,解決了CPU與主存之間速度不匹配的問題;但它又帶來了一些其它問題,如本文將提到的一致性問題。
1 問題的發現與原因
在進行某嵌入式系統項目的開發過程中,有一個環節需要使用DMA方式進行數據傳輸。當程序運行后,發現傳到目的地的數據塊中經常會有一些錯誤的字節。如:數據本應為00 01 02 03 04 05 06 07 08 09 0A 0B ...(16進制),結果卻是00 01 02 03 00 00 00 00 08 09 0A 0B ...。在某些環節也出現了類似的問題。例如,通過HDLC通道向外發送數據,發送的總是緩沖區初始化時的內容,實際要發送的數據總是發不出去,但使用調試工具看內存中的數據,卻是正確的。
經過一段時間的調試,發現出現這種現象的環節都使用了DMA傳輸數據。在通過HDLC通道發送數據的例子中,HDLC通道內部也是用DMA方式從內存直接讀數據并向外發送。經過分析,認為問題的原因是出在CACHE上,是由于CACHE數據與內存數據的不一致性造成的。
所謂CACHE數據與內存數據的不一致性,是指:在采用CACHE的系統中,同樣一個數據可能既存在于CACHE中,也存在于主存中,數據一樣則具有一致性,數據若不一樣就叫做不一致性。具體表現在兩個方面:
(1)更新
[1] [2] [3] [4]
【嵌入式系統中的CACHE問題】相關文章:
嵌入式系統與通信技術在汽車安全中的應用05-02
PPSM嵌入式RTOS中的窗口系統開發12-01
嵌入式系統報告10-18
ART270嵌入式系統在測井儀器調試及檢測中的應用04-29
嵌入式實時操作系統VxWorks及其在地震勘探儀器中的應用04-28
GPS衛星定位系統設計中幾個問題的探討05-01
彈載嵌入式系統設計技術05-01
嵌入式船舶電站監測系統的設計04-28
嵌入式系統學習心得03-07
雙高嵌入式工控機平臺在電力系統中的應用05-02