关于neon


这个学期的任务在开学的时候就已经定了下来.和老师聊过关于自己的想法,老师也表示了自己的想法,后来发现老师想的还是比我周到点.导师的意思是让我继续搞我的ARM板子,一直觉得搞这个没有搞PC机来的好.因为现在的板子的硬件已经提高了很多,可以说比以前的pc机都要强悍很多,在上面作开发让我觉得与在pc机上作开发没有什么区别.这样的思想在上个学期一直在我脑袋中存在呢,所以很多时候做事不是很积极的.但是后来导师说了,说你认为在上面做简单是因为你还没有深入进去,你还没了解它比较内涵的东西.那个时候的我觉得导师是忽悠我的,或者我真的只是想作一个软件开发者,而不喜欢自己去碰硬件,总是想和老师说这些.

大概老师是看穿我的思想了,在开学的时候就把任务给我安排好了.不能让我随便打酱油了,而且还和我说了我现在到底是往哪个方向发展.其实这个学期的任务看上去其实很简单的,就是把程序在板子能跑的更加快.那么要达到这个目的的最为主要的就是优化.导师的意思是说我要往底层发展,做一个硬件工程师,当然与那些画板子的工程师不一样的,我的人物就是提出自己的硬件要求和对程序进行最大和最深的优化.

一直作的都是C级别的优化,可是在上个学期的测试中发现这种级别的优化是很水的,提高的程度不是很客观.现在要往更为底层的发展.要接触硬件要接触汇编.这让我认清了自己的道路,而且本人对这个还是很感兴趣的.


接下来就要讲的就是NEON这个东西了.

一开始见到它还觉得它是一个可有可无的技术,后来看了很多的文章以后发现这个才是优化的突破口.

1.什么是SIMD ####

其实这个术语我很久以前就已经听过了,可以一直只有表面的理解,不就是单指令多数据流吗.难道这个还能比MIMD还要牛逼吗,一直觉得这是一种可有可无的技术,就算就在今天我还是觉得这样的技术就是过渡性的技术.可是今天看了一篇文章以后才发现它都有用之处.
通常我们进行多媒体处理的时候,很多的数据都是16位或者8位的,如果这些程序运行

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
NEON是ARM架构中的一种SIMD(单指令多数据)技术,它可以在同一时钟周期内对多个数据进行并行处理,从而提高数据处理的效率。在NEON中,可以使用NEON寄存器来加速拷贝操作。 对于NEON拷贝,有两个引用内容提供了相关的函数实现。其中,引用给出了一个用NEON寄存器进行加速拷贝的函数memcpy_neon_64,它一次可以拷贝64字节,并适用于64字节的对齐拷贝。函数实现的伪代码如下: ```assembly void* memcpy_neon_64(void* dest, const void* src, size_t size) { mov r3, r0 // 保存返回值 0: PLD(pld [r1, #256]) // 预取数据 subs r2, r2, #64 // 计算剩余拷贝大小 vldmia.64 r1!, {d0-d7} // 从源地址加载数据到寄存器 vstmia.64 r0!, {d0-d7} // 将寄存器中的数据存储到目标地址 bgt 0b // 如果还有剩余数据,则继续循环 mov r0, r3 // 将返回值保存到r0寄存器中 mov pc, lr // 退出函数 } ``` 另外,引用提供了另一种实现方式,函数memcpy_1一次只拷贝一个字节,可用于对齐拷贝和非对齐拷贝。函数实现的伪代码如下: ```c void *memcpy_1(void *dest, const void *src, size_t count) { char *tmp = dest; const char *s = src; while (count--) *tmp++ = *s++; return dest; } ``` 如果你想要了解更多关于NEON指令的使用方法,可以参考GCC官方文档中的ARM NEON Intrinsics页面[3]。 综上所述,NEON memcpy是利用NEON寄存器来加速拷贝操作的一种技术,可以一次拷贝多个字节,提高数据处理效率。可以根据需求选择适合的NEON拷贝函数进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值