Alexey, ты ещё здесь сидишь?
Понедельник Апрель 25 2005 14:59, Alexey Boyko wrote to George Shepelev:
GS>> Hа PIC'е код комментариев не требует ,-) AB> Его я совсем не понял.
Работа с битами. Проверяется пара флажков, в зависимости от них устанавливается другая пара флажков, сбрасывается флажок, свидетельствующий, что данные обработаны, обрабатываются ещё два набора бит, логическое OR этих наборов записывается в байт состояния. Где-то так...
GS>>>> 30 циклов (и тактов), AVR на 20 МГц выполнит код за 1,5 мкс. В GS>>>> 1,5 раза медленей. AB>>> Делаешь быстродействующую мини-АТС? GS>> Кстати, вполне реальная задача (стойка на сотни-тысячи номеров). AB> И что, ей нужно огромное быстродействие?
Достаточно большое, линии цифровые, надо ведь маршрутизировать пакеты...
GS>> Обсуждалась, но вплотную ещё не занимался. Есть и другие задачи, GS>> где требуется постоянная работа с флажками состояний. AB> А это что за задача?
Управление, сбор данных, системы регистрации событий, формирование "хитрых" временных диаграмм в реальном времени...
AB>>> попробуй на Си написать. Он может соптимизировать AB>>> загрузки/сохранения регистров. GS>> Си не обладает магическими свойствами и будет вынужден GS>> использовать те-же самые команды "жонглирования" с регистрами. С GS>> теми-же самыми тормозами... AB> Я вижу ты работаешь с группами флажков. А значит можно сэкономить на AB> загрузке/сохранении груп флажков.
К сожалению не всегда. Они могут по разному группироваться для разных процедур программы.
AB>>> ps: как видишь - регистров хватило. GS>> Для промежуточных операций на других процах хватало и GS>> единственного аккумулятора, речь не об этом... AB> Hу так и здесь тебе хватило бы и одного. В чем разница?
Быстродействия может не хватить. Это "писишные" процы разогнали до гигагерцев, дешёвые однокристаллки так не умеют...
AB> Если в отсутствии команды установки/сброса произвольного бита в памяти
проверки произвольного бита инкремента/декремента байта сдвига байта
AB> - то так и говори.
Так и говорю.
AB> К количеству регисров это не имеет отношения.
Ещё раз, есть _очень_ маленькое количество регистров, над данными в которых можно производить нужные операции. Вся прочая память доступна только для чтения/записи. Отсюда и "жонглирование", если требуется обработать большой массив данных...
AB> ps: Естественно, при переносе на другую архитектуру и желании AB> достигнуть наибольшей эффективности нужно перепроектировать программу. AB> Ты этого не сделал, и перенес алгоритм с пика втупую.
Бесполезно перепроектировать, если задача "не ложится" на архитектуру контроллера, но требуется высокая эффективность. К примеру работу с внешней SRAM на PIC лучше не делать. А вот с большими битовыми массивами (флажками состояний) PIC справляется очень неплохо...
Георгий