Почему относительно простые устройства, такие как микроконтроллеры, намного медленнее, чем процессоры?


25

При одинаковом количестве ступеней трубопровода и одинаковом производственном узле (скажем, 65 нм) и одинаковом напряжении простые устройства должны работать быстрее, чем более сложные. Кроме того, объединение нескольких этапов конвейера в один не должно замедляться в несколько раз больше, чем число этапов.

Теперь возьмем пятилетний процессор с 14 ступенями конвейера на частоте 2,8 ГГц. Предположим, кто-то объединяет стадии; это замедлится до уровня ниже 200 МГц. Теперь увеличьте напряжение и уменьшите количество бит на слово; это на самом деле ускорит процесс.

Вот почему я не понимаю, почему многие производимые в настоящее время микроконтроллеры, такие как AVL, работают с ужасной скоростью (например, 20 МГц при 5 В), хотя гораздо более сложные процессоры, выпущенные несколько лет назад, были способны работать в 150 раз быстрее или в 10 раз быстрее если вы свернете все ступени трубопровода в одну, то при 1,2 В. Согласно самым грубым расчетам за пределами оболочки, микроконтроллеры - даже если они изготовлены с использованием устаревшей технологии - должны работать как минимум в 10 раз быстрее при одной четверти напряжения, которое они подают.

Таким образом, вопрос: каковы причины медленных тактовых частот микроконтроллера?


8
Хороший кусок микроконтроллеров изготавливается с использованием устаревшей технологии Bordline, потому что фабрика оплачивается.
Мэтт Янг

18
Сила. Фактор в энергопотреблении обоих процессоров, и они будут очень близки к той же производительности / ватт, или микро выиграет.
Брайан Драммонд

34
Идея, что проще == быстрее, просто ошибочна. Большая сложность современного cisc-процессора связана с функциями, позволяющими ускорить его, такими как многоуровневые кэши, конвейеры и прогнозирование ветвлений.
PlasmaHH

1
этот старый процессор не работает от маленькой батареи в течение месяцев / лет. использовал передовые (читай: дорогие) технологии для своего дня. не нужно было ждать медленной / дешевой вспышки для каждой инструкции. редко требуется, чтобы mcu работал быстро, они могут взять какой-то новый verilog ради разработчиков и внедрить его на любом литейном заводе. Мне больше всего нравятся комментарии «велосипед против формулы 1», я думаю, что это подводит итог.
old_timer

14
20 МГц совсем не медленный. Мы просто избалованы частотой ГГц для ПК, где большая часть ресурсов используется для визуализации модной графики. Вы можете лететь на Луну с килогерц-процессором ...
vsz

Ответы:


66

Есть и другие факторы, которые способствуют скорости.

  • Память: фактическая производительность часто ограничена задержкой памяти. Процессоры 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 ...

Короче говоря, скорость сложнее, чем простота, а дешевые продукты оптимизированы по дешевизне, а не по скорости.


11
Не забывайте о надёжности: обычный ЦП выйдет из строя, если напряжение питания изменится более чем на 5% или около того, в то время как ATMega работает от чего-либо в диапазоне 1,8-5,5 В на частоте 4 МГц.
Дмитрий Григорьев

1
@DmitryGrigoryev Хороший вопрос! Я обновил свой ответ.
Адам Хаун

25

Основная техническая причина медленных скоростей заключается в том, что дешевые / небольшие микроконтроллеры используют только встроенную флэш-память для хранения программ (т.е. они не выполняются из ОЗУ).

Небольшие микроконтроллеры обычно не кэшируют память программ, поэтому они всегда должны прочитать инструкцию из флэш-памяти перед выполнением, каждый цикл. Это дает детерминированную производительность и # циклов / операцию, просто дешевле / проще и позволяет избежать проблем, подобных ПК, когда код и данные смешиваются, создавая новый набор угроз из-за переполнения буфера и т. Д.

Задержка чтения из флэш-памяти (порядка 50-100 нс) намного медленнее, чем чтение из SRAM или DRAM (порядка 10 нс или ниже), и эта задержка должна возникать каждый цикл, ограничивая тактовую частоту часть.


