Brevet FR3087908A1 — publié le 20200501

Nlicrocontrôleur capable d'exécuter de façon accélérée un traitement paramétrable Des modes de réalisation de l'invention concernent les microcontrôleurs. Il existe un besoin de proposer un microcontrôleur capable d'exécuter rapidement des traitements sans trop pénaliser sa charge d'exécution tout en offrant une flexibilité dans le type de traitement. Selon des modes de réalisation, il est proposé d'incorporer dans un microcontrôleur, un accélérateur matériel polyvalent, très rapide et peu coûteux. Selon un aspect il est proposé un microcontrôleur destiné à exécuter un traitement paramétrable par au moins un paramètre, comportant un processeur et un accélérateur matériel couplé au processeur et configuré pour exécuter matériellement le traitement de façon accélérée, le processeur étant configuré pour délivrer ledit au moins un paramètre à l'accélérateur matériel. L'accélérateur matériel étant un circuit matériellement configuré, son coût est minimal, et il bénéficie d'une architecture optimale pour le traitement, notamment en matière de vitesse d'exécution. Le processeur est ainsi libéré de la contrainte d'exécuter ce traitement, la vitesse d'exécution du microcontrôleur est améliorée. En outre, l'exécution du traitement étant paramétrable, par exemple en matière de précision, le microcontrôleur bénéficie d'une flexibilité d'exécution permettant de varier les applications. Selon un mode de réalisation, le traitement est un traitement itératif, et ledit au moins un paramètre comprend le nombre 30 d'itérations du traitement. La précision du traitement est avantageusement déterminée par le seul nombre d'itérations. Ainsi, il est possible de paramétrer un compromis entre la précision souhaitée et la vitesse, et de bénéficier d'un fonctionnement optimisé pour différentes applications ayant différentes contraintes. 2 Par exemple, le microcontrôleur comprend un générateur de signal d'horloge configuré pour générer un signal d'horloge, et l'accélérateur matériel est configuré pour exécuter matériellement au moins une itération du traitement par cycle d'horloge. 5 L'exécution matérielle permet une telle quantité d'itérations par cycle, contrairement à une exécution par le processeur qui, typiquement, a besoin de plusieurs cycles d'horloge pour exécuter une itération. Selon un mode de réalisation, l'accélérateur matériel comprend 10 en outre un étage d'entrée destiné à recevoir des arguments d'entrée du traitement, l'étage d'entrée étant configuré pour permettre une réception de prochains arguments d'entrée d'une prochaine exécution du traitement, pendant une exécution courante du traitement. En d'autres termes, le temps pendant lequel un traitement est 15 exécuté est exploité pour charger les prochains arguments d'entrée du prochain traitement. Selon un mode de réalisation, l'accélérateur matériel comprend en outre un étage de sortie destiné à délivrer des résultats du traitement, l'étage de sortie étant configuré pour délivrer les résultats 20 au processeur dès que les résultats sont disponibles, le processeur étant configuré pour être bloqué dans un état d'attente tant que l'accélérateur matériel ne lui a pas délivré les résultats. L'étage de sortie ne libère les résultats que lorsque le traitement est achevé, ainsi une lecture provenant du processeur est 25 mise en attente jusqu'à libération des résultats à la fin du traitement. Avantageusement, l'accélérateur matériel est configuré pour exécuter matériellement un éventuel prochain traitement en attente, immédiatement après avoir délivré les résultats au processeur par l'étage de sortie. Le flux d'entrée-sortie peut ainsi être actif sans discontinuité, de façon avantageuse en matière de vitesse. Selon un mode de réalisation, ladite fonction comprend au moins un traitement d'un type spécifique choisi dans le groupe comprenant Cosinus, Sinus, Arc-tangente, Arc-sinus, Arc-cosinus, Sinus Hyperbolique, Cosinus Hyperbolique, Arc-tangente Hyperbolique, Racine carré, Phase, Module, Exponentiel, Logarithme Népérien. Selon un mode de réalisation, l'accélérateur matériel est 5 configuré pour exécuter matériellement ledit traitement en mettant en oeuvre un algorithme de rotation numérique de coordonnées « CORDIC » bien connu en soi par l'homme du métier. Selon un autre aspect, il est proposé un accélérateur matériel configuré pour exécuter matériellement de façon accélérée un 10 traitement paramétrable par au moins un paramètre, ledit au moins un paramètre étant destiné à être délivré par un processeur d'un microcontrôleur. Selon des modes de réalisation, ledit traitement peut être un traitement par itérations, et ledit au moins un paramètre peut 15 comprendre le nombre d'itérations du traitement. La précision du traitement peut avantageusement être déterminée par le seul nombre d'itérations. L'accélérateur matériel peut être destiné à recevoir un signal d'horloge comprenant des cycles d'horloge, et être configuré pour 20 exécuter matériellement au moins une itération dudit traitement par cycle d'horloge. L'accélérateur matériel peut comprendre en outre un étage d'entrée destiné à recevoir des arguments d'entrée du traitement, et l'étage d'entrée peut être configuré pour permettre une réception de 25 prochains arguments d'entrée d'une prochaine exécution du traitement, pendant une exécution courante du traitement. L'accélérateur matériel peut comprendre en outre un étage de sortie destiné à délivrer des résultats du traitement, dans lequel l'étage de sortie est configuré pour délivrer les résultats dès que les résultats 30 sont disponibles et générer une commande destinée à bloquer le processeur récepteur des résultats, tant que les résultats ne lui sont pas délivrés par l'étage de sortie. L'accélérateur matériel peut être configuré pour exécuter matériellement un éventuel prochain traitement en attente, 4 immédiatement dès que les résultats du traitement sont délivrés par l'étage de sortie. Le traitement peut par exemple comprendre au moins une fonction d'un type choisi dans le groupe comportant Cosinus, Sinus, 5 Arc-tangente, Arc-sinus, Arc-cosinus, Sinus Hyperbolique, Cosinus Hyperbolique, Arc-tangente Hyperbolique, Racine carré, Phase, Module, Exponentiel, Logarithme Népérien. L'accélérateur peut être configuré pour accélérer matériellement l'exécution du traitement en mettant en oeuvre un 10 algorithme de rotation numérique de coordonnées « CORDIC ». Il est en outre proposé un appareil électronique, tel qu'un ordinateur de bord de véhicule, comprenant un microcontrôleur tel que défini ci-avant. D' autres avantages et caractéristiques de 1' invention 15 apparaîtront à l'examen de la description détaillée de modes de réalisation, nullement limitatifs, et des dessins annexés sur lesquelles : - Les figures I à 4 représentent des exemples de modes de réalisation de l'invention. La figure 1 représente un exemple de mode de réalisation de 20 microcontrôleur MC destiné à exécuter un traitement paramétrable par au moins un paramètre. Le microcontrôleur MC comporte un processeur CPU et un accélérateur matériel AM couplé au processeur CPU. Le microcontrôleur est notamment destiné à exécuter un traitement. 25 L'accélérateur matériel AM est configuré pour exécuter matériellement le traitement, de façon accélérée par rapport à une exécution qui serait réalisée par le processeur CPU. Le traitement exécuté par l'accélérateur matéri el AM est paramétrable par au moins un paramètre, et le processeur CPU est configuré notamment pour délivrer 30 ledit au moins un paramètre à l'accélérateur matériel AM. Le microcontrôleur comporte en outre et à titre accessoire un élément de mémoire pouvant comprendre une mémoire vive RAM et une mémoire non-volatile ROM, un dispositif pilote d'accès direct en mémoire DMA, des interfaces d'entrée-sortie telles qu'un 5 converti sseur numérique-analogique DAC, un convertisseur analogique-numérique ADC et un modulateur de largeur d'impulsion PWM. En outre, bien que non représenté, le microcontrôleur MC peut comprendre un générateur de signal d'horloge configuré pour générer 5 un signal d'horloge comportant des cycles d'horloges, destiné à cadencer des opérations des éléments du microcontrôleur MC. Les différents éléments du microcontrôleur, c'est-à-dire dans cet exemple le processeur, l'accélérateur matériel, l'élément de mémoire, le dispositif d'accès direct en mémoire, et les interfaces 10 d'entrée-sortie peuvent communiquer entre eux via un bus de circuit- intégré BS. Le générateur de signal d'horloge peut éventuellement transmettre le signal d'horloge sur le bus de circuit-intégré BS ou sur un canal dédié. Par exemple, le bus de circuit intégré BS est du type AHB 15 (acronyme du terme anglais usuel « Advanced High-performance Bus »). Ainsi, les paramètres paramétrant le traitement exécuté matériellement par l'accélérateur matériel AM, peuvent être transmis à l'accélérateur matériel AM et par le processeur CPU via le bus de 20 circuit-intégré BS. Le traitement est préférentiellement d'un type spécifique choisi par exemple parmi des fonctions trigonométriques, des fonctions hyperboliques ou encore des foncions « naturelles » telles que les fonctions exponentielles et logarithmiques, la racine, la norme de deux 25 coordonnées, la phase de deux variables, etc. L'accélérateur matériel est par exemple configuré pour exécuter matériellement ledit traitement en mettant en oeuvre un algorithme de rotation numérique de coordonnées « CORDIC ». Du fait de l'exécution matérielle du traitement par 30 l'accélérateur matériel, les performances du microcontrôleur sont améliorées à moindre coût. De plus, l'utilisation du microcontrôleur est grandement simplifiée, par exemple en comparaison avec un système classique dans lequel une unité de calculs dédiée à l'exécution 6 du traitement, du type DSP, doit être programmée par l'utilisateur, notamment avec des moyens dédiés et les précautions requises. La figure 2 représente un exemple de mode de réalisation de l'accélérateur matériel AM, par exemple incorporé au microcontrôleur 5 MC décrit précédemment en relation avec la figure 1. L'accélérateur matériel AM comprend ici un étage d'entrée INRG, un étage de calcul CAL, et un étage de sortie OUTRG. L'étage de calcul CAL est configuré matériellement pour exécuter matériellement le traitement. L'étage de calcul est ainsi 10 conçu pour exécuter le traitement de façon optimale en tout point. L'étage d'entrée INRG est destiné à recevoir des arguments d'entrée WDATA. Les arguments d'entrée WDATA comprennent des données sur lesquelles le traitement va être exécuté, par exemple des valeurs de variables d'entrée d'une fonction à calculer. Les arguments 15 d'entrée WDATA peuvent éventuellement comprendre en outre un paramètre paramétrant le traitement. L'étage d'entrée INRG comporte par exemple un registre d'entrée à cet égard. L'étage d'entrée INRG est en outre configuré pour permettre une réception de prochains arguments d' entrée WDATA d' une 20 prochaine exécution du traitement, pendant une exécution du traitement en cours. Les données et les paramètres sont stockés dans le registre d'entrée lorsque les arguments d'entrée WDATA sont reçus. Le traitement y relatif devient "en attente". 25 L'étage de sortie OUTRG est destiné à délivrer des résultats du traitement RDATA en cours. L'étage de sortie OUTRG comporte par exemple un registre de sortie à cet égard. A la fin d'un traitement, les résultats sont stockés dans le registre de sortie de l'étage de sortie OUTRG. 30 Selon une première alternative, un signal indicateur RRDY est alors activé. Le signal indicateur RRDY permet de communiquer une information de fin de traitement au processeur CPU, afin qu'il initie une lecture des données RDATA dans l'étage de sortie OUTRG. 7 Selon une deuxième alternative, l'étage de sortie OUTRG est configuré pour délivrer les résultats RDATA au processeur CPU dès que les résultats RDATA sont disponibles, et le processeur CPU est configuré pour être bloqué dans un état d'attente des résultats RDATA 5 tant que l'accélérateur matériel AM ne les lui a pas délivrés. Ainsi, une requête en lecture des résultats du traitement RDATA pendant un traitement en cours attendra que les résultats soient disponibles pour être permise. Cela signifie qu'il n'est pas nécessaire pour le processeur CPU de sonder un signal indicateur 10 RRDY, ou de subir une interruption par un tel signal. Les résultats RDATA sont lus par le processeur CPU dès qu'ils sont disponibles et le flux de sortie n'est pas interrompu. Ensuite, dès que les résultats RDATA ont été lus par le processeur CPU à partir de l'étage de sortie OUTRG, le traitement en 15 attente est exécuté. L'accélérateur matériel AM est ainsi configuré pour exécuter matériellement un éventuel prochain traitement en attente, immédiatement après avoir délivré les résultats RDATA au processeur CPU par l'étage de sortie OUTRG 20 Un nouvel ensemble d'arguments d'entrée WDATA (comprenant des données d'entrée et des paramètres) peut être écrit dans l'étage d'entrée INRG tant qu'il n'y a pas de traitement en attente. Cela signifie que le temps passé à attendre la fin du traitement 25 exécuté matériellement par l'accélérateur matériel AM peut être utilisé pour préparer le prochain traitement. Des nouvelles données d'entrée WDATA peuvent être reçues par l'accélérateur matériel AM par anticipation et le flux d'entrée n'est pas interrompu. 30 Ainsi, le flux d'entrée-sortie de l'accélérateur matériel ne subit pas d'attente et n'est pas interrompu. La figure 3 illustre un diagramme de convergence d'un exemple de traitement exécuté matériellement par l'accélérateur matériel AM. 8 Dans cet exemple, le traitement est un traitement itératif, et la précision du traitement est connue en fonction du seul nombre d'itérations. Le diagramme de la figure 3 représente une courbe de 5 convergence CV de la précision PR en échelle logarithmique en fonction du nombre d'itérations NB, quelles que soient les valeurs des variables d'entrée. La convergence représentée évolue à un taux de 1 chiffre binaire par itération. Le nombre d'itérations est directement représentatif de la 10 vitesse d'exécution du traitement, l'accélérateur matériel peut être configuré pour exécuter matériellement au moins une itération dudit traitement par cycle d'horloge, par exemple quatre itérations par cycles d'horloge. En effet, du fait de l'exécution matérielle du traitement, une 15 optimisation de la sorte est réalisable, contrairement à une exécution classique par le processeur, typiquement limitée à une itération sur plusieurs cycles d'horloge. Ainsi, ledit au moins un paramètre peut comprendre le nombre d'itérations du traitement, pour paramétrer la vitesse et la précision du 20 traitement. Une mise en oeuvre d'un algorithme de rotation numérique de coordonnées « CORDIC » forme un exemple avantageux d'un tel traitement. L'algorithme CORDIC (acronyme de l'expression anglaise 25 usuelle « COordinate Rotation Digital Computer ») est un algorithme d'approximations successives peu coûteux pour évaluer notamment des fonctions trigonométriques et hyperboliques. En mode trigonométrique (circulaire), le sinus et le cosinus d'un angle sont déterminés en faisant tourner le vecteur unitaire [1, 0] 30 dans des angles décroissants jusqu'à ce que la somme cumulative des angles de rotation soit égale à l'angle d'entrée. Les composantes cartésiennes x et y du vecteur pivoté correspondent alors respectivement au cosinus et au sinus de l'angle. 9 Inversement, l'angle d'un vecteur [x, y], correspondant à l'arc-tangente (y/x), est déterminé en faisant tourner le vecteur [x, y] par des angles décroissants successifs pour obtenir le vecteur unitaire [1, 0] La somme cumulative des angles de rotation donne l'angle du 5 vecteur original. L'algorithme CORDIC peut également être utilisé pour calculer les fonctions hyperboliques en remplaçant les rotations circulaires successives par des étapes le long d'une hyperbole. D'autres fonctions peuvent être dérivées des fonctions de base 10 décrites ci-dessus. Ainsi, l'accélérateur matériel est configuré pour exécuter matériellement un traitement comprenant au moins une fonction d'un type choisi dans le groupe comportant Cosinus, Sinus, Arc-tangente, Arc-sinus, Arc-cosinus, Sinus Hyperbolique, Cosinus Hyperbolique, 15 Arc-tangente Hyperbolique, Racine carré, Phase, Module, Exponentiel, Logarithme Népérien. La figure 4 illustre un appareil électronique APP, tel qu'un ordinateur de bord de véhicule, comprenant un microcontrôleur MC comportant un accélérateur matériel AM, tel que décrit précédemment 20 en relation avec les figures 1 à 3. Par ailleurs l'invention n'est pas limitée à ces modes de réalisation mais en embrasse toutes les variantes, par exemple, l'algorithme CORDIC a été présenté comme exemple non-limitatif d'un traitement itératif de précision connue en fonction du nombre 25 d'itérations, REVENDICATIONS1. Microcontrôleur destiné à exécuter un traitement paramétrable par au moins un paramètre, comportant un processeur (CPU) et un accélérateur matériel (AM) couplé au processeur et configuré pour exécuter matériellement le traitement (CAL) de façon accélérée, le processeur (CPU) étant configuré pour délivrer ledit au moins un paramètre à l'accélérateur matériel (AM). 2. Microcontrôleur selon la revendication 1, dans lequel ledit traitement (CAL) est un traitement itératif, et ledit au moins un paramètre comprend le nombre d'itérations (NB) du traitement. 3. Microcontrôleur selon la revendication 2, dans lequel la précision (PR) du traitement est déterminable par le seul nombre d'itérations (NB). 4. Microcontrôleur selon l'une des revendications 2 ou 3, comprenant un générateur de signal d'horloge configuré pour générer un signal d'horloge, dans lequel l'accélérateur matériel (AM) est configuré pour exécuter matériellement au moins une itération dudit traitement par cycle d'horloge. 5. Microcontrôleur selon l'une des revendications précédentes, dans lequel l'accélérateur matériel (AM) comprend en outre un étage d'entrée (INRG) destiné à recevoir des arguments d'entrée (WDATA) du traitement, l'étage d'entrée (INRG) étant configuré pour permettre une réception de prochains arguments d'entrée (WDATA) d'une prochaine exécution du traitement, pendant une exécution courante du traitement (CAL). 6. Microcontrôleur selon l'une des revendications précédentes, dans lequel l'accélérateur matériel (AM) comprend en outre un étage de sortie (OUTRG) destiné à délivrer des résultats (RDATA) du traitement, l'étage de sortie (OUTRG) étant configuré pour délivrer les résultats (RDATA) au processeur (CPU) dès que les résultats sont disponibles, le processeur (CPU) étant configuré pour être bloqué dans un état d'attente (RDATA) tant que l'accélérateur matériel (AM) ne lui a pas délivré les résultats. 11 7. Microcontrôleur selon la revendication 6, dans lequel l'accélérateur matériel (AM) est configuré pour exécuter matériellement un éventuel prochain traitement en attente, immédiatement après avoir délivré les résultats (RDATA) au 5 processeur (CPU) par l'étage de sortie (OUTRG). 8. Microcontrôleur selon l'une des revendications précédentes, dans lequel ledit traitement (CAL) comprend au moins une fonction d'un type spécifique choisi dans le groupe comportant Cosinus, Sinus, Arc-tangente, Arc-sinus, Arc-cosinus, Sinus Hyperbolique, Cosinus 10 Hyperbolique, Arc-tangente Hyperbolique, Racine carré, Phase, Module, Exponentielle, Logarithme Népérien. 9. Microcontrôleur selon l'une des revendications précédentes, dans lequel l'accélérateur matériel (AM) est configuré pour exécuter matériellement ledit traitement (CAL) en mettant en oeuvre un 15 algorithme de rotation numérique de coordonnées « CORDIC ». 10. Accélérateur matériel configuré pour exécuter matériellement de façon accélérée un traitement (CAL) paramétrable par au moins un paramètre, ledit au moins un paramètre étant destiné à être délivré par un processeur (CPU) d'un microcontrôleur (MC). 20 11. Accélérateur matériel selon la revendication 10, dans lequel ledit traitement (CAL) est un traitement par itérations, et ledit au moins un paramètre comprend le nombre d'itérations (NB) du traitement 12. Accélérateur matériel selon la revendication 11, dans lequel 25 la précision (PR) du traitement déterminable par le seul nombre d'itérations (NB). 13. Accélérateur matériel selon l'une des revendications 11 ou 12, destiné à recevoir un signal d'horloge comprenant des cycles d'horloge, et configuré pour exécuter matériellement au moins une 30 itération dudit traitement (CAL) par cycle d'horloge. 14. Accélérateur matériel selon l'une des revendications 10 à 13, comprenant en outre un étage d'entrée (INRG) destiné à recevoir des arguments d'entrée (WDATA) du traitement, dans lequel l'étage d' entrée (INRG) est configuré pour permettre une réception de 12 prochains arguments d'entrée d'une prochaine exécution du traitement, pendant une exécution courante du traitement (CAL). 15. Accélérateur matériel selon l'une des revendications 10 à 14, comprenant en outre un étage de sortie (OUTRG) destiné à délivrer 5 des résultats (RDATA) du traitement, dans lequel l'étage de sortie est configuré pour délivrer les résultats (RDATA) dès que les résultats sont disponibles et générer une commande destinée à bloquer le processeur récepteur des résultats, tant que les résultats (RDATA) ne lui sont pas délivrés par l'étage de sortie (OUTRG). 10 16. Accélérateur matériel la revendication 15, configuré pour exécuter matériellement un éventuel prochain traitement en attente, immédiatement dès que les résultats (RDATA) du traitement sont délivrés par l'étage de sortie (OUTRG). 17. Accélérateur matériel selon l'une des revendications 10 à 15 16, dans lequel ledit traitement (CAL) comprend au moins une fonction d'un type choisi dans le groupe comportant Cosinus, Sinus, Arc-tangente, Arc-sinus, Arc-cosinus, Sinus Hyperbolique, Cosinus Hyperbolique, Arc-tangente Hyperbolique, Racine carré, Phase, Module, Exponentiel, Logarithme Népérien. 20 18. Accélérateur matériel selon l'une des revendications 10 à 17, configuré pour accélérer matériellement l'exécution dudit traitement (CAL) en mettant en oeuvre un algorithme de rotation numérique de coordonnées « CORDIC ». 19. Appareil électronique (APP), tel qu'un ordinateur de bord 25 de véhicule, comprenant un microcontrôleur (MC) selon l'une des revendications 1 à 9.