"Членомер" производительности микроконтроллеров
Случайно наткнулся на "членомер" производительности микроконтроллеров, и он меня очень сильно впечатлил. 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.
-
- Ну дык половина у нас уже есть, а вторую надо написать. Что - никто не применял Block memory move and compare? General(202 знак., 25.07.2005 16:10, , ссылка)
- Ответ: а исходников нет что-ли? энкодер.(203 знак., 11.07.2005 13:06, )
- Исходников нет. Это плохо. Тут ничего не поделаешь Evgeny_CD(328 знак., 11.07.2005 13:20, )
- Дело не в наличии плат энкодер.(491 знак., 11.07.2005 14:06, )
- Вот вот, у меня тож сильные сомнения. При сложении 20 целочисленных глобалок ПИК18 не может проиграть АВРу. ASDFS(32 знак., 25.07.2005 20:49)
- У Keil вообще все курят Evgeny_CD(214 знак., 11.07.2005 14:14, )
- Если бы код был там приведен, у меня бы тоже вопросов не возникло энкодер.(43 знак., 11.07.2005 14:58, )
- Ну знать будем основывать свою "лигу бенчмаркистов". :)) (-) - Evgeny_CD(11.07.2005 15:15, )
- ...будем. Сейчас инкубационный период. - blackbit(11.07.2005 23:28, )
- Ну знать будем основывать свою "лигу бенчмаркистов". :)) (-) - Evgeny_CD(11.07.2005 15:15, )
- Если бы код был там приведен, у меня бы тоже вопросов не возникло энкодер.(43 знак., 11.07.2005 14:58, )
- Дело не в наличии плат энкодер.(491 знак., 11.07.2005 14:06, )
- Исходников нет. Это плохо. Тут ничего не поделаешь Evgeny_CD(328 знак., 11.07.2005 13:20, )