Avez-vous déjà remarqué à quel point le microprocesseur de votre ordinateur est un composant extrêmement puissant, et à quel point le moindre accès aux données est une horreur de lenteur de son point de vue ?
Pour essayer de se représenter tout ça, on va imaginer que vous êtes un cœur de microprocesseur, ralenti d'un facteur un milliard.
Or donc, vous êtes un cœur d'un microprocesseur moderne. Vous êtes avec d'autres collègues dans un open space ; votre boulot – et vous n'avez pas le choix – c'est d'exécuter des instructions, c'est-à-dire pour vous de taper au clavier, une touche par impulsion d'horloge1. Un processeur moderne peut être cadencé à 4 GHz, ce qui fait pour vous 4 frappes par seconde, ce qui est déjà rapide.
Et voici que vous avez besoin d'une information que vous n'avez pas. Zut, flûte, raalgamaziel, il vous faut la procurer.
Est-ce qu'elle est dans le cache L1 ? Vous prenez un peu plus d'une seconde (un peu plus d'1 ns ou 4 instructions) pour lire ce post-it sur votre bureau.
Non. Est-ce qu'elle est dans le cache L2 ? Vous prenez environ cinq secondes (environ 5 ns ou 20 instructions) pour parcourir la feuille à côté de votre clavier.
Toujours pas. Est-ce que par hasard elle serait dans le cache L3 ? Vous devez vous lever et prendre entre quinze et vingt secondes (15 à 25 ns soit 60 à 100 instructions) pour consulter ce schéma accroché à un mur.
Ça commence à puer cette histoire. Où diable peut se trouver cette information indispensable ?
Est-ce un résultat de calcul que doit vous donner un collègue (donc un autre cœur) ? Selon l'organisation de votre bureau (la topologie du processeur) et l'humeur dudit collègue, vous aurez la réponse dans entre quarante secondes et deux minutes vingt (40 à 140 ns soit 160 à 560 instructions).
C'est aussi l'ordre de grandeur du temps qu'il va vous falloir patienter pour récupérer une information planquée dans les banques de mémoire du bureau d'à côté : une grosse minute à plus d'une minute et demie (70 à 100 ns, soit 280 à 400 instructions). C'est déjà très long, même par rapport à votre schéma sur le mur du bureau.
Et si jamais vous n'avez toujours pas votre information, là c'est le drame. Parce que toute autre forme de stockage va être vraiment très lente à réagir par rapport à tout ce qu'on vient de voir.
Si vos données sont sur un SSD au format M2, cas le plus favorable, vous en avez pour une petite journée (au moins 5h30) de recherche à la bibliothèque (plus de 0.02 ms, soit plus de 20 000 ns… et donc 80 000 instructions2).
Un SSD au format SATA est encore plus long, c'est comme si vos données étaient livrées par un coursier rapide : ça arrive vite, mais il faut quand même compter plus d'une journée et d'une nuit entières… (à la louche 100 μs, 400 000 instructions3).
Et si votre information n'est toujours pas là… c'est la catastrophe.
S'il faut la faire venir depuis un disque dur mécanique ou par Internet depuis une connexion fibre, non seulement vous pouvez partir en vacances, mais en plus vous n'aurez jamais assez de congés payés pour patienter jusqu'à ce que votre donnée soit arrivée, puisqu'il vous faudra environ deux mois entre la demande et l'arrivée de ce dont vous avez besoin ! (un ordre de grandeur de 5 ms… soit 5 000 000 ns et 20 000 000 instructions4 !)
Un chiffre que l'on peut tripler si la connexion Internet est une liaison cuivre ; la présence d'un WiFi dans le circuit permet probablement de concevoir intégralement un enfant.
(Tant qu'on est dans les comparaisons bizarres, si vous exécutez le code d'un jeu vidéo, vous avez un budget de 16 666 666 secondes soit plus de six mois pour le calcul d'une image pour avoir un rendu fluide. C'est énorme… tant que les données sont en mémoire, cf ci-dessus).
Mais la véritable situation catastrophique dans laquelle vous allez être véritablement bloqué sans rien faire, c'est si par malheur votre code attend la réaction d'un humain : s'il est surpris, il va mettre au moins une seconde réelle à réagir, soit un milliard de secondes pour vous, ce qui équivaut à… près de 32 ans. Vous affichez la popup en débutant votre premier boulot, l'utilisateur clique quand vous commencez à penser à votre retraite. S'il est réactif.
Et voilà qui remets à notre échelle des unités très variées (ms, ns, parfois μs) que l'on utilise peu et donc appréhende mal surtout si elles sont mélangées ! J'espère ne pas m'être trop planté dans mes calculs, et que cette petite analogie filée vous aura permis de comprendre :
- La puissance réelle et affolante des microprocesseurs modernes ;
- Pourquoi on a plein de niveaux de cache, des pipelines et autres techniques pour que le processeur serve pendant les attentes, et pourquoi les SSD sont aussi agréables par rapport à des disques mécaniques ;
- Pourquoi c'est scandaleux que sur du matériel moderne on trouve des logiciels qui ne font rien de particulièrement complexe mais qui utilisent quand même tout le processeur.
Et ça c'est juste du côté matériel, sans même parler du rôle du système d'exploitation, qui va profiter d'une attente d'entrée/sortie pour changer de contexte ou mettre le processeur en veille. On comprends alors mieux l'intérêt des frameworks qui gèrent ces entrées/sorties de manière non bloquante.
Comme d'habitude, ce billet est placé sous licence CC-BY 4.0 et comme souvent c'est une adaptation du billet du même titre publié sur Zeste de Savoir, complété par des informations fournies en commentaires.
-
En réalité, un microprocesseur n'exécute pas une instruction par impulsion d'horloge, pour des tas de raisons assez compliquées. Mais pour les besoins de la démonstration, on va faire comme si. ↩
-
C'est énorme : 80 000 instructions, si représentées par 80 000 frappes au clavier, c'est approximativement la taille de deux des nouvelles de cette page. ↩
-
Votre vous-processeur aurait pu recopier Alice au Pays des Merveilles. ↩
-
Avec toujours la même équivalence et un standard de 5 caractères par mot pour l'anglais, ça laisse le temps de copier plus de deux fois l'intégrale du Trône de Fer. ↩
# Chipotage
Posté par n_e . Évalué à 10.
Le cas le plus favorable, c'est un SSD NVMe, qui communique directement sur le bus PCI Express. Le format M.2 permet d'utiliser des SSD NVMe mais aussi SATA.
C'est aussi possible d'utiliser des SSD NVMe sans port M.2, qui se branchent sur un connecteur PCI Express classique.
[^] # Re: Chipotage
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 8.
Exact et la précision est toujours bienvenue même pour ce genre d'exercice.
La connaissance libre : https://zestedesavoir.com
# Mais ? Ben ?
Posté par Grunt . Évalué à 10. Dernière modification le 21 novembre 2018 à 23:10.
Ça te plairait d'alterner des phases de 15 secondes de travail et 6 mois de placard ? Ces logiciels essaient de donner du sens au travail du processeur. C'est du management par le bonheur.
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
# Intéressante comparaison
Posté par Dareg . Évalué à 10.
Bravo pour cette comparaison. Je n'avais jusqu'à aujourd'hui entendu que des comparaisons à base de ns, µs, ms qui donne une idée mais qui reste assez flou. Ramener tout cela au niveau humain rends les choses plus claires je trouve. Donc merci. :)
# fréquence dynamique
Posté par Anonyme . Évalué à 10.
Excellence mise en perspective :)
Oui, un CPU x86 de moins de quinze ans possède des paliers de fréquence+tension qui peuvent changer dynamiquement. C'est le but du gouverneurs CPU de gérer ces paliers.
Mais même en dessous du controle du système d'exploitation il y a des changements dynamiques de fréquence CPU.
Ainsi depuis dix ans on a des modes Turbo directement gérés par le CPU selon l'utilisation des cœurs et la température. Même technologie dans les cartes graphiques.
Et à l'époque des AT, on avait le bouton "Turbo" (en fait le mode normal) et des jumpers pour régler le sous-cadençage indispensable pour les vieux jeux DOS qui sinon tournaient trop rapidement.
[^] # Re: fréquence dynamique
Posté par BAud (site web personnel) . Évalué à 9.
rho toi aussi tu es un vieux :-) c'est vrai que le passage de 1 MHz à 4,66 MHz puis 16 MHz rendaient certains jeux injouables (ou avec des réflexes de folie).
[^] # Re: fréquence dynamique
Posté par gUI (Mastodon) . Évalué à 7. Dernière modification le 22 novembre 2018 à 07:43.
D'où le bouton turbo des PC jusqu'aux 486 : redescendre la fréquence du PC pour retomber dans je ne sais quel standard (style 286 je crois).
Bouton Turbo mal nommé parce que activé c'est simplement la vitesse normale, et désactivé c'est un CPU fortement ralenti.
(oups déjà dit plus haut, un modérateur peut supprimer ce commentaire)
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: fréquence dynamique
Posté par MrBidon . Évalué à 9.
Voila on glande tranquillement sur LinuxFr et paf, vous avez répondu à une énigme de mon adolescence que je n'avais pas encore résolue (du moins je n'ai même pas essayé de la résoudre) : l'énigme de ce bouton turbo qui épatait les copains :).
[^] # Re: fréquence dynamique
Posté par Meku (site web personnel) . Évalué à 4.
Moi je pensais que ça injectait du nitro dans le CPU.
[^] # Re: fréquence dynamique
Posté par barmic . Évalué à 10. Dernière modification le 22 novembre 2018 à 09:35.
Parle pour toi, utilisateur, commercialement c'est bien mieux comme ça.
[^] # Re: fréquence dynamique
Posté par ouafnico (site web personnel) . Évalué à 3.
roh ouai ce bon vieux turbo, qui faisait passer mon 386 de 8 à 16Mhz.
Autant dire qu'il était toujours actif :d
# Et la RAM ?
Posté par niclone (site web personnel) . Évalué à 2. Dernière modification le 22 novembre 2018 à 09:11.
Excellente comparaison, merci ;)
Par contre, tu oublies aussi l'accès en RAM (DDR4 ..) non ?
Edit: Ah pardon, c'est les banques mémoires du bureau de juste à coté ! lu trop vite, désolé ;)
[^] # Re: Et la RAM ?
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 22 novembre 2018 à 09:32.
J'avoue, je n'ai pas donné la correspondance dans le langage informatique « habituel » pour ce point.
La connaissance libre : https://zestedesavoir.com
# durée de vie
Posté par xulops (site web personnel) . Évalué à 9.
Il manque quand même une donnée de base dans tout ce comparatif : la durée de vie.
Environ 100 ans pour un homme, environ 5 ans en temps réel pour le processeur (ou 10 ans, voire plus pour ceux qui ne changent pas souvent de machine).
Mais avec la mise en perspective, le facteur un milliard, attendre une info pendant un mois ou deux quand tu vis 5 millards d'années… c'est beaucoup moins choquant que lorsque tu as moins de 100 ans devant toi.
[^] # Re: durée de vie
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 7.
Je ne l'ai pas mis pour deux raisons :
Parce que je n'avais pas de valeur de comparaison pertinente : dans l'immense majorité des cas, le processeur est en fin de vie non pas parce qu'il est intrinsèquement hors service, mais parce qu'il est dépassé pour l'usage qui en est fait par du matériel plus récent (puissance supérieure, consommation inférieure, processeur encore OK mais plus les composants autour…)
Parce que du coup on se retrouve avec un problème d'échelle dans le sens inverse : 5 ans réels en nanosecondes, c'est 1,6 x 1017 donc l'équivalent, comme tu le dis, c'est 5 milliards d'année, une durée que personne ne se représente vraiment.
D'autant que les échelles de vie et de réactivité ne sont pas les mêmes : tu pourrais te dire que sur 5 milliards d'année tu pourrais te permettre sans souci de passer 100 ans sur un calcul en tant que processeur ; mais ça serait l'équivalent de plus de 3 secondes pour un utilisateur… donc probablement beaucoup trop long.
La connaissance libre : https://zestedesavoir.com
[^] # Espérance de vie
Posté par nico4nicolas . Évalué à 3.
Il y a aussi l'espérance de vie. L'être humain (moyen) a besoin de dormir 8h par jour soit 1/3 de sa vie. Quel est l'impact du manque de repos sur un microprocesseur ? Quelle serait l'espérance de vie d'un processeur tout le temps occupé ? Réfléchir fait chauffer le composant (cerveau ou microprocesseur). Le chaud, contrairement au froid, n'est pas bon conservateur.
Pour résumer : est-ce qu'une partie du temps d'attente de microprocesseur n'est pas aussi du temps de repos nécessaire à sa bonne santé sur le long terme ?
[^] # Re: Espérance de vie
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 4.
Si le processeur et son système de refroidissement sont correctement conçus il peut tourner à 100% en permanence sans aucun soucis.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Espérance de vie
Posté par ff9097 . Évalué à 1.
Mais pendant combien de temps ?
[^] # Re: Espérance de vie
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 2.
Normalement assez longtemps pour qu'il soit rendu obsolète par du matériel plus récent.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Espérance de vie
Posté par Loïs Taulelle ࿋ (site web personnel) . Évalué à -2. Dernière modification le 26 novembre 2018 à 14:56.
De ce que je constate sur mes machines de calcul :
au moins jusqu'à 12 ans, en moyenne, pour du matériel qui a déjà 12 ans,
de moins en moins longtemps sur du matériel de plus en plus récent…
(de là à y voir une certaine forme de programmation de l'obsolescence conçue par des… dans un but… de… mondial… Ah, faut que je reprenne un cachet anti-complot).
Proverbe Alien : Sauvez la terre ? Mangez des humains !
[^] # Re: durée de vie
Posté par Anonyme . Évalué à 10.
Ah ! Ça, ça collerait avec la théorie selon laquelle la terre est un ordinateur contrôlée par des souris !
# Concevoir un enfant ?
Posté par foobarbazz . Évalué à 8.
Deux minutes quoi…
[^] # Re: Concevoir un enfant ?
Posté par liberforce (site web personnel) . Évalué à 6. Dernière modification le 22 novembre 2018 à 16:31.
Douche comprise.
[^] # Re: Concevoir un enfant ?
Posté par Psychofox (Mastodon) . Évalué à -10. Dernière modification le 23 novembre 2018 à 10:18.
Vous êtes des militants anti-avortements ? Ça me semble bizarre d'assimiler la conception d'un enfant à un simple acte sexuel. Il me semble que le produit est loin d'être fini après avoir tiré son coup.
[^] # Re: Concevoir un enfant ?
Posté par Crao . Évalué à 10.
Tu es militant de l’académie du premier degré ?
# Comparaison parlante
Posté par liberforce (site web personnel) . Évalué à 8.
J'avais déjà vu ce genre de comparaison mais pour quelque chose de plus parlant je pense: parler en distance uniquement plutôt qu'en distance. C'était à un GUADEC je crois, mais je n'arrive plus à retrouver. Mais en gros tu avais des cercles concentriques sur un planisphère pour montrer la distance à parcourir pour aller chercher l'information (cette distance étant intuitivement liée au temps: plus c'est loin plus c'est long d'y aller).
Tu te retrouvais donc, comme toi, à accéder au cache sur un papier sur ton bureau, ou alors à devoir aller à l'autre bout du monde récupérer l'information.
Il y a aussi (précis mais pas assez visuel à cause des changements d'échelle je trouve) :
[^] # Re: Comparaison parlante
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 5.
Ce genre de graphique est très pratique pour retrouver rapidement dans quelle échelle de grandeur tu es (j'avais celui-ci en tête), mais c'est clair que les changements d'échelle ne permettent pas une bonne comparaison entre les différents éléments.
C'est triste de constater à quel point nous pauvres humains sommes mal équipés pour appréhender les nombres.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Comparaison parlante
Posté par Ramón Perez (site web personnel) . Évalué à 10.
C,est parce qu'on en a trop inventé.
On aurait pu s'arrêter à :
un, deux, beaucoup !
[^] # Re: Comparaison parlante
Posté par KiKouN . Évalué à 5.
C'est encore de trop.
Pourquoi autant de chiffres alors que 0 et 1 suffissent.
Oh… wait.
[^] # Re: Comparaison parlante
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 8.
Personnellement je ne travaille qu'en base 101.
Par contre je ne garantis pas la base d'écriture de ce chiffre. ↩
La connaissance libre : https://zestedesavoir.com
[^] # Re: Comparaison parlante
Posté par gUI (Mastodon) . Évalué à 2. Dernière modification le 23 novembre 2018 à 14:35.
C'est clair.
D'ailleurs dans sa vidéo sur les nombre archi-méga-super-géants (où l'on parle de nombres qui dépassent l'entendement mais qui ont servi dans au moins une démonstration), science4all commence par dire que
5
c'est déjà un grand nombre : si on te montre 5 cartes et qu'il faut les compter, tu ne les appréhenderas pas d'un coup, mais tu feras d'un œil3+2=5
.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Comparaison parlante
Posté par liberforce (site web personnel) . Évalué à 8. Dernière modification le 23 novembre 2018 à 15:49.
C'est ce que je me dis toujours quand je compte sur les 3+2 doigts de chacune de mes 1+1 mains.
[^] # Re: Comparaison parlante
Posté par NeoX . Évalué à 3.
oui mais 12 phalanges, que tu peux pointer avec ton pouce, sur une seule main
on aurait donc pu compter en base 12 des le debut plutot qu'en base 10
soit la possibilité de compter jusqu'à 12x12 (144) avec une seule main :p
[^] # Re: Comparaison parlante
Posté par wismerhill . Évalué à 4.
C'était le cas
Il me semble que le système décimal s'est imposé avec l'arrivée des chiffres indo-arabes.
[^] # Re: Comparaison parlante
Posté par windu.2b . Évalué à 4.
Pourquoi crois-tu qu'on compte les œufs, les huîtres, … par (demi-)douzaines ? Une main pour compter (4 doigts de 3 phalanges, et le pouce qui pointe), et une main pour manipuler.
[^] # Re: Comparaison parlante
Posté par j_m . Évalué à 0. Dernière modification le 23 novembre 2018 à 21:11.
Compter jusqu'à 5, même les pigeons en sont capables: http://www.slate.fr/lien/48037/pigeons-aussi-intelligents-singes
[^] # Re: Comparaison parlante
Posté par gUI (Mastodon) . Évalué à 5.
C'est pas compter jusqu'à 5 le pb, c'est de voir qu'il y a 5 objets d'un coup d’œil (et pas 6 par exemple).
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Comparaison parlante
Posté par j_m . Évalué à 2.
Ce qu'on observe chez les pigeons, c'est qu'ils peuvent ordonner des ensembles variés selon le nombres d'éléments qu'ils contiennent. Ca correspond à l'idée des nombres entiers naturel.
Si on défini la représentation mentale des nombres comme la capacité à classer des ensembles par ordre de cardinalité alors ces pigeons entraînés sont capables de se représenter des nombres jusqu'à 9.
Pour le coup d'oeil, j'imagine que c'est l'idée d'un temps de réaction. Je me demande si c'est si important vu que les singes ont des performances similaires aux humains là-dessus. Je ne sais pas pour les pigeons.
# Ouate de phoque ?! Merci !
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 10.
J'ai vu que ce billet a atteint une note de 146, je me suis dit « wow, ça fait beaucoup, non ? ». Alors, j'ai vérifié, et donc :
Sincèrement, je ne pensais vraiment pas que mon idée couchée un peu à l'arrache plairait autant. Si j'avais su, j'aurais plus soigné mon texte !
En tous cas, content que de voir que vous avez apprécié la comparaison !
La connaissance libre : https://zestedesavoir.com
[^] # Re: Ouate de phoque ?! Merci !
Posté par Anthony Jaguenaud . Évalué à 5.
Je t’en remets un de plus ;-)
[^] # Re: Ouate de phoque ?! Merci !
Posté par Nexus75 . Évalué à 0.
Et un de plus !
Super article, merci :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.