Le processeur exécute des codes binaires en permanence tant qu'aucun évènement physique vient perturber ce fonctionnement
Au démarrage, il exécute l'instruction à une adresse précise dans la mémoire de programme qui est, généralement, 0. Cette première instruction est une instruction de branchement ou saut à la première adresse du programme qui se fait en chargeant l'adresse dans le compteur de programme (CP).
Cela permet au processeur de se déplacer dans la mémoire de programme pour charger et décoder la première instruction.
Cette instruction est décodée, et en fonction du résultat du décodage, soit d'autres données sont chargées depuis la mémoire pour effectuer le traitement complet ou bien le processeur incrémente la valeur du compteur de programme pour aller chercher la nouvelle instruction en mémoire.
Le processeur exécute ce cycle en permanence.
Microprocesseur
On va analyser le principe de traitement d'une instruction du processeur étape par étape.
Séquenceur
Le compteur de ce séquenceur est différent du compteur de programme.
Microprocesseur
Chargement du compteur de programme dans le registre d'adresse.
Séquenceur
Le compteur est à 0, la sortie 0 du décodeur active le chargement dans le registre
Microprocesseur
L'adresse apparaît en sortie du registre d'adresse, elle est disponible sur le bus d'adresse pour tous les circuits.
Simultanément le compteur d'adresse est augmenté pour passer à l'adresse suivante.
Séquenceur
Le compteur passe à 1, la sortie 1 du décodeur active le transfert sur le bus d'adresse.
Microprocesseur
La mémoire de programme positionne l'instruction sur le bus de données. L'instruction est chargée dans le registre d'instruction
Séquenceur
Le compteur passe à 2, la sortie 2 du décodeur active le chargement de l'instruction.
Microprocesseur
L'instruction est valide en sortie du registre d'instruction et disponible pour le décodeur d'instruction.
Séquenceur
Le compteur passe à 3, la sortie 3 du décodeur active le transfert de l'instruction au décodeur d'instruction.
Microprocesseur
Le cycle est terminé, on passe à l'instruction suivante.
Séquenceur
Le compteur repasse à 0, la sortie 0 du décodeur active le chargement dans le registre
On a 4 cycles d'horloge pour une instruction, ce n'est pas toujours le cas, ceci est un exemple. Ce qui fait que l'on ne mesure pas la rapidité d'un processeur avec la fréquence de l'horloge en MHz, mais avec le nombre d'instructions par seconde en MIPS (Million Instructions Per Seconde).
Elle composée de l'UAL et de registres de données pour stocker les opérandes ainsi que les calculs
Dans un processeur les calculs effectués sont :
Les décalages et rotations permettent d'effectuer des calculs en utilisant les puissances de 2.
Décalage logique
Il permet de réaliser une division par 2 pour des entiers non signés.
Décalage arithmétique
Il permet de réaliser une division par 2 pour des entiers signés en conservant le bit de signe (bit de poids fort).
Rotation
Décalage logique
Il permet de réaliser une division par 2 pour des entiers non signés.
Décalage arithmétique
Il permet de réaliser une division par 2 pour des entiers signés. Ce décalage est identique au décalage logique. Sur certains processeurs, ce décalage et le précédent ne font qu'un.
Rotation
On trouve les fonctionnalités suivantes :
La multiplication peut être réalisée par programme, mais dans certains processeurs, elle est implémentée en matériel (portes logiques)
On applique la multiplication binaire de deux nombres A et B non signés exprimés sur n bits en utilisant la formule : et
Le produit P donne :
Exemple avec n = 4
a3 | a2 | a1 | a0 | ||||
b3 | b2 | b1 | b0 | ||||
a3b0 | a2b0 | a1b0 | a0b0 | ||||
a3b1 | a2b1 | a1b1 | a0b1 | ||||
a3b2 | a2b2 | a1b2 | a0b2 | ||||
a3b3 | a2b3 | a1b3 | a0b3 | ||||
p7 | p6 | p5 | p4 | p3 | p2 | p1 | p0 |
On applique la multiplication binaire de deux nombres A et B signés exprimés sur n bits en utilisant la formule : et
Le produit P donne :
Exemple avec n = 4
-a3 | a2 | a1 | a0 | ||||
-b3 | b2 | b1 | b0 | ||||
-a3b0 | a2b0 | a1b0 | a0b0 | ||||
-a3b1 | a2b1 | a1b1 | a0b1 | ||||
-a3b2 | a2b2 | a1b2 | a0b2 | ||||
a3b3 | -a2b3 | -a1b3 | -a0b3 | ||||
p7 | p6 | p5 | p4 | p3 | p2 | p1 | p0 |
Exemple avec n = 4 en utilisant l'extension de signe
a3 | a2 | a1 | a0 | |||||
b3 | b2 | b1 | b0 | |||||
+ | a3b0 | a3b0 | a3b0 | a3b0 | a3b0 | a2b0 | a1b0 | a0b0 |
+ | a3b1 | a3b1 | a3b1 | a3b1 | a2b1 | a1b1 | a0b1 | |
+ | a3b2 | a3b2 | a3b2 | a2b2 | a1b2 | a0b2 | ||
- | a3b3 | a3b3 | a2b3 | a1b3 | a0b3 | |||
p7 | p6 | p5 | p4 | p3 | p2 | p1 | p0 |
Elle est implémentée en matériel et permet de multiplier des entiers et réels signés et non signés
On peut en savoir plus sur la multiplication avec cette note d'application.
Architecture Von Neumann (1946)
RA : registre d’adresses, RI : registre d’instruction, CP : compteur de programme.
Les mémoires de données et d'instruction se partagent le même bus.
Architecture Harvard (1940)
Les bus des mémoires de données et d'instructions sont physiquement séparées.
Comparaison des deux organisations
L'architecture Harvard utilise moins de cycle d'horloges pour traiter une donnée.
Exemple de traitement :
Dans une architecture Harvard le fait que les bus de programmes et bus de données soient séparés permettent aux processeur de charger l'instruction suivante pendant qu'il traite la donnée de l'instruction courante.
Cycle | Von Neumann | Harvard |
---|---|---|
1 | Recherche instruction A | Recherche instruction A |
2 | Exécution A | Exécution A, Recherche B |
3 | Recherche B | Exécution B, Recherche C |
4 | Exécution B | Exécution C, Recherche D |
5 | Recherche C | Exécution D |
6 | Exécution C | |
7 | Recherche D | |
8 | Exécution D |
CISC (Complex Instruction Set Computer)
Le jeu d'instructions est important car chaque instruction peut accéder aux données en mémoire. Ce qui complexifie le codage des instructions.
Le décodage des instructions dépend du mode d'accès à la mémoire, ce qui fait que chaque instruction nécessite un plus grand nombre de cycles d’horloge.
RISC (Reduced Instruction Set Computer)
Le jeu d'instructions est en nombre réduit. Ce la concerne les méthodes d'accès aux données en mémoire. Dans ce type d'architecture, il existe deux instructions qui permettent d'accéder à la mémoire.
Les autres instructions utilisent uniquement les registres internes. Dans ce type d'architecture, il y a généralement beaucoup de registres internes.
Ce jeu réduit facilite le codage des instructions et améliore la rapidité du processeur. Toutes les instructions utilisent le même nombre de cycles d'horloge.