Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
PROCESSING DEVICE FOR EXTRACTING A SET OF DATA FROM A DATA WORD, AND CORRESPONDING ELECTRONIC CIRCUIT AND DATA EXTRACTION METHOD
Document Type and Number:
WIPO Patent Application WO/2011/121136
Kind Code:
A1
Abstract:
The invention relates to a processing device (500) for extracting a set of data from a data word (D1, D2, D3, D4), the device including an arithmetic and logic unit (50). The arithmetic and logic unit (50) includes extraction means (504) for processing an extraction command, the operands of which are: the data word, position information relating to the position of the data set within the data word and size information relating to the size of the data set, the extraction means (504) including: a first input (E1) receiving the data word; a second input (E2) receiving the position information and the size information; a third input (E3) receiving the extraction command, the extraction means (504) enabling the data set to be obtained by means of shifting the data word in accordance with the position and size information.

Inventors:
SIRET NICOLAS (FR)
NEZAN JEAN-FRANCOIS (FR)
RAULET MICKAEL (FR)
RATHAY AIMAD (FR)
Application Number:
PCT/EP2011/055217
Publication Date:
October 06, 2011
Filing Date:
April 04, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
LEAD TECH DESIGN (FR)
INST NAT SCIENCES APPLIQ (FR)
SIRET NICOLAS (FR)
NEZAN JEAN-FRANCOIS (FR)
RAULET MICKAEL (FR)
RATHAY AIMAD (FR)
International Classes:
H04N7/26; H03M7/40; H04N7/50
Domestic Patent References:
WO2008034094A22008-03-20
Foreign References:
US20040021591A12004-02-05
US20050168362A12005-08-04
US5986588A1999-11-16
EP0814614A21997-12-29
Other References:
None
Attorney, Agent or Firm:
GUENE, Patrick (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Dispositif de traitement (500) permettant d'extraire un ensemble de données d'un mot de données (Dl, D2, D3, D4), le dispositif comprenant une unité arithmétique et logique (50),

caractérisé en ce que l'unité arithmétique et logique (50) comprend des moyens d'extraction (504) permettant de traiter une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données, lesdits moyens d'extraction (504) comprenant :

- une première entrée (El) recevant ledit mot de données ;

une deuxième entrée (E2) recevant ladite information de position et ladite information de taille ;

une troisième entrée (E3) recevant ladite instruction d'extraction,

lesdits moyens d'extraction (504) permettant d'obtenir l'ensemble de données par décalage du mot de données, en fonction desdites informations de position et de taille.

2. Dispositif selon la revendication 1, caractérisé en ce que les moyens d'extraction (504) comprennent :

des premiers moyens de décalage (53) :

o possédant deux entrées, recevant respectivement le mot de données et ladite information de position ;

o délivrant en sortie un mot intermédiaire dans lequel les données sont organisées selon une orientation prédéterminée, le mot intermédiaire étant obtenu par le décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;

des seconds moyens de décalage (54) :

o possédant deux entrées, recevant respectivement ladite information de taille et le mot intermédiaire ;

o délivrant en sortie l'ensemble de données, ledit ensemble de données étant obtenu par le décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.

3. Dispositif selon la revendication 2, caractérisé en ce que ladite orientation prédéterminée est du type mot de poids fort en tête.

4. Dispositif selon l'une quelconque des revendications 2 et 3, caractérisé en ce que les moyens d'extraction (504) comprennent un registre local (52) possédant :

une entrée connectée à la sortie des premiers moyens de décalage (53) ;

une sortie connectée à l'une des entrées des seconds moyens de décalage (54), de sorte que les premiers moyens de décalage (53) peuvent transférer le mot intermédiaire dans le registre local (52), et les seconds moyens de décalage (54) peuvent lire le mot intermédiaire contenu dans le registre local (52).

5. Dispositif selon l'une quelconque des revendications 2 à 4, caractérisé en ce qu'il comprend un registre opérande (502) comprenant :

une première zone de stockage contenant ladite information de position, ladite première zone de stockage étant connectée à l'une des entrées des premiers moyens de décalage (53), de sorte que les premiers moyens de décalage (53) peuvent lire ladite information de position contenue dans ladite première zone de stockage ;

une deuxième zone de stockage contenant ladite information de taille, ladite deuxième zone de stockage étant connectée à l'une des entrées desdits seconds moyens de décalage (54), de sorte que les seconds moyens de décalage (54) peuvent lire ladite information de taille contenue dans ladite deuxième zone de stockage.

6. Dispositif selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ledit mot de données est issu d'un flux multimédia.

7. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ledit dispositif est un processeur.

8. Circuit électronique, caractérisé en ce qu'il comprend un dispositif de traitement selon l'une quelconque des revendications 1 à 7.

9. Procédé d'extraction par un dispositif de traitement (500) d'un ensemble de données d'un mot de données (Dl, D2, D3, D4), le dispositif comprenant une unité arithmétique et logique (50),

caractérisé en ce que l'unité arithmétique et logique effectue des étapes consistant à : obtenir (606) une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données ;

obtenir (610, 61 1 , 612, 613) l'ensemble de données par décalage du mot de données obtenu, en fonction desdites informations de position et de taille obtenues.

10. Procédé selon la revendication 9, caractérisé en ce que ladite étape consistant à obtenir l'ensemble de données comprend des étapes consistant à :

obtenir (610, 611) un mot intermédiaire, dans lequel les données sont organisées selon une orientation prédéterminée, par décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;

obtenir (612, 613) l ' ens emb le de donné es p ar dé calage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.

Description:
Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants

1. DOMAINE DE L'INVENTION

Le domaine de l'invention est celui du traitement syntaxique de flux de données (« parsing » en anglais). Un traitement syntaxique consiste à extraire un ensemble de données d'un flux de données.

L'invention s'applique notamment, mais non exclusivement, à l'extraction de données d'un flux binaire multimédia, et trouve notamment des applications dans le domaine du décodage de contenus multimédia. Une telle extraction permet, par exemple, d'extraire un ensemble (ou bloc) de données caractéristiques (« features » en anglais) d'un flux vidéo. On entend par données caractéristiques des données permettant de définir le contenu de la vidéo transportée par le flux. Généralement, la taille du bloc de données caractéristiques à extraire et la position de ce bloc dans le flux est définie par la norme selon laquelle le flux est compressé.

On note que, dans toute la suite du document, on entend par contenu multimédia un flux binaire de type audio, vidéo, images, communication, etc.

Typiquement, une image numérique comprend des blocs rectangulaires de pixels (aussi appelés macro-blocs), ces blocs étant répartis en lignes et en colonnes. Chaque bloc rectangulaire possède une largeur de w pixels et une hauteur de h pixels. Dans le standard H.264/AVC (ITU-T H.264, ISO/IEC 14496-10), par exemple, les images sont découpées soit en blocs de 16x16 pixels, soit en blocs de 16x32 (mode MBAFF).

Traditionnellement, le codage ou décodage d'une image consiste à traiter l'ensemble de ses blocs, séquentiellement ligne par ligne, de gauche à droite sur une même ligne, et de haut en bas d'une ligne à l'autre.

L'invention s'applique notamment, mais non exclusivement, au décodage d'une séquence vidéo formée d'images successives conforme à une norme de compression/décompression telle que, par exemple, la norme MPEG-4 Video, définie dans le document de normalisation « ISO/IEC FDIS 23002-4: 2009, Information technology - MPEG video technologies - Part 4 ». D'une façon générale, la présente invention peut s'appliquer dans tous les cas où il existe un contexte d'extraction de données caractéristiques d'un flux de données.

2. ARRIÈRE-PLAN TECHNOLOGIQUE

Dans l'état de la technique, il existe plusieurs types d'architectures qui permettent d'effectuer des opérations d'extraction de données caractéristiques d'un flux de données.

Un premier type d'architecture connu repose sur l'utilisation combinée d'un processeur et d'un coprocesseur. De manière générale, le processeur a un rôle d'unité de traitement maître, il est chargé du contrôle global de l'application, ainsi que d'un certain nombre de tâches de décision et de calcul. Le coprocesseur a un rôle d'unité de traitement esclave, il est utilisé par le processeur pour les calculs les plus complexes.

Ce premier type d'architecture connu présente l'inconvénient d'être encombrant et coûteux.

De plus, il est nécessaire de modifier le code logiciel du processeur pour tirer profit des fonctionnalités du coprocesseur.

A noter par ailleurs que dans un tel schéma processeur/coprocesseur, la communication de données entre processeur et coprocesseur peut prendre un temps non négligeable, ce qui nuit à la performance globale du système.

Un deuxième type d'architecture connu repose sur l'utilisation d'un circuit intégré spécialisé pour une application spécifique (ou « ASIC » pour « Application- Specifîc Integrated Circuit » en anglais). Un ASIC présente l'avantage d'être optimisé pour une application donnée. Bien que cette deuxième architecture connue soit performante, elle présente l'inconvénient d'être non évolutive. Ainsi, dans le cas où un ASIC a été développé pour extraire des données caractéristiques d'un flux conforme à une norme donnée, si cette norme évolue, alors Γ ASIC pourrait ne plus être adapté.

Un troisième type d'architecture connu repose sur l'utilisation d'un processeur de signal numérique (ou « DSP » pour « Digital Signal Processor » en anglais). Un DSP présente l'avantage d'être programmable. Cependant, sa consommation d'énergie est importante par rapport aux première et deuxième architectures précités.

Un quatrième type d'architecture connu repose sur l'utilisation d'un processeur dont le jeu d'instructions est adapté à une application spécifique (ou « ASIP » pour « Application Spécifie Integrated Processor » en anglais). Les ASIP sont des processeurs utilisant comme technologie d'implantation un réseau de portes programmables (ou « FPGA » pour « Field-Programmable Gâte Array » en anglais) ou un ASIC, et offrent à la fois une consommation d'énergie réduite et des possibilités d'évolution. A ce jour, il a été constaté qu'il n'existe aucun ASIP dédié à l'extraction de données caractéristiques d'un flux de données.

On décrit ci-dessous la problématique existant dans le cas d'un décodage par un processeur de type DSP d'une séquence vidéo formée d'images successives. L'invention ne se limite bien sûr pas à ce cas particulier d'application, mais présente un intérêt pour toute technique de décodage de contenus multimédia devant faire face à une problématique proche ou similaire.

On présente, en relation avec la figure 1, un exemple d'architecture classique d'un processeur.

Le processeur 1 comprend un contrôleur 10 en charge de gérer l'ensemble des traitements de décodage. Le contrôleur 10 décode une instruction stockée dans une mémoire RAM 11 pour identifier, parmi des données stockées dans une mémoire de données 15 (« Data Memory »), un ensemble de données à traiter par une unité arithmétique et logique 12 (ou « ALU » pour « Arithmetic Logic Unit » en anglais). Le contrôleur 10 commande un gestionnaire d'accès mémoire 14 (« Memory Access ») pour récupérer dans la mémoire de données 15 l'ensemble de données à traiter. Cet ensemble de données à traiter comprend des données caractéristiques à extraire. Ensuite, le gestionnaire d'accès mémoire 14 transfère les données à traiter dans des premier et deuxième registres compris dans un bloc de registres 13. L'ALU 12 traite les données contenues dans les premier et deuxième registres selon des instructions de traitement stockées dans la mémoire RAM 11. Ainsi, l'ALU 12 extrait les données caractéristiques depuis les données à traiter. L'ALU 12 enregistre les données caractéristiques extraites dans le premier registre. Le gestionnaire d'accès mémoire 14 transfère les données caractéristiques du premier registre vers la mémoire de données 15. Les données caractéristiques sont ensuite décodées.

La figure 2 présente les étapes d'un exemple d'algorithme de décodage d'un flux vidéo mis en œuvre par le processeur 1 (décrit en relation avec la figure 1). Après une étape d'initialisation (100), pour chaque image transportée par le flux vidéo, le processeur effectue les étapes 101 à 104 décrites ci-après.

Le processeur effectue une première étape d'extraction (101) depuis le flux vidéo d'un premier ensemble de données caractéristiques (« start-code ») permettant de définir le traitement à réaliser sur l'image. Le processeur effectue ensuite une deuxième étape d'extraction (102) depuis le flux vidéo d'un deuxième ensemble de données caractéristiques (« Video Object Layer ») permettant notamment de définir la taille et le type de codage de l'image en cours de traitement. Puis, le processeur effectue une troisième étape d'extraction (103) depuis le flux vidéo d'un troisième ensemble de données caractéristiques (« Video Object Plane ») permettant de définir les macro-blocs de l'image. Enfin, le processeur décode l'image à partir des données caractéristiques extraites.

On présente maintenant, en relation avec la figure 3, les étapes d'un exemple d'algorithme d'extraction de données mis en œuvre par le processeur 1 pendant chacune des première (101), deuxième (102) et troisième (E103) étapes d'extractions. La figure 4 illustre un exemple d'évolution des contenus des premier et deuxième registres du processeur.

Généralement, un tel algorithme d'extraction est programmé en logiciel. Cet algorithme est stocké, par exemple, dans une mémoire RAM externe au processeur.

Dans la suite de la description, on suppose à titre d'exemple que la taille de chaque registre est de 32 bits. Bien entendu, dans d'autres architectures ces registres peuvent avoir des tailles différentes.

Comme illustré dans l'exemple de la figure 4, le premier registre 131 comprend un premier octet 31, un deuxième octet 32, un troisième octet 33 et un quatrième octet 34. Le deuxième registre 132 comprend un premier octet 35, un deuxième octet 36, un troisième octet 37 et un quatrième octet 38.

Après une étape d'initialisation (300), les premier 131 et deuxième 132 registres sont vides (tous les bits sont mis à « 0 »).

A l'étape 301, le gestionnaire d'accès mémoire 14 transfère des premières données Dl à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 34 du premier registre 131. A l'étape 302, il est procédé à un décalage à gauche de 24 bits du contenu du premier registre 131. De cette façon, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter.

A l'étape 303, le gestionnaire d'accès mémoire 14 transfère des deuxièmes données D2 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.

A l'étape 304, il est procédé à un décalage à gauche de 16 bits du contenu du deuxième registre 132. De cette façon, le deuxième octet 36 du deuxième registre 132 comprend les deuxièmes données D2 à traiter.

A l'étape 305, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, et le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter.

A l'étape 306, le gestionnaire d'accès mémoire 14 transfère des troisièmes données D3 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.

A l'étape 307, il est procédé à un décalage à gauche de 8 bits du contenu du deuxième registre 132. De cette façon, le troisième octet 37 du deuxième registre 132 comprend les troisièmes données D3 à traiter.

A l'étape 308, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter, et le troisième octet 33 du premier registre 131 comprend les troisièmes données D3 à traiter.

A l'étape 309, le gestionnaire d'accès mémoire 14 transfère des quatrièmes données D4 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.

A l'étape 310, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter, le troisième octet 33 du premier registre 131 comprend les troisièmes données D3 à traiter, et le quatrième octet 34 du premier registre 131 comprend les quatrièmes données D4 à traiter. Ainsi, à cette étape 310, on obtient un mot binaire (ou mot de données) de 32 bits.

Dans la suite de la description, on suppose à titre d'exemple que les données caractéristiques à extraire sont les données D3.

A l'étape 311, tous les bits du deuxième registre 132 sont initialisés avec la valeur « 1 ».

A l'étape 312, le processeur obtient la position du bloc de données caractéristiques qui doit être extrait du mot de données Dl, D2, D3 et D4 (contenu dans le premier registre 131). Puis, à cette même étape 312, il est procédé à un décalage à droite du contenu du deuxième registre 132, d'un nombre de bit(s) déterminé en fonction de la position du bloc de données caractéristiques à extraire. Comme indiqué ci-dessus, la position du bloc de données caractéristiques à extraire est définie par la norme selon laquelle le flux est compressé. Dans la suite de la description, on suppose à titre d'exemple que le début du bloc de données à extraire se situe à 16 bits à compter du début du mot de données (c'est-à-dire à compter du début du premier octet du premier registre 131). Dans l'exemple illustré par la figure 4, il est donc procédé à un décalage à droite de 16 bits du contenu du deuxième registre 132. De cette façon, les bits des premier 35 et deuxième 36 octets du deuxième registre 132 ont une valeur « 0 » et les bits des troisième 37 et quatrième 38 octets du deuxième registre 132 ont une valeur « 1 ».

