|
|
  |
AVR признали !, C переходом в рассуждения о контроллерах |
|
|
|
Aug 9 2007, 15:30
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Прохожий @ Aug 9 2007, 13:44)  А если вот так: Код movblk movff postinc0,postinc1;2 decfsz counter ;1/2/3 goto movblk ;2 Хотя сути это не меняет, но позволяет исключить рабочий регистр W. Так не пойдёт, в этой команде нельзя применять косвенную адресацию. Так, как вы написали, вы просто N раз копируете из адреса postinc0 в ячейку по адресу postinc1.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 15:37
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
GM & Прохожий.
Господа, давайте разберемся уж до конца:
Выдержка из даташита на PIC18F4450
All single-word instructions are executed in a single instruction cycle, unless a conditional test is true or the program counter is changed as a result of the instruction. In these cases, the execution takes two instruction cycles with the additional instruction cycle(s) executed as a NOP. The double-word instructions execute in two instruction cycles. One instruction cycle consists of four oscillator periods. Thus, for an oscillator frequency of 4 MHz, the normal instruction execution time is 1 μs.
Теперь давайте приведем к общему знаменателю машинные циклы, обзовем их CYC. На одинаковой частоте CYCavr = 1/4 * CYCpic С учетом, что PIC18 работает на 10-12Mhz, а Mega - 16-20Mhz,
CYCavr = 12/20 * 1/4 CYCpic
12/20/4 = 0.15 - это соотношение одного микрочиповского цикла, к AVR'овскому. (Тобиш коэффициент который показывает насколько "быстрее" выполняется одна инструкция на PIC в сравнении с AVR).
Ну а далее смотрим на результат тестов:
5 машинных циклов на микрочипе делим на коеффициент 0.15
получаем
5/0.15 = 33.33 машинных цикла AVR
33.33 AVRовских такта на PIC, против 7 на AVR.
33.33/7 = ~5 На простеньком тесте, PIC уделали в пять раз.
Вывод - по производительности PIC18 фтопку. Banchmark'и сахары - туда же (особливо если для тестов там использовался IAR 2.2).
|
|
|
|
|
Aug 9 2007, 16:25
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Aug 9 2007, 14:37)  GM & Прохожий. Теперь давайте приведем к общему знаменателю машинные циклы, обзовем их CYC. На одинаковой частоте CYCavr = 1/4 * CYCpic С учетом, что PIC18 работает на 10-12Mhz, а Mega - 16-20Mhz,
CYCavr = 12/20 * 1/4 CYCpic
12/20/4 = 0.15 - это соотношение одного микрочиповского цикла, к AVR'овскому. (Тобиш коэффициент который показывает насколько "быстрее" выполняется одна инструкция на PIC в сравнении с AVR).
Ну а далее смотрим на результат тестов:
5 машинных циклов на микрочипе делим на коэффициент 0.15
получаем 5/0.15 = 33.33 машинных цикла AVR
33.33 AVRовских такта на PIC, против 7 на AVR.
33.33/7 = ~5 На простеньком тесте, PIC уделали в пять раз.
Вывод - по производительности PIC18 фтопку. Banchmark'и сахары - туда же (особливо если для тестов там использовался IAR 2.2). Не, так плохо. Под рукой описание на PIC18F2240, буду опираться на него, думаю в PIC18F4450 похожее положение дел. Давайте положим свои предпочтения в карман и рассмотрим по справедливости. (Сам я предпочитаю иметь дело с авр, мне нравится система команд, хотя и не без недостатков). 1) Потреблениие прямо пропорционально тактовой частоте, на которой работает ядро (системная частота процессора). Так что лучше сравнивать в машинных циклах (МЦ). Ну посудите сами, вы на МК PIC18F2240 подаёте 10 МГц, а они там умножаются на 4, получается 40, но одна команда выполняется за 4 периода частоты 40, т.е. системная частота равна 10. Вывод - сравнение только МЦ. 2) По производительности. Для атмеловского фрагмента время исполнения 900/20=45мкс, для пика - 650/10=65 мкс. Времена выполнения одного порядка, никакого выигрыша по производительности в 5 раз нету и в помине. 3) Давайте скажем по справедливости, что на данном тесте пик обходит авр по машинным циклам. Представьте себе, что завтра микрочипы сделают системную частоту 20 Мгц. Ну и кто будет в проигрыше? 4) Вот тут предлагали посчитать crc на одном и другом проце, давайте посмотрим, кто там будет впереди?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 16:51
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Прохожий @ Aug 9 2007, 19:22)  Итого 10 Мгц *4(это PLL)/4(число циклов в команде)=10мгц. Ок прощу прощения что не учел PLL. Цитата Берем соотношение 500/350=1.43. Вывод: для этого конкретного примера AVR оказался быстрее PIC в 1.43 раза. Преимущество довольно значительное, если взять во внимание простоту теста. Еще, помоему код получился неравнозначным. Халтурка-с Код movblk: ld temp,x+;2 st y+,temp;2 dec counter;1 brne movblk;2/1 ;Пересылка одного байта выполняется за 7 тактов этот код копирует counter байт из x в y Код ;Фрагмент для пика movblk movf postinc0;1 movwf postinc1;1 decfsz counter;1/2/3 goto movblk;2 А этот что делает? postinc0, postinc1 - адреса намертво вшиваемые в тело команд. Цитата(=GM= @ Aug 9 2007, 19:25)  3) Давайте скажем по справедливости, что на данном тесте пик обходит авр по машинным циклам. Безусловно, ведь PIC в данном тесте не выполняет того функционала который делает AVR. Результат кода (который выиграл по маш. циклам) будет отличаться от того, который проиграл. Давайте вначале подправим тест? Цитата Представьте себе, что завтра микрочипы сделают системную частоту 20 Мгц. Ну и кто будет в проигрыше? Что будет завтра - это уже другой вопрос.. Завтра может Atmel PLL засунет и запустит ядро на 40Mhz или 80.. По остальным пунктам, думаю ответил выше.
|
|
|
|
|
Aug 9 2007, 16:51
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Прохожий @ Aug 9 2007, 20:37)  Я лично склоняюсь все к тем же 24-м PICам, потому как 18-е уже надоели. Слишком много неудобств. AVR - не вариант. Хотя почти все японские фирмы (OMRON, например) в своих промышленных покидухах применяют в основном NEC в различных вариантах в зависимости от назначания покидухи. Хотелось бы узнать мнение уважаемого коллектива. Если не PIC18 и не AVR, то что? Найдутся и "фанаты" MSP430. Я, например, его использовал довольно много, но как-то "душа не лежит". PIC24 по первому впечатлению на него похож... Думаю, не надо делать из конкретного микроконтроллера (или семейства) культа. Фанатичная привязанность ограничивает кругозор в ущерб результату. Подбирать надо по задаче, а не задачу под контроллер...
|
|
|
|
|
Aug 9 2007, 16:58
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Aug 9 2007, 15:42)  Ок прощу прощения что не учел PLL. Преимущество довольно значительное, если взять во внимание простоту теста. Как раз преимущества по машинным циклам нет, наоборот. У меня на вход TMS320F2808 подаётся 20 МГц, но внутри они умножаются на 10 и делятся на 2, какую частоту мне брать для определения производительности? 20, 100 или 200 МГц? Цитата(defunct @ Aug 9 2007, 15:42)  Еще, помоему код получился неравнозначным. Халтурка-с Код ;Фрагмент для пика movblk movf postinc0;1 movwf postinc1;1 decfsz counter;1/2/3 goto movblk;2 А этот что делает? postinc0, postinc1 - адреса намертво вшиваемые в тело команд. Не, это вы халтурно относитесь к пику(:-). Регистр POSTINCn это аналог регистра INDFn, только с постинкрементом. На си примерно так будет *(postinc1)++ =*(postinc0)++
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 17:04
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата Я лично склоняюсь все к тем же 24-м PICам, потому как 18-е уже надоели. Слишком много неудобств. AVR - не вариант. А почему тогда не ARM? Цитата(=GM= @ Aug 9 2007, 19:58)  Не, это вы халтурно относитесь к пику(:-). Понял ;> Цитата(=GM= @ Aug 9 2007, 19:58)  Как раз преимущества по машинным циклам нет, наоборот. У меня на вход TMS320F2808 подаётся 20 МГц, но внутри они умножаются на 10 и делятся на 2, какую частоту мне брать для определения производительности? 20, 100 или 200 МГц? Частоту ядра конечно. В вашем случае - 100. Для PIC'а если с 4xPLL'ом - 40Mhz, но приводить к какому-то эталону все равно надо. Приводят к MIPS'aм, и в ДШ на PIC должно быть написано - ядро PIC на 40Mhz имеет производительность 10MIPS.
|
|
|
|
|
Aug 9 2007, 17:07
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(defunct @ Aug 9 2007, 20:51)  Код ;Фрагмент для пика movblk movf postinc0;1 movwf postinc1;1 decfsz counter;1/2/3 goto movblk;2 А этот что делает? postinc0, postinc1 - адреса намертво вшиваемые в тело команд. Опять же неправда Ваша. PostincХ - это ссылка на виртуальный системный регистр с аналогичным именем, означающая что исполнительный адрес берется из пары FSRXH:FSRXL и после выполнения команды к этому делу будет прибавлена 1. Следовательно в указанном случае пересылка осуществляется следующим образом: Байт данных, расположенный по адресу FSR0H:FSR0L перешлется в ячейку по адресу FSR1H:FSR1L, затем регистровые пары FSR0H:FSR0L и FSR1H:FSR1L будут инкрементированы. И все это дело повторится изначальное (при входе в цикл) counter раз.
|
|
|
|
|
Aug 9 2007, 17:20
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Прохожий @ Aug 9 2007, 15:37)  Хотелось бы узнать мнение уважаемого коллектива. Если не PIC18 и не AVR, то что? Сильно зависит от задачи. Я долго работал с TMS320C5402, клял эти проклятые пайплайновые конфликты, потом перешёл на TMS320F2808..12. Ну, скажу я вам, небо и земля. И управление легко делать, подрыгать ногами, и ДПФ быстро, 16*16 умножает за такт, 32*32 за два такта, и периферии до чёрта: CAN, SPI, I2C, ADC 12.5 Мвыборок/с. Почти мечта(:-). Сейчас новые представители семейства появились, так там есть модуль плавающей точки...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 9 2007, 18:12
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Rst7 @ Aug 9 2007, 19:15)  Чето я не пойму. Этот пост: и этот: Оба ваши... Как понимать? Буквально. Как Тузик порвёт сковородку, так ПИК порвёт АВРа в арифметике. ;О) Прохожему: На сахаре, в беньчморках лежит ФИР, писаный мной на АСМе. С тактами. Можете написать аналогичное на ПИКе и посчитать. Во сколько раз медленнее оно будет. Да и здесь, в АВРовой ветке, есть то-же самое, только знаковая арифметика. По поводу пересылок: пересылка массива памяти, сама по себе, никому не нужна. Нахрен пересылать массив из одного места в другое, если работать можно сразу в том месте? Ну да ланна, это на любителя. ;О) Цитата(=GM= @ Aug 9 2007, 21:20)  Сильно зависит от задачи. Я долго работал с TMS320C5402, клял эти проклятые пайплайновые конфликты, потом перешёл на TMS320F2808..12... Ну согласитесь, сравниватьТМС320 с ПИКо-АВРами некорректно. И не только из-за ТМСовой крутизны. ПИКо-АВРы требуют вокруг себя меньше обвязки, меньше жрут, меньше занимают места. Стоят дешевле. Из этого и исходить. Лёгкое ядро, оно всегда себе дырочку найдёт. ;О)
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|