EX03 - Architecture interne – avec solutions
Exercice 1 : Profils
Citez les trois profils des processeurs ARM.
Décrivez leurs caractéristiques principales.
Solution
Les 3 profils sont:
-
Profil A:
- µP d’application pour systèmes demandant de grandes performances
- Nécessite la mise en oeuvre d’OS riche tel que GNU/Linux
- Jeu d’instruction ARM
- MMU pour virtualisation et protection de la mémoire
- Applications: mobiles, serveurs, équipements de réseau, …
-
Profil R:
- µP à haute performance pour applications embarqués temps réel
- Nécessite la mise en oeuvre de RTOS tel que FreeRTOS
- Jeu d’instruction ARM
- MPU pour la protection de la mémoire
- Points forts: fiabilité, robustesse
- Applications: automobile, avionique, automates programmables, …
-
Profil M:
- µC à basse consommation pour l’IoT
- Programmation “bare metal” ou avec RTOS, tels que MbedOS ou FreeRTOS
- Jeu d’instruction Thumb-2
- MPU pour la protection de la mémoire
- Intègre Flash et RAM
- Applications: IoT, appareils industriels, …
Exercice 2 : Caractéristiques des µP ARMv7
Citez les caractéristiques principales des µP ARMv7
Solution
Les caractéristiques principales des µP ARMv7:
- Registres de taille et format uniforme (32 bits)
- Principe “Load and Store”: opérations arithmétiques et logiques que dans les registres du µP
- Modes d’adressage simples basés sur le contenu des registres uniquement
- Jeu d’instructions orthogonal (registres communs pour les données et les adresses)
- Profils A et R:
- Jeux d’instructions ARM, Thumb et Thumb-2
- Exécution conditionnelle des instructions
- CPI = 1
- Profil M:
- Jeux d’instructions Thumb et Thumb-2
Exercice 3 : Organisation du code
Quels sont les algorithmes de base traités par un processeur ?
Quel est le rôle du compteur ordinal ?
Quel est le rôle du registre de liens ?
Solution
Les algorithmes de base:
- Suite linéaire d’instructions
- Branchements et boucles
- Appel de fonction
Rôle du compteur ordinal (PC - Program Counter):
- Le µP utilise le PC pour charger les instructions de la mémoire centrale dans l’unité de contrôle
- Le PC est auto incrémenté pour pointer sur la prochaine instruction à exécuter
Rôle du registre de liens (LR -Link Register):
- Le LR contient l’adresse de retour, adresse pointant sur l’instruction placée juste après l’instruction d’appel
- Le µP sauve automatique cette adresse de retour lors d’appel de fonction
Exercice 4 : Organisation des données
Quelles sont les différentes catégories de données ?
Quelles sont les caractéristiques principales de ces catégories ?
Comment les processeurs ARM procèdent-ils pour traiter des données ?
Solution
Les données d’un programme informatique peuvent être classées en 4 catégories:
- Constantes:
- Données avec un accès en lecture seulement.
- Sur les SoC ces constantes restent dans la mémoire non volatile (Flash).
- Données globales:
- Données volatiles accessibles par toutes les fonctions d’un module voire même par l’ensemble de l’application.
- Emplacement dans la RAM fixé lors de la génération de l’application.
- Données locales:
- Données volatiles accessibles que par la fonction les déclarant.
- Ces données sont stockées sur la pile (stack).
- Données dynamiques:
- Données volatiles créées à la volée par l’application.
- Ces données sont stockées dans le tas (heap).
Pour traiter une donnée, le µP doit préalablement la lire de la mémoire centrale ou des registres d’un contrôleur de périphériques. Une fois placée dans un de ses registres, le µP peut la traiter. Pour finalement, la restocker en mémoire. C’est le principe de “Load and Store”.
Exercice 5 : Pile d’exécution
Quel est le rôle de la pile d’exécution ?
Quelle est l’organisation d’une pile d’exécution ?
Quel est le rôle du pointeur de pile ?
Solution
La pile d’exécution (stack) est utilisée par les fonctions et sert à stocker:
- Paramètres d’appel
- Sauvegarde des registres du µP (spécialement l’adresse de retour)
- Données locales
- Paramètres d’appel des sous-fonctions
La pile fonctionne sur principe LILO (First In, Last Out).
Le pointeur de pile (SP - Stack Pointer) est un registre du µP. Il pointe sur le sommet de pile, sur la dernière donnée poussée sur la pile. Il permet de gérer la pile et d’accéder les données locales.
Exercice 6 : Registres du processeur
Citez la liste des registres des processeurs ARM ?
Quelles différences existe-t-il entre les profils A, R et M ?
Quelle différence existe-t-il pour l’accès à ces registres entre le jeu d’instructions ARM et Thumb ?
Quelle information contient le registre APSR ?
Solution
Les µP ARM disposent de 13 registres à usage général (R0 à R12), 3 registres à usage dédié (R13/SP, R14/LR et R15/PC) ainsi que d’un registre d’état du programme (APSR).
Les 3 profils A, R et M ont les mêmes registres de base. Par contre, il existe certaines variantes avec le registre PSR en mode privilégié.
Thumb, du fait son codage des instructions sur 16 bits, ne dispose sur les registres à usage général que des des 8 premiers (R0 à R7). Le reste est identique.
Le registre APSR contient les fanions de condition (Condition Flags). Ces fanions sont principalement mis à jour lors d’opérations arithmétiques et logiques. Ils servent aux branchements conditionnels.
Exercice 7 :Modes de fonctionnement
Quels sont les modes de fonctionnement des CPU des profils A et M ?
Quelle est leur utilité ?
Solution
Les µP ARM ont deux modes de fonctionnement principaux:
- Système:
- Ce mode privilégié donne accès à toutes les ressources du µP.
- Il est généralement utilisé par les OS pour exécuter le code du noyau.
- Pour les µP du profil A, il se décline en:
- FIQ et IRQ pour le traitement des interruptions
- SVC, mode par défaut au boot du µP, utilisé par le noyau pour les appels système
- ABT pour le traitement des exceptions
- UND pour le traitement des instructions non définies
- SYS pour offrir un accès aux registres du mode “Application”
- HYP pour les hyperviseurs (virtualisation)
- MON pour les µP avec l’extension de sécurité (Trust Zone)
- Pour les µC du profil M, il se décline en:
- Thread pour le traitement des codes d’applications (threads)
- Handler pour le traitement des interruptions et événements
- Application:
- Ce mode non privilégié ne donne accès qu’aux ressources fournies par l’OS.
- Il est utilisé pour exécuter les codes d’application.
Exercice 8 : Performances des µP
Quels mécanismes sont mis en place par les concepteurs de µP et µC pour améliorer leurs performances ?
Solution
Plusieurs éléments permettent d’améliorer les performances d’un µP et µC:
- La fréquence de l’horloge système
- Les mémoires cache placées entre la mémoire centrale et le CPU
- La prédiction de branchement (Branch Prediction)
- Le pipelining
Exercice 9 : Pipeline
Quel est le principe de fonctionnement d’un pipeline ?
Comment peut-on calculer le temps d’exécution d’un programme ?
Solution
Pour traiter l’information, les µP et µC utilisent plusieurs unités en cascade. Ces unités (Fetch Unit, Decode Unit et Execute Unit) sont spécialisées pour effectuer une tâche bien précise. Le pipelining consiste à les utiliser toutes en même temps afin de pouvoir traiter plusieurs instructions en parallèle et réduire ainsi le facteur CPI vers 1.
Temps d’exécution d’un programme : Time = Instructions * CPI * CP
- Instructions: nombre d’instructions à exécuter par le programme
- CPI: Clock cycles Per Instruction
- CP: Clock Period
Exercice 10 : Aléas du pipeline
La mise en oeuvre d’un pipeline se confronte à quelques problèmes, des aléas.
Citez et décrivez succinctement les 3 classes d’aléas ainsi que le moyen d’y pallier.
Solution
Les 3 classes et les moyens d’y pallier sont:
- Aléas structurels (Structural Hazards):
- Ajout de bulles (stall)
- Mise en place de l’architecture Harvard
- Aléas de données (Data Hazards):
- Ajout de bulles (stall)
- Ajout de logique supplémentaire pour mettre à disposition le résultat d’un étage à l’étage précédent sans passer par les registres
- Aléas de contrôle (Control Hazards):
- Exécution conditionnelle des instructions
- Prédiction de branches