CH621201A5 - - Google Patents

Download PDF

Info

Publication number
CH621201A5
CH621201A5 CH355876A CH355876A CH621201A5 CH 621201 A5 CH621201 A5 CH 621201A5 CH 355876 A CH355876 A CH 355876A CH 355876 A CH355876 A CH 355876A CH 621201 A5 CH621201 A5 CH 621201A5
Authority
CH
Switzerland
Prior art keywords
priority
request
block
level
processor
Prior art date
Application number
CH355876A
Other languages
English (en)
Inventor
Earnest M Monahan
Garvin W Patterson
Original Assignee
Honeywell Inf Systems
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Inf Systems filed Critical Honeywell Inf Systems
Publication of CH621201A5 publication Critical patent/CH621201A5/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Description

La présente invention concerne un dispositif d'interface pour un ensemble de traitement de l'information ayant plusieurs modules dont au moins un est un module processeur, comprenant une pluralité de blocs de connexion pour communiquer respectivement avec un module de l'ensemble, un mécanisme d'analyse de priorités pour analyser des demandes d'interruption reçues des blocs au point de vue de niveau d'une priorité intrinsèque de chaque bloc et d'un niveau de priorité relative aux demandes elles-mêmes et sélectionner le bloc de connexion qui a été reconnu comme bloc demandant avec plus haute priorité, et un mécanisme de distribution pour distribuer les données associées à la demande d'interruption d'un module demandeur à un module processeur.
Dans un ensemble de traitement de l'information général et plus particulièrement dans un ensemble d'ordinateurs à multitraitement et multiprogrammation, les demandes de traitement rivalisent continuellement les unes avec les autres pour être prises en charge par un ou plusieurs processeurs. Dans de tels ensembles, comme dans la plupart des calculateurs numériques antérieurs, il existe certains moyens d'interrompre un programme, c'est-à-dire une demande étant en train d'être traitée sur un processeur, par une demande interne ou externe. Généralement, le processeur d'un système informatique est interrompu par l'apparition de certains événements prédéterminés qui exigent une attention immédiate de la part du processeur. Généralement, dans la plupart des ensembles,-l'interruption est effectuée en choisissant une adresse d'une autre instruction dans un autre programme pour exécuter un nouveau sous-programme, et cela est généralement accompli intégralement par le logiciel. Avant que l'exécution du nouveau programme soit commencée, selon une demande respective reçue, certains registres contenant l'information portant sur le programme interrompu — selon une demande en train d'être traitée — doivent être préservés pour pouvoir retourner à ce programme au point exact d'interruption. La préservation de l'information dans ces registres pendant la période d'interruption, puis le rechargement des registres lorsque le programme interrompu est prêt à reprendre sa marche, prennent du temps, mais cela est tolérable dans un monoprocesseur à monoprogramme. Cependant, dans un contexte de multiprogrammation sur multiprocesseur, la charge de frais généraux pour l'aménagement des programmes devient intolérable. En conséquence, des registres opérationnels uniques pour chaque programme enregistré sont disposés de façon qu'un changement de commande entre les programmes n'exige aucune intervention de la part d'un programme superviseur pour décharger ou recharger les registres. (Voir brevet US N° 3226694 délivré le 28 décembre 1965 à Harry D. Wise, et intitulé «Système d'interruption».)
A mesure que croissait la complexité des ensembles de multiprogrammation et de multitraitement, il devenait nécessaire d'affecter des priorités aux demandes de traitements afin qu'une demande exigeant la commande d'un processeur puisse interrompre un autre traitement résultant d'une demande de priorité plus basse. Cependant, par suite de la nature logicielle de l'interruption, il était souvent nécessaire d'interrompre un traitement de haute priorité pour déterminer si le traitement demandé avait en fait une priorité plus haute ou plus basse que celui en cours. L'on découvrait souvent que le traitement demandé avait une priorité plus basse que le traitement en cours, après quoi le traitement en cours continuait de s'effectuer. Cependant, pendant le temps qui s'était écoulé pour déterminer lequel des deux, du traitement demandé ou du traitement exécuté, avait la priorité la plus élevée, un traitement de plus haute priorité avait en fait été interrompu
2
5
10
15
20
25
30
35
40
45
50
55
60
65
3
621 201
par un traitement de priorité plus basse, et cela simplement pour faire cette détermination.
Ce qui est donc nécessaire est un dispositif qui vérifie et détermine si un traitement en cours a une priorité plus haute ou plus basse qu'un traitement demandeur, et cela avant la véritable interruption du traitement en cours, et qui adresse et transmet les données selon des priorités de demandes. Dans ce but, l'invention fournit un dispositif d'interface, caractérisé en ce que le mécanisme de distribution comprend :
— un premier moyen de contrôle qui commande un moyen commutateur pour choisir un trajet entre le bloc sélectionné et le bloc relié au module processeur en réponse à un premier signal indiquant que la demande parvenant du bloc sélectionné est d'un niveau plus haut que le niveau de priorité d'une demande étant en train d'être exécutée,
— un second moyen de contrôle qui commande le transfert des données au bloc relié au module processeur, en réponse à l'apparition d'un signal reçu du module processeur.
L'invention sera décrite à titre d'exemple dans les figures suivantes qui représentent:
la fig. 1, un schéma fonctionnel d'un dispositi d'interface; la fig. 2, un schéma synoptique du dispositif;
la fig. 3, un schéma logique synoptique d'une partie d'un mécanisme d'analyse de priorités pour analyser les demandes dans le dispositif ;
la fig. 4, un schéma logique synoptique d'une autre partie du mécanisme avec des moyens de vérification des données de demandes et, associés, des moyens de contrôle;
la fig. 5, un schéma logique synoptique d'un arbre de branchage utilisé dans le dispositif ;
les fig. 6 à 8, trois types de multiplexeurs utilisés dans le dispositif.
On va décrire l'invention en se référant à la fig. 1 qui représente un dispositif d'interface dans un ensemble de traitement de l'information. Le dispositif ou le bloc d'in terface (SIU) 100 contient les mécanismes d'analyse d'interface (SIU) 100 soit respectivement 101 et 102, qui assurent les branchements entre des modules de l'ensemble, comprenant plusieurs processeurs, comme on va le décrire.
Outre la fourniture de l'accès à des modules de mémoire locale ou éloignée 121, 122 et 122a, 123 respectivement par les modules processeurs actifs 103-106, le module panneau de configuration 124, etc., le SIU 100 fournit l'adressage direct des modules multiplexeurs à grande et faible vitesse 107 et 112,113 respectivement, et des modules adapteurs de commande 108,109,134 et 135 par les modules processeurs 103-106.
Le mécanisme d'analyse 101 et le mécanisme de distribution 102, qui seront décrits plus en détail ci-après, commandent la procédure d'interruption et effectuent la distribution des processeurs, ainsi qu'on le désire. Dans la description suivante, les modules différents sont mentionnés par leur propre fonction, par exemple les modules processeurs par processeurs. Ainsi, il doit être clair que toutes communications entre ces modules et entre module et dispositif d'interface sont d'abord associées à des demandes respectives. Dans ce sens, une commande est d'abord associée à une demande de commande, ainsi qu'un traitement est d'abord associé à une demande de traitement.
Chaque processeur 103-106 contient spécifiquement 16 registres 130-133 pour chaque niveau de priorité affecté à un traitement, ou un total de 128 processeurs à registre capables de stocker 128 mots. (On se réfère parfois à ces registres comme à la mémoire bloc-notes dans cette description.) Chaque processeur est un processeur d'ensemble de traitement de l'information ou d'ordinateur universel avec un jeu classique d'instructions registre-registre, registre-mémoire, adresse immédiate, branchement, zone de bit et décalage. Ces processeurs peuvent être utilisés comme processeur d'entrée-sortie (IOP) dont les fonctions comportent le lancement et la fin des séquences de commande E/S,
l'extraction, la vérification et la traduction des programmes de canal, et la commande directe des dispositifs périphériques lents, comme par exemple les appareils d'enregistrement et de transmission de données. Les processeurs 103-106 sont reliés avec le SIU 100 avec lequel ils communiquent, par l'intermédiaire des blocs de connexion H, G, F et E respectivement.
Les mémoires locales 121,122 du processeur communiquent avec les processeurs 103-106 par le bloc d'interface SIU et des blocs de connexion LMo et LMi. Chacune des mémoires locales 121, 122 est organisée en mémoire lecture-écriture (vive) 136, 137 respectivement, plus une mémoire morte ROM (lecture seulement) 138, 139 avec une mémoire cache facultative 140, 141. La largeur des mémoires des blocs de connexion LMo, LMi est de 36 bits plus 4 bits de parité. La taille de la mémoire centrale est typiquement de 256 K ou 512 K, multiplets dans lesquels chaque K est égal à 1024 multiplets.
Les adaptateurs de mémoire à distance 122a, 123 sont utilisés lorsque la SIU avec ses processeurs et ses périphériques fait partie d'un ensemble de traitement de l'information plus important. Les adaptateurs de mémoire à distance (REMA) 122a, 123 fournissent alors un moyen d'échanger des ordres et des données entre les processeurs 103-106 et un bloc d'interface central de l'ensemble de traitement de l'information plus important non représenté ici. L'on dispose de deux blocs de connexion au maximum a, ß et y, 8 pour chacun des deux blocs REMA 122a et 123 respectivement, chaque bloc ayant une entrée de données de 40 bits et une sortie de 40 bits également entre l'ensemble de traitement de l'information avec le dispositif décrit ci-inclus et un ensemble de traitement de l'information plus important non représenté ici. Les blocs REMA 122a, 123 sont connectés et communiquent avec le SIU 100 par les blocs de connexion RMo et RMi.
Un multiplexeur à grande vitesse 107 fournit une commande directe des transferts de données entre les périphériques à grande vitesse (disque 110, dérouleur de bande 111) et la mémoire à distance 122a, 123 ou la mémoire locale 121, 122. Le multiplexeur à grande vitesse 107 sert d'interface entre le SIU et les périphériques par les blocs de connexion A-F.
Chaque multiplexeur à faible vitesse 112,113 permet la commande directe par un processeur 103-106 d'un dispositif lent tel qu'un perforateur de cartes 118, une imprimante 119 et une console 120, par l'intermédiaire des blocs de connexion J et K et l'interface adaptatrice DAI 115,116 et 117 respectivement.
Si l'on se réfère maintenant à la fig. 2, on voit que celle-ci représente un schéma synoptique du dispositif avec les mécanismes d'analyse et de distribution qui sont représentés et décrits plus en détail dans les fig. 3-5. Un bloc d'interface 201 peut spécifiquement être le bloc d'interface SIU de la fig. 1, bloc qui fournit les trajets d'interface et les commandes pour toutes les communications entre les processeurs et tous les autres modules du système. Les demandes d'interruption allant aux processeurs 103-106 peuvent provenir de tous blocs de connexion A à L et LMo-RMo connectés à des modules respectifs. Une demande d'interruption présentée au bloc 201 est accompagnée par des informations pertinentes, notamment le niveau de priorité de la demande, le numéro du processeur et le numéro du module demandeur. Une vérification de parité est effectuée sur cette information dans le bloc 201 pour déterminer que l'information adéquate est bien adressée aux circuits suivants; en cas de découverte d'une erreur, un signal d'annulation de la demande d'interruption est lancé sur la ligne 201a. De plus, les processeurs 103 et 104 sur les blocs de connexion H et G respectivement, ainsi que les processeurs 105 et 106 sur les blocs F et G peuvent agir respectivement en paires de processeurs; une comparaison du numéro sur lequel ils fonctionnent est faite pour déterminer la paire. Le processeur 103 est apparié typiquement au processeur 104 et, une fois apparié de cette manière, il sera appelé processeur 0 dans cette description; également, les processeurs 105 et 106 sont appariés et sont considérés comme processeurs 1 dans cette
5
10
15
20
25
30
35
40
45
50
55
60
65
621 201
4
description une fois qu'ils sont ainsi appariés. En conséquence, le numéro du niveau de priorité de demande, lorsqu'il est vérifié, est présenté aux blocs de décodage de niveau 202, 204. Si l'on découvre une erreur pendant ce contrôle, la demande d'interruption est annulée jusqu'à ce que l'erreur soit corrigée; cependant, s'il ne se présente aucune erreur, le commutateur de processeur 203 choisit l'un des deux trajets allant aux processeurs 0 ou 1 (pour la paire de processeurs 0 ou 1), conformément au numéro de traitement et du bit directionnel CHG qui lui est présenté. Le but de contrôle directionnel (de changement de trajet) fournit un logiciel qui permet d'utiliser la logique du trajet 0 ou du trajet 1 (fig. 2) pour adresser une demande d'interruption à chaque processeur. Cela est un phénomène de redondance qui permettra à un processeur d'effectuer une interruption même s'il y a une panne de circuits dans la logique du trajet 0 ou du trajet 1, c'est-à-dire que l'on passera du premier arbre logique à l'autre. (Voir références B et C incorporées à titre de référence.) Dans un but illustratif, l'on suppose que le trajet 0 de processeur a été choisi par le commutateur 203. Le bloc de décodage de niveau 202 décode le niveau d'interruption qui lui est présenté sous forme d'un nombre binaire à trois bits et présente l'information décodée à une porte OU 205. Ainsi qu'il sera décrit plus complètement ci-après, le circuit OU 205 collecte tous les numéros de niveau de priorité provenant de tous les blocs de connexion branchés au SIU 100 et fournit les numéros de niveau s'ils sont présents dans l'un quelconque des blocs de connexion, au circuit de comparaison de niveau de priorité 206. Le circuit 206, qui sera décrit plus en détail en liaison avec la fig. 5, détermine le numéro du niveau de priorité le plus élevé présent; si le niveau de priorité le plus élevé a pour numéro 0 (c'est-à-dire que 0 a le niveau le plus élevé et 7 a le niveau le plus bas), le signal d'interruption est adressé immédiatement à la logique de commande du trajet 0 et le processeur est par suite immédiatement interrompu. Cependant, si aucun des blocs de connexion n'a demandé à un niveau de priorité d'interruption 0, mais que quelques blocs demandent à des numéros de niveau plus bas, par exemple 3 à 7, il est évident,
selon la convention adoptée ici, que 3 sera le niveau de priorité le plus élevé pendant le prochain cycle d'horloge. Une comparaison est alors faite dans le comparateur 207a pour déterminer si une interruption de priorité de niveau 3, que réclament quelques blocs dans cet exemple, est supérieure ou inférieure au numéro de niveau du traitement actuellement effectué. En poursuivant l'examen de cet exemple dans un but illustratif, supposons que le numéro de niveau d'interruption 3 ait une priorité supérieure au traitement actuellement effectué, et qui est donc inférieur à 3, par exemple 4, 5, etc. Du fait qu'il y a de nombreux blocs de connexion dans la SIU, auxquels peuvent être couplés des modules demandeurs, plus d'un module peut demander simultanément une interruption, et simultanément avec le même niveau de priorité. Evidemment, le processeur réclamé ne peut se voir affecter simultanément à plus d'un traitement; en conséquence, l'on effectue une détermination pour savoir quel traitement doit être pris en charge par le processeur réclamé, lorsque deux blocs ou davantage demandent simultanément à un niveau identique, c'est-à-dire dans cet exemple un niveau 3. La détermination s'effectue selon des priorités prédéterminées et fixées affectées aux différents blocs de connexion de la SIU. Par suite, l'on dispose d'un multiplexeur 207 chargé de toutes les identifications de blocs A à L, RMo ou RM qui ont demandé le processeur 0 pour l'exécution de la tâche de niveau de priorité le plus élevé, dans cet exemple le niveau 3. Tous ces blocs 1 à RMi ayant différentes priorités dans la hiérarchie d'exécution des tâches, et cette priorité étant prédéterminée, l'on fait alors une détermination, dans le module de priorité de blocs 208, pour savoir quel canal A à L ou LMo-RMi est en droit d'être pris en charge par le processeur lorsque plus d'un de ces blocs ont réclamé une tâche ayant le même niveau de priorité. Une fois faite la détermination finale de cette priorité, et une fois le processeur approprié avisé qu'une tâche de plus haute priorité attend pour être exécutée, aucune autre action n'est demandée jusqu'au moment où le processeur réclamé demande les données d'interruption. La donnée provenant du bloc de priorité intrinsèque la plus élevée ayant la demande d'interruption de niveau de priorité la plus élevée parvient à une unité à barres croisées d'entrée passive (PIP) 219 par l'intermédiaire soit d'un commutateur V, soit d'un commutateur W respectivement 210, 218,215, 217 sur une demande provenant du processeur par la logique de demande 209,216. Le mécanisme de commande de commutateur V 210 produit des signaux de commande pour fournir les données au commutateur V 218 provenant des blocs A, C, E, F, J, RMo et d'une ancienne demande d'interruption. Identiquement, le mécanisme de commande de commutateur W 215 produit des signaux pour fournir des données au commutateur W 217 provenant des blocs L, B, D, G, H, K, RMi. Selon qu'il s'agit d'une ou de l'autre série de signaux de commande, soit le commutateur V 218, soit le commutateur W 217 adressera les données du bloc demandeur analysé comme demandant de plus hautes priorités au processeur par l'intermédiaire de l'unité à barres croisées PIP 219, commandée par la logique de commande 220.
On se réfère maintenant à la fig. 3, où un schéma synoptique logique détaillé du mécanisme d'analyse est représenté. Afin de mieux expliquer cette invention et ne pas gêner la description en parlant de matériel répétitif, tel que le bloc de connexion demandeur ou le processeur demandé, la fig. 3 représente le mécanisme d'analyse pour une paire de processeurs Po comprenant les blocs H et G et les processeurs 103 et 104 respectivement; le mécanisme d'analyse pour la paire de processeurs Pi comprenant les blocs F et E et les processeurs 132 et 133 respectivement est semblable à la fig. 3. De plus, les circuits sont reliés directement avec le SIU 100, et le bloc d'analyse de priorités pour chaque processeurs Po, Pi est entouré par une ligne de tirets 300 et est répété (non représenté) une fois pour les blocs de connexion G et H (processeur 0) et une fois pour les blocs E et F (processeur 1). L'on doit donc réaliser qu'il y a autant de mécanismes d'analyse 300 que l'indique la description ci-dessus et, de plus, qu'il y a également autant de réseaux suivant ces mécanismes qu'il y a de paires de processeurs. Afin de déclencher une interruption de processeur, un signal de demande d'interruption IR provenant d'un bloc ou module demandeur associé au mécanisme d'analyse 300 est appliqué à une porte ET 307. Concurremment, le bloc demandeur fournit un numéro de niveau des priorités LN à la porte 301 pour la demande, ainsi qu'un numéro de processeur à la porte 304. Cependant, étant donné que la SIU 100 ne peut répondre à aucune demande provenant d'un module qui n'est pas logiquement opérationnel, un signal LOP est également appliqué à la porte ET 307. Si le signal de demande d'interruption IR et le signal LOP sont tous deux à haut niveau, la porte ET 307 est validée et fournit un signal d'entrée haut à une borne d'entrée de chacune des portes ET 305 et 306 respectivement. Il permet également d'effectuer un contrôle de parité pour la donnée du numéro de niveau, qui est un nombre binaire à trois bits appliqué à la porte 301, ce contrôle de parité se faisant dans le bloc de contrôle de parité 302 en lui appliquant un signal de validation.
Etant donné que l'on ne considère ici que deux paires de processeurs, et quoique l'invention puisse utiliser toute quantité de paires de processeurs, un nombre binaire à un bit suffit ici pour sélectionner la paire de processeurs Po ou la paire de processeurs Pi, selon les besoins. Par suite, lorsque le numéro de processeur à un bit PN est appliqué à la porte 304, un fil de sortie 306a de la porte 304 sera à bas niveau. (Un amplificateur et un inverseur peuvent être utilisés en pratique.) Le signal sur la borne de sortie étant à haut niveau, un signal d'entrée de haut niveau est fourni à une borne d'entrée d'une porte ET 305, validant ainsi la porte ET 305 et choisissant le bloc de décodage 308 pour le processeur Pi. Du même coup, l'autre fil de sortie 306a de la porte 304 étant à bas niveau, le signal d'entrée sur l'autre fil
5
10
15
20
25
30
35
.40
45
50
55
60
65
5
621 201
d'entrée de la porte ET 306 est à bas niveau, et la porte ET 306 n'est pas validée; donc, le bloc de décodage 309 n'est pas activé pour le processeur Po. En fournissant un code d'entrée différent pour le numéro de processeur PN, la procédure serait inversée et le bloc de décodage 309 pour le processeur Po serait choisi sur le bloc de décodage 308 du processeur Pi. Lors du choix de la paire appropriée de processeurs, deux contrôles sont effectués. Ainsi qu'il a déjà été noté, un contrôle de parité est effectué dans le bloc de contrôle de parité 302 et portant sur le numéro de niveau à trois bits LN et sur le PN à 1 bit. (Le générateur de parité et les circuits de contrôle de parité sont disponibles dans le commerce auprès de sociétés comme Texas Instruments Inc. ; voir pages 9 à 309 du «Catalogue de circuits intégrés pour ingénieurs d'étude», publié par Texas Instruments Inc.) En cas de détection d'une erreur, la demande d'interruption est annulée, tandis que, si aucune erreur n'est détectée, la donnée de numéro de niveau est adressée au bloc de décodage 308 ou 309 de la paire de processeurs choisie Pi ou Po. Dans un but de simplification, on suppose que le processeur Po a été choisi et, dans ce cas, la donnée de numéro de niveau est adressée au bloc de décodage 309. Un autre contrôle est effectué par le bloc comparateur 303 pour vérifier que les signaux sur chaque ligne de sortie sur l'interface du SIU partant d'un élément d'une paire de processeurs, correspondent aux signaux sur les lignes correspondantes provenant de l'autre paire. S'ils ne correspondent pas à un rythme d'horloge quelconque, une condition d'erreur est enregistrée et la demande d'interruption est annulée.
Ayant choisi le processeur approprié et le bloc de décodage approprié, et ayant contrôlé que l'information et la paire de processeurs sont valables, le numéro de niveau à 3 bits est décodé dans l'un des blocs de décodage 308, 309. Dans ce cas, étant donné que l'on suppose que la paire de processeurs Po a été demandée, ce bloc de décodage 309 effectuera le décodage. (Des décodeurs sont disponibles commercialement chez des sociétés comme Texas Instruments Inc.; voir pages 9-149 à 9-213 du «Catalogue de circuits intégrés pour ingénieurs d'étude» publié par Texas Instruments Inc. de Dallas, Texas.)
Le numéro de niveau provenant d'un bloc demandeur donné ayant été décodé par son bloc de décodage approprié 309 sera appliqué, dans son état décodé, à une série de portes OU 310-311. Il faut noter que pour chaque paire de processeurs Po et Pi, il y a autant de portes OU que de niveaux de priorités prédéterminés de demandes d'interruption. Dans cet exemple, étant donné qu'il y a 8 niveaux de priorité, le niveau 0 étant la priorité la plus élevée, il y aura 8 portes OU 310-311 par paire de processeurs 0 et 8 portes OU identiques par paire de processeurs Pi. La sortie de chaque porte OU, une fois mise en fonction, fournit un signal qui indique le niveau de priorité auquel est associée cette porte particulière OU. Chaque porte OU 310-311 a autant d'entrées qu'il y a de blocs de connexion sur le dispositif d'interface ou le bloc SIU 100. S'il arrive une demande de priorité la plus élevée (c'est-à-dire de niveau 0) d'un des blocs de connexion quelconque du SIU 100, la porte OU 310, qui est associée dans cet exemple à ce niveau 0, fournira un signal de sortie de haut niveau. Etant donné qu'une demande de niveau 0 exige une attention immédiate, le signal provenant de la porte OU 310 sera mis en mémoire dans la bascule 312 jusqu'à la période suivante d'horloge où il sera adressé à la paire appropriée de processeurs, ici Po, à travers les blocs de connexion appropriés G, H du SIU. Cependant, s'il y a une demande de priorité inférieure au niveau 0, comme l'indiquera un signal de sortie à haut niveau sur l'une des autres portes OU, entre la porte 310 et la porte 311 incluse, une détermination devra avoir lieu comme suit: tout d'abord, l'on déterminera la demande de priorité la plus élevée sur tout bloc de connexion pendant le cycle d'horloge où une demande est lancée; en second lieu, après avoir déterminé la demande de priorité la plus élevée, l'on déterminera si, oui ou non, cette demande de priorité la plus élevée est supérieure à la priorité du traitement en cours d'exécution sur le processeur. En conséquence, tous les signaux de sortie provenant de la série de portes OU 310-311 sont appliqués à un arbre de priorité 315 qui sera décrit plus en détail ci-après en se référant à la fig. 5, par l'intermédiaire d'une série de portes OU 313-314. Il faut remarquer que les signaux de niveau de sortie représentant les niveaux 1 à 7 sont appliqués à chacune des portes de la série OU 313-314 qui représentent les anciens niveaux de priorité des traitements qui ont été interrompus à un certain moment précédent pour effectuer une tâche de priorité supérieure. Donc, il est clair que les signaux représentent non seulement un niveau de priorité pour un nouveau traitement demandeur appliqué à l'arbre de priorités, mais aussi que ces signaux représentent un niveau de priorité de traitements qui ont été précédemment interrompus et qui étaient incapables de terminer leur tâche. Selon l'arbre de priorité, 315 évalue tous les niveaux de priorité présents et passés, et choisit uniquement le niveau le plus élevé existant pendant le cycle d'horloge courant. A tout moment, il n'existe qu'un seul signal de sortie de haut niveau qui représente le niveau de priorité le plus élevé. Ce niveau existant de priorité est ensuite encodé dans l'encodeur 316 sous forme d'un nombre binaire de trois bits représentant le niveau le plus élevé de priorité demandé existant à l'instant de traitements interrompus. Ce numéro de priorité est: a) fixé dans un registre de mémoire de 3 bits 320 pour y être stocké provisoirement dans le cas où le processeur déciderait d'entrer le nouveau niveau; et b) comparé dans le comparateur 324 avec le nombre binaire à 3 bits représentant le niveau de priorité du traitement couramment effectué qui est stocké dans le registre 321. Si un numéro de niveau de priorité d'un traitement demandeur ou d'un traitement précédemment interrompu est supérieur au numéro de niveau de priorité du traitement précédent effectué, un signal est appliqué à la bascule 325, signal qui est ensuite transmis à la paire de processeurs appropriée, dans ce cas la paire de processeurs Po, à travers les blocs G, H. Notons que le processeur n'a pas été interrompu, mais plutôt qu'un signal a été transmis à celui-ci, qu'il y a un traitement qui attend, ayant un numéro de niveau de priorité plus élevé que le traitement en cours, après quoi le processeur lui-même entreprend l'action appropriée pendant le cycle d'horloge suivant.
Il faut remarquer que, jusqu'à ce moment de la discussion, le bloc qui demande à un processeur d'effectuer une tâche de priorité plus élevée que la tâche actuellement exécutée n'a pas encore été identifié. Etant donné qu'il y a de multiples blocs de connexion, il se pourrait que plus d'un bloc de connexion demande une interruption au même niveau de priorité qu'un autre bloc. Donc, des circuits sont prévus pour détecter cette condition et pour déterminer à quel bloc il revient d'être pris en charge par le processeur. Les circuits prévus pour déterminer cela se présentent sous forme d'un bloc décodeur 317. qui décode le nombre binaire à 3 bits précédemment codé. Le circuit comprend aussi une série de multiplexeurs 318-319, chaque multiplexeur étant associé à un numéro de niveau de priorité donné, et chaque multiplexeur ayant comme entrées les numéros de niveau de priorité décodés provenant de tous les blocs de la SIU 100. (Les multiplexeurs sont disponibles dans le commerce chez Texas Instruments Inc., déjà mentionné, de Dallas, Texas.) Donc, les numéros de priorité ont été assignés non seulement en se basant sur le niveau de priorité de la tâche ou du traitement demandeur, mais aussi, de façon prédéterminée, à chaque bloc du SIU 100. Généralement, les numéros de priorité la plus élevée ont été réservés aux blocs auxquels sont connectés des modules de transfert de données, comme des multiplexeurs à grande vitesse dans un système ou au-dehors, et les numéros de priorité plus basse ont été affectés aux blocs de connexion qui sont associés aux appareils de basse priorité, comme les mémoires. Par suite, lorsque le niveau de plus haute priorité d'un traitement demandeur est décodé dans le décodeur 317, ce signal sera appliqué au multiplexeur pour indiquer ce niveau de priorité décodé. Le multi5
10
15
20
25
30
35
40
45
50
55
60
65
621 201
6
plexeur, qui peut typiquement être de 1 sur 8 ou de 1 sur 13 ou toute quantité nécessaire pour couvrir le nombre de blocs du SIU 100, identifiera tous les blocs qui ont la demande de priorité de niveau le plus élevé pendant le cycle d'horloge courant. Les signaux provenant de tous ces blocs ayant la demande de priorité la plus élevée sont ensuite appliqués à un arbre de priorité 326. Egalement, les signaux de sortie provenant du décodeur 317a et de la série de multiplexeurs 322-323, représentant la priorité des traitements précédemment interrompus, sont appliqués à l'arbre de priorité 326. Ce dernier arbre considère tous les blocs ayant le niveau le plus élevé de priorité et qui demandent habituellement une interruption ou qui ont été interrompus au cycle d'horloge précédent et qui n'ont pas achevé leur tâche. L'arbre de priorité 326, à partir de cette information d'entrée, choisit le bloc de connexion ayant la priorité intrinsèque la plus élevée et qui présente également la demande de priorité de niveau le plus élevé. Un signal de sortie provenant de l'arbre de priorité 326 représentant ce bloc est alors appliqué au bloc de décodage 328 ; le résultat codé est alors mémorisé temporairement dans les bascules 329 ou 330 et appliqué au commutateur approprié V ou X du processeur Po ou Pi. La bascule 327 est utilisée pour conserver le fait que la demande de niveau le plus élevé provenant du bloc de connexion de plus haute priorité est soit une nouvelle demande, soit une ancienne demande qui doit être reprise en charge. Cette information est fournie au processeur lorsque ce dernier est prêt à effectuer le prochain traitement.
Une instruction de libération (non représentée ici) (REL) est utilisée pour sortir les traitements entrés à la suite d'une interruption. Après une instruction REL, le SIU choisit, pour être exécuté, le traitement de priorité la plus élevée qui attendait le processeur.
Ce traitement peut être l'un de ceux qui ont été précédemment interrompus ou un nouveau traitement à lancer à la suite d'une demande d'interruption. Au même niveau de priorité, les traitements précédemment interrompus ont priorité sur les nouvelles demandes d'interruption. Grâce aux circuits (voir référence B) et au chargement du logiciel du PCR (représenté en référence C), un processeur peut présenter au SIU une interruption à tout niveau de 0 à 7. Cependant, pour fournir une réponse bien définie à une instruction REL exécutée à tout niveau, le bit de PCR demandant une interruption de niveau 7 est toujours présent.
Si un nouveau traitement doit être entré à la suite d'une instruction REL, la réponse du processeur est semblable à celle déclenchée par une interruption normale, y compris l'acceptation d'un mot d'interruption provenant du SIU et l'accès à un ICB (voir référence C). Si un traitement précédemment interrompu doit être introduit à nouveau, le SIU ne fournit que le numéro de niveau et n'indique que le fait qu'un ancien traitement doit être réintroduit. Comme l'état du traitement au moment de son interruption est intact dans le registre de mémoire bloc-notes, c'est la seule information nécessaire pour faire redémarrer le traitement.
On se réfère maintenant à la fig. 4: celle-ci représente le mécanisme de distribution qui distribue les données depuis le bloc approprié jusqu'au processeur qui demande de telles données. Le mécanisme d'interruption de priorité de la fig. 3 ayant identifié qu'il y a soit une demande de niveau 0, soit une demande qui a un niveau de priorité supérieur à celui du traitement en cours d'exécution, a fourni un signal qui avertit le processeur de cette condition. Le processeur approprié demande alors la donnée qui doit être transmise au processeur correct par un commutateur de données V 218 ou par un commutateur de données W 217 par l'intermédiaire de l'unité à barres croisées d'entrée passive PIP 219. Par suite, un mécanisme de commande 400 est prévu pour engendrer les signaux de commande afin de choisir le bloc de sortie de donnée W 400a ou le bloc de sortie de donnée V 400b. On remarque, en se référant aux fig. 1 et 4, que la paire de processeurs Po, composée des processeurs 103 et 104 respectivement, communique avec d'autres modules de blocs de connexion par les blocs de connexion H et G, respectivement, dans le SIU 100. Par suite, lorsque le processeur Po effectue une demande de données, il fait cette demande à travers les blocs de connexion H et G et il reçoit aussi des données à travers les blocs de connexion H et G, respectivement, par l'intermédiaire du bloc de sortie de données W 400a ou par le bloc de sortie de données V 400b. Le même raisonnement est valable lorsqu'une demande est faite par la paire de processeurs Pi par les blocs de connexion E, F. Les données du traitement de priorité de niveau le plus élevé à distribuer au processeur sont disponibles soit pour le bloc de sortie de données W 400a, soit pour le bloc de sortie de données V 400b. Le bloc de commande W ou V 400 engendre le signal de commande pour choisir le bloc qui convient entre les blocs de sortie de données W ou V. (La fig. 4 donne les détails du bloc de sortie de données W, le bloc V ayant des détails semblables.) Après avoir été averti qu'il y a une demande de niveau de priorité plus élevé qui attend, le processeur approprié appelle les données suivantes pour effectuer un transfert correct de la commande au traitement demandeur:
— le numéro de canal SIU (interface de système) disponible sur la borne de sortie 450; — l'identificateur multibloc d'interruption IMID disponible sur la borne de sortie 460; — le numéro de bloc de commande d'interruption ICBN disponible sur la borne de sortie 470; — le signal de validation d'erreur EE disponible sur la borne de sortie 480.
Le numéro de canal SIU identifie le canal de l'interface SIU sur laquelle l'information doit être envoyée; le ICBN identifie le bloc de commande qui porte l'information d'adressage (voir référence B); et le signal de validation d'erreur sur la borne de sortie 480 ainsi que sur le fil de sortie 1001 disponible par logiciel ordonne à chaque module, par le SIU, d'ignorer certains types d'erreurs, par exemple d'ignorer la parité, etc. La partie A est utilisée pour fournir le OU de tous les contrôles de parité ICBN, car une partie des canaux demandant une interruption sont contrôlés dans le bloc de commutation W, tandis que d'autres le sont dans le bloc de commutation V, et un seul signal doit être produit pour indiquer une catégorie spécifique d'erreurs. Par suite, le raisonnement logique OU de deux zones identiques s'effectue dans la porte OU 424 depuis les entrées des parties A et de la porte ET 423.
Lorsque l'interruption du processeur est finalement effectuée, l'information dans les registres 130-133 des processeurs interrompus n'a pas besoin d'être retirée, car il y a 16 registres pour chaque niveau de priorité, comme l'on en a discuté précédemment. (Voir également la demande référencée A concernant le «Processeur pour système de traitement entrée/sortie».)
Si on se réfère maintenant à la fig. 4 plus en détail, on voit que le bloc de commande W ou V est mis en condition en lui appliquant les demandes de blocage PIP (depuis 437,434) IPR à une borne d'entrée des portes 401-404. Cela est le signal qui a été produit par le circuit de détection d'erreur 347, 434 de la fig. 4 et indique qu'aucune donnée d'interruption ne doit être tirée du canal avec des données fausses. Egalement, un signal logiquement opérationnel est appliqué à un autre fil d'entrée des portes 401-404 pour indiquer que le processeur branché à ce canal qui demande les données est opérationnel, c'est-à-dire que l'alimentation est en circuit, ainsi que le système, et matériellement branché au canal approprié et non dans un état initialisé, etc. Le bloc de distribution étant ainsi conditionné, lorsqu'une demande de donnée d'interruption sur l'un de ces blocs de connexion G à F est appliqué à la porte appropriée 401-404, cette ou ces portes seront mises en fonction. Pour continuer l'exemple actuel où une paire de processeurs Po comprenant les processeurs 103-104 couplés aux blocs de connexion H, G lancent la demande, les portes 401-402 seront validées. Si les paires de processeurs Po sur les blocs de connexion G et H, et la paire de processeurs Pi sur les canaux E et F, demandaient une IDR à toutes les portes 401-404 au même moment, la paire de processeurs Po et les blocs de
5
10
15
20
25
30
35
40
45
50
55
60
65
7
621 201
connexion G et H prendraient la préférence sur la paire de processeurs Pi et les canaux E et F. Cela est effectué par une fonction d'interdiction qui est adressée aux portes ET 409, 410, 411 et 412 par l'intermédiaire d'une porte ET 402a. On note que, lorsque les portes 401 et 402 sont validées, un signal haut est adressé sous forme de signal d'entrée aux portes 406 et 408, respectivement, par les bornes d'entrée 453 et 457 ; cependant, un signal inverse ou bas est transmis à la porte OU 402a. Etant donné qu'aucun des signaux d'entrée appliqués à la porte OU 402a n'est haut lorsque les portes 401 et 402 le sont, il n'y aura pas de signal de sortie haut provenant de la porte OU 402a et, par suite, un signal bas sera fourni comme l'un des signaux d'entrée aux portes ET 409-412 par l'intermédiaire des conducteurs d'entrée 459, 465, 466 et 472, respectivement; donc, les portes ET 409-412 ne peuvent être validées lorsque cette série de conditions s'applique, et le processeur Po couplé aux blocs de connexion G, H sera validé et prendra le dessus sur le processeur Pi couplé aux canaux E, F. Lorsque le processeur Po demande la donnée d'interruption au demandeur d'interruption, il le fait par les canaux prédéterminés G, H qui peuvent se trouver dans le bloc de sortie de données soit W, soit V. Par suite, le signal W pour le processeur Po sur les bornes de sortie 451 et 455 respectivement est haut; également, le signal d'entrée sur les conducteurs d'entrée 452 et 456, respectivement sur les portes 405 et 407, est haut, car il est tiré du signal de sortie haut des portes 401 et 402 respectivement, qui sont hautes parce que le processeur Po fait la demande de donnée. Donc, les portes 405 et 407 respectivement sont mises en fonction fournissant un signal haut pour le canal G, H vers l'unité à barres croisées d'entrée passive PIP 219 qui indique au PIP 219 que les données lui parviendront par les lignes de données W du bloc de sortie de donnée W. En suivant le même raisonnement, aucun signal haut n'est appliqué aux portes 406 et 408, respectivement sur leurs conducteurs d'entrée respectifs 454 et 458 ; ces portes ne sont pas validées et, par suite, les lignes de données V 487 et 491, respectivement pour les blocs de connexion G et H, sont à bas niveau. Ayant donc alerté l'unité à barres croisées PIP 219 dans l'attente de la donnée d'interruption provenant des blocs de connexion G, H sur le bloc de sortie de donnée W, le signal doit également notifier au bloc de sortie de donnée W que le processeur Po fournira cette donnée. Il effectue cela respectivement par les portes OU 406a et 406b. L'on notera que lorsque les conducteurs de sortie 481 et 486 des portes 405 et 407, respectivement, sont à haut niveau, l'inverse est vrai sur les conducteurs de sortie 482 et 483 des portes 405 et 407 respectivement. Donc, les conducteurs 482 et 483 appliquent un signal bas à la porte OU 406a lorsque les portes respectives 405 et 407 sont mises en fonction. Avec un signal bas sur la porte OU 406a, celle-ci est mise en fonction et fournit un signal haut au multiplexeur comprenant les éléments multiplexeurs 413, 414 et 415. (Les blocs multiplexeurs sont décrits ci-après plus en détail.)
Le signal de commande W produit est appliqué au bloc de sortie de donnée W 400a pour indiquer que ce bloc fournira les données à l'unité à barres croisées PIP d'entrée passive 219. On note, en se référant à la fig. 2, que le bloc de sortie de donnée W 217 de la fig. 2, qui est semblable au bloc de sortie de donnée W 400a de la fig. 4, choisit un canal parmi les canaux L, B, D, G, H, K et RMi pour fournir la donnée à l'unité à barres croisées PIP 219. Le signal de commande W choisissant le bloc de sortie de donnée W approprié, le canal à travers lequel les données seront appliquées à l'unité à barres croisées PIP sera sélectionné par les multiplexeurs 1/8 431-432. Les données d'interruption telles que le numéro de bloc de connexion SIU, l'IMID, l'ICBN sont choisies par le bloc multiplexeur 431-432 et éventuellement transmises à l'unité à barres croisées PIP 219. Cependant, l'on doit noter qu'avant l'application de cette donnée au PIP, divers contrôles de parité doivent être effectués. Par exemple, il y a un contrôle de parité effectué sur le numéro ICBN dans le bloc de contrôle de parité 422. Si l'on ne découvre aucune erreur,
la donnée est appliquée pendant le prochain cycle d'horloge au canal approprié par l'intermédiaire de la bascule 420 ou 425. Si ce contrôle de parité 422 fait découvrir une erreur, un signal haut est appliqué à la porte ET 423, signal qui devient bas lorsque le signal d'erreur sur le conducteur 480 est haut. Ce signal de sortie bas provenant de la porte ET 423 est appliqué comme signal d'entrée à la porte OU 424 qui fournit ensuite un signal haut, car au moins l'un de ses conducteurs d'entrée est bas.
Ainsi qu'il a été décrit précédemment, le bloc de contrôle PC 422, la porte ET 423 et la porte OU 424 sont utilisés pour afficher par blocs de connexion les erreurs de parité sur les ICBN. De façon identique, le CMP 426, la porte ET 427 et la porte ET 428 sont utilisés pour rapporter les erreurs de comparaison par paires de blocs de connexion de processeur. L'unité ERR 249 est une large structure OU servant à produire une ligne d'états d'erreur pour indiquer, lorsqu'elle est validée, qu'il y a une erreur quelconque aperçue par les circuits de contrôle d'interruption.
Si on se réfère maintenant à la fig. 5, on voit que celle-ci représente le schéma logique synoptique détaillé de l'arbre de priorité 315 ou 326. Cet arbre est fondamentalement composé d'autant de portes ET qu'il y a de niveaux (315) ou de canaux (325): dans ce cas (315), s'il y a 8 niveaux, il y a 8 portes ET 501-505. Les portes ET sont validées lorsque toutes les entrées ont un signal haut. Cependant, un signal complémentaire est obtenu en prévoyant un inverseur 511-517n. Donc, lorsque toute porte ET 501-505 est validée, il y a un signal de sortie haut et également un signal de sortie inversé bas. Il faut noter, dans la construction de l'arbre de priorité, que le signal de sortie complémentaire est appliqué comme signal d'entrée à chaque porte ET au-dessous de lui. Par suite, le signal de sortie complémentaire 511 provenant de la porte ET 501 est appliqué à toutes les portes ET 502-505. Identiquement, le signal de sortie complémentaire 513 de la porte ET 502 est appliqué comme signal d'entrée de toutes les portes ET au-dessous de lui 503-505. Donc, lorsque toute porte ET dans l'arbre dé priorité est validée, aucune des portes ET au-dessus et au-dessous de lui ne peut être validée et ne peut fournir un signal de sortie haut. Par exemple, en supposant qu'il y a une demande de niveau 2, il y a par conséquent un signal de niveau 2 présent qui est appliqué comme signal d'entrée à la porte ET 503. Maintenant, étant donné qu'il n'y a aucun signal présent de niveau 0 ou de niveau 1, les portes ET 501 et 502 ne peuvent être validées. Donc, le signal de sortie sur les conducteurs 510 et 512 est bas et le signal de sortie sur les sorties complémentaires 511, 513 est haut. On note que le signal provenant du conducteur de sortie 511 est appliqué au conducteur d'entrée 519 de la porte ET 503, tandis que le signal de sortie provenant du conducteur 513 est appliqué au conducteur d'entrée 520 de la porte ET 503. Donc, tous les conducteurs d'entrée de la porte ET 503 sont à haut niveau et la porte ET est validée et le signal haut est disponible sur le conducteur 514. Un signal bas complémentaire est également produit sur le conducteur de sortie 515, signal qui est ensuite appliqué à toutes les portes ET au-dessous de la porte ET 503 et, par suite, aucune des portes ET 504-505 ne peut être validée. Donc, l'on voit qu'avec une série donnée de signaux de niveau présents, une seule porte ET peut être validée pour produire un signal qui indique le niveau de priorité le plus élevé de tous les demandeurs.
On se réfère à la fig. 6: celle-ci représente un multiplexeur typique 1/2. Il est composé de portes ET 601-616 ayant des signaux de données d'entrée D00A à D41a sur des portes ET 602-611. Les signaux déclenchés G2Aa-G2Ba sont appliqués à la porte ET 601 et le signal de commande Sia est appliqué à l'ampli-ficateur-inverseur 617. Les signaux Z0a-Z4a DATA OUT (données sorties) sont tirés des portes ET 612-616. Une sélection entre deux données complètement indépendantes à 5 bits est déterminée par l'entrée S, tandis que les sorties sont validées par la porte ET des entrées G.
5
10
15
20
25
30
35
40
45
50
55
60
65
621 201
8
Les expressions booléennes pour la fig. 6 sont les suivantes, avec une correspondance univoque entre les entrées et les sorties de la fig. 6 et les expressions booléennes :
Pour a= A, B
ZOa=(G2Aa • G2Ba) • [(DOOa - SI) + (D01 a • S1)] Zla= (G2Aa-G2Ba) • [(DlOa-SI) + (D1 la • SI)] Z2a=(G2Aa • G2Ba) • [(D20a • SI ) + (G21 a • S1 )] Z3a=(G2Aa • G2Ba) • [(D30a • SI) + (D3 la • S1)] Z4a=(G2 Aa • G2Ba) • [(D40a - SI) + (D41a- SI)]
Si l'on rapporte les éléments ci-dessus des fig. 6 aux éléments pertinents de la fig. 4, il y a la relation suivante: 617 et 413; 602 et 414; 603 et 415; entrées 492 et DOOA; entrée 493 et DOla. De façon identique, le reste des portes et des entrées peut être apparié comme ci-dessus avec les modules 414 et 415. Lorsque l'entrée de commande Sia est à 0, l'on peut facilement constater que la donnée se trouvant sur l'entrée 493 est commutée, tandis qu'ensuite l'entrée de commande est de 1, et la donnée se trouvant sur l'entrée 493 est commutée (voir jeu d'équations ci-dessus).
En se référant à la fig. 7, on voit que celle-ci représente un multiplexeur typique 1/4. Comme dans la fig. 6, les signaux de données d'entrée sont appliqués aux portes ET 702-705, les signaux de validation sont appliqués à la porte ET 701 et les signaux de commande sont appliqués aux amplificateurs inverseurs 707-708 avec les signaux Données, Sorties condensés sur la porte ET 706.
Les expressions booléennes pour la fig. 7 sont les suivantes :
Pour a=A, B, C, D, E
Za=(G4A • G4B) • [(D0a ■ S2 • S1) _
+ (Dla-S2-Sl) + (D2a-S2-Sl) + (D3a-S2-Sl)]
On se réfère maintenant à la fig. 8 : celle-ci représente un multiplexeur typique 1/8. Les signaux Données, Entrées D0a-D7a sont appliqués aux portes ET 802-809; les signaux de validation G8A-G8B sont appliqués aux amplificateurs-inverseurs 811-813, tandis que les données 1/8 sont condensées depuis la porte ET 810.
L'expression booléenne pour la fig. 8 est la suivante:
Poura=A, B, C
Za = (G8A • G8BM(D0a • S4 • S2 • SI)
+ (D la_S4 ■ S2 • S1) + (D2a • S4_S2 ."SI)+
(D3a • S4 • S2 • SI) + (D4a • S4 ■ S2 • SI)+
(D5a • S4 ■ S2 • S1 ) + (D6a ■ S4 • S2 • SÎ) + (D7a-S4-S2-Sl)]
L'invention décrite fournit un dispositif d'interface amélioré d'usage général.
Elle fournit un dispositif pour un ensemble de traitement de l'information d'usage général afin de vérifier en permanence les données de demande, demandant une interruption, et qui détermine si, oui ou non, un traitement en cours a une priorité supérieure ou inférieure au traitement qui est demandé, priorité qui consiste à être exécuté du processeur avant que le traitement en cours soit interrompu. Le dispositif transmet ensuite les données de la demande actuelle ou dont l'exécution a été interrompue, et qui a le niveau de priorité le plus haut, et parvient d'un bloc de priorité intrinsèque plus haute parmi les blocs demandants avec la même priorité.
Elle fournit en plus la possibilité de déterminer un niveau de priorité basé sur le nombre de blocs de connexion ou de modules d'un ensemble universel lorsque deux demandes d'interruption (ou davantage), ayant le même niveau de priorité, demandent simultanément d'être prises en charge par le processeur et de transmettre les données du traitement de priorité le plus élevé parvenant du bloc de connexion de priorité le plus élevé.
L'on fournit un mécanisme d'analyse qui vérifie en permanence les demandes d'interruption internes ou externes qui demandent la prise en charge par le processeur et qui détermine si, oui ou non, les traitements demandeurs ont un niveau de priorité plus élevé que celui du traitement en cours, et qui attribue la prise en charge du processeur au traitement de priorité la plus élevée sur le bloc de connexion de priorité le plus élevé.
Les interruptions dans le processeur sont affectées à l'un parmi 8 niveaux de priorité (quoique toute quantité de niveaux de ' priorité puisse être utilisée) avec un niveau 0 comme niveau de priorité le plus élevé et le niveau 7 comme niveau le plus bas. Afin de réduire au minimum le temps nécessaire pour répondre à une demande d'interruption, le processeur fournit un jeu complet de registres pour chacun des 8 niveaux. Lorsqu'une interruption provoque le lancement d'un nouveau traitement, le traitement en cours est laissé intact dans les registres affectés au niveau courant. La prise en charge peut être renvoyée au traitement interrompu simplement en réactivant ce niveau de traitement. Cela élimine le besoin de réserver et de rétablir les traitements d'interruption, et élimine également les frais généraux correspondants.
Il existe spécifiquement 16 registres 130-133 pour chaque niveau dans les registres de mémoire-bloc-notes processeur à 128 mots de chaque processeur 103-106. Du fait que le niveau 0 ne peut jamais être interrompu, le registre d'état de niveau pour le niveau 0 n'est jamais transféré à la mémoire-bloc-notes; cependant, le registre 0 du niveau 0 est'utilisé pour conserver une base de bloc de commande qui contient l'adresse de base en mémoire du bloc de commande d'exception ou du bloc de commande d'interruption qui est utilisée à son tour pour fournir l'adresse d'un traitement interrompant ou interrompu.
Le dispositif décrit surveille en permanence aussi bien le niveau de traitement courant du processeur que toutes les demandes d'interruption provenant d'un module quelconque branché à un canal quelconque A-L ou LMo, LMi, RMo, RMi de l'interface SIU 100 de la fig. 1. Chaque demande de priorité spécifie le numéro du processeur à interrompre, le numéro du niveau de priorité de la demande et le module demandeur. Cette information est conservée dans chaque module qui peut demander des interruptions; pour la lupart des modules, elle peut être changée en utilisant des commandes programmables d'interface (voir référence E).
Chaque fois qu'une demande d'interruption est présente à un niveau plus élevé que le niveau courant, le SIU 100 instruit, parmi une ligne d'interruption de niveau, le processeur. Si plusieurs demandes d'interruption sont présentes à un niveau identique, le dispositif objet de l'invention détermine quelle est la demande qui doit être transmise au processeur en se basant sur les priorités intrinsèques établies par le numéro du bloc de connexion ou le numéro du périphérique.
Une instruction de libération REL est utilisée pour faire sortir le traitement. Un mécanisme de distribution transmet les données au processeur pour que ce dernier prenne en charge la demande de priorité la plus élevée sur le bloc de priorité le plus élevé.
On pourra aussi se référer aux brevets suivants du même titulaire:
A. US-PS N° 4000487
B. US-PS N° 3976977
C. US-PS N° 4001783
D. US-PS N° 4010450
E. US-PS N° 4006466
5
10
15
20
25
30
35
40
45
50
55
60
R
5 feuilles dessins

