FR 2449928 A1 19800919 FR 8001951 A 19800130 La présente invention concerne de façon générale les systèmes de traitement de données et, en particulier, l'échange d'informations entre une unité centrale de traitement et des contrdleurs d'entrée-sortie auxquels des dispositifs périphériques sont reliés. Un système de traitement de données comprend habituellement une unité centrale de traitement (CPU) qui exécute des instructions de programme qui sont mEmo- risées a des adresses, ou emplacements, dans une mémoire principale. Ces instructions de programme sont transférées a l'unité CPU de façon séquentielle sous la commande d'un compteur de programme. Les données qui sont traitees sont transférées dans ou a l'extérieur du système par l'inter médiaire de dispositifs d'entrée-sortie, ou d'appareils périphériques tels que des téléimprimeurs, des disques magnétiques, des bandes magnétiques-ou des imprimantes ligne par ligne.Ces appareils périphériques sont habituellement reliés a l'unité CPU et a la mémoire principale par une interface connue comme un contrôleur d'entrée sortie (IOC). Dans un système comprenant un ensemble d'appareils périphériques relié a l'unité CPU par l'intermédiaire de contrdleurs d'entrée-sortie, il faut un système ordonné pour pouvoir effectuer le transfert bidirectionnel d'informations entre les contrleurs IOC et l'unité CPU et entre les contrleurs IOC et la mémoire principale. Ce problème se complique quand l'unité CPU et les contraleurs IOC fonctionnent indépendamment les uns des autres et qu'un dispositif fait une demande non sollicitée d'un autre dispositif pour des informations ou pour un service.Par exemple, l'unité CPU peut demander a un contrôleur d'entrée-sortie ltétat d'un transfert d'informations se produisant entre un appareil périphérique relié au contra leur IOC et la mémoire principale. Autrement, un contrôleur IOC peut faire une demande a l'unité CPU pour prendre en charge une interruption de sorte que le logiciel puisse être informé sur l'achèvement d'un transfert d'entrée-sortie. Dans ces deux cas, le dispositif qui fait la demande peut se rendre compte que le dispositif qui fait la réponse est temporairement occupé et incapable de répondre imm0- diatement à la demande. Différents procédés et dispositifs connus dans la technique permettent une telle interconnexion dans un système. Une réalisation dans laquelle le contrôleur d'entrée-sortie doit faire une demande de service a l'unité CPU est décrite dans le brevet des E.U.A. n0 3 866 181, intitulé "Interrupt Sequencing Control Apparatus". Une autre réalisation relative a plusieurs appareils connectés a un bus commun asynchrone dans lequel l'unité qui fait la réponse peut répondre par une réponse d'attente est décrite dans le brevet des E.U.A. n0 3 993 981, intitulé Apparatus for Processing Data Transfer Request in a Data Processing System". Un objet principal de la présente invention est un système de traitement de données perfectionné comportant un système qui peut attendre une réponse d'un dispositif connecté a un bus commun. Selon la présente invention, l'unité CPU, la mémoire principale et les contrôleurs d'entrée-sortie (IOC) sont connectés de telle façon que l'unité CPU commande tous les transferts de données entre la mémoire principale et l'unit CPU et entre la mémoire principale et les contrôleurs IOC. L'unité CPU peut envoyer une commande d'entrée-sortie aux contrôleurs IOC et le contrôleur IOC adressé peut répondre par un signal d'attente indiquant que le contrôleur IOC qui fait la réponse est temporairement occupé et que l'unité CPU doit continuer 8 essayer de relancer la commande d'entrée-sortie.L'unité CPU contient un dispositif qui lui permet d'interrompre l'essai de relance de la commande d'entrée-sortie E/S et de traiter des demandes de transfert de données ou des demandes d'interruption provenant du contrôleur qui fait la réponse ou d'autres contrôleurs et, après achèvement de prise en charge de la demande de transfert de données ou d'interruption, qui peut reprendre l'essai de relance de la commande d'E/S. D'autres caractéristiques et avantages de la présente invention ressortiront de la description suivante, donnée a titre d'exemple non limitatif, en référence aux dessins annexés dans-lesquels : - la figure 1 est un schéma de principe-d'ensemble 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 a 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ètede l'unité CPU selon l'invention ; - la figure 11 représente l'emplacement où les contenus de registres de l'unité CPU sont maintenus dans l'unité CPU selon l'invention 5 - la figure 12 est un schéma plus détaillé 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 nement 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'invention ; - 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/données du bus de système selon l'invention - la figure 18 représente des commandes d'entrée sortie codes 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'invention - la figure 20 représente un chronogramme de fonctionnement d'une séquence de commande d'unité CPU a 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 a une instruction de programme a d'entrée-sortie selon l'in- vention ; - la figure 25 représente les codes de fonction d'entrée-sortie des instructions de programme d'entrée sortie 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 figurés 27A et 27B représentent les formats de l'instruction de programme IOLD selon l'invention ; - les: figures 28A a 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 mbcaiparogramme d' unité CPU qui met en oeuvre l'instruction de programme IOLD re3résentée sur les figures 27A et 27B ; - la figure 30 représente l'interaction entre 1'instruction de programme IOLD et la table de programme de canal contenue dans la mémoire interprète d'unité CPU selon l'intention ;; - la figure 31 représente la liaison entre des branchements par matériel et des interruptions de programme selon l'invention ; - 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 figures 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 - la figure 35 représente le format du mot de microinstruction de microprogramme d'unité CPU selon l'invention X - les figures 35A a 35D représentent plus en détail les différentes zones de commande du mot de microinstruction de microprogramme d'unité CPU selon l'invention j - la figure 36 représente les opérations ex6- cules par un microprocesseur de l'unité CPU selon l'invention t - les figures 37A a 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 mltcroprogrknme 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 t - les figures 39A a 39C représentent les circuits logiques de synchronisation, de demande et de remise a 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 a 42C représentent un circuit logique de la mémoire de commande représentée sur la figure 9 ; et - les figures 43A a 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 iéalisation préféré de la présente invention et préciser les conventions pour cette description. Dans un système selon 1'invention, des signaux électriques indiquant des chiffres binaires (bits) sont envoyés 9 et engendrés par différentes portes logiques ou autres éléments de circuit. Pour plus de consision dans la description qui suit, les bits 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 ou de chiffres. Par exemple, sur la figure 14, BCYCOT- indiqué en haut a 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 UN binaire (ou état vrai), c'est un signal a un niveau haut et le signe moins signifie que lorsque le signal représente un ZERO binaire (ou état faux), c'est un signal a 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 PRoeED-2A est le signal de sortie d'un inverseur 546 et le signal PRoeED-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 seraitRDDT29+BA si le contrôleur IOC était connecté à un bus de système A et le signal serait RDDT29+BB si le controleur IOC était connecté a 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 PINTRI 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ésignes par RDDTOO+ a RDDT47+. Dans un but de simplicité, les portes logiques sont désignées sous le nom de portes ET, OU, NON-ET et b 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 utilisee 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é a 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 a 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 B, 202 et 204, sont utilisés pour relier entre-eux le processeur CPU 200, les contrôleurs d'entréesortie IOC 206, 208, 210 et 212, les mémoires principales/ 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 princtpales/controleurs IOC connectés a 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 controleurs d'entrée-sortie IOC chaque bus de système si la réali- sation concrète (les espaces de plaquette de circuit imprimé disponibles) du système le permet. Cornme.on le verra plus loin, la limitation a huit contrôleurs IOC par bus de système est due a 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 où 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 ; 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/contrôleurs d'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 a accès sélectif non rémanentes a 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 Etre rechargées a 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 a 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 semple 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 a un bus de système B 204. La figure 2 représente un processeur central avec 64 Kmots (1Kmot = 1024 moks) de mémoire principale, quatre appareils périphériques a 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 a 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 a 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 a 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 a 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 corsnande microprogrammée de processeur CPU et l'accès à la mémoire principale ne peut Etre déclenché que 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 desystè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 (DinA). 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 ou 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éalisation 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 Dom9, les informations de portée et d'adresse suivante de données sont conservées localement dans le contrôleur IOC consiéré. Les contrôleurs IOC sont définis exclusivement pour le systeme, et ils sont soit du type DMC, soit du type Data, 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 DMC, chaque paire de canaux d'entréesortie 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'entréesortie DMC. Cependant, les numéros de canal peuvent êtra affectés a un contrôleur d'entrée-sortie DMA 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 l'intermédiaire du tableau de connexion et du pupitre de commande. Le tableau de connexion permet a l'opérateur d'avoir accès au système pour son ini tial isation. Un schéma fonctionnel d'ensemble des blocs fonc-. tionnels 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 commandes 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 entre 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 a é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, c1est-à-dire, accessibles en utilisant une série d'instructions de programme. Le format et les bits significatifs 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 (Rî-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 (Ml) (huit bits commandant la validation d'analyse et d'interruption sur dépassement de capacité) ; un registre d'indicateus (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, supdrieur , 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 dE mot de données et d'adresse qui sont utilisés par le processeur 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 O à 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 a 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 a 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'a 128 Kmultiplets (îKmultiplet = 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 a un quand le multiplet 1 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 processeur 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 interfaces 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 voie de communications entre le processeur CPU, la mémoire principale et les contrôleurs IOC Ces bus de systdme distribuent aussi le courant d'alimentation aux çontrleurs 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'alimen- tation 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 chassjsdu 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 connecté 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) qu'à 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 (tE^6vAL et BWAC60 > 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 chfissis de ce bus. Tous les autres signaux transmis 8 par ce bus sont présents sur des broches identiques de chaque connecteur de bus à l'exception de deux positions. La broche de signal BCYCOT-BA (temps de sortie de cycle de bus de système A) d'un connecteur de bus est soudée à 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 P,:EMGO, PMFRSH, PBSFMD, gui 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 chassis 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 placée 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 IOC 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 par des contrôleurs IOC dans la meme 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 d'interruption 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 placé 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 mémoire principale ne fait jarnais 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-BB 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 commandes 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 interprete, 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 codées de façon à 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 l'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 matérielle dans l'ordre convenable pour l'intervention du processeur central CPU comme on le souhaite. Beaucoup de microprogrammes peuvent être exécutés pour un traitement par la partie matérielle (c'est-a-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 à 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 a 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 à 48 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éco- dage 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, a des bascules de commande 253, a des bascules diverses 264 et a d'autres circuits logiques du processeur CPU (voir la figure 8). Les dSoiEurs 244 commandent différents voyants indicateurs du tableau de connexion 201. Les bascules de commande 258 se composent de quatre bascules (CF1 à CF4) qui peuvent être mises a 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 D;*4G par la partie microprogrammée du processeur CPU pour garder en mémoire le bus de système tA ou B) auquel est connecté le contrôleur I0C 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çus du bus de système après y avoir été placées par un contrôleur d'entrée-sortie de D.2. 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 demicro-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 etre 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 a 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 dtinterruption 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érielle 250 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 être 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 partie 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'interruption 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électionnée, Le réseau de branchement principal ou majeur 256 engendre l'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 d' interruption de programme est utilisé pour former l'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 priorites. La partie microprogrammée utilise ces adresses pour effectuer un branchement au sous-programme microprogramm convenable pour prendre en charge la condition d'interruption. On notera qu'un branchement BMT pour contrôler des conditions d'interruption de programme n'est exécuté qu'au commencement d'une lecture dtinstruction de 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 connecté 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 a 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 (seul) 236 est une mémoire à accès 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 programme 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-hexadXcimal) 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 transfOrer dans la mémoire, en conservant 1'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ériaure) 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 etre utilisée pour un canal d'entrée ou de sortie car les canaux d'entrée/sortie sont semi-duplex (c1est-à-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 consecutifso 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 DIJIC: 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 produi'. avec le signal PTii4E4 si le bit O 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 DMC, 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 SPt4 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 SPL 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 SAs. provient du registre de numéro de canal 296 par l'intermédiaire du multiplexeur d'adresse de mémoire SPM 294, sur la figure 8.Quand elle exécute une opération de transfert de données de DMC, la partie microprogra=né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émorisées 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 a 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 microcrocesseur 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ées sur le bus interne par l'intermédiaire de 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 à 19 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écuté 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 regs rye 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 entre 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'intermediaire 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 approprié avec des données d'entrée de récepteurs des bus de système A-et Bau 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'tel fournit à I'entrée du microprocesseur 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 Ml 272 et dans le registre d'indicateur 270 sous commande microprogrammé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'écl irage 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 à P1'IME4 et BCYCOT) utilisés dans tout le système (voir les figures 14 et 15). On va maintenant décrire les moyens de comrtlande 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 cnaque groupe de lignes de données7adresses d'interface de système d'entre-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 pre- sent et engendrent des sous-commandes de commande de bus qui sont validées entre L'apparition des signaux PTIÎ1E1 et TIME4 du cycle en cours. Ces sous-commandes décodées valident des Voies de données spécigiques et permettent des transferts de données comme 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 fonctionnement 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 TOC, les émetteurs de processeur CPU à bus de système appropriés 282 ou 286 sont validés, ce qui entraîne le transfert de données du bus interne 260 jusqu'aux lignes de données/adrse cie bus de système validées.Si des données doivent être transférées d'un contrôleur IOC au processeur CPU, le signal de validation d'émetteur de donnes de contrôleur IOC approprié (PENBSA-ou PENBSB-) est décodé et envoyé par l'intermédiaire de l'interface d'entrée-sortie à tous les contrôleurs IOC sur le bus de système spécifique. Cependant, il n'y a que le contrôleur IOC ayant demandé l'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érees d'un contrôleur TOC 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 IOC 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 remnlacement de multiplet éventuel.Pendant un cycle de processeur CPU ul té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 la mémoire principale de bus de système B. Le signal de temps hors de cycle de processeur CPU (BCYCOT) est utilisé pour permettre une demande d'un bus de système pour un transfert de données ou une interruption par un contrôleur TOC. Ce signal assure qu'un seul contrôleur IOC 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 caque bus de système. Chaque contrôleur TOC accuse réception de l'impulsion et la retarde de 500 nanosecondes avant de la transmettre au contrôleur IOC suivant (voir Fig. 13). La période de temps pendant laquelle un contrôleur IOC retarde le signal est appelé temps d'entrée de cycle pour ce contrôleur TOC. 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 TOC 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 IOC 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 IOC est réalisée, celle-ci empêchant à tout autre contrôleur IOC d'avoir accès au bus de système. Pendant cette période de temps où le processeur et le contrôleur IOC sont connectés, d'autres contrôleurs laC 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. Cette liaison CPU-IOC est réalisée sous commande microprogrammée par invalidation d'interruptions de logiciel et de matériel jusqu'à ce que la liaison soit supprimée. La liaison CPU-TOC 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. Le tableau de connexion comprend un commutateur à bouton-poussoir (instantané} 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 sousprogramme microprogramme 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 TOC. 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 à décalage 291 est du type SN7496 fabrique par Texas Instruments Inc. à Dallas au Texas, et qui est décrit dans la publication intitulée '1The TTL Data Book for Design Engineersn, 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, PTI.MEO+ 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 soecifiques, comme par exemple le signal PTI^sO 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 mémoire de commande 242 et les décodeurs 244 sont validés (voir figure 9). L'apparition du signal PTIME1 valide tous les signaux de commande de bus de système qui restent validés jusqu'à la disparition du signal PTIME4, Le signal PTIMEO+ qui, lorsqu'il est inversé est un UN binaire entre les signaux PTIMEI 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 POTINE3 est envoyé à tous les contrô- leurs IOC sur les bus de système pour synchroniser le processeur CPU et les contrdleurs IOC Les données de bus sont validées à ce moment. Le signal PTIME4 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+ à PTIIsE4+, sont à ZERO binaire et que le signal de blocage d'horloge PFREEZ+ est à ZERO binaire pour indiquer que l'horloge ne doit pas être bloquée, le signal de sortie de la porte ET 293 PTIMIN+ é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 PTI.'E1+ à 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 PTIltEO- à PTIME4-). Pour plus de simplicité, seul un inverseur 297 pour le signal PTIEO+ est représenté sur la figure 14. Le signal PTIMEO+ 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 cite 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 PTIMEO+ de ZERO binaire à UN binaire, le compteur 292 en liaison avec la porte NON-ET 295 fait passer le signal BCYCOT- à 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 (b) 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 rdgressif. 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 PTIMEO+ 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 PTI4EO à PTI.ME4 et le signal de temps de sortie de cycle de processeur 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 dé UN à ZERO binaire au bord avant du signal PTIMEO du second cycle de processeur CPU et passe de ZERO & UN binaire au bord ayant 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 à l'apparition suivante du bord arrière du signal PTIME3)-.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 PTIPIEO, 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 I)C (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 TIME3 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-requ 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 égale- ment faite à partir du bloc 302 si la mise sous tension est déjà réalisée et que le bouton-poussoir d'initilisation 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 auto-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 à l'emplacement 0 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 MEnGBAL- à 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 0 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 à partir du boutonpoussoir d'initialisation, une initialisation complète doit être exécutée et une entrée est Eaite dans le bloc 312 Les contrôles QLT microprogrammes 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 logiciel 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 ltespace memoire principale disponible et L'exécution d'un contrôle développé de 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 dXveloppés de oLT 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 lOO de mémoire principale est exécuté et la séquence d'initialisation est exécutée dans le processeur CPU jusqu'a 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.dGfaut 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 remanents du processeur CPU qui perdent leurs informations si l' > limen- tation 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 principale 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 restée 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 opéra- tions de transferts d'adresses, de données et d'informations de commande entre le processeur et les contrôleurs IOC 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 processeur 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 rafraîchissement de mémoire principale ; et 3) des codes de fonction transmis aux contrôleurs TOC. 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 multiples 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 TOC 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 TOC 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 TOC sur le bus de système B a déjà remis la ligne PDMCR2 à ZERO binaire, mais le fait qu'un autre contrôleur TOC sur le bus de système A a déjà fait une demande de DMC en remettant la ligne PDMCR1 a ZERO binaire n'invalide pas la demande de DMC 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 AOC 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 transfert de DMA 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 DSE/DItC) 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 (interruptions) sont traitées comme des interruptions de logiciel dans le réseau d'interruption de logiciel 258. 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 IOC que les traitements nécessaires sont transmis par le bus de système. Des commandes de contrôleurs d'entrée sortie 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ée sortie 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 43C auquel la commande est envoyée est sur le bus de système A ou sur le bus de système B. Dans les c o la commande doit être envoyée à un seul bus de système, 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 IOC qui peut être sur l'autre bus, par exemple, en lançant une commande de processeur CPU (CPCMD)~à un contrôleur TOC, 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ènements 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 PWRTB1 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 DryA 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) rtLiltiplet(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 1' dresse (ou les données) provient d'un contrôleur de DMA 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 du à une demande de contrôleur IOC de DMA, le processeur CPU examine l'adresse par rapport à l'adresse maximale permise par l'établissement 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 a 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 contrôleur IOC doit recevoir des données, le processeur CPU valide les émetteurs de données de plaquette de mémoire (PBSFMD) 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 interne 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'erreur au bus de système A avec un signal d'erreur de contrôle de parité (PME3PAR). Si l'accès était dt 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 a. 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'opération de mémoire principale suivante. Si des données doivent être écrites en mémoire, le processeur CPU ou un contrôleur TOC 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 rafraîchissement 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 rafraîchissement de mémoire (P{FRSH) 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 rafraîchissement 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 rafraîchissement de mémoire à n'importe quel moment, en empêchant ainsi l'interruption du fonctionnement de processeur CPU pour l'émission d'un rafraîchissement 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 'TOC pendant l'exécution d'instructions de programme TO, IOH, IOLD, ce qui provoque le transfert vers ou à partir du contrôleur L3C 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 lancée par le processeur CPU qui émet une commande de processeur CPU (CPCMD) 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. te processeur CPU attend un temps maximal de 1,2 milliseconde pour recevoir une réponse du contrôleur TOC identitié 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.Le blocage du processeur CPU résulte de ce que le traitement d'un microprogramme de processeur CPU se fait en tourault sur une boucle pendant l'exécution de l'instruction de programme (IO, IOH, TLD), ce qui a pour effet de faire émettre une comman- de 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 CPU a 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 IOC 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 IOC est de forcer la ligne de traitement (PROCED) à ZERO binaire, ce qui signale que le contrôleur IOC n'est pas occupé et que le processeur CPU peut terminer la séquence. Si le contrôleur IOc adressé est du type D4A, il force également le signal PBYTEX à un niveau bas (ZERO binaire) pour informer le processeur CPU du type de réponse du contrôleur TOC. En détectant une réponse provenant du contrôleur TOC, le processeur CPU émet une commande de réponse (ASCMD) sur les lignes RDDT, ce qui entraine 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 ;!;OC sont reliés et la partie microprogrammée est affectée au transfert entre le processeur CPU et le contrôleur TOC. 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 TOC 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 (ASCMD), 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 ASCMD 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 TOC, et que les inter 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 D.MA, la ligne PBYTEX réfléchit le bit d'adres se de poids faible (décalage de multiplet) pendant l'inter valle de temps de fin-de-liaison. La liaison du processeur CPU-contrleur 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 DlMC quand le contrôleur IOC a besoin d'un multiplet de données soit transféré vers partir qu'usa tampon d'entrée-sortie de la mémoire principale. Cette demande ne peut être faite qu'après l'emission 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 21A, on peut voir que lorsqu'un transfert de données est nécessaire, le contrôleur IOC de DMC informe la partie microprogrannnée de processeur CPU en forçant la ligne de demande de données DMC (PDMCRX) à ZERO binaire sur le bus de système sur lequel le contrôleur IOC faisant la demande est place. 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 TOC. 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 DEIC. (PDMCRX) reste active jusqu'à ce que le processeur CPU fasse une réponse. L'activation de la ligne de demande de DAC 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 supérieures 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éception 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 DMC, 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 ASCMD, 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 microprogrammé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 d'adresse 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 finrde-portée (EOFRG) sur les lignes RDDT, ce qui indique au contrôleur IOC qu'il s'agit du dernier transfert (figures 21A à 21D) . Si les données doivent être lues en mémoire (figures Z1A à 21D), le processeur CPU exécute un accès à la mémoire, tous les remplacements de multiplet nécessaires et place les données sur les lignes d'adresseXdonnées 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 IOC par le signal PENBSX, le contrôleur IOC place les données dans la position un de multiplet (c'est- & dire 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 IOC à 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 TOC. La fin d'exécution de microprogramme de processeur CPU pour un transfert de données DMC 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 rafraîchissement 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 TOC 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 Dt4A. Un contrôleur IOC de D lance une séquence de transfert de données DtiA 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 dialogue de bus de système pour cette séquence. Le contrôleur IDC de DIS informe le processeur CPU qu'il requiert une demande de données DIA en forçant la ligne de demande de D2çLk (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 IDC sur ce bus de système particulier ; et 2) au temps principal 3 (nTI:AN3) de la période de temps d'entrée de cycle (BCYCIN- à ZERO binaire) pour ce contrôleur IOC. L'activation de la ligne de demande de DAS provoque une interruption de matériel du processeur CPU pour le traitement par microprogramme de processeur CPU de la demande deDMA. quand cela 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 DIS. Quand le contrôleur IOC détecte la commande de réponse à demande de D.E-Sk (ASDMA), il exécute immédiatement les opérations suivantes : 1) il remet la ligne de demande (PDlERX) à 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(sRTB1 et PRTBO. 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 (PMElGO) et la mémoire principale est échantillonnée par l'utilisation du signal PMEMCO. 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 (PM4PAR) sur le bus de système A et MESSER 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 (ASDMA); 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'adresse/données. 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émire, 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 détecta une erreur de parité, elle informe le contrôleur IOC en mettant la ligne d'erreur de parité de mémoire principale (HERSER) à 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 PMMPAR. Pendant le cycle de processeur CPU qui suit immédiatement le signal de in-de-liaison, la liaison de processeur CPU-contrôleur IDC est supprimée et les signaux d'erreur de mémoire (MENPER et PJ.AR) sont remis à zéro. On va maintenant décrire les moyens pour l'execu- 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 trans- fert de données est terminé 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'interuption d'E/S est une interruption de logiciel et non une interruption de matériel, d'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écute 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 microprogrammée du processeur CPU en forçant la ligne de demande d'interruption (PINTRX) à ZERO binaire. Cette ligne reste à zéro jusqu'à ce que le processeur CPU fasse une réponse. Le contrôleur TOC ne peut rendre cette ligne active qu'au temps principal 3 de cette période de temps d'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 demanded'interrup- tion 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 réalisé par microprogrammation de la partie microprogrammee 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. branche- ment au microprogramme de processeur CPU qui prend en charge le traitement de l'interruption d'E/S. Pendant le traitement de l'interruption d'E/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 proches seur CPU, la partie mi.croprogrammée de processeur CPU conserve l'état actuel du logiciel et commencé l'exécution du programme de logiciel associé A l'interruption d'E/S. Si la demande d'interruption d'E/S 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 (ASINT)sur les lignes RDDT. La ligne d'interruption est remise à zéro à la réception de cette commande par le contrôleur TOC. Le processeur CPU et le contrôleur IOC sont reliés et toute l'activité des bus de système, de la mémoire principale et du processeur CPU est consacrée à la prise en charge de la demande d'inter fuption 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 TOC 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 arrière, 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 PCR pour le canal DMC associé pour ignorer le caractère précédent. S'il ne s'agit pas d'une interruption d'espacement arrière, quand le processeur CPU reçoit le niveau d'interruption, il determine Si le niveau de priorité présente par le contrôleur IOC est supérieur à celui du traitement en cours d'exécution dans le processeur CPU. Si l'interruption de contrôleur IOC est de priorité 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 RESWX est transmise sur les bus de système A et B et contrôlée par chaque contrôleur IOC sur les bus de système. Quand un contrôleur IOC 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'/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 particulier. Comme la ligne de demande d'interruption d'E/S est remise à zéro parole contrôleurIOC réponse à la commande ASINT du processeur CPU, selon que le processeur CPU accepte ou rejette la demande d'interruption, 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 d'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 processeur 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'empilerl'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 dLE/S (empilé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'd ce que le contrôleur IOC reçoive une commande RESUM 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 RESURS 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 logiciel mais élève seulement le niveau de priorité de proches seur 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 a des interruptions d'emboltement 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, IOLD et IOH. L'exécution de ces instructions permet au 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 I 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 microprogramme 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 TOC.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 interruttions de matériel peuvent se produire puisqu'elles ne sont pas interdites par le contrôleur de temps microprogramme 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 TOC ou mémoire principale) connectée 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-a-dire les numéros de canaux OOOO a 0300 en hexadéci mal) de sorte que sur les 64 paires de canaux d'entrée sortie 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 IOC 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 dé l'instruction TO de programme). Le numéro de canal est également utilise 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 DMA 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 I3 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 TOC 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 DMA 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 représentés sur la figure 25. Les codes de fonction sp6- cifient la fonction d'entrEe-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 entr3e-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 considération les commandes de code de fonction de sortie. Les huit commandes de code de fonction de sortie sont décrites ci-dessous. Initialisation (FC=Ol). Cette commande permet de charger un mot de commande de 16 bits sur le canal. Des bits séparés provoquent les actions spécifiques : bit O = initialisation ; bit 1 = un arrêt d'entrée-sortie ; et bits 2 a" 15 = réservé pour une ùtilisation 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) ; oblige le contrôleur IOC a 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 ; provoque une interruption si elle est validée ; arrête brusquement un transfert en provenance du canal t et n'affecte pas d'autres canaux du même contrôleur TOC. 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 TOC 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 où 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 TOC. Si la commande est dirigée vers un canal DMC, l'adrese de multiplet est alors mémorisée dans l'entrée de table PCT appropriée dans le processeur CPU. L'adresse de sortie FC est utilisée en liaison avec une instruction IOLD 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 à 215il. Si la commande est dirigée vers un canal DYNE, 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 DMC, la portée est alors mémorisée dans l'entrée de table PCT appropriée dans le processeur CPU. La portée de sortie FC est utilisée en liaison avec une instruction IOLD de programme. L'utilisation de cette commande avec tous autres instructions d'entrée-sortie donne des rsitlca non spécifies. 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écifie que des appareils (ou des contrôleurs TOC). Une configuration de sortie est proposée 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 (foc=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 10 commandes de code de fonction d'entrée sont décrites ci-dessous. Commande d'interruption d'entrée (foc=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 à BUSXIS), Le format des données est tel que représenté sur la figure 17. On notera que le numéro de canal est celui du processeur CPU (c'est-a-dire zéro) et non celui du contrôleur IOC qui fait la réponse. Tache 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 à BUSXî5). Adresse d'entrée (FC=08). Cette commande permet à un canal DsTA 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 à BUSXi5). 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 approprie 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 (carré à 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 à un canal DMC, permet au processeur CPU d'extraire la portée résiduelle de l'entrée de table PCT appropriée dans le processeur CPU. Mot de configuration d'entrée A (FC=1O). 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 à BUSX15). Mot de configuration d'entrée B (FC=12). Cette commande permet au carde 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 r 18). Cette commande permet au canal de placer son premier mot d'état sur les lignes de données de bus de système (BUSE06 à BYx15). Mot d'état d'entrée 2 (FC = 1A). Cette commande permet au canal de placer son second mot d'état sur les lignes de données de bus de système (BUSXOO à BUSXl5). Les définitions des bits d'état sont spécifiques des contrôleurs IOC. Identification d'appareil d'entrée sFC=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 à BUSX15). 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 TO 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 ICC. Le code de fonction défini par l'instruction IO détermine la direction du transfert d'informations 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, a la fin d'exécution de l'opération d'entrée sortie, le logiciel utilise à nouveau l'instruction TO 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 26A 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 où OP = zone de code opération d'instruction. OP = 00000 (binaire) pour une instruction IO = 00010 (binaire) pour une instructioe Iode. DAS = syllabe d'adresse de données. Elle spécifie 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 IOH) 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 de 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 trans fé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 même que celui de DAS. L'exécution de l'instruction IO de programme est commandée par la partie microprogrammée de processeur CPU. La figure 28 représente un organigramme relatif à l'instruction IO. Lesopérations de bus de système pendant l'exécution d'instruction IO ont été décrites plus haut. Quand une instruction IO 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. S'il ne s'agit pas d'un des codes de fonction ci-dessus, les données sont transférées vers ou reçues du contrôleur TOC. Quand une instruction PO 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 organigramme 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'organigramme 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 microprogrammée 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 du code opération de 1' instruction de programme extraite de la mémoire principale est exOcut6. Si -le code opération de l'instruction de programme extraite de la mémoire principale est celui d'une instruction TO de programme, une entrée dans le bloc903 est faite, et le sousprogramme de microprogramme de processeur CPU associé à l'exécution de l'instruction TO 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 spécifiée, 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 contrôleur 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 fonction spécifiés par l'instruction IO 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 TOC sur les lignes d'adresse/données de bus de système (BUSXOO à BUSX15)(voir figure 17 le format de l'instruction TO). De plus, dans le bloc 906, le-processeur CPU envoie lå commande CPCMD sur les lignes RDDT de bus de système indiquant à tous les contrôleurs TOC 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 microprpgrammée commence le traitement de l'instruction IO dans le bloc 948 où 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'exécution dans le bloc 948 de traitement de l'instruction IO 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 microprograrnmé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 TOC 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'à 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'entree-sorcie (I) du registre d'indri cateur (I).Ce bit indicateur d'entrée-sortie du registre d'indicateur peut être contrôle 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 TO 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 TOC, elle indique que 'e 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-contrGleur IOC (voir figure 20) Après la suppression de la liaison processeur CPU-contrQleur TOC, 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.Une entrée est faite dans le bloc 923 et la partie microprogrammée 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 IOC. Comme l'exécution de L'instruction d'entrée sortie 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 l'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 microprograrrtnae dé 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 où 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ériau 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 DMk, un transfert de données DMC ou une opération de rafraîchissement 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 microprpgxammée de processeur CPU détecte une condition de traitement (c'est-à-dire, 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 924, la partie microprogrammée de processeur CPU met un WZ binaire dans la position du bit indicateur (T) d'entrée-sortie du registre d'indicateur (I) et mémorise également l'état de la ligne PBYTEX de bus de système dans la bascule PDMCIO pour un contrôle ultérieur du type de contrôleur TOC.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 lOC.de DMA. La partie microprogrammée de processeur CPU envoie ensuite au contrôleur IOC 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ôlé. 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 contrOleur 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-contrôleur IOC. Le bloc 928 termine le traitement de l'instruction IO de programme et le processeur CPU,sòrt ensuite au bloc 929 qui va à la partie microprogrammée de processeur CPU pour extraire l'instruction de programme suivante. A partir du bloc 926, sl 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 contrô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, les données extraites de la table de programme canal (PCT) ou reçues du contrôleur TOC, 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émorisation 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 mimes si le contrôleur IOC est un contrôleur 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 microprogrammée 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-sortie, 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 E/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é sur les figures 27A et 27B. L'instruction IOLD spécifie trois quantités : 1) 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 identifié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 IOLP comme le montre le format de la figure 27B. On se réfère maintenant aux figures 27A et 27B où: 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éesortie. 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 1-' 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 me que pour DAS (voir l'instruction IO de programme). L'exécution d'une instruction IOLD est commandée par la partie mleroprogrammé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 TOLD 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 contrleur IOC concerne, spécifiquement - instructions IOLD concernant des contrbleurs 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 porté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 co & de fonction. Transfert d'adresse. Le premier transfert est celui d'une quantité de 17 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 TOC 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 portée 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 'TOC de D5-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 mat de l'instruction de programme a son contenu conservé, une opération de raz fait 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 blocs 901 et 902 de la figure 29 sont relatifs aux memes micro-instructions que les blocs 901 et 902 de la figure 28. Dans le bloc 943, la partie nicroprogrammé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 spé- cifiés par l'instruction TOLD 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 Xu 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'entree-sortie). De plus, dans le bloc 947, le processeur CPU envoie la commande CPC.rD 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 CPChD 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 --ur 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 microprogrammde de processeur CPU détecte une condition de traît;nent, (c'est-à-dire un contrôleur IOC qui Omet une réponse) 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 (a) d'entrée sortie 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 ASCMD 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és pour déterminer le type de contrôleur IOC qui a répondu à la commande CPCMD. 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 début de tampon d'EjS 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 tampond'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 D$a, les contrôleurs IOC de DMC ignorent l'adresse de multiplet de début. L'émission de la commande EOFLK dans le bloc 956 au contrôleur IOC supprime la liaison processeur CPU-contrôleur TOC établie par la commande ASCMD émise dans le bloc 952. Dans le bloc 957, la partie microprogrammée de processeur CPU deten ine 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 pihysiquemrnt 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'adresse sage 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 TOLD 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 DNS, une entre est faite dans le bloc 962. Dans le bloc 962, l'adresse de multiplet de ébut du tampon d'E/S est envoyée au contrôleur IOC de DMA sur les lignes d1adresse/données de bus de système (BUSXOO à BUSXl5) (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 informe que l'adres-se se trouve sur le bus de système et par laquelle la liaison processeur CPU-contrôleur TOC é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-contrôleur IOC pour la seconde fois. Uneentré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 PDMCTO est contrôlée pour déterminer le type de contrôleur IOC et, si un contrôleur IOC de DIIC 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 memoire 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 TOC 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 a'aidresse/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-contrleur 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'instruc- tion IOLD sont les même si le contrôleur IOC est un contrôleur de DS ou s'il est un contrôleur de DMC. Les différences entre les controleurs de DSNN et de DMC sont masquées pour le logiciel par la partie microprogrammée de processeur CPU. Comme dans le cas de l'instruction TO 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 TOC de DA ou à un contrôleur TOC 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 microprogrammée 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 DMA 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 TOC. 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 IOK: 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 progralrune 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'ins- truction en cours. On considère 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 0 à 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 d'interruptions de logiciel sont affectés comme suit: un défaut d'alimentation a un niveau 0 (niveau le plus grand), un dépassement 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écimal), 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 0 à 2 (contrôles 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 çeut 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 (wYBZ). 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) (c'est-à-dire le niveau d'interruption 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 actif/inactif 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 microprogrammé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'ions 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 (TV). 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 de rEa- lisation préféré de l'invention comporte des vecteurs d'interruption qui sont utilisés pour traiter 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'opJration privilégiée (13), dépassement arith metique d'entier (6), opération non installée (non scSen- tifique) (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 diinterruption 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'interru}tion 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é Q010 (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 conser 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 em placement 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'inter ruption 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 chaînement. 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'interruption interne désigne une procédure de traitement d'interruption interne. Les zones de conser vation d'interruption sont associées à un niveau d'inter ruption de programme. Les vecteurs d'interruptions de programme désignent des zones de conservation 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 con tiennent 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 interruption interne. Le troisième emplac9ment -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 l'interruption 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) utilise 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 groupembnt. 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 gen-ral de la partie microprogrammée est représenté sur la figure 33. Le système est initiale 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 microprogramme 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 provoçusnc 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'ins- truction 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'in- terruption interne et commande le retour à l'instruction de programme suivante à exécuter (déterminée par l'évé- nement qui a provoque 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 microprogrammee refait un branchement à la séquence d'extraction d'instruction de programme. I si aleiniveau de priorité de programme d'interruption 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 360, 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'à 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'execution 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'a 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 programme de logiciel interrompu en réextrayant 1'instruction de programme qui a été interrompue entre son extraction et son exécution.Si le niveau de priorité de programme de 1'interruption de logiciel est inférieur ou égal au niveau de priorité comme il est déterminé encore par la partie microprogrammée 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 d1extrac- tion 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 changé gemment 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é- sentez 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érBtion 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 microprogrammee 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 (5W) dans le processeur CPU est représenté par le bloc 380. Dans l'exemple de réalisé sation 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 commande microprogramme.Sur la figure 34, trois instructions de programme sont représentées en détail, la précédente instruction de programme 3815, 1'instruction de programme présente 382S 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, 1'instruction de programme précédente peut être située à 1'emplacement 1000 de la mémoire principale et, s'il s'agit d'une instruction de branchement, elle peut faire un branciement à ltinstruc tion de programme présente située à 1 |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 3828 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 individuel le- ment 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 1 ' 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 établît 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 3815, une entrée est faite dans la partie microprogrammée d'ins- truction de programme 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-tou- jours une suspension du traitement de l'instruction de programme présente et peut, selon le niveau de priorité d'interruption 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 llinstruction 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 l'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 microprogramme 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 microprogramme se fait au microprogramme de la partie microprogrammée. dD 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 4'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'instruction 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'interruption de logiciel est acceptée et une. entrée est faite du bloc 389 dans le bloc 390 qui prépare la zone de conservation 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'èxécu- tion. L'instruction de programme de changement de niveau 391L est exécutée par le microprogramme d'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écu- 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 entraîne l'exécution du microprogramme d'instruction de niveau LEV 392 et de nouveau un contrôle pour dEter- miner 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 l'instruction de programme présente 382S 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 microprogrammé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érouîement 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 interruptíons 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 grammée d'exécution, dans le bloc 386, exécute les phases de microprogramme nécessaires pour terminer l'exécution de 1'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 detec- tees par le branchement de partie microprogrammée de processeur CPU dans l'attente de l'interruption de logiciel à une routine 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 qui 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ération 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'interruption 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'interruption de matériel associé.Le microprogramme d'interruption 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'interruption 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 mbnent à 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 1'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-a-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ériel,de porte que les microprogrammes d'interruption de matériel ne peuvent eux-mêmes être interrompus par une autre interruption de matériel (c'est-a-dire, les interruptions de matériel ne sont pas emboîtées alors que les interruptions de logiciel peuvent être emboitées). On va maintenant considérer les interruptions internes. Si on revient au bloc de partie microprogrammée d'exécution 386 CPU commence l'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 pro ces- 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 traitement de 1'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 prograrme 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 qui peut avoir été modifié par la procédure de traitement d'interruption interne 397 pendant le traitement de la condition d'interruption 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. ranis 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 l'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 1'instruction de programme suivante 3835. On peut voir que dans cet exemple, l'apparition d'une interruption interne provoque l'arret d'exEcution de l'instruction de programme présente et la fin d'exécution de 1'instruction de programme présente par la routine de logiciel de procédure de traitement d'interruption interne suivie de l'exécution de 1'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 microprogrammes 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écu- tion 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 entrainer l'exécution de 1'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'interrup- tion 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 micro-instruction de microprogramme de processeur CPU, qui est représenté sur la Figure 35. Le mot de micro-instruction est divisé en quatre zones principales qui sont subdivisées en différentes sous-zones. 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 à 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 microprocesseur (élément 268 sur la Figure 8) - Les sous-zones sont représentées sur la Figure 35A. 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, 5, 6 et 7 constituent les adresses d'emplacement de mot de mémoire interprète, des emplacements OO à OF sur la Figure lO, dans lesquels/desquels des données sont écrites ou lues.Les bits 2, 3 et 4 permettent d'adresser des registres dans la mémoire RAM de microprocesseur (fichier de registres 268 sur la Figure 8)* La zone de commande d'unité arithmétique et logique (ALU) du mot de micro-instruction de processeur CPU est représentée sur la Figure 353. 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 353. Les bits 8 et 9 réalisent la commande de type décalage alors que les bits 1O, Il et 12 déterminent la source des données à traiter. Les bits 13, 14 et 15 détermi- 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 atecriture/ lecture de mémoire principale quand le bit 23 est à UN binaire, ce qui indique qu'une opération de mémoire princi pale 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 35C. Les bits 20 à 35 constituent la zone de sous commande 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éra- tion 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 etre-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 egaux à 3 (hexadécimal), ce qui donne un Xchantillonnage de tableau de connexion, comme l'indique la Figure 37C, (les bits 24-26 sont égaux à oxo1, 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 OOll (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 microprograammé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 oxo), la partie microprogrammée effectue un branchement à l'adresse contenue dans les positions de bits 38 à 47.Quand un branchement sur contrôle est indiqué (Q1 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é (1O 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 l'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-a-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, OO à OF sur la Figure 1O, 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 l'adresse de mémoire RAM de microprocesseur) est toujours détermine 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 RSWM de microprocesseur à partir des différentes sous-zones du registre de fonction F est importante, car elle permet un décodage ra pide 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 l'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édemment, le microprocesseur à 16 bits 232 de la Figure 8 est constitué 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 dispo sué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 micro instruction 8 et 9 assurent la commande de type de décalage en commandant les bits décalés dans et hors des microprocesseurs en cascade à bit de poids fort et à bit de poids faible. Les bits 1O à 12 déterminent la source ALU de microprocesseur et sont utilisés pour commander directement chacun des quatre microprocesseurs en pastilles . Une définition exacte de ces bits est 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 éga- lement 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 CD) 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 considé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 Ml 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élec- tion 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 1O) 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 32 à 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 1 t 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'in- terruption qui peuvent être décodées à partir des bits 28 à 31 (bits 24 à 27 sont ignores). La Figure 37B donne la liste des commandes de tableau de connexion qui sont décodées à partir des bits 28 à 31 quand les bits 24 à 27 sont égaux à OOll (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éco- dé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 utili sé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 à oe (binaire), la partie microprogrammée effectue un branchement à l'adresse contenue dans des positions de bits 38 à 47 en utilisant l'adresse à 1O 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 à 1O 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 aw un contrôleur d'entrée-sortie IOC,-apres avoir décrit le fonctionnement du processeur central, des contrôleurs TOC et des différents dialogues sur les bus de système. La Figure 38 est un schéma logique d'un contrôleur TOC réalisé selon la présente invention. Les sections principales du contrôleur TOC représenté sur la Figure 38 comprennent : un circuit logique de synchronisation 40Q, 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 TOC (signaux PTIME3 + 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 TOC est le premier contrôleur TOC 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 TOC suivant. En outre, le circuit logique de synchronisation 400 est utilisé pour engendrer un signal d'initialisation de contrôleur TOC (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 TOC (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 (PDMAPK- ou PDMCPX. ~ ) à ZERO binaire pen- dant la tranche de temps du contrôleur TOC Si le contrôleur TOC 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 TOC de DMA ou de DMC sur ce bus de système particulier.Pour des contrôleurs IOC de DMA, la ligne de demande de DMA (PDMARX-) est utilisée tandis que la ligne de demande de DMC (PDMCRX-) est utilisée pour des contrôleurs TOC de DMC Le circuit logique de demande d'interruption 404 est utilisé pour mettre la ligne de demande d'interruption de bus (pTNTRX-) à ZERO binaire pendant la tranche de temps de contrôleur TOC Si le contrôleur TOC souhaite interrompre 1'exécution du programme en cours dans le processeur CPU et Si un autre contrôleur TOC sur le bus de système particulier n'a pas déjà mis la ligne de demande d'interruption à zéro. Le contrôleur TOC lance une séquence d'interruption chaque fois qu'un changement d'état dans un des appareils périphé- riques connecté au contrôleur TOC est détecte 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 TOC 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 TOC donné peut comporter à la fois une demande de DMA ou de DMC et une demande d'interruption en attente de façon concurrente.Cela est le cas en particulier pour des contrôleurs TOC qui comportent plusieurs appareils périphériques qui leur sont connectés de sorte qu'un appareil peut avoir termine 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 decrire 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'identSfi- cation ID d'état et de dispositif 437, d'un circuit lovique 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 TOC de DMA. Le circuit logique de commande 409 décode les commandes pour la commande d'entrée-sortie et les codes de fonction adressés au contrôleur TOC. Le circuit logique de commande détermine : Si le contrôleur TOC peut accepter la commande d'entrée-sortie et met la ligne PROCED ~ à ZERO binaire; si le contrôleur TOC est occupé et met la ligne PBUSE- à ZERO binaire; ou Si le contrôleur TOC est provisoirement occupé, il met les deux lignes PROCEDw 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 TOC, 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 TOC, 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 TOC. 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 DMYCMD à 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 TOC contenu dans le commutateur de numéro de canal 411 sont les seules à être acceptées par le contrôleur TOC. 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 sequence que le contrôleur TOC exécute tout en exécutant n'importe quel type de commande d'entrée ou de sortie (voir Fig. 2Q). Pour des commandes d'entrée, le contrôleur TOC 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 TOC transfère les informations de commande di 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 TOC 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 particuliero 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 périphé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'interruption 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'árr8t est terminée.Quand une de ces conditions est satisfaite, un cycle d'interruption est lancé et le contrôleur TOC 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 TOC charge le 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 TOC 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 TOC relance la demande d'interruption. Le circuit logique dgidentification d'état et de dispositif (ID) 437 est valide par le contrôleur TOC pour mémoriser le mot (ou les mots) d'état et le code d'identif i- cation ID de dispositif. Le mot d'état 1, 439 et le mot d'état 2, 441, contiennent 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éci- fique du contrôleur TOC considéré. Le mot d'état 2 n'est présent que dans les contrôleurs TOC 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 repré- sente le type de dispositif ou appareil périphérique connecté au contrôleur TOC. 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 d'adresse/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) MEM ER- (sur le bus de système B) et PMMPAR- (sur le bus de système A) est introduit par le circuit logique d'identif i- 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 DERSNT- et DMCINC pour que le circuit logique de demande de DMA ou de DMC 402 remette le signal PDMXRX- (pour des contrôleurs TOC de DMA) ou le signal PDMCRX-. (pour des contrôleurs TOC de DMC) à ZERO binaire. Si le contrôleur TOC est un contrôleur de DMC, une demande de DMC est envoyée au processeur CPU à partir du contrôleur TOC (voir les figures 21A à 21D). Le processeur CPU accuse réception de la demande et le numéro de canal de contrôleur TOC est chargé sur les lignes d'adresse/dqnné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 TOC (pour une sortie) ou par le contrôleur TOC 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 de données 425 ayant 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 TOC de DMC, il n'y a pas de circuit logique d'alignement de multiplet de données 427. Pour des contrôleurs TOC de DMC, l'alignement de multiplet de données est réalise par le processeur CPU quand les données sont transférées du contrôleur TOC de DMC à la mémoire principale ou de la mémoire principale au contrôleur TOC de DMC. Le circuit logique d'adresse et de portée 445 n'existe que dans les contrleurs TOC de DMA. Dans les contrôleurs TOC 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 fonction 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 TOC de DOMS. 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 fonc- tion 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 TOC 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'entree--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 accuse de réception du processeur CPU en réponse à une demande de DMAr le contrôleur TOC 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 1'accusE 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 (P;mRTB0+ 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+ à BUSX15F) et le processeur CPU rend la ligne de validation de bus pour le processeur CPU tPENBSX-) 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 TOC 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 TOC 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'i1 se produit une erreur de parité de mémoire principale, le processeur CPU notifie cette erreur au contrôleur TOC de DMA en mettant à zéro le signal MEMPER-/PMMPAR- pendant la commande de fin-de-liaison. Le cycle de DMA est termine 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 n'existe que dans les contrôleurs TOC de DMA. Pendant des opérations de sortie de DSE, 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 cadré convenablement sur les lignes d'adresse/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 etre écrits dans la mémoire principale.Celui ou l'es deux multiplets qui sont écrits dans la mémoire principale sont commandes par les signaux PWRTBO+ et PWRTBî+ 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 TOC. Comme on l'a expliqué plus haut, chaque contrôleur TOC 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 TOC sur le bus détermine quand c'est le moment de son cycle de bus de contrôleur TOC en utilisant les signaux PTIME3- et BCYCIN- en provenance du bus de système. Le signal de temps principal 3 (PTIME3-) est distribué à chaque contrôleur TOC 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 nanose-. condes 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 (BçYCIN-) d'un contrôleur TOC particulier est le signal de sortie de cycle de bus de système (BCYCOT-) du contrôleur TOC précédent (c'est- -dire, le contrôleur TOC 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-a-dire, un UN binaire apparaît à leur sortie Q). La bascule dewmon temps '3 est remise à zéro uniquement pendant la période de temps principal 3 du contrôleur TOC 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 TOC considéré. On notera que les expressions contrôleur TOC présent, contrôleur TOC précédent ou contrôleur TOC suivant sont en relation avec la position physique des contrôleurs TOC sur le bus de système. Ainsi, si l'on se réfère à la figure 1, le contrôleur TOC présent est le contrôleur TOC 208, le contrôleur TOC précédent est le contrôleur TOC 206 et le contrôleur TOC suivant est le contrôleur TOC 210. Le contrôleur TOC précédent est le con frôleur TOC voisin qui est plus proche du processeur central sur le bus de système.Le contrôleur TOC suivant est le contrôleur TOC 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 (PTIME+20) passe de l'état ZERO binaire à 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 TOC 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 signal de sortie Q (DMYTM3-) est à UN binaire et il est envoyé à la bascule d'entrée de cycle 410 quand le signal PTTME3-30 passe de l'état ZERO binaire à l'état UN binaire à la fin du temps principal 3. Le signal PTIME3-30 est le signal de sortie d'un inverseur 414 qui inverse les signaux de sortie de la porte ET 412. La relation entre les signaux d'horloge PTIME3+20 et PTTME3-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 PTT1E3+20 est à ZERO binaire et le signal- PTTME3-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 P. 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 changé 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ôle leur TOC précédent. Au temps C, qui correspond au début de la seconde période de temps principal 3, le signal PTIME+20 est à nouveau transféré de l'entrée D de la bascule 408- aux sorties de celle-ci et à ce moment, comme le signaI 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 TOC présente, le signal d'horloge (PTIME-30) de bascule d'entrée de cycle 41Q 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 (DMYTS3-) 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 TOC présent. La remise à zéro de la bascule d'entrée de cycle 410 fait passer le signal BCYCOT-.a sa sortie Q à ZERO binaire qui, quand il est envoyé à l'entrée de mise à un (S) de la bascule 408, de temps 3r 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 38 le signal d'horloge (PTIMES-30) de la bascule 410 passe à nouveau de ZERO binaire a Uw 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 TOC présent et autorise le début de temps d'entrée de cycle de bus de système du contrôleur TOC 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 PCLEARS 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 sys- thè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 signai de sortie de la porte ET 418 est à UN binaire, 1'inverseur 420 engendre un signal à ZERO binaire à l'entrée de mise à un (S) de la bascule d'entrée de cycle 4l0, 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 à 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 TOC 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 TOC présent de 500 nanosecondes (temps D à E). On va maintenant décrire le circuit logique de demande de contrôleur TOC. 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 simrlicite, 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 TOC était du type de nrDr 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 D}Dr en utilisant le signal PDMARX-. Initialement, une bascule de besoin de DMC 424 est remise à zéro, ce qui indique que le contrôleur TOC 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 TOC. 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 DMCTNC- à 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 à 1' é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 TOC 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 TOC sur le même bus de système n'est pas déjà en train de demander un cycle de DMC.Si un autre contrôleur TOC sur le meme bus de système n'est pas en train de demander un cycle de DMC, le signaI de demande de DMC PDMCRX- sur le bus de système (indique comme signal DDMCRX- 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 TOC sur ce bus de Système. Quand il y a un UN binaire à deux des trois entrées 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 à l troisième entrée, DMETM3s, 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 DMYTM3- passe à ZERO binaire (donc le signal DMYTM3+ 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 TOC présent en faisant passer le signal PDMCRX- de la ligne de 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 TOC 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 TOC 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 TOC 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 PCLEARs20 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 de DEZ 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 (ASDMC) 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 TOC 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 TOC 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 TOC est connecté, ce qui permet à u:i autre contrôleur TOC, ou au contrôleur TOC 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 TOC sur un bus de système particulier a une bascule de besoin de DMC mise à un, le premier contrôleur IOC a avoir sorS temps d'entrée de cycle accepte sur le bus de sysc::è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 volt que Si le tro--sième contrôleur TOC 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 TOC et le second contrôleur TOC mettent leurs bascules de besoin de DMC respectives à un et la bascule de demande de DMC du troisième contrôleur TOC est remise à zéro pendant le temps d'entrée de cycle de bus de système du premier contrôleur TOC, le second contrôleur TOC 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'S 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 TOC sur le même bus de système avant que le quatrième contrôleur TOC 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 TOC. Le fonctionnement du circuit logique de demande d'interruption 404 va être décrit en référence à la figure 39. 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 TOC 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 DBTNOK+ à UN binaire.Plus tard, pendant le temps d'entrée de cycle du contrôleur TOC particulier, l'apparition du signal de synchronisation DMYTM3+ passant à UN binaire valide une porte NON-ET 436 extrait 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 dtinterrup- tion sur le bus de système particulier, correspondant au signal PINTRX-, est à UN binaire, ce qui indique qu'aucun autre contrôleur TOC sur ce bus de système particulier n'a déjà mis sa bascule de demande d'interruption à un.Si les trois entrées de la porte NON-ET 436 sont à UN binaire, le signal de sortie DMYINT- de cette porte passe à 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 TOC 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 TOC présent soit remise à 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 DTNTCY+ à 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 TOC. Le fonctionnement du circuit logique de remise à zéro de demande de contrôleur TOC 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 micropro.gram- mée et codées en binaire sur les lignes de bus de système RDDT2f à 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 apparait 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 apparait à 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'échantil- lonnage 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 PIOCTX- est 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 oui doit être échantillonnée, c'est-à-dire transférée par le bus de système sélectionne, soit le bus de système A, doit 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 (PTOCTX-) est transmis de façon conditionnelle à un seul des bus de système de sorte qu'un seul des deux contrôleurs TOC 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'échantillon- nage 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 TOC 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'entrée 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. On va considérer maintenant la génération du signal d'horloge DMYLXC+ 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, la sortie de la porte ET 452 est à 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 système ffiDDT29+ à RDDT31+ et que la bascule de demande de DMC du contrôleur TOC 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 PTIMES+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 ntim- porte quel moment donné, une seule aes 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 apparait 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 a '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 TOC particulier est mise à un.Si la bascule de demande de DMC de ce contrôleur TOC 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 engendre uniquement Si pour tn contrôleur TOC : 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 respecti-. vement connectées aux entrées de données de la bascule de. liaison de commande 446 et de la bascule de liaison d'interruption 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 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 misle à 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 TOC 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 TOC 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 TOC 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 TOC considère sur les lignes de bus de système BUSXOO+ à BUSXO9+. Pendant la séquence de commande de processeur CPU envoyée au contrôleur TOC 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 TOC compare le numéro de canal sur les lignes de bus de système (BUSXOO+' à BUSXO9+) à celui d'un commutateur positionné manuellement dans le contrôleur TOC qui a été prépositionné pour indiquer le numéro de canal du contrôleur TOC particulier. Si le numéro de canal sur le bus de système égale celui du contrôleur TOC, la bascule de commande de processeur CPU 470 est mise à un par le signal DMYa4D- 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 DCMDR3 en presence d'une remise à zéro principale sur le bus de système (signal PCLEAR+20 par l'intermédiaire dune 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-a-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 TIME3+40 est engendre par un inverseur 476 qui inverse le signal de temps principal 3 PTTME3-30 et le signal DEOFLK+ est engendre 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 TOC 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 TOC 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 TOC 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 Dl du registre de fin-deliaison 464 passe à la sortie Qi 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 DLM)l+ étant à UN binaire à la sortie QI 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 TOC 468 et les autres bascules de liaison 446, 450 et 454 et termine la séquence pendant laquelle le contrôleur TOC 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 PCLEARs20 à 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, ctest-a-dire le signal DELXD2-, 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 DELXD2- à 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 système) 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, une commande de bus de réponse de DER ou de réponse de DMC. Comme on l'a vu précédemment, le signal d'horloge de bascule de liaison DMYLKC+ est engendre 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 DelYLKC 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 où le signal DM"LXS+ à 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 à ZERO binaire. Cette condition est satisfaite Si le microprogramme de processeur CPU ne code pas deux micro-instruotions 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 TOC de DMA. Un contrôleur TOC donné dans le système est un contrôleur de DS1N 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 TOC de DMC mais elle est applicable également aux circuits logiques d'un contrôleur TOC de DMA. C'est ainsi que sur la figure 39, la bascule de besoin 424, la bascule de demande 4?8 et la bascule de. liaison 454 pourraient également être les bascules de con frôleur TOC de DMA, auquel cas le signal de réponse de DMA (DASDMA-) provenant du décodeur de commande 442 aurait été utilisé pour mettre la 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 TOC 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 TOC particulier et de faire passer le signal de synchronisation d'entrée de cycle BCYCIN du contrleur 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 jusqu'au contrôleur TOC suivant. De plus, le circuit logique de synchronisation 400 engendre les signaux de temps principal 3 PTT3+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 TOC 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 DME, de DMC ou une demande d'interruption au processeur CPU.La mise à un d'une bascule de demande de contrôleur TOC, 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 TOC particulier sur le bus de système, ce qui élimine la possibilité que plus d'un contrôleur TOC 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-dtinterruption sur le bus de système A sont séparées et distinctes de celles du bus de système B, un contrôleur TOC sur le bus de système A peut, par exemple, faire une demande de DMC au même moment aucun autre contrôleur TOC sur le bus de système B fait une demande de DMC, car chaque contrôleur TOC est en train d'essayer de disposer de son temps d'entree 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 Dg) 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 qae les priorités entre les différents types de demande (c'est-a-dire, de DbEv, 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 sùpplé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 TOC peut remettre à zéro sa bascule de demande de DMC 428 et un second contrôleur TOC sur le même bus de systeme 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 TOC 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 TOC 428 a été mise à un au miment où le signal d'horloge PT3i:E3+20 a fait changer l'état de la bascule de demande de remise à zéro 460. Au moment du bord avant du signal PTT:.4E3+20 dans le second contrôleur TOC 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 PTTME3+20. Comme la bascule de demande de remise à zéro du second contrôleur TOC 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éroO La sortie de la porte OU 458 du second contrôleur TOC 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 TIME3+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 4S2 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 DMYLKC 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 (ASCED, ASTNT ou ASDMC) est reçue du processeur CPU sur les lignes de bus de système RDDT. Bien qu'un appareil périphérique donné connectE à un contrôleur TOC particulier ne fait pas normalement, à un instant donné, deux demandes de D (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 (DbSA 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 conséquence est que la bascule de demande du contrôleur TOC 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 TOC 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 PIQCTX- (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 TOC sur le bus de système A qui ont leurs décodeurs de commande 442 validés par la ligne de bus de système PIOCTA-, de sorte qu'il nty 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 TOC sur le bus de système A peut avoir sa bascule de demande de DMC mise à un, seul ce contrôleur TOC sur le bus de système A met à un sa bascule de liaison de DMC 454 et remet à zéro sa basculé 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 TOC 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 TOC qui fait une demande de DMC.Quand la bascule de liaison du contrôleur TOC particulier est mise à un, ce contrôleur TOC 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 TOC 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 parti- culier.Comme un seul contrôleur TOC 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 TOC fait la remise à zéro en remettant sa bascule de liaison à zéro. On remarquera encore que le processeur CPU peut transmettre 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 TOC 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 TOC sur un bus de système particulier et une fois qu'un dialogue de bus est lancé entre un contrôleur IOC et le processeur CPU, celui-ci peut avoir lieu indépen- damment du temps d'entrée de cycle du contrôleur TOC consi déré. Comme on l'a expliqué plus haut en référence aux figures 16J 17 et 18, la séquence normale pour des demandes de DMA, de DMC et d'interruption est : pour le contrôleur TOC, 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 tCPCMD) 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 " 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 (ctest- -dire, la période de temps pendant laquelle aucune bascule de liaison d'un contrôleur TOC n'est mise à un) sans tenir compte du temps d'entrée de cycle du contrôleur TOC considéré. On notera en outre que la séquence de dialogue de bus normale de demande de bus par le contrôleur TOC; 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 circllits 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 (4SDROO+ à RADIO9+) étant mis à zéro, l'emplacement zéro est lu dans ROS 1, 238-1, et dans ROS 2, 238-2, et il est charge dans le registre local 242 au début du temps principal O. Le mot de micr-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 1, 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 signalR:KSRf à 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, RARCLR- passe à 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 RADRO6+ à 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 KERROS- à l'entrée de validation de lecture (EN) est à ZERO binaire, la mémoire ROS 1, 238-1, adresse l'emplacement spécifie par l'adresse à 10 bits et place les signaux de sortie à 40 bits sur les lignes EROSOO+ à 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 825137 fabriqué par Signetics Corporation, à Sunnyvale en Californie, qui est décrit dans l'ouvrage "Signetics Bîpolar and MOS Memory Data Manual". Le mot de micro-instruction de 48 bits 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- quand 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 TO, RDDT38+ à RDDT47.Si les bits 36 et 37 de la micro-instruction présente spécifient une valeur Ol 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, ctest-à-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-a- dire, le signal RAS9+. 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 12 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 RM4BT2+ à RAiBT5+. 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 11 adresse à 10 bits est déterminée par les signaux RITROO+ à RITRO9+ provenant du registre de retour ô" interruption de.matériel 252. Les signaux de sortie du multiplexeur générateur d'adresse 1, 248-1, (RADM.OOt à RADMO9+) sont valides tant que le signal d'entrée (F) de commande de sortie, KENRAM-, reste à ZERO binaire. Le multiplexeur générateur 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 PHINTL+ est à ZERO binaire et les signaux d'entrée TO, RADMO6+ à RADMO9+, 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 POINT7+ à PHINT9+ sont sélectionnés et les quatre bits de poids faible de l'adresse de mémoire ROS à 10 bits sont determlnes.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 PTT'42+ 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 synchro nisé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 dune 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 d'interruption 250-1 sont connectées respectivement à : bus de système B de demande dtinterruption (signal PINTR2-), 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 PD4AR1-), bus de système B de demande de données DDEN (signal PDÇ-5LR2-), dépassement de temps de rafraîchissement de mémoire principale (signal PHMRFL-), et cycle de lecture de mémoire principale (signal PMRCYCw es signaux de sortie de demande de données DbEç 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, PHMPER-, et le signal de sortie d'une bascule de mémoire non existante 592r 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'ily 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 partie11e- ment 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 3su), le signal. RDDT35+ est à UN binaire, celui-ci validant complètement la porte ET 591 et met le signal de sortie PHINTL à 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 TIME2+ 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 à z6rt les six bits de poids fort de l'adresse de mémoire ROS à 10 bits en remettart à zéro le registre d'adresse 1, 246-1, et en sélectionnant la priorité codée de l'interruption de matériel par l'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. 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, PHIWTC+, 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 à I' inter- ruption 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-a-dire que les interruptions de matériel ne sont pas embotté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 RDD5'37+ à UN binaire, en sElectionnant les entrées 13 du multiplexeur générateur adresse lt 248-l, ce qui entrasse que l'adresse de mémoire ROS à 1O bits de la micro-instruction suivante est prise dans le registre de retour d Interruption de materiez 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, ctest- -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 d1înterruption de matériel 252 qui renvoie la commande au microprogramme initial interrompu (si aucune interruption de matériel n'est pas en attentez.Si une interruption de matériel est en attente pendant l'exécution de la derrsiere 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 13 (ctestS -dire, l'adresse mémorisée dans le registre de retour d'interruption de matériel 252) et met ses signaux de sortie Q (signaux RADMOO+ à RADMO9+) au même état binaire que l'entrée 13. 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 Il 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 d'exé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 materiez Si 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 où 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 (ctest- dire, consécutives) peuvent etre prises en charge sans qu'il y ait retour au microprogramme initial interrompu entre l'exécution de la première micro-routine et l'exé- cution de la seconde micro-tou*bine 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étermina- tion de dépassement de temps de rafraîchissement de mémoire principale Des bascules 572 et 574 sont utilisées pour qu'un signal de rafraîchissement de mémoire principale PHMRFL- soit engendre 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 fraichîssement à 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 PMRFT.M à 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îchissement à 16 microsecondes 574 est à ZERO binaire, le signal de sortie PHMRFH- du registre de demande d'interruption 250-1 est à ZERO binaire et entrain 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 SH- est à ZERO binaire. Le signal PMTFSH- 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 PRFSH+ est à UN- binaire à l'entrée de la porte NI 580, le signal de sortie de celle-ci, PXFRSH-, 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 KEFRSHest à 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 rafraî- chissement à 16 microsecondes 574, SHMRFL-,. passe à ZERO binaire 8 microsecondes après qu'un signal de rafraî- chissement de mémoire (PMPRSH-) 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 rair.atchis- sement suivant (PMFRSH- passant à ZERO binaire). Le signal PHMRFL- à ZERO binaire fait passer le signal PHMRFL- à '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 signal de sortie de la bascule à 16 microsecondes 574, PHMRFL- passe à ZERO binaire 8 microsecondes après le rafrat- chissement de mémoire précédent, il est important que la partie 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 rafrátchissement de mémoire se produit au bout de 8 microsecondes, entraînant un branchement microprogramme 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 P4FRSH- qui remet à zéro les bascules de rafraîchiss.ement 572 et 574 et entraîne l'envoi d'une seconde interruption de rafrat- chissement de mémoire principale 8 microsecondes plus tard.Comme les commandes de rafraîchissement de mémoire principale peuvent également !Ere codees 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 574). La fonction des bascules de rafraîchis- sement 572 et 574 est d'assurer qu'au moins un signal de rafraîchissement 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 MEMSER- est à ZERO binaire, le signal de sortie d'un inverseur 596, PMW ARI, 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 transferts de façon synchronisée dans le registre d'état du contrôleur TOC 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 demande. Le signal d'erreur de parité de mémoire principale PMMPAR à 1'entre de données (n) de la bascule d'erreur de parité 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 PBSFMQ 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 d un, ce qui 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 WI 584, faussant passer le signal de sortie de cette porte, PAReLR-, à ZERO binaire qui 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 r du type 5N74585 fabriqué par Texas Instruments Inc. à Dallas au Texas, compare les cinq bits de poids fort de l'adresse provenant du bus interne 260 (signaux PBUSOO+ à 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 PMEMGO+ 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 à 1 adresse d'un emplacement de mémoire et l'entrée de données (D) de labascule de mémoire non existante 592 indique si oui ou non l'emplacement adressé est physiquement 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. La 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'adres sage 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 TOC sur les bus de système A et B qu'un emplacement de mémoire non existant a ete adressé. Les contrôleurs TOC 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 à l'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 memoire non existante.Le traitement de 1'interruption de matériel de mémoire non existante permet à la partie microprogrammee 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 interruption de matériel est traitée et c'est l'interruption de materiel 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 rafraichisse- 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'interrup- tion de matériel de mémoire non existante, le signal P est à 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 DMA ou DMC, le signal PTTOGO- est remis à ZzR binaire pendant le cycle de processeur CPU (second cycles) qui suit le cycle pendant lequel le signal de parcours de mémoire est envoyé à la mémoire principale (voir figura 19). La remise à zéro du signal PTIOGO- fait passer le signal de sortie de la porte NI '584, PARCL à ZERO binaire, ce j remet la bascule de mémoire non existante 592 et la bascule d'erreur de parité 586 à zéro avant que les interruptions dé matériel soient validées par la partie microprogramSSe de processeur CPU, en empêchant ainsi les interruptions de matériel associées.La remise à zéro des bascules 592 et 586 masque les interruptions de me riel potentielles associées aux transferts de données en direction/en provenance des contrôleurs TOC et les empêche d'interrompre le déroulement d'exécution des microprogrammes de processeur CPU. Ce circuit permet aussi d'être assure 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 commande par la partie microprogrammée de processeur CPU pendant le dérou- lement 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 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 TOC 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 TOC ne contrôlent la ligne d'erreur que 'lorsque le contrôleur TOC est relié au processeur CPU, pour s'assurer qu'aucun signal d'erreur n'est dirigé vers ce contrôleur TOC, et une erreur de mémoire non existante ne serait donc pas visible par un contrôleur TOC de DMC pendant un cycle de transfert dedonnées d'entree. 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 1'instruction de programme IOLD avant que le transfert de données DMC soit commence (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 d'erreur de mémoire n'est 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 ope 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 TOC 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 considérer 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 5N74148 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 PFTTRP- 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 (Ml) (voir figure 4). Un signal PrATLF- est à ZERO binaire si Xn défaut d'alimentation imminent est détecté. Un signal PFINTî- est à ZERO binaire si un contrôleur TOC sur le bus de système A fait une demande d'interruption et le signal PFTNT2- est à ZERO binaire Si un contrôleur TOC sur le bus de système B fait une demande d'interruption. Un signal PFTTKL- est à ZERO binaire si un contrôle de temps est arrivé à expiration. Les signaux d'entrez du codeur d'interruption de logiciel 257-1 sont codés en binaire aux trois sorties de celui-ci qui engendrent les signaux POINT3+ à PFINT5+. Le signal de sortie de validation (I) PFTNTP- 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 257-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+ à RP2BT5+ quand les signaux de sélection de multiplexeur RDDT41+ à RDDT43+ sont égaux à 011 binaire voir figure 3su). 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 generateur d'adresse 1 248-1, ce qui permet à la partie microprogrammée de processeur CPU de contrôler la présence d'une interruption de logiciel en attente en spécifiant le branchement de contrôle multiple approprie dans la micro-instruction de microprogramme. Comme on l'a vu en référence à la figure 34, la partie microprogramme de processeur CPU est codée, de 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 lion 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 gemment initial 240 ou dans la mesaoire 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 est 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-instruc- tion 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 doic ê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-a-dire, les signaux RROS24+BT à RROS31+BT d'être engendrés en sortie. Quand le signal PENBBT- est à ZERO binaire, le signal à la sortie de l'inverseur 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+ à PROS31+ 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, PRFRî5+ à PRFR06+ 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 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 rEfXrence à la figure 35C que les 8 bits qui 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 mémoire 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é cotme e un registre conte- nant 48 bits. Dans l'exemple de réalisation préféré de l'inventionr 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 Te 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éro 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 PBUSO0+ à PBUS15s, qui sont utili sées pour le transfert des adresses et des données dans tout le processeur CPU. Les signaux de sortie à trois états de ltemetteur-rEcepteur de données A, 288-1, de ltemetteur- récepteur de données B, 284-1, et du microprocesseur 232 sont combinés 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 émet- teurs-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 ie.bus- interne 260 ou les prennent du bus interne 26Q 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'emetteur-rdeepteur A ou de l!emetteur-récepteur B est à ZERO binaire, les signaux aux entrées D sont placés sur les sorties Q (c'est-a-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 entrée 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-rEcepteur 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-recepteur 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 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 BUSB00+ à BUSB15+ et les transmet au bus interne et l'émetteur-récepteur de données 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 BUSA00+ à BUSA15+. Quand les données sont envoyées par le processeur CPU à la mémoire principale sur le bus de système B ou à un contrôleur TOC sur l'un des bus de système A et B, les deux émetteurs récepteurs de données A et B sont commandes pour prendre les informations et les transmettre au bus de système A et au bus de système B.Si un contrôleur TOC 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 associe 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 associé. En commandant les émetteurs-récepteurs de données A et B r 288-1 et 284-1, de cette manière, les données apparaissant sur les 16 lignes d'adresse/donnees sur les bus de système, sont toujours les mêmes. Si l'on considère maintenant l'émetteur-recepteur 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 37F3 qui est décodé par un décodeur non repré- senté), le signal PTIME0+ é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 l'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 tSO-1 (voir Figure 42) qui est chargé avec le signal PMRCYCde 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 17 244-3, par l'intermédiaire d'une porte NON-ET 534, quand les bits 24 à 2.6 é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 interne prê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 multi plexeur 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 êtrechargés dans le registre F 274, dans le registre I 270, dans le registre Ml 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 TOC 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 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 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 KON-ET 504. Un signal d'entrée de la porte NON-ET 504,-PIOCTL+, provient de la sortie de l'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 l'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 TIME3+ 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 Il 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 PSATOB+,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 RAS9+ est utilisé par la partie microprogrammée de 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 PDMCIOs, ou si le canal d'entrée ou le canal de sortie est utilisé quand le -signal RASBT9 est déduit du signal PSAIOB+. En plus du registre de numéro de canal 296, le signal PCLKCH- synchronise la bascule d'adresse/portée 502. te signal PCtKCH- permet le transfert du signal RDDT9+ à l'entrée de données (D) de la bascule d'adresseiportXe 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'adresseZportee 502 sont également commandées par les signaux PSAR7S- et PSAR7R-, aux entrées 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'adresse/portee 502, -PSAR07+, est envoyé à l'entrée Il 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 Il de bit de poids fort du multiplexeur 294 et quand les entrées Il 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'entré de PCT adressée par les 6 bits provenant du registre de numéro de canal 296 est concerne. C'est ainsi que si la bascule .d'adresse/portée 502 est mise à un, -ce qi 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 RDDTOî+ et RDDTO5+ à RDDTO7+. Cela vermet à quatre bits du mot de micro-instruction de processeur CPU d'adresser la mémoire SPM 236 quand les entrées TO sont sélectionnées par le signal RDDT22+ à 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 interprète 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 : " Intersil 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 PSDI00- à PSDIî5- 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+ à PSDO16+. 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 PTIME0- 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'entree de commande de sortie (F) de celui-ci. Les signaux de sortie du registre '518, PSDRD0+ à PSUR15s, sont envoyés aux entrées TO du multiplexeur de sélection de données 269. La bascule de remise à zéro 514 est mise à un quand le signal d'horloge PCLEAR- passe de l'é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, PCPCLFf, et le signal PSDO16+, 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 PTIME4+ 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érentes bascules. Par exemple, le signal pcPcLRs 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 2r 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, Z48-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 43, on va décrire la manière selonlaquelle 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 37P) mettent le signal à une des sorties de celui-ci, PSDEXEN-, à ZERO binaire.La sortie du décodeur de sous-commande 1 244-1 est part4ellement 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 TO 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 apparaSs- sant sur le bus interne 260. Si le signal PSDEXEN- est à UN binaire, les entrée Il du multiple.xeur de remplacement de multiplet 262 sontsélectionné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 26Q 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 don'né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 PAUD15+ à PAUD00+, de la sorte du multiplexeur de sélection de données 269. Le fichier de registres de microprocesseur est adressé par les bits PSPA03+ à PSPA01^+ et le bit RDDT04+. Les bits PSPA03+ à PSPA01+ 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 (INSTR)-, RDDT10+ à RDDT18+, qui sont obtenus à partir des bits 10 à 18 du mot de micro-instruction (voir figure 35B). Comme on 1'a décrit plus haut, les signaux de sortie de données du microprocesseur 232, PBUS15+CP à PBUS00+CP, sont combinés selon la fonction logique OU par un circuit approprié aux signaux de sortie de l'émetteur- récepteur A, 288-1, et de l'émetteur-récepteur B, 284-1, au point 509. Les signaux d'entrées Il du multiplexeur de sélec- tion de données 269 sont déduits des 8 bits du registre dtindicateur (I) 270, ctest-a;dire des signaux PI08+ à PI15+, et des signaux de sortie du registre de massue (MI) 272, PRMR00+ à PRMR07+. Les signaux des entrées 12 du multiplexeur de sélection de données 269 sont les signaux RDDT08s, RDDT09+ et RDDT24+ à RDDT31+.La sortie du multiplexeur de sélection de données 269 est sélectionne e à partir des -quatre entrées par les signaux RDDT20+ et RDDT21+ aux deux entrées de sélection tSEL) 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- tionnée -à partir : du registre de données de mémoire interprète 518; du registre I 270 et du registre Ml 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, Ml et P. 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 PTRFBS- est engendre par décodage des bits 24 à 27 du mot de micro-instruction qui, lorsque ceux-ci égalent 110 binaire, met le signal PTRFBS- à ZERO binaire (voir figure 37F)* Le registre de masque (Ml) 272 est synchronise par le signal PRMRCK- passant de l'état ZERO binaire à l'état UN binaire.Le signal PRMRCK- est engendre 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 Ml 272 est remis à zéro par le signal PCPCLR- à l'état ZERO binaire. On notera que les signaux d'horloge PTRFBS- et PRMRCK- sont engendrés par des décodeurs qui sont validés à une entrée de validation inversée par le signal PTIME4- qui fait passer ces deux signaux d'horloge à tz 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 FRO, 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 fabrique par Texas Instruments Inc. Le compteur FR2, 274-2, est constitué pa deux compteurs du même type SN74LS169A. La synchronisation des compteurs FR0, FR2 et FR3 est comandée par le signal PRFCLX+ d l'entrée d'horloge (C) de ceux-cix Le signal PPRCLR passe de l'état ZERO binaire à l'état UN binaire à la fii & dL'- temp prIncipal 3 si les bits 32 à 34 du mot de micro-instruction sont égaux à 100 binaire oir figure 5C) r Le chargement du compteur de registre F (FR0), 274-0, est commandé par le signal PFRLDO- à l'entrée de chargement S de celui-c. Le signal PFRLDO- est engendré parla combinaison logique NON-ET des signaux RDDT26+ et RDDT27+. Le chargeront du compteur de regIstre r (FR2), 274-2z est commandé par le signal PRFLDM- à entrée de chargement (L) de celui-ci. Le signal PFRLDM- est engendré par la combinaison logique NON-ET des signaux RDDT28+ et RDDT29+.Le chargement du compteur de registre X (FR3) avec les signaux du entrée pAUDl+ à PAUD12+ est commandé par le signal PFRLD3- à IL entrée de chargement (L) de celui-ci. Le signal PFRLD3est engendré par la combinaison logique NON-ET des signaux RDDT30+ et RDDTZ31+. Le compteur FRO, 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 > , 27ss-3, est validé pour compter en présence du signal RDDT30+ aux entrées de validation de comptage (P 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 progressif/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 progresif/régressif (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 à 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 trans fériés du processeur CPU aux contrôleurs TOC et s 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'émetteur- récepteur de commande A, 286-1, et l'rnetteur-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 TOC 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 TOC ou à la mémoire principale, ou peuvent être issus d'un contrôleur TOC et être envoyés au processeur CPU par llin- 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' & etteur-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 a 31 du mot de micro instruction et sont utilisés pour envoyer des commandes d'entrée-sortie E/S {voir figure 37E) aux contrôleurs TOC par les bus de système A et B et sont communs a metteurrécepteur de commande A, 286-1, et a 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, 22-1. Le signal d'initialisation PCLEAR- est aussi transmis suries 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-1J respectivement. Le décodeur de sous-commande 244-2 est validé au début du temps principal 1 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 canaux RDDT32+ a RDDT34+ et engendre les signaux PMRFSH-, PMECON-, 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 TOC sur le bus de système A que la commande d'E/S codée sur les lignes RDDT29+BA à RDDT31+BA est valide. D'une manière semblable, la porte NON-ET 538 est complètement validée par le signal R9DT28- à ZERO binaire. Cela met le signal de sortie de la porte NON-ET 538, PIOCTB-, à ZERO binaire, en indiquant aux contrôleurs TOC 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 dé 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 PBSTOA- PBSTOB- qui sont envoyés respectivement aux ports 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 à SERO binaire. Les portes NON-ET 521 et 534 sont complètement validées par le signal-PBSFMD+ à ZERO binaire.Le sianal PBSFMDs est le signal de sortie de 1'inverseur 520 qui inverse le signal PBSFMD- en provenance du registre de demande d'interruption 250-1 (voir figure 427 On va maintenant décrire les circuits logiques de traitement et d'occupation. Le signal de sortie PROCED- provenant du décodeur de commande dtE/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 TOC sur les bus de système que le processeur CPU a accepté la dernière demande d'interruption provenant d'un contrôleur TOC 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 TOC adressé sur le bus de système A ou sur le bus de système B a accepté la commande d"E/S sur les lignes de bus de système RDDT29+ a flDT."-1+. Le signal PBBUSY a la sortie du décodeur de commande d'E/S 1, 244-3, change dtsseat logique d'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 de s contrOle.u.rs TOC slar les bus de système A et B.Spécifiquement, le signal PBBUSY- est 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 PBBUSY-2A et PBUSY-2B sont envoyés aux entrees 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, 2a8-lr (voir figurc 42). On va maintenant décrire les circuits logiques d'deriture/lecture de multiplet Les signaux d'écriture de multiplet 0 et d'écriture de multiplet I, PWRTB0+ et pwRTB1v, peuvent provenir du processeur CPU par inversion du signal RDDT08+ dans l'inversé seur 524 et du signal RDDT09+ dans l'inverseur 526, respec tivement, ou ils peuvent être reçus d'un contrôleur IOC 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 TOC sur un des bus de système.Les signaux PWRTB0+ et PWATB1+ 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 PMMCYC+ de sortie d'une porte ET 564 est à UN binaire. Le signal de sortie de la porte NON-ET 531 PMBCYC-, 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 parcours de mémoire, qui informe la mémoire qu'elle peut exécuter un cycle de lecture, d'écriture ou de rafraîchissement, est principalement engendre 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 2A4-2 qui est inversé par l'inverseur 560 pour produire le signal PMRCON qui 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 PTCP04+, 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 PtECON-20 est à ZERO binaire et invalide la porte ET 564. La porte ET 564 étant Invalidée, elle empoche 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 eas (tels 'm > '. lc 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 lient à 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 donées de la bascule de parcours de mémoire 566 est transféré par le signal PTIME3+ passant de l'état ZERO binaire à l'état UN binaire au début du temps principal 3, ce qui fait passer la bascule à l'état un de même que le signal de sortie PMEMGO+CP passe à UN binaire.La bascule de parcours de.mEmoire 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 KMEMGO- est inversé par un inverseur 568 pour produire le signal PMEMoe+4P. 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 mOmoire 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équen- ces de répétition de mémoire. Son architecture de base est constituée par une configuration de mémoire unique définie pour fournir une capacité de mémoire d'écriture/lecture (RAM) comprise entre un minimum de 16 Kmots et un maximum de 64 Smots par 16 bits. Chaque mot de meoire 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-a-dire, deux cycles de processeur CPU consécutif s de 500 nanosecondes chacun), un temps d'accès pour la lecture de mémoire de 50Q 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 (ctest-S-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ôléurs TOC, 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 : BUSX00+ à BUSX15+, PTTME3-, PCLEAR-, PWRTBO+ PWRT3l+, > rEMPER-, PMEMGO- 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é- sentes 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 TOC. 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 mémoire principale donnée. On va maintenant considf5-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 comprise 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 1'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 tc'est-a-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 (0 à 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 etre 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 consdidé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 O à 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 l'unité de conservation de mémoire. L'unité de conservation de mémoire (élément 222 sur la figure I > 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 I 'unité de conservation de mémoire reste active, elle valide des cycles de rafraîchissement permanents jusqu'à ce que la source d'alimentation en courant alternatif soit rétablie. On va maintenant considffirer 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 PMEMCO- 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 mot 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 ernplacernent de 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 mEmoire. 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 engendre 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 O (de gauche) ou le multiplet 1 (de droite) est mémorisé dans un emplacement de mémoire, le multiplet d'emplacement voisin (opposé) de l'emplacement de mémoire n'est pas concerne. 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 que les 2 bits de parité pour détecter une éventuelle erreur de parité. Quand une erreur de parité est détectée, elle est verrouillee 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 principale 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 RhJ de chaque plaquette de mémoire principale. A la fin de l'opération, un compteur d'adresse de rafraîchissement progresse de un dans l'attente de la commande de rafraichisw 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 consé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'ecriture/lecture, et un signal de parcours de mémoire à un niveau bas (cgest- -dire que le signal PMEMGOw est à gERO 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 (PMEMGO-) est distribué à chaque module de mémoire principale de la confi- guration de mémoire principale donnée, et déclenche le :gerateur de signaux d'horloge 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éclenché 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'ecritureZlecFure 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 resultat satisEaisant 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éclen- che un cycle de mémoire pour une opération de lecture ou d'écriture dans la plaquette de mémoire principale sélec- tonné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 etsle 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é (KEMPER-) 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 plaque tes (modules) de mémoire principale qui montre les voies de transfert des signaux et des données entre les éléments. Les eIementsvclés ou .essent-iels.-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 fonctionner 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 (ctest- -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éra- teur 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 poü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, place 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 é ':1-e 'signal 'de mise sous tension de bus (BPOVIOM4) pour avertir la mémoire de toute interruption d'alimentation en courant alternatif unminente. Ce contrôle permet au processeur CPU de disposer de 2 millisecondes supnlementaires 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éfEat-ou coupure de courant alternatif, le module de mémoire principale est mis dans un mode de rafraichissement 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 d'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 des ligne 634 est transféré de façon synchronis-ee 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 Le circuit logique de ".ande etjde dìstriE,ution 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 O 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 principales 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 : 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 612sont utilisés comme tampons de données pour le transfert de données entre le bus de système -(BUSXOO+ et BUSXî5+) 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 sortit 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é. Cependant, 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 la zone de parité. L'emplacement voisin dans la zone de parité pour le bit de parité opposée n'est pas concerne. 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ôles 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 paris8 618 sur la plaquette de mémoire principale. Le circuit logique de commande de lecture/écriture 620 contrôle le bus de système-pour qu'un code de commande d'écritur-e/lecture, codé sur les lignes PWRTB0+ et Pz{RTBl+, soit décodé (voir figure 6) pour une commande de lecture (de mot), une commande d'écriture de multiplet O, 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-rafrarchir la zone de mémoire. Le circuit logique de rafraîchissement 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îchis- sement est défini pour déclencher un cycle de rafraîchisse- 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-a- dire, 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 rafrai 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 rafraNchissement va arrives 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'est écoulé 15 microsecondes depuis la dernière commande de rafraîchissement normale, et lance un cycle de lecture de mémoire pour rllettre 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ésente A la fin de l'opération, un compteur d'adresse de ligne de xafraichis- serment progresse de un en attendant la commande de rafraî- chissement 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 rafraî- crissement n'est pas concerne 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 O 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 (0K, i6K, 32K ou 48K) Les quatre adresses de début présentent une position de ligne logique dans une configuration de mémoire principale Kdo'nn'eé(ligne logique 0 = 16 Kmots, liane 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 li78, intitulée "Rotatiny chip Selection Techni.csze and pparatus". 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 qui 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'émetteurrécepteur pour le bus de système sur lequel les données arrivent doit être commande pour recevoir des données et 1'6metteur-récepteur de l'autre bus de système doit être commands 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 TOC qui fait une 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 bEs de système sur lequel se trouve le contrôleur TOC de sorte que les émetteurs-récepteurs de bus de système peuvent être commandés pour recevoir des informations du bus de système sur lequel le contrôleur TOC se trouve et pour transmettre des informations à l'autre bus de système, ce qui permet d'assurer que les données Cou adresse) sur les deux bus de système sont identiques. La mémoire principale NOS 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 = 2 millisecondes). L'opération de rafraîchis- 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 TOC qui communiquent avec la mémoire principale sous commande microprograsmee 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é qu'a le processeur CPU d'attendre et de relancer une commande d'E/S dirigée vers un contrôleur TOC provisoirement occupé pourrait être prévue dans d'autres exemples de réalisation de système dans lesquels les contrô leurs ne sont pas connectés à un bus commun ou dans lesquels le bus commun est un bus synchrone ou asynchrone. On remarquera également que la possibilité qu'a le processeur CPU d'attendre une réponse d'un contrôleur TOC est également applicable à un processeur non microprogrammé. On remarquera en outre que l'unité qui attend peut être une unité autre que le processeur CPU. Par exemple, un contrôleur TOC pourrait attendre une réponse du processeur CPU ou de la mémoire principale et continuer à traiter d'autres demandes provenant d'un ou de plusieurs autres dispositifs. REvENDIcATIoNS 1. Système de traitement de données comprenant un ensemble d'unités reliées par un bus commun (202, 204) pour transférer des informations entre lesdites unités, caractérisé en ce qu'il comprend : (200) (206-1 > A. au moins une première, (200) une seconde (200-1) et une troisième unités, (208-1) la première unité (200) constituant une ressource pouvant être partagée par au moins lesdites seconde ('06-1) et troisième unités (208-1). (230,232,234) B. des premiers moyens/inclus dans ladite première unité' pour envoyer un signal de commande sur le bus commun à la seconde unité, ledit signal de commande indiquant que la première unité souhaite avoir accès à la seconde unité o (234,254) C. des seconds moyens,/incîus dans la première unité, pour recevoir un signal d'attente sur le bus commun en provenance de la seconde unité, ledit signal d'attente indiquant que la seconde unité qui démet ce signal d'attente souhaite que la première unité attende et relance un signal de commande ; et (230,232,236) D. des troisièmes moyens,/inclus dans la premire unité, pour relancer ledit signal de commande en direction de la seconde unité. 2. Système selon la revendication 1, caractérisé en ce qu'il comprend en outre : (250) A. des quatrièmes moyens, /inclus dans la première unité, pour recevoir un signal de demande de transfert de données sur le bus commun en provenance de la seconde ou de la troisième unité ; (248,252) Bç des cinquiemes movens, 'inclus dans la première unité, pour suspendre ladite opération d'attente de la première unité et traiter ladite demande de transfert de données, en réponse au signal de demande de transfert de données ; et (236,248,252) C. des sixièmes moyens,/inclus dans la première unité, pour poursuivre ladite opération d'attente et relancer ledit signal de commande en direction de la seconde unités en réponse à la fin de l'exécution de l'operation de transfert de données 3.Système selon la revendication 2, caractérisé en ce qutil corpend en outre : (251) A. des septièmes moyens," inclus dans la première unité, pour recevoir un signal de demande d'interruption de la seconde ou de la troisième unité ; B. des huitièmes moyens,/inclus dans la première unité, pour interrompre l'exécution d'une opération dans la première unité et répondre à la demande d'interruption en réponse au signal de demande d'interruption ; et (230,232,236 C. des neuvièmes moyens,/inclus dans la première unité, pour reprendre l'exécution de l'opération d'attente et relancer le signal de commande en direction de la seconde unité, en réponse à la fin de l'exécution de l'opération d'interruption. 4. Système selon l'une quelconque des revendi- cations 1 à 3, caractérisé en ce que ladite première unité est une unité centrale de traitement de-données (200). 5. Système selon la revendication 4, caractérisé en ce que ladite unité centrale de traitement est une unité centrale de traitement mircroprogrammée (239, 232,234,236) 6. Système selon la revendication 5 caractérisé en ce que, le bus commun étant un bus commun synchrone, ladite unité centrale de traitement comprend des moyens de synchronisation (281, 282, 286) pour engendrer des signaux de synchronisation sur le bus commun. 7. Système selon la revendication 62 caractérisé en ce qu'il comprend en outre : (214-1) A. Une mémoire principale ,/ reliée au bus commun, pour mémoriser un ensemble de mots de données et d'ins- tructions de programme ; et (230,232,234 260,26Q) B. des dixièmes moyens, (230, 232, 234, 260, 269) inclus dans la première unité, pour traiter le transfert d'informations entre ladite mémoire principale et la seconde ou la troisième unité, en réponse à ladite demande de transfert de données. 8. Système selon la revendication 7, caractérisé en ce qu'il comprend en outre : (230, 242, 244) A. des onzièmes moyens, /inclus dans a première unité, pour engendrer ledit signal de commande destiné à la seconde unité, en réponse à une des instructions de programme, et (248,257) B. des douzièmes moyens, 1 inclus dans les onzièmes moyens de la premier unité, pour interrompre lesdits onzièmes moyens en réponse à un signal de demande d'interruption reçue dudit bus commun. 9. Système selon la revendication 8, caractérisé en ce qu'il comprend en outre : (230,248,250,252) A. des treizièmes moyens,/incîus dans la première unité; pour répondre sous commande microprogrammée à ladite demande de transfert de données reçue dudit bus commun; et B. des quatorzièmes moyens,/inclus dans la première unité, pour revenir au traitement de ladite instruction de programme qui a donné lieu à une transmission du signal de commande à la seconde unité, ladite reprise de traitement étant faite à la fin du traitement' de la demande de transfert de données. 10. Système selon la revendication 9, caractérisé en ce qu'il comprend en outre des quinzièmes moyens,/inclus dans la première unité, pour établir une priorité entre les demandes de transfert de données et les demandes d'interruption provenant du bus commun et pour répondre aux demandes de transfert de données dans un ordre de priorité donné et pour répondre aux demandes d'interruption après le traitement de toutes les demandes de transfert de données. 11. Système selon la' revendication 10, caractérisé en ce que, ledit bus commun comprenant en outre un ensemble de bus communs synchrones,/ladite unité centrale (200) de traitement est connectée à chacun desdits bus communs, la seconde (206-1) et la troisième unités (208-1) sont connectées à un des bus communs (202) et la mémoire principale (214-1) est conectée à un des bus communs (204). 12. Système de traitement de données comprenant une unité centrale de traitement (CPU), (200) une mémoire pri'ncipaîe,/ Y4u'r > ensemble de contrôleurs d'entrée sortie (IOC) (218-1, 220-1) reliés par un bus commun (204) pour transférer des informations entre ladite mémoire principale et le processeur CPU et entre la mémoire principale et ledit ensemble de contrôleurs TOC, caractérisé en ce que ledit processeur CPU comprend un circuit logique d'opération d'attente incluant :: A. des premiers moyens, dans te processeur CPU, pour envoyer un signal de commande sur le bus commun a n'importe lequel des contrôleurs TOC; Bo des seconds moyens, (230, 232, 234, 254) inclus dans le pocesseur CPU, pour recevoir un signal d'attente d'un des controleurs TOC, ledit signal d'attente indiquant que ledit contrôleur TOC est provisoirement occupé et ne peut pas présentement répondre audit signal de commande; C. des troisièmes moyens, (230) inclus dans le processeur CPU, pour recevoir des signaux de demande de transfert de données sur le bus commun de n'importe lequel des contrôleurs TOC; et 257 D. des quatrièmes moyens,/incîs dans le processeur CPU, pour recevoir des signaux de demande d'interruption de n'importe lequel des contrôleurs TOC. 13. Système selon la revendication 12, caractérisé en ce qu'il comprend en outre A. des cinquièmes moyens, (230,232,257-1) inclus dans le processeur CPU pour traiter la demande d'interruption de priorité la plus grande, et des moyens qui permettent de terminer 1'exécution de l'opération d'interruption présente avant de lancer l'opération d'interruption suivante (230,232,Z50-2) B. des sixièmes moyens,/inclus dans le processeur CPU, pour traiter la demande de transfert de données de priorité la plus grande, et des moyens qui permettent' de terminer l'exécution d'une opération de transfert de données avant de lancer une demande de transfert de données suivante ; et (230,248,252) C. des septièmes m.oyens,/inclus dans le processeur CPU, pour permettre à ladite demande de transfert de données de suspendre le traitement d'une demande d'interruption et de reco,mnencer le traitement de la demande d'interruption à la fin de l'exécution de la demande de transfert de données. 14. Système selon la revendication 13 , caractérisé en ce qu'il comprend en outre des huitièmes moyens, (230,232,257-1) inclus dans le processeur CPU, pour suspendre le traitement d'une demande d'interruption par une demande d'interruption de priorité supérieure et pour permettre de terminer l'exécution de ladite demande d'interruption après la fin d'exécution du traitement de la demande d'interruption de priorité supérieure. 15. Système selon la revendication 14, caractérisé en ce qu'il comprend en outre : A. des neuvièmes moyens, (236) inclus dans le processeur CPU, pour indiquer la possibilité d'interruption du processeur CPU, et (230,232,234,236) B. des dixièmes moyens,/ inclus dans le processeur CPUJ pour valider le transfert d'informations de la seconde unité pendant n'importe quel cycle de transfert à n 'importe quel moment, Si la possibilité d'interruption du processeur CPU est supérieure à la possibilité d'interruption d'une desdites unités cherchant à transférer des informations avec le processeur CPU. 16. SYstème selon la revendication 15, caractérisé en ce qu'il comprend en outre A. des onzièmeys moyens, (236) inclus dans le processeur CPU, pour indiquer le niveau de possibilité d'interruption du processeur CPU; et ,(230,232 234,236) B. des treizièmes moyens, inclus dans le processeur CPU, pour invalider lesdits moyens pour interdire qui sont inclus dans le processeur CPU et pour valider le transfert d'informations avec le processeur CPU à n'importe quel moment, si le niveau d'interruption de ladite unité de laquelle des informations doivent être transférées est plus significatif que celui de possibilité d'interruption du processeur CPU. 17. Système de traitement de données, caractérisé en ce qu'il comprend A. un bus commun ,(204) B. une unité centrale de traitement de données microprogrammée (processeur CPU) (200) relié au bus commun; C. une mémoire principale,1 reliée au processeur CPU, pour la mémorisation d'un ensemble d'instructions de programme et de mots de données ; D. un ensemble d'appareils périphériques (221-1,221-2) E. un ensemble de contrôleurs d'entrée-sortie (TOC) reliés chacun à un ou plusieurs dudit ensemble d'appareils périphériques, pour transférer des informations entre lesdits appareils périphériques et la mémoire principale ; (230,232) F. des moyens,/inclus dans le processeur CPU, pour extraire certaines des instructions de programme de la mémoire principale et exécuter lesdites instructions de programme sous commande microprogrammée ; G. des moyens, (250) inclus dans le processeur CPU, pour recevoir des demandes de transfert de données desdits controleurs IOC; H. des moyens,/lnc s dans le processeur CPU, pour recevoir des signaux de demande d'interruption sur le bus commun en provenance desdits contrôleurs TOC ; I. des moyens, (250-2) inclus dans le processeur CPU, pour traiter la demande de transfert de données de priorité la plus grande (257-1) 3. des moyens,/incîus dans le processeur CPU, pour traiter lesdites demandes d'interruption sur la base des priorités ; (242,244) K. des moyens,/incîus dans le processeur CPU, pour décoder lesdites instructions de programme et pour envoyer un signal de commande sur le bus commun en direction des contrôleurs TOC en réponse à une instruction particulière desdites instructions de Programme J (248,254,550 5 8) L. des moyens,/inclus dans Ye processeur CPU, pour recevoir un signal d'attente d'un des contrôleurs TOC auquel ledit signal de commande était adressé M. des moyens, (230,232,250) inclus dans e processeur CPU, pour répondre audit signal d'attente en extrayant à nouveau ladite instruction de programme de la mémoire principale et en essayant à nouveau de l'exécuter ; ; N. des moyens,/incîus dans le processeur CPU, pour permettre auxdits moyens microprogrammes de traiter lesdites demandes de transfert de données tout en sus pendant la ré-exécution de ladite instruction' de programme particulière; et (230,232,257)1 O. des moyens,/inclus dans le processeur CPU, pour permettre au processeur CPU de traiter lesdits signaux de demande d'interruption sur la base des priorités tout en suspendant ledit nouvel essai d'exécution de ladite instruction de programme particulière.