PowerPC的MMU机制(二)

 

4        页地址转换

4.1        页地址转换概述

页地址转换是3类地址转换中,最为复杂的一种转换类型,也称段模式(Memory Segment Model)。内存地址划分成大小为256M的段,将有效地址中4Kbyte大小的页映射到物理内存中的4K范围之内,地址转换的基本单位就是4K大小的页,52位的虚拟地址空间为地址转换提供了很大的灵活性。特别注意的是BAT转换优先于页地址转换,因此如果BAT命中,则不进行页地址转换。

段描述符提供了虚拟地址、保护信息和页表入口PTE:Page Table Entry,PTE提供了物理地址和页保护信息。段描述符由操作系统写入,提供段的虚拟ID,同时OS也在内存中创建页表,提供虚拟地址到物理地址的映射。

4.2        页地址转换过程

页地址转换包含两个过程,虚拟地址为52位;

1、逻辑地址转成虚拟地址;

2、虚拟地址转成物理地址;

有效地址可以分成3部分           

 ______________________________________

| SR |    Page Index    |  Byte offset |

|______________________________________|

0   3 4               19 20           31

> SR: Segment descriptor,为段寄存器号,选择段描述符,从中生成虚拟段ID(VSID:Virtual Segment ID)

> Page Index:对应段中的页号,与VSID联合组成虚拟页号(VPN:Virtual Pnage Number),使用VPN来搜索PTE,而PTE真正提供了物理页地址(RPN)

> 20-31位,页内偏移地址,不参与地址转换,与RPN构成物理地址。

 

 

4.3        编程模型

4.3.1        段描述寄存器

段描述符提供了虚拟地址和保护信息,段描述格式如下:

 

KsSupervisor-state protection key

KpUser-state protection key

N: No-execute protection bit

VSID: Virtual Segment ID

1632位段寄存器一起实现段描述符,VSID(Virtual ID for Segment)有操作系统提供,有效地址的高4位来命中16个段寄存器中的一个,从而生成相应的VSID24位的VSID,加上16位的页索引,和12位页内地址,构成了52位虚拟地址。然后由高40位的虚拟页号来搜索PTEPTE提供了物理页号。

VSID决定了使用哪一个虚拟地址空间,通常和任务ID一一对应,这样每个任务都对应各自的虚拟地址空间。在任务切换时,操作系统必须对段寄存器进行编程,实现虚拟地址空间的切换。操作系统根据任务所需要的段数量,对虚拟地址空间进行划分,每个段256M大小,一个虚拟地址空间可以划分成16个段。

4.3.2        PTE

PTE(Page Table Entries)提供了物理地址和页保护信息,PTE格式如下:

 

32位简称PTEU,低32位简称PTEL

V:有效标志位

VSID:虚拟段ID,与段寄存器中的VSID对应;

HHash函数标志

API

R&C:历史信息,分别表示该页是否被引用,被修改;

WIMG:Cache控制模型

PP:其他保护信息

RPN:Real Page Number

PTE由操作系统使用Hash算法生成,存在内存的页表中。 每个PTE64位,实现VSIDRPN的映射。

4.3.2.1 历史记录R&C

Reference bitR)表明该页的引用情况,如果该页被引用,如该页被读或者写,都将设置该位,设定R位后,同时页将更新TLB。但CPU不会主动清除该位。操作系统R位来获取该页的状态,当程序不需要引用该页时,由操作系统清除该位。

Change bitC)位在PTETLB中都有,当页中的数据有改变时,如进行了存储操作等,C位将被设定。TLBPTE中的C位需要保持一致,否则可能产生异常。

哪些具体的指令将可能设置该位可以参考具体的CPU,因为可能与PowerPC架构不一致。

4.3.3        TLB

4.3.4        其他寄存器——针对Freescale603e

4.3.5        页转换指令

针对段寄存器的指令

mtsrMove to Segment Register,包括非直接指令mtsrin

mfsrMove from Segment Register,包括非直接指令mfsrin

针对TLB的指令

tlbie rBTLB Invalidate EntryrB对应的有效地址转换无效

tlbsyncTLB同步

tlbli:载入指令TLB项,将ICMPRPA寄存器中载入到ITLB

tlbld:载入数据TLB项,将DCMPRPA寄存器中载入到DTLB

4.3.6        异常处理

异常处理与内核实现机制不同,产生的MMU异常也有所不同,如果搜索算法通过硬件实现,就不会生成TLB异常,而通过软件实现搜索算法的则不会产生缺页异常。在FreeScaleG2内核中就是使用软件实现PTE搜索的。

缺页异常(Page fault):BAT不匹配,而且也找不到对应的PTE和有效地址匹配时,将产生缺页异常。

访问冲突:地址转换成功,但是访问与保护机制产生冲突导致该异常。

TLB异常:当在TLB 缓存没有命中,而且需要依靠软件来实现搜索操作时将产生该异常。

页更新:当页的C标志有效时,需要更新将产生该异常。

异常处理机制保存有对应异常的状态信息,实现异常处理。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值