Перейти к содержанию
    

"Членомер" производительности микроконтроллеров

Случайно наткнулся на "членомер" производительности микроконтроллеров, и он меня очень сильно впечатлил.

 

www.freertos.org/PC/index.html

страница

www.freertos.org/PC/a00004.html

описания тестов

 

1. Собраны совершенно разные архитектуры.

2. Тесты на понятных задачах, а не, например, на абстрактном решении "системы линейных уравнений".

 

Все становится гораздо интереснее, если свести в единую таблицу (мудрые люди на сайте этого не сделали - иначе по судам затаскают). :))

 

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

конкретная цифра может быть предметом спора (компилятор и его параметры, версия, переписать на ASM и т.д.), а вот совокупность очень интересна.

 

Время выполнения тестовых задач (выбрано самое интересное)

 

!лучший результат!

+второй результат+

~худший результат~

 

Процессор                         ATMega323 ATMega323 MSP430F449 PIC18F452   LPC2106 AM186ED Rabbit 2000 C8051F120 C8051F120
Архитектура                       8         8         16         8           32      16      8           8         8
(элементарная операция, бит)                                                                                       
Тактовая, МГЦ                     7.9       7.9       7.995392   20          59      33.3    22.1        99        99
Компилятор                        WinAVR    IAR       MSPGCC     MPLAB PIC18 GCC     Watcom  Dyn. C      SDCC      SDCC
Оптимизация                       full      speed     size       full        RAM     speed   speed       LMM       SMM
16bit addition, мкс               40.4      55.2      27         ~71.6~      +7.4+   30.2    63.6        9.9       !3.1!
16bit multiplication, мкс         60.8      71.4      72.4       ~193~       !8.2!   30.2    80          24        +13.68+
16bit division, мкс               538       536       480        ~940~       !22!    +38.4+  608         364       108.4
32bit multiplication, мкс         191       180       182        ~344~       !8.76!  143.6   286         +55.6+      
32bit subtraction, мкс            75.6      88.1      57.2       76.4        !7.6!   52      ~172~       +16.6+      
Bubble sort, мкс                  836       834       992        3330        420     1070    ~6380~      +412+     !201!
Block memory move and compare, ms 5.8       7.9       6.75       ~12.4~      !1.08!  +1.65+   6.36       5.48      
Conditional branch to procedure,  143.6     ~245.6~   131.2      169         46.8    132.8   242         +36.8+    !19.5!
мкс                                                                                                                
Scheduler tick function, мкс      41.8                           66.2                45.6                          
PUSH’ing and POP’ing, мкс         258       258       314        412         43.6    248     ~426~       +21.6+      !19.5!

 

Процессоры

AM186ED -R8822 from http://www.rdc.com.tw

C8051F120 - Cygnal C8051F120

 

Компиляторы

WinAVR – September 2003 build

IAR - версия неизвестна

MSPGCC - MSPGCC V3.2.3

MPLAB PIC18 - версия не известна

GCC - версия не известна

Watcom - Open Watcom V1.2.

Dyn. C - Dynamic C V8.03

SDCC - SDCC V2.4.0

 

Опции

RAM (LPC2106) - код исполнялся из ОЗУ. Из FLASH чуть медленнее, но не критично.

LMM - Large Memory Model

SMM - Small Memory Model

 

То же самое, пересчитанное для тактовой частоты 8 Мгц для каждого процессора.