4
Кроме того, мощность (и, следовательно, тепло) увеличивается более чем линейно с частотой.
Кимберли W

1
Я не думаю, что чтение с флэш-памяти где-то около 100 нс, не так ли? IIRC это на два порядка больше. Однако, если ваш контроллер флэш-памяти содержит небольшой кэш DRAM и код не слишком ветвистый, частота обращений к кэшу может быть очень высокой (более 90%), поэтому средняя задержка может быть намного ниже.
MSalters

2
Эта таблица данных AT91SAM7S, которую я открыл, говорит о ее внутренней вспышке «Время быстрого доступа, 30 МГц, однократный доступ в условиях наихудшего случая» для внутренней вспышки. Это 33 нс. И у него есть одно слово буфера предварительной выборки. Флэш-память может действительно иметь большую задержку.
pjc50

1
@ Джамиль Я не помню точную формулу, но я думаю, что она была квадратной частоты.
Ян Дорняк

22

Почему люди ездят на велосипеде или маленьком мотоцикле, когда у вас есть машина Формулы 1? Наверняка, должно быть, лучше ехать со скоростью, скажем, 300 км / ч и мгновенно добраться куда угодно?

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

С другой стороны, у них есть другие важные возможности, такие как низкое энергопотребление, которые НАМНОГО проще программировать и так далее. По сути, они не процессоры и делают разные вещи.


12
@ Майкл Откуда вы берете идею просто = быстро?
Мэтт Янг

3
@Michael Велосипед намного проще, чем автомобиль, но он все еще медленнее. В любом случае Мэтт прав. Что-то простое автоматически не быстро. То есть что-то быстрое будет сложно, просто из-за соображений, необходимых для более высоких частот.
AndrejaKo

2
Высокопроизводительные процессоры CISC обычно выдают больше инструкций, чем простые встроенные процессоры. Параллельно они выполняют гораздо больше работы, поэтому они более сложны и быстрее.
Кимберли W

2
@Michael $ 1 может быть роскошно дорогим для некоторых приложений, я читал, что микроконтроллеры в картах Micro SD стоят около 19 центов
Xen2050

2
@Michael "В этом и заключается вся архитектура RISC: простые задачи могут выполняться быстрее, чем сложные" Нет! Современные архитектуры RISC чрезвычайно сложны, потому что они должны вводить больше инструкций (например, SIMD) и поддерживать больше функций, таких как суперскаляр, гиперпоточность, выполнение вне порядка ... Их сложность может легко превысить архитектуру CISC. MIPS в настоящее время имеют сотни или тысячи инструкций. «CISC v RISC - в значительной степени историческая дискуссия»
phuclv

13

Есть много контроллеров ARM, которые работают на сотнях МГц или более. Кому нужен PIC на 500 МГц, и кто готов платить достаточно за каждую часть, чтобы оправдать маски на миллион долларов для процесса, близкого к современному?

Популярный ATmega328, как сообщается, сделан по технологии 350 нм, что немного отстает от новейших процессоров Intel (14 нм для Skylake ).

Даже самые дешевые 8-битные контроллеры постепенно увеличивают скорость, и вы можете получить 32-битные и 64-мегагерцовые PIC-контроллеры (например, PIC18F14K22), которые по-прежнему работают при 5 В (последний учитывает общую стоимость системы).

Одним из соображений является то, что эти контроллеры имеют архитектуру, которая оптимизирована для небольших областей памяти и медленных тактовых частот. Как только вы начинаете работать на высоких тактовых частотах, вам нужно перенастроить вещи с помощью прескалеров и т. Д.

В конце 1990-х годов была предпринята попытка создать очень быстрые PIC-подобные контроллеры с идеей, что микропрограммное обеспечение может заменить периферийные устройства, если микроконтроллер будет достаточно быстрым. Например, вы можете поразить UART. Я не думаю, что все они были коммерчески успешными - Scenix-> Ubicom-> Qualcomm (игра окончена).


