Каково место 8- и 16-битных микроконтроллеров? Почему 32-битный не вступил во владение?

9

Какова реальная точка отсечения с точки зрения компромисса между стоимостью и производительностью при выборе 32-разрядных микроконтроллеров?

Другими словами, с ростом и доминированием архитектуры ARM, почему мы все еще используем 8-битные и 16-битные микроконтроллеры? Они все еще намного дешевле?

Я понимаю, что устройства очень низкого уровня не нуждаются в ресурсах, предлагаемых большими и более сложными архитектурами. Тем не менее, какова реальная мотивация их использования, если кажется, что затраты сходятся к тому же диапазону?

Бруно Море
источник
1
Потребляемая мощность
Леон Хеллер
7
Самый дешевый 32-разрядный микроконтроллер на Digikey, который я вижу, стоит около 0,64 доллара, самый дешевый 8-разрядный - 0,35 доллара. Если вы большая компания, которая собирается создать миллион простых виджетов, это очень важное различие.
Самуил
@ LeonHeller На первый взгляд, я склонен согласиться, но посмотрим на то, что я высказал в комментариях к предлагаемому ответу.
Бруно Морейс
2
Глядя даже на оптовые цены на DigiKey, это не блестящее руководство, для крошечных микроэлементов в небольших встроенных приложениях с низким энергопотреблением, которые массово производятся, никто не покупает их у DigiKey, и есть вероятность, что они покупают матрицы, чтобы не прилипать. пакет чипов для пайки на плате. 8-битный микро всегда будет меньше, проще, следовательно, дешевле и дешевле, чем 32-битный аналог. Да, маржа снижается до такой степени, что для многих людей она незначительна, но в массовых объемах даже 1/10 сэкономленной копейки того стоит.
Джон U
Вот соответствующая статья, с которой я столкнулся на сайте Electronic Design: 8 бит или 32 бит? Выбор MCU для вашего следующего дизайна
Гарт Уилсон,

Ответы:

17

Возможно, год назад существовала значительная разница между низкоуровневыми 8-разрядными и самыми дешевыми 32-разрядными микроконтроллерами. Уже не так.

Основываясь на оптовых ценах Digi-Key, вы можете получить 8-битный PIC10F200 за 35ȼ в 2500 количествах в упаковке SOT-23-6. Вы получаете 32-битный CY8C4013SXI-400 (ARM Cortex-M0) для 36ȼ в 2500 количествах в пакете SOIC-8. (Оптовое ценообразование Digi-Key нереально с точки зрения того, что фактически платят производители, а это, вероятно, намного меньше, но я думаю, что это целесообразно использовать для приблизительного сравнения цен между различными продуктами для сходных количеств.)

Так что ОП прав, они сходятся.

Так почему же 32-битные чипы не используются чаще? Как я уже говорил в первом абзаце, такое соотношение цены и размера произошло только в прошлом году или 18 месяцах. И у них все еще есть длинный предстоит пройти путь, прежде чем достаточно фишек, чтобы быть конкурентоспособными.

Из 6875 чипов ARM, доступных от Digi-Key, только четыре в наличии с ценовой оценкой ниже доллара. четыре . Между тем, сотни инженеров предлагают 8-битные чипы под доллар.

Но допустим, что было доступно по меньшей мере несколько десятков бюджетных 32-разрядных микросхем. Будут ли они автоматически выбраны над 8-битными?

Прежде всего, вы должны информировать инженеров о них. Всегда есть большое сопротивление изменениям. Новые вещи для изучения - с аппаратной точки зрения, обучение тому, как встроить новый чип в схему. Появились новые инструменты, такие как внутрисхемные программисты, новые компиляторы и т. Д. Для инженеров-программистов, изучающих, как использовать совершенно новый набор периферийных устройств и таймеров (в основном, схемы разметки и значения битов).

32-битные это хорошо и все такое, но если не нужно много тяжелых вычислений, какой смысл? Если у вас только четыре вывода GPIO, внутренний доступ к ним в виде 32-разрядного регистра не дает никаких преимуществ по сравнению с использованием 8-разрядного регистра.

