|
|
  |
XMEGA: будущее, которого мы так долго ждали, наступило., XMEGA - лучший 8 битный микроконтроллер. |
|
|
|
May 18 2008, 18:49
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(zltigo @ May 18 2008, 22:29)  Ну так уж и только сложить  не передергивайте и сводите систему команд ARM "к сложить" - и сложить, и сдвинуть и условие проверить и все это - за одну команду в 4 байта. В формате 32-бит команды указываеся до 3х регистра/константы, проверяются 4 флага и дополнительный сдвиг до 32 бит. А что у нас у AVR - сколько там Flash кушать придется? А адресоваться подальше 256 байт? Вот она, сила маркетинга!!! Возникает вопрос - а как часто мне необходимо все это "и сложить, и сдвинуть и условие проверить". Например, если только каждую пятую операцию - нафига же я тогда потратил 4*(2 лишних байта)=8 байт FLASH? Это будет эффективно при жестком асмовом кодинге - но для ARM обычно так не принято  Ладно, спор ни о чем - идеальная CPU архитектура пока не создана.
|
|
|
|
|
May 18 2008, 18:49
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Evgeny_CD @ May 18 2008, 21:05)  Как я уже писал, именно 16 битная система команд является оптимальной для большинства современных задач - AVR, CF, Cortex, SH, ... Она дает возможность эффективно манипулировать разумным количество регистров, и достаточно экономична. Собственно, тогда к чему тогда весь разговор? Лично для меня использование 8-битных AVR обусловлено только наличием "доступных" средств программирования и отладки. В случае 'X' этого преимущества не существует (в настоящее время). К ламерью не отношусь  , выше 16 бит ничего делать не хочу и не буду, но постоянно переключаясь между MSP430 и AVR в проектах хоть сколь-нибудь реального времени, вижу, насколько удобнее использовать 16-битные контроллеры. XMEGA - всего лишь для узкой ниши.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 18 2008, 18:59
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(zltigo @ May 18 2008, 22:14)  И FIFO тоже эффективен вполне. А FIFO + отдельный банк вообще прилично. Отдельный банк - это отдельный геморой. Его надо по особому обслуживать и т.д. А если весь необходимый буфер не влазит в отдельный банк - процом данные таскать? В общем, я пока не встречал случаев, чтобы DMA проиграло по CPU load процессорной обработке. Цитата(Dog Pawlowa @ May 18 2008, 22:49)  Лично для меня использование 8-битных AVR обусловлено только наличием "доступных" средств программирования и отладки. В случае 'X' этого преимущества не существует (в настоящее время). Может, я чего не понял, но что мешает использовать AVR Studio + WinAVR для ATxmega? Ядро то то же самое, хидеры атмел вроде родил. mkII денег стоит - ну не таких уж и страшных, что-то типа 8000р. Не думаю, что это критичная величина - покупается раз и на долгие годы. Цитата(Dog Pawlowa @ May 18 2008, 22:49)  выше 16 бит ничего делать не хочу и не буду, но постоянно переключаясь между MSP430 и AVR в проектах хоть сколь-нибудь реального времени, вижу, насколько удобнее использовать 16-битные контроллеры. Спорный вопрос. If писать на С - мало волнует, как там код исполняется, лишь бы успевало. ASM кодинг - он только для малых проектов или небольших кусков сложных проектов эффективен. По размерам C код за счет грамотного написания, полного использования всех квалификаторов и #pragma для данного конкретного компилера можно всегда хорошо ужать.
|
|
|
|
|
May 18 2008, 19:12
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 8-03-08
Пользователь №: 35 744

