FR 2456972 A1 19801212 FR 8001952 A 19800130 La présente invention concerne de façon générale les systèmes à commande microprogrammée et, en particulier, les dispositifs d'interruption qui permettent d'interrompre l'exécution en cours de microprogramme dans le système à commande microprogrammée et de faire appel a un sousprogramme de prise en charge d'interruption pour traiter l'interruption et, à la fin d'exécution du sous-programme de service d'interruption, de redonner la commande au microprogramme interrompu. Les interruptions ont été longtemps utilisées dans les systèmes de traitement de donnes pour traiter des eve- nements qui se produisent de façonasync'rone par rapport au programme de logiciel en cours d'exécution. Par exemple, des interruptions peuvent être utilisées pour lancer le traitement de ces conditions engendrées de façon asynchrone telles que l'accomplissement d'une opération d'entréesortie (par exemple, la lecture d'un article sur bande magnétique) ou l'expiration d'un contrôleur de temps. Des interruptions peuvent également être utilisées pour traiter une condition d'exception se produisant de façon synchrone par rapport à l'exécution d'un programme telle que le traitement d'un dépassement de capacité résultant d'une addition faite par programme.Les interruptions du type ci-dessus sont appelées interruptions de logiciel et si l'interruption est validée, elle provoque l'interruption d'exécution en cours de programme de logiciel, l'état présent du système de traitement de données est conservé pour une remise à l'état initial ultérieure et la commande est redonnée à un sous-programme de service d'interruption de logiciel à une adresse prédéterminée. Quand le sousprogramme de service d'interruption esttermine, l'état précédemment conservé du système de traitement de données est reluis â l'état initial et l'exécution du programme de logiciel précédemment interrompu se poursuit au point d'interruption. Plus récemment, l'apparition des microprocesseurs a permis d'appliquer les techniques d'interruption aux systèmes microprogrammés dans lesquels une interruption provoque l'interruption du microprogramme en cours d'exé- cution par le microprocesseur et un sous-programme d'interruption de microprogramme est appelé pour traiter l'interruption après avoir conservé l'état du microprocesseur au moment de l'interruption. Ces interruptions d'un microprogramme seront appelées interruptions de matériel dans la suite, tandis que les interruptions d'un programme de logiciel seront appelées interruptions de logiciel dans la suite. L'efficacité avec laquelle un système microprogramme peut traiter des interruptions de matériel permet de déterminer si les interruptions de matériel peuvent être traitées par le système microprogrammé par l'emploi d'une microprogrammation ou si elles doivent être traitées par des circuits logiques supplémentaires du matériel dans le système. Par exemple, dans un système de traitement de données microprogrammé, les opérations d'entrée-sortie peuvent entre exécutées sous commande microprogrammée. Différents procédés connus permettent d'utiliser un microprogramme pour commander l'exécution d'une opération d'entrée-sortie. Par exemple, une fois que l'exécution d'une opération d'entrée-sortie a débuté, le système microprogrammé peut effectuer un contrôle permanent, sous commande microprogrammée, d'un indicateur d'état d'entrée-sortie et voir si le dispositif d'entrée-sortie requiert l'attention du microprocesseur pour une prise en charge. Quand un contrôle d'état indique qu'un service est nécessaire, le microprogramme peut effectuer un branchement à un sous-programme de service microprogrammé pour prendre en charge l'exécution de l'opération d'entrée-sortie particulière.Alternativement, quand l'exécution d'une opération d'entrée-sortie a débuté, un microprogramme peut se dérouler pour exécuter d'autres tâches et contrôler périodiquement différents indicateurs d'état et-, si l'un d'eux indique qu'une prise en charge est nécessaire, un branchement au sous-programme de prise en charge de l'opération d'entrée-sortie est effectué et retourner ultérieurement aux tâches autres que d'entréesortie. Le premier procédé suivant lequel cette tâche est contrôlée en permanence dans une boucle peut occasionner une trop grande perte de temps de traitement de microprogramme. Le second procédé suivant lequel des contrôles d'état périodiques sont faits peut également être inefficace si plusieurs opérations d'entrée-sortie doivent être contrôlées pendant chaque période de contrôle.De plus, le second procédé peut également introduire un retard considérable entre le moment où l'opération d'entrée-sortie indique qu'elle est prête à recevoir un service et le moment où le microprogramme détecte l'état indiquant qu'un service est demandé. Ces procédés sont connus comme procédés de balayage. Dans un autre procédé connu consistant à contrôler par microprogramme un indicateur d'état de demande de service, on peut utiliser une technique d'interruption. Cependant, le t#emps qu'il prend avant qu'une seule opération d'entrée-sortie puisse être prise en charge sous commande d'une interruption peut être supérieur au délai qu'il faut en utilisant une technique de balayage par microprogramme puisque le matériel d'identification d'interruption a forcé un branchement de microprogramme, et la séquence de conservation d'état de microprocesseur peut nécessiter plusieurs cycles de microprocesseur avant que le sous-programme de service d'interruption puisse être lancé. Avant que le microprocesseur reprenne le microprogramme interrompu, les contenus des registres de microprocesseur doivent être remis à leurs valeurs initiales par le système à microprocesseur. Malheureusement, plus il y a de registres chargés automatiquement par le système à microprocesseur, plus le temps de réponse à une interruption qui s'écoule entre l'identification initiale d'une demande d'interruption et l'exécution de la première instruction du microprogramme de service d'interruption est long. Alternativement, une réponse à une interruption de matériel plus rapide peut être obtenue par un système à microprocesseur qui est spécialement défini pour faciliter des interruptions de matériel. Certaines unités comportent deux groupes de registres internes. Le microprogramme principal est exécuté en utilisant un groupe de ces registres alors que le microprogramme de service d'interruption utilise l'autre groupe de registres. Il n'en résulte aucune interférence ni la nécessité de charger et de remettre à zéro les registres de microprocesseur. D'autres microprocesseurs utilisent des emplacements de mémoire de données pour remplacer certains des registres de microprocesseur internes usuels. Un pointeur d'espace de manoeuvre contenu à l'intérieur des registres définit les emplacements de mémoire à utiliser.La partie matérielle d'interruption mémorise le contenu modifié du registre de pointeur avant ltexécu- tion du microprogramme de service d'interruption et définit ainsi un espace de manoeuvre en mémoire de données qui diffère de celui utilisé par le microprogramme principal. Après la fin d'exécution de microprogramme de service d'interruption, le registre de pointeur est remis à l'état initial. Une description plus complète des techniques de traitement d'interruption de microprocesseur se trouve dans l'article intitulé "Handle Nicrocomputer I/0 Efficiently" de D. Philip Burton et Arthur L. Dexter, page 70 de la revue Electronic Design 13, 21 Juin 1978. D'autres articles intitulés "Designing Interrupt Structures for Multiprocessor Systems" de R. Jasa, page 101 de la revue Computer Design, septembre 1978 ; "Improved Microprocessor Interrupt" par N. Shima et R. Blacksher, page 96 de la revue Electronic Design 9, 26 Avril 1978 ; et "Handling Multilevel Subroutines and Interrupts in Microcomputers" de James F.Vittera, page 109 de la revue Computer Design, Janvier 1978, décrivent égale ment des structures d'interruption. Des conceptions prévoyant des interruptions de logiciel sont décrites dans le brevet des E.U.A. n0 3 866 181, intitulé "Interrupt Sequencing Control Apparatus" ; dans le brevet des E.U.A. n0 3 984 820, intitulé "Apparatus for Changing the Interrupt Level of a Process Executing in a Data Processing System ; et dans le brevet des EU.A. n0 4 020 471, intitulé Interrupt Scan and Processing System for a Data Processing Système. Une conception prévoyant des interruptions dans un système de traitement de données microprogrammé est décrite dans le brevet des E.U.A. n0 4 042 972i intitulé "Microprogram Data Processing Technique and Apparats" Un but principal de la présente invention est de réaliser un dispositif d'interruption de matériel perfectionné qui réduit au minimum le temps de réponse à une interruption et la quantité de circuits logiques utilisés pour traiter une interruption de matériel. La présente invention a pour objet un système à commande microprogrammée comportant une mémoire de commande pour mémoriser un ensemble de microprogrammes composés de un ou de plusieurs micro-instructions, comprenant en outre des moyens pour engendrer une adresse de micro-instructions suivante à utiliser pour adresser la micro-instruction suivante en mémoire de commande. Des moyens sont prévus pour engendrer une adresse d'interruption qui est l'adresse de la première micro-instruction d'un microprogramme associé à l'interruption de matériel de priorité la plus grande présentement en instance. En outre, des moyens sont prévus pour mémoriser l'adresse de micro-instruction suivante et utiliser l'adresse d'interruption pour avoir accès à la mémoire de commande et commencer ainsi l'exé- cution du microprogramme d'interruption de matériel.A la fin d'exécution de rilicroprogramme d'interruption de matériel, des moyens sont prévus pour remettre à l'état initial l'adresse de micro-instruction suivante mémorisée au début de 1 t interruption de matériel, et retourner ainsi au microprogramme interrompu. D'autres moyens sont prévus pour interdire la présence d'une interruption de matériel en réponse à l'état d'un bit dans chaque micro-instruction. La présente invention permet en outre de faire suivre une interruption de matériel par une interruption de matériel suivante sans retourner d'abord au microprogramme initialement interrompu. D'autres caractéristiques et avantages de la présente invention ressortiront de la description suivante, donnée à titre d'exemple non limitatif, en référence aux dessins annexés dans lesquels - la figure 1 est un schéma de principed'en- semble d'une configuration de système de traitement de données selon l'invention ; - la figure 2 est un schéma fonctionnel d'un exemple de configuration selon l'invention ; - la figure 3 est un schéma fonctionnel d'ensemble d'une unité centrale de traitement CPU d'un système selon l'invention ; - la figure 4 représente le format des contenus de registres de l'unité CPU selon l'invention ; - la figure 5 représente les formats de mot et d'adresse selon l'invention ;; les figures 6A à 6G représentent des signaux d'interface de bus de système selon l'invention ; - la figure 7 est un schéma général des signaux de bus de système de la figure 6 ; - la figure 8 est un schéma plus détaillé de l'unité CPU de la figure 3 ; - la figure 9 est un schéma plus détaillé de la mémoire de commande de l'unité CPU de la figure 8 ; - la figure 10 représente un topogramme de mémoire interprète de l'unité CPU selon l'invention , - la figure 11 représente l'emplacement ot les contenus de registres de l'unité CPU sont maintenus dans l'unité CPU selon l'invention ; - la figure 12 est un schdnta plus dEtai.lle d'un dispositif de commande de données de bus de système de la figure 8 ;; - la figure 13 est un chronogramme de fonction- nQment du bus de système selon l'invention - la figure 14 est un schéma logique d'un circuit logique de synchronisation de système de base selon l'in vention - la figure 15 est un chronogramme de fonctionnement du circuit logique de synchronisation de système de base de la figure 14 ;; - la figure 16 représente un organigramme de microprogramme d 'unité CPU pour une séquence de mise en route/initialisation de système selon l'invention - la figure 17 représente le format d'adresse et de données transférées sur des lignes d'adresse/donnEes du bus de système selon l'invention - la figure 18 représente des commandes d'entréesortie codées sur des lignes RDDT du bus de système selon l'invention ;; - la figure 19 représente un chronogramme de fonctionnement d'une séquence d'accès-de mémoire#sur le bus de système selon l'intention - la figure 20 représente un chronogramme de fonctionnement d'une séquence de commande d'unité CPU à un contrôleur IOC sur le bus de système de la présente ivnention - les figures 21A à 21D représentent des chronogrammes de fonctionnement d'une séquence de transfert de données de DMC sur le bus de système selon l'invention ;; - la figure 22 représente un chronogramme de fonctionnement d'une séquence de transfert de données de DMA sur le bus de système selon l'invention - la figure 23 représente un chronogramme d'une séquence d'interruption d'entrée-sortie sur le bus de système selon l'invention , - la figure 24 représente le format du mot de commande transféré sur le bus de système en réponse à une instruction de programme d'entrée-sortie selon 1'in- vention ; la lafigure 25 représente les codes de fonction d'entrée-sortie des instructions de programme d'entréesortie selon la présente invention ; - les figures 26A et 26B représentent les formats des instructions de programme 10 et 10H selon l'invention ;; - les figures 27A et 27B représentent les formats de L'instruction de programme IOLD selon 1'in- vention ; - les. figures 28A à 28C représentent un organigramme de microprogramme d'unité CPU qui met en oeuvre l'instruction de programme IO représentée sur les figures 26A et 26B ; - les figures 29A et 29B représentent un organigramme de macrpprogramme d'unité CPU qui met en oeuvre l'instruction de programme IOLD représentée sur les figures 27A et 27B ; ; - la figure 30 représente l'interaction entre l'instruction de programme IOLD et la table de programme de canal contenue dans la mémoire interprète d'unité CPU selon l'invention I - la figure 31 représente la liaison entre des branchements par matériel et des interruptions de programme selon l'invention 1 - la figure 32 représente les emplacements de mémoire principale réservés pour différentes fonctions dans le système selon l'invention ;; - la figure 33 est un organigramme d'ensemble de microprogramme d'unité CPU selon l'invention les figure#s 34A et 34B représentent un organigramme de microprogramme d'unité CPU et l'interaction entre des interruptions de programme, des branchements par matériel et des interruptions de matériel selon l'invention t - la figure 35 représente le format du mot de microinstrlletion de microp ogramme d 'unité CPU selon l'invention ; - les figures 35A a 35D représentent plus en détail les différentes zones de commande du mot de micro instruction de microprogramme d'unité CPU selon l'invention ;; - la figure 36 représente les opérations exé- cutées par un microprocesseur de l'unité CPU selon l'in- vention ; - les figures 37A à 37G représentent plus en détail les fonctions exécutées par la zone de sous-commandes ou de commande du mot de microinstruction de microprogramme d'unité CPU représenté sur la figure 35C ; - les figures 38A et 38B sont un schéma fonctionnel d'un contrôleur d'entrée-sortie selon l'invention ;; - les figures 39A à 39C représentent les circuits logiques de synchronisation, de demande et de remise à zéro d'un contrôleur d'entrée-sortie IOC selon l'invention, comme il est représenté sur la figure 38 - la figure 40 est un chronogramme des signaux de synchronisation présents sur le bus de système et dans un contrôleur d'entrée-sortie selon l'invention - la figure 41 est un schéma fonctionnel d'un module de mémoire principale selon l'invention - les figures 42A à 42C représentent un circuit logique de la mémoire de commande représentée sur la figure 9 ; et - les figures 43A à 43C représentent les circuits logiques de l'unité CPU représentée sur la figure 8. On va maintenant décrire en détail un exemple de réalisation préféré de la présente invention et préciser les conventions pour cette description. Dans un système selon l'invention, des signaux électriques indiquant des chiffres binaires (bits) sont envoyés à et engendrés par différentes portes logiques ou autres éléments de circuit. Pour plus de consision dans la description qui suit, les bit. proprement dits sont désignés quelquefois, plutôt que les signaux représentant ces bits. De plus, pour plus de concision, les noms de signaux sont quelquefois utilisés pour repérer les lignes reliant les différentes portes logiques et les différents éléments de circuit. Ces signaux sont quelquefois désignés par un groupe de lettres oui de chiffres. Par exemple, sur la figure 14, BCYCOT- indiqué en haut à droite identifie un signal de sortie d'une porte NON-ET 295. Quelquefois un groupe de lettres est suivi d'un signe plus ou d'un signe moins.Le signe plus signifie que lorsque le signal représente un GN binaire (ou état vrai), c'est un signal à un niveau haut et le signe moins signifie que lorsque -le signal représente un ZERO binaire (ou état faux), c'est un signal à un niveau bas. Dans certains cas, le signe plus ou le signe moins peut être suivi de deux lettres ou chiffres pour distinguer ce nom de signal de noms de signaux semblables ayant des débuts de nom identiques. Par exemple, sur la figure 43, le signal PROCEDest le signal de sortie d'un décodeur 244-3, le signal PROCED-2A est le signal de sortie d'un inverseur 546 et le signal PROCED-20 est le signal de sortie d'une porte NI 550. Quand la signification est claire, le signe plus ou le signe moins ou d'autres suffixes de qualification (lettres ou chiffres) sont omis.Par exemple, sur la feuille 1 de la figure 39, les suffixes BA et BB sont omis pour le signal RDDT29+ pour indiquer que le signal serait RDDT29+BA Si le contrôleur IOC était connecté à un bus de système A et le signal serait RDDT29+BB si le contrôleur IOC était connecté à un bus de système B. Dans d'autres cas, quand la signification est claire, la lettre X est utilisée dans le nom du signal pour indiquer un signal parmi plusieurs signaux. Par exemple, sur la feuille 1 de la figure 39, les noms de signaux PINTRXet PIOCTX- correspondent aux signaux PINTR1 et PIOCTA si le contrôleur IOC est connecté au bus de système A et ils correspondent aux signaux PINTR2- et PIOCTB- si le contrôleur IOC est connecté au bus de système B. Dans certains cas, une série de signaux est indiquée en utilisant un trait d'union après le nom du premier signal suivi du suffixe du nom du dernier signal. Par exemple, sur la feuille 2 de la figure 42, les signaux de sortie du registre 242 sont les 48 signaux désignés par RDDTOOs à RDDT47+. Dans un but de simplicité, les portes logiques sont designées sous le flan de portes ET, OU, NON-ET et NI. La différence entre une porte ET et une porte NON-ET est que la porte NON-ET comporte un inverseur, indiqué par un petit cercle dans le dessin, sur sa ligne de sortie. La présence d'un inverseur sur la ligne de sortie est également utilisée pour distinguer une porte NON-ET d'une porte OU. Des inverseurs sur les lignes d'entrée de portes ne changent pas le nom donné à la porte logique considérée. Par exemple, sur la feuille 1 de la figure 42, la porte 591 est désignée sous le nom de porte ET, la porte 594 sous le nom de porte NON-ET (signal de sortie inversé) et les portes 584 et 595 sous le nom de portes NI (les deux ayant des signaux de sortie inversés et les inverseurs aux entrées de la porte 584 n'étant pas pris en considération pour s'y référer). On suppose également, à titre d'exemple, qu'on utilise un circuit logique qui nécessite des signaux d'entrée positifs pour engendrer un signal de sortie positif, sauf indication contraire. C'est ainsi que les circuits logiques tels que des portes ET et OU, par exemple, doivent recevoir des signaux d'entrée à un niveau haut pour engendrer un signal de sortie à un niveau haut. Des signaux qui n'ont pas un niveau logique haut sont désignés comme étant à un niveau bas. On va maintenant faire une description générale du bus de système. La figure 1 est un schéma général du système de traitement de données. Une unité centrale de traitement ou processeur (CPU) 200 commande le bus de système. Le bus de système est composé de deux bus désignés par bus de système A 202 et bus de système B 204. Les bus de système A et Bg 202 et 204, sont utilisés pour relier entre eux le processeur CPU 200, les contxEleurs d'entrée- sortie IOC 206, 208, 210 et 212, les mémoires prinsipalesl contrôleurs IOC 214, 216, 218 et 220 et l'unité de-conservation de mémoire 222. Pour plus de simplicité, on n'a représenté sur la figure 1 que quatre mémoires principales/contrdleurs IOC connectés à chacun des bus de système. Dans l'exemple de réalisation préféré de la présente invention, il est possible de connecter jusqu'à huit contrôleurs d'entrée-sortie IOC à chaque bus de système si la réalisation concrète (les espaces de plaquette de circuit imprimé disponibles) du système le permet. Comme on le verra plus loin, la limitation à huit contrôleurs IOC par bus de système est due à une prise en considération de la synchronisation qui permet plus ou moins de contrôleurs IOC par bus de système dans la mesure ou elle est modifiée Le tableau de connexion 201 est relié directement au processeur CPU 200.Le bus de système B 204 est semblable au bus de système A 202 t cependant, le bus de système B contient des signaux de commande de mémoire supplémentaires qui n'existent pas dans le bus de systyme A C'est pourquoi, seuls des contrôleurs d'entrée-sortie IOC peuvent être installés sur le bus de système A tandis que des mémoires principales/contrdleurs a'entrée-sortie IOC peuvent être connectés au bus de système B. Les contrôleurs IOC connectés aux bus de systèmes sont utilisés pour commander le fonctionnement d'appareils périphériques connectés aux contrôleurs d'entrée-sortie IOC. La mémoire principale, qui n'est connectée qu'au bus de système B, est utilisée pour mémoriser les programmes du logiciel traités par le processeur CPU. Le tableau de connexion 201 connecté directement au processeur CPU 200 est utilisé par l'opérateur de système pour lancer, contrôler et commander le fonctionnement du système. L'unité de conservation de mémoire en option 222 fournit les tensions en courant continu aux mémoires principales à accès sélectif non rémanentes à semi-conducteur du système. Dans des conditions d'alimentation normales-, l'unité de conservation de mémoire 222 fonctionne avec des tensions en courant continu fournies par une source d'alimentation de système locale (non représentée) qui engendre les tensions de mémoire requises tout en conservant ses batteries pouvant être rechargées à l'état de pleine charge.Pendant des défauts de courant, l'unité de conservation de mémoire 222 constitue un moyen de secours pour conserver les contenus de mémoires principales non rémanentes a semiconducteur en fournissant une batterie auxiliaire pendant une période de temps de 5 à 10 minutes, par exemple, en fonction de l'espace de mémoire principale alimenté. Le système de traitement de données représenté sur la figure 1 peut avoir plusieurs configurations particulières selon les différentes combinaisons de mémoire principale, de contrôleurs d'entrée-sortie IOC et d'appareils périphériques choisies. Un exemple de ces configurations de système est représenté sur la figure 2. Sur cette figure, le système comporte un processeur central CPU 200 connecté à un bus de système A 202 et à un bus de système B 204. La figure 2 représente un processeur central avec 64 Kmots (1Kmot = 1024 mots) de mémoire principale, quatre appareils periphériques à disque souple, une imprimante ligne par ligne, quatre lignes de communication, un pupitre de commande et une imprimante connectés de la façon indiquée ci-dessous.Une mémoire principale 1, 214-1, contenant 48 Kmots et une mémoire principale 2, 216-1, contenant 16 Kmots, sont connectées au bus de système B 204. L'unité de conservation de mémoire 222 est aussi connectée au bus de système B 204. Le bus de système A 202 et le bus de système B 204 sont connectés au processeur CPU 200, le tableau de connexion 201 est directement connecté au processeur CPU 200. Les appareils péréphériques à disque souple 1 et 2, 207-1 et 207-2, sont connectés au bus de système A 202 par l'intermédiaire d'un contrôleur de disque souple 1, 206-1. Les appareils périphériques à disque souple 3 et 4, 221-1 et 221-2, sont connectés au bus de système B 204 par l'intermédiaire du contrôleur de disque souple 220-1. Les lignes de communication 1 et 2 sont connectées au bus de système A 202 par l'intermédiaire du contrôleur de communications 210-1. L'imprimante 209 est connectée au bus de système A par l'intermédiaire du contrôleur d'imprimante 208-1. Le pupitre de commande 213 est connecté au bus de système A 202 par l'intermédiaire du contrôleur de pupitre de commande 212-1.On notera que la référence numérique d'un élément d'une figure correspond à une référence identique du même élément sur une autre figure. Ainsi, par exemple, le tableau de connexion 201 de la figure 2 est désigné par la même référence numérique 201 sur la figure 1. On va maintenant décrire le processeur central CPU. Celui-ci est un processeur à commande microprogrammée qui constitue l'élément de commande à l'intérieur du système. Le processeur CPU contient un bus interne avec deux portes : le bus de système A et le bus de système B qui relient entre eux le processeur CPU, les contrôleurs IOC et la mémoire principale (représentés sur les figures 1 et 2). La partie microprogrammée du processeur CPU en liaison avec la partie matérielle de bus de système permettent de commander les transferts d'informations entre les contrôleurs IOC et la mémoire principale.Les données qui proviennent de n'importe quelle source sont: placées sur un bus de système par une commande microprogrammée de processeur CPU et l'accès à la mémoire principale ne peut être déclenché sue par le processeur CPU Si cet accès est réalisé en faveur du processeur CPU ou d'un contrôleur IOC. Il n'est donc pas nécessaire qu'il y ait un circuit logique de détermination de priorité dans chaque contrôleur et dans la mémoire principale pour traiter des demandes incompatibles en vue de l'utilisation du bus de système. Les circuits d'entrée-sortie du processeur CPU assurent le dialogue entre la mémoire principale et les contrôleurs IOC par deux types de canaux d'entrée-sortie : des canaux de commande multiplex de données (DMC) et des canaux d'accès direct à la mémoire (DMA). .Pour chaque canal de type DMC ou DMA, le système conserve une adresse suivante de données (c'est-à-dire l'adresse de l'emplacement de mémoire principale où des informations échangées entre l'unité suivante et un apppareil périphérique doivent être écrites ou lues en mémoire principale) et une portée. La portée est le compte du nombre d'unités effectuant des échanges d'informations avec la mémoire principale par l'intermédiaire du processeur CPU et d'un contrôleur IOC. Dans l'exemple de réa- lisation préféré de la présente invention, la mémoire principale est organisée par mots contenant chacun deux multiplets de 8 bits. Les adresses suivantes de données sont spécifiées comme adresses de multiplets et la portée est spécifiée comme nombre de multiplets à transférer. Pour des canaux DMC, le processeur CPU conserve et gère les informations de portée et d'adresse suivante de données dans une mémoire interprète se trouvant dans le processeur CPU (SPM), Pour des canaux D#4A, les informations de portée et d'adresse suivante de données sont conservées localement dans le contrôleur IOC considéré. Les contrôleurs IOC sont définis exclusivement pour le système, et ils sont soit d type DMC, soit du type A. L'affectation de canal est réalisée par le numéro de canal contenu dans l'instruction d'entrée-sortie de programme. Le processeur CPU tolère un nombre prédéterminé de paires de canaux d'entrée-sortie DXC, chaque paire de canaux d'entrées sortie comprenant un canal d'entrée et un canal de sortie. Par exemple, il y a 64 paires de canaux d'entrée-sortie dans l'exemple de réalisation préféré de l'invention qui ne peuvent être utilisés que par des contrôleurs a 8'entrée- sortie DMC. Cependant, les numéros de canal peuvent Btra affectés à un contrôleur d'entrée-sortie DSZ ou DMC, mais non à deux dans le même système. Le processeur CPU supporte le logiciel d'exploitation qui comprend des registres visibles, des formats de données, des groupes d'instructions, et des opérations de branchement et d'interruption. L'interface avec l'opé- rateur est constituée par 1 t intermddiaire du tableau de connexion et du pupitre de commande. Le tableau de connexion permet à l'opérateur d'avoir accès au système pour son ini tialisation. Un schéma fonctionnel d'ensemble des blocs fonctionnels du processeur CPU est représenté, figure 3, et sa description est faite dans les paragraphes suivants. Une mémoire de commande 230 constitue l'élément de commande du processeur CPU. Elle contient une mémoire morte pour la mémorisation de microprogrammes de la partie microprogrammée du système. Ces microprogrammes contiennent les moyens fonctionnels nécessaires pour la commande des différentes opérations exécutées par le processeur CPU. Cette mémoire de commande contient également tous les circuits logiques d'adressage et de décodage nécessaires pour une mise en séquence par les microprogrammes et l'émission de commandes pas-à-pas dans la partie matérielle du système. Un microprocesseur 232 constitue l'élément de traitement principal du processeur CPU. Il exécute toutes les opérations arithmétiques, de comparaison, et logiques, et il est commandé exclusivement par des co xllandes de micro-instructions de la partie microprogrammée. Le bloc de bus de système d'entrée-sortie 234 de la figure 3 contient tous les émetteurs-récepteurs et les circuits de commande nécessaires au processeur CPU pour communiquer avec les contrôleurs d'entrée-sortie IOC. Deux bus sont disponibles : le bus de système A et le bus de système B. La mémoire principale ne peut être connectée qu'au bus de système B 204. Le bloc de bus de système 234 est commandé par la partie matérielle et des commandes de micro-instructions de la partie microprogrammée du système Une mémoire interprète 236 constitue la mémoire à écriture/lecture ou mémoire vive du processeur CPU qui fournit un moyen de mémorisation temporaire des données du processeur CPU. Les informations de portée et d'adresse pour des canaux DMC et différents registres de manoeuvre nécessaires pour l'exécution d'une opération dans le processeur CPU sont conservées dans cette mémoire. Cette mémoire interprète 236 est commandée par des commandes de micro-instructions. On va maintenant prendre en considération la partie programmée du système. Cette partie programmée définit les différents registres du processeur CPU qui sont visibles pour les programmes du logiciel et définit les différents formats de données et d'adresse utilisés par le processeur CPU. Le processeur CPU contient 18 registres visibles pour le programmeur, c'est-à-dire, accessibles en utilisant une série d'instructions de programme. Le format et les bits si#gnificatifs de chaque registre sont représentés sur la figure 4. Ces registres sont les suivants A. Les registres visibles par programme. Ces registres comprennent sept registres d'opé- rande de mot (Rl-R7) Trois de ces registres sont aussi des registres d'index (R1-R3). Ces sept registres sont des registres a 16 bits. Ils comprennent en outre huit registres d'adresse (B1-B7 et P), chacun d'eux étant un registre à 16 bits ; un registre de masque (M1) (huit bits commandant la validation d'analyse et d'interruption sur dépassement de capacité) t un registre d'indicateur (I) (huit bits de : dépassement, réservé pour utilisation ultérieure (unité RFU non utilisée), report en sortie, contrôle de bit, entrée-sortie E/S, supérieur à, inférieur à et signes différents) ; un registre d'état (S) (16 bits: bit de mode privilégié, quatre bits ID de processeur, six bits de numéro de niveau de priorité). B. Les formats d'adresse et de mot de données. Cette partie définit les différents formats d3 mot de données et d'adresse qui sont utilisés par le pro cesseur CPU, tels qu'ils sont représentés sur la figure 5. Tous les éléments de mot de données, tels qu'un bit ou un multiplet, sont sur la base de mots de mémoire principale à 16 bits. Le format de chaque mot est défini de gauche à droite, avec-le.premier bit de numéro 0 et le dernier bit de numéro 15. Les éléments de données de mémoire principale peuvent être lus par des instructions au niveau de données du bit, du multiplet, du mot ou de -plusieurs mots. Dans tous les cas, l'élément le plus à gauche est l'élément le plus significatif ou de poids fort du mot ; par exemple, le bit 0 est le premier bit, le bit 1 est le deuxième bit, les bits 0 à 7 forment le premier multiplet, les bits 8 à 15 forment le second multiplet, etc. Des données à plusieurs mots nécessitent des emplacements de mot se suivant ; l'adresse la plus petite est définie comme la partie la plus à gauche ou de poids fort des données. Un pointeur d'adresse est utilisé pour désigner le groupe de données au niveau du bit, du +multiplet, du mot ou de plusieurs mots. Cette adresse indique les éléments le plus à gauche ou de poids fort du groupe de données. Dans cette zone, les éléments de données du groupe sont numérotés de gauche à droite. Les adresses de processeur CPU, de registres et de compteurs de programme et les adresses de mot de mémoire contiennent 16 bits. Le bit le plus à droite (bit 15) de chaque zone d'adresse est le bit de poids faible de l'adresse de mot et toutes les zones d'adresse sont sans signe. Le système peut avoir une configuration appropriée pour adresser jusqu'à 128 Kmultiplets (1Kmultiplet = 1024). Des adresses relatives au multiplet pour des demandes de données de DMC sont mémorisées dans la mémoire interprète du processeur CPU sous forme d'adresse à 17 bits. Le bit de poids faible (bit 16) est mis à un quand le multiplet I est adressé. Les formats d'adresse pour un mot de mémoire et un multiplet de mémoire sont représentés sur la figure 5. La mémoire principale peut être composée d'un minimum de 4Kmots (kilomots) à un maximum de 64 Kmots. La mémoire est constituée d'une mémoire à accès sélectif d'écriture/lecture. La mémoire principale est réalisée sur des plaquettes de mémoire connectées au bus de système B. La capacité de la mémoire principale peut être augmentée par accroissements de 4Kmots à partir d'un minimum de 4Kmots de mémoire principale formée dans le plus petit espace de mémoire adressable de 4Kmots. Le changement de capacité de mémoire principale de processeur CPU doit être établi pour correspondre à la capacité de mémoire principale d'ensemble du système de sorte que le processeur CPU puisse contrôler si des adresses de mémoire sont mises en oeuvre pour tenter d'avoir accès à un espace de mémoire principale non existant. Comme il sera expliqué plus en détail dans la suite, le contrôle du processeur CPU, pour des accès à des espaces de mémoire principale non existants, est fait aussi bien pour un accès en faveur du processeu#r CPU (pour des instructions ou des données de programme), que pour un accès en faveur d'un contrôleur d'entrée-sortie DMA ou DMC (pour des données émises ou reçues par un périphérique). On va maintenant décrire les in1:ttràces entre le processeur CPU et les bus de système qui se composent de deux interfaces externes : une- interface de bus de système A et une interface de bus de système B. Les bus de système A et B font partie du châssis du système et constituent une toie de communications entre le processeur CPU, la mémoire principale et les contrôleurs IOC. Ces bus de système distribuent aussi le courant d'alimentation aux contrôleurs et à la mémoire principale. Les bus de systèmes A et B sont pratiquement identiques et contiennent à peu près 50 fils de transmission de signal chacun. La seule différence entre les bus de système A et B est que le bus de système B comporte une interface de mémoire principale en plus du groupe de fils de transmission de signal du bus de système A. La figure 6 indique la liste de signaux transmis par les lignes de transmission. Le bus de système A distribue le courant d'alimentation et constitue une voie de communications pour des transferts de données et des interruptions entre le processeur CPU et chaque contrôleur IOC inséré dans les connecteurs de bus du côté du bus de système A du châssis du système. Le processeur CPU commande l'usage des bus de système et attribue des cycles de demande de service sur une base de temps séparée. Chaque contrôleur IOC connectE au bus de système A n'est autorisé demander un service (pour l'exécution d'un transfert de données ou une interruption) qu1à un moment où il est le seul & le faire et en fonction de sa position (par rapport au processeur CPU) sur le bus de système A. Le fonctionnement des bus de système A et B est décrie dans la suite. La figure 7 représente les signaux transmis par le bus de système A. Le bus de système A contient deux lignes de transmission de signaux (#MV#L et BWACGO) seulement destinés au processeur CPU. Ces signaux ne sont présents sur le bus de système A que par le connecteur de fente de châssis de ce bus. Tous les autres signaux transmis par ce bus sont présents sur des broches identiques de chaque connecteur de bits a l'exception de deux positions. ta broche de signal BCYCOT-BA (temps de sortie de cycle de bus de système A) d'un connecteur de bus est soudez à la broche de signal BCYCIN-BA (temps d'entrée de cycle de bus de système A) du connecteur de bus suivant.De cette façon, un signal de synchronisation de priorité est transmis par le bus d'un contrôleur IOC au contrôleur IOC suivant. . La figure 6 indique la fonctionnalité ou la source de chaque signal sur les bus de système A et B. Le bus de système B distribue le courant d'alimentation et constitue une voie de communication pour des transferts de données et des interruptions entre le processeur CPU et chaque plaquette de mémoire principale ou contrôleur IOC inséré dans des connecteurs de bus du côté du bus de système B. Le bus de système B est semblable au bus de système A. Cependant, il contient trois lignes de transmission de signaux supplémentaires PMEMGO, PMFRSH, PBSFMD, qui n' existent pas dans le bus de système A. Les plaquettes de mémoire principale ne peuvent donc être insérées dans des fentes du châssis que du côté du bus de système B. Tous les signaux transmis par le bus de système B sont identiques aux signaux transmis par le bus de système A, mais ils sont émis par un groupe différent de circuits émetteurs. Il n'y a pas sur le bus de système B de signaux destinés seulement au processeur CPU par le connecteur de fente de châssis du processeur CPU, les signaux présents sur le bus de système B étant transmis par tous les connecteurs de fente de châssis du bus de système B. Le fonctionnement et la commande des bus de systèmes A et B sont décrits dans la suite. Comme dans le cas du bus de système A, chaque contrôleur IOC sur le bus de système B ne peut demander un service (pour un transfert de données ou une interruption) qu'au moment où il est le seul à le faire et en fonction de sa position (par rapport au processeur CPU) sur le bus de système B. La mémoire principale, bien que placee sur le bus de système B, ne fait pas de demandes de service mais doit toutefois transmettre le signal de synchronisation de priorité BCYCOT-BB et BCYCIN BB) pour une utilisation par les contrôleurs IOC sur le bus de système B.Bien qu'un seul contrôleur ioe sur un bus de système donné (A ou B) puisse faire une demande de service à la fois, deux demandes de service peuvent être faites simultanément pak des contrôleurs IOC dans la même position relative (tranche de temps), une étant faite sur le bus de système A et l'autre étant faite sur le bus de système B. Par exemple, si l'on se réfère à la figure 2, le contrôleur de disque souple 2, 220-1, sur le bus de système B peut faire une demande dsint terruption en même temps que le contrôleur d'imprimante 208-1 sur le bus de système A fait une demande de données de DMC.L'établissement de priorité entre ces demandes de bus de système simultanées, ainsi que d'autres capacités de traitement autres que des réponses à des demandes de bus de système précédentes, sont réalisés par le processeur CPU comme il est décrit dans la suite. On notera que le contrôleur d'imprimante 208-1 sur le bus de système A est place dans la seconde fente de connecteur de bus par rapport au processeur CPU, et la seconde fenêtre de demande de temps de bus, tandis que le contrôleur de disque souple 2 220-1 est dans la quatrième fenêtre de connecteur de bus, par rapport au processeur CPU, mais dans la seconde fenêtre de demande de temps de bus sur le bus de système B.La différence entre la fenêtre de connecteur de bus et la fenêtre de demande de temps de bus sur le bus de système B est due au fait que chaque plaquette de mémoire principale occupe une fenêtre de connecteur de bus sans occuper une fenêtre de demande de temps de bus, car la memoire principale ne fait jamais de demandes de bus de système (c'est-à-dire' la mémoire principale ne lance jamais de transferts de données sur le bus de système et les signaux de synchronisation de priorité BCYCOT-BR et BCYCIB-BB n'ont pas besoin d'être retardés par la plaquette de mémoire principale considérée). La figure 8 représente un schéma fonctionnel de la partie matérielle du processeur central CPU. Les principaux blocs fonctionnels du processeur CPU sont les suivants. La partie matérielle du processeur central est divisée en quatre blocs principaux : une mémoire de commande, une mémoire interprète, un microprocesseur et des bus de système d'entrée-sortie, comme la figure 3 l'indique. On va maintenant décrire les composants de chacun de ces quatre blocs en référence aux figures. La mémoire de commande 230, représentée sur la figure 9, constitue l'élément principal de commande du système. Elle se compose d'une mémoire morte (ROS) contenant des microprogrammes de la partie microprogrammée du système et de circuits logiques d'adressage et de décodage associés nécessaires pour décoder ces microprogrammes. La partie microprogrammée constitue le moyen pour relier des opérations de programmation commandées par le logiciel à des opérations exécutées par la partie matérielle du système. La partie microprogrammée- contient tous les moyens fonctionnels pour commander toutes les opérations de mémoire de commande, de mémoire interprète, de microprocesseur et de bus de système d'entrée-sortie. Ces microprogrammes sont constitués par des mots de micro-instructions disposés dans un ordre logique.Chaque mot de micro-instruction contient 48 bits de données cpdées de façon a ce qu'elles permettent l'exécution d'opérations spécifiques de la partie matérielle. Toutes les 500 nanosecondes, un mot de micro-instruction est extrait par synchronisation de la mémoire morte ROS et décodé pour déterminer 1 t adresse de micro-instruction suivante, et pour engendrer des commandes spécifiques envoyées au micro-processeur, a la mémoire interprète et aux bus de système d'E/S. L'exécution séquentielle des microprogrammes permet l'exécution d'opérations par la partie ma térielle dans l'ordre convenable pour l'intervention du processeur central CPU corngne on le souhaite.Beaucoup de microprogrammes peuvent être exécutés pour un traitement par la partie matérielle (c'est-à-dire une opération de tableau de connexion, une prise en charge d'une interruption} ou l'exécution d'une instruction de programme. Une description générale du déroulement des microprogrammes et une description du mot de micro-instruction seront faites plus loin. Un schéma fonctionnel intermédiaire de la mémoire de commande est représenté sur la figure 9 a laquelle on 3e réfèrera pour suivre la description de la partie matérielle du processeur CPU dans les paragraphes suivants. Sur la figure 9, les microprogrammes sont mémorisés dans une mémoire morte 238 a 1K emplacements par 48 bits. Chaque emplacement contient un mot de micro-instruction qui est écrit de façon permanente dans la mémoire ROS 238 lors de sa fabrication et ne peut pas être changé. Quand une adresse est envoyée à cette mémoire ROS, le mot de micro-instruction correspondant est lu dans cette mémoire. La mémoire d'initialisation 240 est une mémoire morte programmable PROM à 1K par 8 bits qui n'est utilisée que pendant des opérations d'initialisation. Elle contient des instructions de programme qui sont chargées dans la mémoire principale pendant une initialisation. Les sorties de la mémoire PROM d'initialisation 240 engendrent des bits qui'sont combinés selon la fonction logique OU à des bits 24 à 31 aux sorties de la mémoire ROS de microprogrammes normale 238 Pendant une opération d'initialisation, cette mémoire d'initialisation PROM est validée et les bits 24 à 31 de la mémoire ROS normale sont invalidés. Le registre local 242 de la figure 9 est un registre à 8 bits qui reçoit le mot de micro-instruction adressé en provenance de la mémoire ROS. Ces données sont écrites dans ce registre par un signal PTIMEO qui indique le commencement d'un cycle de processeur CPU de 500 nanosecondes. Des décodeurs 244 sont constitués par un réseau de multiplexeurs et de circuits logiques de décodage qui engendre des commandes spécifiques de la partie matérielle en fonction du mot de micro-instruction qui est alors contenu dans le registre local 242. Les signaux de sortie des décodeurs 244 sont distribués au tableau de connexion 201, à des bascules de commande 253, à des bascules diverses 264 et à d'autres circuits logiques du processeur CPU (voir la figure 8).Les décodeurs 244 commandent différents voyants indicateurs du tableau de connexion 201. Les bascules de commande 25 se composent de quatre bascules (CFî à CF4) qui peuvent être mises à un et contrôlées directement par la partie microprogrammée du processeur CPU sous la commande de micro-instructions. Elles sont utilisées pour garder en mémoire et contrôler certaines conditions entre des phases de microprogramme. Par exemple, une bascule de commande 3 (CF3) est utilisée pendant une séquence de transfert de données de DMC par la partie microprogrammée du processeur CPU pour garder en mémoire le bus de système (A ou B) auquel est connecté le contrôleur IOC demandant le transfert de données. Les bascules diverses 264 se composent d'autres bascules qui peuvent être directement mises à un et/ou contrôlées par la partie microprogrammée. Le groupe de bascules comprend une bascule de contrôleur de temps de séquence microprogrammée (WDT), une bascule d'horloge de temps réel de microprogramme (RTC), et une bascule de défaut de courant d'alimentation.Ce groupe de bascules comprend également une bascule PCLEAR et une bascule PDMCIO qui sont utilisées par la partie microprogrammée du processeur CPU pour garder en mémoire l'état du signal de bus de système PBYTEX mis à un par le contrôleur IOC répondant pendant une période de temps de traitement où le processeur CPU est Informé du type de contrôleur IOC (DMA ou DMC) pendant une séquence de commande de processeur CPU (voir la figure 20) Le processeur CPU utilise le type de contrôleur IOC contenu dans la bascule PDMCIO pendant l'exécution d'une commande de processeur CPU d'adresse d'entrée et de portée d'entrée pour déterminer si l'adresse et la portée du contrôleur IOC seront trouvées dans la table de programme canal SPM du processeur CPU, comme c'#st le cas pour un contrôleur d'entrée-sortie de DMC, ou reçues du bus de système après y avoir été placées par un contrôleur d'entrée-sortie de D.t . Le registre d'adresse 246 est un registre 10 bits qui mémorise l'adresse de mot de micro-instruction présente. Ses signaux de sortie sont utilisés pour adresser la mémoire ROS 238. L'adresse de mot de micro-instruction suivante est transférée dans ce registre par le signal de synchronisation PTIME2 (période de temps principale 2) à chaque cycle du processeur CPU. Le générateur d'adresse de mémoire de commande 248 sélectionne l'adresse du mot de micro-instruction suivant à lire en mémoire ROS 238. Toutes les adresses sont des adresses de branchement et peuvent être décodées directement à partir du mot de micro-instruction présent ou être forcées par des interruptions de la partie matérielle. Quatre types d'adresses de mot de micro-instruction sont décodées directement à partir du mot de micro-instruction et des conditions de contrôle de processeur CPU (voir la figure 35D):1) branchement inconditionnel (UCB) à l'adresse de microprogramme des bits 38 à 47 du mot de micro-instruction présent ; 2) branchement sur condition de contrôle (BOT) (branchement de contrôle à deux voies) qui sélectionne une des 32 conditions contrôlables par microprogramme et produit une adresse de branchement â un des deux emplacements de microprogramme en fonction de l'état vrai ou faux des signaux représentant les conditions sélec tionnées; 3) branchement sur contrôle principal' ou majeur (BMT) (branchement pour contrôle multiple) qui est utilisé par la partie microprogrammée pour décoder des codes opération d'instructions de programme et des "syllabes" d'adresse, des constantes mémorisées et des interruptions de programme en exécutant un branchement à 16 voies pour la condition de contrôle sélectionnée; et 4) branchement de retour au déroulement normal (RTN) (branchement de retour d'interruption de partie matérielle) qui produit un branchement à l'adresse de microprogramme mémorisée dans le registre'de retour d'interruption de partie matérielle et qui est utilisée pour revenir au déroulement normal de microprogramme à la fin d'une séquence microprogrammée d'interruption de partie matérielle. Le réseau d'interruption de partie matérielle250 force une adresse de branchement dans le générateur d'adresse de mémoire de commande 248 chaque fois qu'une intervention immédiate du processeur CPU est nécessaire. L'adresse d'interruption de partie matérielle peut entre engendrée à chaque cycle de processeur CPU et une adresse distincte est engendrée pour chaque condition d'interruption de partie matérielle. La condition d'interruption de partie matérielle et les priorités sont représentées sur la figure 9. La parti-e microprogrammée du système peut empêcher la détection d'une ou de toutes les conditions d'interruption de partie matérielle. S'il se produit une interruption de partie matérielle, l'adresse de microprogramme suivante normale est mémorisée dans le registre de retour d'interruption de partie matérielle 252. Le registre de retour d'interruption de partie matérielle 252 est un registre à 10 bits qui mémorise l'adresse de mot de micro-instruction normale suivante quand il se produit une interruption de partie matérielle. Cette adresse est ensuite utilisée pour reprendre le déroulement normal des microprogrammes à la fin de la séquence d'in- terruption de partie matérielle. Le réseau de branchement sur contrôle 254 utilise le mot de micro-instruction présent pour s#lectionner une des 32 conditions contrôlables par microprogramme et informer le générateur d'adresse de mémoire de commande 248 de l'état vrai ou faux de la condition sélecti#nnée. Le réseau de branchement principal ou majeur 256 engendre 11 adresse de microprogramme suivante quand un branchement BMT (16 voies) est exécuté. Le mot de microinstruction présent (bits 40, 41, 42 et 43) indique si un code opération, une syllabe d'adresse, une constante ou une condition dtintern;ption de programme est utilisé pour former i'adresse de microprogramme suivante. Le réseau d'interruption de programme 257 détecte des conditions qui peuvent interrompre le traitement logiciel et engendre une seule adresse de microprogramme pour chaque condition sur la base des priorités. La partie microprogrammée utilise ces adresses pour effec- tuer un branchement au sous-programme microprogrammé convenable pour prendre en charge la condition d'interruption. On notera qu'un branchement BAT pour contrôler des conditions d'interruption de programme n'est exécute qu'au commencement d'une lecture d'instruction ae programme à partir d'une séquence de mémoire principale. Les conditions d'interruption de programme énumérées ci-dessous sont données dans l'ordre de priorité la plus grande à la priorité la plus petite : 1) interruption de dépassement de capacité#de registre quand un dépassement de capacité se produit dans un registre du processeur CPU (R1-R7) pendant un traitement de données et que le registre a son groupe de bits correspondants dans le registre de masque de validation d'interruption (M1); 2) défaut de courant quand la source d'alimentation détecte qu'une baisse de courant se produit dans une période de temps minimale de deux millisecondes 3) interruption d'entrée-sortie de bus de système A quand un contrôleur IOC connectE au bus de. système A a demandé un cycle d'interruption ; 4) interruption d'entrée-sortie de bus de système B quand un contrôleur IOC connecté au bus de système B a demandé un cycle -d'interruption; et 5) interruption de contrôleur de temps quand une interruption à période de temps fixée par le signal de la ligne de courant alternatif utilisée pour la mise à jour d'une horloge en temps réel ou des éléments en option si c'est nécessaire. On va maintenant se référer à nouveau à la figure 8. Sur cette figure, la mémoire interprète (SPM) 236 est une mémoire à acces sélectif de 256 emplacements par 17 bits utilisée pour mémoriser des états du processeur CPU, une portée d'entrée-sortie et des adresses de tampons pour des canaux DMC. Elle constitue également une mémoire intermédiaire pour des transferts de données, d'adresses, de constantes et de multiplets d'entrée-sortie. La mémoire SPM contient : 15 emplacements de manoeuvre, un espace'de registre d'état du processeur CPU et une table de prOgr#-mLe canal (PCT). Tous les emplacements de la mémoire SPM ne sont pas utilisés. On va maintenant se référer au topogramme de mémoire interprète représenté sur la figure 10. Les 15 emplacements de manoeuvre (emplacements 00 à 06 et 08 à OF en hexadécimal) sont utilisés pour une mémorisation temporaire. Certaines des utilisations de ces emplacements de manoeuvre consistent en la mémorisation temporaire de données d'entrée-sortie avant de les transférer dans la mémoire, en conservant l'adresse de programme précédente et en la mémorisation intermédiaire de multiplets de remplacement pendant des transferts de données de DMC. Le registre d'état de CPU est à l'emplacement 07 (hexadécimal) de la mémoire SPM. Cet emplacement est directement accessible par le logiciel. Cet emplacement contient toujours l'état (c'est-à-dire des informations d'état) du processeur CPU pendant le traitement en cours. Les définitions des bits d'informations sont données sur la figure 4. La table de programme canal (PCT) occupe les 128 emplacements supérieurs (d'adresse supérieure) de la mémoire SPM. Elle est utilisée exclusivement par le processeur CPU pour gérer des opérations de canal DMC. Les attributs de la table de programme canal sont 1) elle est constituée de 64 entrées dont chacune peut être utilisée pour un canal d'entrée ou de sortie car les canaux d'entrée/sortie sont semi-duplex (c'est-à-dire, dans le mode d'entrée ou dans le mode de sortie à n'importe quel moment), une seule entrée étant donc nécessaire par paire de canaux d'entrée/ sortie ; et 2) chaque entrée est constituée d'une adresse de multiplet à 17 bits et d'une portée à 16 bits et occupe deux emplacements de mémoire SPM consécutif s Une entrée de table PCT est chargée quand une instruction de programme de chargement d'entrée-sortie (IOLD) est dirigée vers son canal DMC associé. Chaque fois qu'un transfert de données de DMC se produit, l'entrée de table PCT appropriée est mise à jour.Des informations peuvent être lues dans une entrée de table PCT au moyen d'une instruction d'entrée-sortie de programme en direction d'un canal DMC spécifiant dans sa zone de code de fonction une des commandes d'entrée-sortie suivantes: 1) adresse d'entrée; 2) portée d'entrée; et 3) module d'entrée. La mémoire interprète SPL est directement commandée par le mot de micro-instruction présent (voir la description de mot de micro-instruction qui suit). Une écriture de mémoire SPM se produit avec le signal PTI#4E4 si le bit 0 du mot de micro-instruction est un UN binaire. Les données d'entrée en mémoire SPM proviennent du bus interne 260 par l'intermédiaire d'un multiplexeur de remplacement de multiplet 262 (voir figure 8). Dans des opérations de multiplets, le multiplexeur 262 remplace les multiplets à gauche et à droite dans les données d'entrée en mémoire SPM si le multiplet de gauche du mot sur le bus interne 260 doit être traité. Pour des canaux DLMC, la partie microprogrammée remet le bit 16 à zéro dans le pointeur d'adresse d'entrée de table PCT de la mémoire SPM pour identifier si le multiplet de gauche d'un mot de mémoire est en cours de traitement.L'adressage d'un emplacement dans la mémoire SP. est également commandé par microprogramme. L'adresse d'accès à la mémoire est extrait directement du mot de micro-instruction par un accès à des emplacements de manoeuvre et au registre d'état à partir des décodeurs 244 de la figure 9 par l'intermédiaire d'un multiplexeur d'adresse de mémoire SPM 294 de la figure 8. Autrement, le numéro de canal DMC est utilisé quand un accès à la table PCT est nécessaire, auquel cas l'adresse de mémoire S## provient du registre de numéro de canal 296 par l'intermédiaire du multiplexeur d'adresse de mémoire SPPI 294, sur la figure 8.Quand elle exécute une opération de transfert de données de DMC, la partie microprogrammée du processeur CPU utilise le bit de poids faible du numéro de canal (bit 9 sur la figure 24) pour déterminer si une opération d'entrée ou de sortie doit être exécutée en utilisant l'adresse et la portée mémorises dans l'entrée de table PCT pour la partie de canaux d'entrée-sortie associée. On va maintenant décrire le microprocesseur contenu dans le processeur central CPU. Si l'on se réfère à nouveau à la figure 8, on voit que toutes les activités dans le processeur CPU reposent sur les possibilités de taitement du microprocesseur 232 commandé par la partie microprogrammée. Toutes les opérations arithmétiques, de comparaison, et logiques sont exécutées dans le processeur CPU par le microprocesseur 232 qui est composé de quatre microprocesseurs en'pastille à 4 bits pour former un microprocesseur à 16 bits.Dans l'exemple de réalisation préféré, le micronrocesseur 232 est composé de quatre microprocesseurs d'un type Am2901 fabriqué par Advance Micro Devices Inc., #à Sunnyvale en Californie. Le microprocesseur 232 contient un fichier de registres de 16-emplacements par 16 bits,268, une unité arithmétique et logique de huit fonctions à 16 bits (ALU) 266, un circuit logique à décalage et des circuits logiques divers pour supporter les possibilités du microprocesseur. Les données d'entrée du microprocesseur 232 proviennent des sorties de 16 bits du multiplexeur de sélection de données 269. Le multiplexeur 269 peut sélectionner des données provenant de la sortie de mémoire 236, du bus interne 260, du contenu du registre d'indicateur 270 et du registre M1 272 ou, une constante du mot-de micro-instruction présent provenant du registre local 242 (voir figure 9). Les données d'entrée du microprocesseur 232 peuvent être mémorisées dans le fichier de registres 268 ou des registres de manoeuvre du microprocesseur ou elles peuvent être transférés sur le bus interne par l'intermédiaire de l'unité ALU 266 comme des données de sortie du microprocesseur. Cela est déterminé par l'entrée de microprogramme du microprocesseur. Les bits 8 à l9 du mot de micro-instruction présent commandent le microprocesseur (voir la description de mot de micro-instruction plus loin). Ces bits commandent des entrées de données de l'unité ALU, la fonction que l'unit ALU doit exécuter, et la destination des résultats d'opérations exécutées par l'unité ALU. Le microprocesseur exécute une nouvelle opération en fonction du mot de microinstruction à chaque cycle de processeur CPU (500 nanosecondes dans l'exemple préféré). Le microprocesseur 232 contient 16 registres dans le fichier de registres 268, dont 15 sont visibles par le logiciel (voir figure 11). Une adresse à quatre bits fournie au microprocesseur est utilisée pour adresser le fichier de registres. Cette adresse peut être sélec-. tionnée dans le registre de fonction (FR) 274 ou directement dans le mot de micro-instruction. Le registre de fonction FR 274 mémorise d'abord le code opération et ensuite il mémorise différentes syllabes d'adresse et constantes et peut progresser ou régresser selon ce qui est déterminé par déroulement de microprogramme. Pour un adressage de fichier, le registre FR 274 est divisé en trois sections (FRO, FR2 et FR3) et chacune de ces sections peut être sélectionnée par le multiplexeur d'adresse de fichier 276 pour être utilisée afin d'adresser le fichier de registres du microprocesseur. L'entrée de données dans le fichier de registres 268 se fait par l'intermédiaire de l'unité ALU 266.Le fichier de registres 268 peut transmettre des données de sortie à l'unité ALU 266, à un registre de manoeuvre interne (Q), ou au bus interne 260 selon ce qui est déterminé par le mot de micro-instruction présent. Les données en sortie du microprocesseur 232 sont combinées selon la fonction logique OU par un circuit ap proprié avec des données d'entrée de récepteurs des bus de système A-et B au niveau du bus interne 260. Si les récepteurs du bus A ou du bus B sont validés, la sortie du microprocesseur est alors invalidée. Cependant, des signaux contrôlables par microprogramme (ALU égale zéro, SIGNE, dépassement de capacité, report) sont toujours extraits du microprocesseur 232. En plus des données qu'il fournit à l'entrée du mi croprocesseur 232, le multiplexeur de sélection des données 269 peut avoir ses données de sortie transférées de façon conditionnelle par porte logique dans le registre M1 272 et dans le registre d'indicateur 270 sous commande microprogram muée. Quatre bits des données de sortie du multiplexeur de sélection 269 peuvent être transférés de façon conditionnelle par porte logique dans le registre de contrôle logique de qualité (QLT) 278 sous commande microprogrammée.Les signaux de sortie du registre QLT 278 commandent l'éclairage de quatre indicateurs LED (diodes à émission de lumière) placés sur le tableau du processeur CPU qui sont utilisés pour donner à l'opérateur du système de traitement de données une indication visuelle de l'état satisfaisant ou de défaut des contrôles logiques de qualité pendant l'initialisation du système. Une horloge 281 engendre les différents signaux de synchronisation (PTIMEO à PTIME4 et BCYCOT) utilisés dans tout le système (voir les figures 14 et 15). On va maintenant décrire les moyens de commande de bus de système. La figure 12 représente les deux bus de système A et B, les voies de données et l'exploitation des signaux de commande. Les éléments fondamentaux sont les décodeurs de sous'commandes de bus 244, le bus interne de processeur CPU 260, des récepteurs distincts 284 et 288 et des émetteurs distincts 282 et 286 pour chaque groupe de lignes de données/adresses d'interface de système d'entrée-sortie, et un générateur de temps hors de cycle de processeur CPU 280. La partie microprogrammée commande la circulation des données sur les deux bus-de système A et B et tout transfert effectué par le bus interne de processeur CPU à 16 bits 260. Pendant chaque cycle de processeur CPU,les décodeurs de sous-commande 244 décodent le mot de micro-instruction présent et engendrent des sous-commandes de commande de bus qui sont validées entre l'apparition des signaux PTIllEl et PTIME4 du cycle en cours. Ces sous-commandes décodées valident des Voies de données spOcifiques et penciett#nt des transferts de données coname il est demandé par microprogramme.Les dialogues qui peuvent être réalisés sur les bus de système sont décrits dans la partie qui suit concernant le fonction- nement des bus de système. Les moyens de commande de bus de système de base sont décrits dans les paragraphes suivants. Des sous-commandes séparées déterminent si les récepteurs 284 ou les récepteurs 288 de bus de système sont validés pour placer des données sur le bus interne 260. Si les récepteurs 284 et 288 des bus de système A et B sont invalidés, les données de sortie du microprocesseur 232 sont transférées par le bus interne 260. Si des données doivent être envoyées à un contrôleur d'entrée-sortie 1OC, les émetteurs de processeur CPU à bus de système approprié 282 ou 286 sont validés, ce qui entraine le transfert de données du bus interne 260 jusqu'aux lignes de données/adrgse de bus de système validées.Si des données doivent être transférées d'un contrôleur 10C au processeur CPU, le signal de validation d'émetteur de données de contrôleur 1OC approprié (PENBSA-ou PENBSB-) est décodé et envoyé par l'lntermediaire de l'interface d'entrée-sortie à tous les- contrôleurs 1OC sur le bus de système spécifique Cependant, il n'y a que le contrôleur 1QC ayant demandé I'accès au bus qui place des données sur le bus de système. Une sous-commande séparée est engendrée quand une mémoire principale doit transférer des données au processeur CPU. Les lignes de récepteurs de CPU appropriées doivent aussi être validées pour le transfert de données de mémoire principale jusqu'au bus interne. Comme il a été mentionné plus haut, tous les transferts se font par l'intermédiaire du bus interne 260. Par exemple, si la partie microprogrammée détermine que des données doivent être transférées d'un contrôleur IOC sur le bus de système A jusqu'à une mémoire principale sur le bus de système B, elle valide les émetteurs de données dans le contrôleur 10C sur le bus de système A (par le signal PENBSA-) et les récepteurs de bus de système A 288 pour que les données sur le bus interne 260 soient transférées jusqu'd la mémoire principale. S'il s'agit d'un transfert de DMC, les données du bus interne sont d'abord envoyées à la mémoire SPM 236 (Fig. 8) pour un remplacement de multiplet éventuel.Pendant un cycle de processeur CPU ultérieur, les données sont extraites de la mémoire SPM 236 par l'intermédiaire du microprocesseur 232 et les émetteurs de bus de système B 282 sont validés, ce qui permet le transfert des données du bus interne 260 jusqu'à lat mdmoire principale de bus de système B. Le signal de temps hors de cycle de processeur CPU (BCYCOT) est utilise pour permettre une demande d'un bus de système pour un transfert de données ou une interruption par un contrôleur 1OC. Ce signal assure qu'un seul contrôleur 1OC communique avec le processeur CPU à un moment donné. Ce signal est engendré toutes les quatre microsecondes et il est transmis d'un contrôleur à un autre plus bas sur chaque bus de système. Chaque contrôleur 10C accuse réception de l'impulsion et la retarde de 500 nanosecondes avant de la transmettre au contrôleur 1OC suivant (voir Fig. 13).La période de temps pendant laquelle un contrôleur 10C retarde le signal est appelé temps d'entrée de cycle pour ce contrôleur 1OC. Comme on l'a expliqué auparavant, la mémoire principale ne faisant jamais de demande de tranfert de données ou d'interruption, celle-ci ne retarde pas le signal de temps de sortie de cycle sur le bus de système. Elle transmet au contraire le signal BCYCOT à la mémoire principale suivante ou au contrôleur 1OC suivant sur le bus de système B sans le retarder. Une période de temps d'entrée de cycle est le seul intervalle de temps pendant lequel un contrôleur 1OC peut demander l'accès au bus de système. Si la partie microprogrammée du processeur CPU accepte cet accès, une liaison entre le processeur CPU et le contrôleur 1OC est réalisée, celle-ci empêchant à tout autre contrôleur 10C d'avoir accès au bus de système. Pendant cette periode de temps o: le processeur et le contrôleur 30C sont connect6Ut d'autres contrôleurs 10C sur le même ou l'autre bus de système peuvent faire une demande de bus de système pendant leur temps d'entrée de cycle mais le processeur CPU n'accepte pas ces demandes d'accès au bus de système. Cet-"# liaison CPtl--lOC est réalisée sous commande misooprograramXe par invalidation d'interruptions de logiciel et de matériel jusqu'à ce que la liaison soit supprimée.La liaison CPU-îOC est établie et maintenue par chaque mot de micro-instruction des microprogrammes utilisés pour traiter la demande de transfert de données ou d'interruption qui comporte un bit remis à zéro pour invalider des interruptions de matériel (ou de logiciel). La première micro-instruction comportant le bit d'interruption de matériel remis à zéro établit la liaison CPU-IOC, et, après cet établissement, le premier mot de micro-instruction comportant le bit mis à un supprime la liaison. On va maintenant décrire le tableau de connexion 201 de la figure 9 qui est relié directement au processeur CPU et qui permet à l'opérateur d'initiliser, d'introduire une séquence de chargement de programme et lancer le système manuellement. te tableau de connexion comprend un commutateur à bouton-poussoir (instantanE) utilisé pour lancer la séquence d'initilisation (et d'introduction de séquence de chargement de programme). En appuyant sur le bouton-poussoir d'initilisation, le commutateur correspondant remet à zéro le registre d'adresse de mémoire ROS(246 sur la figure 9 par l'intermédiaire du générateur d'adresse de mémoire de commande 248), ce qui provoque un branchement au sous programme microprogrammé d'initialisation.Le signal PCLEARest également remis momentanément à un niveau bas sur les deux bus de système, ce qui lance des opérations de contrôle logique de qualité (QLT) par les contrôleurs 1OC. On va maintenant décrire les circuits de synchronisation de base du système en référence à la figure 14 où ils sont réalisés à partir d'un oscillateur à 10 megahertz 290 qui engendre à sa sortie un signal PCLOCK-envoyé à l'entrée d'horloge (C) d'un registre à décalage à 5 bits 291. Le registre a décalage 291 est du type SN7496 fabriqué par Texas Instruments Inc. à Dallas au Texas, et qui est décrit dans la publication intitulée UThe TTL Data Book for Design Engineers", deuxième édition. Le registre à décalage 291 comporte un ZERO binaire à son entrée de validation d'initialisation (PE) et un UN binaire à son entrée de remise à zéro (R), un ZERO binaire à ses entrées d'initialisation (S1 à S5). Le signal à la sortie d'une porte ET 293 (signal PTIMIN+)est envoyé à l'entrée série (D) du registre à décalage 291.Les signaux de sortie du registre à décalage 291, PTIMEO+ PTIME4+, sont utilisés pour produire un cycle de processeur CPU de base de 500 nanosecondes qui est divis en cinq périodes de temps égales à 100 nanosecondes, tel qu'il est représenté sur la figure 15. Ces périodes de temps sont utilisées dans tout le système pour échantillonner et transférer des évènements et des données spécifiques, comme par exemple le signal.PTIMEO qui indique le commencement d'un cycle de processeur CPU. Le mot de micro-instruction adressé et transféré de façon conditionnelle dans le registre local de moire de commande 242 et les décodeurs 244 sont validés (voir figure 9). L'apparition du signal PTIYE1 valide tous les signaux de commande de bus de système qui restent validés jusqu'à la disparition du signal PTI24. Le signal PTIMEO+ qui, lorsqu'il est inversé est un UN binaire entre les signaux PTIME1 et PTIME4, valide les voies de données spécifiques dans les bus de système et le bus interne par l'intermédiaire des décodeurs de sous-commande 244 (voir figure 12). Le signal PTIME2 est utilisé pour transférer de façon conditionnelle l'adresse de microprogramme qui est valide à ce moment dans le registre d'adresse de mémoire de commande 246 (voir figure 9 Le signal PTIME3 est envoyé à tous les contrôleurs 1OC sur les bus de système pour synchroniser le processeur CPU et les contrôleurs IOC, Les données de bus sont validées à ce moment. Le signal PTIkE4 est principalement utilisé par le microprocesseur du processeur CPU. Toute opération d'écriture ou de mémorisation d'informations dans le microprocesseur 232 et dans la mémoire interprète 236 est exécutée à ce moment (voir figure 8). On va maintenant décrire brièvement le fonctionnement des circuits logiques de synchronisation de base du système en se référant à nouveau à la figure 14. On suppose d'abord que les signaux de sortie du registre à décalage 291, PTIMEO+ à PTIIE4s, sont à ZERO binaire et que le signal de blocage d'horloge PFREE W est à ZERO binaire pour indiquer que l'horloge ne doit pas être bloquée, le signal de sortie de la porte ET 293- PTLMIN+ étant alors à UN binaire. Le signal à l'entrée série (D) du registre à décalage 291 étant à UN binaire, l'apparition d'une transition de ZERO binaire à UN binaire du signal d'horloge PCLOCK-provenant de l'oscillateur 290 fait passer le signal de sortie PTIL#1El+ à UN binaire qui à son tour fait passer le signal de sortie PTIMIN+ de la porte ET 293 à ZERO binaire, comme la figure 15 l'indique. Avec chaque impulsion d'horloge engendrée par l'oscillateur 290 en série, un des signaux de sortie du registre à décalage 291 passe à UN binaire et les quatre autres signaux de sortie passent (ou restent) à ZERO binaire comme la figure 15 l'indique.Chacun des signaux de sortie du registre à décalage 291 est envoyé à un inverseur qui engendre l'inverse des signaux de synchronisation (c'est-à- dire les signaux PTIMEO- à PTIME4-) Pour plus de simplicité, seul un inverseur 297 pour le signal PTIMEO+ est représenté sur la figure 14. Le signal PTIlMEOf est également utilisé comme signal d'entrée d'horloge (C) d'un compteur binaire progressif/regressif synchrone 292. Le compteur 292 est du type ZN74LS169A fabriqué par Texas Instruments Inc. qui est décrit dans la publication citée plus haut. Le compteur 292 en liaison avec une porte NON-ET 295 est utilisé pour engendrer le signal de temps de sortie de cycle de processeur CPU, BCYCOT-, qui est transmis vers le bas des bus de système A et B pour être utilisé par des contrôleurs IOC sur les bus de système afin d'assurer qu'un seul controleur IOC par bus de système fait une demande de ce bus à un moment donné. Par un comptage régressif de huit transitions de signal PTItSO+ de ZERO binaire à UN binaire, le compteur 292 en liaison avec la porte NON-ET 295 fait passer le signal BCYCOT- a ZERO binaire pendant une période de cycle de processeur CPU (500 nanosecondes) et à UN binaire pendant sept périodes de cycle de processeur CPU. Spécifiquement, l'entrée de chargement (L) du compteur 292 est mise à un de sorte que des signaux d'entrée D1 à D8 sont ignorés (c'est-à-dire, non utilisés pour pré-charger le compteur), les deux entrées de validation de compte (P et T) sont remises à zéro pour valider le comptage, et l'entrée de comptage progressif/régressif (U/D) est remise à zéro pour faire fonctionner le compteur en mode régressif. A l'apparition de la première transition du signal d'horloge PTIMEO de ZERO à UN binaire, les quatre signaux de sortie du compteur 292, BCNTL1+ à BCNTL8+, passent à UN binaire (comptage régressif de zéro à quinze en binaire) et le signal de sortie de la porte NON-ET 295, BCYCOT-passe à ZERO binaire. A l'apparition de la seconde transition du signal PTI#4EO+ de ZERO à UN binaire, le signal BCNTL1+ passe à ZERO binaire et le signal de sortie de la porte NON-ET 295 passe à UN binaire. Le signal BCYCOT-reste à UN binaire jusqu'à la neuvième apparition du signal PTIMEO+ qui passe de ZERO à UN binaire, cet état UN faisant passer les signaux BCNTL1+, BCNTL2+ et le signal BCNTL4+ encore une fois à UN binaire alors que le signal de sortie de la porte NON-ET 295 est passé à ZERO.La relation entre les signaux de base de temps du processeur CPU PTIMEO à PTIME4 et le signal de temps de sortie de cycle de proce-sseur CPU BCYCOTest indiquée sur la figure 13. On voit sur la figure 13 que le signal de temps de sortie de cycle de processeur CPU BCYCOT-(première entrée de cycle de contrôleur) passe de UN à ZERO binaire au bord avant du signal PTIMEO du second cycle de processeur CPU et passe de ZERO à UN binaire au bord avant du signal PTIMEO du troisième cycle de processeur CPU. Celui-ci est opposé au second signal BCYCOT- d'entrée de cycle de contrôleur et aux signaux suivants qui passent de UN à ZERO binaire à l'apparition du bord arrière du signal PTIbE3- et qui passent de ZERO à UN binaire à 1'apparition suivante du bord arrière du signal PT#iE3)-. Cette différence provient de la génération du signal de sortie de cycle de processeur CPU par un comptage fait à chaque huitième signal PTDHEO, comme il a été expliqué plus haut, alors que le signal de sortie de cycle de contrôleurs est engendré par réception du bord arrière du signal PTIME3 pendant que le signal de sortie de cycle provenant du précédent contrôleur IOC (plus proche du processeur CPU) est à ZERO binaire, comme on l'expliquera plus loin en référence à la figure 40. La condition nécessaire que doit remplir le système tel qu'il est réalisé selon l'invention pour fonctionner correctement est qu'un seul contrôleur IOC sur un bus de système voie le bord arrière' du signal PTI#IE3 pendant que le signal de sortie de cycle provenant du contrôleur voisin (ou du processeur CPU) est à ZERO binaire. On notera qu'à chaque point dans le temps, le signal BCYCOT--reçu par un second contrôleur IOC sur le bus de système A (par exemple) en provenance du premier contrôleur IOC sur le bus de système A est dans le même état binaire que le signal BCYCOT-reçu par un second contrôleur IOC sur le bus de système B en provenance du premier contrôleur IOC sur le bus de système B. On va maintenant décrire l'initilisation du système de traitement de données. La figure 16 montre comment le processeur CPU réagit à une mise sous tension ou à un signal d'initialisation. Sur la figure 16, une entrée est faite dans la séquence d'initialisation du processeur CPU au niveau du bloc 300 si la présence du signal d'alimentation provenant de la source d'alimentation est détectée. Une entrée est également faite à partir du bloc 302 si la mise sous tension est déjà réalisée et que le bouton-poussoir d'initllisation sur le tabelau de connexion du processeur CPU est poussé. Dans le bloc 304, un signal de remise à zéro générale est envoyé aux contrôleurs IOC pour initialiser leurs circuits logiques pour la remise à zéro des bus de système A et B qui implique des au#to-contrôles logiques de qualité des contrôleurs (QLT). La remise à zéro générale initialise également les circuits logiques du processeur CPU, ce qui correspond à l'entrée dans le bloc 306. Le bloc 306 lance une séquence d'exécution de microprogramme de processeur CPU à 1'emplacement O de la mémoire de commande ROS 238 sur la figure 9.Dans le bloc 307, la partie microprogrammée du processeur CPU effectue un contrôle pour déterminer si une entrée en séquence a été lancée par appui sur le bouton-poussoir d'initialisation (c'est-à-dire, par l'intermédiaire du bloc 302) et si c'est le cas, une initialisation complète doit être exécutée, ce qui correspond à l'entrée dans le bloc 312. Si une entrée en séquence a été faite' par la détection d'une mise sous tension par l'intermédiaire du bloc 300, le bloc 307 donne accès au bloc 308 et une initialisation incomplète peut être exécutée. Le bloc 308 contrôle si le contenu de la mémoire principale est valide (c'est-à-dire, si un signal ME;4B#L- à ZERO binaire indique que l'unité de conservation de mémoire a une batterie chargée de sortie qu'une tension de rafraichissement de mémoire principale a été maintenue pendant n'importe quelle période de coupure de courant). Si la mémoire principale est valide, il suffit d'exécuter une initialisation limitée et une entrée est faite dans le bloc 310 pour l'exécu- tion d'un branchement à l'emplacement O de mémoire principale et un déroulement de programme est commencé. L'emplacement O de mémoire principale contient le premier mot de la procédure de mise en route du logiciel. Le bloc 310 donne ensuite accès au bloc 324 par le déroulement de programme. Si la mémoire principale n'est pas valide, ou si une entrée en fréquence a été faite a partir du boutonpoussoir d'initialisation, une initialisation complète doit être exécutée et une entrée est faite dans le bloc 312. Les contrôles QLT microprogrammés du processeur CPU (résidant en mémoire ROS 238 sur la figure 9) sont exécutés dans le bloc 312. Quand les contrôles QLT microprogrammés du processeur CPU sont terminés, une entrée est faite dans le bloc 314 et le programme de logic#iel dans la mémoire PROM d'initialisation 240, sur la figure 9, est transféré dans la mémoire principale (aux emplacements 100 à 2FF en hexadécimal) et il est exécuté.Dans le bloc 316, il résulte de l'exécution du programme de logiciel chargé à partir de la mémoire PROM d'initialisation, une détermination de capacité de mémoire principale, l'exécution d'un contrôle de parité de tout l'espace mémoire principale disponible et l'exécution d'un contrôle développé dé QLT de processeur CPU et d'entrée-sortie. Dans le bloc 318, les résultats des contrôles développés de QLT par programme de processeur CPU sont vérifiés. Si aucune erreur n'a été détectée par les contrôles développés de QLT de processeur CPU, une entrée est faite dans le bloc 320 et le programme d'initialisation de logiciel charge dans l'emplacement 100 (hexadécimal) de mémoire principale le premier article extrait du dispositif de chargement initial.Dans le bloc 322, quand le premier article est charge dans la mémoire principale, un branchement à l'emplacement 100 de mémoire principale est exécuté et la séquence d'initialisation est exécutée dans le processeur CPU jusqu' sa fin dans le bloc 324. Si le contrôle développé de QLT de programme de processeur CPU permet de détecter une erreur, une entrée est faite dans le bloc 326 à partir du bloc 318 et l'indicateur de contrôle du tableau de connexion reste éclairé et les indicateurs de contrôle QLT de processeur CPU (lumière des diodes à émission de lumière LED sur le tableau de processeur CPU) indiquent l'erreur. Le bloc 328 dans lequel une entrée est faite permet d'arrêter le processeur CPU. Si pendant l'exécution d'un programme dans le bloc 324, un défaut de courant imminent est détecté par la source d'alimentation, dans le bloc 330, l'exécution du programme est interrompue et une entrée est faite dans le bloc 332. Dans le bloc 332, le processeur CPU tente d'exécu- ter une séquence d'interruption par défaut de courant y compris la conservation des données d'exécution du programme en cours au moment de la détection de défaut de courant. Avant de conserver les données de contexte, le processeur CPU remet les bus de système à zéro pour les rendre disponibles pour une utilisation par le processeur CPU en vue de transferts de données du processeur à la mémoire principale. Le contexte conservé concerne les registres non rémanents du processeur CPU qui perdent leurs informations si l'alimentation n'est pas maintenue, ce contexte étant mémorisé dans la mémoire principale pour le préserver pendant la période de coupure de courant. Environ 2 millisecondes après la détection du défaut de courant imminent, la mémoire prince pale arrête de répondre à des demandes de processeur CPU, ce qui provoque l'arrêt d'exécution du programme en cours dans le bloc 334. L'exécution de microprogramme de processeur CPU est aussi arrêtée dans le bloc 334 quand il n'y a plus d'alimentation suffisante.La dernière détection de mise sous tension par la source d'alimentation dans le bloc 300 fait sortir le processeur CPU du bloc 334 et une initialisation partielle ou complète est exécutée selon que la mémoire principale. est restee valide pendant la période de coupure de courant ou non. On va maintenant décrire les opérations exécutées par les bus de système. Ces opérations consistent en opGra- tions de transferts d'adresses, de données et d'informations de commande entre le processeur et les contrôleurs IDC et la mémoire principale connectée au système (voir la figure 17 pour les formats de données). Toutes les opérations de bus de système sont commandées par des séquences de synchronisation de processeur CPU et des séquences microprogrammées. On va décrire dans cette partie la suite d'évènements qui se produisent sur les bus de système A et B quand le proces-. seur CPU communique avec un contrôleur IOC ou une mémoire principale. Les opérations de bus de système peuvent être lancées par le processeur CPU ou par un contrôleur IOC. Le processeur CPU lance un dialogue sur un bus de système pour les raisons -suivantes 1) tous les accès la mémoire principale 2) un rafraichissement de mémoire principale ; et 3) des codes de fonction transmis aux contrôleurs IOC. Un contrôleur IOC lance un dialogue sur un bus de système pour les raisons suivantes : 1) des transferts de données d'accès direct à la mémoire (DMA) 2) des transferts de données de commande multiplex de données (DMC) ; et 3) des interruptions de contrôleur IOC. La mémoire princi pale ne lance aucun dialogue sur un bus de système. Toute activité de bus de système lancée par un contrôleur 113C se fait sur une base de temps séparée. Les circuits logiques d'un contrôleur IOC ne permettent à celuici de faire initialement une demande de cycle de bus que pendant sa seule période de temps d'entrée du cycle (voir la figure 13) et si aucun autre contrôleur IOC sur ce bus de système particulier n'a déjà fait le même type de demande de cycle de bus (par exemple, un contrôleur IOC sur le bus de système B ne peut pas faire une demande de DMC si un autre contrôleur IOC sur le bus de système B a déjà remis la ligne PDMCR2 à ZERO binaire, mais le fait qu'un autre contrôleur IOC sur le bus de système A a déjà fait une demande de DMC en remettant la ligne PDMCR1 à ZERO binaire n'invalide pas la demande de DPIC faite sur le bus de système B).Puisque les contrôleurs IOC ne peuvent faire une demande de bus de système que pendant leur période de temps d'entrée de cycle particulière, la présence de circuits de priorité dans les contrôleurs IOC n'est pas nécessaire. Puisque deux bus d'entrée-sortie. sont disponibles et que les contrôleurs IOC peuvent demander le bus pour différentes raisons, les microprogrammes du processeur CPU réagissent dans l'ordre de priorité la plus grande à la plus petite suivant 1) le bus B demande un transferE de DPA 2) le bus A demande un transfert de DMA ; 3) le bus A demande un transfert de DMC 4) le bus B demande un transfert de DMC 5) le bus A demande une interruption ; et 6) le bus B demande une interruption. Sur la figure 19, on peut voir que les quatre demandes de bus de priorité supérieure (transferts D#VI/DMC) sont traitées comme des interruptions de matériel dans le réseau d'interruption de matériel 250. Les deux demandes de bus de priorité inférieure Chaque opération de bus de système est commandée par des séquences microprogrammées de processeur CPU.Des commandes spécifiques microprogrammées informent les contrôleurs TOC que les traitements nécessaires sont transmis par le bus de système Des commandes de contrôleurs d'entréesortie sont émises sur les lignes RDDT (RDDT29, RDDT30, RDDT31 de la figure 6) du bus de système et proviennent directement du mot de micro-instruction présent dans le processeur CPU. Quand la partie microprogrammée émet une commande en direction d'un contrôleur IOC, la commande codée est placée sur les lignes RDDT de bus de système et la ligne ~d'échantillonnage de commande (PIOCTA sur le bus de système A et PIOCTB sur le bus de système B, ou les deux lignes PIOCTA et PIOCTB sur la figure 7) est forcée à ZERO binaire. Cela permet aux contrôleurs IOc sur les bus de système de décoder la commande et le traitement voulu est exécuté. Sur la figure 18, sont énumérées toutes les commandes d'entréesortie microprogrammées de processeur CPU qui peuvent être émises en direction d'un contrôleur IOC. Comme on le décrira plus en détail dans la suite, les commandes d'entrée-sortie mentionnées sur la figure 18 sont émises sur les lignes RDDT des deux bus de système A et B indépendamment du fait que le contrôleur OC auquel la commande est envoyée est sur le bus de système A ou sur le bus de système B. Dans les cas oG la commande doit être envoyée à un seul bus de système r par exemple, en réponse à une demande DMA d'un contrôleur IOC sur le bus de système B, une seule ligne d'échantillonnage de commande (PIOCTA sur le bus A ou PIOCTB sur le bus B) est remise à ZERO binaire de sorte que seuls les contrôleurs IOC sur ce bus voient la commande d'entrée-sortie.Dans d'autres cas où le processeur CPU émet une commande d'entrée-sortie à un contrôleur I3C qui peut être sur l'autre bus, par exemple, en lançant une commande de processeur CPU (CPCMD) à un contrôleur IOC, les deux lignes d'échantillonnage de commande (PIOCTA et PIOCTB) sont remises à ZERO binaire de sorte que tous les contrôleurs IOC voient la commande d'entrée-sortie. On va maintenant décrire les moyens d'accès à la mémoire. Tous les accès à la mémoire sont engendrés par la partie microprogrammée du processeur CPU. Il faut deux cycles de processeur CPU (1 microseconde au total) pour avoir accès à la mémoire. La figure 19 représente la séquence d'évène- ments et les signaux nécessaires pour transférer des données en direction/en provenance de la mémoire. Pendant le premier cycle de processeur CPU (500 nanosecondes), les signaux d'écriture de multiplet sont engendrés (PWRTB1, PWRTBO). Le signal PWRTBO est un UN binaire si le multiplet de gauche (zéro) des données doit être écrit en mémoire. Le signal P;@RTB1 est un UN binaire si le multiplet de droite (un) des données doit être écrit en mémoire. Ces signaux peuvent#provenir d'un contrôleur de DMA ou de la partie microprogrammée de processeur CPU. Dans chaque cas, ces signaux sont valides du temps principal un au temps principal quatre du cycle de processeur CPU initial. Ces signaux informent la mémoire qu'un mot doit être lu ou le (ou les) multip'let(s) associé(s) doit(vent) être écrit(s). Au temps principal trois du premier cycle de processeur CPU, l'impulsion de parcours de mémoire (PMEMGO) est engendrée. En même temps que l'impulsion PMEMGO, l'adresse de mot (16 bits) est placée sur les lignes d'adressefdonnées (BUSBOO à BUSB 15) du bus de système B. Cette adresse peut provenir d'un contrôleur de DMA ou du processeur CPU. Dans tous les cas, ce signal traverse le bus interne d'un bus de système (A ou B) à l'autre bus de système (B ou A). L'adresse (pendant le premier cycle) et les données (pendant le second cycle) sont placées sur les bus de système A et B par l'intermédiaire du bus interne. La mise de l'adresse ou des données sur les deux bus de système est faite quand l'adresse (ou les données) provient d'un contrôleur de DINA sur le bus de système B ou du processeur CPU selon ce qui convient pour permettre de contrôler les adresses ou données de chaque bus de système et autrement ce n'est pas nécessaire dans ces cas pour un fonctionnement correct du système. L'impulsion de parcours de mémoire permet à la mémoire d'accepter l'adresse et de lancer sa séquence d'accès. Si l'accès est dû à une demande de contrôleur IOC de DMA, le processeur CPU examine l'adresse par rapport à l'adresse maximale permise par l'etablissement de la composition de mémoire principale vis-à-vis du processeur CPU.Si l'adresse est supérieure à l'adresse maximale permise, il en résulte un forçage des signaux d'erreur de mémoire (PEMPAR et MEMPER) pour informer le contrôleur IOC concerné de la détection d'une adresse non existante. Le contrôleur IOC met alors à un le bit correct dans son registre d'état. Les demandes de mémoire lancées par le processeur CPU sont contrôlées pour vérifier qu'il n'y a pas d'adresses de mémoire non existantes avant de lancer une opération de parcours de mémoire et une interruption 15 en résulte. Pendant le second cycle de processeur CPU, un transfert de données est réalisé. Si le processeur CPU ou un controleur IOC doit recevoir des données, le processeur CPU valide les émetteurs de données de plaquette de mémoire (PBSF.SD) et au temps principal trois, la mémoire place les données sur le-bus de système B et, par l'intermédiaire du bus inte#rne de processeur CPU, sur le bus de système A. Si la mémoire était en train d'exécuter une lecture de mot complet et qu'elle détecte une erreur de parité, elle force le signal d'erreur de mémoire (MEMPER).Le processeur CPU transmet le signal d'erre#ur au bus de système A avec un signal d'erreur de contrôle de parité (PMMPAR). Si l'accès était dd a un contrôleur IOC en ayant fait la demande, le contrôleur IOC met un bit d'erreur à un dans son registre d'état. Une erreur de parité détectée pendant des demandes d'accès à la mémoire principale faites par le processeur CPU provoque une interruption 17. Tous les signaux d'erreur de mémoire principale sont remis à zéro au cours de l'exploration de mémoire suivante pendant l'operation sse mémoire principale suivante.Si des données doivent être écrites en mémoire, le processeur CPU ou un contrôleur IOC place les données sur le bus de système pendant le second cycle et la mémoire lit les données en fonction des signaux d'écriture de multiplet dans l'emplacement adressé au temps principal trois. On va maintenant décrire l'opération de rafraichissement de mémoire. Un cycle de rafraichissement de mémoire principale se produit si le processeur CPU émet un signal de parcours de mémoire (PMEMGO) en même temps que le signal de rafraichissement de mémoire (PMFRSH) sur. le bus de système B. Aucun autre dialogue de bus de système n'est nécessaire. Le processeur CPU émet un signal de rafraichissement de mémoire principale au moins toutes les 15 microsecondes. Si la partie microprogrammée du processeur CPU détermine que la mémoire principale n'est pas utilisée à ce moment, il peut émettre le signal de rafraichissement de mémoire à n'importe quel moment, en empêchant ainsi l'interruption du fonctionnement de processeur CPU pour l'émission d'un rafraichissement de mémoire. On va maintenant décrire les moyens permettant d'envoyer un code de fonction à un contrôleur IOC. Le processeur CPU transfère des codes de fonction à un contrôleur IOC pendant l'exécution d'instructions de programme I, IOH, IOLD, ce qui provoque le transfert vers ou à partir du contrôleur TOC d'un mot de 16 bits. La figure 20 représente la séquence d'événements et les signaux nécessaires pour exécuter cette opération de bus de système. La séquence est laricee par le processeur CPU qui émet une commande de processeur CPU (C2CMD) sur les lignes RDDT et place le numéro de canal et le code de fonction sur les lignes d'adresse/données (BUSXOO à BUSX15) des bus de système A et B. Le processeur CPU attend un temps maximal de 1,2 milliseconde pour recevoir une réponse du contrôleur IOC identifie par le numéro de canal.Pendant ce temps, le processeur CPU est effectivement bloqué, aucune interruption de logiciel ne peut être honorée mais des demandes de transfert de données peuvent être prises en charge. #e blocage du processeur CPU résulte de ce que le traitement d'un microprogramme de processeur CPU se fait en toum'm# sur une boucle pendant l'exécution de l'instruction de programme (IO, IOH, IOLD), ce qui a pour effet de faire émettre une coimnande par le processeur CPU en direction du- contrôleur IOC. Le fait de tourner sur une boucle de microprogramme pendant l'exécution de l'instruction de programme d'entrée-sortie empêche le processeur CPU de traiter d'autres instructions de programme ou de répondre à des interruptions de logiciel. Pendant que le microprogramme tourne ainsi sur une boucle, ce microprogramme attend la venue du signal de traitement ou d'occupation (PROCED ou PBUSY) en provenance du contrôleur IOC avant que la sortie microprogrammée fasse régresser un compte de dépassement de temps contenu dans un emplacement de manoeuvre de mémoire SPM. Les réponses suivantes sont possibles. Aucune réponse n'est faite si le processeur CPUa essayé d'avoir accès à des ressources non existantes ou erronées. Un contrôleur de temps microprogrammé de processeur CPU détecte cette condition et une interruption 15 en résulte. Le contrôleur IOC adressé est occupé et il ne peut pas accepter présentement de commande. Dans ce cas, le contrôleur IOC force la ligne d'occupation (PBUSY) à ZERO binaire pour terminer l'exécution de l'instruction. La réponse de tentative de relance d'opération (attente) est reçue si le contrôleur I3C adressé ne peut pas accepter la nouvelle commande en raison d'une condition temporaire dans le contrôleur IOC qui n'est pas en relation avec le numéro de canal adressé Le contrôleur force les deux lignes de traitement (PROCED) et d'occupation (PBUSY) à ZERO binaire, ce qui permet au processeur CPU de réextraire l'instruction présente et de relancer le dialogue. La réponse normale pour le contrôleur XOC est de forcer la ligne de traitement (PROCED) à XERO binaire, ce qui signale que le contrôleur tOC n'est pas occupé et que le processeur CPU peut terminer la séquence Si le contrôleur IOc adressé est du type DfrlA, il force également le signal PBYTEX à un niveau bas (ZERO binaire) pour informer le processeur CPU du type de réponse du contrôleur IOC En détectant une réponse provenant du contrôleur IOC, le processeur CPU émet une commande de réponse (ASCMD > sur les lignes RDDT, ce qui entraîne la remise à zéro des lignes d'occupation/traitement par le contrôleur IOC.Quand la commande de réponse est émise, le processeur CPU et le contrôleur ZOC sont reliés et la partie microprogrammée est affectée au transfert entre le processeur CPU et le contrôleur IOC. Pendant le temps de liaison, le processeur CPU examine la valeur de portée s'il s'agit d'un contrôleur de DMC. Si la valeur de portée est égale à zéro, le processeur CPU informe le contrôleur IOC de cette condition en émettant une commande de fin-de-portée (EOFRG) sur les lignes RDDT. Certains contrôleurs IOC ont besoin de cette information, d'autres l'ignorent. A peu près six microsecondes après que le processeur CPU a émis la commande de réponse (ASCIND), il émet une commande de fin-de-liaison (EOFLK) sur les lignes RDDT. L'intervalle de temps entre le moment où le processeur CPU émet la commande ASOID et celui où il émet la commande EOFLK dépend du nombre de phases de microprogramme de processeur CPU (mots de micro-instructions) qui peuvent être exécutées pour le code de fonction particulier envoyé dans la commande CPCMD.Comme le processeur CPU et le contrôleur IOC sont reliés pendant cet intervalle de temps, que la partie microprogrammée de processeur CPU et les bus de système sont consacrés à la séquence de contrôleur IOC, et que les itser- ruptions de matériel sont interdites, cet intervalle est limité à environ six microsecondes en tant que paramètre de conception pour garantir que le système puisse répondre à des interruptions de matériel et à des demandes de bus de système.Au début de l'intervalle de temps de fin-de liaison, si le code de fonction est du type d'entrée, le processeur CPU valide les émetteurs de données de contrôleur IOC (PENBSX > et le mot de données est - tranféré par les lignes d'adresse/données jusqu'au processeur CPU. Si le code de fonction est du type de sortie, le processeur CPU place les données sur les lignes d'adresse/données de bus de système et le contrôleur IOC extrait les données du bus au temps principal 3 de l'intervalle de temps de fin-de-liaison. Si le processeur CPU transfère une adresse de 17 bits à un contrôleur de DMX, la ligne PBYTEX réfléchit le bit d'adres se de poids faible (décalage de multiplet) pendant l'irster- valle de temps de fin-de-liaison La liaison du processeur CPU-contrôleur IOC est supprimée quand la fin de liaison est détectée. On va maintenant considérer les moyens pour faire une demande de transfert de données DMC. Un contrôleur IOC de DMC lance. la séquence de demande de transfert de données DMC quand le contrôleur IOC a besoin d'un multiplet de données soit transféré vers partir qu'an tampon d'entrée-sortie de la mémoire principale. Cette demande ne peut être faite qu'après l'émission d'une instruction de programme IOLD en direction du contrôleur IOC de DMC ayant lancé une opération d'entrée-sortie. Les figures 21A à 21D représentent le dialogue de bus de système pour la séquence de transfert de données DMC Sur la figure 21Aw on peut voir que lorsqu'un transfert de données est nécessaire, le contrôleur IOC de DMC informe la partie microprogrammée de processeur CPU en forçant la ligne de demande de données DMC binaire sur le bus de système sur lequel le contrôleur IOC faisant la demande est placé.Le contrôleur IOC ne peut forcer cette ligne à ZERO binaire que si les deux conditions suivantes sont remplies 1) la ligne n'est pas déjà mise à zéro par un autre contrôleur IOC sur ce bus de système particulier et 2) au temps principal 3 de la période de temps d 'entrée de cycle pour ce contrôleur IOC. La période de temps d'entrée de cycle (signal BCYCIN) permet de s'assurer qu'un seul contrôleur IOC sur un bus de système particulier peut lancer une séquence de transfert de données à un moment donné. La ligne de demande de DMC (PD!CRX) reste active jusqu 'à ce que le processeur CPU fasse une réponse. L'activation de la ligne de demande de Dit: provoque une interruption de matériel de processeur CPU pour le traitement par microprogramme de processeur CPU de la demande de DMC. Quand l'interruption de matériel se produit, avec un ordre de priorité qui est fonction des priorités suprieures d'autres interruptions de matériel et selon que la partie microprogrammée du processeur CPU invalide ou non des interruptions de matériel, le processeur CPU accuse récep- tion de la demande de DMC en émettant une commande de réponse à demande de DMC (ASDMC) sur les lignes RDDT (RDDT29 à RDDT31). A ce moment, le processeur CPU et le contrôleur IOC deviennent reliés.Pendant les six microsecondes suivantes environ, selon le nombre de phases de microprogramme de processeur CPU impliquées dans le transfert de DONC, le processeur CPU est consacré à ce transfert de données DMC et aucun autre transfert de données n'est permis sur le bus de système A ou B autre que celui par lequel se fait le transfert de données DMC. Au cours du cycle suivant après la commande ASCMs, le processeur CPU valide les émetteurs de contrôleur IOC (par l'intermédiaire du signal PENBSX), ce qui indique au contrôleur qu'il doit placer son numéro de canal sur les - lignes d'adresse/données (BUSXOO à BUSX15). Le numéro de canal est utilisé par la partie microprogralflmée de processeur CPU pour avoir accès à la table de programme canal dans la mémoire interprète et pour déterminer également la direction du transfert. Pendant les six à sept cycles de processeur CPU suivants, le processeur CPU obtient les informations ddres- se de mémoire et de portée pour ce canal à partir de la table de programme canal. La portée est diminuée et l'adresse de mémoire est augmentée et mémorisée dans la table de programme canal, Si la portée est épuisée par cette demande, le processeur émet une commande de fin-de-portée (EûFRG) sur les lignes RDDTD ce qui indique au contrôleur I5C qu'il s'agit du dernier transfert (figures 21A à 21D > . Si les données doivent être lues en mémoire (figures 21A à 21D > , le processeur CPU exécute un accès d la mémoire, tous les remplacements de multiplet nécessaires et place les données sur les lignes d'adresse/donndes de bus de système dans la position un de multiplet (c'est-à-dire, les bits 8-15). Le processeur CPU émet ensuite une commande de fin-de-liaison (EOFLK) sur les lignes RDDT. Cela indique au contrôleur IOC que des données provenant de la mémoire principale sont sur les lignes d'adresse/données s'il s'agit d'une lecture de mémoire. Le contrôleur IOC prend ces données au temps principal 3 de la commande EOFLK si une lecture de mémoire est exécutée.S'il s'agit d'une écriture de mémoire principale, le processeur CPU valide les émetteurs de contrôleur XOC par le signal PENBSX, le contrôleur IOC place les données dans la position un de multiplet .(c'est-adire les bits 8-15) et le multiplet est transféré jusqu'à la mémoire SPM pour un éventuel remplacement de multiplets et le processeur CPU exécute ensuite une opération d'accès à la mémoire pour écrire les données dans la mémoire principale La commande de fin-de-liaison (EOFLK) a pour effet de supprimer la liaison entre le processeur CPU et le contrôleur IOC et de remettre le contrôleur XOC à zéro de sorte qu'il ne réponde plus à certaines commandes de bus de système jusqu'à ce qu'une autre liaison soit établie entre le processeur CPU et le contrôleur IOC.La fin d'exécution de microprogramme de processeur CPU pour un transfert de données lMC a pour effet de valider des interruptions de matériel (demandes de transfert de données DMA et DMC et dépassement de temps de rafraichissement de mémoire principale) qui provo quent un transfert de données sur un bus de système pour chacune d'elles en instance. On notera que puisque tous les transferts de données sur un bus de système se font sous la commande de microprogramme de processeur CPU, la fin ou suppression de la liaison entre le processeur CPU et le contrôleur IOC considéré n'est pas suffisante pour établir un autre transfert de données sur un bus de système si la partie microprogrammée du processeur CPU n'a pas permis des interruptions de matériel.Par exemple, sur la figure 21A, pendant des cycles de processeur CPU 8 et 9, aucun transfert de données ne se produit sur un bus de système car le processeur CPU est toujours occupé par l'exécution du microprogramme pour effectuer un transfert d'entrée de DMC du contrôleur IOC à la mémoire. On va maintenant décrire les moyens pour faire une demande de transfert de données DMA. Un contrôleur I3C de D E lance une séquence de transfert de données D## quand ce contrôleur a besoin qu'un multiplet ou un mot de données soit transféré vers/à partir du tampon d'entrée-sortie de mémoire principale. Cette demande ne peut se produire qu'après l'émission d'une instruction de programme IOLD en direction du contrôleur IOC. La figure 22 représente le dialog#ue de bus de système pour cette séquence. Le contrôleur IDC de DMA informe le processeur CPU qu'il requiert une demande de données DI1k en forçant la ligne de demande de DtE (PDMARK) d ZERO binaire sur le bus de système sur lequel le contrôleur IOC qui fait la demande est placé. Cette ligne (PD.çERK) reste active jusqu'à ce qu'une réponse soit reçue du processeur CPU.Le contrôleur IOC ne peut mettre cette ligne à zéro (au temps principal trois) si les deux conditions suivantes sont remplies 1) la ligne n'est pas déjà mise à zéro par un autre contrôleur I-3C sur ce bus de systeme particulier ; et 2) au temps principal 3 (nTI$23) de la période de temps d'entrée de cycle (BCYCIN- à ZERO binaire) pour ce contrôleur IDC. L'activation de la ligne de demande de DMA provoque une interruption de matériel du processeur CPU pour le traitement par microprogramme de processeur CPU de la demande deDI"1?#. quandcela se produit, le processeur CPU accuse réception de la demande en émettant une commande de réponse à demande de DMA (ASDMA) sur les lignes RDDT (RDDT29 à RDDT31) et valide les émetteurs de contrôleur IOC en mettant à un la ligne (PENBSX) sur le bus de système approprié. Le processeur CPU et le contrôleur IOC sont relies et toute activité de bus de système est consacrée uniquement à ce transfert de données DMA. Quand le contrôleur IOC détecte la commande de réponse à demande de DMA (ASDMA), il exécute immédiatement les opérations suivantes : 1) il remet la ligne de demande (PDDERX) à zéro 2) place l'adresse de mot de mémoire sur les lignes d'adres se/données (BUSXOO à BUSX15) ; et 3) transfère de façon conditionnelle les signaux d'écriture de multiplet sur les lignes de bus de système P;iRTBl et PfRTBO. On notera que si le contrôleur IOC est sur le bus de système A, le processeur CPU valide les signaux d'adresse et d'écriture de multiplet en direction du bus de système B pour une utilisation de mémoire principale. Au temps principal trois du cycle de commande de réponse à demande de DMA (ASDMA), le processeur CPU émet un signal de parcours de mémoire (PMEMGO) et la mémoire principale est échantillonnée par l'utilisation du signal PMEMGO. Si le processeur CPU détecte que l'adresse est supérieure à celle permise par le commutateur de composition de mémoire, situé sur le tableau du processeur CPU, il informe le contrôleur IOC en mettant la ligne d'erreur de mémoire à un (PMMPAR) sur le bus de système A et MEMPER sur le bus de Système B), ce qui met un bit d'erreur à un dans le registre d'état du contrôleur IOC. Pendant le cycle de processeur CPU suivant la commande de réponse (ASDITA), le processeur CPU émet une commande de fin-de-liaison (EOFLK) sur des lignes RDDT pour spécifier que le transfert de données doit être réalisé. S'il s'agit d'une opération d'écriture, le processeur CPU valide les émetteurs de contrôleur IOC (PENSBX) et le contrôleur IOC place le mot de données sur les lignes d'adresseZdonnees. Si le contrôleur IOC est sur le bus de système A, le processeur CPU valide le transfert de données vers le bus de système B et la mémoire principale. S'il s'agit d'une opération de lecture en mémoire, les émetteurs de mémoire sont validés par le processeur CPU et la mémoire principale place les données sur le bus de système (le processeur CPU valide le transfert des données vers le bus de système A si c'est nécessaire) et le contrôleur IOC prend les données au temps principal 3 du cycle de fin-de-liaison (EOFLK).Si la mémoire principale a atecté une erreur de parité, elle informe le contrôleur IOC en mettant la ligne d'erreur de parité de mémoire principale (MErslPER) à un. Si c'est nécessaire, le signal d'erreur est transmis au bus de système A par le processeur CPU sur la ligne PMLz2AR. Pendant le cycle de processeur CPU qui suit immédiatement le signal de fin-de-liaison, la liaison de processeur CPU-contrôleur IOC est supprimée et les signaux d'erreur de mémoire (MERDER et P-4MPAR) sont remis à zéro. On va maintenant décrire les moyens pour l'exécute tion d'une interruption de contrôleur IOC. Un contrôleur IOC lance une séquence d'interruption d'entrée-sortie E/S de bus de système lorsqu'un transfert de données est termine ou qu'un état d'appareil change. La figure 23 représente le dialogue exécuté par le bus de système. On notera que l'interruption d'E/S est une interruption de logiciel et non une interruption de matériel, c'est-à-dire qu'une interruption d'E/S, si elle est acceptée par le processeur CPU, interrompt l'exécution du programme de logiciel en cours en forçant le processeur CPU à conserver l'état actuel du logiciel. Le processeur CPU lance ensuite l'exécution d'un autre programme de logiciel consacré à la prise en charge de l'interruption d'E/S. A la fin de l'exécu- tion du programme d'interruption d'E/S, l'état du programme interrompu est remis à l'état initial et le processeur CPU continue l'exécution du programme initial interrompu. Quand une interruption est nécessaire, le contrôleur IOC informe la partie microprogxernmee du processeur CPU en forçant la ligne de demande d 'interruption (INTRX) à ZERO binaire. Cette ligne reste à zéro jusqu'à ce que le processeur CPU fasse une réponse. Le contrôleur IOC ne peut rendre cette ligne active qu'au temps principal 3 de cette période de temps entrée de cycle du contrôleur IOC, et si cette ligne n'est pas déjà rendue active par un autre contrôleur IOC sur le même bus de système (A ou B). L'activation d'une ligne de demande d'int#erruption d'E/S (PINTRX) sur un des bus de système permet au processeur CPU d'exécuter un branchement au microprogramme d'interruption d'E/S quand la partie microprogrammée du processeur CPU commence à traiter l'instruction de programme suivante. Des interruptions de logiciel ne peuvent se produire qu'entre l'exécution d'instructions de programme (c'est-à-dire la présence d'une interruption de logiciel n'est pas prise en compte par le processeur CPU pendant l'exécution d'une instruction de programme, mais seulement au début de l'exécution de l'instruction de programme suivante). Cela est realise par microprogrammation de la partie microprogrammée utilisée pour mettre en oeuvre les instructions de programme du processeur CPU pour ne faire un branchement que sur des interruptions de logiciel en instance qu'au début de L'exécution d'un microprogramme de la partie microprogrammée de processeur CPU qui extrait l'instruction de programme suivante de la mémoire principale et la décode.Si une interruption d'E/S est en instance au début de l'exécution d'une instruction de programme, la partie microprogrammée de processeur CPU suspend l'exécution de l'instruction de programme suivante et fait un branchement au microprogramme de processeur CPU qui prend en charge le traitement de l'interruption d'E/S. Pendant le traitement de l'interruption dtE/S, la séquence représentée sur la figure 23 se produit sur le bus de système.Si l'interruption d'E/S est acceptée (c'est-à-dire, le niveau de priorité du contrôleur IOC est supérieure au niveau de priorité du programme de logiciel en cours d" exécution) par le processeur CPU, la partie microprograenee de processeur CPU conserve l'état actuel du logiciel et commencé l'.execution du programme de logiciel associé à l'interruption d'E/S. Si la demande d'interruption d'eus est rejetée, la partie microprogrammée de processeur CPU continue l'ex#cution de l'instruction de programme sans interruption. Si on se réfère maintenant à la figure 23, on voit que lorsque les branchements de processeur CPU au microprogramme sont effectués, le processeur CPU accuse réception de la demande, en émettant une commande de réponse à interruption (A5INT)sur les lignes RDDT. La ligne d'interruption est remise à zéro à la réception de cette commande par le contrôleur IOC. Le processeur CPU et le contrôleur IOC sont relies et toute l'activité des bus de système, de la mémoire principale et du process.eur CPU est consacrée à la prise en charge de la demande d'interruption d'E/S de bus de système. Immédiatement après la commande de réponse à interruption (ASINT), le processeur CPU rend la ligne de validation d'émetteur de contrôleur IOC, PENSBX active et le contrôleur IOC place son numéro de canal et le niveau d'interruption sur les lignes d'adresse/données. Si-le contrôleur loC est du type DMC et que l'interruption est due à un espacement arrière, le contrôleur IOC informe le processeur CPU de la remise de la ligne PBYTEX- à ZERO binaire pendant la transmission du numéro de canal et du niveau d'interruption au processeur CPU sur les lignes d'adresse/données de bus de système (BUSXOO å BUSX15). Dans le cas d'une interruption d'espacement arriere, le niveau est ignoré et l'interruption est toujours acceptée. Une interruption d'espacement arrière entraîne la modification par la partie microprogrammée de processeur CPU de l'adresse de mémoire et du compte de portée dans la table POZ pour le canal-DMC associé pour ignorer le caractere précédent. S'il ne s'agit pasd'une lntertuntion espace ment arrière, quand le processeur CPU reçoit le niveau d'interruption, il.détermine si le niveau de priorité pré senté par le contrôleur IOC est supérieur à celui du traita ment en cours d'exécution dans le processeur CPU. Si l'interruption de contrôleur IOC est de prior supérieure, le processeur CPU met la ligne de traitement (PROCED) à un en émettant une commande- de fin-de-liaison (EOFLK) sur les lignes RDDT et la liaison est supprimée. Si l'interruption de contrôleur IOC est de priorité inférieure (ou égale), le processeur CPU met la ligne d'occupation (PBUSY) à un en émettant une commande EOFLK.Dans ce cas, la liaison est supprimée et le contrôleur IOC empile l'interruption d'E/S et doit attendre jusqu'à ce que le processeur CPU émette une commande de reprise à interruption (RESUM) sur les lignes RDDT. Le processeur CPU émet une commande de reprise à interruption (RESUM) chaque fois qu'un changement de niveau se produit. La commande RESUM est transmise sur les bus de système A et B et contrôlée par chaque contrleur IOC sur les bus de système. Quand un contrôleur toc comportant des interruptions empilées décode une commande RESUM, il met un indicateur à un dans le contrôleur IOC de sorte que pendant cette période de temps d'entrée de cycle du contrôleur IOC (temps BCYCIN), le contrôleur IOC réémet la demande d'interruption d'E/S et la séquence d'interruption est relancée. La demande d'interruption d'E/S réémise est ensuite acceptée ou rejetée. Si la demande d'interruption est rejetée (PBUSY à ZERO), le contrôleur IOC ré-empile l'interruption d'E/S et attend une commande RESUM du processeur CPU. Chaque fois qu'une commande RESUM est émise, chaque contrôleur IOC comportant des interruptions empilées, sur chaque bus de système, fait une demande d'interruption d'E/S pendant sa période de temps d'entrée de cycle, si la ligne de demande d'interruption (PINTRX) n'est pas déjà mise à un par un autre contrôleur IOC sur ce bus de système parti culiez Comme la ligne de demande d'interruption d'E/S est remise à zéro par le contraleur IOC en réponse à la commande ASINT du processeur CPWJ selon que Ie processeur CPU accepte ou rejette la demande d'interruptisn, un autre contrôleur IOC peut faire une demande d'interruption d'E/S (c'est-à- dire, remet PINTRX à ZERO) tandis que le processeur CPU continue à traiter la première demande d 'interruption a 'E/S. Cette seconde demande d'interruption d'E/S n'est pas prise en compte par le processeur CPU jusqu'à ce que la partie microprogrammée de proce#sseur CPU lance l'exécution de l'instruction de programme suivante. Le rejet d'une demande d'interruption d'E/S, qui a pour effet d'empil#rl'interrup- tion dans le contrôleur -IOC faisant la demande, ne bloque ni ne perturbe d'autres contrôleurs IOC sur ce bus particulier qui font des demandes d'interruption d'E/S rempilées ou non) à la suite d'une commande RESUM. Cela est dù au fait qu'une interruption empilée n'est pas relancée jusqu'à ce que le contrôleur IOC reçoive une commande RESUif après empi- lage de l'interruption d'E/S.Chaque contrôleur IOC fait une demande d'interruption pour son interruption empilée à la suite de chaque commande RESUM ( moins qu'une seconde commande RESUM ne se produise avant que chaque contrôleur IOC ait eu l'opportunité de faire une demande d'interruption). On notera que l'acceptation d'une interruption de logiciel ne bloque pas les autres interruptions de loyib ciel mais élève seulement le niveau de priorité de-processeur CPU. Une autre demande d'interruption de logiciel peut donc être acceptée pendant le traitement d'une première interruption de logiciel si la seconde interruption de logiciel est de niveau de priorité supérieur à celui de la première interruption.Cette acceptation de niveaux de priorité supérieurs peut donner lieu à des interruptions d'emboîtement d'autant de niveaux de priorité qu'il y a d'interruptions en attente qui sont exécutées à tout instant donné, seulement limité par la nécessité d'avoir un niveau de priorité supérieur pour l'interruption demandée que celui de la demande d'interruption en cours de traitement qui est interrompue et par le nombre de niveaux prévu dans le processeur CPU (64 dans l'exemple de réalisation préféré). On va maintenant décrire la façon dont est réalisée l'exécution d'instructions d'entrée-sortie, Il y a trois types d'instructions d'entrée- sortie de logiciel prises en charge par le processeur CPU. # IO, ICwL.D et IOH. L'exécution de ces instructions permet a.u processeur CPU de lancer un dialogue avec le contrôleur IOC auquel est affecté le canal sélectionné et de rendre compte au logiciel par l'intermédiaire de l'indicateur I du processeur CPU si le contrôleur IOC a accepté ou non la commande. L'indicateur X est le bit 12 du registre d'indicateur (voir figure 4). Si I = O, le contrôleur IOC n'a pas accepté la commande. Si I = 1, le contrôleur IOC a accepté la commande. Une interruption 15 se produit quand aucune réponse n'a été détectée en provenance du contrôleur IOC. Un contrôleur de temps microprogrammé de processeur CPU détecte un dépassement de temps de 1,2 milliseconde si une réponse (signal PROCED et PBUSY) n'est pas reçue du contrôleur IOC, Pendant la période de dépassement de temps de 1,2 milliseconde, une interruption de logiciel ne peut pas se produire (puisque c'est après le début de l'exécution de l'instruction de programme d'entrée-sortie IO) mais des interruptions de matériel peuvent se produire puisqutelles ne sont pas interdites par le contrôleur de temps microprogrammé de processeur CPU (voir figure 20). Quand le processeur CPU reçoit le signal de traitement (PROCED) du contrôleur IOC, la partie microprogrammée de processeur CPU interdit les interruptions de matériel et émet la commande de réponse (ASCMD > . La partie microprogrammée de processeur CPU maintient l'interdiction d'interruptions de matériel jusqu'après l'émission de la commande de fin-de-liaison (EOFLK). On va maintenant considérer les numéros de canaux. Ces numéros de canaux pour le transfert de données d'entrée-sortie existent pour chaque unité (processeur CPU, contrôleur IOC ou mémoire principale) connectee aux bus de système à l'exception de la mémoire principale qui n'est identifiée que par une adresse de mé moire . Les numéros de canaux identifient chacun le canal d'entrée-sortie associé au processeur, aux appareils périphé riques, et Si c'est nécessaire, aux contrôleurs IOC connectés au système. Le processeur CPU a toujours le numéro de canal zéro.Les huit premières paires de canaux d'entrée-sortie sont réservées à une utilisation par le processeur CPU (c'est-à-dire les numéros de canaux 0000 à 0300 en hexadéci mal) de sorte que sur les 64 paires de canaux d'entréesortie DMC dans l'exemple de réalisation préféré, 56- sont présentement disponibles pour une utilisation des appareils périphériques connectés aux contrôleurs IDC de DMC bien qu'un espace soit réservé pour 64 paires de canaux dans la table de programme canal de la mémoire SPM (voir figure 10). Le logiciel utilise les numéros de canaux pour' identifier le contrôleur IOC auquel il souhaite adresser une instruction IO de programme.- (Le numéro de canal est contenu dans le- mot de commande de l'instruction 10 de programme). Le numéro de canal est également utilisé par le processeur CPU pour identifier la direction du transfert de données pendant une période de temps de transfert de données (c'està-dire, le bit 9 du numéro de canal détermine la direction). La figure 24 représente le format de mot de commande d'instruction IO de programme. La figure 24 repré sente également les numéros de canaux DMC valides et les numéros de canaux DI$a valides. Pour les canaux DMC et DMA, les huit premières paires de canaux (16 numéros de canaux) sont réservées pour une utilisation de processeur CPU et n'ont donc pas de numéros de canaux d'entrée-sortie valides. Toute instruction tO de programme spécifiant un numéro de canal qui ne correspond pas au commutateur de numéro de canal mis à un d'un contrôleur IOC installé dans le système entraîne une interruption 15 qui est enregistrée par le processeur CPU à l'épuisement de comptage du contrôleur de temps microprogrammé de processeur CPU. Les contrôleurs -IOC utilisent le numéro de canal pour identifier leur canal quand ils ont besoin d'être pris en charge par le processeur CPU. Deux types de prise en charge existent : 1) d'interruption utilisée par tous les canaux (c'est dire DMR et DMC) pour indiquer son numéro de priorité au processeur CPU (voir figure #17) ; et 2) des données utilisées par un canal DMC pour envoyer ou recevoir un multiplet. On notera que le numéro de canal est utilisé par le processeur CPU pour adresser la table de programme canal (PCT). Le numéro de canal envoyé au processeur CPU a le format indiqué sur la figure 24.On notera que pour des demandes de trans fert de données DMC, les bits 10 à 15 du mot de commande sont ignorés, comme il est indiqué sur la figure 17. On va maintenant prendre en considération les codes de fonction d'entrée-sortie. Les codes de fonction d'entrée-sortie E/S sont representes sur la figure 25. Les codes de fonction spé- cifient la fonction d'entrëe-sortie spécifique à exécuter par un contrôleur IOC. Tous les codes de fonction impairs définissent des transferts de sortie (écriture) alors que les codes de fonction pairs définissent des demandes de transfert d'entrée (lecture). Le code de fonction commande toujours des entrd:e#sortie de 16 bits (s'il est émis par une instruction IO) ou de huit bits (s'il est émis par une instruction IOH) à partir de/en direction du canal. Néanmoins, les contrôleurs IOC peuvent choisir de n'utiliser qu'une partie ou l'ensemble des bits de données impliqués dans un transfert. On va maintenant prendre en consi Les huit commandes de code de fonction de sortie sont décrites ci-dessous. Initialisation ~(FC=O1). Cette commande permet de charger un mot de commande de 16 bits sur le canal. Des bits sépards provoquent les actions spécifiques suivantes bit O = initialisation ; bit 1 = un arrêt d'entrée-sortie ; et bits 2 à 15 - reservé poutréser\rè#pour une utilisation ultérieure. Cette commande est acceptée sans tenir compte de l'exis- tence.d'une condition de canal occupé. Initialisation (concernant le contrôleur IOC) t oblige le contrôleur IOC à exécuter le contrôle logique de qualité qu'il contient (QLT) éventuellement ; remet à zéro tous les canaux du contrôleur IOC ; remet l'interface de bus à zéro.; bloque les interruptions ; et remet la condition d'occupation à zéro. Arrêt d'entrée-sortie (concerne le canal): remet la condition d'occupation à zéro t provoque une interruption si elle est validée ; arrête brusquement un transfert en provenance du canal ; et n'affecte pas d'autres canaux du même contrôleur IOC. Mot de commande d'interruption de sortie (FC=03). Cette commande permet d'envoyer. un mot de commande d'interruption de 16 bits au canal spécifiquant le numéro de canal de processeur CPU (zéro) dans les bits O à 9 et le niveau d'interruption dans les bits 10 à 15. Le canal mémorise le mot de commande d'interruption dans son registre de commande d'interruption. Pendant l'interruption, le contrôleur IOC renvoie le mot de commande d'interruption comme il est indiqué sur la figure 17. Tâche de sortie (FC=07). Cette commande permet la sortie d'un mot de tâche (ou multiplet) en direction du canal. La signification des bits séparés est spécifique aux appareils. Une tâche de sortie est proposée pour les fonctions qui doivent faire l'objet de sorties fréquentes (par exemple, la lecture d'un enregistrement sur disque, etc...) en comparaison des informations relativement statiques qui sortent par la commande de composition (voir ci-dessous). Adresse de sortie (FC=09). Cette commande permet des sorties de quantités à 17 bits qui sont utilisées par le canal pour lancer une adresse de multiplet en direction de/en provenance de l'endroit ou un transfert de données doit être fait. Si la commande est dirigée vers un canal DMA, l'adresse de multiplet est alors envoyée par le bus au canal et mémorisée dans le contrôleur IOC. Si la commande est dirigée vers un canal DMC, l'adresse de multiplet est alors mémorisée dans l'entrée de table PT appropriée dans le processeur CPU. L'adresse de sortie FC est utilisée en liaison avec une instruction IOTJD de programme. L'usage de cette commande avec tout autre instruction d'entrée sortie donne des résultats non spécifiés. Portée de sortie (FC=OD). Cette commande permet la sortie d'informations de portée vers le canal, dans un intervalle de O à 215-1, Si la commande est dirigée vers un canal DzE, la portée est alors envoyée sur le bus en direction du canal et mémorisée dans le contrôleur IOC Si la commande est dirigée vers un canal DLIIC, la portée est alors mémorisée dans l'entrée de table PCT appropriée dans le processeur CPU. La porte de sortie FC est utilisée en liaison avec une instruction IOLD de programme. L'utilisant tion de cette commande avec tous autres instructions d'entrée-sortie donne des r~sulcaus non specifies. Mot de configuration de sortie A (FC=11). Cette commande permet la sortie d'informations de configuration vers le canal. La signification des bits séparés est spécifique des appareils (ou des contrôleurs IOC). Une configuration de sortie est proposee pour les fonctions qui font l'objet de sorties fréquentes uniquement (par exemple, vitesse de terminal, mode de lecteur de cartes, etc ...) Mot de configuration de sortie B (FC=13). Cette commande permet la sortie d'informations supplémentaires vers le canal. La signification des bits est spécifique des appareils (ou des contrôleurs IOC). Cette commande est utilisée quand plus d'informations sont nécessaires que celles qui peuvent être codées dans le mot de configuration A. On va maintenant prendre en considération les commandes de code de fonction d'entrée. Les lO commandes de code de fonction d'entrée sont décrites ci-dessous. Commande d'interruption d'entrée (FC=02). Cette commande permet à un canal de placer le contenu de son registre de commande d'interruption sur les lignes de données de bus de système (BUSXOO à BUSX15). Le format des donrlEes est tel que représenté sur la figure 17. On notera que le numéro de canal est celui du processeur CPU (c'est-à-dire zéro) et non celui du contrôleur IOC qui fait la réponse. Tâche d'entrée (FC=06) . Cette commande permet au canal de placer le contenu de son registre de tâche sur les lignes de données de bus de système (BUSXOO à BUSXl5). Adresse d'entrée (FC--08). Cette commande permet à un canal DMA de placer le contenu de son registre d'adresse (les 16 bits de poids faible) sur les lignes de données de bus de système (BUSXOO à BUSXl5). Cette commande, quand elle est destinée à un canal DMC, permet au processeur CPU d'extraire les informations (résiduelles) d'adresse de l'entrée de table PCT appropriée dans le processeur CPU. Module d'entrée (FC=OA). Cette commande permet à un canal DMA de placer le bit de poids fort de son registre d'adresse (carre à droite) sur le bus de système. Cette commande, quand elle est destinée à un canal DMC, permet au processeur CPU d'extraire le bit de poids fort des informations d'adresse de l'entrée de table PCT appropriée dans le processeur CPU. Le bit d'adresse de poids fort (ou numéro de module) est cadré à droite sur le bus de système et il est placé sur la ligne de données BUSX15. Portée d'entrée (FC=OC). Cette commande permet à un canal DMA de placer le contenu de son registre de portée sur les lignes de données de bus de système (BUSXOO à BUSX15). Cette commande, quand elle est destinée a un canal DMC, permet au processeur CPU d'extraire la portée résiduel- le de l'entrée de table PCT appropriée dans le processeur CPU. Mot de configuration d'entrée A (FC=lO). Cette commande permet au canal de placer le contenu de son mot de configuration A sur les lignes de données de bus de système (BUSXOO à BUSxî5). Mot de configuration d'entrée B (FC-12). Cette commande permet au caral de placer le contenu de son mot de configuration B sur les lignes de données de bus de système (BUSXOO à BUSXl5 > . Mot d'état d'entrée 1 (FC = 18). Cette commande permet au canal de placer son premier mot d'état sur les lignes de données de bus de système (BUSXOO à BUSX15). Mot d'état d'entrée 2 (FC = lA). Cette commande permet au canal de placer son second mot d'état sur les lignes de données de bus de système (BUSXOO à BUSX15). Les définitions des bits d'état sont spécifiques des contrôleurs IOC. Identification d'appareil d'entrée XFC=26). Cette commande permet au canal de placer son numéro d'indentification d'appareil de 16 bits sur les lignes de données de bus de système (BUSXOO à BUSxî5). Chaque type d'appareil périphérique a un numéro d'identification unique qui permet à un programme de logiciel d'identifier le type d'appareil périphérique particulier qui est connecté à chaque canal dans le système. On va maintenant décrire les instructions d'entrée-sortie de logiciel. Le processeur CPU identifie et exécute par microprogramme trois types d'instructions d'entrée-sortie de logiciel 1) des instructions d'entrée-sortie de mots de données et de commandes (désignées par 10 en programmation de logiciel); 2) des instructions d'entrée-sortie de multiplets de données (demi-mot) et de commandes (désignées par IOH en programmation de logiciel ); et 3) des instructions d'entrée-sortie de chargement d'adresse et de portée (désignées par IOLD en programmation de logiciel). On va maintenant prendre en considération les instructions IO d'entrée-sortie. L'instruction IO de programme est utilisée pour émettre ou recevoir des mots de commandes en direction / en provenance de contrôleurs IOC. Le code de fonction défini par l'instruction 10 détermine la direction du transfert d'inforulations. Par exemple, le logiciel utilise une instruction IO pour transmettre à un contrôleur IOC le mot de tâche nécessaire et les informations de configuration demandées pour l'exécution d'un transfert de données. -De plus, à la fin d'exécution de l'opération d'entrée sortie, le logiciel utilise à nouveau l'instruction IO pour extraire des informations d'état et de portée résiduelle. Le format de l'instruction IO de programme (et de l'instruction IOH également) est représentée sur les figures 26A et 26B. L'instruction IO spécifie deux quantités 1) un mot de données identifié par une syllabe DAS ; et 2) un mot de commande identifiant le canal externe (ou appareil) et la fonction à exécuter. Le mot de commande peut être fixé directement par sa présence dans l'instruction IO comme le format de la figure 26À l'indique ou il peut être ailleurs dans le programme de logiciel et indiqué par un pointeur de l'instruction IO comme le format de la figure 26B l'indique. On va se référer maintenant aux figures 26A et 26B Ou : OP = zone de code opération d'instruction. OP = 00000 (binaire) pour une instruction IO = 00010 (binaire) pour une instruction IOS. DAS = syllabe d'adresse de données. Elle spédifie un emplacement de mémoire principale ou de registre de processeur CPU à partir duquel/vers lequel un mot (pour une instruction IO) ou un multiplet (pour une instruction 10H) est transféré en direction de/ en provenance du canal d'entrée-sortie. La syllabe d'adresse de données (DAS) peut avoir un des trois formats suivants - une syllabe d'adresse de registre dans laquelle un registre d#e processeur CPU est l'élément de destination pour l'opération. - une syllabe d'adresse d'opérande immédIat dans laquelle un opérande de longueur appropriée (mot ou multiplet) est inscrit directement dans l'instruction - une syllabe d'adresse de mémoire dans laquelle une adresse d'un emplacement de mémoire principale contenant l'opérande est spécifiée. CH = numéro de canal ou adresse de dispositif d'entrée-sortie. F = code de fonction, qui est spécifique d'un contrôleur IOC ou d'un dispositif d'entrée-sortie sous la contrainte - si F est pair, les données sont transférées du contrôleur IOC au processeur CPU/mémoire (par exemple, l'état de lecture), - si F est impair, les données sont transférées du processeur CPU/mémoire au contrôleur IOC (par exemple, un registre de commande de chargement). CAS = syllabe d'adresse de mot de commande, désignant un mot de commande qui contient CH et F. Le format pour CAS est le meme que celui de DAS. L'exécution de l'instruction IO de programme est commandée par la partie microprogrammée de proce#sseur CPU. La figure 28 représente un organigramme relatif à l'instruction IO. Les opérations de bus de système pendant l'exécution d'instruction IO ont été décrites plus haut. Quand une instruction 10 est exécutée pour un canal DMC, le processeur CPU contrôle le code de fonction pour déterminer s'il est un des suivants - module d'entrée (numéro de module à un bit) - adresse d'entrée (adresse de multiplet à 16 bits) porte d'entrée. S'il s'agit d'un des codes de fonction cidessus, le processeur CPU exécute directement tout ou partie de l'instruction puisqu'il gère ces informations dans la mémoire interprète. 'il ne 'agit pas d'un des codes de fonction ci-dessus', les données sont transférées vers ou reçues du contrôleur IOC. Quand une instruction IO est exécutée pour un canal DMA, le processeur CPU transmet le code de fonction au contrôleur IOC et il reçoit ou émet un mot d'informations de/vers le contrôleur IOC. Sur la figure 28 on a représenté un organig gramme fonctionnel relatif à la partie microprogrammée de processeur CPU utilisée pour mettre en oeuvre l'instruction IO de programme qui va être décrite en#détail. Auparavant, on notera qu'il n'est pas nécessaire qu'il y ait.correspondance univoque entre le bloc représenté dans l'organi- gramme de la figure 28 et le nombre de micro-instructions des microprogrammes de processeur CPU utilisés pour mettre en oeuvre chaque bloc.Par exemple, des micro-instructions de microprogrammes. de processeur CPU multiples sont utilisées pour exécuter la fonction indiquée par le bloc 904 et une micro-instruction de microprogramme de processeur CPU est utilisée pour exécuter la fonction indiquée par les blocs 914 et 920. La partie microprogrammee de processeur CPU commence le traitement de l'instruction IO au bloc 901 où elle extrait# le premier mot de l'instruction de programme de la mémoire principale. Après la lecture du premier mot de l'instruction de programme en mémoire principale, la partie microprogrammée effectue un contrôle pour voir si des interruptions de logiciel sont en instance (non représentées sur la figure 28, mais représentées sur les figures 33 et 34). Si aucune interruption de logiciel n'est en instance, une entrée dans le bloc est faite et le compteur de programme qui désigne le premier mot de l'instruction de programme a son contenu conservé une opération de rafraichissement de mémoire est lancée car un accès à la mémoire ne peut pas être fait pendant le cycle de processeur CPU suivant, et un contrôle au code opération de l'instruction de programme extraite de la mémoire principale est exécuté. Si le code opération de l'instruction de programme extraite de la mémoire principale est celui d'une instruction 10 de programme, une entrée dans le bloc 903 est faite, et le sousprogramme de microprogramme de processeur CPU associé à l'exécution de l'instruction 10 est commencé.Dans le bloc 904, la partie microprogrammée de processeur CPU détermine l'adresse de mot utilisant la syllabe d'adresse de données (DAS) (voir figure 26). Si une indexation est specifieee la valeur d'index est alors exprimée en mots, par opposition aux multiplets. L'adresse de mot spécifiée par la syllabe DAS spécifie un emplacement de mémoire principale ou un registre de processeur CPU à partir duquel/ vers lequel un mot de données doit étre transféré en direction de/ en provenance du contrôleur IOC. L'emplacement spécifié contient un mot de données à envoyer au contrOleur IOC ou il est l'endroit où le mot de données lu dans le contrôleur IOC doit être écrit.Dans le bloc 905, la partie microprogrammée de processeur CPU détermine le numéro de canal et le code de fonc#tion spécifiés par l'instruction 10 en utilisant la syllabe si c'est nécessaire (voir figure 26B). Dans le bloc 927, un contrôle est exécuté pour déterminer si le code de fonction est un code de fonction de sortie et si c'est le cas, le mot de données spécifié par la syllabe DAS est lu et mémorisé dans un emplacement de mémoire interprète.Dans le bloc 906, le numéro de canal et le code de fonction sont envoyés au contrôleur IOC sur les lignes d'adresse/données de bus de système (BUSXOO à BUSXl5) (voir figure 17, le format de l'instruction IO). De plus, dans le bloc 906, le processeur CPU envoie la commande CPCMD sur les lignes RDDT de bus de système indiquant à tous les contrôleurs IOC qu'un numéro de canal et un code de fonction sont présents sur le bus de système (voir figure 20). Après l'émission de la commande CPCMD par le processeur CPU, la partie microprogrammée commence le traitement de l'instruction 10 dans le bloc 948 ot il tourne sur une boucle jusqu'd ce que le contrôleur IOC adressé par le numéro de canal) accepte ou rejette la commande CPCMD ou informe le processeur CPU qu'il doit relancer l'exécution de l'instruction IO. L'executlon dans le bloc 948 de traitement de l'instruction 10 commence par l'initialisation d'un compteur de dépassement de temps de réponse dans le bloc 907.Ce compteur de dépassement de temps de réponse est contenu dans un emplacement de manoeuvre de mémoire interprète et il régresse alors que la partie microprogrammée tourne sur une boucle en attendant que le contrôleur IOC accuse réception de la commande CPCMD provenant d'une instruction de programme d'entrée-sortie (IO, IOH ou IOLD). Si le contrôleur IOC n'accuse pas réception de la commande CPCMD ou la rejette dans un intervalle de temps de 1,2 milliseconde, le compteur de dépassement de temps de réponse régresse jusqu a zéro et la partie microprogrammée provoque une interruption (voir figure 20).Après l'initialisation du compteur de dépassement de temps de réponse, la partie microprogrammée contrôle si le contrôleur IOC a mis -la ligne de traitement de bus de système PROCED à un niveau bas, dans le bloc 908. Si la ligne PROCED n'est pas à un niveau bas, une entrée dans le bloc 909 est faite et un contrôle est exécuté pour voir si le contrôleur IOC a mis la ligne PBUSY du bus de système à un niveau bas. Si la ligne PBUSY n'est pas à un niveau bas, une entrée est faite dans le bloc 910 et le compteur de dépassement de temps de réponse régresse.Dans le bloc 911, un contrôle est fait pour voir si le compteur de dépassement de temps de réponse a régressé jusqu'à zéro et si c'est le cas, le dépassement du temps 1,2 milliseconde expiré indique que la commande CPCMD était dirigée vers un contrôleur IOC non existant ou fonctionnant mal (c'est-à-dire1 aucun contrôleur IOC sur le bus de système A ou sur le bus de système B ne répond au numéro de canal. Si aucun contrôleur IOC du bus-de système A ou du bus de système B ne répond, une entrée est faite dans le bloc 912 et un zéro est place dans l'emplacement de bit indicateur d'entrée-sortie (I) du registre d'indicateur (I). Ce bit indicateur d'entrée-sortie du registre d'indicateur peut être contrôlé par des instructions de programme suivantes pour déterminer si oui ou non la commande CPCMD précédente a été acceptée.Après la remise à zéro du bit indicateur d'entrée-sortie, une entrée est faite dans le bloc 913 et une interruption de numéro 15 est exécutée pour indiquer qu'une ressource non disponible a été adressée et l'exécution de l'instruction IO est terminée. En revenant au bloc 908, si le contrôleur IOC met la ligne PROCED de bus de système à un niveau bas, une entrée est faite dans le bloc 919 et la ligne PBUSY est contrôlée. Dans le bloc 919, Si la ligne PBUSY de bus de système est mise à un niveau bas par le contrôleur IOC, elle indique que le contrôleur IOC est provisoirement occupé et que le processeur CPU peut relancer l'exécution d'instruction (c'est-à-dire, une condition d'attente). S'il existe une condition d'attente, une entrée est faite dans le bloc 920 et la partie microprogrammée de processeur CPU envoie au contrôleur IOC une commande ASCMD sur les lignes RDDT de bus de système qui établit la liaison processeur CPU-contrôleur IOC. Celle-ci est suivie par une commande EOFLK envoyée par le processeur CPU dans le bloc 921 au contrôleur IOC sur les lignes RDDT de bus de système qui termine ou supprime la liaison processeur CPU-contrôleur IOC (voir figure 20).Après la suppression de la liaison processeur CPU-contrleur IOC, une entrée est faite dans le bloc 922 et le compte de compteur de programme conservé précédemment est diminué pour désigner le premier mot de l'instruction d'entrée-sortie en cours d#exécution. Uze entrée est faite dans le bloc 923 et la partie m-icropro gramme de processeur CPU continue à extraire le premier mot de l'instruction de programme désignée par le compteur de programme. Il en résulte une ré-extraction et une ré-exécution de la même instruction d'entrée-sortie de programme qui a reçu la réponse d'attente du contrôleur lOC. Comme I'exécution de l'instruction d'entréesortie de programme est relancée depuis le début, non seulement il faut faire attention de remettre à l'état initial le compteur de programme mais aussi tout autre registre de processeur CPU qui pourrait être changé pendant un essai d'exécution précédent pour la réception d'une réponse d'attente d'un contrôleur IOC provisoirement occupé. Dans exemple de réalisation préféré, cela est réalisé en ne permettant pas de formes d'adressage d'opérande qui consistent à faire progresser ou régresser des registres utilisés dans un développement d'adresse. Cette restriction élimine la nécessité de remettre à l'état initial tout autre registre que le compteur de programme. En revenant au bloc 909, Si le contrôleur IOC a mis la ligne PBUSY de bus de système à un niveau bas, une entrée est faite dans le bloc 914 et un contrôle est fait pour voir si la ligne PROCED est à un niveau bas. Si les lignes PROCED et PBUSY sont à un niveau bas, une entrée est faite dans le bloc 920 et le processeur CPU établit et supprime ensuite la liaison processeur CPUcontrôleur IOC et ré-exécute ensuite l'instruction d'entrée-sortie, comme il a été décrit plus haut, Dans le bloc 914, si la ligne PROCED de bus de système n'est pas à un niveau bas, qui indique que le contrôleur IOC est occupé, une entrée est faite dans le bloc 915. Dans le bloc 915, le bit indicateur d'entrée-sortie (I) dans le registre d'indicateur (I) est remis à zero à contrôler par des instructions de programme suivantes pour indiquer qu'un contrôleur IOC n'a pas accepté la dernière commande d'entrée-sortie. Une entrée est ensuite faite dans le bloc 916 et le processeur CPU envoie la commande ASCMD au contrôleur IOC pour établir la liaison processeur CPUcontrôleur IOC.Dans le bloc 917, la partie microprogrammée de processeur CPU envoie au contrôleur IOC une commande EOFLK sur les lignes RDDT de bus de système pour supprimer la liaison processeur CPU-contrôleur IOC. Une entrée est faite dans le bloc 918 et la partie microprogrammée de processeur CPU continue à extraire l'instruction de programme suivante de la mémoire principale. Avant de terminer l'explication de la partie micro-programmée de processeur CPU servant à traiter une instruction d'entrée-sortie 948, il est important de noter que, pendant l'intervalle de temps ou la partie microprogrammée de processeur CPU tourne sur une boucle, en attendant qu'un contrôleur IOC réponde par un signal de traitement, d'occupation ou de dépassement de temps, que bien que des interruptions de matérial soient invalidées entre certaines des micro-instructions de microprogrammes dans la boucle des blocs 908 à 911, des interruptions de matériel sont permises à la fin de chaque traversée de la boucle.La partie microprogrammée de processeur CPU peut donc être interrompue et le bus de système peut être utilisé pour exécuter un transfert de données DMA, un transfert de données DMC ou une opération de rafraichissement de mémoire. Comme on le verra- dans la suite en référence à la figure 34, aucune réponse ne sera faite à une interruption de logiciel pendant cette opération de synchronisation de 1,2 milliseconde car un contrôle des interruptions de logiciel n'est fait par la partie microprogrammée de processeur CPU qu'immédiatement après l'extraction d'une instruction de programme de la mémoire principale (c'est-à- dire, seulement après le bloc 901). Quand la partie microprogrammée de processeur CPU détecte une condition de traitement (clest-aSditeF le contrôleur IOC faisant une réponse a mis la ligne PROCED de bus de système à un niveau haut), une entrée est faite dans le bloc 924.Dans le bloc 924e la partie microprogrammée de processeur CPU met un UN binaire dans la position du bit indicateur (I) d'entrée-sortie du registre d'indicateur tI) et mémorise également l'état de la ligne PBYTEX de bus de système dans la bascule PDMCIO pour un contrôle ulterieur-du type de contrôleur ioc. Sil la ligne PBYTEX de bus de système est à un niveau haut, elle indique que le contrôleur ioe qui fait une réponse est un contrôleur 1OC de DMA.La partie microprogrammee de processeur CPU envoie ensuite au contrôleur IO: qui fait une réponse une commande ASCMD dans le bloc 925 sur les lignes RDDT de bus de système établissant la liaison processeur CPU-contrleur IOC. Dans le bloc 926, le code de fonction est contrôle. Si le conde de fonction est impair, indiquant un code de fonction de sortie, une entrée est faite dans le bloc 928 et la partie microprogrammée de processeur CPU obtient le mot de données désigné par la syllabe d'adresse de données (DAS) de l'emplacement de manoeuvre de mémoire SPM.Le mot de données est envoyé au contrôleur IOC sur les lignes d'adresse/données de bus de système (BUSXOO à BUSX15) et le processeur CPU envoie également la commande EOFLK au contrôleur IOC sur les lignes RDDT. Quand le contrôleur IOC voit la commande EOFLK, il prend le mot de données sur les lignes d'adresse/données et supprime la liaison processeur CPU-contrleur IOC. Le bloc 928 termine le traitement de 1'instruction IO de programme et le processeur CPU sort ensuite au bloc 929 qui va à la partie microprogrammée de processeur CPU pour extraire l'instruction de programme suivante. A partir du bloc Cl26, bi le code de fonction est pair, ce qui indique un code de fonction d'entrée, une entrée est faite dans le bloc 930 et un contrôle est exécuté pour déterminer le type de contrôleur IOC. Si le contrôleur IOC qui fait une réponse est un contra leur IOC de DMC, une entrée est faite dans le bloc 931 et un autre contrôle est fait pour déterminer si le code de fonction est en relation avec la table de programme canal (PCT).Si le code de fonction issu de l'instruction IO de programme est en relation avec la table de programme canal (PCT), (c'est-à-dire, un module d'entrée, une adresse d'entrée, ou une porte d'entrée), une entrée est faite dans le bloc 932 et les données spécifiées par le code de fonction sont extraites de la table de programme canal mémorisée dans la mémoire- interprète et une commande EOFLK est envoyée au contrôleur IOC, ce qui supprime la liaison processeur CPU-contrôleur IOC. En retournant au bloc 930, le type de contrôleur IOC est déterminé par un contrôle de l'état de la bascule-PDMCIO qui est chargée dans le bloc 924 plus haut. Si le contrôleur IOC est un contrôleur IOC de DMA, une entrée est faite dans le bloc 933.Dans le bloc 933, le contrôleur IOC place les données sur les lignes d'adresse/données de bus de système (voir figure 17, le format de mot de données) à la réception de la commande EOFLK et valide le signal PENBSX provenant du processeur CPU (voir figure 20). Dans le bloc 934 t les données extraites de la table de programme canal (PCT) ou reçues du contrôleur IOC, sont mémorisées dans l'emplacement spécifié par la syllabe d'adresse de données :(DAS) de l'instruction IO de programme. L'exécution de l'instruction IO de programme se termine par la mémo- risation du mot de données dans l'emplacement de DAS et la partie microprogrammée de processeur CPU continue ensuite son traitement et extrait l'instruction de programme suivante dans le bloc 935. Avant de terminer l'explication de l'instruction IO de programme, on notera que du point de vue logiciel, les résultats d'exécution de l'instruction IO de programme sont les mêmes si le contrôleur IOC est un contrbleur de DMA ou si c'est un contrôleur IOC de DMC, Les dIfférences entre les contrôleurs IOC de DMA et de DMC sont masquées pour le logiciel par la partie microprogramm6e de processeur CPU.Le programmeur de logiciel n'a pas besoin d'avoir connaissance du fait que le dispositif pour lequel Il écrit un programme d'entrée-sortie-est connecté à un contrôleur IOC de DMA ou à un contrôleur IOC de DMC. On va maintenant décrire l'instruction IOLD. L'instruction de programme IOLD est utilisée pour préparer le transfert de données vers partir d'un tampon d'entrée-sortie contenu en mémoire' principale. Pour certains contrôleurs d'entrée-sortie1 l'instruction IOLD lance également le transfert de données. Pour des contrôleurs IOC de DMC, le processeur CPU s'assure toujours que le tampon d'entrée-sortie B/S est contenu dans la mémoire principale de configuration donnée. Si ce n'est pas le cas, il en résulte une interruption de ressource non disponible (TV 15). Le format de l'instruction de programme IOLD est représenté surales figures 27A et 27B. L'instruction IOLD spécifie trois quantités I) une adresse de début de tampon d'E/S identifiée par AAS; 2) un mot de commande identifiant le canal externe (ou dispositif) et la fonction à exécuter; et 3) une portée de tampon d'E/S (longueur iden tifiée par RAS. Le mot de commande peut être fixé directement en étant contenu dans l'instruction IOLD comme le montre le format de la figure 27A ou il peut être ailleurs dans le programme de logiciel et désigné par l'instruction IOLD comme le montre le format de la figure 27B. On se réfère maintenant aux figures 27A et 27B oa: OP = zone de code opération d'instruction OP = 00011 (binaire) pour une instruction IOLD. AAS = syllabe d'adresse d'adresse. Elle spécifie un emplacement de multiplet en mémoire principale vers lequel/duquel un ou plusieurs multiplets sont transférés à partir de / en direction du canal d'entrée - sortie. La syllabe d'adresse d'adresse (AAS) a deux formats - une syllabe d'adresse d'opérande immédiat dans laquelle un tampon d'E/S de longueur appropriée (un ou deux multiplets) est contenu directement dans l'instruction.; - une syllabe d'adresse de mémoire dans laquelle l'adresse du multiplet de début du tampon d'E/S en mémoire principale est spécifiée. CH = numéro de canal ou adresse de dispositif d 'entrée-sortie. F = code de fonction de 09 (hexa.) qui spécifie une adresse de sortie. Pendant l'exécution de l'instruction de programme IOLD par la partie micro-programmée de processeur CPU, après la sortie d'adresse, la partie microprogrammée change le code de fonction en OD (hexa.) et sort la portée. CAS = syllabe d'adresse de mot de commande, désignant un mot de commande contenant CH et F. Le format pour CAS est le même que pour DAS (voir l'instruction IO de programme). RAS = syllabe d'adresse de portée. Elle spécifie un emplacement duquel la portée du tampon d'E/S, en termes de nombre de multiplets de données, doit être transférée en direction du canal d'E/S. Le format pour RAS est le même que pour DAS (voir l'instruction IO de programme). L'exEclltqon d'une instruction IOLD est commandée par la partie microprogrammée de processeur CPU. La figure 29 représente un organigramme d'exécution de l'instruction IOLD. Le fonctionnement de bus de système pendant l'exécution d'une instruction IOLD et la demande de contrôleur IOC pour un transfert de tampon d'E/S après exécution ont été décrits plus haut. L'exécution d'instruction IOLD par la partie microprogrammée de processeur CPU varie selon ce qui est déterminé par le type de contrôleur IOC concerné, spécifiquement - instructions IOLD concernant des contrôleurs IOC de DMA qui provoquent deux transferts de bus de système: Le premier transfert est celui d'une adresse de multiplet de 17 bits qui spécifie l'emplacement de début de tampon d'E/S en mémoire principale Le second transfert est celui d'une valeur de portée de 16 bits qui spécifie la longueur du tampon d'E/S en termes de nombre de multiplets à transférer pendant l'opération d'entrée-sortie. Cela apparaît au canal comme deux transferts de bus séparés et qui ont des codes de fonction de 09 (hexa.) pour le transfert d'adresse et de OD (hexa.) pour le transfert de piétée. Le programmeur n'a besoin de spécifier que le premier code de fonction dans le mot de commande d'instruction IOLD et la partie microprogrammée de processeur CPU engendre le second code de fonction. Transfert d'adresse. Le premier transfert est celui d'une quantité de l7 bits qui est utilisée par le canal comme adresse de multiplet de début pour des -transferts de données vers/à#partir du tampon d'E/S. Transfert de portée. Le second transfert est celui d'une valeur de portée de 16 bits qui représente le nombre de multiplets à transférer pendant l'opération de DMA. La portée est un mot de données d'entier positif où la valeur de portée peut être de 0000 à 7FFF (hexa.). Quand ce transfert de portée se produit, il conditionne également certains contrôleurs IOC pour lancer une demande de transfert de données au tampon d'E/S. Le transfert de données est lancé dans d'autres contrôleurs IOC en utilisant des instructions IO de programme avec des codes de fonction spécifiques de contrôleur IOC. - instructions IOLD concernant des contrôleurs IOC de DMC qui provoquent la mémorisation par le processeur CPU de l'adresse de multiplet de 17 bits et la valeur de porte de 16 bits dans l'entrée de table de programme canal (PCT). (voir Fig. 30). A la fin de- L'opération d'entrée-sortie, l'adresse et la portée résiduelles sont disponibles dans la table PCT. Le processeur CPU engendre également les deux transferts pour envoyer les valeurs d'adresse de tampon et sa portée au contrôleur IOC par le bus de système. Si le programmeur codait une valeur de portée nulle, une intervention spécifique de contrôleur IOC pourrait être nécessaire. Pour informer le contrôleur IOC de D.'iC de cette condition, le processeur CPU envoie un signal de fin de portée au contrôleur IOC pendant l'exécution d'une instruction IOLD concernant un canal DMC. Certains contrôleurs IOC de DMC ignorent .cette condition. On va maintenant décrire en détail la partie microprogrammée de processeur CPU utilisée pour mettre en oeuvre l'instruction de programme IOLD en se référant à la figure 29. Par rapport à la figure 28, on notera, d'après la figure 29, qu'il n'est pas nécessaire d'avoir une correspondance univoque entre les blocs représentés dans l'organigramme de-la figure et le nombre de micro-instructions de microprogrammes de processeur CPU utilisées pour l'exécution des fonctions des blocs. La partie microprogrammée de processeur CPU commence le traitement de l'instruction IOLD au bloc 901 où la partie microprogrammée extrait le premier mot de l'instruction de programme de la mémoire principale. Après la lecture du premier mot de l'instruction de programme en mémoire principale, le #logiciel fait un contrôle pour voir si des interruptions.de logiciel sont en instance (non représenté sur la figure 29,-mais voir les figures 33 et 34). Si aucune interruption n'est en instance, une entrée est faite dans le bloc 902 et le compteur de programme qui désigne le premier mot de l'instruction de programme a son contenu conservé , --une opération de rafraîchissement de mémoire est lancée car la mémoire.ne sera pas adressée pendant le cycle de processeur CPU suivant, et un contrôle du code opération de l'instruction de programme extraite de la mémoire principale est exécuté On notera que les bloc#s 901 et 902 de la figure 29 sont relatifs aux mêmes micro-instructions que les blocs 901 et 902 de la figure 28. Dans le bloc 943-, la partie microprogrammée de processeur CPU détermine l'adresse de multiplet en utilisant la syllabe d'adresse d'adresse (AAS) (voir figure 27). Si une indexation est spécifiée, la valeur d'index est alors exprimée en termes de multiplets par opposition à des mots. L'adresse de multiplet spécifiée par la syllabe AAS, spécifie le début d'emplacement de multiplet dans la mémoire principale du tampon d'E/S duquel/vers lequel le transfert de données en direction de/en provenance du contrôleur- IOC doit avoir lieu (voir figure 30). Dans le bloc 944, la partie microprogrammée de processeur CPU détermine le numéro de canal et le code de fonction spe- cifiés par l'instruction IOLD en utilisant la syllabe CAS si c'est nécessaire (voir figure 27B).Dans le bloc 945, un contrôle est exécuté sur le code de fonction pour déterminer s'il s'agit de 09 (hexa). et si ce n'est pas le cas, une interruption 16 est exécutée par le bloc 949 qui indique une erreur de programme et l'exécution de l'instruction IOLD de programme est terminée. Si le bloc 945 détermine que le code de fonction est le code de fonction d'adresse de sortie (09 en hexadécimal), une entrée est faite dans le bloc 946. Dans le bloc 946, la partie microprogrammée de processeur CPU utilise la syllabe d'adresse de portée (RAS) pour déterminer la portée (en nombre de multiplets) du transfert d'entrée-sortie et mémoriser la portée dans un emplacement de manoeuvre de mémoire SPM. Dans le bloc 947, le numéro de canal et le code de fonction sont envoyés au contrôleur IOC par les lignes d'adresse/données de bus de système (BUSXOO à BUSXl5) (voir figure 17, le format de commande d'entrée-sortie). De plus, dans le bloc 947, le processeur CPU envoie la commande CPCn;D sur les lignes RDDT de bus de système pour indiquer à tous les contrôleurs IOC qu'un numéro de canal et un code de fonction sont présents sur le bus de système (voir figure 20).Après l'émission de la commande CPCh$D par le processeur CPU, la partie microprogrammée de processeur CPU commence l'exécution du traitement d'instruction d'entrée-sortie, dans le bloc 948 sur la figure 28, en tournant sur une boucle jusqu'à ce que le contrôleur IOC adressé (par le numéro de canal) accepte ou rejette la commande CPCMD ou informe le processeur CPU qu'il peut essayer d'exécuter à nouveau l'instruction d'entrée-sortie de programme (c'est-à-dire, condition d'attente). Si le contrôleur IOC adressé accuse réception de la commande CPCMD, une sortie est faite du bloc 948 au bloc 951. Quand la partie microprogrammée de processeur CPU détecte une condition de traiL#nent, (c'est-à-dire un contrôleur IOC qui émet une reponse)a remis la ligne PROCED de bus de système à un niveau bas et laissé la ligne PBUSY à un niveau haut , une entrée est faite dans le bloc 951. Dans le bloc 951, la partie microprogrammée de processeur CPU met un UN binaire dans le registre d'indicateur (I) d'entréesortie et mémorise également l'état de la ligne PBYTEX de bus de système dans la bascule PDMCIO. Si la ligne PBYTEX de bus de système est à un niveau haut, elle indique que le contrôleur IOC qui fait une réponse est un contrôleur de DMC et si elle est à un niveau bas, elle indique que le contrôleur IOC qui fait une réponse est un contrôleur de DMA (voir figure 20). La partie microprogrammée de processeur CPU envoie ensuite au contrôleur IOC qui fait une réponse, une commande ASC > D sur les lignes RDDT de bus de système qui établit la liaison processeur CPU-contrôleur IOC. Dans le bloc 953, le code de fonction est contrôlé. Si le code de fonction est 09 (hexa.) qui indique un code de fonction d'adresse de sortie, une entrée est faite dans le bloc 954. Dans le bloc 954, le code de fonction est augmenté de quatre, ce qui fait passer le code de fonction d'adresse de sortie de 09 (hexa.) à un code de fonction de gamme de sortie de OD (hexa.). En faisant passer le code de fonction de 09 à OD, quand la partie microprogrammée est à nouveau en cours de déroulement pour le code de fonction de portée de sortie de l'instruction IOLD après qu'une entrée est faite dans le bloc 947, le bloc 953 prend le chemin suivi par la gamme de sortie pour mener au bloc 964. Après augmentation du code de fonction, une entrée est faite dans le bloc 955 et la bascule PDMCIO est contrôlé pour déterminer le type de contrôleur IOC qui a répondu à la commande CPChAD. Si le contrôleur IOC qui fait une réponse est un contrôleur de DMC, une entrée est faite dans le bloc 956 et l'adresse de multiplet de debout de tampon d'E/S déterminée par la syllabe AAS est mémorisée dans l'entrée de table de programme canal associée au numéro de canal spécifié dans la mémoire interprète (voir figure 30). De plus, dans le bloc 956, l'adresse de multiplet de début du tampon d'E/S est placée sur les lignes d'adresse/ données de bus de système (BUSXOO à BUSX15) avec la ligne de bus de système PBYTEX indiquant s'il s'agit du multiplet zéro ou du multiplet un. De plus, le bloc 956 envoie la commande EOFLK au contrôleur IOC pour indiquer que les données pour le contrôleur IOC sont sur le bus de système. Bien que l'adresse de multiplet de début du tampon est transmise sur le bus de système pour des contrôleurs IOC de DMC et de Ds , les contrôleurs IOC de DMC ignorent l'adresse de multiplet de début. L'émission de la commande EOFLR dans le bloc 956 au contrôleur IOC supprime la liaison processeur CPU-contrôleur IOC établie par la commande ASC.MD émise dans le bloc 952. Dans le bloc 957, la partie microprogrammée de processeur CPU détermine la limite supérieure du tampon d'E/S en prenant l'adresse de multiplet de début de tampon d'E/S et en ajoutant 1 portée (en multiplets) du tampon d'E/S. Dans le bloc 958, la partie microprogrammée d processeur CPU détermine si le dernier multiplet du tampon d'E/S existe dans la mémoire principale physiquemcnt présente dans le système en exécutant une opération de rafraichissement de mémoire pour adresser le dernier mot (contenant le dernier multiplet) du tampon. Si les circuits logiques de processeur CPU détectent une tentative d'adressage d'un emplacement de mémoire non existant, une interruption de matériel s'ensuit et une entrée est faite dans le bloc 970 ainsi qu'un branchement à une interruption 15 (bloc 961) qui termine l'exécution de l'instruction de programme IOLD.Si le dernier multiplet du tampon d'E/S est contenu dans un emplacement de mémoire principale# physiquement présent dans le système, une entrée est faite dans le bloc 959 et un autre contrôle est fait pour voir si le tampon d'E/S a fait une permutation circulaire de l'extrémité supérieure de la mémoire de 64 Kmots dans les emplacements d'adresses inférieures de mémoire. S'il y a eu permutation circulaire, une entrée est faite dans le bloc 961 et une interruption 15 (de ressource non disponible) est exécutée et l'exécution de l'instruction IOLD est terminée. Si le tampon d'E/S n'a pas fait de permutation circulaire, une sortie est faite du bloc 959 au bloc 960 qui relance l'exécution de la partie microprogrammée d'instruction IOLD et extrait la portée.Le bloc 960 mène au bloc 950 qui permet une entrée dans le bloc 947 où commence à ce moment le traitement du code de fonction de portée#de sortie (OD en hexadécimal) En retournant au bloc 955, si le type de contrôleur IOC est celui d'un contrôleur de DMA, une entrée est faite dans le bloc 962. Dans le bloc 962, l'adresse de multiplet de début du tampon d'E/S est envoyée au contrôleur IOC de DSk sur les lignes d'adresse/données de bus de système (BUSXOO à BUSX15) (voir figure 17), le format d'adresse de mémoire). avec la ligne de bus de système PBYTEX qui indique le multiplet zéro ou le multiplet un.Le bloc 962 envoie également la commande EOFLK au contrôleur IOC sur les lignes RDDT de bus de système par laquelle le contrôleur IOC est informé que l'adresse se trouve sur le bus de système et par laquelle la liaison processeur CPU-contrleur IOC établie dans le bloc 952 est supprimée. La partie microprogrammée de processeur CPU sort ensuite jusqu'au bloc 963 pour sortir la portée et par l'intermédiaire du bloc 950 entre dans le bloc 947. Quand une entrée est faite dans le bloc 947, la seconde fois, pour sortir la portée en direction du contrôleur IOC, le numéro de canal et le code de fonction sont à nouveau envoyés au contrôleur IOC en même temps que la commande CPCMD. Quand le contrôleur IOC adressé fait une réponse de traitement, une entrée est faite dans le bloc 951, puis dans le bloc 952 qui rétablit la liaison processeur CPU-contrleur IOC pour la seconde fois. Une entrée est ensuite faite dans le bloc 953 et le code de fonction est contrôlé, au moment où le code de fonction de portée de sortie (OD en hexadécimal) entraîne une entrée dans le bloc 964. Dans le bloc 964, la bascule PDMCIO est contrôlée pour déterminer le type de contrôleur IOC et, si un contrôleur IOC de DMC a fait une réponse, une entrée est faite dans le bloc 965.Dans le bloc 965, la partie microprogrammée de processeur CPU extrait la portée de l'emplacement de manoeuvre de mémoire SPM et mémorise la portée dans le second mot de l'entrée de table de programme canal associée au numéro de canal (voir figure 30). Après le bloc 965, si un contrôleur IOC de DMC a fait une réponse ou si un contrôleur IOC de DMA a fait une réponse, une entrée est faite dans le bloc 966 et un contrôle est fait pour déterminer si la portée spécifiée dans l'instruction IOLD est égale à#zéro. Si la portée est égale à zéro, une entrée est faite dans le bloc 967 et le processeur CPU envoie une commande EOFRG au contrôleur IOC par les lignes RDDT de bus de système. Certains contrôleurs IOC mémorisent cette condition de fin-de-portée dans leurs registres d'indicateur d'état et d'autres contrôleurs IOC ignorent cette condition. Dans le bloc 968, le processeur CPU envoie la portée, en nombre de multiplets, au contrôleur IOC sur les lignes d'adresse/données de bus de système (voir Figure 17, le format de mot de données) et envoie également la commande EOFLK sur les lignes RDDT de bus de système; Les contrôleurs IOC de DMA et certains contrôleurs IOC de DMC mémorisent la portée dans leurs circuits et d'autres contrôleurs IOC de DMC ignorent la portée. La commande EOFLK dans le bloc 968 supprime la liaison processeur CPU-contr31eur IOC établie dans le bloc 952 et libère le bus de système pour une autre utilisation. La suppression de la liaison processeur CPU-contrôleur IOC termine le traitement de l'instruction de programme IOLD et une sortie est faite pour la partie microprogrammée de processeur CPU qui extrait l'instruction de programme. suivante dans le bloc 969. Avant de terminer l'explication concernant l'instruction de programme IOLD, on notera que du point de vue logiciel, les résultats d'exécution de l'instruction IOLD sont les même si le contrôleur IOC est un contrôleur de Dt-E ou s'il est un contrôleur de DMC. Les différences entre les contrôleurs de DNA et de DMC sont masquées pour le logiciel par- la partie microprogrammée de processeur CPU. Comme dans le cas de l'instruction IO de programme, le programmeur n'a pas besoin d'avoir connaissance du fait que le dispositif pour lequel il est en train d'écrire un programme d'entrée-sortie est connecté à un contrôleur IOC- de D^MA ou à un contrôleur IOC de DMC. Bien que le programmeur de logiciel n'a pas besoin de connaître le type de contrôleur IOC, il y a une différence dans la manière selon laquelle le système répond à une instruction IOLD qui spécifie une sortie de limite de tampon d'E/S selon que le dispositif est connecté à un contrôleur IOC de DMA ou à un contrôleur IOC de DMC. Comme on l'a décrit plus haut, pour un contrôleur IOC de DMC, la partie microprogrammee de processeur CPU pour l'exécution d'une instruction IOLD contrôle si l'extrémité du tampon d'E/S est à l'intérieur de la mémoire physique présente dans le système et si ce n'est pas le cas, il en résulte une interruption 15 (ressource non disponible) et l'exécution de l'instruction de programme IOLD est terminée sans qu'il y ait de lancement de transfert de données entre le contrôleur IOC et la mémoire principale. Comme la mémoire principale dans le système doit être physiquement d'un seul tenant (c'est-à-dire aucun emplacement libre dans l'espace mémoire adressé); si l'emplacement de fin de mémoire principale du tampon d'E/S est physiquement présent dans le système, le début et le reste entre des emplacements doivent aussi être présents. Ce contrôle initial des contrôleurs IOC de DMC diminue donc la nécessité de contrôler si chaque emplacement individuel est physiquement présent dans le système pour chaque opération de transfert de données DMC. Pour des contrôleurs IOC de DMA, aucun contrôle de portée de tampon d'E/S initiale n'est fait mais un contrôle est fait pendant chaque transfert de données D1NS pour déterminer si l'emplacement adressé est physiquement présent en mémoire principale. Les contrôleurs IOC de DMA divent donc pouvoir mémoriser l'indicateur de ressource non disponible reçu par les lignes de bus de système MEMPER ou PMMPAR et mémoriser cet indicateur d'erreur pour en rendre compte ultérieurement au processeur CPU quand l'état du transfert est demandé par le processeur CPU. On va maintenant prendre en considération l'instruction IOH. L'instruction IOH de programme est utilisée pour émettre ou recevoir des multiplets de commande ou des données en direction de/ en provenance des contrôleurs IOC. Cette instruction est semblable à l'instruction IO, excepté qu'elle concerne le transfert de multiplets au lieu du transfert de mots. Comme pour l'instruction IO, la partie microprogrammée de processeur CPU commande l'exécution de l'instruction IOH. L'organigramme de l'instruction IOH est semblable à celui de l'instruction IO aux différences suivantes près. En se référant maintenant à la figure 28, pour une instruction IOH: dans le bloc 904, une adresse de multiplet est déterminée; dans le bloc 927, un multiplet de données est adressé; dans le bloc 928, un multiplet est envoyé au contrôleur IOC; et dans le bloc 933, un multiplet est lu à partir du contrôleur IOC. Les opérations de bus de système pendant l'exécution d'une instruction IOH sont décrites ci-dessus. On va maintenant considérer les interruptions de programme internes et externes. Les interruptions de programme externes sont dues à des événements externes par rapport à 1 instruction en cours d'exécution par le processeur CPU, tels qu'un défaut d'alimentation, une interruption de contrôleur IOC, etc., qui sont traités à la fin de l'exécution de l'instruction de programme en cours. Par contre, les interruptions internes sont dues à des événements en relation avec l'instruction de programme en cours, tels qu'une erreur de parité, une erreur de programme, une ressource non existante qui est adressée, etc., et sont traités immédiatement, sans attendre la fin d'exécution de l'instruction en cours. On considere d'abord les interruptions de programme externes. Chaque programme dans le processeur central est exécuté à un certain niveau de priorité de logiciel mais il peut être interrompu par un événement ayant une priorité supérieure. Chaque événement qui fait une interruption a un niveau de priorité qui lui est affecté. Il y a 64 niveaux de priorité-d'interruptions de programme externes (ou de logiciel), numérotés de O à 63; le niveau 0 a la priorité la plus grande, le niveau 63 a la priorité la plus petite. Les niveaux de priorité 0, 1 et 2 sont réservés pour des événements fixes, d'autres événements ont des niveaux de priorité qui leur sont affectés dynamiquement par le logiciel.Dans l'exemple de réalisation préféré de l'invention, les 64 niveaux dainterruptions de logiciel sont affectés comme suit: un défaut d'alimentation a un niveau O (niveau le plus grand), un dépasse ment de temps détecté par un contrôleur de temps de séquence (WDT) a un niveau 1, zone de conservation de dernière interruption interne utilisée a un niveau 2, une horloge de temps réel (RTC) a n'importe quel niveau autre que les niveaux 0 à 2 (le niveau de priorité affecté à une interruption est indiqué dans l'emplacement de mémoire principale 0016 en hexadéc-imal), un appareil périphérique ou un contrôleur IOC demandant d'être pris en charge a n'importe quel niveau autre que les niveaux O à 2 (contrôlés dynamiquement par le logiciel), et l'instruction de programme de changement de niveau (LEV) a n'importe quel niveau (le niveau est'spécifié dans les instructions de programme LEV). Un emplacement de mémoire principale réservé contenant un vecteur d'interruption est associé à chaque niveau d'interruption de logiciel. Le vecteur d'interruption est un pointeur de zone de conservation ou de sauvetage d'interruption (voir figure 31) qui est associée au niveau. Le logiciel établit une zone de conservation d'interruption pour chaque niveau actif dans un programme de logiciel particulier. Une zone de conservation d'interruption contient toujours six emplacements et peut contenir seize emplacements supplémentaires. Le contenu de chaque zone de conservation d'interruption est le suivant: Le premier emplacement contient un pointeur d'une liste de zones de conservation d'interruptions internes généralement associées à ce niveau. Le second emplacement contient le numéro de canal et le niveau d'interruption du dispositif qui fait une interruption (DEV). Cet emplacement est chargé par la partie microprogrammée de processeur CPU. Le troisième emplacement contient le masque de conservation d'interruption (ISM). Ce masque détermine les registres dont les contenus doivent être conservés dans les emplacements variables. Le quatrième emplacement est réservé pour une utilisation ultérieure, et doit être à zéro (MBZ). Le cinquième emplacement contient le pointeur de procédure pour le traitement d'une interruption (IHP). Ce pointeur désigne la procédure de traitement d'interruption (programme de logiciel) pour un nouveau niveau et il est utilisé pour mémoriser l'adresse de retour pour revenir de la procédure de traitement d'interruption. Le sixième emplacement contient le registre d'état (S) (c1 est-à-dire le niveau d'inter'ruption et ID de processeur CPU). Les autres emplacements sont réservés pour les registres chargés sous commande du masque de conservation d'interruption. Si le masque ne contient que des zéros, aucun de ces emplacements n'est utilisé. Un bit indicateur d'état actifX ctif pour chaque niveau de priorité d'interruption est maintenu dans un emplacement de mémore principale réservé (voir figure 32). Les indicateurs d'état sont mis à un quand l'exécution d'une instruction de programme est lancée et sont mis à un/remis à zéro par une instruction de changement de niveau de programme (LEV), La partie micro- programmée de processeur CPU examine ces indicateurs pour déterminer l'interruption de logiciel de niveau de priorité supérieur à traiter. On va maintenant considérer les interruptions de programme internes. Les interruptions internes sont dues à des événements qui sont synchrones avec l'exécution de l'ins- truction de programme en cours. Un emplacement de mémoire principale réservé contenant un pointeur de la procédure de traitement d'interruption de programme interne est associé à chaque type d'interruption de programme interne Ces emplacements sont appelés vecteurs d'interruption de programme interne tTV). Dix-sept vecteurs d'interruption de programme interne sont disponibles (emplacements 006F à 007F sur la figure 32), qui ne sont pas tous utilisés dans l'exemple de réalisation préféré. L'exemple dé réalisation préféré de l'invention comporte des vecteurs d'interruption qui sont utilisés pour irriter les évé- nements suivants, les numéros de vecteurs d'interruption étant désignés entre parenthèses: erreur de parité (17), erreur de programme (16), ressource non disponible (15), violation d'opération privilégiée (13), dépassement arith métiqued'entier (6), opération no#n installée (non scientifique) (5), opération scientifique non installée (3), interruption d'analyse/point d'arrêt (2), et appel de moniteur (1). Quand il se produit un événement d:interruption interne, la partie microprogrammée de processeur CPU suspend l'exécution de l'instruction de programme produisant l'interruption et extrait le pointeur de procédure de traitement d'interruption interne du vecteur d'interruption en mémoire principale et effectue un branchement à la procédure de traitement d'interruption. Une interruption de programme interne peut se produire à tout niveau d'interruption de logiciel et plusieurs interruptions internes peuvent être en attente en même temps. Une interruption interne pourrait être lancée à un niveau de programme, ce niveau étant interrompu pendant l'exécution de la procédure d'interruption interne de programme, et la même procédure de traitement d'interruStion interne de programme étant ensuite lancée à un niveau différent, ou une nouvelle interruption interne pourrait se produire pendant le traitement de l'interruption interne initiale. Pour tenir compte de cette possibilité, un regroupement de zones de conservation d'interruptions internes est prévu. Ces zones de conservation d'interruptions sont maintenues en mémoire principale et sont utilisées pour mémoriser le contenu de certains registres et des informations relatives à ces interruptions (voir figure 31). Un emplacement de mémoire principale réservé 0010 (en tête) désigne toujours la zone de conservation d'interruption interne disponible suivante.Quand il se produit une interruption, la partie microprogrammée de processeur CPU mémorise le contenu des registres correspondants dans la zone de conservation d'interruption disponible suivante et le pointeur (TSAP) dans le premier mot de la zone de conservation d'interruption en cours est réglé de sorte qu'il désigne la zone de conservation d'interruption (c'est-à-dire la zone de conservation d'interruption nouvelle est reliée au début de la liste). Le pointeur dans le premier emplacement de l'enchaînement de zones de conservation d'interruption (TSAL) est un enchaînement désignant toutes les autres interruptions internes qui se produisent au même niveau d'interruption. Si cet emplacement est nul dans la liste (zéro), il indique que cette zone est la dernière zone de conserve vation d'interruption pour le niveau d'interruption de programme. Si l'enchaînement n'est pas nul, il désigne la zone de conservation d'interruption suivante associée à ce niveau d'interruption de programme.Le premier emplacement de la zone de conservation d'interruption désignée peut être nul ou désigner une autre zone de conservation d'interruption pour ce niveau d'interruption de programme, A la fin de l'exécution de chaque procédure de traitement d'interruption interne, un retour à partir de l'instruction de programme d'interruption-doit être exécuté; cela entraîne une remise à l'état initial du contexte d'interruption interne qui a été conservé, un détachement de la zone de conservation d'interruption du début de la liste et une remise à l'état initial du pointeur d'en chatnement. La relation entre les interruptions internes et les interruptions externes de programme et leur liaison vectorielle est représentée sur la figure 31. Le vecteur d'intermption interne désigne une procédure de traitement d'interruption interne. Les zones de conservation d'interruption sont associées à un niveau d'interruption de programme. Les vecteurs d'interruptions de programme désignent des zones de conservation a d'interrup- tions de programme qui désignent à leur tour des zones de conservation d'interruptions internes et interrompent des traitements de procédures d'interruptions de programme. Les zones de conservation d'interruptions internes contiennent les informations suivantes Le premier emplacement contient l'enchaînement de zones de conservation d'interruptions internes (TSAL) qui désigne toutes les autres zones de conservation d'in terruptions internes associées à ce niveau d'interruption de programme. Le second emplacement mémorise le contenu du registre d'indicateur (I) quand il se produit une inter rurtion interne. Le troisième emplacement mémorise le contenu d'un registre général (R3) quand il se produit une interruption interne. Le quatrième emplacement mémorise le premier mot de l'instruction de programme (INST) provoquant 1'in- terruption interne. Le cinquième emplacement mémorise différentes informations (c'est-à-dire, la longueur des instructions interrompues de façon interne, une zone d'informations valides, un état privilégié, etc.). Le sixième emplacement (A) mémorise l'adresse effective engendrée par l'instruction de programme interrompue de façon interne. Le septième emplacement mémorise l'adresse de compteur de programme (P) utilisé pour revenir de la procédure de traitement d'interruption interne. Le huitième emplacement mémorise le contenu du registre de base (B3) quand il se produit une interruption interne. On va maintenant faire une description générale du déroulement de la partie microprogrammée. La partie microprogrammée de processeur CPU comprend un groupe de sous-programmes fonctionnels qui se trouvent dans la mémoire morte (ROS) de 1024 mots par 48 bits (élément 238 sur la figure 9). Ces sous-programmes commandent différentes opérations du matériel en réponse à des instructions de programme et à des conditions du matériel. Ces opérations sont: auto-déclenchement d'initialisation/ de mise sous tension d'alimentation, extraction d'instruction, exécution d'instruction, et interruptions (de matériel ou de logiciel). Quand une phase ou pas de microprogramme est décodé, certaines opérations de matériel se produisent telles que l'addition faite arithmétiquement par l'unité ALU des contenus de deux registres et le chargement du contenu de registre à nouveau dans un des registres ou l'écriture de la demande dans la mémoire interprète. La mise en séquence est exécutée par des microopérations de groupement dans les micro-instructions, et ensuite, par des micro-instructions de groupement. Une micro-instruction est exécutée pendant chaque pas de microprogramme (un cycle de processeur CPU) de 500 nanosecondes. Ces séquences de micro-instructions sont appelées micro-routines ou microprogrammes. Elles produisent une liaison entre une programmation de système commandée par logiciel et une opération de matériel. Pendant une extraction d'instruction de programme de la mémoire principale qui est réalisée sous commande microprogrammée de processeur CPU, un branchement est réalisé, sur des interruptions de logiciel et le format de l'instruction de programme à exécuter, pour sélectionner une micro-routine particulière dans la mémoire ROS contenant la partie microprogrammée pour traiter une interruption de logiciel en attente ou l'instruction de programme qui vient juste d'être lue en mémoire principale. Quand chaque instruction de microprogramme (micro-instruction) de la micro-routine est décodée, elle valide à son tour les voies du matériel appropriées. Après l'exécution de la micro-instruction spécifiée, la micro-instruction de microprogramme suivante est adressée et exécutée, ou une micro-instruction de branchement est exécutée. Dans certaines circonstances, un contrôle de branchement sur condition est exécuté pour déterminer l'adresse de micro-instruction suivante. De cette façon, la partie microprogrammée de processeur CPU tourne sur une boucle de différentes séquences nécessaires pour terminer l'exécution de l'instruction de programme. Quand celle-ci est terminée, l'instruction de programme suivante est extraite de la mémoire principale et exécutée d'une manière semblable. Le déroulement genzral de la partie microprogrammée est représenté sur la figure 33. Le système est initialisé par une mise sous tension d'alimentation du système, dans le bloc 350, ou l'abaissement du bouton-poussoir CLEAR de remise à zéro sur le tableau de connexion, dans le bloc 352. La séquence d'initialisation, dans le bloc 354, se déroule par le contrôle logique de qualité fait par microprogranme de la partie microprogrammée (QLT) et amorce le chargement de logiciel dans la mémoire principale à partir d'un appareil périphérique connecté au bus de système. Quand le chargement initial de logiciel est termine, la partie microprogrammée tourne sur une boucle pour l'extraction d'instruction de programme, dans le bloc 356, et une entrée est faite dans le bloc 358 pour son exécution. S'il se produit une condition d'interruption interne, une entrée est faite dans les microprogrammes d'interruption interne pour traiter cette condition.La routine ou sous-programme d'interruption interne des microprogrammes, dans le bloc 362, exécute le traitement initial de la condition d'interruption interne et une sortie est faite vers la routine de changement de niveau de priorité, dans le bloc 374. Dans la routine de changement de niveau de priorité, aucun changement de niveau de priorité de programme n'est réalisé (c'est-à-dire que l'interruption interne est traitée sur le même niveau de priorité de programme que le niveau de l'instruction de programme provoqu mi l'interruption interne) mais la partie micropro gramme termine-le traitement de la zone de conservation d'interruption interne et prépare le compteur de programme de sorte qu'à la sortie de la séquence d'extraction d'instruction de programme, la première instruction de programme de la procédure de traitement d'interruption interne est extraite. La procédure de traitement d'interruption interne de programme se termine par l'exécution d'une instruction de programme de retour à partir d'une interruption interne (RTT) qui remet à l'état initial les registres dont le contenu a été conservé dans la zone de conservation d'interruption interne et commande le retour à l'instruction de programme suivante à exécuter (déterminée par l'événement qui a provoqué l'interruption interne). On notera que le bloc 362 de routine d'interruption interne de la figure 33 est un groupe de micro-instructions de microprogrammes de processeur CPU qui sont exécutées pour préparer le lancement d'exécution par le processeur CPU de la procédure de traitement d'interruption interne de programme représentée sur la figure 31. On peut voir sur la figure 33, la prise en charge d'une interruption de programme d'entrée-sortie, dans le bloc 360 ; du contrôleur de temps de séquence, dans le bloc 364 ; ou d'horloge de temps réel, dans le bloc 364 cette interruption est exécutée par microprogramme à la fin de la séquence d'extraction d'instruction de programme et avant que la séquence d'exécution d'instruction de programme commence. A la fin d'exécution de microprogramme d'interruption (des blocs 360 ou 364), la partie microprogrammée refait un branchement à la séquence d'extraction d'instruction de programme. I Sb.:Pe;Iniveau~ priorité de programme d'interrup- tion de logiciel est supérieur au niveau de priorité du programme en cours d'exécution par le processeur CPU, comme il est déterminé par la partie microprogrammée du bloc 3#0, ou si un compteur associé au contrôleur de temps de séquence (WDT) ou à l'horloge de temps réel (RTC) dans le bloc 364 régresse jusqu a zéro, la routine de microprogramme de changement de niveau de priorité est exécutée par une entrée dans le bloc 374 et le programme de logiciel en cours d'exécution est interrompu.Dans le cas d'un changement de niveau de priorité, une sortie est faite de la routine de changement de niveau de priorité jusqu'à la séquence d'extraction d'instruction de programme, dans le bloc 356, qui commence l'exécution de la première instruction de programme de la procédure de traitement d'interruption associée à l'interruption de logiciel prise en charge. A la fin de la procédure de traitement d'interruption de logiciel, le processeur CPU change les niveaux de priorité de programme en exécutant une instruction de changement de niveau de programme (LEV). Si le programme interrompu est de niveau de priorité supérieur en attente d'exécution, la partie microprogrammée reprend l'exécution du programma de logiciel interrompu en réextrayant L'instruction de programme qui a été interrompue entre son extraction et son exécution.Si le niveau de priorité de programme de l'interruption de logiciel est inférieur ou égal au niveau de priorité (comme il est déterminé encore par la partie microprogrammee du bloc 360) du programme en cours d'exécution par le processeur CPU, les niveaux de priorité de programmes ne sont pas changés et une sortie est faite du bloc 360 de routine d'interruption par un rebranchement à la séquence d'extraction d'instruction de programme dans le bloc 356 qui permet de réexécuter l'instruction de programme dont l'exécution a été arrêtée.Dans ce cas, les interruptions de logiciel de priorités inférieures restent en attente et ne sont honorées que lorsque le processeur CPU abaisse le niveau de priorité du programme de logiciel en cours d'exécution en entrant finalement dans le bloc 374 de routine de changement de niveau de priorité de la figure 33. On notera que le bloc 360 de routine d'interruption de logiciel et le bloc 374 de routine de changement de niveau de priorité de la figure 33 sont deux groupes de micro-instructions de microprogrammes de processeur CPU qui sont exécutées pour préparer le début d'exécution par le processeur CPU de la procédure de traitement d'interruption de logiciel représentée sur la figure 31. Si l'on se réfère à la figure 33, on voit que si une condition d'interruption de matériel est détectée, une entrée forcée immédiatement, dans le bloc 368, jusqu'à la partie microprogrammée d'interruption de matériel, dans le bloc 370, est exécutée et la condition est prise en charge. A la fin de la séquence d'interruption de matériel, est exécuté un branchement de retour, dans le bloc 372, au déroulement de la partie microprogrammée interrompue. On va maintenant prendre en considération les interactions des interruptions de logiciel, des interruptions internes de microprogramme et des interruptions de matériel. La relation entre le programme de logiciel exécuté par le processeur CPU et la partie microprogrammée de processeur CPU est visible sur la figure 34 qui représente l'interaction des interruptions de logiciel, des interruptions internes de microprogramme et des interruptions de matériel. On va maintenant se référer à la figure 34 pour considérer un programme de logiciel Le programme de logiciel en cours d'exécution (SW) dans le processeur CPU est représenté par le bloc 380. Dans l'exemple de réalisation préféré, pendant l'exécution du programme de logiciel en cours 380, celui-ci se trouve dans la mémoire principale où une isntruction. est lue à la fois en mémoire principale et traitée par le processeur CPU sous coxttande microprogrammée. Sur la figure 34, trois instructions de programme sont représentées en détail, la précédente instruction de programme 381S, l'instruction de programme présente 3825 et l'instruction de programme suivante 383S. Les modificateurs: précédent, présent, suivant, interviennent en fonction du temps par rapport aux instructions de programme et ne nécessitent pas obligatoirement une description en fonction de la position spatiale des instructions de programme. C'est ainsi qu'en pratique, l'instruction de programme précédente peut être située à l'emplacement 1000 de la mémoire principale et, s'il s'agit d'une instruction de branchement, elle peut faire un branchement à l'instruction de programme présente située à l'emplacement 2000 avec l'instruction de programme suivante située à l'emplacement 2001. Les modificateurs : précédent, présent, suivant, décrivent donc l'ordre selon lequel les instructions sont exécutées et pas nécessairement leurs emplacements respectifs dans la mémoire principale. On va maintenant considérer les microprogrammes de la partie microprogrammée. Si l'on se réfère à nouveau à la Figure 34, on voit que la partie microprogrammée d'instruction de programme précédente est dans le bloc 381F, la partie microprogrammée d'instruction de programme présente est dans le bloc 382F et la partie microprogrammée d'instruction de programme suivante est dans le bloc 383F qui représentent la séquence de micro-instructions de microprogrammes de processeur CPU qui sont exécutées pour traiter l'instruction de programme précédente 381S, l'instruction de programme présente 3825 et l'instruction de programme suivante 3835, respectivement.On notera que la partie microprogrammée représentée par les blocs 381F à 383F représente la séquence de micro-instructions de microprogrammes de processeur CPU qui sont exécutées et pas nécessairement les micro-instructions de microprogrammes elles-mêmes qui sont individuellement mémorisées dans la mémoire ROS de microprogrammes (238 sur la Figure 9). On notera que les micro-instructions de microprogrammes exécutées dans le bloc 382F peuvent être les mêmes que les micro-instructions de microprogrammes exécutées dans le bloc 381F si l'instruction de programme présente 3825 est la même que l'instruction de programme précédente 381S.En particulier, on notera que le bloc de microprogramme d'extraction 384 contenu dans le bloc 382F de microprogrammes d'instruction de programme présente est également exécuté dans le bloc 381F de microprogrammes d'instruction de programme précédente et dans le bloc 383F de microprogrammes d'instruction de programme suivante comme l'est le bloc 385 de décision d'interruption de logiciel, ces deux blocs étant indépendants de l'instruction de programme particulière qui est en cours d'exécution.Comme pour la relation de temps existant entre les instructions de programme, en termes de précédente,#de présente et de suivante, si l'on considère les parties microprogrammées d'instructions de programme, on établit une relation de celles-ci par rapport au temps de leur exécution et non une relation spatiale des micro-instructions elles-mêmes telles qu'elles sont mémorisées dans la mémoire ROS. On voit donc sur la Figure 34 que, lorsque la partie microprogrammée d'instruction de programme précédente du bloc 381F termine le traitement de l'instruction de programme précédente 381S, une entrée est faite dans la partie microprogrammée d'instruction de programm#e présente 382F et à la fin de son traitement, une# entrée est faite dans la partie microprogrammée d'instruction de programme suivante 383F. Si l'on considère maintenant le bloc 382F de partie microprogrammée d'instructions de programme présentes, on peut voir que l'exécution de l'instruction de programme présente 382S peut être stoppée par l'apparition d'une interruption de logiciel, une interruption de matériel -ou par une interruption interne. Comme on le verra plus loin, l'apparition d'une interruption de logiciel provoque toujours une suspension du traitement de l'instruction de programme présente et peut, selon le niveau de priorité d'in- terruption de logiciel, provoquer l'exécution de la procédure de traitement d'interruption de logiciel avant de recommencer l'exécution de l'instruction de programme présente.L'apparition d'une interruption de matériel provoque la suspension de l'exécution de l'instruction de programme présente pendant laquelle la partie microprogrammée de processeur CPU traite l'interruption de matériel et, à la fin de ce traitement, retourne au traitement de l'instruction de programme présente au point de l'interruption de matériel.L'apparition d'une interruption interne provoque l'abandon de l'exécution de 1'instruction de programme présente et le traitement de l'interruption interne par une procédure de traitement d'interruption interne qui est un groupe d'instructions de programme réservées au traitement de cette interruption interne. A la fin d'exécution de la procédure de logiciel de traitement d'interruption interne, l'instruction de programme suivante, qui suit l'instruction de programme interrompue, peut être traitée ou une autre exécution de programme de logiciel peut être lancée, comme on le verra plus loin. On va maintenant prendre en considération les interruptions de logiciel. Pour cela, on va décrire en détail le bloc 382F de partie microprogrammée d'instruction de programme présente. Le traitement de 1'instruction de programme présente par la partie microprogrammée de processeur CPU commence par l'extraction de l'instruction de programme présente de la mémoire principale par le processeur CPU sous commande microprogrammée dans le bloc 384. A la fin de l'extraction du premier mot de l'instruction de programme présente, un branchement microprogrammé est fait pour contrôler s'il y a une-interruption de logiciel en attente, dans le bloc 385. S'il y a une ou plusieurs interruptions de logiciel en attente, le branchement microprogrammé se fait au microprogramme de la partie microprogrammée de l'interruption de logiciel en attente de priorité la plus grande. Sur la Figure 34, il y a deux routines microprogrammées d'interruption de logiciel représentées par les blocs 388-1 et 388-2, chaque bloc représentant un microprogramme de partie microprogrammée de processeur CPU pour traiter une interruption de logiciel particulière. Dans un microprogramme d'interruption de logiciel particulier, tel que le bloc 388-2, un contrôle est fait pour voir si la priorité de l'interruption de logiciel est supérieure à la priorité du programme de logiel en cours d'exécution.Ce contrôle est fait dans le bloc 389. -Si l'interruption de logiciel est de priorité inférieure ou égale à celle du programme de logiciel en cours d'exécution, l'interruption n'est pas acceptée et le branchement inférieur ou égal à partir du bloc 389 est pris et la partie microprogrammée recommence à exécuter l'instruc- tion de programme présente en entrant à nouveau dans le bloc 382F, puis en extrayant à nouveau l'instruction de programme présente de la mémoire principale dans le bloc 384.Si la priorité de l'interruption de logiciel est supérieure à celle du programme de logiciel en cours d'exécution, l'interne ruption de logiciel est acceptée et une entrée est faite du bloc 389 dans le bloc 390 qui prépare la zone de conserva- tion d'interruption pour conserver l'état du programme de logiciel en cours et qui fait un branchement à la procédure de traitement d'interruption de logiciel associée à l'interruption de logiciel. La procédure de traitement d'interruption de logiciel, qui est un groupe d'instructions de programme, dans le bloc 391 est ensuite exécutée, chacune des instructions de programme contenues dans celle-ci étant traitée par la partie microprogrammée de processeur CPU.La dernière instruction de procédure de logiciel de traitement d'interruption de logiciel est une instruction de programme de changement de niveau (LEV) 391L qui entraîne la recherche par la partie microprogrammée de processeur CPU du programme de logiciel de priorité la plus grande en attente d'exécu- tion. L'instruction de programme de changement de niveau 391L est exécutée par le microprogramme d1 instruction de niveau 392 qui détermine, dans le bloc 393, le programme de logiciel de plus grande priorité en cours d'attente d'exécute tion. Si un programme de logiciel de priorité supérieure 394 est en attente d'exécution, ce programme de logiciel est exécuté sous commande microprogrammée de processeur CPU et il se termine également par une instruction de programme de niveau LEV 394L. Le niveau de l'instruction de programme 394L entraine l'exécution du microprogramme dtinstruc- tion de niveau LEV 392 et de nouveau un contrôle pour déterminer le niveau de programme de logiciel de priorité supérieure qui est exécuté dans le bloc 393. Si le contrôle de niveau dans le bloc 393 détermine que le programme de logiciel présent qui a été suspendu précédemment 380 est le programme de logiciel de priorité la plus grande en attente d'exécution, une entrée est faite dans la partie microprogrammée d'instruction de programme présente 382F et 1'ins- truction de programme présente 3825 est ré-extraite par la partie microprogrammée d'extraction 384 et l'exécution de l'instruction de programme présente par la partie-micropro- grammée de processeur CPU continue. Pour résumer, on se rend compte que la partie microprogrammée de processeur CPU qui exécute une instruction de programme, contrôle en même temps si une interruption de logiciel est en attente pour effectuer un branchement au microprogramme d'interruption de logiciel particulier qui est réservé au traitement d'une interruption de logiciel particulière, que la partie microprogrammée d'interruption de logiciel contrôle la priorité de l'interruption de logiciel par rapport à la priorité du programme de logiciel en cours, et que Si la priorité est inférieure ou égale à celle du programme de logiciel en cours, le programme de logiciel en cours n'est pas-interrompu et le traitement de l'instruction de logiciel présente est recommencé par la partie microprogrammée de processeur CPU.D'autre part, Si l'interruption de logiciel est de priorité supérieure à celle du programme de logiciel en cours d'exécution, l'interruption de logiciel est prise en charge en conservant l'état du programme de logiciel en cours dans la zone de conservation d'interruption et en commençant l'exécution de la procédure de traitement d'interruption de logiciel qui est elle-même un groupe d'instructions de programme. La procédure de traitement d'interruption de logiciel se termine ensuite par une instruction de programme de niveau qui provoque tout de suite ou ultérieurement le redéroulement du programme de logiciel présent interrompu par l'exécution de l'instruction de programme présente qui est établie à nouveau par l'extraction de l'instruction de programme présente de mémoire principale. On va maintenant considérer les interruptions de matériel. Si, pendant l'exécution de l'instruction de programme présente il n'y a pas d'interruptions de logiciel en attente, une sortie est faite du bloc 385 jusqu'au bloc de partie microprogrammée d'exécution 386. La partie micropro grammes d'exécution, dans le bloc 386, exécute les phases de microprogramme nécessaires pour terminer l'exécution de l'instruction de programme présente. Pendant le#déroulement d'exécution de la partie microprogramméed'exécution dans le bloc 386, une interruption de matériel peut se produire. Contrairement aux interruptions de logiciel qui sont détec-' tees par le branchement de partie microprogrammée de processeur CPU dans l'attente de l'interruption de logiciel à une rputine de microprogramme d'interruption de logiciel particulier pour traiter l'interruption de logiciel en attente particulière, les interruptions de matériel ne sont pas contrôlées par la partie microprogrammée de processeur CPU mais résultent des circuits logiques d'interruption de matériel gui forcent la partie microprogrammée. de processeur CPU à commencer l'exécution d'une séquence de micro-instructions associées à l'interruption de matériel. Sur la Figure 34, il y a quatre microprogrammes d'interruptions de matériel désignées par 395-1 à 395-4.Ces microprogrammes d'in terruptions de matériel 395-1 à 395-4 sont composés de micro-instructions de partie microprogrammée de processeur CPU qui sont définies pour traiter la condition d'interruption particulière qui a provoqué l'interruption de matériel. Parmi ces quatre microprogrammes d'interruptions de matériel, deux sont pour des conditions d ! interruptions de matériel autres que des interruptions internes et sont désignés par 395-1 et 395-2. En considérant la routine de microprogramme d'interruption de matériel de condition autre qu'une' interruption interne 395-2, on voit que la dernière micro-instruction, 395-2R, du microprogramme contient une micro-opérat#ion de retour d'interruption de matériel qui provoque la commande de retour de microprogramme à la micro-instruction de microprogramme suivant celle qui a été exécutée juste avant l'apparition de l'interruption de matériel. Par exemple, une condition qui peut provoquer une interruption de matériel est l'apparition d'une demande de transfert de données DMA sur le bus de système.Dans ce cas, l'exécution de l'instruction de programme présente par la partie microprogrammée de processeur CPU est suspendue, le transfert de données DMA est traité par une routine de microprogramme de processeur CPU et quand il est terminé, l'exécution de l'instruction de programme présente est reprise au point de l'apparition d'in- terruption de matériel de DMA. Si l'on considère à nouveau les deux microprogrammes d'interruptions de matériel avec condition d'interruption interne sur la Figure 34, des blocs 395-3 et 395-4, l'apparition d'une interruption de matériel associée à une condition d'interruption interne provoque une entrée dans un bloc tel que 395-4 de microprogramme d'inter ruption de matériel associé.Le microprogramme a d'interrup- tion de matériel avec condition d'interruption interne exécute un traitement préliminaire de l'interruption de matériel avant de sortir vers un microprogramme d'interruption interne qui termine le traitement de l'interrup~ion interne. Par exemple, une sortie est faite du bloc 395-4 vers le bloc de partie microprogrammée d'interruption interne 396-2. Comme les microprogrammes d'interruptions de matériel avec condition d'interruption interne, 395-3 et 395-4, ne mènent pas à la partie microprogrammée d'exécution 386 au point de l'interruption, l'exécution de l'instruction de programme présente est arrêtée dans le cas où la condition d'interruption interne est détectée par une interruption de matériel.D'autre part, les interruptions de matériel sans condition d'interruption interne provoquent seulement la suspension de l'exécution de l'instruction de programme présente car elles mènent à la partie microprogrammée d'exécution 386 au point d#interruption. Un exemple de condition d'interruption interne qui est détectée par une interruption de matériel est une erreur de parité de mémoire principale qui provoque l'apparition d'une interruption de matériel. Dans le cas d'une erreur de parité, la partie microprogrammée de processeur CPU n'effectue pas un retour au traitement de l'instruction de programme présente au point de l'apparition de l'interruption de matériel mais une sortie est faite vers un microprogramme d'interruption interne telle que dans le bloc 396-2 pour continuer le traitement de l'erreur de parité.Il en résulte l'arrêt d'exécution de l'instruction de programme présente. Comme on le voit sur la Figure 34, des interruptions de matériel avec branchement ne peuvent se produire que pendant l'exécution de partie microprogrammée d'exécution -du bloc 386 et ensuite que pendant le temps de validation d'interruptions de matériel (c'est-à-dire, non interdites). Comme le montre aussi la Figure 34, pendant le traitement d'une interruption de matériel, le microprogramme d'interruption de matériel interdit lui-même les interruptions de matérielrde sorte que les microprogrammes d'interruption de matériel ne peuvent eux-mêmes être interrompus par une autre interruption-de matériel (c'est-à-dire, les interruptions de matériel ne sont pas emboîtées alors que les interruptions de logiciel peuvent être emboîtées). On va maintenant considérer les interruptions internes. Si on revient au bloc de partie microprogrammée d'exécution 386, on voit que pendant l'exécution de l'instruction de programme présente, la partie microprogrammée elle-même peut donner lieu à un ou plusieurs contrôles de conditions d'interruptions internes. Par exemple, le bloc 387 représente un contrôle par partie microprogrammée de processeur CPU de l'existence d'une condition d'interruption interne et Si une condition d'interruption interne est détectée, la partie microprogrammée de processeur CPU d'exécution effectue un branchement au bloc de partie microprogrammée d'interruption interne 396-3 pour traiter la condition d'interruption interne.Plus tard, pendant l'exé- cution de l'instruction de programme présente, un ou plusieurs contrôles d'interruption interne peuvent être commandés par la partie microprogrammée. Un autre contrôle d'interruption interne est représenté par le bloc 388 qui, s'il détecte une condition d'interruption interne, conduit au microprogramme d'interruption interne 396-1. En revenant maintenant au microprogramme d'interruption interne 396-3, la fonction du microprogramme d'interruption interne est d'établir la zone de conservation d'interruption interne dans laquelle l'état du programme de logiciel en cours est conservé avant que la partie microprogrammée de processeur CPU commence 1'exécution de la procédure de traitement d'interruption interne.La procédure de traitement d'interruption interne est un groupe d'instructions de programme écrites pour traiter la condition d'interruption interne. La procédure de traitement d'interruption interne 397 est associée à la condition d'interruption interne particulière détectée par le bloc 387 et ensuite traitée par le bloc 396-3. Il y a une procédure de traitement d'interruption interne séparée pour chaque condition d'interruption interne détectée par la partie microprogrammée de processeur CPU. La procédure de traitement d'interruption interne 397 est ensuite exécutée par la partie microprogrammée de proces- seur CPU, comme l'est tout autre programme de logiciel, et elle se termine par une instruction de programme de retour d'interruption interne (RTT) 397R. L'instruction de programme de retour d'interruption interne 397R est exécutée par une partie microprogrammée d'instruction RTT 398 qui peut remettre à l'état initial le contexte de logiciel conservé dans la zone de conservation d'interruption interne par le bloc 396-3 et revenir au début du traitennlent de l'instruction de programme suivante par une entrée dans le bloc 383F de partie microprogrammée d'instruction de programme suivante.Alternativement, la partie microprogrammée d'instructions RTT 398 peut provoquer le début d'exécution d'un autre programme de logiciel comme il est indiqué par le bloc 399. La sortie du bloc de partie microprogrammée d'instructions RTT 398 est déterminée par le contenu de la zone de conservation d'interruption interne gultpeut avoir été modifié par la procédure de traitement d'interruption interne 397 pendant le traitement de la condition d'interne ruption interne.Un exemple de condition qui peut être traitée par une interruption interne est la détection par la partie microprogrammée d'exécution du bloc 387 d'une opération d'instruction de programme scientifique (en virgule flottante) qui provoque une entrée dans le bloc 396-3 de partie microprogrammée d'interruption interne. fans le bloc 396-3, la zone de conservation d'interruption interne est établie et une entrée est faite dans le bloc 397. La procédure de traitement d'interruption interne 397 est un groupe d'instructions de programme qui permettent de simuler les résultats d'exécution des instructions de programme scientifique facultatif et d'exécuter I'opération indiquée.L'exécution de l'instruction de programme de retour d'interruption interne 397R provoque l'exécution de la partie microprogrammée d'instruction RTT 398 qui à son tour provoque l'exécution de la partie microprogrammée d'instruction de programme suivante 383F pour l'exécution de l'instruction de programme suivante 3835. On peut voir que dans cet exemple, l'apparition d'une interruption interne provoque l'arrêt d'exécution de l'instruction de programme présente et la fin d'exécution de l'instruction de programme présente par la routine de logiciel de procédure de traitement d'interruption interne suivie de l'exé- cution de l'instruction de programme suivante. On va maintenant considérer les interruptions et les interruptions internes. Pour résumer, on peut voir que les interruptions de logiciel et les interruptions internes se produisent par la partie microprogrammée de processeur CPU faisant des contrôles microprogrammés précis de différentes conditions pendant l'exécution d'une instruction de programme. L'interruption de logiciel provoque en outre le relancement de l'exécution de L'instruction de programme présente, en commençant par la ré-extraction de l'instruction de pro~ gramme présente interrompue de mémoire principale. D'autre part, une interruption interne provoque l'arrêt de l'exécution de l'instruction de programme présente et, selon la procédure de programme de traitement d'interruption interne écrite pour traiter la condition d'interruption interne particulière, peut ou ne peut pas entraîner l'exécution de l'instruction de programme suivante.Des conditions d'interruptions de matériel n'ont pas besoin d'être contrôlées par la partie microprogrammée de processeur CPU. L'apparition d'une interruption de matériel provoque la suspension du traitement de l'instruction de programme présente suivie de la prise. en charge de l'interruption de matériel par la partie microprogrammée de processeur CPU. Si l'interruption de matériel est faite pour une condition autre que d'interruption interne, le microprogramme d'interruption de matériel revient alors au traitement de l'instruction de programme présente au point d'interruption. Si l'interruption de matériel est associée à une condition d'interruption interne, une entrée est faite dans une routine de microprogramme d'interruption interne et le retour au traitement du programme de logiciel en cours est déterminé par le programme de procédure de traitement d'interruption interne particu lier,associé à la condition d'interruption interne. Si la procédure de traitement d'interruption interne redonne la commande au programme de logiciel en cours, cette commande est habituellement redonnée par le traitement de l'instruction de programme suivante. On va maintenant décrire l'ensemble du mot de de micro-instruction de microprogramme de procensseur CPU, qu est représenté sur la Figure 35. Le mot de micro-instruction est divisé en quatre zones principales qui amont. subdivisées en différentes sous-zones. La zone de commande de mémoire interprète du mot de micro-instruction de processeur CPU ust représentée sur la Figure 35A. Les bits O à 7 sont utilisés pour commander la mémoire interprète (SPM, qui est l'élément 236 sur la Figure 8) et le fichier de registres de microprocesscur (élément 268 sur la Figure 8). Les sous-zones sont représente tées sur la Figure 35A. Le bit 0 détermine I'opération de mémoire interprète. Quand il est mis à UN binaire, des données peuvent être écrites et quand il est remis à ZERO binaire, des données peuvent être lues tes bits 1, 5, 6 et 7 constituent les adresses d'emplacement de mot de moire interprète, des emplacements OG à OF sur la Figure 10, dans lesquels/desquels des données sont écrites ou lues.Les bits 2, 3 et 4 permettent d'adresser des registres flans la mémoire RAM de microprocesseur (fichier de registres 268 sur la Figure 8). La zone de commande d'unité arlthmétlque et logis que (ALU) du mot de micro-instruction de processeur CPU est représentée sur la Figure 35B. Les bits 8 à 19 sont utilisés pour la commande de l'unité ALU (élément 266 sur la Figure 8). Les sous-zones sont représentées sur la Figure 35B Les bits 8 et 9 réalisent la commande de type décalage alors que les bits 10, 11 et 12 déterminent la source des données à traiter. Les bits 13, 14 et 15 détermine nent la fonction à exécuter sur ces données par l'unité ALU de microprocesseur. Le bit 19 est mis à un si une entrée de report est nécessaire pour l'opération. L'entrée de report est utilisée à son tour pour modifier l'association de source et de fonction conformément à la Figure 36. Les bits 16, 17 et 18 définissent la destination des données, conformément à la Figure 36, en conséquence de la fonction exécutée par l'unité ALU. Les bits 8 et 9 assurent, en plus de la commande de type de décalage pour l'unité ALU, la commande d'écriture/ lecture de mémoire principale quand le bit 23 est à UN binaire, ce qui indique qu'une opération de mémoire principale doit être exécutée. La zone de sous-commande et de commande du mot de micro-instruction de processeur CPU est représentée sur la Figure 350. Les bits 20 à 35 constituent la zone de souscommande et de commande. Les sous-zones sont teprésentées sur la Figure 35C. Les bits 20 et 21 commandent les portes d'entrée du multiplexeur sélecteur de données (269 sur la Figure 8), ce qui détermine la source de données envoyées à l'unité ALU. Le bit 23 est un bit de commande de mémoire qui, lorsqu'il est mis à un binaire, permet à un signal de parcours de mémoire (MEMGO)sur le bus de système B de lancer une opération de lecture, d'écriture ou un cycle de refraichissement de mémoire principale. L'opération de mémoire à exécuter est déterminée par les bits 8 et 9 du mot de la micro-instruction. Les fonctions des bits 24 à 31 sont déterminées par les états des bits 32 à 34 qui sont utilisés comme zone de décodage de sous-commande. Le bit 35 commande des interruptions de matériel ; quand il est mis à UN binaire, il valide des interruptions de matériel et quand il est remis à ZERO binaire, il interdit les interruptions de matériel. La Figure 37A donne la liste des différentes commandes d'interruption qui peuvent être décodées quand les bits 32 à 34 de décodage de sous-commande sont égaux à 110 binaire. Quand les bits 32-34 de micro-instruction indiquent une commande d'interruption, les bits 24 à 27 sont ignorés (peuvent être quelconques). Les Figures 37B à 37E donnent la liste d'autres commandes qui peuvent être décodées quand les bits 32 à 34 de décodage de sous-commande sont égaux à 101. Quand les bits 32-34 de décodage de sous-commande sont égaux à 101 en binaire, les commandes de tableau de connexion représentées sur la Figure 37B sont exécutées si les bits 24-27 sont égaux à 3 (hexadécimal), ce qui donne un échantillonnage de tableau de connexion, comme l'indique la Figure 37C, (les bits 24-26 sont égaux à 001, le bit 27 est quelconque).Quand les bits de décodage de sous-commande 32-34 sont égaux à 101 (binaire) et les bits 24-27 sont différents de 0011 (binaire), des associations codées des commandes d'entrée-sortie représentées sur les Figures 37C à 37E sont exécutées. Ces commandes d'entrée-sortie sont réparties en groupes de 3, 2 et 3 bits, permettant à une commande de chacun de ces groupes de commandes d'être exé cutées simultanément. L'utilisation des différentes commandes d'entrée-sortie représentées sur les Figures 37C à 37E est indiquée sur les Figures 20 à 23 qui représentent les différentes séquences se produisant sur les bus de système sous commande microprogmammée de processeur CPU. Quand le bit 32 de la zone de décodage de souscommande est à zéro, toute la zone de sous-commandes est décodée comme deux zones de sous-commandes, une zone de sous-commande 1 (Figure 37F) qui est spécifiée par les bits 24 à 27 du mot de micro-instruction, et une zone de souscommande 2 (Figure 37G) qui est spécifiée par les bits 28 à 31 du mot de micro-instruction de processeur CPU. De plus, quand le bit 32 est à zéro, les bits 33 et 34 assurent la commande de mémoire principale, comme l'indique la Figure 35C. La zone d'adressage de mémoire morte (ROS) du mot de micro-instruction est représentée sur la Figure 35D. Les bits 36 à 47 constituent la zone d'adressage de mémoire ROS. Les sous-zones sont représentées sur la Figure 35D. La zone d'adressage de mémoire ROS détermine l'adresse de microprogramme suivante séquentiellement qui est utilisée pour avoir accès à la mémoire ROS (élément 238 sur la Figure 9). Les bits 36 et 37 déterminent le type d'adresse qui se trouve dans les groupes de bits de 38 à 47 tels qu'ils sont représentés sur la Figure 35D. Quand un branchement inconditionnel est indiqué (les bits 36 et 37 ont la valeur binaire 00), la partie microprogrammée effectue un branchement à l'adresse contenue dans les positions de bits 38 à 47.Quand un branchement sur contrôle est incRqué (01 binaire dans les positions de bits 38 à 47), les bits 38 à 41 et le bit 47 sont utilisés, pour indiquer un branchement à deux voies Quand un branchement de contrôle multiple est indiqué (10 binaire dans les positions de bits 36 et 37), les bits 40-43 sont utilisés, ce qui indique un branchement de contrôle à 16 voies. Quand les bits 36 et 37 sont tous les deus à un, l'adresse contenue dans les positions de bits 38 à 47 est ignorée et l'adresse de microprogramme à laquelle le déroulement de partie microprogrammée reprend apr'ès 1'interruption de matériel est obtenue dans le registre d'adresse de retour d'interruption de matériel (252 sur la Figure 9). On va maintenant considérer la commande de mémoire interprète. La zone de commande de mémoire interprète du mot de micro-instruction de processeur CPU est représentée sur la Figure 35A. Les bits O, 1 et 5 à 7 sont utilisés pour commander la mémoire interprète SPM, c'est-à-dire, l'élément 236 sur la Figure 8. Le bit O détermine l'opération de mémoire interprète. Quand il est mis à UN binaire, des données peuvent être écrites, et quand il est remis à ZERO binaire, des données peuvent être lues. Les bits 1 et 5 à 7 constituent l'adresse utilisée pour adresser les emplacements de manoeuvre de mémoire interprète, 00 à OF sur la Figure 10, dans lesquels/desquels des données doivent être écrites ou lues.Les bits 2 et 3 commandent la sélection. des trois bits de poids faible de l'adresse à 4 bits utilisée pour adresser la mémoire à accès sélectif de microprocesseur (RAM) (fichier de registres 268 sur la Figure 8). Les différentes combi naisons de bits 2 et 3 permettent de sélectionner les bits de poids faible de l'adresse de mémoire RAM de microprocesseur à partir des sous-zones (FRO, FR2 et FR3) du registre de fonction F (274 sur la Figure 8) ou à partir des bits 5 à 7 du mot de micro-instruction lui-meme. Le bit de poids fort (bit O de 1'adresse de mémoire RAM de microprocesseur) est toujours déterminé par le bit 4 du mot de micro-instruction.Cette possibilité que présentent les bits 2 et 3 du mot de micro-instruction de processeur CPU de commander la sélection des bits d'adressage de mémoire RAM de microprocesseur à partir des différentes sous-zones du registre de fonction F est importante, car elle permet un décodage rapide de l'instruction de programme contenue dans le registre F. Une sous-zone FRO du registre F contient habituellement un numéro de registre et des sous-zones FR2 et FR3 constituent la syllabe d'adresse de 1'instruction de programme considérée. On va maintenant considérer la commande de l'unité arithmétique et logique. La zone de commande d'unité ALU du mot de microinstruction est représentée sur la Figure 35B. Les bits 8 à 19 sont utilisés pour la commande de microprocesseur (élément 232 sur la Figure 8). Les sous-zones sont représentées sur la Figure 35B. Comme on l'a indiqué précédem- ment, le microprocesseur à 16 bits 232 de la Figure 8 est constitue par quatre microprocesseurs à 4 bits en pastilles disposées en cascade du type Am2901 fabriqué par Advanced Micro Devices Inc. à Sunnyvale en Californie. Certaines des zones de commande de microprocesseur sont utilisées directement par les microprocesseurs en pastilles disposées en cascade et d'autres (commande de type de décalage et entrée de report) sont utilisées pour commander les conditions de fin engendrées par le microprocesseur à bit de poids fort et le microprocesseur à bit de poids faible. Les bits de mot de micrc) instruction 8 et 9 assurent la commande de type de décalage en commandant ts bits décalés dans et hors des mflcroprocesseurs en cascade à bit de poids fort et à bit de poids faible. Les bits 10 à 12 déterminent la source AxU de microprocesseur et sont utilisés pour commander directement chacun des quatre micro- - processeurs en pastilles . Une définition exacte de ces bits es#t donnée dans l'ouvrage "A Micro Programmed 16-bit Computer", publié par Advanced Micro Devices Inc., cité ici comme référence à la technique connue.Les bits 13 à 15 commandent la fonction ALU de microprocesseur et sont également utilisés directement par chacun des quatre microprocesseurs en pastille à 4 bits. Les bits 16 à 18 commandent la destination de microprocesseur et sont à nouveau utilisés directement par chacun des quatre microprocesseurs en pastille à 4 bits. Le bit 19 commande l'entrée de report d'en- trée et il est utilisé directement par le microprocesseur en pastille à bit de poids faible. La sous-zone de source ALU de microprocesseur commande la source des entrées de l'unité ALU et peut faire une sélection parmi elles ; la sortie principale (A) du fichier de registres de microprocesseur, la sortie de double (B) du fichier de registres de microprocesseur, la sortie du registre de manoeuvre interne de microprocesseur (Q), ou l'entrée de données (D) de la mémoire interprète.La sous-zone de fonction ALU de microprocesseur détermine l'opération (par exemple, une addition arithmétique, une fonction logique ET, etc.) à exécuter par l'unité arithmétique et logique. La sous-zone de destination de microprocesseur détermine la destination des données qui résultent de la fonction exécutée par l'unité ALU. Les opérations exécutées par le microprocesseur à 16 bits sont fonction des sous-zones de source ALU de microprocesseur, de fonction ALU de microprocesseur et de report d'entrée, comme elles sont représentées sur la Figure 36. En plus de la commande de type de décalage, les bits 8 et 9 de microprogramme assurent également la commande d'écriture/lecture de mémoire principale. Quand le bit 23 de microprogramme est à UN binaire, les bits 8 et 9 commandent l'écriture en mémoire principale d'un mot, d'un multiplet O ou d'un multiplet 1, ou la lecture en mémoire principale d'un mot. On va maintenant consi#dérer les sous-commandes et commande. La zone de sous-commandes et commande du mot de micro-instruction de processeur CPU est représentée sur la Figure 35C. Les bits 20 à 35 constituent une zone de souscommandes et de commande. Les bits 20 et 21 commandent le sélecteur de données269 de la Figure 8 qui est un multiplexeur de quatre à un, la sortie de celui-ci étant connectée directement aux portes d'entrée de données du microprocesseur qui déterminent la source des données envoyées à l'unité ALU de microprocesseur.Les entrées d'unité ALU peuvent être sélectionnées à partir : du registre de données de mémoire SPM qui contient les informations de sortie de la mémoire interprète 236, du registre d'indicateur (I) 270 et du registre de masque M1 272, une constante engendrée par l'utilisation des bits 8 et 9 de micro-instruction et des bits 24 à 31 ou les données provenant du bus interne 260 (voir Figure 8). Le bit 22 est un bit de commande de sélection d'adresse de mémoire interprète et permet à la microinstruction d'adresser les emplacements de manoeuvre de mémoire interprète (emplacements OO à OF sur la Figure 10) en utilisant les bits 1 et 5 à 7 de micro-instruction ou la table de programme canal (emplacements 80 à FF) en utilisant le numéro de canal obtenu du registre de numéro de canal 296 sur la Figure 8. Le bit 23 est le bit de commande de parcours de mémoire principale et quand il est mis à un, il fait passer à un niveau bas le signal PMEMGO- sur le bus de système B pour lancer un cycle d'écriture/lecture de mémoire. Les bits 24 à 31 constituent une zone de souscommandes, leur signification étant décodée par les bits 32 à 34 qui constituent la sous-zone de décodage de sous-commandes. En fonction de la valeur contenue dans la sous-zone de décodage de sous-commandes (bits 12 à 34), la zone de sous-commandes (bits 24 à 31) peut être : une constante à 8 bits, des commandes d'interruption, des commandes de tableau de connexion, des commandes d'entrée-sortie, une commande de registre de fonction (F) ou des sous-commandes. La signification de ces différentes zones de sous-commandes est indiquée sur les Figures 37A à 37G. Le bit 35 est la zone de commande d'interruption de matériel qui permet au microprogrammeur de processeur CPU d'écrire la partie microprogrammée en interdisant ou validant l'apparition d'interruptions de matériel entre des phases ou pas de micro-instructions des microprogrammes. Quand le bit 35 est à ZERO binaire, des interruptions de matériel sont interdites et le microprogramme ne peut pas être interrompu à la suite de la micro-instruction présente. Quand le bit 35 est à UN binaire, les interruptions de matériel sont validées et, si une interruption de matériel est en attente à ce moment, le microprogramme est interrompu à la fin d'exécution de la micro-instruction présente. La Figure 37A donne la liste des commandes d'interruption qui peuvent être décodées à partir des bits 28 à 31 (bits 24 à 27 sont ignorés). La Figure 37B donne la liste des commandes de tableau de connexion qui sont décodé. dées à partir des bits 28 à 31 quand les bits 24 à 27 sont égaux à 0011 (binaire). Les associations codées de commandes d'entrée-sortie représentées sur les Figures 37C à 37E sont exprimées en binaire. Celles-ci sont réparties en groupes de 3, 2 et 3 bits, ce qui permet#d'exécuter ces groupes de commandes d'entrée-sortie simultanément. Quand le bit 32 est à UN binaire et les bits 33 et 34 à ZERO binaire, la zone de sous-commandes est décodée comme des commandes pour la commande de registre de fonction. Quand le bit 32 est un ZERO binaire, toute la zone de sous-commandes est décodée comme deux sous-commandes, une sous-commande 1 (voir Figure 37F) qui est spécifiée par les bits 24 à 27 du mot de micro-instruction et une sous-commande 2 (voir Figure 37G) qui est spécifiée par les bits 28 à 31 du mot de microinstruction de processeur CPU. On va maintenant considérer l'adressage de mémoire morte. La zone d'adressage de mémoire morte (ROS) du.mot de micro-instruction de processeur CPU est représentée sur la Figure 35D Les bits 36 à 47 constituent la zone d'adressage de mémoire ROS. Les sous-zones sont représentées sur la Figure 35D. La zone d'adressage de mémoire ROS détermine l'adresse de microprogramme suivante séquentiellement utilisée pour adresser le mot de micro-instruction suivant en mémoire ROS (élément 238 sur la Figure 9). Les bits 36 et 37 déterminent le type d'adresse de branchement se trouvant dans les groupes de bits entre les bits 38 et 47. Quand les bits 36 et 37 sont à OO (binaire), la partie microprogrammée effectue un branchement à l'adresse contenue dans les positions de bits 38 à 47 en utilisant l'adresse à 10 bits pour extraire le mot de micro-instruction suivant de la mémoire ROS.Quand un branchement de contrôle à deux voies est indiqué (par les bits 36 et 37 à Ol binaire), les bits 38 à 41 et le bit 47 sont utilisés pour sélectionner le contrôle et engendrer le bit d'adresse de mémoire ROS de poids faible (bit 9). Les quatre bits de poids fort (bits O à 3) de l'adresse de mémoire ROS suivante sont pris dans les quatre positions de bits de poids fort de l'adresse de mémoire ROS présente et les bits 42 à 46 du mot de micro-instruction sont utilisés directement comme bits 4 à 8 d'adresse de mémoire ROS.Ces branchements à deux voies sont utilisés par la partie microprogrammée pour contrôler l'état de différentes conditions telles que l'état de bascules de commande 1 à 4 (CF1-CF4) et de différents bits du registre de fonction. Quand un branchement de contrôle multiple est indiqué (par les bits 36 et 37 à 10 binaire), les bits 38 et 39 et les bits 44 à 47 sont utilisés directement dans l'adresse de mémoire ROS suivante et les bits 40 à 43 sont utilisés pour indiquer un des seize branchements de contrôle multiple différents. Les branchements de contrôle multiple sont utilisés par le programmeur de microprogrammes pour faciliter le décodage de l'instruction de programme et pour répondre à des interruptions de logiciel. Quand les bits 36 et 37 sont tous les deux mis à un (11 binaire), les bits 38 à 47 du mot de micro-instruction ne sont pas utilisés et l'adresse de mémoire ROS suivante est obtenue dans le registre d'adresse de retour d'interruption de matériel (élément 252 de la Figure 9) qui contient l'adresse de mémoire ROS suivante au moment où la partie microprogrammée de processeur CPU a été interrompue par une interruption de matériel. Le branchement de retour d'interruption de matériel est utilisé par le programmeur de microprogrammes à la fin d'un microprogramme de partie microprogrammée d'interruption de matériel (bloc 395-2 sur la Figure 34) pour effectuer un retour au point auquel la partie# microprogrammée a été interrompue par l'interruption de matériel. On va maintenant considérer en détail les circuits logiques d'un contrôleur d'entrée-sortie IOC, après avoir décrit le fonctionnement du processeur central, des contrôleurs IOC et des différents dialogues sur les bus de système. La Figure 38 est un schéma logique d'un contrôleur IOC réalisé selon la présente invention. Les sections principales du contrôleur IOC représenté sur la Figure 38 comprennent : un circuit logique de synchronisation 400, un circuit logique de demande de DMA/DMC 402, un circuit logique de demande d'interruption 404, un circuit logique de remise à zéro de demande 406 et un circuit logique de dispositif 407. Le circuit logique de synchronisation 400 engendre les signaux de synchronisation d'entrée-sortie de base utilisés dans tout le contrôleur IOC (signaux PTIME3 r 20 et DMYTM3 +). De plus, le circuit logique de synchronisation 400 reçoit le signal de sortie de cycle de bus du contrôleur IOC précédent (ou du processeur CPU si le contrôleur IOC est le premier contrôleur IOC sur l'un des bus de système A et B) et retarde le signal de 500 nanosecondes avant de le transmettre au contrôleur IOC suivant.En outre, le circuit logique de synchronisation 400 est utilisé pour engendrer un signal d'initialisation de contrôleur IOC (PCLEAR + 20) qui est utilisé pour initialiser le contrôleur et lancer la partie microprogrammée de contrôle logique de qualité du contrôleur IOC (QLT). Le circuit logique de demande de DMA/DMC 402 est utilisé pour mettre les lignes de demande de DMA ou de DMC de bus de système (PD1(PK- ou PDMCPX.- ) à ZERO binaire pendant la tranche de temps du contrôleur IOC si le contrôleur IOC a besoin d'un cycle de transfert de données DMA ou DMC et que la ligne de demande de DMA ou DMC n'est pas déjà mise à zéro par un autre contrôleur IOC de DMA ou de DMC sur ce bus de système particulier. Pour des contrôleurs IOC de DMA, la ligne de demande de D,xA (PDMARX-) est utilisée tandis que la ligne de demande de DMC (PDMCRX-) est utilisée pour des contrôleurs IOC de DMC. Le circuit logique de demande d'interruption 404 est utilisé pour mettre la ligne de demande d'interruption de bus (PINTRX-) à-ZERO binaire pendant la tranche de temps de contrôleur IOC si le contrôleur IOC souhaite interrompre l'exécution du programme en cours dans le processeur CPU et si un autre contrôleur IOC sur le bus de système particulier n'a pas déjà mis la ligne de demande d'interruption à zéro. Le contrôleur IOC lance une séquence d'interruption chaque fois qu'un changement d'état dans un des appareils périphériques connecté au contrôleur IOC est détecté ou chaque fois qu'un ordre d'entrée-sortie particulier est terminé, par exemple, à l'épuisement de la portée suivant une commande de lecture ou d'écriture. Le circuit logique de remise à zéro de demande 406 est utilisé pour remettre à zéro les bascules de demande d'interruption ou de demande de DMA ou de DMC du contrôleur IOC en réponse à la réponse de processeur CPU codée sur les lignes de bus de système (RDDT 29+) (RDDT 31+). Comme on le verra plus loin, un-contrôleur IOC donné peut comporter à la fois une demande de D,R ou de DMC et-une demande d'interruption en attente de façon concurrente.Cela est le cas en particulier pour des contrôleurs IOC qui comportent plusieurs appareils périphériques qui leur sont connectés de sorte qu'un appareil peut avoir terminé une opération d'écriture ou de lecture, qui demande une interruption, et un second appareil peut être en train de participer à une opération de lecture ou d'écriture et de demander le mot ou le multiplet suivant de données à lire ou écrire dans l'appareil périphérique. En se référant toujours à la figure 38, on va maintenant décrire le fonctionnement du circuit logique de dispositif 407. Le circuit logique de dispositif 407 se compose d'un circuit logique de commande 409, d'un circuit logique de tâche et de configuration 429, d'un circuit logique d'interruption 417, d'un circuit logique d'identification ID d'état et de dispositif 437, d'un circuit logique de transfert de données 421 et d'un circuit logique d'adresse et de portée -445, On notera que le circuit logique d'adresse et de portée 445 n'existe que dans les contrôleurs IOC de DMA. Le circuit logique de commande 409 diode les commandes pour la commande d'entrée-sortie et les codes de fonction adressés an contrôleur IOC. Le circuit logique de commande détermine : si le contrôleur IOC peut accepter la commande d'entrée-sortie et met la ligne PROCED; à ZERO binaire; si le contrôleur IOC est occupé et met la ligne PBUSY- à ZERO binaire; ou si le contrôleur IOC est provisoirement occupé, il met les deux lignes PROCED- et PBUSY- à ZERO binaire pour informer le processeur CPU qu'il doit attendre et relancer la commande d'entrée-sortie.Le circuit logique de commande 409 détermine le type d'opération à exécuter par le contrôleur IOC, engendre un cycle de commande et si la commande d'entrée-sortie est acceptée, valide une des lignes d'adresse/données de bus de système en direction et en provenance du contrôleur IOC, ou en direction de l'appareil périphérique. Le circuit logique de commande 409 maintient également la liaison de dialogue entre le bus de système et le contrôleur IOC. Un décodeur de code de fonction 415 décode le code de fonction du mot de commande de la commande d'entrée-sortie (voir Fig. 24). Un commutateur de numéro de canal 411 est mis à un quand le système est installé pour contenir le numéro de canal du contrôleur IOC. Un comparateur de numéro de canal 413 compare le numéro de canal enregistré dans le commutateur de numéro de canal 411 au numéro de canal apparaissant sur les lignes d'adresse/ données de bus de système (BUSXOO+ à BUSXOW) et s'ils sont égaux, il met le signal DMycMDs à UN binaire; Le signal DMYCMD est un signal d'entrée du circuit logique de remise à zéro de demande 406.De plus, le numéro de canal contenu dans le commutateur de numéro de canal peut être transféré dans le processeur CPU par l'intermédiaire des lignes d'adresse/données de bus de système pendant une demande de transfert de données DMC ou pendant une séquence de demande d'interruption (voir Fig. 17) Les commandes d'entrée-sortie ayant un numéro de canal qui correspond au numéro de canal de contrôleur IOC contenu dans le commutateur de numéro de canal 411 sont les seules à être acceptées par le contrôleur IOC. Comme on le verra plus loin, une partie du décodage de commande d'entréesortie est réalisé par un décodeur du circuit logique de remise à zéro de demande 406. Le cycle de commande est une séquence que le contrôleur IOC exécute tout en exécutant n'importe quel type de commande d'entrée ou de sortie (voir Fig. 20).Pour des commandes d'entrée, le contrôleur IOC lit les informations de commande mémorisées, les informations d'état ou de dispositif, et les transfère ensuite sur le bus de système. Pour des commandes de sortie, le contrôleur IOC transfère les informations de commande a2 bus de système dans la mémoire de circuit logique de dispositif. Pendant un cycle de commande, le circuit logique de tâche et de configuration 429 est validé après que le circuit logique de commande ait décodé un code de fonction qui spécifie la lecture ou l'écriture du mot de tâche, du mot de configuration A ou du mot de configuration B. La signification des bits individuels du mot de tâche est spécifique du dispositif considéré. Le mot de tâche sert aux fonctions qui doivent être extraites fréquemment en comparaison des informations relativement statiques qui sont extraites par les commandes de mot de configuration. La signification des bits individuels dans les mots de configuration A et B est spécifique du dispositif considéré. Les mots de configuration servent aux fonctions qui ne sont extraites que rarement. Le mot de configuration B est utilisé quand davantage d'informations sont nécessaires que celles qui peuvent être codées dans le mot de configuration A. Les contrôleurs IOC contiennent toujours un registre de mot de tâche 431 alors que la présence d'un registre de mot de configuration A 433 et d'un registre de mot de configuration B 435 dépend de la quantité d'informations nécessaires pour un appareil périphérique particulier. Certains appareils périphériques ne nécessitent -pas de mots de configuration alors que d'autres appareils périphériques ne nécessitent que des mots de configuration A et d'autres appareils permis sphériques nécessitent des mots de configuration A et B. Pendant un cycle de commande, le circuit logique d'interruption 417 est validé après que le code de fonction décodé ait spécifié la lecture ou l'écriture du niveau d'interruption contenu dans un registre de mot de commande d'interruption 419. Le circuit logique d'interruptson est également utilisé pour engendrer une demande d'interruption quand l'une des conditions suivantes est présente : le niveau d'interruption n'est pas égal à zéro et l'opération d'appareil périphérique précédente est terminée, ou une commande d'entrée-sortie d'arrêt est terminée.Quand une de ces conditions est satisfaite, un cycle d'interruption est lancé et le contrôleur IOC envoie une demande d'interruption au processeur CPU en mettant le signal DAINOK à UN binaire qui est le signal d'entrée du circuit logique d'interruption 404. La mise à UN binaire du signal DAINOK+ entraîne la remise à ZERO binaire dû signal PINTRX- sur le bus de système. Quand le processeur CPU accuse réception de la demande d'interruption, le contrôleur IOC charge lé niveau d'interruption et le numéro de canal sur les lignes d'adresse/ données de bus de système pour les transmettre au processeur CPU. Le processeur CPU examine ensuite le niveau d'interruption. Si le niveau d'interruption est admis par le processeur CPU qui met la ligne PROCED à ZERO binaire, l'opération d'interruption est terminée. Si le niveau-d'interruption n'est pas admis par le processeur CPU qui met la ligne PBUSYà ZERO binaire, le contrôleur IOC empile la demande d'interruption dans le circuit logique d'interruption 417 et attend que le processeur CPU envoie une commande d'entrée-sortie d'interruption reprise (RESUM). Quand le processeur CPU envoie une commande d'entrée-sortie d'interruption reprise, le contrôleur IOC relance la demande d'interruption. Le circuit logique dXidentification d'état et de dispositif (ID) 437 est validé par le contrôleur IOC pour mémoriser le mot (ou les mots) d'état et le code d'identification ID de dispositif. Le mot d'état 1, 439 et le mot d'état 2, t41, contiennènt les conditions de dispositif ou appareil périphérique et de mémoire principale. La signification des bits individuels dans les mots d'état est spécifique du contrôleur IOC considéré. Le mot d'état 2 n'est présent que dans les contrôleurs IOC qui comportent davantage d'informations d'état que celles qui peuvent être codées dans le mot d'état 1.Le code ID de dispositif est contenu dans un mot d'identification de dispositif ID 443 et reprend sente le type de dispositif ou appareil périphérique connecté au contrôleur IOC. Quand le circuit logique de commande décode une commande de mot d'état d'entrée 1 ou 2, le mot d'état 1 ou 2 est transféré dans le processeur CPU par les lignes dladresse/donnees de bus de système.Quand une commande d'identification-de dispositif ID d'entrée est décodée par le circuit logique de commande, le code d'identification de dispositif ID est transféré dans le processeur CPU par l'intermédiaire des lignes d'adresse/données de bus de système (BUSXOO+ à BUSX15+). Le signal d'erreur de mémoire principale (de parité ou d'adresse non existante) MEMPER- (sur le bus de système B) et PMMPAR- (sur le bus de système A) est introduit par le circuit logique d'identiì- cation d'état et de dispositif ID 437 et il est utilisé pour mettre à un le bit approprié dans un mot d'état 1, 439, pour le signaler ultérieurement au processeur CPU. On va maintenant décrire le circuit logique de transfert de données. Après le lancement d'un transfert de données, le circuit logique de commande 409 valide le circuit logique de transfert de données 421 pour le transfert de données en direction ou en provenance de l'appareil périphérique. Le contrôleur IOC fait une demande de transfert de données au processeur CPU en utilisant des signaux DERSWT- et DMCINC pour que le circuit logique de demande de DMA ou de DMC 402 remette le signal PDMARX (pour des contrôleurs IOC de DUA) ou le signal PDMCRX- (pour des contrôleurs IOC de DMC) à ZERO binaire. Si le contrôleur IOC est un contrôleur de DMC, une demande de DMC est envoyée au processeur CPU à partir du contrôleur IOC (voir les figures 21A à 21D > . Le processeur CPU accuse réception de la demande et le numéro de canal# de contrôleur IOC est chargé sur les lignes d'adresse/données de bus de système pour le transmettre au processeur CPU. Après transmission du numéro de canal, un cycle de transfert de données DMC est lancé et un multiplet de données est transféré par le processeur CPU sur le bus de système pour le contrôleur IOC (pour une sortie) ou par le contrôleur IOC sur le bus de système pour le processeur CPU (pour une entrée). S'il s'agit d'une opération de sortie, un multiplet de données est pris sur les-lignes d'adresse/données de bus de système et mémorisé dans un registre de sortie de données 423 avant d'être transmis à l'appareil périphérique. S'il s'agit d'une opération d'entrée, un multiplet de données est pris dans l'appareil périphérique et gardé dans un registre d'entrée dé données 425 avant d'être transmis au processeur CPU par les lignes d'adresse/données de bus de système. Dans chaque cas, pour des contrôleurs IOC de DMC, il n'y a pas de circuit logique d'alignement de multiplet de données 427. Pour des contrôleurs IOC de DMC, l'alignement de multiplet de données est réalisé par le processeur CPU quand les données sont transférées du contrôleur IOC de DMC à la mémoire principale ou de la mémoire principale au contrôleur IOC de DMC. Le circuit logique d'adresse et de portée 445 n'existe que dans les contrôleurs IOC de DMA. Dans les cOntrôleurs IOC de DMC la fonction exécutée par le circuit logique d'adresse et de portée 445 est réalisée par le processeur CPU en utilisant la table de programme canal. Un compteur de registre d'adresse 447 contient l'adresse de 17 bits extraite du processeur CPU pendant la jonc'ciron d'adresse de sortie d'une instruction de programme IOLD. Le compteur de registre d'adresse 447 progresse quand chaque mot (ou multiplet) de données est transféré entre la mémoire principale et le contrôleur IOC de DMS. Un compteur de registre de portée 449 est utilisé pour garder la portée (en nombre de multiplets) des données à transférer. Le compteur de portée est initialement positionné par la fonction de portée de sortie d'une instruction de programme IOLD. Quand chaque mot (ou multiplet) de données est transféré entre le contrôleur IOC de DMA et la mémoire principale, le compteur de registre de portée 449 régresse. Le contenu du compteur de registre d'adresse 447 peut être transféré au processeur CPU par une commande d'entrée-sortie d'adresse d'entrée ou de module d'entrée. Le contenu du compteur de registre de portée 449 peut être introduit dans le processeur CPU par une commande d'entrée-sortie de portée d'entrée. Quand le contrôleur IOC de DMA reçoit un accusé de réception du processeur CPU en réponse à une demande de DMA, le contrôleur IOC est relié au processeur CPU pour un transfert de données et un cycle de DMA commence (voir figure 22). En même temps qu'est réalisée la réception de l'accusé de réception du processeur CPU, le circuit logique d'adresse et de portée 445 rend les lignes de multiplet o d'écriture et de multiplet 1 d'écriture (PWRTBO+ et PWRTB1+) actives. Ces deux lignes indiquent à la mémoire principale le type d'opération d'écriture/lecture qu'elle doit exécuter. Le circuit logique d'adresse et de portée 445 charge l'adresse de mémoire principale sur les lignes d'adresse/données de bus de Système (BUSXOO+ à BUS Xl 5+) et le processeur CPU rend la ligne de validation de bus pour le processeur CPU (PENBSX-) active pour l'avoir à sa disposition. S'il se produit une erreur d'adresse de mémoire principale, le processeur CPU rend les lignes'd'erreur de mémoire principale (MEMPER- et PMMPAR-) actives en présence du signal PENBSX- pour la notifier au contrôleur IOC de DMA. Quand une opération d'entrée (écriture en mémoire principale) est en cours d'exécution, le signal PENBSX- reste à ZERO binaire pour transférer le mot de données (ou le multiplet) du registre d'entrée de données 425 sur le bus de système et dans la mémoire principale.Quand une opération de sortie (lecture de mémoire principale) est en cours d'exécution, le signal PENBSX- passe à UN binaire. A la réception d'une commande de fin-de-liaison sur les lignes RDDT de bus de système, le contrôleur IOC de DMA charge le contenu du registre d'entrée de données 425 sur les lignes d'adresse/données de bus de Système (pour une entrée) ou décharge les lignes d'adresse/ données de bus de système dans le registre de sortie de données 423 (pour une sortie). S'il se produit une erreur de parité de mémoire principale, le processeur CPU notifie cette erreur au contrôleur IOC de DMA en mettant à zéro le signal MEMPER-/PMMPAR- pendant la commande de fin-de-liaison. Le cycle de DMA est terminé et la séquence de transfert de données est achevée. On notera que le circuit logique d'alignement de multiplet de données 427 du circuit logique de transfert de données 421 n1 existe que dans les contrôleurs IOC de DMA. Pendant des opérations de sortie de DMA, le circuit logique d'alignement de multiplet de données 427 fonctionne en liaison avec le circuit logique-d'adresse et de portée 445 pour extraire le multiplet convenable du mot de données reçu de la mémoire principale (contenu dans le registre de sortie de données 423) et transfère le multiplet ou le mot de données dans l'appareil périphérique. On notera qu'un mot de données est toujours lu en mémoire principale. Pendant des opérations d'entrée de DMA, la fonction du circuit logique d'alignement de multiplet de données 427 est d'aligner ou cadrer le mot (ou multiplet) de données reçu de l'appareil périphérique et de le placer dans sa position convenable dans le registre d'entrée de données 425 de sorte qu'il soit cadre- convenablement sur les lignes d'adressé/données de bus de système pour un transfert vers la mémoire principale. On notera en outre que l'un ou l'autre ou les deux multiplets de données peuvent être écrits dans la mémoire principale.Celui ou les deux multiplets qui sont écrits dans la mémoire principale sont commandés par les signaux P##'RTBO+ et PWRTBl mis à un par le circuit logique d'adresse et de portée 445 pendant des transferts de données de DMA. On va maintenant décrire le circuit logique de synchronisation de contrôleur IOC. Comme on l'a expliqué plus haut, chaque contrôleur IOC sur un bus de système a un cycle de bus de 500 nanosecondes qui lui est affecté pendant lequel il peut faire des demandes de bus de système. Chaque contrôleur IOC sur le bus détermine quand c'est le moment de son cycle de bus de contrôleur IOC en utilisant les signaux PTIME3et BCYCIN- en provenance du bus de système. Le signal de temps principal 3 (PTIME3-) est distribué à chaque contrôleur IOC sur les bus de système et il est à l'état ZERO binaire pendant cent nanosecondes du cycle de bus et dans l'état UN binaire pendant les 400 autres nanosecondes du cycle de bus comme la figure 13 l'indique. La figure 13 montre également que le signal d'entrée de cycle de bus (BCYCIN-) est à UN binaire pendant une période de temps de 500 nanosecondes du bord arrière d'une impulsion de temps principal 3 au bord arrière de l'impulsion de temps principal 3 suivante. On notera que le signal d'entrée de cycle de bus de système (BCYCIN-) d'un contrôleur IOC particulier est le signal de sortie de cycle de bus de système (BCYCOT-) du contrôleur IOC précédent (c'est-à-dire, le contrôleur IOC voisin qui est plus proche# du processeur CPU sur le bus de système). On va maintenant décrire en détail le fonctionnement du circuit de synchronisation 400 en référence à la figure 39. Une bascule de "mon temps" principal 3 408 et une bascule d'entrée de cycle 410 sont initialement mises à un (c'est-à-dire, un UN binaire apparaît à leur sortie Q). La bascule de "mon temps"3 est remise à zéro uniquement pendant la période de temps principal 3 du contrôleur IOC considéré en fonctionnement.La bascule d'entrée de cycle 410 est remise à zéro uniquement pendant la période de temps d'entrée de cycle du contrôleur IOC considéré On notera que les elxpres- sions contrôleur IOC présent, contrôleur IOC précédent ou contrôleur IOC suivant sont en relation avec la position physique des contrôleurs IOC sur le bus de système. Ainsi, si l'on se réfère à la figure 1, le contrôleur HOC présent est le contrôleur IOC 208, le contrôleur IOC précédent est le contrôleur IOC 206 et le contrôleur IOC suivant est le contrôleur IOC 210. Le contrôleur IOC précédent est le contrôleur IOC voisin qui est plus proche du processeur central sur le bus de système. Le contrôleur IOC suivant est le contrôleur IOC voisin qui est plus éloigné du processeur CPU. En se référant à la figure 39 on voit que chaque fois que le signal de temps principal 3 de bus de système (PTIME3-) passe de l'état UN binaire à l'état ZERO binaire, le signal de sortie de la porte ET 412 (PTIME3+20) passe de l'état ZERO binaire d l'état UN binaire et fait changer la bascule de mon temps 3 408 d'état. Initialement, quand le signal d'entrée de cycle de bus BCYCIN- est à UN binaire, ce qui indique qu'il ne s'agit pas du temps d'entrée de cycle du contrôleur IOC précédent, la bascule 408 est mise à un. Quand la bascule de "mon temps"3 408 est mise à un ou reste mise à un, son sig#nal de sortie Q (DMYTM3-) est à UN binaire et il est envoyé à la bascule d'entrée de cycle 410 quand le signal PTIME3-30 passe de l'état ZERO binaire à l'état UN binaire à la fin du temps principal 3. Le signal PTIME3030 est le signal de sortie d'fun inverseur 414 qui inverse les signaux de sortie de la porte ET 412. La relation entre les signaux d'horloge PTIME3+20 et PTIME3-30 et le signal de temps principal 3 de bus de système (PTIME3) est indiquée sur la figure 40. La figure 40 montre que lorsque le signal PTIME3- est à UN binaire, le signal PTIME3+20 est à ZERO binaire et le signal PTIME3-30 est à UN binaire.On notera que les retards proches de 5 à 10 nanosecondes associés à chacun des éléments logiques sont ignorés dans le cadre de cette description de l'invention. D'après les figures 39 et 40, au temps A, qui correspond au début de la première période de temps principal 3, le passage du signal PTIME3+20 de l'état ZERO binaire à l'état UN binaire met la bascule 408 à un par l'envoi du signal BCYCIN- des entrées de données (D) de celle-ci à ses sorties (Q et Q). Si la bascule 408 a été mise à un avant le temps A, son état n'est pas change au temps A. Au temps B, qui correspond à la fin de la première période de temps principal 3, le signal BCYCIN- sur le bus de système passe de l'état UN binaire à l'état ZERO binaire qui indique le début du temps d'entrée de cycle de bus de système du contrôleur IOC précédent.Au temps C, qui correspond au début de la seconde période de temps principal 3, le signal PTIME3+20 est à nouveau transféré de l'entrée D de la bascule 408 aux sorties de celle-ci et à ce moment, comme le signal BCYCINsur le bus est à ZERO binaire, la bascule 408 est remise à zéro et sa sortie Q engendre le signal DMYTM3- à l'état ZERO binaire. Au temps D, qui correspond à la fin de la seconde période de temps principal 3 et au début du temps d'entrée de cycle de bus de système du contrôleur IOC présent, le signal d'horloge (PTI#1E3-30) de bascule d'entrée de cycle 410 passe de l'état ZERO binaire à l'état UN binaire et passe de l'entrée D de celle-ci à la sortie Q de celle-ci.Au temps D, le signal d'entrée D de la bascule 410 (DMYTM3~) est à ZERO binaire et la bascule 410 est donc remise à zéro, ce qui indique le début du temps d'entrée de cycle de bus de système du contrôleur IOC présent. La remise à zéro de la bascule d'entrée de cycle 410 fait passer le signal BCYCOT- à sa sortie Q à ZERO binaire qui, quand il est envoyé à l'entrée de mise à un (S) de la bascule 408, de temps 3, met la bascule 408 à un en mettant le signal DMYTM3- à sa sortie Q à UN binaire. Au temps E, qui correspond à la fin de la troisième période de temps principal 3, le signal d'horloge (PTIbE3-30) de la bascule 410 passe à nouveau de ZERO binaire à UN binaire, ce qui fait passer le signal UN binaire à l'entrée D de cette bascule à la sortie Q de celle-ci en faisant passer le signal BCYCOT- à UN binaire.Ce passage du signal BCYCOTde ZERO binaire à UN binaire termine la période de temps d'entrée de cycle de bus de système du contrôleur IOC présent et autorise le début de temps d'entrée de cycle de bus de système du contrôleur IOC suivant. Si l'on se réfère à nouveau à la figure 39, on peut voir que la bascule d'entrée de cycle 410 est mise initialement à un par l'apparition du signal PCLEAR- sur le bus dans l'état ZERO binaire. Le signal PCLEAR- est mis à un par le processeur CPU pendant l'initialisation du système pour remettre à zéro tous les périphériques sur les bus de s~s- tème. Quand le signal PCLEAR- est à ZERO binaire, le signal de sortie de la porte ET 416 est à UN binaire de même que le signal de sortie d'une porte ET 418, c'est-à-dire, le signal PCLEAR+20.Un inverseur 420 inverse le signal de sortie de la porte ET 418. Quand le signal de sortie de la porte ET 418 est à UN binaire, l'inverseur 420 engendre un signal à ZERO binaire à l'entrée de mise à un (S) de la bascule d'entrée de cycle 410, ce qui met la sortie Q de celle-ci à un signal initial à UN binaire. Cette possibilité de mettre à un la bascule d'entrée de cycle 410 par le signal PCLEARest utilisée par le système pendant une opération de remise à zéro principale pour arrêter toute progression d'opération d'entrée-sortie au moment de la remise a zéro principale. Si l'on se réfère à nouveau à la figure 40, on voit que la sortie Q de la bascule de"mon temps"3 408 (signal DMYTM3-) est remise à zéro uniquement pendant la période de temps principal 3 du contrôleur IOC présent (temps C à D) et que la sortie Q de la bascule d'entrée de cycle 410 (signal BCYCOT-) est remise à zéro uniquement la période de temps d'entrée de cycle de bus de système du contrôleur IOC présent de 500 nanosecondes (temps D à E > . On va maintenant décrire le circuit logique de demande de contrôleur IOC. On va décrire en détail le fonctionnement du circuit logique de demande de DMC 402-1 en se référant à la figure 39. Pour plus de sirplicité, le circuit logique de demande de DMA/DMC 402 de la figure 38 est représenté comme le circuit logique de demande de DMC 402-1 de la figure 39 en supposant, dans la description qui suit, que le contrôleur TOC est un contrôleur de DMC et que le circuit logique de demande de transfert de données fait une demande de DMC en utilisant le signal PDMCRX-. Si le contrôleur IOC était du type de DMA contenant le circuit logique d'adresse et de portée (445 sur la figure 38), le circuit logique de demande de transfert de données ferait une demande de DMA en utilisant le signal PDMARX-. Initialement, une bascule de besoin de DMC 424 est remise à zéro, ce qui indique que le contrôleur IOC n'a pas besoin présentement d'un cycle de DMC pour transférer un multiplet de données jusqu'à ou à partir d'un appareil périphérique connecté au contrôleur IOC. Plus tard, quand le circuit logique de dispositif 407 (figure 38) détermine qu'un multiplet de données doit être lu ou écrit dans la mémoire principale, le signal DMCINC- à l'entrée D d'une bascule 424 passe à UN binaire. Encore plus tard, quand le circuit logique de dispositif 407 fait passer le signal d'entrée de données de la bascule 427 aux sorties de celleci en faisant passer le signal d'horloge DRESWT- de l'état ZERO binaire à l'état UN binaire qui met à un la bascule de besoin de DMC 424 en faisant passer la sortie Q de celleci (signal DRQAOK+) à UN binaire.Quand la bascule de besoin de DMC 424 est mise à un, le contrôleur IOC demande un cycle de bus de DMC pendant son temps d'entrée de cycle de bus de système suivant si un autre contrôleur IOC sur le même bus de système n'est pas dejà en train de demander un cycle de DMC. Si un autre contrôleur IOC sur le même bus de système n'est pas en train de demander un cycle de DMC, le signal de demande de DMC PDMCRX- sur le bus ae système (indiqué comme signai. DDMCRS- de façon interne au contrôleur IOC) est donc à l'état UN binaire qui indique qu'un cycle de DMC n'est pas demandé par un contrôleur IOC sur ce bus de système.Quand il y a un UN binaire à deux des trois entrees d'une porte NON-ET 426, c'est-à-dire, que la bascule de demande de DMC n'est pas mise à un et que la bascule de besoin de DMC est mise à un, l'apparition d'un signal à UN binaire à la troisième entrée, DMYTM3+, fait- passer le signal DMYDMC- à la sortie de celle-ci à ZERO binaire, ce qui met la bascule de demande de DMC 428 à un. Comme le montre la figure 40, le signal DMY#43- passe à ZERO binaire (donc le signal DSETM3+ passe à UN binaire) au temps C qui correspond au début d'un temps principal 3 pour le temps d'entrée de cycle de bus de système du contrôleur IOC présent en faisant passer le signal PDMCRX- de la ligne dé demande de DMC de bus de système à ZERO binaire. Si l'on se réfère maintenant à la figure 39, on voit que la mise à un de la bascule de demande de DMC 428 fait passer le signal DMDMCF+ à la sortie Q de celle-ci à UN binaire qui à son tour fait passer le signal de sortie d'une porte NON-ET 430 à ZERO binaire pour demander un cycle de DMC sur la ligne de bus de système PDMCRX-. Quand la ligne de demande de cycle de DMC est mise à ZERO binaire, on voit en se référant à la figure 39, qu'aucun autre contrôleur IOC sur ce bus de système ne peut demander un cycle de DMC en sa faveur jusqu'à ce que la ligne de demande de DMC soit remise à un par le contrôleur IOC présent. On notera que chaque contrôleur TOC de DMC sur les bus de système comporte un circuit logique de demande de DMC semblable à celui représente sur la figure 39. La bascule de demande de DMC 428 du contrôleur IOC présent peut être remise à zéro en présence de l'un des deux événements décrits ci-dessous. Une opération de remise à zéro principale provoque la remise à ZERO binaire du signal de remise à zéro de bus de système PCLEAR-, ce qui fait passer le signal de sortie de la porte ET 418 (PCLEAR+20) à UN binaire qui est envoyé à une entrée d'une porte NI 422. Quand le signal PCLEAR+20 passe à UN binaire, le signal de sortie de la porte NI 422, DMCCLR- passe à ZERO binaire qui à son tour remet à zéro la bascule de besoin d DMC 424 et la bascule de demande de DMC 428. Cette remise à zéro des bascules 424 et 428 par l'intermédiaire du signal de remise à zéro entraîne la remise à zéro de toute demande de DMC nécessaire mémorisée mais pas encore traitée et la remise à zéro de la ligne de demande de DMC de bus de système si elle n'est pas présentement mise à un par la bascule de demande de DMC 428. Le second procédé suivant lequel les bascules 424 et 428 peuvent être remises à zéro est en réponse à une commande de réponse de DMC (ASDIC) codée sur les lignes de bus RDDT29+ à RDDT31+ qui met une bascule de liaison de DMC 454 à un. Quand la bascule 454 est mise à un, le signal de sortie de celle-ci DDMCCY+ passe à UN binaire, ce qui fait passer le signal à ZERO- binaire à l'entrée D de la bascule de demande de DMC 428 aux sorties de celle-ci en remettant la bascule de demande de DMC 428 à zéro. Le signal à la sortie de la porte NI 422 passe aussi à ZERO binaire en remettant la bascule de besoin de DMC 424 à zéro. Ainsi, comme on le verra plus loin, quand le processeur CPU répond au contrôleur IOC qui fait une demande par la commande de réponse de DMC-sur le bus de système, la bascule de demande de DMC du contrôleur IOC qui fait la demande 428 est remise à zéro de même que la bascule de besoin de DMC 424. La remise à zéro de la bascule de demande de DMC 428 fait passer à UN binaire la ligne de demande de DMC ( signal PDMCRX-) sur le bus de système auquel le contrôleur IOC est connecté, ce qui permet à un autre contrôleur IOC, ou au contrôleur IOC de remise à zéro, de faire une demande de DMC sur ce bus de système particulier en mettant à un sa bascule de demande de DMC.Si plus d'un contrôleur IOC sur un bus de système particulier a une bascule de besoin de DMC mise à un, le premie#r contrôleur IOC à avoir son temps d'entrée de cycle accepté sur le bus de système est le contrôleur TOC qui est autorisé à faire la demande de DMC en mettant sa bascule de demande de DMC à un.Par exemple, si l'on se réfère à la figure 13, on voit que si le troisième contrôleur IOC a eu sa demande de transfert de données de DMC acceptée et pendant le traitement de la demande de transfert de DMC du troisième contrôleur TOC, le quatrième contrôleur IOC et le secondcontrôleur IOC mettent leurs bascules de besoin de DMC respectives à un et la bascule de demande de DMC du troisième contrôleur IOC est remise à zéro pendant le temps d'entrée de cycle de bus de système du premier contrôleur IOC, le second contrôleur IOC est alors autorisé à mettre sa bascule de demande de DMC à un pendant son temps d'entrée de cycle de bus de système.Le quatrième contrôleur TOC doit attendre jusqu'à un de ses temps d'entrée de cycle de bus de système où il se rend compte que la ligne de demande de DMC sur son bus de système n'a pas déjà été mis à un par un autre contrôleur IOC sur le même bus de système avant que le quatrième contrôleur IOC puisse mettre sa bascule de demande de DMC à un et demander un cycle de transfert de données de DMC. On va maintenant décrire le circuit logique de demande d'interruption de contrôleur IOC. Le fonctionnement du circuit logique de demande d'interruption 404 va être décrit en référence à la figure 3-9. Le circuit logique de demande d'interruption 404 a un fonctionnement analogue à celui du circuit logique de demande de DMC 402-1. C'est ainsi qu'une bascule de besoin d'interruption 434 et une bascule de demande d'interruption 438 sont initialement remises à zéro en engendrant un ZERO binaire à leurs sorties Q respectives. Quand le contrôleur IOC détermine qu'une interruption est nécessaire, le signal d'horloge DAINOK+ de la bascule de demande d'interruption 434 passe de ZERO binaire à UN binaire en faisant passer le signal à UN binaire à l'entrée de données de cette bascule à sa sortie Q, ce qui met la bascule à un et fait passer le signal DBINOK+ à UN binaire.Plus tard, pendant le temps d'entrée de cycle du contrôleur IOC particulier, l'apparition du signal de synchronisation DMYTM3+ passant à UN binaire valide une porte NON-ET 436 et fait passer le signal de sortie de celle-ci à ZERO binaire si le signal à la troisième entrée de cette porte DINTRX- est à UN binaire. Le signal DINTRX- est à UN binaire si la ligne de demande d'interruption sur le bus de système particulier, correspondant au signal PINTRX-, est à UN binaire, ce qui indique qu'aucun autre contrôleur IOC sur ce bus de système particulier n'a déjà mis sa bascule de demande d'interruption a un.Si les trois entrées de la porte NON-ET 436 sont à UN binaire, le signal de sortie DMYINT- de cette porte passe a ZERO binaire, ce qui met la bascule de demande d'interruption 438 à un et fait passer le signal de sortie Q de cette bascule, DMINTF+, à UN binaire. La mise à un de la bascule de demande d'interruption 438 fait passer le signal de sortie d'une porte NON-ET 440 DINTRX-, à ZERO binaire. Ce signal DINTRX- est le même que le signal de demande d'interruption PINTRX- sur le bus de système. La mise à un de la bascule de demande d'interruption 438 empêche tout autre contrôleur IOC sur le même bus de système de faire une demande d'interruption jusqu'à ce que la bascule de demande d'interruption du contrôleur IOC présent soit remises zéro.Comme on le verra plus loin, quand le processeur CPU répond par une commande de réponse d'interruption (ASINT) sur les lignes de bus de système RDDT29+ à RDDT31+, la bascule de liaison d'interruption 450 est mise à un, ce qui fait passer le signal de sortie Q de celle-ci DINTCY+ à UN binaire.Le signal DINTCY+ qui passe à UN binaire remet la bascule de demande d'interruption 438 à zéro en faisant passer le signal à ZERO binaire à l'entrée de données de celle-ci aux sorties de cette bascule, ce qui remet zéro la ligne de demande d'interruption de bus de système (signal PINTRX~). Le signal DINTCY+ passant à UN binaire en réponse à la commande de réponse d'interruption provenant du processeur CPU fait aussi passer le signal de sortie de la porte NI 432 (DINSTS- > à ZERO binaire, ce qui remet la bascule de besoin d'interruption 434 à zéro.Alternativement, comme on l'a décrit au sujet du circuit logique de demande de DMC 402-1, l'apparition d'une remise à zéro principale provenant du processeur CPU fait passer le signal PCLEAR+20 à UN binaire et le signal de sortie de la porte NI 432 à ZERO binaire qui à son tour remet la bascule 434 à zéro ainsi que la bascule de demande d'interruption 438, ce qui arrête toute progression d'une demande d'interruption présente. Cette mise à un et remise à zéro de la ligne de demande d'interruption de bus de système PINTRX- est également représentée sur la figure 23 qui représente la séquence d'interruption d'entréesortie de bus de système. On va maintenant décrire le circuit logique de remise à zéro de demande de contrôleur IOC. Le fonctionnement du circuit logique de remise à zéro de demande de contrôleur IOC 406 va être décrit en détail en référence à la figure 39. Un décodeur de commande 442 est utilisé pour décoder les commandes de bus de système engendrées par le processeur CPU sous commande microprogrammée et codées en binaire sur les lignes de bus de système RDDT2#tà RDDT31+. Le decodeur de commande 442 est un décodeur de trois à huit lignes du type SN 745138 fabriqué par Texas Instruments, décrit dans l'ouvrage "The TTL Data Book for Design Engineers", 2ème édition. Des trois entrées de validation (EN) qui combinent des signaux selon la fonction logique ET pour valider le décodeur de commande, une seule est variable et est connectée à la ligne de bus de système PIOCTX- de sorte que lorsqu'un signal à ZERO binaire apparaît sur cette ligne, le décodeur 442 est validé et décode les trois signaux d'entrée binaires (11, 12 et 14) et engendre un signal à ZERO binaire à une des huit sorties (Q0-Q7 > . Le codage binaire des trois lignes de commande est représenté sur la figure 18 qui décrit les huit commandes de bus de système. Par exemple, si un 011 binaire est codé sur les lignes de bus de système RDDT29+ à RDDT31+, un ZERO binaire apparaît à la sortie Q3 du décodeur 442, en produisant un signal DASDMC- à ZERO binaire.Quand le signal d'échantillonnage de commande PIOCTX- passe à ZERO binaire, un des huit signaux de sortie du décodeur de commande 442 passe donc à ZERO binaire et les sept autres signaux de sortie restent à UN binaire. Avant que le signal d'échantillonnage PIOCTX- passe à ZERO binaire, c 'est-à-dire, quand le signal de validation est à UN binaire, tous les signaux de sortie du décodeur de commande 442 sont à UN binaire. La génération du signal d'échantillonnage de comande PIOCTXest commandée par les bits 32 à 34 de mot de micro-instruction de processeur CPU comme on l'a décrit auparavant en référence aux figures 35C et 37D.Si l'on se réfère à la figure 37D, on voit que les bits 27 et 28 de mot de microinstruction de processeur CPU commandent la ou les deux lignes d'échantillonnage de commande de bus de système doivent'être validées. C'est ainsi que le microprogrammeur de la partie microprogrammée de processeur CPU contrôle par l'utilisation des bits 27 et 28 lequel des bus de système doit recevoir un signal d'échantillonnage de commande et par l'utilisation des bits 29 à 31 (voir- figure 37E) la commande aux doit être échantillonnée, c'est-à-dire transférée par le bus de système sélectionné, soit le bus de système A, soit le bus de système B, ou les deux bus de système A et B.Si une demande de DMC est faite sur le bus de système A et une autre demande de DMC est faite sur le bus de système B, la partie microprogrammée de processeur CPU peut être microprogrammée pour répondre par une commande de réponse de DMC sur les lignes de bus de système RDDT29+ à RDDT31+. La possibilité de commander l'échantillonnage de commande de bus de système sur l'un ou l'autre ou les deux bus de système est importante en ce que la commande de bus de système sur les lignes RDDT29+ à RDDT31+ est transférée sur les deux bus de système simultanément et que le signal d'échantillonnage de commande de bus (PIOCTX-) est transmis de façon conditionnelle à un seul des bus de sytème de sorte qu'un seul des deux contrôleurs IOC ayant la possibilité de faire une demande reçoit une réponse.Comme le montre la figure 21, le signal d'échantillonnage de commande PIOCTXpasse de l'état UN binaire à l'état ZERO binaire à la fin d'un temps principal 0, ce qui valide une des huit sorties du décodeur de commande 442. En se référant maintenant à la figure 39, on voit que le signal à une des entrées d'une porte ET 452 est le signal DASDMC- provenant du décodeur de commande 442. Le signal à l'autre entrée de la porte ET 452 est le signal DMDMCF- qui est le signal en provenance de la sortie Q de la bascule de demande de DMC 428. On voit donc que si une commande de réponse de DMC est codée sur les lignes de bus de système RDDT29+ à RDDT31+ et que la ligne d'échantillonnage de commande PIOCTX- est à ZERO binaire sur le même bus de système, le signal DASDMC- est à ZERO-binaire qui valide partiellement la porte ET 452.Si la bascule de demande de DMC 428 du contrôleur IOC est mise à un, l'entrée du bas de la porte ET 452 est validée (un ZERO binaire), ce qui valide complètement la porte ET 452 en produisant un signal à UN binaire à sa sortie (signal DDMCCS+). Quand un signal à UN binaire apparait à l'entree de données (D) de la bascule de type D 454, l'apparition du signal d'horloge DMYLKC+ qui passe de l'état ZERO binaire à l'état UN binaire met la bascule de liaison de DMC 454 à un et fait passer le signal DDMCCY+ à UN binaire. Comme on l'a vu auparavant, le passage du signal DDMCCY+ d'un état ZERO binaire à un état UN binaire fait changer d'état la bascule de demande de DMC 428 en la remettant à zéro, ce qui fait passer la ligne de demande de DMC, PDMCRX-, sur le bus de système à UN binaire. Comme on l'a vu également auparavant, quand le signal DDMCCY+ passe à UN binaire, la bascule de besoin de DMC 424 est également remise à zéro. O va considérer maintenant la génération du signal d'horloge DMYLKC+ qui fait changer la bascule de liaison de commande 446 d'état, ainsi que la bascule de liaison de DMC 454, la bascule de liaison d'interruption 450 et la bascule de liaison de contrôleur IOC 468. Comme on l'a vu précédemment r la sortie de la porte ET 452 cst à UN binaire si les deux entrées de cette porte sont à ZERO binaire, ce qui indique que le contrôleur TOC reçoit une commande de réponse de DMC par les lignes de bus de systemewRDDT29+ à RDDT31+ et que la bascule de demande de DMC du contrôleur IOC est mise à un.Si ces conditions sont satisfaites, une des entrées d'une porte OU 458 est à UN binaire, ce qui met la sortie de cette porte (signal DMYLKS+) à UN binaire. Un UN binaire à l'entrée de données d'une bascule de demande de remise à zéro 460 passe à sa sortie au temps principal 3 quand le signal d'horloge PTIME3+20 passe de l'état ZERO binaire à l'état UN binaire. La mise à un de la bascule de demande de remise à zéro 460 fait passer le signal de sortie de celle-ci (DMYLKC+) de ZERO binaire à UN binaire et fait changer l'état des bascules 446, 450, 454 et 468. A n'importe quel moment donné, une seule des trois bascules 446, 450, 454 est mise à un. La mise à un d'une de ces bascules dépend de la commande codée sur les lignes de bus de système et de la bascule de demande associée (c'est-à-dire, de commande de processeur CPU 470, de demande d'interruption 438, ou de demande de DMC 428) qui est mise à un. De la description qui précède il apparaît que la porte ET 452 a un double rôle. La première fonction de cette porte est de fournir un signal à UN binaire à l'entrée de données de la bascule de liaison de DMC 454 si la commande d'entrée-sortie codée sur le bus de système est une commande de réponse de DMC et Si la bascule de demande de DMC de ce contrôleur IOC particulier est mise à un.Si la bascule de demande de DMC de ce contrôleur IOC particulier n'est pas mise à un, la mise à un de la bascule de liaison de DMC 454 n'est pas nécessaire pour remettre à zéro la bascule de demande de DMC 428 non mise à un (déjà remise à zéro). La seconde fonction de la porte ET 452 est d'engendrer un des trois signaux qui sont combinés selon la fonction logique OU par la porte OU 458 dont la sortie est utilisée pour la mise à un de la bascule de demande de remise à zéro 460. A son tour, la bascule de demande de remise à zéro 460 a sa sortie utilisée pour faire changer l'état des bascules 446, 450 et 454.Le signal d'horloge DMYLKC+ est ainsi engendré uniquement si pour fln contrôleur IOC : sa bascule de demande de DMC 428 est mise à un et qu'une commande de réponse de DMC est reçue, ou sa bascule de demande d'interruption 438 est mise à un et qu'une commande de réponse d'interruption est reçue, ou sa bascule de commande de processeur CPU 470 est mise à un et qu'une commande de réponse est reçue sur les lignes de commande de bus de système RDDT29+ à RDDT31+. Ces deux dernières conditions sont établies par une porte ET 444 et une porte ET 448 dont les sorties sont respectivement connectées aux entrées de données de la bascule de liaison de commande 446 et de la bascule de liaison d'in- terruption 450. La bascule de liaison de commande 446 est donc mise à un si la bascule de commande de processeur CPU 470 est mise à un et qu'une commande de réponse est reçue du bus de système. D'une manière correspondante, la bascule de liaison d'interruption 450 est mise à un si la bascule de demande a d'interruption 438 est mise à un et qu'une commande de réponse d'interruption est reçue sur le bus de système.La mise à un de la bascule de liaison d'interruption 450 fait passer le signal DINTCY+ à UN binaire qui à son tour remet à zéro la bascule de demande d'interruption 438 et la bascule de besoin d'interruption 434, comme on l'a décrit plus haut. La mise à un de la bascule de commande de processeur CPU 470 fait passer le signal DMCMDFà ZERO binaire qui à son tour est utilisé par le contrôleur IOC pour engendrer les signaux de traitement et d'occupation qui sont envoyés au processeur CPU par le contrôleur IOC pour indiquer si le contrôleur IOC est ou non dans une condition pour traiter la commande de dialogue provenant du processeur CPU. La bascule de commande de processeur CPU 470 est mise à un par le contrôleur IOC en réponse à la réception d'une commande de processeur CPU sur les lignes de bus RDDT29+ à RDDT31+ ainsi que du numéro de canal du contrôleur IOC considéré sur les lignes de bus de système BUSXOO+ à BUSX09+. Pendant la séquence de commande de processeur CPU envoyée au contrôleur IOC représentée sur la figure 20 où la commande de processeur CPU est codée sur les lignes de bus de système RDDT, le contrôleur IOC compare le numéro de canal sur les lignes de bus de système (BUSXO0+ à BUSXO9+ > à celui d'un commutateur positionné manuellement dans le contrôleur IOC qui a été prépositionné pour indiquer le numéro de canal du contrôleur IOC particulier.Si le numéro de canal sur le bus de système égale celui dû contrôleur IOC, la bascule de commande de processeur CPU 470 est mise à un par le signal DMYCMD- qui passe de ZERO binaire à UN binaire à l'entrée d'horloge, en faisant changer l'état UN binaire à l'entrée de données. La mise à un de la bascule 470 fait passer le signal de sortie Q DMCMDF- à ZERO binaire en validant partiellement la porte ET 444 qui est complètement validée par l'apparition d'une commande de réponse codée sur les lignes de bus de système RDDT.La bascule de commande de processeur CPU 470 est remise à zéro par un signal DCMDR3en présence d'une remise à zéro principale sur le bus de système (signal PCLEAR+20 par l'intermédiaire d'une porte NI 472) ou en présence d'une commande de fin-de-liaison (EOFLK) sur les lignes de bus de système RDDT au temps principal 3 si la bascule de liaison de commande 446 est mise à un (c'est-à-dire, la sortie de la porte ET 474 est à UN binaire en présence de la commande de fin-de-liaison qui termine la séquence de bus de système de commande de processeur CPU). On notera que le signal PTIME3+40 est engendré par un inverseur 476 qui inverse le signal de temps principal 3 PTIME3-30 et le signal DEOFLK est engendré par un inverseur 478 qui inverse le signal de fin-de-liaison DEOFLK-. Si l'on se réfère toujours à la figure 39, on peut voir que la bascule de liaison de contrôleur IOC 468 change d'état par le signal de sortie de la bascule de demande de remise à zéro 460 qui change également l'état des bascules 446, 450 et 454. Quand un signal à UN binaire est à l'entrée de données de la bascule de liaison de contrôleur IOC 468, la bascule de liaison de contrôleur TOC 468 est mise à un chaque fois qu'une des bascules de liaison 446, 450 et 454 est mise à un. Quand la bascule de liaison de contrôleur IOC 468 est mise à un, son signal de sortie Q, DMYLNK-, étant à ZERO binaire valide la porte ET 456. L'autre signal d'entrée de la porte ET 456 est le signal DEOFLK- qui est à ZERO binaire quand la commande de fin-de-liaison est codée sur les lignes de bus de système RDDT.Le signal de sortie de la porte ET 456, DMYEND+, est donc à UN binaire chaque fois qu'une commande de fin-de-liaison apparaît sur le bus de système et qu'une des trois bascules 446, 450, 454 est mise à un, ce qui assure que la commande de liaison sur le bus de système est dirigée vers ce contrôleur IOC particulier. Quand le signal DMYEND+ est à UN binaire, le signal de sortie de la porte OU 462 DEOLK+ est à UN binaire. Le signal à UN binaire à l'entrée D1 du registre de fin-deliaison 464 passe à la sortie Q1 de celui-ci où il est maintenu pendant la période de temps principal 3 du cycle de bus où la commande de fin-de-liaison est sur le bus de système. Pendant la période de temps principal 3 du cycle de bus suivant, le signal DLKD1+ étant à UN binaire à la sortie Q1 et à l'entrée D2 du registre de fin de liaison 464, passe à la sortie Q2 de celui-ci où il est maintenu et le signal DELKD2+ est à UN binaire. Quand le signal -DELKD2+ est à UN binaire, le signal de sortie de l'inverseur 466, DELKD2- passe à ZERO binaire, ce qui remet à zéro la bascule de liaison de contrôleur IOC 468 et les autres bascules de liaison 446, 450 et 454 et termine la séquence pendant laquelle le contrôleur IOC a été relié au processeur CPU.En plus de la séquence de fin-de-liaison qui remet à zéro les bascules de liaison 446, 450, 454 et 468, une remise à zéro principale sur le bus de système remet également à zéro ces bascules en envoyant un signal PCLEAR+20 à la porte OU 462 qui à son tour, après deux périodes de temps principal 3, remet à zéro ces bascules. La fonction du registre de fin-de-liaison 464 est de retarder la remise à zéro des bascules de liaison pendant une période de temps de cycle de bus de système. On notera que la sortie de celui-ci engendre un signal après l'inverseur 466, c'est-à-dire le signal DEL#D2-, qui reste à ZERO binaire pendant toute une période de temps de cycle de bus du début d'un temps principal 3 à la fin du temps principal 2 suivant de sorte que les bascules de liaison 446, 450, 454 et 468 ne peuvent pas être mises à un tant que le signal DELKD2- à leurs entrées de remise à zéro ne passe pas à UN binaire.Les bascules de liaison 446, 450, 454 et 468 ne peuvent donc pas être mises à un tant que deux cycles de bus de système ne sont pas passés à la suite du cycle de bus de système pendant lequel la commande de fin-de-liaison a été codée sur les lignes de bus de système RDDT. En pratique, cela n'est pas une limitation car les commandes de bus de processeur CPU sur les lignes de bus de système RDDT sont engendrées par la partie microprogrammée de processeur CPU et le processeur CPU doit exécuter ureou plusieurs phases microprogrammées (c'est-à-dire, des cycles de bus de systeme) entre le traitement de la fin-de-liaison de la commande précédente et la réponse à des demandes de bus en suspens par une commande de réponse, une interruption de réponse, nne commande de bus de réponse de DMA ou de réponse de DMC. Comme on l'a vu précédemment, le signal d'horloge de bascule de liaison DMYLKC+ est engendré par la mise à un de la bascule de demande de remise à zéro 460. La bascule 460 doit être remise à zéro pour engendrer un signal d'horloge suivant, qui nécessite que le signal DMYLKC+ passe de l'état ZERO binaire à l'état UN binaire. La bascule 460 est remise à zéro pendant la période de temps principal 3 suivant du cycle de bus suivant dans la mesure Qa le signal DEIYLEt à l'entrée de données de celle-ci est à ZERO binaire.Cela est le cas si la commande de bus codée sur les lignes de bus de système RDDT n'est pas une commande de réponse, une commande de réponse d'interruption ou de réponse de DMC, ce qui assure que le signal de sortie de la porte OU 458 est a ZERO binaire. Cette condition est satisfaite si le microprogramme de processeur CPU ne code pas deux micro-instruGtions consécutives qui engendrent des commandes de réponse sur le bus de système. En pratique, cela ne constitue pas une restriction du point de vue des dialogues de séquences de bus. On va maintenant décrire les circuits logiques de demande et de remise à zéro de contrôleur IOC de DMA. Un contrôleur IOC donné dans le système est un contrôleur de DPE ou de DMC. La description précédente du circuit logique de demande et du circuit logique de remise à zéro de demande ainsi que du circuit logique de liaison a été faite pour-un contrôleur IOC de DMC mais elle est applicable également aux circuits logiques d'un contrôleur IOC de DMA. C'est ainsi que sur la figure 39, la bascule de besoin 424, la bascule de demande 428 et la bascule de liaison 454 pourraient également être les bascules de contrôleur IOC de DMA, auquel cas le signal de réponse de DMA (DASUMA-) provenant du décodeur de commande 442 aurait étd utilisé pour mettre l#a bascule de liaison 454 à un par l'intermédiaire de la porte ET 452. On va maintenant décrire brièvement le fonctionnement des circuits logiques de demande et de liaison de bus de système de contrôleur IOC représentés sur la figure 39. Le circuit logique de synchronisation 400 a pour fonction principale d'engendrer les signaux de synchronisation utilisés dans un contrôleur IOC particulier et de faire passer le signal de synchronisation d'entrée de cycle BCYCIN du contrôleur TOC précédent sur le bus et de le retarder de 500 nanosecondes avant de le faire passer comme signal BCYCOT sur le bus de système juscu'au contrôleur IOC suivant. De plus, le circuit logique de synchronisation 400 engendre les signaux de temps principal 3 PTIME3+20 qui sont à UN binaire pendant chaque cycle de bus de système et le signal DMYTM3+ qui n'est à UN binaire que pendant la période de temps principal 3 d'un temps d'entrée de cycle de bus de système d'un contrôleur IOC particulier. Le circuit logique de demande de DMA (non représenté), le circuit logique de demande de DMA/DMC 402 (figure 38), et le circuit logique de demande d'interruption 404 sont utilisés pour respectivement faire une demande de DMA, de DMC ou une demande d'interruption au processeur CPU.La mise à un d'une bascule de demande de contrôleur IOC, par exemple, la bascule de demande de DMC 428, n'est permise que pendant le temps d'entrée de cycle de bus du contrôleur IOC particulier sur le bus de système, ce qui élimine la possibilité que plus d'un contrôleur IOC sur ce bus de système (A ou B) n'essaie de faire une demande de type particulier. Comme les lignes de demande de DMA, de DMC et d'interruption sur le bus de système A sont séparées et distinctes de celles du bus de système B, un contrôleur IOC sur le bus de système A peut, par exemple, faire une demande de DMC au même moment qu'un autre contrôleur IOC sur le bus de système B fait une demande de DMC, car chaque contrôleur IOC est en train d'essayer de disposer de son temps d'entrée de cycle. On notera en outre qu'un contrôleur TOC sur un bus de système particulier peut faire une demande d'interruption et une demande de DMC (ou une demande de DlA) simultanément car rien n'empêche dans le circuit logique de demande de mettre à un plus d'un circuit logique de demande dans un contrôleur TOC à un instant donné. On notera que les priorités entre les différents types de demande (c'est-à-dire, de DMA, de DMC ou d'interruption) sont ordonnées en sortie par le processeur CPU de même que les demandes concurrentes du même type entre les bus de système A et B.Un examen supplémen- taire du circuit logique de demande montrera que pendant une période de temps d'entrée de cycle de bus particulier, un premier contrôleur IOC peut remettre à zéro sa bascule de demande de DMC 428 et un second contrôleur IOC sur le même bus de système peut mettre à un sa bascule de demande de DMC 428 si c'est le moment de la période de temps d'entrée de cycle du second contrôleur TOC et si sa bascule de besoin de DMC 424 est mise à un. Cela peut se produire même si les deux contrôleurs TOC sur le même bus de système reçoivent la commande de réponse de DMC sur les-lignes de bus de système RDDT.Seul le premier contrôleur IOC engendre le signal DDMCCY+ de remise à zéro de bascule de demande de DMC à partir de la bascule de liaison de DMC 454, car seule la bascule de demande de DMC du premier contrôleur IOC 428 a été mise à un au miment ou le signal d'horloge PT#:E3+2O a fait changer l'état de la bascule de demande de remise à zéro 460. Au moment du bord avant du signal PTI#4E3+20 dans le second contrôleur IOC du même bus de système, le signal de sortie de la porte ET 452, DDMCCS+, est à ZERO binaire et en conséquence, le signal de sortie de la porte OU 458, DMYLKS+, est à ZERO binaire, de sorte que la bascule de demande de remise à zéro 460 n'est pas mise à un par le signal d'horloge PTIME3+20. Comme la bascule de demande de remise à zéro du second contrôleur IOC 460 n'est pas mise à un, le signal de sortie Q de celle-ci, DMYLKC+, reste à ZERO binaire et la bascule de liaison de DMC 454 ne change pas d'état et reste à zéro. La sortie de la porte OU 458 du second contrôleur IOC engendre un signal DMYLKS+ à ZERO binaire car les deux autres signaux d'entrée de cette porte OU, DINTCS+ et DCMDCS+, sont aussi à ZERO binaire au bord avant du signal PTIME3+20 car à tout instant donné, le processeur CPU ne peut donner qu'un type de commande sur les lignes de bus de système RDDT. Il n'y a donc qu'une seule sortie du décodeur de commande 442 qui est à ZERO binaire et en conséquence, si c'est le cas, une seule sortie des portes ET 444, 448 et 452 peut être à UN binaire au temps du signal PTIME3+20. C'est ainsi que la bascule de demande de remise à zéro 460 est mise à un et engendre le signal DE~IYLKC+ d'horloge de bascule de liaison (446, 450, 454 et 468) uniquement si une bascule de demande (470, 438 ou 428) est mise à un et que la commande correspondante (ASCI!D, ASINT ou ASDESC) est reçue du processeur CPU sur les lignes de bus de système RDDT. Bien qu'un appareil périphérique donné connecté à un contrôleur IOC particulier ne fait pas normalement, à un instant donné, deux demandes de DMA (ou de DMC) et d'interruption en même temps, il est possible d'avoir plusieurs appareils périphériques connectés à un contrôleur IOC, auquel cas ce contrôleur TOC particulier pourrait faire à la fois une demande d'interruption et une demande de transfert de données (Dbl ou DMC > à un instant particulier donné, et dans ce cas, il y aurait plus d!une bascule de demande de mise à un. Quand un contrôleur TOC fait une demande de bus de système, la partie microprogrammée de processeur CPU répond par une commande de réponse sur les lignes de bus de système RDDT. Comme il est indiqué dans le circuit logique de remise à zéro de demande 406, la réponse du processeur CPU à la demande de bus de système produit deux effets. La première cons6guence est que la bascule de demande du contrôleur IOC qui fait une demande est remise à zéro et que la bascule de liaison correspondante est mise à un.En prenant toujours l'exemple du contrôleur IOC de DMC, si un contrôleur IOC sur le bus de système A fait une demande de DMC, la partie microprogrammée de processeur CPU répond par une commande de réponse de DMC sur les lignes de bus de système RDDT des deux bus de système A et B, mais ne répond que sur le bus de système A par les lignes de contrôleur PTOCTX- (PIOCTA- dans ce cas) qui sont remises à zéro. Bien que la commande de réponse de DMC est transmise sur les deux bus de système A et B, il n'y a que les contrôleurs IOC sur le bus de système A qui ont leurs décodeurs de commande 442 valides par la ligne de bus de syteme PIOCTA , de sorte qu'il n'y a que ces contrôleurs sur le bus de système A qui ont la possibilité de répondre à la commande de réponse de DMC.Comme un seul contrôleur IOC sur le bus de système A peut avoir sa bascule de demande de DMC mise à un, seul ce contrôleur IOC sur le bus de système A met à un sa bascule de liaison de DMC 454 et remet à zéro sa bascule de demande de DMC 428. On notera que la transmission de la commande de réponse de DMC sur les lignes de bus de système RDDT et la remise à zéro de la bascule de liaison de DMC de ce contrôleur IOC particulier sur le bus de système A 454 peuvent se produire pendant toute période de temps principal 3 et pas nécessairement pendant la période de temps d'entrée de cycle du contrôleur IOC qui fait une demande de DMC.Quand la bascule de liaison du contrôleur IOC particulier est mise à un, ce contrôleur IOC particulier et le processeur CPU sont reliés ensemble et tout autre dialogue sur les lignes d'adresse/données de bus de système (BUSXOO+ à BUSxî5+) est réservé à la demande particulière qui est en cours de traitement. Sur les bus de système A et B, un seul contrôleur IOC a donc une de ses bascules de liaison 446, 450, 454, mise à un et qui reste à un jusqu'à ce que la commande de fin-de-liaison soit envoyée par le processeur CPU et reçue par ce contrôleur IOC particulier. Comme un seul contrôleur IOC dans le système a une bascule de liaison mise à un, la commande de fin-de-liaison peut être transmise par la partie microprogrammée de processeur CPU sur les deux bus de système et un seul contrôleur IOC fait la remise à zéro en remettant sa bascule de liaison à zéro. On remarquera encore que le processeur CPU peut transmettr#e la commande de fin-de-liaison à n'importe quel moment et n'a pas besoin d'attendre la période de temps d'entrée de cycle du contrôleur IOC particulier qui est alors relié au processeur CPU. On voit donc que le temps d'entrée de cycle sert à éliminer des problèmes de prétention entre les contrôleurs IOC sur un bus de système particulier et une fois qu'un dialogue de bus est lancé entre un contrôleur OC et le processeur CPU, celui-ci peut avoir lieu indépen- damment du temps d'entrée de cycle du contrôleur TOC considéré.Comme on l'a expliqué plus haut en référence aux figures 16, 17 et 18, la séquence 'normale pour des demandes de DMA, de DMC et d'interruption est : pour le contrôleur IOC, de lancer une demande de bus pendant son temps d'entrée de cycle; pour le processeur CPU, de répondre par une commande de réponse à n'importe quel moment; cette commande étant suivie d'une commande de fin-de-liaison provenant du processeur CPU à n'importe quel moment. En outre, comme on l'a expliqué en référence à la figure 16, le processeur CPU peut déclencher une activité de contrôleur TOC en plaçant une commande de processeur CPU (CPCMD) sur les lignes de bus de système RDDT à n'importe quel moment et en plaçant le numéro de canal du contrôleur TOC particulier sur les lignes d'adresse/données de bus de système.Le terme a n'importe quel moment" utilisé ici signifie une période de temps où le bus de système n'est pas déjà utilisé par un autre contrôleur TOC relié au processeur CPU (c'est-à-dire, la période de temps pendant laquelle aucune bascule de liaison d'un contrôleur IOC n'est mise à un) sans tenir compte du temps d'entrée de cycle du contrôleur IOC considéré. On notera en outre que la séquence de dialogue de bus normale de demande de bus par le contrôleur IOC; suivie d'une commande de réponse provenant du processeur CPU; suivie d'une commande de fin-de-liaison provenant du processeur CPU, peut être arrêtée à n' importe quel point par une remise à zéro principale (signal PCLEAR) qui remet à zéro les bascules correspondantes et arrête la séquence de sorte qu'une nouvelle séquence peut être lancée. On va maintenant décrire en détail les circuits logiques du processeur CPU. La figure 42 représente les circuits logiques de mémoire de commande décrits plus haut en association avec le schéma fonctionnel de mémoire de commande de la figure 9, et la figure 43 représente les circuits logiques du processeur CPU décrits plus haut en association avec le schéma fonctionnel du processeur CPU de la figure 8. On va maintenant décrire en détail les circuits logiques de mémoire de commande, en se référant à la figure 42. Quand le système est initialisé, le registre d'adresse 1, 246-1, et le registre d'adresse 2, 246-2, sont remis à zéro, ce qui met les signaux de sortie d'adresse à 10 bits à zéro. Les signaux d'adresse de mémoire ROS à 10 bits SRADROO à RADRO9+) étant mis à zéro, l'emplacement zéro est lu dans ROS 1, 238-1, et dans ROS 2, 238-2, et il est chargé dans le registre local 242 au début du temps principal O. Le mot de micro-instruction de 48 bits contenu dans le registre local 242 est ensuite envoyé dans tout le processeur CPU. Deux bits dans le mot de micro-instruction lu en mémoire ROS commandent la sélection d'une des quatre entrées d'un multiplexeur générateur d'adresse l, 248-1, dont certaines des sorties sont connectées au registre d'adresse 1, 246-1, et dont les autres sorties sont connectées à un générateur d'adresse 2, 248-2. Les sorties du générateur d'adresse 2, 248-2, sont aussi connectées au registre d'adresse 2, 246-2. Les sorties des registres d'adresse 1 et 2, 246-1 et 246-2, étant déterminées par le mot de micro-instruction précédent, l'adresse de la micro-instruction suivante est présentée aux mémoires ROS 1 et 2, 238-1 et 238-2, et la micro-instruction suivante est lue et ensuite transférée dans le registre local 242 au début du temps principal O. De cette manière, en l'absence d'une interruption de matérial comme on l'a décrit plus haut, la micro-instruction présente détermine la micro-instruction suivante à lire en mémoire ROS. On va maintenant décrire plus en détail le circuit logique de génération d'adresse de mémoire ROS, et en particulier le fonctionnement des registres d'adresse 1 et 2, 246-1 et 246-2. Quand le système est initialisé, le signal PCLEAR- passe à UN binaire et, à son tour, comme on le verra plus loin, fait passer le signalfCDCL & à UN binaire et le signal PCPCLR- à ZERO binaire au début du temps principal 4. Quand le signal PCPCLR+ est à UN binaire à une entrée d'une porte NI 595, le signal de sortie de cette porte, RARCLRpasse à ZERO binaire qui remet à zéro le registre d'adresse 1, 246-1, en mettant les signaux RADROO+ à RADRO5+ des 6 bits de poids fort de l'adresse de mémoire ROS à 10 bits à zéro. Quand le signal PCPCLR- est à ZERO binaire à l'entrée de remise à zéro (R) du registre d'adresse 2, 246-2, les signaux RADER06+ à RADRO9+ des bits de poids faible de l'adresse de mémoire ROS à 10 bits sont remis à zéro, les 10 bits de l'adresse de mémoire ROS étant ainsi tous à zéro. Quand le signal KENROS- à l'entrée de validation de lecture (EN) est à ZERO binaire, la mémoire ROS 1, 238-1, adresse l'emplacement spécifié par l'adresse à 10 bits et place les signaux de sortie à 40 bits sur les lignes RROSOO+ à RROS23+ et RROS32+ à RROS47+. Quand les signaux KENROS- et PEEBBT+ aux entrées de validation de lecture (EN) sont à ZERO binaire, la mémoire ROS 2, 238-2, adresse l'emplacement spécifié par l'adresse à 10 bits et place les signaux de sortie de 8 bits de celui-ci sur les lignes de sortie RROS24+FM à RROS31+FM. On notera que la mémoire ROS 1, 238-1, se compose de 10 mémoires PROM programmables de 1024 emplacements par 4 bits et que la mémoire ROS 2, 238-2, et une mémoire PROM de chargement initial 240, se composent chacune de deux mémoires PROM de 1024 emplacements par 4 bits. Ces mémoires PROM de 1024 emplacements par 4 bits sont du type 82S137 fabriqué par Signetics Corporation, à Sunnyvale en Californie, qui est décrit dans l'ouvrage "Signetics Bipolar and MOS Memory Data Manual". Le mot de micro-instruction de 48bits lu en mémoire ROS 1 et ROS 2 est transféré de façon synchronisée dans le registre local 242 au début du temps principal O par le signal PTIMEO+.Les signaux de sortie du registre local 242, RDDTOO+ à RDDT47+, sont utilisés dans tout le processeur CPU pour commander le processeur central et ils sont également inversés par des inverseurs (non représentés) pour produire des signaux de commande RDDTOO- à RDDT47- qusld c'est nécessaire. Le générateur d'adresse de mémoire de commande 248 de la figure 9 est composé d'un multiplexeur générateur d'adresse 1, 248-1, et d'un multiplexeur générateur d'adresse 2, 248-2, sur la figure 42. Le multiplexeur générateur d'adresse 1, 248-1, qui se compose de dix.multiplexeurs de 4 à 1 détermine l'adresse de la micro-instruction suivante à extraire de la mémoire ROS 238 selon les types de branchement spécifiés par les bits 36 et 37 du mot de microinstruction présent.La figure 35D montre que si les deux signaux d'entrée de sélection (SEL) RDDT37+ et RDDT36+ sont à ZERO binaire, le type de branchement spécifié dans la micro-instruction présente est un branchement inconditionnel et l'adresse de mémoire ROS à 10 bits de la micro-instruction suivante est spécifiée par les signaux d'entrée IO, RDDT38+ à RDDT47. Si les bits 36 et 37 de la micro-instruction présente spécifient une valeur 01 binaire, un branchement de contrôle à deux voies est alors spécifié et les entrées Il sont sélectionnées en utilisant : quatre bits du registre d'adresse 1, 246-1, c'est-à-dire les signaux RADROO+ à RADRO3+; cinq bits de la micro-instruction présente, c'est- à-dire les signaux RDDT42+ à RDDT46+; et le bit du réseau de branchement sur contrôle 254 (voir figure 9), c'est-à- dire, le signal RASBT9+.Si les bits 36 et 37 de la microinstruction présente spécifient une valeur 10 binaire, le multiplexeur générateur d'adresse 1 sélectionne les entrées I2 de branchement de contrôle multiple, et il utilise : 6 bits de la micro-instruction présente, c'est-à-dire, les signaux RDDT38+, RDDT39+ et RDDT44+ à RDDT47+; et 4 bits d'un réseau de branchement principal 256 (voir figure 9), c'est-à-dire les signaux RMGBT2+ à RAMBTS+. Si les bits 36 et 37 de la micro-instruction présente spécifient un branchement de retour d'interruption de matériel, les entrées 13 sont alors utilisées et l'adresse à 10 bits est déterminée par les signaux RITROO+ à RIT09+ provenant du registre de retour d'interruption de matériel 252.Les signaux de sortie du multiplexeur générateur d'adresse 1, 248-1, (RADMOO+ à RADMO9+) sont valides tant que le signal d'entrée (F) de commande de sortie, KENRAM-, reste à ZERO binaire. Le multiplexeur g8n8tateur d'adresse 2, 248-2, est utilisé pour sélectionner les quatre bits de poids faible de l'adresse de mémoire ROS à 10 bits provenant des sorties du multiplexeur générateur d'adresse 1, 248-1, ou du codeur d'interruption de matériel 250-2. S'il n'y a pas d'interruptions de matériel en attente ou si une ou plusieurs interruptions sont en attente mais que des interruptions de matériel sont interdites, le signal PHINT$+ est à ZERO binaire et les signaux d'entrée IO, RADMO6+ à RADMO9s, sont sélectionnés. Si une ou plusieurs interruptions de matériel sont en attente et que des interruptions de matériel sont autorisées, le signal PHINTL+ est à UN binaire et les entrées Il à UN binaire et les signaux PHINT7+ à PHINT9+ sont sélectionnés et les quatre bits de poids faible de l'adresse de mémoire ROS à 10 bits sont déterminés par le codage de l'interruption de matériel en attente. Les signaux de sortie du multiplexeur générateur d'adresse 2, 248-2, RADNO6+ à RADNO9+, sont transférés de façon synchronisée dans le registre d'adresse 2, 246-2, au début du temps principal 2 quand le signal PTIME2+ passe de ZERO à UN binaire. Pareillement, le registre d'adresse 1, 246-1, contient les six bits de poids fort de l'adresse de mémoire ROS à 10 bits comme elle est déterminée par les signaux de sortie du multiplexeur générateur d'adresse 1, 248-1. L'adresse de mémoire ROS à 10 bits transférée de façon synchronisée dans les registres d'adresse 1 et 2 au début du temps principal 2 est alors utilisée pour adresser les mémoires ROS 1 et ROS 2 pour lire un mot de micro-instruction de 48 bits qui est ensuite transféré de façon synchronisée dans le registre local 242 au début du temps principal O.De cette manière, la micro-instruction présente détermine l'adresse de la micro-instruction suivante à lire en présence d'une interruption de matériel ou d'une interruption de logiciel. On va maintenant décrire le circuit logique d'interruption de matériel. Le traitement des interruptions de matériel et de logiciel va être décrit en détail en référence à la figure 42. Une fois pendant chaque cycle de processeur CPU, à la fin d'un temps principal 4, le registre de demande d'interruption 250-1 est synchronisé par le signal PTTME4-. Les entrées de données du registre de demande dtinterruption 250-1 sont connectées respectivement à : bus de système B de demande d'interruption (signal PTNTR2- > , bus de système A de demande d'interruption (signal PINTR1-), bus de système B de demande de données DMC (signal PDMCR2-), bus de système A de demande de données DMC (signal PDMCR1-), bus de système A de demande de données DMA (signal PDMAR1-), bus de système B de demande de données DMA (signal PDMAR2-), dépassement de temps de rafraîchissement de mémoire principale (signal PHMRFL-), et cycle de lecture de mémoire principale (signal PMRCYC-).Les signaux de sortie de demande de données DMA et DMC et de dépassement de temps de rafraîchissement de mémoire principale du registre de demande d'interruption 250-1 sont envoyés aux entrées d'un codeur d'interruption de matériel 250-2. Le signal de sortie d'une bascule d'erreur de parité 586, PhfflPER-, et le signal de sortie d'une bascule de mémoire non existante 592, PHNDXM-, sont également envoyés aux entrées du codeur d'interruption de matériel 250-2. Le codeur d'interruption de matériel 250-2 est un codeur de priorité de 8 lignes à 3 lignes du type SN74148 fabriqué par Texas Instruments Inc., à Dallas au Texas. Le codeur d'interruption de matériel 250-2 code les signaux d'entrée des 8 lignes en signaux de sortie des 3 lignes, c'est-à-dire, les signaux PHINT7+ à PHINT9+, chaque fois que le signal de sortie de validation (EN > est à ZERO binaire. Le signal de sortie I, PHINTP+, du codeur d'interruption de matériel 250-2 est à UN binaire chaque fois qu'une des huit entrées de celui-ci est à ZERO binaire, ce qui indique qu'il y a une interruption de matériel en attente. S'il y a une interruption de matériel en attente, le signal de sortie (I) du codeur d'interruption de matériel 250-2, PHINTP+, est à UN binaire, ce qui valide partiellement une porte ET 591. Si le bit 35 du mot de micro-instruction présent est à UN binaire, ce qui valide des interruptions de matériel (voir figure 35C), le signal RDDT35+ est a UN binaire, celui-ci validant complètement la porte ET 591 et met le signal de sortie PHTNTL+ à UN binaire.Le signal PHINTL+ étant à UN binaire, une porte ET 593 est en consé séquence validée partiellement, au d#but du temps principal 2 le signal PTIME2+ passe à UN binaire, ce qui valide complètement la porte ET 593 en faisant passer le signal de sortie de celle-ci, PHINTC+, à UN binaire. Quand une entrée d'une porte NI 595 est à UN binaire, le signal de sortie de celle-ci, RARCLR-, passe à ZERO binaire en remettant à zéro le registre d'adresse 1, 246-1, et ainsi, les six bits de poids fort de l'adresSe de mémoire ROS à 10 bits sont remis à zéro.Quand le signal de sortie de la porte ET 591, PHINTL+ est à UN binaire, le multiplexeur générateur d'adresse 2, 248-2, sélectionne les entrées Il et code les trois bits de poids faible de l'adresse de mémoire ROS à 10 bits, l'adresse correspondant au numéro d'entrée de l'interruption de priorité la plus grande en attente à l'entrée du codeur d'interruption de matériel 250-2. Quand le quatrième bit de poids faible de l'adresse de mémoire ROS à 10 bits est mis à UN binaire par un signal à UN binaire apparaissant à la position de bit zéro d'entrée Il du multiplexeur générateur d'adresse 2, 248-2, on voit que si une interruption de matériel est en attente et que les interruptions de matériel sont validées, la combinaison des signaux de sortie des registres générateurs d'adresse 1 et 2 est une adresse de mémoire ROS à 10 bits dans la gamme de 8 à 15. On voit donc que si une interruption de matériel est en attente et que les interruptions de matériel sont validées, les signaux de sortie du codeur d'interruption de matériel 250-2 remettent à zéro les six bits de poids fort de l'dresse de mémoire ROS à 10 bits en remettant à zéro le registre d'adresse 1, 246-1, et en sélectionnant la priorité codée de 1'interruption de matériel par 1' intermédiaire du multiplexeur générateur d'adresse 2, 248-2, et du registre d'adresse 2, 246-2.En utilisant ce procédé, une adresse de mémoire ROS à 10 bits de la micro-routine codée pour traiter l'interruption de matériel particulière en attente est engendrée et la micro-routine est exécutée. c -La fonction du registre de retour d'interruption de matériel 252 est de conserver l'adresse de mémoire ROS à 10 bits de la micro-instruction suivante avant de mettre en oeuvre une micro-routine d'interruption de matériel. Chaque fois qu'une micro-routine d'interruption de matériel est mise en oeuvre, le signal de sortie de la porte ET 593, PHINTC+, passe donc de ZERO à UN binaire et le registre de retour d'interruption de matériel 252 est synchronisé, ce qui permet de conserver l'adresse de mémoire ROS à 10 bits de ce qui aurait été la micro-instruction suivante à utiliser en mémoire ROS. Puisque le signal PHINTC passe de l'état ZERO à l'état UN binaire, une seule fois par interruption de matériel, et ensuite uniquement au début de la micro-routine d'interruption de matériel, le registre de retour d'interruption de matériel 252 conserve le contenu de l'adresse de mémoire ROS à 10 bits de la micro-instruction suivante qui aurait été lue en mémoire ROS s'il n'y avait pas eu d'interruption de matériel pendant tout le temps du traitement de la micro routine associée à l'interruption de matériel.On notera que les interruptions de matériel sont invalidées pendant le traitement de la microroutine d'interruption de matériel (c'est-à-dire quel les interruptions de matériel ne sont pas emboîtées). La dernière instruction de la micro-routine pour le traitement d'une interruption de matériel effectue un codage de branchement de retour d'interruption de matériel sur les bits 36 et 37 du mot de micro-instruction, ce qui fait passer les signaux RDDT36+ et RDDT37+ à UN binaire, en sélectionnant les entrées I3 du multiplexeur générateur d'adresse 1, 248-1, ce qui entraîne que l'adresse de mémoire ROS à 10 bits de la micro-instruction suivante est prise dans le registre de retour d'interruption de matériel 252 qui renvoie effectivement la commande au mot de micro-instruction adressé par l'adresse de mémoire ROS à 10 bits produite par le multiplexeur générateur d'adresse 1, 248-1, juste avant l'apparition de l'interruption de matériel, comme on l'a expliqué plus haut en référence à la figure 34. L'examen de la figure 42 montre que l'adresse de la micro-instruction suivante est développée pendant l'exécution de la micro-instruction présente. Ainsi, si au début (avant le temps principal 2) de la micro-instruction présente, un signal d'interruption de matériel à une des entrées du codeur d'interruption de matériel 250-2 est à ZERO binaire, et si les interruptions de matériel sont validées dans la micro-instruction présente (bits 35 à UN binaire, c'est-à-dire, le signal RDDT35+)# la micro-instruction suivante extraite est la première micro-instruction de la micro-routine pour prendre en charge l'interruption de matériel de priorité la plus élevée en attente. Si les interruptions de matériel sont invalidées (bit 35 à ZERO) par la micro-instruction présente, une interruption de matériel ne se produit pas à la fin de la micro-instruction présente et la micro-instruction suivante est la microinstruction adressée par la zone d'adressage de mémoire ROS de la micro-instruction présente. Comme le bit 35 de micro-instruction commande ce qui se passe à la fin d'exécution de la micro-instruction présente, les micro-routines de prise en charge d'interruption de matériel sont microprogrammées de sorte que des interruptions de matériel sont validées pendant l'exécution de la dernière micro-instruction de la micro-routine et la zone d'adressage de mémoire ROS (voir figure 35D) spécifie que l'adresse de la micro-instruction suivante doit être prise dans le registre de retour d'interruption de matériel 252 qui renvoie la commande au microprogramme initial interrompu (si aucune interruption de matériel n'est pas en attente).Si une interruption de matériel est en attente pendant l'exécution de la dernière micro-instruction de la première micro-routine de prise en charge d'interruption de matériel, le multiplexeur générateur d'adresse 1, 248-1, sélectionne l'entrée I3 (c'est-à-dire, l'adresse mémorisée dans le registre'de retour d'interruption de materiez 252) et met ses signaux de sortie Q (signaux RADMOO+ a RADMO9+) au même état binaire que l'entrée I3. Les signaux de sortie du multiplexeur générateur d'adresse 1, 248-1, sont ensuite remis à l'état initial dans le registre de retour d'interruption de matériel 252 au temps principal 2 quand le signal PHINTC+ passe de l'état ZERO à UN binaire.En outre, le multiplexeur générateur d'adresse 2, 248-2, sélectionne-la seconde adresse d'interruption de matériel à ses entrées I1 et, au temps principal 2, le registre d'adresse 1, 246-1, est remis à zéro par le signal RARCLR- et le registre d'adresse 2, 246-2, a son contenu égal à la seconde adresse d'interruption de matériel. Au temps principal 2 de la microinstruction présente, qui est le temps d1exécution de la dernière micro-instruction d'une première micro-routine de prise en charge d'interruption. de matériel, l'adresse contenue dans les registres d'adresse 1 et 2, 246-1 et 246-2, est l'adresse de la première micro-instruction d'une seconde micro-routine de prise en charge d'interruption de matériel. Si1 l'on considère à nouveau la figure 42, on peut voir qu'à la fin de la micro-routine de prise en charge d'interruption de matériel, s'il n'y a pas d'autres interruptions de matériel en attente, la commande revient à la microinstruction dont l'adresse est mémorisée dans le registre de retour d'interruption de matériel 252, ce qui redonne la commande au microprogramme initial au point od il a été interrompu par la première interruption de matériel.On voit donc que des interruptions de matériel côte-à-côte (c'està-dire, consécutives) peuvent être prises en charge sans qu'il y ait retour au microprogranme initial interrompu entre l'exécution de la première micro-routine et l'exécution de la seconde micro-routine de prise en charge d'interruption de matériel. Après avoir décrit comment une demande de données DMA ou une demande de données DMC sur un bus de,système A ou B provoque une interruption de matériel aux emplacements de mémoire ROS 12 à 15 et met en oeuvre la micro-routine de prise en charge d'interruption de matériel associée, on va maintenant décrire les autres circuits logiques d'interruption de matériel de la figure 42. On va d'abord considérer le circuit de détermination de dépassement de temps de rafraichissement de mémoire principale. Des bascules 572 et 574 sont utilisées pour qu'un signal de rafraîchissement de mémoire principale PHMRFLsoit engendré toutes les 8 à 15 microsecondes. Comme il a été décrit plus haut en référence à la figure 14, le signal d'horloge BCNTL8+ passe de l'état ZERO binaire à l'état UN binaire toutes les quatre microsecondes en faisant ainsi changer l'état des bascules 572 et 574. La bascule de ra fraîchissement à 8 microsecondes 572 changeant d'état toutes les quatre microsecondes, le signal de sortie de celle-ci, PMRFTM+ est à ZERO binaire pendant quatre microsecondes, celui-ci étant suivi par un signal à UN binaire pendant les quatre microsecondes suivantes qui terminent un cycle de huit microsecondes.En reliant en cascade la sortie de la bascule de rafraîchissement à 8 microsecondes 572 qui émet le signal PMRFTM+ à l'entrée de données (D) de la bascule de rafraîchissement à 16 microsecondes 574, le signal de sortie de la bascule 574, PHMRFL- est à ZERO binaire pendant huit microsecondes, celui-ci étant suivi par un signal à UN binaire pendant les huit microsecondes suivantes qui terminent.un cycle de 16 microsecondes.Quand le signal de sortie de la bascule de rafraîcliissement à 16 microsecondes 574 est à ZERO binaire, le signal de sortie P#!RFH- du registre de demande d'interruption 250-1 est à ZERO binaire et entraîne le codage de 101 binaire sur les lignes de sortie du codeur d'interruption de matériel 250-2, PHINT7+ à PHINT9+, qui ont pour effet, quand les interruptions de matériel sont validées, que le multiplexeur générateur d'adresse 2 248-2 effectue un branchement à l'emplacement 10 de mémoire ROS où commence la micro-routine de dépassement de temps de rafraîchissement de mémoire principale. Si l'on considère à nouveau les bascules 572 et 574, on voit que les deux bascules sont remises à zéro et que le signal de sortie d'une porte NI 580, PM SHest à ZERO binaire. Le signal PIEFSH- en provenance du décodeur de sous-commande 244-2 (voir figure 43) est mis à UN binaire si les bits 32 à 34 du mot de micro-instruction sont égaux à 001, ce qui met les signaux RDDT32+ et RDDT33+ à ZERO binaire et le signal RDDT34+ à UN. Le signal PMRFSHest inversé par un inverseur 576 qui met le signal PMRFSH+ à UN binaire chaque fois que le signal d'entrée est à ZERO binaire. Quand le signal PHRFSH est à UN binaire à l'entrée de la porte NI 580, le signal de sortie de celle-ci, PMFRSH-, est à ZERO binaire qui remet à zéro la bascule à 8 microsecondes 572 et la bascule à 16 microsecondes 574 par l'intermédiaire de leurs entrées de remise à zéro (R). Le signal PMFRSH- de rafraîchissement de mémoire principale est également transféré jusqu'à la mémoire principale par l'intermédiaire du bus de système B. Dans l'autre cas, le signal PMFRSH- est -à ZERO chaque fois que le signal XEFRSH- est à ZERO binaire et qu'il est inversé par un inverseur 578 qui met le signal KEFRSH+ à UN binaire à la seconde entrée de la porte NI 580. En considérant l'interaction des bascules 572 et 574 avec les circuits logiques d'interruption de matériel, on voit que le signal de sortie de la bascule de rafrat- chissement à 16 microsecondes 574, PHMRFL-, passe à ZERO binaire 8 microsecondes après qu'un signal de rafrat- chissement de mémoire (PMFRSH--) ait été envoyé à la mémoire principale par l'intermédiaire du bus de système B. Le signal d'interruption de rafraîchissement PHMRFL~ reste à ZERO binaire pendant 8 microsecondes ou jusqu'à ce qu'il soit remis à zéro par un signal de rafratchis sement suivant (PMFRSH- passant à ZERO binaire5. Le signal PHMRFL- à ZERO binaire fait passer le signal PHt4RFH- à 'ZERO binaire et, si les interruptions de matériel sont permises, il entraîne le branchement microprogrammé à la micro-routine qui permet d'envoyer un signal de ra fraîchissement de mémoire (PMFRSH-) à la mémoire principale par l'intermédiaire du bus de système B.Comme le si#gnal de sortie de la bascule à 16 microsecondes 574, PH6MRFL- passe à ZERO binaire 8 microsecondes après le rafrat- chissement de mémoire précédent, il est important que la patine microprogrammée de processeur CPU soit codée de sorte que les interruptions de matériel ne soient pas invalidées pendant une période de plus de 7 microsecondes, de façon à maintenir le temps de rafraîchissement de mémoire principale convenable de 15 microsecondes et à ne pas perdre d'informations de mémoire principale. Si la partie microprogrammée de processeur CPU n'invalide pas les interruptions de matériel, le premier rafraichissement de mémoire se produit au bout de 8 microsecondes, entraînant un branchement microprogrammé de processeur CPU à la micro-routine de rafraîchissement de mémoire principale qui permet d'envoyer une commande de rafraîchissement à la mémoire principale sur le bus de système B par l'intermédiaire du signal P.zERSH~ qui remet à zéro les bascules de rafraîchissement 572 et 574 et entraîne l'envoi d'une seconde interruption de rafraichissement de mémoire principale 8 microsecondes plus tard.Comme les commandes de rafraîchissement de mémoire principale peuvent également être codées pendant le traitement d'instructions de programme, chaque fois que le microprogrammeur de processeur CPU détermine que la mémoire principale ne sera pas utilisée pendant les deux cycles de processeur CPU suivants, tous les signaux de rafraîchissement ne sont pas engendrés à la fin de la période de temps de rafraîchissement de mémoire principale (c'est-à-dire, les bascules 572 et 5743. La fonction des bascules de rafraîchis- sement 572 et 574 est d'assurer qu'au moins un signal de rafraichissewent de mémoire est envoyé à la mémoire principale une fois toutes les 15 microsecondes, mais dans la présente réalisation, la partie microprogrammée de processeur CPU est codée de sorte que pendant le traitement des instructions de programme, si l'on sait que la mémoire principale ne sera pas utilisée pendant les deux cycles de processeur CPU suivants, les commandes de rafraîchissement sont codées dans les micro-instructions de microprogrammes de processeur CPU pour engendrer des signaux de rafraîchissement de mémoire principale plus fréquemment qu'une fois toutes les 15 microsecondes. On va maintenant décrire le circuit logique d'erreur de parité de mémoire principale. Pendant chaque opération de lecture de mémoire principale, la mémoire engendre deux bits de parité par mot de 16 bits (1 bit de parité par multiplet de 8 bits) lu en mémoire et compare la parité engendrée à celle lue en mémoire. Si les bits de parité engendrés ne correspondent pas aux bits de parité lus en mémoire, la mémoire principale engendre un signal d'erreur de parité qui est envoyé par l'intermédiaire du bus de système B au processeur CPU, sur la ligne MEMPER-. Si l'on considère à nouveau la figure 42, on voit que la présence d'une erreur de parité détectée par la mémoire principale entraîne la mise à un d'une bascule d'erreur de parité 586, qui provoque à son tour une interruption de matériel. Si la mémoire principale détecte une erreur de parité pendant une opération de lecture de mémoire, la mémoire principale met le signal MEMPER- à ZERO binaire sur le bus de système B. Quand le signal MEMPER- est à ZERO binaire, le signal de sortie d'un inverseur 596, PMMPAR+, est à UN binaire, celui-ci étant inversé par un inverseur 598 et envoyé au bus de système A comme signal PMMPAR-.Si l'opération de lecture de mémoire a été exécutée en réponse à une demande de DMA, ces signaux d'erreur de parité, c'està-dire le signal PMMPAR- sur le bus de système A et le signal MEMPER- sur le bus de système B, sont tr#nsférés de façon synchronisée dans le registre d'état du contrôleur IOC qui fait une demande de DMA de sorte que l'erreur peut être signalée au programme de logiciel quand l'état du transfert d'entrée-sortie est demandé. Le signal d'erreur de parité de mémoire principale PMMPAR+ à l'entrée de données (D) de la bascule d'erreur deparité 586 fait changer l'état de la bascule quand un signal d'horloge PARFMD- passe de l'état ZERO binaire à l'état UN binaire. Le passage du signal UN binaire à l'entrée de données de la bascule d'erreur de parité 586 produit un signal de sortie PHMPER- qui passe à ZERO binaire et, quand les interruptions de matériel sont validées, provoque une interruption de matériel. Le signal d'horloge PARFMD-, qui est le signal de sortie d'une porte NON-ET 582, passe de ZERO binaire à UN binaire au début du temps principal 4 quand le signal PTIME4+ passe à UN binaire si le signal PBSFMC- est à ZERO binaire. Le signal PBSFMD- est à ZERO binaire pendant le second cycle d'une opération de lecture de mémoire principale à deux cycles, comme le montre la figure 19. Le signal PBSFMD- est utilisé par la mémoire principale pour valider les données lues en mémoire principale sur le bus de système B. La bascule d'erreur de parité 586 reste à un, ce gui correspond à une demande d'interruption de matériel, jusqu'à ce qu'elle soit remise à zéro par un signal d'initialisation de processeur CPU qui fait passer le signal PCPCLR- à ZERO binaire à une entrée de la porte NI 584, faisant passer le signal dê#sortie de cette porte, PARCLR-, à ShRO binaire uai remet à zéro la bascule 586. Alternativement, la bascule d'erreur de parité 586 est remise à zéro par une opération de lecture de mémoire principale suivante. On va maintenant décrire le circuit logique de détection de mémoire non existante. Comme on l'a mentionné plus haut, le processeur CPU du système contrôle chaque adresse de mémoire principale quand elle est présentée à la mémoire principale pour déterminer si l'emplacement adressé est physiquement présent dans une des plaquettes de mémoire principale connectées au bus de système B. Si l'on se réfère encore à la figure 42, on voit qu'avant que le système commence à fonctionner, l'adresse du dernier emplacement (adresse la plus élevée) physiquement présente en mémoire principale est mise dans un commutateur de capacité de mémoire 588 par un codage binaire des cinq bits de poids fort de l'adresse à 16 bits. Un comparateur de mémoire 590, du type SN74S85 fabriqué par Texas Instruments Inc. à Dallas au Texas, compare les cinq bits de poids fort de l'adresse provenant du bus interne 260 (signaux PBUSO0+ à PBUSO4+) et met le signal de sortie PBUSLG+ à UN binaire si l'adresse sur le bus est supérieure à l'adresse du dernier emplacement physiquement présente dans le système. Cette comparaison du contenu du bus interne 260 à l'adresse du dernier emplacement physiquementprésent en mémoire est faite en permanence mais le signal de sortie de ce comparateur, PBUSLG+, n'est transférédans.la bascule de mémoire non existante 592 que lorsque le-signal PMEMGO+ passe de l'état ZERO binaire à l'état UN binaire. Le signal d'horloge pMEMGos passe de ZERO binaire à UN binaire au début du temps principal 3 (voir figure 19) quand le bit de mot de micro-instruction 23 est à UN binaire (voir figure 35C). Quand le signal PMEMGO+ est à UN binaire, le contenu du bus interne 260 correspond à l'adresse d'un emplacement de mémoire et l'entrée de données (D) de la bascule de mémoire non existante 592 indique si oui ou non l'emplacement adressé est physicllement présent en mémoire principale.Si l'emplacement adressé n'est pas physiquement présent en mémoire principale, le signal PBUSLG+ à UN binaire est envoyé dans la bascule de mémoire non existante 592, ce qui fait passer le signal de sortie Q de cette bascule à UN binaire, c'est-à-dire le signal PHNDXM+, et le signal de sortie Q de celle-ci, PHNDXM-, à ZERO binaire. ta mise à un du signal PHNDXM+ fait passer le signal de sortie d'une porte NON-ET 594, MEMPER-, à ZERO binaire ainsi que le signal PMMPAR- par l'intermédiaire d'inverseurs 596 et 598. On voit donc que la détection d'un essai d'adressage d'un emplacement de mémoire non existant a pour effet de faire passer les signaux d'erreur de parité de mémoire MEMPER- et PMMPAR- à ZERO binaire qui signalent aux contrôleurs IOC sur les bus de système A et B qu'un emplacement de mémoire n#on existant a été adressé. Les contrôleurs IOC qui font une demande d'accès à la mémoire conservent l'état de ces lignes d'erreur dans leur registre d'état pour l'indiquer ultérieurement au logiciel. La mise à un de la bascule de mémoire non existante 592 fait passer le signal PHNDXM- à ZERO binaire à entrée de la plus grande priorité du codeur d'interruption de matériel 250-2 qui, lorsque les interruptions sont permises, provoque la génération d'une interruption de matériel de mémoire non existante. Le traitement de l'interruption de matériel de mémoire non existante permet à la partie microprogrammée de processeur CPU d'effectuer un branchement à l'emplacement 8 de mémoire ROS et de traiter l'interruption de matériel.La micro-routine de mémoire non existante exécute une opération de rafraîchissement de mémoire, en utilisant l'adresse de mémoire principale zéro pour s'assurer qu'il n'y a pas d'erreur de mémoire non existante qui suit, celle-ci faisant passer le signal PBUSLG+ à ZERO binaire et remettant ainsi à zéro la bascule de mémoire non existante 592 et annulant l'interruption de matériel de mémoire non existante en attente. On notera, pour terminer la description du circuit logique de détection de mémoire non existante, que la détection d'un essai d'accès à un emplacement de mémoire non existant a pour effet de mettre la bascule de mémoire non existante 592 à un, ainsi que la bascule d'erreur de parité 586 par l'intermédiaire du signal de sortie, PMMPAR+, de l'inverseur 596. Bien que la mise à un de la bascule de mémoire non existante 592 entraîne la mise à un de la bascule d'erreur de parité 586, une seule intertuption de matériel est traitée et c'est l'interruption de matériel de mémoire non existante qui a la plus-grande priorité par rapport à une interruption de matériel d'erreur de parité. La priorité d'interruption de matériel est déduite de l'examen des entrées du codeur d'interruption de matériel 250-2. L'interruption de matériel d'erreur de parité de mémoire ne se produit pas car l'opération de rafraîchisse- ment de mémoire principale exécutée dans la micro-routine d'interruption de matériel de mémoire non existante remet à zéro les deux bascules de mémoire non existante 592 et d'erreur de parité 586. Après la micro-routine d'interruption de matériel de mémoire non existante, le signal PHMPERest à UN binaire et aucune interruption de matériel d'erreur de parité de mémoire n'est en attente. Si une :erreur. d'adresse de mémoire non existante ou de parité de mémoire est détectée pendant un transfert de données DNA ou DMC, le signal PTIOGO- est remis à ZERO binaire pendant le cycle de processeur CPU (second cycle) qui suit le cycle pendant lequel le signal de parcours de mémoire est envoyé à la mémoire principale (voir figure 19). La remise à zéro du signal PTIOGO- fait passer le signal de sortie de la porte NI 584,# PARCLR-, à ZERO binaire, ce qui remet la bascule de mémoire non existante 592 et la bascule d'erreur de parité 586 à zéro avant que les interruptions de matériel soient validées par la partie microprogrammée de processeur CPU, en empêchant ainsi les interruptions de matériel associées. La remise à zéro des bascules 592 et 586 masqué les interruptions de matériel potentielles associées aux transferts de données en direction/en provenance des contrôleurs IOC et les empêche d'interrompre le déroulement d'exécution des microprogrammes de processeur CPU.Ce circuit permet aussi d'être assuré que l'interruption de matériel de mémoire non existante ou d'erreur de parité de mémoire est due à un accès à la mémoire commandé par la partie microprogrammée de processeur CPU pendant le déroulement de l'exécution d'une instruction de programme et qu'elle n'est pas due à un transfert de données DMA ou DMC, qui est également commandé par la partie microprogrammée de processeur CPU. Bien que les lignes d'erreur de mémoire PMMPARet MEMPER- sont positionnées quand le processeur CPU détecte n'importe quel essai d'accès à la mémoire à un emplacement non existant, dans le cas d'un transfert de données DMC pour l'écriture de données en mémoire, le positionnement de la ligne d'erreur de mémoire se produit uniquement après que les contrôleurs IOC de DMC ont arrêté de considérer la ligne d'erreur. Sur la figure 21A, la ligne d'erreur de mémoire est positionnée, si une erreur se produit, uniquement après que la commande de fin-de-liaison (EOFLK) ait supprimé la liaison processeur CPU-contrôleur TOC.Les contrôleurs IOC ne contrôlent la ligne d'erreur que .lorsque le contrôleur IOC est relié au processeur CPU, pour s'assurer qu'aucun signal d'erreur n'est dirigé vers ce contrôleur IOC, et une erreur de mémoire non existante ne serait donc pas visible par un contrôleur IOC de DMC pendant un cycle de transfert de données d'entrée. Pour s'assurer que les erreurs de mémoire non existante ne restent pas non détectées, la borne supérieure (adresse la plus élevée) du bloc à transférer est contrôlée pendant l'exécution de l'instruction de programme IOLD avant que le transfert de données DMC soit commencé (voir figure 29 et la description qui s'y rapporte). On notera que ce contrôle spécial n'a besoin d'être exécuté que pour des opérations d'entrée de DMC (écriture en mémoire). On notera en outre que pendant des opérations d'écriture de mémoire, la ligne erreur de mémoire n'eut positionnée que pour des erreurs de mémoire non existante#, aucun contrôle de parité n'étant fait pendant une écriture de mémoire.Pour des opérations de sortie de DMC et des opérations d'entrée et de sortie de DMA, la ligne d'erreur de mémoire est positionnée avant la fin-de-liaison, tandis que le contrôleur IOC contrôle encore la ligne d'erreur de mémoire, de sorte qu'aucun contrôle spécial n'est nécessaire dans ces cas. On va maintenant décrire les circuits logiques d'interruption de logiciel. Le traitement des interruptions de logiciel a èté décrit plus haut en référence à la figure 34. On va considurer maintenant la figure 42 pour décrire en détail les circuits logiques d'interruption de logiciel. Un codeur d'interruption de logiciel 257-1, du type SN7414-8 fabriqué par Texas Instruments Inc., a ses entrées qui sont à ZERO binaire, en considérant les interruptions de logiciel de la plus grande priorité à la plus petite priorité, selon l'état de la condition d'interruption de logiciel associée. Un signal PFITRP- est à ZERO binaire si un dépassement de capacité de registre est détecté et le bit correspondant est mis à un dans le registre de masque (M1) (voir figure 4). Un signal PFAILF- est à ZERO binaire si un défaut d'alimentation imminent est détecté. Un signal PFINT1- est à ZERO binaire si un contrôleur IOC sur le bus de système A fait une demande d'interruption et le signal PFINT2- est à ZERO binaire si un contrôleur IOC sur le bus de système B fait une demande d'interruption. Un signal PFTT#L- est à ZERO binaire si un contrôle de temps est arrivé à expiration. Les signaux d'entrée du codeur d'interruption de logiciel 257-1 sont codés en binaire aux trois sorties de celui-ci qui engendrent les signaux PFINT3+ à PFINTS+. Le signal de sortie de validation (I) PFINTP- du codeur d'in 'terruption de logiciel 257-1 est à ZERO binaire si n'importe quelle entrée de celui-ci est à ZERO binaire, ce qui indique qu'au moins une interruption de logiciel est en attente.Les quatre signaux de sortie du codeur d'interruption de logiciel 25i 1 sont envoyés aux quatre entrées 13 du multiplexeur de branchement principal 256-1 'et sont transférés aux sorties de celui-ci pour donner les signaux RAMBT2+ à RA2BT5+ quand les signaux de sélection de multiplexeur RDDT41+ à RDDT43+ sont égaux à 011 binaire (voir figure 35D). Ces quatre signaux de sortie du multiplexeur de branchement principal 256-1 sont à leur tour envoyés à quatre des dix entrées des entrées 12 du multiplexeur générateur d'adresse 1 248-1, ce qui permet à la partie microprogrammée de processeur CPU de contrôler la présence d'une interruptionnde logiciel en attente en spécifiant le branchement de contrôle multiple approprié d#ans la micro-instruction de microprogramme. Comme on l'a vu en référence à la figure 34, la partie micropro gammée de processeur CPU est codéerde sorte que la présence d'une interruption de logiciel en attente est contrôlée au début de l'exécution de chaque instruction de programme, ce# qui permet à la partie microprogrammée de processeur CPU d'effectuer un branchement à la micro-routine codée pour traiter l'interruption de logiciel particulière. On va maintenant décrire le circuit logique de mémoire PROM de chargement initial. Comme on l'a décrit plus haut à propos de la séquence de mise en route et d'initialisation du système, en référence à la figure 16, le système a la possibilité de lire un programme de logiciel mémorisé dans une mémoire PROM de chargement initial et de le charger en mémoire principale pour son exécution à partir de la mémoire principale. Si l'on se réfère maintenant à la figure 42, on voit que 8 bits du mot de micro-instruction de processeur CPU de 48 bits sont contenus dans des mémoires PROM parallèles. Spécifiquement, les bits 24 à 31 du mot de micro-instruction de 48 bits peuvent être lus dans la mémoire PROM de char gement initial 240 ou dans la mémoire ROS 2, 238-2.Comme on l'a décrit plus haut, ces huit bits sont normalement lus dans la mémoire ROS 2, 238-2, quand la mémoire ROS 2 eat validée par les deux signaux KENROS- et PENBBT+ à ZERO binaire. Alternativement, pendant une mise en route de système, le signal PENBBT- à l'entrée de l'inverseur 589 peut être remis à ZERO binaire par un codage de 0010 binaire dans les positions de bits 24 à 27 du mot de micro-instruction et de ZERO binaire dans la position de bit 32 (voir figure 35C et 37E). Les bits 24 à 27 du mot de microinstruction et le bit 32 sont décodés par un décodeur qui est validé par le signal d'horloge PTIMEO à l'entrée de validation inversée. Le signal PENBBT- est donc à ZERO binaire du début du temps principal 1 à la fin du temps principal 4. Si la micro-instruction de microprogramme indique que la mémoire PROM de chargement initial doit être lue, le signal PENDBT- étant à ZERO binaire valide partiellement la mémoire PROM 240 et, s'il n'y a pas d'opération de remise à zéro en cours, le signal PCPCLR+ est aussi à ZERO binaire, ce qui valide complètement la mémoire PROM 240 en permettant aux 8 bits de celle-ci, c' est-à-dire, les signaux RROS24+BT à RROS31+BT d'être engendrés en sortie. Quand le signal PENBBT- est à ZERO binaire, le signai à la sortie de 1'in- verseur 589 est à- UN binaire, ce qui invalide la mémoire ROS 2, 238-2, en interdisant la lecture de données dans celle-ci.Les signaux de sortie à trois états de la mémoire PROM 240 et de la mémoire ROS 2, 238-2, sont combinés selon une fonction logique OU dans un circuit approprié au point 599 pour produire les signaux RROS24+ à RROS31+ qui sont transférés dans le registre local 242 au début du temps principal O par le changement d'état du signal d'horloge PTIMEO+. En considérant la figure 42, on voit que si une micro-instruction de microprogramme de processeur CPU présente valide la mémoire PROM de chargement initial 240, les bits 24 à 31 de la micro-instruction suivante lue dans la mémoire de commande sont extraits de la mémoire PROM 240 et non dans la mémoire ROS 2, 238-2. Les signaux d'entrée d'adresse de la mémoire PROM 240, PRFR15+ à FRFR06+ sont les dix bits de poids faible du registre de fonction (F). Comme on le verra plus loin la partie microprogrammée de processeur CPU a donc la possibilité de charger une adresse dans le registre de fonction (F) et de commander la progression ou la régression du registre F en même temps que d'effectuer toute autre commande nécessaire pour permettre à la partie microprogrammée de processeur CPU d'avoir accès aux multiplets de données mémorisés dans la mémoire PROM 240 et de les mémoriser dans la mémoire principale. Avant de terminer la description du circuit logique de mémoire PROM de chargement initial, on notera en référence à la figure 35C que les 8 bits oui sont lus dans la mémoire PROM de chargement initial remplacent les 8 bits qui auraient été autrement utilisés pour maintenir une constante quand la,zone de décodage de sous-commandes, des bits 32 à 34, égale 111 binaire. Cela permet aux microinstructions dans lesquelles les 8 bits de mémoire PROM 240 remplacent les 8 bits de mémoire ROS 2, 238-2, d'exécuter encore la plus grande partie de micro-instruction comme s'il n'y avait pas eu remplacement des 8 bits de memoire ROS 2 par les 8 bits de mémoire PROM de chargement initial. Pour plus de simplicité de la figure 42, le registre local 242 est représenté comme un registre contenant 48 bits. Dans l'exemple de réalisation préféré de l'invention, le registre local 242 est réalisé avec six registres de 8 bits. Pour simplifier la figure 42, l'entrée de remise à zéro (R) du registre local 242 est représenté comme étant à UN binaire, ce qui indique que le registre local 242 n'est jamais remis à zéro. Dans l'exemple de réalisation préféré, l'entrée de remise à zéro du registre de 8 bits aux signaux de sortie RDDT16+ à RDDT23+ reçoit le signal PCPCLF- qui permet à ces 8 bits d'être remis à zérp pendant l'initialisation du système. On va maIntenant décrire les circuits logiques du processeur CPU en détail. La figure 43 représente le processeur CPU dont les circuits logiques ont été décrits en relation avec la figure 8 et la figure 12. Le bus interne 260 est constitué de 16 lignes de transmission des signaux PBUSOO+ à PBUS1S+, qui sont utilisées pour le transfert des adresses et des données dans tout le processeur CPU. Les signaux de sortie à trois états de 11 émetteur-récepteur de données A, 288-1, de l'émetteurrécepteur de données B, 284-1, et du microprocesseur 232 sont combines selon la fonction logique OU dans un circuit approprié au point 509. Les émetteurs-récepteurs de données A et B, 288-1 et 284-1, se composent chacun de deux émetteurs-récepteurs de bus de 8 bits du type SN74LS245 fabriqué par Texas Instruments.Selon l'état du signal d'entrée de direction (DIR), les émetteurs-récepteurs de données A et B, 288-1 et 284-1, reçoivent chacun des données provenant du bus de système A et du bus de système B et les placent sur le bus interne 260 ou les prennent du bus interne 260 et les transmettent au bus de système A et au bus de système B. Si le signal à l'entrée DIR de l'émetteur-récepteur A ou de l-'#metteur-récepteur B est à ZERO binaire, les signaux aux entrées D sont placés sur les sorties Q (c'est-à-dire, les données sont reçues du bus de système). Si le signal à l'entrée DIR est à UN binaire, les signaux aux-entrEes Q sont transmis aux sorties D (c'est-à-dire, les données sur le bus interne sont transmises au bus de système). On va maintenant décrire le circuit logique d'émetteur-récepteur de données. Comme on l'a expliqué plus haut, la transmission ou la réception de données par l'émetteur-récepteur de données A et par l'émetteur-récepteur de données B est commandée séparément par la partie microprogrammée de processeur CPU. Quand une mémoire principale sur le bus de système-B fournit des données au processeur CPU ou à un contrôleur TOC qui peut être situé sur l'un des bus de système A et B, l'émetteur-récepteur de données B est établi pour recevoir les données provenant du bus de système par l'intermédiaire des signaux BUSBO0+ à BUSE15+ et les transmet au bus interne et l'émetteur-récepteur de donnes A est commandé pour prendre les informations sur le bus interne et les placer sur le bus de système A par l'intermédiaire des signaux BUSAOO+ à BUSA15+. Quand les données sont envoyées par le processeur CPU à l-a mémoire principale sur le bus de système B ou à un contrôleur IOC sur l'un des bus de système A et B, les deux émetteurs récepteurs de données A et B sont commandés pour prendre les informations et les transmettre au bus de système A et au bus de système B.Si un contrôleur IOC sur le bus A ou le bus B envoie des informations au processeur CPU ou à la mémoire principale, la partie microprogrammée de processeur CPU commande les émetteurs-récepteurs de données A et B de sorte que l'émetteur-récepteur de données associé au bus de système sur lequel le contrôleur TOC qui envoie des données est place, reçoive les informations du bus de système et les place sur le bus interne et que l'autre émetteur-récepteur de données prenne les informations sur le bus interne et les place sur son bus de système associd. En commandant les émetteurs-récepteurs de données A et B, 288NI et 284-1,# de cette manière, les données apparaissant sur les 16 lignes d'adresse/données sur les bus de système, sont toujours les mêmes. Si l'on considère maintenant l'émetteur-récepteur de données A, 288-1, le signal d'entrée de direction (DIR), PBSFAP-, est le signal de sortie de porte NI 512. Un signal d'entrée de la porte NI 512, PBSFKP-, est à ZERO binaire quand les bits 24 à 27 du mot de micro-instruction sont à 0101 binaire (voir figure 37F)- qui est décodé par un décodeur (non représente), le signal PTIMEOs étant à une entrée de validation inversée. L'autre entrée de la porte NI 512, PENBSA-OO, provient d'un décodeur de commande d'entrée-sortie 1, 244-3, quand les bits 24 à 26 sont égaux à 100 binaire (voir Figure 37C) par 11 intermédiaire d'une porte NO 510. Un signal d'entrée de la porte NI 510, PBSFMD-, provient d'une des sorties du registre de demande d'interruption 250-1 (voir Figure 42) qui est chargé avec le signal PMRCYCe de sortie d'une porte NON-ET 531. L'autre signal d'entrée de la porte NI 510, PENBSB-OO provient également du décodeur de commande d'entrée-sortie 1, 244-3, par l'intermédiaire d'une porte NON-ET 534, quand les bits 24 à 26 égalent 110 binaire (voir Figure 37C > . Les données sur le bus interne 260 peuvent être chargées dans le registre de numéro de canal 296 et, de ce registre, dans le multiplexeur d'adresse de mémoire interprète 294 dont la sortie est utilisée pour adresser la mémoire interprète SPM 236. Alternativement, les données sur le bus interne 260 peuvent être chargées dans le multiplexeur de remplacement de multiplet 262,les signaux de sortie de celui-ci pouvant être écrits dans la mémoire interprète 236. De plus, les données sur le bus interne 260 peuvent être chargées dans le multiplexeur de sélection de données 269, les signaux de sortie de celui-ci pouvant être chargés dans le registre F 274, dans le registre I 270, dans le registre M1 272 et dans le microprocesseur 232. On va maintenant décrire le circuit logique de mémoire interprète. Le registre de numéro de canal 296 est chargé avec les sept bits de poids faible du numéro de canal à 10 bits en transférant les signaux sur les lignes de données de bus interne, PBUSO3+ à PBUSO9+, aux entrées de données de ce registre quand le signal d'horloge PCLKCH- passe de l'état ZERO binaire à l'état UN binaire. Comme le registre de numéro de canal est utilisé en association avec les contrôleurs IOC de DMC pour adresser la table PCT en mémoire interprète 236, il suffit de conserver les 7 bits de poids faible du numéro de canal dans le registre de numéro ro de canal (voir Figure 24). Les trois autres bits de poids fort des numéros de canaux de DMC sont toujours à zéro. L'état du signal PBYTEX-k provenant des bus de système A et B est aussi un signal d'entrée du registre de numéro de canal 296 qui donne le signal de sortie PDMCIO+. Le registre de numéro de canal 296 est synchronisé par le signal d'horloge PCLKCH- provenant de la porte NON-ET 504. Un signal d'entrée de la porte NON-ET 504, PIOCTL+, provient de la sortie de 1'inverseur 528 qui inverse le signal de sortie du décodeur de sous-commande 244-2 décodant l'é- tat des bits 32 à 34 du mot de micro-instruction (voir Figure 35C). Les deux autres signaux d'entrée de la porte NON-ET 504, RDDT27+ et RDDT28+, sont les signaux de sortie du registre local 242 (voir Figure 42) et quand ils sont tous les deux égaux à UN binaire (voir Figure 37D), ils valident complètement la porte NON-ET 504 en faisant passer le signal de sortie de cette porte, PSAFBS-, à ZERO binaire. Quand le signal PSAFBS- est à ZERO binaire, le signal de sortie de 1'inverseur 506, PSAFBS+, est à UN binaire qui valide partiellement la porte ET 508. La porte ET 508 est complètement validée quand le signal PTIME3+ passe de l'état ZERO binaire à l'état UN binaire au début du-temps principal 3, ce qui fait passer le signal d'horloge PCLKCH de ZERO binaire à UN binaire et fait changer l'état du registre de numéro de canal 296. Les signaux de sortie du registre de numéro de canal, PSARO1+ à PSARO6+, sont envoyés aux entrées I1 du multiplexeur d'adresse de mémoire SPM 294. Les deux autres signaux de sortie du registre de numéro de canal 296, PDMCIO+ et PSAIÔB+,sont envoyés aux entrées du circuit de branchement sur contrôle 254 (Figure 9) dont le signal de sortie, RASBT9+, est envoyé à l'entrée du multiplexeur générateur d'adresse 1, 248-1, (Fig. 42).Le signal RASBT9+ est-utilisé par la partie microprogrammée dc processeur CPU pour contrôler si-le type de contrôleur IOC est de DMA ou de DMC quand il est déduit du signal PDMCIO+, ou si le canal d'entrée ou le canal de sortie est utilisé quand le signal RASBT9 est déduit du signal P#ATOB+. En plus du registre de numéro de canal 296, le signal PCLKCH- synchronise la bascule d'adresse/portée 502. Le signal PCLKCH- permet le transfert du signal RDDTl9+ à l'entrée de données (D) de la bascule d'adresse/portée 502. En commandant l'état du bit 19 du mot de micro-instruction de processeur CPU et la synchronisation de la bascule d'adresse/portée 502, la partie microprogrammée de processeur CPU peut commander la mise à un ou la remise à zéro de la bascule 502. La mise à un et la remise à zéro de la bascule d'adresse/portée 502 sont également commandées par les signaux PSAR7S- et PSAR7R-, aux entres de mise à un (S) et de remise à zéro (R) de celle-ci, ces signaux provenant des sorties d'un décodeur des bits 24 à 26 du mot de micro-instruction. Le signal de sortie de la bascule d'adresseXpor- tée 502, PSARO7, est envoyé à l'entrée I1 du multiplexeur d'adresse de mémoire SPM 294 et il est utilisé comme bit - de poids faible dans l'adressage de mémoire SPM 236. Un signal à UN binaire est envoyé à l'entrée I1 de bit de poids fort du multiplexeur 294 et quand les entrées I1 du multiplexeur 294 sont sélectionnées par le signal RDDT22+ qui est à UN binaire à l'entrée de sélection (SEL) du multiplexeur d'adresse de mémoire SPM 294, la table de programme canal contenue en mémoire interprète SPM est adressée. Quand l'adressage de la table PCT en mémoire SPM est réalisé, le bit de poids faible de l'adresse de mémoire SPM détermine si le mot d'adresse ou le mot de portée de l'ventrée de PCT adressée par les 6 bits provenant du registre de numéro de canal 296 est concerné. C'est ainsi que si la bascule -d'adresse/portée 502 est mise à un, ce qui met le signal de sortie de celle-ci, PSARO7+, à UN binaire, le mot de portée d'une paire de canaux de table PCT est adressé et, si la bascule 502 est remise à zéro, le mot d'adresse de la paire de canaux d'entrée de table PCT est adressé (voir Figure 10). Les entrées 10 du multiplexeur d'adresse de mémoire SPM 294 ont leurs quatre bits de poids fort égaux à ZERO binaire et les quatre autres bits qui correspondent aux signaux RDDTOl+ et RDDTO5+ à RDDTO7+. Cela permet à quatre bits du mot de micro-instruction de processeur CPU d'adresser la mémoire SPM 236 quand les entrées IO sont sélectionnées par le signal RDDT22+ a ZERO binaire (voir. Figure 35A et 35C). Les signaux de sortie du multiplexeur d'adresse de mémoire SPM 294 sont validés quand le signal KENSPA- à l'entrée de commande de sortie (F) de celui-ci est à ZERO binaire. La mémoire interprete 236 reçoit ses signaux d'adresse à 8 bits, PSARSO+ à PSARS7+, du multiplexeur d'adresse de mémoire SPM 294. La mémoire SPM 236 se compose de 17 pastilles de mémoire RAM 256X1 bit du type 5539-2 fabriqué par Intersil Inc. de Cupertino en Californie, qui est décrit dans l'ouvrage : " Tntersil Semiconductor Products Catalog". Les pastilles de mémoire RAM sont agencées de sorte que la mémoire 236 contienne 256 mots de 17 bits chacun comme le montre la Figure 10. L'écriture en mémoire SPM 236 est validée en plaçant un ZERO binaire à l'entrée de validation d'écriture (WE) de la mémoire SPM. Si le bit O du mot de micro-instruction est à UN binaire, le signal RDDTOO+ est à UN binaire qui valide partiellement la porte NON-ET 587.La porte NON-ET 587 est complètement validée quand le signal d'horloge PTIME4+ passe de l'état ZERO binaire à l'état UN binaire au début du temps principal 4 et fait passer le signal de sortie de la porte NON-ET 587, PSDWRT- à ZERO binaire. Les 16 bits de poids fort des données d'entrée de mémoire SPM 236 sont les signaux PSDTOO- à PSDI15- provenant de la sortie du multiplexeur de remplacement de multiplet 262. Le bit de poids faible des signaux d'entrée de données de la mémoire SPM 236 est le signal RDDT19+ qui est déduit du bit 19 du mot de micro-instruction. Les signaux de sortie de la mémoire SPM 236 sont les signaux PSDO00+ à PSD016+. Le registre de données de mémoire SPM 518 se compose de deux verrous transparents de type D à 8 bits du type.SN74S373 fabriqué par Texas Instruments Inc. à Dallas au Texas.Les signaux d'entrée du registre de données de mémoire SPM 518 sont validés à ses sorties pendant le temps principal O et le temps principal L par l'intermédiaire des signaux PTItE0- et PTIME1- à la porte OU 585. Les signaux de sortie du registre de données de mémoire SPM 518 sont toujours validés par un signal à ZERO binaire apparaissant à l'entrée de commande de sortie (F) de celui-ci. Les signaux de sortie du registre 518, PSDROO+ à PSDR15+, sont envoyés aux entrées IO du multiplexeur de sélection de données 269. La bascule de remise à zéro 514 est mise à un quand le signal d'horloge PCXEAuR- passe de 11 état ZERO binaire à l'état UN binaire et il peut être remis à zéro par le signal PCLERR- qui passe à ZERO binaire à l'entrée de remise à zéro (R) de cette bascule. Le signal de sortie Q de la bascule 514, PCPCLF+, et le signal PSDOî6+, qui contient le bit de poids faible du mot de 17 bits lu dans la mémoire SPM 236, sont transférés dans le registre 516 quand le signal d'horloge PTIEE4+ passe de l'état ZERO binaire à l'état UN binaire au début du temps principal 4. L'autre signal de sortie de la bascule de remise à zéro 514, PCPCLF-, est utilisé pour remettre à zéro les bits 16 à 23 du mot de micro-instruction contenu dans le registre local 242 (voir figure 42). Le signal PCPCLR+, provenant du registre 516, et le signal PCPCLR-, provenant de l'inverseur 583, sont utilisés dans tout le processeur CPU pour remettre à zéro les diffé rents-registres et les différefltes hascules. Pax exemple, le signal PCPCLR+ est utilisé pour remettre à zéro le registre d'adresse 1, 246-1, par l'intermédiaire de la porte NI 595, et le signal PCPCLR- est utilisé pour remettre à zéro le registre d'adresse 2, 246-2 (voir figure 42). Le signal PCPCLR+ est également utilisé pour invalider la lecture de données en mémoire PROM de chargement initial 240 (voir figure 42).L'autre signal de sortie de registre 516, PTBS13+, qui indique l'état du bit de poids faible du mot lu dans la mémoire SPM 236, est envoyé au circuit de branchement sur contrôle 254 (voir figure 9) et il est utilisé pour. déterminer le bit RASBT9+ à l'entrée du multiplexeur générateur d'adresse 1, 248-1. On va maintenant décrire le circuit logique de remplacement de multiplet. En considérant le multiplexeur de remplacement de multiplet 262 de la figure t3, on va décrire la manière selon -laquelle la partie microprogrammée de processeur CPU peut commander le remplacement de multiplets de gauche et de droite des données sur le bus interne avant de les écrire dans la mémoire SPM 236. Le décodeur de sous-commande 1 244-1 est utilisé pour décoder les bits 25 à 27 du mot de micro-instruction qui, lorsqu'ils sont égaux à 001 binaire (voir figure 37F) mettent le signal à une des sorties de celui-ci, PSDEXEN-, à ZERO binaire.La sortie du décodeur de sous-commande 1 244-1 est partiellement validée par le signal RDDT24- à UN binaire et par le signal RDDT32+ à ZERO binaire et elle est complètement validée par le signal PTIMEO passant de l'état UN binaire à l'état ZERO binaire au début du temps principal 1 et qui reste à l'état ZERO binaire jusqu'à la fin du temps principal 4. Quand le signal PSDEXEN- est à ZERO binaire, les entrées IO du multiplexeur de remplacement de multiplet 262 sont validées pour donner des signaux aux sorties de celui-ci de façon à avoir une interversion des multiplets de gauche et de droite apparais- sant sur le bus interne 260.Si le signal PSDEXEN- est à UN binaire, les entrees 11 du Taultiplexeur de remplacement de multiplet 262 sont sélectioernées et les données sur le bus interne sont transférées aux sorties du multiplexeur 262 sans remplacement des multiplets. De cette manière, le remplacement des multiplets des données provenant du bus interne 260 peut être commandé avant que les données soient écrites dans la mémoire interprète SPM 236. On va maintenant décrire les circuits logiques de sélection de données et de microprocesseur. Comme on l'a décrit plus haut, la troisième entrée de bus interne 260 est reliée à la sortie de données du microprocesseur 232. Le microprocesseur 232 reçoit 16 bits de données d'entrée, c'est-à-dire, les signaux PALUD15+ à PAUD00+, de la sortie du multiplexeur de sélection de données 269. Le fichier de registres de microprocesseur est adressé par les bits PSPA03+ à PSPAO1+ et le bit RDDT04+. Les bits PSPA03+ à PSPAOî+ d'adresse de fichier de registres sont déduits du multiplexeur d'adresse de fichier 276 représenté sur la figure 8. La sélection de multiplexeur d'adresse de fichier est commandée par les bits 2 et 3 du mot de microinstruction (voir figure 35A).L'instruction exécutée par le microprocesseur 232 est commandée par les 9 signaux d'entrée d'instruction (INSTAR), RDDT10+ à RDDTî8+, qui sont obtenus à partir des bits 10 à 18 du mot de micro-instruction (voir figure 35B). Comme on l'a décrit plus haut, les signaux de sortie de données du microprocesseur 232, PBUSl5+CP à PBUSO0+CP, sont combinés selon la fonction logique OU par un circuit approprié aux signaux de sortie de l'emetteurrécepteur A, 288-1, et de l'émetteur-récepteur B, 284-1, au point 509. Les signaux d'entrées I1 du multiplexeur de sélection de données 269 sont déduits des 8 bits du registre d'indicateur (I) 270, c'est-à-dire des signaux PI08+ à PI15+, et des signaux de sortie du registre de masque (M1) 272, PRMROO+ à PRMR07+.Les signaux des entrées I2 du multiplexeur de sélection de données 269 sont les signaux RDDT08+ RDDT09+ et RDDT24+ d RDDT3î+ La sortiJÛ'u multiplexeur de sélection de données 269 est sélectionnée à partir des quatre entrées par les signaux RDDT20+ et RDDT21+ aux deux entrées de sélection (SEL) de ce multiplexeur. Le signal à ZERO binaire à l'entrée d'échantillonnage (CE) du multiplexeur de sélection de données 269 valide les sorties.En commandant les bits 20 et 21 de mot de micro-instruction, la sortie du multiplexeur de sélection de données 269 peut être sélec tonnée a partir : du registre de données de mémoire interprète 518; du registre I 270 et du registre M1 272; d'une constante déduite des bits 8, 9 et 24 à 31 du mot de micro-instruction; et du bus interne 260 (voir figure 35C). On va maintenant décrire les circuits logiques des registres I, M1 et F. Le registre d'indicateur (I) 270 se compose de huit bascules de type D synchronisées chacune par le signal PIRFBS- quand il passe de l'état ZERO binaire à l'état UN binaire. Le signal PIRFBS- est engendré par décodage des bits 24 à 27 du mot de micro-instruction qui, lorsque ceux-ci égalent 110 binaire, met le signal PIRFBS- à ZERO binaire (voir figure 37F). Le registre de masque (M1) 272 est synchronisé par le signal PRMRCK- passant de l'état ZERO binaire à l'état UN binaire. Le signal PRMRCK- est engendré par décodage des bits 28 à 31 du mot de micro-instruction qui, lorsque ceux-ci égalent 1100, met le signal à ZERO binaire (voir figure 37G). Le registre M1 272 est remis à zéro par le signal PCPCLR- à l'état ZERO binaire. On notera que les signaux d'horloge PIRFBS- et PRMRCK- sont engendrés par des décodeurs qui sont validés à une entrée de validation inversée par le signal #PTTME4- qui fait passer ces deux signaux d'horloge à UN binaire à la fin du temps principal 4. Le registre de fonction (F) se compose d'un compteur de registre F(FRO > , 274-0, d'un compteur de registre F(FR2), 274-2, et d'un compteur de registre F(FR3), 274-3. Les compteurs FR0, 274-0, et FR3, 274-3, sont constitués chacun par un composant du type SN74LS169A qui est un compteur progressif/régressif à 4 bits fabriqué par Texas Instruments Inc. Le compteur FR2, 274-2, est constitue par deux compteurs du même type SN74LSl69A. La synchronisation des compteurs FR0, FR2 et FR3 est commandée par le signal PRFCLK+ à l'entrée d'horloge (C) de ceux-ci. Le signal PFRCLK+ passe de l'état ZERO binaire à l'état UN binaire à la fin du temp principal 3 si les bits 32 à 34 du mot de micro-instruction sont égaux à 100 binaire (voir figure 35C). Le chargement du compteur de registre F (FR0), 274-0, est commandé par le signal PFRLDO- à l'entrée de chargement L de celui-ci. Le signal PFRLDO- est engendré par la combinaison logique NON-ET des signaux RDDT26+ et RDDT27+. Le chargement du compteur de registre F (FR2), 274-2, est commandé par le signal PRFLDM- à l'entrée de chargement (L) de celui-ci. Le signal PFRLDM- est engendré par la combinaison logique NON-ET des sianaux RDDT28+ et RDDT29+. Le chargement du compteur de registre F (FR3) avec les signaux d'entrée PAUD15+ à PAUD12+ est commandé par le signal PFRLD3à l'entrée de chargement (L) de celui-ci. Le signal PFRLD3est engendré par la combinaison logique NON-ET des signaux RDDT30+ et RDDT31+. Le compteur FR0, 274-0, est validé pour compter en présence du signal RDDT26+ aux entrées de validation de comptage (P et T) de celui-ci. Le compteur de registre F (FR2), 274-2, est validé pour compter en présence du'signal RDDT28+ aux entrées de validation de comptage (P et T) de celui-ci. Le compteur de registre F (FR3), 274-3, est validé pour compter en présence du signal RDDT30+ aux entrées de validation de comptage IP et T) de celui-ci. Le sens de comptage du compteur de registre F (FR0), 274-0, est commandé par le signal RDDT27+ à l'entrée de comptage progressif/ régressif (U/D) de celui-ci.Le compteur de registre F (FR2), 274-2 a son sens de comptage commandé par le signal RDDT29+ à l'entrée de comptage prooressif/régressif (U/D) de celuici. Le sens de comptage du compteur de registre F (FR3), 274-3, est commandé par le signal RDDT31+ à l'entrée de comptage progressiffréoressif (U/D) de celui-ci. Certains des signaux de sortie du registre F sont envoyés aux entrées de la mémoire PROM de chargement initial 24C (figure 42), du multiplexeur d'adresse de fichier 276 (figure 8), et au circuit de branchement sur contrôle 254 (figure 9). Les signaux de sortie du registre F sont également utilisés à d'autres endroits des circuits logiques du processeur CPU. On va maintenant décrire les circuits logiques de commande de bus. Les différents signaux de commande qui sont transférés du processeur CPU aux contrôleurs IOC et à la mémoire principale par les bus de Système A et B sont représentés sur la figure 43. Les signaux engendrés par l'émetteurrécepteur de commande A, 286-1, et l'émetteur-récepteur de commande B, 282-1, et les signaux PIOCTA- et PIOCTB- sont tous émis par le processeur CPU et sont transmis sur les bus de système en direction des contrôleurs IOC ou de la mémoire principale. D'autres signaux de commande tels que les signaux PBYTEX+, PBUSY-2A et PBUSY-2B, etc., peuvent être issus du processeur CPU et être envoyés aux contrôleurs IOC ou à la mémoire principale, ou peuvent être issus d'un contrôleur IOC et être envoyés au processeur CPU par l'in termédiaire des bus de système. On va maintenant décrire les circuits logiques de commande d'entrée/sortie E/S. L'émetteur-récepteur de commande A, 286-1, et l'émetteur-récepteur de commande B, 282-1 de la figure 43 sont du type SN74LS245 fabriqué par Texas Instruments Inc. et leur disposition est telle qu'elle a été décrite pour les émetteurs-récepteurs de données A et B, 288-1 et 284-1. Quand des signaux à ZERO binaire sont présents aux entrées de validation de sortie (F) et de direction (DIR) des émetteurs-récepteurs de commande A et B, les deux émetteurs récepteurs sont conditionnés pour que leurs sorties soient toujours validées et que la direction de transfert d'information soit des entrées de processeur CPU (D) aux sorties de bus de système A et B (Q).Les signaux d'entrée RDDT29+ à à RDDT31+ sont déduits des bits 29 à 31 du mot de microinstruction et sont utilises pour envoyer des commandes d'entrée-sortie E/S (voir figure 37E) aux contrôleurs IOC par les bus de système A et B et sont communs à l'emetteur- récepteur de commande A# 286-1 et à l'émetteur-récepteur de commande B, 282-1. Les signaux BCYCOT- et PTIME3 sont des signaux de synchronisation provenant du circuit logique d'horloge de la figure 14 qui sont transmis sur les deux bus de système A et B- par l'émetteur-récepteur de commande A, 286-1, et l'émetteur-récepteur de commande B, 282-1.Le signal d'initialisation PCLEAR- est aussi transmis sur les bus de système A et B. Le signal de validation d'émetteurs de données de contrôleur TOC PENBSA-OO est le signal de sortie d'une porte NI- 534 qui est transmis sur les bus de système A et B par l'émetteur-récepteur de commande A, 286-1, et l'émetteur-récepteur de commande B, 282-1, respectivement. Le décodeur de sous-commande 244-2 est validé au début du temps principal l et reste validé pendant la période de temps principal 4 par le signal PTIMEO+ à l'entrée de validation (EN > . Le décodeur de sous-commande 244-2 décode les sianaux RDDT32+ à RDDT34+ et engendre les signaux PMRFSH-, PMRCON-, décrits plus haut, et le signal PIOCTL (voir figure 35C). Le signal PIOCTL est inversé par un inverseur 528 pour engendrer le signal PIOCTL+. Le signal PIOCTL+ valide partiellement une porte NON-ET 536 et une porte NON-ET 538. Quand la porte NON-ET 536 est complètement validée par le signal RDDT27- à ZERO binaire, le signal de sortie de celle-ci, PIOCTA~ est à ZERO binaire, ce qui indique aux contrôleurs IOC sur le bus de système A que la commande d'E/S codée sur les lignes RDDT29+BA à RDDT3î+BA est valide. D'une manière semblable, la porte NON-ET 538 est complètement validée par le signal RDDT28- à ZERO binaire. Cela met le signal de sortie de la porte NON-ET 538, PIOCTB-, à ZERO binaire, en indiquant aux contrôleurs IOC sur le bus de Système B qu'une commande d'E/S codée sur les lignes RDDT29+BB à RDDT31+BB est valide (voir figure 37D). Le décodeur de sous-commande 244-2 émet un signal de sortie PIOCTL- qui est utilisé pour valider un décodeur de commande d'E/S 1, 244-3, qui décode les signaux RDDT24+ à RDDT26+ (voir figure 37C). Le décodeur de commande d'E/S 1, 244-3, émet des signaux de sortie PBSIOA- PBSIOB- qui sont envoyés respectivement aux portes NON-ET 521 et 534, pour valider partiellement ces portes quand le décodage des bits 24 à 26 du mot de micro-instruction met les signaux de sortie respectivement à ZERO binaire. Les portes NON-ET 521 et 534 sont complètement validées par le signal PBSFMD+ à ZERO binaire. Le signal PBSFMD+ est le signal de sortie de l'inverseur 520 qui inverse le signal PBSFMD- en provenance du registre de demande d'interruption 250-1 (voir figure 42). On va maintenant décrire les circuits logiques de traitement et d'occupation. Le signal de sortie PROCED- provenant du décodeur de commande d'E/S 1, 244-3, est inversé par un inverseur 544 pour engendrer le signal PROCED+ qui a son tour est inversé par l'inverseur 546 pour produire le signal PROCED-2A et par l'inverseur 547 pour produire le signal PROCED-2B. Le signal PROCED-2A est transmis sur le bus de système A et le signal PROCED-2B est transmis sur le bus de système B pour indiquer aux contrôleurs IOC sur les bus de système que le processeur CPU a accepté la-dernière demande d'interruption provenant d'un contrôleur IOC de chaque bus de système.Alternativement, le processeur CPU peut recevoir un signal de traitement d'un contrôleur TOC sur le bus de système A par la ligne PROCED-2A et d'un contrôleur TOC sur le bus de système B par la ligne PROCED-2B. - Les deux lignes sont reliées aux entrées d'une porte NI 550 qui engendre le signal PROCED-20 envoyé au circuit de branchement sur contrôle 254 (voir figure 9) qui engendre le signal RASBT9+ utilisé par le multiplexeur générateur d'adresse 1, 248-1, voir figure 42), ce qui permet à la partie microprogrammée de processeur CPU de contrôler si le contrôleur IOC adressé sur le bus de système A ou sur le bus de système B a accepté la commande d'E/S -sur sles lignes de bus de système RDDT29+ à#-RDDT3l+. Le signal PBBUSY- a la sortie du décodeur de commande d'E/S 1, 244-3, change d'état logiaue -'une manière semblable au changement d'état logique du signal de traitement qui vient d'être décrit pour produire et recevoir des signaux d'occupation envoyés à/reçus des contrôleurs IOC sur les bus de système A et B. Spécifiquement, le signal PBBUSYest inversé par l'inverseur 552 pour produire le signal PBBUSY+ qui est à son tour'inversé par l'inverseur 554 pour produire le signal PBUSY-2A qui est transmis ou reçu du bus de système A et par l'inverseur 556 qui produit le signal PBUSY-2B qui est transmis ou reçu du bus de système B.Les signaux PBUSY-2A et PBUSY-2B sont envoyés aux entrées d'une PORTE NI 558 qui produit le signal PBBUSY-20 envoyé au circuit de branchement sur contrôle 254 (voir figure 9) dont la sortie engendre le signal RASBT9+ envoyé au multiplexeur générateur d'adresse 1, 248-1, (voir figure 42). On va maintenant décrire les circuits logiques d'écriture/lecture de multiplet. Les signaux d'écriture de multiplet 0 et d'écriture de multiplet I, PWRTBO+ et PXfflRTB1+, peuvent provenir du processeur CPU par --inversion du signal RDDT08+ dans l'inverseur 524 et du signal RDDT09+ dans l'inverseur 526, respectivement, ou ils peuvent être reçus d'un contrôleur TOC placé sur le bus de système A ou sur le bus de système B. Les signaux d'écriture de multiplet peuvent donc être commandés par les bits 8 et 9 du mot de micro-instruction (voir figure 35B} ou reçus d'un contrôleur IOC sur un des bus de système.Les signaux pinRTBo+ et PWRTB1+ sont tous les deux utilisés pour valider partiellement une porte ET 530 qui produit un signal de sortie PMREAD+. 'Le signal PMREAD+, quand il est à UN binaire, valide partiellement une porte NON-ET 531 qui est complètement validée quand le signal PMDICYC de sortie d'une porte ET 564 est à UN binaire. Le signal de sortie de la porte NON-ET 531, PMRCYC-, est envoyé à une des entrées du registre de demande d'interruption 250-1 (voir figure 42). On va maintenant décrire le circuit logique de parcours de mémoire. Le signal de #paZcours, #e mémoire, qui informe la mémoire qu'elle peut exécuter un cycle de lecture, écriture ou de rafraîchissement, est principalement engendré pour commander le bit 23 du mot de micro-instruction (voir figure 35C). Le signal de lecture conditionnelle PMRCON- est un des signaux de sortie du décodeur de sous-commande 2S4-2 qui est inversé par l'inverseur 560 pour produire le signal PMRCON+ oui valide partiellement la porte NON-ET 562. La bascule de commande de bascule 4, 258-4, est mise à un par le signal PTCF4S- à ZERO binaire à l'entrée de mise à un (S) de celleci et peut être remise à zéro par le signal PTCF4R- à ZERO binaire à l'entrée de remise à zéro (R) de celle-ci.La bascule de commande de bascule 4, 288-4, peut également être mise à un en transférant le bit de poids fort des 16 bits sur le bus interne 260 apparaissant sur la ligne PBUSOO à l'entrée de'données (D) de cette bascule en faisant passer le signal PTCF4C- de ZERO binaire à UN binaire. Les signaux PTCF4S-, PTCF4C- et PTCF4R- sont engendrés par décodage des bits 28 à 31 du mot de micro-instruction (voir figure 37G > . Quand le signal de sortie de la bascule de commande de bascule 4, 288-4, c'est-à-dire le signal PTCF04+, est à UN binaire, il valide complètement la porte NON-ET 562 et remet le signal PRMCON-20 à la sortie de celle-ci à ZERO binaire. En établissant une condition de lecture, le signal PMRCONétant à ZERO binaire, et en mettant à un la bascule de commande de bascule 4, 288-4, le signal PTCF04 étant à UN binaire, le signal PMRCON-20 est à ZERO binaire et invalide la porte ET 564. La porte ET 564 étant invalidée, elle empêche la génération du signal de parcours de mémoire qui serait autrement engendré si le bit 23 du mot de microinstruction était à UN binaire. Cette possibilité d'empêcher la génération d'un signal de parcours de mémoire est utilisée par la partie microprogrammée de processeur CPU dans les cas (tels que le traitement d'instructions de programme du type mémorisation > où il n'est pas souhaitable de faire une lecture de mémoire avant de faire une mise en mémoire dans le même emplacement de mémoire principale. Dans ces cas, la lecture de mémoire principale (qui pourrait donner lieu à une détection d'erreur de parité de mémoire) est invalidée et seule l'opération d'écriture de mémoire est permise (qui ne donne pas lieu à un contrôle d'erreurs de parité) pour éliminer la possibilité d'une interruption interne d'erreur de parité de mémoire. Si le signal RDDT23+ est à UN binaire et le signal PMRCON-20 est à UN binaire, la porte ET 564 est complètement validée et le signal de sortie PMMCYC est à UN binaire à l'entrée de données (D) d'une bascule de parcours de mémoire 566. Un signal à UN binaire à l'entrée de données de la bascule de parcours de mémoire 566 est transféré par le signal PIPE3+ passant de l'état ZERO binaire à l'état UN binaire au début du temps principal 3, ce qui fait passer la bascule à 1' état un de même que le signal de sortie PMEMGO+CP passe à UN binaire. La bascule de parcours de mémoire 566 est remise à zéro au début du temps principal O quand le signal PTIMEO- passe de l'état UN binaire à l'état. ZERO binaire.Le signal RMEMCO- est inversé par un inverseur 568 pour produire le signal PMEMGO+MP. Si l'un des signaux PMEMGO+CP ou PMEMGO+MP aux entrées de la porte NI 570 est à UN binaire, le signal de sortie PMEMGO- est à ZERO binaire et indique à la mémoire sur le bus de système B qu'elle peut commencer un cycle de lecture, d'écriture ou de rafraîchis- sement de mémoire principale. On va maintenant décrire les circuits de mémoire principale. La mémoire principale est une mémoire rapide à accès sélectif (RAM) qui est capable d'exécuter toutes les opérations de lecture/écriture sans restrictions sur la séquence d'adressage, les modèles de- données ou les fréquences de répétition de moire. Son architecture de base est constituez par une configuration de mémoire unique définie pour fournir une capacité de mémoire d'écri-Lure/lecture (RAM) comprise entre un minimum de 16 Kmots et un maximum de 64 Kmots par 16 bits. Chaque mot de mémoire contient en outre deux bits de parité.Les caractéristiques de performance de mémoire principale sont constituées par des cycles de lecture, d'écriture ou de rafraîchissement de mémoire de 1000 nanosecondes chacun (c'est-à-dire, deux cycles de processeur CPU consécutifs de 500 nanosecondes chacun), un temps d'accès pour la lecture de mémoire de 500 nanosecondes et un temps de rafraîchissement de mémoire de 15 microsecondes. On va d'abord considérer l'interface de bus de système. Tous les transferts d'informations (c'est-à-dire, les adresses, les données et les commandes de processeur CPU) entre la mémoire principale et le processeur CPU, ou entre la mémoire principale et les contrôleurs IOC, se font par le bus de système B. La commande de mémoire principale est réalisée par des commandes de mémoire envoyées exclusivement par le processeur CPU. Les signaux d'interface entre la mémoire principale et le bus de système sont : BUSXOO+ à BUSX15+, PTIME3-, PCLEAR-, PWRTB0+, PWRTB1+, MEMPER-, PMEM.GO-, PMFRSH- et PBSFMD-, qui sont représentés sur les figures 6 -et 7. On va considérer maintenant le mot de données. Le mot de données de mémoire principale se compose de 16 bits de données (2 multiplets) tels qu'ils sont repré sentés sur la figure 5 avec 2 bits de parité (1 bit de parité par multiplet). Comme les 2 bits de parité sont propres à la mémoire principale, ils ne sont pas transmis par le bus de système au processeur CPU ou aux contrôleurs IOC. Si l'on considère le mot d'adresse tel que le mot d'adresse de mémoire représenté sur la figure 5, celui-ci permet au logiciel d'avoir accès à un emplacement de mémoire dans un module de mémoire principale d'une configuration de moire principale donnée. On va maintenant considérer dans son ensemble l'organisation de la mémoire principale. Une configuration de mémoire principale donnée consiste en une mémoire d'écriture/lecture (RAM) réalisée avec une ou plusieurs plaquettes de mémoire principale. Une plaquette de mémoire principale fournit une capacité de mémoire d'écriture/lecture de 16 Kmots, 32 Kmots ou 64 Kmots. La capacité de mémoire pour -la configuration de mémoire principale considérée est compris#e entre un minimum de 16 Kmots et un maximum de 64 Kmots de 16 bits chacun. La zone d'adresse de mémoire principale enregistrée dans les commutateurs d'adresse de l'une ou de plusieurs plaquettes de mémoire principale doit : (1) être contiguë dans l'espace mémoire de l'emplacement O à l'autre extrémité ; (2) débuter toujours à une limite d'adresse de 4 Kmots ; et (3) maintenir toujours la plaquette de plus grande capacité de mémoire principale (ou module) dans un ordre inférieur d'adressage de mémoire (O-X), avec chaque plaquette supplémentaire de capacité inférieure de mémoire principale commençant à la dernière adresse (X), plus un (c'est-à-dire, X+1) de la plaquette (ou module) de capacité de mémoire principale supérieure qui la précède. On va maintenant considérer les caractéristiques d'agencement physique d'un module de mémoire. Les plaquettes de mémoire principale utilisent des pastilles de mémoire RAM de 16 K par 1 bit pour former une zone de données et de parité de mémoire RAM unique sur chaque plaquette de mémoire principale pour un adressage facile et une mémorisation souple. La zone est organisée en quatre lignes t0 à 3). Chaque ligne utilise 18 pastilles de mémoire RAM qui sont agencées pour fournir une capacité de mémoire de 16 Kmots de 16 bits avec 2 bits de parité par mot dans chaque ligne. Chaque plaquette de mémoire principale peut avoir une configuration pour fournir une capacité de mémoire d'écriture/lecture de 16 Kmots, 32 Kmots ou 64 Kmots en garnissant chaque ligne de façon appropriée.La capacité de mémoire de chaque module de mémoire principale assemblé peut être déterminée'par le nombre de lignes garnies de pastilles de mémoire RAM de 16 K (par exemple, le garnissage des lignes o et 1 d'une plaquette de mémoire principale correspond à 32 Kmots de mémoire). On va maintenant considérer l'adressage d'un module. Un assemblage de commutateurs d'adresse est utilisé pour affecter une ligne d'adresse fixée à une plaquette de mémoire principale dans une configuration de mémoire principale donnée et pour indiquer la capacité de mémoire de la plaquette de mémoire principale. Les assemblages de commutateurs d'adresse sont utilisés exclusivement pour former une adresse de mémoire principale dans un module de mémoire principale. Cette adresse est comparée à celle dans la zone d'identification de segment (bits 0 à 3) provenant des lignes d'adresse de bus de système pour déterminer le module de mémoire principale adressé. Chaque commutateur de capacité de module dans l'assemblage de commutateurs d'adresse du module de mémoire principale valide une zone d'adresse de mémoire principale de 4 Kmots quand il est dans sa position ouverte OFF, ce qui permet de former manuellement une capacité de mémoire principale de 16 Kmots à 64 Kmots par pas de 4 Kmots. On va maintenant considérer 1 'unité de conservation de mémoire. L'unité de conservation de mémoire (élément 222 sur la figure 1) est utilisée en liaison avec les plaquettes de mémoire principale. L'unité de conservation de mémoire maintient une tension d'alimentation en courant continu sur la zone de mémoire RAM des plaquettes de mémoire principale quand la source d'alimentation en courant alternatif du système s'interrompt de façon inattendue et, tant que l'unité de conservation de mémoire reste active, elle valide des cycles de rafraichissement permanents jusqu'S ce que la source d'alimentation en courant alternatif soit rétablie. On va maintenant considérer dans son ensemble le fonctionnement de la mémoire#principale pour faire ressortir son rôle dans le traitement de données provenant du bus de système. La figure 41 représente les éléments principaux d'un module de mémoire principale et montre comment est réalisée la circulation des données entre la mémoire principale et le bus de système. Les informations de commande (c'est-à-dire, les commandes de rafraîchissement, les commandes d'écriture/lecture, les adresses, etc ) sont extraites du bus de système par la mémoire principale et provisoirement mémorisées dans des registres de mémoire appropriés pour traiter les données, ou pour rafraîchir la mémoire principale comme il faut. L'activité applicable est réalisée quand un cycle de mémoire est lancé par une demande de lancement de mémoire provenant du processeur CPU (signal PMEMGO- passant à ZERO binaire). Quand une commande de rafraîchissement est reçue par la mémoire, une ligne sélectionnée dans chaque pastille de mémoire RAM peut être rafraîchie de la façon décrite dans les paragraphes suivants. Quand une commande de lecture ou d'écriture est reçue par la mémoire, l'adresse de mémoire est d'abord contrôlée pour vérifier qu'elle ne dépasse pas les limites d'adresse prescrites (c'est-à-dire, après l'adresse de début et dans l'espace mémoire entre cette adresse de début et l'adresse résultant de l'addition de la capacité de mémoire). Si les limites sont dépassées, le cycle de mémoire est terminé. Si elles ne sont pas dépassées, le cycle de mémoire se poursuit pour traiter la demande en examinant le registre de commande pour une commande de lecture ou d'écriture.La réception d'une commande de lecture déclenche un cycle de lecture de mémoire pour extraire un mot de données de 2 multiplets d'un emplacement de mémoire principale et l'envoyer sur le bus de système. De façon semblable, la réception d'une commande d'écriture pour une opération d'écriture d'un zot ou d'un multiplet en mémoire déclenche un cycle d'écriture de mémoire pour extraire un mot de données du bus de système et le mémoriser (ou un multiplet du mot) dans un emplacement do mémoire principale prédéterminé. Le processeur CPU valide le bus de système pour qu'il accepte des données résultant d'une opération de lecture de mémoire, ou pour s'assurer que des données sont sur le bus de système pour une opération d'écriture de mémoire. Dans une opération d'écriture de données, un mot de données de 2 multiplets est extrait du bus de système et mémorisé dans un registre de données d'entrée de#mémoire. Selon le type de fonction d'écriture (écriture de mot ou de multiplet), une opération d'écriture de mot ou de multiplet en mémoire est ensuite exécutée pour mémoriser le mot ou le multiplet en mémoire, et un bit de parité est engendré et mémorisé pour chaque' multiplet (c'est dire, 2 bits de parité par mot, ou 1 bit de parité par multiplet). Dans une opération d'écriture de multiplet, quand le multiplet 0 (de gauche) ou le multiplet 1 (de droite) est mémorisé dans un emplacement de mémoire, le multiplet d'emplacement voisin (opposé) de ltemplacement de mémoire n'est pas concerné. Pendant un cycle de lecture, un mot de données de 2 multiplets ainsi que 2 bits de parité associés sont extraits d'un emplacement de mémoire prédéterminé. Les 2 bits de parité sont envoyés directement au circuit logique de contrôle de parité, tandis que les 16 bits du mot de données sont envoyés directement au registre de données de sortie d'où ils sont placés sur le bus de système pour les transmettre au processeur CPU. Ce mot de données recircule aussi du registre de données de sortie au circuit logique de contrôle de parité par l'intermédiaire du registre de données d'entrée, où il est contrôlé en même temps qSle les 2 bits de parité pour détecter une éventuelle erreur de parité. Quand une erreur de parité est détectée, elle est verrouillée ou bloquée dans un verrou d'erreur de mémoire, un voyant d'erreur sur la plaquette de mémoire principale défectueuse est allumé, et le processeur CPU est averti de façon appropriée (par la ligne MEMPER- du bus de système). - Quand la mêmoire-'-prInci#ale reçoit et accepte une commande de rafraîchissement (envoyée par le processeur CPU toutes les 15 microsecondes ou moins), les données en direction du bus de système sont invalidées, et un cycle de lecture est déclenché pour remettre à zéro les données dans les emplacements sélectionnés dans la zone de mémoire RAM de chaque plaquette de mémoire principale. A la fin de l'opération, un compteur d'adresse de rafraichissement progresse de un dans l'attente de la commande de rafratchis- sement suivante. On va maintenant décrire le circuit de synchronisation de mémoire principale. Une opération de mémoire principale nécessite deux cycles de processeur CPU cpnsécutifs de 500 nanosecondes qui correspondent à un cycle de mémoire de 1000 nanosecondes. Le premier cycle de processeur CPU fait appel à un cycle de mémoire (parcours de mémoire) et procure une adresse de mémoire et les commandes correspondantes. Le second cycle de processeur CPU permet de fournir les données de bus de Système pour, ou de recevoir les données de bus de système à partir de, une adresse de mémoire prédéterminée. Pendant le premier cycle de processeur CPU, la mémoire principale reçoit une commande de rafraîchissement ou d'écriture/lecture, et un signal de parcours de mémoire à un niveau bas (c'est-à-dire que le signal PMEMGO- est à ZERO binaire). La commande de rafraîchissement ou d'écriture/ lecture conditionne une plaquette de mémoire principale pour l'opération applicable. Cependant, on notera qu'un signal de commande de rafraîchissement à un niveau bas (PMFRSH-) est placé sur le bus de système environ 200 nanosecondes avant qu'un cycle de mémoire soit demandé pour alerter la mémoire principale de la commande de rafraîchissement qui va arriver. Le signal de parcours de mémoire (Pw^EMGO-) est distribue à chaque module de mémoire principale de la configuration de mémoire principale donnée, et déclenche le générateur de signaux-d-1horloge de chaque plaquette de mémoire principale. Si une commande de rafraîchissement est reçue par la mémoire, le cycle de lecture de mémoire est déclenche pendant une période de cycle de mémoire complète pour rafraîchir une ligne de chaque pastille de mémoire RAM dans la zone. Si une commande d'éc#iture/lecture est reçue par la mémoire, les quatre bits de poids fort (0-3) de l'adresse de mémoire provenant du bus de système sont comparés à l'adresse de segment de chaque module de mémoire principale.Une comparaison donnant un résultat satisfaisant pour n'importe quel module de mémoire principale le définit comme étant le module adressé, et produit également un signal de mémoire présente (MMPRES). Ce signal MMPRES déclenche un cycle de mémoire pour une opération de lecture ou d'écriture dans la plaquette de mémoire principale sélec tionnée. Si le résultat de comparaison n'est pas satisfaisant, c'est-à-dire qu'il y a absence de correspondance, la demande est arrêtée et le cycle de mémoire est termine. Pendant le second cycle de processeur CPU de 500 nanosecondes, dans le cas d'une opération d'écriture de mémoire, les données sont rendues disponibles sur le bus de système à partir d'une source externe (processeur CPU ou contrôleur IOC). Dans le cas d'une opération de lecture de mémoire, un signal de validation de données de mémoire à un niveau bas (PBSFMD-) est reçu du bus de système pour valider les données de mémoire sur le bus de système. Simultanément, la mémoire envoie également un signal d'erreur de parité (MEMPER-) qui, lorsqu'il est à un niveau haut, indique qu'une erreur de parité s'est produite pendant le cycle de mémoire présent. On va maintenant considérer les modules de mémoire principale, en décrivant brièvement la fonction de leurs circuits logiques. La figure 41 est un schéma fonctionnel des plaquetes (modules) de mémoire principale qui montre les voies de transfert des signaux et des données entre les éléments. Les eéiéments clés ou essentiels sont la zone de données de mémoire RAM 630 et la zone de parité de mémoire RAM 632 (désignées en commun comme mémoires RAM ou zones) utilisées pour fournir une capacité de mémoire jusqu'S 64 Kmots de 16 bits pour une plaquette de mémoire principale (2 bits de parité par mot sont inclus). Tous les autres éléments supportent les zones pour le transfert de données entre elles et le bus de système, et pour le contrôle ou la génération de bit de parité pour chaque mot de données pendant une opération de lecture ou d'écriture de mémoire. Le générateur de signaux de synchronisation 602 engendre les impulsions de synchronisation pour faire fonc tionner et synchroniser toutes les opérations exécutées dans un module de mémoire principale (voir figure 41). Ce gêné- rateur est mis en fonctionnement par une demande de cycle de mémoire provenant du bus de système (c'est-à-dire, un signal PMEMGO-), ou par un signal de demande non avant rafraîchissement (MNOPRR+) qui est mis à un par le signal de mise sous tension (BPOwON+) quand la source d'alimentation en courant alternatif du système est invalidée.Le générateur de signaux de synchronisation 602 engendre des signaux de synchronisation qui sont distribués dans toute la plaquette de mémoire principale pour synchroniser le registre d'adresse 604, le registre de données d'entrée 606 et pour r' valider l'écriture et échantillonner l'adresse de colonne et l'adresse de ligne. La pastille de mémoire RAM nécessite une tension négative de -5 V en courant continu qui est engendrée par un générateur de -5 V, 608, placé sur la plaquette de mémoire principale. Le générateur de -5 V est commandé par la source d'alimentation du système ou l'unité de conservation de mémoire fournissant les tensions positives + 12 V et + 5 V en courant continu. La tension résultante de -5 V en courant continu engendrée par le générateur 608 est filtrée et acheminée jusqu'à la pastille de mémoire RAM dans la zone. Le circuit de défaut d'alimentation 628 contrôle sle signal-de mise sous tension-#-de~bus (BPOtJOM+) pour avertirla mémoire de toute interruption d'alimentation en courant alternatif imminente. Ce contrôle permet#au processeur CPU de disposer de 2 millisecondes supplémentaires pour remettre à jour la mémoire avec des informations de système appropriées avant que le fonctionnement du processeur CPU se termine en raison d'un défaut d'alimentation en courant alternatif, Après un défaut ou coupure de courant alternatif, le module de mémoire principale est mis dans un mode de rafraîchissement interne et il ne peut pas être adressé avant que le système ne soit réalimenté en courant alternatif. La zone d'adresse pour une zone de mémoire RAM de 16 Kmots est organisée en 7 lignes et 7 colonnes pour former une matrice de 128 lignes par 128 colonnes. Le circuit logique de commande et de distribution d'adresse de mémoire RAM 604 est défini pour adresser un emplacement spécifique dans cette zone de mémoire en engendrant une adresse de ligne et une adresse de colonne spécifique pour cet emplacement. Il réalise cette fonction avec le mot adresse de mémoire de 16 bits provenant du bus de système et mémorisé dans le registre de données d'entrée 606 au début d'un cycle d'écriture ou-de lecture de données en mémoire. Le registre de données d'entrée 606 contient les bits 3 et 10 à 15 qui forment une zone d'adresse de ligne, et les bits 2 et 4 à 9 qui forment une zone d'adresse de colonne. Les deux zones sont simultanément mémorisées dans leurs registres d'adresse de ligne et d'adresse de colonne respectifs, 634 et 636. Le contenu du registre d'adresse de ligne 634 est transféré de façon synchronisée dans la zone de mémoire quand un signal d'échantillonnage d'adresse de ligne passe à un niveau bas. Le contenu du registre d'adresse de colonne 636 est ensuite transféré de façon synchronisée dans la zone de mémoire par un signal d'échantillonnage d'adresse de colonne à un niveau bas. Les deux adresse de ligne et de colonne restent dans la zone de mémoire jusqu'à ce qu'elles soient recouvertes par de nouvelles adresses de ligne et de colonne. - Le eirouit-logique de commande et de distribution d'adresse de mémoire 604 sépare également et mémorise une zone d'adresse de mémoire à 2 bits provenant du registre de données d'entrée 606 dans un registre de sélection de pastille contenu dans un circuit logique de sélection de pastille 624 pour sélectionner la ligne applicable dans un module de mémoire principale. Les bits spécifiques sont les bits 0 et 1. Cette zone, en liaison avec la pastille de 16 Kmots fonctionnellement active dans le registre sélectionne une ligne 0, 1, 2 ou 3 dans un module de mémoire principale. Le contenu d'un registre de rafraîchissement d'adresse de ligne contenu dans un circuit logique de ra fraîchissement 622 remplace le contenu du registre d'adresse de ligne 634 pendant une opération de rafraîchissement, et il est transféré dans la zone de la même manière que le contenu du registre d'adresse de ligne. De plus, un signal de cycle de rafraîchissement de mémoire est maintenu à un niveau bas pendant une opération de rafraîchissement : (1) pour rafraîchir la zone en validant toutes les pastilles dans la zone applicable, et (2) pour empêcher le transfert de données de la zone de pastilles jusque sur le bus de système. On va maintenant considérer le circuit logique de sélection de segment 610 qui définit la portée d'adresse d'un module de mémoire principale (en utilisant certains des commutateurs fermés de l'assemblage de commutateurs d'adresse 638), valide cette portée par rapport à une adresse de mémoire provenant du bus de système, et met en oeuvre un cycle de mémoire dans le module de mémoire principale quand la portée d'adresse ne dépasse pas l'adresse. Si cette portée dépasse l'adresse, un cycle de mémoire n'est pas déclenché. Une opération de rafraîchissement ou un défaut d'alimentation en courant alternatif ont la priorité sur le circuit logique de sélection pour simuler une condition d'adresse présente et effectuer l'opération de rafraîchis- sement dans le module de mémoire principale. Les registres de données d'entrée et de données de ~sortie 606 et 612 sont utilisés comme tamponsvde donnees pour le transfert de données entre le bus de système (BUSX00+ et BUSX15+) et la zone. de données de mémoire RAM 630 pendant une opération d'écriture ou de lecture de mémoire. Ils sont également utilisés dans une opération de lecture pour faire recirculer les données de sortie jusqu'au circuit logique de détection d'erreur de parité dans lequel ces données sont contrôlées pour détecter une éventuelle erreur de parité. Le circuit logique de génération de parité et de contrôle de parité 616 contrôle les données du registre de données d'entrée pour engendrer et mémoriser dans la zone de parité 632, 2 bits de parité pour chaque mot de données de 16 bits, ou 1 bit de parité pour chaque multiplet de données pendant une opération d'écriture de mot ou de multiplet en mémoire. Pendant une Opération de lecture de mémoire, le générateur de parité et circuit logique de contrôle de parité contrôle également les données de sortie et la parité contenues dans les registres de données de sortie et de parité de sortie 612 et 614 pour chaque mot. Pendant une opération d'écriture de mot, les deux bits de parité sont mémorisés dans la zone de parité. Cepen dant, dans le cas d'une opération d'écriture de multiplet, seul le bit de parité applicable pour le multiplet mémorisé en mémoire est mémorisé dans 11a zone de parité. L'emplacement voisin dans la zone de parité pour le bit de parité opposée n'est pas concerné. Pendant une opération de lecture de mémoire, un mot de données provenant du registre de données d'entrée 606 et 2 bits de parité provenant du registre de parité de sortie 614 sont contrôlés dans le circuit logique de contrôle de parité pour détecter une éventuelle erreur de parité. S'il se produit une erreur de parité, une bascule d'erreur est mise à un dans un circuit logique d'erreur 626 pour envoyer un signal d'erreur de parité de mémoire à un niveau bas (MEMPER-) au bus de système, et pour faire fonctionner la diode à émission de lumière (LED) indicatrice d'erreur de parité 618 sur la claquette de mémoire principale. Le circuit logique de commande de lecture/écri-ture 620 contrôle le bus de système pour qu'un code de commande d'écriture/lecture, codé sur les lignes P#1RTB0+ et PN@RTB1+, soit décodé (voir figure 6) pour une commande de lecture (de mot3, une commande d'écriture de multiplet 0, une commande d'écriture de multiplet 1 ou une commande d'écriture de mot, et qu'il envoie la commande codée à la zone de mémoire RAM pour son exécution. Quand une commande de ra fraîchissement est reçue par la mémoire, la commande de lecture est automatiquement codée dans le circuit logique d'écriture/lecture 620 pour rafraîchir la zone de mémoire. Le circuit logique de rafraichissement 622 sert à déclencher et commander les cycles de rafraîchissement nécessaires pour remettre les données à l'état initial dans la mémoire principale (RAM) toutes les 2 millisecondes. La remise à l'état initial des données de mémoire RAM à intervalles de temps réguliers est nécessaire en raison des caractéristiques dynamiques d'un dispositif MOS de mémoire RAM (par exemple, quand un dispositif MOS de mémoire RAM est utilisé comme mémoire dynamique, une détérioration de ses données mémorisées commence au bout d'un temps déterminé à moins que celles-ci soient rechargées en mémoire avant l'expiration de ce temps). Ce circuit logique de rafraîchissement est défini pour déclencher un cycle de rafraichisse- ment toutes les 15 microsecondes pour maintenir les données dans une configuration de mémoire principale donnée. Le cycle de rafraîchissement à 15 microsecondes est déterminé par la zone de mémoire RAM à pastille de 16 Kmots (c'est-adire, 2 millisecondes/128 lignes = 15 microsecondes. Le circuit logique de rafraîchissement contrôle le bus de système pour la mise en oeuvre d'un cycle de rafraî- chissement par une commande de rafraîchissement normale (PMFRSH- étant à ZERO binaire). Cette commande doit être sur le bus de système 200 nanosecondes avant qu'une demande de mémoire (PMEMGO- à ZERO binaire) soit lancée pour alerter ..La mémoire qu'une.commande-de rafraichissement##a arriver. A la réception d'un signal de parcours de mémoire, le circuit logique de rafraîchissement accepte la commande, contrôle cette commande pour vérifier qu'il s'esttecoulé 15 microsecondes depuis la dernière commande de rafraîchissement normale, et lance un cycle de lecture de mémoire pour mettre en oeuvre la. commande. Le circuit logique invalide également tout transfert de données sur le bus de système pendant tout le cycle de rafraîchissement présent. S'il s'agit d'une commande normale, une ligne logique dans chaque pastille de mémoire RAM est alors rafraîchie (rechargée) avec ses données propres par l'intermédiaire du cycle de lecture présent. A la fin de l'opération, un compteur d'adresse de ligne de rafraîchis- sement progresse de un en attendant la commande de rafraichissement normale suivante. Si une seconde commande de rafraîchissement est reçue dans l'intervalle de 15 microsecondes, une opération de lecture est alors exécutée à un seul emplacement de mémoire spécifié par le registre d'adresse de mémoire, les données ne sont pas transférées sur le bus de système, et le compteur de ligne de rafraI- chissement n'est pas concerné. Le circuit de sélection de pastille 624 (désigne également circuit logique d'adresse de début) permet#'l'addi- tion d'-autres modules de mémoire principale dans une configuration de mémoire principale donnée. Il exécute cette fonction en déplaçant l'adresse de plaquette de mémoire principale dans la zone d'adresse d'une configuration de mémoire principale donnée. Il définit également une ligne physique 0 sur la plaquette de mémoire principale comme étant la première ligne de pastilles de mémoire RAM. Deux commutateurs sur l'assemblage de commutateurs d'adresse 638 forment une zone d'adresse binaire à 2 bits utilisée pour établir une des quatre adresses de début (OK, 16K, 32K ou 48K).Les quatre adresses de début présentent une position de ligne logique dans une configuration de mémoire principale ~donnée~ (ligne'logique'O ="'l6"-"Kraots, ligne 1 = 32 Kmots, ligne 2 = 48 Kmots et ligne 3 = 64 Kmots). Une description plus complète du circuit logique de sélection de pastille 624 est faite dans la demande de brevet des E.U.A. n0 921,292 faite par la Demanderesse le 3 juillet 1978, intitulée "Rotating chip Selection Technique and Apparatus". La mémoire principale du système a sa configuration déterminée en reliant de un à quatre modules de mémoire principale au bus de système B pour fournir un ensemble de mémoire principale de 16 à 64 Kmots. Chaque module de mémoire principale (ou plaquette) contient 16 K, 32 K ou 64 Kmots. Chaque mot se compose de deux multiplets de 8 bits pour les données et de 2 bits de parité (1 bit de parité par multiplet de données). L'ensemble de la mémoire principale doit être placé sur le bus de système B qui transmet certains signaux propres à la mémoire principale, ce oui n'est pas le cas sur le bus de système A. En outre, le processeur CPU doit connaître implicitement le bus de système sur lequel se trouve la mémoire principale de façon à ce que, lorsque des- données doivent être lues en mémoire principale, le processeur CPU puisse commander les émetteurs-récepteurs de lignes de données des deux bus de système (c'est-à-dire, l'emetteur- récepteur pour le bus de système sur lequel les données arrivent doit être commandé pour recevoir des données et l'émetteur-récepteur de l'autre bus de système doit être commandé pour transmettre les données).Par la commande des émetteurs-récepteurs des deux bus de système faite par le processeur CPU de cette manière, les données sur les bus de système A et B sont identiques et, pendant le cycle où les données arrivent de la mémoire principale, le processeur CPU n'a pas besoin de prendre en compte le bus de système sur lequel se trouve le contrôleur IOC qui fait ùne demande.On notera que, pendant le cycle où les données sont envoyées à la mémoire principale, le processeur CPU prend en compte le bus de système sur lequel se trouve le contrôleur IOC de sorte que les émetteurs-récepteurs de bus de système peuvent être commandés pour recevoir des informations du bus de systène sur lequel le contrôleur IOC se trouve et pour transmettre des informations à l'autre bus de système, ce gui permet d'assurer que les données (ou adresse) sur les deux bus de système sont identiques. La mémoire principale MOS est rafraîchie toutes les 2 millisecondes par un circuit logique se trouvant sur la plaquette de mémoire principale mais chaque ligne de pastilles de mémoire RAM n'est rafraîchie qu'après réception d'un signal de rafraîchissement provenant du processeur CPU. Le processeur CPU engendre le signal de rafraîchissement au moins une fois toutes les 15 microsecondes (15 microsecondes x 128 lignes = Z millisecondes). L'opération de rafratchis- sement prend deux cycles de processeur CPU pendant lesquels le processeur CPU n'a pas accès à la mémoire principale. Par la commande du rafraîchissement de mémoire principale faite par le processeur CPU de cette manière, le processeur CPU (et également tous les contrôleurs IOC qui communiquent avec la mémoire principale sous commande microprogrammée du processeur CPU) peut être assuré que la mémoire principale est disponible quand un accès à celle-ci. est tenté. Des signaux de bus de système ou un circuit logique de relance ne sont donc pas nécessaires pour signaler au processeur CPU que la mémoire principale est occupée par une opération de rafraîchissement et que la demande d'accès doit être refaite. Cette disponibilité de mémoire principale garantie réduit le nombre de lignes de bus de système et les circuits logiques de système nécessaires. La description qui précède n'a été faite qu'à titre d'exemple de réalisation de l'invention, et il est évident que la possibilité d'avoir des interruptions de matériel dans un système microprogrammé pourrait être appliguée à des contrôleurs IOC microprogrammés et à d'autres dispositifs sans se limiter à des processeurs CPU micropro programmés ou à des systèmes de traitement de données. On remarquera également qu'un emboîtement d'interruptions de matériel pourrait être obtenu en prévoyant un registre de retour d'interruption de matériel avec un dispositif d'empilage qui permette à une interruption de matériel de priorité supérieure d'interrompre une interruption de matériel de priorité inférieure avec un dispositif agencé de façon à interdire d'autres interruptions entre les séquences de micro-instructions qui ne doivent pas être interrompues car le niveau d'interruption de matériel en cours utilise des registres ou des indicateurs d'état non rémanents dont le contenu serait détruit par un microprogramme d'interruption de matériel de priorité supérieure. REVENDICATIONS 1. Système à commande microprogrammée comportant (230) une mémoire de commande/pour mémoriser un ensemble de microprogrammes, chaque microprogramme étant compose d'une ou de plusieurs micro-instructions, chaque micro-instruction étant compose'e d'une pluralité de bits, un dispositif d'interruption de matériel, ledit système étant caractérisé en ce que le dispositif d'interruption de matériel comprend: (248 -1) A. un premier moyen/ pour engendrer une adresse de micro-instruction suivante normale, cette adresse de microinstruction suivante normale servant à adresser une microinstruction suivante dans le microprogramme en cours d'exécution; (246-1,246-2) B. un second moyen, /relié au premier moyen et à la mémoire de commande, pour mémoriser une adresse de micro-instruction suivante, ladite adresse de micro-instruction suivante servant à adresser ladite micro-instruction suivante à lire en mémoire de commande(248 2 250 2) C. un troisième moyen, /pour engendrer une adresse de début de programme de service d'interruption de matériel microprogrammé qui correspond à une interruption de priorité la plus grande faisant une demande mais à laquelle le programme de service n'est pas encore accordé; et D. un quatrième moyen,(248-2) relié au premier moyen et au second moyen, pour engendrer une adresse de micro-instruction suivante par sélection entre ladite adresse de microinstruction suivante normale et ladite adresse de début de programme de service d'interruption de matériel microprogramme. 2. Système selon la revendication 1, caractérisé en ce qu'il comprend en outre: (250-2, 242,591) A. un cinquième moyen,/relié au troisième moyen et au quatrième moyen, pour engendrer un signal de sélection d'adresse ayant un premier et un second état; et (248--2) B. un sixième moyen,/inclus dans le quatrième moyen, par lequel, en réponse audit signal de sélection d'adresse, ladite adresse de micro-instruction suivante engendrée par le quatrième moyen est ladite adresse de micro-instruction suivante normale si le signal de sélection d'adresse est dans le premier état et ladite adresse de début de programme de service d'interruption de matériel microprogrammé si le signal de sélection d'adresse est dans le second état. 3. Système selon la revendication 2, caractérisé en ce qu'il comprend en outre: (593) A. un septième moyen,/relié au cinquième moyen, pour engendrer un signal d'adresse(2 te)retour à la mémoire; et B. un huitième moyen,/relie' au premier moyen et au septième moyen, pour mémoriser ladite adresse de micro-ins truction suivante normale en réponse audit signal d'adresse de retour à la mémoire. 4. Système selon la revendication 3, caractérisé en ce qu'il comprend en outre: (250-2) A. un neuvième moyen,/inclus dans le troisième moyen, pour engendrer un signal d'attente d'interruption chaque fois qu'un signal de demande d'interruption de matériel est pré sent dans le troisième moyen; et (531) B. un dixième moyen,/inclus dans le cinquième moyen, pour engendrer ledit signal de sélection d'adresse, -en réponse audit signal- d'attente d'interruption et à un signal de validation d'interruption, quand ledit signal d'attente d'interruption indique qu'une interruption est en attente et que le signal de validation d'interruption indique que les interruptions sont validées, 5.Système selon la revendication 4, caractérisé en ce qu'il comprend en outre:(243~1) A. un onzième moyen,/inclus dans le premier moyen et relié au huitième moyen, pour sélectionner ladite adresse de micro-instruction suivante normale à partir de l'adresse de micro-instruction suivante normale mémorisée dans le hui tième moyen et une autre adresse de micro-instruction suivante engendrée par le premier moyen, ladite sélection étant faite en réponse à un signal de sélection d'adresse de microinstruction suivante. 6. Système selon la revendication 5, caractérisé en ce que ledit signal de validation d'interruption est engendré en réponse à une première zone de commande d'au moins un bit contenue dans chacune desdites micro-instructions. 7. Système selon la revendication 6, caractérisé en ce que ledit signal de sélection d'adresse de micro-instruction suivante est engendré en réponse à une seconde zone de commande d'au moins un bit contenue dans chacune desdites micro-instructions. 8. Système selon la revendication 7, caractérisé en ce que ledit premier moyen comprend un multiplexeur (248--i). 9. Système selon la revendication 8, caractérisé en ce que ledit quatrième moyen comprend un multiplexeur (248--2). 10. Système selon la revendication 9, caractérisé en ce que ledit dixième moyen est une porte ET (591). 11. Système selon la revendication 1O, caractérisé en ce que ladite première zone de commande est un bit de chá- que micro-instruction. 12. Système selon la revendication 11J caractérisé en ce que ladite seconde zone de commande est formée par deux -bits de chaque micro-instruction. 13. Système selon la revendication 5, caractérisé en ce qu'une première interruption de matériel peut être suivie dans le temps d'une seconde interruption de matériel, Si ladite seconde interruption de matériel était en attente avant la fin d'exécution de la première interruption de matériel, de sorte que l'adresse de micro-instruction suivante normale mémorisée dans le huitième moyen ne devient pas l'adresse de micro-instruction suivante engendrée par le quatrième moyen à la fin d'exécution de la première interruption de matériel et avant le début d'exécution de la seconde interruption de matériel.