Le parallélisme au niveau des instructions (ILP) est une mesure du nombre d'opérations exécutables simultanément dans un système. Le pipelining des instructions, l'exécution hors ordre, l'exécution spéculative et les architectures superscalaires permettent un parallélisme de niveau d'instruction élevé dans un seul cœur. Multiple processors and multithreading enable high instruction-level parallelism across multiple cores in a single system.
As an example, consider this code:
- s = a + b;
- t = c + d;
- u = s + t;
Here, the first two lines can be executed entirely in parallel. Il n'y a aucune dépendance de données partagées entre la première ligne et la deuxième ligne. Ainsi, un processeur peut être en mesure d'exécuter les instructions en parallèle. La troisième ligne, en revanche, dépend des deux premières. Elle ne peut pas être exécutée avant que les deux premières ne soient terminées, car les stockages dans s et t sont nécessaires. Si chaque ligne prenait un cycle d'horloge et que nous étions en mesure d'exécuter les deux premières lignes en parallèle, nous pourrions dire que nous avions un rapport ILP de 3/2.
Atteindre un rapport ILP élevé nécessite à la fois des fonctionnalités du processeur et des optimisations du compilateur.