E500 MMU 架构及VxWorks 下的优化

简介: E500 MMU 架构及VxWorks 下的优化

E500 Core 的 MMU/TLB 结构


MMU 是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称做TLB。MMU的两个主要功能是:

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

(2)内存保护。根据需要对特定的内存区块的访问进行保护,通过这一功能,可以将特定的内存块设置成只读、只写或是可同时读写


MMU在体系结构中的位置:


微信图片_20230117162601.png


地址映射机制必须使一个程序能断言某个地址在其自己的进程空间或地址空间内,并且能够高效地将其转换为真实的物理地址以访问内存。一个方法是使用一个含有整个空间内所有页的入口(entry)的表(即页表),每个入口包含这个页的正确物理地址。这很明显是个相当大的数据结构,因而不得不存放于主存之中。


由于CPU首先接到的是由程序传来的虚拟内存地址,所以CPU必须先到物理内存中取页表,然后对应程序传来的虚拟页面号,在表里找到对应的物理页面号,最后才能访问实际的物理内存地址,也就是说整个过程中 CPU 必须访问两次物理内存(实际上访问的次数更多)。因此,为了减少CPU访问物理内存的次数,引入TLB。


TLB 和 CPU 里的一级、二级缓存之间不存在本质的区别,只不过前者缓存页表数据,而后两个缓存实际数据。它们和内存区域的对应关系如图所示。


微信图片_20230117162610.png


VxWorks 对 E500 Core MMU 的支持


E500 处理器内核实现了 Book E 处理器规范,MMU 总是处于活动状态,任何内存地址访问内存必须经过TLB0(动态,固定4 KB页大小TLB)或者TLB1(静态,可变页大小TLB)翻译得到物理地址。

VxWorks 嵌入式操作系统很好地支持了 E500 处理器内核的 MMU,其中 BSP(Board Support Pack-age)中的数组 sysStaticTlbDesc[](定义在 sysLib.c)用于配置TLB1的地址映射,这个数组中的每一项可以指定地址空间(TS 位)为 0 或者 1;BSP 中的数组 sysPhyMemDesc[](也定义在 sysLib.c),数组用于配置TLB0 的地址映射,地址空间(TS 位)默认为 1,不可指定。


sysStaticTlbDesc[]数组最多只能配置 16 个 Entry,每个 entry 映射的地址范围是可变的,从 1 kB~256 MB 不等。在 sysStaticTlbDesc[]中首先要保证为VxWorks 启动和基本操作所需的各地址区域具有地址空间0的配置。


sysPhyMemDesc[]数组中的每个元素描述了物理内存中一个连续的块,其中包括物理地址、物理地址映射的虚拟地址(一般情况下与物理地址相同)、该块内存初始化状态信息、掩码信息。其可包含的映射空间有内存、Flash、ROM、I/O 设备等,可以根据系统的需求自行进行配置。在VxWorks的默认配置中,地址空间1下全部系统内存(RAM)都配置在sysPhyMemDesc[]数组中。


Vx Works 下 E500 Core MMU 的优化方法


VxWorks 在默认情况下为地址空间 1 运行所需的系统内存(System RAM)空间全部配置在sysPhysMemDesc[]数组中,即由 TLB0 来管理的。这样会有

下列两个缺点:

(1)会使 TLB0 过大,查询 TLB0 的时间会比较长,每次访问内存的时间就被相应延长,从而影响系统的实时性能。

(2)由于 TLB0 项数的限制(256,E500V1;512,E500V2,在系统内存(RAM)超过 1 GB(1 GB/4 KB=256)或者 2 GB(2 GB/4 KB=512)的情况下,不可能每一页都在 TLB0 中长期驻留,况且 TLB0 中还要配置ROM,外设,寄存器等的地址空间,这样必然会导致经常性 TLB 缺页(TLB Miss)的发生和页的更新置换,从而进一步影响系统性能。对实时性要求很高的嵌入式操作系统来说,如果经常发生 TLB MISS 或者 TLB 查询时间过长,将是不可接受的。


了减少查询时间和更进一步降低TLB缺页发生的几率,在 TLB1 有剩余可用项的情况下,把一部分系统内存配置在 sysStaticTlbDesc[]数组中,即由TLB1 中来管理和映射。这样既可以减少 TLB0 的项数从而降低整个TLB的查询时间,又可以减少TLB 的缺页几率。但是并非所有的系统内存都可以在TLB1中配置,这是因为 VxWorks 操作系统通常对内核代码,应用程序代码、栈数据和关键数据设置内存保护属性(例如:MMU_ATTR_PROT_SUP_READ,MMU_ATTR_PROT_SUP_WRITE[6]等),这样可以对它们提供有效的保护。但是这些属性TLB1不支持,因此内核代码、应用程序代码、栈数据和关键数据所占有的内存必须由 TLB0 管理,即必须配置在 sysPhysMemDesc[]数组中


目录
相关文章
|
12月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
12月前
|
算法 物联网 定位技术
蓝牙室内定位技术解决方案:核心技术架构与优化实践
本文探讨了蓝牙iBeacon与Lora结合的室内定位技术,分析其在复杂室内环境中的优势与挑战。通过三层架构实现高精度定位,并提出硬件、算法与部署优化方向,助力智慧仓储、医疗等场景智能化升级。
623 0
蓝牙室内定位技术解决方案:核心技术架构与优化实践
|
机器学习/深度学习 人工智能 文件存储
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
NVIDIA推出的Llama Nemotron系列推理模型,基于Llama架构优化,包含Nano/Super/Ultra三款,在数学推理、编程和工具调用等任务中展现卓越性能。
576 5
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
|
9月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
1018 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
9月前
|
运维 Prometheus 监控
别再“亡羊补牢”了!——聊聊如何优化企业的IT运维监控架构
别再“亡羊补牢”了!——聊聊如何优化企业的IT运维监控架构
357 8
|
数据采集 运维 Serverless
云函数采集架构:Serverless模式下的动态IP与冷启动优化
本文探讨了在Serverless架构中使用云函数进行网页数据采集的挑战与解决方案。针对动态IP、冷启动及目标网站反爬策略等问题,提出了动态代理IP、请求头优化、云函数预热及容错设计等方法。通过网易云音乐歌曲信息采集案例,展示了如何结合Python代码实现高效的数据抓取,包括搜索、歌词与评论的获取。此方案不仅解决了传统采集方式在Serverless环境下的局限,还提升了系统的稳定性和性能。
539 0
|
11月前
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
871 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
|
9月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1773 3
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
1017 76

热门文章

最新文章