Я думаю, что энергопотребление всегда будет в пользу 8-битных микро.

Например, PIC10F200 потребляет 175 мкА, работая на 4 МГц и 2 В и 100 нА в режиме ожидания. CY8C4013SXI-400 потребляет приблизительно 800 мкА при частоте 4 МГц и 2 В и 1 мкА в режиме ожидания. (Таблица данных для CY8C4013SXI не имела чисел ни для 4 МГц, ни для 2 В, поэтому мне пришлось провести некоторую оценку - в таблице говорится, что она потребляет 2 ма при 6 МГц и 3,3 В).

Таким образом, ARM потребляет в 4,5 раза больше тока, когда бодрствует, и в 10 раз, когда спит. Не похоже много, но разница между бегом по клетке монеты в течение 3 месяцев или в течение года. (Я предполагаю, что оба микроконтроллера в основном выполняют синхронизацию, обновляют порты и т. Д. И не выполняют по-настоящему тяжелых вычислений. Если это последний случай, и 8-разрядный микро должен выполнять много многобайтовой арифметики в течение длительного периода времени времени, он теряет часть своего преимущества.)

Интересно, что ARM потребляет примерно в четыре раза больше тока, чем 8-битный, и, в свою очередь, имеет внутренние регистры и пути данных, которые в четыре раза шире. Я не думаю, что это совпадение. Для CMOS потребление энергии примерно пропорционально количеству переключаемых транзисторов, и ARM, очевидно, делает намного больше для каждой выполняемой команды.

Поскольку все больше производителей ARM выпускают недорогие чипы, я не удивлюсь, если такие производители, как Microchip, еще больше снизят свои цены. В любом случае, при более или менее равных ценах на пакеты одинакового размера, но с гораздо меньшим количеством 32-битных микросхем на выбор, я думаю, что 8-битные микроконтроллеры еще какое-то время появятся, особенно потому, что вы с ними познакомились десятки тысяч инженеров.

tcrosley
источник
Для энергопотребления в реализованных режимах сна вам также необходимо учитывать эффективность кода. Если MCU активируется с помощью триггера, затем выполняет некоторый код и возвращается в спящий режим, количество тактов, необходимое для завершения работы, будет весьма актуальным. Я думаю, что большая часть потребления тока MCU исходит от генератора, работающего на полной скорости. Чтобы выполнить ту же работу, что и 32-битный, для 8-битного, вероятно, потребуется примерно в пять раз больше циклов, просто потому, что они, как правило, гораздо менее эффективны в коде, даже когда выполняют простую арифметику.
Лундин
(И это не так много, потому что они имеют 8-битную шину данных, но в основном потому, что все основные 8-битные битрейты рынка имеют древние конструкции процессорных ядер 70-х и 80-х годов.)
Лундин
1
@Lundin Я говорю это в своем ответе - если 8-битный должен делать много причудливой математики в ISR, то он все же теряет часть своего преимущества. Но если он просто устанавливает некоторые флаги или обновляет регистр, то это будет более эффективным.
Трокли
5

Три основных момента:

  • Цена
  • Размер
  • Потребляемая мощность

50 ¢, когда вы заказываете 10000 фишек, это довольно большие деньги. Даже больше, когда вы заказываете 100 000 фишек.

Вы можете получить 8-битные микросхемы, значительно меньшие, чем 32-битные микросхемы, такие как PIC10, который доступен в упаковке SOT23-6.

32-битные микросхемы, поскольку они обычно работают быстрее и потребляют больше энергии, потребляют гораздо больше энергии, чем маленькие 8-битные микросхемы. Батареи разряжаются быстрее, энергосистемы должны обеспечивать больший ток (и, следовательно, быть более дорогостоящими) и т. Д.

В конце концов, почему вы покупаете Джаггернаут, чтобы взять чашку сахара по соседству?

