PowerPC PPC460-S MMU(五 Storage Control Registers)

来源:互联网 发布:linux acl mask 编辑:程序博客网 时间:2024/05/22 15:42

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

Overview

本文主要介绍PPC460s内存管理相关的控制寄存器MMUCR和PID。
当然,除了本文两个控制寄存器外,在MSR[IS,DS]也会定义相关的控制,以及MSR[PR]也控制
着访问模式。

MMUCR

MMUCR的读写操作指令为基于GPR‘mtspr’指令。
寄存器图示如下:
MMUCR

其中,有一点需要注意:
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指令。


0 0