реклама на сайте
подробности

 
 
> ARM cycle count, как правильно мерять производительность кода.
Bosicc
сообщение Dec 3 2009, 10:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 5-03-06
Из: Украина, Киев
Пользователь №: 14 970



Здравствуйте, уважаемые армоведы.
Просмотрев внимательно по форуму, я нашел много упоминаний о измерении производительности кода под ARM. Одни меряют время, другие пробуют посчитать циклы (cycle count).
В ветке немного затронули проблему измерения тактов, то детально не обсуждали.

И у меня возник вопрос, как правильно оценить эффективность и производительность кода?
Ну вот, например как оценить скорость выполнение FFT?
Я так понимаю, было б правильно посчитать сколько он занимает тактов, а потом умножить на время одного такта.
Тогда под разными процессорами можно было б сказать, за сколько выполнится преобразование.
Для Блекфин как то получены цифры, но вот с помощью чего?
В Keil можно померить время выполнения функции в Симуляторе. Но что это за время? Ведь код может выполнятся из внутреннего кеша процессора или из внешней памяти.

По этому возник еще один вопрос, есть ли какие либо дополнительные тулзы что б мерить не время, а именно cycle count
с учетом всех задержек после выполнения инструкций?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Dec 3 2009, 12:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Bosicc @ Dec 3 2009, 13:59) *
И у меня возник вопрос, как правильно оценить эффективность и производительность кода?

"Правильно-неправильно" - это скорее философский вопрос.
Гораздо понятнее вопрос типа "за сколько секунд (микросекунд, миллисекунд) мой процессор выполнит мою задачу?". Чтобы получить ответ на этот вопрос, я обычно секундомером пользуюсь. Зацикливаю задачу, чтобы общее время выполнения было 30-60 секунд и засекаю время. На мой взгляд, это самый "правильный" способ :-)
Go to the top of the page
 
+Quote Post
Bosicc
сообщение Dec 3 2009, 12:38
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 5-03-06
Из: Украина, Киев
Пользователь №: 14 970



Цитата(scifi @ Dec 3 2009, 14:08) *
Чтобы получить ответ на этот вопрос, я обычно секундомером пользуюсь. На мой взгляд, это самый "правильный" способ :-)

Я думаю что в эту цифру будет внесена погрешность, которая состоит из времени обращения к памяти и т.д. Поскольку код программы может хранится где угодно.
А речь идет как оценить качество кода, в не зависимости от конкретной реализации железа.
Если написать код:
Код
MOV   R0,R1  // 1 cycle
// stolen cycle - processor wait x cycles
LDR    R0,R2 // 2 cycle

То суммарное время будет 3 такта + х тактов которые будет стоять процессор.

Необходим такой механизм, при котором можно будет померят количество тактов кода с учетом архитектуры ядра. ( задержками между инструкциями )
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 3 2009, 12:44
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Bosicc @ Dec 3 2009, 15:38) *
Необходим такой механизм, при котором можно будет померят количество тактов кода с учетом архитектуры ядра. ( задержками между инструкциями )

Ну, обычные вейтстейты умеет учитывать большинство симуляторов, только причем тут "архитектура ядра"?

P.S. LDR выполняется 3 такта.
Go to the top of the page
 
+Quote Post
tocha
сообщение Dec 3 2009, 17:21
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080



Цитата(aaarrr @ Dec 3 2009, 14:44) *
P.S. LDR выполняется 3 такта.

почему три?
по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение.
или я - неправ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 3 2009, 21:34
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(tocha @ Dec 3 2009, 20:21) *
почему три?
по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение.
или я - неправ?

По документации - S+N+I (+S+N if R15 loaded), т.е. 3 или 5 тактов.

P.S. Пардон, речь о Cortex-M3? Тогда вы отчасти правы, но один такт это все равно исключение.
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 3 2009, 21:42
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(aaarrr @ Dec 4 2009, 00:34) *
По документации - S+N+I (+S+N if R15 loaded), т.е. 3 или 5 тактов.

А я вроде мерял на ARM7 LPC - 2 такта получалось.

Кстати если работать с FAST IO у LPC эти регистры прямо к ядру подключены то на ARM7 цикл
Код
while(1) {
FIO0SET0 = 1;
FIO0CLR0 = 1;
}

выполняетя 6 таков - по 2 такта STR и 2 такта branch
а вот на LPC1700 уже за 4 такта - по 1 такту STR и 2 такта branch, потому что если добавить еще пару SET CLR - то цикл становится 6 тактов. (причем мерял на 100 Mhz частоте, но код был из RAM).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Bosicc   ARM cycle count   Dec 3 2009, 10:59
- - aaarrr   Цитата(Bosicc @ Dec 3 2009, 13:59) По это...   Dec 3 2009, 11:06
|- - Bosicc   Цитата(aaarrr @ Dec 3 2009, 13:06) Тулзов...   Dec 3 2009, 11:20
|- - aaarrr   Цитата(Bosicc @ Dec 3 2009, 14:20) Хм... ...   Dec 3 2009, 11:29
- - sergeeff   Выделяешь какой-нибудь свободный и доступный pin. ...   Dec 3 2009, 12:00
|- - _Pasha   Цитата(Bosicc @ Dec 3 2009, 16:38) Необхо...   Dec 3 2009, 12:42
||- - Bosicc   Цитата(aaarrr @ Dec 3 2009, 14:44) Ну, об...   Dec 3 2009, 14:11
|||- - aaarrr   Цитата(Bosicc @ Dec 3 2009, 17:11) А как ...   Dec 3 2009, 14:29
||- - aaarrr   Цитата(KRS @ Dec 4 2009, 00:42) А я вроде...   Dec 3 2009, 21:48
||- - KRS   Цитата(aaarrr @ Dec 4 2009, 00:48) B - то...   Dec 3 2009, 23:52
|- - KRS   Цитата(Bosicc @ Dec 3 2009, 15:38) Необхо...   Dec 3 2009, 14:14
- - AlexandrY   Keil считает так как будто код выполняется из кэша...   Dec 3 2009, 14:35
|- - Bosicc   Цитата(AlexandrY @ Dec 3 2009, 16:35) Kei...   Dec 3 2009, 15:03
|- - AlexandrY   А.. , так у вас притензии к Performance Analyzer-у...   Dec 3 2009, 15:27
||- - tocha   Цитата(AlexandrY @ Dec 3 2009, 17:27) А.....   Dec 16 2009, 12:22
|- - ViKo   Цитата(Bosicc @ Dec 3 2009, 17:03) Я запу...   Dec 4 2009, 16:25
- - klen   мое мнение - 1 лапка + 1 осцилограф реальное время   Dec 3 2009, 20:32
- - KRS   Цитата(klen @ Dec 3 2009, 23:32) мое мнен...   Dec 3 2009, 20:59
- - ar__systems   Цитата(KRS @ Dec 3 2009, 15:59) Да так мо...   Dec 4 2009, 00:40


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 20:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016