ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
35158
Evgeny_CD (11.07.2005 08:48, просмотров: 7386)
"Членомер" производительности микроконтроллеров 
Случайно наткнулся на "членомер" производительности микроконтроллеров, и он меня 
очень сильно впечатлил.

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.c …lpc2000book/index.html
хорошая книжка

http://www.olimex. …t%20with%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 файла таблиц - пишите на мыло 
esp1@kbkcc.ru. В поле subj указать MCU_BENCH.