Majenko
источник
2
Просто сравните две микросхемы от одного производителя - например, PIC18F25K20 и PIC32MX250F512 от Microchip. Оба современных микроконтроллера. Обе таблицы имеют Idd и тактовую частоту. 8-битный график достигает максимума при 5 мА, 32-битный - до 20 мА. Если подумать, 8-битная операция будет делать что-то с 8 защелками - 32-битная будет делать то же самое (или эквивалентно) с 32 защелками. Это в 4 раза больше защелок, которыми нужно манипулировать, так что в 4 раза больше обычного потребления тока.
Majenko
2
Ток холостого хода для 32 бит составляет от ~ 0,5 мА до 7 мА. 8-разрядный график для тока холостого хода измеряется по шкале мкА и составляет 7 мкА - всего 4 мкА при работе при нормальной комнатной температуре ...!
Majenko
3
Выкопайте некоторые таблицы и посмотрите сами.
Majenko
2
Это предполагает, что все, что чип делает, это обработка. Вещи занимают время, не зависящее от скорости чипа, например, считывание данных с внешних датчиков и т. Д. 32-разрядный процессор с частотой 80 МГц не будет считывать устройство I2C с частотой 100 кГц быстрее, чем 8-разрядный процессор с частотой 16 МГц.
Majenko
3
Не забывайте унаследованное программное обеспечение (особенно для систем, требующих сертификации) и знакомство с разработчиками, выбор периферийных устройств / ОЗУ / флэш-памяти (конструкция микроконтроллера с более производительным процессором будет использовать большую площадь микросхемы для памяти; Cortex-M с 256 байтами ОЗУ). кажется маловероятным в ближайшее время), и выбор пакета / напряжения. Хороший ответ также должен объяснить, почему 16-разрядный рынок не так хорош (и более современные 8-разрядные ISA, такие как AVR) и почему 4-разрядный рынок выглядит очень ограниченным (часы и что еще?).
Пол А. Клейтон
2

Приложения uC, которые я разработал для коммерческих продуктов, почти никогда не обрабатывали данные размером более 8 бит; поэтому, даже если бы 32-битная цена была такой же, как у 8-битной, все равно не было бы никакой выгоды. Как сказал кто-то другой, мы стремимся к тому, что знакомо, поэтому мы можем сделать это быстрее. Однако последняя разработка, которую я разработал, всячески подталкивала PIC16, который я использовал, до предела, но это было не из-за размера данных. Если я сделаю еще что-то подобное, мне действительно стоит выучить ARM.

Гарт Уилсон
источник
Я бы предположил, что для большинства небольших микро приложений самый большой требуемый размер данных будет 16 бит или, может быть, 24. Большинству приложений не нужно много делать с вещами больше 8 бит, но им нужно что-то делать. С другой стороны, почти каждый когда-либо созданный 8-битный микроконтроллер (если не абсолютно каждый) имеет флаг переноса, который позволяет использовать последовательность операций для выполнения 16-битного (или даже большего).
суперкат
2

Я ожидаю, что ARM-чипы возьмут на себя большинство функций, когда что-то ведет себя как «компьютер». С другой стороны, многие 8-битные микроконтроллеры привыкли делать то, что можно сделать с помощью относительно простого программируемого логического устройства или умеренного числа вентилей, но на самом деле это можно сделать дешевле и / или с меньшим потреблением тока, используя простой 8-битный микро При разработке более сложных приложений часто проще использовать 32-битный микро, чем 8-битный, но если цель микросхемы состоит в том, чтобы, например, наблюдать и отбрасывать определенный вход и, если он идет высоко, начать вывод 200 импульсы на определенном выходе с интервалами 1 мс, затем 100 с интервалами 2 мс, затем 100 с интервалами 3 мс, затем пауза на 100 мс и продолжайте делать это до тех пор, пока вход не станет низким, разработка кода для этого на самом деле может быть прощена 8-битном микро, чем на 32-битном. Разница в стоимости между 8-битными и 32-битными микросхемами во многих случаях может оказаться недостаточной, чтобы оправдать затраты дополнительных инженерных усилий, чтобы проект "вписался" в 8-битную микросхему, но в тех случаях, когда 32-битная часть не Не стоит тратить время на инженерные работы, нет причин тратить лишние деньги.

