Le fonctionnement d’un processeur

Le processeur, aussi appelé CPU (Central Processing Unit) est une pièce maitresse de votre ordinateur.
Dans le monde des ordinateurs (du moins grand public), on peut dire qu’il existe deux marques : Intel et AMD.

  • À part le nom, quelle est la différence entre l’un et l’autre ?

Historiquement, Intel est le premier à avoir créé un processeur d’architecture x86 (on va simplifier en disant 32 bits) et est aussi une société plus ancienne que AMD (de peu, 1 an). Maintenant la guerre AMD-Intel ne me semble plus avoir lieu d’être, mais il faut savoir que la PS4 et la Xbox One seront équipées en AMD (ce qui devrait les aider financièrement, et ça tombe à pic).
(petit edit: SteamOS lui ne semble pas encore supporter les cartes graphiques AMD)

  • Comment que ça marche ?

Le microprocesseur utilise un timer. En gros un quartz qui fait « GO ! » toutes les X secondes de façon régulière.

Une fois ce GO reçu, le processeur effectue l’opération demandée.

  • Et comment sait-on qu’elle est l’opération demandée ?

Nous, utilisateurs, ne pouvons pas. Ceci dit l’intérêt serait plutôt faible.

Pour donner un exemple (en simplifié), un processeur 2.3Ghz effectuera 2.3 MILLIARDS de calculs en une seconde. Alors à moins de lire très vite, on aura du mal.

  • Alors qui décide qu’elle est l’information qui doit être traitée ?

Le système d’exploitation et les développeurs.

Il faut savoir que cette manière de décider quelle opération doit être effectuée (et à quel moment) a beaucoup évolué.

Au début on avait un plan simple, premier arrivé, premier servi.
Comprendre « L’information A traitée en premier, la B en deuxième, etc. »

Le souci, c’est que si A est très long à calculer (n’oubliez pas qu’on parle de vielle méthode, on n’avait pas des processeurs sur-dimensionnés), alors tout le système se retrouve ralenti.

Exemple : On demande, dans l’ordre, de calculer Pi et d’afficher l’heure.

Vous voyez le souci ? Pi étant long à calculer (très long) l’ordinateur n’affichera jamais l’heure.

  • Pour pallier à ça, les développeurs ont cherché une solution annexe, finalement ils se sont tourné vers un système de priorisations.

Comprendre « A est très important, B peu important, C moyennement important » etc.

Le souci c’est que si le système reçoit beaucoup d’instructions signalées importantes, les autres tâches ne seront pas calculées.

Exemple : A = Calculer Pi B= Afficher l’heure C= Afficher « calcul réussi, le résultat est : »

Vous voyez le souci ? Si pendant le calcul de A, une tâche D arrive avec l’importance haute, alors l’ordinateur n’affichera pas calcul réussi (dommage, on ne saura pas le résultat) et l’heure ne sera toujours pas affichée.

  • Bon, on tourne en rond là ! Un mix des deux ça vous irait ? Voyons le résultat…

On va envoyer les fichiers et augmenter leurs importances à intervalle régulier…

Pas mal, mais rajoutons un « temps limite ». Si une instruction n’est pas finie en un temps limite, on stoppe et on garde son résultat.

Exemple : À = Calculer Pi (très important) B= Afficher l’heure (moyennement important) ce = Afficher « calcul réussi, le résultat est : » (peu important)

On va calculer pi pendant x ms (son temps limite), puis B et C vont augmenter en importance pendant ce temps.

Si B et C gagne en importance et dépasse l’importance de A on stoppe tout et on finit la boucle « afficher heure, et le résultat de A au moment de la fin du calcul).

  • Et c’est tout ?

Presque, on n’a pas parlé des technologies mises en place pour améliorer la vitesse de traitement.

Il faut savoir qu’a une époque on augmentait uniquement la vitesse du processeur, ce qui occasionnait quelques soucis (chauffe et usure du processeur). La loi de Moore (du nom de son inventeur, qui est aussi un des fondateurs d’Intel) ça vous parle ?

On peut la résumer comme ceci « Tous les 2 ans on double le nombre de transistors (la petite pièce qui sert au calcul, le processeur est en fait une armée de transistors), arrivé un moment va falloir ruser ».

Et il n’avait pas tellement tort le gars.

On a donc inventé différentes technologies.

HyperThreading:

On fait croire aux applications qu’il n’y a pas un processeur, mais plusieurs. Ainsi l’application envoie plus d’informations au processeur.

Multicœur:

De ce côté il y a eu de l’évolution. Quand j’étais tout gamin, je me rappelle avoir eu un PC bicore (comprendre 2 processeurs), mais qui ne fonctionnait pas de la même manière qu’actuellement. En fait, il fallait que le processeur 1 arrive à saturation pour que la 2nd fasse effet. Un peu con, non ?

C’est surement aussi ce qu’on pensait Intel et AMD et maintenant les processeurs travaillent de concert.

Pour comparer, c’est comme si avant votre patron attendait que vous soyez noyé sous le travail pour commencer à embaucher quelqu’un. Maintenant il sait que tous les ans à la même période il y a un rush, alors il prévoit en amont pour qu’à cette période vous soyez 2.

Mémoire cache:

La mémoire cache d’un processeur est une zone où il stocke les informations en cours de traitement ou qui seront nécessaires sous peu.

Par exemple si le résultat d’une opération sera réutilisé, il le stocke dans la mémoire cache. Et si jamais il travaille, il met les calculs à faire en cache pour ne pas avoir à redemander :
« hey mec, c’est quoi déjà que tu voulais que je calcule ? »

  • Conclusion :

Ça semble simple, mais il faut gérer les priorités très finement, imaginer que la requête F se retrouve avec une priorité plus importante que D, alors que F nécessite la réponse de D… serait ballot !

 

Voilà, c’est grosso modo comme ça qu’un processeur fonctionne. Je vous ai passé le coup du registre, du pont nord/pont sud, tec.. Qui primo, ne sont pas super passionnantes, deuzio ..vous nécessite un peu plus de temps pour les comprendre.

10 Comments

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.