Brevet FR2761499A1 — publié le 19981002

CODEUR/DÉCODEUR D'IMAGES ANIMES AVEC MéMOIRE CACHEZ La présente invention concerne un système de codage/decodage d'images animées destiné notamment à satisfaire aux normes H.261 et H.263. Pour des raisons de simplicité de conception et de facilité d'évolution, les codeurs/décodeurs H.261 ou H.263 sont de plus en plus souvent conçus sous forme d'opérateurs spécialisés partageant une mémoire externe par l'intermédiaire d'un contrôleur mémoire qui effectue en temps partagé les différentes tâches de transfert associées aux opérateurs. La demande de brevet français N" 2 724 243 décrit un tel système. La mémoire partagée externe de ce système est une mémoire de type vidéo (VRAM), c'est-à-dire comportant un bus d'accès aléatoire et un bus d'accès séquentiel. Les divers opérateurs et le contrôleur mémoire sont reliés entre eux par un bus de données interne géré par le contrôleur mémoire et par un bus de commande interne géré par un séquenceur. Le contrôleur mémoire est par ailleurs relié au bus d'accès aléatoire de la mémoire VRAM. Parmi les opérateurs, un opérateur d'affichage reçoit les données à afficher par le bus séquentiel de la mémoire VRAM. Afin de réduire les coûts, on souhaite remplacer la mémoire VRAM par une mémoire dynamique (DRAM), qui présente un seul bus d'accès. Alors les données à afficher, qui transitaient dans le système susmentionné par le bus d'accès séquentiel de la mémoire VRAM, doivent transiter par le bus unique de la mémoire DRAM. Le débit élevé qui en résulte ne permet pas d'utiliser des mémoires DRAM couramment disponibles dans le commerce. Afin de diminuer le débit d'accès à une mémoire DRAM, il est connu d 'utiliser une mémoire cache accessible par un bus plus rapide que celui de la mémoire DRAM et à laquelle on tente d ' accéder le plus souvent possible pour limiter le nombre d'accès à la mémoire DRAM. Un inconvénient des systèmes de mémoire cache classiques est que l'on doit concevoir un algorithme complexe de gestion de la mémoire cache afin que celle-ci contienne toujours les données auxquelles on accède le plus souvent. On tente de réaliser un compromis entre la taille de la mémoire cache et la complexité de l'algorithme. Un objet de la présente invention est de prévoir un système de codage/décodage d'images animées muni d'une mémoire auxiliaire ou cache gérée de manière particulièrement simple et permettant au système de fonctionner avec une mémoire DRAM économique. Cet objet est atteint grâce à un système de codage d' images animées comprenant un opérateur d'estimation de mouvement ; un opérateur de codage destiné à recevoir un macrobloe courant et un macrobloe prédicteur correspondant ; un opérateur de reconstruction destiné à recevoir le macrobloe courant traité par 1 'opérateur de codage et le macrobloc prédicteur ; et une mémoire principale externe associée à des moyens pour stocker dans la mémoire principale des données transitant d'un opérateur vers un autre. Le système comprend une mémoire auxiliaire associée à des moyens de commande pour stocker temporairement dans la mémoire auxiliaire des macroblocs utilisés par au moins un opérateur dans un intervalle de temps prédéterminé court par rapport au temps de traitement d'une image. Selon un mode de réalisation de la présente invention, la mémoire auxiliaire stocke un premier groupe de macroblocs provenant d'une image capturée, chaque macrobloe de ce premier groupe étant utilisé successivement par l'opérateur d'estimation de mouvement et par l'opérateur de codage. Selon un mode de réalisation de la présente invention, la mémoire auxiliaire stocke un deuxième groupe de macroblocs, chaque macrobloe de ce deuxième groupe étant un macrobloe prédicteur utilisé successivement par l'opérateur de codage et par l'opérateur de reconstruction. Selon un mode de réalisation de la présente invention, 1 'opérateur de reconstruction et un opérateur de calcul de macrobloc prédicteur sont communs au système de codage et à un système de décodage d'images animées indépendantes de celles traitées par le système de codage. La mémoire auxiliaire stocke temporairement tout macrobloe prédicteur fourni par l'opérateur de calcul de prédicteur jusqu'à son utilisation par l'opérateur de reconstruction. Selon un mode de réalisation de la présente invention, le système comprend un bus de données et un bus de commande reliés aux opérateurs, chaque opérateur étant prévu pour effectuer un traitement déterminé par une instruction et étant susceptible d'émettre une requête de commande pour recevoir une instruction par le bus de cormande et d'émettre une requête de transfert en réponse à un acquittement de la requête de commande, pour recevoir ou fournir par le bus de données des données en cours de traitement. Un contrôleur mémoire arbitre les requêtes de transfert et gère les transferts de données sur le bus de données entre les opérateurs, la mémoire principale, non connectée au bus de données, et la mémoire auxiliaire, couplée au bus de données. Un séquenceur arbitre les requêtes de commande, détermine des instructions à fournir aux opérateurs et gère le transfert de ces instructions par le bus de commande. Selon un mode de réalisation de la présente invention, des opérateurs émettent des requêtes de commande pour fournir des paramètres sur le bus de commande, le séquenceur étant prévu pour lire ces paramètres et déterminer en fonction de ceux ci une instruction à fournir à un opérateur. Selon un mode de réalisation de la présente invention, le contrôleur mémoire est relié au bus de commande pour recevoir du séquenceur, avant un acquittement d'une requête de transfert, une instruction indiquant une zone mémoire dans laquelle le contrôleur mémoire accède aux données à échanger par le bus de données avec l'opérateur ayant émis la requête de transfert. Selon un mode de réalisation de la présente invention, pour effectuer un transfert de données entre un opérateur et la mémoire principale, le contrôleur mémoire place sur le bus de données une adresse spécifique à laquelle un opérateur correspondant répond en lisant les données fournies par le contrôleur mémoire sur le bus de données à partir de la mémoire principale ou en plaçant des données sur le bus de données qui sont transférées par le contrôleur mémoire vers la mémoire principale. Selon un mode de réalisation de la présente invention, la mémoire auxiliaire est associée à une interface avec les bus de données et de commande, cette interface étant prévue pour être activée par le contrôleur mémoire afin d'opérer des transferts de données entre un opérateur et la mémoire auxiliaire à la place du contrôleur mémoire. Selon un mode de réalisation de la présente invention, ladite interface est prévue pour recevoir, en tant qu'instruction du séquenceur, un numéro de macrobloe et à transférer les mots successifs ssifs du macrobloc correspondant entre la mémoire auxiliaire et le bus de données à la présentation par le contrôleur mémoire d'une adresse spécifique et de signaux de lecture/écriture sur le bus de données. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles la figure 1 représente un diagramme schématique des opérations de codage d'image mises en oeuvre dans un système selon l'invention ; la figure 2 est un diagramme schématique des opérations de décodage d'image mises en oeuvre dans un système selon l'invention ; la figure 3 représente sous forme de blocs fonctionnels un système de codage/décodage d'images animées muni d'une mémoire cache selon la présente invention la figure 4 illustre un enchaînement d'opérations dans le temps et le remplissage correspondant de la mémoire cache ; et la figure 5 représente schématiquement une interface de la mémoire cache avec les deux bus internes du système de la figure 3. La figure 1 illustre un diagramme des diverses étapes d'un codage d'images selon les normes H.261 et H.263. En 10, une image en cours de ré réception, par exemple fournie par une caméra, est capturée et stockée dans une zone mémoire 12a. L'image est généralement capturée par lignes de pixels alors que les traitements ultérieurs sont effectués sur des macroblocs. Un macrobloe comporte des pixels de luminance et des pixels de chrominance organisés selon un format standard et qui correspondent à un bloc d'image de 16x16 pixels. Dans un format courant, un macrobloe comporte 96 octets. Chaque macrobloe de 1' image capturée est fourni à tour de rôle à un estimateur de mouvement 14 qui cherche, dans une fenêtre d'une image précédente stockée dans une zone mémoire 12b, un macrobloc prédicteur ressemblant le plus possible au macrobloc en cours de traitement par l'estimateur de mouvement. Lorsque 1 'estimateur de mouvement a trouvé un macrobloc prédicteur, il fournit diverses informations, notamment un vecteur permettant de localiser le macrobloc prédicteur et une distorsion permettant à un bloc fonctionnel 16 de décider si le macrobloc en cours de traitement par l'estimateur de mouvement est de type prédit ou intra. Ces informations sont insérées dans des en-têtes stockés dans une zone mémoire 17a. Un opérateur de codage 18 reçoit le macrobloc courant. Si ce macrobloc courant a été qualifié de type prédit par le bloc fonctionnel 16, l'opérateur 18 reçoit également le macrobloc prédicteur correspondant. Si le macrobloc est de type intra, le macrobloc prédicateur n'est pas utilisé. En 19, le cas échéant, le macrobloc prédicteur est soustrait au macrobloc courant. Avant cette soustraction, le macrobloc prédicteur est cherché dans l'image précédente 12b à l'aide du vecteur qui a été fourni par l'estimateur de mouvement 14 et subit des traitements spécifiques en 20. Ces traitements spécifiques sont définis par les normes H.261 et H.263. En 22, le macrobloc différence fourni par le soustracteur 19 subit un codage consistant généralement en une transformée cosinus discrète (DCT), en une quantification, en un balayage zigzag, et finalement en un codage de longueur de chaîne de zéros (ric). La quantification utilise un coefficient Q calculé en fonction de divers paramètres qui varient selon les applications. Les coefficients Q sont calculés, par exemple, par le bloc fonctionnel 16 et insérés dans les en-têtes de la zone mémoire 17a. Ces opérations fournissent un macrobloc en format intermédiaire. En 24, chaque macrobloc en format intermédiaire et 1 'en-tête correspondant subissent un codage à longueur variable (VLC) et le flux de bits résultant subit une mise en trame selon la norme H.221 ou H.223. Par ailleurs, chaque macrobloc en format intermédiaire subit dans un opérateur de reconstruction 26 les opérations inverses de celles qu'il a subies dans l'opérateur 18. Plus spécifiquement, en 28, le macrobloc en format intermédiaire subit les opérations inverses du codage subi en 22. Puis on lui ajoute en 29 le macrobloc prédicteur correspondant précédemment calculé par le bloc fonctionnel 16. Les macroblocs reconstruits sont stockés dans une zone mémoire 12c pour constituer une image courante dans laquelle seront recherchés les macroblocs prédicteurs pour l'image suivante. Comme on le verra ci-après, les diverses fonctions du diagramme de la figure 1 sont effectuées par des opérateurs individuels qui fonctionnent de manière asynchrone les uns par rapport aux autres. Ceci signifie que les données qui sont transférées d'un opérateur à un deuxième opérateur doivent être stockées temporairement, le temps que le deuxième opérateur se libère pour traiter ces données. Ainsi, comme cela est représenté, les macroblocs prédicteurs fournis par l'opérateur 20 sont temporairement stockés en 32 en attente de leur fourniture à l'opérateur de codage 18 et à l'opérateur de reconstruction 26. De même, les macroblocs en format intermédiaire fournis par l'opérateur de codage 18 sont temporairement stockés en 12d avant d'être fournis à l'opérateur de codage à longueur variable 24 et à l'opérateur de reconstruction 26. Dans un système de codage/décodage classique, tel que celui décrit dans la demande de brevet français N" 2 724 243 susmentionnée, les zones de stockage temporaire 32 et 12d se trouvent dans la mémoire principale avec les zones d' image 12a, 12b et 12c, et la zone d'en-tête 17a. Les données stockées dans ces zones de stockage temporaire sont réutilisées par un opérateur dans un intervalle de temps prédéterminé qui est court par rapport au temps nécessaire à traiter une image. Les inventeurs ont constaté que ces zones temporaires, bien qu'elles aient une faible taille, sont utilisées particulièrement intensivement. La présente invention prévoit de stocker les données de ces zones temporaires dans une mémoire cache (32) accessible par un bus rapide et non dans la mémoire principale du système. Les macroblocs au format intermédiaire stockés dans la zone 12d ont déjà subi de nombreuses étapes de codage et constituent par conséquent un faible nombre de données qu'il n' est pas utile de stocker dans la mémoire cache, bien que cela serait envisageable. Par contre, il est avantageux de stocker dans la mémoire cache 32 les macroblocs prédicteurs calculés fournis par l'opérateur 20. Ceci réduit le nombre d' accès à la mémoire principale, pour chaque macrobloc prédicteur utilisé, de trois accès de macrobloc (une écriture de l'opérateur de calcul 20 vers la mémoire principale et deux lectures, respectivement par les opérateurs de codage 18 et de reconstruction 26). Par ailleurs, les inventeurs ont constaté que certaines données étaient utilisées deux fois dans un intervalle de temps prédéterminé court par rapport au temps de traitement d'une image. De telles données sont les macroblocs en cours de traitement extraits de l'image capturée 12a, qui sont fournis successivement à l'estimateur de mouvement 14 et à l'opérateur de codage 18. Ainsi, la présente invention prévoit de stocker dans la mémoire cache 32 chaque macrobloc extrait de l'image capturée 12a, le temps de fournir le macrobloc à 1 'estimateur de mouvement 14 puis à l'opérateur de codage 18. Ceci permet de ne lire qu'une fois chaque macrobloc dans la zone 12a de la mémoire principale, les deux lectures nécessaires étant effectuées dans la mémoire cache 32. La gestion de la mémoire cache 32 est particulièrement simple. En effet, il suffit de rediriger les accès qui étaient classiquement effectués dans la mémoire principale vers la mémoire cache, comme cela sera décrit ultérieurement. La taille de la mémoire cache est particulièrement faible, puisque les macroblocs qui y sont stockés sont réutilisés rapidement et peuvent être écrasés par de nouveaux macroblocs. La figure 2 illustre un diagramme des opérations de décodage d'un système selon l'invention. Le décodage est effectué pour obtenir des images animées à afficher localement, distinctes de celles qui sont en cours de codage. En 34, on reçoit un flux de bits codés qui sont aussitôt stockés dans la zone tampon 12d de la mémoire principale. Ces bits codés sont ensuite fournis à un opérateur 36 qui effectue les opérations inverses de 1 'opéra- teur 24 de la figure 1, c'est-à-dire un détramage et un décodage à longueur variable (VLD). Cette opération fournit des macroblocs au format intermédiaire qui sont stockés dans la zone tampon 12d de la mémoire principale et des en-têtes qui sont stockés dans une zone 17b de la mémoire principale. Les macroblocs en format intermédiaire sont ensuite fournis à un opérateur de reconstruction 26 qui est avantageusement le même que celui utilisé pour les opérations de codage de la figure 1. L'opérateur de reconstruction 26 reçoit des macroblocs prédicteurs d'une image préoédemment reconstruite, stockée dans une zone 12e de la mémoire principale. Bien entendu, les macroblocs prédicteurs sont préalablement traités par un opérateur de calcul 20, qui est également le même que celui utilisé pour le codage en figure 1. Les macroblocs reconstruits sont stockés dans une zone d'image 12f de la mémoire principale pour constituer une image courante qui est affichée par un opérateur 38. Coite on 1 'a précédemeent indiqué, les divers opérateurs fonctionnent de manière asynchrone, d'où il résulte que les macrobloes prédicteurs calculés fournis par l'opérateur 20 doivent être temporairement stockés afin de les fournir à 1 'opéra- teur de reconstruction 26 lorsque ce dernier est prêt à les recevoir. Selon l'invention, ces macroblocs calculés sont stockés dans la mémoire cache 32 et non dans la mémoire principale. Ceci permet d' éviter encore un accès en lecture et un accès en écriture de macrobloc dans la mémoire principale pour chaque macrobloc prédicteur. Bien entendu, la zone tampon 12d des figures 1 et 2 pourrait également être prévue dans la mémoire cache 32. Toutefois, on n'obtiendrait pas un gain significatif de débit d'accès à la mémoire principale, car la quantité de données stockées dans la zone tampon 12d est faible. La diminution du débit d'accès à la mémoire principale résultant de l'utilisation de la mémoire cache de la manière indiquée aux figures 1 et 2 est suffisante pour pouvoir utiliser une mémoire principale de type DRAM courante. La mémoire cache 32 est bien entendu reliée à un bus distinct du bus d'accès à la mémoire principale, de préférence à un bus interne de débit élevé sur lequel sont connectés les opérateurs. La figure 3 représente sous forme de blocs fonctionnels un codeur/décodeur selon la présente invention. Ce codeur/décodeur est du type décrit dans la demande de brevet français N" 2 724 243 susmentionnée et en diffère essentiellement par la présence d'une mémoire principale externe 12 de type DRAM et non VRAM, et par la présence d'une mémoire cache 32 reliée à un bus rapide interne. Par ailleurs, les opérations de codage et décodage à longueur variable et de tramage et détramage sont effectuées par un seul opérateur 40. Les autres opérateurs des figures 1 et 2 apparaissent à la figure 3 et sont désignés par les mêmes références. Le système comprend de façon générale une pluralité d'opérateurs reliés à deux bus, un bus de commande Cbus et un bus de données Dbus. Par le bus de données, géré par un contrôleur mémoire 42, les opérateurs échangent des données en cours de traitement avec la mémoire principale 12 (contenant les zones 12a à 12f et 17a, 17b des figures 1 et 2). Par le bus de commande, géré par un séquenceur 44, les opérateurs reçoivent des instructions de traitement. Il y a quatre principaux types d'opérateurs. Un premier type, tel que l'opérateur composite 40 pour le détramage, reçoit des données de l'extérieur et les fournit à la mémoire 12, éventuellement après un traitement. Un deuxième type, tel que les opérateurs de calcul 20, de codage 18, et de reconstruction 26, reçoit des données de la mémoire 12, les traite d'une manière spécifique, et fournit les données traitées à la mémoire 12. Un troisième type, tel que 1 'estimateur de mouvement 14, reçoit des données de la mémoire 12 et établit en fonction de celles-ci des paramètres à fournir à d'autres opérateurs. Enfin, le quatrième type, tel que l'opérateur d'affichage 38, reçoit des données de la mémoire 12 et les fournit à l'extérieur, éventuellement après un traitement. Pour chaque tâche affectée à un opérateur, l'opérateur émet deux requêtes successives. La première, requête de commande, est émise pour recevoir une instruction par le bus de cominaiide Cbus. La deuxième, requête de transfert, est émise après la réception de l'instruction pour rechanger des données avec la mémoire 12 par le bus de données Dbus. Des données reçues sont, le cas échéant, traitées en fonction de l'instruction précédemment reçue. Le séquenceur 44 est prévu pour arbitrer les requêtes de commande des opérateurs et fournir, par le bus de commande Cbus, une instruction à un opérateur prioritaire. Le séquenceur 44 est un processeur multitâches qui exécute, pour chaque requête de commande, un programme spécifique prévu pour déterminer 1' ins- truction et la fournir à 1 'opérateur. Ce programme détermine éventuellement l'instruction en fonction de paramètres préalablement fournis par d' autres opérateurs. Une instruction peut simplement consister en un signal d'activation de l'opérateur. Une instruction plus complexe peut comprendre des paramètres et une commande particulière parmi plusieurs commandes possibles. Le contrôleur mémoire 42 est prévu pour arbitrer les requêtes de transfert des opérateurs et effectuer le transfert d'un paquet de données, par le bus de données, entre un opérateur prioritaire et la mémoire 12, en calculant les adresses correspondantes. Le contrôleur mémoire 42 est également un processeur multitâches qui exécute, pour chaque requête de transfert, un programme spécifique de calcul d'adresses et de commande du bus de données. Les calculs d'adresses sont par exemple récursifs à partir d'une adresse de départ, la taille du paquet de données étant une constante du programne spécifique. Les calculs d'adresses doivent être relativement rapides car les transferts s'effectuent pratiquement en continu à la cadence d'une horloge du système. Une activation d'un opérateur par une instruction va, dans le cas général, entraîner un certain nombre de transferts successifs des données d'un paquet entre l'opérateur et la mémoire 12. Ainsi, la cadence à laquelle le séquenceur 44 fournit des instructions aux opérateurs est faible par rapport à la cadence d'horloge. De ce fait, le séquenceur 44 peut effectuer des calculs complexes plus longs que ceux effectués par le contrôleur mémoire 42, notamment calculer les adresses de départ des paquets à transférer par le contrôleur mémoire 42. Ces adresses de départ sont alors fournies au contrôleur mémoire par le bus de commande Cbus, le contrôleur mémoire étant connecté au bus de commande comme un opérateur. En outre, le bus de commande peut avantageusement être du type à multiplexage de données et d'adresses, c'est-à-dire que les mêmes lignes du bus servent d'abord à présenter une adresse et ensuite la donnée (instruction) correspondante. Ceci permet de notablement réduire la surface du bus de commande. Un opérateur peut comprendre plusieurs registres tampon d'entrée et de sortie. Chacun de ces registres tampon est accessible à une adresse spécifique par le bus de données et constitue un canal de transfert de l'opérateur. Un opérateur peut également comprendre un registre d'état, un registre d'instruction, éventuellement un ou plusieurs registres de paramètre, et éventuellement un ou plusieurs registres de résultat. Les registres d'état et de résultat sont accessibles en lecture et les registres d'instruction et de paramètre en écriture à des adresses spécifiques par le bus de commande Cbus. En outre, un opérateur est muni de deux systèmes de requête/acquittement, l'un associé au bus de données et l'autre associé au bus de commande. De nombreux systèmes de requête/acquittement peuvent être envisagés. Par exemple, le séquenceur 44 émet, après avoir fourni une instruction, une adresse particulière dite adresse de scrutation. Chacun des opérateurs répond à cette adresse en activant ou non, selon que 1 'opérateur émet une requête ou non, un bit spécifique du bus de commande. Le séquenceur 44, en lisant alors la donnée présente sur le bus de commande, connaît les opérateurs qui émettent une requête et effectue l'arbitrage, l'acquittement consistant à fournir une instruction à l'opérateur prioritaire. Le système de requête/acquittement associé au bus de données comprend, par exemple, une ligne de requête par canal d'entrée/sortie et une ligne d'acquittement correspondante. Lorsqutune requête de transfert est servie par le contrôleur mémoire, ce dernier active brièvement la ligne d'acquittement correspondante pour que 1 'opé- rateur désactive sa ligne de requête. Le fonctionnement général du système de la figure 3 est le suivant. Un opérateur qui est prêt à effectuer une tâche émet une requête de commande vers le séquenceur 44. Au moment où le séquenceur 44 décide de servir cette requête, il exécute un programme correspondant qui commence par lire le registre d'état de l'opérateur. Le registre d'état indique ce que l'opérateur est prêt à faire, par exemple recevoir un paquet de données. Ensuite, le programme du séquenceur détermine 1 'adresse de départ du paquet et la fournit au contrôleur mémoire 42, cette adresse étant mise en attente dans un registre tampon du contrôleur mémoire. Enfin, le programme du séquenceur active 1 'opérateur en écrivant une instruction dans son registre d' instruction, et éventuellement des paramètres dans ses registres de paramètre. On dira que le séquenceur "lance" une tâche de transfert. Aussitôt, l'opérateur émet des requêtes de transfert vers le contrôleur mémoire 42. Lorsque le contrôleur mémoire 42 décide de servir une de ces requêtes, il exécute un programme correspondant qui comme par lire 1 'adresse de départ en attente dans le registre tampon du contrôleur mémoire. Ce programme se met alors à transférer les données du paquet entre l'opérateur et la mémoire 12 à des adresses calculées à partir de 1'adresse de départ. Pendant ce transfert, le séquenceur 14 traite les requêtes de commande d'autres opérateurs. Lors d'un transfert, le contrôleur mémoire 42 présente sur le bus de données l'adresse spécifique du canal de 1 'opéra- teur, associé à la tâche de transfert en cours. De oe fait, les échanges se font entre la mémoire et le canal sélectionné par l'adresse spécifique. La tâche de transfert en cours du contrôleur mémoire 42 peut être interrompue par une tâche de transfert prioritaire. Alors, le programme en cours d'exécution par le contrôleur mémoire 42 effectue une sauvegarde de contexte et cède le contrôle au programme de transfert prioritaire qui utilise une nouvelle adresse de départ mise en attente dans un registre tampon du contrôleur mémoire. Lorsque le programme prioritaire se termine, le contrôle est de nouveau oédé au programme interrompu qui effectue une restauration de contexte pour continuer le transfert interrompu. Les tâches du séquenceur 44 sont espacées et occupent faiblement le bus de commande. Par conséquent, il n'est pas nécessaire de prévoir un mécanisme d'interruption du séquenceur, ce qui simplifie sa structure. Certains opérateurs, tel que 1 'estimateur de mouvement 14, peuvent être prévus pour fournir seulement un résultat dans le registre de résultat en fonction de données reçues. Dans ce cas, la procédure est similaire à celle d'un opérateur qui demande à fournir des données sauf que le séquenceur ne fait alors que lire ce résultat par le bus de commande Cbus. Bien entendu, il est possible qu'un opérateur soit prêt à effectuer plusieurs tâches, tel que l'opérateur composite 40. En acquittant la requête de l'opérateur, le séquenceur connaîtra cette situation grâce au registre d'état. Le séquenceur peut alors lancer les tâches de transfert l'une après l'autre, selon l'ordre de priorité de ces tâches. Ci-après on considère le système plus spécifique de la figure 3 mais on ne décrit son fonctionnement que pour les éléments interagissant avec la mémoire cache 32. Pour connaître le fonctionnement détaillé des autres éléments, on se reportera à la demande de brevet français N" 2 724 243 susmentionnée. La mémoire cache 32 est directement connectée aux bus Cbus et Dbus par une interface appropriée. Comme on l'a précédemment pale externe 12. Un transfert de données entre un opérateur et la mémoire cache 32 s'effectue de préférence sans modifier le comportement normal d'un opérateur par rapport à un transfert entre l'opérateur et la mémoire externe 12. Normalement, comme on l'a F a précédemment indiqué, lors- qu'un transfert est effectué entre un opérateur et la mémoire principale 12, 1 'opérateur cor(in par émettre une requête de transfert vers le contrôleur mémoire. Le contrôleur mémoire, ayant préalablement reçu du séquenceur 44 l'adresse de départ des données à transférer, répond à la requête de transfert en plaçant sur le bus de données une adresse spécifique identifiant le canal de l'opérateur qui doit recevoir ou fournir les données sur le bus de données. Le transfert s'opère alors entre le contrôleur mémoire 42 et le canal sélectionné de F l'opérateur d'une manière classique. Pour un transfert entre un opérateur et la mémoire cache 32, l'opérateur émet normalement une requête de transfert vers le contrôleur mémoire. L'adresse de départ du transfert de données a été préalablement calculée par le séquenceur 44 mais a été fournie à l'interface de la mémoire cache 32 et non au contrôleur mémoire 42. Ainsi, le programme du séquenceur 44 est modifié pour gérer la mémoire cache 32 par l'intermédiaire du bus de commande Cbus. Au moment où le contrôleur mémoire 42 répond à la requête de transfert, il place normalement sur le bus de données une adresse de canal de l'opérateur et des signaux de transfert de données appropriés, mais son programme est modifié pour qu'il ne fournisse ou ne lise aucune donnée sur le bus. L'interface de la mémoire cache 32 reconnaît l'adresse spécifique placée par le contrôleur mémoire sur le bus de données et se met à fournir ou à recevoir des données sur le bus à la place du contrôleur mémoire. Ce fonctionnement correspond aux transferts de 1 'opéra- teur de calcul de prédicteur 20 vers la mémoire cache 32 et de la mémoire cache 32 vers les opérateurs de codage 18 et de reconstruction 26. Dans le cas particulier du transfert des macroblocs d'une image capturée vers la mémoire cache 32, I'interface de la mémoire cache se comporte comme un opérateur qui comnence par émettre une requête de commande vers le séquenceur 44. Pour répondre à cette requête, le séquenceur calcule et fournit au contrôleur mémoire 42 l'adresse du prochain macrobloc à transférer à la mémoire cache à partir de la zone d'image capturée 12a. L'interface de la mémoire cache, après avoir été activée par le séquenceur, émet une requête de transfert vers le contrôleur mémoire qui acquittera cette requête en transférant à la mémoire cache, comme à un opérateur classique, le macrobloc de l'image capturée. L'interface aura pour cela, comme un opérateur normal, un canal de réception répondant a une adresse spécifique fournie par le contrôleur mémoire. Un exemple d'interface est décrit ultérieurement. La figure 4 représente un chronogramme illustrant le remplissage de la mémoire cache lors du traitement de plusieurs macroblocs successifs de l'image capturée. A la partie supérieure du chronogramme est représentée une succession de colonnes qui illustrent l'état de remplissage de la mémoire cache. Les numéros sont associés à des macroblocs en cours de codage tandis que les lettres sont associées à des macroblocs en cours de décodage. Un numéro ou une lettre entourée d'un carré indique que le macrobloc correspondant est écrit dans la mémoire cache, et un numéro ou une lettre entourée d'un cercle indique que le macrobloc correspondant est lu dans la mémoire cache. Comme cela est représenté, la mémoire cache est divisée en trois zones, une première zone pour stocker les macroblocs courants provenant de la zone d'image capturée de la mémoire principale 12, une deuxième zone est destinée à stocker les macroblocs prédicteurs calculés pour 1' image en cours de codage, et la troisième zone est destinée à stocker les macroblocs prédicteurs calculés pour l'image en cours de décodage. Les cycles ne sont pas représentés à l'échelle et correspondent aux durées séparant les étapes de traitement d'un macrobloc. On s'apercevra notamment que pendant une étape ou cycle de traitement d'un macrobloc, on transfère jusqu'à quatre macroblocs différents sur le bus de données. Initialement, le macrobloc l est recopié de la zone d'image capturée de la mémoire 12 vers la mémoire cache 32. Au cycle d'après, le macrobloc 1 est recopié de la mémoire cache vers l'estimateur de mouvement. Dans l'exemple représenté, F estimation de mouvement prend deux cycles, au cours desquels on recopie les macroblocs 2 et 3 de l'image capturée vers la mémoire cache. On prévoit dans cet exemple trois emplacements de macrobloc dans la mémoire cache pour l'image capturée. Ce nombre de places dépend de la durée pendant laquelle chaque macrobloc doit être conservé et de la cadence d'arrivée des macroblocs. Au quatrième cycle, F estimation de mouvement du macro- bloc l est terminée. On commence le calcul du macrobloc prédicteur l pour le macrobloc 1 et l'estimation de mouvement pour le macrobloc 2. Tandis que le macrobloc prédicteur 1 est calculé, il est écrit dans la deuxième zone de la mémoire caché. Au cinquième cycle, le calcul du macrobloc prédicteur 1 est terminé et on cornmence zone le codage du macrobloe 1. Le macrobloe 1 et son macrobloc prédicteur sont tous deux recopiés de la mémoire cache vers l'opérateur de codage 18. En même temps, on commence le calcul d'un macrobloc prédicteur a pour un macrobloc a en cours de décodage. Le macrobloc prédicteur a est écrit dans la troisième zone de la mémoire caché. Au sixième cycle, on commence l'estimation de mouvement du macrobloc 3 et le calcul de prédicteur pour le macrobloc 2. Le macrobloc prédicteur a calculé pour le macrobloc en cours de décodage et recopié de la mémoire cache vers 1 'opérateur de reconstruction 26. On s'aperçoit qu'au sixième cycle, on n'a plus besoin du macrobloc courant 1. Celui-ci est aussitôt remplacé dans la mémoire cache par le macrobloc courant 4. Au septième cycle, le macrobloc courant 2 ainsi que le macrobloc prédicteur 2 correspondant sont recopiés vers 1 'opéra- teur de codage 18. Le macrobloc prédicteur l est recopié de la mémoire cache vers 1 'opérateur de reconstruction 26. On commence le calcul d'un macrobloc prédicteur b pour un macrobloc b en cours de décodage. Lorsque le macrobloc prédicteur 1 aura été recopié vers l'opérateur de reconstruction, il pourra être remplacé par le macrobloc prédicteur 3... La capacité d'une zone de la mémoire cache est égale au nombre minimal de cycles pendant lesquels un macrobloc doit rester disponible dans cette zone moins le nombre maximal de cycles séparant F écriture de deux macroblocs successifs dans la zone. Dans l'exemple de la figure 4, un macrobloc d'image capturée doit rester pendant au mois cinq cycles dans la mémoire cache (il doit être écrit dans la mémoire cache au moins un cycle avant le début de l'estimation de mouvement et doit rester au moins jusqu'au début du codage). Le macrobloc suivant doit être écrit au plus tard un cycle avant l'estimation de mouvement suivante, c'est-à-dire deux cycles après l'écriture du macrobloc courant. De même, un macrobloc prédicteur pour une image en cours de codage doit rester dans la mémoire cache pendant au moins quatre cycles alors que le macrobloc prédicteur suivant est écrit au plus tard deux cycles après F écriture du macrobloc prédicteur courant. Dans un cas réel, étant donné que les opérateurs fonctionnent de manière asynchrone, les cycles ainsi que les temps de calcul des opérateurs varient dans une certaine plage, ce qui impose d'augmenter le nombre de macroblocs par zone de la mémoire cache pour créer une marge de sécurité. Ainsi, en pratique, la zone des macroblocs d' image capturée aura une taille de cinq macroblocs et chacune des zones des macrobloes prédicteurs aura une taille de deux macroblocs. La figure 5 représente schématiquement une interface de la mémoire cache 32 avec les bus de commande et de données Cbus et Dbus. Cette interface comprend un registre 50 dans lequel est inscrit le numéro de 1' F emplacement de macrobloc en cours d'accès dans la mémoire cache 32 et un registre 52 dans lequel est inscrit le numéro du mot du macrobloc en cours d' accès dans la mémoire cache. Le registre 52 peut être accessible par le bus de commande Cbus pour des raisons de test. La taille d'un mot est celle du bus de données Dbus. Dans un exemple, les mots sont de 32 bits (4 octets). Le numéro d'emplacement permet d'accéder de manière uniforme à tous les emplacements, quelle que soit la zone (de macrobloc courant ou de macrobloc prédicteur) dans laquelle se trouve 1 'emplacement. Le registre 52 fournit les bits de poids faible de 1 'adresse A de la mémoire 32 et le numéro d'emplacement contenu dans le registre 50 est multiplié par 96 en 54 pour fournir les bits de poids fort de l'adresse de la mémoire 32 (96 étant le nombre de mots de 32 bits dans un macrobloc). Comme on l'a précédemment indiqué, c 'est le séquenceur 44 qui gère la mémoire cache au niveau des macroblocs. Ainsi, le registre 50 est accessible en écriture par le bus de commande Cbus. L'interface représentée en figure 5 permet de gérer le transfert des données du macrobloc sélectionné par le registre 50. Pour cela, il comprend un circuit dtincrémentation 56 qui renvoie vers le registre 52 son contenu précédent augmenté de 1 (modulo 96). Le circuit d'incrémentation 56 est activé par les signaux d'écriture et lecture R/W de la mémoire 32. Ces signaux R/W sont fournis par un décodeur d'adresses 58 relié aux lignes d'adresse du bus de données Dbus. Les lignes de données D de la mémoire cache 32 sont reliées aux lignes de données du bus Dbus. Le décodeur d'adresses 58 est prévu pour activer la ligne R/W d'écriture ou de lecture lorsque le contrôleur mémoire présente les adresses correspondant aux transferts que l'on effectue selon l'invention avec la mémoire cache. Comme on 1 'a precêdemeent indiqué, le contrôleur mémoire peut être interrompu au cours du transfert d'un macrobloc afin de commencer ou continuer le transfert d'un autre macrobloc. L'interface de la mémoire cache doit être adaptée à ce fonctionnement. Pour cela, l'interface comprend en fait autant de registres 50 et 52 que de canaux qui peuvent accéder en même temps à la mémoire cache, le couple de registres 50-52 adéquat étant sélectionné par un multiplexeur commandé en fonction de F adresse présentée au décodeur 58. Dans l'exemple de la figure 4, quatre accès simultanés peuvent se produire, nécessitant quatre couples de registres 50-52. En pratique, comme on augmente le nombre d'emplacements de macrobloc dans la mémoire cache, il pourra être nécessaire de prévoir davantage de couples 50-52 pour une adaptation à davantage d'accès simultanés. Afin que la mémoire cache fonctionne en tant qu'opérateur pour recevoir des macroblocs de 1' image capturée, elle comprend un registre d'état 59. Lorsque la mémoire cache est prête à recevoir un macrobloc de 1' image capturée, elle émet une requête vers le séquenceur en validant un premier bit du registre d'état 59. Le séquenceur répond à cette requête en écrivant un numéro de macrobloc dans le registre 50 correspondant et en validant un deuxième bit du registre d'état. Ce deuxième bit constitue 1'instruction indiquant à la mémoire cache de poursuivre. Alors, la mémoire cache dévalide le premier bit du registre d'état (la requête vers le séquenceur) et active une requête vers le contrôleur mémoire qui se charge de transférer le macrobloc de 1'image capturée vers la mémoire cache, en concurrence avec d'autres transferts. Tout moyen classique peut être employé pour gérer les emplacements de la mémoire cache. A titre d'exemple, on peut utiliser dans le séquenceur 44 des sémaphores qui sont mis à jour régulièrement pour indiquer F l'espace disponible dans les zones de la mémoire cache. Ainsi, le sémaphore associé à une zone est incrémenté par la tâche associée à un opérateur consommateur final (opérateurs 18, 26, la mémoire cache 32 elle-même pour les macroblocs de 1 'image capturée), et décrémenté par la tâche associée à un opérateur producteur (20). Lorsqu'un sémaphore atteint une valeur maximale, la zone correspondante est vide et les opérateurs consommateurs sont mis en attente. Lorsqu'un sémaphore atteint une valeur nulle, la zone correspondante est pleine et les opérateurs producteurs sont mis en attente. L'opérateur composite 40 est prévu pour réaliser de manière logicielle les traitements de tramage et détramage et de codage et décodage à longueur variable. De préférence, on utilise pour cela un microprocesseur dédié qui, à part des fonctions d'usage général classiques, est prévu pour réaliser des fonctions spécifiques au type de traitement effectué par l'opérateur 40. Ces fonctions sont la concaténation de codes de longueur variable pour fournir une séquence de codes contigus, l'extraction de codes de longueur variable d'une séquence de codes contigus, et le calcul d'une signature sur une séquence de bits. En prévoyant un microprocesseur d'usage général classique complété par un module câblé prévu pour réaliser ces trois fonctions à F l'exécution d'instructions dédiées respectives, la puissance du microprocesseur est significativement réduite. REVENDICATONS 1. Système de codage d' images animées comprenant - un opérateur d'estimation de mouvement (14) - un opérateur de codage (18) destiné à recevoir un macrobloc courant et un macrobloc prédicteur correspondant - un opérateur de reconstruction (26) destiné à recevoir le macrobloc courant traité par l'opérateur de codage et le macrobloc prédicteur ; et - une mémoire principale externe (12) associée à des moyens (42, 44) pour stocker dans la mémoire principale des données transitant d'un opérateur vers un autre caractérisé en ce qu'il comprend une mémoire auxiliaire (32) associée à des moyens de commande (42) pour stocker temporairement dans la mémoire auxiliaire des macroblocs utilisés par au moins un opérateur dans un intervalle de temps prédéterminé court par rapport au temps de traitement d'une image. 2. Système de codage selon la revendication 1, caractérisé en ce que la mémoire auxiliaire (32) stocke un premier groupe de macroblocs provenant d'une image capturée (12a), chaque macrobloc de ce premier groupe étant utilisé successivement par l'opérateur d'estimation de mouvement (14) et par l'opérateur de codage (18). 3. Système de codage selon la revendication 1, caractérisé en ce que la mémoire auxiliaire (32) stocke un deuxième groupe de macroblocs, chaque macrobloc de ce deuxième groupe étant un macrobloc prédicteur utilisé successivement par l'opéra- teur de codage (18) et par l'opérateur de reconstruction (26). 4. Système de codage selon la revendication 3, dans lequel F l'opérateur de reconstruction (26) et un opérateur de calcul de macrobloc prédicteur (20) sont communs au système de codage et à un système de décodage d'images animées indépendantes de celles traitées par le système de codage, caractérisé en ce que la mémoire auxiliaire (32) stocke temporairement tout macrobloc prédicteur fourni par l'opérateur de calcul de prédicteur (20) jusqu'à son utilisation par l'opérateur de reconstruction (26). 5. Système de codage d'images selon 1 'une quelconque des revendications 1 à 4, caractérisé en ce qu' il comprend - un bus de données (Dbus) et un bus de commande (Cbus) reliés aux opérateurs, chaque opérateur étant prévu pour effectuer un traitement déterminé par une instruction et étant susceptible d'émettre une requête de commande pour recevoir une instruction par le bus de commande et d'émettre une requête de transfert en réponse à un acquittement de la requête de commande, pour recevoir ou fournir par le bus de données des données en cours de traitement; - un contrôleur mémoire (42) pour arbitrer les requêtes de transfert et gérer les transferts de données sur le bus de données entre les opérateurs, la mémoire principale (12), non connectée au bus de données, et la mémoire auxiliaire (32), couplée au bus de données ; et - un séquenceur (44) pour arbitrer les requêtes de commande, déterminer des instructions à fournir aux opérateurs et gérer le transfert de ces instructions par le bus de commande. 6. Système de traitement selon la revendication 5, caractérisé en ce que des opérateurs émettent des requêtes de commande pour fournir des paramètres sur le bus de commande (Cbus), le séquenceur (44) étant prévu pour lire ces paramètres et déterminer en fonction de oeux-ci une instruction à fournir à un opérateur. 7. Système de traitement selon la revendication 6, caractérisé en ce que le contrôleur mémoire (42) est relié au bus de commande pour recevoir du séquenceur (44), avant un acquittement d'une requête de transfert, une instruction indiquant une zone mémoire dans laquelle le contrôleur mémoire accède aux données à échanger par le bus de données (Dbus) avec l'opérateur ayant émis la requête de transfert. 8. Système de codage selon la revendication 7, caractérisé en ce que, pour effectuer un transfert de données entre un opérateur et la mémoire principale (12), le contrôleur mémoire place sur le bus de données (Dbus) une adresse spécifique à laquelle un opérateur correspondant répond en lisant les données fournies par le contrôleur mémoire (42) sur le bus de données à partir de la mémoire principale ou en plaçant des données sur le bus de données qui sont transférées par le contrôleur mémoire vers la mémoire principale. 9. Système de codage selon la revendication 8, caractérisé en ce que la mémoire auxiliaire (32) est associée à une interface avec les bus de données et de commande, cette interface étant prévue pour être activée par le contrôleur mémoire (42) afin d'opérer des transferts de données entre un opérateur et la mémoire auxiliaire à la place du contrôleur mémoire. 10. Système de codage selon la revendication 9, caractérisé en ce que ladite interface est prévue pour recevoir, en tant qu' instruction du séquenceur (44), un numéro (50) de macrobloc et à transférer les mots successifs du macrobloc correspondant entre la mémoire auxiliaire (32) et le bus de données (Dbus) à la présentation par le contrôleur mémoire d'une adresse spécifique et de signaux de lecture/écriture sur le bus de données.