Cours 8 - Architecture et Instructions Cortex M3/M4
1. Architecture Cortex M3/M4
Pipeline à 3 étages :
• Le pipeline est une technique permettant d'exécuter plusieurs instructions simultanément en
les « chevauchant ».
• Les étapes :
1. Fetch (chargement) : L'instruction est récupérée depuis la mémoire d'instructions.
2. Decode (décodage) : Le processeur identifie le type d'opération à réaliser et les
registres impliqués.
3. Execute (exécution) : L'opération est réalisée, et le résultat est éventuellement écrit
dans un registre ou en mémoire.
• Avantages :
o Augmente le débit d'instructions, car plusieurs étapes peuvent être exécutées
simultanément sur différentes instructions.
o Réduit le temps global d'exécution des programmes.
• Problèmes courants :
o Les « bulles de pipeline », où certaines étapes doivent attendre les résultats d'une
instruction précédente.
o Instructions de saut (« branch ») qui peuvent interrompre le flux du pipeline.
Jeu d'instructions Thumb-2 :
• Qu'est-ce que Thumb-2 ?
o Une extension du jeu d'instructions ARM qui combine des instructions de 16 bits
(compactes) et 32 bits (puissantes).
• Avantages de Thumb-2 :
o Réduction de la densité du code machine jusqu'à 26 %.
o Augmentation des performances globales d'environ 25 %.
• Exemple :
o Une addition simple peut utiliser une instruction 16 bits, alors qu'une multiplication
complexe utilise une instruction 32 bits.
• Utilisation typique :
o Thumb-2 est idéal pour les systèmes embarqués où la mémoire est limitée et la
performance critique.
Architecture Harvard :
• Description :
o Séparation des chemins pour les instructions et les données.
o Permet un accès simultané aux deux types d'informations.
• Avantages :
o Améliore les performances, car le processeur n'a pas besoin d'attendre qu'une
instruction soit chargée pour accéder aux données.
2. Les registres
Types de registres :
• Réguliers (également appelés R0-R12) : Utilisés pour les calculs et le stockage temporaire.
• R13 (égal à SP - Stack Pointer) :
o Pointeur de pile.
o Indique la dernière position en mémoire occupée par la pile.
• R14 (égal à LR - Link Register) :
o Sauvegarde l'adresse de retour lors des appels de sous-programmes.
• R15 (égal à PC - Program Counter) :
o Contient l'adresse de la prochaine instruction à exécuter.
• xPSR (Program Status Register) :
o Contient des drapeaux d'état :
▪ : Résultat négatif.
▪ : Résultat égal à zéro.
▪ : Retenue (carry).
▪ : Overflow (dépassement).
▪ : Indique que le mode Thumb est activé.
Gestion de la pile (« Stack ») :
• Structure descendante :
o La pile s'étend vers les adresses mémoire plus basses.
o Exemple d'instruction :
▪ PUSH {R0, R1} : Sauvegarde les registres R0 et R1 dans la pile et décrémente .
▪ POP {R0, R1} : Restaure les valeurs de R0 et R1 depuis la pile et incrémente .
Utilisation du registre LR :
• Lors d'un appel de sous-programme (instruction BL - Branch and Link), le registre sauvegarde
l'adresse de retour.
• Exemple :
o Instruction BL SousProgramme : Sauvegarde l'adresse suivante dans avant d'aller
exécuter le sous-programme.
3. Plan mémoire et gestion des accès
Plan mémoire du STM32F405 :
• Flash :
o Stocke le programme.
o Lecture optimisée via des mots de 128 bits.
• SRAM :
o Utilisée pour les données temporaires.
o Temps d'accès adapté à la fréquence du processeur.
Accélérateur ART (Adaptive Real-Time Accelerator) :
• Permet de lire plusieurs instructions en un seul accès.
• Utilisation d'un cache intégré pour réduire les temps d'attente.
Interface multi-bus :
• Plusieurs bus indépendants connectent le processeur aux périphériques et à la mémoire.
• Avantages :
o Réduction des conflits d'accès.
o Amélioration de la bande passante.
Cours 9 - Interruptions et DMA
1. Interruptions
Principe des interruptions :
• Une interruption est un signal qui suspend temporairement l'exécution du programme
principal pour réaliser une tâche prioritaire.
• Exemple :
o Lors de la réception d'un octet via USART, une interruption est déclenchée pour lire
les données.
Polling vs interruptions :
• Polling :
o Le processeur attend activement qu'un événement se produise (par exemple, un bit
RXNE activé).
o Inconvénient : Consomme du temps processeur, inefficace pour les systèmes temps
réel.
• Interruptions :
o Déclenchées automatiquement par l'événement.
o Avantages :
▪ Libère le processeur pour d'autres tâches.
▪ Permet une meilleure réactivité.
Gestion avec NVIC (Nested Vectored Interrupt Controller) :
• Jusqu'à 240 sources d'interruptions.
• Priorités configurables :
o : Détermine si une interruption peut en interrompre une autre.
o : Résout les conflits entre interruptions de même priorité.
2. DMA (Direct Memory Access)
Fonctionnement :
• Permet le transfert direct des données entre la mémoire et les périphériques, sans
intervention du processeur.
• Exemple : Transfert d'un bloc de données reçu via USART dans un buffer mémoire.
Caractéristiques :
• Le STM32F405 dispose de 2 contrôleurs DMA avec plusieurs canaux.
• Modes de transfert :
o Circulaire : Une fois le buffer rempli, il recommence depuis le début.
o Double buffer : Alternance entre deux buffers pour éviter les pertes de données.
Avantages :
• Réduit la charge processeur en évitant des interruptions fréquentes.
• Augmente la vitesse des transferts pour des applications à haut débit (SPI, ADC).
3. Applications pratiques
Exemple de réception d'un message de 150 octets via USART à 19200 bauds :
• Sans DMA (Polling) :
o Le processeur perd ~76 ms à attendre les données.
• Avec interruptions :
o Chaque octet reçu déclenche une interruption, réduisant la latence à ~17 ms.
• Avec DMA :
o Une seule interruption est déclenchée à la fin du transfert, minimisant la charge
processeur.
Combinaison interruptions + DMA :
• Le DMA gère les transferts.
• Une interruption signale la fin du transfert pour activer le traitement.