Cache一致性


Cache 的一致性特性

即使內存區域滿足了cache的使用條件,要正確的使用cache,仍然可能會碰到cache一致性的問題,由於cache會使得某一確定的時刻,cpu看到的儲存內容和內存中的實際內容不一致,如果僅僅只是CPU來操作這片區域,這不會產生任何問題,擔當有其他外設也參與讀寫的時候,就會產生以下兩種情況的cache一致性問題。

 

1、儲存位置被其它外設修改

以網卡為例,網卡會將接收到的數據包寫入到指定的內存中(A處地址),而如果此內存帶cache,且cache中剛剛存A處地址內存的緩存,此時,CPU訪問這段內存的時候cache並不知道這段內存已經被網卡更新,CPU獲得的數據還是cache中緩存的內容,也就是說獲取的不是最新數據包的內容。

2、外設需要看到CPU對某塊區域儲存的修改

以網卡發送為例,CPU將要發送的數據包寫入指定的內存,然后通知網卡將此內存中的數據發送出去,如果此內存帶cache,CPU寫入到此內存的數據可能還停留在cache中,內存的數據還未更新,網卡就發送了錯誤的數據。

 

確保Cache一致性的操作

對應於產生cache一致性問題的兩種情況,確保cache一致性的操作主要有:

1、cache 無效:cache無效是將cache中指定的區域的緩存標記為無效,當CPU再次訪問這個區域時,將強制cache從這個區域重新緩存數據。

2、cache 刷新:cache刷新時指立即將cache中指定區域的內容寫入到內存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM