FR2617304A1 - Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie - Google Patents

Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie Download PDF

Info

Publication number
FR2617304A1
FR2617304A1 FR8806038A FR8806038A FR2617304A1 FR 2617304 A1 FR2617304 A1 FR 2617304A1 FR 8806038 A FR8806038 A FR 8806038A FR 8806038 A FR8806038 A FR 8806038A FR 2617304 A1 FR2617304 A1 FR 2617304A1
Authority
FR
France
Prior art keywords
input
programmable logic
sequencer
instruction
logic network
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
FR8806038A
Other languages
English (en)
Inventor
William Lamar Bain Jr
Robert Caldwell Bedichek
George Wayne Cox
Gerhard Grassl
Craig B Peterson
Justin Roger Rattner
Gurbir Singh
John Leonard Wipfli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of FR2617304A1 publication Critical patent/FR2617304A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Programmable Controllers (AREA)

Abstract

Ce séquenceur comprend un réseau logique programmable 18 et une table de service des programmes 20, comportant une pluralité de rubriques divisées en champs, chacun des champs contenant des moyens pour donner au réseau logique programmable des ordres concernant le type d'opération que le séquenceur doit exécuter. La logique de sélection de ligne reliée aux lignes de requête d'entrée/sortie 30 et à la table de service déterminent celles des rubriques de la table de service que le réseau logique programmable doit utiliser. Une interface de bus reliée aux ports du bus d'entrée/sortie 16 et au réseau logique programmable dirige les données entre les ports du bus d'entrée/sortie et une batterie de registres 14 partagée dont les rubriques sont contrôlées au moyen de jeux de registres. Les champs de la table de service comprennent des descripteurs de jeux de registres pour mémoriser le statut des tampons de jeu de registres. Le réseau logique programmable comprend des moyens pour décoder une instruction " accès " permettant de commencer une opération en chargeant le descripteur de la première batterie de registres, et des moyens pour décoder les instructions séquentielles appliquées à la rubrique. Chaque instruction appliquée charge le champ du descripteur du premier jeu de registres vide à utiliser lorsque le champ de descripteur du jeu de registres courant est épuisé.

Description

