Qual é realmente a diferença entre as séries Cortex-M e Cortex-R?


25

É interessante! Eu procurei por encontrar um artigo claro, mas não consegui encontrar um artigo claro para isso. Também encontrei este link: ARM Cortex-R e este link: Cortex-R Series, mas eles não são exatamente claros. na página wiki escreveu:

Os núcleos são projetados para uso robusto em tempo real

e na página do Cortex-R escreveu:

Os processadores ARM Cortex®-R em tempo real oferecem soluções de computação de alto desempenho para sistemas embarcados onde são necessárias confiabilidade, alta disponibilidade, tolerância a falhas, manutenção e respostas em tempo real.

e esses:

  1. Alto desempenho: processamento rápido combinado com alta frequência de clock
  2. Tempo real: o processamento atende a restrições rígidas em tempo real em todas as ocasiões
  3. Seguro: Sistemas confiáveis ​​e confiáveis ​​com alta resistência a erros
  4. Custo-benefício: recursos ideais para desempenho, potência e área

Para o número um: por exemplo, para o Cortex-M, recentemente o NXP fabricou a série NXP_LPC4XXX com taxa de clock de 200Mhz e para o Cortex-R, você pode ver isso: Microcontroladores TMS570LS ARM Cortex ™ -R4 , é engraçado porque tem 180Mhz taxa de relógio.

Para o número dois: está claro.

Para o número três: não está claro! qual é o significado dessa frase? significa que o Cortex-M não é seguro / Confiável?

Número cinco: Bem, acho que é apenas uma reivindicação!

Quem tem a experiência de trabalhar com esta série (Cortex-R)? Qual a sua opinião sobre isso? Qual é a diferença profunda e exata entre as séries Cortex-M e Cortex-R?


Esses marcadores, como os marcadores no topo de qualquer folha de dados, sempre devem ser considerados pouco mais que material de marketing.
Scott Seidman

3
re: ponto 1: é perfeitamente possível que o Cortex-R tome menos ciclos de clock para (algumas) operações, portanto o desempenho pode não ser simplesmente ditado pela taxa de clock. Você precisaria estudar dados detalhados - ou referência ambos os sistemas ...
Brian Drummond

@BrianDrummond eu não concordo
Roh

5
O @Roh Cortex-R pode usar o conjunto de instruções ARM "clássico", que inclui algumas instruções relativamente complexas (por exemplo, shift e op) e predica instruções individuais; O Cortex-M fornece apenas um IS baseado no Thumb2 que usa uma instrução If-Then para predicar instruções. Além disso, mesmo quando limitado a microarquiteturas relativamente simples, o desempenho não é proporcional à taxa de clock.
Paul A. Clayton

Respostas:


17

Engraçado, eu uso os dois no trabalho :)

O Cortex-M3 (usamos STM32s) é um MCU de uso geral rápido e grande (armazenamento flash) suficiente para a maioria dos aplicativos incorporados complexos.

No entanto, o R4 é um animal totalmente diferente - pelo menos a versão da Texas Instruments que eu uso: o RM42, semelhante ao TMS570. O RM42 é um Cortex-R4 com dois núcleos em execução no "lock-step" para redundância, o que significa que um núcleo está 2 instruções à frente do outro e é usado para algumas verificações e correções de erros. Além disso, um dos núcleos é (fisicamente) espelhado / invertido e girado 90 graus para melhorar a resiliência à radiação / ruído :)

O RM42 roda em uma velocidade de clock mais alta que o STM32 (100MHz vs 72MHz) e possui um conjunto de instruções ligeiramente diferente e executa algumas das instruções mais rapidamente que o M3 (por exemplo, instruções de divisão executadas em um ciclo no R4, não tenho certeza M3).

Os temporizadores HW são MUITO precisos em comparação com o Cortex-M3. Normalmente, precisamos de um deslocamento estático para corrigir a deriva nos M3s - não com o R4 :)

Onde eu chamaria o Cortex-M3 de MCU de uso geral, o Cortex-R4 seria um MCU de segurança / tempo real complexo. Se não me engano, o RM42 é compatível com SIL3 ...

O IMO R4 é um grande passo em complexidade, mesmo que você não esteja planejando usar os recursos de segurança / em tempo real.

Um bom exemplo da diferença de complexidade: o periférico SPI possui 9 registros de controle e status no STM32, enquanto o RM42 possui 42. É assim com todos os periféricos :)

