В чем разница между сериями Cortex-M и Cortex-R?

25

Это интересно! Я искал, чтобы найти ясную статью, но я не мог найти ясную статью для этого. Также я нашел эту ссылку: ARM Cortex-R и эту ссылку: Cortex-R Series, но они не совсем ясны. на вики-странице пишет:

Ядра предназначены для надежного использования в реальном времени

и на странице Cortex-R написал:

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

и эти:

  1. Высокая производительность: быстрая обработка в сочетании с высокой тактовой частотой
  2. В режиме реального времени: обработка встречает жесткие ограничения в реальном времени на все случаи жизни
  3. Безопасный: надежные, надежные системы с высокой устойчивостью к ошибкам
  4. Экономически эффективный: функции для оптимальной производительности, мощности и площади

Для номер один: например, для Cortex-M, недавно NXP выпустил серию NXP_LPC4XXX с тактовой частотой 200 МГц, а для Cortex-R вы можете увидеть это: Микроконтроллеры TMS570LS ARM Cortex ™ -R4 , это забавно, потому что у него 180 МГц тактовая частота.

Для номера два: это понятно.

Для номера три: это не ясно! что означает это предложение? значит не Cortex-M безопасно / надежно?

Для номера пять: ну, я думаю, это просто претензия!

У кого есть опыт работы с этой серией (Cortex-R)? Что вы думаете об этом? В чем глубокая и точная разница между сериями Cortex-M и Cortex-R?

Рох
источник
Эти маркеры, как маркеры в верхней части любого листа данных, всегда должны рассматриваться как нечто большее, чем маркетинговый материал.
Скотт Сейдман
3
в отношении пункта 1: вполне возможно, что Cortex-R требует меньше тактов для (некоторых) операций, поэтому производительность может не просто зависеть от тактовой частоты. Вам нужно будет изучить подробные данные - или сравнить обе системы ...
Брайан Драммонд,
@BrianDrummond Я не согласен
Ро
5
@Roh Cortex-R может использовать «классический» набор команд ARM, который включает в себя некоторые относительно сложные инструкции (например, shift и op) и предикаты отдельных инструкций; Cortex-M предоставляет только IS на основе Thumb2, который использует инструкцию If-Then для предиката инструкций. Кроме того, даже при ограничении относительно простых микроархитектур производительность не пропорциональна тактовой частоте.
Пол А. Клейтон

Ответы:

17

Забавно, я использую оба на работе :)

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

Тем не менее, R4 совершенно другой зверь - по крайней мере, я использую версию Texas Instruments: RM42, похожую на TMS570. RM42 - это Cortex-R4 с двумя ядрами, работающими в режиме «lock-step» для резервирования, что означает, что одно ядро ​​опережает другое на 2 команды и используется для некоторой проверки и исправления ошибок. Кроме того, одно из ядер (физически) зеркально отражено / перевернуто и повернуто на 90 градусов для улучшения устойчивости к излучению / шуму :)

RM42 работает на более высокой тактовой частоте, чем STM32 (100 МГц против 72 МГц), и имеет несколько иной набор команд и выполняет некоторые инструкции быстрее, чем M3 (например, команды деления выполняются за один цикл на R4, не будучи уверенными, что они работают на M3).

HW таймеры ОЧЕНЬ точны по сравнению с Cortex-M3. Обычно нам нужно статическое смещение, чтобы исправить дрейф на M3s - не так с R4 :)

Где бы я назвал Cortex-M3 универсальным MCU, я бы назвал Cortex-R4 сложным MCU реального времени / безопасности. Если я не ошибаюсь, RM42 соответствует SIL3 ...

IMO R4 - большой шаг вперед по сложности, даже если вы не планируете реально использовать функции реального времени / безопасности.

Действительно хороший пример различия сложности: периферийное устройство SPI имеет 9 регистров управления и состояния на STM32, тогда как RM42 имеет 42. Это похоже на все периферийные устройства :)

РЕДАКТИРОВАТЬ:

Что бы это ни стоило, в моих случаях использования Cortex-R4 @ 100 МГц обычно на 50-100% быстрее, чем Cortex-M3 @ 72 МГц при выполнении точно таких же задач. Может быть, потому что R4 имеет кэш данных и инструкций?

