为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

PowerPC体系结构学习笔记之内存管理

2020-03-09 7页 doc 21KB 6阅读

用户头像

is_196623

暂无简介

举报
PowerPC体系结构学习笔记之内存管理PowerPC体系结构学习笔记之内存管理(1)——E500MMU简介 E500采用了两级MMU机制,L1-MMU和L2-MMU,以及一些辅助寄存器和指令来实现虚实地址的转换。E500与其他PowerPC处理器相比的一个最大不同就是,E500不能禁止虚实地址转换,并且支持两个地址空间,分别是地址空间0与地址空间1。其实这点有些类似于MIPS,除了直接通过虚拟地址来区分以外,MIPS处理器也没有机制禁止/启用地址翻译。 L1-MMU包含I-L1VSP,D-L1VSP,I-L1TLB4K和D-L1TLB4K。I-L1VSP和D...
PowerPC体系结构学习笔记之内存管理
PowerPC体系结构学习笔记之内存管理(1)——E500MMU简介 E500采用了两级MMU机制,L1-MMU和L2-MMU,以及一些辅助寄存器和指令来实现虚实地址的转换。E500与其他PowerPC处理器相比的一个最大不同就是,E500不能禁止虚实地址转换,并且支持两个地址空间,分别是地址空间0与地址空间1。其实这点有些类似于MIPS,除了直接通过虚拟地址来区分以外,MIPS处理器也没有机制禁止/启用地址翻译。 L1-MMU包含I-L1VSP,D-L1VSP,I-L1TLB4K和D-L1TLB4K。I-L1VSP和D-L1VSP含有4个条目,采用全相连结构。I-L1TLB4K和D-L1TLB4K含有64个条目,采用4路组相连结构。L2-MMU包含TLB0和TLB1。其中TLB0含有256个条目,采用2路组相连结构。TLB1含有16个条目,采用全相连结构。TLB0用来进行页式映射,TLB1用来处理段式映射。 PowerPC体系结构学习笔记之内存管理(2)——E500虚拟地址与MMU结构 在E500内核中将MMU分为两级有一下两个作用: L1-MMU的访问速度较快。这个原理类似于Cache的原理。 L1-MMU采用哈佛结构,也就是程序地址空间与数据地址空间分离,可以提高地址转换的效率。但是L2-MMU没有采用这种结构。 E500是一个32位的处理器,支持4GB的地址空间。在内部使用41位的临时虚拟地址,组成如下: 40 39 32 31 0 AS PID EA AS:来自于MSR寄存器的IS或DS位。所以,E500可以根据AS位将地址空间分为两种:地址空间0和地址空间1。但是,Linux并没有使用这个功能。kernel和用户空间的代码,数据都在地址空间0中,即AS位一直是0。 PID:E500支持3个8位的PI的寄存器来保存进程的PID。这点于MIPS的ASID作用一样。但是,Linux并没有使用PID,在TLB中简单的忽略PID的检查,全部设为0。 EA:32位的有效地址。 下面介绍一下E500 MMU的结构。在E500中,MMU的entry包含下列字段: V:用来表示当前entry是否有效。为0时表示无效,为1时表示有效。在系统reset之后,所有entry的V位都设为0。 TS:就是上面地址空间中的AS。为0表示地址空间0,为1表示地址空间1。 TID[0:7]:就是上面地址空间中的PID。TID为0时,忽略PID的比较。在Linux中,全为0。 EPN[0:19]:虚拟页桢号。根据页大小不同,有效的位数页不同。 RPN[0:19]:物理页桢号。 SIZE[0:3]:表示当前entry的页大小。 PERMIS[0:5]:用于描述当前entry的访问控制位。分别是UR,SR,UW,SW,UX, SX。分别表示用户态和内核态的读/写/执行权限。 WIMGE[0:4]:W表示当前entry是write through还是write back。I表示当前entry是否忽略Cache。M表示对此数据区的访问需要进行存储一致性处理。G表示对相应存储区域进 运行保护。E表示当前entry是小端还是大端。 X0,X1:描述一些额外属性。 U[0:3]:自定义用途。 IPROT:当IPROT为1时,表示当前entry被保护。不能使用tlbivax指令无效该entry。只能用tlbwe指令清除。在E500中只有TLB1支持该位,在TLB0中,该位一直为0。 PowerPC体系结构学习笔记之内存管理(3)——与MMU有关的寄存器 E500有一系列寄存器用于管理MMU。 PID0-2寄存器:用于保存当前进程的PID,该寄存器只有54-63位有效。 MMUCSR0寄存器:用于使无效TLB0和TLB1的所有entry。该寄存器由两位组成: L2TLB0_FI使无效TLB0的所有entry;L2TLB1_FI使无效TLB1的所有entry。MMUCFG寄存器:用来保存当前MMU的配置信息,包括PID寄存器数量,大小,TLB的数量等。 TLB0CFG和TLB1CFG寄存器:用于描述TLB0和TLB1的配置信息,包括entry数量,页表尺寸等信息。 除上述寄存器外,E500还包含一些MAS寄存器,主要作用就是维护MMU中TLB的entry,作用类似于MIPS中的EntryHi和EntryLo寄存器。其中MAS1-3中存放的各个字段与TLB entry中的各个字段一一对应,MAS0寄存器用于决定写哪个TLB的哪个entry,作用类似于MIPS中的random和index寄存器。 MAS0寄存器:TLBSEL字段用于选择要操作的TLB,0表示TLB0,1表示TLB1。ESEL 字段用于选择TLB的entry。当使用TLB1时,ESEL字段中低4位有效,用于选择TLB1中的entry。当使用TLB0时,ESEL中只有最低位有效,因为TLB0是两路组相连。此时, E500还需要MAS2寄存器的EPN的第45-51位决定组内不同的entry。NV位用于确定如何替换TLB0中的entry。 MAS1寄存器: 32 33 40 47 51 52 55 V IPROT TID TS SIZE MAS2寄存器: 32 51 57 58 59 60 61 62 63 EPN X0 X1 W I M G E MAS3寄存器: 32 51 54 57 58 59 60 61 62 63 RPN U0-U3 UX SX UW SW UR SR MAS4寄存器:用于存放当TLB miss异常发生时,对MAS0-3寄存器自动加载而使用的默认值,也就是说MAS4寄存器的内容是硬件写入的。E500为了提高TLB miss异常的效率,在异常出现时,E500会用MAS4寄存器中的值,自动填写MAS0-2寄存器中的一部分内容: MAS0[TLBSEL] <- MAS4[TLBSELD] MAS1[TID] <- MAS4[TIDSELD] MAS1[TSIZE] <- MAS4[TSIZED] MAS2[X0,X1] <- MAS4[X0D,X1D] MAS2[WIMGE] <- MAS4[WD,ID,MD,GD,ED] MAS6寄存器:用于对TLB进行检索,MAS6寄存器提供SPID0和SAS,也就是PID和AS字段。 PowerPC体系结构学习笔记之内存管理(4)——MMU指令 tlbre指令 用于读取TLB中相应的entry。 输入是MAS0寄存器的TLBSEL和ESEL字段,MAS2寄存器的EPN字段。在读TLB1时, ESEL有效,EPN无效;在读TLB0时,ESEL无效,EPN有效。 输出是将TLB的相应entry放入MAS1,MAS2和MAS3寄存器中。 tlbwe指令 用于设置TLB中的相应entry。 输入是MAS0寄存器的TLBSEL,ESEL字段个MAS1-3寄存器。 无输出。 tlbsx指令 该指令格式为“tlbsx RA, RB”。主要功能是使用RA+RB的地址,配合MAS6寄存器对TLB 进行查找,如果命中,则将结果放入MAS0-3寄存器。 tlbivax指令 该指令格式是“tlbivax RA,RB”。主要作用是使用RA+RB的地址,配合MAS6寄存器对TLB进行查找,如果命中,则无效该entry。如果entry的IPROT位设置了,则不能用tlbivax 无效。注意,MIPS中并没有tlbivax类似的指令。所有TLB的无效操作都通过tlbwi或者tlbwr 指令实现。 tlbsync指令 该指令用于同步对TLB entry的读写。主要用途是将tlbivax指令的更新entry广播到系统总线上,用来同步其他处理器。该指令只在SMP系统中有效。 PowerPC体系结构学习笔记之内存管理(5)——复位时的TLB 当E500上电复位时,只有TLB1中的entry 0有效,其他entry都是无效的。 TLB1的entry 0初始值如下: V 1 表示当前entry有效 TS 0 使用地址空间0 TID[0:7] 0x00 不与PID寄存器比较 RPN 0xFFFFF 有效地址空间0xFFFFF000-0xFFFFFFFF与物理地址空间0xFFFFF000-0xFFFFFFFF映射,大小是4KB EPN 0xFFFFF SIZE[0:3]0001 SX/SR/SW 111 处理器在超级模式下可以对这段地址空间读/写/执行 UX/UR/UW 000 处理器在用户模式下不可以操作这段地址空间 WIMGE 01000 对该地址空间不使用Cache,不执行存储器一致性操作,采用大端模式X0-X1 00 U0-U3 00 IPROT 1 该entry受保护,不会被tlbivax指令无效 E500的复位地址是0xFFFFFFFC,此时系统只能访问从0xFFFFF000开始的4KB地址空间。在这段程序空间里,bootloader要完成对TLB1其他entry的初始化。
/
本文档为【PowerPC体系结构学习笔记之内存管理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索