第二章 主從式快取記憶體控制器
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)而主從式快取