Brevet FR2823875A1 — publié le 20021025

externe audit dispositif. La présente invention concerne un régisseur d'accès mémoire direct pour accéder à des tampons circulaires de mémoire dans un système informatique, et un procédé d'exploitation d'un système informatique comportant un régisseur d'accès mémoire direct de ce type. Les systèmes informatiques traditionnels sont fondés sur la combinaison d'un processeur (habituellement un microprocesseur) et d'une mémoire interne ou externe. Pour réduire la charge qui incombe au microprocesseur, on a introduit ce que l'on appelle des régisseurs d'accès mémoire direct (DMA). Ces régisseurs sont habituellement intégrés dans la même puce que le processeur. Les régisseurs DMA comprennent une logique câblée pour exécuter des opérations d'accès mémoire. Une architecture de système informatique comprenant un régisseur DMA 1 est représentée sur la figure 1. Habituellement, pour exéauter une opération d'accès à un bloc de données, un microprocesseur 2 stocke dans des registres respectifs l'adresse de départ (ou de "source'') du bloc de mémoire à partir duquel les données doivent être transférées, l'adresse d'arrivée (ou de "destination") du bloc de mémoire auquel les données doivent être transférces, et la longueur du bloc de donnses à transférer. De manière caractéristique, l'un des emplacements de source et de destination se trouve dans une mémoire 3 située sur la même puce que le processeur et le régisseur DMA, tandis que l'autre se trouve dans une mémoire externe 4. Toutefois, l'un des emplacements ou les deux peuvent consister en un registre de processeur ou en un dispositif mis en correspondance avec une mémoire externe. Des systèmes de files d'attente et de tampons de données sont souvent mis en _uvre dans une mémoire sous s la forme de tampons circulaires afin de permettre une utilisation efficace de la mémoire. Un tampon circulaire occupant 16 octets d'espace de mémoire est représenté sur la figure 2. Une séquence de données dans un tampon circulaire peut être disposée en boucle depuis le haut du tampon jusqu'à son début. L'exécution d'un accès de type DMA à un tampon circulaire reste une opération qui consomme beaucoup de temps de processeur, en ce sens que le microprocesseur doit calculer si le haut du tampon sera atteint ou non au cours d'une opération d'accès donnée, c'est-à-dire si la longueur restante du bloc auquel le régisseur DMA doit accéder n' aura pas été décrémentée jusqu'à 1 lorsque le haut de la boucle (ou un état de report) aura été atteint. Si l'on considère le tampon circulaire à 16 octets de la figure 1 et en supposant que le microprocesseur veuille accéder à un bloc de données ayant une longueur de 10 octets et que le point de départ du transfert soit l'adresse de mémoire 9, le microprocesseur va, avant d'ordonner au régisseur DMA 2s d'exécuter l'accès, vérifier si une situation de report va se présenter au cours de l'accès. Comme un report va avoir lieu, le microprocesseur doit scinder l'accès DMA en deux transferts consécutifs. Au cours du premier accès, les registres du régisseur DMA vont être réglés sur: Adresse de source: 9 Longueur à transférer: 7 Ceci aura pour effet de permettre un accès aux sept octets indiqués sur la figure 2. Au cours du second accès, les registres du régisseur DMA vont être réglés sur: Adresse de source: O Longueur à transférer: 3 Ceci aura pour effet de permettre un accès aux trois octets indiqués sur la figure 3. Pour détecter qu'un report va avoir lieu, le microprocesseur assume des charges de traitement supplémentaires. Des charges de traitement supplémentaires résultent également de la nécessité de calculer deux adresses de source, deux adresses de destination et deux longueurs de bloc à transférer. La présente invention a précisément pour but de remédier aux inconvénients susmentionnés des systèmes informatiques connus, grâce à l'envoi par le microprocesseur au régisseur DMA d'une valeur identifiant la taille du tampon circulaire. Pour atteindre le but ci-dessus et selon un premier aspect de la présente invention, il est proposé un procédé d'accès à un tampon circulaire à l'intérieur d'une mémoire d'un système informatique comprenant un processeur et un régisseur d'accès mémoire direct (DMA), le procédé étant caractérisé en ce qu'il comprend les étapes qui consistent à: 2s notifier au régisseur DMA 1'adresse de début d'un bloc de mémoire qui doit faire l'objet d'un accès, la longueur du bloc de mémoire et la taille du tampon circulaire; identifier, au niveau du régisseur DMA, une adresse de base et une adresse de report du tampon circulaire; et accéder au tampon circulaire en commençant à l'adresse de début, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant l'accès à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. Les modes de réalisation de la présente invention n' exigent du processeur qu'il ne transmette qu'une seule instruction de transfert au régisseur DMA pour chaque accès au tampon circulaire. En outre, la charge du calaul de l'adresse de report et (facultativement) de l'adresse de base du tampon est transférce du processeur au régisseur DMA. Conformément à une caractéristique particulière de la présente invention, le tampon circulaire faisant l'objet d'un accès peut être un tampon de source ou un tampon de destination destiné à un transfert de données. De préférence, l'adresse de début du bloc qui doit faire l'objet d'un accès est inscrite dans un registre spécialisé du régisseur DMA par le processeur. La taille du tampon circulaire peut également être inscrite dans le même registre. De préférence, une valeur représentant la taille du tampon circulaire est transmise par le processeur au régisseur DMA. Cette valeur peut identifier une taille unique parmi un ensemble de tailles de tampons. Par exemple, chaque taille d'un ensemble de huit tailles de tampons peut être identifiée de manière unique par une valeur à trois bits. De manière davantage préférée, l'adresse de base de chacun des tampons circulaires utilisés est spécifiée comme étant située sur une limite puissance 2, ou à une distance prédéfinie d'une limite puissance 2. Cette architecture permet de déterminer l'adresse de base d'un tampon circulaire à l' aide de certains des bits de poids le plus fort d'une adresse de source/destination associée à une demande d'accès à ce tampon, et en mettant à zéro les autres bits de poids le plus faible. s Le nombre de bits mis à zéro correspond à la taille du tampon circulaire. Selon un deuxième aspect de la présente invention, il est proposé un procédé de transfert d'un bloc de données d'un premier tampon circulaire à un second tampon circulalre d'un système informatique comprenant un processeur et un régisseur d'accès mémoire direct (DMA), le procédé étant caractérisé en ce qu'il comprend les étapes qui consistent à: notifier au régisseur DMA les adresses de source et de destination pour le transfert, respectivement dans les premier et second tampons, les tailles des tampons circulaires et la longueur du bloc de données à transférer; identifier, au niveau du régisseur DMA, des adresses de base et de report respectives des tampons circulaires; lire des données dans le premier tampon circulaire en commencant à l'adresse de source, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte; et inscrire les données dans le second tampon circulaire en commençant à l'adresse de destination, en 2s continuant jusquà ce que ladresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. On comprendra qu'il est possible d'exécuter simultanément les étapes de lecture et d'écriture, en lisant un mot dans le premier tampon et en inscrivant ce mot dans le second tampon, avant de lire le mot suivant dans le premier tampon. A titre de variante, les données peuvent être lues et écrites sous la forme de sous-blocs, ou sous la forme d'un bloc entier. Selon un troisième aspect de la présente invention, il est proposé un régisseur d'accès mémoire direct (DMA) pour accéder à un tampon circulaire à 1'intérieur d'une mémoire d'un système informatique, le régisseur DMA étant caractérisé en ce qu'il comprend: des moyens d'entrée destinés à recevoir d'un processeur une instruction d'accès à un bloc d'un tampon circulaire; un premier registre destiné à recevoir une adresse de début dans le tampon et une valeur définissant la taille du tampon circulaire; un second registre destiné à recevoir une valeur définissant la longueur d'un bloc du tampon circulaire qui doit faire l'objet d'un accès; des moyens pour identifier une adresse de base et une adresse de report du tampon circulaire; et des moyens pour accéder au tampon circulaire en commençant à l'adresse de début, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant l'accès à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. Selon un quatrième aspect de la présente invention, il est proposé un régisseur d'accès mémoire direct (DMA) pour transférer un bloc de données d'un premier tampon circulaire à un second tampon circulaire d'un système informatique, le régisseur DMA étant caractérisé en ce qu'il comprend: un premier registre destiné à recevoir une adresse de source à l'intérieur du premier tampon et une valeur définissant la taille du premier tampon circulaire; un deuxième registre destiné à recevoir une adresse de destination à l'intérieur du second tampon et une valeur définissant la tail le du second tampon circulaire; un troisième registre destiné à recevoir une valeur définissant la longueur du bloc de données à transférer; des moyens pour identifier des adresses de base et de report respectives des tampons circulaires; et des moyens pour lire des données dans le premier tampon circulaire en commençant à l'adresse de source, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte, et pour inscrire les données dans le second tampon circulaire en commençant à l'adresse de destination, en continnant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. Selon un cinquième aspect de la présente invention, il est proposé un système informatique caractérisé en ce qu'il comprend: un processeur; un régisseur DMA selon le troisième ou le quatrième aspect de la présente invention; une mémoire; et des bus d'adresses et de donnces reliant entre eux le processeur, le régisseur DMA et la mémoire. Ce qui précède, ainsi que d'autres buts, caractéristiques et avantages de la présente invention, ressortira plus clairement de la description détaillée suivante de modes de réalisation donnée à titre d'exemple nullement limitatif en référence aux dessins annexés dans lesquels: la figure 1 est une représentation schématique d'une architecture de système informatique comprenant un régisseur DMA; la figure 2 est une représentation schématique d'un tampon circulaire, montrant les positions d'un premier bloc à transférer par DMA; la figure 3 est une représentation schématique du tampon circulaire de la figure 2, montrant les positions d'un second bloc à transférer par DMA; la figure 4 est un tableau représentant un mécanisme de calcul d'une adresse de base d'un tampon circulaire; la figure 5 est une représentation schématique d'un scénario de report dans un tampon circulaire; et la figure 6 représente le contenu de tampons d'adresses de source et de destination. Un système informatique utilisant un régisseur d'accès mémoire direct (DMA) pour accéder à un tampon circulaire a été décrit en référence aux figures 1 à 3. Un procédé nouveau pour exploiter un régisseur DMA va maintenant être décrit. Ce procédé nécessite que le processeur inscrive un certain nombre de zones supplémentaires dans les registres d'adresses de source et de destination du régisseur DMA. Une première de ces zones est une zone d'ACTIVATION DE REPORT qui a une longueur de 1 bit. Cette zone joue le rôle d'un indicateur permettant de déterminer si cette caractéristique est activée ou non pour l'opération d'accès mémoire en question (c'est-à- dire de déterminer si l'accès mémoire concerne un tampon circulaire ou un bloc linéaire de mémoire). I1 convient de noter que la caractéristique de report peut être activée pour l'un des registres de source et de destination mais pas pour l'autre, ou pour les deux. C'est la seconde hypothèse qui est adoptée dans la description suivante. Une deuxième zone supplémentaire définit la taille du tampon de source/destination. Dans un premier mode de réalisation de l 'invention, la deuxième zone est suffisamment importante pour définir la taille du tampon sous forme binaire. Ainsi, par exemple, une zone de 18 bits est nocessaire si la taille maximale du tampon est de 128 kilo-octets. Une troisième zone s également inscrite dans le registre par le processeur doit spécifier l'adresse de base du tampon circulaire en question. Le processeur inscrit ensuite la longueur du bloc de données à transférer dans le registre de transfert. Un indicateur de début de ce registre est également mis à 1, afin de déclencher le début du transfert par le régisseur DMA. Le régisseur DMA calcule le nombre d' octets auxquels un accès (de lecture ou d'écriture) est possible à partir de chaque tampon circulaire avant que le haut du tampon ne soit atteint, ainsi que le nombre d'octets qui doivent faire l'objet d'un accès à partir du bas de chaque tampon, une fois qu'un report a eu lieu. Pour réduire la taille de la zone requise pour spécifier la longueur du tampon, lé ensemble des tailles de tampon possibles peut être codé au moyen d'un code de longueur fixe. Par exemple, un code à 3 bits peut être utilisé pour identifier l'une des huit tailles de tampon suivantes: lk, 2k, 4k, 8k, 16k, 32k, 64k, 128k. Là aussi, une troisième zone peut être incluse pour spécifier l'adresse de base du tampon circulaire. Toutefois, on s'est aperçu que si les adresses de base des tampons en service correspondent à des limites puissance 2 à l'intérieur de l'espace d'adresses mises en correspondance, un mécanisme simple peut être utilisé pour déterminer l'adresse de base à partir de l'adresse de source ou de destination. Ceci suppose la mise à zéro d'un certain nombre des bits de poids le plus faible (lsb) de l'adresse de source/destination, 3s nombre qui correspond à la taille du tampon circulaire. La figure 4 représente un tableau dans lequel la première colonne contient les codes d'identification à 3 bits, tandis que la deuxième colonne indique les tail les de tampons mises en correspondance avec l es s codes à 3 bits. La troisième colonne indique le nombre de bits de poids le plus faible mis à zéro pour chaque taille de tampon. A titre d'exemple, on va considérer que les registres du régisseur DMA sont configurés de la manière suivante (à l' aide d'une notation hexadécimale pour les adresses de source et de destination et en supposant que): Adresse de source: F23B Taille du tampon: 001 (2kJ Adresse de destination: 6310 Taille du tampon: 001 (2) Lorsque le report aura lieu (à partir de la figure 4), les 12 bits de poids le plus faible des adresses de source et de destination seront mis à zéro, c'est-à dire: Adresse de base source: FOOO Adresse de base destination: 6000. La figure 5 est une représentation schématique du report de l'adresse de source dans le tampon circulaire. La figure 6 représente le contenu des registres d'adresses de source et de destination résultant de la mise en _uvre du procédé décrit ci-dessus. Les registres sont des registres à 32 bits et contiennent une adresse à 26 bits, une zone à 3 bits identifiant la taille du tampon, un bit de report (activé/désactivé) et un bit non utilisé. Les registres contiennent également un bit (+/-) indiquant si le tampon doit faire l'objet d'un accès de manière incrémentielle ou décrémentielle. Bien que la description précédente ait porté sur des modes de réalisation particuliers de la présente invention, celle-ci n'est bien entendu pas limitée aux exemples spécifiques décrits et illustrés ici et l'homme de l'art comprendra aisément qu'il est possible d'y apporter de nombreuses variantes et modifications sans pour autant sortir du cadre de l'invention. REVENDICATIONS 1. Procédé d'accès à un tampon circulaire à l'intérieur d'une mémoire (3, 4) d'un système informatique comprenant un processeur (2) et un régisseur d'accès mémoire direct (DMA) (1), le procédé étant caractérisé en ce qu'il comprend les étapes qui consistent à: notifier au régisseur DMA (1) 1' adresse de début d'un bloc de mémoire qui doit faire l'objet d'un accès, la longueur du bloc de mémoire et la taille du tampon circulaire; identifier, au niveau du régisseur DMA, une adresse de base et une adresse de report du tampon circulaire; et accéder au tampon circulaire en commencant à l'adresse de début, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant laccès à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. 2. Procédé selon la revendication 1, caractérisé en ce que le tampon circulaire est un tampon de source ou un tampon de destination destiné à une opération de transfert de données. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que l'adresse de début du bloc qui doit faire l'objet d'un accès est inscrite dans un registre spécialisé du régisseur DMA (1) par le processeur (2), et en ce que la taille du tampon circulaire est également inscrite dans le même registre. 4. Procédé selon l'une quelcouque des revendications précédentes, caractérisé en ce qu'il comprend également le transfert d'une valeur représentant la tail le du tampon circulaire du processeur (2) au régisseur DMA (1). 5. Procédé selon la revendication 4, caractérisé en ce que la valeur identifie une taille unique parmi un ensemble de tailles de tampons. 6. Procédé selon la revendication 5, caractérisé s en ce que l'adresse de base de chacun des tampons circulaires utilisés est spécifiée comme étant située sur une limite puissance 2, ou à une distance prédéfinie d'une limite puissance 2, pour qu'ainsi l'adresse de base du tampon circulaire puisse être déterminée à l 'aide de l'adresse de début. 7. Procédé selon la revendication 6, caractérisé en ce qu'il comprend également la détermination de l'adresse de base du tampon circulaire par la mise à zéro d'un certain nombre des bits de poids le plus fort (lsb) de l'adresse de début, ce nombre correspondant à la taille du tampon circulaire. 8. Procédé de transfert d'un bloc de données d'un premier tampon cTrculaire à un second tampon circulaire d'un système informatique comprenant un processeur (2) et un régisseur d'accès mémoire direct (DMA) (1), le procédé étant caractérisé en ce qu'il comprend les étapes qui consistent à: notifier au régisseur DMA (1) les adresses de source et de destination pour le transfert, 2s respectivement dans les premier et second tampons, les tailles des tampons circulaires et la longueur du bloc de données à transférer; identifier, au niveau du régisseur DMA, des adresses de base et de report respectives des tampons circulaires; lire des donnces dans le premier tampon circulaire en commencant à l'adresse de source, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte; et inscrire les données dans le second tampon circulaire en commençant à l'adresse de destination, en s continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. 9. Régisseur d'accès mémoire direct (DMA) pour accéder à un tampon circulaire à l'intérieur d'une mémoire (3,4) d'un système informatique, le régisseur DMA (1) étant caractérisé en ce qu'il comprend: des moyens d'entrée destinés à recevoir d'un processeur (2) une instruction d'accès à un bloc d'un tampon circulaire; un premier registre destiné à recevoir une adresse de début à l'intérieur du tampon et une valeur définissant la taille du tampon circulaire; un second registre destiné à recevoir une valeur définissant la longueur d'un bloc du tampon circulaire qui doit faire l'objet d'un accès; des moyens pour identifier une adresse de base et une adresse de report du tampon circulaire; et des moyens pour accéder au tampon circulaire en commençant à l'adresse de début, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant l'accès à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. 10. Régisseur d'accès mémoire direct (DMA) pour transférer un bloc de données d'un premier tampon circulaire à un second tampon circulaire d'un système informatique, le régisseur DMA (1) étant caractérisé en ce qu'il comprend: un premier registre destiné à recevoir une 3s adresse de source à l'intérieur du premier tampon et une valeur définissant la taille du premier tampon circulaire; un deuxième registre destiné à recevoir une adresse de destination à l'intérieur du second tampon s et une valeur définissant la taille du second tampon circulaire; un troisième registre destiné à recevoir une valeur définissant la longueur du bloc de données à transférer; des moyens pour identifier des adresses de base et de report respectives des tampons circulaires; et des moyens pour lire des donnces dans le premier tampon circulaire en commençant à l'adresse de source, en continnant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte, et pour inscrire les données dans le second tampon circulaire en commencant à l'adresse de destination, en continuant jusqu'à ce que l'adresse de report soit atteinte et en poursuivant à partir de l'adresse de base du tampon jusqu'à ce que la fin du bloc soit atteinte. 11. Système informatique caractérisé en ce qu'il comprend: 2s un processeur (2); un régisseur DMA (1) selon la revendication 9 ou 10; une mémoire (3, 4); et des bus d'adresses et de données reliant entre eux le processeur (2), le régisseur DMA (1) et la