Unité de contrôle - Control unit

L' unité de contrôle (CU) est un composant de l' unité centrale de traitement (CPU) d'un ordinateur qui dirige le fonctionnement du processeur. Une CU utilise généralement un décodeur binaire pour convertir des instructions codées en signaux de synchronisation et de contrôle qui dirigent le fonctionnement des autres unités (mémoire, unité arithmétique et logique et dispositifs d'entrée et de sortie, etc.).

La plupart des ressources informatiques sont gérées par la CU. Il dirige le flux de données entre le CPU et les autres appareils. John von Neumann a inclus l'unité de contrôle dans le cadre de l' architecture von Neumann . Dans les conceptions informatiques modernes, l'unité de contrôle est généralement une partie interne de la CPU avec son rôle global et son fonctionnement inchangés depuis son introduction.

Unités de contrôle multicycles

Les ordinateurs les plus simples utilisent une microarchitecture multicycle . Ce sont les premières conceptions. Ils sont toujours populaires dans les tout petits ordinateurs, tels que les systèmes embarqués qui font fonctionner les machines.

Dans un ordinateur multicycle, l'unité de contrôle parcourt souvent le cycle de Von Neumann : Récupérer l'instruction, Récupérer les opérandes, exécuter l'instruction, écrire les résultats. Lorsque l'instruction suivante est placée dans l'unité de contrôle, elle modifie le comportement de l'unité de contrôle pour terminer l'instruction correctement. Ainsi, les bits de l'instruction contrôlent directement l'unité de contrôle, qui à son tour contrôle l'ordinateur.

L'unité de contrôle peut inclure un compteur binaire pour indiquer à la logique de l'unité de contrôle quelle étape elle doit effectuer.

Les unités de contrôle multicycle utilisent généralement à la fois les fronts montants et descendants de leur horloge de synchronisation à onde carrée. Ils exécutent une étape de leur opération sur chaque front de l'horloge de synchronisation, de sorte qu'une opération à quatre étapes se termine en deux cycles d'horloge.

De nombreux ordinateurs ont deux types différents d'événements inattendus. Une interruption se produit parce qu'un certain type d'entrée ou de sortie nécessite une attention logicielle pour fonctionner correctement. Une exception est causée par le fonctionnement de l'ordinateur. Une différence cruciale est que la synchronisation d'une interruption ne peut pas être prédite. Une autre est que certaines exceptions (par exemple, une exception de mémoire non disponible) peuvent être causées par une instruction qui doit être redémarrée.

Les unités de contrôle peuvent être conçues pour gérer les interruptions de l'une des deux manières habituelles. Si une réponse rapide est le plus important, une unité de contrôle est conçue pour abandonner le travail pour gérer l'interruption. Dans ce cas, le travail en cours sera redémarré après la dernière instruction terminée. Si l'ordinateur doit être très bon marché, très simple, très fiable, ou pour effectuer plus de travail, l'unité de contrôle terminera le travail en cours avant de traiter l'interruption. Terminer le travail est peu coûteux, car il n'a pas besoin de registre pour enregistrer la dernière instruction terminée. Il est simple et fiable car il a le moins d'états. Il gaspille également le moins de travail possible.

Des exceptions peuvent être faites pour fonctionner comme des interruptions dans des ordinateurs très simples. Si la mémoire virtuelle est requise, une exception de mémoire non disponible doit réessayer l'instruction défaillante.

Il est courant que les ordinateurs multicycles utilisent plus de cycles. Parfois, il faut plus de temps pour effectuer un saut conditionnel, car le compteur de programme doit être rechargé. Parfois, ils font des instructions de multiplication ou de division par un processus comme la multiplication et la division binaires longues. Les très petits ordinateurs peuvent faire de l'arithmétique un ou quelques bits à la fois. Certains ordinateurs ont des instructions très complexes qui nécessitent de nombreuses étapes.

Unités de contrôle pipelinées

De nombreuses instructions de pipeline d' ordinateurs de complexité moyenne . Cette conception est populaire en raison de son économie et de sa vitesse.

Dans un ordinateur en pipeline, les instructions circulent dans l'ordinateur. Cette conception comporte plusieurs étapes. Par exemple, il pourrait avoir une étape pour chaque étape du cycle de Von Neumann. Un ordinateur en pipeline a généralement des "registres de pipeline" après chaque étape. Ceux-ci stockent les bits calculés par un étage afin que les portes logiques de l'étage suivant puissent utiliser les bits pour faire l'étape suivante. Il est courant que les étages pairs fonctionnent sur un front de l'horloge à ondes carrées, tandis que les étages impairs fonctionnent sur l'autre front.

Dans un ordinateur en pipeline, l'unité de contrôle fait en sorte que le flux démarre, continue et s'arrête en tant que commandes de programme. Les données d'instructions sont généralement transmises dans des registres pipeline d'un étage à l'autre, avec une partie de logique de contrôle quelque peu séparée pour chaque étage. L'unité de contrôle assure également que l'instruction dans chaque étape ne nuit pas au fonctionnement des instructions dans les autres étapes. Par exemple, si deux étages doivent utiliser la même donnée, la logique de contrôle assure que les utilisations sont effectuées dans le bon ordre.

Lorsqu'il fonctionne efficacement, un ordinateur en pipeline aura une instruction à chaque étape. Il travaille ensuite sur toutes ces instructions en même temps. Il peut terminer environ une instruction pour chaque cycle de son horloge. Lorsqu'un programme prend une décision et passe à une séquence d'instructions différente, le pipeline doit parfois supprimer les données en cours et redémarrer. C'est ce qu'on appelle un "décrochage". Lorsque deux instructions peuvent interférer, l'unité de contrôle doit parfois arrêter de traiter une instruction ultérieure jusqu'à ce qu'une instruction précédente se termine. C'est ce qu'on appelle une "bulle de pipeline" car une partie du pipeline ne traite pas les instructions. Des bulles de pipeline peuvent se produire lorsque deux instructions opèrent sur le même registre.

Les interruptions et les exceptions inattendues bloquent également le pipeline. Si un ordinateur en pipeline abandonne le travail pour une interruption, plus de travail est perdu que dans un ordinateur multicycle. Les exceptions prévisibles n'ont pas besoin de s'arrêter. Par exemple, si une instruction d'exception est utilisée pour entrer dans le système d'exploitation, cela ne provoque pas de blocage.

La vitesse? Pour la même vitesse de logique électronique, il peut faire plus d'instructions par seconde qu'un ordinateur multicycle. De plus, même si la logique électronique a une vitesse maximale fixe, un ordinateur pipeline peut être rendu plus rapide ou plus lent en faisant varier le nombre d'étages dans le pipeline. Avec plus d'étages, chaque étage fait moins de travail, et donc l'étage a moins de retards des portes logiques .

Économie? Un modèle pipeline d'un ordinateur a souvent le moins de portes logiques par instruction par seconde, moins qu'un ordinateur multicycle ou en panne. Pourquoi? L'étage moyen est moins complexe qu'un ordinateur multicycle. Un ordinateur en panne a généralement de grandes quantités de logique inactive à un instant donné. Des calculs similaires montrent généralement qu'un ordinateur en pipeline utilise moins d'énergie par instruction.

Cependant, un ordinateur en pipeline est généralement plus complexe et plus coûteux qu'un ordinateur multicycle comparable. Il a généralement plus de portes logiques, de registres et une unité de contrôle plus complexe. De la même manière, il pourrait utiliser plus d'énergie totale, tout en utilisant moins d'énergie par instruction. Les processeurs en panne peuvent généralement faire plus d'instructions par seconde car ils peuvent faire plusieurs instructions à la fois.

Prévenir les décrochages

