logo资料库

PowerPC 的 MMU 和 TLB 机制.pdf

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
PowerPC 的 MMU 和 TLB 机制 1.1 基本原理 1.1.1 基本概念 在涉及虚拟存储系统时,需要搞明白以下这些地址的概念及相互之间的关系。 逻辑地址:代码中使用,如数据载入和绝对指令跳转等使用的地址 ,如 LR 寄 存器中的地址等,本文中有效( EA )地址也就是逻辑地址; 虚拟地址:虚拟地址在页转换中使用,为中间地址,逻辑地址转成虚拟地址后再 转成物理地址,虚拟地址的位数取决于处理器类型及型号,如 PPC440 中的虚拟 地址为 41 位; TLB: Translation Lookaside Buffers,转换快表,简称快表,保存最近使用的 页转换地址映射表,一般由硬件实现。 TLB 是内存里存放的页表的缓存,那么 它里边存放的数据实际上和内存页表区的数据是一致的,在内存的页表区里,每 一条记录虚拟页面和物理页框对应关系的记录称之为一个页表条目( Entry), 同样地在 TLB 里边也缓存了部分甚至全部的页表条目( Entry)。 物理地址:地址总线上使用的实际地址,传给 SDRAM 使用的地址。 1.1.2 内存管理 内存管理主要是管理计算机主存,简单的来说,就是为程序提供内存分配和释放 的功能。内存管理分为三个层次:硬件、操作系统和应用程序 。对大多数人而 言,都只会关注应用程序的内存管理。 硬件内存管理:硬件的内存管理主要是需要关注 CPU 层,提供了什么样的硬件 机制来实现内存管理,如是否提供分页机制、分段机制以及 Cache/MMU 等。 操作系统内存管理:操作系统应该提供一个虚拟内存机制,为应用程序提供内存 分配回收等,实现交换等。
应用程序内存管理:每个应用可能对当前可用内存未知,因此需要像系统提出内 存分配申请,一般如在 C 语言中使用 malloc 等申请堆空间。 重定位( Relocation):代码的加载域和链接域不一致的情况下,加载程序需 要对代码进行重新定位,以便能够正确解析符号。 1.1.3 MMU 简介 MMU 的基本功能包括: 1)将有效地址 (effective address)转换成实际物理地址( real address), 这也是 MMU 的最基本功能,地址转换分为 2 种类型,分别为指令地址转换和数 据地址转换; 2)权限保护功能,如提供读写保护等,在 PPC 中还针对超级模式和普通用户模 式做了不同的权限区分; 3)访问更大的虚拟空间,有效地址空间可以比实际物理内存大,这样可以实现 虚拟交换技术,便于运行大型的程序。基本原理就是不将程序的所有数据 /指令 载入内存,只载入马上需要使用的,而暂时不用的可以交换到二级存储器。 现代 MMU 通常都将虚拟地址空间划分成页,页大小为 2 的 n 次方,一般为几 k 字节。 虚拟地址中的低 n 位为页内地址,在地址转换中保持不变,而高位称作 虚拟页号( Virtual Page Number), MMU 最基本的功能就是将虚拟页号转换 成物理页号。 MMU 首先在 TLB 缓存中查找待访问的指令或者数据地址,如果 TLB 没有命中,将进入页表异常处理。 1.1.4 地址转换模式 有 3 种地址转换模式: 1)段页式地址转换 ;
2)块地址转换( BAT),通常用于将逻辑地址映射到一块很大的连续的物理地 址 上,这样可以减少页表数量,提高转换效率。块地址只适用于部分 PPC 处理 器,如 MPC8247/8260 等, PPC440 没有块地址转换功能; 3)实地址转换,也即平板映射模式,禁止地址转换( MSR[IR] =0, MSR[DR]=0), 逻辑地址与物理地址相等 ,直接将逻辑地址送往地址总线,如果物理内存较小, 高位的逻辑地址可能被忽略。 大多数嵌入式处理器不支持 MMU,或者硬件支持 MMU,但操作系统不支持虚拟内存管理时,都只能采用平板映射。 1.2 PPC440 MMU 概述 PPC440× 6 支持 4G 的有效地址空间( EA ),及 64G(36bit) 的 RA 实地址 空间 ,其 MMU 实现如下功能: EA 地址到 RA 地址的转换; 可用软件来控制页表替换策略; 页表级的指令和数据访问权限控制; 页表级的存储属性控制。 MMU 首先将有效地址 EA 扩展为虚拟地址 VA,然后利用页表转换功能将其转换成 RA 物理地址,以此进行指令和数据的读取。 PPC440 只支持页式内存管理,共支持 9 种页大小,分别为 1K/4K/16k 。。。 1G 。 而通常大多数处理器的页表大小为 4K,也有支持二级页表 4k 和 1m 的。当访问 的地址无法通过 TLB 进行映射时,将触发 DATA 或者 Instruction TLB Exception。 1.3 TLB PPC440 的 TLB 为 64 路全相连的硬件结构 ,其控制地址转换、存取保护及存 储属性等。 TLB 的维护由软件通过专门指令控制,相关指令如下:
Tlbwe,写 TLB 表,通过连续三条指令可以从 GPR 和 MMUCR[STID]中获取一条 TLB 表项写入到硬件中; Tlbre,三条连续指令可读取一条表项; Tlb[.]:可以搜索特定的 TLB 表项。 TLB 表项由以下四个部分组成: 页识别域; 地址转换域; 访问权限控制域; 存储属性控制域。 一个表项又三个字组成: WORD1: 0-21 位, EPN,有效页编号,大小可变,取决于当前页所采用的页大小 22 位: V,有效标识,只有当当前页表为有效时,才进行页表匹配查询。一上 电时所用页表无效 23 位, TS,转换的地址空间,是用户模式或者超级权限模式的数据、指令 24-27, SIZE,页大小,共支持 16 种大小,此处为当前页大小所代表的编号 32-39, TID,转换 ID,为 0 时为全局共享页表,否则为进程的 ID 号,此时为 私有页表,可加强安全控制。一般实现时,都为 0,全局共享 WORD2: 0-21 位, RPN,实际的物理页编号 28-31 位, ERPN,扩展到实际页编号,和页编号及页内偏移等一起构成 36 位实 际物理地址,以支持 64GB 空间。在嵌入式平台上,一般未用,为 0
WORD3: 包括是否缓存, cache 是 copyback 还是 write through,是否要求内存一致性, 大小端,用户模式和 supervisor 模式的读写执行权限等 1.4 页表识别 1.4.1 概述 一个页表是否识别成功取决于以下因素: Valid (V); Effective Page Number (EPN); Translation Space Identifier (TS);
Page Size (SIZE); Translation ID (TID) 所有项匹配成功后才能进行地址转换和存取控制处理。当无法找到匹配的 TLB 时将产生 ITLB 或者 DTLB MISS EXCEPTION。 1.4.2 虚拟地址的构造 页表识别的第一步就是根据 EA 有效地址产生 VA 虚拟地址。 虚拟地址为 41 位,构成如下: 0 位, TS,地址空间域 1-8 位, TID 域,进程标识符,由 PID 寄存器提供,一般多数操作系统都未实 现,即默认为 0 9-40 位,即原来的 EA 地址。 然后由此虚拟地址进行 TLB 匹配。 1.4.3 地址空间 TS 将地址空间分成了两种: 一种和中断处理及系统级的代码和数据关联
另一种是应用程序的代码和数据 用户模式的程序运行时,一般 MSR[IS,DS]为 1,只允许访问应用程序的代码及 数据地址空间。当进入中断时, MSR[IS,DS]自带清 0,因此可以利用系统级的 TLB(TS=0)来访问中断处理相关的代码。 1.4.4 TLB 匹配过程 根据虚拟地址的 TS、 TID、 EPN 等域进行相关 TLB 表项的匹配,匹配过程如下: V 域为 1,当前 TLB 项有效; MSR[IS,DS]和 TLB 表项的 TS 域一致; TID 一致或者 TLB 表达 TID 为 0,全局共享; 由表项的 SIZE 域根据公式 n = 32–log2 (page size in bytes)计算虚拟地址 中 EPN 的值,然后和 TLB 的 EPN 域进行匹配且匹配成功。
注意: PPC 通常为大端模式, 0 表示最高位 1.5 地址转换 TLB 匹配成功后,将提取 TLB 表的 RPN 和 ERPN 域,构成 RA 物理实际地址的页 编号部分,而页内偏移由 EA 的低地址部分提供,相关构成如下: RA = ERPN0:3 || RPN0:n–1 || EAn:31
分享到:
收藏