IA 64 and IA-32 MTRRs

Term

MTRRs - Memory Type Range Registers

PAT - Page Attribute Table

MSG - Mode Specified Register

PCD - Page-level Cache Disable

PWT - Page-level write-through

TLB - translation look aside buffers


Introduction

Memory Type Range Registers(MTRRs)是IA-32 Pentium Pro處理器引入的新功能。系統內存在各種不同類型的內存,比如RAM, ROM, Frame buffer memory以及memory_mapping IO, MTRRs使得處理器可以根據內存類型的不同,進行優化。

MTRRs是MSRs(Mode Specified Register)寄存器,這組寄存器保存着系統內部的物理內存如何映射爲各種不同類型的內存。處理器使用這個映射來決定不同物理內存位置的cache能力,以及進行內存訪問時的優化方法。舉個例子,如果某個內存地址在MTRRs中指定爲Write-through,那麼處理器就會以Write-through的方式去操作這個地址:從這個物理地址讀取Cache lines長度的數據並且cached到Cache lines中;在寫數據時把數據寫到總線上並且更行Cache中的內容,以保持Cache的一致性。MTRRs支持5宗內存類型,分別爲:
  • uncacheable: UC
  • uncacheable , speculatable, write-combining: WC
  • write-through: WT
  • write-protected: WP
  • write-back: WB
早期的IA-32處理器,比如Intel486和Prntium處理器使用KEN#(cache 使能) pin 或者外圍電路來決定物理內存類型和cache機制。MTRRs機制不再需要KEN# pin和外圍邏輯電路,簡化了硬件設計。

內存類型

uncacheable (UC)

系統內存不會被cached,讀和寫操作出現在系統總線上的順序和執行序是完全相同的,也就是說不存在re-ordering。
不存在預測內存訪問,這種類型的Cache控制非常適合內存映射的IO設備。如果用在普通的RAM上,將會極大的降低處理器性能。

Write-conbining (WC)

系統內存不會被cached,這一點和UC一樣;一致性不是由處理器總線一致性協議執行的。
允許預測讀;而寫操作則會被延遲,並且會把寫操作合併到write combining buffer中,以便減少內存訪問。如果WC buffer是部分填充的,那麼寫操作要推遲到下一次序列化事件發生,如:SFENCE,MFENCE指令,以及CPUID執行,對非cached內存的讀寫操作,一箇中斷或者一個LOCK指令。
這種cache控制機制非常適合video frame buffer,因爲寫順序對於framebuffer是不重要的,只要能夠及時更新內存使得用戶可以看到graphics上的顯示內容就行。

Write-through (WT)

對內存的讀寫操作都經過cache。在讀命中時從cache lines 中讀取數據,如果讀missed,則會導致cache的填充。
允許預測讀。所有的寫都會寫到cache lines中(如果可能),然後寫到系統內存中。當寫通到系統內存時,無效的cache lines並不會被填充,有效的cache lines或者被填充或者標記爲無效。Write-through允許write-combining存在。這種類型的cache控制非常適合frame buffer,以及訪問系統內存,但是不做總線嗅探的總線設備。
這種內存類型保證了處理器cache和系統內存間的一致性。

Write-back (WB)

對內存的讀寫都經過cache。cache hits時從cache lines讀取,如果cache missed,則會導致cache的填充。允許預測讀。

寫missed則會導致cache lines填充,寫操作都儘可能在cache中執行。Write-combining是允許的

通過刪除合併不必要的寫操作,Write-back 內存類型減少了總線傳輸。寫操作都積累在cache lines上,並不急於寫回系統內存上,積累到一定程度纔會寫回系統內存。寫回操作是通過cache lines的釋放觸發的,比如有新的cache lines分配請求,而此時cache lines已經全部被分配時。此外還可能被系統維護cache一致性的機制觸發。

這種內存類型提供了最好的性能,但是需要所有設備在訪問系統總線上的內存時,能夠嗅探到內存訪問,以確保系統內存和cache一致性。

Write-protected (WP)

首先從Cache lines上讀數據,如果cache missed,則會填充cache lines。寫操作被傳播到系統總線,使得總線上所有處理器的cache lines都變得無效。
允許預測讀。





發佈了183 篇原創文章 · 獲贊 42 · 訪問量 142萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章