Comment fonctionnent les microprocesseurs

  • Gyles Lewis
  • 0
  • 1898
  • 326
Les microprocesseurs sont au cœur de tous les ordinateurs. Jorg Greuel / Getty Images

-L'ordinateur que vous utilisez pour lire cette page utilise un microprocesseur faire son travail. Le microprocesseur est le cœur de tout ordinateur normal, qu'il s'agisse d'une machine de bureau, d'un serveur ou d'un ordinateur portable. Le microprocesseur que vous utilisez peut être un Pentium, un K6, un PowerPC, un Sparc ou l'une des nombreuses autres marques et types de microprocesseurs, mais ils font tous à peu près la même chose à peu près de la même manière.

Un microprocesseur - également appelé CPU ou unité centrale de traitement - est un moteur de calcul complet qui est fabriqué sur une seule puce. Le premier microprocesseur était l'Intel 4004, introduit en 1971. Le 4004 n'était pas très puissant - tout ce qu'il pouvait faire était d'ajouter et de soustraire, et il ne pouvait le faire que 4 bits à la fois. Mais c'était incroyable que tout soit sur une seule puce. Avant le 4004, les ingénieurs construisaient des ordinateurs à partir de collections de puces ou de composants discrets (transistors câblés un à la fois). Le 4004 a alimenté l'une des premières calculatrices électroniques portables.

- Si vous vous êtes déjà demandé ce que faisait le microprocesseur de votre ordinateur, ou si vous vous êtes déjà posé des questions sur les différences entre les types de microprocesseurs, lisez la suite. Dans cet article, vous apprendrez comment des techniques de logique numérique assez simples permettent à un ordinateur de faire son travail, qu'il s'agisse de jouer à un jeu ou de vérifier l'orthographe d'un document.!

Contenu
  1. Progression du microprocesseur: Intel
  2. Logique du microprocesseur
  3. Mémoire du microprocesseur
  4. Instructions relatives au microprocesseur
  5. Performances et tendances des microprocesseurs
  6. Microprocesseurs 64 bits
L'Intel 8080 était le premier microprocesseur d'un ordinateur domestique.

Le premier microprocesseur à en faire un ordinateur personnel a été l'Intel 8080, un ordinateur 8 bits complet sur une seule puce, introduit en 1974. Le premier microprocesseur à faire sensation sur le marché a été l'Intel 8088, introduit en 1979 et incorporé. dans le PC IBM (qui est apparu pour la première fois vers 1982). Si vous connaissez le marché des PC et son histoire, vous savez que le marché des PC est passé du 8088 au 80286 au 80386 au 80486 au Pentium au Pentium II au Pentium III au Pentium 4. Tout cela les microprocesseurs sont fabriqués par Intel et tous sont des améliorations sur la conception de base du 8088. Le Pentium 4 peut exécuter n'importe quel morceau de code fonctionnant sur le 8088 d'origine, mais il le fait environ 5000 fois plus rapidement!

Depuis 2004, Intel a introduit des microprocesseurs avec plusieurs cœurs et des millions de transistors supplémentaires. Mais même ces microprocesseurs suivent les mêmes règles générales que les puces précédentes.

Voici les différences entre les différents processeurs introduits par Intel au fil des ans. Compilé à partir du Guide de référence rapide du microprocesseur Intel et des scores de référence TSCP

