PowerPC的MMU机制(一)

1     基本原理

1.1        基本概念:

逻辑地址:代码中使用,如数据载入和指令跳转等使用的地址,如LR寄存器中的地址等,本文中有效地址也就是逻辑地址;

虚拟地址:虚拟地址在页转换中使用,为中间地址,逻辑地址转成虚拟地址后再转成物理地址,PPC中的虚拟地址为52位;

TLB:Translation Lookaside Buffers,转换快表,简称快表,保存最近使用的页转换地址映射,一般由硬件实现。

物理地址:地址总线上使用的实际地址,传给SDRAM使用的地址。

1.2        内存管理

内存管理主要是管理计算机主存,简单的来说,就是为程序提供内存分配和释放的功能。内存管理分为三个层次:硬件、操作系统和应用程序。对大多数人而言,都只会关注应用程序的内存管理。

硬件内存管理:硬件的内存管理主要是需要关注CPU层,提供了什么样的硬件机制来实现内存管理,如是否提供分页机制、分段机制以及Cache等。

操作系统内存管理:操作系统应该提供一个虚拟内存机制,为应用程序提供内存分配回收等,实现交换等。

应用程序内存管理:每个应用可能对当前可用内存未知,因此需要像系统提出内存分配申请,一般如在C语言中使用malloc等申请堆空间。

重定位(Relocation

1.3        MMU简介

关于MMUMemory Management Unit)的基本原理,不做详细细述。MMU的基本功能包括:

1、将有效地址(effective address)转换成实际物理地址(real address),这也是MMU的最基本功能,地址转换分为2种类型,分别为指令地址转换和数据地址转换;

2、权限保护功能,如提供读写保护等,在PPC中还针对超级模式和普通用户模式做了不同的权限区分;

3、虚拟空间,有效地址空间可以比实际物理内存大,这样可以实现虚拟交换技术,这样运行大型的程序。基本原理就是不将程序的所有数据/指令载入内存,只载入马上需要使用的,而暂时不用的可以交换到二级存储器。

现代MMU通常都将虚拟地址空间划分成页,页大小为2n次方,一般为几k字节。虚拟地址中的低n位为页内地址,在地址转换中保持不变,而高位称作虚拟页号(Virtual Page Number),MMU最基本的功能就是将虚拟页号转换成物理页号。MMU首先在TLB缓存中查找,如果cache没有命中,将进入页表转换过程。

2        PowerPCMMU概述

2.1        地址转换模式

PPC中,提供3中地址转换模式:

1)页地址转换

2)块地址转换(BAT),将逻辑地址映射到一连续的物理地址

3)实地址转换,禁止地址转换(MSR[IR] =0,MSR[DR]=0),逻辑地址与物理地址相等 ,直接将逻辑地址送往地址总线,如果物理内存较小,高位的逻辑地址可能被忽略。

 

2.2        MMU异常

地址转换失败时将产生异常,原因有:

1)页表中没有与有效地址对应的有效PTE,并且BAT转换无效;

2)没有有效的段寄存器和有效的BAT转换;

3)地址转换成功,但访问权限存在冲突。

转换异常将导致ISI或者DSI异常。

2.3        MMU指令和寄存器

寄存器包括了BAT寄存器、段寄存器、SDR1

指令包括存取BAT寄存器/段寄存器,以及对TLB的操作

3        块地址转换(BAT

3.1        概述

BAT机制可以将一连续的大于一页地址的逻辑地址映射到物理内存中。如果有效地址与相应的BAT寄存器匹配,将使用BAT寄存器中的信息来转换有效地址为物理地址。通过16个(8对)特殊寄存器来实现BAT,BAT特性如下:

1BAT定义了8对内存映射寄存器,数据(DBAT)和指令(IBAT)4对;

2、地址与数据映射区域可能重合;

3、如果有效地址与BAT寄存器匹配,则产生相应物理地址,如果不匹配则使用页转换方式;

4、块大小最大为128K2^17),最大为256M(2^28)

BAT提供了一种简单有效的映射机制,映射关系比较简单,而且只有8对映射关系,转换效率上比页转换快,但功能不如页转换强大,最大的缺点就是不能提供虚拟映射机制。因此如果BAT和页转换相互结合能组成一更为强大高效的转换机制。

3.2        BAT地址匹配与物理地址生成

有效地址将与BAT寄存器组中的寄存器匹配,查看该有效地址是否在某个Block范围内,如果命中,再查看权限是否符合,否则都导致BAT不能命中,块地址转换失效。

物理地址的生成也比较简单,如果块命中,直接使用BAT寄存器中的块起始物理地址,加上块内地址,就能生成物理地址。

3.3        编程模型--寄存器描述

BAT组包含16个寄存器,8个(4对)提供指令访问,另外8个提供数据访问。一对寄存器中,分别称上行(upper)寄存器和下行(lower)寄存器。每对BAT寄存器定义了有效地址空间中,块地址的起始地址,以及块大小。如果有效地址在块地址范围中,块对应的物理起始地址加上低位的有效地址共同构成真正的物理地址。如果一个有效地址被多个BAT寄存器组命中,结果将不可预测。以下为upperlower寄存器定义:

Upper BAT Reg

 _____________________________________________________

|      BEPI           |0 000|        BL         |Vs|Vp|

|_____________________|_____|___________________|__|__|

0                   14 15 18 19               29 30 31

BEPI:有效地址索引,与有效地址高位进行比较,决定有效地址是否在该块范围之内;

BL:块长,由块长屏蔽有效地址的高位数,11位,屏蔽的是BEPI414位;

Vs:超级用户模式,与MSR[PR]一起决定是否命中该块,如果MSR[PR] = 0处于超级用户模式,则匹配该位,如果该位为1,则有权访问;

Vp:普通用户模式,与MSR[PR]一起决定是否命中该块,同Vs位。有个奇特的现象,导致有的块可能普通用户能访问而超级用户不能访问;

 

Lower BAT Reg

 _____________________________________________________

|      BRPN           |0 0000 0000 0|    WIMG   |0 | PP |

|_____________________|_____________|___________|__|____|

0                   14 15         24 25       28 29 30 31

BRPN:BL一起生产物理地址高位;

WIMG:Memory/Cache访问模式;

W——0Write-through1Write-back

I—— 0:Cache enabled 1Cache-inhibited

M——0Local access1Global accessMemory conherence

G——0Unguarded1Guard

 

PP:保护位,00-不能访问,x1-只读,10-读写,如果权限不符将产生异常。

由上可见,upperlower寄存器共同定义了一个BAT映射,提供了逻辑地址和物理地址的映射关系,同时定义了该块的访问权限和Cache机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值