最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

E500 MMU架构研究及VxWorks下的优化方案

IT圈 admin 29浏览 0评论

2024年4月27日发(作者:綦恨真)

Computer Engineering andApplications计算机工程与应用 

◎研发、设计、测试◎ 

E500 MMU架构研究及VxWorks下的优化方案 

李 丹 

LI Dall 

广东轻工职业技术学院计算机系,广州5 1 0300 

Department of Computer,Guangdong Industry Technical College,Guangzhou 5 1 0300,China 

LI Dan.Research of ES00 MMU and optimization Oil VxWorks OS.Computer Engineering and Applications, 

2012,48(30):56—61. 

Abstract:MMU/TLB(Memory Management Unit/Translation Lookaside Buffer)iS an important factor to impact 

operating system’S performance.For the default configuration of E500 Core’S TLB under VxWl0rks OS.there iS a 

problem of lOW eficiency,and fmore TLB missing.In view of the characteristics of E500 Core TLB and memory 1ay. 

out of VxWOrks system.one method to optimize the TLB configuration iS raised.The examination result shows that 

fhis optimization method has better performance. 

Key words:E500 core;11ranslation Lookaside Buff.er(TLB):VxwOrks 

摘要:MMU/TLB(存储器管理单元/转换旁置缓冲区)是影响嵌入式操作系统实时性能的关键因素之一。 

VxWorks嵌入式操作系统为E500处理器内核的TLB默认配置有效率低、易发生缺页中断的问题。针对E500 

处理器内核TLB的架构特点和VxWorks系统运行时的内存布局,提出了VxWorks系统下优化E500 TLB配置 

的方法;实验表明,该优化方法降低了CPU利用率,提高了系统的性能。 

关键词:E500处理器内核;转换旁置缓冲区;VxWorks 

文章编号:1002.8331(2012)30.0056.06 文献标识码:A 中图分类号:TP393 

1 引言 

随着当前数字信息技术和网络技术的高速发 

展,计算机和计算机技术大量应用在人们的日常生 

件上提供了内存访问授权控制。由于MMU与处理 

器体系结构高度相关,因此在不同的处理器下内存 

管理机制区别很大u 。 

转换旁置缓冲区TLB(Translation Lookaside Buf- 

fer)是内存管理单元的核心部件。它是一个用于页 

表匹配的高速缓存,从逻辑地址到物理地址的转换 

主要是比对TLB页表来完成,它的存取时间与Cache 

的存取时间相仿,远远小于主存的存取时间。本文 

分析了飞思卡尔(FreeScale)公司的E500处理器内 

核(E500 Core)的架构特点,提出了在VxWorks嵌入 

式操作系统下优化TLB配置的方案。在采用E500的 

活中,嵌入式计算机也得到了广泛的应用。对于嵌 

入式操作系统,一般要求具有实时性、可裁减性、轻 

量型网络支持和功能可扩展。在大多数场合,对实 

时性的要求是首要的。 

内存管理单元MMU(Memory Management Unit) 

是影响系统实时性能的关键因素之一。它是处理器 

支持操作系统高效运行的基础,与软件内存管理模 

块相结合完成了虚拟地址到物理地址的转换。MMU 

还能够对处理器发出的地址进行合法性检验,在硬 PowerPC 85XX CPU平台上做了模拟实验,比较了 

基金项日:国家自然科学基金(No.61133014);广东省自然科学基金(No.¥2011010002708)。 

作者简介:李丹,女,讲师,研究领域:计算机网络、计算机体系结构。 

收稿日期:2011-12.05 修回日期:2012—03—26 CNKI出版日期:2012.04.18 

DOI:10.3778 ̄.issn.1002—8331.2012.30.014 http://www.cnki.net/kcms/detail/11.2127.TP.20120418 1024.018.html 

李丹:E500 MMU架构研究及VxWorks下的优化方案 

优化前后的cPuN用率情况。 

2 E500 Core的MMU/TLB结构及工作方式 

2.1 E500 Core的MMU/TLB结构 

MMU是存储器管理单元的缩写,是用来管理虚 

拟内存系统的器件。MMU通常是CPU的一部分,本 

身有少量存储空问存放从虚拟地址到物理地址的匹 

配表,此表称做TLB。MMU的两个主要功能是: 

(1)将访问主存和访问I/O的逻辑地址转化为物 

理地址。 

(2)内存保护。根据需要对特定的内存区块的 

访问进行保护,通过这一功能,可以将特定的内存块 

设置成只读、只写或是可同时读写。 

虚拟 物理 物理 

数据或指令 

图1 MMU在体系结构中的位置 

地址映射机制必须使一个程序能断言某个地址 

在其自己的进程空间或地址空间内,并且能够高效 

地将其转换为真实的物理地址以访问内存。一个方 

法是使用一个含有整个空间内所有页的入口(entry) 

的表(即页表),每个入口包含这个页的正确物理地 

址。这很明显是个相当大的数据结构,因而不得不 

存放于主存之中。 

由于CPU首先接到的是由程序传来的虚拟内存 

地址,所以CPU必须先到物理内存中取页表,然后对 

应程序传来的虚拟页面号,在表里找到对应的物理 

页面号,最后才能访问实际的物理内存地址,也就是 

说整个过程中CPU必须访问两次物理内存(实际上 

访问的次数更多)。因此,为了减少CPU访问物理内 

存的次数,引入TLB。 

TLB和CPU里的一级、二级缓存之间不存在本 

质的区别,只不过前者缓存页表数据,而后两个缓存 

实际数据。它们和内存区域的对应关系如图2所示。 

MMU/TLB 内存页表 

Ll

cA

CHE 

H  ICAIC』2HE I l・ 内存数据区 

CPU 内存 

图2 MMU/TLB 内存区域的对应关系图 

E500处理器内核实现了FreeScale BOOK E规 

范,是一个32位的处理器,支持4 GB的有效地址空 

间。在内部使用41位的临时虚拟地址和动态的页表 

来产生32位的物理地址。 

如图3所示,E500 MMU实现有两级TLB,即: 

L1 TLB和L2 TLB。L1 TLB可以理解为L2 TLB的 

部分缓存。访问L1 TLB的效率要比L2的效率高, 

相应的实现花费也就高。L1 TLB完全由硬件维护, 

