1. Peut-on simplement accélérer le processeur ?

Dans le modèle étudié précédemment, le processeur exécute successivement les instructions d’un programme.

Une première manière d’améliorer ses performances consiste donc à augmenter la fréquence de son horloge.

Mais cette solution rencontre des limites : une fréquence plus élevée entraîne notamment une augmentation de la consommation électrique et de la chaleur produite.

Question. Comment augmenter les performances d’un ordinateur sans simplement augmenter la fréquence du processeur ?

2. Rapprocher les données du processeur

Le processeur travaille beaucoup plus rapidement que la mémoire centrale.

Il peut donc être obligé d’attendre que les données ou les instructions dont il a besoin lui soient transmises.

Pour limiter cette attente, on utilise une mémoire supplémentaire : la mémoire cache.

Cette mémoire est :

  • très rapide ;
  • de relativement petite capacité ;
  • située à proximité du processeur.

Elle conserve notamment des informations récemment utilisées ou susceptibles d’être utilisées prochainement, afin que le processeur puisse y accéder rapidement.

Hiérarchie des mémoires d’un ordinateur
Les différentes mémoires n’offrent pas le même compromis entre rapidité et capacité.
Idée essentielle. Une mémoire rapide située près du processeur permet de réduire le temps passé à attendre les informations.

3. Superposer le traitement des instructions

Nous avons vu qu’une instruction passe par plusieurs étapes :

chercher → décoder → exécuter

Dans un processeur simple, une instruction pourrait terminer toutes ces étapes avant que l’instruction suivante ne commence.

Les processeurs modernes peuvent au contraire faire travailler simultanément différentes parties du processeur.

Principe du pipeline dans un processeur
Le pipeline permet de faire progresser plusieurs instructions simultanément dans différentes étapes de leur traitement.

Pendant qu’une instruction est exécutée, l’instruction suivante peut être décodée et une autre instruction peut déjà être récupérée en mémoire.

Le pipeline. Il ne consiste pas nécessairement à exécuter une instruction plus rapidement, mais à permettre le traitement de plusieurs instructions simultanément à des étapes différentes.

4. Plusieurs unités d’exécution

Une autre amélioration consiste à disposer de plusieurs unités capables d’effectuer différents types d’opérations.

Un processeur peut alors, lorsque les instructions le permettent, réaliser plusieurs opérations en parallèle.

Organisation simplifiée d’un processeur superscalaire
Une architecture superscalaire dispose de plusieurs unités d’exécution.
À ne pas confondre. Ici, nous sommes toujours à l’intérieur d’un même cœur : plusieurs unités d’exécution peuvent être utilisées pour traiter plusieurs opérations.

Le multicœur, étudié ensuite, consiste à réunir plusieurs cœurs dans un même processeur.

5. Plusieurs cœurs dans un même processeur

Il est également possible de réaliser plusieurs traitements simultanément en utilisant plusieurs cœurs.

Un cœur contient les circuits nécessaires à l’exécution des instructions : registres, unité de commande et unités d’exécution.

Un processeur multicœur réunit donc plusieurs cœurs au sein d’un même processeur.

Schéma simplifié d’un processeur multicœur
Plusieurs cœurs peuvent exécuter différents flux d’instructions.

Chaque cœur peut exécuter un flux d’instructions. Lorsque le programme s’y prête, plusieurs traitements peuvent ainsi être effectués en parallèle.

Attention. Doubler le nombre de cœurs ne signifie pas automatiquement qu’un programme s’exécutera deux fois plus vite.

Le programme doit pouvoir répartir son travail entre plusieurs traitements indépendants pour réellement profiter du parallélisme.

6. Deux façons de travailler en parallèle

Les techniques précédentes montrent deux niveaux différents de parallélisme.

Parallélisme au niveau des instructions

Le pipeline et les architectures superscalaires permettent au processeur de traiter plusieurs instructions simultanément ou de faire progresser plusieurs instructions en même temps.

Parallélisme au niveau des cœurs

Un processeur multicœur permet à plusieurs cœurs de travailler simultanément sur différents flux d’instructions.

7. Du modèle simple aux ordinateurs actuels

Les ordinateurs actuels sont donc beaucoup plus complexes que le modèle simple présenté au début de cette partie.

Ils en conservent néanmoins les principes fondamentaux :

  • des instructions et des données sont placées en mémoire ;
  • un ou plusieurs processeurs exécutent les instructions ;
  • les composants échangent des informations.
Représentation d’une architecture moderne dérivée du modèle de von Neumann
Les architectures modernes conservent les principes du modèle de von Neumann tout en ajoutant de nombreux mécanismes d’optimisation.

8. Synthèse

Pour améliorer les performances d’un ordinateur, plusieurs stratégies peuvent être utilisées :

  • rapprocher les informations du processeur grâce à la mémoire cache ;
  • faire progresser plusieurs instructions simultanément grâce au pipeline ;
  • disposer de plusieurs unités d’exécution ;
  • utiliser plusieurs cœurs pour réaliser plusieurs traitements en parallèle.
À retenir. Les performances d’un ordinateur ne dépendent donc pas uniquement de la fréquence de son processeur.

9. Vérifier sa compréhension

  1. Pourquoi ne peut-on pas augmenter indéfiniment la fréquence d’un processeur ?
  2. Quel est le rôle de la mémoire cache ?
  3. Expliquer avec vos propres mots le principe du pipeline.
  4. Quelle différence faites-vous entre pipeline et processeur multicœur ?
  5. Pourquoi un processeur possédant deux fois plus de cœurs ne rend-il pas nécessairement un programme deux fois plus rapide ?

10. Bilan de la partie

Nous sommes partis d’un modèle simple de l’ordinateur pour comprendre le rôle de la mémoire, du processeur et des bus.

Nous avons ensuite suivi le cycle d’exécution d’une instruction, avant de découvrir quelques techniques utilisées dans les processeurs modernes pour améliorer leurs performances.

Le fil conducteur. Un ordinateur exécute des instructions stockées en mémoire, mais les architectures modernes cherchent à en exécuter davantage et plus efficacement.