Brevet FR2920557A1 — publié le 20090306

L'invention concerne un dispositif et une méthode de séquencement de tâches. Les processeurs utilisés dans les systèmes embarqués doivent exécuter du code, appelé firmware, potentiellement multi-tâches, et nécessitant souvent un micro système d'opération capable de séquencer les différentes tâches. De plus, ces firmwares multi-tâches ont la plupart du temps : • peu de tâches différentes à exécuter en parallèle (ie moins de 10), • les tâches doivent être le plus déterministes possibles (ie chaque tâche doit s'exécuter dans un temps donné) • les tâches sont statiquement démarrées lors du démarrage du processeur (ie pas de � fork � dynamique de nouvelles tâches). Les ressources mémoires des processeurs embarqués étant fortement contraintes, les systèmes d'opération embarqués consomment un espace mémoire important et nécessitent un temps de travail important pour le processeur embarqué. Actuellement, les processeurs embarqués utilisent un compteur de programme (PC) qui est un registre pointant vers l'instruction courante. Ce registre contient l'adresse mémoire contenant l'instruction en cours d'exécution. Lorsqu'un programme est lancé, ce compteur de programme est alors mis à jour de 2 manières dans les processeurs: • Il est incrémenté de X cases mémoires pour passer à l'instruction suivante (X étant dépendant de la taille de l'instruction, c'est une donnée connue par le processeur). • Il prend la valeur d'une nouvelle adresse mémoire, cette adresse mémoire étant programmée dans l'instruction elle-même (cas des appels de fonctions ou des � jumps �). Les systèmes embarqués disposent de peu de mémoire pour faire fonctionner un véritable système d'opération. L'invention propose de résoudre au moins un des inconvénients 5 mentionnés A cet effet, l'invention propose un processeur comprenant un compteur de programmes caractérisé en ce qu'il comprend : - un séquenceur matériel, -un registre, - une première instruction destinée à écrire dans ledit registre au moins l'adresse d'une prochaine tâche à exécuter, - une seconde instruction destinée à donner le contrôle audit séquenceur matériel, dès la fin d'une tâche, et à programmer le compteur de programme avec l'adresse de la prochaine tâche à exécuter. Ainsi, on intègre dans le processeur un séquenceur hardware et des instructions et un mécanisme qui peut permettre de séquencer 20 temporellement des événements, avec un maximum de déterminisme. Cette solution modifie le comportement par défaut du compteur de programme (PC) du processeur mais offre un séquencement des tâches déterministe et rend une partie des services d'un système d'exploitation sans consommer d'espace mémoire. Un des avantages de cette solution peut être la rapidité 25 comparée aux solutions actuelles. Ainsi, le CPU offre du hardware permettant le séquencement, sans coût mémoire additionnel pour le logiciel. 30 Préférentiellement, le dispositif comprend des moyens d'enregistrer dans ladite mémoire lors de l'initialisation, une adresse pointant sur du code de démarrage. 10 15 Préférentiellement, outre une adresse, ladite première instruction écrit un paramètre relatif à la prochaine tâche à exécuter. L'invention sera mieux comprise et illustrée au moyen d'exemples de modes de réalisation et de mise en oeuvre avantageux, nullement limitatifs, en référence aux figures annexées sur lesquelles : - la figure 1 représente un système selon un mode préféré de réalisation de l'invention, -la figure 2 représente un séquencement de tâches selon un mode de réalisation préféré de l'invention, La figure 1 représente à la fois un processeur embarqué dans un dispositif électronique et des tâches dont il a l'exécution. Un processeur 9 comprend plusieurs registres dont notamment un compteur de programme 8. Ce compteur de programme est bien connu de l'homme du métier mais son contenu dans le cadre de l'invention est différent du contenu habituel. Un processeur 9 comprend un séquenceur hardware 5 en charge de gérer le déroulement des tâches. Dans l'art antérieur, ce séquenceur était de type software. Ce processeur comprend en outre un registre 4 EVENT QUEUE qui est une queue d'événement. Préférentiellement ce registre est une mémoire de type FIFO. Le processeur comprend également un registre 6 IF_QUEUE qui est un registre d'accès au registre 4 EVENT_QUEUE. Sur la figure 1 sont également représentées trois tâches : tâche 1, tâche 2 et tâche 3. Ces trois tâches contiennent du code de programme. Sur la figure 1 sont également représentées deux instructions : - RETURN_TO_QUEUE : cette instruction a pour effet de lire le registre 4 EVENT QUEUE et d'écrire la valeur lue dans le compteur de programme 8. - PUSH_EVENT : cette instruction a pour effet d'écrire dans le registre IF_QUEUE. La valeur écrite dans IF_QUEUE est ensuite automatiquement transférée dans EVENT QUEUE. Nous allons maintenant décrire le fonctionnement du séquencement en regard de la figure 2. Lors du démarrage du dispositif embarqué, le processeur stocke par défaut une adresse de base dans le registre 6 IF_QUEUE en utilisant l'instruction PUSH EVENT. Cette adresse de base est ensuite transférée dans le registre 4 EVENT_QUEUE, IF_QUEUE représentant une interface du registre 4 EVENT_QUEUE et une instruction RETURN_TO_QUEUE est exécutée. En plus de cette adresse, des paramètres peuvent également être chargés. Ces paramètres peuvent par exemple être un nombre, un pointeur vers une zone de données en mémoire contant des informations utiles pour la tâche. Une adresse est donc enregistrée dans le compteur de programme. Cette adresse pointe sur le code de boot ou code de démarrage du dispositif embarqué. Le code est par exemple implémenté dans une mémoire de type flash. Lorsque le code de boot est exécuté, à la fin de ce code, le processeur charge l'adresse de base de démarrage du firmware dans le registre IF_QUEUE 6 en exécutant une instruction PUSH_EVENT et ensuite ce registre est transféré dans le registre 4 EVENT_QUEUE . Cette adresse correspond à la tâche 3 comme indiqué en figure 2. Le code de la tâche 3 est ensuite exécuté, ce code comprend en outre à la fin une instruction PUSH_EVENT(Task 2) et une instruction RETURN_TO_QUEUE. L'adresse dans la tâche 2 à laquelle le processeur doit aller est alors chargée dans le compteur de programme 8 et le séquenceur va à l'adresse de la tâche 2 indiquée dans le compteur de programme. Le processeur exécute alors le code de la tâche 2 et rencontre une instruction PUSH_EVENT(Task 3), puis une instruction PUSH_EVENT(Task 1) et une instruction RETURN_TO_QUEUE. L'adresse dans la tâche 3 à laquelle le processeur doit aller est alors chargée dans le compteur de programme 8 et le séquenceur va à l'adresse de la tâche 3 indiquée dans le compteur de programme. Le processeur exécute alors le code de la tâche 3 et rencontre une instruction RETURN TO QUEUE. L'adresse dans la tâche 1, précédemment chargée dans IF_QUEUE et recopiée dans EVENT_QUEUE, à laquelle le processeur doit aller est alors chargée dans le compteur de programme 8 et le séquenceur va à l'adresse de la tâche 1 indiquée dans le compteur de programme Une fois la tâche 1 terminée, le code a été entièrement déroulé. Ainsi le séquenceur ainsi que les instructions associées permettent un séquencement des tâches de manière totalement déterministe. Le firmware ne se déroule plus un une seule boucle mais le séquenceur est capable de reprendre la main régulièrement grâce à l'instruction RETURN_TO_QUEUE. Ainsi, on obtient un fonctionnement piloté par le séquenceur, proche d'une machine d'état. Revendications 1. Processeur comprenant un compteur de programmes caractérisé en ce qu'il comprend : - un séquenceur matériel, - un registre, - une première instruction destinée à écrire dans ledit registre au moins l'adresse d'une prochaine tâche à exécuter, - une seconde instruction destinée à donner le contrôle audit séquenceur matériel, dès la fin d'une tâche, et à programmer le compteur de programme avec l'adresse de la prochaine tâche à exécuter. 2. Processeur selon la revendication 1 caractérisé en ce qu'il comprend des moyens d'enregistrer dans ladite mémoire lors de l'initialisation, une adresse pointant sur du code de démarrage. 3. Processeur selon l'une des revendications précédentes caractérisé en ce que outre une adresse, ladite première instruction écrit un paramètre relatif à la prochaine tâche à exécuter.