ARM核920T性能優(yōu)化之MMU
為了使任務(wù)有各自的虛擬存儲映射,MMU硬件采用地址重定位(address relocation),即在地址訪問主存之前,轉(zhuǎn)換由處理器核輸出的存儲器地址。可認為在介于內(nèi)核和主存間的MMU中有一個重定位寄存器,這樣就能很容易理解這個轉(zhuǎn)換過程。
當(dāng)處理器核產(chǎn)生一個虛擬地址時,MMU取出這個虛擬地址的高位,并用重定位寄存器中的值來替換它,從而形成一個物理地址。虛擬地址的低位是一個偏移量,它轉(zhuǎn)換成物理存儲器的一個特定地址。一個重定位寄存器只能轉(zhuǎn)換一塊存儲空間,這塊存儲空間的大小由虛擬地址的偏移量部分所占的位數(shù)所決定。這樣的一塊虛擬存儲空間稱為一頁(page),而轉(zhuǎn)換過程中所對應(yīng)的那塊物理存儲空間稱為一個頁幀(page frame)。
ARMMMU臨時存放轉(zhuǎn)換數(shù)據(jù)的一組重定位寄存器實際上是一個由64個重定位寄存器組成的全相聯(lián)cache。這個cache稱為轉(zhuǎn)換旁路緩沖器(TLB),TLB緩存最近被訪問的頁的轉(zhuǎn)換數(shù)據(jù)。除了使用重定位寄存器外,MMU還使用主存中的表來存放描述系統(tǒng)中用到的虛擬存儲器映射的數(shù)據(jù),這些轉(zhuǎn)換數(shù)據(jù)的表稱為頁表(page tables)。頁表中的每個頁表項PTE(Page Table Entry)包含關(guān)于虛擬頁的以下信息:用于將虛擬頁轉(zhuǎn)換為物理頁的物理基地址,分配給該頁的訪問權(quán)限,頁的cache和寫緩沖器配置。
通過上下文切換時激活不同的頁表,使得執(zhí)行有重疊虛擬地址的多個任務(wù)成為可能。MMU可以重定位一個任務(wù)的執(zhí)行地址,而無需在物理存儲器中移動這個任務(wù)。任務(wù)的物理存儲空間只是簡單地通過激活和不激活頁表來映射到虛擬存儲空間。當(dāng)剛剛提到的地址轉(zhuǎn)換發(fā)生時,cache可能包括無效的,從舊的頁表映射來的虛擬數(shù)據(jù)。為了保證存儲器數(shù)據(jù)的一致性,cache可能需清理和清除。TLB可能也需清除,因為它也可能緩存了舊的轉(zhuǎn)換數(shù)據(jù)。
評論