Vous êtes sur la page 1sur 28

Introduction à l’architecture des processeurs pour l’embarqué

Connaissances préalables recommandées :


Systèmes à microprocesseurs, Systèmes à microcontrôleurs, Programmation en C/C++
embarqué, Electronique numérique : FPGA & programmation VHDL.
Cours et TP:
Cours de microcontrôleurs STM32 à Polytech Grenoble (filières IESE et E2I) (univ-grenoble-
alpes.fr)

-Simulateur: GIF-1001 -- OSA (ulaval.ca) en ligne


- Keil µVision 5.0
- STM32CubeIDE
le lien pour télécharger le logiciel STM32 CUBE:
https://www.st.com/en/development-tools/stm32cubeide.html
Architecture ARM
L'architecture ARM a initialement été développée en interne par la société
britannique Acorn Computers.

ARM signifiait alors 'Acorn Risc Machine’.

En 1990 apparait une nouvelle société nommée ARM qui signifie désormais Advanced RISC
Machine limited ARM Ltd, se positionnant avec une offre indépendante pour le
marché de l'électronique embarquée.

Une particularité des processeurs ARM est leur mode de vente. En effet, ARM Ltd
ne fabrique ni ne vend ses processeurs sous forme de circuits intégrés. La société
vend les licences de ses processeurs de manière qu'ils soient gravés dans le silicium
par d'autres fabricants. Aujourd'hui, la plupart des grands fondeurs de puces
proposent de l'architecture ARM.
Les architectures ARM sont des architectures de type RISC 32 bits (ARMv1 à ARMv7) et
64 bits (ARMv8) développées par ARM Ltd spécialisée dans le développement de
processeurs d'architecture 32 bits et d'architecture 64 bits de type RISC.

Dotés d'une architecture relativement plus simple que d'autres familles de processeurs
et de faibles consommateurs d'électricité, les processeurs ARM sont aujourd'hui
dominants dans le domaine de l'informatique embarquée, en particulier par la
téléphonie mobile et les tablettes.

Fabricants de processeurs ARM

Ces processeurs sont fabriqués sous licence par un grand nombre de constructeurs, qui
ajoutent leur propre propriété intellectuelle (IP) à la propriété intellectuelle d'ARM.

La propriété intellectuelle appartient à la société britannique, mais les processeurs


fabriqués sous licence le sont par différentes entreprises de par le monde. Parmi les
entreprises fabriquant les modèles des séries Cortex (les plus avancées), la majorité se
trouve en Asie (20), suivie par les États-Unis (13) et enfin par l'Europe (6).
En résumé
• ARM= Advanced Risc Machine
A: Haute performance: Automobile, Tablettes, Multimédia, Téléphonie

R: Temps réel: Automobile, Disques dur, Téléphonie, Routeurs

M: Basse consommation: Appareils portables, bas prix.

• Leader dans l’architecture de processeurs 16/32bits.

• ARM fait la conception mais ne fabrique pas de chip

• La société licencie ces processeurs haute performance, bas prix, efficace en


consommation aux compagnies leaders de l’électronique tels que ST, ATMEL, NXP, Cirrus
Logic etc.,

• Utilisation principale, appareils portables (tablettes, smartphones), robotique, grand


public
SoC ARM

Aujourd'hui, ARM est surtout connu pour ses systèmes sur une puce (SoC), intégrant
sur une seule puce : microprocesseur, processeur graphique (GPU), DSP, FPU, SIMD,
et contrôleur de périphériques. Ils sont présents dans la majorité des smartphones et
des tablettes.

ARM propose ainsi pour les SoC les plus récents les microprocesseurs Cortex de la
famille
Cortex-A (Application): Processeur à Architecture ARMv7-A, SIMD, Jazelle,
DSP, Thumb-2, pour les dispositifs portables de type smartphones et tablettes,
Cortex-M (Microcontrôleur): Processeur embarqué à Architecture ARMv6-M,
ARMv7-M et ARMv8-M, pour le couplage à un microcontrôleur,
Cortex-R (Real time): Processeur temps-réel à Architecture ARMv7-R et
ARMv8-R, pour les microprocesseurs temps réel,

