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

 
 
 
Reply to this topicStart new topic
> Скорость LPC2148 с MAM и без MAM, результаты небольшого тестирования
Puzan
сообщение Sep 25 2007, 12:38
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Если кому-то интересно, вот результаты небольшого теста скорости LPC2148 с включеным MAM и с выключеным.

Пояснения: DSBL - MAM выключен, FULL - включен, PART - только для последовательного доступа к коду. Проценты - проценты занятости процессора. Число - коэффициент "тормознутости" относительно работы из RAM.
Частота ядра 60МГц, переферия 15МГц.
Выполняется ядро ОС, 5 пользовательских потоков, 1 idle-поток. Переключение потоков раз в 1мс. Еще работает таймер, который прерывает программу раз в 62.5мкс и выполняет немножко кода.
В одном потоке выводится анимация на LCD через I2C (30 кадров/c), другие два суют в фифо данные примерно 25 раз в сек., четвертый эти данные вынимает (10 раз в сек.) и пишет в файл на MMC через SSP, пятый 20 раз в сек. мониторит стек (следит за переполнениями). Все они выводят отладку в UART. IDLE-поток заводит ядро в powersave.
Вот результат:

Код
RAM              12%     1

MAM DSBL 1clk    ---
MAM DSBL 2clk    18%     1.50
MAM DSBL 3clk    23%     1.92
MAM DSBL 5clk    33%     2.75
MAM DSBL 7clk    40%     3.33

MAM FULL 1clk    ---
MAM FULL 2clk    14%     1.17
MAM FULL 3clk    14%     1.17
MAM FULL 5clk    18%     1.50
MAM FULL 7clk    22%     1.83

MAM PART 1clk    ---
MAM PART 2clk    15%     1.25
MAM PART 3clk    16%     1.33
MAM PART 5clk    18%     1.50
MAM PART 7clk    23%     1.92


Интересно посмотреть на результаты AT91SAM7 (на какую производителность стоит расчитывать?).
Go to the top of the page
 
+Quote Post
DmitryV
сообщение Sep 26 2007, 07:38
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 31
Регистрация: 16-06-06
Пользователь №: 18 105



Интересно, почему есть разница при разном количестве циклов при отключенном MAM...
И как получилось запустить программу с 2clk при 60MHz? При времени доступа к флэшке ~50ns надо минимум 3 такта на 60 MHz (~17ns = 1 такт).
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 26 2007, 08:16
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Информация полезная и нужная, но есть вопросы .
1. Присоединяюсь к Dmitry V.
2. Интересует последняя колонка и формулы, по которым производится расчет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 26 2007, 08:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DmitryV @ Sep 26 2007, 10:38) *
Интересно, почему есть разница при разном количестве циклов при отключенном MAM...

Интересно было-бы если разницы не было.

Для справок - частота почти 60MHz, исполнение из Flash 3ws. ARM Mode. Попугаемер обычный - Dhrystones 2.1. Компилятор IAR 5.10 оптимизация тупо (никаких подгонок под тест) максимальная по производительности.
Код
mamm 0
bench
Benchmarks(V2.1):41242 Dhrystones/s. Loops:50, CPUticks:71507-911
mamm 1
bench
Benchmarks(V2.1):72988 Dhrystones/s. Loops:50, CPUticks:40405-407
mamm 2
bench
Benchmarks(V2.1):83784 Dhrystones/s. Loops:50, CPUticks:35199-309


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Sep 26 2007, 08:43
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Результаты при выключенном полностью МАМ как то очень оптимистичны.
По моим прикидкам при отключенном МАМ производительность снижается до 5 раз.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 26 2007, 08:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Andy Mozzhevilov @ Sep 26 2007, 11:43) *
По моим прикидкам при отключенном МАМ производительность снижается до 5 раз.

Что измерилось, то измерилось. Тест достаточно комплексный и, естественно, максимально плохой результат на некотором куске линейного кода будет хуже. Провал более, чем в два раза тоже не в радость.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 26 2007, 09:03
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Проверить влияние MAM это вообще святое дело.
Поскольку от него сильно зависит сбоеустойчивость.
Но советовал бы тестировать на более однородных кусках кода, тогда лучше проявляются интересные моменты, как например то, что режим ARM по скрости начинает проигрывать THUMB при больших установках MAMTIM
http://aly.projektas.lt/Tests/LPC/ARM-comp...s%20tests.htm#4

Цитата(Puzan @ Sep 25 2007, 16:08) *
Если кому-то интересно, вот результаты небольшого теста скорости LPC2148 с включеным MAM и с выключеным.