Claims (5)

  1. 621 201
    REVENDICATIONS
    1. Dispositif d'interface pour un ensemble de traitement de l'information ayant plusieurs modules dont au moins un est un module processeur, comprenant une pluralité de blocs de connexion (A à L; LMo-RMi) pour communiquer respectivement avec un module (103 à 106, 107, 112,113, 121 à 123) de l'ensemble, un mécanisme d'analyse de priorités (206, 212,208, 214) pour analyser des demandes d'interruption reçues des blocs au point de vue de niveau d'une priorité intrinsèque de chaque bloc (208, 214) et d'un niveau de priorité relative aux demandes elles-mêmes (206, 212) et sélectionner le bloc de connexion qui a été reconnu comme bloc demandant avec plus haute priorité, et un mécanisme de distribution pour distribuer les données associées à la demande d'interruption d'un module demandeur à un module processeur, caractérisé en ce que le mécanisme de distribution comprend :
    — un premier moyen de contrôle (210, 215; 328, 329) qui commande un moyen commutateur (217, 218) pour choisir un trajet entre le bloc sélectionné et le bloc relié au module processeur en réponse à un premier signal (V-Po) indiquant que la demande parvenant du bloc sélectionné est d'un niveau plus haut que le niveau de priorité d'une demande étant en train d'être exécutée,
    — un second moyen de contrôle (209,216) qui commande le transfert des données au bloc relié au module processeur, en réponse à l'apparition d'un signal reçu du module processeur.
  2. 2. Dispositif selon la revendication 1, caractérisé en ce que le mécanisme d'analyse de priorité comprend :
    — un moyen de vérification (419, 422) pour vérifier la précision des données associées à la demande reçue du bloc sélectionné,
    — un troisième moyen de contrôle (429, 434, 437), relié au moyen de vérification qui rend la demande d'interruption reçue inopérante si les données sont reconnues comme étant imprécises.
  3. 3. Dispositif selon l'une des revendications 1 ou 2, caractérisé en ce que le mécanisme d'analyse de priorité comprend :
    — pour chaque bloc de connexion, un moyen de décodage de niveau de priorité (308) qui transmet un signal indicatif du niveau de priorité de la demande reçue par le bloc,
    — un moyen de collection (310, 311) pour collecter les signaux indiquant le même niveau de priorité à la sortie des moyens de décodage,
    — un premier arbre de branchage (315) à qui les sorties du moyen de collection sont reliées et qui sélectionne le niveau de priorité le plus élevé,
    — un second arbre de branchage (326) recevant des signaux (A à X) qui identifient les blocs qui demandent à ce niveau de priorité sélectionné et fournissant par un premier moyen de sortie (329, 330) un signal indicatif du bloc de niveau de priorité intrinsèque plus élevé, recevant une demande de ce niveau de priorité sélectionné,
    — un moyen de comparaison (324) recevant un signal indicatif du niveau de priorité de la demande étant en train d'être traitée, et fournissant par un deuxième moyen de sortie (325) un signal indiquant si la demande étant en train d'être traitée dans le module processeur a un niveau de priorité plus élevé que la demande à ce niveau de priorité sélectionné.
  4. 4. Dispositif selon la revendication 3, caractérisé en ce que le mécanisme d'analyse de priorité comprend un premier registre (320) pour conserver le niveau de priorité sélectionné et un second registre (321) pour conserver le niveau de priorité de la demande étant en train d'être traitée, ainsi qu'un moyen permettant de transmettre le contenu du premier registre au second registre dès que la demande du bloc sélectionné va être traitée.
  5. 5. Dispositif selon l'une des revendications 3 ou 4, caractérisé en ce que le mécanisme d'analyse de priorité comprend un moyen qui transmet au premier arbre de branchage (315) des signaux représentant les niveaux de priorité de demandes dont le traitement a été interrompu avant qu'elles aient été achevées.
