XM4性能优化随记--实时更行

1 篇文章 0 订阅

1.xm4在simulator下运行正常,但在emulator下,运行出现程序/数据不对的情况。
  原因:在simulator下没有检查内存的对齐或者bank 对齐。如vpld 要求内存和bank 对齐,在硬仿环境中就出现了数据执行结果不对。

2.在VS环境中abs指令在XM4执行结果不对。
原因:在XM4下有abs,fabs分别用于整型和浮点型。而下windows vs 都用abs即可。


3.esplice架构的IDE环境,一个lib/prj 点击变量无法跳转到其定义处,此时需要IDE中勾选同workspace 的对应lib/prj的reference.


4.XM4对变量/函数加 段指定定义.必须在一个函数的定义编译的时候能发现自己需要指定段的定义,否则你在其他工程中增加此函数/变量的定义也不起作用。

5.关于中断的理解:

 1)中断优先级仅在同时刻有时效

 2)进入中断vector 后,可屏蔽中断不使能。中断退出,中断恢复。

 3)中断嵌套,任何中断到来都会中断现有中断ISR。新中断会从vector 再次进入,那怕是同一中断。

6.关于仿真:

  1)硬仿有两种接入方式。V17.1为例,可以如下两种。TCS可以进行VBOX 仿真器的配置。建议用第一种方式,但记得在runing  mode选择emulation。simualtor时,如果想统计cycle,必须勾选,runing  mode的performance accurate

    

2)关于仿真器的链接,菊花链接可以支持一个仿真器链接多核。

 

7.关于DDMA:DDMA记住RTL1.2.0版本是支持256bit的desc,之前的版本是128bit.

8.r8-r15寄存器,尽量少用。r8寄存器一般被编译器用来做SP的指针操作。

9.关于retreg 寄存器,会配套有个retreg temp寄存器。

   call指令:后台,PC+1->regtreg

   ret指令:regtreg ->pc

   push/st  regtreg, 会把temp 压栈,再把retreg->temp。 pop/ld   temp->regtrg 再栈的值给temp再。temp用于regtreg 缓存。

10.关于指令slot,一个slot 可以理解为一个指令,指令并行目前最多4slot.

11.关于汇编,数据类型。指令.类型

     di: VOID

     ui:UINT

     i8:int8 (8个 int)

12. 关于指令后操作带+ 的post操作。 post后处理是对操作寄存器的后处理,即寄存器指令执行完后+这个值。

13.关于vector:  XM4 与arm neon不同,很多数据类型可以像传统的数据类型一样操作。赋值,++,--等运算给,反汇编可以看出,这些操作由编译完成了vector一些ld,st,mov 辅助操作。向量支持的运算操作如下。、

注:float 不支持直接赋值,但支持强制类型转化 。 float fa=(float)2.其实后天做了vint2fp指令。

14.关于性能优化:simulator 到emulator的实际运行再10倍左右的差距。通过VPU和DDR->TCM ,DDMA,bank/block指令优化可以达到2倍的差距。软仿和硬仿的差距主角是,软仿无法模拟到DDR的碰撞和带宽的差距。

 软仿和硬仿的差距主要就是DDR的使用上,最终能优化多少,还是要看你的业务能多少不受DDR影响。

 

15.优化中经常出现编译并行的情况,要求前后指令对内存的数据使用必须有完整的前后顺序,因此引入了barrier 指令。ARM 、DSP。

 

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值