• 沒有找到結果。

第二章 主從式快取記憶體控制器

2.3 主從式快取記憶體模擬器

2.3.4 效能測試

本論文利用測試程式產生器產生大量的測試程式來進行效能測量,測量時參 數跟本論文實際發展的晶片使用的參數完全相同,如下:

L1 快取記憶體大小:2k x 64 (bit) 主從式快取記憶體大小:2k x 64 (bit) 主從式快取記憶體 sub cache 個數:2 sub cache 大小:1k x 64 (bit)

測試程式個數:20000 筆

測試程式碼大小上限:32768 行

測試程式碼執行週期數上限:2000000 cycles

本論文的效能測量的觀察,如圖 2-3(a),為在不同 CR_Ratio (有返回動作的 跳躍在程式跳躍指令中佔的比例。)的測試程式中,使用主從式快取記憶體控制

器對於使用 L1-Direct Map 快取記憶體控制器的效能增進百分比,在此將主從式 快取記憶體架構整體的效能提升參數定義名稱為 Eff_Improve,其計算方式如下:

Eff_Improve=(L1_Cache_Penalty_Cycle - MS_Cache_Penalty_Cycle) /

L1_Cache_Penalty_Cycle (2.1)

圖 :主從式快取記憶體的效能提升示意圖。

觀察模擬結果,可發現 與 呈現正成長的關係,當

的值越大,也就是

式快取記憶體的架構的效能提升也就越大。此外,即使 CR_Ratio 的值很低,主 L1-Direct Map 快取記憶體架構,換句話說主 從式快取記憶體在任何的測試程式情形下,效能都還是優於或等於

2-3(a)

CR_Ratio Eff_Improve

CR_Ratio function call/return 的現象越明顯的測試程式,主從

從式快取記憶體架構的效能仍不輸

L1-Direct Map 的快取記憶體架構。

深入對模擬曲線進行分析,發現 CR_Ratio 與 Eff_Improve 雖是正成長,但 是卻不是 1:1 成長,也就是 CR_Ratio 成長 10%,Eff_Improve 卻不會也跟著成 長 10%這麼多,這裡與模擬前預估的情況有差異。探究原因後發現,在跳躍發生 call/return 區間在 L1 cache 的 size 以內會使 CR_Ratio 高可是效能上卻看不出(即 確實有 call/return 發生,但是因

為 L1 本身不會 miss,所以效能上看不出。)。這 種跳躍在每個測試程式中的跳躍比例佔了越 20%~60%,自然的造成了 CR_Ratio

1 成長。

re-fetch Load Count),針對主從式快取記憶體控制器使用 PLC 及不使用 PLC 的

消弭 sub-cache 的個數增加導致每個 sub-cache 的大小縮減所帶 的 trade-off( 因 為 L1_Cache_Entry_Amount = MS_Cache_Entry_Amount *

MS_ 改進及

sub-cache 的 大 小 的 關 係 。 因 此 使 用 PLC 的 改 善 比 例 參 數 定 義 名 稱 為 Eff_Improve_by_PLC,其中:

Eff_Improve_by_PLC=

(MS_Cache_Penalty_Cycle_No_PLC - MS_Cache_Penalty_Cycle) /

MS_Cache_Penalty_Cycle_No_PLC (2.2)

MS_Cache_Penalty_Cycle_No_PLC : 主從式快取記憶體未使用 PLC 時的 Miss Penalty Cycle。

圖 2-3(b)

與 Eff_Improve 無法 1:

本論文針對使用者輸入預先存取參數(詳見 2.1.2)定一名稱為 PLC (P

結果作一比較,以觀察 PLC 為主從式快取記憶體所帶來的增益。由於 PLC 當初 的設計目的是為了

Cache_Amount,詳見 2.3.1。),所以觀察重點放在 PLC 帶來的效能

是當使用不同的 sub-cache size 時所展現出式(2.2)的結果。

況發 大小較小,每次能預先存取的指令數也較少。),整體的主從式 取 架構的 Miss Penalty 會開始高於 L1-Direct Map 快取記憶體架構的

Miss Penalty,因此晶片 b-cache 大小及個數

時便可以此現象為重要的參考指標。

本論文也針對一般嵌入式處理器常使用的快取記憶體大小,在 General Case 下針對不同個數的 sub-cache 的情形作比較。實驗中快取記憶體大小分別為 1k-entry(即 cache line 總數為 1k),2k-entry,4k-entry,8k-entry,在 20000 筆測試 程式中,分別對 sub-cache 的個數為 2,4,8 的情形作測試。每筆測試程式都會 跑過 sub-cache 的個數為 2,4,8 的情況,然後統計每種情形下擁有幾次最少的 cache miss Penalty 的測試程式筆數。圖 2-3(c)~圖 2-3(f)是模擬後的結果。

2-3(b):PLC 對主從式快取記憶體的效能提升示意圖。

結果如預期,當 sub-cache 本身的 size 越小,PLC 平衡此 trade-off 的功能越 顯著,然而此模擬也觀察出了一個現象,當 Eff_Improve_by_PLC 的值超過 50%

時,即使使用了 PLC,預先存取的速度還是略嫌不足(其原因為,由於此情 生於 sub-cache 的

快 記憶體

設計者在決定主從式快取記憶體的 su

1k-entry:

圖 2-3(c):1k-entry 時的比較結果。

2k-entry:

圖 2-3(d):2k-entry 時的比較結果。

4k-entry:

圖 2-3(e):4k-entry 時的比較結果。

8k-entry:

圖 2-3(f):8k-entry 的比較結果。

比較以上結 ,可知在 1k 及 2k 的時候,以拆成兩顆

sub-cache 為在 general case cache miss alty 最少的。在 entry 數為 4k 的時候,

則是拆成 4 顆為最少的,8k 時候則為 8 顆。在本實驗裡可發現,在 general case 下每個 sub-cache 1k-entry 表現為最好。

快取記憶體 entry 數在

下 Pen

的 果

的大小以

接下來本論文將針對一個常見的特殊情形進行探討,以便明確的突顯主從式

L1_Cache_Penalty_Cycle : 997376 S_Cache_Miss_Times : 3

enalty_Cycle : 768

的工作,而使用主從式快取

Call Return Ratio : 0.995754 L1_Cache_Miss_Times : 974

M

MS_Cache_Miss_P Eff_Improve : 0.99923

由此結果發現,在主從式快取記憶體的架構下,cache miss 的次數及 Penalty Cycle 都大幅減少,以致於 Eff_Improve 大幅提升。此例在數位訊號處理的應用 中尤其常見。而在現行大部分的處理器遇到這樣的情形,大都是仰賴高性能的編 譯器對迴圈進行展開(loop unrolling)及重組指令間的相對位置來減少 cache miss 的發生,然而性能佳的的編譯器研發並不是一件容易

記憶體架構就可以自然的去處理掉這種會造成重複且大量 cache miss 的情況,提

由於在嵌入式處理器中,L1 指令快取記憶體的架構幾乎都還是以 Direct-Map Direct-Map 的架構,然而若 的架構作比較 ,主從式快取記憶體仍舊具有以 下 N-W

1) N- 架構的搜尋時間長,以 4-way 而言,每次要循序搜尋四個 cache line(entry),而主從式快取記憶體架構可以平行搜尋每個 sub-cache,即

e 個數增加也不會因此延長處理的時間。 延伸探討與 N-Way Associative [33]

ay Associative 所沒有的優點:

Way Associative

使 sub-cach

2) N-Way Associative power。

3) 因為 N-Way Associative I/O pin ( Cache)而主從式快取

相關文件