FR 2787669 A1 20000623 FR 9816221 A 19981222 L'invention concerne un procédé d'adressage pour la mémorisation de données dans des mémoires de type SDRAM. Les traitements numériques vidéo nécessitent de pouvoir stocker en mémoire des images vidéo. Deux types de mémoires sont couramment utilisés: - des mémoires statiques à accès aléatoire ou Static Random Access Memory en anglais (SRAM). Les zones de ces mémoires sont directement accessibles à partir du bus d'adresse. - des mémoires dynamiques à accès aléatoire, Dynamic Random Access Memory (DRAM) en anglais, ou, si elles sont synchrones, Synchronous Dynamic Random Access Memory (SDRAM). La mémoire dynamique est répartie en pages et un accès à une nouvelle page correspondant à un changement de page nécessite un temps accès appelé "time penalty" en anglais. L'adresse mémoire est composée d'une première partie appelée adresse page ou "row address" et d'une deuxième partie appelée adresse case ou "column address". Les termes anglais ici mentionnés sont les termes couramment utilisés dans les fiches techniques de composants de type DRAM ou SDRAM. Des applications de traitement vidéo, de plus en plus courantes, nécessitent d'accéder à des blocs d'images, c'est à dire à un ensemble de pixels d'une image. C'est le cas par exemple de la compression de données vidéo numérique selon la norme MPEG, acronyme de l'appellation anglaise Motion Picture Expert Group, o la taille élémentaire de codage est un bloc d'image constituant un macrobloc. Lors de l'estimation de mouvement, un macrobloc d'image courant est comparé à des macroblocs d'image reconstruite et mémorisés dans une mémoire de type SDRAM pour déterminer le macrobloc reconstruit permettant la meilleure corrélation avec le macrobloc d'image courant. Dans la norme MPEG, les macroblocs sont des ensembles constitués de quatre blocs de 8 x 8 éléments de données de luminance et, 2 2787669 par exemple pour le format 4: 2: 0, de deux blocs de 8 x 8 éléments de données de chrominance, issus d'une section de 16 x 16 éléments de la composante de luminance de l'image. En fait, les calculs d'estimation de mouvement sont effectués sur les seules valeurs de luminance. Les blocs considérés sont alors les seuls blocs de luminance de taille globale 16 x 16. Ces blocs sont mémorisés sous la forme de blocs de 16 pixels x 8 lignes, les blocs luminance de taille globale 16 x 16 étant préalablement séparés en deux blocs de 16 pixels x 8 lignes. Ces blocs correspondent à un premier bloc de la trame supérieure (upper block en anglais) et un deuxième bloc de la trame inférieure (lower block en anglais) en mode image regroupant deux trames (frame picture) ou bien à un premier bloc regroupant les 8 premières lignes (upper block) et un deuxième bloc regroupant les 8 lignes suivantes (lower block) d'une même trame en mode trame (field picture). Ces blocs luminance de 16 pixels x 8 lignes sont appelés, par la suite, demi macroblocs de luminance ou demi macroblocs pour indiquer qu'ils regroupent 2 blocs de luminance de 8 pixels x 8 lignes, le terme macrobloc de luminance étant utilisé pour désigner, dans la norme MPEG, les 4 blocs de luminance. Il est généralement nécessaire de récupérer, de la mémoire, des blocs d'image de taille supérieure à ces blocs de 16 pixels x 8 lignes. La taille des blocs récupérés est en fait définie par l'application. Par exemple, le calcul des vecteurs mouvement se fait avec une résolution d'un demi pixel nécessitant de traiter des blocs d'image ayant une ligne et une colonne supplémentaire, c'est à dire de dimension 17 pixels x 9 lignes. Un autre exemple concerne les fenêtres de recherche dans l'image reconstruite, dans lesquelles s'effectue la corrélation des blocs, et qui ont des dimensions plus ou moins importantes selon les procédés utilisés pour l'estimation de mouvement. Pour un procédé désignant, dans une première étape, un emplacement d'une fenêtre de recherche à partir d'un vecteur mouvement, il est généralement nécessaire, dans une deuxième étape, d'affiner la recherche pour effectuer un ajustement local, cet affinage se faisant sur une fenêtre de petite dimension. Dans un exemple, ces fenêtres de recherche ont une dimension de 24 x 12, correspondant à une 3 2787669 excursion horizontale de + 4 et une excursion verticale de + 2 pour des blocs de 16 x 8 pixels. Le temps d'accès à l'ensemble d'un bloc de taille supérieure n'est généralement pas optimisé, nécessitant l'accès à plusieurs pages de la mémoire SDRAM pour lire ou écrire les valeurs de pixels constituant ce bloc. La figure 1 représente des macroblocs de luminance de taille 16 x 16, un premier macrobloc 16 x 16 de luminance 1 et un dernier macrobloc 16 x 16 de luminance 2 d'une même rangée horizontale, c'est à dire d'une succession horizontale de macroblocs sur une largeur d'image. Dans le cas général, une rangée de macroblocs correspond à une tranche (ou slice en anglais), telle que définie dans la norme MPEG. Par la suite, le terme rangée sera plus particulièrement utilisé pour définir une succession de blocs ou de demi macroblocs sur une largeur d'image, le terme tranche étant réservé aux macroblocs. Sur l'axe des abscisses sont indiqués les numéros de pixels et sur l'axe des ordonnées sont indiqués les numéros de lignes. 16 lignes vidéo sur une largeur d'image de 720 pixels correspondent à 45 macroblocs de 16 pixels (720:16). Les demi macroblocs sont mémorisés à la suite les uns des autres selon un balayage de type télévision, comme indiqué ci-après. La figure 2 représente des pages mémoires 4, 5, 6, 8 telles qu'elles sont successivement adressées lors de la mémorisation des demi macroblocs. Comme indiqué précédemment, les macroblocs 16 x 16 sont mémorisés après séparation en deux parties, les blocs supérieurs ou "upper blocks" et les blocs inférieurs ou "lower blocks". Si les blocs supérieurs correspondent à une trame et les blocs inférieurs à la trame suivante, c'est à dire en mode image, les blocs supérieurs sont mémorisés à la suite dans un espace mémoire et les blocs inférieurs à la suite dans un autre espace mémoire, chaque espace mémoire correspondant ainsi à une trame. Si les blocs supérieurs et inférieurs correspondent à une même trame, c'est à dire en mode trame, ils sont mémorisés à la suite, c'est à dire d'abord les blocs supérieurs d'une rangée (de demi macroblocs) puis les 4 -2787669 blocs inférieurs correspondant à la rangée suivante. La trame suivante est mémorisée dans un autre espace mémoire. Le procédé de mémorisation est décrit pour le mode trame et peut être généralisé sans difficulté au mode image. Il est appliqué à chacun des espaces mémoire, pris séparément, en considérant, pour chacun d'eux, les seuls demi-macroblocs qui y sont mémorisés. Une page 4 peut mémoriser, dans notre exemple, 8 demi macroblocs MB référencés 3. La mémorisation des 8 demi macroblocs MB suivants est effectuée dans la page suivante 5 et ainsi de suite. Il y a donc, tous les 8 demi macroblocs, un changement ou saut de page 7 appelé "page miss" dans la littérature technique. Le demi macrobloc n 45 qui correspond à la fin de la première rangée est mémorisé en milieu d'une page référencée 6, plus exactement comme 5ième demi macrobloc parmi les 8 demi macroblocs de la page. Le demi macrobloc suivant, qui correspond au demi macrobloc en début de la deuxième rangée de la trame est mémorisé en début d'une nouvelle page 8 dans la mémoire, la mémorisation en début de page d'un demi macrobloc de début de rangée étant la solution la plus simple pour gérer les adresses. La figure 3 montre les inconvénients d'un tel art antérieur. L'espace mémoire est représenté de manière schématique en fonction de la taille des demi macroblocs 13 mémorisés. Les traits 12 représentés en gras correspondent aux frontières de pages, pages de dimension 8 blocs de 16 x 8 pixels. Trois pages complètes superposées sont représentées correspondant à des groupes de demi macroblocs superposés de trois rangées successives dans la trame. Devant accéder à des blocs d'image de dimension supérieure à celle des demi macroblocs mémorisés, il est nécessaire d'accéder à plusieurs pages pour lire un bloc d'image. Ainsi, I'accès au bloc de 17 lignes x 9 pixels référencé 9 nécessite 4 changements de page, I'accès au bloc 10 de même dimension, 2 changements de page et l'accès au bloc 11 de dimension 24 lignes x 12 pixels, 6 changements de page. Il est tenu compte, dans ce calcul, du premier changement de page qu'il est nécessaire d'effectuer, simplement pour accéder au bloc. 2787669 Dans cette configuration, le nombre maximum de changements de page pour un bloc de dimension 17 x 9 est 4, le nombre maximum de changements de page pour un bloc de dimension 24 x 12 est 6. Le dispositif d'écriture/lecture de la mémoire doit être configuré de manière à tenir compte du nombre maximum de changements de page possible. Ainsi, plus ce nombre est important, plus les temps d'accès, même pour un accès à une seule page, sont importants. Ces changements de page ou plus exactement ce nombre maximum de changements de page possible nécessite une configuration du système qui pénalise le temps accès aux données mémorisées et qui diminue donc la bande passante du bus mémoire, bande passante qui correspond au nombre de pixels accessible dans une durée donnée. Un changement de page nécessite un certain nombre de cycles d'horloge, réduisant par là-même le temps accès. L'invention a pour but de pallier les inconvénients précités. A cet effet, I'invention a pour objet un procédé de mémorisation de données vidéo numériques d'une image, I'image étant découpée en blocs d'image (h, v) constitués de v lignes de h pixels, I'ensemble des blocs sur une largeur d'image constituant une rangée, les données étant mémorisées par blocs d'images successifs selon un ordre correspondant à un balayage de type télévision, dans des pages successives d'une mémoire vive dynamique à accès aléatoire, pour la lecture de blocs d'image (H, V) constitués de V lignes de H pixels, caractérisé en ce que le décalage horizontal DI, I+a, en nombre de blocs (h, v), de la frontière d'une page correspondant à une rangée quelconque I de l'image par rapport à la frontière d'une page correspondant à une rangée I + a est égal à: Dj, i+a = a D, V a entier positif inférieur à RM = INT [(V - 2) / v] + 2, (INT correspondant à la partie entière de la division) la valeur D, qui correspond au décalage entre deux rangées successives, étant choisie telle que: D> (BM-1), avec BM = INT [(H - 2) / h] + 2, Selon un mode particulier de mise en oeuvre, le procédé est caractérisé en ce que le décalage est obtenu en laissant vides, dans la page 6 2787669 mémorisant les derniers blocs d'une rangée, des espaces mémoire correspondant à un ou plusieurs blocs (h, v). L'invention concerne également un procédé d'estimation de mouvement mémorisant des blocs (h, v) de dimensions h, v pour obtenir une image reconstruite dans une mémoire et réalisant une comparaison d'un bloc d'une image courante à des blocs (H, V) de dimension H, V de l'image reconstruite mémorisée, caractérisé en ce que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon un des procédés précédemment décrits. L'invention concerne également un procédé de corrélation effectuant une mémorisation de blocs d'image (h, v) de dimensions h, v pour obtenir une image reconstruite dans une mémoire, une lecture d'une fenêtre de recherche (H, V) de l'image reconstruite de dimension H, V pour réaliser une corrélation d'un bloc d'une image courante avec un bloc d'image se trouvant dans la fenêtre de recherche, caractérisé en ce que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon un des procédés précédemment décrits. L'invention concerne aussi un procédé de prédiction d'un bloc d'image dans une image reconstruite effectuant une mémorisation de blocs d'image (h, v) de dimension h, v pour obtenir une image reconstruite, une prédiction à partir d'un vecteur mouvement pour définir un bloc de dimension (H, V) dans l'image reconstruite, une lecture de ce bloc (H, V), caractérisé en ce que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon un des procédés précédemment décrits. Grâce à l'invention, le nombre de changements de pages maximum est limité et en conséquence la bande passante est améliorée. Le temps accès à un bloc de pixels est optimisé. Le fait de minimiser le temps d'utilisation du bus mémoire, du fait de la diminution du temps de transfert global est particulièrement avantageux, la bande passante étant une limitation importante dans la performance des dispositifs à accès mémoire mis en oeuvre aujourd'hui. 7 2787669 Les caractéristiques et avantages de la présente invention ressortiront mieux de la description suivante, donnée à titre d'exemple et en référence aux figures annexées o: - la figure 1 représente un premier et dernier macrobloc d'une tranche de macroblocs d'une image, - la figure 2 représente la mémorisation de demi macroblocs dans une mémoire, selon l'art antérieur, - la figure 3 représente des blocs à lire dans une mémoire, configurée selon l'art antérieur, - la figure 4 représente une configuration de l'espace mémoire selon l'invention, - la figure 5 représente des blocs à lire dans une mémoire configurée selon l'invention, - la figure 6 représente la mémorisation de demi macroblocs dans une mémoire selon l'invention. La figure 4 représente une configuration de l'espace mémoire selon l'invention. La dimension des pages est, en reprenant l'exemple donné précédemment, de 8 demi macroblocs de 16 x 8 pixels. D'une rangée de demi macroblocs à celle de dessous, les frontières verticales 14 des pages, représentées en traits gras et correspondant aux sauts de pages, sont décalées d'un espace égal à 2 demi macroblocs (ou à deux macroblocs puisque la largeur est la même). Ainsi, les demi macroblocs d'une trame se trouvant en dessous du premier et deuxième demi macrobloc d'une page appartiennent à une autre page. La figure 5 est à rapprocher de la figure 3 et représente les mêmes blocs d'image 9, 10, 11 dans la mémoire. Grâce au décalage des frontières des pages, I'accès au bloc de 17 lignes x 9 pixels référencé 9 nécessite 3 changements de page au lieu de 4, I'accès au bloc 10 de même dimension, 2 changements de page et l'accès au bloc 11 de dimension 24 lignes x 12 pixels, 4 changements de page au lieu de 6. Dans cette configuration, le nombre maximum de changements de page pour un bloc de dimension 17 x 9 est 3, le nombre maximum de 8 2787669 changements de page pour un bloc de dimension 24 x 12 est 4. Ainsi, grâce à cette configuration, le nombre de changements de pages peut être réduit de deux, soit un gain de 12 cycles d'horloges mémoire dans notre application. Le décalage réalisé est en fait fonction des dimensions des blocs d'image à lire, relativement à celles des blocs mémorisés. Les blocs mémorisés sont de dimension h, v, c'est à dire constitués de v lignes de h pixels et sont appelés blocs (h, v). Les blocs à lire sont des blocs de dimension H, V, c'est à dire constitués de V lignes de H pixels et sont appelés blocs (H, V). Le nombre maximum de rangées de blocs, dans la mémoire, sur lesquelles peut être réparti un bloc (H, V) de dimension verticale V est: RM = INT [(V- 2)/v] + 2 INT (de INTeger) représente la partie entière de la division. Le nombre maximum de blocs, en horizontal, sur lesquels peut être réparti un bloc (H, V) de dimension horizontale H est: BM = INT [(H - 2) / h] + 2 Les contraintes à observer sur le décalage D horizontal (en nombre de blocs mémorisés) des pages constituant la mémoire sont, entre deux rangées de blocs successives: D > (BM - 1) Par exemple, pour le bloc (H, V) référencé 9 ou 10, réparti, en vertical, au maximum sur deux rangées successives (RM = 2) et dont la dimension H est comprise entre 1 et h+1, c'est à dire un bloc réparti en horizontal sur 2 blocs (h, v) au maximum (BM = 2), le décalage D est pris égal à 1. Lorsque un bloc (H, V) peut être réparti sur plusieurs rangées, la contrainte est généralisée au nombre maximum de rangées RM calculées pour ce bloc: Soit D la valeur du décalage choisi entre deux rangées successives, cette valeur satisfaisant l'inégalité: D > (BM - 1) 9 2787669 Soit a une variable entière pouvant évoluer entre 1 et RM-1, la contrainte peut alors s'écrire: D,+a = a D, V a, RM> a > 1. avec Dl I+a le décalage entre une rangée quelconque I et une rangée I + a. Par exemple, pour le bloc (H, V) référencé 11, réparti, en vertical, sur trois rangées successives au maximum (RM = 3) et dont la dimension H est comprise entre h+2 et 2h+1, c'est à dire un bloc réparti en horizontal sur 3 blocs (h, v) au maximum (BM =3), le décalage DI, 1.1 est égal à 2 et le décalage D, 1+2 est égal à 4. Pour réaliser un tel décalage, des zones non utilisées sont créées dans l'espace mémoire. La figure 6, qui est à rapprocher de la figure 2 représente, sur une ligne continue, une succession de pages mémoire 4, 5, 6, 8 telles qu'elles sont adressées lors de la mémorisation des demi macroblocs. Lorsqu'on arrive au dernier demi macrobloc de la première rangée, qui se trouve être le cinquième demi macrobloc mémorisé dans la page référencée 6, une zone mémoire 15 de dimension correspondant à un demi macrobloc est laissée vide afin d'enregistrer le premier et deuxième demi macroblocs de la rangée suivante au septième et huitième emplacement de demi macrobloc dans la page. Ainsi la page suivante 8 enregistre le troisième demi macrobloc de cette rangée suivante. Le demi macrobloc se trouvant, dans la trame, au dessus de ce premier demi macrobloc dans la page 8, a, quant à lui, été mémorisé comme troisième demi macrobloc dans la page correspondante 3 de la rangée supérieure. Un décalage de trois demi macroblocs correspondrait à aucun espace mémoire laissé libre, un décalage d'un seul demi macrobloc correspondrait à deux espaces mémoire de dimension le demi macrobloc. D'une manière générale, le nombre de demi macroblocs mémorisés dans la première page de la rangée suivante, la rangée précédente commençant par une nouvelle page, correspond à ce décalage, un nombre de 8 demi macroblocs correspondant à aucun décalage. La description a été faite à partir des demi macroblocs mémorisés. Il s'agit bien sûr d'un exemple de réalisation. et les demi 2787669 macroblocs peuvent être remplacés par tout type de blocs d'image, de toute dimension, sans que le procédé sorte du domaine de l'invention. La mémorisation a été décrite au niveau des trames d'une image. Elle peut être effectuée au niveau de l'image complète, par exemple issue d'un balayage progressif. Le découpage en blocs d'image se fait alors à partir de l'image complète et les blocs d'image sont mémorisés dans un seul espace mémoire. Les applications de la présente invention concernent par exemple l'accès à un bloc prédit, à partir d'un vecteur mouvement, dans une image reconstruite, I'accès aux fenêtres de recherche pour la corrélation avec un bloc courant lors du calcul de l'estimation de mouvement. Les blocs mémorisés peuvent être des blocs luminance faisant partie des macroblocs définis dans la norme MPEG. Il peut également s'agir des seuls blocs de chrominance ou de l'ensemble des blocs luminance et chrominance. L'invention peut également s'appliquer à la mémorisation des blocs reconstruits dans un décodeur MPEG. Les blocs prédits à lire dans la mémoire et définis par les vecteurs mouvement, sont généralement de dimension supérieure aux blocs mémorisés, par exemple lorsque le vecteur mouvement à une précision au demi-pixel près. Ces blocs lus sont ensuite redimensionnés par interpolation pour le calcul du bloc d'image courant. 11 2787669 REVENDICATIONS 1 Procédé de mémorisation de données vidéo numériques d'une image, I'image étant découpée en blocs d'image (h, v) (1, 2) constitués de v lignes de h pixels, I'ensemble des blocs sur une largeur d'image constituant une rangée, les données étant mémorisées par blocs d'images successifs (3, 13) selon un ordre correspondant à un balayage de type télévision, dans des pages successives (4, 5, 6, 8) d'une mémoire vive dynamique à accès aléatoire, pour la lecture de blocs d'image (H, V) (9, 10, 11) constitués de V lignes de H pixels, caractérisé en ce que le décalage horizontal DI, +a, en nombre de blocs (h, v), de la frontière d'une page correspondant à une rangée quelconque I de l'image par rapport a la frontière d'une page correspondant à une rangée I + a est égal à: D, I+.a = a D, V a entier positif inférieur à RM = INT [(V - 2) / v] + 2, (INT correspondant à la partie entière de la division) la valeur D, qui correspond au décalage entre deux rangées successives étant choisie telle que: D> (BM-1), avec BM = INT [(H - 2) / h] + 2, 2 Procédé selon la revendication 1, caractérisé en ce que le décalage est obtenu en laissant vides, dans la page mémorisant les derniers blocs d'une rangée (6), des espaces mémoire (15) correspondant à un ou plusieurs blocs (h, v). 3 Procédé selon la revendication 1 ou 2, caractérisé en ce que les blocs (h, v) sont partie des macroblocs définis dans la norme MPEG. 4 Procédé selon l'une des revendications précédentes, caractérisé en ce l'image est une trame paire ou impaire. Procédé d'estimation de mouvement mémorisant des blocs (h, v) de dimensions h, v pour obtenir une image reconstruite dans une mémoire et réalisant une comparaison d'un bloc d'une image courante à des blocs (H, V) de dimension H, V de l'image reconstruite mémorisée, caractérisé en ce 12 2787669 que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon le procédé de la revendication 1 ou 2. 6 Procédé de corrélation effectuant une mémorisation de blocs d'image (h, v) de dimensions h, v pour obtenir une image reconstruite dans une mémoire, une lecture d'une fenêtre de recherche (H, V) de l'image reconstruite de dimension H, V pour réaliser une corrélation d'un bloc d'une image courante avec un bloc d'image se trouvant dans la fenêtre de recherche, caractérisé en ce que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon le procédé de la revendication 1 ou2. 7 Procédé de prédiction d'un bloc d'image dans une image reconstruite effectuant une mémorisation de blocs d'image (h, v) de dimension h, v pour obtenir une image reconstruite, une prédiction à partir d'un vecteur mouvement pour définir un bloc de dimension (H, V) dans l'image reconstruite, une lecture de ce bloc (H, V), caractérisé en ce que les blocs (h, v) sont mémorisés dans les pages d'une mémoire de type SDRAM selon le procédé de la revendication 1 ou 2.