A l'étape 313, l'ALU 12 effectue une opération logique de type « ET » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, les bits des premier 31 et deuxième 32 octets du premier registre 131 sont à « 0 », le troisième octet 33 du premier registre 131 comprend les troisièmes données D3, et le quatrième octet 34 du premier registre 131 comprend les quatrièmes données D4. A l'étape 314, le processeur obtient la taille du bloc de données caractéristiques qui doit être extrait. Puis, à cette même étape 314, il est procédé à un décalage à droite du contenu du premier registre 131, d'un nombre de bit(s) déterminé en fonction de la taille du bloc de données caractéristiques. Comme indiqué ci-dessus, la taille du bloc de données caractéristiques est définie par la norme selon laquelle le flux est compressé. Dans la suite de la description, on suppose à titre d'exemple que la taille du bloc de données caractéristiques est de 8 bits. Il est donc procédé à un décalage à droite de 8 bits du contenu du premier registre 131. De cette façon, les bits des premier 31, deuxième 32 et troisième 33 octets du premier registre 131 sont à « 0 », et le quatrième octet 34 du premier registre 131 comprend les troisièmes données D3. Ces troisièmes données D3 constituent le résultat de l'algorithme d'extraction.

A l'étape 315, le gestionnaire d'accès mémoire 14 transfère les troisièmes données D3 extraites vers une zone de stockage prévue à cet effet dans la mémoire de données 15.