La présente invention concerne les systèmes informatiques et, plus
précisément, un dispositif pour contrôler les flux de données entre un bus d'entrée/sortie et une mémoire locale d'un
processeur d'entrée/sortie.
La demande de brevet US déposée le 21 octobre 1986 sous le numéro 921 313 au nom de Bain et al., intitulée Memory Based Interagent Communication Mechanism (système de communication interagent basé en mémoire) et cédée à Intel Corporation, -concerne le problème d'entrée/sortie essentiel relatif à la manière de coupler deux bus de types différents et d'assurer un flux de données entre ces deux bus. L'un des bus est un bus d'entrée/sortie. Sur le bus d'entrée/sortie, on doit gérer divers dispositifs ayant des débits très variés de données produits par divers circuits. Certains dispositifs présentent en outre le problème de périodes d'attente suivies par des périodes très actives avec des transitions très brusques d'une
période à l'autre.
Auparavant, le problème du transfert des données sur les bus d'entrée/sortie avait été résolu en utilisant des tampons pour les données. Par exemple, dans le brevet US 3 699 530 au nom de Capowski et al. délivré à IBM le 17 octobre 1972, il est prévu des tampons multiples dédiés à chacune des voies, permettant d'assurer que toutes les voies possèdent un organe de réception propre à accepter des données qui ne peuvent pas être rendues indisponibles du fait de transferts effectués par d'autres voies. Jusqu'à présent, la gestion des conflits entre requêtes provenant de différentes voies assurait le contrôle de l'utilisation du bus par la voie indépendamment de la gestion ultérieure des priorités relatives à l'utilisation de la mémoire principale. Une fois qu'une voie transférait ses données et ses adresses mémoire vers le tampon dédié qui lui était affecté, ce tampon, en fonction de l'adresse mémoire qu'il renfermait, prenait la priorité mémoire correspondant au bloc mémoire logique particulier souhaité. De la sorte, la file d'attente unique de requête des voies était reconfigurée entre quatre files d'attente indépendantes de requêtes, en fonction
des adresses mémoire logiques.
Cette manière de procéder avait l'avantage de ne pas niveler vers le bas le débit des transferts d'entrée/sortie, mais nécessitait des ressources dédiées qui étaient coûteuses. Or, dans la technique des circuits VLSI (à très haut degré d'intégration) la place sur la puce est une contrainte essentielle et le nombre de connexions est limité. Il devient donc important de réduire la taille des tampons formés sur la puce, tout en conservant la même capacité à accepter des données à un débit donné. Pour cela, il est préférable de prévoir des ressources partagées plutôt que des ressources
dédiées.
Ainsi, l'un des buts de la présente invention est de proposer un séquenceur d'entrées/sorties permettant de gérer les transferts entre un bus d'entrée/sortie et une batterie de
registres partagée.
A cet effet, selon la présente invention, le séquenceur d'entrées/sorties programmable, qui est destiné à être utilisé avec un bloc d'exécution qui exécute une pluralité de tâches formées de séquences d'instructions, tâches comprenant une tâche d'origine et une tâche destinataire, et qui permet de définir un trajet de données entre des organes reliés à un bus d'entrée/sortie et une batterie de registres, comprend: - des moyens formant réseau logique programmable pour mémoriser un programme, - des moyens formant table de service, reliés aux moyens formant réseau logique programmable, ces moyens formant table de service comprenant une pluralité de rubriques divisées en champs, l'un de ces champs comprenant des moyens pour indiquer au réseau logique programmable quel type d'opération le séquenceur de bus doit exécuter, - une pluralité de lignes de requête d'entrée/sortie, - des moyens formant logique de sélection de ligne, reliés aux lignes de requête d'entrée/sortie, aux moyens formant réseau logique programmable et à la table de service pour déterminer celles des rubriques de la table de service que les moyens formant réseau logique programmable doivent utiliser, et - des moyens formant interface de bus, reliés au bus d'entrée/sortie, à la batterie de registres, et aux moyens formant réseau logique programmable, afin d'acheminer les données entre la batterie de registres et le bus d'entrée/sortie, les champs de la table de service comprenant en outre des descripteurs de jeu de registres pour mémoriser le statut de tampons de jeu de registres, le réseau logique programmable comprenant des moyens pour décoder une instruction 'accès' afin de faire commencer une opération en chargeant'le descripteur de jeu de registres, et des moyens pour décoder des instructions envoi' suivantes appliquées à ladite rubrique, et chaque instruction 'envoi' chargeant un champ de descripteur de jeu de registres vide à utiliser lorsque le champ de descripteur de
jeu de registres courant est épuisé.
- Selon une caractéristique avantageuse de l'invention, dans le cas o le descripteur de jeu de registres comprend un bit de suspension, le séquenceur d'entrées/sorties comprend en outre des moyens pour positionner le bit de suspension dans le cas o une tentative de réponse à une tâche après achèvement d'une opération échoue, ainsi que des moyens pour dépositionner ce bit de suspension dans le cas o cette tentative de réponse à une tâche après achèvement d'une opération réussit, de sorte qu'un descripteur suspendu ne puisse pas être rechargé par une instruction 'accès' ou une instruction 'envoi', et que les instructions 'accès' ou instructions 'envoi' délivrées à un
descripteur suspendu soient bloquées.
Selon une autre caractéristique avantageuse de l'invention, le séquenceur d'entrées/sorties comprend en outre des moyens, dans la logique de sélection de ligne, pour sélectionner une rubrique de la table de service, des moyens, dans la logique de sélection. de ligne, pour signaler au réseau logique programmable le moment o une entrée est sélectionnée et o son champ d'ordre est disponible pour la lecture par le réseau logique programmable, des moyens, dans chaque rubrique de la table de service, formant bit de verrouillage, des moyens pour positionner ce bit de verrouillage chaque fois qu'une instruction 'accès' et une instruction 'envoi' chargent la rubrique, des moyens pour dépositionner ce bit de verrouillage sous le contrôle du réseau logique programmable, et des moyens de sélection de rubrique, fonctionnant en réponse au bit de verrouillage et au bit de suspension pour déterminer celles des rubriques qui doivent participer à la résolution du conflit des priorités par les moyens formant logique de priorité, de sorte que seules celles des rubriques ayant leurs bits de verrouillage positionnés et leurs bits de suspension
dépositionnés puissent être susceptibles de sélection.
En d'autres termes, on prévoit selon l'invention un séquenceur de bus d'entrée/sortie comprenant un réseau logique programmable et une table de service des programmes comportant une pluralité de rubriques divisées en champs, chacun des champs contenant des moyens pour donner au réseau logique programmable des ordres concernant le type d'opération que le séquenceur de bus doit exécuter. La logique de sélection de ligne (de priorité) reliée aux lignes de requête d'entrée/sortie et à la table de service déterminent celles des rubriques de la table de service que le réseau logique programmable doit utiliser. Une interface de bus reliée aux ports du bus d'entrée/sortie et au réseau logique programmable dirige les données entre les ports du bus d'entrée/sortie et un e batterie de registres partagée dont les rubriques sont contrôlées au moyen de jeux de registres. Les champs de la table de service comprennent des descripteurs de jeux de - registres pour mémoriser le statut des tampons de jeu de registres. Le réseau logique programmable comprend des moyens pour décoder une instruction 'accès' permettant de commencer une opération en chargant le descripteur de la première batterie de registres, et des moyens pour décoder les instructions séquentielles appliquées à la rubrique. Chaque instruction appliquée charge le champ du descripteur du premier jeu de registres vide à utiliser lorsque le champ de
descripteur du jeu de registres courant est épuisé.
L'invention présente l'avantage que la batterie de registres est une ressource partagée, constituée par un ensemble de tampons mis en commun, qui peuvent être affectés et désaffectés en fonction des besoins du bus. Ceci nécessite moins de place sur la puce. En outre, on augmente la vitesse du fait que l'on transmet des descripteurs de jeu de registres au lieu de
transmettre les données elle-mêmes.
Les buts précédents, ainsi que d'autres buts, caractéristiques et avantages de la présente invention
apparaîtront à -la lecture de la description détaillée
particulière des modes de réalisation préférés de la présente invention, illustrés sur les dessins annexés sur lesquels: - la figure 1 est un schéma fonctionnel par blocs illustrant la manière dont le séquenceur de bus d'entrée/sortie se raccorde au bus d'entrée/sortie, au bloc d'exécution et à la batterie de registres, - la figure 2 est un schéma par blocs plus détaillé du séquenceur de bus d'entrée/sortie représenté sur la figure 1,
- la figure 3 est un diagramme montrant le format des.
adresses indirectes, - la figure 4 est un diagramme montrant le format des messages du séquenceur, - la figure 5 est un schéma par blocs des champs de la table de service, et - la figure 6 est un schéma par blocs illustrant l'exécution de l'instruction 'accès' pour la table de service
d'entrée/sortie de la figure 2.
Si l'on se réfère maintenant à la figure 1, on voit que le séquenceur de bus d'entrée/sortie associe le processeur de
canal d'entrée/sortie au bus d'entrée/sortie.
Le bloc d'exécution 10 est un processeur programmé avec un séquenceur d'instructions en pipeline. Le bloc d'exécution réalise la répartition entre tâches multiples, la transmission des messages, la transmission du jeu de registres, et comporte une antémémoire d'instruction. Le séquenceur de bus d'entrée/sortie 12 et le bloc d'exécution 10 partagent une mémoire commune, qui est une batterie de registres 14. La batterie de registres est adressée de manière uniforme, et elle est composée d'un certain nombre de jeux de registres à ports multiples. La batterie de registres est à la base de la synchronisation logique et physique et de l'accès aux tâches qui sont répertoriées. On peut avoir un accès par octet, par demi-mot et par mot. On mappe des tâches différentes qui utilisent des jeux de registres différents dans le temps. Le
mélange de l'exécution des tâches peut varier dans le temps.
Les jeux de registres que l'on utilise pour une tâche donnée peuvent varier au cours de l'exécution de la tâche, soit sous son propre contrôle par modification de la manière dont elle est elle-même mappée, soit par d'autres tâches par échange de jeux de registres sous forme de messages ou sous forme d'un échange. On trouvera plus de détail concernant le bloc d'exécution dans une demande de brevet US déposée en 1986 au nom de Cox et al., intitulée Execution Unit with Multi-Tasking Capability (bloc d'exécution avec possibilité de fonctionnement multitâche) et cédée à Intel Corporation. On trouvera plus de détail concernant la batterie de registres dans la demande de
brevet US précitée déposée sous le numéro 921 313.
Bus local et séquenceur de bus d'entrée/sortie Comme décrit dans la demande de brevet US précitée déposée sous le numéro 921 313, la communication avec les autres parties sont exécutées par deux modules: le séquenceur de bus local et le séquenceur de bus d'entrée/sortie. Ceux-ci assurent les communications respectivement avec le sous-système de
calcul et le sous-système d'entrée/sortie.
On exécute les étapes suivantes pour réaliser un transfert (NB: la troisième et la quatrième étapes peuvent intervenir dans l'ordre inverse de celui qui est indiqué):
1 ) le bloc d'exécution exécute une instruction 'accès'.
Cette instruction délivre une requête à l'un des séquenceurs. La tâche peut se bloquer jusqu'à ce que le
séquenceur soit en mesure d'accepter la requête.
2 ) le séquenceur exécute l'opération demandée. Cette instruction a généralement pour résultat le transfert de données vers la batterie de registres ou en provenance
de cette batterie de registres.
3 ) une tâche exécute une instruction qui se bloque jusqu'à ce que le séquenceur indique l'achèvement. Cette tâche peut être ou peut ne pas être la tâche qui avait délivré
la requête.
4 ) le séquenceur indique l'achèvement de l'opération.
) la tâche se débloque et reprend l'exécution à
l'instruction de synchronisation.
Instruction 'accès' L'instruction 'accès' est le moyen par lequel le bloc d'exécution présente ses requêtes au séquenceur de bus d'entrée/sortie et au séquenceur de bus local. L'instruction accès' donne les informations nécessaires à l'un ou l'autre séquenceur afin que le séquenceur puisse exécuter le transfert de données. Les informations données sont: - code de séquenceur, - méthode de réponse, - variante 'envoi' (seulement pour le séquenceur de bus d'entrée/sortie), - longueur, - ordre, - tâche de réponse, - jeu de registres de réponse, - adresse physique (sur 32 bits pour le séquenceur de bus local; sur 24 bits pour le séquenceur de bus d'entrée/sortie), et
- pointeur de données.
Le "code de séquenceur" donne au matériel une information sur celui des séquenceurs auquel on se relie pour l'accès. Les codes allant de 0 à 9 spécifient une ligne dans la table de service d'entrée/sortie. Les codes 13, 14 et 15 sont pour le
séquenceur de bus local.
Le bit "méthode de réponse" dit au séquenceur la manière dont il doit signaler l'achèvement d'une requête. Le bit "variante 'envoi"' n'est utilisé que par le séquenceur de bus
d'entrée/sortie (il est ignoré par la séquenceur de bus local).
Il indique au séquenceur de bus d'entrée/sortie que l'accès fait partie d'un transfert par bloc. La "longueur" indique le nombre d'octets à déplacer dans le transfert. L"'ordre" indique au séquenceur ce qu'il est supposé faire. La "tâche de réponse" indique celle des tâches à laquelle il faut répondre. Le "jeu de registres de réponse" indique à quel jeu de registres de la tâche de réponse il faut répondre. L'"adresse physique" est la position sur le bus d'entrée/sortie o le transfert doit commencer. Le "pointeur de données" est l'adresse physique du
jeu de registres du premier octet de données.
Les informations que l'on vient de décrire sont produites à partir de paramètres et de champs de l'instruction 'accès'. L'instruction contient un pointeur pointant sur un registre de paramètres à 32 bits qui contient certaines des informations nécessaires aux séquenceurs. La figure 6 montre une instruction accès' et un registre de paramètres typique, ainsi que la manière dont on produit les informations nécessaires à un séquenceur. Les six premières informations que l'on a énoncées plus haut proviennent -directement soit de l'instruction soit du registre de paramètres. Le pointeur de données est produit en allant prendre l'octet logique dans le registre de paramètres et en le faisant passer dans le circuit de mappage du jeu de registres afin de produire une adresse physique dans la batterie de registres. L'adresse physique sur 32 bits dont ont besoin les séquenceurs peut être produite de trois manières différentes-: - la figure 6 montre l'adresse physique produite par addition d'un déplacement de 32 bits à une adresse de base de 32 bits. Le pointeur pointant sur le registre de déplacement se trouve dans l'instruction et le pointeur pointant sur l'adresse de base se trouve dans le registre
de paramètres.
- l'adresse physique peut également être produite en utilisant comme valeur littérale la valeur du pointeur pointant sur le registre de déplacement. Cette valeur littérale sur 8 bits est ajoutée à l'adresse de base sur 32 bits, permettant des déplacements littéraux positifs
allant jusqu'à 255.
- la troisième manière est l'adressage physique direct. Le pointeur d'adresse de base dans le registre de paramètre est ignoré, et on utilise comme adresse physique la valeur
sur 32 bits se trouvant dans le registre de déplacement.
La manière dont l'adresse physique est produite est
déterminée par des bits se trouvant dans l'instruction.
Si un séquenceur ne peut pas accepter une requête d'accès, l'instruction 'accès' va être bloquée et sera réessayée Lorsque le séquenceur pourra accepter une requête. On décrira dans les paragraphes correspondant à chaque séquenceur les conditions qui font en sorte qu'un séquenceur ne peut pas accepter une requête. L'instruction 'accès' verrouille toujours le jeu de registres logiques que la tâche donne au séquenceur. Ceci empêche la tâche et le séquenceur de fonctionner tous deux en
même temps sur le jeu de registres.
Séquenceur de bus pour la synchronisation du bloc d'exécution Il y a deux méthodes de synchronisation des transferts entre le séquenceur de bus d'entrée/sortie et le bloc d'exécution: le verrouillage du jeu de registres et les messages par microports. Le séquenceur de bus local se synchronise toujours
sur le bloc d'exécution par verrouillage du jeu de registres.
La sélection de la méthode souhaitée est effectuée par le code du bloc d'exécution que délivre l'instruction 'accès' pour une opération particulière sur le bus. La variante 'envoi' ne peut pas modifier la méthode, de sorte qu'un flux particulier de données utilise soit le verrouillage du jeu de registres soit
les messages par microports, mais pas les deux méthodes.
Synchronisation à partir du message Lorsque cette option est choisie, le séquenceur envoie un message de microport à la tâche destinataire. La tâche destinataire est spécifiée par la tâche qui exécute l'instruction 'accès'. Le message est délivré avec le format de séquenceur représenté sur la figure 4. Le message a une longueur de seize bits, et le bit de poids le plus fort est toujours zéro. Les six bits de poids le plus faible de l'octet inférieur du message contiennent l'adresse physique du jeu de registres qui avait été concerné par le transfert. Le bit situé au dessus de l'adresse physique du jeu de registres (le bit 6 dans l'octet) contient le bit 'achèvement anormal'. Ce bit sera positionné par le séquenceur si l'opération du séquenceur s'est achevée de façon anormale. Dans l'octet inférieur, le bit de poids le plus fort (bit 7) est toujours à un. Les quatre bits de poids le plus faible de l'octet supérieur identifient celui des séquenceurs d'o provient le message. Les trois bits suivants (jeu de registres logiques) contiennent la valeur que l'on avait transmise au séquenceur pour indiquer le jeu de
registres de réponse.
Le message est conçu pour être compatible avec l'instruction déplacer le pointeur'. En mettant une instruction 'déplacer le pointeur' immédiatement après l'instruction 'recevoir', le jeu de registres qui vient juste de participer au transfert peut
être mappé dans l'espace logique de la tâche destinataire.
Synchronisation à partir du jeu de registres Lorsque l'on demande ce type de synchronisation, le séquenceur inscrira l'adresse physique du jeu de registres concerné dans le pointeur 'jeu de registres de réponse' se trouvant dans la zone de mappage de la 'tâche de réponse'. Le jeu de registres de réponse' et la 'tâche de réponse' étaient tous deux spécifiés au séquenceur lorsque l'on avait commencé la requête. Au moment de l'inscription du pointeur de jeu de registres, on positionnera également le bit de terminaison
anormale dans ce pointeur si l'accès s'est achevé de façon.
anormale. Dans tous les cas, le pointeur de jeu de registres a son bit de validité positionné (c'est-à-dire que le jeu de
registres est déverrouillé).
Séquenceur de bus local Toutes les communications et tous les transferts en direction du système et en provenance de celui-ci, ou en direction de la partie de bus local du processeur d'entrée/sortie ou en provenance de cette partie s'effectuent au travers du séquenceur de bus local. Le séquenceur de bus local est décrit plus en détail dans la demande de brevet US
précitée déposée sous le numéro 921 313.
Séquenceur de bus d'entrée/sortie Le séquenceur de bus d'entrée/sortie indique son chemin au bus d'entrée/sortie. La figure 1 montre la position du séquenceur de bus d'entrée/sortie 12 par rapport aux autres organes avec lesquels il communique. Le séquenceur de bus d'entrée/sortie transfère des données entre des bus d'entrée/sortie 16 et la batterie de registres 14, et il est configuré de manière à gérer différents protocoles sur le bus d'entrée/sortie. Il peut transférer des blocs de données entre la batterie de registres et un emplacement unique ou une série d'emplacements adressés de façon contig e dans l'espace adressable du bus d'entrée/sortié. Il peut également gérer des
interruptions et des requête d'accès direct mémoire.
Organisation fonctionnelle Fonctionnellement, le séquenceur de bus d'entrée/sortie transfère le contenu d'un jeu de registres vers le bus d'entrée/sortie ou à partir de celui-ci, tout en générant les signaux de commande nécessaires dont a besoin le protocole du bus. Le séquenceur de bus d'entrée/sortie autorise la mise en oeuvre d'un principe de transfert "par blocs". Des blocs de données de grande taille sont transférés par éléments de taille plus réduite, chacun étant suffisament grand pour remplir un jeu de registres. L'instruction 'accès' commence le transfert en faisant passer le premier jeu -de registres du bloc d'exécution au séquenceur de bus d'entrée/sortie. Les jeu de registres suivants qui font partie du même transfert sont transmis au séquenceur de bus d'entrée/sortie en utilisant la variante 'envoi' de l'instruction 'accès'. Le séquenceur de bus d'entrée/sortie conserve deux files d'attente suffisament longues pour garder les informations provenant de l'instruction accès' et les instructions suivantes de variante 'envoi'. Ceci permet au séquenceur de bus d'entrée/sortie d'effectuer un double tamponnage des données et de garder un débit élevé de transfert des données sans introduire aucun retard lorsqu'il attend l'arrivée du jeu de registres suivant en provenance du bloc d'exécution; On peut également déclencher les transactions par des événements apparaissant sur le bus d'entrée/sortie. Cette possibilité est utilisée pour gérer des interruptions et des
requête d'accès direct mémoire.
Organisation structurelle Le séquenceur de bus d'entrée/sortie représenté à la figure 2 comporte cinq composants essentiels: le réseau logique programmable 18 du séquenceur de bus d'entrée/sortie, la file d'attente ou table de service d'entrée/sortie 20, la logique de sélection de ligne 22, la logique de génération de réponse 24 et l'interface du bus de données et d'adresses d'entrée/sortie (port de commande 26). Le programme du réseau logique programmable est mémorisé dans des cellules de ROM, et il
commande le séquencement du séquenceur de bus d'entrée/sortie.
La table de service 20 est l'entité au moyen de laquelle le bloc d'exécution 10 communique avec le séquenceur de bus d'entrée/sortie. La table de service contient dix rubriques, et chacune des rubriques est divisée en un certain nombre de champs. L'un des champs indique au réseau logique programmable quel type d'opération le séquenceur doit exécuter. Lorsque l'on a prévu des rubriques multiples pour la table de service, la logique de sélection de ligne 22 détermine celle des rubriques
que le réseau logique programmable 18 doit utiliser.
L'interface de bus 26 achemine, sous le contrôle du réseau logique programmable, les données à transférer entre la batterie de registres 14 et les quatre ports du bus d'entrée/sortie. Le séquenceur exécute la série d'étapes que l'on va indiquer maintenant; il répète de façon continue ces étapes: 1 ) la logique de sélection de bus sélectionne pour le réseau logique programmable 18 du séquenceur de bus d'entrée/sortie une rubrique valide de la table de
service 20.
2 ) le réseau logique programmable 18 lit le champ d'ordre de la rubrique sélectionnée. Ce champ d'ordre indique au réseau logique programmable l'endroit o il doit
commencer à exécuter son microcode.
30) le réseau logique programmable exécute une séquence d'opérations pouvant éventuellement donner l'ordre à l'interface de bus 26 de déplacer des données entre le
bus d'entrée/sortie 28 et la batterie de registres 14.
4 ) le réseau logique programmable ajuste les pointeurs d'adresses et détermine si toutes les données ont été transférées depuis le jeu de registres. Dans la
négative, l'opération reprend à l'étape 1.
) le réseau logique programmable positionne un drapeau dans la file d'attente de service d'entrée/sortie 20, drapeau qui déclenche la notification par la logique de génération de réponse 24 de la tâche destinataire du
bloc d'exécution 10 pour l'achèvement de l'opération.
Table de service La table de service 20 est la partie principale du séquenceur de bus d'entrée/sortie qui est visible par le programmeur de l'unité d'exécution. C'est par l'intermédiaire de la table de service qu'un programmeur indique au séquenceur de bus d'entrée/sortie quelle opération il faut exécuter. Le bloc d'exécution peut charger des requêtes dans la table de
service en délivrant les instructions 'accès' ou 'envoi'.
L'état de l'exécution d'une requête peut être surveillé en lisant les rubriques de la table de service via l'instruction
'accès local' du bloc d'exécution.
Structure de la table de service La table de service 20 du séquenceur de bus d'entrée/sortie est constituée de dix rubriques ou lignes identiques. La figure montre les champs de chaque rubrique. Une rubrique peut être divisée en trois sections réparties sur quatre mots de 32 bits: la section fixe qui conserve les informations qui font partie de chaque transfert associé à cette rubrique, et deux descripteurs (A et B) de jeu de registres, identiques, qui peuvent mémoriser le statut de deux tampons utilisés dans un transfert par blocs. Certains des champs des diverses sections d'une rubrique ne peuvent être chargés que par des accès locaux, tandis que d'autres sont chargés par les instructions accès' ou 'envoi'. Tous les champs de la table de service
peuvent être lus par des accès locaux.
Les champs de la partie fixe des rubriques sont: - 'priorité': le champ de priorité est un nombre ordinal sur deux bits; il prend les valeurs 0, 1, 2 et 3 et il est chargé par des accès locaux. La valeur de ce champ permet la détermination du moment o une rubrique sera exécutée. 'temporisation': le champ de temporisation a une taille de trois bits, et il est chargé par des accès locaux. La valeur contenue dans ce champ peut être utilisée pour contrôler les durées des signaux de commande sur lé bus d'entrée/sortie lorsque l'on exécute un ordre sur la ligne, et sera déterminée en fonction de la vitesse des organes adressés par cette ligne.La valeur contenue dans ce champ ajoutera un nombre égal de périodes d'horloge aux durées minimales des signaux de commande. Les durées minimales sont déterminées par les séquences du réseau
logique programmable.
- 'bascule': le bit de bascule détermine celui des deux descripteurs de jeu de registres qui est en cours d'utilisation. - 'bascule de réponse': le bit de bascule de réponse est utilisé par la logique de génération de réponse afin de déterminer celui des deux descripteurs de jeu de
registres qui devra être le suivant à répondre.
- 'type': le champ de type a une taille de deux bits et il est chargé par des accès locaux. Il peut prendre trois valeurs: octet, demi-mot ou mot. Ce champ détermine la manière dont on modifie les adresses et les longueurs lorsque l'on exécute des transferts. L'adresse d'entrée/sortie et le pointeur d'octet physique sont incrémentés d'une unité si le champ de type possède la valeur 'octet'. La valeur 'demi-mot' les incrémente de deux unités, et la valeur 'mot' les incrémente de quatre unités. Le champ de longueur est décrémenté des quantités correspondantes. - 'suspension': ce bit est positionné par la logique de production de la réponse lorsque, au cours d'une réponse envoyée vers un microport, on s'aperçoit que le microport est occupé. Lorsque l'un des microports se libère, tous les bits de suspension sont effacés et l'on réessaye les réponses. - 'entaché d'erreur': le bit 'entaché d'erreur' signifie que la rubrique a retourné une réponse qui avait été marquée 'achèvement anormal'. Ce bit est positionné chaque- fois que le séquenceur de bus d'entrée/sortie répond avec un achèvement anormal. Si une instruction envoi' est exécutée et que ce bit est positionné, l'instruction va provoquer une anomalie au niveau du contexte. Le bit 'entaché d'erreur' est remis à zéro par le matériel chaque fois qu'une instruction 'accès' sur la ligne est acceptée. Ce bit est utilisé pour mettre en
oeuvre la sémantique du transfert par bloc.
- 'adresse d'entrée/sortie': le champ d'adresse d'entrée/ sortie a une longueur de 24 bits. Il est chargé par l'instruction 'accès' et contient une adresse qui peut être appliquée sur le bus d'entrée/sortie. Cette adresse peut être incrémentée sous le contrôle du réseau logique programmable. La quantité dont on incrémente l'adresse dépend de la valeur placée dans le champ de type (voir
description de ce champ).
- 'immédiat': le bit 'immédiat' peut prendre deux valeurs: 'latent' et 'immédiat'. Il permet la détermination de la manière dont une rubrique devient prête à l'exécution. S'il est positionné à 'immédiat', la rubrique est prête à être sélectionnée dès que l'instruction 'accès' sera délivrée. Dans le cas contraire, le stimulus externe auquel la rubrique est associée contrôle sa capacité à être exécutée. Ce bit est
chargé par l'instruction 'accès.local'.
- 'ordre': le champ d'ordre a une taille de quatre bits, et il chargé par l'instruction 'accès'. La valeur contenue dans ce champ est lue par le réseau logique programmable et détermine celles des opérations que le réseau logique programmable va exécuter. Ces opérations sont définies par le code du réseau logique programmable et peuvent
varier d'une application à l'autre.
- 'méthode de réponse': le bit 'méthode de réponse' peut prendre deux valeurs, contrôlées par l'instruction accès': 'verrouillage du jeu de registres' et message'. Il commande celle des méthodes qu'utilisera le séquenceur de bus d'entrée/sortie pour répondre au bloc
d'exécution lorsqu'un transfert aura été achevé.
Chaque rubrique de la table de service possède deux descripteurs de jeu de registres (voir figure 5). Chaque descripteur contient toutes les informations concernant une
partie du flux de données, jusqu'à seize octets de long.
Lorsque l'un des descripteurs est en cours d'utilisation pour le contrôle du transfert, l'autre descripteur peut être chargé par le bloc d'exécution. Ils ont tous deux les champs suivants, dont les quatre premiers sont chargés par l'instruction 'accès' ou sa variante 'envoi': 'adresse d'octet physique': le champ d'adresse d'octet physique, a une longueur de neuf bits, et il est
fractionné en deux sous-champs. Un sous-champ de cinq.
bits, le pointeur de données, identifie le jeu de registres à utiliser. Le second sous-champ a une taille de quatre bits, et il pointe sur un octet de la batterie de registres. Ce champ peut être incrémenté sous le contrôle du réseau logique programmable. La valeur de
l'incrément est spécifiée par le champ de type.
- 'tâche de réponse': le champ de tâche de réponse a une taille de trois bits. Il désigne la trame de la tâche qui recevra la signalisation lorsqu'une opération sera achevée. - 'jeu de registres de réponse': le champ de jeu de registres de réponse comporte trois bits. Dans le cas d'une synchronisation basée sur le jeu de registres, il désigne le jeu de registres logiques de l'espace adressable- de la tâche destinataire que l'on doit déverrouiller lorsqu'une opération s'achève. Avec un synchronisation basée sur les messages, ce champ sera
retourné avec le message.
- 'longueur': le champ de longueur possède quatre bits. Il contient la valeur du nombre d'octets qui restent à transférer pour une opération. Les valeurs 0 à 15 représentent respectivement 1 à 16 bits restant à transférer. De la sorte, il n'y a pas de valeur qui représente zéro octet à transférer. A la place, cette
indication est donnée par un bit 'prêt à dépositionner'.
Le champ de longueur peut être décrémenté par le réseau logique programmable. La valeur du décrément est spécifié
par le champ de type (voir la description de ce champ).
- 'verrouillage': le bit de verrouillage indique si le descripteur o il se trouve a un travail utile à exécuter ou non. Le bit est positionné lorsqu'une instruction 'accès' ou 'envoi' est acceptée par le séquenceur de bus d'entrée/sortie. Un accès sera bloqué si le bit de verrouillage de l'un quelconque des descripteurs est positionné, tandis qu'une instruction 'envoi' sera bloquée s'ils sont tous deux positionnés. Le bit de verrouillage est dépositionné par le matériel chaque fois que le séquenceur de bus d'entrée/sortie envoie pour
cette rubrique une réponse normale.
- 'fait': le bit 'fait' indique que le réseau logique programmable du séquenceur de bus d'entrée/sortie a achevé le traitement de la requête dans la partie de la table, et il est utilisé pour indiquer à la logique de production de la réponse qu'il y a lieu d'envoyer un message au bloc d'exécution. Le bit de verrouillage est dépositionné par la logique de réponse lorsqu'elle a terminé correctement sa réponse. Si, en raison d'un microport occupé, la réponse est rejetée, le bit de verrouillage reste positionné et le bit de suspension est
également positionné.
- 'code de réponse': le code de réponse est un registre à deux bits. Chacun des bits peut être positionné ou dépositionné par le réseau logique programmable. Les codages de ces bits sont les mêmes que ceux du champ d'ordre; ils sont déterminés par les programmes du réseau logique programmable. Cependant, quel que soit leur codage particulier, des valeurs non à zéro indiquent
un état anormal.
Restrictions à l'alignement des données Les opérandes de demi-mots et de mots doivent être situés dans la batterie de registres sur des frontières de type approprié. Si le type d'opérande et les bits de poids le plus faible de l'adresse physique d'octet indiquent que cette condition n'a pas été remplie, on ne transfère dans ce cas aucune donnée. Dans ces cas, les données lues depuis le bus d'entrée/sortie ne sont pas inscrites dans la batterie de registres, et des données non définies sont placées sur le bus
pour une opération d'écriture.
Si la valeur de longueur fait en sorte que l'adresse d'octet physique franchit la frontière du jeu de registres, la suite de l'adresse se replacera à l'intérieur de ce jeu de registres et
ne viendra pas écraser les registres adjacents.
Transfert en pipeline avec la variante 'envoi' Le séquenceur de bus d'entrée/sortie a la possibilité de transférer le contenu d'un flux de jeux de registres sans avoir à exécuter une instruction après le transfert de chaque jeu de registres pour provoquer le transfert du jeu de registres suivant. L'instruction permettant d'envoyer au séquenceur de bus d'entrée/sortie un nouveau jeu de registres peut être délivrée pendant que le séquenceur de bus d'entrée/sortie est
encore en train de transférer le jeu de registres précédent.
Cette caractéristique élimine les interruptions du flux de données entre jeux de registres consécutifs. De plus, elle libère le bloc d'exécution d'un certain nombre de contraintes temporelles strictes auxquelles il aurait été soumis sinon, dans le cas o il gérerait des organes sans tamponnage. Pour pouvoir mettre en oeuvre cette caractéristique, il est prévu la variante 'envoi' de l'instruction 'accès'. Le fonctionnement de cette instruction est illustré sur la figure 6. Elle présente la forme suivante: envoi (code_séquenceur: cardinal, tâchederéponse: identificateurdetâche, jeu de registres de réponse: cardinal, longueur: cardinal, octet_logique: adresse) Une instruction 'accès' doit toujours être délivrée pour faire débuter une opération du séquenceur de bus d'entrée/sortie. Après qu'une instruction 'accès' ait chargé la plupart des champs fixes et le descripteur A du jeu de registres d'une rubrique d'une table de service, on peut délivrer un nombre arbitraire d'instructions 'envoi' à cette même rubrique. Ceci est utile à la fois pour des ordres latents et pour des ordres immédiats. La forme et la sémantique sont les mêmes que pour l'instruction 'accès', à l'exception des points suivants:
1 ) on n'effectue aucun calcul d'adresse d'entrée/sortie.
)> le champ d'ordre de la table de service n'est pas modifié, et le champ correspondant dans le registre de
paramètre est ignoré.
3 ) la méthode de réponse et les bits latents dans la table
de service ne sont pas modifiés.
4 ) le descripteur du jeu de registres qui est chargé dépend des bits de verrouillage d'accès (l'accès charge
toujours le descripteur A).
) une anomalie au niveau du contexte est produite si le bit 'entaché d'erreur' est positionné pendant l'accès lorsque cette instruction est exécutée (l'accès efface
le bit 'entaché d'erreur').
L'instruction 'accès' est au commencement du flux de données entre le bus d'entrée/sortie et la-batterie de registres. Les instructions 'envoi' alimentent le reste des jeux de registres afin que le flux puisse continuer sans interruption. Chaque instruction 'envoi' charge le descripteur vide du jeu de registres à utiliser par le séquenceur de bus d'entrée/sortie lorsque celui en cours a été épuisé. Une séquence exécutée par un programme de l'unité d'exécution effectuant un transfert par blocs avec l'un des organes se trouvant sur le bus d'entrée/sortie présente l'aspect suivant: accès (... tampon_1...) envoi (... tampon_2..) 10... envoi (... tampon_i...) La chaîne de délivrances d'instructions 'envoi' peut continuer indéfiniment. Si l'envoi aux jeux de registres prend fin du fait qu'une instruction d'arrêt d'envoi est délivrée, le transfert d'accès d'envoi prendra fin jusqu'à ce qu'une autre
instruction 'envoi' ou 'accès' soit délivrée.
Si les deux descripteurs sont épuisés avant que l'instruction 'envoi' suivante ne soit délivrée, il peut se passer un ralentissement.ou une accélération des données de l'organe utilisé pour le transfert avec l'un des bus d'entrée/sortie. Cependant, le séquenceur de bus d'entrée/sortie n'en est pas conscient et recommencera à transférer lorsqu'il recevra un autre jeu de registres à remplir ou à vider. Si les deux descripteurs sont pleins et qu'une instruction 'envoi' est exécutée, la tâche qui en est à l'origine va être bloquée jusqu'à ce que l'un des descripteurs devienne vide. Ainsi, l'instruction 'envoi' réalise le blocage
exactement de la même façon que le fait l'instruction 'accès'.
Lorsqu'un descripteur est épuisé, le réseau logique programmable donne l'ordre au système de réponse de répondre au bloc d'exécution. Il peut se passer un temps indéterminé avant que ceci arrive. Le système de réponse fonctionne en parallèle avec le reste du séquenceur de bus d'entrée/sortie, de sorte que le transfert ne sera pas directement affecté. Cependant, si la réponse prend un temps relativement long (par exemple, du fait que le microport de la tâche destinataire est occupé), l'autre descripteur pourrait se trouver épuisé avant que le premier n'ait fini de répondre. Le système de réponse permet de s'assurer que les réponses provenant d'une entrée donnée seront envoyées dans le bon ordre. C'est-à-dire que, même si le second descripteur spécifie une tâche destinataire avec un microport libre auquel le système de réponse pourrait effectuer un envoi,
il attendra que le premier envoi ait été achevé avec succès.
Les autres rubriques ne sont pas affectées par les réponses suspendues, et le réseau logique programmable n'en a pas conscience. Il n'y a pas d'ordonnancement des réponses entre
rubriques différentes.
Si le séquenceur de bus d'entrée/sortie répond à une tâche avec un tampon défectueux, toutes les instructions 'envoi' ultérieures vers la ligne particulière qui présentait un problème seront entachées d'erreur. Ceci est compatible avec la sémantique de transfert par blocs du séquenceur de bus d'entrée/sortie. Requêtes immédiates et latentes Lorsque le bloc d'exécution délivre une requête au séquenceur de bus d'entrée/sortie, il spécifie si celle-ci doit être exécutée immédiatement ou si l'exécution doit être bloquée jusqu'à ce qu'une borne de requête externe soit activée. Le bit immédiat' de l'instruction 'accès' est positionné pour indiquer une requête immédiate et dépositionné pour un requête latente. Les dix rubriques de la table de service sont associées en permanence à dix paires "requête/accusé de réception" des lignes de signal sur le bus d'entrée/sortie. Les requêtes latentes peuvent fournir au programmeur du bloc d'exécution soit une primitive de signalisation (comme les interruptions), soit une primitive de transfert par blocs (comme les accès directs mémoire). La réponse du séquenceur de bus d'entrée/sortie à ces requêtes est contrôlée par le programme du réseau logique programmable. Dans la plupart des applications, l'action que ce programme entreprend sera déterminée par la valeur du champ d'ordre dans la rubrique de la table de service qui est sélectionnée en fonction de la
borne de demande active.
Gestion de la table de service La gestion de la table de service est le processus par lequel l'une des dix rubriques de la table de service est sélectionnée pour être exécutée par le réseau logique
programmable. Le présent paragraphe décrit ce processus.
La logique de sélection de ligne est un bloc autonome de la logique qui surveille de façon continue toutes les rubriques de la table et les signaux en entrée correspondants de requête afin d'effectuer leur sélection. Chaque fois que le réseau logique programmable du séquenceur de bus d'entrée/sortie termine une transaction, il commence à traiter la rubrique qui
a été sélectionnée par la logique de, sélection.
Dans chaque rubrique de la table de service, il existe un bit appelé 'verrouillage'. Celui-ci est positionné chaque fois qu'une instruction 'accès' ou une instruction 'envoi' chargent la rubrique. Il est dépositionné sous le contrôle du réseau logique programmable. Le système de sélection de rubrique utilise ce bit pour déterminer celles des rubriques qui doivent participer au concours des priorités. Il indique qu'une rubrique est prête à être exécutée. Seules les rubriques ayant les bits de verrouillage positionnés et les bits de suspension dépositionnés peuvent être sélectionnées. La logique de gestion
de la ligne assure, de la manière suivante, une sélection des.
priorités avec rotation parmi les lignes de priorités identiques: 1 ) A:= jeu de rubriques avec les bits de verrouillage positionnés et les bits 'fait' dépositionnés 2 ) B:= (éléments de A qui contiennnent des requêtes immédiates) ET (éléments de A avec des requêtes latentes dont les bornes de requête sont actives) 3 ) p:= MAX (niveau_de_priorité (b)) pour tous les b dans B 4 ) C:= éléments de B au niveau de priorité p ) séquenceur:= élément suivant de C
S étant la rubrique qui est sélectionnée.
Interface de bus L'interface de-bus 26 du séquenceur de bus d'entrée/sortie comporte 48 bornes, divisées en six champs. Quatre de ces champs sont des ports sur huit bits, A à D, qui assurent des trajets bidirectionnels de données entre la batterie de registres et le bus d'entrée/sortie. L'un des champs a une taille de huit bits et vient de la sortie du réseau logique programmable du séquenceur de bus d'entrée/sortie. Ce jeu de
sorties délivre les signaux de commande au bus d'entrée/sortie.
Le champ suivant possède six bits qui sont des entrées du réseau logique programmable et qui peuvent être utilisées pour des signaux de statut et de poignée de mains provenant du bus d'entrée/sortie. L'un des signaux d'entrée de requête est relié à une borne dédiée. Un signal de contrôle de sortie, activation octet niveau haut' est également prévu pour gérer des transferts de données de la taille d'un octet lorsque le bus d'entrée/sortie est configuré avec une largeur de seize bits. Les ports A à D sont composés de deux registres à verrouillage avec des étages pilotes à trois états, de manière à pouvoir simultanément tamponner des données dans les deux directions. Le fonctionnement de ces registres à verrouillage est contrôlé par la table de contrôle des ports. Cette table est une combinaison d'une ROM et d'une RAM à seize positions, adressées par le réseau logique programmable. Les rubriques de la table sont composées de quatre champs de trois bits, qui contrôlent les ports correspondants. Chacun des ports peut exécuter les opérations suivantes: verrouiller les données entrantes, - verrouiller les données sortantes, transférer les données entrantes verrouillées vers la batterie de registres, - piloter les données verrouillées en sortie sur le bus d'entrée/sortie, - verrouiller les données entrantes et les envoyer simultanément vers la batterie de registres, - verrouiller les données sortantes et les piloter sur le bus d'entrée/sortie,
- n'exécuter aucune opération.
La valeur 'adresse d'entrée/sortie' provenant de la rubrique de la table de service peut également être pilotée sur le bus d'entrée/sortie par l'intermédiaire de ces ports. On prévoit une caractéristique supplémentaire selon laquelle le séquenceur de bus d'entrée/sortie peut être interfacé à un bus synchrone et selon laquelle on peut verrouiller des données sur les ports au moyen d'un signal externe. Lorsque le séquenceur de bus d'entrée/sortie est programmé sur ce mode de fonctionnement, l'une des bornes d'entrée du réseau logique programmable change de fonction pour recevoir un signal d'entrée de verrouillage. Les ports ainsi programmés peuvent être maintenant chargés par une impulsion d'échantillonnage sur cette ligne. L'impulsion positionne également un registre à verrouillage à l'entrée du réseau logique programmable,
indiquant que des données sont disponibles sur les ports.
Certaines des bornes de l'interface de bus peuvent également servir pour un accès direct mémoire ou pour des paires de signal "requête/accusé de réception" d'interruption. Les ports C et D, deux des entrées du réseau logique programmable et deux des sorties du réseau logique programmable peuvent être utilisés à cette fin. Chaque ligne de la table de service est associée à une borne de requête et une borne d'accusé de réception de l'interface de bus. La fonction d'une borne est contrôlée par un registre du domaine local. Chaque broche peut être utilisée soit comme partie de la paire demande/accusé de réception, soit en mode 'normal'. Les bornes qui sont "programmées" pour être des bornes de requête sont également programmées pour être sensibles soit à un niveau soit à une transition. Les lignes d'accusé de réception sont contrôlées - par le réseau logique. programmable. Lorsqu'une ligne de la table de service vient à être activée par une borne de requête, la borne d'accusé de réception associée est référencée comme étant la broche courante. De la sorte, si le réseau logique programmable ordonne de piloter la borne d'accusé de réception,
la borne appropriée sera pilotée dans le bon sens.

