HTG explique comment un processeur fonctionne réellement?
La plupart des choses dans un ordinateur sont relativement simples à comprendre: la RAM, le stockage, les périphériques et le logiciel travaillent 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 savoir?» De J. Clark Scott. C'est une lecture fantastique, qui va beaucoup plus en profondeur 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 personne de comprendre toutes les nuances d'une puce comportant plus d'un milliard de transistors. Cependant, les principes de base de la mise en place de tous ces éléments restent les mêmes et la compréhension des bases vous permettra de mieux comprendre les systèmes modernes..
Commencer petit
Les ordinateurs fonctionnent en binaire. Ils ne comprennent que deux états: on et off. 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. Cela forme essentiellement un commutateur binaire, qui coupe le fil en fonction d'un second signal d'entrée.
Les ordinateurs modernes utilisent des milliards de transistors pour effectuer des calculs, mais aux niveaux les plus bas, vous n’avez besoin que de quelques-uns pour former les composants les plus élémentaires, appelés portes..
Des portes logiques
Empiler quelques transistors correctement, et vous avez ce qu'on appelle une porte logique. Les portes logiques prennent deux entrées binaires, effectuent une opération dessus et renvoient une sortie. La porte OU, par exemple, renvoie vrai si l'une des entrées est vraie. La porte AND 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 maths avec des portes
Avec seulement deux portes, vous pouvez effectuer une addition binaire de base. Ce diagramme ci-dessus montre un demi-additionneur, créé à l'aide de Logicly, un terrain de jeu en ligne gratuit pour les portes logiques. La porte XOR s’allumera ici si une seule des entrées est activée, mais pas les deux. La porte AND 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 AND s’allume pour arriver à la réponse correcte de deux:
Cela nous donne une configuration simple avec trois sorties distinctes: zéro, un et deux. Mais un bit ne peut rien stocker au-dessus de 1, et cette machine n’est pas très utile car elle ne résout que l’un des problèmes mathématiques les plus simples possibles. Mais ceci n'est qu'un demi-additionneur, et si vous connectez deux d'entre eux 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 sera passé d'un additionneur à l'autre. Le report est ajouté au résultat de la porte XOR dans l'addition de la première moitié, et il y a une porte OU supplémentaire pour gérer les deux cas où le so doit être activé..
Lorsque les deux entrées sont activées, le report est activé et envoyé 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 addition. la multiplication est simplement additionnée, la soustraction peut être faite avec une 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 d'autre qu'une mauvaise calculatrice. C'est parce qu'il ne peut se souvenir de rien et ne fait rien avec ses sorties. Ci-dessus, une cellule de mémoire, qui peut faire tout cela. Sous le capot, il utilise beaucoup de portes NAND et, dans la réalité, il peut être très différent en fonction de la technique de stockage, mais sa fonction est identique. Vous lui donnez des entrées, activez le bit 'write', et il stockera les entrées à l'intérieur de la cellule. Ce n'est pas simplement une cellule de mémoire, car nous avons également besoin d'un moyen de lire les informations. Cela se 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 «lu». Les bits d’écriture et de lecture sont souvent appelés «set» et «enable»..
Tout ce paquet est emballé dans ce qu'on appelle un registre. Ces registres sont connectés au bus, qui est un faisceau de fils parcourant l’ensemble du système, connecté à chaque composant. Même les ordinateurs modernes ont un bus, bien qu'ils puissent en avoir plusieurs 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 identiques. C'est vraiment bien. Par exemple. Si vous voulez copier le contenu de R1 dans R2, vous devez activer le bit de lecture pour R1, ce qui pousserait le contenu de R1 sur le bus. Lorsque le bit de lecture est activé, vous activez le bit d’écriture pour R2, qui copie 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 active 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 d’écriture et de lecture centrale. Les entrées lecture et écriture ne s’allumeront que si les deux fils traversant le registre le sont également, ce qui vous permet de sélectionner le registre à partir duquel vous souhaitez é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 la CPU. Alors, que leur dit de déplacer les choses?
L'horloge est le premier composant du cœur de la CPU et s'éteint et s'allume à un intervalle défini, mesuré en hertz, ou cycles par seconde. C'est la vitesse que vous voyez annoncée aux côtés des processeurs; une puce à 5 GHz peut effectuer 5 milliards de cycles par seconde. La vitesse d'horloge est souvent une très bonne métrique pour la rapidité d'un processeur.
L'horloge a trois états différents: l'horloge de base, l'horloge d'activation et l'horloge définie. L'horloge de base sera allumée pendant un demi-cycle et éteinte pour l'autre moitié. L'horloge d'activation est utilisée pour activer les registres et doit être activée plus longtemps pour s'assurer que les données sont activées. L'horloge réglée doit toujours être allumé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 à l'échelon maximum et se réinitialisera automatiquement à la fin de l'opération. L'horloge est également connectée aux portes AND pour chaque registre sur 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'instruction prend une instruction du type "SET R2 TO R1" et la décode en quelque chose que le CPU peut comprendre. Il possède son propre registre interne, appelé «Registre d'instructions», où est stockée l'opération en cours. Comment cela fonctionne exactement, cela dépend du système sur lequel vous travaillez, mais une fois qu'il est décodé, il activera le bon ensemble et activera les bits pour les registres appropriés, qui se déclencheront en fonction de l'horloge..
Les instructions de programme sont stockées dans la RAM (ou le cache L1 sur les systèmes modernes, plus proches de la CPU). Comme 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 naviguer dans le programme. C'est ainsi que les programmes obtiennent leur structure, avec des boucles et des déclarations if. Une instruction de saut définit l’emplacement actuel en mémoire que le décodeur d’instruction lit dans un emplacement différent.
Comment tout ça vient ensemble
Notre simplification excessive du fonctionnement d'un processeur est maintenant terminée. Le bus principal couvre l’ensemble du système et se connecte à tous les registres. Les additionneurs complets, ainsi que de nombreuses autres opérations, sont regroupés dans l'unité de logique arithmétique, ou ALU. Cette ALU sera connectée au bus et disposera également de 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 de la mémoire vive du système dans la section de contrôle. La section de contrôle lit deux nombres dans la RAM, charge le premier dans le registre d'instructions de l'ALU, puis charge le second sur le bus. En attendant, l’ALU envoie 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, que la CPU peut lire puis poursuivre le processus..
Crédit d'image: Rost9 / Shutterstock