资源描述:
《PowerPC 体系结构之存储管理.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、PowerPC体系结构之存储管理取BOOKE精要,兼顾E500规范。E500规范是BOOKE的32-bit实现,更详细些,大部与BOOKE兼容。BOOKE对存储管理的规范较抽象,没有非常多的细节(比如TLB每项的结构必须如此等等),涉及细节则多以E500为例子。1.概述E500实现有两级TLB,即:L1TLB和L2TLB。L1TLB可以理解为L2TLB的部分缓存。访问L1TLB的效率要比L2的效率高,相应的实现的花费也就高。L1TLB由硬件维护,不可编程精确控制。故下面的讨论皆针对L2TLB,为方便简称其为TLB。E500没有对虚拟地址空间进行划分,即没有固定使用
2、某段虚拟地址固定映射到某段物理地址(MIPS,主要用于支持设备资源的固定映射以及方便内核对内存的管理)。而是引入了一个更灵活的设计:将TLB分为TLB0和TLB1。TLB0即用于页映射的TLB,可动态被替换,页大小固定为4KB。E500v1实现为2路组相联,256项;E500v2实现为4路组相联,512项。TLB1则设计用于映射大页(比如16MB,256MB...),支持可变页大小,E500v1可支持9个页大小(最大256MB),E500v2则支持11个页大小(最大4GB)。使用时可将某项设为永驻TLB1(通过置InvalidationProtection位,简写
3、为IPROT位),不会被动态替换,实现为全相联,共16项,可将其理解为用于映射16个段的可编程固定映射机制。2.TLB结构与工作方式2.1TLB结构E500之TLB0与TLB1每项的数据格式相似,皆由页区分域、翻译域、访问控制域和存储属性位组成。2.1.1页区分域页区分域(PageIdentificaionFields)即为查找TLB时的比对域。包括EPN(EffectivePageNumber),TS(TranslationAddressSpace,1bit),TID(TranslationID),V(Valid,1bit),SIZE(PageSize,4bit
4、s)。其中EPN即为虚页号。PowerPC习惯上将地址转换时需要比对的位(IS/DS
5、PID
6、EPN)的组合,叫做一个地址空间。其中IS/DS为Instruction/DataAddressSpace,各1bit,位于MSR,0为地址空间0,1则为地址空间1,转换时其于TLB_Entry之TS相比较,相等才会输出物理页号;PID为ProcessID,本意是用于区分不同进程的虚拟地址空间,存放于PIDR中,属上下文。转换时,比较PIDR与TLB_Entry之TID位,相等才会输出物理页号。BOOKE规定需实现一个PID寄存器;E500作了扩展,其实现有3个PIDR(
7、PID0~2),则E500在转换时会形成3个虚拟地址。将TLB_Entry之TID置0,则硬件会忽略PID0~2与TID的比较,PowerPCLinux设计时,就将TID置0。2.1.2翻译域翻译域(TranslationField)即为经TLB翻译后输出的数据,其实即为物理页号,PowerPC叫RPN(RealPageNumber)2.1.3访问控制域访问控制域(AccessControlFields)又称为PERMIS,共6bits,分别指定该页可否被用户态读、写、可执行(UR,UW,UX);管理态(核心态)的读、写、可执行(SR,SW,SX)2.1.4 存储
8、属性位存储属性位(StorageAttributeBits),其重要的5bits为:W(Writethrough),I(cachingInhibited),M(Memorycoherence),G(Guarded),E(Endianness),一般简写为WIMGE;E500还实现有可用于系统软件的X0~1,可用于用户软件的U0~U3此外E500之TLB1还有一位无效保护位IPROT,置位则该项不会被置无效。2.1.5完整的E500TLBEntry结构2.2TLB工作方式3.TLB控制接口3.1 相关寄存器3.1.1MAS0~4,MAS6,MAS7MMUAssist
9、Registers,用于与TLBEntry之间的数据交换MAS0,32bits,用于选择交换对象是TLB0 还是TLB1(TLBSEL),以及是TLB1的哪个Entry 或者TLB0的哪一路(ESEL):MAS1,32bits,用于存放V,IPROT,TID,TS,TSIZE:MAS2,32bits,用于存放EPN
10、X0
11、X1
12、W
13、I
14、M
15、G
16、E:MAS3,32bits,用于存放RPN
17、U0-U3
18、UX
19、SX
20、UW
21、SW
22、UR
23、SR:MAS4,32bits,用于加上TLBMiss的处理,存放默认的TLBSEL, TIDSEL, TSIZE, X0,X1,WIMGE
24、,当I/D