Процессор                         ATMega323 ATMega323 MSP430F449 PIC18F452   LPC2106 AM186ED Rabbit 2000 C8051F120 C8051F120
Архитектура                       8         8         16         8           32      16      8           8         8
(элементарная операция, бит)                                                                                       
Тактовая, МГЦ                     7.9       7.9       7.995392   20          59      33.3    22.1        99        99
Коэфф.                            1.0127    1.0127    1.0006     0.4000      0.1356  0.2402  0.3620      0.0808    0.0808
Компилятор                        WinAVR    IAR       MSPGCC     MPLAB PIC18 GCC     Watcom  Dyn. C      SDCC      SDCC
Оптимизация                       full      speed     size       full        RAM     speed   speed       LMM       SMM
16bit addition, мкс               39.9      54.5      !27.0!     ~179.0~     54.6    125.7   175.7       122.5     +38.4+
16bit multiplication, мкс         +60.0+    70.5      72.4       ~482.5~     !60.5!  125.7   221.0       297.0     169.3
16bit division, мкс               531.3     529.3     479.7      2350.0      +162.3+ !159.8! 1679.6      ~4504.5~  1341.5
32bit multiplication, мкс         188.6     +177.8+   181.9      ~860.0~     !64.6!  597.7   790.1       688.1     
32bit subtraction, мкс            74.7      87.0      +57.2+     191.0       !56.1!  216.5   ~475.2~     205.4     
Bubble sort, мкс                  +825.6+   !823.6!   991.4      8325.0      3097.5  4453.9  ~17624.8~   5098.5    2487.4
Block memory move and compare, ms !5.7!     7.8       6.7        31.0        8.0     +6.9+   17.6        ~67.8~    
Conditional branch to procedure,  +141.8+   242.5     !131.1!    422.5       345.2   552.8   ~668.5~     455.4     241.3
мкс                                                                                                                
Scheduler tick function, мкс      41.3                           165.5               189.8                         
PUSH’ing and POP’ing, мкс         +254.8+   +254.8+   313.8      1030.0      321.6   1032.3  ~1176.8~    267.3     !241.3!

>>>Мои выводы (IMHO 10 раз!!!)<<<

 

==>>>1. Если вдруг с утра, в понедельник, начиная новую жизнь (и новый проект), пошарив в столе, Вы найдете там одно из нижеследующего:

 

* x86 камень для embedded применений

* плату на таком камне

* рекламную листовку, описывающую, "как хорошо разрабатывать embedded системы, пользуясь стандартной x86 архитектурой"

 

немедленно выкиньте все это (если только Ваши целевые алгоритмы не состоят целиком из деления и блочных пересылок)!

 

Если у Вас есть жесткое требование об использовании х86 - смените Заказчика (или место работы).

 

==>>>2. Если вдруг по почте Вам придет бесплатный кит на Rabbit 2000, в котором будет борда, компилятор (полный), TCP/IP стек и все остальное, и в доке не будет указано, что это самый не эффективный контроллер - немедленно подайте в суд на того, кто Вам это прислал (за недобросовестную рекламу). TCP/IP сейчас уже не является вещью, которая на 100% определяет выбор процессора (в смысле, если код для стека есть - выбираем проц).

 

==>>>3. Прежде чем юзать PIC, особенно без умножителя, хорошенько подумайте, стоит ли он того (если нет необходимости юзать специфическую периферию PIС).

 

==>>>4. Прежде чем юзать MSP430, подумайте, а стоит ли? AVR покажет почти такую же скорость (интегрально), но выбор кристаллов больше, а цена меньше (если нет необходимости юзать специфические фишки MSP430).

 

==>>>4.1. AVR - гениальный кристалл! Я давно это чувствовал, но чтобы так явно увидеть...

 

==>>>4.2. Старая добрая 51 архитектура в "турбированном варианте" очень даже "зажигает". Не ожидал.

 

==>>>5. Разрядность процессора - штука обманчивая! Не факт, что переход 8->16->32 автоматически приведет к увеличению производительности!

 

==>>>6. Если у Вас есть минута свободного времени, IMHO, ее стоит потратить на изучение архитектуры ARM7 (или более старших - если надо), чипов на ее основе (Philips LPC2xxx, Atmel SAM64, ST и многие, многие другие), средств разработки и отладки. Ибо:

 

---> ARM есть универсальная архитектура, а все остальные - нишевые, предназначенные для решения определенных задач (цена, простота, специфическая периферия и т.д.)

 

---> в ARM все очень сильно зависит от умения пользоваться средствами разработки (для других архитектур это тоже верно, но сами средства для ARM сложнее, зато и возможности у них гораздо больше)

 

