Vous êtes sur la page 1sur 36

Architecture des processeurs

C2 : Définitions et concepts clefs


Yann DOUZE
Professeur Agrégé / Senior lecturer
Linkedin : https://www.linkedin.com/in/yanndouze/
Twitter : https://twitter.com/yann_douze
Processeur / CPU

• Partie d’un système informatique qui exécute les instructions traitant des données
• Effectue des opérations arithmétique (+,-, *, /) , logique (and, or , xor, nand, nor,
décalage) et de contrôle (lecture / écriture en mémoire, branchements )
Architecture d’un processeur
Cœur du processeur : ALU ou UAL
— ALU : Arithmethic and Logic Unit
— UAL : Unité Arithmétique et Logique
Caractéristiques de l’ALU
— Fonctions de base : Exécute les opérations arithmétiques
et logiques.
— Opérations arithmétiques : Addition, soustraction,
multiplication, division.
— Opérations logiques : ET, OU, NON, XOR, décalages, etc..
— Registres d'entrée : Reçoit les opérandes.
— Registre de sortie : Stocke le résultat.
— Indicateurs de statut : Mise à jour selon les résultats
(retenue, zéro, signe, overflow).
— Rôle dans le processeur : Élément clé pour l'exécution des
instructions.
Architecture Von Neuman

RAM
Memory
Circuit FLASH, ROM
(données)
horloge (Instructions)

Décodeur
CPU Bus adresses
Bus Données
Registres

Bus contrôle
Contrôle
d'alimentation, Entrées/Sorties (I/Os)
modes d'opération, USB/UART TIMERS ADC DAC GPIO
watchdog et reset
Architecture Harvard

RAM
FLASH, ROM Memory
(Instructions) Circuit (données)
horloge

Décodeur
Décodeur
CPU

Registres

Contrôle
d'alimentation,
modes d'opération, Entrées/Sorties (I/Os)
watchdog et reset USB/UART TIMERS ADC DAC GPIO

Architecture Harvard:
Bus séparés : Les instructions et données
Lecture simultanément : instructions et données
Accélération : Traitement de signal, MAC (Multiply Accumulate)
Jeu d’instructions
ISA : Instruction Set Architecture
Caractéristiques du Jeu d'Instructions (ISA)
— Instructions de base : Ensemble des opérations que le
processeur peut exécuter.
— Types de données : Types de données que le processeur
peut gérer (nombres entiers, nombres flottant, etc…)
— Modèle de mémoire : Spécifie l'interaction processeur-
mémoire.
— Registres : Nombre et type de registres pour le stockage
temporaire.
— Modes d'adressage : Méthodes d'accès à la mémoire.
— Instructions de contrôle : Gestion du flux d'exécution
(sauts, boucles).
— Codage des instructions : Format binaire des instructions.
— Exceptions et interruptions : Gestion des erreurs et des
interruptions.
Classification des Instructions d'un ISA
1. Instructions Arithmétiques : addition, soustraction,
multiplication, division
2. Instructions Logiques : AND, OR, NOT, XOR, etc
3. Instructions de Chargement/Stockage : Transfert de
données entre la mémoire et les registres.
4. Instructions de Contrôle : Modifient le flux de contrôle
(sauts, boucles, appels de fonctions).
5. Instructions de Comparaison : Comparaisons de valeurs
pour déterminer l'égalité, la supériorité ou l'infériorité.
6. Instructions d'Entrée/Sortie : transfert de données entre
le processeur et les périphériques d'entrée/sortie.
7. Instructions Système : Gèrent des opérations de bas
niveau liées au système d'exploitation et au matériel.
Exemple ISA du MIPS
Types d'Instructions MIPS
— Instructions de type R : Utilisées pour les opérations arithmétiques et
logiques.
— Exemples :
— add $s1, $s2, $s3 (Addition),
— sub $s1, $s2, $s3 (Soustraction),
— and $s1, $s2, $s3 (Opération logique ET)
— Instructions de type I : Utilisées pour les opérations arithmétiques, le
chargement et le stockage de données, et les sauts conditionnels.
— Exemples :
— addi $s1, $s2, 10 (Addition immédiate),
— lw $s1, 20($s2) (Chargement de mots),
— beq $s1, $s2, label (Saut conditionnel)
— Instructions de type J : Utilisées pour les sauts inconditionnels et les
appels de fonction.
— Exemples :
— j label (Saut inconditionnel),
— jal label (Appel de fonction)
— Note : Les '$s1', '$s2', '$s3' représentent les registres, et 'label' est une
adresse d'instruction ou une étiquette.
Les microprocesseurs standards
qPerformances
— Temps par tâche = I x C x T
— I : nombre d’instructions par tâche
— C : nombre de cycles machine par instructions (ou CPI)
— T : temps d’un cycle machine (dépend de la technologie et de
l’efficacité de l’ALU)
q 2 types d’architectures
— CISC (Complex Instruction Set Computer) : I faible, C grand
— RISC (Reduce Instruction Set Computer) : I élevé, C faible
RISC vs CISC
— RISC
— Ensemble d’instructions réduit, simple et uniforme
— Temps d’exécution de chaque instruction uniforme (CPI = 1)
— Load /store sont les seules instructions qui permettent d’accéder à la mémoire.
— Exemples de processeur RISC : ARM, MIPS, RISC-V
— CISC
— Grand nombre d’instructions qui peuvent être complexes
— Les instructions peuvent nécessiter plus d’un cycle machine (CPI > 1)
— Les instructions peuvent faire une opération arithmétique et en même temps
accéder à la mémoire.
— Exemple de processeur CISC : Intel x86

