-
- Overview
- MMUCR
- SWOA
- U1TE
- U2SWOAE
- DULXE
- IULXE
- STS
- STID
- PIDProcess ID
- MMUCR
- Overview
Overview
本文主要介紹PPC460s記憶體管理相關的控制寄存器MMUCR和PID。
當然,除了本文兩個控制寄存器外,在MSR[IS,DS]也會定義相關的控制,以及MSR[PR]也控制
着通路模式。
MMUCR
MMUCR的讀寫操作指令為基于GPR的 ‘mtspr’指令。
寄存器圖示如下:
其中,有一點需要注意:
STID雖然是Search Translation ID(對于TLB搜尋指令tlbsx定義的TID域值),但是調用TLB的
讀取指令tlbre時,STID值會更新為目前讀取的TLB Entry的TID值;同樣地,當調用TLB的更新
指令tlbwe時,TLB Entry的TID值會更新為STID值(也即TLB Entry更新指令中TID并不會根據
GPR的值來更新,而是根據MMUCR中的STID值更新)
SWOA
Store Without Allocate Control:
這個屬性控制對于可Cache的缺頁(資料丢失)是否要在Data Cache中重新配置設定Cache Line.
當U2SWOAE = 1時(“通路不需要重配”已使能),此項配置忽略。
U1TE
U1 Transient Enable Control:
此處的U1也就是上文(四)中介紹的使用者自定義的Storage Attribute之一,此屬性用來控制使能(1)
或禁能(0)瞬态存儲Transient Storage.
U2SWOAE
U2 Store without allocate Enable:
使能或禁能不重配Cache Line;
DULXE
Data Cache Unlock Exception Enable:
這個控制屬性用于使能或禁能在使用者模式下執行dcbf指令是否引發緩存上鎖中異常類型的資料存儲中斷;
由于dcbf指令會使在Data Cache中的相關Cache Line 沖刷掉(Flushed),而在使用者模式下時調用
了這個指令,可能某個Application會移除一個已經上鎖的Cache Line。使能這個屬性後,對于PPC460S
核心,不管目标CacheLine是否上鎖,上鎖中異常都會發生,然後由資料存儲中斷處理程式來決定應用程
序是否可以解鎖此CacheLine;
注意:如果此位未使能(0),或者在管理者模式下執行了dcbf指令,那麼指令執行後會沖刷目标Cache
Line(無論是否已經上鎖)。
IULXE
Instruction Cache Unlock Exception Enable:
控制屬性原理同上(資料Cache的解鎖異常使能),隻是針對的指令為icbi指令(沖刷的是指令Cache)
STS
Search Translation Space:
屬性控制用于TLB搜尋指令tlbsx所搜尋的位址空間(資料空間或指令空間)
注意:
在TLB Entry的定義中TS位需要與MSR中的IS以及DS位保持一緻。
(即指令空間的定義要與IS保持一緻,資料空間要與DS保持一緻)
而對于tlbsx指令來說,通過配置MMUCR(STS)來主動決定搜尋空間。
STID
Search Translation ID:
屬性主要用來在TLB搜尋指令tlbsx執行時,通過STID與TLB Entry定義中的TID域進行比較以
加快搜尋。
注意:
對于指令取指、資料存儲以及緩存管理中,TLB Entry中定義的TID主要與PID
寄存器來比較,但是對于搜尋來說,就可以與MMUCR中的STID來比較。
PID(Process ID)
32位的PID寄存器隻有低8位有效。
8位的有效位作為虛拟位址的一部分,用來和TLB Entry定義中的TID域進行比較,進而确定目前的Entry
是否與對應的虛拟位址比對(當然如果TID域定義為0了,則PID值就會忽略,不再參與比較,因為目前
定義的TLB Entry為全局共享的)
PID寄存器的操作指令也是基于GPR的mtspr指令。