---> вопрос цены кристалла с каждым годом будет менее острым (уже сейчас простые ARM с флешаком на борту берутся за 5$ не напрягаясь).

 

П.6 очень сильно относится и ко мне!

 

Нам поможет:

 

http://www.hitex.co.uk/arm/lpc2000book/index.html

хорошая книжка

 

http://www.olimex.com/dev/pdf/ARM%20Cross%...h%20Eclipse.pdf

>>>!!!<<< Супер подробный манунал по установке и использованию среды

http://www.eclipse.org. Полностью описан процесс создания на компуке рабочей среды для ARM на основе GNU тулзов. Стиль местами "для даунов", но описано очень много тонких моментов, которые сложны при первоначальном освоени. Хоть и 10М, но выкачать стоит (IMHO). Если кто после прочтения оного не сможет "поморгать светиком" - это уже клиника.

 

http://www.compuphase.com/dhrystone.htm

The Dhrystone benchmark, the LPC2106 and GNU GCC

 

http://www.dwelch.com/gba/dhry.htm

циферок много, но я ничего не понял.

 

PS. Кто хочет получить полную версию .xls файла таблиц - пишите на мыло [email protected]. В поле subj указать MCU_BENCH.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессор                         ATMega323 ATMega323 MSP430F449 PIC18F452   LPC2106 AM186ED Rabbit 2000 C8051F120 C8051F120

Тактовая, МГЦ                     7.9       7.9       7.995392   20          59      33.3    22.1        99        99

16bit multiplication, мкс         60.8      71.4      72.4       ~193~       !8.2!   30.2    80          24        +13.68+

32bit multiplication, мкс         191       180       182        ~344~       !8.76!  143.6   286         +55.6+      

[post=39270]<{POST_SNAPBACK}>[/post]

 

Тесты оставляют ощущение, что цифры взяты с потолка. Во всяком случае, для LPC2106 приведен пример умножения 32 битного умножения за 8.76 мкс, при тактовой 59 МГц (станная какая-то тактовая, прям скажем). Это при том, что у него аппаратная команда умножения. Это при том, что у меня на LPC

при 60 МГц тактовой считается 16-таповый FIR на Си ~ за 2 мкс, а это 16 умножений с накоплением, не считая операций взятия 16 полуслов данных из циркулярного буфера в ОЗУ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тесты оставляют ощущение, что цифры взяты с потолка. Во всяком случае, для LPC2106 приведен пример умножения 32 битного умножения за 8.76 мкс, при тактовой 59 МГц (станная какая-то тактовая, прям скажем). Это при том, что у него аппаратная команда умножения. Это при том, что у меня на LPC

при 60 МГц тактовой считается 16-таповый FIR на Си ~ за 2 мкс, а это 16 умножений с накоплением, не считая операций взятия 16 полуслов данных из циркулярного буфера в ОЗУ.

Смотрите описания тестов. Там все операции посторяются 20 раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мои выводы (IMHO 10 раз!!!)<<<

 

Очередная погоня за МИПСами? А кто будет оценивать функциональность периферии, разнообразие и качество средств разработки и сторонних библиотек/RTOS, потребляемую мощность в разных режимах, доступные корпуса, качество поддержки, цену, leadtime и сотню других параметров?

 

Тесты оставляют ощущение, что цифры взяты с потолка. Во всяком случае, для LPC2106 приведен пример умножения 32 битного умножения за 8.76 мкс, при тактовой 59 МГц (станная какая-то тактовая, прям скажем).

 

Частота вполне нормальная с учетом PLL. Наверняка тесты проводились на плате LPC-H2106 от Olimex. Там за счет PLL внешний 14.7456 Mhz * 4x как раз и дает практически 59 Мгц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очередная погоня за МИПСами? А кто будет оценивать функциональность периферии, разнообразие и качество средств разработки и сторонних библиотек/RTOS, потребляемую мощность в разных режимах, доступные корпуса, качество поддержки, цену, leadtime и сотню других параметров?
Согласен, тем более непонятно, почему новые проекты делают на очень старых архитектурах. Ну какая особая периферия может быть в AM186ED, и ОСей для тех же ARMов хватает. Про мощность потребления я вообще помолчу.

 

