Aller au contenu

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”.

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.

Pile

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