FR 2489552 A1 19820305 FR 8115686 A 19810813 La présente invention est relative à une disposition de circuit microprogrammée apte à gérer une unité fonctionnelle d'un ordinateur électronique, que l'on appellera par la suite module, comprenant une pluralité de circuits d'interface entrée-sortie et de circuits auxiliaires. Les opérations de transfert de données entre la mémoire centrale ou l'urité logique centrale (CPU) d'un ordinateur élec- tronique et les unités périphériques, à travers les circuits d'in- terface associés à chaque unité périphérique, requièrent l'exécu- 'ion d'une série de micro-instructions. Pour ne pas engager inutilement la CPU il convient de déléguer la gestion de ces opérations à des organes décentrés qui interagissent directement avec les circuits d'interface. Ces organes décentrés, que l'on appellera par la suite unités de con- trôle, ont de préférence une structure simple, ce qui limite le nombre des interfaces -que chaque unité de contrôle peut gérer. La partie entrée-sortie de l'ordinateur revêt ainsi une structure modulaire dans laquelle chaque module comprend une pluralité de circuits d'interface et l'unité de contrôle qui les gère, tandis que le message envoyé par la CPU contient l'adresse du module, celle de l'interface du module et l'ordre à l'unité de contrôle d'accomplir une opération en activant le microprogram- me approprié. Le but de la présente invention est la réalisation d'une unité de contrôle comprenant des circuits aptes à synchroniser ra- pidement avec la CPU, soit au moment de l'envoi d'une micro- instruction qu'au cours de cette dernière, ainsi que des circuits aptes à vérifier la correction de la séquence des micro-ordres dans le cadre d'une micro-instruction et l'achèvement de la mi- cro-instruction même. Une unité de contrôle suivant l'invention comprend en combinaison: - une unité de codage qui, en réponse à une requête d'exécution de microinstruction, engendre un code qui est écrit dans un premier registre; - un compteur apte à balayer les micro-ordres qui cons- tituent une micro-instruction; - une première mémoire adressée par le code écrit dans le premier registre et par le compteur, contenant les instruc- tions opératives; - une deuxième mémoire adressée par le compteur et con- tenant les micro-instructions de balayage cyclique des unités d'interface faisant partie du module; - un premier circuit apte à synchroniser le début des micro-instructions exécutées par l'unité de contr8le avec celles de la CPIU; 2C - un deuxième circuit apte à arrêter une micro-instruc- tion en cours de déroulement dans l'unité de contrôle dans l'atten- te de l'apparition ou de la disparition d'au moins un signal émis par la CPU; - un troisième circuit apte à contrôler la correction successive des micro-ordres dans le cadre d'une micro-instruction et l'achèvement de la micro-instruction même; - des moyens aptes à autoriser l'exécution d'une micro- instruction opérative et de la micro-instruction de balayage cy- clique. On va maintenant décrire l'invention avec référence à un exemple non limitatif de réalisation décrit dans les figures ci-jointes dans lesquelles. La figure 1 montre un diagramme à blocs d'une unité de contrôle suivant l'invention; La figure 2 montre un exemple de réalisation des cir- cuits de synchronisation CSI et FL de la figure 1; 3. La figure 3 montre un exemple de réalisation du circuit MPC de la figure 1. Les signaux indiquant la micro-instruction à exécuter, codés par le codeur CE et mémorisés dans le registre CC, cons- tituent les bits les plus- significatifs des adresses d'une mémoire CS (Mémoire de contrôle) dans les cellules de laquelle sont in- troduits les micro-ordres qui composent chaque micro-instruction; les bits les moins significatifs de l'adresse sont engendrés par un compteur PC, qui adresse aussi une deuxième mémoire PS dans laquelle sont introduites les micro-instructions de balayage cy- clique des circuits d'interface pour mettre en évidence des re- quêtes à envoyer à la CPU. Le balayage cyclique à lieu lorsque l'unité de contrôle n'est pas engagée pour exécuter un des micro- programmes contenus dans la mémoire CS. Les mémoires CS et PS et celle qui constitue le compteur PC sont suivies d'un registre R, synchronisé par un signal CKP et remis à zéro par un signal RS: les deux signaux seront examinés par la suite. Quelques-uns des signaux qui activent une micro-instruc- tion correspondent à des instructions du programme en cours dans la CPU, d'autres dérivent de requêtes d'opérations d'entrée-sor- tie envoyées à la CPU par les périphériques; avec référence à la figure le programme de la CPU provoque les signaux RW (transfert d'une donnée à la CPU), CW (transfert d'une donnée de la CPU) et IOG (instructions de contrôle pour les interfaces), des requêtes envoyées à la CPU provoquent les signaux DCY (premier cycle d'un DMA double), DI (DMA entrant), DO (DMA sortant) et INT (requête d'interruption). On peut rappeler qu'on indique par DMA (Accès Direct à la Mémoire) une procédure qui permet le transfert rapide de don- nées entre la mémoire centrale et une mémoire périphérique; on indique par DMA double un DMA particulier dans lequel plusieurs périphériques peuvent écrire dans la même zone de mémoire et cha- que parole est précédée de l'adresse du périphérique qui l'a en- gendrée. Un exemple de réalisation d'un circuit faisant partie du module et apte.à réaliser le DMA, y compris le DMA double, est décrit dans la demande de brevet déposée en France le 9 Juillet 1981, sous le na 81 13478 À Pour une exécution correcte des programmes il est né- cessaire de synchroniser le début de la micro-instruction avec le programme de la CPU, et d'arrêter, si cela est nécessaire, la microinstruction dans l'attente de recevoir une autorisation de la CPU. La synchronisation est obtenue au moyen du circuit CSL (logique de synchronisation du cycle) qui, à travers'le signal RS, remet à zéro les registres R; l'arrêt de la micro-instruction est réalisé au moyen du circuit FL (logique de congélation) qui, au moyen du signal F, interdit le signal CKP qui synchronise les re- gistres R. Un exemple de réalisation des circuits CSL et PL est représenté dans la figure 2. Le circuit de contr8le des micro-programmes MPC, qui est mieux illustré dans la figure 3, contr8le que les micro- ordres émis par CS se succèdent exactement et que la micro-instruc- tion soit complétée; l'erreur éventuelle est signalée (ME) à la CPU. Comme on l'a déjà dit précédemment, la micro-instruc- tion de balayage IP émise par la mémoire PS est exécutée par tous les modules d'entrée-sortie de l'ordinateur qui n'exécutent pas une des microinstructions de travail, émis par la mémoire OS et référencés globalement WP dans la figure. Comme on peut facilement l'observer, le compteur PC fait avancer en tout cas soit PS, soit CS; en particulier au dé- but de ghaque cycle PS il émet le micro-ordre CK qui provoque le chargement dans les registres CC et RK des signaux éventuelle- ment présents à leurs entrées. C0 reçoit les signaux codés par CE, RK autorise les micro-instructions de travail WP lorsque le module reconnait comme sienne(ID) l'adresse associée à un ordre IOG, RW ou CW émis par la CPU, lorsque la CPU accepte (ASW) une requête transmise par le module ou bien, dans le deuxième cycle d'un DMA double, en réponse à un signal DF émis par le circuit DMA présent dans le module. Les sorties IP et WP sont évidemment mutuellement exclu- sives puisque le module ne peut pas exécuter en même temps une microinstruction de travail et une micro-instruction de balayage cyclique des périphériques. Dans la figure 2 on a illustré un exemple de réalisa- tion de la logique de synchronisation CSI et de la logique de congélation FL. Le circuit CSL a pour but de synchroniser le module d'entrée-sortie avec la CPU. Cette synchronisation revêt une importance particulière lorsque les périphériques sont gérés par deux ordinateurs opérant en synchronisme: les temps d'exécution du même programme ne sont pas parfaitement identiques pour les deux ordinateurs et il est nécessaire de garantir que le début j5 d'une opération d'entrée-sortie se produise en même temps dans les deux ordinateurs dès que les deux CPU sont en mesure de la gérer. La CPU engendre toujours un signal de synchronisation MCE et, lorsqu'elle est sur le point d'achever d'exécuter l'ins- truction précédente, un signal PR d'une durée pré-établie, qui est un multiple entier de la période de l'horloge MCK: à la fin de PR la CPU est certainement disponible pour gérer la nouvelle ins- truction. Le bistable 1, de type J-K, qui constitue le circuit CSL engendre le signal RS qui a une durée égale à une période de MCK et qui maintient à zéro les registres R (figure 1). On obser- ve que le bistable 1 est synchronisé par MCK: les fronts de RS coïncident donc avec deux transistions identiques (par exemple fronts ascendants) successives de MCK; les registres R sont synchronisés par MCK et commencent à charger les micro-ordres pré- sents à la sortie des mémoires une demi-période de MCK après la fin de PR. Expliquant mieux la signification du signal PR: le front initial indique qu'il manque à la CPU un temps pré-établi pour achever un cycle et que le module d'entrée-sortie se prépare au cycle suivant, en remettant à zéro les registres R; le front final indique que la UPU a achevé le cycle et que le module entrée-sortie est prêt pour le cycle suivant. Deux ordinateurs opérant en synchronisme échangent des informations entre eux, parmi lesquelles l'état du signal PR: dans chaque ordinateur l'état d'avancement de la CPU dans le dé- roulement du cycle en cours d'élaboration détermine le front ini- tial du signal PR, tandis que chaque CPU he fait terminer son pro- pre PR que lorsqu'elle sait que l'autre CPU a terminé son propre cycle, en sorte que les fronts finals des deux signaux PR coîn- cident. Remarquant que si la durée de PR est un multiple pair, plus grand que deux, de la période de MCE, on a une série d'im- pulsions RS: c'est-à-dire que les registres R sont remis à zéro plusieurs fois. - Le circuit CSI et la structure donnée aux mémoires PC, CS et PS permettent de faire partir les microprogrammes d'entrée- sortie synchrones avec la CPU et en un temps très limité. Lorsque le signal RS remet à zéro les registres R, l'a- 2G dresse de départ pour la mémoire PS est fournie en même temps, tandis que la mémoire CS reçoit les données les moins significa- tives de la micro-instruction qu'elle devra exécuter. A la fin du signal PR la CPU envoie au codeur CE le signal indiquant la nouvelle micro-instruction et en même temps PS émet le signal de synchronisation CE, la mémoire CS a l'adresse complète des instructions de départ, qu'elle atteint à travers un saut conditionné dans la période successive de MCK. L'unité de contrôle du module d'entrée-sortie est donc en mesure de commen- cer la nouvelle micro-instruction avec un retard, préétabli et rigoureusement respecté, de deux périodes de MCX par rapport à l'instant o la CPU, une fois que le cycle précédent est achevé et que PR est enlevé, lui a communiqué quelle est la nouvelle micro-instruction à exécuter. Toujours dans la figure 2 on a illustré un exemple de réalisation du circuit FL. Pendant l'exécution de quelques 7. cycles il peut être utile ou nécessaire de synchroniser les opérations d'entrée-sortie avec l'évolution du programme dans la CPU, en arrêtant le microprogramme d'entrée-sortie jusqu'au mo- ment o se vérifie un événement pré-établi, comme l'apparition ou la disparition d'un signal envoyé par la CPU. Dans la figure on a supposé qu'une micro-instruction puisse prévoir uniquement l'attente du signal de-fournir une don- née à la CPU (signal LIO) ou la fin de ce signal: aux deux cas correspondent les micro-ordres FUI, et FEL introduits dans la microinstruction exécutée par l'unité de contrôle du module d'entrée-sortie. Le circuit FL comprend une pluralité de portes (21,22) dont le nombre est égal à celui des micro-ordres d'arrêt, chacune desquelles reçoit le micro-ordre et le signal dont il faut atten- dre l'apparition ou la disparition, et dont les sorties, recueil- lies par un circuit additionneur 11, sont amenées à l'entrée des données d'un deuxième bistable 2 synchronisé par l'horloge MCX. La sortie F du bistable 2 interdit le passage de l'hor- loge MCK à travers le NAND 12 (ou un circuit porte): c'est ainsi que fait défaut le signal CKP qui fait avancer les registres R et évoluer les micro-instructions. En particulier le compteur PC reste bloqué (la mémoire CS reste adressée sur la cellule conte- nant le micro-ordre d'arrêt) de même que le registre R associé à OS: le micro-ordre d'arrêt demeure jusqu'à ce que cesse le si- gnal F. Il peut arriver que le signal attendu ne puisse pas se présenter (par exemple si la mémoire est occupée la CPU ne deman- de pas au module d'interface de lui envoyer de donnée): pour empêcher l'unité de contrôle du module de se bloquer on prévoit la présence d'un signal SD que la CPU supprime, lorsqu'elle s'aper- çoit qu'elle ne peut pas envoyer le signal attendu. Comme on l'a déjà dit avec référence à la figure 1, les unités de contr&çe des modules d'interface exécutent un balayage cyclique des interfaces piloté par le microprogramme contenu dans PS que fait avancer PC, que toutefois fait aussi avancer S: pour éviter qu'un éventuel micro- ordre d'arrêt bloque PC, et par conséquent le balayage cyclique, les portes (21, 22) sont rendues aptes par le signal RK présent dans le seul module adressé par la CPU. Sans sortir des limites de l'invention il est possible de prévoir la présence d'autres micro-ordres d'interruption en plus, ou en remplacement, que (FUL,-FEL) qui sont indiqués dans la figure, adaptant en conséquence le nombre de portes connectées aux entrées de l'additionneur 11. La figure 3 montre un exemple de réalisation du circuit de contr8le MPC des micro-instructions. Ce circuit EPC comprend un circuit pour le contrôle de la-parité PA aux entrées de laquelle sont appliqués les bits de l'adresse, tirés du compteur PC et du registre CO, et le bit de parité PA de l'adresse successive, contenu dans le micro-ordre émis par la mémoire CS. Comme l'avance des registres associés à PF et à CS est commandée par la même horloge CEP qui, tandis qu'elle charge dans le registre R associé à CS une micro-instruction, augmente de un l'adresse présente à la sortie de PC: l'adresse fournie par P0 est celle de la micro-instruction suivante. Gonnaissant la séquence correcte des micro-ordres il est possible en phase d'élaboration de chaque micro-instruction d'attribuer au bit PA de chaque micro- ordre la valeur requise. Pour le dernier micro-ordre EOP de chaque micro-instruc- tion il n'est pas possible de prévoir quelle sera la micro- instruction suivante et, par conséquent, sur quelle adresse il faut se baser pour calculer le bit PA. Pour obvier à cette ambiguité plusieurs solutions sont possibles, parmi lesquelles, par exemple: - interdire avec le dernier micro-ordre EOP le circuit PA ou l'envoi du signal d'erreur S éventuel à la CPU; 4 4 - en utilisant des micro-instructions de longueur cons- tante, réaliser le compteur -PC d'une façon telle que, une fôis que sa capacité de comptage est épuisée ou autrement dit une fois que la microinstruction est terminée, l'état atteint demeure le bit PA du dernier micro-ordre EOP est calculé sur la base de l'adresse du micro-ordre méme. Si un cycle arrive régulièrement à son terme, au moment o arrive le signal PR (qui, rappelons-le, indique que la CPU est en train d'achever son propre cycle) dans le module doit être actif le dernier micro-ordre EOP: l'absence de EOP, mise en évidence, par exemple, au moyen du bistable 3, est signalée à la CPU, par exemple, au moyen de l'additionneur 14 qui recueille aus- si le signald'erreur S4 pour former le signal ME envoyé à la CPU. Le signal C4 permet, sur commande logicielle, d'altérer le bit de parité PA de façon à faire engendrer le signal d'erreur S4: cela permet à la CPU de vérifier le fonctionnement correct du circuit PA4. - REVENDICATIONS - 1.- Unité de contr8le d'un module entrée-sortie d'un ordinateur électronique de l'unité logique centrale duquel, que l'on appellera par la suite CPU, elle reçoit des ordres et des signaux de synchronisation, caractérisée par le fait qu'elle comprend en combinaison entre eux: - une unité de codage (CE) qui, en réponse à une requê- te d'exécution d'une micro-instruction, engendre un code qui est écrit dans un premier registre (CC); - un compteur (PC) apte à balayer les micro-ordres qui constituent une micro-instruction; - une première mémoire (CS), adressée par le code écrit dans le premier registre (CC) et par le compteur (PC), con- tenant les micro-instructions opératives; - une deuxième mémoire (PS) adressée par le compteur (PC) et contenant les micro-instructions de balayage cyclique des unités d'interfaces faisant partie du module; - un premier circuit (CSL) apte à synchroniser le début des micro-instructions exécutées par l'unité de contrôle avec celles de la CPU; - un deuxième circuit (FL) apte à arrêter une micro- instruction en cours de déroulement dans l'unité de contr6le dans l'attente de l'apparition ou de la disparition d'au moins un si- gnal émis par la CPU; - un troisième circuit (MPC) apte à contrôler la cor- rection successive des micro-ordres dans le cadre d'une micro- instruction et l'achèvement de la micro-instruction même; - des moyens (RKEN) aptes à autoriser l'exécution d'une micro-instruction opérative et de la micro-instruction de balayage cyclique. 2.- Unité de contrôle suivant la revendication 1 caracté- risée par le fait que la deuxième mémoire (PS) engendre au début de chaque cycle un premier signal (CK) qui autorise lesdits mo- yens (RKEN) et commande l'écriture dans le premier registre (CC) du code engendré par le codeur (CE). 3.- Unité de contrôle suivant la revendication 1 carac- térisée par le fait qu'à la sortie du compteur (PC) et de la pre- mière et de la deuxième mémoire (CS, PS) sont présents des regis- tres (R) remis à Zéro par un deuxième signal (RS) engendré par le premier circuit et fait avancer par un -troisième signal (CEP) de synchronisation obtenu au moyen d'un quatrième signal (P), engen- dré par le deuxième circuit (FI), par un cinquième signal (MCK) de synchronisation engendré par la CPU; caractérisé en outre par le fait que même le compteur (PC) est constitué par une mémoire adressée avec la première et avec la deuxième mémoire (CS, PS), par la sortie du registre (R) associé au compteur (PC). 4.- Unité de contrôle suivant les revendications 1 et 3, caractérisée par le fait que le premier circuit (CSL) comprend un premier bistable (1) de type J-K, synchronisé par le cinquième signal (MCK), aux entrées de contrôle duquel (J-K) est appliqué un sixième signal (PR) engendré par la CPU lorsque manque un temps préétabli à la fin du cycle précédent et enlevé à la fin du cycle même, la sortie du premier bistable (1) constituant le deuxième signal (RS). 5.- Unité de contrôle suivant les revendications 1 et 3 caractérisée par le fait que le deuxième circuit (FL) com- prend - une pluralité de portes (21,22), en nombre égal à celui des microordres (FUI, FEL) d'arrêt présents dans les micro-instructions contenues dans la première mémoire (CS), cha- que porte recevant à une entrée le micro-ordre d'attendre l'ar- rivée ou la cessation d'un signal et sur l'autre entrée le si- gnal; - un additionneur (11) qui recueille les sorties des portes et dont la sortie est connectée à l'entrée des données d'un deuxième bistable (2); - un deuxième bistable (2), synchronisé par le cinquiè- me signal (MCK), dont la sortie constitue le quatrième signal (F). 6.- Unité de contr8le suivant la revendication 5 carac- térisée par le fait que toutes les portes associées à un micro- ordre d'attendre l'arrivée d'un signal reçoivent sur une autre entrée un septième signal (SD) envoyé par la CPU en remplacement du signal attendu lorsque, à la suite de l'interruption du cycle d'élaboration, ce signal attendu ne peut pas être engendré. 7.- Unité de contrôle suivant les revendications 1 et 3 caractérisée par le fait qu'un bit (PA) préétabli de chaque micro-ordre constitue le bit de parité de l'adresse du micro- ordre successif et par le fait que le troisième circuit (POM) comprend un circuit pour le contrôle de la parité (PA4) aux en- trées duquel sont appliqués les bits d'adresse présents à la sor- tie du premier registre (CC) et du registre (R) associé au comp- teur (PC) ainsi que le bit de parité (PA) et un troisième bistable (3) synchronisé par le sixième signai(PR)etàl'entrée inversée des donnésduqtel est appliqué le dernier micro-ordre (EOP) de la micro- instruction, les sorties du circuit (PA4) pour le contrôle de parité et du troisième bistable (3) étant additionnées pour engendrer un signal d'alarme (ME) pour la CPU. 8.- Unité de contrôle suivant les revendications 1 et 7 caractérisée par le fait que le compteur (PC) une fois que sa capacité de comptage est épuisée, demeure dans l'état qu'il a atteint et par le fait que la valeur du bit de parité (PA) du dernier micro-ordre (EOP) coincide avec celle du micro-ordre pré- cédent. 9.- Unité de contrôle suivant la revendication 1 ca- ractérisée par le fait que les moyens (RIEN) d'aptitude compren- nent un deuxième registre (RK) synchronisé par le premier signal (CK), qui active sa propre sortie lorsque le module reconnaît com- me sienne l'adresse associée à un message envoyé par la CPU ou en réponse à un signal engendré par un circuit faisant partie du mo- dule et apte à gérer un DMA double, le niveau logique de la sor- tie du deuxième registre (RK) déterminant l'envoi aux circuits d'interface d'une micro-instruction opérative (WP) ou de celui (IP) de balayage cyclique. 10.- Unité de contrôle suivant les revendications 5 et 9 caractérisée par le fait que toutes les portes (21, 22) du deuxième circuit (FL) sont autorisées par le signal de sortie du deuxième registre (RE).