dma雙緩存
㈠ DMA、Cache其具體工作原理是
Cache被用作CPU針對內存的緩存,利用程序的空間局部性和大嘩時間局部性原理,達到較高的命中率,從而避免CPU每次都必須要與相對慢速的內存交互數據來提高數據的訪問速率。DMA可以作為內存與外設之間傳輸數據的方式,在這種傳輸方式之下,數據並不需要經過CPU中轉。假設DMA針對內存的目的地址與Cache緩存的對象沒有重疊區域,DMA和Cache之間將相安無事。
但是,如果DMA的目的地址與Cache所緩存的內存地址訪問有重疊,經過DMA操作,與Cache緩存對應的內存中的數據已經被修改,而CPU本身並不知道,它仍然認為Cache中的數據就是內存中的數據,那在以後訪問Cache映射的內存時,它仍然使用陳舊的Cache數據。這樣就會發生Cache與內存之間數據「不一致性」的錯誤。所謂Cache數據與內存數據的不一致性,是指在採用Cache的系統中,同樣一個數據可能既存在於Cache中,也存在於主存中,Cache與主存中的數據一樣則具有一致性,數據若不一樣則具有不一致性。需要特別注意的是,Cache與內存的一致性問題經常被初學者遺忘。在發生Cache與內存不一致性錯誤後,驅動將無法正常運行。如果沒有相關的背景知識,工程師幾乎無法行鋒定位錯誤的原因,因為這時所有的程序看起來都是完全正確的。Cache的不一致性問題並不是只發生在DMA的情況下,實際上,它還存在於Cache使能和關閉的時刻。例如,對於帶MMU功能的ARM處理器,在開啟MMU之滾帶行前,需要先置Cache無效,對於TLB,也是如此。
㈡ 什麼是緩沖為什麼要引入緩沖
緩沖是為了協調吞吐速度相差很大的設備之間的數據傳送。
引入緩沖的主要原因,可歸結為以下幾點:
1、改善CPU與I/O設備間速度不匹配的矛盾
2. 可以減少對 CPU的中斷頻率,放寬對中斷響應時間的限制
3. 提高 CPU和 I/O設備之間的並行性
常見的緩沖技術有:單緩沖,雙緩沖,循環緩沖,緩沖池。其中,廣泛流行使用公用緩沖池。
(2)dma雙緩存擴展閱讀
根據系統設置的緩沖器的個數,可把緩沖技術分為:
1、單緩沖:在設備和處理機之間設置一個緩沖器。設備相處理機交換數據時,先把被交換數據寫入緩沖器,然後,需要數據的設備或處理機從緩沖器取定數據。
2、雙緩沖:解決兩台外設、列印帆和終端之間的並行操作問題的辦法是設置雙緩沖。有了兩個緩沖器之後,CPU可把輸出到列印機的數據放入其中一個緩沖器(區)、讓列印機慢慢列印;然後,它又可以從另一個為終端設置的緩沖器(區)中讀取所需要的輸入數據。
3、多緩沖:是把多個緩沖區連接起來組成兩部分,一部分專門用於輸入,另一部分專門用於輸出的緩沖結構。
4、緩沖池:把多個緩沖區連接起來統一管理,既可用於輸入又可用於輸出的緩沖結構。