L'inconvénient majeur lié à l'exécution par un processeur d'un algorithme d'extraction programmé en logiciel réside dans le fait que cette exécution consomme un nombre important de cycles d'horloge (et donc une consommation d'énergie accrue). Ceci est notamment dû au fait que le gestionnaire d'accès mémoire 14 effectue un nombre important d'opérations de transfert et que l'ALU 12 effectue un nombre important de décalages et d'opérations logiques.

3. OBJECTIFS DE L'INVENTION

L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique.

Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique permettant, d'extraire des données d'un flux de données, en un minimum de cycles, tout en minimisant la consommation d'énergie.

Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui soit simple à mettre en œuvre et peu coûteuse.

Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui soit adaptée à l'extraction de données caractéristiques d'un flux multimédia. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant d'optimiser les performances de décodage d'un décodeur MPEG-4.

4. EXPOSÉ DE L'INVENTION

Dans un mode de réalisation particulier de l'invention, il est proposé un dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, le dispositif comprenant une unité arithmétique et logique. L'unité arithmétique et logique est telle qu'elle comprend des moyens d'extraction permettant de traiter une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données, lesdits moyens d'extraction comprenant :

une première entrée recevant ledit mot de données ;

une deuxième entrée recevant ladite information de position et ladite information de taille ;

