При одинаковом количестве ступеней трубопровода и одинаковом производственном узле (скажем, 65 нм) и одинаковом напряжении простые устройства должны работать быстрее, чем более сложные. Кроме того, объединение нескольких этапов конвейера в один не должно замедляться в несколько раз больше, чем число этапов.
Теперь возьмем пятилетний процессор с 14 ступенями конвейера на частоте 2,8 ГГц. Предположим, кто-то объединяет стадии; это замедлится до уровня ниже 200 МГц. Теперь увеличьте напряжение и уменьшите количество бит на слово; это на самом деле ускорит процесс.
Вот почему я не понимаю, почему многие производимые в настоящее время микроконтроллеры, такие как AVL, работают с ужасной скоростью (например, 20 МГц при 5 В), хотя гораздо более сложные процессоры, выпущенные несколько лет назад, были способны работать в 150 раз быстрее или в 10 раз быстрее если вы свернете все ступени трубопровода в одну, то при 1,2 В. Согласно самым грубым расчетам за пределами оболочки, микроконтроллеры - даже если они изготовлены с использованием устаревшей технологии - должны работать как минимум в 10 раз быстрее при одной четверти напряжения, которое они подают.
Таким образом, вопрос: каковы причины медленных тактовых частот микроконтроллера?
Ответы:
Есть и другие факторы, которые способствуют скорости.
Память: фактическая производительность часто ограничена задержкой памяти. Процессоры Intel имеют большой кэш, чтобы восполнить это. Микроконтроллеры обычно этого не делают. Флэш-память намного медленнее, чем DRAM.
Потребляемая мощность: это часто имеет большое значение для встроенных приложений. Фактические 200 МГц процессоры Intel потребляли более 10 Вт (часто гораздо больше) и нуждались в большом радиаторе и вентиляторе. Это требует пространства и денег, и это даже не считая внешней логики и памяти, которые были с этим. 20 МГц AVR занимает около 0,2 Вт, которая включает в себя все , что вам нужно. Это также связано с процессом - более быстрые транзисторы имеют тенденцию к утечке.
Условия эксплуатации: как отмечает Дмитрий в комментариях, многие микроконтроллеры могут работать в широком диапазоне напряжения и температуры. Тот ATMega, о котором я упоминал выше, работает при температуре от -40 ° C до 85 ° C и может храниться при температуре от -65 ° C до 150 ° C. (Другие MCU работают до 125C или даже до 155C.) Напряжение VCC может быть любым от 2,7 В до 5,5 В (5 В +/- 10% для пиковой производительности). Эту таблицу данных Core i7 трудно читать, так как они сокращают допустимый VCC во время производства, но допуски по напряжению и температуре, безусловно, уже: ~ 3% допуск по напряжению и максимальная температура перехода 105 ° C. (Минимум 5C, но когда вы тянете> 100 ампер, минимальные температуры на самом деле не проблема.)
Количество ворот: проще не всегда быстрее. Если бы это было так, Intel не понадобился бы никакой архитектуры ЦП! Это не просто конвейерная обработка; вам также нужны такие вещи, как высокопроизводительный FPU. Это поднимает цену. По этой причине многие низкоуровневые микроконтроллеры имеют только целочисленные процессоры.
Бюджет области матрицы. Микроконтроллеры должны встраивать множество функций в одну матрицу, которая часто включает в себя всю память, используемую для приложения. (SRAM и надежная NOR флэш-память довольно велики.) Процессоры ПК взаимодействуют с внешней микросхемой и периферийными устройствами.
Процесс: Эти 5V AVR сделаны по древнему недорогому процессу. Помните, они были разработаны с нуля, чтобы быть дешевыми. Intel продает потребительские товары с высокой прибылью, используя лучшие технологии, которые можно купить за деньги. Intel также продает чистую CMOS. Процессы MCU должны создавать встроенную флэш-память, что более сложно.
Многие из вышеперечисленных факторов связаны между собой.
Вы можете купить 200 МГц микроконтроллеры сегодня ( вот пример ). Конечно, они стоят в десять раз дороже, чем эти 20 МГц ATMegas ...
Короче говоря, скорость сложнее, чем простота, а дешевые продукты оптимизированы по дешевизне, а не по скорости.
источник
Основная техническая причина медленных скоростей заключается в том, что дешевые / небольшие микроконтроллеры используют только встроенную флэш-память для хранения программ (т.е. они не выполняются из ОЗУ).
Небольшие микроконтроллеры обычно не кэшируют память программ, поэтому они всегда должны прочитать инструкцию из флэш-памяти перед выполнением, каждый цикл. Это дает детерминированную производительность и # циклов / операцию, просто дешевле / проще и позволяет избежать проблем, подобных ПК, когда код и данные смешиваются, создавая новый набор угроз из-за переполнения буфера и т. Д.
Задержка чтения из флэш-памяти (порядка 50-100 нс) намного медленнее, чем чтение из SRAM или DRAM (порядка 10 нс или ниже), и эта задержка должна возникать каждый цикл, ограничивая тактовую частоту часть.
источник
Почему люди ездят на велосипеде или маленьком мотоцикле, когда у вас есть машина Формулы 1? Наверняка, должно быть, лучше ехать со скоростью, скажем, 300 км / ч и мгновенно добраться куда угодно?
Проще говоря, нет необходимости быть быстрее, чем они. Я имею в виду, конечно, что микроконтроллеры немного быстрее работают с некоторыми функциями, но что вы собираетесь делать, скажем, в торговом автомате, который непрерывно работает, возможно, 1 час в день? Что вы собираетесь делать, скажем, в пульте дистанционного управления для телевизора?
С другой стороны, у них есть другие важные возможности, такие как низкое энергопотребление, которые НАМНОГО проще программировать и так далее. По сути, они не процессоры и делают разные вещи.
источник
Есть много контроллеров ARM, которые работают на сотнях МГц или более. Кому нужен PIC на 500 МГц, и кто готов платить достаточно за каждую часть, чтобы оправдать маски на миллион долларов для процесса, близкого к современному?
Популярный ATmega328, как сообщается, сделан по технологии 350 нм, что немного отстает от новейших процессоров Intel (14 нм для Skylake ).
Даже самые дешевые 8-битные контроллеры постепенно увеличивают скорость, и вы можете получить 32-битные и 64-мегагерцовые PIC-контроллеры (например, PIC18F14K22), которые по-прежнему работают при 5 В (последний учитывает общую стоимость системы).
Одним из соображений является то, что эти контроллеры имеют архитектуру, которая оптимизирована для небольших областей памяти и медленных тактовых частот. Как только вы начинаете работать на высоких тактовых частотах, вам нужно перенастроить вещи с помощью прескалеров и т. Д.
В конце 1990-х годов была предпринята попытка создать очень быстрые PIC-подобные контроллеры с идеей, что микропрограммное обеспечение может заменить периферийные устройства, если микроконтроллер будет достаточно быстрым. Например, вы можете поразить UART. Я не думаю, что все они были коммерчески успешными - Scenix-> Ubicom-> Qualcomm (игра окончена).
источник
Представьте, что кто-то хочет производить автомобили. Один из подходов состоит в том, чтобы использовать на заводе несколько единиц оборудования, собирая по одной машине за раз. Этот подход может быть реализован с небольшим количеством оборудования средней сложности, такое количество единиц оборудования может использоваться для выполнения более одного шага. С другой стороны, большая часть оборудования на заводе по-прежнему будет простаивать большую часть времени.
Другой подход состоит в том, чтобы настроить сборочную линию, чтобы, как только оборудование, которое обрабатывало первый этап производства, завершило эту операцию на первом автомобиле, оно могло затем приступить к запуску соответствующей операции на следующем автомобиле. Попытка повторно использовать один элемент оборудования на нескольких этапах производственного процесса будет сложной, поэтому в большинстве случаев было бы лучше использовать больше единиц оборудования, каждый из которых оптимизирован для выполнения одной очень конкретной задачи (например, если необходимо сверлить 50 отверстия 10 различных размеров, тогда минимальная установка оборудования будет включать в себя одно сверло с 10 битами и механизм быстрой замены, но на сборочной линии может быть 50 сверл с одним постоянно установленным битом и нет необходимости в быстрой смене) ,
Для таких вещей, как DSP или GPU, можно достичь очень высоких скоростей относительно дешево, потому что характер выполняемой работы очень последовательный. К сожалению, многие процессоры должны быть в состоянии обрабатывать произвольные ошибки инструкций различной сложности. Эффективное выполнение этого возможно, но требует очень сложной логики планирования. Во многих современных процессорах логика, необходимая для «выполнения работы», не слишком сложна и не дорога, но логика, необходимая для координации всего остального, такова.
источник