Architecture ARM
Conçus avec une architecture plus simple comparativement à d’autres familles de processeurs, ceci dans le but de réduire l’énergie nécessaire à leur fonctionnement, les processeurs ARM (acronyme de Advanced RISC Machines et anciennement de Acorn RISC Machine) équipement à ce jour grand nombre de systèmes embarqués, de systèmes sur puce (SoC) et d’objets de l’Internet (IoT). Les processeurs ARM sont fabriqués sous licence par un grand nombre de manufacturiers.
Évolution
Depuis la première version de leur architecture (ARMv1) en 1985, les µP et µC ARM n’ont pas cessé de faire évoluer leur architecture, d’améliorer leurs performances et d’ajouter de nouvelles fonctionnalités.
Thumb est un sous-ensemble du jeu d’instructions ARM classique à 32 bits. Codé sur 16 bits, il permet d’obtenir un code plus compact afin de réduire l’empreinte mémoire pour son stockage. Contrairement au jeu d’instructions ARM, les instructions Thumb ne peuvent s’exécuter conditionnellement. Ce jeu d’instructions est particulièrement bien adapté aux systèmes sur puce (SoC).
Jazelle est une extension permettant l’exécution de bytecode Java.
VFP, SIMD et NEON sont une suite d’extensions permettant le calcul à virgule flottante (VFP - Vector Floating Point) selon la norme ANSI/IEEE Std 754-1985 et le calcul vectoriel. L’architecture SIMD (Simple Instruction Multiple Data) offre un vrai parallélisme lors de calcul vectoriel. L’unité NEON est le dernier moteur de calcul des processeurs ARM, intégrant les processeurs VFP et SIMD tout en améliorant leurs performances.
Thumb-2 est une extension du jeu d’instructions Thumb. Avec certaines instructions codées sur 32 bits, Thumb-2 offre plus de possibilités et une meilleure utilisation des ressources du processeur.
TrustZone est une zone sécurisée offrant un environnement d’exécution isolé. Il garantit l’intégrité des applications ainsi que la confidentialité des données.
AArch64 ajoute l’architecture 64 bits aux processeurs ARM.
Crypto est une extension offrant de nouvelles instructions cryptographiques. Ces instructions permettent d’accélérer des fonctions de chiffrement (AES - Advanced Encryption Standard) et de hachage (SHA - Secure Hash Algorithm).
Profils des µP ARMv7
ARM propose dans sa famille de coeurs Cortex ARMv7 trois profils:
- Cortex-A
- Cortex-R
- Cortex-M
Cortex-A - Processeurs d’application pour systèmes avec hautes exigences en performance
Le profil Cortex-A permet la réalisation d’applications exigeant la mise en oeuvre de système d’exploitation riche tel que GNU/Linux. Ce profil propose le jeu d’instructions ARM et offre une virtualisation de sa mémoire grâce à une MMU (Memory Management Unit). Pour augmenter ses performances, ce profil utilise des horloges à hautes fréquences, implémente un pipeline profond et propose l’unité NEON comme support multimédia. Les marchés cibles sont les applications mobiles (smart phones, smart tv, serveurs économes en énergie, équipements de réseau, récepteurs satellites, systèmes automobiles, etc.).
Cortex-R - Processeurs haute performance pour applications embarquées de contrôle temps réel
Le profil Cortex-R permet la réalisation d’applications critiques mettant en oeuvre des systèmes d’exploitation temps réel (RTOS), tel que FreeRTOS, afin de satisfaire des exigences temps réel fortes. Ce profil a mis un accent sur son architecture pour augmenter la fiabilité, la robustesse et la tolérance aux fautes. Il implémente entre autres une protection d’accès à la mémoire grâce à une MPU (Memory Protection Unit), un double-coeur pour augmenter la tolérance aux pannes CPU. Les marchés cibles sont les applications industrielles, telles que l’automobile, l’avionique, les automates programmables (PLC - Programmable Logic Controller), la robotique, l’automation.
Cortex-M - Processeurs économes en énergie pour une large palette d’applications IoT
Le profil Cortex-M permet la réalisation d’applications embarquées à basse voire très basse consommation ou d’applications exigeant une large palette de périphériques d’entrées/sorties, mettant en oeuvre des systèmes sur puce (SoC). Ce profil intègre sur une même puce les mémoires volatiles et non volatiles, ainsi que les contrôleurs de périphériques d’entrées/sorties nécessaires à l’application. Ces µC permettent de réduire au maximum la surface sur le circuit imprimé (PCB - Printed Circuit Board). La conception de ce profil permet aussi bien la réalisation d’applications en “bare metal” qu’avec un RTOS, tel que Mbed OS ou FreeRTOS. Les marchés cibles sont des objets de l’Internet, des appareils industriels ou de grande consommation.
Caractéristiques des µP ARMv7
Les µP et µC ARM sont des processeurs avec une architecture RISC à 32 bits (ARMv1 à ARMv7) et à 64 bits (ARMv8 et ARMv9). Les principales caractérisques communes à tous les profils de l’architecture ARMv7 sont:
- Registres de taille et format uniforme (32 bits)
- Mécanismes de transfert (Load and Store) avec des opérations s’effectuant uniquement sur les registres et non avec la mémoire
- Modes d’adressage simples où toutes les adresses de transfert sont déterminées uniquement à partir du contenu des registres
- Modes d’adressage auto-incrémentés et auto-décrémentés afin d’optimiser l’exécution de boucles
- Jeu d’instructions orthogonal (registres communs pour les données et les adresses)
Les caractéristiques spécifiques des profils A et R sont:
- Jeu d’instructions ARM avec un format de taille fixe (32 bits) afin de simplifier son décodage
- Exécution essentiellement en un seul cycle
- Instructions s’exécutant conditionnellement afin d’améliorer les performances
Les caractéristiques spécifiques du profil M sont:
- Jeu d’instructions Thumb avec un format de taille fixe (16 bits) ou Thumb-2 avec un format de taille variable (16 et 32 bits)