¿Cuál es realmente la diferencia entre la serie Cortex-M y la serie Cortex-R?

¡Es interesante! Busqué encontrar un artículo claro, pero no pude encontrar un artículo claro para esto. También encontré este enlace: ARM Cortex-R y este enlace: Serie Cortex-R pero no son exactamente claros. en la página wiki escribió:

Los núcleos están destinados a un uso robusto en tiempo real

y en la página de Cortex-R escribió:

Los procesadores en tiempo real ARM Cortex®-R ofrecen soluciones informáticas de alto rendimiento para sistemas integrados donde se requiere confiabilidad, alta disponibilidad, tolerancia a fallas, capacidad de mantenimiento y respuestas en tiempo real.

y estos:

  1. Alto rendimiento: procesamiento rápido combinado con una alta frecuencia de reloj
  2. Tiempo real: el procesamiento cumple con las estrictas restricciones de tiempo real en todas las ocasiones
  3. Seguro: Sistemas confiables y confiables con alta resistencia a errores
  4. Rentable: características óptimas para el rendimiento, la potencia y el área

Para el número uno: Por ejemplo, para el Cortex-M, recientemente NXP hizo la serie NXP_LPC4XXX que tiene una velocidad de reloj de 200Mhz y para el Cortex-R, puede ver esto: Microcontroladores TMS570LS ARM Cortex™-R4 , es gracioso porque tiene 180Mhz velocidad de reloj.

Para el número dos: Está claro.

Para el número tres: ¡No está claro! ¿Qué significa esta oración? significa que el Cortex-M no es seguro/confiable?

Para el número cinco: ¡Bueno, creo que solo es un reclamo!

¿Quién tiene la experiencia para trabajar con esta serie (Cortex-R)? ¿Cuál es tu opinión al respecto? ¿Cuál es la diferencia profunda y exacta entre la serie Cortex-M y la serie Cortex-R?

Estas viñetas, como las viñetas en la parte superior de cualquier hoja de datos, siempre deben considerarse poco más que material de marketing.
re: punto 1: es muy posible que el Cortex-R tome menos ciclos de reloj para (algunas) operaciones, por lo que el rendimiento puede no estar dictado simplemente por la frecuencia del reloj. Necesitaría estudiar datos detallados o comparar ambos sistemas...
@BrianDrummond no estoy de acuerdo
@Roh Cortex-R puede usar el conjunto de instrucciones ARM "clásico" que incluye algunas instrucciones relativamente complejas (por ejemplo, shift y op) y predica instrucciones individuales; Cortex-M proporciona solo un IS basado en Thumb2 que usa una instrucción If-Then para predicar instrucciones. Además, incluso cuando se limita a microarquitecturas relativamente simples, el rendimiento no es proporcional a la frecuencia del reloj.

Respuestas (3)

Divertido, uso ambos en el trabajo :)

El Cortex-M3 (usamos STM32s) es un MCU de propósito general que es lo suficientemente rápido y grande (almacenamiento flash) para las aplicaciones integradas más complejas.

Sin embargo, el R4 es una bestia completamente diferente, al menos la versión de Texas Instruments que uso: el RM42, similar al TMS570. El RM42 es un Cortex-R4 con dos núcleos que se ejecutan en "paso de bloqueo" para redundancia, lo que significa que un núcleo está 2 instrucciones por delante del otro y se usa para verificar y corregir algunos errores. Además, uno de los núcleos está (físicamente) reflejado/volteado y girado 90 grados para mejorar la resistencia a la radiación/ruido :)

El RM42 funciona a una velocidad de reloj más alta que el STM32 (100 MHz frente a 72 MHz) y tiene un conjunto de instrucciones ligeramente diferente y ejecuta algunas de las instrucciones más rápido que el M3 (por ejemplo, las instrucciones de división se ejecutan en un ciclo en el R4, no estoy seguro de que lo hagan en M3).

Los temporizadores HW son MUY precisos en comparación con Cortex-M3. Por lo general, necesitamos un desplazamiento estático para corregir la deriva en los M3, no es así con el R4 :)

Donde llamaría a Cortex-M3 una MCU de propósito general, llamaría a Cortex-R4 una MCU compleja en tiempo real/seguridad. Si no me equivoco, el RM42 es compatible con SIL3...

En mi opinión, el R4 es un gran paso adelante en complejidad, incluso si no está planeando usar las funciones de seguridad/en tiempo real.

Un muy buen ejemplo de la diferencia de complejidad: el periférico SPI tiene 9 registros de control y estado en el STM32, mientras que el RM42 tiene 42. Es así con todos los periféricos :)

