Sem dúvida, a arquitetura de conjunto de instruções (ISA) mais bem-sucedida e amplamente utilizada no mundo é a instrução Arm. Até o momento, mais de 300 bilhões de processadores baseados na ISA Arm foram implantados.[1] Com uma população global de mais de oito bilhões de pessoas,[2] isso equivale a aproximadamente 38 processadores Arm por pessoa.
O que torna a ISA Arm tão atrativa é o fato de fazer parte das arquiteturas de computador com conjunto reduzido de instruções (RISC) e ter sido projetada para uma ampla gama de aplicações, desde dispositivos compactos alimentados por bateria até controle em tempo real e alto desempenho na borda e na nuvem. Para atender a esses usos, a arquitetura Arm evoluiu ao longo dos anos, passando do Armv1 para o atual Armv9-A.
A linha de processadores Arm Cortex é composta por três grupos distintos, que podem ser selecionados para atender às necessidades específicas de cada aplicação.
- Cortex-M: Essa classe de microcontroladores é projetada para implementações de baixo nível, mais próximas do hardware. São desenvolvidos para serem de baixo custo e baixo consumo de energia. Exemplos de aplicações incluem o controle de sensores, gerenciamento de E/S do sistema, displays e carregadores de bateria. Normalmente, os processadores Cortex-M não executam sistemas operacionais como Linux, pois não possuem uma unidade de gerenciamento de memória.
- Cortex-R: Esses processadores são voltados para aplicações em tempo real e de alta confiabilidade. Para suportar funções em tempo real, incluem memórias fortemente acopladas, capacidade de execução em lockstep, unidades de proteção de memória e códigos de correção de erro em caches e memória acoplada (TCM). Além disso, os processadores Cortex-R oferecem interrupções determinísticas, essenciais para aplicações em tempo real. Geralmente, essa classe de processadores roda um sistema operacional em tempo real.
- Cortex-A: Essa classe de processadores é destinada a aplicações de alto desempenho que exigem sistemas operacionais completos ou hipervisores. Os processadores Cortex-A incluem recursos como NEON para fornecer instrução única de dados múltiplos (SIMD), unidades de ponto flutuante vetorial (VFP) e TrustZone, que permite a criação de ambientes isolados para segurança.
Os processadores Cortex-M utilizam uma ISA de 32 bits, enquanto os Cortex-R e Cortex-A oferecem suporte tanto para arquiteturas de 32 quanto de 64 bits.
Um dos principais diferenciais da arquitetura Arm é o conjunto de instruções Thumb-2. O conjunto original Thumb era uma codificação de 16 bits da ISA Arm. O Thumb-2 expandiu esse conjunto para incluir instruções de 32 bits, criando um conjunto de instruções de comprimento variável. O Thumb-2 mantém uma densidade de código semelhante, mas melhora o desempenho ao mesmo tempo. Processadores das linhas Cortex-A e Cortex-R podem operar tanto com a ISA Arm padrão quanto com o Thumb-2, enquanto vários processadores da linha Cortex-M utilizam exclusivamente o Thumb-2, uma vez que a memória costuma ser mais limitada.
Certamente, o processador em si não é o único elemento necessário para os projetistas. A Arm também desenvolveu especificações de interconexão, como a Advanced Microcontroller Bus Architecture (AMBA), que define vários padrões de interface que podem ser usados com seus núcleos de processador para criar soluções de multiprocessamento e adicionar uma variedade de periféricos. O AMBA inclui interfaces simples para transferir dados mapeados em memória, como o AXI Lite, e interfaces mais complexas que suportam transações de alta largura de banda, como o AXI, juntamente com interconexões de cache coerente (CCIs) para garantir a coerência de cache em sistemas multiprocessados.
São essas interfaces que os fornecedores de processadores que licenciam os núcleos Arm utilizam para criar suas ofertas de processadores. Essas interfaces permitem que os desenvolvedores personalizem a oferta para diferentes aplicações — uma das famílias de processadores baseados em Arm mais populares são os STM32. Estes oferecem uma variedade de processadores baseados em Arm que incluem uma gama de periféricos on-chip, como UARTs, SPI e I2C, até periféricos mais complexos, como USB, interfaces de câmera, CAN e Ethernet. Essas opções permitem que os desenvolvedores escolham o núcleo mais apropriado para atender aos requisitos da aplicação.
A maioria dos núcleos da Arm é implantada na borda (edge). Algumas aplicações são implantadas na nuvem, como robótica guiada por visão (classe Cortex-A), operação de veículos autônomos (classe Cortex-R) ou monitoramento de controle industrial.
Cada vez mais, as aplicações na borda estão utilizando inferência de aprendizado de máquina (ML). Isso pode ocorrer em processadores da classe Cortex-A para reconhecimento de imagem, onde é necessária a potência de um processador da classe de aplicação. Implantações alternativas de ML podem usar processadores da classe Cortex-M para implementar sistemas de manutenção preditiva. Um exemplo de manutenção preditiva seria o monitoramento da corrente consumida nos trilhos de alimentação, onde, ao usar um modelo de inferência ML, é possível determinar se o sistema estava em um caminho para falha. Esse tipo de aplicação é um dos casos de uso mais críticos de ML na borda. Tipicamente, sistemas de saúde e monitoramento são implementados com processadores da classe Cortex-M. Essa classe de processadores não é adequada para a implementação de aplicações completas de pilha ML. No entanto, os frameworks TinyML estão se tornando cada vez mais populares para soluções em processadores com as capacidades dos processadores da classe Cortex-M. Frameworks TinyML suportam arquitetura de 32 bits, permitindo que processadores da classe Cortex-M implementem frameworks de aprendizado de máquina que antes exigiam classes de desempenho mais altas.
Conclusão
Independentemente da aplicação que você está desenvolvendo, seja processamento de imagem, aprendizado de máquina, robótica, controle industrial, monitoramento de saúde, entre outras, existe um dispositivo Arm Cortex que pode ser utilizado para implementá-la. Essa aplicabilidade decorre do tamanho compacto do código da arquitetura Arm ISA, do suporte a uma variedade de interfaces e frameworks padrão da indústria, além de uma ampla base de desenvolvedores familiarizados com a implantação de soluções baseadas em Arm Cortex.
Fontes
[1]https://www.arm.com/architecture/cpu#:~:text=It%20is%20the%20most%20pervasive,Integrated%20security [2]https://www.census.gov/newsroom/press-releases/2024/population-new-years-day.html.Artigo escrito por Adam Taylor e publicado no blog da Mouser Electronics: Exploring the Versatility of Arm Cortex Processors | Bench Talk
Traduzido pela Equipe Embarcados. Visite a página da Mouser Electronics no Embarcados