Différence entre RISC et CISC s’est estompé au fil du temps.


Les processeurs modernes, bien que basés sur une architecture RISC ou CISC, ont tendance
à incorporer des caractéristiques des deux.
Par exemple, les processeurs x86 modernes (CISC) utilisent une technique appelée "micro-
opérations", où les instructions CISC sont décomposées en sous-instructions plus simples à
l'intérieur du processeur, rendant leur fonctionnement plus proche de l'architecture RISC.
Exemple assembleur RISC / CISC
— Exemple d’une tache simple pour voir la différence entre les
architectures RISC et CISC
— On a 3 valeurs dans les cases mémoires M1, M2 et M3
— On veux faire la multiplication de ces 3 valeurs et ranger le
résultat dans la case mémoire RESULT

[RESULT] = [M1] x [M2] x [M3]


Exemple RISC, processeur ARM7TDMI
.global _start
.section .data
M1: .word 5 ; Première valeur
M2: .word 7 ; Deuxième valeur
M3: .word 9 ; Troisième valeur
Result: .word 0 ; Variable pour stocker le résultat
.section .text
_start:
ldr r0, =M1 ; Charger l'adresse de M1 dans r0
ldr r1, [r0] ; Charger la valeur à l'adresse de M1 dans r1
ldr r0, =M2 ; Charger l'adresse de M2 dans r0
ldr r2, [r0] ; Charger la valeur à l'adresse de M2 dans r2
mul r1, r1, r2 ; Multiplier les valeurs dans r1 et r2, stocker dans r1
ldr r0, =M3 ; Charger l'adresse de M3 dans r0
ldr r2, [r0] ; Charger la valeur à l'adresse de M3 dans r2
mul r1, r1, r2 ; Multiplier les valeurs dans r1 et r2, stocker dans r1
ldr r0, =Result ; Charger l'adresse de Result dans r0
str r1, [r0] ; Stocker le résultat de la multiplication à l'adresse de Result
Exemple CISC, processeur x86
. section .data
M1 db 5 ; Première valeur
M2 db 7 ; Deuxième valeur
M3 db 9 ; Troisième valeur
Result db 0 ; Variable pour stocker le résultat

section .text
global _start

_start:
movzx eax, byte [M1] ; Charger la valeur de M1 dans eax
imul eax, byte [M2] ; Multiplier la valeur dans eax par la valeur de M2
imul eax, byte [M3] ; Multiplier la valeur dans eax par la valeur de M3
mov [Result], eax ; Stocker le résultat de la multiplication dans Result

; Terminer le programme
Exemple RISC, processeur RISC-V
.data
M1: .word 5 ; Première valeur
M2: .word 7 ; Deuxième valeur
M3: .word 9 ; Troisième valeur
Result: .word 0 ; Variable pour stocker le résultat
.text
.globl _start
_start:
la a0, M1 ; Charger l'adresse de M1 dans a0
lw a1, 0(a0) ; Charger la valeur à l'adresse de M1 dans a1
la a0, M2 ; Charger l'adresse de M2 dans a0
lw a2, 0(a0) ; Charger la valeur à l'adresse de M2 dans a2
mul a1, a1, a2 ; Multiplier les valeurs dans a1 et a2, stocker dans a1
la a0, M3 ; Charger l'adresse de M3 dans a0
lw a2, 0(a0) ; Charger la valeur à l'adresse de M3 dans a2
mul a1, a1, a2 ; Multiplier les valeurs dans a1 et a2, stocker dans a1
la a0, Result ; Charger l'adresse de Result dans a0
sw a1, 0(a0) ; Stocker le résultat de la multiplication à l'adresse de Result
CISC RISC

Compiler
Compiler

Chip (Hardware)
Chip (Hardware)
Around 1990 (last century)

CISC RISC

Solaris
UNIX
AIX
UX
Windows

Others
SUN
IBM
HP
x86 (Intel)
Today

CISC RISC

PC : Windows / Linux Apple / IoS / ANDROID


/ Embedded System

x86 (Intel / AMD) ARM (RISC-V ???)