Другое сравнение, несколько 1000 строк кода C и ASM выполняются при сбросе до достижения вызова main()с подмножеством функций безопасности, которые я в настоящее время использую: D, а не инициализация периферии или что-то еще, только запуск и самотестирование (ЦП, ОЗУ, Flash ECC и т. Д.).

Эта страница имеет более подробную информацию

Мортен Дженсен
источник
Например, R4 будет управлять ABS-тормозной системой или промышленной машиной, в то время как M3 будет управлять чем-то, что не является критически важным для безопасности или миссии
Мортен Дженсен,
Отличный ответ, но комментировать только одно. Все устройства Texas R4 не имеют кэш-памяти, использующей тесно связанную оперативную память, которая, по сути, является оперативной памятью, которая, помимо быстроты, действительно близка к ядрам. Я думаю, что они сделали это из-за того, что кэши не подходят для систем такого типа (им нужна очень детерминированная система, чтобы иметь описанную вами функцию в реальном времени ... или что-то в этом роде)
morcillo
@morcillo спасибо за ваш комментарий. Я пришел к выводу, что все R4 имели кэши данных и инструкций по этой диаграмме от ARM: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - вы знаете, что с этим делать? Я предполагал, D cacheи I cacheбыли сокращения для кэша данных и инструкций.
Мортен Дженсен
Честно говоря, я не знаю. Единственное, что я знаю, это то, что устройства cortex R4, выпущенные TEXAS INSTRUMENTS, не имеют кеша по причине, аналогичной той, что я вам говорил. Я читал это давным-давно. Может быть, они изменили это, или я смешиваю 2 разных монстра, но, насколько я помню, устройства R4 не имеют кеша (HALcogen не генерирует кеш-инициализацию). Я могу быть совершенно неправ ... если я, пожалуйста, дайте мне знать .. всегда хорошо, чтобы узнать что-то новое :)
morcillo
3

Семейство ARM Cortex-R (v7-R)

  • Исключительная производительность для приложений реального времени.
  • Процессоры были разработаны для глубоко встроенных приложений реального времени, где потребность в низком энергопотреблении и хорошем поведении прерываний сбалансирована с исключительной производительностью и сильной совместимостью с существующими платформами.
  • Процессоры ARM Cortex®-R реального времени предлагают высокопроизводительные вычислительные решения для встраиваемых систем, где требуется надежность, высокая доступность, отказоустойчивость, ремонтопригодность и реакция в реальном времени.

ARM Cortex-M семейство (v7-M)

  • Чувствительные к стоимости решения для детерминированных приложений микроконтроллеров.
  • Они были разработаны главным образом для области микроконтроллеров, где необходимость быстрого, высоко детерминированного управления прерываниями сочетается с стремлением к чрезвычайно низкому количеству шлюзов и минимально возможному потреблению энергии.
  • Семейство процессоров ARM Cortex ™ -M - это линейка совместимых вверх энергоэффективных и простых в использовании процессоров, разработанных для того, чтобы помочь разработчикам удовлетворить потребности встраиваемых приложений завтрашнего дня. Эти требования включают предоставление большего количества функций при меньших затратах, расширение возможностей подключения, лучшее повторное использование кода и повышение эффективности использования энергии.
Джовани Мендес
источник
Другое различие заключается в том, что Cortex-M поддерживает только набор команд на основе Thumb2, в то время как Cortex-R также может использовать базовый / классический набор команд фиксированной длины (32-разрядный). То, что -R и -A совместно используют Справочное руководство по архитектуре (для v7), в то время как M имеет отдельный ARManual, может иметь некоторое значение.
Пол А. Клэйтон
2

Хорошая статья о здесь .

Серия Cortex-R и cortex-M предназначена для различных требований и для различных применений. Важно знать параметры и функции, которые их разделяют, так как могут быть приложения, в которые они оба могут вписаться. Этот документ предназначен для такого сценария и помогает дизайнерам в выборе. Конечная цель - помочь проектировщикам или разработчикам лучше понять архитектуру ARM.

Butzke
источник
Хотя хорошо иметь ссылку на эту интересную статью, вы должны хотя бы попытаться обобщить статью в своем ответе.
AndrejaKo