Что хорошего в ARM?

61

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

оборота стевенвх
источник
1
Ваши ответы кажутся конструктивными по наименее конструктивным вопросам, но я боюсь, что другие напишут очень самоуверенные ответы. Посмотрим, попытаются ли люди преградить барьер, который вы установили.
Кортук
@ Kortuk - не стесняйтесь редактировать формулировку вопроса или заголовка, если вы думаете, что это может помочь получить лучшие ответы. (В любом случае, это был твой вопрос)
stevenvh
5
Этот вопрос требует религиозной войны. Если бы не люди, спрашивающие и комментирующие, я бы проголосовал, чтобы закрыть это немедленно. Помните, вы знаете, что вы всегда правы, а другой парень - варварский язычник, когда дело касается веры. Пусть начнется джихад ...
Олин Латроп
@olinLathrop, это то, что я наблюдаю. В настоящее время кажется, что мы получаем очень качественные ответы без ссор. Я, вероятно, сделаю это CW в долгосрочной перспективе и позволю приманке Google в сочетании с интересной информацией о вооружении жить. Я бы обычно закрыл это прямо, но @stevenvh действительно открыл это с отличным ответом и, кажется, установил тон качества.
Кортук

Ответы:

51

Производительность является одним из преимуществ. Будучи 32-битным процессором, он превосходит (почти) все 8-битные контроллеры по DMIPS. Ядро также прошло несколько поколений, прочитайте оптимизацию.
Эти оптимизации показывают не только показатели производительности, но и энергопотребление . Самое последнее ядро ​​удвоило соотношение DMIPS / mW по сравнению с предыдущим поколением (см. Также этот ответ ).
ARM доступен от очень многих производителей , больше, чем любой другой микроконтроллер, и у каждого есть несколько версий на выбор, с различными комбинациями встроенных периферийных устройств, памяти и пакетов. Показательный пример: NXP предлагает не менее 35 контроллеров с встроенным Ethernet .
ARMs являютсянедорогой ; ARM был, вероятно, первым 32-битным контроллером, преодолевшим барьер в 1 доллар.

Такое сочетание производительности , широкого предложения и низкой стоимости делает его таким, что вы просто не можете игнорировать ARM:

По данным аналитической компании Linley Group, в 2005 году около 98 процентов всех мобильных телефонов использовали по крайней мере одно ядро ​​ARM на своих материнских платах. ( источник )

Рынок мобильных телефонов имеет и другой эффект. Мобильные телефоны очень ограничены в пространстве и требуют небольших пакетов. LPC1102 от NXP поставляется в корпусе WLP-16 , размером всего 5 мм - шкала, ранее использовавшаяся только 8-разрядными микроконтроллерами с низким числом выводов.2

оборота стевенвх
источник
1
Я могу только добавить, что ARM определенно первый 32-битный микро, чтобы сломать 0,5 $ ценовой пункт (Cortex M0 в количественном выражении)
BarsMonster
@Barsmonster - Круто! Похоже, что единственное будущее для 8-битных систем
DFN
@ себя - и, возможно, даже не это. Смотрите дополнение о LPC1102 в моем ответе.
stevenvh
@stevenvh - Ну, есть еще преимущество в энергопотреблении. LPC1102 @ 12MHz в спящем режиме использует 1 мА. Неплохо, но примерно в 1000 раз больше, чем [16 бит] msp430.
Имброндир
1
@self - Оцените это преимущество тоже. После некоторых поисков кажется, что у Energy Micro есть M3, который в спящем режиме + RTC может опуститься до 0,6 мкА.
Имброндир
37

Еще один момент, о котором не упоминалось: в 1908 году парень по имени мистер П.Л. Робертсон изобрел новую улучшенную головку винта и драйвер . Он хотел быть единственным человеком, который будет производить винты и драйверы для своего дизайна. Спустя десятилетия, другой человек по имени г-н Генри Ф. Филлипс придумал альтернативный дизайн . В отличие от мистера Робертсона, мистер Филлипс больше интересовался лицензированием своего дизайна, чем производством винтов и драйверов.

Аналогичным образом, в 1970-х годах Sony разработала технологию под названием Betamax ; JVC придумала одну, которая называется VHS. Sony была заинтересована в производстве видеомагнитофонов; JVC больше интересовался лицензированием.

Кажется, здесь есть закономерность. (Примечание. Некоторое время Intel лицензировала свою технологию 80x86 , но в течение десятилетий она больше фокусировалась на разработке технологий для внутреннего использования.)