350 нм? Это объяснило бы это. Не знал, что кто-нибудь будет производить что-либо, используя 20-летнюю технологию.
Майкл

3
Некоторые из нас все еще разрабатывают (а не используют) CMOS серии 4000, что-то вроде 3000 нм.
Спехро Пефхани

6
Старые процессы также потенциально полезны для людей, имеющих дело с радиационной средой, или высоконадежных систем, которые требуют прослеживаемости.
Крунал Десаи

5
Игра не окончена - Parallax Propeller является продолжением этой концепции.
Дэйв Твид

3
@ Майкл: Это не просто эпоха технологий. Размер также имеет значение. Более крупные процессы имеют более низкую частоту брака, что означает меньшие браки и, следовательно, более высокую доходность, что приводит к снижению стоимости на чип. Если вы готовы заплатить 100 долларов за процессор (например, настольные ПК), то более высокая стоимость из-за низкой производительности оправдана. Если вы готовы платить только 50 центов, это не оправдано.
Slebetman

3

Представьте, что кто-то хочет производить автомобили. Один из подходов состоит в том, чтобы использовать на заводе несколько единиц оборудования, собирая по одной машине за раз. Этот подход может быть реализован с небольшим количеством оборудования средней сложности, такое количество единиц оборудования может использоваться для выполнения более одного шага. С другой стороны, большая часть оборудования на заводе по-прежнему будет простаивать большую часть времени.

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

Для таких вещей, как DSP или GPU, можно достичь очень высоких скоростей относительно дешево, потому что характер выполняемой работы очень последовательный. К сожалению, многие процессоры должны быть в состоянии обрабатывать произвольные ошибки инструкций различной сложности. Эффективное выполнение этого возможно, но требует очень сложной логики планирования. Во многих современных процессорах логика, необходимая для «выполнения работы», не слишком сложна и не дорога, но логика, необходимая для координации всего остального, такова.


2
Извините, если я пропустил это, но какое отношение это имеет к процессорам против «более медленных» микроконтроллеров? Похоже, что он сосредоточен только на процессорах, а не на специализированных процессорах.
underscore_d

1
@underscore_d: Первый абзац охватывает более простые микроконтроллеры - они похожи на небольшой магазин, который строит по одной машине за раз. Во втором абзаце отмечается, что есть некоторые дешевые контроллеры, которые могут выполнять множество операций очень быстро, но ограничены в видах операций, которые они могут выполнять. Трудно иметь возможность выполнять произвольное сочетание операций, в то же время перекрывая их в значительной (но весьма изменчивой) степени. Если у вас есть подсистема, которая в каждом цикле может принимать два числа и будет выводить произведение двух чисел, которые были представлены четыре цикла назад, и ...
суперкат

1
... другой, который будет в каждом цикле принимать два числа и выводить сумму, которые были отправлены два цикла назад, пытаясь выяснить, когда значения должны быть представлены, когда результаты будут доступны, когда вещи должны быть загружены и сохранены регистры и т. д. могут быть очень сложными, особенно если кто-то хочет избежать заполнения всех конвейеров, чтобы соответствовать самому длинному.
суперкат

Благодарность; это проясняет. Да, имеет смысл, что быстрые процессоры общего назначения несут большую часть своих затрат, как финансовых, так и энергетических, на «строительные леса» - конвейеризацию, кэш, планирование, управление ОЗУ и т. Д. Вещи, которые не только чрезмерно дороги, но и часто не требуются для микро. Точно так же меня не перестает удивлять то, что можно сделать с относительно небольшой тактовой частотой в процессоре, специально предназначенном для одного приложения. Увлекательные вещи с обеих сторон!
underscore_d

@underscore_d: Архитектура MIPS была разработана исходя из того, что компиляторы будут нести ответственность за некоторые проблемы планирования, что позволит упростить аппаратное обеспечение. Я думаю, что эта концепция никогда не завоевывала популярность, поскольку новым процессорам часто требуется больше этапов конвейера, чем более старым, но код, написанный для процессора с более короткими конвейерами, не будет работать на процессоре с более длинными конвейерами в отсутствие аппаратных блокировок.
суперкат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.