Les processeurs sont l’une des pièces maîtresse d’un ordinateur, ce sont des puces résultant de l’assemblage de wafers (traduisible par tranche) comprenant des semi-conducteurs tel que le gallium, le silicium etc.

Le processeur va concrètement charger des instructions stockées dans la mémoire de l’ordinateur et va les exécuter, il existe 3 familles d’instructions:
- Les instructions d’opération: Ces instructions sont des opérations qui vont être exécutées sur l’ALU (addition soustraction etc…)
- Les instructions de mouvement de données: Ces instructions permettent au processeur d’écrire dans la mémoire ou de lire ce qu’il y a dedans
- Les instruction de contrôle: ces instructions vont permettre de changer le déroulé du programme (par exemple des boucles des conditions etc)

Anatomie d’une instruction
Les instructions sont des entiers de 32 ou 64 bits qui une fois découpés par blocs de bits décrivent une opération et ses paramètres.
NOTE
Le format et la taille des instructions dépendant de l’ISA tous les exemples données seront du MIPS
Prenons par exemple une instruction addition: le code en assembleur donnerait ceci:
add $s0, $s1, $s2On a un mnémonique add suivie de 3 opérande, la première est une opérande de destination (le registre ou sera stockée le résultat) et les deux derniers sont les opérandes de source (les registres contenant les valeurs à additionner)
Cette instruction se traduirait en entier sur 32 bits par 0x02328020, en découpant cet entier avec le format MIPS on obtient cette instruction en mémoire

IMPORTANT
Là on a ordonnancement d’un instruction
add, à noter que cette dernière va changer en fonction du champop, qui identifie l’opération à exécuter
Le datapath
Un processeur contient un ou plusieurs datapath, il s’agit de l’endroit ou la donnée est manipulée par les instructions.
Les registres
Les registres sont des boîtes dans lesquelles la donnée est stockée par le processeur pour ses calculs, c’est typiquement dedans qu’on va mettre les résultats d’additions comme on l’a vu plus tôt
l’ALU
L’Arithmetic Logic Unit est la brique qui se charge de l’exécution des instruction, elle prend en entrée le code d’opération et les registres que cible l’instruction

L’exécution d’instructions
Un processeur ne peut pas exécuter des instructions instantanément, il est séquencé par une horloge (appelé très souvent clock) qui émet périodiquement des cycles, exprimés en GHz. Une instruction s’exécute donc sur plusieurs cycles, 6 grandes phases vont se dérouler pendant ces cycles pour exécuter une instruction:
- Fetch: Récupération de l’instruction depuis la mémoire et stockage de cette dernière dans un registre (l’Instruction Register)
- Decode: Le processeur détermine le code d’opération et détermine donc les arguments qui suivent
- Evaluate Address: Récupère les adresses en mémoire si l’instruction en a besoin
- Fetch Operands: Récupère les opérandes sources depuis la mémoire (par exemple les nombres à additionner)
- Execute: L’ALU reçoit l’instruction et les opérandes puis retourne un résultat
- Storage: Écriture du résultat dans un registre
INFO
À noter que la phase
4. Fetch Operandsse fait en même temps que la phase2. Decodesur les micro-architectures récentes