Les unités de contrôle utilisent de nombreuses méthodes pour garder un pipeline plein et éviter les décrochages. Par exemple, même des unités de contrôle simples peuvent supposer qu'un branchement en arrière, vers une instruction antérieure de numéro inférieur, est une boucle et sera répété. Ainsi, une unité de contrôle avec cette conception remplira toujours le pipeline avec le chemin de dérivation arrière. Si un compilateur peut détecter la direction la plus fréquemment prise d'une branche, le compilateur peut simplement produire des instructions de sorte que la branche la plus fréquemment prise soit la direction préférée de la branche. De la même manière, une unité de contrôle peut obtenir des indications du compilateur : Certains ordinateurs ont des instructions qui peuvent encoder des indications du compilateur sur la direction de la branche.

Certaines unités de contrôle font de la prédiction de branchement : Une unité de contrôle conserve une liste électronique des branchements récents, codée par l'adresse de l'instruction de branchement. Cette liste contient quelques bits pour chaque branche afin de se souvenir de la direction prise le plus récemment.

Certaines unités de contrôle peuvent effectuer une exécution spéculative , dans laquelle un ordinateur peut avoir deux ou plusieurs pipelines, calculer les deux directions d'une branche, puis rejeter les calculs de la direction inutilisée.

Les résultats de la mémoire peuvent devenir disponibles à des moments imprévisibles car la mémoire cache des ordinateurs très rapides . C'est-à-dire qu'ils copient des quantités limitées de données de mémoire dans une mémoire très rapide. Le processeur doit être conçu pour traiter à la vitesse très rapide de la mémoire cache. Par conséquent, le processeur peut se bloquer lorsqu'il doit accéder directement à la mémoire principale. Dans les PC modernes, la mémoire principale est jusqu'à trois cents fois plus lente que le cache.

Pour aider cela, des processeurs et des unités de contrôle hors service ont été développés pour traiter les données dès qu'elles deviennent disponibles. (Voir la section suivante)

Mais que se passe-t-il si tous les calculs sont terminés, mais que le processeur est toujours bloqué, en attente de mémoire principale ? Ensuite, une unité de contrôle peut basculer sur un autre fil d'exécution dont les données ont été récupérées alors que le fil était inactif. Un thread a son propre compteur de programme, un flux d'instructions et un ensemble séparé de registres. Les concepteurs varient le nombre de threads en fonction des technologies de mémoire actuelles et du type d'ordinateur. Les ordinateurs typiques tels que les PC et les téléphones intelligents ont généralement des unités de contrôle avec quelques threads, juste assez pour rester occupés avec des systèmes de mémoire abordables. Les ordinateurs de base de données ont souvent environ deux fois plus de threads, pour occuper leurs mémoires beaucoup plus volumineuses. Les unités de traitement graphique (GPU) ont généralement des centaines ou des milliers de threads, car elles ont des centaines ou des milliers d'unités d'exécution effectuant des calculs graphiques répétitifs.

Lorsqu'une unité de contrôle autorise les threads, le logiciel doit également être conçu pour les gérer . Dans les processeurs à usage général comme les PC et les smartphones, les threads sont généralement conçus pour ressembler beaucoup à des processus temporels normaux. Tout au plus, le système d'exploitation peut avoir besoin d'une certaine connaissance d'eux. Dans les GPU, la planification des threads ne peut généralement pas être masquée du logiciel d'application et est souvent contrôlée avec une bibliothèque de sous-programmes spécialisée.

Unités de contrôle en panne

Une unité de contrôle peut être conçue pour finir ce qu'elle peut . Si plusieurs instructions peuvent être complétées en même temps, la centrale les arrangera. Ainsi, les ordinateurs les plus rapides peuvent traiter les instructions dans une séquence qui peut varier quelque peu, selon le moment où les opérandes ou les destinations des instructions deviennent disponibles. La plupart des supercalculateurs et de nombreux processeurs de PC utilisent cette méthode. L'organisation exacte de ce type d'unité de contrôle dépend de la partie la plus lente de l'ordinateur.

Lorsque l'exécution des calculs est la plus lente, les instructions s'écoulent de la mémoire vers des éléments électroniques appelés « unités d'émission ». Une unité d'émission contient une instruction jusqu'à ce que ses opérandes et une unité d'exécution soient disponibles. Ensuite, l'instruction et ses opérandes sont "délivrés" à une unité d'exécution. L'unité d'exécution fait l'instruction. Ensuite, les données résultantes sont déplacées dans une file d'attente de données pour être réécrites dans la mémoire ou les registres. Si l'ordinateur possède plusieurs unités d'exécution, il peut généralement exécuter plusieurs instructions par cycle d'horloge.

