2016-01-22 72 views

回答

1

至少有三種方法來窺探使用物理地址的虛擬地址L1緩存存在。

或許最明顯是用由大約哪一組和路的塊佔用(如果它是在L1)的物理地址,並且包括信息處理的一個包容L2高速緩存。包含屬性只需要應用於標籤,例如,提供的標籤關聯方式與存儲器中數據塊的關聯方式一樣多。當L2關聯性不足以處理映射到給定索引的L1中的所有塊時,這會導致L2中的丟失需要驅逐L1緩存線。考慮到典型的L2容量和相關性,這種驅逐通常很少見。 (給定4 KiB頁面,在32 KiB L1中,一個特定的物理地址可以使用簡單的模索引映射到8個不同的地方 - 偏斜的關聯會使事情複雜化 - 所以包含4路聯想的物理地址的L2不能保證這樣的後退失效不會發生,儘管8路L2可能會發生。由於空間局部性是常見的,並且L2緩存相對較大,因此衝突問題並不像人們對隨機訪問模式所期望的那樣普遍。將最大化這種衝突。)

的第二種方法是密切相關的,首先是複製的標籤的物理尋址結構。 (如果此結構與L2關聯,則它可能被認爲是包含標籤的L2的一個版本。)這允許處理器使用虛擬地址訪問緩存,而窺探使用物理地址。物理地址標記存儲可能需要具有相對較高的關聯性,但由於snoops不如處理器高速緩存訪​​問常見,所以可以更慢地進行探測以節省功耗(和麪積)。 (理論上,這個二級標籤存儲可以是過濾器,例如使用部分標籤,這通常會指示窺探未命中,並且通常將其限制爲一個.L1中只有一個虛擬標籤偶爾檢查,性能丟失偵聽訪問虛擬索引的L1標籤和使用TLB進行轉換可能是可以接受的,儘管偵聽原則上可以檢索與物理地址相匹配的所有可能的虛擬標籤並進行翻譯和檢查,但這通常是不可接受的開銷。對於不大於頁面大小的直接映射的L1,這可能是可以接受的,所以這可能被認爲是另一種方法。另外,可能會提出其他過濾機制。頁面着色可以減少要轉換爲關聯性的地址數量的L1)。

第三種方法是提供將物理地址轉換爲虛擬地址的反向TLB。 (我似乎記得讀到一個HP-RISC處理器使用這種方法。)反向TLB未命中將指示探測到的物理地址不在L1中。當新翻譯必須移除仍然具有L1中的塊的翻譯時,這可能會引入反向無效。

一個虛擬索引和物理標記 L1可以簡單地探測其他可能的方式在探聽。這可能會干擾處理器對L1的訪問,但在標量處理器中,如果只有一個或兩個虛擬地址索引位與物理地址位不匹配,則可能有足夠的數據高速緩存標籤帶寬來支持訪問和偵聽探測,將需要四個探針。 (爲snooping提供的額外標籤帶寬也可用於軟件預取,並允許在更多訪問準備好探測緩存時比用數據路徑支持的情況下節省標籤數據順序訪問。)