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.
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.
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.
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.
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.
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.
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.
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.
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.
9. Vérifier sa compréhension
- Pourquoi ne peut-on pas augmenter indéfiniment la fréquence d’un processeur ?
- Quel est le rôle de la mémoire cache ?
- Expliquer avec vos propres mots le principe du pipeline.
- Quelle différence faites-vous entre pipeline et processeur multicœur ?
- 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.