Занятно, что 8 битный AVR на тактовой 8 часто идет в ровень с 16 битным AM186ED на тактовой 33.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Человек правильно сказал всё это - членомеры более того не совсем объективные, подобный членомер живёт на сахаре-ру тоже каждый своё любимое или нелюбимое померил как умел и выдал какую-то цифирь. А к жизни это имеет очень отдалённое отношение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласен, тем более непонятно, почему новые проекты делают на очень старых архитектурах. Ну какая особая периферия может быть в AM186ED, и ОСей для тех же ARMов хватает. Про мощность потребления я вообще помолчу.

 

Занятно, что 8 битный AVR на тактовой 8 часто идет в ровень с 16 битным AM186ED на тактовой 33.

 

И АВР отстой, и АРМ тоже. :cranky:

Стековые процы рулят:

performance_density.jpg:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты



Смотрите описания тестов. Там все операции посторяются 20 раз.



и для 20 раз все равно не клеится, у меня 16 MAC-ов делается за 2 мкс, правда несколько оптимизировано. Могли бы и код Сишный привести, а так очередное размахивание руками в воздухе, имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И АВР отстой, и АРМ тоже.
Круто! Tensillica в моем понимании была одна из самых продвинутых архитектур, а тут такое... :a14:

 

Живьем бы все это пощумать (без заказа кристалов на UMC :biggrin: ), а то на картинке все гладко. Смушает отсутствие кеша. Я не знаком со стековыми процессорами, и не очень понимаю как они без него burst эффективности SDRAM достигают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И АВР отстой, и АРМ тоже. 

Стековые процы рулят:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не знаком со стековыми процессорами, и не очень понимаю как они без него burst эффективности SDRAM достигают.

Дык, смотря о какой эффективности речь. Стековые процы эффективно используют кремень, выжимая максимум с единицы площади. В том числе и плотность кода у них максимальная, в силу использования 0-адресных команд.

 

Что же касается абсолютной производительности, то тут бабушка надвое сказала. Отдельно взятый стековый проц довольно слабосилен. Зато в кластерах возьмет свое, в т.ч. в кластерах на кристалле. По моему, наблюдающийся застой в "мегагерцовой" производительности позволяет довольно уверенно прогнозировать, что будет дальше. И еще суперкомпьтеры показывают пример: мастодонты-одиночки вымерли. :)

 

И еще момент. Сначала Жаба, теперь .NET - новый софт идеально ложится именно на стековые процы.

 

Выкинем RISC на свалку истории! :maniac:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще суперкомпьтеры показывают пример: мастодонты-одиночки вымерли.
Не все можно распараллелить (эффективно)!

 

Выкинем RISC на свалку истории!
для начала хорошо бы начать с х86 :smile3009:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не знаком со стековыми процессорами, и не очень понимаю как они без него burst эффективности SDRAM достигают.

Дык, смотря о какой эффективности речь. Стековые процы эффективно используют кремень, выжимая максимум с единицы площади. В том числе и плотность кода у них максимальная, в силу использования 0-адресных команд.

 

Что же касается абсолютной производительности, то тут бабушка надвое сказала. Отдельно взятый стековый проц довольно слабосилен. Зато в кластерах возьмет свое, в т.ч. в кластерах на кристалле. По моему, наблюдающийся застой в "мегагерцовой" производительности позволяет довольно уверенно прогнозировать, что будет дальше. И еще суперкомпьтеры показывают пример: мастодонты-одиночки вымерли. :)

 

И еще момент. Сначала Жаба, теперь .NET - новый софт идеально ложится именно на стековые процы.

 

Выкинем RISC на свалку истории! :maniac:

 

 

Хочу добавить к этому -> у меня на iosifk.narod.ru есть статья по стековым процессорам. Посмотрите 4-х стековый проц. его разработчик писал, что это будет быстрее Sharc'а. Правда sharc'и продаются ведрами как семечки, а эти еще нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...