Brevet FR2636448A1 — publié le 19900316

DiSPOSITIF D'ACQUISITION DE DONNEES POUR PROCESSEUR DESCRIPTION L'invention concerne un dispositif d'acquisition de données pour un processeur susceptible d'être relié à un périphérique par exemple à un disque, ou à un réseau de données à très haut débit de 10 à 500 nbitsfs. be façon classique, pour réaliser des échanges performants entre des périphériques d'ordinateurs ou de processeurs et les ordinateurs, on utilise un système d'accès direct à une mémoire commune (DA : Direct Memory Access). Le principe de ce procédé consiste à arrêter le processeur principal pour utiliser le meme bus que lui afin d'aller écrire ou d'aller lire des informations dans cette mémoire commune. Le bus d'accès à la mémoire commune est commun au processeur et aux entrées-sorties du processeur. Il est donc néc-essaire d'arbitrer Les échanges entre le processeur et la mémoire commune et entre Les entrées-sorties du processeur et cette mémoire commune afin que les données issues des entrées-sorties du processeur et qui transitent par ce bus puissent entre lues ou écrites dans la mémoire commune sans collision. IL y a donc une perte de temps lorsque l'on procède à de tels échanges car ces échanges doivent Outre synchronisés et arbitrés. Par ailleurs, un système DMA ne peut en meme temps qu'il véhicule des données, effectuer un traitement de premier niveau sur celle-ci, par exemple la recherche de fanions ou la recherche de motifs. Un tel système est dit "indeterministe" car une information présente à L'entrée du système ne sera prise en compte qu'au bout d'une durée tout à fait aléatoire. L'arbitrage peut même faire perdre des informations dans le cas où le débit des données est élevé, ou dans le cas où (cas le plus fréquent) le processeur ne répond pas assez vite. De plus, comme L'arbitrage se fait généralement par Le processeur, celui-ci envoie des instructions ou des situations d'exception qui entrainent des délais de réponse très variables, fonctions du processeur. Un tel système est également 'indéterministe" vu du processeur car il se traduit par L'arrêt total du processeur pendant L'échange. En effet, pour limiter le nombre d'arbitrages, le système DMA se réserve le bus de données pour plusieurs cycles et le processeur ne peut plus travailler. D'autre part, Le système DMA se substitue au processeur central pendant L'échange, ce qui implique l'utilisation de circuits assez complexes. Ces circuits ont donc non seulement un prix élevé, mais en plus leurs performances sont assez Limitées. Cette limitation provient du fait qu'ils ne sont pas spécialisés pour une application donnée mais qu'ils peuvent être utilisés dans différentes applications d'ou un manque d'optimisation. Pour éviter les probLèmes liés à L'arbitrage entre le processeur et les systèmes DMA, il est connu de placer une mémoire tampon entre le périphérique et la mémoire centrale du processeur qui va L'utiliser. Cette mémoire peut être organisée en FIFO (First In First Out) ce qui signifie que la première information entrée sera la première sortie. Pour des raisons de technologie, les circuits FIFO ne présentent que très peu d'entrées et sont par conséquent limités en capacité. Dans certaines réalisations particulières, on organise les mémoires en pseudo FIFO de manière à utiliser des mémoires à haute capacité. Dans les systèmes utilisant des mémoires organisées in FIFO ou en pseudo FIFO, la plupart des Inconvénients des systèmes DMA sont éliminés en séparant les bus de la mémoire centrale du bus d'entrées-sorties. Comme la mémoire FIFO sert de réservoir aux informations qui y sont stockées temporairement, sa taille doit être assez grande, au minimum plus grande que le nombre d'informations fournies à L'entrée pendant le temps maximal de réaction du processeur central. Pour les applications à haut débit, les mémoires FIFO actuelles sont trop petites. Pour pallier à cette Limite technologique de réalisation, on utilise donc des mémoires pseudo FIFO qui sont des mémoires classiques avec une logique à L'entrée qui arbitre. On augmente donc La capacité mais on retrouve la perte de temps due à la synchronisation et l'arbitrage. La ressource arbitrée n'est plus le bus comme dans le cas des systèmes DMA mais la mémoire tampon. Ceci limite moins la performance mais reste quand même gênant pour les applications à haut débit et rend malgré tout te système indétersiniste", des informations pouvant être perdues. On peut actuellement envisager d'utiliser des mémoires dites à double accès pour réaliser de tels échanges.Malheureusement, ces mémoires ont une taille trop faible et par ailleurs un coût trop élevé, la limitation dans la taille entraînant l'impossibilité d'utiliser de telles mémoires des lors que le dispositif doit effectuer des échanges entrées-sorties à haut débit et à gros volume. La présente invention a pour but de remédier à ces inconvénients. Elle a pour objet un dispositif d'acquisition de données pour un processeur susceptible d'être relié à un périphérique ou à un réseau de données, le dispositif comprenant une interface d'entrées-sorties, des moyens de mémorisation de données, au moins un bus d'adresses et au moins un bus de données, ce dispositif étant principalement caractérisé en ce que Les moyens de mémorisation comportent au moins deux mémoires vives à lecture et écriture, en ce que les bus d'adresses et de données sont doublés et en ce qu'il comporte en outre des moyens d'aiguillage et de commutation qui permettent au processeur de lire des données présentées à L'interface entrées-sorties et enregistrées dans L'une des mémoires, ou de charger cette mémoire et de permettre, en même temps, que l'autre mémoire soit déchargée des données déjà enregistrées, ou chargée de données issues de L'interface entrées-sorties et inversement. Avantageusement, Les moyens de commutation et d'aiguillage comportent un compteur-décompteur et au moins deux multiplexeurs, le compteur-décompteur étant relié à une première entrée de chaque multiplexeur par L'un des bus d'adresses, le processeur étant relié à une deuxième entrée de chaque multiplexeur par l'autre bus d'adresses, chaque multiplexeur étant susceptible d'adresser L'une des deux mémoires. Avantageusement, le dispositif comporte un ensemble de circuits de guidage unidirectionnels ou bidirectionnels sur le trajet des bus d'adresses et de données et un séquenceur permettant d'actionner ces circuits de guidage de manière à les rendre ouverts ou fermés pour permettre le transit des données dans Le sens désiré. Selon un exemple de réalisation, le compteur compteur est chargeable, le chargement étant effectue par le bus de données du processeur. Selon un autre exemple de réalisation de l'invention, Le compteur-décompteur est rechargé par un circuit de guidage unidirectionnel commandé par le séquenceur qui permet la liaison entre le bus d'accès de sortie de ce compteur à l'entrée du compteur. Les caractéristiques et avantages de l'invention ressortiront mieux de la description qui va suivre, donnée à titre d'exemple illustratif mais non limitatif et faite en référence à la figure unique qui représente le schéma d'architecture d'un dispositif d'acquisition de données conforme à l'invention. Le dispositif représenté sur La figure unique permet, conformément à l'invention, des échanges à haut débit entre un processeur ou un ordinateur et un circuit périphérique tel qu'un disque ou bien un réseau de transmission. Les échanges se font au travers de l'interface entrées-sorties E/S sous la commande CD du processeur. Le dispositif comporte des moyens de mémorisation constitués par au moins deux mémoires du type RAM, référencées MO et Ml, qui permettent de réaliser une mémorisation intermédiaire des informations sans limitation de taille en théorie et sans aucun arbitrage. Le dispositif comporte également des moyens d'aiguillage et de commutation CP, MUXO, MUNI, D1-D6, des bus d'adresses ADA, ADB et de données DO, DA utilisés dans les échanges entre ce processeur et l'extérieur par le biais de l'interface entrées-sorties E/S. Le dispositif comporte plus particulièrement au moins deux multiplexeurs MUXO ET MUNI, chaque multiplexeur permettant d'adresser L'une des deux mémoires, le multiplexeur MUXO permettant d'adresser, selon l'exemple donné, la mémoire MO et le multiplexeur MUXI permettant d'adresser la mémoire Ml. Les bus d'adresses et de données sont doublés de la manière suivante : un bus d'adresses ADA issu du processeur P permet d'adresser à partir des entrées A de chacun des deux multiplexeurs MUXO et MUXI respectivement la mémoire MO et la mémoire M1 ; un deuxième bus d'adresses ADB relie les sorties du compteur-décompteur CP à chacune des entrées B de chaque multiplexeur MUXO et MAUX1 et permet par le biais de ces multiplexeurs d'adresser les mémoires MO et M1. Le dispositif comporte également deux bus de données - un premier bus de données effectue une Liaison entre le processeur P et les mémoires, ce bus de données DO étant pour cela divisé en deux autres bus D03 et D04, le bus D03 étant relié aux entrées de données de la mémoire MC et le- bus D04 étant relié aux entrées de données de la mémoire Ml, - un deuxième bus de données DA effectue une liaison entre L'interface entrées-sorties et les mémoires, ce bus de données étant pour cela divisé également en deux bus DOS et D06, le bus DOS croisant le bus D03 et étant donc relié aux entrées de données de la mémoire MO, le bus D06 croisant le bus D04 et étant donc relié aux entrées de données de la mémoire Ml. Sur les trajets des bus de données et d'adresses, on a disposé des circuits de guidage soit directionnels, soit bidirectionnels. Un circuit de guidage unidirectionnel D2 est place sur Le trajet du bus ADA en amont des entrées A des multiplexeurs MUXO, MUX1. Sur commande du processeur P, Le séquenceur SQ délivre des signaux qui vont activer ou désactiver les différents circuits de guidage et qui vont également sélectionner les entrées A ou 8 des multiplexeurs. Le séquenceur envoie également les ordres de lecture et d'écriture des mémoires sur commande CD du processeur. Les échanges se font de La façon suivante le processeur initialise L'interface entrées-sorties E/S pour indiquer le sens de l'échange, c'est-à-dire s'il s'agit d#une émission ou d'une réception de données, et indiquer le nombre de données à charger. Le processeur charge le nombre de caractères à partir duquel il devra être interrompu, ce nombre étant chargé sur le compteur à partir du signal C. Lorsque Le compteur a fini le comptage (ou le dXcomptage) il envoie un signal de fin F au séquenceur SQ qui génère un signal d'interruption INT vers le processeur P. Dans le cas d'une réception, le processeur P envoie un signal R à l'interface entrées-sorties, coupe le chemin de données D06 du bus de données DA et ouvre le chemin de données D05 pour les données provenant du bus DA. Pour cela le processeur commande L'émission par le séquenceur d'un signal O et d'un signal O, le signal O étant par exemple appliqué au circuit de guidage D5, le signal O étant alors appliqué au circuit de guidage D6. De la même façon, le chemin de données D03 est coupé pour les données issues du processeur P et arrivant par le bus DO et le chemin de données D04 est ouvert pour les données provenant du bubs DC, le signal T étant appliqué au circuit de guidage D3 et le signal O étant appliqué au circuit de guidage D4. En même temps que se font Les ouvertures et fermetures des différents circuits de guidage D3 à D6, le séquenceur autorise L'ouverTure du circuit de guidage D2 qui reçoit pour cela e signal d'activation O. Le circuit de guidage D1 est quant à lui désactivé par Le signal O. Le séquenceur émet également les signaux de sélection S et S des entrées A, B de multiplexeurs MUXO, MUX1. En même temps que sont émis les signaux O et O d'ouverture et de fermeture des différents circuits de guidage, le signal S permet, par exemple, de sélectionner l'entrée B sur le multiplexeur MUXO et le signal S est appliqué au multiplexeur MUXI pour sélectionner l'entrée A de ce multiplexeur. Ainsi, la mémoire MC est chargée des données provenant du bus DA oui transitent par le bus DOS, cette mémoire étant adressée par le bus d'adresses ADB correspondant aux sorties du compteur CP. Pendant ce temps là, la mémoire Ml qui est adressée par le bus d'adresses ADA du processeur via le multiplexeur MUXI peut être vidée de son contenu, un ordre de lecture R étant appliqué sur L'entrée de Lecture-écriture R/W de cette mémoire. A chaque échange, la dcnnée reçue est chargée par conséquent dans la mémoire MC sous le contrôle du séquenceur SQ et du compteur CP qui est incrémenté par exemple de 1 chaque fois. Quand le nombre de caractères programmés dans le compteur CP est atteint, le processeur P est réveillé par une interruption INT, ce signal INT étant envoyé par Le séquenceur au processeur sous réception du signal F de fin de comptage (ou de décomptage) du compteur. En même temps, le séquenceur SQ commute le bus de données DA via le circuit D6 sur le bus de données D06, ce circuit D6 étant désactivé par le signal O alors que le chemin DOS est fermé, le circuit D5 étant pour cela désactivé par le signal O. En même temps également, s'opère la commutation du bus DO vers le bus DOS via le circuit D3, le circuit D3 étant alors activé par le signal û alors que le bus D04 est ferme pour les données issues du bus DO, le circuit D4 étant lui désactivé par le signal 0. Les multiplexeurs MUXO et MUXI sont également commutés : le multiplexeur MUXO est commuté sur Les adresses processeur ADA via le circuit D2, l'entrée A de ce multiplexeur MUXO est alors sélectionnée. Le multiplexeur MUXI est commuté sur les adresses du compteur ADB, l'entré B de ce multiplexeur est alors sélectionnée. Le multiplexeur MUXO reçoit pour cela le signal S alors que le multiplexeur MUXI reçoit le signal S. L'échange entre le processeur et la liaison extérieure continue donc et le processeur peut lire en parallèle les données qui se trouvent dans la mémoire MO pendant que les données présentes à L'interface entrées-sorties sont mémorisées dans ta mémoire MI. Quand la mémoire Ml est remplie, une interruption accompagnée d'une commutation des chemins de données réveille le processeur. Pour cela le signal INT est émis par le séquenceur SQ vers Le processeur P et les signaux d'activation et de désactivation O et O vers Les différents circuits de guidage D2-D6 sont commutés. Dans le cas d'une émission, les opérations se déroulent de la même façon que dans le cas de la réception. La différence provient du sens des échanges et notamment du fait que les données qui sont chargées en mémoire viennent du processeur au lieu de venir de la liaison extérieure et du fait que lors d'une lecture de L'une de ces mémoires les données sont alors transmises å L'interface entrées-sorties. Le dispositif permet donc à l'ensemble du système de recevoir et de traiter des données en parallèle. La vitesse de commutation obtenue par des circuits est suffisante pour ne pas perdre de caractères lors de cette commutaticn. On choisit de préférence un compteur à programmaticn de maniére à pouvoir charger des valeurs différentes, ce qui permet de charger un nombre variable de dcnnées reçues ou émises. Le processeur a la possibiLité de lire dans une mémoire pendant que L'autre mémcire est chargée sans qu'il soit nécessaire d'interruption ou d'arbitrage, la lecture étant plus rapide que Le remplissage de la mémoire. Par ailleurs, le processeur a la possibilité de lire å tout moment l'état du compteur en lisant La sortie du compteur, Le bus ADB étant alors relié au bus de données DO. Le circuit de guidage D1 est pour cela activé pour ouvrir Le chemin aux données de sortie du compteur. Conformément à L'invention, les chemins de données du dispositif peuvent être de tailles variabLes (1, 2, 4 octets). Le chemin de données entre le processeur et les entrées-sorties n'est pas forcément identique. En effet, le chemin de données du processeur peut être sur 32 bits et Le chemin des données entréessorties peut être sur 8 bits. Le temps d'accès d'une donnée d'entrées-sorties est fixe et donc tout à fait déterministe par rapport au système de l'art antérieur, aucun arbitrage n'étant nécessaire. Dans le cas ou l'on utilise des mémoires RAM ayant un temps d'accès de 40 nanosecondes, on arrive à un débit de 25 Moctets par seconde, ce qui correspond à un débit de 200 Mbits/s entre Les mémoires et le processeur. Si le bus de données DO est plus Large, par exemple de 32 bits, alors ce débit est multiplié par 4. Dans le cas où le dispositif est utilisé pour effectuer des échanges entre un processeur et un disque magnétique, le dispositif permet alors de lire le ou les secteurs demandés sur le disque et après leur Lecture de réveiller le processeur tout en continuant de lire le reste de la piste. Dans le cas ou le dispositif permet de réaLiser des échanges entre un processeur et un disque optique-numérique, la lecture du disque optique peut être effectuée sans interruption et pendant un temps infini pendant que le processeur effectue par exemple un tri dans l'autre mémoire. Selon L'exemple de réalisation qui figure sur ce schéma, le compteur est un compteur chargeable et son chargement est effectue directement par le bus de données du microprocesseur. On peut bien entendu utiliser un compteur non rechargeable qui pourra être alors chargé par le séquenceur d'une manière tout à fait classique. La commande CD du séquenceur SQ par le processeur P se fait de façon connue et tout à fait classique. A titre d'exemple, dans une réalisation pratique, on pourra utiliser un circuit PAL à horloge (réseau à logique programmable) du type 16#4 pour r~alixser Le séquenceur et des composants MSI (LS ou F) tels que des circuits Lus245 (ou F245), pour réaliser les circuits de guidage, un compteur synchrone ou asynchrone du type F393 des mémoires RAM à temps d'accès de 40 ns (par exemple de 32Kx8 bits) ~ qui permettront d'obtenir un débit sur les bus de 10 Moctetsis. Le choix du processeur n'influe pas sur les caractéristiques et avantages du dispositif, on pourra par exemple utiliser un processeur 68020. Les nultiplexeurs peuvent être des circuits F257 et L'interface E/S un circuit SCSI du type AMD5388. REVENDICATIONS 1. Dispositif d'acquisition de données pour processeur (P) susceptible d'être relié à un périphérique CD) ou à un réseau de données, comprenant un interface d'entrées-sorties (E/S), des moyens de mémorisation de données, au moins un bus d'adresse et au moins un bus de données, caractérisé en ce que les moyens de mémorisation comportent au moins deux mémoires vives à lecture et écriture (MC, M1), en ce que les bus d'adresses et de données sont doublés et en ce qu'il comporte en outre des moyens d'aiguillage et de commutation de bus qui permettent au processeur (P) de lire des données présentées à L'interface entrées sorties (E/S) et enregistrées dans L'une des mémoires ou de charger cette mémoire et de permettre, en même temps, que L'autre mémoire soit déchargée des données déjà enregistées ou chargées de données issues du périphérique et inversement. 2. Dispositif d'acquisition de données selon la revendication 1, caractérisé en ce que les moyens de commutation et d'aiguillage comportent un compteurdé compteur (CP) et au moins deux multiplexeurs (MUXO, MUX1), le compteur-décompteur (CP) étant relié à une première entrée (B) de chaque multiplexeur par l'un des bus d'adresse (ADB), le processeur (P) étant relié à une deuxième entrée (A) de chaque multiplexeur par L'autre bus d'adresses (ADA), chaque multiplexeur étant susceptible d'adresser L'une des deux mémoires. 3. Dispositif d'acquisition de données selon la revendication 1 ou la revendication 2, caractérisé en ce qu'il comporte un ensemble de circuits de guidage unidirectionnels (D2, D1) ou bidirectionnels (D3, D4, D5, D6) sur le trajet des bus d'adresses et de données, et en ce qu'il comporte un séquenceur (SQ) permettant d'actionner ces circuits de guidage de manière à les rendre ouverts ou fermés. 4. Dispositif d'acquisition de données selon l'une quelconque des revendications 1 å 3, caractérisé en ce que le compteur-décompteur (CP) est chargeable et en ce que le chargement est effectué par le bus de données (DO) du microprocesseur. 5. Dispositif d'acquisition de données selon L'une queLconque des revendications 1 à 3, caractérisé en ce que le compteur-décompteur (CP) peut être lu par un circuit de guidage unidirectionnel (D1) qui donne accès au bus d'adresses (ADg) de sortie du compteur, à L'entrée du compteur.