EDITAR:

Si sirve de algo, en mis casos de uso, el Cortex-R4 a 100 MHz suele ser entre un 50 y un 100 % más rápido que el Cortex-M3 a 72 MHz cuando realiza exactamente las mismas tareas. ¿Quizás porque el R4 tiene cachés de datos e instrucciones?

Otra comparación, se ejecutan unas 1000 líneas de código C y ASM en el RM42 en el reinicio antes de llegar a la llamada main()con el subconjunto de las funciones de seguridad que uso actualmente: D y no inicialización periférica ni nada, solo inicio y autocomprobación (CPU , RAM, Flash ECC, etc.).

Esta página tiene más detalles.

Por ejemplo, el R4 controlaría un sistema de frenado ABS o una máquina industrial, mientras que el M3 controlaría algo que no es tan seguro o de misión crítica.
Gran respuesta, pero solo una cosa para comentar. Todos los dispositivos R4 de Texas no tienen caché, usan RAM estrechamente acoplada, que es básicamente una RAM que, además de ser rápida, está muy cerca de los núcleos. Creo que lo hicieron por el hecho de que los cachés no son buenos para este tipo de sistemas (necesitan un sistema muy determinista para tener la característica de tiempo real que describiste... o algo así)
@morcillo gracias por tu comentario. Este diagrama de ARM me hizo creer que todos los R4 tenían cachés de datos + instrucciones: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png . ¿Sabe qué hacer con él? Estaba asumiendo D cachey I cacheeran abreviaturas de caché de datos e instrucciones.
Para decirte la verdad, no lo sé. Lo unico que se es que los dispositivos cortex R4 MADE BY TEXAS INSTRUMENTS no tienen cache por una razon parecida a la que te comenté. Lo leí hace mucho tiempo en algún lugar. Tal vez cambiaron eso o tal vez estoy mezclando 2 monstruos diferentes, pero por lo que recuerdo, los dispositivos R4 no tienen caché (HALcogen no genera inicialización de caché). Puedo estar completamente equivocado ... si lo estoy, por favor hágamelo saber ... siempre es bueno aprender algo nuevo :)

Familia ARM Cortex-R (v7-R)

  • Rendimiento excepcional para aplicaciones en tiempo real.
  • Los procesadores se han desarrollado para aplicaciones en tiempo real profundamente integradas donde la necesidad de bajo consumo y un buen comportamiento de interrupción se equilibran con un rendimiento excepcional y una gran compatibilidad con las plataformas existentes.
  • Los procesadores en tiempo real ARM Cortex®-R ofrecen soluciones informáticas de alto rendimiento para sistemas integrados donde se requiere confiabilidad, alta disponibilidad, tolerancia a fallas, capacidad de mantenimiento y respuestas en tiempo real.

Familia ARM Cortex-M (v7-M)

  • Soluciones sensibles al costo para aplicaciones de microcontroladores deterministas.
  • Se han desarrollado principalmente para el dominio de los microcontroladores, donde la necesidad de una gestión de interrupciones rápida y altamente determinista se combina con el deseo de un número de puertas extremadamente bajo y el menor consumo de energía posible.
  • La familia de procesadores ARM Cortex™ -M es una gama compatible con versiones posteriores de procesadores de bajo consumo y fáciles de usar diseñados para ayudar a los desarrolladores a satisfacer las necesidades de las aplicaciones integradas del mañana. Esas demandas incluyen ofrecer más funciones a un costo menor, aumentar la conectividad, mejorar la reutilización del código y mejorar la eficiencia energética.
Otra distinción parece ser que Cortex-M solo admite un conjunto de instrucciones basado en Thumb2, mientras que Cortex-R también puede usar el conjunto de instrucciones básico/clásico de longitud fija (32 bits). Que -R y -A compartan un Manual de referencia arquitectónica (para v7), mientras que M tiene un ARManual separado, podría tener algún significado.

Tiene un buen artículo sobre aquí .

Las series Cortex-R y cortex-M están destinadas a diferentes requisitos y para diferentes aplicaciones. Es importante conocer los parámetros y las características que los separan, ya que podría haber aplicaciones en las que ambos puedan encajar. Este documento está dirigido a tal escenario y ayuda a los diseñadores en la selección. El objetivo final es ayudar a los Diseñadores o Desarrolladores a comprender las Arquitecturas de ARM.

Si bien es bueno tener un enlace a ese artículo interesante, al menos debe intentar resumir el artículo en su respuesta.