TC3xx分析--如何提高系统运行效率(2)

news2024/11/19 7:33:38

目录

1.概述

2.限定符对于代码的影响

3.小结


1.概述

上文TC3xx分析--如何提高系统运行效率(1)-CSDN博客讲解了Tasking中lsl的某些关键定义,简述了Tricore寻址模式,接下来我们继续看,不同memory限定符对于代码的影响。

2.限定符对于代码的影响

上篇文章我们发现了利用不同限定符将变量发到不用的section里,但是变量的地址始终没有变化,那这到底有什么用呢?

编译出来的C代码最终会以汇编形式展示给机器,因此我们来看看不同限定符下对于代码的影响。

1)添加__near限定符,编译得到的结构,代码如下:

uint32 __near example_x ;
uint32 __near example_y;
void main(void)
{
        example_x = 3;
        example_y=example_x+2;
}

得到汇编代码如下

解释如下:

  • 将立即数3赋给寄存器D15
  • 将D15的值直接赋给变量(x)
  • 立即数3赋给寄存器D15
  • D15和2相加
  • 将D15的值直接赋给变量(y)

统计拢共5条指令完成x=3,y=x+2这个操作;

 2)添加__far限定符,得到如下

uint32 __far example_x ;
uint32 __far example_y;
void main(void)
{
        example_x = 3;
        example_y=example_x+2;
}

汇编代码如下:

解释如下:

x的赋值:

  • 将0x7000给到地址寄存器A15高16bit,低位补0,这时候A15 = 0x70000000
  • 加载有效地址到A15,因为x地址为0x70000004,故A15 = 0x70000004
  • 将数据3移至D15;
  • 将D15赋给A15指向的地址

y的赋值

  • 将0x7000给到地址寄存器A15高16bit,低位补0,这时候A15 = 0x70000000
  • 加载有效地址到A15,因为y地址为0x70000008,故A15 = 0x70000008
  • 将数据3移至D15,并加2;
  • 将D15赋给A15指向的地址

总计9条指令,咋一看仅仅节省了4条指令,但从统计角度来看,效率提升了44.44%,Flash消耗更少了。

同样两行C代码,仅仅因为寻址方式的不同,汇编指令差异如此之大 ,从而影响系统运行效率。

3.小结

现在MCU的性能越来越强大,导致我在使用上越来越随意,对于这种特别底层的知识非常匮乏,直到遇到了系统优化问题,才会去从这些角度来考虑。总结下来,在系统性能优化时要注意:

  1. 构建memory限定符使用场景以优化代码执行效率;
  2. 多使用靠近CPU的memory,例如ARM TCM、Tricore DSPR、PSPR;
  3. DCache数据一致性问题

通过调试汇编代码,也更进一步了解了Tricore内核的运行原理;接下来,思考如何将这些理论引入到工程代码中。

