与cortexa15 CPU相比,cortexa7 CPU执行循环所需的时间太长

时间:2018-09-28 09:23:52

标签: cpu cortex-a

我正在测试CPU性能。我使用了支持Armv7和SMP的02板:cortexa15@1.5GHz双核和cortexa7 @ 1GHz双核。

然后,执行如下所示的简单循环并测量执行时间:

#define DEFAULT_CALC_LOOPS 1000
#define LOOPS_MULTIPLIER 4.2
...
loops = DEFAULT_CALC_LOOPS;
...
void *calc(int loops)
{
    int i, j;
    for (i = 0; i < loops * LOOPS_MULTIPLIER; i++) {
        for (j = 0; j < 125; j++) {
            // Sum of the numbers up to J
            volatile int temp = j * (j + 1) / 2;
            (void)temp;
        }
    }
    return NULL;
}

经过各种测试,结果显示在02板上:

  • cortexa15:〜1.2毫秒

  • cortexa7:〜5毫秒

以上结果之间存在很大差异。

对结果有任何依赖性或限制吗?谁有经验可以分享我的想法?谢谢。

1 个答案:

答案 0 :(得分:0)

对我来说,cortexa15的性能是cortexa7的2倍至3倍。此外,我有cortexa15@1.5GHz和cortexa7 @ 1GHz。 所以我也认为上述结果是合理的。

下面,我将以cortexa15案例研究为例来衡量执行时间:

  1. 用于计算CPU时间的公式:

    CPU执行时间=指令数x CPI x时钟周期

I:指令数

CPI:每条指令的周期(IPC = 1 / CPI)

C:时钟周期(1 / CPU时钟)-秒

  1. 推荐社区:https://en.wikipedia.org/wiki/Instructions_per_second

看看cortexa15双核(与iWave G1M / N相同)。

Cortexa15在1.5 GHz下执行9,900 MIPS,平均IPC = 6.6

  

CPI = 1 / IPC = 1 / 6.6 = 0.1515个周期/指令

  1. G1M / N的最大频率为1.5 GHz(时钟范围为〜1.3 GHz-1.5 GHz) 我认为主板可以尽最大努力(1.5 GHz)
  

C = 1 /(1.5.10 ^ 9)= 0.6667 ns

  1. 将C代码转换为ARM arch的汇编代码:

    for(i = 0; i <循环* LOOPS_MULTIPLIER; i ++){

        for (j = 0; j < 125; j++) {
            // Sum of the numbers up to J
            volatile int temp = j * (j + 1) / 2;
            (void)temp;
        }
    

    }

引用:https://godbolt.org

  

I =((((9 + 9)* 125)+ 17)* 1000 * 4.2 = 9521400

CPU执行时间最终为0.000962秒。大约 0.962 ms 即可尽最大努力来执行循环。

在最坏的情况下(在1.3 GHz下),循环的CPU时间约为 1.109毫秒

通过测试,我得到了相同的值。

-

我对cortexa7 @ 1GHz的处理更多。

  

CPU执行时间= 9521400 * 1 / 1.9 * 1ns = 5.011(ms)