Was ist wirklich der Unterschied zwischen der Cortex-M-Serie und der Cortex-R-Serie?

Es ist interessant! Ich habe nach einem klaren Artikel gesucht, konnte aber keinen klaren Artikel dafür finden. Ich habe auch diesen Link gefunden: ARM Cortex-R und diesen Link: Cortex-R-Serie , aber sie sind nicht genau klar. auf der Wiki-Seite schrieb:

Die Kerne sind für den robusten Echtzeiteinsatz vorgesehen

und auf der Cortex-R-Seite schrieb:

Die ARM Cortex®-R-Echtzeitprozessoren bieten Hochleistungs-Computing-Lösungen für eingebettete Systeme, bei denen Zuverlässigkeit, Hochverfügbarkeit, Fehlertoleranz, Wartbarkeit und Echtzeitreaktionen erforderlich sind.

und diese:

  1. Hohe Leistung: Schnelle Verarbeitung kombiniert mit einer hohen Taktfrequenz
  2. Echtzeit: Die Verarbeitung erfüllt bei allen Gelegenheiten strenge Echtzeitbeschränkungen
  3. Sicher: Zuverlässige, zuverlässige Systeme mit hoher Fehlerresistenz
  4. Kostengünstig: Merkmale für optimale Leistung, Kraft und Fläche

Für Nummer eins: Zum Beispiel hat NXP für den Cortex-M kürzlich die NXP_LPC4XXX-Serie mit einer Taktrate von 200 MHz hergestellt, und für den Cortex-R können Sie Folgendes sehen: TMS570LS ARM Cortex™-R4-Mikrocontroller , es ist lustig, weil er 180 MHz hat Taktfrequenz.

Zu Nummer zwei: Es ist klar.

Zu Nummer drei: Es ist nicht klar! was soll dieser satz bedeuten Ist der Cortex-M nicht sicher/zuverlässig?

Zu Nummer fünf: Nun, ich denke, es ist nur eine Behauptung!

Wer hat die Erfahrung mit dieser Serie (Cortex-R) zu arbeiten? Was ist deine Meinung dazu? Was ist der tiefe und genaue Unterschied zwischen der Cortex-M-Serie und der Cortex-R-Serie?

Diese Aufzählungspunkte, wie die Aufzählungspunkte oben auf jedem Datenblatt, sollten immer als wenig mehr als Marketingmaterial betrachtet werden.
Zu Punkt 1: Es ist durchaus möglich, dass der Cortex-R für (einige) Operationen weniger Taktzyklen benötigt, daher wird die Leistung möglicherweise nicht einfach von der Taktrate bestimmt. Sie müssten detaillierte Daten studieren - oder beide Systeme vergleichen ...
@BrianDrummond Ich stimme nicht zu
@Roh Cortex-R kann den "klassischen" ARM-Befehlssatz verwenden, der einige relativ komplexe Befehle (z. B. shift und op) enthält und einzelne Befehle prädiziert; Cortex-M bietet nur ein Thumb2-basiertes IS, das eine Wenn-Dann-Anweisung verwendet, um Anweisungen zu prädizieren. Außerdem ist die Leistung, selbst wenn sie auf relativ einfache Mikroarchitekturen beschränkt ist, nicht proportional zur Taktrate.

Antworten (3)

Komisch, ich benutze beides bei der Arbeit :)

Der Cortex-M3 (wir verwenden STM32s) ist eine Allzweck-MCU, die schnell und groß (Flash-Speicher) genug für die meisten komplexen eingebetteten Anwendungen ist.

Der R4 ist jedoch ein ganz anderes Biest - zumindest die Version von Texas Instruments, die ich verwende: der RM42, ähnlich dem TMS570. Der RM42 ist ein Cortex-R4 mit zwei Kernen, die aus Redundanzgründen im "Lock-Step" laufen, was bedeutet, dass ein Kern dem anderen zwei Anweisungen voraus ist und für einige Fehlerprüfungen und -korrekturen verwendet wird. Außerdem ist einer der Kerne (physisch) gespiegelt/umgedreht und um 90 Grad gedreht, um die Strahlungs-/Rauschbeständigkeit zu verbessern :)

Der RM42 läuft mit einer höheren Taktrate als der STM32 (100 MHz gegenüber 72 MHz) und hat einen etwas anderen Befehlssatz und führt einige der Befehle schneller aus als der M3 (z. B. werden Divisionsbefehle in einem Zyklus auf dem R4 ausgeführt, nicht sicher, ob dies der Fall ist). M3).

HW-Timer sind im Vergleich zu Cortex-M3 SEHR präzise. Normalerweise brauchen wir einen statischen Offset, um die Drift auf den M3s zu korrigieren - nicht so mit dem R4 :)

Wo ich einen Cortex-M3 als Mehrzweck-MCU bezeichnen würde, würde ich den Cortex-R4 als komplexe Echtzeit-/Sicherheits-MCU bezeichnen. Wenn ich mich nicht irre, ist der RM42 SIL3-konform...

IMO ist der R4 ein großer Schritt in der Komplexität, selbst wenn Sie nicht vorhaben, die Echtzeit-/Sicherheitsfunktionen tatsächlich zu nutzen.

Ein wirklich schönes Beispiel für den Komplexitätsunterschied: Das SPI-Peripheriegerät hat 9 Steuer- und Statusregister auf dem STM32, während das RM42 42 hat. So ist es mit allen Peripheriegeräten :)

BEARBEITEN:

