Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.02.2011, 15:33
|
#281
|
Почётный гражданин KAZUS.RU
Регистрация: 10.11.2009
Адрес: Свердловская область, г. Ирбит
Сообщений: 4,004
Сказал спасибо: 165
Сказали Спасибо 1,243 раз(а) в 733 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
__________________
"У принца Лимона всё наоборот: воры и убийцы у него во дворце, а в тюрьме сидят честные граждане" (с) Дж. Родари "Приключения Чипполино"
|
|
|
|
11.02.2011, 01:42
|
#282
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от SasaVitebsk
|
...Ну посмотрел. И что там супер крассивого? 8 тактов без сохранения контекста.
Что там нового? ...
|
Да видно не смотрел вообще , отклик на прерывания - 2 такта всего .
__________________
Короче асма кода нет !
|
|
|
|
11.02.2011, 01:48
|
#283
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от SasaVitebsk
|
....По сравнению с 51, которая 10 лет назад сделана,....
|
Да и я смотрю тебе вообще пофиг какое построение архитектуры у контроллера - которая напрямую влияет на его производительнось - ну так посмотри еще раз повнимательнее - XMega оччень отличается от 51 , не говоря уже о том что и обычные AVR отличаются от этого 51 по архитектуре .
__________________
Короче асма кода нет !
|
|
|
|
11.02.2011, 01:57
|
#284
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от pinco
|
Да видно не смотрел вообще , отклик на прерывания - 2 такта всего .
|
Ого! Напишите об этом в Атмел, а то они обещают минимум 5:
Цитата:
|
The interrupt response time for all the enabled interrupts is five CPU clock cycles minimum. Dur-
ing these five clock cycles the program counter is pushed on the stack. After five clock cycles,
the program vector for the interrupt is executed. The jump to the interrupt handler takes three
clock cycles.
If an interrupt occurs during execution of a multi-cycle instruction, this instruction is completed
before the interrupt is served.
|
Плюс заканчивается текущая инструкция. По системе команд, если не повезет прерывание придется на какую нибудь длинную 5 тактовую инструкцию. Вот еще 5. Уже 10. Дальше - мы в прерывании только теоретически, практически мы только на векторе. Переход на обработчик еще 2 такта. Дальше нужно сохранить в стеке один из регистров и sreg. Ну или минимум SREG в регистре. Еще два такта минимум. Итого от 9 до 14 тактов латентность прерывания у XMega.
Читайте стр 124 XMEGA A MANUAL.
|
|
|
|
11.02.2011, 02:24
|
#285
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от SasaVitebsk
|
По сравнению с 51
|
Наконец-то в среднем классе нормальный контроллер прерываний, как и в 51 кстати, несмотря на практически полное отсутствие регистров быстрого доступа и 12 тиков на машинный цикл, альтернативы не было. А в этой ещё и 32 прямых регистра сохранили, чем не может похвастаться даже ARM.
|
|
|
|
11.02.2011, 03:01
|
#286
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от kison
|
По системе команд, если не повезет прерывание придется на какую нибудь длинную 5 тактовую инструкцию.
|
А где это Вы там нашли длинную 5 тактовую инструкцию ? Все команды в основном 1или 2 такта , реже 3 , есть правда с 5 тактами ну так это только команда возвратов из прерывания , да и то когда используется внешняя память , а так - только 4 . Да про общий оклик в 5 тактов там написано , согласен , но так это общее время , вместе с переходом на обработку прерывания , сам прыжок 3 такта в него входит , и получается что только сама реакция на возникновение прерывания - до прыжка - как раз 2 такта , а после пяти уже находимся в подпрограмме обработки прерывания , не знаю откуда Вы там 10 или 14 тактов там берете .Разговор был про "без сохранения контекста" - ну так и считайте тоже без сохранения SREG и прочего , и кстати сохранение SREG идет уже в самой проге обработки , то есть мы уже в ней находимся , это считается что мы уже начали выполнение этой программы обработки прерывания , а потом - совсем не обязательно во всех случаях при заходе в обработку сохранять SREG , если его биты не критичны при выходе из подпрограммы прерывания - я вообще не сохраняю SREG , и не трачу на это никаких лишних тактов .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 11.02.2011 в 03:35.
|
|
|
|
11.02.2011, 03:37
|
#287
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от pinco
|
Да про общий оклик в 5 тактов там написано , согласен , но так это общее время , вместе с переходом на обработку прерывания
|
Это переход на вектор. Если прерывание не одно, то оно расположено не в области векторов. Значит нужен переход. Это еще два такта. Итого минимум 7 до входа в обработчик. Минимум, мы не учитывали что текущая команда из нескольких тактов должна завершиться. Команды от 1 до 5 тактов. Возьмем среднюю в 2, хотя для расчета латентности обычно берется максимальная. 5 тактов не только возврат из прерывания, это может быть и RET - а подпрограммы (функции) широко применяются.
Но пусть два. Итого 9. Мы в обработчике, но чтоб что то сделать полезного надо как минимум сохранить SREG. Пусть это ассемблер и сохраняем в регистре in R16,SREG - еще такт. Итого 10 тактов. Плюс неплохо рабочие регистры в стеке сохранить. Еще такты. Вот так и набегает. Это далеко не два такта. Да впрочем у обычных АВР все то же самое с латентностью, никаких прорывов нет.
|
|
|
|
11.02.2011, 03:44
|
#288
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от pinco
|
и кстати сохранение SREG идет уже в самой проге обработки , то есть мы уже в ней находимся , это считается что мы уже начали выполнение этой программы обработки прерывания
|
Вот забавно. Например STM8 имеет 9 тактов латентность. Сюда входит и сохранение контекста и помещение регистров в стек! И еще много кто так делает - Cortex M3 например. Они готовы сразу выполнять осмысленные действия в обработчике.
Так что ничего уникального в иксмеге в плане латентности нет. Очень средний результат. Далеко ей до двух тактов.
|
|
|
|
11.02.2011, 03:44
|
#289
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от kison
|
Команды от 1 до 5 тактов. Возьмем среднюю в 2, хотя для расчета латентности обычно берется максимальная. 5 тактов не только возврат из прерывания, это может быть и RET - а подпрограммы (функции) широко применяются.
Но пусть два. Итого 9. Мы в обработчике, но чтоб что то сделать полезного надо как минимум сохранить SREG. Пусть это ассемблер и сохраняем в регистре in R16,SREG - еще такт. Итого 10 тактов. Плюс неплохо рабочие регистры в стеке сохранить. Еще такты. Вот так и набегает. Это далеко не два такта. Да впрочем у обычных АВР все то же самое с латентностью, никаких прорывов нет.
|
Да нет там 5 тактовых команд вообще ,ни в одной команде , кроме конечно возвратов ,ну так это и не так важно - ведь это уже возвраты , то есть нужное действие по прерыванию уже успели сделали , сами-то посмотрите повнимательнее .Регистры сохраняются и SREG - УЖЕ В САМОЙ подпрограмме обработки , мы уже в ней , и считать эти такты как такты входа в нее невозможно , так как мы уже в ней самой внутри находимся !!!
И потом , при собственноручном рациональном распределении регистров можно их вообще не сохранять , как и SREG тоже , ну это ж не нужно Вам растолковывать буквально на пальцах , полагаю .
Если каждый раз перед заходом в подпрограмму Ваша оболочка заставляет сохранять или принудительно сохраняет Вам все регистры и плюс SREG то это беда C и той оболочки в которой Вы пишете свои проги , я пишу на асме и сам когда захочу либо сохраняю что там и то выборочно только то что мне надо , либо нет , чтобы вообще не тратить на это лишние такты .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 11.02.2011 в 04:01.
|
|
|
|
11.02.2011, 03:55
|
#290
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Atmel - в цинковый ящик?!!!
Сообщение от pinco
|
Да нет там 5 тактовых команд вообще , кроме возвратов , сами-то посмотрите повнимательнее .
|
А что - прерывания у нас сознательные и во время выполнения возврата из функции не возникают?
Сообщение от pinco
|
Регистры сохраняются и SREG - УЖЕ В САМОЙ подпрограмме обработки , мы уже в ней , и считать эти такты как такты входа в нее невозможно , так как мы уже в ней самой внутри находимся !!!
|
Кому интересен сферический конь? Важен не момент входа в обработчик, а время необходимое для завершения необходимых в обработчике действий. Сохранение SREG и регистров это время увеличивают. Ну на примере - считать с одного порта, добавить к этому значение хранящееся в какой нибудь ячейке памяти и вывести на другой порт. Интересует время именно до записи в порт, может оно критично.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:16.
|
|