标签: cortex-a8

ARM Cortex-A8 流水线是 13 级还是 14 级?

如果您在其中一个 ARM演示文稿中看到了这张流行的 ARM Cortex-A8 流水线图。很明显,取指令阶段需要 3 个周期,但第一个周期有点折扣。但为什么?有什么想法吗?

谢谢...

在此处输入图片说明

arm cortex-a8

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

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
查看次数

霓虹灯:isnan(val)内在函数

我想isnan()在NEON内在函数中使用功能.Below是我的代码:input1,input2和输出类型为float.这些值从输入图像/帧的ROI更新.(图像处理示例)

for(x = 0;x<ht;x++){
for(y = 0;y<width;y++){
float a  = (input1[x + (y * width)]);
float b  = (input2[x + (y * width)]);
// check for division by zero
output = 0.0f;
if (!(isnan(a) | isnan(b) | (b == 0)))
{
        output[x + (y * width)] = a / b;
}
}
Run Code Online (Sandbox Code Playgroud)

}

通过使用牛顿Raphson方法,我试图通过使用氖内在进行除法.但是我无法获得任何内在函数.isnan我得到了 __builtin_isnan()这不是一个内在函数.我怎么能isnan用于float32x4_t afloat32x4_t b

arm simd neon cortex-a8

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

Cortex-a8上的NEON有多少个功能单元?

我的问题是ARM cortex-a8上的NEON单元有多少功能单元?如果我已经正确读取,TRM没有明确说明ARM cortex-a8的NEON核心上的功能单元数量.

embedded arm simd neon cortex-a8

-2
推荐指数
1
解决办法
395
查看次数

标签 统计

arm ×4

cortex-a8 ×4

neon ×3

simd ×3

embedded ×2