Für das, was es wert ist, ist der Cortex-R4 @ 100MHz in meinen Anwendungsfällen normalerweise 50-100% schneller als der Cortex-M3 @ 72MHz, wenn er genau die gleichen Aufgaben ausführt. Vielleicht, weil der R4 Daten- und Befehls-Caches hat?

Ein weiterer Vergleich: Ein paar 1000 Zeilen C- und ASM-Code werden auf dem RM42 beim Zurücksetzen ausgeführt, bevor der Aufruf main()mit der Teilmenge der Sicherheitsfunktionen erreicht wird, die ich derzeit verwende: D und nicht periphere Initialisierung oder irgendetwas, nur Start und Selbsttest (CPU , RAM, Flash ECC usw.).

Diese Seite hat mehr Details

Beispielsweise würde der R4 ein ABS-Bremssystem oder eine Industriemaschine steuern, während der M3 etwas steuern würde, das nicht so sicherheits- oder unternehmenskritisch ist
Tolle Antwort, aber nur eine Sache zu kommentieren. Alle R4-Geräte von Texas haben keinen Cache, sondern verwenden eng gekoppelten RAM, der im Grunde genommen ein RAM ist, das, abgesehen davon, dass es schnell ist, sehr nahe an den Kernen liegt. Ich denke, sie haben das getan, weil Caches für diese Art von Systemen nicht gut sind (sie brauchen ein sehr deterministisches System, um die von Ihnen beschriebene Echtzeitfunktion zu haben ... oder so ähnlich).
@morcillo Danke für deinen Kommentar. Ich wurde durch dieses Diagramm von ARM zu der Annahme verleitet, dass alle R4s Daten- und Befehls-Caches hatten: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - wissen Sie, was Sie davon halten sollen? Ich ging davon aus, dass es sich um Abkürzungen für Data D cacheand I cacheInstruction Cache handelt.
Um die Wahrheit zu sagen, ich weiß es nicht. Das einzige, was ich weiß, ist, dass die Cortex R4-Geräte MADE BY TEXAS INSTRUMENTS aus einem ähnlichen Grund wie dem, den ich Ihnen sagte, keinen Cache haben. Ich habe es vor langer Zeit irgendwo gelesen. Vielleicht haben sie das geändert oder vielleicht verwechsle ich 2 verschiedene Monster, aber soweit ich mich erinnere, haben die R4-Geräte keinen Cache (HALcogen generiert keine Cache-Initialisierung). Ich kann mich völlig irren ... wenn ja, lass es mich bitte wissen ... immer gut, etwas Neues zu lernen :)

ARM Cortex-R-Familie (v7-R)

  • Außergewöhnliche Leistung für Echtzeitanwendungen.
  • Prozessoren wurden für tief eingebettete Echtzeitanwendungen entwickelt, bei denen der Bedarf an geringem Stromverbrauch und gutem Interrupt-Verhalten mit außergewöhnlicher Leistung und starker Kompatibilität mit bestehenden Plattformen ausgewogen ist.
  • ARM Cortex®-R-Echtzeitprozessoren bieten Hochleistungs-Computing-Lösungen für eingebettete Systeme, bei denen Zuverlässigkeit, Hochverfügbarkeit, Fehlertoleranz, Wartbarkeit und Echtzeitreaktionen erforderlich sind.

ARM Cortex-M-Familie (v7-M)

  • Kostengünstige Lösungen für deterministische Mikrocontroller-Anwendungen.
  • Wurden hauptsächlich für den Mikrocontroller-Bereich entwickelt, wo der Bedarf an schnellem, hochgradig deterministischem Interrupt-Management mit dem Wunsch nach extrem niedriger Gate-Anzahl und geringstmöglichem Stromverbrauch gekoppelt ist.
  • Die ARM Cortex™-M-Prozessorfamilie ist eine aufwärtskompatible Reihe von energieeffizienten, benutzerfreundlichen Prozessoren, die entwickelt wurden, um Entwicklern zu helfen, die Anforderungen der eingebetteten Anwendungen von morgen zu erfüllen. Zu diesen Anforderungen gehören die Bereitstellung von mehr Funktionen zu geringeren Kosten, die Erhöhung der Konnektivität, die bessere Wiederverwendung von Code und eine verbesserte Energieeffizienz.
Ein weiterer Unterschied scheint zu sein, dass Cortex-M nur einen Thumb2-basierten Befehlssatz unterstützt, während Cortex-R auch den einfachen/klassischen Befehlssatz mit fester Länge (32 Bit) verwenden kann. Dass -R und -A ein gemeinsames Architektur-Referenzhandbuch (für v7) haben, während M ein separates ARManual hat, könnte eine gewisse Bedeutung haben.

Haben Sie einen guten Artikel über hier .

Die Cortex-R- und Cortex-M-Serien sind auf unterschiedliche Anforderungen und für unterschiedliche Anwendungen ausgerichtet. Es ist wichtig, die Parameter und Merkmale zu kennen, die sie voneinander trennen, da es Anwendungen geben könnte, in die beide passen könnten. Dieses Dokument ist auf ein solches Szenario ausgerichtet und hilft den Designern bei der Auswahl. Das Endziel besteht darin, den Designern oder Entwicklern zu helfen, die Architekturen von ARM zu verstehen.

Obwohl es gut ist, einen Link zu diesem interessanten Artikel zu haben, sollten Sie zumindest versuchen, den Artikel in Ihrer Antwort zusammenzufassen.