16- и 32-разрядные МК: за и против


PDF версия

16-разрядные микроконтроллеры вполне эффективно могут применяться в следующем поколении встраиваемых систем, несмотря на то, что 32-разрядные МК успешно завоевывают массовые рынки. В статье подробно рассматриваются причины, позволяющие сделать такой вывод.

Недавний обзор сегмента встраиваемых систем, проведенный компанией TechInsights (см. рис. 1), показал, что 19% разработчиков используют 16-разрядные процессоры в своих текущих проектах, и это соотношение остается неизменным в течение последних четырех лет. Данное число существенно меньше 58% разработчиков, применяющих 32-разрядные устройства, но больше 13%, отдающих предпочтение 8-разрядным МК.

Рис. 1. Использование микроконтроллеров во встраиваемых системах

В настоящее время сложилось мнение, что все встраиваемые приложения переходят на применение 32-разрядных МК. Возможно, это и справедливо для рынков массового спроса, например рынка мобильной связи, но архитектура 8-разрядных МК продолжает наиболее широко использоваться в других приложениях. Так происходит не из-за какой-то особенной привязанности разработчиков к ширине шины, но обусловлено тем, что подавляющее большинство функций и приложений по-прежнему реализуется с помощью недорогих 8-разрядных устройств.
В стремлении добиться большего быстродействия системы команд писались для программирования на ассемблере, причем основные усилия разработчиков были сосредоточены на командах для реализации высокой производительности встраиваемых приложений.
Поскольку 8-разрядные архитектуры были созданы до появления языков высокого уровня, системы команд не предусматривали использование эффективных компиляторов С с жесткими требованиями к размерам кода и поддержкой абстрактных структур.
По той причине, что у 8-разрядных устройств были ограниченные арифметические функции, например умножения и деления, им зачастую требовалось несколько тактов на команду, из-за чего их производительность проигрывала в сравнении с позже появившимися архитектурами.
Сталкиваясь с этими ограничениями 8-разрядных МК, инженеры по понятным причинам отдавали предпочтение 32-разрядным МК — устройствам с наилучшей производительностью для реализации современных приложений, т.к. проще конструировать систему с «дополнительным» быстродействием, предполагая, что это преимущество позволит решить многие задачи в процессе разработки. Кроме того, эффективность компиляторов, работающих с языками высокого уровня, намного больше по сравнению с физической архитектурой.
Тем не менее стоимость 32-разрядных решений высока, а рост ее быстродействия сопряжен с увеличением расхода мощности из-за больших токов утечки и режима ожидания.
В данном случае для оптимизации решения требуется установить соответствие между характеристиками системы и производительностью выбираемых компонентов. Если, к примеру, инженер не станет использовать 20-Мвыб./с АЦП для оцифровки 44-Квыб./с аудиоприложения, то зачем устанавливать 32-разрядный МК для выполнения тех задач, с которыми справится 16-разрядный МК с необходимой производительностью? 32-разрядное устройство увеличит стоимость системы, повысит ее потребление и ток в режиме ожидания.
При выборе МК недостаточно учитывать лишь их производительность — для окончательного решения следует также знать, насколько эффективно используется этот параметр. Например, у 16-разрядного процессора eCOG16EO1 компании Cyan то же быстродействие, что и у младших моделей 32-разрядных МК, причем у него такие же низкие показатели энергопотребления, что и у маломощных 8- или 16-разрядных МК. В приложениях с батарейным питанием, например в системах автоматизированного сбора данных со счетчиков и ZigBee, это преимущество может оказаться очень важным, поскольку источник питания должен иметь продолжительный срок эксплуатации.
Новые 16-разрядные архитектуры позволяют добиться высокой производительности решения, не жертвуя его энергэффективностью, что хорошо иллюстрирует пример приложений с использованием центрального процессора CyCore, который управляет самоформирующейся и самоизлечивающейся ВЧ-сетью Cy-Net3 и обладает достаточным быстродействием, чтобы обеспечить прямую защиту от ошибок (Forward Error Correction) на физическом уровне. К преимуществам такого решения следует отнести и сверхнизкое потребление батарей, и высокую производительность на системном уровне, что не достигается с помощью 32-разрядного решения. Данный пример убедительно показывает преимущества выбора, когда в расчет принимается соответствие параметров компонентов и характеристики системы.
Несмотря на возражения о том, что всегда имеется возможность добиться приемлемой производительности благодаря 8/16-разрядным ЦП путем тщательного и кропотливого программирования на ассемблере, многие современные 16-разрядные МК имеют достаточно эффективные компиляторы С. Тем не менее некоторые 16-разрядные микроконтроллеры незаслуженно не нашли применения для выполнения физических функций ЦП. Наиболее эффективными компиляторами становятся те, которые создаются при тщательном учете особенностей оборудования. При проектировании 16-разрядного ЦП с высокой производительностью также следует учесть несколько требований, чтобы компилятор обеспечил эффективный и компактный код. Во-первых, ортогональные RISC-архитектуры с большим количеством регистров общего назначения и с архитектурой загрузка/запоминание позволяют оптимизировать компилятор для работы с языками высокого уровня. Кроме того, добавление требуемого количества регистров адреса и режимов обеспечивает эффективную реализацию указателей и структур, которые используются в современных методах программирования на языке высокого уровня.
При такой сильной взаимозависимости архитектуры ЦП и компилятора единственный правильный метод реализации эффективного решения заключается в одновременной разработке компилятора и архитектуры ЦП. Тест Dhrystone показал, что с помощью этого метода достигается производительность 0,7 MIPS, а уплотнение кода в стандартных тестах оказалось на 20% лучше, чем в системах на базе 32-разрядного ядра ARMv6.
Таким образом, 32-разрядные устройства — не всегда очевидный выбор для приложений с высоким быстродействием, т.к. следует учитывать и другие показатели для достижения оптимального баланса между требованиями и практической реализацией решения. Например, необходимо принять во внимание, насколько велик максимальный объем данных, с которым будет работать приложение. Если речь идет о 16-разрядных (и менее) данных, то в 32-разрядном решении большая часть циклов ЦП будет затрачиваться на перемещение нулей и придется дорого заплатить за эти неиспользуемые разряды регистра. Кроме того, большая часть внутренних периферийных устройств — АЦП, ЦАП, таймер/счетчики, UART, SPI, I2C, CAN, WDT и т.д. — в настоящее время оптимизирована под 16 разрядов, тогда как 32-разрядные регистры не используются, и система в целом теряет часть регистрового пространства при передаче данных.
Исследование производительности любого проекта очень важно с точки зрения оптимизации его стоимости, определения производительности и энергопотребления, но этим этапом зачастую пренебрегают, предъявляя завышенные требования к техническим характеристикам, что считается наиболее безопасным выбором. В результате система оказывается дорогостоящей и неконкурентоспособной. В таком случае компании-производители очень редко идут на доработку изделия, чтобы снизить его сложность и стоимость, т.к. безвозвратно теряют свою долю рынка.
Несмотря на то, что всегда будут существовать приложения, в которых требование обеспечить максимальную производительность является наиважнейшим, факт, что 8-разрядные устройства все еще пользуются неплохим спросом, говорит о том, что большинство приложений хорошо работает на этих микроконтроллерах. В настоящее время несколько компаний из Азиатско-Тихоокеанского региона производит 8-разрядные устройства, обеспечивая спрос на недорогие оптимизированные решения на этом сегменте рынка.
Сохраняющаяся потребность в 8-разрядных устройствах свидетельствует о том, что 16-разрядные МК вполне заслуженно и эффективно могут использоваться в следующем поколении встраиваемых систем. Такие приложения как автоматизация дома, интеллектуальное управление освещением и, особенно, беспроводные сети, являются идеальными кандидатами на использование 16-разрядных МК, т.к. 8-разрядные устройства не отвечают требованиям по вычислительной мощности в этих применениях. С помощью самого последнего поколения 16-разрядных RISC-микроконтроллеров с HD-ЦП, например eCOG16E01 компании Cyan, требуемая производительность указанных приложений обеспечивается не за счет их высокой стоимости и энергопотребления. Благодаря тому, что энергопотребление этих устройств составляет менее 1 мВт/МГц, а частота процессора достигает 50 МГц, они вполне конкурентоспособны с младшими моделями 32-разрядных МК.
История космонавтики преподала нам наглядный урок по оптимизации проектов. Известно, что успешная посадка космического корабля Apollo стала величайшим технологическим достижением XX века. Она стала возможной также благодаря компьютеру, осуществлявшему автоматическое управление посадкой корабля и оснащенному лишь четырьмя 16-разрядными регистрами. Их количество могло бы быть и большим, но инженеры компании MIT, выполнявшие заказ для NASA, тщательно проанализировав требования по производительности, энергопотреблению и функциональности, пришли к выводу, что четырех регистров достаточно для выполнения поставленной задачи. Результат сказал сам за себя.

Литература
1. Colin Holland, Opportunities still exist for 16-bit microcontrollers.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *