Qual è davvero la differenza tra la serie Cortex-M e la serie Cortex-R?


25

È interessante! Ho cercato un articolo chiaro, ma non sono riuscito a trovare un articolo chiaro per questo. Inoltre ho trovato questo link: ARM Cortex-R e questo link: Serie Cortex-R ma non sono esattamente chiari. nella pagina wiki ha scritto:

I core sono concepiti per un utilizzo in tempo reale

e nella pagina di Cortex-R ha scritto:

I processori ARM Cortex®-R in tempo reale offrono soluzioni di elaborazione ad alte prestazioni per sistemi embedded in cui sono richiesti affidabilità, elevata disponibilità, tolleranza agli errori, manutenibilità e risposte in tempo reale.

e questi:

  1. Alte prestazioni: elaborazione rapida combinata con un'alta frequenza di clock
  2. In tempo reale: l'elaborazione soddisfa i vincoli in tempo reale in tutte le occasioni
  3. Sicuro: sistemi affidabili e affidabili con elevata resistenza agli errori
  4. Conveniente: caratteristiche ottimali per prestazioni, potenza e area

Per il numero uno: ad esempio per Cortex-M, recentemente l'NXP ha realizzato la serie NXP_LPC4XXX che ha una frequenza di clock di 200 MHz e per il Cortex-R, puoi vedere questo: TMS570LS ARM Microcontrollori Cortex ™ -R4 , è divertente perché ha 180Mhz frequenza di clock.

Per il numero due: è chiaro.

Per il numero tre: non è chiaro! qual è il significato di questa frase? significa che Cortex-M non è sicuro / affidabile?

Per il numero cinque: beh, penso che sia solo un reclamo!

Chi ha l'esperienza di lavorare con questa serie (Cortex-R)? Qual è la tua opinione a riguardo? Qual è la differenza profonda ed esatta tra la serie Cortex-M e la serie Cortex-R?


Questi punti elenco, come i punti elenco nella parte superiore di qualsiasi scheda tecnica, devono sempre essere considerati poco più che materiale di marketing.
Scott Seidman,

3
ri: punto 1: è del tutto possibile che Cortex-R esegua meno cicli di clock per (alcune) operazioni, quindi le prestazioni potrebbero non essere semplicemente dettate dalla frequenza di clock. Dovresti studiare dati dettagliati - o fare un benchmark di entrambi i sistemi ...
Brian Drummond,

@BrianDrummond non sono d'accordo
Roh,

5
@Roh Cortex-R può utilizzare il set di istruzioni ARM "classico" che include alcune istruzioni relativamente complesse (ad esempio, shift e op) e predice le singole istruzioni; Cortex-M fornisce solo un IS basato su Thumb2 che utilizza un'istruzione If-Then per prevedere le istruzioni. Inoltre, anche se limitato a prestazioni di microarchitettura relativamente semplici, non è proporzionale alla frequenza di clock.
Paul A. Clayton,

Risposte:


17

Divertente, io uso entrambi al lavoro :)

Il Cortex-M3 (usiamo gli STM32) è un MCU generico che è veloce e grande (memoria flash) abbastanza per le applicazioni embedded più complesse.

Tuttavia, l'R4 è una bestia completamente diversa - almeno la versione di Texas Instruments che uso: l'RM42, simile al TMS570. L'RM42 è un Cortex-R4 con due core in esecuzione in "lock-step" per ridondanza, il che significa che un core è 2 istruzioni prima dell'altro e viene utilizzato per un controllo e una correzione degli errori. Inoltre, uno dei nuclei è (fisicamente) specchiato / capovolto e ruotato di 90 gradi per migliorare la resilienza alle radiazioni / al rumore :)

L'RM42 funziona a una velocità di clock superiore rispetto all'STM32 (100 MHz contro 72 MHz) e ha un set di istruzioni leggermente diverso ed esegue alcune delle istruzioni più velocemente dell'M3 (ad es. Le istruzioni di divisione vengono eseguite in un ciclo sull'R4, non sono sicure che lo facciano su M3).

I timer HW sono MOLTO precisi rispetto a Cortex-M3. Di solito abbiamo bisogno di un offset statico per correggere la deriva sugli M3 - non così con l'R4 :)

Laddove definirei un Cortex-M3 un MCU generico, definirei il Cortex-R4 un complesso MCU in tempo reale / di sicurezza. Se non sbaglio, l'RM42 è conforme SIL3 ...

IMO R4 è un grande passo in avanti nella complessità anche se non si prevede di utilizzare effettivamente le funzionalità in tempo reale / di sicurezza.

Un bell'esempio della differenza di complessità: la periferica SPI ha 9 registri di controllo e di stato sull'STM32 mentre l'RM42 ne ha 42. È così con tutte le periferiche :)

MODIFICARE:

Per quello che vale, nei miei casi d'uso il Cortex-R4 a 100 MHz è in genere più veloce del 50-100% rispetto al Cortex-M3 a 72 MHz quando esegue esattamente le stesse attività. Forse perché R4 ha cache di dati e istruzioni?

Un altro confronto, alcune 1000 righe di codice C e ASM vengono eseguite al ripristino prima di raggiungere la chiamata main()con il sottoinsieme delle funzioni di sicurezza che attualmente utilizzo: D e non inizializzazione periferica o altro, solo avvio e autotest (CPU, RAM, Flash ECC ecc.).

Questa pagina ha maggiori dettagli


Ad esempio, R4 controllerebbe un sistema frenante ABS o una macchina industriale, mentre M3 controllerebbe qualcosa di non critico per la sicurezza o la missione
Morten Jensen

Ottima risposta, ma solo una cosa da commentare. Tutti i dispositivi R4 del Texas non hanno cache, l'uso della RAM strettamente accoppiata, che è fondamentalmente una RAM che, assediata per essere veloce, è davvero vicina ai core. Penso che lo abbiano fatto a causa del fatto che le cache non sono buone per questo tipo di sistemi (hanno bisogno di un sistema molto deterministico per avere la funzione in tempo reale che hai descritto .. o qualcosa del genere)
morcillo

@morcillo grazie per il tuo commento. Sono stato portato a credere che tutti gli R4 avessero dati + cache di istruzioni da questo diagramma di ARM: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - sai cosa farne? Stavo supponendo D cacheed I cacheerano abbreviazioni per cache di dati e istruzioni.
Morten Jensen il

A dire la verità non lo so. L'unica cosa che so è che i dispositivi cortx R4 REALIZZATI DA STRUMENTI TEXAS non hanno cache per un motivo simile a quello che ti ho detto. L'ho letto tanto tempo fa da qualche parte. Forse l'hanno cambiato o forse sto mescolando 2 mostri diversi, ma per quanto ricordo i dispositivi R4 non hanno cache (HALcogen non genera l'inizializzazione della cache). Potrei sbagliarmi completamente ... se sono per favore fammi sapere .. sempre bello imparare qualcosa di nuovo :)
Morcillo

3

Famiglia ARM Cortex-R (v7-R)

  • Prestazioni eccezionali per applicazioni in tempo reale.
  • I processori sono stati sviluppati per applicazioni real-time profondamente integrate in cui la necessità di bassa potenza e buon comportamento di interruzione sono bilanciate con prestazioni eccezionali e forte compatibilità con le piattaforme esistenti.
  • I processori ARM Cortex®-R in tempo reale offrono soluzioni di elaborazione ad alte prestazioni per sistemi embedded che richiedono affidabilità, elevata disponibilità, tolleranza agli errori, manutenibilità e risposte in tempo reale.

Famiglia ARM Cortex-M (v7-M)

  • Soluzioni economiche per applicazioni di microcontrollori deterministici.
  • Sono stati sviluppati principalmente per il dominio dei microcontrollori in cui la necessità di una gestione degli interruzioni rapida, altamente deterministica, è abbinata al desiderio di un numero di gate estremamente basso e del minor consumo di energia possibile.
  • La famiglia di processori ARM Cortex ™ -M è una gamma compatibile verso l'alto di processori ad alta efficienza energetica e di facile utilizzo progettati per aiutare gli sviluppatori a soddisfare le esigenze delle applicazioni embedded di domani. Tali richieste includono la fornitura di più funzionalità a un costo inferiore, una maggiore connettività, un migliore riutilizzo del codice e una migliore efficienza energetica.

Un'altra distinzione sembra essere che Cortex-M supporti solo un set di istruzioni basato su Thumb2 mentre Cortex-R può usare anche il set di istruzioni di base / classico a lunghezza fissa (32 bit). Che -R e -A condividano un Manuale di riferimento architettonico (per v7), mentre M ha un ARManual separato, potrebbe avere un certo significato.
Paul A. Clayton,

2

Buon articolo qui .

Le serie Cortex-R e cortex-M sono destinate a requisiti diversi e per applicazioni diverse. È importante conoscere i parametri e le caratteristiche che li separano in quanto potrebbero esserci applicazioni in cui entrambe possono adattarsi. Questo documento è destinato a tale scenario e aiuta i progettisti a selezionare. L'obiettivo finale è aiutare i progettisti o gli sviluppatori a comprendere le architetture di ARM.


Sebbene sia utile avere un collegamento a quell'articolo interessante, dovresti almeno provare a riassumere l'articolo nella tua risposta.
AndrejaKo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.