討論計算機體系結構中的關聯對映?
在關聯對映函式中,主儲存器的任何塊都可能包含任何快取塊位置。它將主儲存器地址分成兩部分 - 字ID和標籤,如圖所示。要檢查儲存在記憶體中的塊,會從記憶體地址中提取標籤,並在快取的所有行中執行搜尋以檢視塊是否存在。
這種在快取中搜索塊的方法看起來可能是一個緩慢的過程,但事實並非如此。快取的每一行都有其比較電路,可以快速分析該行是否包含該塊。由於所有行都並行執行此比較過程,因此可以快速識別正確的行。
這種對映技術旨在解決直接對映中存在的問題,在直接對映中,兩個活動記憶體塊可能對映到快取的同一行。發生這種情況時,不允許任何一個記憶體塊保留在快取中,因為它會被競爭塊迅速替換。這會導致一種稱為抖動的狀態。
在抖動中,快取中的一行在兩個或多個塊之間來回切換,通常在處理器遍歷它之前甚至替換一個塊。可以透過允許記憶體塊對映到快取的任何一行來避免抖動。
有許多替換演算法,沒有一個演算法比其他演算法具有優先權。為了實現最快的操作,這些演算法中的每一個都在硬體中實現。
- 最近最少使用 (LRU) - 這種方法恢復處理器在最長時間內沒有讀取的塊。
- 先進先出 (FIFO) - 這種方法恢復在快取中最久的塊。
- 最不常用 (LFU) - 這種方法恢復命中次數較少的塊,因為載入到快取中。
- 隨機 - 這種方法隨機選擇一個要替換的塊。它的執行效率略低於LRU、FIFO或LFU。
廣告