2017-06-10 72 views
0

我正試圖計算指令緩存命中率。我在模擬器中模擬了一個緩存並用PC提供。我想知道是否需要報告命中率,因爲在緩存中找到的PC數量或找到的PC數量以及它們的OpCode字段是否匹配?指令緩存是否存儲操作碼?

這些問題可以追溯到指令緩存目的的本質。指令緩存是否被用來檢索OpCodes?正如我們在分支目標緩衝區(BTB)中存儲分支目標一樣。在BTB的情況下,我們計算一旦有PC命中並且目標匹配時的命中率。 (更詳細地說:一旦分支預測器正確預測並且分支被採用)。我想知道指令緩存是否也有這樣的事情。

回答

1

你在混淆分支預測器和緩存的概念。分支預測器用於預測分支的結果預測。如果預測分支被採用,則從BTAC(分支目標地址高速緩存)取得下一個PC。當實際的分支目標和方向被計算出來時,命中信息會在稍後出現。這是您將分支的預測方向和結果與實際結果進行比較的地方。如果它們全部匹配,你會受到打擊。

另一方面,高速緩存用於存儲數據以快速訪問CPU。所以,你不需要比較「操作碼」來獲得一個命中。

儘管您仍然需要存儲操作碼,以便您可以在命中時檢索它們。要獲得緩存命中,您只需從有效緩存行中獲取標記並將其與當前標記進行比較即可。這裏的標籤只是PC的一些部分,取決於你的緩存實現。