就酱!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工控一体机7寸显示器电容触摸屏(YR07JK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 1.1 YR07JK介绍 YR07JK工控机是我公司推出的一款新型 Cortex-A17 架构,主频达1.8GHz、具有高性能低能耗的工业控制板卡…

<Transition> expects exactly one child element or component.

近日在vue中使用 Transition 标签是发生了如下报错: [plugin:vite:vue] expects exactly one child element or component. 原因: 仅支持单个元素或组件作为其插槽内容。如果内容是一个组件,这个组件必须仅有一个根元素。 原始代码&#xff1…

李廉洋:5.29黄金趋势向下,原油持续走高,美盘走势分析及策略。

黄金消息面分析:当前美国存在一个令人担忧且未被充分关注的问题:房地产行业低迷、高利率和抵押贷款利率、租金高涨以及美联储的紧缩政策构成了一个恶性循环。由于高房价和高抵押贷款利率,美国住房经济活动远低于两年前的水平。为了让该行业好…

APP原生开发与框架开发的优劣势

电话管家APP商用也有几年时间了,但是客户一直都有遇到一些问题。 为什么我们的APP老是要升级? 为什么有些手机使用体验不好? 为什么有些公司的APP几天就开发出来上线了? 为什么有些公司的APP那么便宜? 今天就来从…

整理了六个正规靠谱的兼职赚钱软件,适合普通人做的兼职副业~

​随着互联网时代的到来,越来越多的人选择通过互联网赚钱。在这篇文章中,我们将探讨一些可以在网上长期赚钱的方法。 在网络上面其实有很多的赚钱方法,尽管方法很多,但是对于一些网络新手,刚进入互联网圈子不久的伙伴…

老年人健康管理系统项目部署【linux】

老年人健康管理系统项目部署【linux】 前言版权推荐老年人健康管理系统项目部署购买阿里云服务器开发票连接开放端口 安装软件查看状态1更新yum源2安装jdk83安装mysql4上传Mysql数据5安装redis6安装kakfa7安装nginx8运行命令 命令汇总1更新yum源2Jdk8安装3Mysql安装4Mysql数据5…

基于51单片机的温控风扇的设计–仿真设计

可实现通过DS18B20测量当前环境温度 可实现通过温度自动控制风扇转速 可实现通过按键设置不同风速对应的温度 可实现通过按键切换自动、手动模式 可实现在手动模式下通过按键调整风扇转速 可实现通过LCD1602显示温度、风扇转速挡位、自动/手动模式

ozon卖家精灵,ozon卖家怎么使用

在跨境电商的浪潮中,OZON作为俄罗斯领先的电商平台,吸引了众多卖家争相入驻。然而,面对日益激烈的市场竞争,如何提升店铺的运营效果,成为卖家们迫切需要解决的问题。而OZON卖家精灵作为一款专为OZON卖家打造的辅助工具…

二叉树介绍及堆

文章目录 树 概念及结构 二叉树 概念及结构 特殊的二叉树 完全二叉树 满二叉树 性质 储存 顺序存储 链式储存 堆 概念及结构 小堆 大堆 建堆 向上调整建堆 向下调整建堆 TOPK问题 法一: 法二: 树 概念及结构 树是一种非线性的数据…

小白跟做江科大32单片机之LED流水灯

1.复制下面地址新建的工程,改名为3-2 LED流水灯 小白跟做江科大32单片机之LED闪烁-CSDN博客https://blog.csdn.net/weixin_58051657/article/details/139295351?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%2213929…

每天学点小知识:Windows终端Powershell美化

前言 本章的旨在教会你美化自己的终端,powershell需要以管理员运行 经过我的测试,不同的电脑可能会有不同的报错,具体操作根据官方为主https://ohmyposh.dev/docs 效果展示 Oh My Posh:提供美观的 PowerShell 提示符主题 1.安装…

【UE5.1 角色练习】08-物体抬升、抛出技能 - part2

目录 前言 效果 步骤 一、让物体缓慢的飞向手掌 二、向着鼠标方向发射物体 前言 在上一篇(【UE5.1 角色练习】08-物体抬升、抛出技能 - part1)的基础上继续完成角色将物体吸向手掌,然后通过鼠标点击的方向来发射物体的功能。 效果 步骤…

linux开发之设备树四、设备树中断节点

中断节点 这里是由原厂的BSP工程师写的一部分 在CPU的外部有一个GIC控制器,外设会连接在GIC控制器上 设备树是对硬件进行描述的,所以设备树会对CPU进行描述,也要对GIC 控制器进行描述,这部分的代码由原厂的BSP工程师进行编写&…

【蓝桥杯嵌入式】 第六届国赛

目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程,先配置资源 --- 勾选完选项一…

ARM-V9 RME(Realm Management Extension)系统架构之系统能力的执行隔离

安全之安全(security)博客目录导读 目录 一、执行隔离 1、安全状态 2、安全模型 本博客探讨 RME 所需的系统能力,以保证 Arm CCA 对于 Realms 的安全性和隔离特性。 一、执行隔离 1、安全状态 RME 系统支持以下安全状态: 非安全 (Non-secure)安全…

台灯护眼是真的吗?警惕这六大问题!

在当今社会,随着电子设备的普及和长时间的用眼,大多数人面临着严重的视觉疲劳问题。长时间盯着屏幕或学习,眼睛需要不断调节焦距,导致眼睛肌肉疲劳,进而引发视力下降。这种现象在年轻一代甚至青少年中尤为普遍&#xf…

Sourcetree安装教程及使用

1 Sourcetree介绍 Sourcetree是一款免费的Git图形化客户端,它由Atlassian开发,提供了跨平台的支持,可运行在Windows和Mac操作系统上。Sourcetree可以让开发者更方便地使用Git来管理代码,不需要在命令行中输入复杂的Git命令&#x…

10W QPS高并发,如何防止重复下单?

小北说在前面 10wqps高并发,如何防止重复提交/支付订单? 10wqps高并发,如何防止重复下单? 10wqps高并发,如何防止重复支付? 10wqps高并发,如何解决重复操作问题? 最近有小伙伴在面试…

Go开发Prometheus客户端实战步骤

1、项目背景 在当前的IT运维环境中,我们的业务系统日益复杂,特别是针对特定的业务逻辑和定制化需求,传统的通用监控工具往往难以覆盖所有的监控场景。例如,考虑到一个复杂的电商平台,除了基础的服务器性能、网络状况等…

JavaScript-内存分配

内存空间 内存分为栈和堆 栈:由操作系统自动释放存放的变量值和函数值等。简单数据类型存放在栈中 栈会由低到高先入后出 堆:存储引用类型 (对象) 对象会先将数据存放在堆里面,堆的地址放在栈里面