Claims (3)

REVENDICATIONS
1. Un séquenceur d'entrées/sorties programmable utilisable avec un bloc d'exécution (10) qui exécute une pluralité de tâches formées de séquences d'instructions, ces tâches comprenant une tâche d'origine et une tâche destinataire, ce séquenceur de bus permettant de définir un trajet de données entre des organes reliés à un bus d'entrée/sortie (16) et une batterie de registres (14), caractérisé en ce qu'il comprend: - des moyens formant réseau logique programmable (18) pour mémoriser un programme, des moyens formant table de service (20), reliés aux moyens formant réseau logique programmable, ces moyens formant table de service comprenant une pluralité de rubriques divisées en champs, l'un de ces champs comprenant des moyens pour indiquer au réseau logique programmable quel type d'opération le séquenceur de bus doit exécuter,
- une pluralité de lignes de requête d'entrée/sortie (30),.
- des moyens formant logique de sélection de ligne (22), reliés aux lignes de requête d'entrée/sortie (30), aux moyens formant réseau logique programmable (18) et à la table de service (22) pour déterminer celles des rubriques de la table de service que les moyens formant réseau logique programmable doivent utiliser, et - des moyens formant interface de bus (26), reliés au bus d'entrée/sortie (28), à la batterie de registres (14), et aux moyens formant réseau logique programmable (18), afin d'acheminer les données entre la batterie de registres (14) et le bus d'entrée/sortie (28), les champs de la table de service comprenant en outre des descripteurs de jeu de registres pour mémoriser le statut de tampons de jeu de registres, le réseau logique programmable (18) comprenant des moyens pour décoder une instruction 'accès' afin de faire commencer une opération en chargeant le descripteur de jeu de registres, et des moyens pour décoder des instructions 'envoi' suivantes appliquées à ladite rubrique, chaque instruction 'envoi' chargeant un champ de descripteur de jeu de registres vide à utiliser lorsque le champ de
descripteur de jeu de registres courant est épuisé.
2. Le séquenceur de la revendication 1, dans lequel le descripteur de jeu de registres comprend un bit de suspension, caractérisé en ce qu'il comprend en outre: - des moyens pour positionner le bit de suspension dans le cas o une tentative de réponse à une tâche après achèvement d'une opération échoue, et - des moyens pour dépositionner ce bit de suspension dans le cas o cette tentative de réponse à une tâche après achèvement d'une opération réussit, de sorte qu'un descripteur suspendu ne puisse pas être rechargé par une instruction 'accès' ou une instruction 'envoi', et 'que les instructions 'accès' ou instructions 'envoi' délivrées à un descripteur suspendu soient bloquées.
3. Le séquenceur de la revendication 1, caractérisé 'en ce qu'il comprend en outre: - des moyens, dans ia logique de sélection de ligne (22), pour sélectionner une rubrique de la table de service, - des moyens, dans la logique de sélection de ligne (22), pour signaler au réseau logique programmable le moment o une entrée est sélectionnée et o son champ d'ordre est disponible pour la lecture par le réseau logique programmable, - des moyens, dans chaque rubrique de la table de service, formant bit de verrouillage, - des moyens pour positionner ce bit de verrouillage chaque fois qu'une instruction 'accès' et une instruction 'envoi' chargent la rubrique, - des moyens pour dépositionner ce bit de verrouillage sous le contrôle du réseau logique programmable, - des moyens de sélection de rubrique, fonctionnant en réponse au bit de verrouillage et au bit de suspension pour déterminer celles des rubriques qui doivent participer à la résolution du conflit des priorités par les moyens formant logique de priorité, de sorte que seules celles des rubriques ayant leurs bits de verrouillage positionnés et leurs bits de suspension dépositionnés puissent être susceptibles de sélection.
FR8806038A 1987-05-07 1988-05-05 Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie Withdrawn FR2617304A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/046,633 US4803622A (en) 1987-05-07 1987-05-07 Programmable I/O sequencer for use in an I/O processor

