FR2951291A1 - Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants - Google Patents
Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants Download PDFInfo
- Publication number
- FR2951291A1 FR2951291A1 FR0957034A FR0957034A FR2951291A1 FR 2951291 A1 FR2951291 A1 FR 2951291A1 FR 0957034 A FR0957034 A FR 0957034A FR 0957034 A FR0957034 A FR 0957034A FR 2951291 A1 FR2951291 A1 FR 2951291A1
- Authority
- FR
- France
- Prior art keywords
- pointer
- data
- read
- recipient
- reading
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
Ce contrôleur d'accès direct en mémoire (10, 20) est programmé pour le transfert de données depuis au moins une source (12) de données vers plusieurs destinataires (14 ..., 14 ..., 14 ) de ces données, via une mémoire tampon (16) comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs. Le contrôleur d'accès comporte un module (24) de gestion d'écritures conçu pour écrire des données reçues de la source (12) dans la mémoire tampon (16) et des moyens (38) de stockage d'un pointeur d'écriture (PE) indiquant un emplacement élémentaire de la mémoire tampon dans lequel une donnée peut être écrite. En outre, pour chaque destinataire (14 ..., 14 ..., 14 ), les moyens de stockage (38) comportent un pointeur de lecture indiquant un emplacement élémentaire de la mémoire tampon (16) dans lequel une donnée peut être lue pour ce destinataire et le contrôleur comporte des moyens d'exécution d'un micrologiciel (40 ..., 40 ..., 40 ) de mise à jour de ce pointeur de lecture selon une logique de mise à jour prédéterminée pour ce destinataire.
Description
La présente invention concerne un contrôleur d'accès direct en mémoire à destinataires multiples, un procédé de transfert de données depuis au moins une source de données vers plusieurs destinataires de ces données mis en oeuvre par ce contrôleur et un programme d'ordinateur correspondant.
Un tel contrôleur, qualifié de contrôleur DMA (de l'Anglais « Direct Memory Access »), est généralement utilisé dans un dispositif de traitement de données à unité centrale de traitement tel que par exemple un circuit intégré. Il permet de transférer des données traitées ou fournies par l'unité centrale de traitement, en provenance de ou allant vers des périphériques tels que des ports de communication, des disques durs ou des mémoires quelconques, entre ces périphériques et une mémoire locale du dispositif par exemple, sans intervention de l'unité centrale de traitement si ce n'est pour initier et conclure le transfert. Un contrôleur DMA est par exemple très utile dans un système où des accès répétés à des périphériques rapides pourraient sinon presque bloquer ou au moins ralentir le traitement effectué par l'unité centrale. Sa présence optimise le temps de traitement des applications logicielles exécutées par l'unité centrale en laissant le contrôleur DMA gérer les transferts de données depuis et vers la mémoire locale. L'invention s'applique plus particulièrement à un contrôleur d'accès direct en mémoire pour le transfert de données depuis au moins une source de données vers plusieurs destinataires de ces données, via une mémoire tampon comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs, le contrôleur d'accès comportant un module de gestion d'écritures conçu pour écrire des données reçues de la source dans la mémoire tampon et des moyens de stockage d'un pointeur d'écriture indiquant un emplacement élémentaire de la mémoire tampon dans lequel une donnée peut être écrite. Un tel contrôleur DMA est par exemple décrit dans le brevet européen publié sous le numéro EP 0 933 926. Cependant il n'utilise pas une mais plusieurs mémoires tampons. Son rôle est d'écrire, dans ces mémoires tampons, des données qui sont lues successivement par plusieurs décodeurs destinataires ayant accès en lecture à ces mémoires tampons. Un pointeur d'écriture, défini pour chaque mémoire tampon, est incrémenté d'une adresse d'emplacement élémentaire de mémoire à chaque opération d'écriture par le contrôleur DMA d'une donnée dans la mémoire tampon correspondante. Mais pour transmettre une séquence de données reçues d'au moins une source vers plusieurs destinataires, le contrôleur DMA doit être programmé pour distribuer les données vers la pluralité de mémoires tampons prévues, une par destinataire, en gérant les mises à jour de tous les pointeurs d'écriture correspondants. Cette solution est assez complexe. Une solution plus simple est de ne prévoir qu'une seule mémoire tampon dans laquelle le contrôleur DMA écrit toutes les données et dans laquelle elles sont ensuite lues séquentiellement pour être transférées aux différents destinataires. Mais dans cette configuration, la lecture séquentielle des données pour leur transfert vers l'ensemble des destinataires se bloque dès que l'un des destinataires bloque la lecture d'une donnée.
Il peut ainsi être souhaité de prévoir un contrôleur d'accès direct en mémoire qui permette de s'affranchir des problèmes et contraintes précités. L'invention a donc pour objet un contrôleur d'accès direct en mémoire pour le transfert de données depuis au moins une source de données vers plusieurs destinataires de ces données, via une mémoire tampon comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs, le contrôleur d'accès comportant un module de gestion d'écritures conçu pour écrire des données reçues de la source dans la mémoire tampon et des moyens de stockage d'un pointeur d'écriture indiquant un emplacement élémentaire de la mémoire tampon dans lequel une donnée peut être écrite, le contrôleur d'accès étant en outre tel que, pour chaque destinataire, les moyens de stockage comportent un pointeur de lecture indiquant un emplacement élémentaire de la mémoire tampon dans lequel une donnée peut être lue pour ce destinataire et le contrôleur comporte des moyens d'exécution d'un micrologiciel de mise à jour de ce pointeur de lecture selon une logique de mise à jour prédéterminée pour ce destinataire.
Par micrologiciel, on entend un logiciel embarqué dans un composant matériel tel qu'un circuit intégré, plus précisément dans une mémoire volatile ou non de ce composant. Ce terme est utilisé dans la suite de la description comme une traduction du terme Anglais « firmware ». Ainsi, chaque micrologiciel associé à un pointeur de lecture permet au contrôleur d'accès direct en mémoire de gérer avec souplesse les lectures puis transmissions de données à partir de la mémoire tampon vers le destinataire correspondant, indépendamment du ou des autres destinataires. En d'autres termes, si un premier destinataire bloque la lecture d'une donnée et interrompt donc l'exécution du micrologiciel et la mise à jour du pointeur de lecture qui lui sont associés, il n'empêche pas pour autant l'exécution d'un autre micrologiciel et la mise à jour d'un autre pointeur de lecture associés à un autre destinataire. Cet autre destinataire reçoit alors normalement ses données, même si le premier destinataire reste bloqué, et ceci bien que les données soient séquentiellement écrites par le contrôleur d'accès direct en mémoire dans une seule mémoire tampon.
De façon optionnelle, la mémoire tampon est circulaire, chaque emplacement élémentaire étant identifié par une adresse comprise entre une adresse de base et une adresse de sommet de la mémoire tampon circulaire, et le contrôleur d'accès direct en mémoire selon l'invention peut comporter en outre un module de gestion de lectures conçu pour lire des données stockées dans la mémoire tampon circulaire et les transférer vers les destinataires et des moyens de blocage en lecture, respectivement en écriture, dans la mémoire tampon circulaire en fonction des positions relatives des emplacements élémentaires indiqués par lesdits pointeurs de lecture et ledit pointeur d'écriture. Ainsi, la mémoire tampon remplit une fonction de tampon intermédiaire à lecture/écriture bloquante entre la source et le destinataire. Cette fonction est gérée à l'aide des pointeurs de lecture et du pointeur d'écriture par le contrôleur d'accès direct en mémoire qui possède les accès en écriture et en lecture dans cette mémoire tampon circulaire. De cette manière, il est capable de synchroniser le ou les flux de données entrant(s) (flux engendré par la ou les source(s)) avec les flux de données sortants (flux engendrés par les destinataires) sans avoir besoin de se synchroniser avec l'unité centrale de traitement. De façon optionnelle également, un contrôleur d'accès direct en mémoire selon l'invention peut comporter des moyens de sélection, parmi l'ensemble des pointeurs de lecture, du pointeur de lecture indiquant l'emplacement élémentaire le moins avancé par rapport à l'emplacement élémentaire indiqué par le pointeur d'écriture compte tenu d'un sens prédéterminé des mises à jour, ces moyens de sélection étant activés à chaque mise à jour de l'un quelconque des pointeurs de lecture, et les moyens de blocage en lecture, respectivement en écriture, dans la mémoire tampon circulaire peuvent se baser sur les positions relatives des emplacements élémentaires indiqués par ledit pointeur de lecture sélectionné et ledit pointeur d'écriture. De façon optionnelle également, les moyens de blocage en lecture sont conçus pour bloquer toute lecture de donnée dans la mémoire tampon circulaire lorsqu'une mise à jour de l'un quelconque des pointeurs de lecture fait que l'adresse vers laquelle pointe le pointeur de lecture sélectionné atteint ou dépasse l'adresse vers laquelle pointe le pointeur d'écriture, et les moyens de blocage en écriture sont conçus pour bloquer toute écriture de donnée dans la mémoire tampon circulaire lorsqu'une mise à jour du pointeur d'écriture fait que l'adresse vers laquelle il pointe atteint ou dépasse l'adresse vers laquelle pointe le pointeur de lecture sélectionné.
De façon optionnelle également, les moyens de stockage comportent en outre, pour chaque destinataire, un pointeur de lecture dit « pointeur de travail », différent desdits pointeurs de lecture, le contrôleur comportant des moyens d'exécution d'un micrologiciel de mise à jour du pointeur de travail de chaque destinataire, à chaque lecture effectuée par ce pointeur de travail, selon une logique de mise à jour prédéterminée pour ce destinataire. Ainsi, il est possible d'envisager davantage de souplesse dans la lecture ou l'écriture de données dans la mémoire tampon circulaire sans que le contrôleur d'accès direct en mémoire ne perde sa capacité à synchroniser les flux entrant et sortant.
De façon optionnelle également, la logique de mise à jour prédéterminée pour le pointeur de travail de chaque destinataire comporte au moins un saut d'adresse dans la mémoire tampon circulaire de manière à lire les données affectées à ce destinataire dans un ordre différent de celui dans lequel elles ont été écrites dans la mémoire tampon circulaire.
Ainsi, la mémoire tampon circulaire dont le contrôleur d'accès direct en mémoire gère le suivi des lectures et écritures n'est pas utilisée par le contrôleur comme une simple liste de type FIFO du point de vue des destinataires. Grâce à une programmation des mises à jour des pointeurs de travail selon une logique prédéterminée, il est possible de changer la séquence des données affectées aux destinataires respectifs, entre leur réception depuis la source et leur émission vers les destinataires via la mémoire tampon circulaire. De façon optionnelle également, le pointeur de lecture sélectionné est un pointeur de lecture à libération d'espace mémoire pour l'écriture de données, le pointeur de travail de chaque destinataire est un pointeur de lecture à conservation de données lues, et le pointeur d'écriture est mis à jour automatiquement par incrémentation sans saut d'adresse à chaque opération d'écriture d'une donnée dans la mémoire tampon circulaire. De façon optionnelle également, un contrôleur d'accès direct en mémoire selon l'invention peut comporter des moyens de libération d'espace mémoire dans la mémoire tampon circulaire conçus pour libérer, pour une écriture de données, un espace mémoire compris entre l'emplacement de l'ancienne adresse pointée et l'emplacement précédant celui de la nouvelle adresse pointée par le pointeur de lecture sélectionné, à chaque mise à jour de ce dernier par les moyens de sélection. L'invention a également pour objet un procédé de transfert de données depuis au moins une source de données vers plusieurs destinataires de ces données par un contrôleur d'accès direct en mémoire tel que défini précédemment, tel que, chaque donnée reçue de la source étant émise par le contrôleur vers une mémoire tampon et chaque donnée à transmettre à l'un des destinataires étant lue dans la mémoire tampon par un module de gestion de lectures, il comporte, pour chaque destinataire, une succession d'étapes de lecture de données et de mise à jour d'un pointeur de lecture associé à ce destinataire, cette succession d'étapes étant exécutée par le module de gestion de lectures et définie dans un micrologiciel de lecture et de mise à jour du pointeur de lecture de ce destinataire selon une logique de mise à jour prédéterminée pour ce destinataire.
Enfin, l'invention a également pour objet un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un contrôleur d'accès direct en mémoire, comprenant des instructions de code de programme pour l'exécution des étapes d'un procédé de transfert de données tel que défini précédemment lorsque ledit programme est exécuté par un contrôleur d'accès direct en mémoire. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels : la figure 1 représente schématiquement la structure générale d'un contrôleur d'accès direct en mémoire, selon un mode de réalisation de l'invention, la figure 2 illustre schématiquement le fonctionnement avantageux du contrôleur d'accès direct en mémoire de la figure 1 dans une situation de blocage d'un destinataire, - la figure 3 représente schématiquement la structure d'une mémoire tampon circulaire gérée par le contrôleur d'accès direct en mémoire de la figure 1, et la figure 4 illustre les étapes successives d'un procédé de transfert de données, selon un mode de réalisation de l'invention.
Le contrôleur d'accès direct en mémoire ou contrôleur DMA 10 représenté sur la figure 1 a pour fonction de transférer des données depuis au moins une source de données 12 vers plusieurs destinataires 141, ..., 14;, ..., 14, de ces données via une mémoire tampon 16 comportant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs. Pour la mise en oeuvre de l'invention, il est nécessaire que le contrôleur DMA 10 ait accès à la mémoire tampon 16 en écriture et optionnel qu'il y ait accès en lecture. Mais dans l'exemple illustré sur la figure 1, il est apte à accéder en écriture et en lecture des données aux emplacements élémentaires de la mémoire tampon 16 par l'intermédiaire d'un module 18 de commande des accès en écriture et en lecture de données s'interfaçant entre le contrôleur DMA 10 et un support de stockage intégrant la mémoire tampon 16. On notera que dans une variante de réalisation, le contrôleur DMA, portant alors la référence 20, inclut le support de stockage intégrant la mémoire tampon 16 et le module 18 de commande des accès en écriture et en lecture. En pratique, il peut se présenter sous la forme d'un système sur puce autonome, par exemple un circuit intégré de type CMOS. A titre d'exemple non limitatif d'implémentation, selon une architecture envisageable dite de type NoC (de l'Anglais « Network on Chip ») ou réseau sur puce, le contrôleur DMA 10 ou 20 est considéré comme constitué d'éléments fonctionnels communiquant entre eux par l'intermédiaire de liens d'un réseau à commutation de paquets. Conformément à cette architecture, pour réaliser le transfert de données depuis la source 12 vers les destinataires 141, ..., 14;, ..., 14m, le contrôleur DMA 10 ou 20 comporte les éléments suivants : un lien 22 de réception de données en provenance de la source 12, un module 24 de gestion des écritures de données par le contrôleur 10 ou 20 dans la mémoire tampon 16, ce module étant activé par des données qu'il reçoit du lien 22, un lien 26 d'émission de données vers la mémoire tampon 16 pour l'écriture de ces données dans des emplacements élémentaires de la mémoire par l'intermédiaire du module 18 de commande des accès en écriture et en lecture, un lien 28 de réception de données en provenance de la mémoire tampon 16 pour la lecture de ces données dans des emplacements élémentaires de la mémoire par l'intermédiaire du module 18 de commande des accès en écriture et en lecture, un module 30 de gestion des lectures de données par le contrôleur 10 ou 20 dans la mémoire tampon 16, apte à recevoir les données fournies par le lien 28, et un lien 32 d'émission des données lues vers les destinataires 141, ..., 14;, 14n. Grâce à ces éléments, le contrôleur DMA 10 ou 20 émet chaque donnée reçue de la source 12 vers la mémoire tampon 16, chaque donnée destinée à être transmise à l'un des destinataires 141, ..., 14;, ..., 14n étant ensuite lue dans la mémoire tampon 16 par le contrôleur DMA 10 ou 20. La mémoire tampon 16 remplit ainsi une fonction de tampon intermédiaire entre la source 12 et les destinataires 141, ..., 14;, ..., 14n. On notera que dans un autre mode de réalisation possible de l'invention non illustré, lorsque le contrôleur DMA 10 n'intègre pas la mémoire tampon 16 et qu'en outre il n'a pas lui-même d'accès en lecture des données dans la mémoire tampon 16, ce sont les destinataires 141, ..., 14;, ..., 14n qui vont lire directement dans la mémoire tampon 16 les données qui leur sont destinées. Mais, dans ce cas, de façon classique et non détaillée, même si les données ne transitent pas par le contrôleur DMA 10, celui-ci conserve tout de même un mécanisme de déclenchement des lectures par les destinataires. La mémoire tampon 16 peut être implémentée de différentes façons connues en soi, mais dans un mode de réalisation préféré, elle se présente sous la forme d'une mémoire tampon circulaire.
Elle occupe alors un espace mémoire compris entre une adresse de base et une adresse de sommet. Un pointeur d'écriture ou de lecture associé à cette mémoire tampon circulaire est incrémenté entre l'adresse de base et l'adresse de sommet et revient à l'adresse de base par incrémentation après avoir atteint l'adresse de sommet : c'est ce qui permet de qualifier cette mémoire tampon de « mémoire tampon circulaire ». L'avantage de cette configuration de mémoire tampon circulaire, par exemple de type FIFO (de l'Anglais « First ln First Out »), est d'éviter des contraintes de réallocation de mémoire en cas de réception de données supplémentaires, puisque tout se passe comme s'il était possible d'écrire indéfiniment des données dans une telle mémoire tant que l'adresse vers laquelle pointe le pointeur d'écriture n'atteint pas un emplacement élémentaire dans lequel est stockée une donnée qui n'a pas encore été lue, c'est-à-dire tant que la mémoire n'est pas pleine. Dans ce cas, de façon optionnelle, le lien 22 de réception de données comprend une mémoire tampon d'entrée 34 de type FIFO, permettant par exemple de stocker temporairement des données reçues de la source 12 alors que la mémoire tampon circulaire 16 est bloquée en écriture parce qu'elle est pleine. De façon optionnelle également, le lien 32 d'émission des données lues comprend une mémoire tampon de sortie 36 de type FIFO, permettant par exemple de stocker temporairement des données lues dans la mémoire tampon circulaire 16 alors que le réseau de sortie est temporairement saturé ou qu'au moins l'un des destinataires est bloqué en lecture. Pour permettre la distribution du flux de données entrant dans le contrôleur DMA vers les destinataires 141, ..., 14;, ..., 14m, celui-ci comporte en outre des moyens 38 de stockage de descripteurs de la mémoire tampon circulaire 16.
Ces descripteurs comportent au moins un pointeur de base PB pointant vers une adresse de base de la mémoire tampon circulaire 16 dans son support de stockage, un pointeur de sommet PS pointant vers une adresse de sommet de la mémoire tampon circulaire 16 dans son support de stockage, un pointeur d'écriture PE pointant vers une adresse d'emplacement élémentaire de la mémoire tampon circulaire 16 où une prochaine donnée reçue par le contrôleur DMA 10 ou 20 peut être écrite et plusieurs pointeurs de lecture PLI , ..., PLi, ..., PLn. Chaque pointeur de lecture PLi pointe vers une adresse d'emplacement élémentaire de la mémoire tampon circulaire 16 où une prochaine donnée peut être lue pour être transmise au destinataire 14;.
Puisque la mémoire tampon 16 est une mémoire circulaire dont la taille est définie par le nombre d'emplacements élémentaires compris entre les adresses de base et de sommet désignées par les pointeurs PB et PS, chaque emplacement élémentaire de cette mémoire vers lequel peuvent pointer les pointeurs d'écriture et de lecture PE et PLI, ..., PLi, ..., PLn est identifié par une adresse comprise entre l'adresse de base et l'adresse de sommet. Les pointeurs de base et de sommet PB et PS sont prédéterminés et destinés à rester constants alors que les pointeurs d'écriture PE, respectivement de lecture PLI, ..., PLi, ..., PLn, sont variables. Ils peuvent en fait être mis à jour par incrémentation avec ou sans saut d'adresses définissant ainsi un sens des mises à jour.
Le pointeur d'écriture PE est par exemple plus précisément destiné à être mis à jour par incrémentation d'un emplacement élémentaire dans le sens de la base vers le sommet, suite à une opération d'écriture dans la mémoire tampon circulaire. En revanche, les pointeurs de lecture PLI, ..., PLi, ..., PLn sont mis à jour respectivement par l'exécution de micrologiciels 401, ..., 40;, ..., 4On. Leur mise à jour est prédéterminée pour que chaque pointeur de lecture PLi pointe vers un emplacement élémentaire dans lequel est stocké une donnée effectivement destinée à être transférée au destinataire correspondant 14;. Les micrologiciels 401, ..., 40;, ..., 40n sont par exemple stockés dans le même support de stockage que la mémoire tampon circulaire 16. Ils sont, d'une façon générale, exécutés par un module de gestion des lectures dans la mémoire tampon circulaire 16, que celui-ci soit interne ou externe au contrôleur DMA. Dans l'exemple particulier de la figure 1, ils sont plus précisément exécutés par le module 30 de gestion des lectures du contrôleur DMA 10 ou 20.
Comme indiqué précédemment, la circularité de la mémoire tampon 16 est liée au fait que lorsqu'un pointeur d'écriture ou de lecture atteint l'adresse de sommet de la mémoire, une incrémentation de ce pointeur d'un emplacement élémentaire le fait pointer sur l'adresse de base de la mémoire. Par conséquent, les données stockées temporairement dans la mémoire tampon circulaire 16 en attendant d'être lues, soit par le contrôleur DMA 10 ou 20 pour être transmises aux destinataires 141, ..., 14;, ..., 14n, soit directement par les destinataires 141, ..., 14;, ..., 14n, sont situées entre l'adresse du pointeur de lecture PLi le moins avancé par rapport au pointeur d'écriture compte tenu du sens des mises à jour et l'adresse précédant celle du pointeur d'écriture PE, dans le sens de la base vers le sommet. En revanche, l'espace mémoire situé dans la mémoire tampon circulaire entre l'adresse du pointeur d'écriture PE et l'adresse précédant celle du pointeur de lecture PLi le moins avancé par rapport au pointeur d'écriture, dans le sens de la base vers le sommet, est un espace libre pour l'écriture. Cette structure de la mémoire tampon circulaire 16 associée aux descripteurs PB, PS, PE et PLI, ..., PLi, ..., PLn est illustrée sur la figure 3 qui sera détaillée ultérieurement. Le fonctionnement avantageux du contrôleur d'accès direct en mémoire 10 ou 20 de la figure 1 est illustré sur la figure 2, dans une application particulière, simple mais non limitative. Selon cette application, la source 12 fournit une séquence de données alternant des données (points blancs) destinées à être transférées à un destinataire 141 et des données (points noirs) destinées à être transférées à un destinataire 142. Grâce à la mise à jour incrémentale adresse par adresse du pointeur d'écriture PE, ces données sont stockées dans la mémoire tampon circulaire 16 dans l'ordre de la séquence fournie par la source 12. Les données destinées à être transférées vers le destinataire 141 sont lues dans la mémoire tampon circulaire 16 grâce à l'exécution d'un micrologiciel 401 de mise à jour d'un pointeur de lecture PLI pointant à chaque instant vers l'emplacement élémentaire de la prochaine donnée à lire pour le destinataire 141. La logique de mise à jour appliquée par ce micrologiciel 401 pour l'application visée est donc d'incrémenter le pointeur de lecture PLI en sautant une adresse à chaque lecture de donnée effectuée pour le destinataire 141 de manière à ne pas lire de données affectées au destinataire 142. De même, les données destinées à être transférées vers le destinataire 142 sont lues dans la mémoire tampon circulaire 16 grâce à l'exécution d'un micrologiciel 402 de mise à jour d'un pointeur de lecture PL2 pointant à chaque instant vers l'emplacement élémentaire de la prochaine donnée à lire pour le destinataire 142. La logique de mise à jour appliquée par ce micrologiciel 402 est aussi d'incrémenter le pointeur de lecture PL2 en sautant une adresse à chaque lecture de donnée effectuée pour le destinataire 142 de manière à ne pas lire de données affectées au destinataire 141. Les deux micrologiciels 401 et 402 étant indépendants et pouvant donc être exécutés en parallèle par le contrôleur DMA 10 ou 20, le blocage de l'un des deux, notamment parce que le destinataire correspondant bloque en lecture, n'affecte pas l'autre. Il apparaît donc clairement que le contrôleur DMA est ainsi capable de gérer simplement et efficacement le transfert de données vers plusieurs destinataires sans que l'un d'entre eux ne puisse bloquer à lui seul le transfert de toutes les données. En combinaison avec cette fonction de transfert sans blocage par l'un des destinataires, il est possible, dans un mode de réalisation particulier de l'invention, de prévoir que le contrôleur DMA puisse également remplir une fonction de synchronisation des flux entrant et sortant. Pour mettre en oeuvre ce mode de réalisation particulier, il est nécessaire que le contrôleur DMA comporte le module 30 de gestion des lectures défini précédemment. Dans ce cas, ce module 30 de gestion des lectures peut être programmé pour : sélectionner, parmi l'ensemble des pointeurs de lecture PLI, ..., PLi, ..., PLn, le pointeur de lecture noté PLS indiquant l'emplacement élémentaire le moins avancé par rapport à l'emplacement élémentaire indiqué par le pointeur d'écriture PE compte tenu du sens prédéterminé des mises à jour, et effectuer cette sélection à chaque mise à jour de l'un quelconque des pointeurs de lecture PLI, ..., PLi, ..., PLn suite à une lecture de donnée faite pour l'un quelconque des destinataires. Sur la base de ces considérations, le module 24 de gestion des écritures de données est conçu pour permettre ou bloquer l'écriture d'une donnée dans la mémoire tampon circulaire 16 en fonction notamment des valeurs relatives du pointeur d'écriture PE et du pointeur de lecture sélectionné PLS. Il est également conçu pour mettre à jour le pointeur d'écriture PE de façon automatique à l'aide d'un séquenceur en l'incrémentant d'un emplacement élémentaire. Plus précisément, dans une variante simple de ce mode de réalisation particulier de l'invention, une donnée à écrire dans la mémoire tampon circulaire 16 doit être écrite à l'adresse indiquée par le pointeur d'écriture PE ; son écriture doit être bloquée si une mise à jour du pointeur d'écriture PE réalisée précédemment par le module 24 de gestion des écritures fait que l'adresse vers laquelle il pointe atteint ou dépasse l'adresse vers laquelle pointe le pointeur de lecture sélectionné PLS (mémoire pleine). Sur la base de ces mêmes considérations, le module 30 de gestion des lectures de données est conçu pour permettre ou bloquer la lecture d'une donnée dans la mémoire tampon circulaire 16 en fonction notamment des valeurs relatives du pointeur d'écriture PE et du pointeur de lecture sélectionné PLS. Il est également conçu pour mettre à jour chaque pointeur de lecture PLi par l'exécution de chaque micrologiciel 40;. Plus précisément, dans une variante simple de ce mode de réalisation particulier de l'invention, une donnée à lire dans la mémoire tampon circulaire 16 pour un destinataire 14; doit être lue à l'adresse indiquée par le pointeur de lecture PLi ; sa lecture doit être bloquée si une mise à jour du pointeur de lecture PLi réalisée précédemment par le module 30 de gestion des lectures fait que l'adresse vers laquelle pointe le pointeur de lecture sélectionné PLS atteint ou dépasse l'adresse vers laquelle pointe le pointeur d'écriture PE (mémoire vide). Concrètement, pour que les blocages et déblocages en lecture et écriture dans la mémoire tampon circulaire 16 fonctionnent comme indiqué ci-dessus, le module 24 de gestion des écritures peut être programmé pour, après chaque mise à jour du pointeur d'écriture PE : - bloquer toute écriture de données dans la mémoire tampon circulaire 16 si le pointeur d'écriture PE atteint le pointeur de lecture sélectionné PLS (indication que la mémoire est pleine), et débloquer la lecture de données dans la mémoire tampon circulaire 16 si celle-ci était bloquée et que le pointeur d'écriture PE dépasse de nouveau le pointeur de lecture sélectionné PLS. De même, le module 30 de gestion des lectures peut être programmé pour, après chaque mise à jour d'un pointeur de lecture PLi : - bloquer toute lecture de données dans la mémoire tampon circulaire 16 si le pointeur de lecture sélectionné PLS atteint le pointeur d'écriture PE (indication que la mémoire est vide), et débloquer l'écriture de données dans la mémoire tampon circulaire 16 si celle-ci était bloquée et que le pointeur de lecture sélectionné PLS dépasse de nouveau le pointeur de lecture PE. De cette façon, le module 24 de gestion des écritures remplit une fonction de blocage en écriture lorsque la mémoire 16 est pleine et de déblocage en lecture lorsque la mémoire vide se remplit de nouveau. Le module 30 de gestion des lectures remplit une fonction de blocage en lecture lorsque la mémoire 16 est vide et de déblocage en écriture lorsque la mémoire pleine se vide de nouveau. Le fonctionnement détaillé ci-dessus des modules 24 et 30 de gestion des écritures et lectures n'est qu'un exemple de mise en oeuvre des moyens de blocage en écriture et en lecture dans la mémoire tampon circulaire 16 à l'aide des pointeurs d'écriture et de lecture PE et PLI, ..., PLi, ..., PLn. Mais il apparaîtra à l'homme du métier que d'autres implémentations ou variantes sont envisageables pour rendre la mémoire tampon circulaire 16 à lectures et écritures bloquantes en fonction de la valeur des pointeurs d'écriture et de lecture PE et PLI , ..., PLi, ..., PLn. Ces caractéristiques rendent le contrôleur DMA 10 ou 20 capable de synchroniser le flux entrant de données en provenance de la source 12 et les flux sortant vers les destinataires 141, ..., 14;, ..., 14n. Il en résulte que, dans un circuit intégré comportant un microprocesseur, la source de données 12 qui est par exemple une mémoire locale de stockage temporaire des données traitées ou utilisées par le microprocesseur, les destinataires 141, ..., 14;, ..., 14n qui sont par exemple des périphériques ou opérateurs fonctionnels quelconques et le contrôleur DMA conforme à sa variante de réalisation 20 incluant la mémoire tampon circulaire 16, le microprocesseur peut transférer des données vers la source 12 indépendamment des transferts réalisés par le contrôleur DMA entre la source 12 et les destinataires 141, ..., 14;, ..., 14n.
En combinaison avec cette fonction de synchronisation du contrôleur DMA, il est possible, dans un autre mode de réalisation de l'invention et selon une première variante, de définir pour chaque destinataire 14; un nouveau pointeur de lecture, dit « pointeur de travail ». Pour chaque destinataire 14;, ce pointeur de travail est différent du pointeur de lecture PLi défini précédemment. Comme lui, il est stocké dans les moyens de stockage 38. Il est variable et destiné à être mis à jour par le micrologiciel 40; après chaque opération de lecture qu'il réalise. Sur la figure 3 qui illustre un mode de réalisation simple à deux destinataires 141 et 142, deux pointeurs de travail PT1 et PT2 s'ajoutent au pointeur d'écriture PE et aux pointeurs de lecture PLI et PL2.
Le micrologiciel 40; peut ainsi être défini pour que la logique de mise à jour du pointeur de travail PTi permette de lire les données destinées au destinataire 14; dans un ordre qui n'est pas celui de la séquence transmise par la source 12. En introduisant ce nouveau pointeur PTi pour chaque destinataire 14; et la possibilité de le mettre à jour par sauts d'adresses en avant et en arrière comme illustré sur la figure 3, dans la mémoire tampon circulaire 16 et plus précisément dans la liste de données affectées au destinataire 14;, celle-ci n'est pas utilisée comme une simple liste de type FIFO. Les pointeurs de travail PT1, ..., PTi, ..., PTn permettent au contrôleur DMA 10 ou 20 de réordonner lui-même chaque séquence des données à transférer entre la source 12 et l'un quelconque des destinataires 141, ..., 14;, ..., 14n.
Dans cette première variante, le pointeur de lecture sélectionné PLS est alors un pointeur de lecture à libération d'espace mémoire pour l'écriture de données. En d'autre termes, à chaque sélection de l'un des pointeurs de lecture comme pointeur de lecture sélectionné, l'espace mémoire compris entre l'emplacement de l'ancienne adresse pointée et l'emplacement précédant celui de la nouvelle adresse pointée par le pointeur de lecture sélectionné PLS est automatiquement libéré pour l'écriture. Cela vient du fait que, comme indiqué précédemment, l'espace mémoire situé dans la mémoire tampon circulaire 16 entre l'adresse du pointeur d'écriture PE et l'adresse précédant celle du pointeur de lecture sélectionné PLS dans le sens de la base vers le sommet est considéré par principe comme un espace libre pour l'écriture.
Dans l'exemple simple de la figure 3, c'est le pointeur de lecture PLI qui est le moins avancé par rapport au pointeur d'écriture PE. C'est donc lui qui est sélectionné et également pris comme référence pour définir le début de l'espace mémoire stockant des données devant être lues et transférées vers les destinataires. Plus précisément, l'espace mémoire portant la référence A désigne une zone de mémoire dans laquelle se trouvent des données affectées au destinataire 141 qui n'ont pas encore été lues et des données affectées au destinataire 142 qui ont été lues : cette zone n'est pas encore libre en écriture. L'espace mémoire portant la référence B désigne une zone de mémoire dans laquelle se trouvent des données affectées aux destinataires 141 et 142 qui n'ont pas encore été lues : cette zone n'est a fortiori pas non plus libre en écriture. Chaque pointeur de travail PTi est, quant à lui, un pointeur de lecture à conservation des données lues. Autrement dit, lorsqu'une donnée doit être lue dans la mémoire tampon circulaire 16 pour être transmise au destinataire 14;, elle est lue à l'adresse indiquée par le pointeur de travail PTi, mais la mise à jour du pointeur de travail PTi après cette lecture ne libère pas l'emplacement élémentaire correspondant pour l'écriture. En effet, les déplacements en lecture du pointeur de travail PTi ne suivent pas nécessairement la séquence des données affectées au destinataire 14; dans l'ordre croissant des adresses. Ils sont librement prédéterminés par le micrologiciel 40; dans un ordre arbitraire, de préférence entre le pointeur de lecture PLi et le pointeur d'écriture PE. Selon les applications, une donnée lue une première fois par le pointeur de travail PTi peut notamment être relue et les données peuvent être lues dans un ordre différent de celui de leur stockage dans la mémoire tampon circulaire 16.
On note donc que dans cette variante de réalisation où chaque pointeur de travail PTi est un pointeur de lecture, chaque micrologiciel 40; comporte des instructions, exécutées par le module 30 de gestion des lectures, pour la mise à jour des deux pointeurs de lecture associés au destinataire 14; : des instructions pouvant inclure des sauts d'adresse en avant et/ou en arrière selon l'application visée pour le pointeur de travail PTi, des instructions pouvant inclure des sauts d'adresse, mais uniquement en avant, en fonction des adresses où se trouvent les données affectées au destinataire 14; et en fonction des déplacements programmés pour le pointeur de travail PTi, pour le pointeur de lecture PLi.
En revanche, aucun des micrologiciels 401, ..., 40;, ..., 40n ne comporte d'instructions pour la mise à jour du pointeur d'écriture PE, celui-ci étant par exemple mis à jour par un séquenceur sans saut d'adresse et de façon incrémentale à chaque opération d'écriture d'une donnée dans la mémoire tampon circulaire 16.
On notera également que, comme illustré sur la figure 3, les déplacements des pointeurs de travail PT1, ..., PTi, ..., PTn doivent être programmés pour qu'ils pointent dans la zone de la mémoire tampon circulaire 16 qui comporte effectivement des données à lire respectivement pour les destinataires 141, ..., 14;, ..., 14n. S'il l'un d'entre eux pointe, après une mise à jour, à l'extérieur de cette zone, alors il peut être prévu selon les applications visées, soit d'engendrer un message d'erreur, soit de le bloquer à cette position jusqu'à ce que le pointeur d'écriture PE le rattrape. Conformément à l'invention, cela bloque l'exécution du micrologiciel 40; correspondant au pointeur de travail PTi bloqué, mais cela ne bloque pas l'exécution de tout autre micrologiciel 40; associé à un autre destinataire 14;.
Dans une variante de réalisation symétrique de la précédente, pour réordonner la séquence de données, on pourrait aussi définir un unique pointeur de travail PT en tant que pointeur d'écriture. Dans cette seconde variante, le pointeur d'écriture PE serait un pointeur d'écriture à réservation d'espace mémoire pour l'écriture de données dans la mémoire tampon circulaire 16. En d'autre termes, chaque fois qu'il serait mis à jour, l'espace mémoire compris entre l'emplacement de l'ancienne adresse pointée et l'emplacement précédant celui de la nouvelle adresse pointée par ce pointeur d'écriture PE serait automatiquement réservé pour l'écriture. Le pointeur de travail PT serait, quant à lui, un pointeur d'écriture effective à écriture de données dans un ordre quelconque prédéterminé dans l'espace mémoire réservé par le pointeur PE. Mais cette seconde variante est moins intéressante à envisager que la précédente parce qu'elle est susceptible d'engendrer des blocages du côté de l'écriture des données dans la mémoire tampon circulaire 16. Or, dans une application de transfert de données par un contrôleur DMA, on préfère gérer des blocages en aval, du côté des lectures dans la mémoire tampon circulaire, plutôt qu'en amont, côté écriture. Un exemple de procédé de transfert de données vers plusieurs destinataires 14; pouvant être mis en oeuvre par le contrôleur DMA 10 ou 20 va maintenant être détaillé, dans le contexte de la première variante de réalisation précitée, dans laquelle le contrôleur DMA est à gestion en écriture et lecture bloquantes de la mémoire tampon circulaire 16 et dans laquelle des pointeurs de travail PT1, ..., PTi, PTn sont introduits en tant que pointeurs de lecture à conservation des données lues. Les étapes successives de ce procédé sont illustrées sur la figure 4. Au cours d'une première étape 100, le contrôleur 10 ou 20 est en attente d'une instruction de lecture ou d'écriture d'une donnée dans la mémoire tampon circulaire 16. Cette étape 100 est suivie d'une étape 102 de déclenchement d'écriture, sur instruction d'écrire une donnée dans la mémoire tampon circulaire 16. Lors de cette étape de déclenchement d'écriture, le module 24 de gestion des écritures est activé.
A titre d'exemple de réalisation non limitatif, il extrait des moyens de stockage 38 la valeur d'un premier descripteur indiquant si l'écriture dans la mémoire tampon circulaire 16 est bloquée ou non. Ensuite, au cours d'une étape de test 104, selon la valeur de ce premier descripteur, il est décidé de poursuivre ou non l'écriture de la donnée considérée. Si le premier descripteur indique que l'écriture est bloquée, on passe de nouveau à l'étape 100, sinon on passe à une étape 106. Au cours de l'étape 106, le module 24 de gestion des écritures extrait des moyens de stockage 38 l'adresse vers laquelle pointe le pointeur d'écriture PE. Il exécute alors l'écriture de la donnée considérée dans l'emplacement élémentaire correspondant. Puis, au cours d'une étape 108 de mise à jour, l'adresse pointée par le pointeur d'écriture PE est incrémentée d'un emplacement élémentaire dans la mémoire tampon circulaire 16. Enfin, lors d'une étape 110, le module 24 de gestion des écritures extrait des moyens de stockage 38 l'adresse vers laquelle pointe le pointeur de lecture sélectionné PLS puis met éventuellement à jour la valeur du premier descripteur de blocage des écritures et celle d'un second descripteur de blocage des lectures, dans les situations suivantes : si après la mise à jour de l'étape 108, l'adresse pointée par le pointeur d'écriture PE atteint celle pointée par le pointeur de lecture sélectionné PLS (indication que la mémoire 16 est pleine), modification du premier descripteur pour que ce dernier indique un blocage des écritures, si après la mise à jour de l'étape 108, l'adresse pointée par le pointeur d'écriture PE diffère de celle pointée par le pointeur de lecture sélectionné PLS alors que le second descripteur indique un blocage des lectures, modification du second descripteur pour ce dernier indique une autorisation des lectures. L'étape 110 est suivie d'un retour à l'étape 100. L'étape 100 est aussi suivie d'une étape 112i de déclenchement d'une lecture de données par le micrologiciel 40;, sur instruction de lire des données dans la mémoire tampon circulaire 16 pour le destinataire 14;. Lors de cette étape de déclenchement de lecture, le module 30 de gestion des lectures est activé. A titre d'exemple de réalisation non limitatif, il extrait des moyens de stockage 38 la valeur du second descripteur indiquant si la lecture dans la mémoire tampon circulaire 16 est bloquée ou non. Ensuite, au cours d'une étape de test 114i, le module 30 de gestion des lectures détermine si le destinataire 14; est prêt à recevoir la donnée considérée. Ce test peut être fait de plusieurs façons. Si le contrôleur DMA 10 ou 20 comporte le tampon de sortie 36, alors il peut être considéré qu'un transfert de donnée peut être effectué tant que ce tampon de sortie 36 n'est pas plein. A défaut ou en complément, un protocole de communication classique peut prévoir que le destinataire 14; informe le contrôleur DMA 10 ou 20 de sa capacité à recevoir des données par des messages au format prédéterminé. Si le transfert de la donnée au destinataire 14; n'est pas possible, on passe de nouveau à l'étape 100 et l'exécution du micrologiciel 40; est bloquée, sinon on passe à une autre étape de test 116i. Au cours de cette étape de test 116i, selon la valeur du second descripteur, il est décidé de poursuivre ou non la lecture de la donnée considérée. Si le second descripteur indique que la lecture est bloquée, on passe de nouveau à l'étape 100 et l'exécution du micrologiciel 40; est bloquée, sinon on passe à une étape de lecture 118i. Au cours de cette étape 118i, le module 30 de gestion des lectures extrait des moyens de stockage 38 l'adresse vers laquelle pointe le pointeur de travail PTi. Il exécute alors la lecture de la donnée considérée dans l'emplacement élémentaire correspondant.
Puis, au cours d'une étape 120i de mise à jour, l'adresse pointée par le pointeur de travail PTi est mise à jour, soit vers l'avant, soit vers l'arrière, par le module 30 de gestion des lectures en fonction des instructions du micrologiciel 40;. Si cela est aussi prévu par les instructions du micrologiciel 40;, le pointeur de lecture PLi peut être mis à jour également à cette étape provocant la mise à jour éventuelle du pointeur de lecture sélectionné PLS.
Enfin, lors d'une étape 122i, le module 30 de gestion des lectures met éventuellement à jour la valeur du premier descripteur de blocage des écritures et celle du second descripteur de blocage des lectures, dans les situations suivantes : si après la mise à jour de l'étape 120i, l'adresse pointée par le pointeur de lecture sélectionné PLS atteint celle pointée par le pointeur d'écriture PE (indication que la mémoire 16 est vide), modification du second descripteur pour que ce dernier indique un blocage des lectures, si après la mise à jour de l'étape 120i, l'adresse pointée par le pointeur de lecture sélectionné PLS diffère de celle pointée par le pointeur d'écriture PE alors que le premier descripteur indique un blocage des écritures, modification du premier descripteur pour que ce dernier indique une autorisation des écritures. L'étape 122i est suivie d'un retour à l'étape 100. Comme déjà précisé précédemment, chaque micrologiciel 40; prévoit l'exécution d'étapes 112i à 122i, sachant que plusieurs micrologiciels peuvent être exécutés en parallèle, le blocage de l'un ne bloquant pas le ou les autres. Il apparaît clairement que le contrôleur d'accès direct en mémoire décrit précédemment et son fonctionnement pour le transfert de données permettent de gérer simplement le transfert de données depuis au moins une source vers plusieurs destinataires, sans qu'un destinataire bloqué en lecture ne bloque le ou les autres destinataires. On notera aussi que l'invention ne se limite pas aux modes de réalisation envisagés. Notamment, dans ce qui précède, pour simplifier la description il a été envisagé une application où le transfert se fait à partir d'une seule source, mais le principe de l'invention s'applique de la même manière avec plusieurs sources. De même, un contrôleur d'accès direct en mémoire selon l'invention peut gérer plusieurs mémoires tampons circulaires et donc plusieurs jeux de descripteurs (pointeurs, descripteurs de blocage, etc.) associés. D'une façon plus générale, il apparaîtra à l'homme de l'art que diverses modifications peuvent être apportées aux modes de réalisation décrits ci-dessus, à la lumière de l'enseignement qui vient de lui être divulgué. Dans les revendications qui suivent, les termes utilisés ne doivent pas être interprétés comme limitant les revendications aux modes de réalisation exposés dans la présente description, mais doivent être interprétés pour y inclure tous les équivalents que les revendications visent à couvrir du fait de leur formulation et dont la prévision est à la portée de l'homme de l'art en appliquant ses connaissances générales à la mise en oeuvre de l'enseignement qui vient de lui être divulgué.
Claims (10)
- REVENDICATIONS1. Contrôleur d'accès direct en mémoire (10, 20) pour le transfert de données depuis au moins une source (12) de données vers plusieurs destinataires (141, ..., 14;, ..., 14n) de ces données, via une mémoire tampon (16) comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs, le contrôleur d'accès comportant un module (24) de gestion d'écritures conçu pour écrire des données reçues de la source (12) dans la mémoire tampon (16) et des moyens (38) de stockage d'un pointeur d'écriture (PE) indiquant un emplacement élémentaire de la mémoire tampon dans lequel une donnée peut être écrite, caractérisé en ce que, pour chaque destinataire (141, 142), les moyens de stockage (38) comportent un pointeur de lecture (PLI, PL2) indiquant un emplacement élémentaire de la mémoire tampon (16) dans lequel une donnée peut être lue pour ce destinataire (141, 142) et le contrôleur comporte des moyens d'exécution d'un micrologiciel (401, 402) de mise à jour de ce pointeur de lecture (PLI, PL2) selon une logique de mise à jour prédéterminée pour ce destinataire.
- 2. Contrôleur d'accès direct en mémoire (10, 20) selon la revendication 1, dans lequel la mémoire tampon (16) est circulaire, chaque emplacement élémentaire étant identifié par une adresse comprise entre une adresse de base et une adresse de sommet de la mémoire tampon circulaire, le contrôleur comportant en outre un module (30) de gestion de lectures conçu pour lire des données stockées dans la mémoire tampon circulaire (16) et les transférer vers les destinataires (141, ..., 14;, ..., 14n) et des moyens (24, 30, 40) de blocage en lecture, respectivement en écriture, dans la mémoire tampon circulaire (16) en fonction des positions relatives des emplacements élémentaires indiqués par lesdits pointeurs de lecture (PLI, PL2) et ledit pointeur d'écriture (PE).
- 3. Contrôleur d'accès direct en mémoire (10, 20) selon la revendication 2, comportant des moyens (30) de sélection, parmi l'ensemble des pointeurs de lecture, (PLI, PL2) du pointeur de lecture (PLS) indiquant l'emplacement élémentaire le moins avancé par rapport à l'emplacement élémentaire indiqué par le pointeur d'écriture (PE) compte tenu d'un sens prédéterminé des mises à jour, ces moyens de sélection (30) étant activés à chaque mise à jour de l'un quelconque des pointeurs de lecture (PLI, PL2), et dans lequel les moyens (24, 30, 40) de blocage en lecture, respectivement en écriture, dans la mémoire tampon circulaire (16) se basent sur lespositions relatives des emplacements élémentaires indiqués par ledit pointeur de lecture sélectionné (PLS) et ledit pointeur d'écriture (PE).
- 4. Contrôleur d'accès direct en mémoire (10, 20) selon la revendication 3, dans lequel les moyens de blocage en lecture (30, 40) sont conçus pour bloquer toute lecture de donnée dans la mémoire tampon circulaire (16) lorsqu'une mise à jour de l'un quelconque des pointeurs de lecture (PLI, PL2) fait que l'adresse vers laquelle pointe le pointeur de lecture sélectionné (PLS) atteint ou dépasse l'adresse vers laquelle pointe le pointeur d'écriture (PE), et dans lequel les moyens de blocage en écriture (24, 40) sont conçus pour bloquer toute écriture de donnée dans la mémoire tampon circulaire (16) lorsqu'une mise à jour du pointeur d'écriture (PE) fait que l'adresse vers laquelle il pointe atteint ou dépasse l'adresse vers laquelle pointe le pointeur de lecture sélectionné (PLS).
- 5. Contrôleur d'accès direct en mémoire (10, 20) selon l'une quelconque des revendications 2 à 4, dans lequel les moyens de stockage (38) comportent en outre, pour chaque destinataire (141, 142), un pointeur (PT1, PT2) de lecture dit « pointeur de travail », différent desdits pointeurs de lecture (PLI , PL2), le contrôleur comportant des moyens (30) d'exécution d'un micrologiciel (401, 402) de mise à jour du pointeur de travail (PT) de chaque destinataire (141, 142), à chaque lecture effectuée par ce pointeur de travail (PT1, PT2), selon une logique de mise à jour prédéterminée pour ce destinataire.
- 6. Contrôleur d'accès direct en mémoire (10, 20) selon la revendication 5, dans lequel la logique de mise à jour prédéterminée pour le pointeur de travail (PT1, PT2) de chaque destinataire (141, 142) comporte au moins un saut d'adresse dans la mémoire tampon circulaire de manière à lire les données affectées à ce destinataire (141, 142) dans un ordre différent de celui dans lequel elles ont été écrites dans la mémoire tampon circulaire (16).
- 7. Contrôleur d'accès direct en mémoire (10, 20) selon les revendications 3 et 5, dans lequel le pointeur de lecture sélectionné (PLS) est un pointeur de lecture à libération d'espace mémoire pour l'écriture de données, le pointeur de travail (PT1, PT2) de chaque destinataire (141, 142) est un pointeur de lecture à conservation de données lues, et dans lequel le pointeur d'écriture (PE) est mis à jour automatiquement par incrémentation sans saut d'adresse à chaque opération d'écriture d'une donnée dans la mémoire tampon circulaire (16).
- 8. Contrôleur d'accès direct en mémoire (10, 20) selon la revendication 7, comportant des moyens (30) de libération d'espace mémoire dans la mémoiretampon circulaire (16) conçus pour libérer, pour une écriture de données, un espace mémoire compris entre l'emplacement de l'ancienne adresse pointée et l'emplacement précédant celui de la nouvelle adresse pointée par le pointeur de lecture sélectionné (PLS), à chaque mise à jour de ce dernier par les moyens de sélection (30).
- 9. Procédé de transfert de données depuis au moins une source (12) de données vers plusieurs destinataires (141, ..., 14;, ..., 14n) de ces données par un contrôleur d'accès direct en mémoire (10, 20) selon l'une quelconque des revendications 1 à 8, caractérisé en ce que, chaque donnée reçue de la source (12) étant émise (106) par le contrôleur (10, 20) vers une mémoire tampon (16) et chaque donnée à transmettre à l'un des destinataires (14;) étant lue (118i) dans la mémoire tampon (16) par un module (30) de gestion de lectures, il comporte, pour chaque destinataire (141, 142) une succession d'étapes de lecture (118i) de données et de mise à jour (120i) d'un pointeur de lecture (PLI, PL2) associé à ce destinataire, cette succession d'étapes étant exécutée par le module de gestion de lectures et définie dans un micrologiciel (401, 402) de lecture et de mise à jour du pointeur de lecture (PLI, PL2) de ce destinataire (141, 142) selon une logique de mise à jour prédéterminée pour ce destinataire.
- 10. Programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un contrôleur d'accès direct en mémoire (10, 20), caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution des étapes d'un procédé de transfert de données selon la revendication 9 lorsque ledit programme est exécuté par un contrôleur d'accès direct en mémoire.25
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0957034A FR2951291B1 (fr) | 2009-10-08 | 2009-10-08 | Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants |
| EP10769002.6A EP2476061B1 (fr) | 2009-09-11 | 2010-09-10 | Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants |
| US13/395,557 US9032114B2 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, corresponding method and computer program |
| PCT/FR2010/051887 WO2011030070A1 (fr) | 2009-09-11 | 2010-09-10 | Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants |
| JP2012528431A JP5769093B2 (ja) | 2009-09-11 | 2010-09-10 | ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0957034A FR2951291B1 (fr) | 2009-10-08 | 2009-10-08 | Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| FR2951291A1 true FR2951291A1 (fr) | 2011-04-15 |
| FR2951291B1 FR2951291B1 (fr) | 2013-10-11 |
Family
ID=41821846
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| FR0957034A Expired - Fee Related FR2951291B1 (fr) | 2009-09-11 | 2009-10-08 | Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants |
Country Status (1)
| Country | Link |
|---|---|
| FR (1) | FR2951291B1 (fr) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5686917A (en) * | 1995-04-19 | 1997-11-11 | National Instruments Corporation | System and method for demultiplexing data in an instrumentation system |
| EP0933926A1 (fr) * | 1998-01-30 | 1999-08-04 | STMicroelectronics Limited | ContrÔleur DMA |
| US5974483A (en) * | 1997-05-21 | 1999-10-26 | Microsoft Corporation | Multiple transparent access to in put peripherals |
| FR2827995A1 (fr) * | 2001-07-27 | 2003-01-31 | Canon Kk | Procede et dispositif de gestion de memoire |
| US20040008741A1 (en) * | 2002-07-04 | 2004-01-15 | Keisuke Aoki | Data distribution apparatus and method |
-
2009
- 2009-10-08 FR FR0957034A patent/FR2951291B1/fr not_active Expired - Fee Related
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5686917A (en) * | 1995-04-19 | 1997-11-11 | National Instruments Corporation | System and method for demultiplexing data in an instrumentation system |
| US5974483A (en) * | 1997-05-21 | 1999-10-26 | Microsoft Corporation | Multiple transparent access to in put peripherals |
| EP0933926A1 (fr) * | 1998-01-30 | 1999-08-04 | STMicroelectronics Limited | ContrÔleur DMA |
| FR2827995A1 (fr) * | 2001-07-27 | 2003-01-31 | Canon Kk | Procede et dispositif de gestion de memoire |
| US20040008741A1 (en) * | 2002-07-04 | 2004-01-15 | Keisuke Aoki | Data distribution apparatus and method |
Non-Patent Citations (1)
| Title |
|---|
| "FRAME HANDLER WITH DYNAMIC ALLOCATION OF BUFFER SPACE", IBM TECHNICAL DISCLOSURE BULLETIN, INTERNATIONAL BUSINESS MACHINES CORP. (THORNWOOD), US, vol. 32, no. 6B, 1 November 1989 (1989-11-01), pages 37 - 40, XP000073673, ISSN: 0018-8689 * |
Also Published As
| Publication number | Publication date |
|---|---|
| FR2951291B1 (fr) | 2013-10-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2476061B1 (fr) | Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants | |
| EP2320325B1 (fr) | Contrôleur d'accès direct en mémoire à sources multiples, procédé et programme d'ordinateur correspondants | |
| EP1835411B1 (fr) | Systeme sur puce a controle semi-distribue | |
| FR2881540A1 (fr) | Procede et systeme destines a empecher que des lignes de memoire cache soient videes jusqu'a ce que les donnees stockees dans celles-ci ne soient utilisees. | |
| WO2016102818A1 (fr) | Methode d'ordonnancement de taches au niveau des noeuds d'un cluster informatique, ordonnanceur de taches et cluster associes | |
| CA2924803A1 (fr) | Module programmable pour une installation modulaire d'emetteurs de signaux et procede de pilotage de l'installation | |
| EP1860571B1 (fr) | Contrôleur de DMA, système sur puce comprenant un tel contrôleur de DMA, procédé d'échange de données par l'intermédiaire d'un tel contrôleur de DMA | |
| FR3039023A1 (fr) | Dispositif et procede d'exploitation d'un systeme | |
| EP1011293B1 (fr) | Mémoire tampon associée à plusieurs canaux de communication de données | |
| WO2014135591A1 (fr) | Procede et dispositif de filtrage de transactions pour systeme sur puce | |
| CA2981462C (fr) | Architecture de communication pour l'echange de donnees entre des unites de traitement | |
| FR2951291A1 (fr) | Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants | |
| FR2950173A1 (fr) | Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants | |
| EP3719658B1 (fr) | Système sur puce comprenant une pluralité de ressources master | |
| FR3031822A1 (fr) | Telechargement de donnees sur un equipement distant | |
| FR3117226A1 (fr) | Procédé de gestion du fonctionnement d’un système sur puce, par exemple un microcontrôleur, et système sur puce correspondant | |
| EP0784270B1 (fr) | Procédé pour ordonnancer une pluralité de messages provenant respectivement d'une pluralité de sources, et système pour la mise en oeuvre de ce procédé | |
| EP1098525A2 (fr) | Décodeur MPEG utilisant une mémoire partagée | |
| WO2016156702A1 (fr) | Amelioration d'emission de flux multimedia | |
| FR3057969B1 (fr) | Systeme de pilotage deterministe du fonctionnement de moyens de transfert de donnees par acces direct a des moyens de memorisation | |
| FR2908196A1 (fr) | Procede de transfert de donnees multimedia | |
| FR2624631A1 (fr) | Systeme multiprocesseur, procede d'echange d'informations mis en oeuvre et composant memoire multiport serie susceptible d'equiper ledit systeme | |
| EP3306513A1 (fr) | Procédé de gestion d'une mise à jour d'au moins un microcode au sein d'une unité de traitement, par exemple un microcontrôleur, et unité de traitement correspondante | |
| WO2007057621A1 (fr) | Procede de diffusion maitrisee d'informations | |
| FR2870373A1 (fr) | Gestion du gel d'un module fonctionnel dans un systeme sur une puce |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| ST | Notification of lapse |
Effective date: 20150630 |