Пояснения: DSBL - MAM выключен, FULL - включен, PART - только для последовательного доступа к коду. Проценты - проценты занятости процессора. Число - коэффициент "тормознутости" относительно работы из RAM.
Частота ядра 60МГц, переферия 15МГц.
Выполняется ядро ОС, 5 пользовательских потоков, 1 idle-поток. Переключение потоков раз в 1мс. Еще работает таймер, который прерывает программу раз в 62.5мкс и выполняет немножко кода.
В одном потоке выводится анимация на LCD через I2C (30 кадров/c), другие два суют в фифо данные примерно 25 раз в сек., четвертый эти данные вынимает (10 раз в сек.) и пишет в файл на MMC через SSP, пятый 20 раз в сек. мониторит стек (следит за переполнениями). Все они выводят отладку в UART. IDLE-поток заводит ядро в powersave.
Вот результат:

Код
RAM              12%     1

MAM DSBL 1clk    ---
MAM DSBL 2clk    18%     1.50
MAM DSBL 3clk    23%     1.92
MAM DSBL 5clk    33%     2.75
MAM DSBL 7clk    40%     3.33

MAM FULL 1clk    ---
MAM FULL 2clk    14%     1.17
MAM FULL 3clk    14%     1.17
MAM FULL 5clk    18%     1.50
MAM FULL 7clk    22%     1.83

MAM PART 1clk    ---
MAM PART 2clk    15%     1.25
MAM PART 3clk    16%     1.33
MAM PART 5clk    18%     1.50
MAM PART 7clk    23%     1.92


Интересно посмотреть на результаты AT91SAM7 (на какую производителность стоит расчитывать?).
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 26 2007, 09:24
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(AlexandrY @ Sep 26 2007, 13:03) *
проявляются интересные моменты, как например то, что режим ARM по скрости начинает проигрывать THUMB при больших установках MAMTIM

MAMTIM=5,6,7 - это гипотетические случаи. Я бы их в рассмотрение не брал.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Sep 26 2007, 10:42
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата
И как получилось запустить программу с 2clk при 60MHz? При времени доступа к флэшке ~50ns надо минимум 3 такта на 60 MHz (~17ns = 1 такт).

Тем не менее работает. Наверное есть запас производительности у флэшки. На 1clk не заработало. smile.gif

Цитата
Интересует последняя колонка и формулы, по которым производится расчет.

Последняя колонка - это те-же проценты, только приведено к скорости на RAM. Это я посчитал для удобства оценки.

Забыл сказать, что весь код ARM. C THUMB у GCC есть глюк, который до сих пор не исправили (двойное уменьшение LR при вызове функции из прерывания).
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 26 2007, 11:12
Сообщение #10


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Puzan @ Sep 26 2007, 14:42) *
Тем не менее работает. Наверное есть запас производительности у флэшки. На 1clk не заработало. smile.gif
Последняя колонка - это те-же проценты, только приведено к скорости на RAM. Это я посчитал для удобства оценки.

Забыл сказать, что весь код ARM. C THUMB у GCC есть глюк, который до сих пор не исправили (двойное уменьшение LR при вызове функции из прерывания).

Спасибо. Действительно, запас по флешке есть, но не уверен, что надо выходить за предельные параметры.
У меня сложилось устойчивое субъективное мнение, что без оптимизации по скорости (с подстановкой) эффекта от MAM почти не ощущается.
Конечно, на длинных прямых дистанциях великан обгоняет коротышку. Шутка.
Go to the top of the page
 
+Quote Post
ljerry
сообщение Sep 27 2007, 10:19
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-02-06
Из: Зеленоград
Пользователь №: 14 071



Цитата(Puzan @ Sep 26 2007, 14:42) *
Забыл сказать, что весь код ARM. C THUMB у GCC есть глюк, который до сих пор не исправили (двойное уменьшение LR при вызове функции из прерывания).


Только что наблюдал тот же глюк и при компиляции в системе команд ARM (GCC 4.1.1). При объявлении функции как обработчика прерывания на уровне оптимизации O2 регистр LR уменьшается на 4 дважды - в начале обработчика и в конце. На уровне оптимизации O1 у меня было все в порядке, но, правда, там и LR в стеке не сохранялся.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Sep 27 2007, 10:49
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(ljerry @ Sep 27 2007, 14:19) *
Только что наблюдал тот же глюк и при компиляции в системе команд ARM (GCC 4.1.1). При объявлении функции как обработчика прерывания на уровне оптимизации O2 регистр LR уменьшается на 4 дважды - в начале обработчика и в конце. На уровне оптимизации O1 у меня было все в порядке, но, правда, там и LR в стеке не сохранялся.


Этот глюк возникает c опцией -mthumb-interwork. А обработчики прерываний по любому компилятся в ARM.
Go to the top of the page
 
+Quote Post

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

 


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


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