[an error occurred while processing this directive]
"Членомер" производительности микроконтроллеров (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Evgeny_CD 11 июля 2005 г. 08:44


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

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%20Development%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.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru