Microcode

La microprogrammation (c. microcode de d'écriture) est une méthode que peut être utilisé pour mettre en application les instructions de machine dans une unité centrale de traitement relativement facilement, souvent using moins de matériel qu'avec d'autres méthodes. C'est un ensemble de routines très détaillées et rudimentaires de bas-niveau que les commandes et ordonnance les actions requises pour exécuter (exécuter) des instructions particulières, de les décoder parfois également (interpréter). Une instruction de machine mise en application par une série de microinstructions de est ainsi lâchement comparable à la façon dont un interprète met en application un rapport du langage de haut niveau évolué using une série d'instructions de machine.

Le microcode est normalement écrit par l'ingénieur d'unité centrale de traitement pendant la phase de conception. Il n'est pas généralement censé pour être évident ou variable par un programmeur normal, pas même un programmeur de l'Assemblée , une des raisons étant que le microcode (par conception) peut être nettement changé avec une nouvelle génération de Microarchitecture . Le code machine maintient souvent la compatibilité ascendant. Le microcode a été souvent employé pour laisser un de microarchitecture émuler des autres, habituellement plus puissant, architecture.

Quelques fournisseurs de matériel, particulièrement IBM , emploient également le microcode limite comme synonyme pour les progiciels de , s'il met en application réellement la microprogrammation d'un processeur. Même le progiciel simple, tel que celui utilisé dans une unité de disque dur , est parfois décrit comme microcode. Une telle utilisation n'est pas discutée ici.

Vue d'ensemble

Les éléments composant un micro-programme existent à un niveau conceptuel plus bas qu'un programme d'application normal. Chaque élément est différencié par le " ; micro" ; préfixe pour éviter la confusion : microinstruction, microassembler, microprogrammer, microarchitecture, etc.

Le microcode habituellement ne réside pas dans le de mémoire centrale, mais dans une mémoire à grande vitesse spéciale, a appelé la mémoire microprogrammable . Ce pourrait être le la mémoire lecture/écriture inaltérable de ou de . Dans le dernier cas le microcode serait chargé dans la mémoire microprogrammable d'un autre support de stockage en tant qu'élément de l'initialisation de l'unité centrale de traitement, et il pourrait être changé pour corriger des bogues dans l'ensemble d'instruction, ou pour mettre en application de nouvelles instructions de machine.

Les micro-programmes se composent des séries de microinstructions. Ces microinstructions commandent l'unité centrale de traitement à un niveau très fondamental des circuits de matériel. Par exemple, une microinstruction typique simple pourrait spécifier les opérations suivantes :

relient le registre 1 au " ; A" ; côté du ALU
Relier le registre 7 au " ; B" ; côté du ALU
Placer l'ALU pour effectuer l'addition de deux-complément
Placer les ALU portent l'entrée à zéro
Stocker la valeur de résultat dans le registre 8
Mettre à jour le " ; conditionner le codes" ; avec les drapeaux de statut d'ALU (" ; Negative" ; , " ; Zero" ; , " ; Overflow" ; , et " ; Carry" ;)
Microjump au nnn de MicroPC pour la prochaine microinstruction

Pour commander simultanément les dispositifs de tout le processeur en un cycle, la microinstruction est souvent aussi large que 56 bits. Des micro-programmes sont soigneusement conçus et optimisés pour l'exécution la plus rapide possible, puisqu'un micro-programme lent rapporterait une instruction de machine lente qui causerait à leur tour tous les programmes using cette instruction d'être lente.

La raison de la microprogrammation

Le microcode a été à l'origine développé comme méthode plus simple de développer la logique de commande pour un ordinateur. Au commencement les ensembles d'instruction de d'unité centrale de traitement étaient " ; " câblé du ;. Chaque instruction de machine (ajouter, décaler, mouvement) a été mise en application directement avec des circuits. Ceci a fourni l'exécution rapide, mais pendant que les ensembles d'instruction se développaient plus complexes, il est devenu plus difficile concevoir et corriger les ensembles d'instruction câblés.

Le microcode a allégé ce problème en permettant à des ingénieurs d'études d'unité centrale de traitement d'écrire un micro-programme pour mettre en application une instruction de machine plutôt que conçoivent les circuits pour lui. Même tard dans le processus de conception, microcode pourrait facilement être changé, tandis que les instructions câblées ne pourraient pas. Ceci a considérablement facilité la conception d'unité centrale de traitement et a mené à des ensembles d'instruction plus complexes.

Un autre avantage de microcode était l'exécution des instructions de machine plus complexes. Dans les années 60 par la fin des années 1970, beaucoup la programmation a été faite dans le langage d'assemblage, un équivalent symbolique des instructions de machine. Le plus abstrait et de plus haut niveau l'instruction de machine, plus la productivité de programmeur est grande. La prolongation finale de ceci étaient " ; Language" à niveau élevé directement exécutable ; conceptions. Dans les ces chaque rapport d'un langage de haut niveau évolué tel que le PL/I entièrement et directement serait exécuté par microcode, sans compilation. Projet de systèmes d'IBM de le futur et le processeur de Fountainhead de Data General étaient des exemples de ceci.

Microprogrammation également aidée pour alléger le problème de largeur de bande de mémoire. Pendant les années 70, les vitesses d'unité centrale de traitement se sont développées plus rapidement que des vitesses de mémoire. Techniques nombreuses d'accélération telles que le transfert par blocs de mémoire , le pre-fetch de mémoire de et les cachettes à multiniveaux aidées pour réduire ceci. Instructions de machine de quelque manière qu'à niveau élevé (rendues possibles par microcode) aidées plus loin. Peu d'instructions de machine plus complexes exigent moins de largeur de bande de mémoire. Par exemple des opérations complètes sur des chaînes de caractères ont pu être faites comme instruction de machine simple, de ce fait évitant des recherches de l'instruction multiples.

Les architectures using ceci s'approchent ont inclus le System/360 d'IBM et le VAX , les ensembles de Digital Equipment Corporation d'instruction dont ont été mis en application par des micro-programmes complexes. L'approche d'employer les ensembles d'instruction microcode-mis en application de plus en plus complexes plus tard s'est appelée CISC .

D'autres avantages

Les micro-programmes d'un processeur opèrent un plus primitif, architecture totalement différente et beaucoup plus orientée par le matériel que les instructions d'assemblée évidentes aux programmeurs normaux. Dans la coordination avec le matériel, le microcode met en application l'architecture programmeur-évidente. Le matériel fondamental n'a pas besoin d'avoir un rapport fixe avec l'architecture évidente. Ceci permet pour mettre en application une architecture de jeu d'instructions donnée sur une large variété de micro-architectures fondamentales de matériel.

Faire ainsi est important si la compatibilité de programme binaire est une priorité. Les programmes précédemment existants de cette manière peuvent fonctionner sur le matériel totalement nouveau sans exiger la révision et la recompilation. De quelque manière qu'il peut y a une pénalité d'exécution pour cette approche. Les différences entre la compatibilité ascendante d'application contre l'exécution d'unité centrale de traitement sont discutées avec chaleur par des ingénieurs d'études d'unité centrale de traitement.

IBM System/360 a une architecture à 32 bits avec 16 registres d'usage universel, mais la plupart de System/360 les réalisations utilisent réellement le matériel qui a mis en application un microarchitecture fondamental beaucoup plus simple ; par exemple, System/360 le model 30 a eu les circulations de données à 8 bits à l'unité (ALU) d'arithmétique-logique de et de mémoire centrale et mise en application les registres d'usage universel dans une unité spéciale de la mémoire à tores de de haut-vitesse , et System/360 le model 40 a eu les circulations de données à 8 bits à l'ALU et les circulations de données de 16 bits à de mémoire centrale et également mises en application les registres d'usage universel dans une unité spéciale de mémoire à tores de haut-vitesse. Le model 50 et le model 65 ont eu de pleines circulations de données à 32 bits et ont mis en application les registres d'usage universel dans des circuits plus rapides de transistor. De cette façon, la microprogrammation a permis à IBM de concevoir beaucoup de modèles System/360 avec le matériel essentiellement différent et enjamber un éventail de coût et d'exécution, tout en les rendant tous structuralement compatibles. Ceci a nettement réduit la quantité de logiciel système unique qui a dû être écrite pour chaque modèle.

Une approche semblable a été employée par Digital Equipment Corporation dans leur famille de VAX des ordinateurs. Au commencement un processeur à 32 bits du TTL en même temps que le microcode de soutien a mis en application l'architecture programmeur-évidente. Les versions postérieures de VAX ont employé différents microarchitectures, pourtant l'architecture programmeur-évidente n'a pas changé.

La microprogrammation également a réduit le coût de changements de champ aux défauts corrects (le branche sur table d'écoute dans le processeur ; un bogue a pu souvent être corrigé en remplaçant une partie du micro-programme plutôt que par des changements étant faits à la logique de matériel et le câblage.

Histoire

En 1947, la conception du tourbillon de MIT de a présenté le concept d'une mémoire microprogrammable comme manière de simplifier la conception d'ordinateur et de se déplacer au delà des méthodes ad hoc du de . La mémoire microprogrammable était un trellis bidimensionnel : une dimension a accepté le " ; commander le pulses" de temps ; de l'horloge interne de l'unité centrale de traitement, et de l'autre reliée aux signaux de commande sur des portes et d'autres circuits. Un " ; distributor" d'impulsion ; prendrait les impulsions produites par l'horloge d'unité centrale de traitement et les diviserait vers le haut en huit impulsions séparées de temps, qui activeraient une rangée différente du trellis. Quand la rangée a été activée, elle activerait les signaux de commande reliés à elle.

A décrit une autre manière, les signaux transmis par la mémoire microprogrammable sont joués tout comme un pain du piano de joueur . C'est-à-dire, ils sont commandés par un ordre des mots très larges construits avec du peu et ils sont " ; played" ; séquentiellement. Dans une mémoire microprogrammable, cependant, le " ; song" ; est le short et répété sans interruption.

Dans le Maurice Wilkes du 1951 a augmenté ce concept en ajoutant l'exécution conditionnelle , un concept de apparenté à un conditionnel dans le logiciel. Son exécution initiale s'est composée d'une paire de matrices, les signaux produits premier de la façon de la mémoire microprogrammable de tourbillon, alors que la deuxième matrice choisissait qui rangée des signaux (le mot d'instruction de micro-programme, comme si elle étaient) pour appeler sur le prochain cycle. Conditionals ont été mis en application en fournissant une manière dont une ligne simple dans la mémoire microprogrammable pourrait choisir des solutions de rechange dans la deuxième matrice. Ceci a rendu les signaux de commande conditionnels sur le signal interne détecté. Wilkes a inventé la microprogrammation de limite pour décrire ce dispositif et pour le distinguer d'une mémoire microprogrammable simple.

Exemples des systèmes microprogrammés

La plupart des modèles de la série d'IBM System/360 ont été microprogrammés : * Le model 25 était unique parmi les modèles System/360 en employant les bytes du dessus 16k de mémoire à tores pour tenir le stockage de commande pour le micro-programme. Les 2025 ont employé un microarchitecture de 16 bits avec sept mots de commande (ou microinstructions).
* le model 30, le modèle le plus lent dans la ligne, a employé un microarchitecture à 8 bits avec seulement quelques registres internes ; tout que le programmeur a vu a été émulé par le micro-programme.
* le model 40 a employé 56 mots de commande de bit. La boîte 2040 met en application le processeur System/360 principal et le canal multiplex (le processeur d'entrée-sortie).
* le model 50 a eu deux datapaths internes qui ont fonctionné en parallèle : un datapath à 32 bits utilisé pour des opérations arithmétiques, et une circulation de données à 8 bits utilisée dans quelques opérations logiques. La mémoire microprogrammable a employé 90 microinstructions de bit.
* le model 85 a eu la recherche de l'instruction séparée (Je-unité) et l'exécution (E-unité) pour fournir la haute performance. La Je-unité est matériel commandé. L'E-unité est microprogrammée avec 108 mots de commande de bit.
Les processeurs du PDP-11 de Digital Equipment Corporation, excepté le PDP-11/20, ont été microprogrammés.
Le " de Burroughs B700 de ; microprocessor" ; les opcodes exécutés d'application-niveau using des ordres des microinstructions de 16 bits stockées dans de mémoire centrale, chacun de ces derniers étaient une opération d'enregistrer-charge ou tracé à un " simple de 56 bits ; nanocode" ; instruction stockée dans la mémoire morte. Ceci a permis au matériel comparativement simple d'agir comme un contrôleur périphérique d'unité centrale ou d'être empaqueté comme ordinateur autonome.
Le B1700 de Burroughs a été mis en application avec le matériel radicalement différent comprenant de mémoire centrale peu-accessible mais a eu une organisation multicouche semblable.
En commun avec beaucoup d'autre le moteur analytique de de Charles Babbage complexe de de dispositifs mécaniques les banques utilisées des cames pour commander chaque opération, c. il a eu une mémoire microprogrammable inaltérable. Comme tels qu'il mérite d'être identifié comme premier ordinateur microprogrammé à concevoir, même si on ne l'a pas encore réalisé dans le matériel.
Les unités du vecteur VU0 et VU1 à Sony Playstation 2 sont microprogrammables ; en fait, VU1 était le seulement accessible par l'intermédiaire du microcode pour le premier plusieurs générations du SDK.

Exécution

Chaque microinstruction dans un micro-programme fournit le peu qui commande les éléments fonctionnels qui composent intérieurement une unité centrale de traitement. L'avantage par rapport à une unité centrale de traitement câblée est que la commande interne d'unité centrale de traitement devient une forme spécialisée d'un programme informatique. Le microcode transforme ainsi un défi électronique complexe de conception (la commande d'une unité centrale de traitement) en défi de programmation moins-complexe.

Pour tirer profit de ceci, des ordinateurs ont été divisés en plusieurs pièces :

Un Microsequencer a sélectionné le prochain mot de la mémoire microprogrammable . Un compteur séquentiel est la plupart du temps un compteur, mais a habituellement également une certaine manière de sauter à une partie différente de la mémoire microprogrammable selon quelques données, habituellement données à partir du registre d'instruction de et toujours une certaine partie de la mémoire microprogrammable. Le compteur séquentiel le plus simple est juste un registre chargé de quelque peu de la mémoire microprogrammable.

Un ensemble du registre est une mémoire rapide contenant les données de l'unité centrale de traitement. Il peut inclure le compteur de programme, l'indicateur de pile, et d'autres nombres qui ne sont pas facilement accessibles au programmeur d'application. Souvent l'ensemble de registre triple-est mis en communication, c., deux registres peuvent être indiqués, et un tiers être écrits en même temps.

Un l'unité arithmétique et de logique exécute des calculs, habituellement addition, négation logique, un bon décalage, et logique ET. Il remplit souvent d'autres fonctions, aussi bien.

Il peut également y a un registre d'adresse de mémoire et des données de mémoire de enregistrent , employé pour accéder à la mémoire interne principale .

Ensemble, ces éléments forment un " ; Module exécution . " ; La plupart des unités centrales de traitement modernes ont plusieurs modules exécution. Même les ordinateurs simples ont habituellement une unité pour indiquer et écrire la mémoire, et des autres pour exécuter le code d'utilisateur.

Ces éléments ont pu souvent être achetés ensemble comme morceau simple. Ce morceau est venu dans une largeur fixe qui formerait une « tranche » par le module exécution. Ceux-ci ont été connus en tant que le «  morceaux de tranche peu  ». La famille du AMD Am2900 est l'un des exemples les plus connus des éléments de tranche de peu.

Les parties des modules exécution, et les modules exécution eux-mêmes sont reliés ensemble par un paquet de fils appelés un autobus .

Les programmeurs développent des micro-programmes. Les outils de base sont logiciel : Un Microassembler permet à un programmeur de définir la table du peu symboliquement. Un programme du simulateur exécute le peu in the same way as l'électronique (si tout va bien), et permet à beaucoup plus de liberté de corriger le micro-programme.

Après que le micro-programme soit mené, et intensivement examiné à bonne fin, il est parfois employé comme entrée à un programme informatique qui construit la logique pour produire les mêmes données. Ce programme est semblable à ceux employés pour optimiser une rangée de logique programmable . Aucun programme informatique connu ne peut produire la logique optimale, mais même la logique assez bonne peut énormément réduire le nombre de transistors du nombre exigé pour une mémoire microprogrammable de ROM. Ceci réduit le coût et la puissance employés par une unité centrale de traitement.

Le microcode peut être caractérisé comme horizontal ou vertical. Ceci se réfère principalement à si chaque microinstruction commande directement des éléments d'unité centrale de traitement (microcode horizontal), ou exige le décodage suivant par la logique combinatoire avant de faire ainsi (microcode vertical). En conséquence chaque microinstruction horizontale est plus large (contient plus de peu) et occupe plus d'espace mémoire qu'une microinstruction verticale.

Microcode horizontal

Le microcode horizontal est typiquement contenu dans une mémoire microprogrammable assez large, il n'est pas rare que chaque mot soit 56 bits ou plus. Sur chaque coutil d'une horloge de compteur séquentiel un mot de microcode est lu, décodé, et employé pour commander les éléments fonctionnels qui composent l'unité centrale de traitement.

Dans une exécution typique un mot de micro-programme horizontal constitue les groupes assez étroitement définis du peu. Par exemple, un arrangement simple pourrait être :

Microcode vertical

Dans le microcode vertical, chaque microinstruction est codée -- c'est-à-dire, les champs de peu peuvent passer par la logique combinatoire intermédiaire qui produit alternativement des signaux de commande réels pour les éléments internes d'unité centrale de traitement (ALU, registres, etc. En revanche, avec le microcode horizontal le peu se met en place produit directement les signaux de commande. Le microcode en conséquence vertical exige de plus petites longueurs d'instruction et moins de stockage, mais a besoin de plus d'heure de décoder, ayant pour résultat une horloge plus lente d'unité centrale de traitement.

Quelques microcodes verticaux sont juste les langage d'assemblage d'un ordinateur conventionnel simple qui émule un ordinateur plus complexe. Cette technique était populaire dans la période du PDP-8 . Une autre forme de microcode vertical a deux champs :

Mémoires de contrôle microprogrammable

Quelques ordinateurs ont été construits using le " ; microcode" à affichage ; -- plutôt que stockant le microcode dans la ROM ou la logique câblée, le microcode a été stocké dans un RAM appelé une mémoire de contrôle microprogrammable de ou le WCS . Plusieurs de ces machines étaient les prototypes de laboratoire expérimentaux, mais il y avait également des machines commerciales qui ont employé le microcode à affichage, tel que les postes de travail tôt de Xerox , le VAX 8800 (" du DEC ; Nautilus" ;) famille, le Symbolics l et G-machines, et un certain nombre de réalisations de Système/370 d'IBM . Beaucoup plus de machines ont offert les mémoires microprogrammables writeable utilisateur-programmables comme option ( y compris 2100 de HP et mini-ordinateurs de PDP-11/60 de DEC. WCS a offert plusieurs avantages comprenant la facilité de raccorder le micro-programme et, pour certaines générations de matériel, l'accès plus rapide que les ROM pourraient fournir. WCS Utilisateur-programmable a permis à l'utilisateur d'optimiser la machine pour des buts spécifiques.

Une unité centrale de traitement qui emploie le microcode prend généralement plusieurs rhythmes pour exécuter une instruction simple, un rhythme pour chaque étape dans le micro-programme pour cette instruction. Quelques processeurs de CISC incluent les instructions qui peuvent prendre un moment très bon de s'exécuter. De telles variations interfèrent la latence de l'interruption et, ce qui est bien plus importante dans les systèmes modernes, la canalisation .

Microcode contre VLIW et RISC

La tendance de conception vers les processeurs fortement microprogrammés avec des instructions complexes a commencé au début des années 60 et a continué jusque rudement au milieu des années 80. À ce point la philosophie de conception du RISC a commencé à devenir plus en avant. Ceci a inclus les points :
Des instructions complexes d'expositions d'analyse de

sont rarement employées, par conséquent les ressources de machine consacrées à elles sont en grande partie gaspillées.
La programmation s'est en grande partie éloignée du niveau d'assemblée, ainsi il n'est plus intéressant de fournir des instructions complexes pour des raisons de productivité.
Les ressources de machine consacrées aux instructions complexes rare-utilisées mieux est employées pour accélérer l'exécution des instructions plus simples et utilisées généralement.
Il est difficile canaliser des instructions microprogrammées complexes exigeant beaucoup, les rhythmes variables pour l'exécution accrue.
Des ensembles d'instruction plus simples permettent l'exécution directe par le matériel, évitant la pénalité d'exécution de l'exécution microprogrammée.

il devrait mentionner qu'il y a les contrepoints aussi bien :
Les instructions complexes dans des réalisations fortement microprogrammées peuvent ne pas prendre les ressources beaucoup supplémentaires de machine (excepté l'espace de microcode) ; par exemple, le même ALU est employé souvent pour calculer une adresse réelle comme calculant le résultat des opérandes réels.
Les instructions Non-RISC, c. impliquant les opérandes directs de mémoire sont fréquemment employés par les compilateurs modernes, même immédiats d'empiler (c. résultat de mémoire) des opérations arithmétiques sont généralement utilisées. Bien que de telles opérations de mémoire, souvent avec des codages variables de longueur (c. le " ; CISC" ; il est plus difficile canaliser des caractéristiques), il est toujours entièrement faisable, clairement exemplifié par le Intel 486 , le Cyrix 6x86 , etc.
Les instructions Non-RISC effectuent en soi plus de travail par instruction (en moyenne, et également sont normalement fortement codés, elles fournissent donc une meilleures densité de code et ainsi mieux utilisation des antémémoires limitées.
" moderne ; CISC" ; réalisations, spécialement le X86 , instrument la plupart des instructions et tout le " de modes d'adressage ; dans le hardware" ; ; le microcode est encore employé cependant, pour un certain vraiment complexe, ou très le special, instructions (telles que CPUID ), aussi bien que pour le " interne ; housekeeping" ;.

Beaucoup des processeurs du RISC et du VLIW sont conçus pour exécuter chaque instruction (tant que elle est dans la cachette) dans un cycle simple. C'est très semblable à la manière que les unités centrales de traitement avec le microcode exécutent une microinstruction par cycle. Les processeurs du VLIW ont des instructions qui se comportent comme le microcode horizontal très large, bien que typiquement les instructions de VLIW n'aient pas en tant que contrôle à grain fin de matériel comme microcode. Les processeurs de RISC peuvent avoir des instructions qui ressemblent au microcode vertical étroit.

Voir également

Progiciels
Boîtier de commande
Machine à état défini
Microsequencer
Microassembler
Mémoire microprogrammable
Module exécution
Unité d'arithmétique-logique de
Unité de virgule flottante de
Canalisation d'instruction de
Superscalar
Microarchitecture
Conception d'unité centrale de traitement de

.

Random links:Réseau type bus symbolique | Bataille de Farrukhabad | L'espace d'objectif | Fred Bradley | Rayon d'Elmer | Microcódigo