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

server/2024/12/22 19:08:39/

目录

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.ppmy.cn/server/44964.html

相关文章

代码随想录算法训练营Day7|454.四数相加II、 383. 赎金信、15. 三数之和、 18. 四数之和

454.四数相加II 四个数组分成两组进行for循环,先用HashMap存储所有第一组for循环出现的和的次数。再进行第二组for循环,每一次得出的和判断其负数是否在map的key中,如果存在,就加上这个value。 class Solution {public int four…

某烟草企业数字化转型物流信息化咨询项目规划方案(117页PPT)

方案介绍: 烟草企业数字化转型物流信息化咨询项目规划方案将为企业带来多方面的价值,包括提升物流运营效率、降低物流成本、优化供应链管理、增强企业竞争力和促进可持续发展等。这些价值的实现将有助于企业在激烈的市场竞争中保持领先地位并实现可持续…

ECMAScript详解

ECMAScript是JavaScript的标准化名称,由Ecma International(国际电信联盟)维护。ECMAScript是一种脚本语言,用于客户端和服务器端的编程。 ECMAScript的历史: 1997年,JavaScript 1.1发布, Net…

cfa一级10个科目最科学的复习顺序!!

众所周知,CFA一级有10门课,包括01道德,02数量,03经济学,04财务报表,05企业金融,06资产组合,07权益投资,08固定收益,09衍生品和10另类投资。那么这些课有没有先…

【网络原理】HTTPS详解

一.HTTPS的相关基本概念 HTTPS:由于HTTP协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况. 可能会出现运营商劫持,黑客入侵等不利影响, 因此就引入了HTTPS,其本质上就是在HTTP协议的基础上,引入了一个加密层SSM.什么是运营商劫持? 例如我们要…

TCP/UDP的连接机制

TCP/UDP的连接机制 TCP的连接机制 TCP(Transmission Control Protocol)是一种面向连接的协议,提供可靠的、按顺序的数据传输服务。TCP的连接机制包括连接建立、数据传输和连接终止。 1. 连接建立(三次握手) TCP通过…

梳理清楚的echarts地图下钻和标点信息组件

效果图 说明 默认数据没有就是全国地图, $bus.off("onresize")是地图容器变化刷新地图适配的,可以你们自己写 getEchartsFontSize是适配字体大小的,getEchartsFontSize(0.12) 12 mapScatter是base64图片就是图上那个标点的底图 Ge…

flink 和 clipper搭配使用

Flink是一个用于流处理和批处理的开源框架,可以实时数据处理和分析。 Clipper 是一个用于机器学习模型服务化的开源框架,能够轻松部署和管理机器学习模型,使模型可以通过统一的接口提供在线推理服务。 flink和clipper搭配使用: …