|
[quote name='zltigo' date='May 18 2008, 17:48' post='413027'] Только вот.. кто-нибудь сможет назвать лучший в мире 4-бит процессор??? Набежало, похоже, понимешь ламерье и с воплями "8 лучше 4" затоптало   8-битный- объективная реальность в современном байт-ориентированном мире (лично я использую от 1 до 6МК и переходить на 16-32 не собираюсь- естественно аудио-видео потоки не обрабатываю)
|
|
|
|
|
May 18 2008, 19:27
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Evgeny_CD @ May 18 2008, 21:59)  mkII денег стоит - ну не таких уж и страшных, что-то типа 8000р. Не думаю, что это критичная величина - покупается раз и на долгие годы. Подсчитали недавно - на фирме больше десятка клонов JTAG ICE. Ведущему программисту, руководителю проекта, наладка, сервис, студенты и т.д. Для всех купить mkII? Не то, что невозможно, но цена вопроса другая и нужно все взвесить. Цитата(Evgeny_CD @ May 18 2008, 21:59)  Спорный вопрос. If писать на С - мало волнует, как там код исполняется, лишь бы успевало. ASM кодинг - он только для малых проектов или небольших кусков сложных проектов эффективен. По размерам C код за счет грамотного написания, полного использования всех квалификаторов и #pragma для данного конкретного компилера можно всегда хорошо ужать. Это все понятно, но прикидка быстродействия требуется поточнее, да и покажите мне того программиста, который будет сразу писать грамотно (с точки зрения быстродействия), если это сначала не требуется. Все будет делаться потом, внося озлобленность в жизнь Да и чего стоит обращение к многобайтовым переменным. Мелочь, но неприятно.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 18 2008, 19:31
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(zltigo @ May 18 2008, 17:48)  Не устаю замечать, что DMA на контроллерах без кэша или каких-либо специализированных архитектурных наворотов штука малоэффективная. А то, что сделано у помянутого всуе ARM7 LPC, это как раз и есть эффективное использование DMA, поскольку он работает НА ОТДЕЛЬНОЙ ШИНЕ с ОТДЕЛЬНЫМ банком. Что позволяет не тормозить контролер "контроллером DMA" Я одного понять не могу. Почему-то Вы упорно забываете о том, что шина у AVR не занята постоянным потоком чтения комманд, ведь адресные простанства совсем отдельные, Гарвард все-таки (это я сравниваю с ARM7, ARM9 - там все пучком, там кеш есть). Поэтому на AVR DMA имеет полное право на жизнь, ведь запись-чтение из памяти данных происходит очень редко, пустого места по времени - море. Даже такой код Код LOOP: LD R16,X+ ST Z+,R16 DEC R17 BRNE LOOP имеет на XMega 4 пустых цикла доступа на шину данных. Даже таким способом Код LD R16,X+ ST Z+,R16 LD R16,X+ ST Z+,R16 LD R16,X+ ST Z+,R16 LD R16,X+ ST Z+,R16 LD R16,X+ ST Z+,R16 LD R16,X+ ST Z+,R16 .... нельзя заблокировать шину данных, тут на каждую пару комманд есть один пустой цикл, куда DMA отлично влезет. Так что DMA тут рулит.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 18 2008, 19:34
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(Dog Pawlowa @ May 18 2008, 23:27)  Это все понятно, но прикидка быстродействия требуется поточнее, да и покажите мне того программиста, который будет сразу писать грамотно (с точки зрения быстродействия), если это сначала не требуется. Все будет делаться потом, внося озлобленность в жизнь Да и чего стоит обращение к многобайтовым переменным. Мелочь, но неприятно. О! Вот с этого все и начинается! Ради чего я так и возбудился  Как учит теория TDD - лучший способ завалить проект - начать его сразу и по всем параметрам оптимизировать. Результат гарантирован  . В той идеологии, что я описал, и чему посвящена куча PDF в начале топика, вначале пишутся только дрова (они едва ли сожрут все место во FLASH), и затем они "телепортируются" на писюк. Затем на писюке в синтетическом порту пишется целевой код, и проверяется на правильность решения целевой задачи. Затем начинаем его по кусочкам утаскивать на целевой проц, проверяя размер и быстродействие. И оптимизируя по мере необходимости. В конце концов, может, все так ужмется, что и XMEGA будет не нужна
|
|
|
|
|
May 18 2008, 19:56
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
А вообще, лично меня другой момент интересует...
Вот смотрим на таблицу комманд. Видим:
LD Rd,X+ - 2 такта ST X+,Rd - 1 такт
Все понятно, во втором случае можно выполнить запись в процессе обработки следующей комманды. Так же понятно, почему STD X+disp,Rd - 2 такта, это происходит из-за того, что такт заняло вычисление адреса.
Но теперь очень интересный вопрос. Возле всех комманд LD стоит примечание 2. Оно гласит - "один дополнительный цикл должен быть добавлен при доступе во внутреннюю SRAM".... Причем, возле комманд ST этого примечания нет... Вот тут я чето совсем не понял... И как это согласуется с утверждением в разделе 7.1 - "Single cycle access from CPU"? Почему в одну сторону (запись) действительно single, а в другую - double???
Ну про SBIS/SBIC я давно удивлялся, почему стало 2 такта минимум...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 18 2008, 19:59
|

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

|
Цитата(zltigo @ May 18 2008, 17:48)  Не устаю замечать, что DMA на контроллерах без кэша или каких-либо специализированных архитектурных наворотов штука малоэффективная. Цитата то они относились прежде всего к SAM7 - сейчас это я так - "старое помянул" Полностью опробовав DMA SAM7 (для всей его периферии). Категорически несогласен с этим высказыванием. Эффективность DMA каналов SAM7 очень значительная. при передаче 100 байт по SPI, без DMA канала проц 100 раз войдет в прерывание для подгрузки очередного байта, т.о. 100 раз займет шину на перегонку байта, +100 раз произойдет немерянный оверхед на исполнение кода обслуживающего прерывание. При передаче через DMA канал - DMA отминет только 100 циклов шины пямяти. Так что эффективнее? Что DMA работает именно так как я описал (захватывает шину когда периферий модуль "готов" принять, и отпускает когда периф. модуль не готов принимать), сомнений у меня нет, могу привести ссылки из Д/Ш.
|
|
|
|
|
May 18 2008, 20:20
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(SasaVitebsk @ May 18 2008, 19:57)  Чем XMEGA то не устраивает? Всё в цену упирается и если она пойдёт с сопоставимой ценой, то будет очень приятно. Вот после "если" и продолжим разговор. Пока старые ATMEGA стоят неразумных денег и меня терзают смутные сомнения, что XMEGA вдруг резко опустят по цене. Поднимть - не поднимут, скорее всего так и оставят. Посему лично для меня сколь-нибудь привлекательными будут что-то типа Тинек. Цитата Мелкие армы при той же структуре флэш/озу оказываются не так уж и привлекательны так как озу, как минимум требуется больше. AVR эффективнее использует. Неправда Ваша опять  ОЗУ оно и в Африке ОЗУ. Если обильно использовать битовые переменные щедрой рукой отдавая по ячейке под каждую, то тогда да. Только вот RAM жрут больше байтовые буфера всякие. А прочие данные надо просто в структуры, поля и паковать. Тут всякие "ненужные" ARM команды вполне эффективно работают и RAM попусту не тратится. Единственно, что заметно больше кушает RAM это более широкий стек. Но в общем никакого сташного расхода RAM нет. Цитата Совершенно не понятно почему вы не хотите финансировать Atmel.  То есть NXP и STM и ARM вы финансировать согласны, а вот Atmel - нет.  Не вижу разницы. Разница в том, что за меньшие деньги я получаю, например, больше памяти и мегагерцев. Кроме экономии денег, я получаю большие возможности для сопровождения и модернизации софта и менее в этом стеснен. Платить налог на костность я не желаю.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|