Хотя с тех пор производители выпустили микроконтроллеры на 16-, 32- и даже 64-бит архитектурах, 8-бит МК продолжают играть заметную роль во встраиваемых системах. В настоящее время 8-бит микроконтроллеры очень востребованы. Во многих случаях эти МК являются единственными программируемыми устройствами в системе. В качестве примеров основных приложений, в которых используются эти МК, можно привести сигнализаторы дыма и модули промышленных датчиков. Кроме того, один или более МК применяются с другими процессорами на основе 16-, 32- и 64-бит архитектур. Контроллеры клавиатур стали предшественниками современной интеллектуальной периферии, намного упростившей работу компьютерных хост-процессоров за счет передачи ей функций по устранению дребезга контактов и сканирования входных линий. Использование нескольких совместно работающих компонентов в этом примере улучшает суммарную эффективность приложения. Современные микроконтроллеры реализованы по схожей схеме: несколько сообща функционирующих в них компонентов повышают суммарную производительность системы.
При разработке встраиваемого управляющего процессора необходимо установить оптимальное распределение рабочей нагрузки на ресурсы. Речь идет, например, о проектировании относительно сложной системы, например умной колонки, в которой применяется несколько разных процессоров. В случае же намного более простых приложений, например сигнализаторов дыма в жилых домах, управление осуществляется программным обеспечением 8-бит микроконтроллера. В обоих случаях рентабельность и энергоэффективность являются крайне важными характеристиками, которые определяют выбор архитектуры.
Наиболее подходящим, с точки зрения выбора аппаратного обеспечения, является высокопроизводительный процессор, с помощью которого операционная система решает множество разных задач. Однако такой выбор почти всегда не обеспечивает достаточную энергоэффективность, поскольку скорость обмена информацией ОС через порты ввода/вывода часто намного ниже пиковой пропускной способности высокопроизводительного процессора.
Пока с помощью портов ввода/вывода осуществляются транзакции, 32- или 64-бит процессор, способный работать на частоте 1 ГГц и выше, в течение многих циклов ожидает появления нового байта или слова. Имеется один способ постоянно избегать упорядоченного опроса – использовать прерывания, позволяющие процессору выполнять основные функции, пока порты ввода/вывода осуществляют транзакции. Однако необходимость отправлять и извлекать данные из системного стека при каждом переключении контекста требует большого числа циклов, что влечет за собой непроизводительные затраты после каждого прерывания.
Прерывания по внешним событиям используются во многих встраиваемых системах. Интенсивная обработка данных начинается после поступления сигнала, свидетельствующего о внешнем событии. Так работали в конце 1970-х гг. и контроллеры клавиатуры, и современные контроллеры: они ожидают электрического сигнала, вместо того чтобы выполнять упорядоченный опрос. Контроллер прерывания реагирует на появившийся импульс, сигнализируя встроенной программе микропроцессора о необходимости сканирования линий клавиатуры для выявления нажатой клавиши и отправки сообщения хост-компьютеру.
Большую часть своего срока службы типовая система интернета вещей выполняет обработку очень малого объема, и большинство ее функций используется только в короткие периоды активности. Например, умную колонку необходимо включить для распознания человеческой речи по звуковому сигналу достаточно большой амплитуды, который поступил от микрофона в правильном частотном диапазоне.
Или другой пример. Анализатор дыма не осуществляет измерения состава воздуха с микросекундными интервалами, поступающего в помещение, т.к. он меняется с гораздо меньшей скоростью. Устройство аварийной сигнализации может проводить выборочный замер с односекундным интервалом или реже, чтобы определить качество воздуха и установить необходимость в более тщательном анализе полученных результатов. На их вычисление, как правило, требуется доля секунды даже при использовании ядра, работающего с мегагерцовой скоростью. В обоих случаях на пребывание процессорного ядра в режиме бездействия между измерениями расходуется энергия. Чтобы этого не происходило, вместо этого бездействия используется спящий режим с пониженным потреблением, а для пробуждения ядра осуществляется прерывание с помощью системных часов, счетчика или периферийного устройства, которое обнаруживает внешние изменения.
Для сохранения высокого уровня производительности процессоры используют локальный кэш SRAM, в которой хранятся часто вызываемые команды и данные. В противном случае кэш копируют код из относительно медленно работающей флэш-памяти в SRAM или DRAM, чтобы обеспечить хорошую пропускную способность. Для экономии энергии в режиме сна эти запоминающие устройства освобождаются от контента и обновляются после сигнала о пробуждении, прежде чем процессор начнет работать. Понятно, что в таких случаях увеличивается расход энергии и время задержки.
Большинство 8-бит процессоров в лучшей мере соответствуют производительности и другим характеристикам энергонезависимых запоминающих устройств, напрямую загружая команды из флэш-памяти. Часто процессоры оснащены локальной энергонезависимой памятью для хранения долговременных данных между циклами пробуждения, благодаря чему эти процессоры редко нуждаются в повторной загрузке из сверхоперативной SRAM-памяти. В результате ядро быстрее реагирует на внешние события при меньшей пиковой производительности.
Учитывая все эти соображения, разработчики часто останавливают свой выбор на использовании 8-бит микроконтроллеров совместно с 16-, 32- или 64-бит процессорами в более сложных системах для управления событиями, что повышает энергоэффективность и вычислительную мощь. В умных колонках 8-бит микроконтроллеры можно использовать для работы с аудиовходами, когда отсутствует необходимость обрабатывать речь. Эти МК выполняют простые алгоритмы, сначала определяя уровень поступающего звука относительно фона, а затем устанавливают, что это за звук, – шум или человеческая речь. Если сигнал оказывается достаточно важным, для его последующего анализа пробуждается основной процессор.
Архитектура совместной обработки данных не ограничивается процессорным ядром. Часто возникают ситуации, когда не требуется гибкая обработка с помощью ПО большей части внешнего события, которое обнаружила система. Например, процессору умной колонки не требуется определять, имеет поступающий звуковой сигнал речевые характеристики или микрофон среагировал только на фоновый шум. Независимая от ядра периферия (CIP) может выполнять функции отдельно от процессорного ядра, например сравнивать аналоговые сигналы на входе относительно допустимого уровня (см. рис. 1). Если компаратор установил, что амплитуда сигнала, принятого микрофоном, превышает пороговое значение, выдается сигнал на пробуждение процессора.
Рис. 1. Структурная схема независимой от ядра периферии
В зависимости от роли микроконтроллера CIP-периферия обеспечивает ряд конфигурируемых интеллектуальных устройств, которые реализуют функции комбинаторной логики, функции состояния и синхронизации. Их можно объединить для реализации управления приводом, определения последовательности подачи питания, модуляции данных и подачи уловных сигналов, отказавшись от использования процессорных ресурсов. Например, у микроконтроллеров ATmega4809 с программируемой логикой (configurablecustom logic, CCL) имеется встроенный АЦП, который можно оснастить программируемыми функциями запуска и другими функциями, запускаемых по событиям, чтобы разгрузить процессор от выполнения дополнительных задач.
В случае с модулем АЦП2, который установлен на нескольких моделях 8-бит микроконтроллеров Microchip, например PIC16F18446 (см. рис. 2), аппаратное обеспечение может выполнять функции обработки сигналов, в т.ч. усреднение и НЧ-фильтрацию. Благодаря этим функциям предотвращается реакция системы на кратковременный шум и непредусмотренные всплески звука, а также обеспечивается полезный предварительный анализ сигнала, принятого АЦП, на речевое содержимое. В АЦП2 также имеются аппаратные функции, которые упрощают емкостное измерение в приложениях с сенсорными панелями, где тоже требуется программная обработка.
Рис. 2. Структурная схема PIC16F18446
Использование программируемой аппаратной периферии позволяет не только уменьшить расход энергии, позволив процессору дольше оставаться в спящем режиме, но и сократить расходы на приобретение компонентов для автономных приложений, не пожертвовав при этом функциональностью. Поддержка аппаратной фильтрации в случае применения устройств с модулем АЦП2 позволяет заменить 8-бит микроконтроллер в тех случаях, когда поначалу напрашивается использование 16-бит МК. При типовых значениях разрешения, востребованных в промышленном оборудовании и аудиосистемах, 16-бит архитектуре не требуется, чтобы оцифрованные данные распределялись для обработки в программном обеспечении так, как в 8-бит МК. Однако фильтрация, осуществляемая, например, аппаратным обеспечением освобождает 8-бит процессор от большого объема обработки сигнала, позволяя процессору, главным образом, заниматься управлением на системном уровне. Такое увеличение вычислительных ресурсов позволяет применять менее дорогостоящие 8-бит МК в сравнительно простом конечном оборудовании.
Микроконтроллеры, построенные на 8-бит архитектуре, лучше подходят для использования в приложениях с управлением по событиям и портами ввода/вывода. Многие задачи приложений с цифровой системой ввода/вывода решаются на уровне битов и суббайтов. Процессоры со сравнительно большей разрядностью, как правило, менее эффективно обрабатывают машинные слова, поскольку для этого требуется перемещать целые слова данных в регистры и из регистров, а также сложные битовые маски для управления правильным содержимым. 8-бит МК, которые предназначены для подавления дребезга контактов, генерации ШИМ-сигналов, управляющих приводами, системами освещения и источниками питания, обеспечивают требуемый уровень функциональности в случае приложений с небольшим объемом вычислений между каждым этапом.
Поскольку 8-бит микроконтроллеры, как правило, эффективнее работают с памятью программ и данных при решении задач ввода/вывода, этим устройствам требуется меньше памяти по сравнению с системами, у которых процессоры построены на других архитектурах. В более сложных приложениях может потребоваться больше памяти, что оправдывает переход на 16-бит или 32-бит МК, которые как правило, изготавливаются по меньшим технологическим нормам. 8-бит архитектура позволяет производить компоненты с использованием техпроцесса, который также поддерживает высоконадежные аналоговые цепи и системы ввода/вывода, обеспечивая более высокую коммутируемую мощность и отказоустойчивость, больший объем ресурсов, а также лучшее качество сигналов по сравнению с компонентами, выполненными по меньшим технормам. Во многих случаях целесообразно использовать преимущества совместной обработки данных и распределять рабочую нагрузку между 8-бит МК, выполняющим задачи приложения, и 16- или 32-бит процессором общего назначения.
Использование совместной обработки данных усложняет проект, поскольку разработчику приходится учитывать синхронизацию нескольких сообща работающих ядер и интеллектуальной периферии. Однако такие средства проектирования как конфигуратор кода MPLAB (MPLAB Code Configurator, MCC) от Microchip (см. рис. 3) осуществляют требуемое управление на уровне встроенного ПО, обеспечивая решения для приложений многих классов. К ним относятся системы связи, управления приводами и коммутация питания.
8-бит архитектура пользуется успехом уже многие десятки лет. В течение всех этих лет микроконтроллеры на основе 8-бит ядер продолжают соответствовать требованиям, которые выдвигаются разработчиками изделий новых поколений. К настоящему времени в 8-бит МК реализованы интеллектуальные периферийные устройства и обеспечена поддержка высокоуровневых языков, которые необходимы в современной вычислительной среде совместно работающих интеллектуальных устройств.