Optimization 为ARM优化库

Optimization 为ARM优化库,optimization,assembly,arm,cpu,Optimization,Assembly,Arm,Cpu,我正在为Android编写一个应用程序,它使用一个库SoX。这个库是非常强大的ARM处理器负载。提示:在这里我可以阅读有关如何优化ARM库的内容。有人能帮忙吗?我已经在汇编中优化代码很长时间了,从Amiga上的MC68000开始,然后主要是ARM9E(ARMv5E)。 ARM11对新的类似SIMD的指令和饱和很满意。然后是科雷特斯 你知道吗?与Coretex-A系列捆绑在一起的霓虹灯夺走了我为ARM优化的全部动力 未优化的NEON开箱即用代码的运行速度大约是装配优化的ARM代码的5倍,而且比AR

我正在为Android编写一个应用程序,它使用一个库SoX。这个库是非常强大的ARM处理器负载。提示:在这里我可以阅读有关如何优化ARM库的内容。有人能帮忙吗?

我已经在汇编中优化代码很长时间了,从Amiga上的MC68000开始,然后主要是ARM9E(ARMv5E)。 ARM11对新的类似SIMD的指令和饱和很满意。然后是科雷特斯

你知道吗?与Coretex-A系列捆绑在一起的霓虹灯夺走了我为ARM优化的全部动力

未优化的NEON开箱即用代码的运行速度大约是装配优化的ARM代码的5倍,而且比ARM本身要容易得多:在我努力工作的地方,NEON几乎总是有完全相同的或更精确的装配指令同时在多个元素上执行

我了解到,除了双问题功能外,Coretex的ARM指令计时也发生了很大变化,这意味着我必须做很多事情,而不是在ARM9上实现最高性能,但老实说,我不在乎了。霓虹灯是最好的选择

再见,手臂

不要在手臂上浪费时间,尤其是霓虹灯。开始学习霓虹灯吧


关于NEON的精彩介绍:

您还没有指定目标硬件。Android设备的范围从低端ARMv5E处理器到最新的Tegra3。如果你想让你的代码在种类最多的设备上运行良好,那么你需要支持ARMv5(它没有霓虹灯)。即使是Tegra2(目前Android平板电脑最流行的CPU)也缺少霓虹灯支持。您可以在Android中使用一个“胖二进制文件”来解决这个问题,它在一个APK中同时包含ARMv5和ARMv7代码。关于优化ARM代码的一些一般规则:

1) ARMv5/ARMv6处理器具有微型缓存—优化数据集以适应最小的空间,并重复使用缓冲区,而不是不断分配/释放缓冲区以避免将其从缓存中逐出

2) ARMv5/ARMv6处理器只有4个写缓冲区。这意味着在紧循环中,由于占用了写缓冲区,写字节或写短将以写长的一半左右的速度运行

3) 对于内存受限的数据处理循环,预取缓存(PLD指令)。它通常可以将速度提高20-25%

4) 对于处理位/字节的代码,用ASM编写通常是个好主意,因为高级语言在处理这种类型的数据方面做得不好


L.B.

嗨!谢谢你的回答,但我不太懂霓虹灯的光学化。我可以用电子邮件和你联系吗?如果你有空闲时间,请回答。问题是。。。。。我不知道你的电子邮件地址。你没在我的个人资料里看到我的吗?哦,是的。我的电子邮件是:wkyborgw@gmail.com