Comment une CPU «connait-elle» ce que les commandes et les instructions signifient en réalité?

Comment un processeur «connaît-il» ce que signifient les différentes commandes?

Je pense aux commandes de niveau d'assemblage comme MOV, PUSH, CALL, etc.

6 Solutions collect form web for “Comment une CPU «connait-elle» ce que les commandes et les instructions signifient en réalité?”

Lorsqu'un ordinateur interprète les instructions de niveau d' assemblage , ces instructions sont transformées en équivalents binaires pour la CPU à lire. Lorsque la CPU exécute les instructions, elle interprète la partie opcode de l'instruction dans des «microprogrammes» individuels contenant leurs équivalents de microcode . Juste pour que vous le sachiez, une instruction de montage complète consiste en un opcode et toute donnée pertinente qui l'accompagne, si nécessaire (p. Ex. Noms de registre, adresses de mémoire).

Les instructions du microcode sont extrêmement bas (plus encore, assemblage) et contrôlent les signaux numériques réels qui contrôlent le flux de logique dans le microprocesseur. Par exemple, une instruction de microcode pourrait mettre à jour un indicateur de registre de code de condition avec une nouvelle valeur ou connecter un registre de CPU avec l'une des unités ALU . Des tâches plus complexes sont possibles, mais cela vous montre l'idée générale de l'utilisation de ce microcode.

Le flux général de la compilation à l'exécution est le suivant. Les instructions d'assemblage sont assemblées (transformées en équivalent binaire 0s et 1s, ou maintenant, signaux logiques). Ces signaux logiques sont interprétés en continu par la CPU et transformés en plus de signaux logiques de bas niveau qui dirigent le flux de la CPU pour exécuter l'instruction particulière. Cela peut prendre un ou plusieurs cycles d'horloge, en fonction de l'architecture et de la conception du processeur (la plupart des manuels de référence du processeur vous indiquent combien de cycles d'horloge il faut pour exécuter une instruction particulière, comme celle-ci par exemple ).

Tout cela se fait avec un microcode programmé (incorporé physiquement dans le processeur dans une sorte de ROM , configuré pendant la fabrication), qui dirige le flux à travers les portes logiques de bas niveau réelles. Cela fournit une interface entre les instructions d'assemblage abstraites et la logique électrique physique dans le processeur.


Ainsi, en résumé, les instructions du processeur sont assemblées et chargées par le processeur. Le processeur utilisera ensuite ces instructions pour rechercher le microprogramme (sous forme de microcode) correspondant à cette instruction particulière, ce qui est "effectivement" qui exécute l'instruction. Une fois que les microcodes de l'instruction particulière ont été exécutés (ce qui peut prendre un ou plusieurs cycles d'horloge), le processeur exécute le microcode pour récupérer l'instruction suivante et le cycle se répète.

Le processeur ne sait pas vraiment ce que sont les commandes. Les commandes ne sont que des modèles binaires qui font que le processeur fait ce que nous interprétons les commandes comme signifiant.

Par exemple, une opération ADD-R1-en-R2 entraînera la saisie des valeurs des registres 1 et 2 pour l'ALU (unité arithmétique et logique), provoquant l'utilisation de la sortie de l'additionneur au lieu des différentes autres choses et provoquant Sortie de l'ALU pour remplacer la valeur dans le registre 2. Il existe des circuits logiques simples pour réaliser toutes ces choses ( multiplexeur , additionneur , compteur , …), bien que les processeurs réels utilisent des optimisations très compliquées.

C'est un peu comme vous demandez comment une voiture sait ralentir lorsque vous appuyez sur les freins. La voiture ne le sait pas, la pédale de frein ne fait que contrôler de façon indirecte comment les coussinets durs sont pressés contre les roues.

Prenez, par exemple, l'instruction qui indique à un processeur x86 / IA-32 de déplacer une valeur de 8 bits immédiate dans un registre. Le code binaire de cette instruction est 10110 suivi d'un identifiant 3 bits pour lequel le registre doit être utilisé. L'identifiant pour le registre AL est de 000, de sorte que le code machine suivant charge le registre AL avec les données 01100001.

10110000 01100001

Ce code informatique binaire peut être rendu plus lisible par l'homme en l'exprimant en hexadécimal comme suit

B0 61

Ici, B0 signifie 'Déplacer une copie de la valeur suivante en AL', et 61 est une représentation hexadécimale de la valeur 01100001, qui est 97 en décimale. Le langage d'assemblage Intel fournit le MOV mnémonique (une abréviation de déplacement) pour des instructions comme celle-ci, de sorte que le code de machine ci-dessus peut être écrit comme suit dans le langage d'assemblage, compléter avec un commentaire explicatif, si nécessaire, après le point-virgule. C'est beaucoup plus facile à lire et à se rappeler.

http://en.wikipedia.org/wiki/Assembler_language

En d'autres termes, lorsque vous assemblez votre programme d'assemblage, vos instructions telles que

MOV AL, 61h

Sont convertis en nombres, que la CPU associe une signification particulière et agit ensuite en conséquence.

Lecture suggérée:

  • Bebop au boogie boolean par Clive Maxfield
  • Conception numérique et architecture informatique par Harris et Harris
  • Organisation et conception d'ordinateurs: l'interface matériel / logiciel de Patterson et Hennessy

Découvrez également les notes de cours de CS152: Computer Architecture and Engineering à UC Berkeley, un cours dans lequel les élèves mettent en œuvre une CPU.

Si vous google pour "PC à la maison", vous trouverez beaucoup de cadeaux.

À l'extrême le plus bas niveau, tout le processeur peut faire est ajouter. De l'addition, il peut soustraire, multiplier et diviser (vu que ce sont simplement l'addition d'une manière différente). La CPU utilise ceci pour déplacer les données dans la mémoire en appliquant les ajouts aux adresses de mémoire.

Gardez à l'esprit toutefois que cela est au plus bas niveau possible. Le processeur en fait "comprend" certaines commandes, sous forme de microcode. Voir la réponse de Breakthrough, c'est très bien écrit.

J'ai donné une réponse connexe à programmers.stackexchange.com, voir Comment fonctionnent les ordinateurs? Où j'ai marché brièvement sur tout, à partir de la base de savoir comment les ordinateurs utilisent l'interprétation des instructions aux électrons en mouvement.

Soyons le génie de l'ordinateur et du réseau.