Raspberry Pi 1 B vs. Raspberry Pi 2 B ASM速度差异

时间:2016-02-11 09:13:48

标签: assembly arm raspberry-pi raspberry-pi2

我有以下代码:

for (short l = j; l < j + input->w_small; l = l + 4){
  add_b = k * input->w_big + l;
  add_s = (k - i) * input->w_small + l - j;

  __asm__ __volatile__(
      "ldr %%r1, [%1];"
      "ldr %%r2, [%2];"
      "usada8 %0, %%r1, %%r2, %0;"
      :"+r" (sad)
      : "r" (input->pic_big + add_b), "r" (input->pic_small + add_s)
      : "r1", "r2"
      );
}

这是图像处理算法的一部分。应用程序在RPi 1 B上运行29.24秒,在RPi 2 B上运行7.65秒,从而加速3.82倍。问题是,为什么?我理解,模型之间存在架构上的变化,但我没有找到任何关于USADA8的参考,它在ARMv7上应该明显更快。有任何想法吗?

P.S。:不要误会我的意思,我对结果非常满意,只是好奇:)

1 个答案:

答案 0 :(得分:1)

可能有很多原因,但主要原因可能是(根据this):

  • 核心频率不同(2B型和700MHz的900MHz 对于模型1B)
  • 2B的L1缓存是1B模型中L1缓存的两倍(16kB vs 32 kB)。我怀疑L2缓存和一般来说缓存层次结构也不同。
  • 两者可能有不同的config(您可以调整各种事物的频率)