一、假設處理器執行某個程式,在沒有任何記憶體停頓(stall)時,每個指 令的平均時脈數(CPI)為 2。已知資料快取(data cache)的錯失率(miss rate)為 3%,指令快取(instruction cache)的錯失率為 1%,每一次快 取錯失的懲罰為 100 個時脈週期。假設有 30%的指令需要存取資料記憶 體的內容,相對之下,完全沒有快取錯失的處理器效能會是有快取錯失 時的多少倍?(20 分)
詳解 (共 2 筆)
詳解
要解決這個問題,我們可以按照以下步驟來計算:
- 計算指令快取錯失對CPI的影響:
- 每個指令都可能受到指令快取錯失的影響,因此影響的CPI為:1% * 100 = 1 CPI
- 計算資料快取錯失對CPI的影響:
- 只有30%的指令會訪問資料記憶體,因此這部分指令的資料快取錯失對CPI的影響為:3% * 100 * 30% = 0.9 CPI
將這兩個影響相加,我們可以得到快取錯失總體對CPI的影響為1 + 0.9 = 1.9 CPI。這意味著每個指令的實際CPI增加了1.9,從2增加到了3.9。
因此,有快取錯失的情況下,每個指令的平均時脈數(CPI)為3.9,而在沒有快取錯失的情況下為2。要計算效能比,我們可以將沒有快取錯失時的CPI除以有快取錯失時的CPI:
效能比=23.9效能比=3.92
進行計算:
效能比=23.9≈0.51效能比=3.92≈0.51
這意味著,沒有快取錯失的處理器效能是有快取錯失時的約0.51倍。然而,這個表述似乎與預期相反——正確的解讀應該是,有快取錯失時的處理器效能只有沒有快取錯失時的大約51%。或者換句話說,沒有快取錯失時的處理器效能大約是有快取錯失時的1.96倍(即1/0.51)。這次的計算是為了說明過程,實際上,效能比應該用無緩存失效的情況除以有緩存失效的情況,我之前的表述顛倒了這兩者。正確的表達應該是沒有緩存失效時的處理器效能是有緩存失效時的兩倍左右。
詳解
2