天天看點

MIPS TLB / MMU 硬體及其作用

TLB是把你的程式用的位址(程式位址或者虛拟位址)轉換成為通路存儲器的實體位址的硬體。作業系統對于記憶體轉換的控制是所有軟體安全特性的關鍵。

在MIPS CPU(以及所有的現代CPU上)上,位址轉換以4KB大小為機關,稱為頁。頁内的12位位址隻是從虛拟位址簡單地傳遞到實體位址。轉換表中每一項含有一個頁的虛拟位址(VPN即虛拟頁号)和一個實體頁位址(PFN代表頁幀号)。當程式給出一個虛拟位址時,該位址和TLB中的每個VPN做比較,如果和某一項比對就給出相應的PFN。TLB是一種稱之為相聯存儲器或者内容才址的存儲器——不是按照索引來選擇而是根據内容來選擇某一項。這邏輯是相當複雜的,其中每一項都有内建的比較器,複雜度和性能擴充性很差。是以典型的TLB隻有16到64項。

有一組标志位和每個PFN一起存儲并一起傳回叫,标志位讓作業系統可以指定某一頁為隻讀或者指定某頁的資料是否可以高速緩存。

大多數現代的MIPS CPU(以及所有的MIPS32/64 CPU)采用雙倍存儲,每一個TLB項容納一對相鄰的虛拟頁面對應的兩個單獨的實體位址。

MIPS TLB / MMU 硬體及其作用

圖5.1 : TLB資料項

圖5.1給出了一個TLB項。每個域标上軟體加載和讀取TLB表項的時候用的CPO寄存器的名字,下一節講這些寄存器。

當你在運作一個真正的複雜的作業系統時,軟體很快就會覆寫比TLB的轉換表能容納的更多位址。這可以通過把TLB當作一個軟體管理的最近用過的位址轉換的高速緩存來維護得到解決。當一個需要的位址轉換不在TLB中時,就會産生一個異常,異常處理程式算出并安裝正确的位址轉換。很難相信這種做法會有效率,但是事實确實如此。

轉自嵌入式學習網!

原文位址:http://www.embedstudy.com/viewnews-4922