La plupart des éléments d'un ordinateur sont relativement simples à comprendre: la RAM, le stockage, les périphériques et le logiciel fonctionnent tous ensemble pour faire fonctionner un ordinateur. Mais le cœur de votre système, le processeur, semble magique même pour de nombreux techniciens. Ici, nous ferons de notre mieux pour le décomposer.
La plupart des recherches pour cet article proviennent de «Mais comment le sait-il?» par J. Clark Scott. C'est une lecture fantastique, qui va beaucoup plus loin que cet article et qui vaut bien les quelques dollars sur Amazon.
Une remarque avant de commencer: les processeurs modernes sont des ordres de grandeur plus complexes que ce que nous décrivons ici. Il est presque impossible pour une seule personne de comprendre toutes les nuances d’une puce avec plus d’un milliard de transistors. Cependant, les principes de base de la façon dont tout cela s'articule restent les mêmes, et comprendre les bases vous donnera une meilleure compréhension des systèmes modernes.
Commencer petit
Les ordinateurs fonctionnent dans binaire . Ils ne comprennent que deux états: activé et désactivé. Pour effectuer des calculs en binaire, ils utilisent ce qu'on appelle un transistor. Le transistor ne permet au courant source de le traverser vers le drain que s'il y a du courant à travers la grille. Essentiellement, cela forme un commutateur binaire, qui coupe le fil en fonction d'un deuxième signal d'entrée.
EN RELATION: Qu'est-ce que le binaire et pourquoi les ordinateurs l'utilisent-ils?
Les ordinateurs modernes utilisent des milliards de transistors pour effectuer des calculs, mais aux niveaux les plus bas, vous n'en avez besoin que d'une poignée pour former les composants les plus basiques, appelés portes.
Des portes logiques
Empilez correctement quelques transistors et vous obtenez ce que l’on appelle une porte logique. Les portes logiques prennent deux entrées binaires, effectuent une opération sur elles et renvoient une sortie. La porte OU, par exemple, retourne vrai si l'une des entrées est vraie. La porte ET vérifie si les deux entrées sont vraies, XOR vérifie si une seule des entrées est vraie et les N-variantes (NOR, NAND et XNOR) sont des versions inversées de leurs portes de base.
Faire des mathématiques avec des portes
Avec seulement deux portes, vous pouvez faire une addition binaire de base. Ce diagramme ci-dessus montre un demi-additionneur, créé en utilisant Logiquement , un terrain de jeu en ligne gratuit pour les portes logiques. La porte XOR s'activera ici si une seule des entrées est activée, mais pas les deux. La porte ET s'active si les deux entrées sont activées, mais reste désactivée s'il n'y a pas d'entrée. Donc, si les deux sont allumés, le XOR reste éteint et la porte ET s'active, pour arriver à la bonne réponse de deux:
Cela nous donne une configuration simple avec trois sorties distinctes: zéro, un et deux. Mais un bit ne peut rien stocker de plus de 1, et cette machine n’est pas trop utile car elle ne résout qu’un des problèmes mathématiques les plus simples possibles. Mais ce n'est qu'un demi-additionneur, et si vous en connectez deux avec une autre entrée, vous obtenez un additionneur complet:
L'additionneur complet a trois entrées: les deux nombres à ajouter et un «report». Le report est utilisé lorsque le nombre final dépasse ce qui peut être stocké dans un seul bit. Les additionneurs complets seront liés dans une chaîne, et le report est passé d'un additionneur à l'autre. Le report est ajouté au résultat de la porte XOR dans l'additionneur de la première moitié, et il y a une porte OU supplémentaire pour gérer les deux cas où le donc devrait être activé.
Lorsque les deux entrées sont activées, le report s'active et l'envoie au prochain additionneur complet de la chaîne:
Et c'est à peu près aussi complexe que l'addition devient. Passer à plus de bits signifie essentiellement plus d'additionneurs complets dans une chaîne plus longue.
La plupart des autres opérations mathématiques peuvent être effectuées avec l'addition; la multiplication est juste une addition répétée, la soustraction peut être faite avec une certaine inversion de bits fantaisie, et la division est juste une soustraction répétée. Et bien que tous les ordinateurs modernes disposent de solutions matérielles pour accélérer les opérations plus complexes, vous pouvez techniquement tout faire avec l'additionneur complet.
Le bus et la mémoire
À l'heure actuelle, notre ordinateur n'est rien de plus qu'une mauvaise calculatrice. En effet, il ne se souvient de rien et ne fait rien avec ses sorties. Ci-dessus, une cellule mémoire, qui peut faire tout cela. Sous le capot, il utilise beaucoup de portails NAND, et dans la vraie vie peut être assez différent selon la technique de stockage, mais sa fonction est la même. Vous lui donnez quelques entrées, activez le bit «écriture» et il stockera les entrées dans la cellule. Il ne s’agit pas simplement d’une cellule mémoire, car nous avons également besoin d’un moyen de lire les informations à partir de celle-ci. Ceci est fait avec un activateur, qui est une collection de portes ET pour chaque bit de la mémoire, toutes liées à une autre entrée, le bit «lecture». Les bits d'écriture et de lecture sont souvent également appelés «set» et «enable».
L'ensemble de ce package est emballé dans ce que l'on appelle un registre. Ces registres sont connectés au bus, qui est un faisceau de fils parcourant tout le système, connecté à chaque composant. Même les ordinateurs modernes ont un bus, bien qu'ils puissent avoir plusieurs bus pour améliorer les performances multitâches.
Chaque registre a toujours un bit d'écriture et de lecture, mais dans cette configuration, l'entrée et la sortie sont la même chose. C'est vraiment bien. Par exemple. Si vous vouliez copier le contenu de R1 dans R2, vous allumeriez le bit de lecture pour R1, ce qui pousserait le contenu de R1 sur le bus. Lorsque le bit de lecture est activé, vous devez activer le bit d’écriture pour R2, ce qui copierait le contenu du bus dans R2.
Les registres sont également utilisés pour créer de la RAM. La RAM est souvent disposée dans une grille, avec des fils allant dans deux directions:
Les décodeurs prennent une entrée binaire et activent le fil numéroté correspondant. Par exemple, «11» est 3 en binaire, le nombre de 2 bits le plus élevé, de sorte que le décodeur allume le fil le plus élevé. À chaque intersection, il y a un registre. Tous ces éléments sont connectés au bus central et à une entrée centrale d'écriture et de lecture. Les entrées de lecture et d'écriture ne seront activées que si les deux fils qui traversent le registre sont également activés, ce qui vous permet de sélectionner le registre à partir duquel écrire et lire. Encore une fois, la RAM moderne est beaucoup plus compliquée, mais cette configuration fonctionne toujours.
L'horloge, le stepper et le décodeur
Les registres sont utilisés partout et constituent l'outil de base pour déplacer des données et stocker des informations dans le processeur. Alors, qu'est-ce qui leur dit de déplacer les choses?
L'horloge est le premier composant du cœur du processeur et s'éteint et se rallume à un intervalle défini, mesuré en hertz ou en cycles par seconde. C'est la vitesse que vous voyez annoncée à côté des processeurs; une puce de 5 GHz peut effectuer 5 milliards de cycles par seconde. La vitesse d'horloge est souvent une très bonne mesure de la vitesse d'un processeur.
L'horloge a trois états différents: l'horloge de base, l'horloge d'activation et l'horloge réglée. L'horloge de base sera activée pendant un demi-cycle et désactivée pendant l'autre moitié. L'horloge d'activation est utilisée pour activer les registres et devra être allumée plus longtemps pour s'assurer que les données sont activées. L'horloge réglée doit toujours être activée en même temps que l'horloge d'activation, sinon des données incorrectes pourraient être écrites.
L'horloge est connectée au stepper, qui comptera de un au pas maximum, et se réinitialisera à un une fois terminé. L'horloge est également connectée aux portes ET pour chaque registre dans lequel la CPU peut écrire:
Ces portes ET sont également connectées à la sortie d'un autre composant, le décodeur d'instructions. Le décodeur d'instructions prend une instruction telle que «SET R2 TO R1» et la décode en quelque chose que le CPU peut comprendre. Il dispose de son propre registre interne, appelé «registre d'instructions», dans lequel l'opération en cours est stockée. La façon dont cela se produit exactement dépend du système sur lequel vous utilisez, mais une fois décodé, il activera le jeu correct et activera les bits pour les registres corrects, qui se déclencheront conformément à l'horloge.
Les instructions du programme sont stockées dans la RAM (ou cache L1 sur les systèmes modernes, plus près du CPU). Étant donné que les données du programme sont stockées dans des registres, comme toutes les autres variables, elles peuvent être manipulées à la volée pour parcourir le programme. C'est ainsi que les programmes obtiennent leur structure, avec des boucles et des instructions if. Une instruction de saut définit l'emplacement actuel en mémoire à partir duquel le décodeur d'instructions lit à un emplacement différent.
Comment tout se déroule
Maintenant, notre simplification excessive du fonctionnement d'un processeur est terminée. Le bus principal couvre tout le système et se connecte à tous les registres. Les additionneurs complets, ainsi qu'un tas d'autres opérations, sont emballés dans l'unité logique arithmétique, ou l'ALU. Cette ALU aura des connexions au bus, et aura également ses propres registres pour stocker le deuxième numéro sur lequel elle fonctionne.
Pour effectuer un calcul, les données du programme sont chargées depuis la RAM système dans la section de commande. La section de contrôle lit deux nombres de la RAM, charge le premier dans le registre d’instruction de l’ALU, puis charge le second sur le bus. Pendant ce temps, il envoie à l'ALU un code d'instruction lui indiquant quoi faire. L'ALU effectue ensuite tous les calculs et stocke le résultat dans un registre différent, dans lequel la CPU peut lire et continuer le processus.
Image Credit: Rost9 / Shutterstock