I - Pipeline/Cache
Partons du commencement, lorsqu'un processeur du type de ceux dont nous allons parler veut exécuter une instruction (une tache comme une multiplication par exemple), celui-ci va diviser l'opération en plusieurs étapes appelées niveaux, et formant ainsi ce que l'on peut appeler un Pipeline.
Chaque étape est faite l'une après l'autre, la suivante ayant absolument besoin de la précédente pour être faite. Si, pour une raison quelconque une de ces étapes venaient à être erronée ou dans l'incapacité d'être faite, il faudra recommencer ces étapes depuis le début, d'où une énorme perte de temps...
Pour pouvoir faire ces étapes, notre processeur a besoin de connaître plusieurs choses, il a besoin d'informations pour pouvoir travailler. Plusieurs endroits lui sont proposés :
- Les registres, minuscules mais ultra rapides, c'est là que doivent se trouver les informations dont le processeur a besoin.
- La mémoire Cache, d'une taille relativement petite et d'une vitesse très élevée. C'est ici que le processeur va chercher en priorité ses informations lorsqu'elle ne sont pas dans les Registres.
- La mémoire centrale, la RAM. D'une capacité conséquente, mais très lente (par rapport au processeur), c&'est le dernier endroit où va aller chercher le processeur, et ce seulement si les deux endroits cités ci-dessus ne lui ont pas donné satisfaction.
Si le processeur ne trouve pas ce qu'il veut dans les registres ou dans le cache, celui-ci va devoir recommencer toutes les étapes du pipeline depuis le début, il va devoir également aller chercher dans la mémoire centrale, ce qui lui fait perdre un temps non négligeable...
Partant de cela, une parade a été trouve au problème : Essayer de « prédire » à l'avance quelles informations vont êtres utilisés par l'étape qui suit celle que l'on exécute en ce moment. Nos fabricants de processeur ont optimisé ce procédé, tant et si bien qu'à l'heure actuel, il y a entre 95 et 98% de chance que le processeur ait accès aux informations dont il a besoin au bon moment.
Une deuxième solution été trouvée pour encore augmenter les chances de réussite : augmenter la taille du cache. En effet plus il y a de place pour stocker, plus on a de chance de trouver ce que l'on veut. Nous pouvons cependant nuancer ce fait car la prédiction de branchement est à notre époque tellement « parfaite » que le cache ne joue plus le rôle qu'il avait, il y a quelques années. Multiplier par deux la taille du cache ne fait gagner même pas 1% de chance supplémentaire...
Nous pouvons donc grâce à ses caractéristiques évaluer de façon globale la puissance d'un processeur. Une façon simple de calculer la puissance peut s'écrire de la façon suivante :
I=(P^L)*F
- I est un nombre de point représentant la puissance du processeur
- P est la probabilité de passer à l'étape suivante
- L est le nombre de niveaux du pipeline
- F est la fréquence à laquelle notre processeur travaille
Ce calcul découle du raisonnement suivant : La « puissance » d'un processeur peut être considéré comme le produit de sa fréquence F et d'un coefficient R. J'ai simplifié l'expression de ce coefficient en disant que il était égal a la probabilité qu'une instruction arrive a son terme, donc R est égal ici à P puissance L.
Rentrons maintenant dans le vif du sujet, et présentons sommairement l'architecture Pipeline/Cache des Athlon 64 ainsi que des Pentium 4 :
- Le processeur haut de gamme actuel du fondeur AMD utilise une architecture appelée K8, celle-ci est l'ultime évolution de l'architecture K5 qui fait son chemin depuis que celle-ci est concurrente du Pentium. Notre K8 est basé sur ce que l'on appelle couramment un pipeline court puisque celle-ci utilise seulement 12 niveaux. Le cache actuel varie de 640KB à 1152KB pour les Athlon 64 simples coeurs, vous pouvez doubler ces chiffres les Athlon 64 X2.
- Le processeur anciennement « phare » d'Intel, le Pentium 4 est basé sur une architecture nouvelle connue sous le nom de NetBurst. Celle-ci est basée sur un pipeline long (31 niveaux sur la dernière vraie évolution de celui-ci : le core Prescott). Cette architecture est totalement différente de ce que l'on a pu voir jusqu'au Pentium 3. Le cache va de 1052KB à 2076KB pour les versions plus performantes, on peut doubler cette capacité dans les Pentium D
à la lecture de ces informations, on aurait tendance à croire que l'Athlon 64 aura une probabilité plus faible que le Pentium 4. Il n'en est rien, car AMD n'a eu cessé d'optimiser son rendement faute de pouvoir monter en fréquence. Tant et si bien que les probabilités des deux sont quasi identiques à niveau de cache équivalent.
Cette probabilité, il faut bien le préciser n'est jamais la même, elle change en fonction de ce que vous faites avec votre ordinateur, les valeurs que je vais donner ne sont pas forcément les valeurs officielles mais elles sont pour moi représentatives de ce qui se passe. Ce sont en quelque sorte des moyennes :
- Athlon 64_640 : 95.6%
- Athlon 64_1152 : 96.7%
- Pentium 4_1052 : 96.3%
- Pentium 4_2076 : 97%
Grâce à ces valeurs je vais pouvoir vous démontrer ce dont je parle depuis tout ce temps. Je vais commencer par faire un comparatif à fréquence égale et équivalence de cache:
- Prenons un Athlon 64_640 cadencé à 2400MHz ainsi qu'un Pentium 4_1052 cadencé lui aussi à 2400MHz
Pour l'Athlon : (0.956^12)*2400=1398
Pour le Pentium 4 : (0.963^31)*2400=745
Soit une différence de 88% en faveur de l'Athlon comme vous pouvez le constater.
- Maintenant essayons de prendre deux processeur de puissance équivalente : Un Athlon 64 3700+ et un Pentium 4 cadencé à 3700MHz et équipé de 2076KB.
Pour l'Athlon 64 : (0.967^12)*2200=1470
Pour le Pentium 4 : (0.97^31)*3600=1439
Soit une différence de 2%, CQFD, la puissance est équivalente.
La prochaine fois, je vous expliquerais une autre particularité qui fait la supériorité de l'Athlon : le Contrôleur mémoire.
__________________
Hello IT ... Have you tried to turn it off and on again ? ... The button on the side, is it glowing ? ... Yeah you need to turn it on ! ... The button turns it on ? ... You DO know how a button works don't you ! ?
|