相关疑难解决方法(0)

在NEON进行操作时,ARM是否处于空闲状态?

可能看起来类似于:ARM和NEON可以并行工作吗?,但不是,我有一些其他问题(可能是我的理解有问题):

在协议栈中,当我们计算校验和时,这是在GPP上完成的,我现在将该任务作为函数的一部分移交给NEON:

这是我作为NEON的一部分编写的校验和函数,发布在Stack Overflow:Intrinsics中的Neon的校验和代码实现

现在,假设从linux调用此函数,

ip_csum(){
  …
  …
  csum = do_csum(); //function call from arm
  …
  …
}


do_csum(){
  …
  …
  //NEON optimised code
  …
  …
  returns the final checksum to ip_csum/linux/ARM
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下......当NEON进行计算时,ARM会发生什么?ARM闲置吗?还是继续进行其他操作?

你可以看到do_csum被调用,我们正在等待那个结果(或者它看起来像这样)..

注意:

  1. 就cortex-a8而言
  2. 从链接中可以看到do_csum是用内在函数编码的
  3. 使用gnu工具链编译
  4. 如果您还采用多线程或任何其他相关概念或在这些相互操作发生时进入画面,那将会很好.

问题:

  1. 在NEON进行操作时,ARM是否处于空闲状态?(在这种特殊情况下)
  2. 或者它是否搁置了当前的ip_csum相关代码,并占用另一个进程/线程,直到NEON完成?(我对这里发生的事情几乎是愚蠢的)
  3. 如果它处于空闲状态,那么在NEON完成之前,我们怎样才能让ARM继续工作呢?

linux embedded arm neon cortex-a8

12
推荐指数
3
解决办法
2391
查看次数

ARM-NEON如何同步?

就ARM Cortex-A8而言,当NEON执行其指令时,ARM模块是等待还是继续运行?这种同步是如何实现的?如果ARM和NEON正在处理相同的数据/代码段,ARM和NEON内核如何同步?

embedded arm simd neon cortex-a8

4
推荐指数
1
解决办法
516
查看次数

Intrinsics中Neon的校验和代码实现

我正在尝试使用内在函数为NEON实现校验和计算代码(2的补码加法).目前的校验和计算正在ARM上进行.

我的实现从存储器一次取128位到NEON寄存器并进行SIMD(加法),结果从128位数字折叠成16位数.

一切看起来都很好,但我的NEON实现消耗的时间比ARM版本多.

ARM版本需要:0.860000 s NEON版本需要:1.260000 s

注意:

  1. 使用"time.h"中的实用程序进行概述
  2. 校验和函数从示例应用程序调用10,000次,并在完成所有函数运行后计算时间

其他详情:

  1. 使用GNU工具链(arm-none-linux-gnueabi-gcc)来编译内在代码而不是arm工具链.
  2. Linux平台.
  3. C内在代码.

问题:

  1. 为什么NEON版本比ARM版本花费更多时间?(虽然我已经注意使用批次中具有最小循环的内在因素)

  2. 如何实现我想要实现的目标?(与NEON的效率)

  3. 有人可以指向我或分享一些使用ARM-NEON的互操作的示例实现(伪代码/算法/代码,而不是理论实现论文或会谈)吗?

任何帮助将非常感激.

这是我的代码:

uint16_t do_csum(const unsigned char * buff, int len)
{
int odd, count, i;

uint32x4_t result = veorq_u32( result, result), sum = veorq_u32( sum, sum); 
uint16x4_t data, data_hi, data_low, data8;
uint16x8_t dataq;
uint16_t result16, disp[20] = {0,0,0,0,0,0,0,0,0,0};

if (len <= 0)
    goto out;
odd = 1 & (unsigned long) buff;
if (odd) {
    uint8x8_t data1 = veor_u8( data1, data1); …
Run Code Online (Sandbox Code Playgroud)

embedded arm simd neon cortex-a8

1
推荐指数
1
解决办法
1087
查看次数

标签 统计

arm ×3

cortex-a8 ×3

embedded ×3

neon ×3

simd ×2

linux ×1