-1
在C中,我試圖將一個整數地址值分隔到具有4組直接映射高速緩存中的標記位和集索引位。我這樣做是爲了讓我可以比較正確的緩存中正確的標記。這裏例如地址參數:高速緩存中的位掩碼
- 組索引比特s =數2
- 偏移的比特數B = 3
- 的地址位的總數M = 8
而在我的例子地址整數是40 - INT地址= 40。
- 40在二進制是00101000
- 設定指標應該是01 = 1
- 標籤應該是001 = 1
而不是爲我得到2標籤和組索引爲8,必須是錯誤的,因爲我只有4套在我的緩存中。
下面是我是如何做到的,我掩蓋了地址以獲取標記,這些標記位於設置索引左側的位直到m = 8位。設置的索引位於標籤位和偏移位之間,即位於8位序列中間的01位。
- INT標記=((地址&〜0 < <(S + B))>> 4)
- INT組=(地址&(〜(〜0 < < S)< < b))的
我知道我一定是錯的,但越多我試圖寫一個面具,我越來越困惑,我必須忘記一些東西。我至少認爲我正在獲得標籤,因爲左邊的位應該比中間位更容易。任何意見或幫助將不勝感激,非常感謝!