Pentium 4 : Voyage au cœur du CPU
By Franck
Sommaire:

 

Les unités de calculs entiers

 


Si Intel n'a pas gâté le Pentium 4 pour les unités de calcul flottant, il n'en est pas de même pour les unités de calcul entier. Il possède en effet trois unités de traitement (ALU), dont deux fonctionnant en double vitesse.

Ces dernières ne prennent en charge que les instructions non complexes, (un instruction est dite complexe si sa longueur est supérieure à 7 octets et si elle se décode en plus de 4 µops). En pratique, les ALUs double vitesse sont capables de traiter les instructions de déplacement (MOV), d'addition (ADD, SUB), et les opérations logiques (AND, OR), comme le montre le tableau ci-dessous. Selon Intel, ce type d'instructions représente en moyenne 70% des instructions entières couramment utilisées.

Opération entière x86 Pentium !!! Pentium 4
Addition (ADD) Latence : 1 cycle
Débit : 1 cycle
Latence : 0,5 cycle
Débit : 0,5 cycle
Multiplication (IMUL) Latence : 4 cycles
Débit : 1 cycle
Latence : 15 cycles
Débit : 5 cycles
Division (IDIV)
(32 bits)
Latence : 58 cycles
Débit : 58 cycles *
Latence : 70 cycles
Débit : 23 cycles
Décalage (SHIFT)
Latence : 1 cycle
Débit : 1 cycle
Latence : 4 cycles
Débit : 1 cycle
Déplcaement (MOV) Latence : 1 cycle
Débit : 1 cycle
Latence : 0,5 cycle
Débit : 0,5 cycle

* Instruction non pipelinée.

La troisième ALU, dite « Low Latency ALU », prend en charge les instructions complexes : multiplication, division, et étonnement les opérations de décalage (SHIFT). Etonnement car les instructions de décalage sont très couramment utilisées, et elles ont d'ailleurs fait l'objet de soins particuliers sur tous les prédécesseurs du Pentium 4. La conséquence immédiate est que de nombreux compilateurs utilisent les décalages à des fins d'optimisations, dont l'effet risque au contraire d'être pénalisant sur le Pentium 4.

Dernière condition pour obtenir d'excellentes performances en calcul entier, la latence du cache de données L1 depuis les ALU n'est que de 2 cycles, et il est capable d'effectuer une lecture et une écriture par cycle. Ces temps sont exceptionnels, mais malheureusement ils ne suffisent encore pas à fournir le débit nécessaire aux ALU double vitesse.
En effet, dès lors qu'une instruction utilise une opérande mémoire, le L1 ne pourra lui fournir qu'une donnée par cycle en débit, ramenant la latence de ½ à 1 cycle. Ainsi, le mode double vitesse n'est efficace que sur les instructions opérant sur les registres, qui ne représentent certainement pas 70% des instructions entières.

 

 

 

Suite ( Le Nouveau Jeux d'instructions )

Close