EDITAR:

Pelo que vale, nos meus casos de uso, o Cortex-R4 @ 100MHz é geralmente 50-100% mais rápido que o Cortex-M3 @ 72MHz ao executar exatamente as mesmas tarefas. Talvez porque o R4 tenha caches de dados e instruções?

Outra comparação: algumas 1000 linhas de código C e ASM são executadas na redefinição antes de chegar à chamada main()com o subconjunto dos recursos de segurança que atualmente uso: D e não inicialização periférica ou qualquer coisa, apenas inicialização e autoteste (CPU, RAM, ECC Flash etc.).

Esta página tem mais detalhes


Por exemplo, ele R4 iria controlar um sistema de travagem ABS ou uma máquina industrial, enquanto o M3 iria controlar algo não como segurança ou de missão crítica
Morten Jensen

Ótima resposta, mas apenas uma coisa a comentar. Todos os dispositivos R4 do Texas não possuem cache, o uso de RAM fortemente acoplada, que é basicamente uma RAM que, por ser rápida, está muito próxima dos núcleos. Eu acho que eles fizeram isso devido ao fato de que caches não são bons para este tipo de sistemas (eles precisam de um sistema muito determinista ter o recurso em tempo real que você descreveu .. ou algo parecido)
morcillo

@morcillo obrigado pelo seu comentário. Fui levado a acreditar que todos os R4s tinham cache de dados e instruções por este diagrama do ARM: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - você sabe o que fazer com isso? Eu estava assumindo D cachee I cacheeram abreviações para o cache de dados e instruções.
Morten Jensen

Para dizer a verdade, eu não sei. A única coisa que sei é que os dispositivos R4 do córtex FEITO POR TEXAS INSTRUMENTS não têm cache por um motivo semelhante ao que eu lhe disse. Eu li isso há muito tempo atrás. Talvez eles tenham mudado isso ou talvez eu esteja misturando 2 monstros diferentes, mas pelo que me lembro, os dispositivos R4 não têm cache (o HALcogen não gera inicialização do cache). Posso estar completamente errado ... se eu estou por favor me avise .. sempre bom aprender algo novo :)
morcillo

3

Família ARM Cortex-R (v7-R)

  • Desempenho excepcional para aplicativos em tempo real.
  • Os processadores foram desenvolvidos para aplicativos em tempo real profundamente embutidos, onde a necessidade de baixa energia e bom comportamento de interrupção é equilibrada com desempenho excepcional e forte compatibilidade com as plataformas existentes.
  • Os processadores ARM Cortex®-R em tempo real oferecem soluções de computação de alto desempenho para sistemas embarcados em que são necessárias confiabilidade, alta disponibilidade, tolerância a falhas, manutenção e respostas em tempo real.

Família ARM Cortex-M (v7-M)

  • Soluções sensíveis a custos para aplicações determinísticas de microcontroladores.
  • Foram desenvolvidos principalmente para o domínio do microcontrolador, onde a necessidade de gerenciamento rápido e altamente determinístico de interrupções é associada ao desejo de contagem de portas extremamente baixa e menor consumo de energia possível.
  • A família de processadores ARM Cortex ™ -M é uma variedade compatível de processadores de baixo consumo de energia e fáceis de usar, projetados para ajudar os desenvolvedores a atender às necessidades dos aplicativos embarcados de amanhã. Essas demandas incluem a entrega de mais recursos a um custo menor, aumento da conectividade, melhor reutilização de código e maior eficiência energética.

Outra distinção parece ser que o Cortex-M suporta apenas um conjunto de instruções baseado no Thumb2, enquanto o Cortex-R também pode usar o conjunto básico / clássico de comprimento fixo (32 bits). Que -R e -A compartilham um Manual de referência arquitetural (para v7), enquanto M possui um ARManual separado, pode ter algum significado.
Paul A. Clayton

2

Tenha um bom artigo aqui .

As séries Cortex-R e córtex-M são direcionadas para diferentes requisitos e para diferentes aplicações. É importante conhecer os parâmetros e os recursos que os separam, pois pode haver aplicativos em que ambos possam se encaixar. Este documento é direcionado para esse cenário e ajuda os Designers na seleção. O objetivo final é ajudar os designers ou desenvolvedores a entender as arquiteturas do ARM.


Embora seja bom ter um link para esse artigo interessante, você deve pelo menos tentar resumir o artigo em sua resposta.
AndrejaKo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.