Avantage du RSIC : Pipeline
— CPI = 1 donc possibilité de faire du pipeline
— Pipeline :
— Diviser une instruction en plusieurs sous tache
— Exécuter les différentes sous tache en parallèle
— Exécute 1 instruction par cycle machine
— Permet d’augmenter la fréquence du processeur (les sous-tâche
on un temps de propagation plus faible que l’instruction
complète)
Pipeline dans un microprocesseur
— Exemple d’un pipeline à 5 étages : (Classic RISC pipeline)
— IF (Instruction Fetch) charge l'instruction à exécuter dans le pipeline.
— ID (Instruction Decode) décode l'instruction et adresse les registres.
— EX (Execute) exécute l'instruction
— MEM (Memory), dénote un transfert depuis un registre vers la
mémoire (STORE) ou de la mémoire vers un registre (LOAD)
— WB (Write Back) stocke le résultat dans un registre.
Pipeline dans un microprocesseur
— Séquençage des instructions dans un processeur sans pipeline. Il
faut 15 cycles pour exécuter 3 instructions.

— Séquençage des instructions dans un processeur doté d'un pipeline


à 5 étages. Il faut 9 cycles pour exécuter 5 instructions. À t = 5,
tous les étages du pipeline sont sollicités, et les 5 opérations ont
lieu en même temps.
Architecture superscalaire
— Séquençage des instructions dans un processeur superscalaire
de degré 2. Il faut 9 cycles pour exécuter 10 instructions.
A t = 5, toutes les unités du processeurs sont sollicitées.
Les microcontrôleurs…
Les microcontrôleurs
q Caractéristiques
— Architecture simple, jeux d’instructions réduit
— Basé sur des architectures de processeurs connus
— Années 1980: 68HC11 (motorolla), 8051 (Intel),
— Années 1990 /2000 : PIC (microchip), AVR (Atmel),
— Années 2010 / 2020 : ARM Cortex M
— Futur : ARM ou RISC-V ???
Les DSP : Digital Signal Processor
— Caractéristiques
— Architecture RISC complexe, super
scalaire (plusieurs unités de traitements),
pipeline
— Architecture Harvard et Super Harvard
(nombreux bancs mémoire)
— Instructions complexes mais jeux
d’instructions réduit
— Exemple : Analog device, Texas Instrument
(C6000,C5000, C2000), Qualcomm (DSP
pour la téléphonie mobile),
— Avantages
— Spécialisés pour le traitement numérique
du signal (filtrage, FFT, etc..)
— Peuvent mélanger calcul flottant et virgule
fixe
— Inconvénients
— Circuit spécifique
— Consommation d’énergie élevée
Les GPU
Les GPU (Graphical Processing Unit)
— Initialement conçu pour accélérer les taches liées au rendu graphique
(cartes graphiques)
— Aujourd’hui largement utilisé pour exécuter les inférences de réseau de
neurones (Deep Learning / IA)
— Caractéristiques :
— Massivement parallèle : centaines ou milliers de cœurs de calcul
(processeur) conçus pour travailler en parallèle.
— Haute bande passante de mémoire : plusieurs accès mémoires en
parallèle.
— Prise en charge des opérations en virgule flottante : important pour
le rendu graphique et certaines formes de calcul scientifique.
— Pipeline de rendu graphique : circuits matériels dédias au rendus
graphique : traçage de texture, anticrénelage et l’éclairage
— Prise en charge du calcul général GPU (GPGPU) : calcul scientifique,
apprentissage profond et traitement d’image.
— Langage de programmation spécialisé : CUDA (pour les GPU Nvidia)
ou OpenCL (standard ouvert)
Les NPU, TPU , DPU
Les NPU (Neural Processing Unit)
— Processeurs spécialisés pour accélérer les taches liées à l’apprentissage
profond (Deep Learning)
— TPU (Tensor Processing Unit) : Processeurs spécialisés développés par
Google, dédié pour exécuter les algorithme écrit en TensorFlow
(langage conçu par Google pour le Deep Learning)
— Caractéristiques :
— Architecture dédiée à l’apprentissage automatique : multiplication
de matrice, convolutions, non linéarités et opérations de normalisations.
— Calcul à haute vitesse : arithmétique à faible précision, généralement
suffisant pour le Deep Learning
— Massivement parallèle : capable d’exécuter un grand nombre de tache en
parallèle. Comme les GPU.
— Grande bande passante de mémoire : plusieurs accès mémoires
rapides.
— Efficacité énergétique: conçu pour être efficace en énergie
— Intégration avec les frameworks d’apprentissagges profonds:
TensorFlow, PyTorchet ONNX. Permet d’exécuter sans trop d’optimisations
le code de ces framework.
La mémoire cache
Caractéristiques de la mémoire cache
— Haute Vitesse : Accès rapide aux données et instructions fréquemment
utilisées.
— Proximité au CPU : Située sur ou à proximité du processeur pour un
accès rapide.
— Coût élevé : Plus coûteuse par octet que la RAM ou le stockage sur
disque.
— Petite taille : Limitée en raison du coût élevé, mesurée en KB ou MB.
— Organisée en niveaux : Plusieurs niveaux de cache (L1, L2, L3), chaque
niveau étant plus grand et plus lent que le précédent.
— Techniques de gestion : Utilise des politiques d'éviction, de
remplacement de bloc et de cohérence pour maximiser l'efficacité.
— Rôle essentiel : Réduit les délais de mémoire en gardant les données
fréquemment utilisées à proximité du processeur.
Hiérarchie mémoire

Vous aimerez peut-être aussi