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