Il est courant d'avoir des unités d'exécution spécialisées. Par exemple, un ordinateur à prix modique peut n'avoir qu'une seule unité d'exécution à virgule flottante, car les unités à virgule flottante sont chères. Le même ordinateur peut avoir plusieurs unités entières, car elles sont relativement peu coûteuses et peuvent exécuter la majeure partie des instructions.

Un type d'unité de contrôle pour l'émission utilise un tableau de logique électronique, un "tableau de bord"" qui détecte quand une instruction peut être émise. La "hauteur" du tableau est le nombre d'unités d'exécution, et la "longueur" et la "largeur" " sont chacun le nombre de sources d'opérandes. Lorsque tous les éléments sont réunis, les signaux des opérandes et de l'unité d'exécution se croisent. La logique à cette intersection détecte que l'instruction peut fonctionner, donc l'instruction est " émise " au libre unité d'exécution. Un autre style d'unité de contrôle d'émission implémente l' algorithme Tomasulo , qui réorganise une file d'attente matérielle d'instructions. Dans un certain sens, les deux styles utilisent une file d'attente. Le tableau de bord est un moyen alternatif d'encoder et de réorganiser une file d'instructions, et certains les concepteurs l'appellent une table de file d'attente.

Avec une logique supplémentaire, un tableau de bord peut combiner de manière compacte la réorganisation des exécutions, le renommage des registres et des exceptions et interruptions précises. De plus, il peut le faire sans la mémoire adressable au contenu complexe et gourmande en énergie utilisée par l'algorithme Tomasulo.

Si l'exécution est plus lente que l'écriture des résultats, la file d'attente de réécriture mémoire a toujours des entrées libres. Mais que se passe-t-il si la mémoire écrit lentement ? Ou si le registre de destination était utilisé par une instruction "antérieure" qui n'a pas encore été émise ? Ensuite, il peut être nécessaire de planifier l'étape de réécriture de l'instruction. C'est ce qu'on appelle parfois « retirer » une instruction. Dans ce cas, il doit y avoir une logique d'ordonnancement sur le back-end des unités d'exécution. Il programme l'accès aux registres ou à la mémoire qui obtiendront les résultats.

La logique de retrait peut également être conçue dans un tableau de bord d'émission ou une file d'attente Tomasulo, en incluant l'accès à la mémoire ou au registre dans la logique d'émission.

Les contrôleurs hors service nécessitent des fonctionnalités de conception spéciales pour gérer les interruptions. Lorsqu'il y a plusieurs instructions en cours, il n'est pas clair où dans le flux d'instructions une interruption se produit. Pour les interruptions d'entrée et de sortie, presque toutes les solutions fonctionnent. Cependant, lorsqu'un ordinateur dispose de mémoire virtuelle, une interruption se produit pour indiquer qu'un accès à la mémoire a échoué. Cet accès mémoire doit être associé à une instruction exacte et à un état exact du processeur, afin que l'état du processeur puisse être sauvegardé et restauré par l'interruption. Une solution habituelle conserve des copies de registres jusqu'à ce qu'un accès mémoire soit terminé.

De plus, les processeurs en panne ont encore plus de problèmes avec les blocages dus au branchement, car ils peuvent exécuter plusieurs instructions par cycle d'horloge et ont généralement de nombreuses instructions à différents stades de progression. Ainsi, ces unités de contrôle peuvent utiliser toutes les solutions utilisées par les processeurs en pipeline.

Traduction d'unités de contrôle

Certains ordinateurs traduisent chaque instruction en une séquence d'instructions plus simples. L'avantage est qu'un ordinateur hors service peut être plus simple dans la majeure partie de sa logique, tout en gérant des instructions complexes à plusieurs étapes. Les processeurs Intel x86 depuis le Pentium Pro traduisent les instructions complexes CISC x86 en micro-opérations internes plus proches du RISC.

