Pentium 4 : Voyage au cur du CPU | |||||||||||||||||||||||||||||||
By Franck | |||||||||||||||||||||||||||||||
Les unités de calculs flottants
La FPU du Pentium 4 prend en charge les calculs flottants classiques (jeu d'instruction x87) ainsi que les instructions SSE et SSE2. Le Pentium 4 a la réputation d'être très lent en calcul flottant (surtout en x87), nous allons essayer d'en déterminer les raisons en étudiant sa FPU. Trois facteurs ont une influence importante sur les performances en calcul :
Comme on peut le voir sur le tableau de la page précédente, le Pentium 4 possède deux unités de calcul sur les flottants, alors que le Pentium !!! n'en possède qu'une seule. Mais ces deux unités ne sont pas identiques, la première est dédiée aux opérations de déplacements (registre et mémoire) et la seconde est en charge des calculs proprement dits. Ainsi, le Pentium 4 ne possède en réalité qu'une seule unité de calcul sur les flottants, et en ce sens il présente les mêmes capacités de calcul que le Pentium !!!. Regardons maintenant les performances de cette unité de calcul. Les tableaux qui suivent comparent les performances théoriques du Pentium 4 face au Pentium !!! sur les opérations flottantes courantes, ou tout du moins les plus utilisées : déplacement, addition, multiplication et division. Pour chaque type d'opération, deux chiffres sont donnés :
A titre d'exemple, pour un
flot d'instructions possédant toutes une latence de 5 cycles et un débit
de 1 cycle, la première instruction sera terminée en 5 cycles et toutes
les suivantes ne nécessiteront qu'un cycle (en conditions optimales, c'est-à-dire
sans interruption du pipeline).
* Instruction non pipelinée. Nous remarquons que le Pentium
4 possède des temps de latence beaucoup plus élevés que ceux du Pentium
!!!, ce qui s'explique en partie par la profondeur de son pipeline. En
revanche, les débits sont les mêmes, sauf pour la division.
* Instruction non pipelinée. Regardons ces chiffres de plus près :
En résumé, ces chiffres nous révèlent que les performances théoriques de la FPU du Pentium 4 sont assez proches de celles du Pentium !!! : légèrement inférieures sur le jeu d'instruction x87, et légèrement supérieures sur le jeu d'instruction SSE. Le dernier point de comparaison important concerne le temps d'accès des unités de calcul flottant au cache de données L1, d'où elles retirent les données utilisées par les instructions. Cette latence, appelée « load-to-use latency», correspond au nombre de cycles entre la requête de la donnée depuis le L1 et sa disponibilité effective. La FPU du Pentium 4 nécessite
6 cycles pour accéder aux données présentes dans le cache L1, soit deux
fois plus que sur le Pentium !!! qui n'a besoin que de 3 cycles. Cette
latence peut s'avérer très pénalisante dans le cas de l'utilisation d'instructions
x87, pour lesquelles les accès mémoire sont nombreux. Une fois de plus,
les calculs x87 subissent de nombreux états d'attente, ce qui diminue
encore davantage les performances. En conclusion, les calculs x87 sont nettement le gros point faible du Pentium 4. Intel semble en être conscient, car le design original du Pentium 4 prévoyait deux unités complètes de calculs FPU, mais le coût engendré en ressources hardware (nombre de transistors) a nécessité de revoir les prétentions à la baisse. En revanche, la technologie SIMD s'accommode parfaitement de l'architecture à haut débit du Pentium 4, et l'utilisation du jeu d'instruction SSE permet de donner des performances en calcul flottant dignes de ce nom au Pentium 4. Hélas, la majorité des applications actuelles sont écrites en code x87, et la transition vers le SSE est beaucoup plus lente qu'Intel ne l'avait prévu.
|
|||||||||||||||||||||||||||||||
Close |