Peter Mortensen
источник
4
Да. Я думаю, что схема лицензирования интеллектуальной собственности ARM является причиной успеха.
10
ARM обеспечивает огромную гибкость благодаря лицензированию. Если вам просто нужен IP для пары ядер, он не будет стоить слишком дорого. Но если вы хотите сделать чип с индивидуальной настройкой, полностью оптимизированный вашими разработчиками, это стоит дороже, но является доступным вариантом. Таким образом, такая компания, как Apple, может разработать собственную линейку процессоров, оптимизированных для их приложений. Большинство компаний не позволят так много драгоценностей короны вне их контроля.
Майк Де Симоне
Важно отметить, что ARM не конкурирует с линейкой Intel x86 (даже в том пространстве, в котором работают новые процессоры Atom). Если ваш ответ подразумевал это, это неверно. Архитектуры Intel Moorestown и Medfield (предполагается) конкурируют в одном пространстве с ARM.
Mark
1
Прошло уже много лет с тех пор, как линейка Intel 80x86 была конкурентоспособной в типах приложений, где ARM будет использоваться сегодня, но 8088, 8086, 80286 и 80386, все из которых были лицензированы, были популярны среди встроенных систем. Мой комментарий об Intel был главным образом для того, чтобы признать, что Intel сегодня популярна, несмотря на то, что она не лицензируется, как ARM.
суперкат
@supercat: Intel лицензирует много мягких IP в эти дни. Он также предоставляет инструменты проектирования и SIP для проектирования ПЛИС ( intel.com/content/www/us/en/fpga/ip-and-design-tools.html )
jbord39
32
  1. Одно и то же аппаратное / программное обеспечение для разработки ARM всех производителей. Вы покупаете JLINK / ULINK и немного Keil IDE один раз и можете использовать его для разработки, эмуляции и отладки практически любого ARM на планете.

  2. Нет необходимости изучать новую архитектуру при переходе на нового производителя чипов => меньше блокировок поставщика => больше конкуренции => более низкие цены

  3. В современных технологических процессах (0.18 мкм и ниже) ядро ​​ARM настолько крошечное, что пожертвование его для 8-битного ядра не спасло бы никакой видимой доли цены. Отсюда и причина перехода на стандартную высокопроизводительную, но дешевую архитектуру.

  4. Производительность - только с ARM вы можете иметь умножение 32 * 32-> 32 и поддержку аппаратного обеспечения для 32 * 32-> 64 и деление для субдолларовых устройств (а именно, для младших STM32, например)

  5. ARM не слишком жаден и не взимает необоснованную плату за лицензии, поэтому производители могут выпускать дешевые микросхемы.

BarsMonster
источник
27

Я сосредотачиваюсь на процессорах ARM среднего уровня по следующим причинам:

  1. Полная поддержка Linux

    Это означает, что драйверы устройств почти бесплатно. Я сделал достаточно USB-хоста и кода устройства, я не хочу делать это больше. Я также не в восторге от попыток добавить TCP / IP к платформе со случайным процессором (хотя LwIP / uIP не так уж и плох). Я никогда даже не пытался использовать Wi-Fi, настоящий стек Bluetooth, веб-камеры и т. Д. Использование Linux означает, что с очень широким набором устройств стало гораздо проще общаться.

    Я также был поражен тем, насколько рациональны и просты в написании драйверов для устройств Linux. После некоторых драйверов устройств для Windows, Linux это мечта. (Если честно, структура драйверов Windows значительно улучшилась с тех пор, как я это делал.)

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

    Это также не требует лицензионных отчислений и намного проще подчиниться вашей воле, чем, скажем, платформе WinCE с закрытым исходным кодом. (Не то чтобы я действительно был идеалистом с открытым исходным кодом ... для меня все это очень практично).

    Я говорю о ядрах ARM с реальными MMU , так что это для чипов среднего и высокого класса (хотя вы могли бы использовать µClinux, я полагаю).

  2. Потребляемая мощность

    По сути, это повторение комментариев других, но для меня это важный фактор. Моя текущая платформа ARM 454 МГц потребляет 1/2 ватт, 1 ватт при максимальной загрузке процессора. Вы не можете даже приблизиться к этому с x86.

Это в значительной степени мои рассуждения. Я не вижу, чтобы уравнение изменилось в ближайшее время.

даррон
источник
2
Связанный: несколько опций RTOS.
Стив С.
Большая часть вашего ответа так же применима к большинству архитектур ЦП, как и к ARM. Многие из них применимы и к 2). Список архитектур, поддерживаемых Linux, длинен, а ARM - только одна из них.
Mark
19