Dans ceux-ci, la « face avant » de l'unité de contrôle gère la traduction des instructions. Les opérandes ne sont pas traduits. Le "dos" de la CU est une CPU en panne qui envoie les micro-opérations et les opérandes aux unités d'exécution et aux chemins de données.

Unités de contrôle pour ordinateurs de faible puissance

De nombreux ordinateurs modernes ont des commandes qui minimisent la consommation d'énergie. Dans les ordinateurs alimentés par batterie, tels que ceux des téléphones portables, l'avantage est une durée de vie de la batterie plus longue. Dans les ordinateurs alimentés par le secteur, la justification est de réduire le coût de l'alimentation, du refroidissement ou du bruit.

La plupart des ordinateurs modernes utilisent la logique CMOS . Le CMOS gaspille de l'énergie de deux manières courantes : en changeant d'état, c'est-à-dire en « puissance active », et par des fuites involontaires. La puissance active d'un ordinateur peut être réduite en désactivant les signaux de commande. Le courant de fuite peut être réduit en réduisant la pression électrique, la tension, en créant des transistors avec des régions d'appauvrissement plus grandes ou en désactivant complètement la logique.

La puissance active est plus facile à réduire car les données stockées dans la logique ne sont pas affectées. La méthode habituelle réduit la fréquence d'horloge du processeur. La plupart des systèmes informatiques utilisent cette méthode. Il est courant qu'un processeur reste inactif pendant la transition pour éviter les effets secondaires du changement d'horloge.

La plupart des ordinateurs ont également une instruction « stop ». Cela a été inventé pour arrêter le code sans interruption afin que le code d'interruption ait une synchronisation fiable. Cependant, les concepteurs ont rapidement remarqué qu'une instruction d'arrêt était également un bon moment pour désactiver complètement l'horloge d'un processeur, réduisant ainsi la puissance active du processeur à zéro. Le contrôleur d'interruption peut continuer à avoir besoin d'une horloge, mais celle-ci utilise généralement beaucoup moins d'énergie que le processeur.

Ces méthodes sont relativement faciles à concevoir et sont devenues si courantes que d'autres ont été inventées pour un avantage commercial. De nombreux processeurs CMOS modernes à faible consommation arrêtent et démarrent des unités d'exécution spécialisées et des interfaces de bus en fonction de l'instruction nécessaire. Certains ordinateurs organisent même la microarchitecture du processeur pour utiliser des multiplexeurs déclenchés par transfert de sorte que chaque instruction n'utilise que les éléments logiques exacts nécessaires.

Théoriquement, les ordinateurs à des vitesses d'horloge inférieures pourraient également réduire les fuites en réduisant la tension de l'alimentation. Cela affecte la fiabilité de l'ordinateur à bien des égards, de sorte que l'ingénierie est coûteuse et elle est rare, sauf dans les ordinateurs relativement coûteux tels que les PC ou les téléphones portables.

Certaines conceptions peuvent utiliser des transistors à très faible fuite, mais ceux-ci ajoutent généralement des coûts. Les barrières d'appauvrissement des transistors peuvent être agrandies pour avoir moins de fuites, mais cela rend le transistor plus gros et donc à la fois plus lent et plus cher. Certains fournisseurs utilisent cette technique dans des parties sélectionnées d'un circuit intégré en construisant une logique à faible fuite à partir de gros transistors que certains processus fournissent pour les circuits analogiques. Certains procédés placent les transistors au-dessus de la surface du silicium, dans des "fin fets", mais ces procédés comportent plus d'étapes et sont donc plus coûteux. Des matériaux de dopage spéciaux pour les transistors (par exemple l'hafnium) peuvent également réduire les fuites, mais cela ajoute des étapes au traitement, le rendant plus coûteux. Certains semi-conducteurs ont une bande interdite plus grande que le silicium. Cependant, ces matériaux et procédés sont actuellement (2020) plus chers que le silicium.

La gestion des fuites est plus difficile, car avant que la logique puisse être désactivée, les données qu'elle contient doivent être déplacées vers un type de stockage à faible fuite.

