使用“時鐘訊號”與“失效指令”事件計數計算“每失效指令時鐘訊號數 (CPI)”事件比率:Clockticks/Instructions Retired(時鐘訊號/失效的指令)。CPI 值有助於確定將效能調整精力集中在什麼地方。CPI 比率良好表示程式碼的執行效能優異。
一般來說,這些數字源自經驗豐富的效能工程師的經驗:
良好 |
不佳 |
0.75 |
4 |
CPI 比率不佳表示存在以下情況之一:
所選的程式碼或許可以通過優化,在處理器上更高效地執行。
所選的程式碼包含字串指令或微程式碼。
例如,考慮以下“活動結果”:
專案 |
執行 1 |
執行 2 |
Activity result(活動結果) |
50 個時鐘訊號 100 個失效的指令 |
100 個時鐘訊號 100 個失效的指令 |
CPI |
0.5 時鐘訊號/失效的指令 |
1.0 時鐘訊號/失效的指令 |
在本例中,比較兩個比率時,兩次執行之間的差異變得更加清楚。執行 2 是更好的候選優化。
僅僅觀察“活動結果”時,需要檢查所有四個結果才能瞭解兩次執行之間的差異。
使用演算法更改進行優化之後,在針對微體系結構進行優化時,第一步應該是研究 CPI。對於 CPI 不佳的每個區域,檢查記憶體相關事件與分支相關事件,以瞭解為什麼 CPI 會不佳。