FR2950173A1 - 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
- FR2950173A1 FR2950173A1 FR0956261A FR0956261A FR2950173A1 FR 2950173 A1 FR2950173 A1 FR 2950173A1 FR 0956261 A FR0956261 A FR 0956261A FR 0956261 A FR0956261 A FR 0956261A FR 2950173 A1 FR2950173 A1 FR 2950173A1
- Authority
- FR
- France
- Prior art keywords
- pointer
- data
- read
- write
- circular buffer
- 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.)
- Pending
Links
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, un procédé de transfert de données depuis au moins une source de données vers au moins un destinataire de ces données mis en oeuvre par ce contrôleur et un programme d'ordinateur correspondant. The present invention relates to a direct memory access controller, a method for transferring data from at least one data source to at least one recipient of this data implemented by this 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 un périphérique tel qu'un port de communication, un disque dur ou une mémoire quelconque, entre ce périphérique 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 au moins un destinataire de ces données, via une mémoire tampon circulaire comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs, chaque emplacement élémentaire étant identifié par une adresse comprise entre une adresse de base et une adresse de sommet de la mémoire tampon circulaire, le contrôleur 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 circulaire et des moyens de stockage d'un premier pointeur de lecture et d'un deuxième pointeur d'écriture, ledit pointeur de lecture, respectivement d'écriture, indiquant un emplacement élémentaire de la mémoire tampon circulaire dans lequel une donnée peut être lue, respectivement écrite. 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 can transfer data processed or provided by the central processing unit from or to a device such as a communication port, a hard disk or any memory, between this device and a local memory of the device for 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 transferring data from at least one data source to at least one recipient of this data, via a circular buffer comprising a predetermined number of locations. successive memory elements, each elementary location being identified by an address between a base address and a vertex address of the circular buffer, the access controller including a writes management module adapted to write data received from the source in the circular buffer memory and storage means of a first read pointer and a second write pointer, said read pointer, respectively write pointer, indicating an elementary location of the circular buffer memory in which a piece of data can be read or written respectively.
Un tel contrôleur DMA est par exemple décrit dans le brevet européen publié sous le numéro EP 0 933 926. Son rôle est d'écrire, dans des mémoires tampon, des données qui sont lues successivement par des décodeurs destinataires ayant accès en lecture à ces mémoires tampon. 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. De même, un pointeur de lecture, défini pour chaque mémoire tampon, est incrémenté d'une adresse d'emplacement élémentaire de mémoire à chaque opération de lecture par l'un des destinataires d'une donnée dans la mémoire tampon correspondante. Such a DMA controller is for example described in the European patent published under the number EP 0 933 926. Its role is to write, in buffers, data which are read successively by recipient decoders having read access to these memories buffer. 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. Similarly, a read pointer, defined for each buffer memory, is incremented by an elementary memory location address at each read operation by one of the recipients of a data item in the corresponding buffer memory.
Chaque mémoire tampon occupe un espace mémoire compris entre une adresse de base et une adresse de sommet. Les pointeurs d'écriture et de lecture d'une mémoire tampon sont alors incrémentés entre l'adresse de base et l'adresse de sommet de cette mémoire tampon et reviennent à l'adresse de base par incrémentation après avoir atteint l'adresse de sommet : c'est ce qui permet de qualifier ces mémoires tampon de « mémoires tampon circulaires ». L'avantage de cette configuration de mémoire tampon circulaire 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 FIFO tant que l'adresse vers laquelle pointe le pointeur d'écriture n'atteint pas celle vers laquelle pointe le pointeur de lecture, c'est-à-dire tant que la mémoire n'est pas pleine. Mais la taille de la mémoire tampon circulaire doit alors être suffisamment grande pour qu'en fonctionnement normal elle ne se remplisse jamais, ce qui nécessite de réserver a priori un espace mémoire important pour cette mémoire circulaire. Une solution partielle à ce problème est fournie par le document EP 0 933 926. Lorsque l'une des mémoires tampon circulaires est pleine et que le contrôleur DMA écrit une donnée à un emplacement où est stockée une donnée non encore lue par le destinataire concerné, en d'autres termes lorsque le pointeur d'écriture atteint ou dépasse le pointeur de lecture de cette mémoire tampon circulaire, une erreur est signalée. Mais cette solution n'est pas satisfaisante dans la plupart des cas, car les données initiales correspondant aux emplacements réécrits sont alors perdues. Each buffer occupies a memory space between a base address and a vertex address. The write and read pointers of a buffer are then incremented between the base address and the top address of this buffer and return to the base address incrementally after reaching the vertex address. : this is what qualifies these buffers "circular buffers". The advantage of this FIFO type circular buffer configuration (of the English "First ln First Out") is to avoid memory reallocation constraints in case of receiving additional data, since everything happens as if it was possible to write data indefinitely in such a FIFO memory as long as the address to which the write pointer points does not reach that to which the read pointer points, that is to say as long as the memory is not full. But the size of the circular buffer must then be large enough that in normal operation it never fills, which requires to reserve a priori important memory space for this circular memory. A partial solution to this problem is provided by the document EP 0 933 926. When one of the circular buffers is full and the DMA controller writes a data to a location where is stored data not yet read by the recipient concerned, in other words, when the write pointer reaches or exceeds the read pointer of this circular buffer, an error is reported. But this solution is unsatisfactory in most cases, because the initial data corresponding to the rewritten locations are then lost.
En outre, cette solution ne résout pas non plus le cas où l'un des destinataires cherche à lire une donnée alors que la mémoire tampon circulaire qui lui est associée est vide ou que les données qu'elle stocke sont obsolètes, en d'autres termes lorsque le pointeur de lecture atteint ou dépasse le pointeur d'écriture de cette mémoire tampon circulaire. In addition, this solution also does not solve the case where one of the recipients tries to read a data while the circular buffer associated with it is empty or the data it stores are obsolete, in others terms when the read pointer reaches or exceeds the write pointer of this circular buffer.
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 au moins un destinataire de ces données, via une mémoire tampon circulaire comprenant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs, chaque emplacement élémentaire étant identifié par une adresse comprise entre une adresse de base et une adresse de sommet de la mémoire tampon circulaire, le contrôleur 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 circulaire et des moyens de stockage d'un premier pointeur de lecture et d'un deuxième pointeur d'écriture, ledit pointeur de lecture, respectivement d'écriture, indiquant un emplacement élémentaire de la mémoire tampon circulaire dans lequel une donnée peut être lue, respectivement écrite, comportant 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 le destinataire 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 d'écriture. Ainsi, la mémoire tampon circulaire 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 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 le ou les flux de données sortant(s) (flux engendré par le ou les destinataire(s)) sans avoir besoin de se synchroniser avec l'unité centrale de traitement. De façon optionnelle, les moyens de stockage comportent en outre un troisième pointeur de lecture ou d'écriture, différent des premier et deuxième pointeurs, le contrôleur comportant des moyens d'exécution d'un micrologiciel de mise à jour du troisième pointeur, à chaque lecture ou écriture effectuée par ce troisième pointeur, selon une logique de mise à jour prédéterminée. 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 ». 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 subject of the invention is therefore a memory direct access controller for transferring data from at least one data source to at least one recipient of this data, via a circular buffer comprising a predetermined number of elementary memory slots. memory, each elementary location being identified by an address between a base address and a top address of the circular buffer, the access controller including a writes management module adapted to write data received from the source in the circular buffer and storage means of a first read pointer and a second write pointer, said read pointer, respectively write pointer, indicating an elementary location of the circular buffer in which a data can be read, respectively written, further comprising a read management module designed to read stored in the circular buffer memory and transfer to the recipient and reading blocking means, respectively write, in the circular buffer according to the relative positions of the elementary locations indicated by said read pointers and writing. Thus, the circular buffer fulfills an intermediate read / write buffer function between the source and the recipient. This function is managed using the read and write pointers 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 stream (s) (flow generated by the recipient or recipients). (s)) without having to synchronize with the central processing unit. Optionally, the storage means further comprise a third read or write pointer, different from the first and second pointers, the controller comprising means for executing update firmware of the third pointer, at each read or write performed by this third pointer, according to a predetermined update logic. 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".
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. 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 comporte au moins un saut d'adresse dans la mémoire tampon circulaire. Ainsi, la mémoire tampon circulaire dont le contrôleur d'accès direct en mémoire gère le suivi des lectures et écritures n'est pas utilisée par le contrôleur comme une simple liste de type FIFO. Grâce à une programmation prédéterminée des mises à jour du troisième pointeur d'écriture ou de lecture selon une logique prédéterminée comportant au moins un saut d'adresse, par opposition à une logique purement incrémentale, il est possible de changer la séquence des données, entre leur réception depuis la source et leur émission vers le destinataire via la mémoire tampon circulaire. Also optionally, the predetermined update logic includes at least one address hop in the circular buffer. Thus, the circular buffer whose memory direct access controller handles the tracking of reads and writes is not used by the controller as a simple FIFO type list. By predetermined programming of the updates of the third write or read pointer according to a predetermined logic comprising at least one address jump, as opposed to a purely incremental logic, it is possible to change the sequence of the data between their reception from the source and their transmission to the recipient via the circular buffer.
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 du premier pointeur de lecture fait que l'adresse vers laquelle il pointe atteint ou dépasse l'adresse vers laquelle pointe le deuxième 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 deuxième pointeur d'écriture fait que l'adresse vers laquelle il pointe atteint ou dépasse l'adresse vers laquelle pointe le premier pointeur de lecture. De façon optionnelle également, le premier pointeur de lecture est un pointeur de lecture à libération d'espace mémoire pour l'écriture de données, le troisième pointeur est un pointeur de lecture à conservation de données lues, et le micrologiciel est conçu pour la mise à jour uniquement des pointeurs de lecture, le pointeur d'écriture étant 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. Dans ce cas, de façon optionnelle, le contrôleur d'accès direct en mémoire 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 premier pointeur de lecture, à chaque mise à jour de ce dernier par l'exécution du micrologiciel. Optionally also, the read-blocking means are designed to block any data read in the circular buffer when an update of the first read pointer causes the address to which it points to reach or exceed the address. to which the second write pointer points, and the write-blocking means are arranged to block any writing of data in the circular buffer when an update of the second write pointer causes the address to which it point reaches or exceeds the address to which the first read pointer points. Optionally also, the first read pointer is a memory read-out read pointer for writing data, the third pointer is a read-data read pointer, and the firmware is designed for only read pointers, the write pointer being automatically updated in incrementation without an address jump at each write operation of a data in the circular buffer. In this case, optionally, the direct memory access controller 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 of the old address pointed to and the location preceding that of the new address pointed by the first read pointer, each update of the latter by the execution of the firmware.
De façon optionnelle également, le deuxième pointeur d'écriture est un pointeur d'écriture à réservation d'espace mémoire pour l'écriture de données, le troisième pointeur est un pointeur d'écriture, et le micrologiciel est conçu pour la mise à jour uniquement des pointeurs d'écriture, le pointeur de lecture étant mis à jour automatiquement par incrémentation sans saut d'adresse à chaque opération de lecture d'une donnée dans la mémoire tampon circulaire. Dans ce cas, de façon optionnelle, le contrôleur d'accès direct en mémoire peut comporter des moyens de réservation d'espace mémoire dans la mémoire tampon circulaire conçus pour réserver, 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 deuxième pointeur d'écriture, à chaque mise à jour de ce dernier par l'exécution du micrologiciel. L'invention a également pour objet un procédé de transfert de données depuis au moins une source de données vers au moins un destinataire 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 circulaire et chaque donnée à transmettre au destinataire étant lue dans la mémoire tampon circulaire par le contrôleur, il comporte des étapes de blocage en lecture par le contrôleur dans la mémoire tampon circulaire et de blocage en écriture par le contrôleur dans la mémoire tampon circulaire en fonction des positions relatives des emplacements élémentaires indiqués par les pointeurs de lecture et d'écriture. 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. Optionally also, the second write pointer is a memory reservation write pointer for writing data, the third pointer is a write pointer, and the firmware is designed for updating. only write pointers, the read pointer being updated automatically by incrementing without an address jump at each operation of reading a data in the circular buffer. In this case, optionally, the direct memory access controller may comprise memory space reservation means in the circular buffer designed to reserve, for a data write, a memory space between the location of the memory buffer. the old address pointed to and the location preceding that of the new address pointed by the second write pointer, each update of the latter by the execution of the firmware. The invention also relates to a method of transferring data from at least one data source to at least one recipient of these data by a direct memory access controller as defined above, such that each data received from the source being sent by the controller to a circular buffer and each piece of data to be transmitted to the recipient being read into the circular buffer by the controller, it includes read-out steps by the controller in the circular buffer and write blocking by the controller in the circular buffer according to the relative positions of the elementary locations indicated by the read and write pointers. 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.
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 représente schématiquement la structure générale d'un circuit intégré à microprocesseur, comportant le contrôleur d'accès direct en mémoire de la figure 1, les figures 3A et 3B représentent schématiquement la structure d'une mémoire tampon circulaire gérée par le contrôleur d'accès direct en mémoire de la figure 1, et la figure 4 illustre les étapes successives d'un procédé de transfert de données, selon un mode de réalisation de l'invention. Le contrôleur d'accès direct en mémoire ou contrôleur DMA 10 représenté sur la figure 1 a pour fonction de transférer des données depuis au moins une source de données 12 vers au moins un destinataire 14 de ces données via une mémoire tampon circulaire 16 comportant un nombre prédéterminé d'emplacements élémentaires de mémoire successifs. Le contrôleur DMA 10 est apte à accéder en écriture et en lecture aux emplacements élémentaires de la mémoire tampon circulaire 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 circulaire 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 circulaire 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 le destinataire 14, 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 circulaire 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 circulaire 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 circulaire 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 circulaire 16, apte à recevoir les données fournies par le lien 28, et un lien 32 d'émission des données lues vers le destinataire 14. 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 circulaire 16, chaque donnée destinée à être transmise au destinataire 14 étant ensuite lue dans la mémoire tampon circulaire 16 par le contrôleur DMA 10 ou 20. La mémoire tampon circulaire 16 remplit ainsi une fonction de tampon intermédiaire entre la source 12 et le destinataire 14. 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 destinataire 14 n'est pas encore prêt à les recevoir ou alors que le réseau de sortie est temporairement saturé. Pour synchroniser le flux de données entrant dans le contrôleur DMA et le flux de données sortant du contrôleur DMA, celui-ci comporte en outre des moyens 38 de stockage de descripteurs de la mémoire tampon circulaire 16. Ces descripteurs comportent au moins un pointeur de base PB pointant vers une adresse de base de la mémoire tampon circulaire 16 dans son support de stockage, un pointeur de sommet PS pointant vers une adresse de sommet de la mémoire tampon circulaire 16 dans son support de stockage, un pointeur d'écriture PE pointant vers une adresse d'emplacement élémentaire de la mémoire tampon circulaire 16 où une prochaine donnée reçue par le contrôleur DMA 10 ou 20 peut être écrite et un pointeur de lecture PL pointant 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. 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 diagrammatically the general structure of a microprocessor integrated circuit, comprising the direct memory access controller of FIG. 1, FIGS. 3A and 3B represent schematically 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 an embodiment of the invention . 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 at least one recipient 14 of these data via a circular buffer 16 having a number predetermined sequence of successive memory locations. The DMA controller 10 is able to access in writing and reading at the elementary locations of the circular buffer memory 16 via a module 18 for controlling the write access and read access data interfaced between the DMA controller 10. and a storage medium incorporating the circular buffer memory 16. It will be noted that in an alternative embodiment, the DMA controller, then carrying the reference 20, includes the storage medium incorporating the circular buffer memory 16 and the access control module 18 in writing and reading. 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 for carrying out the data transfer from the source 12 to the recipient 14, 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. data writes by the controller 10 or 20 in the circular buffer 16, this module being activated by data it receives from the link 22, a link 26 for sending data to the circular buffer 16 for the writing of these data in elementary memory locations via the write and read access control module 18, a link 28 for receiving data from the circular buffer memory 16 for reading this data in locations elementary memory through the module 18 for controlling write and read access, a module 30 for managing data readings by the controller their 10 or 20 in the circular buffer 16, adapted to receive the data provided by the link 28, and a link 32 for transmitting the data read to the recipient 14. With these elements, the DMA controller 10 or 20 transmits each data received from the source 12 to the circular buffer memory 16, each data to be transmitted to the recipient 14 is then read into the circular buffer memory 16 by the DMA controller 10 or 20. The circular buffer memory 16 thus fulfills a buffer function intermediate between the source 12 and the recipient 14. Optionally, the link 22 for receiving data comprises an input buffer 34 of the FIFO type, for example for temporarily storing data received from the source 12 while the memory circular buffer 16 is write-locked because it is full. Optionally also, the link 32 for transmitting the read data comprises an output buffer 36 of the FIFO type, making it possible, for example, to temporarily store data read in the circular buffer memory 16 while the recipient 14 is not yet ready to receive them or while the output network is temporarily saturated. To synchronize the data flow entering the DMA controller and the outgoing data flow of the DMA controller, the latter also comprises means 38 for storing descriptors of the circular buffer 16. These descriptors comprise at least one basic 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 a read pointer PL pointing to an elementary location address of the circular buffer 16 where a next data can be read to be sent to the recipient.
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 PL 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 PL, sont variables et destinés à être mis à jour, par exemple par incrémentation d'un emplacement élémentaire dans le sens de la base vers le sommet, suite à une opération d'écriture, respectivement de lecture, dans la mémoire tampon circulaire. Comme indiqué précédemment, la circularité de cette 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. 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. PE and PL read and write 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 read PL, are variable and intended to be updated, for example by incrementing an elementary location in the direction of the base towards the vertex, following a write operation, respectively of reading, in the circular buffer memory. As previously indicated, the circularity of this buffer 16 is related to the fact that when a write or read pointer reaches the vertex address of the memory, incrementing this pointer by one elementary location causes it to point to the base address of the memory.
Par conséquent, les données stockées temporairement dans la mémoire tampon circulaire 16 en attendant d'être lues par le contrôleur DMA 10 ou 20 pour être transmises au destinataire 14 sont situées entre l'adresse du pointeur de lecture PL 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 PL 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 PL est illustrée sur les figures 3A et 3B qui seront détaillées ultérieurement. Therefore, the data temporarily stored in the circular buffer 16 waiting to be read by the DMA controller 10 or 20 to be transmitted to the recipient 14 are located between the address of the read pointer PL and the address preceding that of the PE write pointer in the direction from the base to 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 PL in the direction of the base towards the vertex is a free space for the writing. This structure of the circular buffer 16 associated with descriptors PB, PS, PE and PL is illustrated in FIGS. 3A and 3B which will be detailed later.
Sur la base de ces considérations, le module 24 de gestion des écritures de données est conçu pour écrire une donnée, ou au contraire bloquer son écriture, dans la mémoire tampon circulaire 16 en fonction notamment des valeurs des pointeurs d'écriture et de lecture PE et PL. Il est également conçu pour mettre à jour le pointeur d'écriture PE, soit de façon automatique à l'aide d'un séquenceur en l'incrémentant d'un emplacement élémentaire, soit de façon prédéterminée par l'exécution d'un micrologiciel 40 par exemple stocké dans le même support de stockage que la mémoire tampon circulaire 16. Plus précisément, dans un mode de réalisation simple 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 PL (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 lire une donnée, ou au contraire bloquer sa lecture, dans la mémoire tampon circulaire 16 en fonction notamment des valeurs des pointeurs d'écriture et de lecture PE et PL. Il est également conçu pour mettre à jour le pointeur de lecture PL, soit de façon automatique à l'aide d'un séquenceur en l'incrémentant d'un emplacement élémentaire, soit de façon prédéterminée par l'exécution d'un micrologiciel 40 par exemple stocké dans le même support de stockage que la mémoire tampon circulaire 16. Plus précisément, dans un mode de réalisation simple de l'invention, une donnée à lire dans la mémoire tampon circulaire 16 doit être lue à l'adresse indiquée par le pointeur de lecture PL ; sa lecture doit être bloquée si une mise à jour du pointeur de lecture PL réalisée précédemment par le module 30 de gestion des lectures fait que l'adresse vers laquelle il pointe 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 PL (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 PL. De même, le module 30 de gestion des lectures peut être programmé pour, après chaque mise à jour du pointeur de lecture PL : bloquer toute lecture de données dans la mémoire tampon circulaire 16 si le pointeur de lecture PL 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 PL dépasse de nouveau le pointeur d'écriture 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 de lecture et d'écriture PL et PE, 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 de lecture et d'écriture PL et PE. 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 le flux sortant vers le destinataire 14. Il en résulte un avantage illustré sur la figure 2. Sur cette figure, un circuit intégré 50 comporte un microprocesseur 52, 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 52, le destinataire 14 qui est par exemple un périphérique ou opérateur fonctionnel quelconque et le contrôleur DMA conforme à sa variante de réalisation 20 incluant la mémoire tampon circulaire 16. Tous ces éléments 52, 12, 14 et 20 sont reliés entre eux par un bus 54 de transmission de données classique. On the basis of these considerations, the data writes management module 24 is designed to write data, or, on the contrary, block its writing, in the circular buffer memory 16 as a function, in particular, of the values of the write pointers and the PE read pointers. and PL. It is also designed to update the PE write pointer, either automatically using a sequencer by incrementing it by one elementary location, or in a predetermined manner by running a firmware 40 for example stored in the same storage medium as the circular buffer 16. More specifically, in a simple embodiment of the invention, a data to be written in the circular buffer memory 16 must be written to the address indicated by the PE writing pointer; its writing must be blocked if an update of the PE write pointer previously performed by the writing management module 24 makes the address to which it points reaches or exceeds the address to which the reading pointer PL points ( full memory). On the basis of these same considerations, the module 30 for managing data readings is designed to read a data, or on the contrary block its reading, in the circular buffer memory 16 as a function, in particular, of the values of the write and read pointers. PE and PL. It is also designed to update the reading pointer PL, either automatically using a sequencer by incrementing it by one elementary location, or in a predetermined manner by executing a firmware 40 by example stored in the same storage medium as the circular buffer 16. More precisely, in a simple embodiment of the invention, a piece of data to be read in the circular buffer memory 16 must be read at the address indicated by the pointer PL reading; its reading must be blocked if an update of the read pointer PL made previously by the read management module 30 makes the address to which it points reaches or exceeds the address to which the write pointer PE points ( 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 write pointer PE: block any write data in the circular buffer 16 if the write pointer PE reaches the read pointer PL (indication that the memory is full), and unblock the reading of data in the circular buffer 16 if it was blocked and that the write pointer PE again exceeds the read pointer PL. Similarly, the module 30 for managing the readings can be programmed, after each update of the read pointer PL: to block any reading of data in the circular buffer memory 16 if the read pointer PL reaches the write pointer PE (Indication that the memory is empty), and unblock the writing of data in the circular buffer 16 if it was blocked and the read pointer PL again exceeds the write 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 using the pointers of FIG. PL and PE read and write, but it will be apparent to those skilled in the art that other implementations or variants are possible to make the circular buffer 16 to read and write blocking according to the value of reading pointers and d PL and PE writing. These features make the DMA controller 10 or 20 capable of synchronizing the incoming data flow from the source 12 and the outgoing stream to the recipient 14. This results in an advantage illustrated in FIG. 2. In this figure, an integrated circuit 50 includes a microprocessor 52, the data source 12 which is for example a local memory for temporary storage of the data processed or used by the microprocessor 52, the recipient 14 which is for example any device or functional operator and the DMA controller according to its variant embodiment including the circular buffer memory 16. All these elements 52, 12, 14 and 20 are interconnected by a conventional data transmission bus 54.
En fonctionnement normal du microprocesseur 52 et du contrôleur DMA 20, le microprocesseur transfère des données vers la source 12 (étape B), par exemple dans une mémoire tampon de celle-ci, indépendamment des transferts réalisés par le contrôleur DMA entre la source 12 et le destinataire 14 (étape C). Ceci est en effet rendu possible par la fonction de synchronisation que peut remplir le contrôleur DMA 20 tel que décrit précédemment, grâce à sa mémoire tampon circulaire 16 à écritures et lectures bloquantes. En revanche, si le contrôleur DMA 20 ne pouvait pas remplir cette fonction, un protocole classique de requêtes (étape A) et d'acquittements (étape D) devrait être mis en oeuvre entre le microprocesseur 52 et le contrôleur DMA 20, associé à une écriture par blocs de données entre le microprocesseur 52 et la source 12. Le transfert de données entre la source 12 et le destinataire 14 serait ainsi réalisé par la succession des étapes suivantes : transmission A par le microprocesseur 52 d'une requête de transfert d'un bloc de données au contrôleur DMA, transmission B du bloc de données du microprocesseur 52 vers la mémoire tampon définie à cet effet dans la source 12, transfert C du bloc de données par le contrôleur DMA de la source 12 vers le destinataire 14, transmission D par le contrôleur DMA d'un acquittement au microprocesseur 52 pour permettre l'envoi d'un nouveau bloc de données. Il apparaît donc clairement que le contrôleur DMA 20 tel que décrit précédemment, prévoyant une synchronisation au niveau de chaque donnée transférée, permet de simplifier les étapes du transfert des données notamment en se passant des étapes A et D. En combinaison avec cette fonction de synchronisation, il est possible, dans un mode de réalisation de l'invention, de prévoir un micrologiciel (par exemple le micrologiciel 40) conçu pour mettre à jour au moins l'un des pointeurs de lecture et d'écriture associés à la mémoire tampon circulaire 16 selon une logique de mise à jour prédéterminée pour ajouter de la souplesse dans les opérations de lecture ou d'écriture. Dans ce cas, pour ne pas perdre la capacité de synchronisation du contrôleur DMA 10 ou 20, il convient de définir un nouveau pointeur de lecture ou d'écriture, dit pointeur de travail et portant la référence PT sur les figures 3A et 3B. Ce pointeur de travail est différent des pointeurs d'écriture et de lecture PE et PL définis précédemment. Comme eux, 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 ou d'écriture qu'il réalise. En particulier, le micrologiciel 40 peut être défini pour que la logique de mise à jour du pointeur de travail PT comporte au moins un saut d'adresse dans la mémoire tampon circulaire 16. En introduisant ce nouveau pointeur PT et le micrologiciel associé 40 qui permet par exemple son déplacement par sauts d'adresses, en avant ou en arrière comme illustré sur la figure 3A, dans la mémoire tampon circulaire 16, celle-ci dont le contrôleur DMA 10 ou 20 gère le suivi des lectures et écritures n'est pas utilisée comme une simple liste de type FIFO. Elle permet au contrôleur DMA 10 ou 20 de réordonner lui-même la séquence des données à transférer entre la source 12 et le destinataire 14. Dans une variante de réalisation préférée, le pointeur de travail PT est un pointeur de lecture. Dans cette variante, le premier pointeur de lecture PL est un pointeur de lecture à libération d'espace mémoire pour l'écriture de données. En d'autre termes, chaque fois qu'il est 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 premier pointeur de lecture PL 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 PL dans le sens de la base vers le sommet est considéré par principe comme un espace libre pour l'écriture. Le pointeur de travail PT 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 PT, mais la mise à jour du pointeur de travail PT 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 PT ne sont pas nécessairement incrémentaux : ils sont librement prédéterminés par le micrologiciel 40 dans un ordre arbitraire, de préférence entre le premier pointeur de lecture PL et le pointeur d'écriture PE. Selon les applications, une donnée lue une première fois par le pointeur de travail PT 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 : c'est donc uniquement une mise à jour du premier pointeur de lecture qui peut libérer de l'espace mémoire. Par exemple, dans une application de transmission d'un flux de données vidéo conforme au standard MPEG 2 ou 4 (de l'Anglais « Moving Picture Expert Group »), pour huit lignes de coefficients vidéo stockées dans la mémoire tampon circulaire 16, le micrologiciel 40 peut comporter des instructions pour déplacer le pointeur de travail PT de macrobloc 8x8 en macrobloc 8x8 et selon un ordre prédéterminé dans chaque macrobloc. Lorsque tous les macroblocs de ces huit lignes ont été lus par le pointeur de travail PT, les huit lignes de coefficients vidéo sont alors libérées dans la mémoire tampon par une mise à jour microprogrammée du premier pointeur de lecture PL. In normal operation of the microprocessor 52 and the DMA controller 20, the microprocessor transfers data to the source 12 (step B), for example in a buffer memory thereof, regardless of the transfers made by the DMA controller between the source 12 and the source 12. the recipient 14 (step C). This is indeed made possible by the synchronization function that can fulfill the DMA controller 20 as described above, thanks to its circular buffer 16 writes and blocking readings. On the other hand, if the DMA controller 20 could not fulfill this function, a conventional request protocol (step A) and acknowledgments (step D) should be implemented between the microprocessor 52 and the DMA controller 20, associated with a data block writing between the microprocessor 52 and the source 12. The transfer of data between the source 12 and the recipient 14 would thus be achieved by the following succession of steps: transmission A by the microprocessor 52 of a transfer request of a block of data to the DMA controller, transmission B of the microprocessor data block 52 to the buffer defined for this purpose in the source 12, transfer C of the data block by the DMA controller from the source 12 to the recipient 14, transmission D by the DMA controller of an acknowledgment to the microprocessor 52 to allow the sending of a new block of data. It therefore clearly appears that the DMA controller 20 as described previously, providing for a synchronization at the level of each data item transferred, makes it possible to simplify the steps of data transfer, in particular by dispensing with steps A and D. In combination with this synchronization function , it is possible, in one embodiment of the invention, to provide a firmware (for example the firmware 40) designed to update at least one of the read and write pointers associated with the circular buffer memory 16 according to a predetermined update logic to add flexibility in reading or writing operations. In this case, in order not to lose the synchronization capacity of the DMA controller 10 or 20, it is necessary to define a new read or write pointer, referred to as a working pointer and bearing the reference PT in FIGS. 3A and 3B. This job pointer is different from the write and read pointers PE and PL defined previously. Like them, it is stored in the storage means 38. It is variable and intended to be updated by the firmware 40 after each read or write operation it performs. In particular, the firmware 40 can be set so that the updating logic of the working pointer PT comprises at least one address jump in the circular buffer 16. By introducing this new pointer PT and the associated firmware 40 which allows for example its displacement by address jumps, forwards or backwards as illustrated in FIG. 3A, in the circular buffer memory 16, the latter of which the DMA controller 10 or 20 manages the tracking of the reads and writes is not used as a simple FIFO type list. It allows the DMA controller 10 or 20 to reorder itself the sequence of data to be transferred between the source 12 and the recipient 14. In a preferred embodiment, the working pointer PT is a read pointer. In this variant, the first read pointer PL is a read pointer with free memory space for writing data. In other words, each time it is updated, the memory space between the location of the old pointed address and the location preceding that of the new address pointed by this first read pointer PL 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 read pointer PL in the direction from the base to the summit is considered in principle as a free space for writing. The working pointer PT 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 working pointer PT, but the update of the working pointer PT after this read does not release the corresponding elementary location for writing. Indeed, the read displacements of the working pointer PT are not necessarily incremental: they are freely predetermined by the firmware 40 in an arbitrary order, preferably between the first read pointer PL and the write pointer PE. According to the applications, a data item read a first time by the working pointer PT can notably be re-read and the data can be read in a different order from that of their storage in the circular buffer memory 16: it is therefore only an update to day of the first read pointer that can free up memory space. For example, in an application for transmitting a video data stream conforming to the MPEG 2 or 4 standard (from the English "Moving Picture Expert Group"), for eight lines of video coefficients stored in the circular buffer memory 16, the Firmware 40 may include instructions for moving the 8x8 macroblock PT work pointer to 8x8 macroblock and in a predetermined order in each macroblock. When all the macroblocks of these eight lines have been read by the working pointer PT, the eight lines of video coefficients are then released in the buffer memory by a microprogrammed update of the first read pointer PL.
On note donc que dans cette variante de réalisation où le pointeur de travail PT est un pointeur de lecture, le 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 : - 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 PT, des instructions pouvant inclure des sauts d'adresse, mais uniquement en avant et en fonction des déplacements programmés pour le pointeur de travail PT, pour le premier pointeur de lecture PL. En revanche, le micrologiciel 40 ne comporte pas d'instructions pour la mise à jour du pointeur d'écriture PE, celui-ci étant par exemple mis à jour par un séquenceur sans saut d'adresse et de façon incrémentale à chaque opération d'écriture d'une donnée dans la mémoire tampon circulaire 16. On notera également que, comme illustré sur la figure 3A, les déplacements du pointeur de travail PT doivent être programmés pour qu'il pointe dans la zone de la mémoire tampon circulaire 16 qui comporte effectivement des données à lire. S'il pointe, après une mise à jour, à l'extérieur de cette zone, comme illustré sur la figure 3B, 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. It is therefore noted that in this embodiment where the working pointer PT is a read pointer, the firmware 40 includes instructions executed by the read management module 30 for updating the two reading pointers: instructions that may include address jumps forward and / or backward depending on the intended application for the PT work pointer, instructions that may include address jumps, but only ahead and depending on the movements programmed for the pointer PT, for the first read pointer PL. On the other hand, the firmware 40 does not include instructions for updating the write pointer PE, which is for example updated by a sequencer without any address jump and incrementally at each operation. writing a data item in the circular buffer 16. It will also be noted that, as illustrated in FIG. 3A, the movements of the working pointer PT must be programmed so that it points in the zone of the circular buffer memory 16 which comprises actually data to read. If it points, after an update, outside this zone, as illustrated in FIG. 3B, 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.
Dans une variante de réalisation symétrique de la précédente, le pointeur de travail PT peut être un pointeur d'écriture. Dans cette seconde variante, le pointeur d'écriture PE est 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 est 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 est automatiquement réservé pour l'écriture. Le pointeur de travail PT est, 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. Autrement dit, lorsqu'une donnée doit être écrite dans la mémoire tampon circulaire 16, elle l'est à l'adresse indiquée par le pointeur de travail PT, dont la mise à jour n'obéit pas nécessairement à une logique incrémentale. Ses déplacements sont librement prédéterminés par le micrologiciel 40 dans un ordre arbitraire dans l'espace mémoire réservé. In a symmetrical embodiment of the previous embodiment, the working pointer PT may be a write pointer. In this second variant, the write pointer PE is a write pointer with reservation of memory space for writing data in the circular buffer memory 16. In other words, whenever it is set to day, the memory space between the location of the old dotted address and the location preceding that of the new address pointed by this write pointer PE is automatically reserved for writing. The working pointer PT is, meanwhile, an effective writing pointer write data in any predetermined order in the memory space reserved by the pointer PE. In other words, when data must be written in the circular buffer 16, it is at the address indicated by the working pointer PT, the update of which does not necessarily obey an incremental logic. Its movements are freely predetermined by the firmware 40 in an arbitrary order in the reserved memory space.
On note donc que dans cette seconde variante de réalisation où le pointeur de travail PT est un pointeur d'écriture, le micrologiciel 40 comporte des instructions, exécutées par le module 24 de gestion des écritures pour la mise à jour des deux pointeurs d'écriture : 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 PT, des instructions pouvant inclure des sauts d'adresse, mais uniquement en avant et en fonction des déplacements programmés pour le pointeur de travail PT, pour le pointeur d'écriture PE. En revanche, le micrologiciel 40 ne comporte pas d'instructions pour la mise à jour du pointeur de lecture PL, celui-ci étant par exemple mis à jour par un séquenceur sans saut d'adresse et de façon incrémentale à chaque opération de lecture d'une donnée dans la mémoire tampon circulaire 16. Un exemple de procédé de transfert de données 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 pointeur de travail PT est un pointeur de lecture à conservation des données lues. Les étapes successives de ce procédé sont illustrées sur la figure 4. Au cours d'une première étape 100, le contrôleur 10 ou 20 est en attente d'une instruction de lecture ou d'écriture d'une donnée dans la mémoire tampon circulaire 16. Cette étape 100 est suivie d'une étape 102 de déclenchement d'écriture, sur instruction d'écrire une donnée dans la mémoire tampon circulaire 16. Lors de cette étape de déclenchement d'écriture, le module 24 de gestion des écritures est activé. A titre d'exemple de réalisation non limitatif, il extrait des moyens de stockage 28 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. It is therefore noted that in this second embodiment where the working pointer PT is a write pointer, the firmware 40 includes instructions executed by the writing management module 24 for updating the two write pointers. : instructions that may include forward and / or backward address jumps depending on the intended application for the PT work pointer, instructions that may include address jumps, but only forward and depending on the trips programmed to the PT work pointer, for the PE write pointer. On the other hand, the firmware 40 does not include instructions for updating the read pointer PL, which is, for example, updated by a sequencer without an address jump and incrementally at each read operation of the read pointer. a data in the circular buffer memory 16. An example of a data transfer method that can be implemented by the DMA controller 10 or 20 will now be detailed, in the context of the first aforementioned alternative embodiment, in which the pointer PT is a read pointer 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. . As a non-limiting exemplary embodiment, it extracts storage means 28 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.
Au cours de l'étape 106, le module 24 de gestion des écritures extrait des moyens de stockage 28 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. In step 106, the writes management module 24 retrieves storage means 28 the address to which the write pointer PE points. It then executes the writing of the data considered in the corresponding elementary location.
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 28 l'adresse vers laquelle pointe le premier pointeur de lecture PL 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 premier pointeur de lecture PL (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 premier pointeur de lecture PL 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 112 de déclenchement de lecture, sur instruction de lire une donnée dans la mémoire tampon circulaire 16. 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 28 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 114, 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, 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, sinon on passe à une autre étape de test 116. Au cours de cette étape de test 116, 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, sinon on passe à une étape de lecture 118. Au cours de cette étape 118, le module 30 de gestion des lectures extrait des moyens de stockage 28 l'adresse vers laquelle pointe le pointeur de travail PT. Il exécute alors la lecture de la donnée considérée dans l'emplacement élémentaire correspondant. Puis, au cours d'une étape 120 de mise à jour, l'adresse pointée par le pointeur de travail PT est mise à jour, soit vers l'avant, soit vers l'arrière, d'un ou plusieurs emplacements élémentaires, 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 premier pointeur de lecture PL peut être mis à jour également à cette étape, vers l'avant et d'un ou plusieurs emplacements élémentaires. Enfin, lors d'une étape 122, 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 120, l'adresse pointée par le premier pointeur de lecture PL 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 120, l'adresse pointée par le premier pointeur de lecture PL 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. 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 management means 28 retrieves the address to which the first read pointer points PL and 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 first read pointer PL (indication that the memory 16 is full), modification of the first descriptor for the latter to indicate a blocking writes, if after the update of step 108, the address pointed by the writing pointer PE differs from that pointed by the first pointer PL reading while the sec The descriptor indicates a blocking of the readings, the modification of the second descriptor for the latter indicates an authorization of the readings. Step 110 is followed by a return to step 100. Step 100 is also followed by a read triggering step 112, on the instruction to read a piece of data in the circular buffer memory 16. During this step read trigger, the read management module 30 is activated. As a non-limiting exemplary embodiment, it extracts from the storage means 28 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 114, the read management module 30 determines whether the recipient 14 is ready to receive the data considered. 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. Otherwise, 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, we go back to step 100, otherwise we go to another test step 116. During this test step 116, depending on 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, we go back to step 100, otherwise we go to a reading step 118. In this step 118, the read management module 30 extracts storage means 28 the address to which the PT work pointer points. It then executes the reading of the data considered in the corresponding elementary location. Then, during an updating step 120, the address pointed by the working pointer PT is updated, either forwards or backwards, by one or more elementary locations, by the module 30 for managing the readings according to the instructions of the firmware 40. If this is also provided for by the instructions of the firmware 40, the first read pointer PL can be updated also at this step, forward and from one or more elementary locations. Finally, during a step 122, 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 120, the address pointed to by the first read pointer PL 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 updating of step 120, the address pointed by the first read pointer PL differs from that pointed by the write pointer PE, while the first descriptor indicates a blocking of the writes, modification of the first descriptor for the latter to indicate an authorization of the entries.
L'étape 122 est suivie d'un retour à l'étape 100. 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 non seulement de se passer d'une synchronisation entre un microprocesseur et le contrôleur qui lui est associé, mais aussi d'ajouter de la souplesse dans le transfert des données, notamment lorsque la séquence de données souhaitée par le destinataire n'est pas la même que celle fournie par la source. C'est par exemple une propriété utile dans des applications de traitement et transfert de données d'images ou de vidéo dans le contexte des standards MPEG. 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 vers un seul destinataire, mais le principe de l'invention s'applique de la même manière avec plusieurs sources et/ou plusieurs destinataires. De même, un contrôleur d'accès direct en mémoire selon l'invention peut gérer plusieurs mémoires tampon 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é. Step 122 is followed by a return to step 100. It is clear that the previously described direct memory access controller and its operation for the data transfer not only make it unnecessary to synchronize a microprocessor and the controller associated with it, but also to add flexibility in the transfer of data, especially when the data sequence desired by the recipient is not the same as that provided by the source. This is for example a useful property in applications for processing and transferring image or video data in the context of MPEG standards. 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 to a single recipient, but the principle of the invention applies in the same way with several sources and / or several recipients. 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 |
---|---|---|---|
FR0956261A FR2950173A1 (en) | 2009-09-11 | 2009-09-11 | 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 |
JP2012528431A JP5769093B2 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, method and computer program |
US13/395,557 US9032114B2 (en) | 2009-09-11 | 2010-09-10 | Direct memory access controller, corresponding method and computer program |
EP10769002.6A EP2476061B1 (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 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0956261A FR2950173A1 (en) | 2009-09-11 | 2009-09-11 | 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 |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2950173A1 true FR2950173A1 (en) | 2011-03-18 |
Family
ID=42028239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0956261A Pending FR2950173A1 (en) | 2009-09-11 | 2009-09-11 | 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 |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2950173A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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) |
-
2009
- 2009-09-11 FR FR0956261A patent/FR2950173A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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) |
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 * |
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 | |
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 | |
FR2845175A1 (en) | METHOD AND SYSTEM FOR SWITCHING BETWEEN TWO OR MORE IMAGES OF SOFTWARE ON A HOST DEVICE | |
FR2681707A1 (en) | FILE SYSTEM FOR SELECTIVELY REDISTRIBUTING FILES AND METHOD FOR AFFECTING MEMORY SPACE IN A COMPUTER SYSTEM COMPRISING MULTIPLE DATA STORAGE DEVICES. | |
FR2975800A1 (en) | AUTOMATIC CONTEXT SHARING OF APPLICATIONS BETWEEN DEVICES | |
FR3023030A1 (en) | ||
EP1860571B1 (en) | DMA controller, system on a chip comprising such a DMA controller, data exchange method using such a DMA controller | |
EP1011293B1 (en) | Buffer memory for multiple data communication channels | |
EP0751465A1 (en) | Apparatus for the exchange of messages between two computers and method of command execution using the apparatus | |
EP2965260A1 (en) | Method and device for filtering transactions for an on-chip system | |
WO2013128498A1 (en) | Access device, communication equipment, communication system, and method for accessing data | |
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 | |
EP1286550A2 (en) | Device for data processing and routing | |
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 | |
WO2016156702A1 (en) | Improvement in sending of multimedia streams | |
FR2850179A1 (en) | Cache memory device for digital signal processor, has cache memory to provide instructions to core and to deactivate flag signal operation, and another memory to provide instruction to core when operation of signal is deactivated | |
WO2006030163A1 (en) | Onboard system and computer for holding data unloading in case of computer stoppage | |
FR2699305A1 (en) | Device for using pseudo-remote communication point functions (pseudo sockets). | |
EP2077017A1 (en) | Method of memory management in a client terminal, corresponding signal, computer program and terminal | |
WO2023029120A1 (en) | Application download processing method and apparatus, device, and storage medium | |
FR3057969A1 (en) | DETERMINISTIC DRIVER SYSTEM FOR DETERMINING THE OPERATION OF MEANS FOR TRANSFERRING DATA BY DIRECT ACCESS TO MEMORY MEANS | |
EP1256880B1 (en) | Data processing system and method for distributing memory access | |
FR2636447A1 (en) | Method of managing a message memory in a station of a data transmission network and station designed for implementing the method |