打印

ARM V7 系列NEON耗时优化异常问题,求解?

[复制链接]
197|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
棋王高手|  楼主 | 2018-9-9 08:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前正在做ARMv7 系列芯片算法的NEON优化,发现一个耗时异常的地方,现象描述如下:
首先主循环里会处理三类数据,三类数据分开存放在DDR上,每次循环分别处理三类数据的8个uchar数据,存储数据也是分三类数据地址分开存放,我分别定义三个uint8*8的变量用来暂时存储处理的结果,在使用vst1_u8从寄存器存储数据到DDR的时候,只要我存储处理过后的三路数据中的一路,耗时就会增加到59ms,这时候不管是否存储另外两路数据,耗时都是59ms。如果我从DDR直接加载数据,给该变量赋值,不处理直接写到DDR,统计总循环的耗时会降低20ms,同样的我存储其他变量的数据到DDR耗时也会下降20ms,只要一存储处理过后的数据中的一路,总循环耗时就突增到59ms,想不明白,都是从d寄存器或者q寄存器写数据到DDR,为什么耗时会差这么多,只要存储处理过的数据耗时就上升到59ms。该算法原来的耗时是180ms,现在优化到59ms,想弄清楚耗时增长的原因?是否有别的优化方法进一步降低耗时?(注:由于该算法的特性,算法中使用寄存器数量已经超过的ARMv7 NEON中的寄存器数量。)

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

378

帖子

0

粉丝