Informations supplémentaires sur le tableau de cette page:

  • le Date est l'année de l'introduction du processeur. De nombreux processeurs sont réintroduits à des vitesses d'horloge plus élevées pendant de nombreuses années après la date de sortie d'origine.
  • Transistors est le nombre de transistors sur la puce. Vous pouvez voir que le nombre de transistors sur une seule puce a augmenté régulièrement au fil des ans.
  • Microns est la largeur, en microns, du plus petit fil de la puce. A titre de comparaison, un cheveu humain a une épaisseur de 100 microns. À mesure que la taille des caractéristiques de la puce diminue, le nombre de transistors augmente.
  • Vitesse de l'horloge est la vitesse maximale à laquelle la puce peut être cadencée. La vitesse d'horloge aura plus de sens dans la section suivante.
  • Largeur des données est la largeur de l'ALU. Une ALU 8 bits peut ajouter / soustraire / multiplier / etc. deux nombres 8 bits, tandis qu'une ALU 32 bits peut manipuler des nombres 32 bits. Une ALU 8 bits devrait exécuter quatre instructions pour ajouter deux nombres 32 bits, tandis qu'une ALU 32 bits peut le faire en une seule instruction. Dans de nombreux cas, le bus de données externe a la même largeur que l'ALU, mais pas toujours. Le 8088 avait une ALU 16 bits et un bus 8 bits, tandis que les Pentium modernes récupèrent des données 64 bits à la fois pour leurs ALU 32 bits.
  • MIPS signifie "millions d'instructions par seconde" et est une mesure approximative des performances d'un processeur. Les processeurs modernes peuvent faire tellement de choses différentes que les notes MIPS perdent beaucoup de leur signification, mais vous pouvez avoir une idée générale de la puissance relative des processeurs à partir de cette colonne..

À partir de ce tableau, vous pouvez voir qu'en général, il existe une relation entre la vitesse d'horloge et MIPS. La vitesse d'horloge maximale est fonction du processus de fabrication et des délais dans la puce. Il existe également une relation entre le nombre de transistors et MIPS. Par exemple, le 8088 cadencé à 5 MHz mais exécuté uniquement à 0,33 MIPS (environ une instruction par 15 cycles d'horloge). Les processeurs modernes peuvent souvent s'exécuter à raison de deux instructions par cycle d'horloge. Cette amélioration est directement liée au nombre de transistors sur la puce et aura plus de sens dans la section suivante.

Qu'est-ce qu'une puce?

UNE puce s'appelle aussi un circuit intégré. Il s'agit généralement d'un petit morceau mince de silicium sur lequel ont été gravés les transistors constituant le microprocesseur. Une puce peut mesurer jusqu'à un pouce de côté et peut contenir des dizaines de millions de transistors. Les processeurs plus simples peuvent être constitués de quelques milliers de transistors gravés sur une puce de quelques millimètres carrés.

Processeur Intel Pentium 4 Photo gracieuseté d'Intel Corporation

Pour comprendre le fonctionnement d'un microprocesseur, il est utile de regarder à l'intérieur et de découvrir la logique utilisée pour en créer un. Dans le processus, vous pouvez également en apprendre davantage sur langage d'assemblage -- la langue native d'un microprocesseur - et de nombreuses choses que les ingénieurs peuvent faire pour augmenter la vitesse d'un processeur.

Un microprocesseur exécute une collection d'instructions machine qui indiquent au processeur quoi faire. Sur la base des instructions, un microprocesseur fait trois choses de base:

  • En utilisant son ALU (unité arithmétique / logique), un microprocesseur peut effectuer des opérations mathématiques comme l'addition, la soustraction, la multiplication et la division. Les microprocesseurs modernes contiennent des processeurs à virgule flottante complets qui peuvent effectuer des opérations extrêmement sophistiquées sur de grands nombres à virgule flottante.
  • Un microprocesseur peut déplacer des données d'un emplacement mémoire à un autre.
  • Un microprocesseur peut prendre des décisions et passer à un nouvel ensemble d'instructions basé sur ces décisions.

Un microprocesseur peut faire des choses très sophistiquées, mais ce sont ses trois activités de base. Le schéma suivant montre un microprocesseur extrêmement simple capable de faire ces trois choses:

