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

25

¡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: Cortex-R Series pero no están exactamente claros. en la página wiki escribió:

Los núcleos están diseñados para un uso robusto en tiempo real.

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

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

y estos:

  1. Alto rendimiento: procesamiento rápido combinado con una alta frecuencia de reloj
  2. En tiempo real: el procesamiento cumple con las 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 rendimiento, potencia y área

Para el número uno: por ejemplo, para el Cortex-M, recientemente el NXP fabricó 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 divertido 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 es solo un reclamo!

¿Quién tiene la experiencia para trabajar en 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?

Roh
fuente
Estos puntos, como los puntos en la parte superior de cualquier hoja de datos, siempre deben considerarse poco más que material de marketing.
Scott Seidman
3
re: punto 1: es completamente posible que el Cortex-R tome menos ciclos de reloj para (algunas) operaciones, por lo tanto, el rendimiento no puede ser simplemente dictado por la velocidad del reloj. Tendría que estudiar datos detallados, o comparar ambos sistemas ...
Brian Drummond
@BrianDrummond no estoy de acuerdo
Roh
55
@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 velocidad del reloj.
Paul A. Clayton

Respuestas:

17

Divertido, yo 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 utiliza para algunas comprobaciones y correcciones de 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 (100MHz vs 72MHz) y tiene un conjunto de instrucciones ligeramente diferente y realiza 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 así con el R4 :)

Donde llamaría a un Cortex-M3 un MCU de propósito general, llamaría al Cortex-R4 un MCU complejo en tiempo real / seguridad. Si no me equivoco, el RM42 cumple con SIL3 ...

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

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

EDITAR:

Por lo que vale, en mis casos de uso, el Cortex-R4 @ 100MHz suele ser un 50-100% más rápido que el Cortex-M3 @ 72MHz cuando se realizan 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 reinicio antes de llegar a la llamada main()con el subconjunto de las características 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.

Morten Jensen
fuente
Por ejemplo, el R4 controlaría un sistema de frenos ABS o una máquina industrial, mientras que el M3 controlaría algo que no es tan crítico para la seguridad o la misión
Morten Jensen el
Gran respuesta, pero solo una cosa para comentar. Todos los dispositivos R4 de Texas no tienen caché, el uso de RAM estrechamente acoplada, que es básicamente una RAM que, a pesar de ser rápida, está muy cerca de los núcleos. Creo que lo hicieron debido al hecho de que los cachés no son buenos para este tipo de sistemas (necesitan un sistema muy determinista para tener la característica en tiempo real que describió ... o algo así)
morcillo
@morcillo gracias por tu comentario. Este diagrama de ARM me hizo creer que todos los R4 tenían datos + cachés de instrucciones de arm : arm.com/assets/images/Cortex-R4-chip-diagram-LG.png : ¿sabe qué hacer con él? Estaba asumiendo D cachey I cacheeran abreviaturas para el caché de datos e instrucciones.
Morten Jensen el
A decir verdad, no lo sé. Lo único que sé es que los dispositivos Cortex R4 MADE BY TEXAS INSTRUMENTS no tienen caché por una razón similar a la que te dije. Hace mucho tiempo lo leí. Tal vez cambiaron eso o tal vez estoy mezclando 2 monstruos diferentes, pero hasta donde recuerdo los dispositivos R4 no tienen caché (HALcogen no genera la inicialización de caché). Puedo estar completamente equivocado ... si es así, hágamelo saber ... siempre es bueno aprender algo nuevo :)
morcillo
3

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 baja potencia y buen comportamiento de interrupción se equilibran con un rendimiento excepcional y una fuerte compatibilidad con las plataformas existentes.
  • Los procesadores ARM Cortex®-R en tiempo real ofrecen soluciones informáticas de alto rendimiento para sistemas integrados donde se requiere confiabilidad, alta disponibilidad, tolerancia a fallas, mantenibilidad 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 microcontroladores donde la necesidad de una gestión de interrupciones rápida y altamente determinista se combina con el deseo de contar con una puerta extremadamente baja y el menor consumo de energía posible.
  • La familia de procesadores ARM Cortex ™ -M es una gama de procesadores compatibles con el consumo de energía y de uso superior diseñados para ayudar a los desarrolladores a satisfacer las necesidades de las aplicaciones integradas del mañana. Esas demandas incluyen la entrega de más funciones a menor costo, mayor conectividad, mejor reutilización de código y mejor eficiencia energética.
Giovani Mendes
fuente
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 alguna importancia.
Paul A. Clayton
2

Ten 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 a elegir. El objetivo final es ayudar a los Diseñadores o Desarrolladores a comprender las Arquitecturas de ARM.

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