2015-10-08 7 views
4

Quelle est la différence entre une instruction machine et une micro-op? J'ai trouvé une définition suivante here:Différence entre une instruction et un micro-op

Une petite, l'instruction de base, utilisé en série pour constituer une instruction machine à haut niveau

Voici ce que j'ai trouvé sur Wikipedia

Dans les unités centrales de traitement informatique, les micro-opérations (également appelées a micro-ops ou μops) sont des instructions détaillées de bas niveau utilisées dans certaines conceptions pour mettre en œuvre c instructions machine omplex (parfois appelées macro-instructions dans ce contexte)

suis-je comprendre que les micro-op est une instruction de processeur qui exécute dans un cycle donné. Dire comme et ajouter, SUB, MUL, ST, LD. Est-ce que je manque quelque chose?

Toute aide est appréciée.

+1

Les micro-opérations sont essentiellement un moyen de transformer les instructions CISC en instructions RISC. Par exemple, la plupart des RISC sont exclusivement à chargement de charge (la plupart des instructions ne fonctionnent que sur les registres), alors que les CISC peuvent fonctionner directement sur des opérandes de mémoire. Sur les microarchitectures CISC modernes, la partie chargement/mémorisation d'une instruction peut être découplée de l'opération ALU en émettant deux micro-instructions. – EOF

+0

@EOF Donc, fondamentalement, ce sont des instructions machine. Ce n'est pas tout d'eux sont visibles pour le programmeur. En d'autres termes, un programmeur peut écrire des instructions d'assemblage, mais un compilateur le décomposera en 2 ou 3 instructions. Ai-je raison? – flashburn

+1

Pas tout à fait. Je regarderais la différence entre un ISA et une micro-architecture pour le comprendre. Ce n'est pas le compilateur qui transforme les instructions machine (définies par l'ISA) en micro-instructions, c'est le CPU lui-même. – EOF

Répondre

4

Il y a quelques années, il a été découvert que RISC était meilleur que CISC: si vous vouliez un processeur à très haut débit, vous vouliez que toutes vos instructions soient très simples: cela leur permet de terminer dans un court laps de temps. donc une vitesse d'horloge plus élevée. Donc, Andrew Tanenbaum a prédit que "dans 5 ans, personne ne lancera x86". C'était dans les années 90.

Alors, que s'est-il passé? Le x86 (et donc AMD64, aussi appelé x86_64) n'est-il pas le jeu d'instructions CISC le plus connu? Eh bien, ne sous-estimez pas l'ingéniosité des ingénieurs Intel (et AMD). Réalisant que s'ils voulaient un processeur à plus haute vitesse (avec un processeur de retour à une fréquence supérieure à 4 GHz à la fin des années 90), ils ne pouvaient pas traiter leurs instructions complexes en un seul cycle d'horloge. La solution consistait à utiliser des "micro-ops". Chaque micro-op s'exécuterait dans un cycle d'horloge unique et ressemblerait à une instruction de type RISC. Lorsque le processeur rencontrait l'instruction CISC, il la décodait en plusieurs micro-opérations, dont chacune durerait un cycle. Ainsi, ils pourraient conserver leur ancienne architecture de jeu d'instructions cruddy (pour rétrocompatibilité) et avoir des vitesses d'horloge très élevées.

+0

Est-ce que la définition de micro-op n'est valide que pour l'architecture CISC? Peut-il y avoir des micro-op dans une architecture RISC? – flashburn

+2

Eh bien, "micro-op" n'a pas une définition bien définie pour autant que je sache. Si vous parliez d'un jeu d'instructions RISC et d'un micro-op, je vous demanderais si vous vouliez dire les étapes du pipeline. Mais généralement, non, micro-op est la décomposition d'une instruction CISC à RISC. – dave

+2

Êtes-vous sûr que "chaque micro-op fonctionne en un cycle"? Comment vous décomposer, disons, «div» en micro-op d'un cycle chacun? –