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.

wafer vu de près

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)

L'ordinateur de base

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, $s2

On 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 champ op, 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

Schéma d'un ALU

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:

  1. Fetch: Récupération de l’instruction depuis la mémoire et stockage de cette dernière dans un registre (l’Instruction Register)
  2. Decode: Le processeur détermine le code d’opération et détermine donc les arguments qui suivent
  3. Evaluate Address: Récupère les adresses en mémoire si l’instruction en a besoin
  4. Fetch Operands: Récupère les opérandes sources depuis la mémoire (par exemple les nombres à additionner)
  5. Execute: L’ALU reçoit l’instruction et les opérandes puis retourne un résultat
  6. Storage: Écriture du résultat dans un registre

INFO

À noter que la phase 4. Fetch Operands se fait en même temps que la phase 2. Decode sur les micro-architectures récentes