天天看點

ASID 與 MIPS 中 TLB相關寄存器

ASID

  • 為了提高TLB的性能,将TLB分成Global和process-specific。global 是指常駐在tlb中不會被刷出的,例如核心空間的翻譯,process-specific 是指每個程序獨有的位址空間,當發生程序切換的時候,這部分tlb可以被刷出,為了支援process-specific的tlb,arm提出了ASID(Adress Space ID)的硬體解決方案,這樣TLB就可以識别出這個 TLB 頁表項是屬于哪一個程序的。
  • 在 MIPS 中,有兩個地方會出現ASID,每一個TLB表項會有一個ASID,辨別這個表項是屬于哪一個程序的,CP0_EntryHI 中的ASID是目前程序的ASID,是以程序對TLB的查詢操作,即使VPN命中,但若該表項不是global且ASID與CP0_EntryHi的ASID不一緻,則也視作TLB缺失 – 這樣就不用每次切換程序都要 flush 所有 tlb

MIPS 中 TLB/MMU 相關寄存器

TLB 關鍵字域

  • EntryHi 包含 VPN2 和 ASID 字段
    • VPN2 就是 TLB 表項對應的虛拟頁表号,在 MIPS 設計中,一個 TLB 表項存儲的是兩個相鄰虛拟頁對應的實體頁框号,是以 VPN2 隻有 21 位(除去頁内偏移12位和第13位)
    • ASID 字段,是目前程序的ASID,在對 TLB 通路查詢中起到驗證的作用(具體見 ASID 部分)。
  • EntryLo0-1
    • PFN 對應的實體頁框号
    • D(dirty) 标志位,置位時允許寫入;0 不允許寫入,若寫入則發生異常
    • V(valid) 有效位
    • G(global) 表明該 TLB 表項是全局的還是屬于特定程序的,若是全局的,則對該 TLB 表項的讀取都會無視 ASID 是否比對
  • EntryHi 與 EntryLo 一道負責 TLB 的寫入與讀取操作,tlbr 将讀到的 TLB 表項寫入 EntryHi(注意這一步會覆寫原本的 ASID,執行之後需要恢複)與 EntryLo 之中。
  • PageMask
    • 用于支援更大的頁,PageMask 寄存器值為 1 的位,在執行 TLB 表項比對時被忽略(即 PageMask 寄存器值為 1 的位被視作頁内偏移位),如: PageMask 低 12 位為 1,則表明頁大小為 4KB。
    • 另外,在 MIPS 體系中,頁的大小在 4KB 和 16MB 之間以四倍遞增。

TLB 選擇寄存器

  • index
    • 值為 0 到 表項總數 - 1 之間的一個數,用于指出 tlbr、tlbwi 讀寫的是第幾個 TLB 表項。
  • Random
    • 儲存 TLB 的一個索引,CPU 每執行一條指令就向下遞減計數一次,該值充當 tlbwr 的 TLB 索引,在需要更新 TLB 時,幫助實作随機替換政策。

頁表存取輔助寄存器

  • Context 和 XContext
    • 輔助處理 TLB 重填異常,其中 XContext 是 MIPS64 位中增加的
    • 32位的 Context 資料域為:
    31 - 23 22 - 4 3 - 0
    PTEBase BADVPN2
    • PTEBase 存儲頁表空間的起始位址(因為起始位址是 8M 對齊)
    • BADVPN2 是 BADAddr 的 VPN2 域,BADAddr 是引起重填異常的虛拟位址
    • 實際上 32 位中一個頁表項隻有 64 位大(VPN2 下),但是 MIPS 為了與 64 位頁表相容,預留成 2*64 位大
    • 因為 PTEBase 是頁表空間的起始位址,BADVPN2 标明該 BADAddr 所對應的是第 BADVNP2 個頁表項,故 BADVPN << 4 就是 BADAddr 對應的頁表項相對于頁表空間起始位址的偏移,是以當發生重填異常的時候,Context 存儲的就是對應頁表項的虛拟位址,即需要加載到 EntryLo0-1中的資料項的位址。是以依靠 Context 的輔助,能夠極大程度的簡化重填異常處理的過程。

TLB 重填異常處理

mfc0 k1, C0_CONTEXT
lw 	 k0, 0(k1)
lw   k1, 8(k1)
mtc0 k0, C0_ENTRYLO0
mtc0 k1, C0_ENTRYLO1
ehb
tlbwr
eret
           
  • ehb 彙編指令用于保證 ehb 之前對協處理器 0 的操作都會在執行該條指令之後指令時已完成
參考資料:See MIPS Run Linux (2nd edition)

繼續閱讀