Certains constructeurs, tels que Nvidia, préfèrent produire leur propre processeur
graphique, d'autres, comme Samsung, préfèrent prendre dans certains cas un
processeur graphique de prestataire tiers ou d'ARM selon les modèles, et d'autres,
comme Apple, modifient certains composants du microprocesseur en mélangeant
plusieurs architectures processeur ARM (l'Apple A6 par exemple, mixe les technologies
de microprocesseur Cortex-A9 et Cortex-A15).
Historique

Le projet Acorn Risk Machine démarre en 1983 avec le partenaire VLSI Technology – fondeur
des prototypes ARM.
L'ARM1 (1985) était le premier prototype de processeur ARM avec architecture RISC.
L' ARM2 (1986) a été le premier processeur en production. Il ne comprenait que 30 000
transistors. Il comportait un pipeline à 3 étages. Perfomance : 4 MIPSs@8Mhz
L'ARM3 était une version améliorée de l'ARM2 avec une mémoire cache.
L’ARM 6 (1992) conçu à la demande d'Apple , n'avait que 35 000 transistors. Performance :
17MIPS@20MHz
Le cœur le plus célèbre est l’ARM7TDMI qui comporte un pipeline à 3 étages. De plus,
le ARM7TDMI dispose d'un second jeu d'instructions appelé THUMB permettant le
codage d'instructions sur 16 bits afin de réaliser une importante économie de mémoire,
notamment pour les applications embarquées.

ARM Ltd. a ensuite développé le cœur ARM9 qui comporte un pipeline à 5 étages. Cela
permet ainsi l'augmentation du nombre d'opérations logiques sur chaque cycle d'horloge
et donc une amélioration des performances en vitesse.
Architectures ARM
La gamme ARM-M
M0: Alternative pour les processeurs 8 bits, processeur 32
bits très basse consommation.
M1: Implémentés dans des processeurs FPGA
M3: Haute performance à basse consommation
M4: Processeur avec fonction DSP, optimisation
mathématiques et virgule flottante simple précision.
M7: Processeur très haute performance

• Les processeurs de la famille 7,9,11 sont encore intégrés


dans beaucoup d’appareils, mais migrent vers les
processeurs M0 et M3
Le Cœur Cortex-M3
• Un contrôleur d’interruptions NVIC (Nested Vector Interrupt Controller) supportant une
entrée non masquable (NMI : No MaskableInterrupt), 14 sources d’interruptions internes
générées par le noyau et les périphériques du Cortex-M3 et jusqu’à 240 sources
d’interruptions externes.

• Un système de débogage qui permet de placer des points d’arrêt « Breakpoints» et


d’observation «Watchpoints» matériels, ainsi que le traçage des instructions.

• Une unité de protection de mémoires (MPU: Memory Protection Unit) qui permet de
déterminer des droits d’accès des applications à des zones mémoires définies. Cette unité
est optionnelle et n’est pas disponible dans tous les processeurs Cortex-M3.

• Un Bus de matrice (AHB Bus Matrix: Advanced High Performance Bus)


L’intégration efficace des différents composants exige l’emploie d’un bus système à haute
performance et ayant une grande bande passante pour effectuer des opérations en
parallèle. Pour résoudre le problème de la bande passante, la société ARM a proposé le «
Multi-layer AHB bus », sous forme d’une matrice d’interconnexion basée sur le protocole
AHB. Cette matrice permet à plusieurs composants maîtres d’être interconnectés avec
plusieurs esclaves.
Taille moyenne du code Dhrystone est un programme de
test de performance,
Comparaison de la densité du code du Cortex- DMIPS (Dhrystone MIPS)
M par rapport à d’autres architectures MIPS (millions d'instructions par seconde)

Utilisation optimale de la mémoire: Grâce à Performance: Avec une capacité de traitement


l’utilisation de la technologie Thumb-2 qui de 1,25 DMIPS et une fréquence de
permet l’utilisation simultanée d’instructions fonctionnement qui peut atteindre la valeur de
16 et 32 bits, une meilleure densité du code est 275 MHz, les performances du CortexM3
obtenue relativement aux autres architectures dépassent largement celles des architectures 8
et 16 bits
Compatibilité binaire Cortex M

Architecture du jeu d'instructions ARM Cortex M


Architecture et jeux d’instructions

L'architecture ARM est fortement inspirée des principes de conception RISC. Elle dispose
de 16 registres généraux de 32 bits. Les instructions, codées sur 32 bits jusqu'à l'ARMv7
peuvent toutes disposer d'exécution conditionnelle ; sur l'architecture 64 bits (ARMv8),
quelques instructions seulement peuvent disposer d'exécution conditionnelle.
Le jeu d'instructions a reçu des extensions au fil du temps, telles que Thumb, permettant
d'améliorer la densité du code, NEON, apportant des instructions SIMD, ou Jazelle,
améliorant l'exécution de code Java.
Jazelle

Jazelle DBX (Direct Bytecode eXecution) est une technique permettant d'exécuter
directement du bytecode Java dans les architectures ARM comme un troisième état
d'exécution (et jeu d'exécution), en parallèle à l'ARM existant et au mode Thumb. Le
support pour cet état est signalé par le « J » de l'architecture ARMv5TEJ et les noms
de cœurs ARM9EJ-S et ARM7EJ-S. Le support de cet état est requis à partir d'ARMv6
(sauf pour le profil ARMv7-M). Malgré tout, les cœurs plus récents incluent
seulement une implémentation triviale qui ne fournit pas d'accélération matérielle.
Thumb