CH355876A 1975-03-26 1976-03-22 CH621201A5 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/562,314 US4028664A (en) 1975-03-26 1975-03-26 Apparatus for dispatching data of the highest priority process having the highest priority channel to a processor

Publications (1)

Publication Number Publication Date
CH621201A5 true CH621201A5 (fr) 1981-01-15

Family

ID=24245776

Family Applications (1)

Application Number Title Priority Date Filing Date
CH355876A CH621201A5 (fr) 1975-03-26 1976-03-22

Country Status (9)

Country Link
US (1) US4028664A (fr)
JP (1) JPS51120145A (fr)
BE (1) BE840015A (fr)
BR (1) BR7601358A (fr)
CA (1) CA1070849A (fr)
CH (1) CH621201A5 (fr)
DE (1) DE2611975A1 (fr)
FR (1) FR2305788A1 (fr)
NL (1) NL7602495A (fr)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4080649A (en) * 1976-12-16 1978-03-21 Honeywell Information Systems Inc. Balancing the utilization of I/O system processors
US4181941A (en) * 1978-03-27 1980-01-01 Godsey Ernest E Interrupt system and method
US4470111A (en) * 1979-10-01 1984-09-04 Ncr Corporation Priority interrupt controller
US4402040A (en) * 1980-09-24 1983-08-30 Raytheon Company Distributed bus arbitration method and apparatus
US4604685A (en) * 1982-02-19 1986-08-05 Honeywell Information Systems Inc. Two stage selection based on time of arrival and predetermined priority in a bus priority resolver
US4535330A (en) * 1982-04-29 1985-08-13 Honeywell Information Systems Inc. Bus arbitration logic
FR2610745B1 (fr) * 1987-02-07 1994-05-27 Nec Corp Systeme de commande de priorite de processus
JPH01303543A (ja) * 1988-05-31 1989-12-07 Fujitsu Ltd メモリアクセス制御装置
US5311461A (en) * 1988-12-30 1994-05-10 International Business Machines Corp. Programmable priority and selective blocking in a compute system
US5203007A (en) * 1988-12-30 1993-04-13 International Business Machines Corporation Overriding programmable priority and selective blocking in a computer system
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5371872A (en) * 1991-10-28 1994-12-06 International Business Machines Corporation Method and apparatus for controlling operation of a cache memory during an interrupt
FR2725287B1 (fr) * 1994-09-30 1996-12-20 Sgs Thomson Microelectronics Processeur de commande d'un circuit de compression d'images mobiles
US5923900A (en) * 1997-03-10 1999-07-13 International Business Machines Corporation Circular buffer with n sequential real and virtual entry positions for selectively inhibiting n adjacent entry positions including the virtual entry positions
CN105389203B (zh) * 2015-10-19 2017-11-17 广东欧珀移动通信有限公司 一种指纹识别设备的调用方法、装置及移动终端
CN113162606B (zh) * 2021-03-30 2023-04-07 西南电子技术研究所(中国电子科技集团公司第十研究所) 多优先级控制电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3421150A (en) * 1966-08-26 1969-01-07 Sperry Rand Corp Multiprocessor interrupt directory
US3702462A (en) * 1967-10-26 1972-11-07 Delaware Sds Inc Computer input-output system
US3648252A (en) * 1969-11-03 1972-03-07 Honeywell Inc Multiprogrammable, multiprocessor computer system
US3676861A (en) * 1970-12-30 1972-07-11 Honeywell Inf Systems Multiple mask registers for servicing interrupts in a multiprocessor system
GB1397438A (en) * 1971-10-27 1975-06-11 Ibm Data processing system
US3812463A (en) * 1972-07-17 1974-05-21 Sperry Rand Corp Processor interrupt pointer

