|
|
  |
Скорость LPC2148 с MAM и без MAM, результаты небольшого тестирования |
|
|
|
Sep 25 2007, 12:38
|
Участник

Группа: Новичок
Сообщений: 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 (на какую производителность стоит расчитывать?).
|
|
|
|
|
Sep 26 2007, 07:38
|
Участник

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

|
Интересно, почему есть разница при разном количестве циклов при отключенном MAM... И как получилось запустить программу с 2clk при 60MHz? При времени доступа к флэшке ~50ns надо минимум 3 такта на 60 MHz (~17ns = 1 такт).
|
|
|
|
|
Sep 26 2007, 08:39
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Sep 26 2007, 09:03
|

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 (на какую производителность стоит расчитывать?).
|
|
|
|
|
Sep 26 2007, 10:42
|
Участник

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

|
Цитата И как получилось запустить программу с 2clk при 60MHz? При времени доступа к флэшке ~50ns надо минимум 3 такта на 60 MHz (~17ns = 1 такт). Тем не менее работает. Наверное есть запас производительности у флэшки. На 1clk не заработало.  Цитата Интересует последняя колонка и формулы, по которым производится расчет. Последняя колонка - это те-же проценты, только приведено к скорости на RAM. Это я посчитал для удобства оценки. Забыл сказать, что весь код ARM. C THUMB у GCC есть глюк, который до сих пор не исправили (двойное уменьшение LR при вызове функции из прерывания).
|
|
|
|
|
Sep 26 2007, 11:12
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Puzan @ Sep 26 2007, 14:42)  Тем не менее работает. Наверное есть запас производительности у флэшки. На 1clk не заработало.  Последняя колонка - это те-же проценты, только приведено к скорости на RAM. Это я посчитал для удобства оценки. Забыл сказать, что весь код ARM. C THUMB у GCC есть глюк, который до сих пор не исправили (двойное уменьшение LR при вызове функции из прерывания). Спасибо. Действительно, запас по флешке есть, но не уверен, что надо выходить за предельные параметры. У меня сложилось устойчивое субъективное мнение, что без оптимизации по скорости (с подстановкой) эффекта от MAM почти не ощущается. Конечно, на длинных прямых дистанциях великан обгоняет коротышку. Шутка.
|
|
|
|
|
Sep 27 2007, 10:19
|
Участник

Группа: Участник
Сообщений: 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 в стеке не сохранялся.
|
|
|
|
|
Sep 27 2007, 10:49
|
Участник

Группа: Новичок
Сообщений: 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.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|