Publications (1)

Publication Number Publication Date
FR2617304A1 true FR2617304A1 (fr) 1988-12-30

Family

ID=21944510

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8806038A Withdrawn FR2617304A1 (fr) 1987-05-07 1988-05-05 Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie

Country Status (4)

Country Link
US (1) US4803622A (fr)
JP (1) JPS6448157A (fr)
FR (1) FR2617304A1 (fr)
GB (1) GB2204974B (fr)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2504512B2 (ja) * 1988-03-09 1996-06-05 富士通株式会社 Dmaコントロ―ラ
US5081375A (en) * 1989-01-19 1992-01-14 National Semiconductor Corp. Method for operating a multiple page programmable logic device
US5055712A (en) * 1990-04-05 1991-10-08 National Semiconductor Corp. Register file with programmable control, decode and/or data manipulation
US5233692A (en) * 1990-04-06 1993-08-03 Micro Technology, Inc. Enhanced interface permitting multiple-byte parallel transfers of control information and data on a small computer system interface (SCSI) communication bus and a mass storage system incorporating the enhanced interface
US5481707A (en) * 1991-05-19 1996-01-02 Unisys Corporation Dedicated processor for task I/O and memory management
US5369772A (en) * 1992-05-21 1994-11-29 Compaq Computer Corporation Method of maximizing data pin usage utilizing post-buffer feedback
US5687371A (en) * 1993-09-27 1997-11-11 Intel Corporation Selection from a plurality of bus operating speeds for a processor bus interface during processor reset
US5548791A (en) * 1994-07-25 1996-08-20 International Business Machines Corporation Input/output control system with plural channel paths to I/O devices
US5664219A (en) * 1995-06-12 1997-09-02 International Business Machines Corporation Method and system for controlling servicability of adapters connected by an I/O channel interface to a computer system
JPH1097385A (ja) * 1996-09-19 1998-04-14 Toshiba Corp ディスク記録再生装置及び同装置に適用するインターフェース制御装置
US6253323B1 (en) 1996-11-01 2001-06-26 Intel Corporation Object-based digital signatures
US6237083B1 (en) 1998-02-13 2001-05-22 Advanced Micro Devices, Inc. Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6591310B1 (en) * 2000-05-11 2003-07-08 Lsi Logic Corporation Method of responding to I/O request and associated reply descriptor
US7154886B2 (en) * 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7230929B2 (en) * 2002-07-22 2007-06-12 Qlogic, Corporation Method and system for dynamically assigning domain identification in a multi-module fibre channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US20050240727A1 (en) * 2004-04-23 2005-10-27 Shishir Shah Method and system for managing storage area networks
US7930377B2 (en) * 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7380030B2 (en) * 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) * 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699530A (en) * 1970-12-30 1972-10-17 Ibm Input/output system with dedicated channel buffering

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4772051A (en) * 1986-05-23 1988-09-20 Michigan Brake Manufacturing, Inc. Modular manifold brake hose end fitting

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699530A (en) * 1970-12-30 1972-10-17 Ibm Input/output system with dedicated channel buffering

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ELECTRONIC DESIGN, vol. 35, no. 3, 5 février 1987, pages 101-104, Hasbrouck Heights, New York, US; N. SHARMA: "Programmable logic shrinks bus-interface designs" *
IBM TECHNICAL DISCLOSURE BULLETIN, vol. 29, no. 12, mai 1987, pages 5316-5317, New York, US; "Communication manager employing a control table" *
PROCEEDINGS OF THE IEEE 1987 CUSTOM INTEGRATED CIRCUITS CONFERENCE, 4-7 mai 1987, pages 522-525, New York, US; K.S. HALLENBECK et al.: "High performance CMOS EPROM programmable bus interface controller" *

