2017-04-04 59 views
1

我很努力地完全掌握緩存的工作方式。 比方說,我有一個一級緩存和二級緩存。緩存交互步驟和讀取週期

  1. CPU(主存儲器)給L1控制器存儲器地址。
  2. L1高速緩存控制器確定高速緩存組,請求高速緩衝存儲器標籤,和塊偏移
  3. L1高速緩存電路檢查所請求的標籤是在集
  4. 找不到L1高速緩存標籤匹配。

#2發生在這裏還是在L1發送L2內存地址之後?

如果L1需要x個週期,L2需要y個週期,主存需要z個週期。基本上,如果上述步驟發生,然後L2找到一個緩存標記匹配並將其發回給L1,並將它發送給main,那麼需要多少個週期?當L1返回給CPU時,它是否被視爲讀週期?

在此先感謝您的幫助!

回答

1

L1可能在處理器中,但過程仍然相同。可以說處理器執行讀,地址和讀/控制信號輸出。 L1緩存從地址中查找標籤並確定命中/未命中。如果是命中,則返回信息,如果它錯過了,則L1需要在其地址總線上出去,調整地址使其與高速緩存行大小和地址對齊對齊。 L2與L1在高層完成同樣的事情,地址變成標籤變成命中/未命中,如果未命中,則它將對齊/大小的高速緩存線取回到其外部地址總線上,這重複直到你擊中一些回答(DRAM,外設等)。當L2響應時,根據設計/設置的規則將線路發送回L1,L1保存線路,然後向處理器返回所要求的數據/長度。就目前而言,根據設計和設置,L1和L2包含相同的數據,理想情況下L1包含L2中的所有數據,L2包含所有L1數據加上一些。授予不可緩存的請求應該通過,因此您可能有L2命中導致L1不存儲數據。同樣基於該設計,不可緩存的請求可以以原始處理器大小/形狀傳遞到L1​​和/或L2的另一側,而不是與緩存線對齊並且被調整大小。