Процессорам cortexa7 потребовалось слишком много времени для выполнения цикла по сравнению с процессорами cortexa15 - PullRequest
0 голосов
/ 28 сентября 2018

Я тестирую производительность процессора.Я использовал 02 платы с поддержкой armv7 и SMP: двухъядерный cortexa15@1.5 ГГц и двухъядерный cortexa7 @ 1 ГГц.

Затем выполните простой цикл, как показано ниже, и измерьте время выполнения:

#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 мс

  • кортекса 7: ~ 5 мс

Между вышеуказанными результатами есть большая разница.

Существуют ли какие-либо зависимости или ограничения, влияющие на результаты?Кто с этим сталкивался может мне поделиться идеями?Благодаря.

1 Ответ

0 голосов
/ 28 сентября 2018

Для меня cortexa15 имеет производительность в 2–3 раза выше, чем у cortexa7.Кроме того, у меня есть cortexa15@1.5 ГГц и cortexa7 @ 1 ГГц.Поэтому я также считаю, что приведенный выше результат является разумным.

Ниже я приведу пример для примера внедрения cortexa15 для измерения времени выполнения:

  1. Формула для расчета времени процессора:

    Время выполнения ЦП = количество команд x CPI x Цикл тактов

I: Количество команд

CPI: циклы на инструкцию (IPC = 1/ CPI)

C: тактовый цикл (1 / тактовая частота процессора) - секунда

Обратитесь к сообществу: https://en.wikipedia.org/wiki/Instructions_per_second

Посмотрите на двухъядерный процессор cortexa15 (то же самое с iWave G1M / N).

Cortexa15 выполняет 9 900 MIPS на частоте 1,5 ГГц, в среднемМПК = 6,6

ИПЦ = 1 / МПК = 1 / 6,6 = 0,1515 цикл / инструкция

G1M / N имеют максимальную частоту 1,5 ГГц (диапазон тактовых частот ~ 1,3 ГГц - 1,5 ГГц). Я полагаю, что платы работают максимально эффективно (1,5 ГГц)

C = 1 / (1.5.10 ^ 9) = 0.6667 нс

Перевести код C в код сборки для ARM-арки:

для (i = 0; 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

Время выполнения ЦП окончательно составляет 0,000962 секунды.Приблизительно 0,962 мс для выполнения цикла с максимальным усилием ЦП.

В худшем случае (при 1,3 ГГц) время ЦП для цикла составляет около 1,109 мс .

Через тестирование я получил те же значения.

-

Я делаю еще один случай для cortexa7@1GHz.

Выполнение процессоравремя = 9521400 * 1 / 1,9 * 1 нс = 5,011 (мс)

...