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[]数组中


目录
相关文章
|
1月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
55 8
|
16天前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
664 243
|
9天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
40 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
20天前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
51 4
【AI系统】计算图优化架构
|
10天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
39 3
|
1月前
|
监控
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
通过引入稀疏化和角色多样性,SMoA为大语言模型多代理系统的发展开辟了新的方向。
49 6
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
|
28天前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
1月前
|
弹性计算 运维 开发者
后端架构优化:微服务与容器化的协同进化
在现代软件开发中,后端架构的优化是提高系统性能和可维护性的关键。本文探讨了微服务架构与容器化技术如何相辅相成,共同推动后端系统的高效运行。通过分析两者的优势和挑战,我们提出了一系列最佳实践策略,旨在帮助开发者构建更加灵活、可扩展的后端服务。
|
1月前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
1月前
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
36 1

热门文章

最新文章