不可编程精确控制。 

注32位有效地址 

:n=32一lb(page size) 

图3有效地址到物理地址的转换 

程序中所用的地址称为逻辑地址或者有效地 

址,当一次访问内存时,由有效地址到物理地址的映 

射过程如下: 

(1)E500处理器内核在做地址映射时会产生一 

个41位的内部虚拟地址,它由1位AS、8位PID和32 

位的有效地址(EA)所组成。其中:AS位可以从寄存 

器MSR AS/DS位得到,它表示地址空问域:数值0是 

和中断处理及系统级的代码和数据关联;数值1是应 

用程序的代码和数据;PID分别从寄存器PID0~PID2 

得到,表示进程标识符,EA有效tight就是程序的逻辑 

地址。 

(2)在L1 TLB中根据当前虚拟地址,查找物理 

地址的实页号(RPN)。如果命中,则获得对应的 

RPN。并结束虚实地址转换。如果未命中,则继续在 

L2 TLB中查找。 

(3)在L2 TLB中根据当前虚拟地址,查找物理 

地址的实页号。如果命中,则获得对应的RPN并更 

新L1 TLB,然后结束虚实地址转换。如果未命中, 

则产生TLB MISS异常,并在PTE表中继续查找。 

(4)在PTE表中查找,若找到,则获得相应的RPN 

并更新L2 TLB。否则进行更复杂的对虚拟地址分 

析操作。 

本文针对L2 TLB提出优化方案,因为L2 TLB 

完全可以有软件精确控制。 

Computer Engineering andApplications计算机工程与应用 

2.2 E500 Core的L2 TLB的工作方式 

E500处理器内核没有对虚拟地址空间进行划 

分,即没有固定使用某段虚拟地址固定映射到某段 

物理地址,而是引入了一个更灵活的设计:将L2 TLB 

分为TLB0和TLB1t 。 

TLB0即用于页映射的TLB,可动态被替换,页 

大小固定为4 KB。E500vl实现为2路组相联,256 

项;E500v2实现为4路组相联,5l2项。 

TLB1则设计用于映射大页(比如16 MB, 

256 MB…),支持可变页大小,E500vl可支持9种页 

区(system memo ̄partition)。操作系统和通常的 

大部分用户应用程序对内存的操作,都发生在系统 

内存池中。 

VxWorks映像在RAM中运行后,其内存布局如 

图5所示。系统运行中堆和栈所分配的系统内存位于 

FREE

RAMADRS+WDB

POOL

——

SIZE和sysMem— 

Top()之间 ]。 

………sysPhyMemTop() 

Reserved Memory(Optiona1) 

”sysMemTop() 

大小(最大256 MB),E500v2则支持11种页大小(最 

大4 GB)。使用时可将某项设为永驻TLB1(通过置 

Invalidation Protection位,简写为IPROT位),不会被 

动态替换,实现为全相联,共16项,可将其理解为用 

于映射16个段的可编程固定映射机制。 

如图4 E500vl的L2 TLB搜索过程所示,搜寻 

TLB0和TLB1几乎是并行的,没有先后顺序,如果其 

命中即停止搜索。 

图4 L2 TLB搜索过程 

3 VxWorks映像的内存分布 

VxWorks中主要涉及到的内存单元的概念有内 

存分区(memo ̄partition)、内存池(memo ̄poo1)、 

内存块(memo ̄block)。内存池是一块连续的区 

域,包括一个或多个内存块,这些内存块通过mem. 

PartAlloc、memPartFree来申请和释放。内存分区在 

刚创建完毕时,只有一个内存池,用户可以往该分区 

添加别的内存池。在一个内存分区中,内存池不一 

定是连续的。Vxworks在启动过程中会创建一个包 

含系统内存池(system memo ̄poo1)的系统内存分 

System Memory Partition 

WDB Memory Pool 

’’……” ̄

FREE

RAMADRs 

——

VxWorks Kemel Image 

(Text,Data and BSS) 

…………‘

ARM

LOWADRS 

Reserved&Initial Stack 

’’………  ̄

LOCAL

MEMLOCALADRS 

图5 VxWorks的内存分布 

LOCAL MEM LOCAL ADRS:所使用RAM的 

起始地址,常常分配成0; 

ARM LOW ADRS:当VxWorks映像从ROM拷 

贝到RAM时在RAM中所处的起始位置; 

FREE RAM ADRS:由编译器根据代码编译后 

情况决定,其值为VxWorks映像的结束地址(end)。 

如果定义了INCLUDE WDB,调试处理任务会进 

行模块的动态加载,占用内存的大小为WDB POOL 

SIZE。 

系统内存分区就从WDB POOL SIZE之后到 

sysMemTop()。如果没定义INCLUDE WDB,则从 

FREE RAM ADRS到sysMemTop()都是系统内存 

分区 】。 

操作系统是怎么知道这个区域的,原来在内核初 

始化函数kernellnit()中会传递系统初始化的参数。 

如kemellnit((FUNCPTR)usrRoot,ROOT

STACK

—_ 

SIZE,MEM

POOL

START,memPoolEndAdrs,ISR

STACK

SIZE,INT

LOCK

___

LEVEL); 

函数原型为: 

void kemellnit( 

FUNCPTR rootRm,/十用户启动的根任务 / 

unsigned rootMemSize,/ 根任务的堆栈大小 / 

char*pMemPoolStart, 系统内存分区起始地址 / 

char*pMemPoolEnd, 系统内存分区结束地址 , 

unsigned intStackSize, 中断栈大小 / 

int lockOutLevel 中断屏蔽级 /) 

f} 

李丹:E500 MMU架构研究及VxWo ̄s下的优化方案 

所以系统内存分区的起始和结束地址在这里已 

经确定。 

经常性TLB缺页(TLB Miss)的发生和页的更新置 

换,从而进一步影响系统性能。 

对实时性要求很高的嵌入式操作系统来说,如 

4 VxWorks对E500 Core MMU的支持及优 

化方法 

4.1 VxWorks对E500 Core MMU的支持 

E500处理器内核实现了Book E处理器规范, 

果经常发生TLB MISS或者TLB查询时问过长,将 

是不可接受的。 

从图4可以看出,当一个CPU产生一个虚拟地址 

