天天看點

PowerPC PPC460-S MMU(五 Storage Control Registers)

    • Overview
      • MMUCR
        • SWOA
        • U1TE
        • U2SWOAE
        • DULXE
        • IULXE
        • STS
        • STID
      • PIDProcess ID

Overview

本文主要介紹PPC460s記憶體管理相關的控制寄存器MMUCR和PID。

當然,除了本文兩個控制寄存器外,在MSR[IS,DS]也會定義相關的控制,以及MSR[PR]也控制

着通路模式。

MMUCR

MMUCR的讀寫操作指令為基于GPR的 ‘mtspr’指令。

寄存器圖示如下:

PowerPC PPC460-S MMU(五 Storage Control Registers)

其中,有一點需要注意:

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指令。

繼續閱讀