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

 
 
> По скорости ядра STR912, восемь операторов на ассемблере за 1.6мкс?!!
HardJoker
сообщение Jun 13 2007, 15:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 995
Регистрация: 3-06-05
Пользователь №: 5 713



Есть main(), фактически из одного бесконечного цикла для проверки производительности ядра STR912FW44. Среда - IAR4.40:

u8 TMP0 = 0;

while(1)
{
if (Tick == 0)
{
GPIO_WriteBit(GPIO0, GPIO_Pin_0, Bit_RESET);
Tick = 1;
}
else
{
GPIO_WriteBit(GPIO0, GPIO_Pin_0, Bit_SET);
Tick = 0;
}
}

Время выполнения 1,6мкс. Ядро тактируется 96MHz через PLL. Память flash конфигурируется с двумя тактами ожиданмия и тактируется 48MHz

//FMI Waite States
FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE,\
FMI_LVD_ENABLE, FMI_FREQ_HIGH);


В симуляторе при выключенной оптимизации по скорости все действия занимают 8-мь ассемблерных команд. С учетом медленного доступа к внутренней flash (не более 24MHz) на выполнение должно уйти не более 320ns. Измеренное значение почти в пять раз больше. Где может теряеться вычислительный ресурс?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jun 14 2007, 11:02
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Увы, интересует именно выполнение короткой процедуры. Штатная программа состоит из набора простых действий, которые должны выополняться за минимальный временной интервал. Иногда по прерыванию требуется обработать разовую команду также за минимальное время. Интегральные оценки производительности не подходят. Возможно, выход в выполнении всех критичных процедур из внутренней SRAM.


Это тут причем ? какая разница короткая или длиная, мленькаыя или большая. Я посоветовал как измерить скорость выполния 1 команды NOP, тоесть после этого теста можзно сказать что 1 команда ноп выполняется за некоторое время. Другое доло когда вы в своих коротких функциях испрользуете ножки, в этом случае ядро будет останавливаться и ждать выполения команды, да и на конвеерных ядрах много переходов не есть хорошо, особенно в этом ядре у которого кеш переходов очень мальнький, а в FW версии в отличии от FAW еще и глючный!. Такчто оптимизируйте свою программу и делайте выводы. Еще в ковеерных ядрах выполнениефункции может колебаться на длинну конвеера.

P.S. у STR время выполнения из ОЗУ и из FLASH практически одинаковое.
Go to the top of the page
 
+Quote Post
HardJoker
сообщение Jun 14 2007, 11:39
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 995
Регистрация: 3-06-05
Пользователь №: 5 713



Цитата(MALLOY2 @ Jun 14 2007, 15:02) *
Это тут причем ? какая разница короткая или длиная, мленькаыя или большая. Я посоветовал как измерить скорость выполния 1 команды NOP, тоесть после этого теста можзно сказать что 1 команда ноп выполняется за некоторое время. Другое доло когда вы в своих коротких функциях испрользуете ножки, в этом случае ядро будет останавливаться и ждать выполения команды, да и на конвеерных ядрах много переходов не есть хорошо, особенно в этом ядре у которого кеш переходов очень мальнький, а в FW версии в отличии от FAW еще и глючный!. Такчто оптимизируйте свою программу и делайте выводы. Еще в ковеерных ядрах выполнениефункции может колебаться на длинну конвеера.

P.S. у STR время выполнения из ОЗУ и из FLASH практически одинаковое.


Большое спасибо за ценный совет. Подозрения на конвейер были и раньше. Как я понимаю, отключить конвейер нельзя, хотя очень бы хотелось. Как раз из-за необходимости загружать его каждый раз в том числе при переходах.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- HardJoker   По скорости ядра STR912   Jun 13 2007, 15:47
- - etoja   Биты ввода-вывода не могут переключаться с большой...   Jun 14 2007, 02:59
|- - HardJoker   Цитата(etoja @ Jun 14 2007, 06:59) Биты в...   Jun 14 2007, 08:05
|- - MALLOY2   Цитата(HardJoker @ Jun 14 2007, 12:05) Вс...   Jun 14 2007, 09:53
|- - bzx   2 MALLOY2 Всё правильно, но, возможно, что HardJok...   Jun 14 2007, 10:27
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 13:53) Это ...   Jun 14 2007, 10:55
- - MALLOY2   Так зачем тогда такой умный код ? Почему бы не т...   Jun 14 2007, 10:36
- - MALLOY2   Конвеер это начало начал, благадаря ему повышается...   Jun 14 2007, 11:48
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 15:48) Конв...   Jun 14 2007, 12:01
- - MALLOY2   Разве такое возможно ? невстречал ниодного ядра с ...   Jun 14 2007, 12:11
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 16:11) Разв...   Jun 14 2007, 12:15
|- - bzx   Цитата(MALLOY2 @ Jun 14 2007, 16:11) Разв...   Jun 15 2007, 05:15
- - AlexandrY   Ну сперва убедитесь, что у вас выставлены все наст...   Jun 14 2007, 16:28
|- - HardJoker   Цитата(AlexandrY @ Jun 14 2007, 20:28) Ну...   Jun 14 2007, 18:20
|- - AlexandrY   Вот здесь найдете проекты для разных компиляторов ...   Jun 14 2007, 20:35
- - MALLOY2   ЦитатаКонвейер в STR91x - это не атрибут ядра, а п...   Jun 18 2007, 08:15
|- - AlexandrY   По моему из контекта обсуждения достаточно ясно, ч...   Jun 18 2007, 19:41
|- - HardJoker   Цитата(AlexandrY @ Jun 18 2007, 23:41) По...   Jun 19 2007, 07:21
|- - AlexandrY   Вот обработчик с разрешением вложенных прерываний....   Jun 21 2007, 13:32
- - KonstantinT   Ну и мои 5 коп, сравнивал Гертцеля из флеша и ОЗУ ...   Jun 18 2007, 19:20
- - MALLOY2   ЦитатаКонвеер самого ARM-а мало кому интересен П...   Jun 19 2007, 08:57


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 18:51
Рейтинг@Mail.ru


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