une troisième entrée recevant ladite instruction d'extraction,

lesdits moyens d'extraction permettant d'obtenir l'ensemble de données par décalage du mot de données, en fonction desdites informations de position et de taille.

Ainsi, il est proposé d'implémenter dans une unité arithmétique et logique un nouveau bloc matériel (moyens d'extraction) dédié à l'extraction de données. Ce nouveau bloc matériel confère à l'unité arithmétique et logique la capacité de traiter une nouvelle instruction dont les opérandes sont : le mot de données, une information de position et une information de taille. Ainsi, sur réception de cette instruction, l'unité arithmétique et logique est capable de recevoir de manière synchrone (et non plus séquentielle) le mot de données, l'information de position et l'information de taille. L'unité arithmétique et logique est donc capable d'extraire rapidement et efficacement l'ensemble de données, puisqu'il dispose de tous les paramètres (position et taille) relatifs aux opérations de décalage à effectuer sur le mot de données.

De façon avantageuse, les moyens d'extraction comprennent :

des premiers moyens de décalage : o possédant deux entrées, recevant respectivement le mot de données et ladite information de position ;

o délivrant en sortie un mot intermédiaire dans lequel les données sont organisées selon une orientation prédéterminée, le mot intermédiaire étant obtenu par le décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;

des seconds moyens de décalage :

o possédant deux entrées, recevant respectivement ladite information de taille et le mot intermédiaire ;

o délivrant en sortie l'ensemble de données, ledit ensemble de données étant obtenu par le décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.