C'est à peu près aussi simple qu'un microprocesseur. Ce microprocesseur a:

  • Une bus d'adresse (qui peut avoir une largeur de 8, 16 ou 32 bits) qui envoie une adresse en mémoire
  • UNE bus de données (qui peut avoir une largeur de 8, 16 ou 32 bits) qui peut envoyer des données en mémoire ou recevoir des données de la mémoire
  • Une RD (lire et WR (write) pour indiquer à la mémoire si elle veut définir ou obtenir l'emplacement adressé
  • UNE ligne d'horloge qui laisse une séquence d'impulsions d'horloge le processeur
  • UNE réinitialiser la ligne qui réinitialise le compteur du programme à zéro (ou autre) et redémarre l'exécution

Supposons que les bus d'adresse et de données aient une largeur de 8 bits dans cet exemple.

Voici les composants de ce microprocesseur simple:

  • Les registres A, B et C sont simplement des verrous constitués de bascules. (Voir la section sur les «verrous déclenchés par front» dans Fonctionnement de la logique booléenne pour plus de détails.)
  • Le verrou d'adresse est comme les registres A, B et C.
  • Le compteur de programme est un verrou avec la possibilité supplémentaire d'incrémenter de 1 quand on lui dit de le faire, et aussi de se remettre à zéro lorsqu'on lui dit de le faire.
  • L'ALU pourrait être aussi simple qu'un additionneur 8 bits (voir la section sur les additionneurs dans Comment fonctionne la logique booléenne pour plus de détails), ou il pourrait être capable d'ajouter, de soustraire, de multiplier et de diviser des valeurs 8 bits. Supposons ce dernier ici.
  • Le registre de test est un verrou spécial qui peut contenir des valeurs de comparaisons effectuées dans l'ALU. Une ALU peut normalement comparer deux nombres et déterminer s'ils sont égaux, si l'un est supérieur à l'autre, etc. Le registre de test peut aussi normalement contenir un bit de retenue du dernier étage de l'additionneur. Il stocke ces valeurs dans des bascules, puis le décodeur d'instructions peut utiliser les valeurs pour prendre des décisions.
  • Il y a six cases marquées «3-State» dans le diagramme. Ceux-ci sont tampons à trois états. Un tampon à trois états peut passer un 1, un 0 ou il peut essentiellement déconnecter sa sortie (imaginez un commutateur qui déconnecte totalement la ligne de sortie du fil vers lequel la sortie se dirige). Un tampon à trois états permet à plusieurs sorties de se connecter à un fil, mais une seule d'entre elles peut réellement conduire un 1 ou un 0 sur la ligne.
  • Le registre d'instructions et le décodeur d'instructions sont responsables du contrôle de tous les autres composants.

Bien qu'elles ne soient pas montrées dans ce diagramme, il y aurait des lignes de contrôle du décodeur d'instructions qui:

  • Dites au registre A de verrouiller la valeur actuellement sur le bus de données
  • Dites au registre B de verrouiller la valeur actuellement sur le bus de données
  • Dites au registre C de verrouiller la valeur actuellement sortie par l'ALU
  • Dire au registre du compteur de programme de verrouiller la valeur actuellement sur le bus de données
  • Dites au registre d'adresses de verrouiller la valeur actuellement sur le bus de données
  • Dites au registre d'instructions de verrouiller la valeur actuellement sur le bus de données
  • Dites au compteur de programme d'incrémenter
  • Dites au compteur de programme de se remettre à zéro
  • Activez l'un des six tampons à trois états (six lignes distinctes)
  • Dites à l'ALU quelle opération effectuer
  • Dites au registre de test de verrouiller les bits de test de l'ALU
  • Activer la ligne RD
  • Activer la ligne WR

Les bits du registre de test et de la ligne d'horloge, ainsi que les bits du registre d'instructions, entrent dans le décodeur d'instructions.

Puce ROM

La section précédente parlait des bus d'adresse et de données, ainsi que des lignes RD et WR. Ces bus et lignes se connectent soit à la RAM soit à la ROM - généralement les deux. Dans notre exemple de microprocesseur, nous avons un bus d'adresse de 8 bits de large et un bus de données de 8 bits de large. Cela signifie que le microprocesseur peut adresser (28) 256 octets de mémoire, et il peut lire ou écrire 8 bits de la mémoire à la fois. Supposons que ce simple microprocesseur ait 128 octets de ROM commençant à l'adresse 0 et 128 octets de RAM commençant à l'adresse 128.

ROM signifie mémoire en lecture seule. Une puce ROM est programmée avec une collection permanente d'octets prédéfinis. Le bus d'adresse indique à la puce ROM quel octet obtenir et placer sur le bus de données. Lorsque la ligne RD change d'état, la puce ROM présente l'octet sélectionné sur le bus de données.

RAM signifie mémoire à accès aléatoire. La RAM contient des octets d'informations et le microprocesseur peut lire ou écrire dans ces octets selon que la ligne RD ou WR est signalée. Un problème avec les puces de RAM d'aujourd'hui est qu'elles oublient tout une fois l'alimentation coupée. C'est pourquoi l'ordinateur a besoin de ROM.

Puce RAM

À propos, presque tous les ordinateurs contiennent une certaine quantité de ROM (il est possible de créer un ordinateur simple qui ne contient pas de RAM - de nombreux microcontrôleurs le font en plaçant une poignée d'octets de RAM sur la puce du processeur elle-même - mais généralement impossible à créer celui qui ne contient pas de ROM). Sur un PC, la ROM est appelée BIOS (Basic Input / Output System). Lorsque le microprocesseur démarre, il commence à exécuter les instructions qu'il trouve dans le BIOS. Les instructions du BIOS font des choses comme tester le matériel de la machine, puis il va sur le disque dur pour récupérer le Secteur de démarrage (voir Fonctionnement des disques durs pour plus de détails). Ce secteur d'amorçage est un autre petit programme, et le BIOS le stocke dans la RAM après l'avoir lu sur le disque. Le microprocesseur commence alors à exécuter les instructions du secteur d'amorçage à partir de la RAM. Le programme du secteur d'amorçage indiquera au microprocesseur d'extraire quelque chose d'autre du disque dur dans la RAM, que le microprocesseur exécute ensuite, et ainsi de suite. C'est ainsi que le microprocesseur charge et exécute l'ensemble du système d'exploitation.

Même le microprocesseur incroyablement simple montré dans l'exemple précédent aura un ensemble d'instructions assez important qu'il peut exécuter. La collection d'instructions est implémentée sous forme de modèles de bits, chacun ayant une signification différente lorsqu'il est chargé dans le registre d'instructions. Les humains ne sont pas particulièrement doués pour se souvenir des modèles de bits, de sorte qu'un ensemble de mots courts est défini pour représenter les différents modèles de bits. Cette collection de mots s'appelle le langage d'assemblage du processeur. Une assembleur peut traduire les mots en leurs modèles de bits très facilement, puis la sortie de l'assembleur est placée en mémoire pour que le microprocesseur s'exécute.

Voici l'ensemble des instructions en langage d'assemblage que le concepteur peut créer pour le microprocesseur simple de notre exemple:

  • LOADA mem - Charger le registre A à partir de l'adresse mémoire
  • LOADB mem - Charger le registre B à partir de l'adresse mémoire
  • CONB con - Charger une valeur constante dans le registre B
  • SAVEB mem - Enregistrer le registre B dans l'adresse mémoire
  • SAVEC mem - Enregistrer le registre C dans l'adresse mémoire
  • AJOUTER - Ajouter A et B et stocker le résultat dans C
  • SOUS - Soustraire A et B et stocker le résultat dans C
  • MUL - Multipliez A et B et stockez le résultat dans C
  • DIV - Divisez A et B et stockez le résultat dans C
  • COM - Comparez A et B et stockez le résultat dans le test
  • ADR JUMP - Aller à une adresse
  • Adr JEQ - Aller, si égal, à l'adresse
  • JNEQ addr - Sauter, s'il n'est pas égal, à l'adresse
  • Adr JG - Sauter, s'il est supérieur à, à l'adresse
  • Adr JGE - Sauter, s'il est supérieur ou égal, à l'adresse
  • Adr JL - Sauter, s'il est inférieur à, à l'adresse
  • Adr JLE - Sauter, s'il est inférieur ou égal, à l'adresse
  • ARRÊTEZ - Arrêter l'exécution

Si vous avez lu Comment fonctionne la programmation C, vous savez que ce simple morceau de code C calculera la factorielle de 5 (où la factorielle de 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


a = 1; f = 1; tandis que (a <= 5) f = f * a; a = a + 1;

A la fin de l'exécution du programme, la variable F contient la factorielle de 5.

Langue d'assemblage

UNE Compilateur C traduit ce code C en langage d'assemblage. En supposant que la RAM commence à l'adresse 128 dans ce processeur et que la ROM (qui contient le programme de langage d'assemblage) commence à l'adresse 0, alors pour notre microprocesseur simple, le langage d'assemblage pourrait ressembler à ceci:


// Supposons que a est à l'adresse 128 // Supposons que F est à l'adresse 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // si a> 5 le saut à 175 CONB 56 COM7 JG 178 LOADA 129 // f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // retourne à if17 STOP

ROM

Alors maintenant, la question est: "À quoi ressemblent toutes ces instructions dans la ROM?" Chacune de ces instructions en langage assembleur doit être représentée par un nombre binaire. Pour des raisons de simplicité, supposons que chaque instruction de langage d'assemblage reçoit un numéro unique, comme ceci:

  • LOADA - 1
  • CHARGEB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • AJOUTER - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP adr - 11
  • Adresse JEQ - 12
  • Adr JNEQ - 13
  • JG adr - 14
  • Adr JGE - 15
  • JL adr - 16
  • Adr JLE - 17
  • ARRÊT - 18

Les nombres sont connus comme opcodes. En ROM, notre petit programme ressemblerait à ceci:


// Supposons que a soit à l'adresse 128 // Suppose que F soit à l'adresse 129Addr opcode / value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430831 18 // STOP

Vous pouvez voir que sept lignes de code C sont devenues 18 lignes de langage d'assemblage, et cela est devenu 32 octets en ROM.

Décodage

Le décodeur d'instructions doit transformer chacun des opcodes en un ensemble de signaux qui pilotent les différents composants à l'intérieur du microprocesseur. Prenons l'instruction ADD comme exemple et voyons ce qu'elle doit faire:

  1. Au cours du premier cycle d'horloge, nous devons effectivement charger l'instruction. Par conséquent, le décodeur d'instructions doit: activer le tampon à trois états pour le compteur de programme activer la ligne RD activer le tampon à trois états d'entrée de données verrouiller l'instruction dans le registre d'instructions
  2. Pendant le deuxième cycle d'horloge, l'instruction ADD est décodée. Il a besoin de très peu de choses: régler le fonctionnement de l'ALU pour verrouiller en plus la sortie de l'ALU dans le registre C
  3. Pendant le troisième cycle d'horloge, le compteur de programme est incrémenté (en théorie, cela pourrait se chevaucher dans le deuxième cycle d'horloge).

Chaque instruction peut être décomposée en un ensemble d'opérations séquencées comme celles-ci qui manipulent les composants du microprocesseur dans le bon ordre. Certaines instructions, comme cette instruction ADD, peuvent prendre deux ou trois cycles d'horloge. D'autres peuvent prendre cinq ou six cycles d'horloge.

Le nombre de transistors disponible a un effet énorme sur les performances d'un processeur. Comme vu précédemment, une instruction typique dans un processeur comme un 8088 a nécessité 15 cycles d'horloge pour s'exécuter. En raison de la conception du multiplicateur, il a fallu environ 80 cycles pour effectuer une seule multiplication 16 bits sur le 8088. Avec plus de transistors, des multiplicateurs beaucoup plus puissants capables de vitesses à un cycle deviennent possibles.

Plus de transistors permettent également une technologie appelée pipelining. Dans une architecture en pipeline, l'exécution des instructions se chevauche. Ainsi, même si l'exécution de chaque instruction peut prendre cinq cycles d'horloge, il peut y avoir cinq instructions à différentes étapes d'exécution simultanément. De cette façon, il semble qu'une instruction complète chaque cycle d'horloge.

De nombreux processeurs modernes ont plusieurs décodeurs d'instructions, chacun avec son propre pipeline. Cela permet plusieurs flux d'instructions, ce qui signifie que plus d'une instruction peut se terminer au cours de chaque cycle d'horloge. Cette technique peut être assez complexe à mettre en œuvre, elle prend donc beaucoup de transistors.

Les tendances

La tendance dans la conception de processeurs a été principalement vers des ALU 32 bits complètes avec des processeurs à virgule flottante rapides intégrés et une exécution en pipeline avec plusieurs flux d'instructions. La dernière nouveauté dans la conception de processeurs est les ALU 64 bits, et les utilisateurs devraient avoir ces processeurs dans leur PC domestique au cours de la prochaine décennie. Il y a également eu une tendance vers des instructions spéciales (comme les instructions MMX) qui rendent certaines opérations particulièrement efficaces, et l'ajout de la prise en charge de la mémoire virtuelle matérielle et de la mise en cache L1 sur la puce du processeur. Toutes ces tendances font grimper le nombre de transistors, conduisant à des centrales de plusieurs millions de transistors disponibles aujourd'hui. Ces processeurs peuvent exécuter environ un milliard d'instructions par seconde!

Photo courtoisie AMD

Les processeurs 64 bits sont avec nous depuis 1992, et au 21ème siècle, ils ont commencé à devenir courants. Intel et AMD ont tous deux introduit des puces 64 bits et le Mac G5 est doté d'un processeur 64 bits. Les processeurs 64 bits ont des ALU 64 bits, des registres 64 bits, des bus 64 bits, etc..

L'une des raisons pour lesquelles le monde a besoin de processeurs 64 bits est à cause de leur espaces d'adressage agrandis. Les puces de trente-deux bits sont souvent limitées à un maximum de 2 Go ou 4 Go d'accès RAM. Cela semble beaucoup, étant donné que la plupart des ordinateurs personnels n'utilisent actuellement que 256 Mo à 512 Mo de RAM. Cependant, une limite de 4 Go peut être un problème grave pour les machines serveur et les machines exécutant de grandes bases de données. Et même les ordinateurs domestiques commenceront bientôt à se heurter à la limite de 2 Go ou 4 Go si les tendances actuelles se poursuivent. Une puce 64 bits n'a aucune de ces contraintes car un espace d'adressage RAM 64 bits est essentiellement infini dans un avenir prévisible - 2 ^ 64 octets de RAM représentent quelque chose de l'ordre d'un milliard de gigaoctets de RAM.

Avec un bus d'adresse 64 bits et de larges bus de données à haut débit sur la carte mère, les machines 64 bits offrent également des vitesses d'E / S (entrée / sortie) plus rapides pour des éléments tels que les disques durs et les cartes vidéo. Ces fonctionnalités peuvent considérablement augmenter les performances du système.

Les serveurs peuvent certainement bénéficier de 64 bits, mais qu'en est-il des utilisateurs normaux? Au-delà de la solution RAM, il n'est pas certain qu'une puce 64 bits offre aux "utilisateurs normaux" des avantages réels et tangibles pour le moment. Ils peuvent traiter les données (les données très complexes comportent beaucoup de nombres réels) plus rapidement. Les gens qui font du montage vidéo et ceux qui font du montage photographique sur de très grandes images bénéficient de ce type de puissance de calcul. Les jeux haut de gamme en bénéficieront également, une fois qu'ils seront recodés pour tirer parti des fonctionnalités 64 bits. Mais l'utilisateur moyen qui lit des e-mails, navigue sur le Web et édite des documents Word n'utilise pas vraiment le processeur de cette manière.

Pour plus d'informations sur les microprocesseurs et les sujets connexes, consultez les liens sur la page suivante.

Articles Liés

  • Quiz CPU
  • Pourquoi y a-t-il des limites sur la vitesse du processeur?
  • Comment fonctionnent les semi-conducteurs
  • Comment fonctionnent les PC
  • Comment fonctionne la programmation C
  • Comment fonctionne Java
  • Comment fonctionnent les systèmes d'exploitation
  • Fonctionnement de la mémoire de l'ordinateur
  • Fonctionnement des ordinateurs quantiques
  • Comment fonctionnent les ordinateurs à ADN

Plus de liens intéressants

  • Webopedia: microprocesseur
  • Cliquez sur CPU
  • Mises à niveau du processeur
  • Comparaisons des processeurs de 6e génération
  • Comparaisons des processeurs de 7e génération
  • Scores de référence TSCP



Personne n'a encore commenté ce post.

Les articles les plus intéressants sur les secrets et les découvertes. Beaucoup utiles sur tout
Articles sur la science, la technologie, la santé, la culture. Expliquer des milliers de sujets pour savoir comment tout fonctionne