Thumb est un jeu d'instructions 16 bits qui fournit un sous-ensemble des instructions ARM
32 bits classiques et permet un gain de mémoire important. Pour obtenir un codage plus
compact de ces instructions, certains opérandes sont implicites et les possibilités offertes
sont plus limitées.
Dans le mode Thumb, les instructions 16 bits offrent moins de possibilités. Seuls les
branchements peuvent être conditionnels et plusieurs instructions sont limitées en accès à
une partie réduite des registres généraux du processeur. Ces possibilités réduites
améliorent la densité globale d'un programme, bien que certaines opérations nécessitent
plus d'instructions. Cela peut réduire le temps de chargement du code en mémoire
(libérant ainsi de la bande passante) et augmenter la probabilité de rester dans le cache
d'instruction, augmentant ainsi considérablement les performances.

Le premier processeur contenant un décodeur d'instruction Thumb est l'ARM7TDMI.


Toutes les ARM9 et supérieures (dont l'XScale) incluent un décodeur Thumb.
Thumb-2

La technologie Thumb-2 commence avec le cœur ARM1156 annoncé en 2003. Thumb-2 étend le
jeu d'instructions limité 16 bits de Thumb par des instructions 32 bits additionnelles afin de
donner plus de largesse au jeu d'instruction. Il en résulte un jeu d'instructions de largeur
variable. Thumb-2 a pour visée d'atteindre une densité de code proche de Thumb tout en
conservant des performances similaires au jeu d'instructions ARM en mémoire 32 bits.
Thumb-2 étend à la fois le jeu instructions Thumb et celui d'ARM avec notamment de la
manipulation de champs de bits, des exécutions conditionnelles et des tables de branchement.
Introduction à la famille STM32
La famille STM32 est une série de microcontrôleurs 32-bits en circuits intégrés
réalisés par la société STMicroelectronics.

Les puces STM32 sont regroupées dans différentes séries, basées sur les
processeurs d'architecture ARM 32-bits, tels que le Cortex-M7F, leCortex-M4F,
le Cortex-M3, Cortex-M0+, ou le Cortex-M0.

Chaque microcontrôleur est constitué d'un cœur de calcul, de mémoire vive (RAM)
statique, de mémoire flash (pour le stockage), d'une interface de débogage et de
différents périphériques.

Le STM32 F4 comporte un Cortex-M4F, un DSP et un FPU. Il est notamment


complètement géré par un système d’exploitation temps-réel.

L'ensemble des microcontrôleurs peuvent également être programmés à l'aide de


l'IDE d'Arduino.
Cartes
Arduino
Il existe différents types de cartes compatibles Arduino basées sur le STM32. La
série Nucleo a été conçue par STMicroelectronics à cet effet. D'autres
constructeurs ont également fait des cartes compatibles utilisant ce SoC sous
divers noms.

Nucléo
Les cartes Stm32 Nucleo, supportent une compatibilité avec les cartes Arduino,
bien que basées sur des microcontrôleurs ARM Cortex-M (32 bits) et non Atmel
AVR (8 bits) comme utilisés dans les cartes Arduino standard. Il ajoute ainsi à
Arduino de bonnes performances graphiques en y ajoutant l'accélérateur
graphique Chrom-ART (fourni avec une bibliothèque open source)

Audio
Les STM32 F4 et supérieurs possédants un DSP, ils sont adaptés également à
l'usage pour le son. La carte synthétiseur Axoloti est un exemple d'application
dans le domaine du son.
Le logiciel de synthétiseur analogique libre, Mozzi pour Arduino peut être utilisé
directement sur les STM32.
Séries:

Les différentes séries de microcontrôleurs 32 bits de la marque STMicroelectronics


possèdent une référence sur 7 caractères.
Famille : STM32 = famille de microcontrôleur basé sur les processeurs ARM Cortex-M 32-bit
Type : F = Mainstream ou High performance | L = Low Power | H = High performance |
WB/WL = Wireless
Modèle du processeur : 0 = M0 | 1/2 = M3 | 3/4 = M4 | 7 = M7
Performance : Cette caractéristique représente la vitesse d'horloge (Mhz), la RAM et les
entrées et sorties. Elle est codée sur 2 chiffres.
Nombre de pins : F = 20 | G = 28 | K = 32 | T = 36 | S = 44 | S = 44 | C = 48 | R = 64-66 | V =
100 | Z = 144 | I = 176
Taille mémoire flash (en KByte) : 4 = 16 | 6 = 32 | 8 = 64 | B = 128 | C = 256 | D = 384 | E =
512 | F = 768 | G = 1024 | H = 1536 | I = 2048
Package : P = TSOOP | H = BGA | U = VFQFPN = T = LQFP | Y = WLCSP
Gamme de température : 6 = -40°C à 85°C | 7 = -40°C à 105°C

Par exemple, le STM32F429ZIT6 (à lire STM-32-F-4-29-Z-I-T-6) est un microcontrôleur de la


compagnie STM de 32 bits mainstream équipé d’un CORTEX-M4, 180 Mhz, 144 I/O, 144
pins, 2048 KBytes, un package LQFP et une température de fonctionnement allant de -40°C
à 85°C
Différentes Séries de microcontrôleurs STM32

Série F0 basée sur l'ARM Cortex-M0 et peut monter jusqu'à une fréquence de 48 Mhz.
Série F1 première à utiliser le cœur ARM Cortex-M3, la fréquence du CPU peut aller de 24 à
72 MHz. C'est un des plus gros succès de la marque dans ce domaine.
Série F3 dont le cœur est un ARM Cortex-M4F pouvant monter jusqu'à 72 MHz

Les différents modèles ultra-basse consommation sont


Série L0
Série L1
Série L4
Série L4+
Série L5

Haute Performance (fréquence + élevée, DSP, FPU, accélérateur graphique, supporte


plusieurs jeux d’instructions)

Série F2
Série F4
Série F7
Série H7
Architecture du microcontrôleur STM32F4xx
Conclusion:

Les programmes embarqués sont habituellement écrits en C ou en C++ et le compilateur gère


la plupart des informations spécifiques à l’architecture du microprocesseur.

Dans beaucoup de cas, des routines peuvent être transférées d’un microprocesseur à l’autre,
sans impliquer une connaissance intime des instructions supportées par le microprocesseur ou
sans connaître le nombre de registres disponibles.

La programmation en assembleur de logiciel embarqué est très rare de nos jours. Écrire du
code en assembleur est complexe, laborieux et le code n’est pas portable ! D’un autre côté, de
très bons compilateurs sont habituellement disponibles sur le marché...

La programmation en assembleur devient nécessaire uniquement dans certains cas


particuliers: il faut que le code soit très très rapide ou qu’il respecte des temps très précis, il
faut que le code gère très étroitement le matériel du système (même dans ce cas, la
programmation est souvent en C…),

Cependant, connaître l’architecture des microprocesseurs sur lesquels on travaille est


nécessaire dans beaucoup de circonstances, Par exemple, cela est requis si on optimise des
parties de programme en assembleur, effectue des opérations bas-niveau avec la mémoire, ou
concevoir des systèmes multiprocesseurs, etc.
Connaître l’architecture des microprocesseurs sur lesquels on travaille permet aussi de
mieux programmer en C/C++ et de mieux exploiter les ressources du microprocesseur.

Pour ces raisons, dans tout ce qui va suivre, nous décrirons l’architecture d’un
microcontrôleur donné, la structure de sa mémoire et sa gestion des interruptions et des
timers. Cela donne également un exemple d’architecture de microprocesseur qui
permettra à l’étudiant d’extrapoler pour d’autres architectures.

Vous aimerez peut-être aussi