FR2951291A1 - Direct memory access controller for transferring data to e.g. peripheral, has blocking unit to block reading or writing work pointer if pointer points outside memory space reserved for reading or free memory space reserved for writing - Google Patents
Direct memory access controller for transferring data to e.g. peripheral, has blocking unit to block reading or writing work pointer if pointer points outside memory space reserved for reading or free memory space reserved for writing 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
- 230000000903 blocking effect Effects 0.000 title claims abstract description 25
- 230000002093 peripheral effect Effects 0.000 title description 2
- 239000000872 buffer Substances 0.000 claims abstract description 127
- 238000012546 transfer Methods 0.000 claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 10
- 238000004891 communication Methods 0.000 claims abstract description 5
- 238000004590 computer program Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
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. The present invention relates to a multi-address memory direct access controller, a method for transferring data from at least one data source to a plurality of recipients of that data implemented by that controller and a corresponding computer program.
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. Such a controller, qualified as a DMA (English "Direct Memory Access") controller, is generally used in a data processing device CPU such as for example an integrated circuit. It is used to transfer data processed or provided by the central processing unit, from or to peripheral devices such as communication ports, hard disks or any memory, between these devices and a local memory of the device by example, without the intervention of the central processing unit except to initiate and conclude the transfer. A DMA controller is for example very useful in a system where repeated access to fast devices could otherwise almost block or at least slow down the processing performed by the central unit. Its presence optimizes the processing time of software applications executed by the central unit by letting the DMA controller handle data transfers to and from the local memory. The invention more particularly applies to a direct memory access controller for the transfer of data from at least one data source to several recipients of this data, via a buffer memory comprising a predetermined number of elementary memory locations. successive, the access controller comprising a writes management module adapted to write data received from the source into the buffer memory and a storage pointer storage means indicating a basic location of the buffer memory in which a datum can be written. Such a DMA controller is for example described in the European patent published under the number EP 0 933 926. However it does not use one but more buffers. Its role is to write, in these buffers, data which are read successively by several receiver decoders having read access to these buffers. A write pointer, defined for each buffer, is incremented by an elementary memory location address at each write operation by the DMA controller of a data item in the corresponding buffer memory. But to transmit a sequence of data received from at least one source to multiple recipients, the DMA controller must be programmed to distribute the data to the plurality of intended buffers, one per recipient, managing updates of all pointers corresponding writing. This solution is quite complex. A simpler solution is to provide only one buffer in which the DMA controller writes all the data and in which they are then read sequentially to be transferred to the different recipients. But in this configuration, the sequential reading of the data for their transfer to all recipients is blocked as soon as one of the recipients blocks the reading of data.
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. It may thus be desired to provide a direct access controller in memory that makes it possible to overcome the aforementioned problems and constraints. The invention therefore relates to a direct memory access controller for transferring data from at least one data source to several recipients of this data, via a buffer memory comprising a predetermined number of successive memory elementary locations, the access controller comprising a writes management module adapted to write data received from the source into the buffer memory and means for storing a write pointer indicating an elementary location of the buffer memory in which data can be written, the access controller being further such that, for each recipient, the storage means comprises a read pointer indicating a basic location of the buffer in which data can be read for this recipient and the controller comprises means for executing a firmware for updating this read pointer according to an update logic. predetermined day for this recipient.
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. By firmware, we mean a software embedded in a hardware component such as an integrated circuit, more precisely in a volatile memory or not of this component. This term is used in the rest of the description as a translation of the English term "firmware". Thus, each firmware associated with a read pointer allows the direct memory access controller to flexibly manage reads and then data transmissions from the buffer to the corresponding recipient, independently of the other recipient or recipients. In other words, if a first recipient blocks the reading of data and therefore interrupts the execution of the firmware and the update of the read pointer associated with it, it does not prevent the execution of another firmware and the update of another read pointer associated with another recipient. This other recipient then normally receives its data, even if the first recipient remains blocked, even though the data is sequentially written by the direct memory controller in a single buffer.
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é. Optionally, the buffer memory is circular, each elementary location being identified by an address between a base address and a vertex address of the circular buffer, and the direct memory access controller according to the invention may comprise in addition, a read management module designed to read data stored in the circular buffer memory and transfer them to the recipients and means for blocking read or write respectively in the circular buffer memory according to the relative positions of the elementary locations indicated by said read pointers and said write pointer. Thus, the buffer fulfills an intermediate buffer function with blocking read / write between the source and the recipient. This function is managed using the read pointers and the write pointer by the direct memory access controller which has write and read accesses in this circular buffer. In this way, it is able to synchronize the incoming data stream (s) (flow generated by the source (s)) with the outgoing data flows (flows generated by the recipients) without having to synchronize with the central processing unit. Optionally also, a direct memory access controller according to the invention may comprise means for selecting, from among the set of read pointers, the read pointer indicating the least advanced elementary location with respect to the elementary location indicated by the write pointer taking into account a predetermined direction of the updates, these selection means being activated at each update of any of the reading pointers, and the reading blocking means, respectively write, in the circular buffer can be based on the relative positions of the elementary locations indicated by said selected read pointer and said write pointer. Optionally also, the read-blocking means are adapted to block any read of data in the circular buffer when an update of any one of the read pointers causes the address to which the pointer points to selected reading reaches or exceeds the address to which the write pointer points, and the write lock means is arranged to block any write of data in the circular buffer when a write pointer update is the address to which it points reaches or exceeds the address to which the selected read pointer points.
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. Optionally also, the storage means further comprise, for each recipient, a read pointer called "work pointer", different from said read pointers, the controller having means for executing an update firmware. the job pointer of each recipient, each read performed by the job pointer, according to a predetermined update logic for this recipient. Thus, it is possible to consider more flexibility in reading or writing data in the circular buffer without the direct memory access controller losing its ability to synchronize incoming and outgoing flows.
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. Optionally also, the predetermined update logic for the job pointer of each recipient has at least one address hop in the circular buffer so as to read the data assigned to that recipient in a different order from that in which they were written in the circular buffer.
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. Thus, the circular buffer whose memory direct access controller manages the tracking of reads and writes is not used by the controller as a simple list of FIFO type from the point of view of the recipients. By scheduling updates of the job pointers according to a predetermined logic, it is possible to change the sequence of data assigned to the respective recipients, between their reception from the source and their transmission to the recipients via the circular buffer. Optionally also, the reading pointer selected is a read pointer to free memory space for writing data, the working pointer of each recipient is a read pointer read data retention, and the pointer of The write is automatically updated incrementally without an address jump at each write operation of a data item in the circular buffer. Optionally also, a direct memory access controller according to the invention may include means for releasing memory space in the circular buffer memory designed to release, for a data write, a memory space between the location the old address pointed and the location before that of the new address pointed by the selected reading pointer, each update of the latter by the selection means. The invention also relates to a method of transferring data from at least one data source to several recipients of these data by a direct memory access controller as defined above, such that, each data received from the source being transmitted by the controller to a buffer memory and each piece of data to be transmitted to one of the recipients being read into the buffer memory by a read management module, it comprises, for each recipient, a succession of steps of reading data and of updating a read pointer associated with this recipient, this succession of steps being executed by the read management module and defined in a read and update firmware of the read pointer of this recipient according to a predetermined update logic for this recipient.
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. Finally, the invention also relates to a computer program downloadable from a communication network and / or recorded on a computer-readable medium and / or executable by a direct memory access controller, comprising code instructions of program for executing the steps of a data transfer method as defined previously when said program is executed by a direct memory controller. The invention will be better understood with the aid of the following description, given solely by way of example and with reference to the appended drawings in which: FIG. 1 schematically represents the general structure of an access controller 2 shows schematically the advantageous operation of the direct memory access controller of FIG. 1 in a blocking situation of a recipient, FIG. 3 schematically represents the advantageous operation of the direct memory access controller of FIG. the structure of a circular buffer managed by the direct memory access controller of FIG. 1, and FIG. 4 illustrates the successive steps of a data transfer method, according to one embodiment of the 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. The direct memory access controller or DMA controller 10 shown in FIG. 1 has the function of transferring data from at least one data source 12 to several recipients 141, ..., 14 ;, ..., 14, of these data via a buffer memory 16 comprising a predetermined number of successive memory elementary locations. For the implementation of the invention, it is necessary that the DMA controller 10 has access to the buffer memory 16 in writing and optional that there is read access. But in the example illustrated in FIG. 1, it is able to access write and read data at the elementary locations of the buffer memory 16 via a module 18 for controlling write access and read access. data interfacing between the DMA controller 10 and a storage medium incorporating the buffer memory 16. Note that in an alternative embodiment, the DMA controller, then carrying the reference 20, includes the storage medium incorporating the buffer memory 16 and the module 18 for controlling write and read accesses. In practice, it may be in the form of an autonomous on-chip system, for example a CMOS-type integrated circuit. As a nonlimiting example of implementation, according to a conceivable architecture called NoC (Network on Chip) or network on chip, the DMA controller 10 or 20 is considered as consisting of functional elements communicating between them via links of a packet-switched network. According to this architecture, to carry out the transfer of data from the source 12 to the recipients 141, ..., 14 ;, ..., 14m, the DMA controller 10 or 20 comprises the following elements: a link 22 for receiving data from the source 12, a module 24 for managing the data entries by the controller 10 or 20 in the buffer memory 16, this module being activated by data that it receives from the link 22, a transmission link 26 data to the buffer memory 16 for writing this data in elementary memory locations via the write and read access control module 18, a link 28 for receiving data from the memory buffer 16 for reading this data in elementary memory locations via the read / write access control module 18, a data readout management module 30 by the controller 10 u 20 in the buffer memory 16, able to receive the data provided by the link 28, and a link 32 for transmitting the data read to the recipients 141, ..., 14 ;, 14n. Thanks to these elements, the DMA controller 10 or 20 transmits each data received from the source 12 to the buffer memory 16, each data item intended to be transmitted to one of the recipients 141, ..., 14 ;, ..., 14n is then read into the buffer memory 16 by the DMA controller 10 or 20. The buffer 16 thus fulfills an intermediate buffer function between the source 12 and the recipients 141, ..., 14 ;, ..., 14n. It will be noted that in another possible embodiment of the invention not illustrated, when the DMA controller 10 does not integrate the buffer memory 16 and that in addition it does not itself have read access to the data. in the buffer 16, it is the recipients 141, ..., 14 ;, ..., 14n which will read directly into the buffer memory 16 the data intended for them. But in this case, in a conventional manner and not detailed, even if the data does not pass through the DMA controller 10, it still retains a mechanism for triggering readings by the recipients. Buffer 16 may be implemented in different ways known per se, but in a preferred embodiment, it is in the form of a circular buffer.
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. It then occupies a memory space between a base address and a vertex address. A write or read pointer associated with this circular buffer is incremented between the base address and the vertex address and returns to the base address incrementally after reaching the vertex address: this is which qualifies this buffer memory "circular buffer". The advantage of this circular buffer configuration, for example of the type FIFO (of the English "First ln First Out"), is to avoid memory reallocation constraints in case of receipt of additional data, since everything happens. passes as if it were possible to write indefinitely data in such memory as the address to which the writing pointer points does not reach an elementary location in which is stored data that has not yet been read, that is to say as long as the memory is not full. In this case, optionally, the data reception link 22 comprises a FIFO-type input buffer 34, for example for temporarily storing data received from the source 12 while the circular buffer memory 16 is blocked by write because it is full. Optionally also, the link 32 for transmitting the read data comprises an output buffer 36 of FIFO type, for example for temporarily storing data read in the circular buffer memory 16 while the output network is temporarily saturated or at least one of the recipients is blocked in reading. To allow the distribution of the data stream entering the DMA controller to the recipients 141, ..., 14 ;, ..., 14m, it further comprises means 38 for storing descriptors of the circular buffer 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;. These descriptors comprise at least one base pointer PB pointing to a base address of the circular buffer 16 in its storage medium, a vertex pointer PS pointing to a vertex address of the circular buffer 16 in its storage medium , a write pointer PE pointing to an elementary location address of the circular buffer 16 where a next data received by the DMA controller 10 or 20 can be written and several read pointers PLI, ..., PLi,. .., PLn. Each read pointer PLi points to an elementary location address of the circular buffer 16 where a next data item may be read to be transmitted to the recipient 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. Since the buffer memory 16 is a circular memory whose size is defined by the number of elementary locations between the base and vertex addresses designated by the PB and PS pointers, each elementary location of this memory to which pointers can point. for writing and reading PE and PLI, ..., PLi, ..., PLn is identified by an address between the base address and the vertex address. The base and vertex pointers PB and PS are predetermined and intended to remain constant while the write pointers PE, respectively PLI read, ..., PLi, ..., PLn, are variable. They can actually be updated by incrementing with or without address jumps thus defining a sense of updates.
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. The write pointer PE is for example more specifically intended to be updated by incrementing a basic location in the direction from the base to the top, following a write operation in the circular buffer. On the other hand, the read pointers PLI, ..., PLi,..., PLn are updated respectively by the execution of firmware 401,..., 40 ;,..., 4On. Their updating is predetermined so that each reading pointer PLi points to a basic location in which is stored data actually to be transferred to the corresponding recipient 14 ;. The firmware 401, ..., 40 ;, ..., 40n are for example stored in the same storage medium as the circular buffer memory 16. They are, in general, executed by a management module readings in the circular buffer memory 16, whether it is internal or external to the DMA controller. In the particular example of FIG. 1, they are more precisely executed by the read management module 30 of the DMA controller 10 or 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. As indicated above, the circularity of the buffer 16 is related to the fact that when a write or read pointer reaches the vertex address of the memory, incrementing that pointer by one elementary location causes it to point to the base address of the memory. Therefore, the data stored temporarily in the circular buffer 16 waiting to be read, either by the DMA controller 10 or 20 to be transmitted to the recipients 141, ..., 14 ;, ..., 14n, or directly by the recipients 141, ..., 14 ;, ..., 14n, are located between the address of the read pointer PLi the least advanced compared to the write pointer given the meaning of the updates and the address preceding that of the write pointer PE, in the direction of the base towards the top. On the other hand, the memory space in the circular buffer between the address of the write pointer PE and the address preceding that of the read pointer PLi the least advanced with respect to the write pointer, in the sense of the base to the top, is a free space for writing. This structure of the circular buffer 16 associated with the descriptors PB, PS, PE and PLI, ..., PLi, ..., PLn is illustrated in FIG. 3 which will be detailed later. The advantageous operation of the direct memory access controller 10 or 20 of FIG. 1 is illustrated in FIG. 2, in a particular application, which is simple but nonlimiting. According to this application, the source 12 provides a sequence of data alternating data (white points) intended to be transferred to a recipient 141 and data (black dots) intended to be transferred to a recipient 142. Thanks to the incremental update address address of the write pointer PE, these data are stored in the circular buffer 16 in the order of the sequence provided by the source 12. The data intended to be transferred to the recipient 141 are read in the circular buffer memory 16 by executing a firmware 401 for updating a read pointer PLI pointing at each moment to the elementary location of the next piece of data to read for the recipient 141. The updating logic applied by this firmware 401 for the intended application is therefore to increment the read pointer PLI by skipping an address at each data read performed in. to the recipient 141 so as not to read data assigned to the recipient 142. Similarly, the data to be transferred to the recipient 142 are read into the circular buffer 16 by executing a firmware 402 bet update of a read pointer PL2 pointing at each moment to the elementary location of the next piece of data to be read for the recipient 142. The update logic applied by this firmware 402 is also to increment the read pointer PL2 by skipping an address at each read of data performed for the recipient 142 so as not to read data assigned to the recipient 141. The two firmware 401 and 402 are independent and can therefore be executed in parallel by the DMA controller 10 or 20, the blocking of one of the two, in particular because the corresponding recipient blocks reading, does not affect the other. It is therefore clear that the DMA controller is thus able to simply and efficiently manage the transfer of data to multiple recipients without one of them can block alone the transfer of all data. In combination with this transfer function without blocking by one of the recipients, it is possible, in a particular embodiment of the invention, to provide that the DMA controller can also perform a function of synchronizing the incoming and outgoing flows. To implement this particular embodiment, it is necessary for the DMA controller to include the read management module 30 previously defined. In this case, this module 30 for managing the readings can be programmed to: select, from the set of read pointers PLI, ..., PLi, ..., PLn, the read pointer noted PLS indicating the location elementary least advanced relative to the basic location indicated by the write pointer PE given the predetermined direction of the updates, and make this selection with each update of any of the reading pointers PLI,. .., PLi, ..., PLn following a reading of data made for any of the recipients. On the basis of these considerations, the data writes management module 24 is designed to allow or block the writing of a piece of data in the circular buffer memory 16 as a function, in particular, of the relative values of the write pointer PE and the pointer selected reading PLS. It is also designed to automatically update the PE write pointer using a sequencer by incrementing it from a basic location. More specifically, in a simple variant of this particular embodiment of the invention, a piece of data to be written in the circular buffer memory 16 must be written at the address indicated by the write pointer PE; its writing must be blocked if an update of the PE write pointer previously performed by the writes management module 24 makes the address to which it points reaches or exceeds the address to which the PLS reading pointer points (full memory). On the basis of these same considerations, the data read management module 30 is designed to allow or block the reading of data in the circular buffer memory 16 as a function, in particular, of the relative values of the write pointer PE and the pointer. selected reading PLS. It is also designed to update each read pointer PLi by the execution of each firmware 40; More precisely, in a simple variant of this particular embodiment of the invention, a piece of data to be read in the circular buffer memory 16 for a recipient 14; must be read at the address indicated by the read pointer PLi; its reading must be blocked if an update of the read pointer PLi performed previously by the read management module 30 makes the address to which the selected reading pointer PLS points reaches or exceeds the address pointed to by the pointer PE writing (empty memory). Specifically, so that the blocking and unblocking read and write in the circular buffer 16 operate as indicated above, the module 24 for writing management can be programmed to, after each update of the PE write pointer: block any write of data in the circular buffer 16 if the write pointer PE reaches the selected read pointer PLS (indicating that the memory is full), and unblock the reading of data in the circular buffer 16 if it was locked and the PE write pointer again exceeds the selected PLS read pointer. Similarly, the module 30 for managing the readings can be programmed to, after each update of a read pointer PLi: - block any reading of data in the circular buffer memory 16 if the selected read pointer PLS reaches the pointer write PE (indicating that the memory is empty), and unblock the writing of data in the circular buffer 16 if it was blocked and the selected read pointer PLS exceeds the read pointer PE. In this way, the writes management module 24 performs a write blocking function when the memory 16 is full and read-free when the empty memory fills up again. The read management module 30 performs a read-lock function when the memory 16 is empty and write-off when the full memory is empty again. The above detailed operation of the write and read management modules 24 and 30 is only one example of implementation of the write and read blocking means in the circular buffer memory 16 by means of the pointers d. writing and reading PE and PLI, ..., PLi, ..., PLn. But it will be apparent to those skilled in the art that other implementations or variants can be envisaged to make the circular buffer 16 with reads and write-offs depending on the value of the write and read pointers PE and PLI, etc. , PLi, ..., PLn. These features make the DMA controller 10 or 20 capable of synchronizing the incoming stream of data from the source 12 and the outgoing streams to the recipients 141, ..., 14 ;, ..., 14n. As a result, in an integrated circuit comprising a microprocessor, the data source 12 which is for example a local memory for temporary storage of the data processed or used by the microprocessor, the recipients 141, ..., 14 ;, .. ., 14n which are for example any functional devices or operators and the DMA controller according to its variant embodiment including the circular buffer memory 16, the microprocessor can transfer data to the source 12 independently of the transfers made by the DMA controller between source 12 and recipients 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. In combination with this synchronization function of the DMA controller, it is possible, in another embodiment of the invention and according to a first variant, to define for each recipient 14; a new read pointer, called "job pointer". For each recipient 14 ;, this working pointer is different from the reading pointer PLi defined above. Like him, it is stored in the storage means 38. It is variable and intended to be updated by the firmware 40; after each read operation he performs. In Figure 3 which illustrates a simple two-recipient embodiment 141 and 142, two work pointers PT1 and PT2 are added to the write pointer PE and the read pointers PL1 and 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. Firmware 40; can be defined so that the update logic of the PTi work pointer reads the data for the recipient 14; in an order that is not that of the sequence transmitted by the source 12. By introducing this new pointer PTi for each recipient 14; and the possibility of updating it by forward and backward address jumps as illustrated in FIG. 3, in the circular buffer memory 16 and more precisely in the list of data assigned to the recipient 14; is not used as a simple FIFO type list. The job pointers PT1,..., PTi,..., PTn enable the DMA controller 10 or 20 to reorder itself each sequence of data to be transferred between the source 12 and any of the recipients 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. In this first variant, the selected read pointer PLS is then a read pointer to free memory space for writing data. In other words, with each selection of one of the read pointers as the selected read pointer, the memory space between the location of the old address pointed to and the location preceding that of the new address pointed to by the selected reading pointer PLS is automatically released for writing. This is because, as previously indicated, the memory space in the circular buffer 16 between the address of the write pointer PE and the address preceding that of the selected read pointer PLS in the base direction to the summit is considered in principle as a free space for writing.
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. In the simple example of FIG. 3, the read pointer PLI is the least advanced relative to the write pointer PE. It is therefore it which is selected and also taken as reference to define the beginning of the memory space storing data to be read and transferred to the recipients. More specifically, the memory space with the reference A designates a memory area in which there are data assigned to the recipient 141 that have not yet been read and data assigned to the recipient 142 that have been read: this zone n ' is not yet free to write. The memory space bearing the reference B designates a memory area in which there are data assigned to the recipients 141 and 142 which have not yet been read: this zone is a fortiori not free to write. Each working pointer PTi is, meanwhile, a read pointer retention of read data. In other words, when data must be read in the circular buffer 16 to be transmitted to the recipient 14 ;, it is read at the address indicated by the work pointer PTi, but the update of the work pointer PTi after this reading does not release the corresponding elementary location for writing. Indeed, the read displacements of the working pointer PT i do not necessarily follow the sequence of the data assigned to the recipient 14; in ascending order of addresses. They are freely predetermined by the firmware 40; in an arbitrary order, preferably between the read pointer PLi and the write pointer PE. According to the applications, a data read a first time by the working pointer PT i can notably be read again and the data can be read in a different order from that of their storage in the circular buffer memory 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. It is therefore noted that in this embodiment where each working pointer PTi is a read pointer, each firmware 40; includes instructions, executed by the read management module 30, for updating the two reading pointers associated with the recipient 14; : instructions that may include forward and / or backward address jumps depending on the intended application for the PTi work pointer, instructions that may include address jumps, but only forward, depending on the addresses where find the data assigned to the recipient 14; and according to the programmed displacements for the working pointer PTi, for the reading pointer 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 the other hand, none of the firmware 401,..., 40 ;,..., 40n includes instructions for updating the write pointer PE, this being for example updated by a sequencer without address jump and incrementally each write operation of a data in the circular buffer memory 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;. It will also be noted that, as illustrated in FIG. 3, the displacements of the working pointers PT1,..., PTi,..., PTn must be programmed so that they point in the zone of the circular buffer memory 16 which comprises actually data to read respectively for the recipients 141, ..., 14 ;, ..., 14n. If one of them points, after an update, outside this zone, then it can be provided according to the targeted applications, either to generate an error message, or to block it at this position until the PE write pointer catches it. According to the invention, this blocks the execution of the firmware 40; corresponding to the blocked PTi work pointer, but this does not block the execution of any other firmware 40; associated with another recipient 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é. In a symmetrical embodiment of the previous embodiment, to reorder the data sequence, it would also be possible to define a single work pointer PT as a write pointer. In this second variant, the write pointer PE would be a memory reservation write pointer for writing data in the circular buffer memory 16. In other words, whenever it would be set to day, the memory space between the location of the old dotted address and the location before that of the new address pointed by this PE write pointer would automatically be reserved for writing. The working pointer PT would, meanwhile, an effective writing pointer write data in any predetermined order in the memory space reserved by the pointer PE. But this second variant is less interesting to consider than the previous one because it is likely to cause blockages on the write side of the data in the circular buffer 16. In a data transfer application by a controller DMA, it is preferred to manage blocking downstream, the side of the readings in the circular buffer, rather than upstream, write side. An example of a method of transferring data to several recipients 14; that can be implemented by the DMA controller 10 or 20 will now be detailed, in the context of the first aforementioned embodiment variant, in which the DMA controller is in blocking read and write management of the circular buffer memory 16 and in which working pointers PT1, ..., PTi, PTn are introduced as read pointers to retention of read data. The successive steps of this method are illustrated in FIG. 4. During a first step 100, the controller 10 or 20 is waiting for an instruction to read or write data in the circular buffer 16 This step 100 is followed by a write triggering step 102, on the instruction to write a piece of data in the circular buffer memory 16. During this write triggering step, the writing management module 24 is activated. .
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. As a non-limiting exemplary embodiment, it extracts from the storage means 38 the value of a first descriptor indicating whether the writing in the circular buffer memory 16 is blocked or not. Then, during a test step 104, according to the value of this first descriptor, it is decided to continue or not to write the data considered. If the first descriptor indicates that the writing is blocked, we go back to step 100, otherwise we go to a step 106. In step 106, the writes management module 24 extracts storage means 38 the address to which the PE write pointer points. It then executes the writing of the data considered in the corresponding elementary location. Then, during an updating step 108, the address pointed by the write pointer PE is incremented by one elementary location in the circular buffer memory 16. Finally, during a step 110, the module 24 writes from the storage means 38 the address to which points the selected read pointer PLS then eventually updates the value of the first write blocking descriptor and that of a second descriptor blocking readings, in the following situations: if after the update of step 108, the address pointed by the write pointer PE reaches that pointed by the selected read pointer PLS (indication that the memory 16 is full), modification of the first descriptor for the latter to indicate a blocking of the writes, if after the updating of step 108, the address pointed by the writing pointer PE differs from that pointed by the reading pointer selected PLS while the second descriptor indicates a blocking readings, modification of the second descriptor for the latter indicates an authorization readings. Step 110 is followed by a return to step 100. Step 100 is also followed by a step 112i of triggering a read of data by the firmware 40 ;, on instruction to read data in the circular buffer 16 for the recipient 14; During this read triggering step, the read management module 30 is activated. As a nonlimiting exemplary embodiment, it extracts from the storage means 38 the value of the second descriptor indicating whether the reading in the circular buffer memory 16 is blocked or not. Then, during a test step 114i, the read management module 30 determines whether the recipient 14; is ready to receive the given data. This test can be done in many ways. If the DMA controller 10 or 20 has the output buffer 36, then it can be considered that a data transfer can be performed as long as this output buffer 36 is not full. Failing or in addition, a conventional communication protocol may provide that the recipient 14; informs the DMA controller 10 or 20 of its ability to receive data by messages in the predetermined format. If the transfer of the data to the recipient 14; is not possible, go back to step 100 and run firmware 40; is blocked, otherwise we go to another test step 116i. During this test step 116i, according to the value of the second descriptor, it is decided to continue or not to read the data considered. If the second descriptor indicates that the reading is blocked, go back to step 100 and the execution of the firmware 40; is blocked, otherwise we go to a reading step 118i. During this step 118i, the read management module 30 extracts from the storage means 38 the address to which the working pointer PTi points. It then executes the reading of the data considered in the corresponding elementary location.
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. Then, during an updating step 120i, the address pointed by the working pointer PTi is updated, either forwards or backwards, by the module 30 for managing the readings. according to the instructions of the firmware 40 ;. If this is also provided by the instructions of the firmware 40, the read pointer PLi can be updated also at this step causing the updating of the selected reading pointer 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é. Finally, during a step 122i, the read management module 30 possibly updates the value of the first write blocking descriptor and that of the second read blocking descriptor, in the following situations: if after the update in step 120i, the address pointed by the selected reading pointer PLS reaches that pointed by the write pointer PE (indication that the memory 16 is empty), modifying the second descriptor so that the latter indicates a blocking of the readings if, after the update of step 120i, the address pointed by the selected read pointer PLS differs from that pointed by the write pointer PE, while the first descriptor indicates a blocking of writes, modification of the first descriptor for the latter to indicate an authorization of the entries. Step 122i is followed by a return to step 100. As already stated above, each firmware 40; provides for the execution of steps 112i to 122i, knowing that several firmware can be run in parallel, blocking one does not block the others. It is clear that the previously described direct memory access controller and its operation for data transfer makes it possible to simply manage the transfer of data from at least one source to several recipients, without a recipient blocked from reading blocking the data transfer. or other recipients. It will also be noted that the invention is not limited to the embodiments envisaged. In particular, in the foregoing, to simplify the description, it has been envisaged an application where the transfer is made from a single source, but the principle of the invention applies in the same way with several sources. Similarly, a direct memory access controller according to the invention can manage several circular buffers and therefore several sets of descriptors (pointers, blocking descriptors, etc.) associated. More generally, it will be apparent to those skilled in the art that various modifications may be made to the embodiments described above, in light of the teaching just disclosed. In the following claims, the terms used are not to be construed as limiting the claims to the embodiments set forth in this specification, but should be interpreted to include all the equivalents that the claims are intended to cover because of their formulation and whose prediction is within the reach of the person skilled in the art by applying his general knowledge to the implementation of the teaching which has just been disclosed to him.
Claims (10)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0957034A FR2951291B1 (en) | 2009-10-08 | 2009-10-08 | MULTI-RECIPIENT DIRECT ACCESS CONTROLLER, CORRESPONDING COMPUTER PROGRAM AND PROGRAM |
EP10769002.6A EP2476061B1 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, corresponding method and computer program |
US13/395,557 US9032114B2 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, corresponding method and computer program |
PCT/FR2010/051887 WO2011030070A1 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, corresponding method and computer program |
JP2012528431A JP5769093B2 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, method and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0957034A FR2951291B1 (en) | 2009-10-08 | 2009-10-08 | MULTI-RECIPIENT DIRECT ACCESS CONTROLLER, CORRESPONDING COMPUTER PROGRAM AND PROGRAM |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2951291A1 true FR2951291A1 (en) | 2011-04-15 |
FR2951291B1 FR2951291B1 (en) | 2013-10-11 |
Family
ID=41821846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0957034A Expired - Fee Related FR2951291B1 (en) | 2009-09-11 | 2009-10-08 | MULTI-RECIPIENT DIRECT ACCESS CONTROLLER, CORRESPONDING COMPUTER PROGRAM AND PROGRAM |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2951291B1 (en) |
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 (en) * | 1998-01-30 | 1999-08-04 | STMicroelectronics Limited | DMA controller |
US5974483A (en) * | 1997-05-21 | 1999-10-26 | Microsoft Corporation | Multiple transparent access to in put peripherals |
FR2827995A1 (en) * | 2001-07-27 | 2003-01-31 | Canon Kk | Method and device for controlling a memory store of type First-In First-Out (FIFO) |
US20040008741A1 (en) * | 2002-07-04 | 2004-01-15 | Keisuke Aoki | Data distribution apparatus and method |
-
2009
- 2009-10-08 FR FR0957034A patent/FR2951291B1/en 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 (en) * | 1998-01-30 | 1999-08-04 | STMicroelectronics Limited | DMA controller |
FR2827995A1 (en) * | 2001-07-27 | 2003-01-31 | Canon Kk | Method and device for controlling a memory store of type First-In First-Out (FIFO) |
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 (en) | 2013-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2476061B1 (en) | Direct memory access controller, corresponding method and computer program | |
EP2320325B1 (en) | Direct access memory controller with multiple sources, corresponding method and computer program | |
EP3238056B1 (en) | Method for organising tasks in the nodes of a computer cluster, associated task organiser and cluster | |
EP1835411A1 (en) | System on chip with semi-distributed control | |
FR2881540A1 (en) | Input output cache memory usage method for computer system, involves assuring that prefetch locking indicator of cache memory line of cache memory associated to memory request is in locked condition, if memory request is not speculative | |
FR2989489A1 (en) | SYSTEM AND METHOD FOR MANAGING COASTAL COHERENCE IN A PROCESSOR NETWORK HAVING HIDDEN MEMORY. | |
WO2011070262A1 (en) | Controller for direct access to a memory, for direct transfer of data between memories of several peripherals | |
FR2972821A1 (en) | METHOD AND DEVICE FOR INSTALLING / UNINSTALLING SOFTWARE MODULES WITH CENTRALIZED RESOLUTION OF CONSTRAINTS IN AIRCRAFT EQUIPMENT | |
EP1011293B1 (en) | Buffer memory for multiple data communication channels | |
EP1860571A2 (en) | DMA controller, system on a chip comprising such a DMA controller, data exchange method using such a DMA controller | |
FR3047821A1 (en) | METHOD AND DEVICE FOR MANAGING A CONTROL DEVICE | |
WO2014135591A1 (en) | Method and device for filtering transactions for an on-chip system | |
FR2951291A1 (en) | Direct memory access controller for transferring data to e.g. peripheral, has blocking unit to block reading or writing work pointer if pointer points outside memory space reserved for reading or free memory space reserved for writing | |
WO2012107189A2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CA2981462A1 (en) | Communications architecture for data exchange between processing units | |
EP3719658B1 (en) | System on a chip comprising a plurality of master resources | |
FR2950173A1 (en) | Direct memory access controller for transferring data to e.g. peripheral, has blocking unit to block reading or writing work pointer if pointer points outside memory space reserved for reading or free memory space reserved for writing | |
FR2908196A1 (en) | METHOD OF TRANSFERRING MULTIMEDIA DATA | |
FR3031822A1 (en) | DOWNLOADING DATA ON REMOTE EQUIPMENT | |
EP2192482A1 (en) | On-chip multiprocessor system | |
WO2015150678A1 (en) | Synchronisation of the input data links of a computer | |
EP3215933A1 (en) | Coarse-grain reconfigurable architecture method and device for executing an application code in its entirety | |
EP0784270B1 (en) | Method to sequence messages from a plurality of sources, and a system to carry out said method | |
WO2016156702A1 (en) | Improvement in sending of multimedia streams | |
EP1256880B1 (en) | Data processing system and method for distributing memory access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20150630 |