02.11.2010, 02:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от testerplus
|
Я не говорю о подтасовках при тестах, просто тестеры с ixbt.com денежку зарабатывают, и их интересы по сравнению с интересами треплющегося на форумах народа - это небо и земля.
|
Их интерес - чтоб журнал у них покупали. Не более того. Читатели жаждут крови и они ее получают
Сообщение от testerplus
|
Тем более я считаю, что сравнение МК с различными архитектурами тоже не поддается таким оценкам (между пиками и авээрами победителя так и не определили). Ладно, не буду спорить.
|
Есть и тут стандартные количественные оценки - типа стандартных тестов. А между PIC и АВР победитель давно известен. Правда микрочип тут же все перемешал выпустив недорогие PIC24 ![Улыбка](images/smilies/icon_smile.gif) Но здесь речь все же о STM8. Я вот считаю что радиолюбителям это просто подарок. Тут главное начать. Минус с радиолюбительской точки зрения один - нет ДИП корпусов. Но народ сейчас уже не тот, чо раньше, лазерники имеют. А некоторые и фоторезист. Так что это не такая и проблема.
Сообщение от testerplus
|
если задача решается на МК одного семейства, то она наверняка так же эффективно может быть решена на равноресурсном МК другого семейства.
|
Заменить "наверняка" на "возможно" и соглашусь.
Последний раз редактировалось Falconist; 13.04.2011 в 23:22.
|
|
|
|
02.11.2010, 02:13
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Есть и тут стандартные количественные оценки - типа стандартных тестов.
|
Что-то не слышал раньше об этих тестах. Есть ссылка какая-нибудь? (Раз есть стандартные тесты, почему на них и не погонять АВР с СТМом?)
Последний раз редактировалось Falconist; 13.04.2011 в 23:22.
|
|
|
|
02.11.2010, 02:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Тесты то не контроллерные, а для любого вычислительного ядра.
Вот например - http://en.wikipedia.org/wiki/Dhrystone
Там и на другие ссылки есть. Но в контроллерном мире применимость их как бы не очень - кроме самого ядра они и компилятор заодно протестируют. В результате чистого результата не будет.
|
|
|
|
02.11.2010, 03:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Ну для тех кто все еще сомневается в быстродействии STM8 еще небольшой пример.
Один из распостраненных приемов построения программ - вечный цикл с вызовом действий по флажкам. Флажки соответственно удобно делать в виде битовых полей структуры. Ес-но с квалификатором volatile, ведь они устанавливаются вне основного цикла.
В результате на архитектурах с организацией ReadModifyWrite, а именно такая у АВР, изменять состояние этих флажков приходится при запрещенных прерываниях. Типичный листинг:
Код:
|
cli
LDS R16,adress
andi R16,mask
sts adress,R16
sei |
STM8 справляется с этим без запрета прерываний, причем одной однотактовой командой - bres. Выходит аж в 7 раз быстрее ![Улыбка](images/smilies/icon_smile.gif) Реально то это конечно не так важно, обычно при такой организации запасы по времени большие. Но все же.
Последний раз редактировалось Falconist; 13.04.2011 в 23:22.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо kison за это сообщение:
|
|
|
02.11.2010, 06:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Что то под АВР у меня больше 26 тактов выходит
|
Это не у вас выходит, а у вашего компилятора. Который не умеет работать с регистрами. Переменную можно ведь хранить в регистрах. Тогда начальная загрузка - вместо 1+2 цикла равна 1 цикл, и само сложение - вместо 2+2+1+2 равна 1 цикл. Итого 18/19 циклов...
Сообщение от kison
|
В результате на архитектурах с организацией ReadModifyWrite, а именно такая у АВР, изменять состояние этих флажков приходится при запрещенных прерываниях.
|
Необязательно, если вспомнить о существовании регистров и GPIOR0. У них есть доступ к индивидуальным битам. Если компилятор слабо заточен под чип - это не значит что чип плохой... Вы то ли передергиваете "АВР плохой", то ли в самом деле всегда так бессмысленно раздуваете свой код...
Последний раз редактировалось Falconist; 13.04.2011 в 23:24.
|
|
|
|
02.11.2010, 06:31
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Я не учитывал такт на эту команду.
ldi rA,$ff
извиняюсь, перемудрил, ведь она тоже работает на настройку порта на выход.
Вместе с ней будет 27 тактов.
Пропустить следующую команду, если PortA.0 сброшен.
Эта ветка пойдёт по «нет», чтобы попасть на сброс PA.0, ведь мы предварительно его установили.
Вобщем – 27 тактов для AVR.
|
|
|
|
02.11.2010, 06:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
Это не у вас выходит, а у вашего компилятора. Который не умеет работать с регистрами. Переменную можно ведь хранить в регистрах. Тогда начальная загрузка - вместо 1+2 цикла равна 1 цикл, и само сложение - вместо 2+2+1+2 равна 1 цикл. Итого 18/19 циклов...
|
Можно. Вот только регистров всего 32, а переменных обычно больше. Кроме того использование регистров под переменные, с доступом к ним из прерывания, потенциально чревато серьезными багами. Либо потерей быстродействия.
Сообщение от niXto
|
Необязательно, если вспомнить о существовании регистров и GPIOR0
|
По поводу регистров выше, а вот с GPIO непонятно. Хранить в них флаги? Но ведь ножки тоже нужны, причем по прямому назначению. Кроме того доступ по sbi/cbi имеется к очень небольшому числу регистров.
Сообщение от niXto
|
Вы то ли передергиваете "АВР плохой", то ли в самом деле всегда так бессмысленно раздуваете свой код...
|
Я не говорил - плохой. Все же много лет я им пользовался и альтернативы не видел. А говорил я всего лишь, что STM8 оказался лучше. Нда, прямо рекламный слоган просится - и лучше и дешевле
Последний раз редактировалось Falconist; 13.04.2011 в 23:23.
|
|
|
|
02.11.2010, 06:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
Эта ветка пойдёт по «нет», чтобы попасть на сброс PA.0, ведь мы предварительно его установили.
|
Не обязательно. Нагрузите вывод или вообще к земле притяните и все станет наоборот.
Сообщение от EugVor
|
Вобщем – 27 тактов для AVR.
|
Ну раз хотите считать по минимуму - у STM8 соответственно 20.
Все же три регистра не мешают работать быстро ![Улыбка](images/smilies/icon_smile.gif)
Да и код из под компилятора вышел вполне приличный. Это значит что асмовые вставки будут практически никогда не нужны. Впрочем это еще предстоит проверить на серьезных алгоритмах.
Последний раз редактировалось Falconist; 13.04.2011 в 23:23.
|
|
|
|
02.11.2010, 06:50
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Цитата:
|
Ну раз хотите считать по минимуму - у STM8 соответственно 20.
|
Нет не потому, что я хочу, а для того, чтобы банально попасть на конец теста, на сброс PA.0
В итоге имеем 20/27 = 74%/100%, а с учётом способностей STM20X работать на 24МГц, против предельных 16МГц для AVR:
0,74*(16/24) = 50%.
Если бы тест был строго о железе, то AVR мог бы это сделать быстрее в РОНах, а STM8 быстрее уже не сможет сработать (непосредственная работа АЛУ c ячейками SRAM уже задействован). Но чисто ассемблерный тест оторван от реальности, ибо любой компилятор под AVR разместит пользовательские переменные именно в SRAM, как в тесте, потому что РОН-ы быстро закончатся и придётся для работы с АЛУ бекапить их в тот же SRAM.
Так, что тест вполне себе хороший – задействует особенности, реально используемые компиляторами.
IAR сгенерил точно такой ассемблерный же код:
Последний раз редактировалось Falconist; 13.04.2011 в 23:24.
|
|
|
|
02.11.2010, 07:42
|
|
Временная регистрация
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
В общем на асме было лень, так что во втором углу ринга будет листинг из под сишного компилятора.
|
А какой компилятор это был?
Весьма оптимально для си... если писать на асме, я бы написал аналогично...
набор инструкций просто радует...
Сообщение от kison
|
btjf 20481,#0,L713 // if PINA.0 2/3 t
bres 20480,#0 // PORTA.0 = 0 1t
|
Это сильно... сложить аккумулятор с непосредственно адресованной ячейкой...
Сообщение от kison
|
add a,_b 1t
|
Вот вам и три регистра... ![Улыбка](images/smilies/icon_smile.gif) в примере вообще на одном все сделано...
Если бы в "то" время такие возможности были на z80... ![Улыбка](images/smilies/icon_smile.gif)
Видимо остальные регистры проявляют себя при работе с массивами
Последний раз редактировалось Falconist; 13.04.2011 в 23:23.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:12.
|
|