Ainsi, il est proposé de mettre en œuvre deux niveaux de décalage permettent de traiter respectivement l'information de position et l'information de taille. Ceci permet une mise en œuvre simple et peu coûteuse des décalages (et donc de l'extraction).

Les bits du mot intermédiaire, qui résulte de l'opération de décalage effectuée au premier niveau de décalage (premiers moyens de décalage), sont organisés selon une orientation prédéterminée avant d'être transmis vers le deuxième niveau de décalage (deuxièmes moyens de décalage). Le fait d'imposer une orientation des bits dès le premier niveau de décalage permet de fiabiliser l'extraction de données.

Dans un mode de réalisation préférentiel, ladite orientation prédéterminée est du type mot de poids fort en tête.

Avantageusement, les moyens d'extraction comprennent un registre local possédant :

une entrée connectée à la sortie des premiers moyens de décalage ;

une sortie connectée à l'une des entrées des seconds moyens de décalage, de sorte que les premiers moyens de décalage peuvent transférer le mot intermédiaire dans le registre local, et les seconds moyens de décalage peuvent lire le mot intermédiaire contenu dans le registre local. Ainsi, la mise en œuvre reste simple et peu coûteuse.

Dans un mode de réalisation préférentiel, le dispositif comprend un registre opérande comprenant :

une première zone de stockage contenant ladite information de position, ladite première zone de stockage étant connectée à l'une des entrées des premiers moyens de décalage, de sorte que les premiers moyens de décalage peuvent lire ladite information de position contenue dans ladite première zone de stockage ; une deuxième zone de stockage contenant ladite information de taille, ladite deuxième zone de stockage étant connectée à l'une des entrées desdits seconds moyens de décalage, de sorte que les seconds moyens de décalage peuvent lire ladite information de taille contenue dans ladite deuxième zone de stockage. Selon une caractéristique avantageuse, ledit mot de données est issu d'un flux multimédia.

Ainsi, le dispositif de traitement selon l'invention est adapté à l'extraction de données caractéristiques d'un flux multimédia, par exemple, un flux vidéo MPEG-4.

De façon avantageuse, ledit dispositif est un processeur.

Ainsi, il est proposé un processeur ASIP dédié à l'extraction de données.

Dans un mode de réalisation particulier de l'invention, il est proposé un circuit électronique comprenant le dispositif de traitement précité.

Dans un mode de réalisation particulier de l'invention, il est proposé un procédé d'extraction par un dispositif de traitement d'un ensemble de données d'un mot de données, le dispositif comprenant une unité arithmétique et logique.

L'unité arithmétique et logique est telle qu'elle effectue des étapes consistant à : obtenir une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données ;

obtenir l'ensemble de données par décalage du mot de données obtenu, en fonction desdites informations de position et de taille obtenues.

De façon avantageuse, ladite étape consistant à obtenir l'ensemble de données comprend des étapes consistant à : obtenir un mot intermédiaire, dans lequel les données sont organisées selon une orientation prédéterminée, par décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;

- obtenir l'ensemble de données par décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.

5. LISTE DES FIGURES

D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels :

• la figure 1, commentée en relation avec l'art antérieur, illustre un exemple d'architecture classique d'un processeur ;

• la figure 2, commentée en relation avec l'art antérieur, présente un organigramme d'un algorithme de décodage d'un flux vidéo, mis en œuvre par le processeur de la figure 1 ;

• la figure 3, commentée en relation avec l'art antérieur, présente un organigramme d'un algorithme d'extraction de données, mis en œuvre par le processeur de la figure 1 ;

· la figure 4, commentée en relation avec l'art antérieur, illustre un exemple d'évolution de contenu de registres compris dans le processeur de la figure 1 ;

• la figure 5 illustre un exemple d'architecture d'un processeur selon un mode de réalisation particulier de l'invention ;

• la figure 6 représente un organigramme d'un algorithme d'extraction de données selon un mode de réalisation particulier de l'invention, mis en œuvre par le processeur de la figure 5 ;

• la figure 7 illustre un exemple d'évolution de contenu de registres compris dans le processeur de la figure 5 ;

• la figure 8 illustre un exemple d'une mémoire de données selon un mode de réalisation particulier de l'invention ; • la figure 9 illustre le nombre de cycles d'horloge consommés par un processeur selon un mode de réalisation particulier de l'invention ; et

• la figure 10 illustre le nombre d'images affichées en une seconde par un processeur selon un mode de réalisation particulier de l'invention.

6. DESCRIPTION DÉTAILLÉE

L'invention concerne un dispositif de traitement (référencé 500 sur la figure 5) dédié à l'extraction de données d'un mot de données. Il est proposé de modifier l'architecture d'une unité arithmétique et logique (référencée 50 sur la figure 5), en lui ajoutant une instruction dédiée à l'extraction de données. Cette instruction dédiée est implémentée sous forme matérielle. Elle repose sur l'utilisation de moyens de décalage et d'un registre local implémentés dans l'unité arithmétique et logique. Cette architecture permet à l'unité arithmétique et logique d'éviter d'effectuer un nombre important de décalages et d'opérations logiques. On note que cette unité arithmétique et logique modifiée peut remplacer l'unité arithmétique et logique (référencée 12 sur la figure 1) d'un processeur classique, tel que celui décrit à la figure 1. Dans ce cas, le processeur devient un processeur ASIP dédié à l'extraction de données. De plus, l'invention propose de modifier l'architecture mémoire du processeur pour permettre des accès non alignés à la mémoire. De cette façon, le mot contenant les données à extraire peut être lu en un minimum de cycles d'horloge.

On décrit désormais en relation avec la figure 5 un processeur (aussi appelé dispositif de traitement) selon un mode de réalisation particulier de l'invention.

Dans ce mode de réalisation particulier, le processeur 500 comprend :

un premier registre 501 en charge, dans un premier temps, de stocker des données à traiter (mot de données) contenant les données caractéristiques à extraire et, dans un deuxième temps, de stocker les données caractéristiques extraites. Dans un mode de réalisation particulier, ce premier registre 501 correspond au premier registre 131 de la figure 1 ;

un deuxième registre 502 en charge de stocker des informations de position et de taille relatives aux données caractéristiques à extraire. Dans un mode de réalisation particulier, ce deuxième registre 502 correspond au deuxième registre 132 de la figure 1 ;

un troisième registre 51 qui est utilisé pour charger l'information de taille dans le deuxième registre 502. Dans un mode de réalisation particulier, ce troisième registre 51 est compris dans le bloc de registres 13 de la figure 1 ; une unité arithmétique et logique 50 comprenant des moyens d'extraction 504 selon un mode de réalisation particulier de l'invention.

Les moyens d'extraction 504 comprennent :

une première entrée El, via laquelle les données à traiter sont reçues ;

une deuxième entrée E2, via laquelle les informations de position et de taille sont reçues ;

une troisième entrée E3, via laquelle une instruction d'extraction est reçue. Les opérandes de cette instruction d' extraction sont : le mot de données , l'information de position et l'information de taille. Les moyens d'extraction 504 sont activés sur réception de cette instruction d'extraction.

Ainsi, les moyens d'extraction 504 selon l'invention permettent d'obtenir les données caractéristiques, en décalant les données à traiter, en fonction des informations de position et de taille obtenues.

Plus précisément, dans ce mode de réalisation particulier, les moyens d'extraction 504 comprennent :

des premiers moyens de décalage 53 en charge d'effectuer un décalage à gauche du contenu du premier registre 501, d'un nombre de bit(s) déterminé en fonction de la position du bloc de données caractéristiques à extraire ; un registre local 52 en charge de recevoir l'ensemble de données (bits) résultant du décalage effectué par les premiers moyens de décalage 53 ; des seconds moyens de décalage 54 en charge d'effectuer un décalage à droite du contenu du registre local 52, d'un nombre de bit(s) déterminé en fonction de la taille du bloc de données caractéristiques à extraire. Dans le mode de réalisation particulier de la figure 5, les informations de position et de taille du bloc de données caractéristiques à extraire sont stockées dans le deuxième registre 502.

On note que, dans le mode de réalisation particulier de la figure 5, les premiers moyens de décalage 53 sont configurés de telle sorte que, après avoir effectué le décalage à gauche du contenu du premier registre 501, ils transfèrent l'ensemble de bits résultant de ce décalage vers le registre local 52, en veillant à ce que les bits de l'ensemble soient ordonnés selon une orientation du type mot de poids fort en tête (ou « big-endian » en anglais).

On note également que la taille du registre local 52 est déterminée en fonction de la taille des données à traiter (elle-même fonction de l'architecture du processeur).

La figure 6 représente un organigramme d'un algorithme d'extraction de données selon un mode de réalisation particulier de l'invention, mis en œuvre par le processeur 500 comprenant l'unité arithmétique et logique (ALU) 50. La figure 7 illustre un exemple d'évolution des contenus des premier 501 , deuxième 502 et troisième 51 registres et du registre local 52.

Après une étape d'initialisation (600), les premier 501, deuxième 502 et troisième 51 registres sont vides (tous les bits sont mis à « 0 »).

A l'étape 601, le processeur obtient la position du bloc de données caractéristiques à extraire. La donnée « position » est définie par la norme selon laquelle le flux est compressé. Dans un mode de réalisation particulier, cette donnée « position » est chargée dans une mémoire de données lors de l'initialisation (600). Le processeur obtient la donnée « position » en lisant celle-ci dans la mémoire de données. A titre d'exemple, on suppose que la donnée « position » est codée sur 4 bits. Ensuite, à cette même étape 601, cette donnée « position » est transférée dans le quatrième octet 524 du deuxième registre 502.

A l'étape 602, il est procédé à un décalage à gauche de 4 bits du contenu du deuxième registre 502.

A l'étape 603, le processeur obtient la taille du bloc de données caractéristiques à extraire. La donnée « taille » est définie par la norme selon laquelle le flux est compressé. Dans un mode de réalisation particulier, cette donnée « taille » est chargée dans une mémoire de données lors de l'initialisation (600). Le processeur obtient la donnée « taille » en lisant celle-ci dans la mémoire de données. A titre d'exemple, on suppose que la donnée « taille » est codée sur 4 bits. Ensuite, à cette même étape 603, cette donnée « taille » est stockée dans le quatrième octet 534 du troisième registre 51.

A l'étape 604, l'ALU 50 effectue une opération logique de type « OU » entre les deuxième 502 et troisième 51 registres. Le résultat de cette opération logique est stocké dans le deuxième registre 502. Comme illustré sur la figure 7, le quatrième octet 524 du deuxième registre 502 comprend les données « position » (de 4 bits) et « taille » (de 4 bits).

A l'étape 605, un gestionnaire d'accès mémoire (non représenté) transfère des premières D l , deuxièmes D2, troisièmes D3 et quatrièmes D4 données à traiter (préalablement identifiées par un contrôleur (non représenté)) depuis une mémoire de données (numérotée 80 sur la figure 8) vers les premier 511, deuxième 512, troisième 513 et quatrième 514 octets du premier registre 501, respectivement. Ainsi, le premier registre 501 contient un mot de données Dl, D2, D3 et D4. Ce mot de données comprend des données caractéristiques à extraire. On note que le gestionnaire d'accès mémoire, le contrôleur et la mémoire de données sont compris dans le processeur 500.

Dans la suite de la description, on suppose à titre d'exemple que les données caractéristiques à extraire sont les données D3. L'invention ne se limite bien sûr pas à ce cas particulier. Dans un autre mode de réalisation, les données caractéristiques à extraire sont formées par une partie des données D3 et D4.

A l'étape 606, les premiers 53 et seconds 54 moyens de décalage sont activés.

Les étapes 610 à 613 décrites ci-après sont relatives à l'étape d'activation 606.

On note que grâce à l'implémentation matérielle des premiers 53 et seconds 54 moyens de décalage, et du registre local 52, les étapes 610 à 613 sont effectuées en un seul cycle d'horloge.

A l'étape 610, les premiers moyens de décalage 53 effectuent un décalage à gauche du contenu du premier registre 501, en fonction de la donnée « position » stockée dans le quatrième octet 524 du deuxième registre 502. On suppose à titre d'exemple que le début du bloc de données à extraire se situe à 16 bits à compter du début du mot de données (c'est-à-dire à compter du début du premier octet du premier registre 501). On note que le nombre de bits à décaler est donné par la différence entre la taille du premier registre 501 (32 bits) et la valeur de la donnée « position » (16 bits), soit 32 - 16 =16 bits à décaler. Dans l'exemple illustré par la figure 7, il est donc procédé à un décalage à gauche de 16 bits du contenu du premier registre 501. De cette façon, le premier octet 511 du premier registre 501 comprend les troisièmes données D3 et le deuxième octet 512 du premier registre 501 comprend les quatrièmes données D4, et les bits des troisième 513 et quatrième 514 octets du premier registre 501 ont une valeur « 0 ».

A l'étape 611, les premiers moyens de décalage 53 transfèrent vers le registre local 52 l'ensemble de bits résultant du décalage effectué à l'étape 610, en veillant à ce que les bits de l'ensemble soient ordonnés selon une orientation du type « big-endian ». Ainsi, comme illustré sur la figure 7, le premier octet 541 du registre local 52 comprend les troisièmes données D3 et le deuxième octet 542 du registre local 52 comprend les quatrièmes données D4.

A l'étape 612, les seconds moyens de décalage 54 effectuent un décalage à droite du contenu du registre local 52, en fonction de la donnée « taille » stockée dans le quatrième octet 524 du deuxième registre 502. On suppose à titre d'exemple que la taille du bloc de données caractéristiques est de 8 bits. On note que le nombre de bits à décaler est donné par la différence entre la taille du registre local 52 (32 bits) et la taille du bloc de données caractéristiques, soit 32 - 8 =24 bits à décaler. Dans l'exemple illustré par la figure 7, il est donc procédé à un décalage à droite de 24 bits du contenu du registre local 52. De cette façon, le quatrième octet 544 du registre local 52 comprend les troisièmes données D3. Les bits des premier 541, deuxième 542 et troisième 543 octets sont à zéro.

Ensuite, à l'étape 613, les seconds moyens de décalage 54 transfèrent vers le premier registre 501 l'ensemble de bits résultant du décalage effectué à l'étape 612.

Enfin, à l'étape 614, le gestionnaire d'accès mémoire (non représenté) du processeur 500 transfère les données caractéristiques D3 extraites vers une zone de stockage prévue à cet effet dans la mémoire de données (numérotée 80 sur la figure 8) du processeur 500. Bien entendu, l'invention n'est pas limitée à l'exemple de réalisation mentionné ci-dessus. La mise en œuvre d'une orientation du type « little-endian » (« mot de poids faible en tête » en français) peut également être envisagée. Pour cela, l'homme du métier pourra modifier les premiers moyens de décalage 53 de sorte à ce qu'ils réorganisent les données du flux selon une orientation du type « big endian » dans le registre local 52, et les seconds moyens de décalage 54 de sorte à ce qu'ils réorganisent le résultat d'extraction selon une orientation du type « little endian » après le décalage.

Dans un mode de réalisation particulier de l'invention, l'architecture mémoire du processeur a été modifiée pour permettre des accès non-alignés.

On décrit ci-après un exemple de réalisation d'une architecture mémoire à accès non-alignés.

Tout d'abord, la mémoire de données est divisée en deux mémoires, appelées ci- après première mémoire et deuxième mémoire.

Ensuite, il est procédé au calcul de l'adresse à lire à chaque cycle dans chacune des première et deuxième mémoires. Ces adresses sont définies par les trois bits de poids faibles de l'adresse désirée. Puis, on construit le mot de sortie en fonction des données de sortie des première et deuxième mémoires.

Par exemple :

à l'adresse 0(« xxxOOO ») on ne lit que la première mémoire, et le mot de sortie est composé des données de l'adresse 0 ;

à l'adresse 1 (« xxxOOl ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé des trois derniers octets de sortie de la première mémoire et du premier octet de sortie de la deuxième mémoire ;

à l'adresse 2 (« xxxOlO ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé des deux derniers octets de sortie de la première mémoire et des deux premiers octets de sortie de la deuxième mémoire ;

à l'adresse 3 (« xxxOl 1 ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé du dernier octet de sortie de la première mémoire et des trois premiers octets de sortie de la deuxième mémoire ; à l'adresse 4 (« xxxlOO ») on ne lit que les données de la deuxième mémoire, et le mot de sortie est composé des données de sortie de la deuxième mémoire ;

à l'adresse 5 (« xxxlOl ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé des trois derniers octets de sortie de la première mémoire et du premier octet de sortie de la deuxième mémoire ;

à l'adresse 6 (« xxxl 10 ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé des deux derniers octets de sortie de la deuxième mémoire et des deux premiers octets de sortie de la deuxième mémoire ;

à l'adresse 7 (« xxxl 1 1 ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé du dernier octet de sortie de la deuxième mémoire et des trois premiers octets de sortie de la deuxième mémoire.

Et ainsi de suite pour les différentes adresses.

Puis, il est procédé à la modification de la mémoire en écriture pour qu'elle n'écrive que des données de 8 bits (octets). Pour cela, on sépare chacune des première et deuxième mémoires (8 * 4 = 32 bits) précitées en 4 sous-mémoires. On note que cela est invisible du point de vue de la lecture.

Enfin, il est procédé à la modification de la commande d'écriture de chaque sous-mémoire. Une sous-mémoire est sélectionnée lorsqu'elle reçoit un ordre d'écriture « write » et un ordre de « byte enable ». Ainsi une sous-mémoire est sélectionnée lorsqu'un signal logique « 1 » arrive sur la ligne commune de « write » et qu'un signal logique « 1 » arrive sur sa ligne de « byte enable ».

On note que l'architecture mémoire des processeurs classiques est réalisée de sorte à ne pouvoir lire ou écrire qu'une ligne d'adresse en un cycle d'horloge.

La figure 8 illustre un exemple d'une mémoire de données 80 selon un mode de réalisation particulier de l'invention.

Selon ce mode de réalisation particulier, le gestionnaire d'accès mémoire (non représenté) du processeur 500 est capable de lire le mot contenant les données à extraire en utilisant un accès aligné classique. Dans l'exemple illustré, le gestionnaire d'accès mémoire est capable de lire les données Dl, D2, D3 et D4 (formant le mot) à la ligne d'adresse 0x03, en un cycle d'horloge.

Selon ce mode de réalisation particulier, le gestionnaire d'accès mémoire (non représenté) du processeur 500 est capable en outre de lire le mot contenant les données à extraire en utilisant un accès non-aligné. Dans l'exemple illustré, le gestionnaire d'accès mémoire est capable de lire les données Dl et D2 à la ligne d'adresse 0x06, et les données D3 et D4 à la ligne d'adresse 0x07, en un cycle d'horloge.

Cette architecture mémoire modifiée (accès non-alignés) contribue à l'amélioration des performances du processeur (en termes de consommation de cycles d'horloge), puisqu'elle permet de ne consommer qu'un seul cycle d'horloge pour extraire des données stockées stockée dans deux lignes d'adresses différentes, alors qu'une architecture mémoire classique (accès alignés) en consommerait deux.

On présente en relation avec les figures 9 et 10, les performances d'un processeur aRDAC (développé et commercialisé par la société Lead Tech Design, co- déposant de la présente demande de brevet) mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel (décrit à la figure 3), et les performances d'un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention. Ces performances ont été obtenues dans le cadre d'une extraction de données caractéristiques d'un flux vidéo MPEG-4.

La figure 9 illustre le nombre de cycles d'horloge consommés. La courbe référencée 91 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel. La courbe référencée 92 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, lors de la première utilisation des moyens d'extraction 504 selon l'invention. Lors de cette première utilisation les premier 501, deuxième 502 et troisième 51 registres sont initialisés (étape 600 de la figure 6). La courbe référencée 93 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, lors de la ou des utilisation(s) suivant la première utilisation. Le processeur aRDAC mettant en œuvre l'algorithme d'extraction de données programmé en tout logiciel consomme 65 cycles d'horloge. En revanche, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, consomme 16 cycles d'horloge à la première utilisation. Puis, lors de la ou des utilisation(s) suivant la première utilisation, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, consomme 12 cycles d'horloge (les registres ayant déjà été initialisés lors de la première utilisation).

La figure 10 illustre le nombre d'images affichées par seconde. La courbe référencée 93 illustre le nombre d'images affichées en une seconde par un processeur aRDAC mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel, et la courbe référencée 92 illustre le nombre d'images affichées en une seconde par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention. Le processeur aRDAC mettant en œuvre l'algorithme d'extraction de données programmé en tout logiciel a une capacité d'affichage de 13 images par seconde. En revanche, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, a une capacité d'affichage de 16 images par seconde.

Ainsi, pour une résolution CIF (pour « Common Intermediate Format » en anglais), le gain est de l'ordre de 25%, soit 3 images par seconde de plus.

Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. On a décrit une architecture de processeur 32 bits, mais bien sûr la même approche s'applique à tout autre architecture de processeur.