Menu

Architecture superscalaire

Une autre façon de gagner en performance est d’exécuter plusieurs instructions en même temps. L'approche superscalaire consiste à doter le microprocesseur de plusieurs unités de traitement travaillant en parallèle. Les instructions sont alors réparties entre les différentes unités d'exécution. Il

faut donc pouvoir soutenir un flot important d’instructions et pour cela disposer d’un cache performant.

Architecture scalaire :

Architecture superscalaire : Remarque :

C'est le type d'architecture mise en oeuvre dans les premiers Pentium d'Intel apparus en 1993.

En savoir plus...

Principe

Depuis le début des années 80, une des solutions utilisées pour masquer cette latence est de disposer une mémoire très rapide entre le microprocesseur et la mémoire. Elle est appelée cache mémoire. On compense ainsi la faible vitesse relative de la mémoire en permettant au microprocesseur d’acquérir les données à sa vitesse propre. On la réalise à partir de cellule SRAM de taille réduite (à cause du coût). Sa capacité mémoire est donc très inférieure à celle de la mémoire principale et sa fonction est de stocker les informations les plus récentes ou les plus souvent utilisées

par le microprocesseur. Au départ cette mémoire était intégrée en dehors du microprocesseur mais elle fait maintenant partie intégrante du microprocesseur et se décline même sur plusieurs niveaux. Le principe de cache est très simple : le microprocesseur n’a pas conscience de sa présence et lui envoie toutes ses requêtes comme s’il agissait de la mémoire principale : Soit la donnée ou l’instruction requise est présente dans le cache et elle est alors envoyée directement au microprocesseur. On parle de succès de cache. (a)

soit la donnée ou l’instruction n’est pas dans le cache, et le contrôleur de cache envoie alors une requête à la mémoire principale. Une fois l’information récupérée, il la renvoie au microprocesseur tout en la stockant dans le cache. On parle de défaut de cache. (b) Bien entendu, le cache mémoire n’apporte un gain de performance que dans le premier cas. Sa performance est donc entièrement liée à son taux de succès. Il est courant de rencontrer des taux de succès moyen de l’ordre de 80 à 90%. Remarques :

Un cache utilisera une carte pour savoir quels sont les mots de la mémoire principale dont il possède une copie. Cette carte devra avoir une structure simple.

Il existe dans le système deux copies de la même information : l’originale dans la mémoire principale et la copie dans le cache. Si le microprocesseur modifie la donnée présente dans le cache, il faudra prévoir une mise à jour de la mémoire principale.

Lorsque le cache doit stocker une donnée, il est amené à en effacer une autre. Il existe donc un contrôleur permettant de savoir quand les données ont été utilisées pour la dernière fois. La plus ancienne non utilisée est alors remplacée par la nouvelle.

A noter que l’on peut reprendre le même principe pour les disques durs et CD/DVD.

En savoir plus...

Notion de cache mémoire

L’écart de performance entre le microprocesseur et la mémoire ne cesse de s’accroître. En effet, les composants mémoire bénéficient des mêmes progrès technologique que les microprocesseurs mais le décodage des adresses et la lecture/écriture d’une données sont des étapes difficiles à accélérer. Ainsi, le temps de cycle processeur décroît plus vite que le temps d’accès mémoire entraînant un goulot d’étranglement. La mémoire n'est plus en mesure de délivrer des informations aussi rapidement que le processeur est capable de les traiter. Il existe donc une latence d’accès entre ces deux organes.

En savoir plus...

Problèmes

La mise en place d’un pipeline pose plusieurs problèmes. En fait, plus le pipeline est long, plus le nombre de cas où il n’est pas possible d’atteindre la performance maximale est élevé. Il existe 3 principaux cas où la performance d’un processeur pipeliné peut être dégradé ; ces cas de dégradations de performances sont appelés des aléas :

aléa structurel qui correspond au cas où deux instructions ont besoin d’utiliser la même ressource du processeur (conflit de dépendance),

aléa de données qui intervient lorsqu’une instruction produit un résultat et que l’instruction suivante utilise ce résultat avant qu’il n’ait pu être écrit dans un registre,

aléa de contrôle qui se produit chaque fois qu’une instruction de branchement est exécutée. Lorsqu’une instruction de branchement est chargée, il faut normalement attendre de connaître l’adresse de destination du branchement pour pouvoir charger l’instruction suivante. Les instructions qui suivent le saut et qui sont en train d’être traitées dans les étages inférieurs le sont en général pour rien,

il faudra alors vider le pipeline. Pour atténuer l’effet des branchements, on peut spécifier après le branchement des instructions qui seront toujours exécutées. On fait aussi appel à la prédiction de branchement qui a pour but de recenser lors de branchements le comportement le plus probable. Les mécanismes de prédiction de branchement permettent d'atteindre une fiabilité de prédiction de l'ordre de 90 à 95 %.

Lorsqu’un aléa se produit, cela signifie qu’une instruction ne peut continuer à progresse dans le pipeline. Pendant un ou plusieurs cycles, l’instruction va rester bloquée dans un étage du pipeline, mais les instructions situées plus en avant pourront continuer à s’exécuter jusqu’à ce que l’aléa ait disparu. Plus le pipeline possède d’étages, plus la pénalité est grande. Les compilateurs s’efforcent d’engendrer des séquences d’instructions permettant de maximiser le remplissage du pipeline. Les étages vacants du pipeline sont appelés des « bulles » de pipeline, en pratique une bulle correspond en fait à une instruction NOP (No OPeration) émise à la place de l’instruction bloquée

En savoir plus...

Gain de performance

Dans cette structure, la machine débute l’exécution d’une instruction à chaque cycle et le pipeline est pleinement occupé à partir du quatrième cycle. Le gain obtenu dépend donc du nombre d’étages du pipeline. En effet, pour exécuter n instructions, en supposant que chaque instruction s’exécute en k cycles d’horloge, il faut :

En savoir plus...

Principe

L’exécution d’une instruction est décomposée en une succession d’étapes et chaque étape correspond à l’utilisation d’une des fonctions du microprocesseur. Lorsqu’une instruction se trouve dans l’une des étapes, les composants associés aux autres étapes ne sont pas utilisés. Le fonctionnement d’un microprocesseur simple n’est donc pas efficace.

L’architecture pipeline permet d’améliorer l’efficacité du microprocesseur. En effet, lorsque la première étape de l’exécution d’une instruction est achevée, l’instruction entre dans la seconde étape de son exécution et la première phase de l’exécution de l’instruction suivante débute. Il peut donc y avoir une instruction en cours d’exécution dans chacune des étapes et chacun des composants du microprocesseur peut être utilisé à chaque cycle d’horloge. L’efficacité est maximale. Le temps d’exécution d’une instruction n’est pas réduit mais le débit d’exécution des instructions est considérablement augmenté. Une machine pipeline se caractérise par le nombre d’étapes utilisées pour l’exécution d’une instruction, on appelle aussi ce nombre d’étapes le nombre d’étages du pipeline.

En savoir plus...
S'abonner à ce flux RSS

Besoin d’avis?

Demandez maintenant un examen gratuit et sans engagement de votre site web.
Nous faisons un examen élaboré, et nous effectuons un rapport SEO avec des conseils
pour l’amélioration, la trouvabilité et la conversion de votre site web.

Audit SEO