Une méthode courante consiste à répartir la charge sur de nombreux processeurs et à désactiver les processeurs inutilisés à mesure que la charge diminue. La logique de commutation de tâches du système d'exploitation enregistre les données des CPU dans la mémoire. Dans certains cas, l'un des processeurs peut être plus simple et plus petit, littéralement avec moins de portes logiques. Ainsi, il a une faible fuite, et c'est le dernier à être éteint, et le premier à être allumé. C'est également le seul processeur qui nécessite des fonctionnalités spéciales à faible consommation d'énergie. Une méthode similaire est utilisée dans la plupart des PC, qui disposent généralement d'un processeur auxiliaire intégré qui gère le système d'alimentation. Cependant, sur les PC, le logiciel se trouve généralement dans le BIOS, pas dans le système d'exploitation.

Certains processeurs utilisent un type spécial de bascule (pour stocker un peu) qui couple une cellule de stockage rapide à fuite élevée à une cellule lente et grande (coûteuse) à faible fuite. Ces deux cellules ont des alimentations séparées. Lorsque la CPU passe en mode d'économie d'énergie (par exemple à cause d'un arrêt qui attend une interruption), les données sont transférées vers les cellules à faible fuite et les autres sont désactivées. Lorsque le CPU quitte un mode à faible fuite (par exemple à cause d'une interruption), le processus est inversé.

Les conceptions plus anciennes copiaient l'état du processeur dans la mémoire, voire sur le disque, parfois avec un logiciel spécialisé. Les systèmes embarqués très simples redémarrent parfois.

Intégration avec l'ordinateur

Tous les processeurs modernes ont une logique de contrôle pour attacher le processeur au reste de l'ordinateur. Dans les ordinateurs modernes, il s'agit généralement d'un contrôleur de bus. Lorsqu'une instruction lit ou écrit en mémoire, l'unité de contrôle contrôle directement le bus ou contrôle un contrôleur de bus. De nombreux ordinateurs modernes utilisent la même interface de bus pour la mémoire, l'entrée et la sortie. C'est ce qu'on appelle les "E/S mappées en mémoire". Pour un programmeur, les registres des périphériques d'E/S apparaissent sous forme de nombres à des adresses mémoire spécifiques. Les PC x86 utilisent une méthode plus ancienne, un bus d'E/S séparé accessible par des instructions d'E/S.

Un processeur moderne a également tendance à inclure un contrôleur d' interruption . Il gère les signaux d'interruption du bus système. L'unité de contrôle est la partie de l'ordinateur qui répond aux interruptions.

Il existe souvent un contrôleur de cache pour la mémoire cache . Le contrôleur de cache et la mémoire cache associée constituent souvent la plus grande partie physique d'un processeur moderne et plus performant. Lorsque la mémoire, le bus ou le cache est partagé avec d'autres processeurs, la logique de contrôle doit communiquer avec eux pour garantir qu'aucun ordinateur ne reçoive jamais d'anciennes données obsolètes.

De nombreux ordinateurs historiques ont intégré un certain type d'entrée et de sortie directement dans l'unité de contrôle. Par exemple, de nombreux ordinateurs historiques avaient un panneau avant avec des interrupteurs et des lumières directement contrôlés par l'unité de contrôle. Ceux-ci permettent à un programmeur d'entrer directement dans un programme et de le déboguer. Dans les ordinateurs de production ultérieurs, l'utilisation la plus courante d'un panneau avant était d'entrer un petit programme d'amorçage pour lire le système d'exploitation à partir du disque. C'était ennuyeux. Ainsi, les panneaux avant ont été remplacés par des programmes d'amorçage en mémoire morte.

La plupart des modèles PDP-8 avaient un bus de données conçu pour permettre aux périphériques d'E/S d'emprunter la logique de lecture et d'écriture de la mémoire de l'unité de contrôle. Cela a réduit la complexité et les dépenses des contrôleurs d'E/S à grande vitesse, par exemple pour le disque.