Also Published As

Publication number Publication date
US4803622A (en) 1989-02-07
GB2204974A (en) 1988-11-23
GB8809815D0 (en) 1988-06-02
JPS6448157A (en) 1989-02-22
GB2204974B (en) 1991-12-11

Similar Documents

Publication Publication Date Title
FR2617304A1 (fr) Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie
EP0615196B1 (fr) Dispositif de communication entre au moins un client et au moins un serveur, utilisation du dispositif
EP0046831B1 (fr) Système de retransmission de trames numérotées et reçues en erreur dans un système de transmission de données
EP0755013B1 (fr) Système informatique multinodal et procédé de transfert de messages dans ledit système informatique multinodal
FR2480460A1 (fr) Dispositif pour transferer des informations entre des unites principales d'un systeme de traitement de donnees et un sous-systeme central
FR2578071A1 (fr) Installation de multitraitement a plusieurs processus
FR2517442A1 (fr) Dispositif d'interruption pour un systeme de multitraitement, procede pour sa commande et systeme pour sa mise en oeuvre
FR2519443A1 (fr) Systeme d'attribution de l'acces a une ressource utilisee en mode partage a la demande
FR2472234A1 (fr) Protocoles de communication geres par les modules de communication utilises dans un systeme de traitement de donnees reparti
EP0089440B1 (fr) Procédé et dispositif d'échange d'information entre des terminaux et une unité de commande centrale
EP1158405A1 (fr) Système et méthode de gestion d'une architecture multi-ressources
EP0515238B1 (fr) Dispositif et méthode pour la gestion de plusieurs files d'attente indépendantes dans un espace mémoire commun et banalisé
EP0602281B1 (fr) Dispositif de reséquencement pour un noeud d'un système de commutation de cellules
EP0366520B1 (fr) Réseau de communication de données pour systèmes multiprocesseurs
EP0524089B1 (fr) Structure de logiciel pour système de traitement de données, notamment pour système de télécommunications
FR3090924A1 (fr) Échange de données dans un ordinateur
EP0146868B1 (fr) Dispositif de terminaux sémaphores pour le système de signalisation no. 7
FR2686991A1 (fr) Procede, systeme et processeur de communication entre une pluralite de sous-ensembles d'un equipement.
EP0082903B1 (fr) Unité de commande pouvant être connectée à deux mémoires de vitesses différentes
EP0822495B1 (fr) Distribution de tickets dans un système informatique multinodal
CN116452200B (zh) 红包的收发方法、装置、电子设备及存储介质
EP0512882A1 (fr) Procédé et dispositif de détection et de contrôle du gabarit de messages numériques transmis à un dispositif de réception
EP0369843B1 (fr) Unité centrale à plusieurs processeurs et plusieurs mémoires pour systèmes de traitement de données
EP0251965B1 (fr) Système de commutation de paquets de données
EP0953917B1 (fr) Bit d'occupation pour circuit tampon de sortie d'interface de mémoire externe

Legal Events

Date Code Title Description
ST Notification of lapse