Brevet FR3052576A1 (20171215)
REVENDICATIONS1. Coeur de processeur asynchrone (16), activable pour l'exécution séquentielle d'instructions sur réception de signaux de commande d'interruption, comportant : - une unité (56) de chargement séquentiel de lignes d'instructions depuis une mémoire principale (26) externe au coeur de processeur (16), - un décodeur (64) de lignes d'instructions chargées par l'unité de chargement (56) en instructions exécutables, et - des unités fonctionnelles (52, 54, 58, 60,\n<CLM>\1\td'exécution des instructions exécutables, caractérisé en ce qu'il comporte un module (48) de contrôle d'exécution configuré en automate (74) à deux états : - un état de sommeil (51) dans lequel le coeur de processeur asynchrone (16) est en attente d'un signal de commande d'interruption pour l'exécution d'une routine d'interruption, et - un état d'exécution (S2) dans lequel le décodeur (64) est en attente d'une nouvelle ligne d'instruction de routine d'interruption à décoder, et en ce que le module (48) de contrôle d'exécution gère en outre une variable d'état (status) de l'unité de chargement (56) pour sélectivement autoriser ou empêcher, en fonction au moins de la valeur de cette variable d'état (status), le chargement d'une nouvelle ligne d'instruction par l'unité de chargement (56).\n<CLM>\1\tCoeur de processeur asynchrone (16) selon la revendication 1, dans lequel le module (48) de contrôle d'exécution est configuré pour : - passer à l'état d'exécution (S2) sur réception, par le coeur de processeur (16), d'un signal de commande d'interruption pour l'exécution d'une routine d'interruption, et autoriser le chargement d'une première ligne d'instruction de cette routine d'interruption à cette occasion, et - passer de l'état d'exécution (S2) à l'état de sommeil (51) après réception, par le coeur de processeur (16), d'une dernière ligne d'instruction de routine d'interruption.\n<CLM>\1\tCoeur de processeur asynchrone (16) selon la revendication 1 ou 2, dans lequel le module (48) de contrôle d'exécution est configuré pour, sur réception d'une 3052576 18 nouvelle ligne d'instruction chargée depuis la mémoire principale externe (26) lorsqu'il est dans l'état d'exécution (S2) : - déterminer s'il s'agit d'une ligne d'instruction requérant une suspension de routine d'interruption, puis 5 - s'il s'agit d'une ligne d'instruction requérant une suspension de routine d'interruption, empêcher le chargement d'une nouvelle ligne d'instruction depuis la mémoire principale externe (26), ou - sinon, sélectivement autoriser ou empêcher le chargement d'une nouvelle ligne d'instruction depuis la mémoire principale externe (26) 10 en fonction uniquement de la valeur de la variable d'état (status) de l'unité de chargement (56).\n<CLM>\1\tCoeur de processeur asynchrone (16) selon l'une quelconque des revendications 1 à 3, dans lequel l'état de sommeil (S1) ou d'exécution (S2) ainsi que la valeur de la variable d'état (status) de l'unité de chargement (56) pour autoriser ou 15 empêcher le chargement d'une nouvelle ligne d'instruction sont des données d'informations stockées dans des registres d'états respectifs (76) du coeur de processeur (16) auxquels le module (48) de contrôle d'exécution a accès en lecture et/ou en écriture.\n<CLM>\1\tCoeur de processeur asynchrone (16) selon l'une quelconque des 20 revendications 1 à 4, incluant des moyens (76) de réception et de stockage de consignes de débogage.\n<CLM>\1\tCoeur de processeur asynchrone (16) selon la revendication 5, dans lequel les moyens (76) de réception et de stockage incluent des registres de commande (CMD) accessibles en lecture par le module (48) de contrôle d'exécution 25 et prévus pour l'enregistrement, par une unité de débogage (28) extérieure au coeur de processeur (16) ayant accès en écriture à ces registres de commandes (CMD), des consignes de débogage.\n<CLM>\1\tCoeur de processeur asynchrone (16) selon la revendication 5 ou 6, dans lequel les consignes de débogage comportent : 30 - une consigne de suspension de routine d'interruption en cours d'exécution, - une consigne de redémarrage de routine d'interruption suspendue, - une consigne d'exécution d'une seule ligne d'instruction de routine d'interruption, 3052576 19 et dans lequel le module (48) de contrôle d'exécution est configuré pour, sur prise en compte de chaque consigne de débogage : - mettre à jour la valeur de la variable d'état (status) de l'unité de chargement (56) pour empêcher le chargement d'une nouvelle ligne 5 d'instruction lorsqu'il s'agit d'une consigne de suspension de routine d'interruption, - autoriser le chargement d'une nouvelle ligne d'instruction et mettre à jour la valeur de la variable d'état (status) de l'unité de chargement (56) pour autoriser le chargement d'une nouvelle ligne d'instruction 10 suivante lorsqu'il s'agit d'une consigne de redémarrage de routine d'interruption, - autoriser le chargement d'une nouvelle ligne d'instruction lorsqu'il s'agit d'une consigne d'exécution d'une seule ligne d'instruction de routine d'interruption. 15\n<CLM>\1\tMicrocontrôleur (10) pour noeud de capteur communicant, présentant une architecture comprenant : - une première partie (12) comportant un processeur de réveil (16) activable sur réception de signaux de commande d'interruption, - une deuxième partie (14) comportant un processeur principal (18) 20 activable uniquement sur sollicitation du processeur de réveil (16), dans lequel : - le processeur de réveil (16) comporte au moins un coeur de processeur asynchrone selon l'une quelconque des revendications 1 à 7, incluant des unités fonctionnelles (52, 54, 58, 60,\n<CLM>\1\tadaptées 25 pour des échanges de données entre le microcontrôleur (10) et au moins un périphérique, pour une gestion d'un protocole de réveil, ainsi que pour une gestion de fréquences et puissances de fonctionnement de composants de noeud de capteur communicant, et - le processeur principal (18) comporte des unités fonctionnelles 30 supplémentaires d'exécution de calculs complexes non réalisés par le processeur de réveil (16).\n<CLM>\1\tMicrocontrôleur selon la revendication 8, comportant une unité de débogage (28) dans sa première partie (12), cette unité de débogage (28) ayant accès au processeur de réveil (16), via un bus asynchrone (30) de transmission de 35 données, pour l'envoi de consignes de débogage. 3052576 20\n<CLM>\1\tMicrocontrôleur (10) selon la revendication 8 ou 9, comportant une mémoire principale (26) dans sa première partie (12), cette mémoire principale (26) comportant des lignes d'instructions d'au moins une routine d'interruption (421, ..., 42e) et étant accessible par le processeur de réveil (16), via un bus asynchrone (30) 5 de transmission de données, pour le chargement séquentiel de lignes d'instructions.