ARM прошел через прогрессию:

  1. Архитектура с 32-разрядными инструкциями, которая имеет более объемный код, чем многие другие архитектуры, но которая может быть быстро декодирована и выполнять множество операций с меньшим количеством команд, чем конкурирующие архитектуры
  2. Архитектура в формате двойной инструкции, которая может переключаться между хорошим и мощным (но, к сожалению, несколько раздутым) набором команд ARM и менее мощным (но гораздо более компактным) 16-разрядным набором команд «Thumb». Каждая инструкция Thumb имела соответствующую инструкцию ARM, что сводило к минимуму необходимость для программистов изучать два набора команд.
  3. Архитектура Thumb2, которая добавляет инструкции из двух слов к набору команд Thumb, что дает то, что в основном является беспроигрышным: типичный код ARM будет содержать набор инструкций, которые доступны только в ARM, и инструкций, которые будут доступны в Thumb но все равно должен был быть представлен как 32 бита; в Thumb2 такой код получает пространство благодаря замене некоторых 32-битных инструкций на 16-битные.
  4. Архитектура только для большого пальца, которая является более ограничивающей, чем я бы хотел, но которая меньше и дешевле, чем любая другая.

Архитектура ARM позволяет выполнять довольно сложные операции очень быстро - гораздо быстрее, чем на любом другом чипе. Например (с использованием ARM7-TDMI):

  ldrh r0, [r10, # ADDR_BUS_OFS]; Чтение адресной шины системы (13 бит)
  ldrb r1, [r9, r0, lsr # 8]; Используйте старшие биты для поиска адреса в таблице обработчиков
  добавить pc, r9, r1 lsl # 2; Перейти к соответствующему обработчику

Каждый обработчик хранится в виде байта, который дает 1/4 смещения адреса от начала таблицы. Чистый эффект заключается в том, что после извлечения содержимого адресной шины требуется всего шесть циклов (две инструкции) для перехода к обработчику на основе верхних пяти битов извлеченных данных с использованием 32-байтовой таблицы переходов.

Соответствующий код THUMB будет больше похож на:

; Предполагая, что нам не нужны r6 / r7 для чего-либо еще, они переназначаются из r9 / r10
  ldrh r0, [r7, # ADDR_BUS_OFS]
  MOV R1, R0
  lsr r1, r1, # 8; THUMB требует, чтобы источник и пункт назначения были одинаковыми
  ldrb r1, [r6, r1]
  lsl r1, r1, # 1; Можно использовать shift-left-two, если целевые адреса были выровнены по полному слову
  добавить пк, г1

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

Кстати, Thumb2 двоично совместим с Thumb, что облегчает использование более ранних инструментов, но означает, что есть некоторые вещи, которые он не может сделать так же хорошо, как и исходный ARM. Например, в ARM можно «вращать» растровое изображение 8x8, хранящееся в четырех регистрах, используя примерно 3 инструкции на два бита:

  movs r0, r4, lsl # 25; Поместите верхний бит LSB в C и следующий бит в N
  orrcs r6, # 0x00000001
  orrmi r6, # 0x00000100

В Thumb2 необходимо добавить явные условные инструкции:

  movs r0, r4, lsl # 25; Поместите верхний бит LSB в C и следующий бит в N
  ММСК
  orrcs r6, # 0x00000001
  itmi
  orrmi r6, # 0x00000100

Чистое сокращение времени и эффективности на 33% по сравнению с ARM; Вероятно, в худшем случае код Thumb менее эффективен, чем ARM, и даже это не совсем ужасно.

Еще один небольшой недостаток Thumb2 по сравнению с ARM: в коде ARM все инструкции начинаются с границ полного слова, что облегчает статический анализ. В Thumb2 инструкции могут произвольно начинаться с границ половинного слова и выходить за границы полного слова. Таким образом, статический анализ может быть намного сложнее.

оборота суперкат
источник
14

Немного истории, в 1980-х Acorn хотел создать собственный процессор (например, со встроенными элементами управления памятью и т. Д.) Для нового компьютера (8-битный 6502 ограничивал их возможности). Они разговаривали с Intel, но Intel не лицензировала бы им процессор.

Таким образом, Acorn разработал очень простой процессор RISC, но, поскольку они не были производителями процессоров, они были готовы лицензировать его кому угодно (и им нужны были все быстрые деньги, которые они могли получить!). (Я полагаю, что процессор работал впервые, отчасти потому, что он был настолько прост, а также разработчик создал много исследовательских процессоров в Кембриджском университете.)

С годами дизайн ЦП становится все легче и проще включать в дизайн чипов заказчика.

Производитель чипов чувствовал себя в безопасности от Acorn, поскольку они не были конкурентами. Также никто не думал, что они едут в родной город конкурента, чтобы получить лицензию, так как Акорн был в Кембридже (настоящий!) . (Повлияла ли вероятность того, что поездка в Кембридж с целью выяснения фактов для посещения Acorn повлияла на составление списка вариантов в любой момент…)

Многие проекты, включающие процессор Acorn Risc Machine, были предназначены для встраивания системы, где было важно энергопотребление. Для процессора Acorn Risc Machine были также созданы дешевые и хорошие инструменты разработки.

Поэтому, когда мобильным телефонам стали нужны специальные чипы со встроенным процессором, Acorn был переименован в ARM, а остальное уже стало историей. (Возможно, это было немного, но другие процессоры в основном контролировались США, но мобильные телефоны сначала стали нормальными в Европе)

(Напоминает ли что-нибудь из этого о Microsoft и Dos с небольшой неизвестной командой из IBM?)

Тот факт, что ARM был одним из лучших процессоров в то время (и до сих пор остается) для многих задач, также помог - но просто иметь «лучший» дизайн процессоров недостаточно.

Ian Ringrose
источник
Acorn RISC Machine фактически переименовывается в Advanced RISC Machines (что означает ARM). Кроме того, только ветвь ARM CPU Acorn получила независимость и известна как Advanced RISC Machines. Acorn продолжил разработку своей RISC-OS, и я думаю, что теперь об этом знают и последние.
Джиппи
13

Помимо технических проблем, есть много нетехнических причин для ARM. Но быстрый ответ таков: это не Intel (или x86).

Если вы посмотрите, куда именно сейчас инвестируются средства на исследования и разработки, они попадают в два основных лагеря: ARM и Intel. (Я игнорирую небольшие микроконтроллеры и объединяю AMD с Intel.) Очень мало денег уходит на PowerPC, MIPS, SPARC и другие большие процессоры. ARM и Intel - единственные, кто все еще стоит.

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

С ARM у вас нет этого багажа. Существует множество источников микросхем от микроконтроллерных линий до многоядерных монстров. Вам не нужно иметь дело с лицензированием BIOS (что очень похоже на обращение к продавцу подержанных автомобилей). И производители и продавцы, как правило, приятны для вас.

user3624
источник
2
Не игнорируйте маленькие MCU. ARM получает большой кусок этого рынка также с их серией Cortex-M. Я бы дважды подумал об использовании 32-битного контроллера без ARM.
Майк ДеСимоне
Да, я согласен @ Майк. В настоящее время ARM пытается выйти на рынок с высоким энергопотреблением, где Intel доминирует как серверы. Они известны своими микроконтроллерами среднего и низкого уровня
Кортук
Intel лицензирует больше IP в эти дни (особенно с приобретением Altera). См. Например, intel.com/content/www/us/en/fpga/ip-and-design-tools.html .
jbord39
12

Сравните ARM7 / ARM9 с MIPS IV, и у вас мало преимуществ, кроме уже упоминавшихся проблем с лицензированием. Внутренние компоненты набора инструкций MIPS и внутренняя шина делают его превосходным (производительность по стоимости) для определенных типов конструкций; именно поэтому многие маршрутизаторы Wi-Fi используют ядра MIPS, а не ядра ARM.

Поскольку ядра ARM применялись в основном для портативных устройств, в ASIC добавлено больше функций управления питанием, в то время как MIPS больше фокусируется на производительности за такт, чем на снижении энергопотребления. Преимущество RISC перед Intel x86 - другое обсуждение.

Peter Mortensen
источник
1
Обратите внимание, что линия PIC 32 от Microchip использует ядро ​​MIPS. Поэтому MIPS доступен в небольших, дешевых, автономных и маломощных корпусах. Кроме того, вы можете использовать MPLAB на них, что вы не можете сделать с любым ARM.
Олин Латроп
Другой комментарий, который я слышу от разработчиков ASIC, заключается в том, что с ARM AHB и APB сложно работать (возможно, из-за раздельного лицензирования или из-за проблем с дизайном). В то время как автобусы MIPS как-то проще. Значение: ядро ​​- это одно; периферийные устройства вне ядра также нуждаются в рассмотрении.
Джонатан Клайн
-8

Здесь нет реальных преимуществ. Прилагаемые DSP и другие контроллеры, такие как GSM, делают их такими популярными.

Peter Mortensen
источник
3
другие ответы, похоже, не согласны.
Кортук
1
-1 У всего на свете есть свои преимущества и недостатки!
RHaguiuda