Supercat
источник
Я согласен, но отмечу, что поддержание и сохранение мастерства с двумя наборами инструментов требует собственных инженерных усилий.
Скотт Сейдман
2
@ScottSeidman: правда. С другой стороны, также стоит упомянуть, что некоторые 8-битные микросхемы могут запускать код практически сразу при включении питания, тогда как 32-битные микросхемы, которые я видел, занимают немного больше времени.
суперкат
Интересно, увидим ли мы когда-нибудь лицензию ARM на 8-битных платформах? Есть несколько замечательных особенностей реализаций ARM, таких как возможность просто не синхронизировать целые периферийные устройства и шины, которые должны заставить 8-битную ARMS работать в обход других платформ с точки зрения энергопотребления. Если mfct создаст CMSIS-совместимые библиотеки, я думаю, что они в конечном итоге уничтожат крупных игроков.
Скотт Сейдман
@ScottSeidman: На самом деле, я бы хотел увидеть проекты, в которых чувствительные к синхронизации части периферийных устройств (например, таймеры, генераторы скорости передачи данных и т. Д.) Могут работать с постоянной временной базой, которая не зависит от скорости процессора. , но я видел только минимальную поддержку такой концепции. В кремнии это не сложно, но я думаю, что инструментам синтеза не хватает средств для эффективного выполнения таких задач.
суперкат
@supercat Я не уверен насчет других микроконтроллеров, но PIC32 имеет концепцию тактовой частоты периферийной шины, которую можно настроить на частоту, отличную от основной тактовой частоты. Таким образом, вы можете изменить скорость процессора, например, для экономии энергии, и при этом сохранить те же часы PB, чтобы вам не приходилось перепрограммировать все скорости вашего периферийного
бода
1

Хотя я согласен с тем, что основными причинами являются стоимость процессора и энергопотребление, еще одно соображение, которое я здесь пока не видел, - это пространство на печатной плате. Для многих типов встраиваемых систем, таких как, например, электронные весы для ванной комнаты, нет большой необходимости в большом количестве операций ввода-вывода, нет необходимости в большем размере шины и нет преимущества в более быстрой обработке. Тем не менее, этоПреимущество для меньшего пакета с меньшим количеством контактов, потому что это делает расположение и маршрутизацию печатной платы проще и часто меньше. Если плата может быть спроектирована как двухслойная, а не четырехслойная, это означает значительную экономию затрат, а меньшее число выводов, которое часто идет с 8-разрядными процессорами, способствует такой экономии легче, чем 32-разрядная. битовые процессоры, которые обычно имеют больше контактов и физически большие пакеты.

Эдвард
источник
Вы понимаете, что это вопрос 2,5 года, верно?
Олин Латроп
@ Олин Другая точка зрения не помешает.
м.Алин
@OlinLathrop: да, мои 8-битные часы / календарь с процессором работают нормально. :)
Эдвард
0

Известно, что даже в 8-битном мире новые типы занимают много времени в пользу старых типов - MCS51 все еще жив в своих нишах, а MCS48 все еще обнаруживается в неожиданных местах.

Во многих случаях изменения не происходят, потому что они не приносят никакой дополнительной пользы и связаны с затратами на изучение новой технологии, которая еще не доказала свою готовность и / или, как ожидается, все еще будет движущейся целью (что делает это интересно людям, которые хотят сосредоточиться на технологии MCU, но раздражают людей, которые хотят сосредоточиться на своих приложениях и не постоянно исправлять и повторно тестировать производственное программное обеспечение, чтобы адаптировать винтаж ARM этого года!). Для некоторых компонент, который больше не разрабатывается, устарел, для других он, наконец, стал стабильным , и, хотя ему могут потребоваться обходные пути для исправления ошибок, он, по крайней мере, обеспечивает для них стабильную платформу. Лавовый поток не всегда является антипаттерном, на который он треснул - он заставляет горы оставаться на месте.

rackandboneman
источник