时,它会同步与TLB0和TLB1中的条目逐项进行比 

较,任何一个命中即停止搜索。 

为了减少查询时间和更进一步降低TLB缺页发 

MMU总是处于活动状态,任何内存地址访问内存必 

须经过TLB0(动态,固定4 KB页大d,TLB)或者TLB1 

(静态,可变页大小TLB)翻译得到物理地址。 

VxWorks嵌入式操作系统很好地支持了E500处 

理器内核的MMU,其中BSP(Board Support Pack. 

age)中的数组sysstaticT1bDesc[](定义在sysLib.c)用 

于配置TLB1的地址映射,这个数组中的每一项可以 

指定地址空问(Ts位)为0或者1;BSP中的数组sys. 

PhyMemDesc[1(也定义在sysLib.C),数组用于配置 

TLB0的地址映射,地址空间(Ts位)默认为1,不可 

指定 1。 

sysstaticTlbDesc口数组最多只能配置l6个En— 

t ,每个entry映射的地址范围是可变的,从1 kB~ 

256 MB不等。在sysstaticT1bDesc口中首先要保证为 

VxWorks启动和基本操作所需的各地址区域具有地 

址空间0的配置。 

sysPhyMemDesc[]数组中的每个元素描述了物 

理内存中一个连续的块,其中包括物理地址、物理地 

址映射的虚拟地址(一般情况下与物理地址相同)、 

该块内存初始化状态信息、掩码信息。其可包含的 

映射空间有内存、Flash、ROM、I/O设备等,可以根据 

系统的需求自行进行配置。在VxWorks的默认配置 

中,地址空间1下全部系统内存(RAM)都配置在sys— 

PhyMemDesc[]数组中。 

4.2 VxWorks下E500 Core MMU的优化方法 

VxWo ̄s在默认情况下为地址空间1运行所需 

的系统内存(System RAM)空间全部配置在sysPhys— 

MemDesc[]数组中,即由TLB0来管理的。这样会有 

下列两个缺点: 

(1)会使TLB0过大,查询TLB0的时间会比较 

长,每次访问内存的时间就被相应延长,从而影响系 

统的实时性能。 

(2)由于TLB0项数的限制(256,E500V1;512, 

E500V2,在系统内存(RAM)超过1 GB(1 GB/4 KB= 

256)或者2 GB(2 GB/4 I①=5l2)的情况下,不可能每 

页都在TLB0中长期驻留,况且TLB0中还要配置 

ROM,外设,寄存器等的地址空间,这样必然会导致 

生的几率,在TLBl有剩余可用项的情况下,把一部 

分系统内存配置在sysstaticTlbDesc口数组中,即由 

TLB1中来管理和映射。这样既可以减少TLB0的项 

数从而降低整个TLB的查询时问,又可以减少TLB的 

缺页几率。但是并非所有的系统内存都可以在TLB1 

中配置,这是因为Vxworks操作系统通常对内核代 

码,应用程序代码、栈数据和关键数据设置内存保护 

属性(例如:MMU ATTR PROT SUP READ,MMU 

ATTR PROT SUP wRIT E[6]等),这样可以对它们提 

供有效的保护。但是这些属性TLB1不支持,因此内 

核代码、应用程序代码、栈数据和关键数据所占有 

的内存必须由TLB0管理,即必须配置在sysPhys. 

MemDesc[]数组中。 

如第3章所述,系统内存分区(system memory 

partition)是专门为堆和栈空间分配所用,它的起始地 

址在系统初始化的时候指定。本文的优化思想就是 

把堆内存和栈内存分开,不让它们共享一个系统内 

存分区。为栈内存创建一个专门内存分区,如图6所 

示。由于栈内存通常需要设置成可保护的,所以它 

的内存映射仍然配置在TLB0中。而堆内存通常不 

需要设成可保护的,它仍然使用系统内存分区,不过 

系统内存分区的大部分地址从TLB0转移到TLB1 

来管理配置。 

栈专用内存分区 

原“系统内存分区”结束地址 

(TLB0) 

新“系统内存分区”结束地址 

(NEW

SYS

MEM

POOLEND

——

ADDR) 

由TLB0到TLB1转移内存的结束地址 

(MOVE TO TLB1 END ADDR) 

新系统内存分区 

b() 

(二) 

由TLB0到TLB1转移内存的开始地址 

(MOVE

TO__TLB1一START_ADD) 

系统内存分区开始地址 

图6优化TLB示意图 

具体的优化方法如下: 

(1)测算出目前系统内存分 ̄_(system memory 

Computer Engineering andApplications计算机工程与应用 

partition)的起始地址;即内核初始化函数kemelInit() 

中会传递系统初始化的参数pMemPoolStart和pMem— 

PoolEnd的值。 

(2)计算出系统目前所有任务(task)的栈的大 

小,预留出足够大的内存空间为栈所用。假设当前 

所有任务的栈总大小是1 1 MB;因此可以选取16 MB 

为栈内存分区的空间大小。 

(3)从默认的系统内存分区顶部预留出足够大 

图9栈内存分配函数的修改 

5 VxWorks TLB优化方法模拟实验与分析 

为了便于技术验证,本文选用了一个CPU为 

PPC8560(E500 Core),内存大小为1 GB,并配置有 

以太网接口的嵌入式硬件平台,加载Vxworks6-3操 

空间为栈所用,并创建一个新的分区——栈内存分 

区。栈内存分区的开始地址即是新的系统内存分区结 

束的地址。这块内存仍然配置在sysPhyrsMemDesc[1 

数组中,即仍然由TLB0做映射管理。 

图7栈专用分区的创建 

(4)根据数组sysstaticTlbDesc[]现有项的多少 

(因为它的最大项数不能超过16)和E500 Core所支 

持的页的大小(注:内存地址要页对齐),确定要转移 

内存的起始地址。定义图8所示变量。 

(5)把从MOvE TO TLB1 STAERT ADDR开 

始到MOVE TO TLB1 END ADDR结束的内存块 

从sysPhysMemDesc[]表中删掉,然后把这段内存添 

加到sysstaticTlbDesc口表中;即把这段内存由TLB0 

转移到TLB1做映射管理。 

(6)修改内核初始化函数kemelInit(),指定新的 

系统内存分区的结束地址即是栈内存分区的开始地 

址:(NEw SYS MEM POOL END ADDR);这是因 

为新的系统内存分区排除了为栈内存所预留的空 

间。例女ⅡkernelInit((FuNcPTR)usrRoot,ROOT 

STACK

SIZE,MEM

POOLSTART,NEW

SYS

——— 

MEMPOOL

END

ADDR,ISR STACKSIZE,1NT

__

LOCK

LEVEL)。 

(7)修改栈内存分配函数,让它固定从新创建栈 

分区中为每个任务分配栈空间,而不是从默认的系 

统内存分区中分配。 

作系统做了模拟实验。 

具体实验步骤如下: 

(1)加载并配置好Vxworks 6-3系统的网络模 

块,使以太网接口处于工作状态,FTP和ICMP协议 

运行正常。 

(2)搭建好局域网环境。 

(3)在应用本文TLB优化方法前,即在VxWorks 

系统MMU TLB的默认配置下,通过局域网中其他 

主机分别用FTP和ping工具向嵌入式主机系统发起 

邱和ICMP连接(ftp和ping的会话数大致按1:10分 

配);然后逐步增加连接数,从而增加嵌入式系统的 

业务量,记录在各个业务量上的CPU利用率的数据, 

如表1第2列所示。 

表1模拟实验的CPU利用率数据 

(4)经测算,本次模拟实验的系统内存分区大小 

为736 MB,根据本文所述方法,修改代码,把其中的 

640 MB内存从TL0转移到TLB1下配置。 

(5)重复步骤(4),在同等业务量下记录CPU在 

TLB优化后的利用率。如表1第3列所示。 

从图10可以看出,当没有业务量的时候(系统在 

IDLE状态),CPU利用率在优化前后分别是8%和5% 

左右,CPU利用率下降大约为3%;随着业务量的增 

大,TLB优化方法的优势体现得更加明显,CPU利用 

李丹:E500 MMU架构研究及VxWorks下的优化方案 2012,48(30) 61 

率大致可以降低5%~6%,这是因为更多的业务量,带 

来了更多的内存访问操作,既然每次内存访问的时 

间被缩短,所以内存访问次数越多会形成累加效应, 

cPu利用率下降就会越明显。 

6O 

50 

40 

E500 Core TLB结构的方法,并做了实验比较优化 

前后CPU利用率的情况。实验证明,经过此种优化, 

嵌入式系统的CPU利用率可以被显著地降低,特别 

是在系统高负载运行时具有更大的优势。 

参考文献: 

[1】卢仕听,尤凯迪.MIPS内存管理单元的设计与实现[J].计算 

机工程,2010,36(21). 

碍30 

20 

10 

[2】肖楠,高德远.基于VxWorks的PowerPC750 MMU初始化 

流程和内存保护策略分析 科学技术和工程,2008,8(5). 

O 

[3]FREESCALE.E500 core training course[EB/0L]_http:// 

会话个数 

www.freescale.com/files/training ̄df/26649

PQ3一E500

MMU

WBT.pd ̄ 

图l0优化前后的CPU利用率比较图 

[4]Wind River.VxWorks kernel programmer’S guide 6.4[EB/ 

6结束语 

OL].http://www—ad.fna1.gov/controls/microdg/manuals/vx— 

workskernel ̄rogrammers

guide

6.4.pdf. 

内存管理单元(MMU)是影响系统实时性能的 

_

[5]刘小军,李秀娟.嵌入式操作系统VxWorks的内存管理技 

个关键因素之一。转换旁置缓冲区(TLB)是内存 

术研究[J]_电子科技,2008,21(6). 

管理单元(MMU)的核心部件。本文介绍了MMU 

[6]Wind River.VxWorks architecture supplement 6.4[EB/OL]. 

的基本功能,重点分析了E500 Core TLB的结构和 

http://www—ad.fna1.gov/controls/micro ̄/manuals/vxworks

— 

映射机制,提出了一种在VxWorks操作系统下优化 

architecture supplemen[6.4.pdf. 

(上接42页) 

参考文献: 

相应的支持度为: 

[1]Pearl J.Probabilistic reasoning in intelligent system[M]. 

dsp【Cl, )=1却(C2, )=0.454 

[S.1.]:Morgan Kaufmann,1988. 

dsp(C3, )=0.300 dsp(C4, )=0.682 

[2】Shafer G.A mathematical theory of evidence[M].【S.1.]: 

Princeton University Press,1 976. 

以上结果也可以解释为每个元件不正常的后验 

[3]叶建伟,曾成,武萍辉,等.一种计算PAS准支持集合的启 

概率,从上面的支持度可以看出元件c 肯定是不正 

发性算法[J].计算机工程与应用,2008,44(4):101.103. 

常的。根据定理1(4),dsp’(C V C3 V , =1,表示 

[4]Nilsson N J.Probabilistic logic[J].Artiifcial Intelligence, 

元件C 、C。、C4中肯定有一个与C。同时不正常, 

1986,28:71—87. 

不正常的可能性也比较大。而根据定理1(3),有 

[5]Guggenheimer H,Freedman R S.Foundations of probabi— 

listic logic[C]//Proc Inernational Joint Conference on Ar. 

dsp’(c2AC3, =p’( 14)+p’( 15)=0.136,它表示c2、C3 

tificial Intelligence,1987. 

同时不正常的支持度为0.136。 

【6】Haenni R,Lehmann N.Probabilistic argumentation sys- 

比较两种计算结果可以看出,新定义的支持度 

tems:a new perspective on Dempster-Shafer theory[J].In- 

反映元件正常与否的实际情况更明显。 

temational Journal of Intelligent Systems,2003,1 8(1): 

93—106. 

4结论 

[7]Haenni R,Kohlas J,Lehmann N.Probabilistic argumenta— 

tion systems[C]//Kohlas J,Moral S.Handbook of Defeasi. 

原支持度定义将不一致指派排除在外,分析不 

ble Reasoning and Uncertainty Management Systems, 

够全面。本文提出的基于条件概率的支持度定义, 

Volume 5:Algorithms for Uncertainty and Defeasible Rea. 

考虑了不一致指派,得到的结果更为合理。 

soning.[S.1.]:Kluwer Academic Publishers,2000. 

2024年4月27日发(作者:綦恨真)

Computer Engineering andApplications计算机工程与应用 

◎研发、设计、测试◎ 

E500 MMU架构研究及VxWorks下的优化方案 

李 丹 

LI Dall 

广东轻工职业技术学院计算机系,广州5 1 0300 

Department of Computer,Guangdong Industry Technical College,Guangzhou 5 1 0300,China 

LI Dan.Research of ES00 MMU and optimization Oil VxWorks OS.Computer Engineering and Applications, 

2012,48(30):56—61. 

Abstract:MMU/TLB(Memory Management Unit/Translation Lookaside Buffer)iS an important factor to impact 

operating system’S performance.For the default configuration of E500 Core’S TLB under VxWl0rks OS.there iS a 

problem of lOW eficiency,and fmore TLB missing.In view of the characteristics of E500 Core TLB and memory 1ay. 

out of VxWOrks system.one method to optimize the TLB configuration iS raised.The examination result shows that 

fhis optimization method has better performance. 

Key words:E500 core;11ranslation Lookaside Buff.er(TLB):VxwOrks 

摘要:MMU/TLB(存储器管理单元/转换旁置缓冲区)是影响嵌入式操作系统实时性能的关键因素之一。 

VxWorks嵌入式操作系统为E500处理器内核的TLB默认配置有效率低、易发生缺页中断的问题。针对E500 

处理器内核TLB的架构特点和VxWorks系统运行时的内存布局,提出了VxWorks系统下优化E500 TLB配置 

的方法;实验表明,该优化方法降低了CPU利用率,提高了系统的性能。 

关键词:E500处理器内核;转换旁置缓冲区;VxWorks 

文章编号:1002.8331(2012)30.0056.06 文献标识码:A 中图分类号:TP393 

1 引言 

随着当前数字信息技术和网络技术的高速发 

展,计算机和计算机技术大量应用在人们的日常生 

件上提供了内存访问授权控制。由于MMU与处理 

器体系结构高度相关,因此在不同的处理器下内存 

管理机制区别很大u 。 

转换旁置缓冲区TLB(Translation Lookaside Buf- 

fer)是内存管理单元的核心部件。它是一个用于页 

表匹配的高速缓存,从逻辑地址到物理地址的转换 

主要是比对TLB页表来完成,它的存取时间与Cache 

的存取时间相仿,远远小于主存的存取时间。本文 

分析了飞思卡尔(FreeScale)公司的E500处理器内 

核(E500 Core)的架构特点,提出了在VxWorks嵌入 

式操作系统下优化TLB配置的方案。在采用E500的 

活中,嵌入式计算机也得到了广泛的应用。对于嵌 

入式操作系统,一般要求具有实时性、可裁减性、轻 

量型网络支持和功能可扩展。在大多数场合,对实 

时性的要求是首要的。 

内存管理单元MMU(Memory Management Unit) 

是影响系统实时性能的关键因素之一。它是处理器 

支持操作系统高效运行的基础,与软件内存管理模 

块相结合完成了虚拟地址到物理地址的转换。MMU 

还能够对处理器发出的地址进行合法性检验,在硬 PowerPC 85XX CPU平台上做了模拟实验,比较了 

基金项日:国家自然科学基金(No.61133014);广东省自然科学基金(No.¥2011010002708)。 

作者简介:李丹,女,讲师,研究领域:计算机网络、计算机体系结构。 

收稿日期:2011-12.05 修回日期:2012—03—26 CNKI出版日期:2012.04.18 

DOI:10.3778 ̄.issn.1002—8331.2012.30.014 http://www.cnki.net/kcms/detail/11.2127.TP.20120418 1024.018.html 

李丹:E500 MMU架构研究及VxWorks下的优化方案 

优化前后的cPuN用率情况。 

2 E500 Core的MMU/TLB结构及工作方式 

2.1 E500 Core的MMU/TLB结构 

MMU是存储器管理单元的缩写,是用来管理虚 

拟内存系统的器件。MMU通常是CPU的一部分,本 

身有少量存储空问存放从虚拟地址到物理地址的匹 

配表,此表称做TLB。MMU的两个主要功能是: 

(1)将访问主存和访问I/O的逻辑地址转化为物 

理地址。 

(2)内存保护。根据需要对特定的内存区块的 

访问进行保护,通过这一功能,可以将特定的内存块 

设置成只读、只写或是可同时读写。 

虚拟 物理 物理 

数据或指令 

图1 MMU在体系结构中的位置 

地址映射机制必须使一个程序能断言某个地址 

在其自己的进程空间或地址空间内,并且能够高效 

地将其转换为真实的物理地址以访问内存。一个方 

法是使用一个含有整个空间内所有页的入口(entry) 

的表(即页表),每个入口包含这个页的正确物理地 

址。这很明显是个相当大的数据结构,因而不得不 

存放于主存之中。 

由于CPU首先接到的是由程序传来的虚拟内存 

地址,所以CPU必须先到物理内存中取页表,然后对 

应程序传来的虚拟页面号,在表里找到对应的物理 

页面号,最后才能访问实际的物理内存地址,也就是 

说整个过程中CPU必须访问两次物理内存(实际上 

访问的次数更多)。因此,为了减少CPU访问物理内 

存的次数,引入TLB。 

TLB和CPU里的一级、二级缓存之间不存在本 

质的区别,只不过前者缓存页表数据,而后两个缓存 

实际数据。它们和内存区域的对应关系如图2所示。 

MMU/TLB 内存页表 

Ll

cA

CHE 

H  ICAIC』2HE I l・ 内存数据区 

CPU 内存 

图2 MMU/TLB 内存区域的对应关系图 

E500处理器内核实现了FreeScale BOOK E规 

范,是一个32位的处理器,支持4 GB的有效地址空 

间。在内部使用41位的临时虚拟地址和动态的页表 

来产生32位的物理地址。 

如图3所示,E500 MMU实现有两级TLB,即: 

L1 TLB和L2 TLB。L1 TLB可以理解为L2 TLB的 

部分缓存。访问L1 TLB的效率要比L2的效率高, 

相应的实现花费也就高。L1 TLB完全由硬件维护, 

不可编程精确控制。 

注32位有效地址 

:n=32一lb(page size) 

图3有效地址到物理地址的转换 

程序中所用的地址称为逻辑地址或者有效地 

址,当一次访问内存时,由有效地址到物理地址的映 

射过程如下: 

(1)E500处理器内核在做地址映射时会产生一 

个41位的内部虚拟地址,它由1位AS、8位PID和32 

位的有效地址(EA)所组成。其中:AS位可以从寄存 

器MSR AS/DS位得到,它表示地址空问域:数值0是 

和中断处理及系统级的代码和数据关联;数值1是应 

用程序的代码和数据;PID分别从寄存器PID0~PID2 

得到,表示进程标识符,EA有效tight就是程序的逻辑 

地址。 

(2)在L1 TLB中根据当前虚拟地址,查找物理 

地址的实页号(RPN)。如果命中,则获得对应的 

RPN。并结束虚实地址转换。如果未命中,则继续在 

L2 TLB中查找。 

(3)在L2 TLB中根据当前虚拟地址,查找物理 

地址的实页号。如果命中,则获得对应的RPN并更 

新L1 TLB,然后结束虚实地址转换。如果未命中, 

则产生TLB MISS异常,并在PTE表中继续查找。 

(4)在PTE表中查找,若找到,则获得相应的RPN 

并更新L2 TLB。否则进行更复杂的对虚拟地址分 

析操作。 

本文针对L2 TLB提出优化方案,因为L2 TLB 

完全可以有软件精确控制。 

Computer Engineering andApplications计算机工程与应用 

2.2 E500 Core的L2 TLB的工作方式 

E500处理器内核没有对虚拟地址空间进行划 

分,即没有固定使用某段虚拟地址固定映射到某段 

物理地址,而是引入了一个更灵活的设计:将L2 TLB 

分为TLB0和TLB1t 。 

TLB0即用于页映射的TLB,可动态被替换,页 

大小固定为4 KB。E500vl实现为2路组相联,256 

项;E500v2实现为4路组相联,5l2项。 

TLB1则设计用于映射大页(比如16 MB, 

256 MB…),支持可变页大小,E500vl可支持9种页 

区(system memo ̄partition)。操作系统和通常的 

大部分用户应用程序对内存的操作,都发生在系统 

内存池中。 

VxWorks映像在RAM中运行后,其内存布局如 

图5所示。系统运行中堆和栈所分配的系统内存位于 

FREE

RAMADRS+WDB

POOL

——

SIZE和sysMem— 

Top()之间 ]。 

………sysPhyMemTop() 

Reserved Memory(Optiona1) 

”sysMemTop() 

大小(最大256 MB),E500v2则支持11种页大小(最 

大4 GB)。使用时可将某项设为永驻TLB1(通过置 

Invalidation Protection位,简写为IPROT位),不会被 

动态替换,实现为全相联,共16项,可将其理解为用 

于映射16个段的可编程固定映射机制。 

如图4 E500vl的L2 TLB搜索过程所示,搜寻 

TLB0和TLB1几乎是并行的,没有先后顺序,如果其 

命中即停止搜索。 

图4 L2 TLB搜索过程 

3 VxWorks映像的内存分布 

VxWorks中主要涉及到的内存单元的概念有内 

存分区(memo ̄partition)、内存池(memo ̄poo1)、 

内存块(memo ̄block)。内存池是一块连续的区 

域,包括一个或多个内存块,这些内存块通过mem. 

PartAlloc、memPartFree来申请和释放。内存分区在 

刚创建完毕时,只有一个内存池,用户可以往该分区 

添加别的内存池。在一个内存分区中,内存池不一 

定是连续的。Vxworks在启动过程中会创建一个包 

含系统内存池(system memo ̄poo1)的系统内存分 

System Memory Partition 

WDB Memory Pool 

’’……” ̄

FREE

RAMADRs 

——

VxWorks Kemel Image 

(Text,Data and BSS) 

…………‘

ARM

LOWADRS 

Reserved&Initial Stack 

’’………  ̄

LOCAL

MEMLOCALADRS 

图5 VxWorks的内存分布 

LOCAL MEM LOCAL ADRS:所使用RAM的 

起始地址,常常分配成0; 

ARM LOW ADRS:当VxWorks映像从ROM拷 

贝到RAM时在RAM中所处的起始位置; 

FREE RAM ADRS:由编译器根据代码编译后 

情况决定,其值为VxWorks映像的结束地址(end)。 

如果定义了INCLUDE WDB,调试处理任务会进 

行模块的动态加载,占用内存的大小为WDB POOL 

SIZE。 

系统内存分区就从WDB POOL SIZE之后到 

sysMemTop()。如果没定义INCLUDE WDB,则从 

FREE RAM ADRS到sysMemTop()都是系统内存 

分区 】。 

操作系统是怎么知道这个区域的,原来在内核初 

始化函数kernellnit()中会传递系统初始化的参数。 

如kemellnit((FUNCPTR)usrRoot,ROOT

STACK

—_ 

SIZE,MEM

POOL

START,memPoolEndAdrs,ISR

STACK

SIZE,INT

LOCK

___

LEVEL); 

函数原型为: 

void kemellnit( 

FUNCPTR rootRm,/十用户启动的根任务 / 

unsigned rootMemSize,/ 根任务的堆栈大小 / 

char*pMemPoolStart, 系统内存分区起始地址 / 

char*pMemPoolEnd, 系统内存分区结束地址 , 

unsigned intStackSize, 中断栈大小 / 

int lockOutLevel 中断屏蔽级 /) 

f} 

李丹:E500 MMU架构研究及VxWo ̄s下的优化方案 

所以系统内存分区的起始和结束地址在这里已 

经确定。 

经常性TLB缺页(TLB Miss)的发生和页的更新置 

换,从而进一步影响系统性能。 

对实时性要求很高的嵌入式操作系统来说,如 

4 VxWorks对E500 Core MMU的支持及优 

化方法 

4.1 VxWorks对E500 Core MMU的支持 

E500处理器内核实现了Book E处理器规范, 

果经常发生TLB MISS或者TLB查询时问过长,将 

是不可接受的。 

从图4可以看出,当一个CPU产生一个虚拟地址 

时,它会同步与TLB0和TLB1中的条目逐项进行比 

较,任何一个命中即停止搜索。 

为了减少查询时间和更进一步降低TLB缺页发 

MMU总是处于活动状态,任何内存地址访问内存必 

须经过TLB0(动态,固定4 KB页大d,TLB)或者TLB1 

(静态,可变页大小TLB)翻译得到物理地址。 

VxWorks嵌入式操作系统很好地支持了E500处 

理器内核的MMU,其中BSP(Board Support Pack. 

age)中的数组sysstaticT1bDesc[](定义在sysLib.c)用 

于配置TLB1的地址映射,这个数组中的每一项可以 

指定地址空问(Ts位)为0或者1;BSP中的数组sys. 

PhyMemDesc[1(也定义在sysLib.C),数组用于配置 

TLB0的地址映射,地址空间(Ts位)默认为1,不可 

指定 1。 

sysstaticTlbDesc口数组最多只能配置l6个En— 

t ,每个entry映射的地址范围是可变的,从1 kB~ 

256 MB不等。在sysstaticT1bDesc口中首先要保证为 

VxWorks启动和基本操作所需的各地址区域具有地 

址空间0的配置。 

sysPhyMemDesc[]数组中的每个元素描述了物 

理内存中一个连续的块,其中包括物理地址、物理地 

址映射的虚拟地址(一般情况下与物理地址相同)、 

该块内存初始化状态信息、掩码信息。其可包含的 

映射空间有内存、Flash、ROM、I/O设备等,可以根据 

系统的需求自行进行配置。在VxWorks的默认配置 

中,地址空间1下全部系统内存(RAM)都配置在sys— 

PhyMemDesc[]数组中。 

4.2 VxWorks下E500 Core MMU的优化方法 

VxWo ̄s在默认情况下为地址空间1运行所需 

的系统内存(System RAM)空间全部配置在sysPhys— 

MemDesc[]数组中,即由TLB0来管理的。这样会有 

下列两个缺点: 

(1)会使TLB0过大,查询TLB0的时间会比较 

长,每次访问内存的时间就被相应延长,从而影响系 

统的实时性能。 

(2)由于TLB0项数的限制(256,E500V1;512, 

E500V2,在系统内存(RAM)超过1 GB(1 GB/4 KB= 

256)或者2 GB(2 GB/4 I①=5l2)的情况下,不可能每 

页都在TLB0中长期驻留,况且TLB0中还要配置 

ROM,外设,寄存器等的地址空间,这样必然会导致 

生的几率,在TLBl有剩余可用项的情况下,把一部 

分系统内存配置在sysstaticTlbDesc口数组中,即由 

TLB1中来管理和映射。这样既可以减少TLB0的项 

数从而降低整个TLB的查询时问,又可以减少TLB的 

缺页几率。但是并非所有的系统内存都可以在TLB1 

中配置,这是因为Vxworks操作系统通常对内核代 

码,应用程序代码、栈数据和关键数据设置内存保护 

属性(例如:MMU ATTR PROT SUP READ,MMU 

ATTR PROT SUP wRIT E[6]等),这样可以对它们提 

供有效的保护。但是这些属性TLB1不支持,因此内 

核代码、应用程序代码、栈数据和关键数据所占有 

的内存必须由TLB0管理,即必须配置在sysPhys. 

MemDesc[]数组中。 

如第3章所述,系统内存分区(system memory 

partition)是专门为堆和栈空间分配所用,它的起始地 

址在系统初始化的时候指定。本文的优化思想就是 

把堆内存和栈内存分开,不让它们共享一个系统内 

存分区。为栈内存创建一个专门内存分区,如图6所 

示。由于栈内存通常需要设置成可保护的,所以它 

的内存映射仍然配置在TLB0中。而堆内存通常不 

需要设成可保护的,它仍然使用系统内存分区,不过 

系统内存分区的大部分地址从TLB0转移到TLB1 

来管理配置。 

栈专用内存分区 

原“系统内存分区”结束地址 

(TLB0) 

新“系统内存分区”结束地址 

(NEW

SYS

MEM

POOLEND

——

ADDR) 

由TLB0到TLB1转移内存的结束地址 

(MOVE TO TLB1 END ADDR) 

新系统内存分区 

b() 

(二) 

由TLB0到TLB1转移内存的开始地址 

(MOVE

TO__TLB1一START_ADD) 

系统内存分区开始地址 

图6优化TLB示意图 

具体的优化方法如下: 

(1)测算出目前系统内存分 ̄_(system memory 

Computer Engineering andApplications计算机工程与应用 

partition)的起始地址;即内核初始化函数kemelInit() 

中会传递系统初始化的参数pMemPoolStart和pMem— 

PoolEnd的值。 

(2)计算出系统目前所有任务(task)的栈的大 

小,预留出足够大的内存空间为栈所用。假设当前 

所有任务的栈总大小是1 1 MB;因此可以选取16 MB 

为栈内存分区的空间大小。 

(3)从默认的系统内存分区顶部预留出足够大 

图9栈内存分配函数的修改 

5 VxWorks TLB优化方法模拟实验与分析 

为了便于技术验证,本文选用了一个CPU为 

PPC8560(E500 Core),内存大小为1 GB,并配置有 

以太网接口的嵌入式硬件平台,加载Vxworks6-3操 

空间为栈所用,并创建一个新的分区——栈内存分 

区。栈内存分区的开始地址即是新的系统内存分区结 

束的地址。这块内存仍然配置在sysPhyrsMemDesc[1 

数组中,即仍然由TLB0做映射管理。 

图7栈专用分区的创建 

(4)根据数组sysstaticTlbDesc[]现有项的多少 

(因为它的最大项数不能超过16)和E500 Core所支 

持的页的大小(注:内存地址要页对齐),确定要转移 

内存的起始地址。定义图8所示变量。 

(5)把从MOvE TO TLB1 STAERT ADDR开 

始到MOVE TO TLB1 END ADDR结束的内存块 

从sysPhysMemDesc[]表中删掉,然后把这段内存添 

加到sysstaticTlbDesc口表中;即把这段内存由TLB0 

转移到TLB1做映射管理。 

(6)修改内核初始化函数kemelInit(),指定新的 

系统内存分区的结束地址即是栈内存分区的开始地 

址:(NEw SYS MEM POOL END ADDR);这是因 

为新的系统内存分区排除了为栈内存所预留的空 

间。例女ⅡkernelInit((FuNcPTR)usrRoot,ROOT 

STACK

SIZE,MEM

POOLSTART,NEW

SYS

——— 

MEMPOOL

END

ADDR,ISR STACKSIZE,1NT

__

LOCK

LEVEL)。 

(7)修改栈内存分配函数,让它固定从新创建栈 

分区中为每个任务分配栈空间,而不是从默认的系 

统内存分区中分配。 

作系统做了模拟实验。 

具体实验步骤如下: 

(1)加载并配置好Vxworks 6-3系统的网络模 

块,使以太网接口处于工作状态,FTP和ICMP协议 

运行正常。 

(2)搭建好局域网环境。 

(3)在应用本文TLB优化方法前,即在VxWorks 

系统MMU TLB的默认配置下,通过局域网中其他 

主机分别用FTP和ping工具向嵌入式主机系统发起 

邱和ICMP连接(ftp和ping的会话数大致按1:10分 

配);然后逐步增加连接数,从而增加嵌入式系统的 

业务量,记录在各个业务量上的CPU利用率的数据, 

如表1第2列所示。 

表1模拟实验的CPU利用率数据 

(4)经测算,本次模拟实验的系统内存分区大小 

为736 MB,根据本文所述方法,修改代码,把其中的 

640 MB内存从TL0转移到TLB1下配置。 

(5)重复步骤(4),在同等业务量下记录CPU在 

TLB优化后的利用率。如表1第3列所示。 

从图10可以看出,当没有业务量的时候(系统在 

IDLE状态),CPU利用率在优化前后分别是8%和5% 

左右,CPU利用率下降大约为3%;随着业务量的增 

大,TLB优化方法的优势体现得更加明显,CPU利用 

李丹:E500 MMU架构研究及VxWorks下的优化方案 2012,48(30) 61 

率大致可以降低5%~6%,这是因为更多的业务量,带 

来了更多的内存访问操作,既然每次内存访问的时 

间被缩短,所以内存访问次数越多会形成累加效应, 

cPu利用率下降就会越明显。 

6O 

50 

40 

E500 Core TLB结构的方法,并做了实验比较优化 

前后CPU利用率的情况。实验证明,经过此种优化, 

嵌入式系统的CPU利用率可以被显著地降低,特别 

是在系统高负载运行时具有更大的优势。 

参考文献: 

[1】卢仕听,尤凯迪.MIPS内存管理单元的设计与实现[J].计算 

机工程,2010,36(21). 

碍30 

20 

10 

[2】肖楠,高德远.基于VxWorks的PowerPC750 MMU初始化 

流程和内存保护策略分析 科学技术和工程,2008,8(5). 

O 

[3]FREESCALE.E500 core training course[EB/0L]_http:// 

会话个数 

www.freescale.com/files/training ̄df/26649

PQ3一E500

MMU

WBT.pd ̄ 

图l0优化前后的CPU利用率比较图 

[4]Wind River.VxWorks kernel programmer’S guide 6.4[EB/ 

6结束语 

OL].http://www—ad.fna1.gov/controls/microdg/manuals/vx— 

workskernel ̄rogrammers

guide

6.4.pdf. 

内存管理单元(MMU)是影响系统实时性能的 

_

[5]刘小军,李秀娟.嵌入式操作系统VxWorks的内存管理技 

个关键因素之一。转换旁置缓冲区(TLB)是内存 

术研究[J]_电子科技,2008,21(6). 

管理单元(MMU)的核心部件。本文介绍了MMU 

[6]Wind River.VxWorks architecture supplement 6.4[EB/OL]. 

的基本功能,重点分析了E500 Core TLB的结构和 

http://www—ad.fna1.gov/controls/micro ̄/manuals/vxworks

— 

映射机制,提出了一种在VxWorks操作系统下优化 

architecture supplemen[6.4.pdf. 

(上接42页) 

参考文献: 

相应的支持度为: 

[1]Pearl J.Probabilistic reasoning in intelligent system[M]. 

dsp【Cl, )=1却(C2, )=0.454 

[S.1.]:Morgan Kaufmann,1988. 

dsp(C3, )=0.300 dsp(C4, )=0.682 

[2】Shafer G.A mathematical theory of evidence[M].【S.1.]: 

Princeton University Press,1 976. 

以上结果也可以解释为每个元件不正常的后验 

[3]叶建伟,曾成,武萍辉,等.一种计算PAS准支持集合的启 

概率,从上面的支持度可以看出元件c 肯定是不正 

发性算法[J].计算机工程与应用,2008,44(4):101.103. 

常的。根据定理1(4),dsp’(C V C3 V , =1,表示 

[4]Nilsson N J.Probabilistic logic[J].Artiifcial Intelligence, 

元件C 、C。、C4中肯定有一个与C。同时不正常, 

1986,28:71—87. 

不正常的可能性也比较大。而根据定理1(3),有 

[5]Guggenheimer H,Freedman R S.Foundations of probabi— 

listic logic[C]//Proc Inernational Joint Conference on Ar. 

dsp’(c2AC3, =p’( 14)+p’( 15)=0.136,它表示c2、C3 

tificial Intelligence,1987. 

同时不正常的支持度为0.136。 

【6】Haenni R,Lehmann N.Probabilistic argumentation sys- 

比较两种计算结果可以看出,新定义的支持度 

tems:a new perspective on Dempster-Shafer theory[J].In- 

反映元件正常与否的实际情况更明显。 

temational Journal of Intelligent Systems,2003,1 8(1): 

93—106. 

4结论 

[7]Haenni R,Kohlas J,Lehmann N.Probabilistic argumenta— 

tion systems[C]//Kohlas J,Moral S.Handbook of Defeasi. 

原支持度定义将不一致指派排除在外,分析不 

ble Reasoning and Uncertainty Management Systems, 

够全面。本文提出的基于条件概率的支持度定义, 

Volume 5:Algorithms for Uncertainty and Defeasible Rea. 

考虑了不一致指派,得到的结果更为合理。 

soning.[S.1.]:Kluwer Academic Publishers,2000. 

发布评论

评论列表 (0)

  1. 暂无评论