PROCÉDÉ DE CHANGEMENT DE TÂCHES DE CODAGE D'IMAGE
La présente invention se rapporte au domaine de la gestion de la mémoire pour le calcul de tâches en parallèles. Dans cette optique, la présente invention se rapporte plus particulièrement à la mise en place d'un système de sauvegarde/restauration (« save/restore ») permettant de changer de contexte le plus rapidement possible (un coup d'horloge pour la sauvegarde du contexte). En particulier, la présente invention concerne la gestion de la sauvegarde/restauration dans le traitement d'images en parallèle. Elle utilise donc des propriétés de cette technique telles que l'utilisation d'informations de codage et de décodage ( « codées » ) .
L'art antérieur connaît déjà par le document W09411816 : « Context switching System and method », un système de changement de contexte pour la sauvegarde, la restauration ou la permutation de tâches destiné à être utilisé dans un processeur multitâche couplé à une mémoire externe ou une mémoire du système. Le processeur comporte un ou plusieurs blocs fonctionnels qui exécutent les tâches. Lesdits blocs fonctionnels comprennent des registres stockant des données d'états qui représentent, à certains moments, le contexte du système. Ledit système comprend un régisseur qui reçoit une commande de sauvegarde ou de changement et génère une instruction de sauvegarde du contexte en réponse à cette dernière. Le régisseur est configuré de manière à transférer l'instruction de sauvegarde du contexte aux blocs fonctionnels générant un programme d'états qui comporte une ou plusieurs instructions de chargement de registre, les données d'états représentant le contexte du système de façon que ce dernier puisse être restauré ultérieurement. Le programme d'états est stocké
dans une mémoire externe ou une mémoire du système . La sauvegarde du contexte comme des programmes d'états permet au système de passer rapidement d'un contexte à l'autre sans perdre d'informations importantes. Dans ce procédé connu, il est nécessaire de copier tout le contexte dans une mémoire externe afin de changer de contexte. Cette méthode demande par conséquent un temps trop important pour le changement de tâche.
Il est proposé, dans la demande de brevet internationale 09914671 une invention concernant un procédé de changement de contexte d'une première tâche à une deuxième tâche dans une unité de traitement de données dotée d'un fichier registre comportant plusieurs registres banalisés et un registre de changement de contexte, une mémoire comprenant une zone de sauvegarde de contexte antérieure et une zone de sauvegarde de contexte inutilisée. La mémoire est couplée au fichier registre et à une unité de commande d'instructions, un registre d'adresse d'instruction et un registre de mot d'état programme étant couplés à la mémoire et au fichier registre. Le procédé consiste à acquérir une nouvelle zone de sauvegarde dans la zone de sauvegarde non utilisée, à mémoriser le contexte de la première tâche dans la nouvelle zone et à relier la nouvelle zone avec la zone de sauvegarde de contexte antérieure. Ce document de l'art antérieur propose une solution qui nécessite la recherche d'une zone libre dans un espace mémoire prédéfini. Cette recherche induit un temps supplémentaire dans le passage d'une tâche à l'autre.
L'art antérieur connaît également, par la demande de brevet européen EP 1 115 060 (Motorola), un dispositif et un procédé pour réaliser des changements de contexte à haute vitesse avec peu d' « overhead », et particulièrement pour des processeurs qui traitent des tâches multi-niveaux
imbriquées. Le dispositif traite des requêtes en avant et des requêtes en retour. Le dispositif est couplé à un CPU et possède une pluralité de fichiers de registres et un mécanisme d'accès direct à la mémoire qui permet au processeur de répondre à la requête en avant en commençant à traiter une tâche de plus haute priorité en utilisant un fichier de registre qui transfert le contexte de tâche interrompue en domaine de sauvegarde de contexte dans un module de mémoire. Le processeur répond à la requête en retour en utilisant un contexte qui est stocké dans un premier fichier de registre, tout en transférant à un deuxième fichier de registre un contexte de tâche de plus basse priorité.
L'art antérieur connaît également, par la demande de brevet américain US 2002/065116 (Morphics Technology), une architecture de processeur pour le traitement du signal. Un système de communication sans fil héberge une pluralité de processus selon un protocole de communication. Le système comprend des processeurs d'ensembles d'instructions spécifiques à des applications (ASISP) procurant un soutien de calcul pour le processus. Chaque ASISP est capable d'exécuter un sous-ensemble des fonctions d'un protocole de communication. Un programmateur est utilisé pour programmer les ASISP en un algorithme à temps partagé de manière que chaque ASISP prenne en charge plusieurs processus. Dans cette architecture, l' ASISP exécute activement des calculs pour un des processus pris en charge (processus actif) à n'importe quel moment donné. Les informations d'état de chaque processus prises en charge par un ASISP particulier sont stockées dans un bloc mémoire, lequel est associé de manière unique à l' ASISP. Lorsqu'un programmateur donne à un ASISP l'instruction de changer le processus qui est le processus actif, les informations d'état pour le processus
inactivé sont stockées dans le bloc mémoire et les informations d'état du processus nouvellement activé sont extraites du bloc mémoire.
La présente invention entend remédier aux inconvénients de l'art antérieur en mettant en œuvre un système permettant de changer de contexte de manière rapide (chargement d'un contexte en un coup d'horloge). Pour cela, le système selon l'invention met en place un ensemble de mémoires internes au processeur destinées à contenir les données de contexte de deux tâches et les données de codage et de décodage (codée) d'une tâche. Lorsqu'une instruction de changement de tâche est envoyée au processeur, celui-ci charge le contexte de la deuxième tâche pendant que le traitement de la première tâche s'effectue, arrête le traitement de la première tâche, sauve dans une mémoire externe le codée de la tâche courante, accède aux données de la tâche arrivante déjà chargées dans la mémoire interne et charge à partir d'une mémoire externe le codée correspondant à la tâche arrivante. Ainsi le temps pendant lequel le système de calcul est arrêté est limité aux étapes de déchargement du codée de la première tâche et de chargement du codée de la deuxième tâche.
Pour ce faire, la présente invention est du type décrit ci-dessus et elle est remarquable, dans son acception la plus large, en ce qu'elle met en œuvre un procédé de changement de tâches de traitement d'image utilisant une architecture comportant une première mémoire interne pour stocker un premier contexte, une deuxième mémoire interne pour stocker un deuxième contexte et une troisième mémoire interne pour stocker des informations permettant le codage et le décodage ainsi que des moyens de traitement desdits contextes et un moyen de communication avec au moins un
élément extérieur, et destiné à passer d'une première tâche de codage ou de décodage utilisant ledit premier contexte à une deuxième tâche de codage ou de décodage utilisant ledit deuxième contexte comprenant les étapes suivantes : a) Une première étape où l'architecture traite ladite première tâche en utilisant des données de codage et de décodage contenues dans ladite troisième mémoire interne et des données dudit premier contexte contenues dans ladite première mémoire interne ; b) une deuxième étape de copie des données dudit deuxième contexte depuis une mémoire externe vers ladite deuxième mémoire interne à travers ledit moyen de communication ; où ladite deuxième étape s'effectue pendant que ladite première tâche est en cours de traitement.
Selon un autre mode de réalisation de ce procédé, il existe une troisième tâche de codage ou de décodage utilisant un troisième contexte, les données dudit troisième contexte étant contenues dans ladite deuxième mémoire interne et en ce que le procédé comprend une étape additionnelle précédant l'étape a) : c) Une étape de copie des données dudit troisième contexte depuis ladite deuxième mémoire interne vers une mémoire externe à travers ledit moyen de communication. Ladite étape c) étant effectuée pendant le traitement de ladite première tâche
Avantageusement , le procédé comprend en outre les étapes additionnelles consécutives à l ' étape b ) : d ) une étape d ' arrêt du traitement de ladite première tâche ;
e) une étape de copie des données permettant le codage ou le décodage de ladite première tâche [codée] depuis ladite troisième mémoire interne vers une mémoire externe par ledit moyen de communication ; f) une étape de copie des données permettant le codage ou le décodage de ladite deuxième tâche [codée] à partir d'une mémoire externe vers ladite troisième mémoire interne par ledit moyen de communication ; g) une étape de changement d'adressage de mémoire depuis ladite première mémoire interne vers ladite deuxième mémoire interne ; h) une étape de démarrage du traitement de ladite deuxième tâche ;
Avantageusement, le procédé comprend des étapes additionnelles précédant l'étape a) : i) une étape de copie des données dudit premier contexte depuis une mémoire externe vers ladite première mémoire interne à travers ledit moyen de communication ; j ) une étape de copie des données permettant le codage ou le décodage de ladite première tâche [codée] à partir d'une mémoire externe vers ladite troisième mémoire interne par ledit moyen de communication ; k) une étape de démarrage du traitement de ladite première tâche.
Si l'autre mode de réalisation déjà décrit est mis en œuvre, le procédé peut avantageusement comprendre des étapes additionnelles précédant l'étape c) :
i) une étape de copie des données dudit premier contexte depuis une mémoire externe vers ladite première mémoire interne à travers ledit moyen de communication ; j ) une étape de copie des données permettant le codage ou le décodage de ladite première tâche [codée] à partir d'une mémoire externe vers ladite troisième mémoire interne par ledit moyen de communication ; k) une étape de copie des données dudit troisième contexte depuis une mémoire externe vers ladite première mémoire interne à travers ledit moyen de communication ; 1) une étape de démarrage du traitement de ladite première tâche.
Selon un mode de mise en œuvre de l'invention, l'architecture utilisée comprend en outre une quatrième mémoire interne pour stocker des informations permettant le codage et le décodage et le procédé comprend une étape additionnelle à la suite de l'étape b) : m) une étape de copie des données permettant le codage ou le décodage de ladite deuxième tâche
[codée] à partir d'une mémoire externe vers ladite quatrième mémoire interne par ledit moyen de communication ; ladite étape m) étant effectuée pendant le traitement de ladite première tâche.
On comprendra mieux l'invention à l'aide de la description, faite ci-après à titre purement explicatif, d'un mode de réalisation de l'invention, en référence à la figure annexée :
la figure 1 illustre la composition d'un processeur mis en place dans la procédure de sauvegarde/restauration ;
L'architecture utilisée par le procédé selon l'invention, illustrée figure 1, est une architecture de processeur de traitement d'images comprenant une unité de calcul (1), une mémoire interne (2) pouvant contenir le codée de la tâche en cours, c'est-à-dire les informations nécessaires au codage et/ou au décodage des données d'image reçues par l'architecture. L'architecture comprend également deux mémoires internes ( 3 ) et ( 4 ) dites de contexte . Chaque mémoire de contexte est susceptible de contenir un jeu de données nécessaires à l'unité de calcul. Par exemple, une mémoire de contexte peut contenir une ou plusieurs lignes de l'image à coder ainsi que des files d'attente d'entrée et de sortie à ces lignes. Les mémoires internes (2), (3) et (4) sont reliés par une liaison (5) à des éléments extérieurs qui peuvent être un autre processeur ou une mémoire par exemple.
Une réalisation du procédé de changement de tâche selon l'invention le plus simple, c'est-à-dire entre deux tâches déjà lancées, est constitué des étapes suivantes, en faisant référence à la figure 1 : a) une étape d'activation du mode sauvegarde/restauration en modifiant la valeur d'un registre destiné à cette utilisation ; b) l'étape d'activation entraîne l'arrêt du traitement de la première tâche ; c ) une étape de lecture du codée de la première tâche inscrit dans le registre approprié (2) afin de le sauvegarder dans une mémoire extérieure ;
d) une étape où un interrupteur est mis à 1 pour signifier la fin de la procédure de sauvegarde du codée ; e) une étape de passage de la zone mémoire contenant le contexte de la première tâche (3) à la zone mémoire contenant le contexte de la deuxième tâche (4) ; f) une étape d'écriture du codée de la deuxième tâche à partir d'une mémoire externe dans le registre approprié (2) ; g) une étape où un interrupteur est mis à 1 pour signifier la fin de la procédure de restauration du codée ; h) une étape de désactivation du mode sauvetage/restauration en modifiant la valeur d'un registre destiné à cette utilisation ; i) le lancement du traitement de la deuxième tâche.
Selon un autre mode de réalisation, le procédé permet le changement de tâche entre plus de deux tâches. Dans ce cas , le procédé comporte les étapes supplémentaires : j ) une étape de lecture des informations de contexte de la première tâche dans la mémoire interne (3) afin de sauvegarder ces informations dans une mémoire externe ; k) une étape d'écriture des informations de contexte d'une troisième tâche dans la mémoire interne ( 3 ) à partir d'une mémoire externe ; 1) le procédé depuis l'étape a) où la deuxième tâche et la troisième tâche remplacent respectivement la première tâche et la deuxième tâche ;
Ainsi de suite, il est possible de procéder à des changements de tâches avec un nombre illimité de tâches.
Il est de plus possible de mettre en œuvre un procédé permettant de réduire encore le temps de changement entre deux tâches : pour cela, le procédé selon l'invention utilise une architecture contenant une mémoire interne supplémentaire destinée à stocker les données d'un deuxième codée. Ainsi, pendant le traitement de la première tâche, les mémoires de contexte et de codée de la deuxième tâche sont chargées depuis une mémoire externe. Le processeur est alors arrêté le temps nécessaire pour changer l'adressage des mémoires : le module de calcul du processeur change son pointeur de mémoire et le dirige vers les mémoires de contexte et de codée de la deuxième tâche. Ce changement d'adressage prend très peu de temps.
L'invention est décrite dans ce qui précède à titre d'exemple. Il est entendu que l'homme du métier est à même de réaliser différentes variantes de l'invention sans pour autant sortir du cadre du brevet.