2011-07-04 21 views
1

在我的計算機體系結構課上,教授提出以下問題給我們:緩存在處理設備時是否有限制?

"Caches can have serious limitations when dealing with devices. Why is this?" 

我不知道爲什麼有侷限性或他們可能。在谷歌搜索後,我似乎無法找到一個準確的答案。有人可以解釋爲什麼有限制,這些限制可能是什麼,或者指出我可以幫助我回答問題的方向?

回答

2

換言之,您無法控制實際發送到設備的內容。

0

基本上你必須有一種方法來確切地知道什麼時候數據被刷新出緩存並進入你正在與之通話的設備中。 RAM與其他任何設備一樣,它會記住寫入某個位置的最後一個數據。如果它不會被存儲在RAM中,那麼設備也不會看到寫入。 Linux使用依賴體系結構的稱爲讀/寫障礙的函數。

How Linux deals with it

2

有兩個問題與緩存和設備。第一個問題是基本功能正確性之一。也就是說,系統通常必須將設備的內存映射寄存器放在一個完全繞過緩存的地址範圍內。想象一下,這沒有發生,緩存是「擋道」。在這種情況下,嘗試讀取設備上的狀態寄存器的軟件將讀取緩存提供的陳舊值!祝你的設備驅動程序正常工作。一些CPU爲不可緩存的訪問提供了特殊的指令,但基本結果是一樣的,因爲緩存沒有提供任何好處,而且在處理設備內存時只會使問題複雜化。

第二個問題是智能設備能夠與內存進行直接內存訪問(DMA)事務的性能問題。當設備執行DMA寫入時,系統中的硬件總線邏輯會根據MESI協議完全遠離CPU偵聽緩存線。核心強烈依賴於將數據保存在密切的緩存中以提高效率。現在,該設備剛剛將所有緩存行抽出,這迫使內核在下一次軟件訪問時進入高延遲重新載入行。即使對於DMA讀取,通常也會發生同樣的窺探,因爲CPU通常會避免數據線處於共享狀態。

集成到CPU中的設備本身可能會將高速緩存行留在CPU的最後一級高速緩存中,這可能會大大提高CPU套件外部的設備性能。