CPU多級緩存-多核併發緩存架構解析

CPU多級緩存

主內存(RAM):也就是所謂的內存條,一般當數據寫入電腦磁盤的時候需要先寫入主內存,然後再寫入磁盤。

系統主線:連接系統cpu和主內存的系統主線,就比如臺式電腦連接主板上連接cpu和內存條的主線。

如下圖所示最簡單的高速緩存的配置,數據的讀取和存儲都經過高速緩存,CPU核心與高速緩存有一條特殊的快速通道;主存和高速緩存都連在系統總線上,這條總線還用於其他組件的通信。

高速緩存出現不久,系統變得越來越複雜,高速緩存與主存之間的速度差異被拉大,直到加入了另一級緩存,新加入的這級緩存比第一緩存更大,而且更慢,而且經濟上不合適,所以有了二級緩存,甚至是三級緩存。

一、爲什麼需要CPU多級緩存

再計算機最開始的時候,cpu直接於主內存交換數據,不知道讀者對摩爾定律有沒有印象:當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,性能也將提升一倍,由於cpu性能日新月異的增長,遠高於主內存讀寫,而需要等待主內存,這樣發揮不了多核cpu高性能的優勢,於是便增加了cpu多級緩存,在現在電腦的任務管理器也是看的到的:

二、CPU緩存的意義:

1)時間局部性:如果某個數據被訪問,那麼在不久的將來它很有可能會被再次訪問。

2)空間局部性:如果某個數據被訪問,那麼與它相鄰的數據很快也能被訪問。

緩存一致性(MESI)協議

爲了保證多核cpu各個緩存的數據的一致性。

CPU中每個緩存行使用四種狀態進行標記。

M:Modified 修改:指的是該緩存行只被緩存在該CPU緩存中,並且是被修改過的,因此他與主存的數據是不一致的,該緩存行中的數據需要在未來的某個時間點(允許其他CPU讀取主存相應的內容之前)寫回主存,然後狀態變成E(獨享)。

E :Exclusive 獨享:緩存行只被緩存在該CPU的緩存中,是未被修改過的,與主存的數據是一致的,可以在任何時刻當有其他CPU讀取該內存時,變成S(共享)狀態,當CPU修改緩存行的內容時,變成M(修改)的狀態。

S :Share 共享:意味着該緩存行可能被多個CPU進行緩存,並且該緩存中的數據與主存數據是一致的,當有一個CPU修改該緩存行時,其他CPU是可以被作廢的,變成I(無效的)。

I :Invalid 無效的:代表這個緩存是無效的,可能是有其他CPU修改了該緩存行。

對應的四個操作
local read:讀本地緩存
local write:寫本地緩存
remote read:將內存中的數據讀取過來
remote write:將數據寫回主存

注意:
對於M和E狀態而言總是精確的,他們在和該緩存行的真正狀態是一致的,而S狀態可能是非一致的。如果一個緩存將處於S狀態的緩存行作廢了,而另一個緩存實際上可能已經獨享了該緩存行,但是該緩存卻不會將該緩存行升遷爲E狀態,這是因爲其它緩存不會廣播他們作廢掉該緩存行的通知,同樣由於緩存並沒有保存該緩存行的copy的數量,因此(即使有這種通知)也沒有辦法確定自己是否已經獨享了該緩存行。

從上面的意義看來E狀態是一種投機性的優化:如果一個CPU想修改一個處於S狀態的緩存行,總線事務需要將所有該緩存行的copy變成invalid狀態,而修改E狀態的緩存不需要使用總線事務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章