Le Xerox Alto avait une unité de contrôle multitâche microprogrammable qui effectuait presque toutes les E/S. Cette conception a fourni la plupart des fonctionnalités d'un PC moderne avec seulement une infime fraction de la logique électronique. L'ordinateur à double thread était exécuté par les deux microthreads de priorité la plus faible. Ceux-ci effectuaient des calculs chaque fois que les E/S n'étaient pas nécessaires. Les microthreads de haute priorité fournis (en priorité décroissante) la vidéo, le réseau, le disque, une minuterie périodique, la souris et le clavier. Le microprogramme faisait la logique complexe du dispositif d'E/S, ainsi que la logique pour intégrer le dispositif à l'ordinateur. Pour les E/S matérielles réelles, le microprogramme lisait et écrivait des registres à décalage pour la plupart des E/S, parfois avec des réseaux de résistances et des transistors pour décaler les niveaux de tension de sortie (par exemple pour la vidéo). Pour gérer les événements extérieurs, le microcontrôleur avait des micro-interruptions pour changer de thread à la fin du cycle d'un thread, par exemple à la fin d'une instruction, ou après l'accès à un registre à décalage. Le microprogramme pouvait être réécrit et réinstallé, ce qui était très utile pour un ordinateur de recherche.

Fonctions de l'unité de contrôle

Ainsi, un programme d'instructions en mémoire amènera la CU à configurer les flux de données d'une CPU pour manipuler correctement les données entre les instructions. Il en résulte un ordinateur capable d'exécuter un programme complet et ne nécessitant aucune intervention humaine pour effectuer des modifications matérielles entre les instructions (comme cela devait être fait en utilisant uniquement des cartes perforées pour les calculs avant l'invention des ordinateurs programmés stockés avec des CU).

Unité de commande câblée

Animation de la matrice de contrôle d'une simple unité de contrôle câblée exécutant une instruction LDA

Les unités de contrôle câblées sont mises en œuvre grâce à l'utilisation d' unités logiques combinatoires , comportant un nombre fini de portes qui peuvent générer des résultats spécifiques en fonction des instructions qui ont été utilisées pour appeler ces réponses. Les unités de contrôle câblées sont généralement plus rapides que les conceptions microprogrammées.

Cette conception utilise une architecture fixe - elle nécessite des modifications du câblage si le jeu d'instructions est modifié ou changé. Cela peut être pratique pour les ordinateurs simples et rapides.

Un contrôleur qui utilise cette approche peut fonctionner à grande vitesse ; cependant, il a peu de flexibilité. Un jeu d'instructions complexe peut submerger un concepteur qui utilise une conception logique ad hoc.

L'approche câblée est devenue moins populaire à mesure que les ordinateurs ont évolué. Auparavant, les unités de contrôle des processeurs utilisaient une logique ad hoc et elles étaient difficiles à concevoir.

[1]

Unité de contrôle à microprogramme

L'idée de microprogrammation a été introduite par Maurice Wilkes en 1951 en tant que niveau intermédiaire pour exécuter des instructions de programme informatique. Les microprogrammes étaient organisés en une séquence de micro - instructions et stockés dans une mémoire de contrôle spéciale. L'algorithme de l'unité de commande du microprogramme, contrairement à l'unité de commande câblée, est généralement spécifié par la description de l' organigramme . Le principal avantage d'une unité de commande microprogrammée est la simplicité de sa structure. Les sorties du contrôleur se font par micro-instructions. Le microprogramme peut être débogué et remplacé comme un logiciel.

Méthodes combinées de conception

Une variante populaire du microcode consiste à déboguer le microcode à l'aide d'un simulateur logiciel. Ensuite, le microcode est une table de bits. Il s'agit d'une table de vérité logique , qui traduit une adresse de microcode dans les sorties de l'unité de contrôle. Cette table de vérité peut être transmise à un programme informatique qui produit une logique électronique optimisée. L'unité de contrôle résultante est presque aussi facile à concevoir que la microprogrammation, mais elle a la vitesse rapide et le faible nombre d'éléments logiques d'une unité de contrôle câblée. Le résultat pratique ressemble à une machine Mealy ou à un contrôleur Richards .

Voir également

Les références