Quand on veut augmenter le nombre d’IPC (Instructions par Cycle) d’un processeur on peut soit Accélérer l’accès à la mémoire, soit se débrouiller pour que l’exécution des instructions en elle même soit parallélisée.

L’exécution superscalaire

Quand un processeur va exécuter une instruction il va passer par 6 phases

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

Lien vers l'original
Si on devait poser des instructions exécutées séquentiellement sur une timeline on pourrait se rendre compte que l’on perd temps car chaque phase n’est pas instantanée. Pour ce faire nous pouvons avoir N [[Les processeurs#le-datapath|datapath]] cd qui nous permet de paralléliser les instructions en lançant le prochain cycle d’exécution dès qu’on en démarre un.

ATTENTION

Un Processeur superscalaire n’est pas la même chose qu’un processeur multicœur, un multicœur contient plusieurs puces qui peuvent lancer des thread superscalaires

les instruction vectorisées

QUOTE

Vector computations are computations where instead of one operation, multiple operations of the same type are performed on several pieces of data at once when a single processor instruction is executed. This principle is also known as SIMD (Single Instruction, Multiple Data)

- https://videocompressionguru.medium.com/vector-instructions-part-i-343723b103f

super scalaire

Plus d’informations sur la page SIMD