如何提公升 Cache 的效能

2021-10-25 14:39:14 字數 3194 閱讀 3521

4 通過減少失效開銷來提高 cache 效能

5 通過降低命中時間來提公升 cache 效能

cache在儲存層次結構中處於cpu和主存之間,因此,cache的效能對會對cpu的效能造成很大的影響,它通過程式的區域性性原理,使得cpu更快地獲取原來儲存在主存中的資料,從而提公升效能。

cache一般的結構如下:

上圖展示的是乙個 2路組相聯cache的結構,cache中的資料是以為單位儲存的,塊的大小沒有明確的限制,可以是幾

十、上百個位元組等等。cache中除了資料字段,還包括了tag欄位和valid字段,它們的安逸分別是:

cache的基本工作過程是:

下介紹兩種評價cache效能的方法:

其定義如下:

平 均訪

存時間=

(1−失

效率)×

命中時間

+失效率

×(命中

時間+失

效開銷)

=命中時

間+失效

率×失效

開銷平均訪存時間=(1-失效率)\times 命中時間+失效率\times (命中時間+失效開銷)=命中時間+失效率\times 失效開銷

平均訪存時間

=(1−

失效率)

×命中時

間+失效

率×(命

中時間+

失效開銷

)=命中

時間+失

效率×失

效開銷

c pu

時間=i

c×(c

piex

ecut

ion+

失效率×

平均訪存

次數×失

效開銷)

×時鐘周

期cpu時間=ic\times (cpi_+失效率\times 平均訪存次數\times 失效開銷)\times 時鐘週期

cpu時間=

ic×(

cpie

xecu

tion

​+失效

率×平均

訪存次數

×失效開

銷)×時

鐘週期平均訪

存次數=

訪存次數

指令數平均訪存次數=\frac

平均訪存次數

=指令數

訪存次數

​ 通過以上的兩個式子,我們可以發現,影響cache效能的指標主要有這三項:命中時間、失效率、失效開銷,接下來,就針對這三項指標,提出一些cache的改進措施。

在增加塊大小時,一方面可以更好地利用程式的空間區域性性,減少失效率,然而,在cache容量一定的情況下,增加塊大小的同時,cache中存放的總的塊數將會減少,這會增加衝突失效的發生,導致失效率增大。因此,需要做出合理的折中,通過調整塊大小來降低失效率。

另一方面,塊大小的選取還與主存的頻寬、延遲有關係。例如,如果當前主存有高延遲、高頻寬的性質,此時,塊大小應該選取地大一些,因為在這種情況下,如果cache發生失效,那麼需要從主存讀取資料,因為當前主存是高頻寬和高延遲的,多讀取一些字無疑是更加划算的。

在另一篇部落格中有提到。

一些通過降低 cache 失效率來提高效能的方法.

cache中有資料需要寫入主存時,一般的做法是暫停指令執行的流水線,進行寫主存的操作,而這個寫主存操作所消耗的時間對於cpu來說是巨大的開銷,一般是上百個時鐘週期。為了讓cpu盡可能減少等待的時間,可以設定乙個寫緩衝結構

這時,當cache中有資料需要寫入主存時,cpu將要寫入的內容先寫到寫緩衝結構中,轉而去做其他工作,這時寫緩衝往主存寫資料和cpu執行其他指令就可以並行執行了,這樣便可以減少失效開銷。

寫緩衝的效能影響了失效開銷,可以通過寫合併技術來提高寫緩衝的效率和利用率。

寫合併的工作原理為,當寫緩衝已經包含了其他塊,這些塊對應的位址將會逐一被檢查,以確定即將寫入主存的塊的位址是否與寫緩衝的某個塊能匹配上,若匹配上,則將這兩個塊進行合併。事實上,一般而言,連續多字一起寫入主存往往比將各字逐一寫入主存要高效一些。

這是一種複雜度較高,但被廣泛採用的技術。基本思想就是在cache在處理資料失效時繼續服務其他訪問,這樣就可以重疊多個cache訪問,從而提高cpu的效能。

還有諸如請求字優先技術、多級cache技術都可以在一定條件下減少失效開銷。

這就是多級cache設立的第一級cache所遵循的基本原則。

trace cache的基本原理.

在另一篇部落格中有介紹。

如何提公升Eclipse效能

eclipse作為開發人員強力推崇的開發工具之一,其與jbuilder相比,很多同盟都認為使用eclipse比使用jbuilder省記憶體,而且eclipse屬於免費開源專案,而像jbuilder和idea等均屬於商業非免費工具,當然還有其他一些說法。個人選擇eclipse作為主要開發工具的原因主要...

如何提公升Eclipse效能

eclipse作為開發人員強力推崇的開發工具之一,其與jbuilder相比,很多同盟都認為使用eclipse比使用jbuilder省記憶體,而且eclipse屬於免費開源專案,而像jbuilder和idea等均屬於商業非免費工具,當然還有其他一些說法。個人選擇eclipse作為主要開發工具的原因主要...

如何提公升程式設計師的「效能」

程式設計師經常痴迷於優化程式的效能,我們始終會圍繞一些讓人絞盡腦汁的優化建議,比如 如何簡化 如何提公升軟體執行速度 如何提高軟體穩定性等等。本文來討論一下程式設計師優化自身 效能 的一些建議。1 提高文件編寫能力 缺乏文件,對軟體開發是致命的,一方面是軟體無追溯能力,無法找到軟體開發的起源,思想 ...