Also Published As

Publication number Publication date
BE840015A (fr) 1976-07-16
FR2305788A1 (fr) 1976-10-22
FR2305788B1 (fr) 1979-07-20
DE2611975A1 (de) 1976-10-07
US4028664A (en) 1977-06-07
BR7601358A (pt) 1976-09-28
NL7602495A (nl) 1976-09-28
AU1157376A (en) 1977-09-08
JPS51120145A (en) 1976-10-21
CA1070849A (fr) 1980-01-29

Similar Documents

Publication Publication Date Title
CH621201A5 (fr)
EP0030504B1 (fr) Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un système de traitement de l'information
CH616251A5 (fr)
EP0059018B1 (fr) Multiprocesseur avec affectation dynamique des tâches en multitraitement et son utilisation
EP2366147B1 (fr) Gestionnaire physique de barriere de synchronisation entre processus multiples
EP0063071B1 (fr) Procédé et dispositif de transmission de données numériques
FR2486682A1 (fr) Systeme de traiteme
FR2606903A1 (fr) Procede et dispositif de gestion de points d'arret dans un moniteur de logiciel
FR2489578A1 (fr) Structure d'organisation pour memoire tampon
FR2608807A1 (fr) Systeme multiprocesseur et procede d'equilibrage de charge pour ledit systeme
CH629319A5 (fr) Installation de traitement de donnees.
EP0063972A1 (fr) Procédé et dispositif d'allocation d'une ressource dans un système comportant des unités de traitement de données autonomes
FR2645989A1 (fr) Coupleur multifonctions entre une unite centrale d'ordinateur et les differents organes peripheriques de ce dernier
EP1158405A1 (fr) Système et méthode de gestion d'une architecture multi-ressources
EP0366520B1 (fr) Réseau de communication de données pour systèmes multiprocesseurs
US6374338B1 (en) Method for performing configuration tasks prior to and including memory configuration within a processor-based system
EP0032862A1 (fr) Dispositif pour superposer les phases successives du transfert des informations entre plusieurs unités d'un système de traitement de l'information
FR2595474A1 (fr) Dispositif de controle et de verification du fonctionnement de blocs internes a un circuit integre
EP0032864B1 (fr) Dispositif pour décentraliser la gestion du bus de transfert de données commun à plusieurs unités d'un système de traitement de l'information
EP0082903B1 (fr) Unité de commande pouvant être connectée à deux mémoires de vitesses différentes
FR2656707A1 (fr) Procede d'exploitation d'un bus d'ordinateur.
FR2574197A1 (fr) Processeur du type a sequence de donnees
EP0822495B1 (fr) Distribution de tickets dans un système informatique multinodal
FR2607282A1 (fr) Dispositif de commande d'acces a une memoire
EP0463901B1 (fr) Procédé de dialogue entre les processeurs d'un système, système pour sa mise en oeuvre et utilisation pour la répartition des processus aux processeurs

Legal Events

Date Code Title Description
PL Patent ceased