計算機體系結構量化研究方法(第五版)學習筆記——快取一致性1、快取一致性的問題**
2、儲存器一致性的概念
3、一致性的基本實現方案
大型、多級快取可以充分降低處理器對儲存頻寬的需求。
採用對稱共享儲存器的計算機通常支援對共享資料與專用資料的快取。
多處理器之間的通訊基本上是通過讀寫共享資料實現。為了降低訪問延遲和所需要的儲存器頻寬,會在多個快取中複製共享值,這也就引入了乙個問題——多處理器快取一致性。
問題的根源在於每個處理器都認為自己是可以對資料進行讀寫的,並且存在多份資料,乙個處理器對資料進行修改後,其他處理器如果「不知道」的話,會延續使用最開始快取的資料。(原書中的描述為:既擁有全域性狀態,又擁有本地狀態,因此會產生一致性的問題)
如果儲存器系統滿足以下條件,則可以稱之為是一致的:
1、處理器p讀取位置x,在此之前是由p對x進行寫入,在p執行的這一寫入與讀取操作之間,沒有其他處理器對位置x執行寫入操作,此讀取操作總是返回p寫入的值;
2、乙個處理器向位置x執行寫入操作之後,另乙個處理器讀取該位置,如果讀寫操作間隔時間足夠長,而且在兩次訪問之間沒有其他處理器向x寫入,則該操作返回寫入值;
3、對同一位置執行的寫入操作被序列化,在所有的處理器看來,任意兩個處理器對相同位置執行的兩次寫入操作看起來是相同的操作。
一致性模型確定了向同乙個儲存器位置的讀寫行為
目錄式——特定物理儲存塊的共享狀態儲存的位置稱為目錄。其中,在smp中可以使用乙個集中目錄,在dsm中,使用分布式目錄,但是更為複雜。
監聽式——如果乙個快取擁有某乙個物理儲存塊中的資料副本,它就可以跟蹤該塊的共享狀態,而不是把共享狀態儲存在同乙個目錄中。在smp中,所有快取可以通過某種廣播介質訪問,所有快取控制器都監聽這乙個介質,已確定自己是否擁有該匯流排或交換訪問上所請求塊的副本。
《計算機體系結構量化研究方法(第五版)》第五章
快取一致性
一般應用而言,追求的都是快取的最終一致性。一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 如果key對應的value是一定不存在的,並且對該key併發請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。引起這個問題的主要原因還是高併發的時...
快取一致性協議
作業系統的cpu和記憶體並不是直接互動操作的。我們的cpu有一級快取,cpu直接操作一級快取,由一級快取和記憶體進行互動。所以同乙個程式,cpu進行切換的時候,切換前和切換後的資料可能會有不一致的情況。那麼這個就是乙個很大的問題了。如何保證各個cpu快取中的資料是一致的。就是cpu的快取一致性問題。...
Redis快取一致性
用過redis的應該都清楚,redis作為記憶體快取,只是他查詢快的一大優勢,關係型資料庫只能用作儲存重要資料,或者備份快取的資料,這個時候,不可避免,我們會遇到快取中的資料與關係型資料庫中的資料不一致的情況。出現不一致的現象很常見,如果你是單個使用者肯定不會出現這種情況,如果在多執行緒併發的情況下...