74 votes

Comment un processeur "sait" ce que les commandes et les instructions signifient réellement ?

Comment un processeur "sait-il" ce que signifient les différentes commandes ?

Je pense à des commandes de niveau assembleur comme MOV, PUSH, CALL, etc...

88voto

Breakthrough Points 33693

Quand un ordinateur interprète montage Ces instructions sont transformées en leurs équivalents binaires pour que le CPU puisse les lire. Lorsque l'unité centrale exécute les instructions, elle interprète la partie opcode de l'instruction en "microprogrammes" individuels, contenant leurs équivalents binaires. microcode équivalents. Pour votre information, une instruction complète en assembleur se compose d'un code opération et de toutes les données applicables qui l'accompagnent, le cas échéant (par exemple, les noms de registre, les adresses mémoire).

Les instructions du microcode sont de très bas niveau (plus que l'assemblage) et contrôlent les signaux numériques réels qui commandent le flux logique dans le microprocesseur. Par exemple, une instruction de microcode pourrait mettre à jour un fichier registre de code de condition avec une nouvelle valeur, ou connecter un CPU enregistrez avec l'un des ALU unités. Des tâches plus complexes sont possibles, mais cela vous donne une idée générale de ce qu'il faut faire. ce que Le microcode est utilisé pour.

Le flux général de la compilation à l'exécution est le suivant. Les instructions d'assemblage sont assemblées (transformées en leurs équivalents binaires 0 et 1, ou dorénavant en signaux logiques). Ces signaux logiques sont à leur tour interprétés par l'UC et transformés en signaux logiques de plus bas niveau qui dirigent le flux de l'UC pour exécuter l'instruction particulière. Cela peut prendre un ou plusieurs cycles d'horloge, selon l'architecture et la conception du processeur (la plupart des manuels de référence des processeurs vous indiquent le nombre de cycles d'horloge nécessaires à l'exécution d'une instruction particulière, comme celui-ci par exemple ).

Tout cela se fait par le biais d'un microcode programmé en dur (physiquement intégré dans le processeur dans une sorte de ROM défini lors de la fabrication), qui dirige le flux à travers des systèmes de bas niveau réels. portes logiques . Cela fournit une interface entre les instructions d'assemblage abstraites et la logique électrique physique dans le processeur.


Donc, en résumé, les instructions du processeur sont assemblées et chargées par le processeur. Le processeur utilise ensuite ces instructions pour rechercher le microprogramme (sous forme de microcode) correspondant à cette instruction particulière, qui est ce qui exécute "réellement" 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.

36voto

HTDutchy Points 349

Le processeur ne "sait" pas vraiment ce que sont les commandes. Les commandes ne sont que des motifs binaires qui amènent le processeur à faire ce que nous interprétons comme signifiant les commandes.

Par exemple, une opération ADD-R1-into-R2 fera en sorte que les valeurs des registres 1 et 2 atteignent l'UAL (unité arithmétique et logique), que l'UAL utilise la sortie de l'additionneur au lieu des autres éléments, et que la sortie de l'UAL remplace la valeur du registre 2. Il existe des circuits logiques simples pour réaliser toutes ces choses ( multiplexeur , adder , compteur ...), bien que les processeurs réels utilisent des optimisations très complexes.

C'est un peu comme si vous demandiez comment une voiture sait qu'elle doit ralentir lorsque vous appuyez sur les freins. La voiture ne le sait pas, la pédale de frein se trouve juste à contrôler indirectement la force avec laquelle les plaquettes sont pressées contre les roues.

9voto

Trey Parkman Points 59

Prenons, par exemple, l'instruction qui indique à un processeur x86/IA-32 de de déplacer une valeur immédiate de 8 bits dans un registre. Le code binaire de cette instruction est 10110 suivi d'un identificateur de 3 bits indiquant le registre à registre à utiliser. L'identificateur du registre AL est 000, donc l'instruction suivante code machine suivant charge le registre AL avec les données 01100001.

10110000 01100001

Ce binaire code informatique 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 dans AL', et 61 est une représentation hexadécimale de de la valeur 01100001, qui est 97 en décimal. Le langage d'assemblage Intel fournit le mnémonique MOV (un symbole abréviation de move) pour les instructions telles que celle-ci, de sorte que le code machine ci-dessus peut être écrit comme suit en langage d'assemblage, avec un commentaire commentaire explicatif si nécessaire, après le point-virgule. C'est beaucoup plus facile à facile à lire et à mémoriser.

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 chiffres, auxquels l'unité centrale de traitement associe une signification particulière et agit en conséquence.

5voto

nibot Points 1752

Lecture suggérée :

Consultez également les notes de cours de CS152 : Architecture et ingénierie des ordinateurs à UC Berkeley, un cours dans lequel les étudiants implémentent un CPU.

Si vous cherchez sur Google "home-built cpu", vous trouverez beaucoup de choses intéressantes.

3voto

n0pe Points 15782

Au niveau le plus bas, tout ce que le CPU peut faire est d'ajouter. À partir de l'addition, il peut soustraire, multiplier et diviser (puisqu'il s'agit simplement d'additionner d'une manière différente). Le CPU s'en sert pour déplacer les données dans la mémoire en appliquant les additions aux adresses mémoire.

N'oubliez pas cependant qu'il s'agit du niveau le plus bas possible. Le CPU "comprend" en fait certaines commandes, sous la forme de microcode. Voir la réponse de Breakthrough, elle est très bien écrite.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X