FR 3098622 A1 20210115 FR 1907851 A 20190712 Description Titre de l'invention : PROCEDE DE GESTION D'INSTRUCTIONS D'UN PROGRAMME CONTENUES DANS UNE MEMOIRE PROGRAMME ET CIRCUIT INTEGRE COR- RESPONDANT [0001] Des modes de mise en oeuvre et de réalisation de l'invention concernent les circuits intégrés et plus particulièrement les circuits intégrés formant des systèmes sur puce connus de l'homme du métier sous le terme anglo-saxon « System on chip » (SoC). [0002] Un système sur puce peut comprendre une mémoire non volatile contenant par exemple des lignes d'instructions destinées à être exécutées par une unité de traitement du système sur puce. [0003] L'unité de traitement exécute des instructions contenues dans une première ligne d'instructions identifiée par une première adresse dans la mémoire non volatile. [0004] L'unité de traitement est reliée à la mémoire non volatile par un bus. [0005] A la fin de l'exécution de la première ligne d'instructions, l'unité de traitement émet une requête contenant une deuxième adresse d'une deuxième ligne d'instructions dans la mémoire non volatile. [0006] Comme l'unité de traitement accède directement à la deuxième ligne d'instructions dans la mémoire non volatile, durant la durée (temps de latence) entre l'émission de la requête et la lecture de la deuxième ligne d'instructions, l'unité de traitement est inactive. [0007] Afin de diminuer le temps de latence, l'unité de traitement peut être couplée au bus par l'intermédiaire d'un dispositif de prélecture du contenu de la mémoire non volatile, la durée d'échange de données entre l'unité de traitement et ledit dispositif étant inférieure au temps de latence. [0008] Le dispositif de prélecture comprend une mémoire volatile dont la durée d'accès est plus courte que la durée d'accès à la mémoire non volatile. [0009] Lorsque l'unité de traitement exécute les instructions de la première ligne d'instructions, le dispositif de prélecture stocke la deuxième ligne d'instructions dans la mémoire volatile. [0010] En d'autres termes, le dispositif de prélecture stocke dans le mémoire volatile la ligne d'instructions identifiée par une adresse suivant l'adresse de la ligne d'instructions en cours d'exécution par l'unité de traitement. [0011] Cependant, les instructions en cours d'exécution par l'unité de traitement peuvent contenir un saut de ligne de sorte que la prochaine ligne d'instructions exécutée par l'unité de traitement n'est pas celle suivant la ligne d'instructions en cours d'exécution 2 (par exemple la prochaine ligne d'instructions exécutée par l'unité de traitement est identifiée par une adresse désignant la dixième ligne suivant l'adresse de la ligne d'instructions en cours d'exécution). [0012] Lorsque la ligne d'instructions en cours d'exécution a été exécutée, l'unité de traitement émet une requête pour lire la dixième ligne d'instructions dans la mémoire non volatile. [0013] Le stockage d'une ligne d'instructions dans la mémoire volatile consomme de la puissance électrique. [0014] Comme les instructions stockées dans la mémoire volatile ne sont pas exécutées, d'une part, de la puissance électrique est perdue, et, d'autre part l'unité de traitement est inactive pendant le temps de latence réduisant le volume de données traitées par l'unité de traitement pendant une durée déterminée. [0015] Il existe un besoin d'économiser l'énergie électrique consommée par le circuit intégré tout en réduisant la durée d'inactivité d'une unité de traitement dudit circuit. [0016] Selon des modes de mises en oeuvre et de réalisation, il est avantageusement proposé de stocker dans une mémoire volatile une ligne d'instructions d'un programme suivant une première ligne d'instructions dudit programme en cours d'exécution si les instructions de la première ligne d'instructions ne comportent aucune instruction de branchement. [0017] Selon un aspect, il est proposé un procédé comprenant : [0018] - un stockage dans une mémoire programme de lignes d'instructions d'un programme destiné à être exécuté par une unité de traitement, chaque ligne comportant au moins une instruction ; [0019] - un stockage dans des moyens de mémoire, d'instructions de référence interprétables par l'unité de traitement comme étant des instructions de branchement ; [0020] - des requêtes séquentielles par l'unité de traitement des différentes lignes d'instructions, et, pour une ligne courante fournie en réponse à la requête con-espondante, (a) une détermination, en utilisant les instructions de référence, si au moins l'une des instructions de la ligne courante est ou non une instruction de branchement ; et [0021] - si au moins une instruction est une instruction de branchement, (b) une exécution par l'unité de traitement des instructions de la ligne courante avant l'émission d'une requête de la ligne suivante par l'unité de traitement. [0022] Avantageusement, si la ligne d'instructions courante contient au moins une ins- truction de branchement, aucune ligne d'instructions n'est stockée dans une mémoire volatile permettant ainsi d'économiser la quantité d'énergie nécessaire au stockage [0023] Les instructions de branchement comprennent par exemple les instructions de saut de ligne connues par l'homme du métier sous les dénominations anglo-saxonnes 3 « jump », « goto », interprétables par l'unité de traitement. [0024] Les moyens de mémoire peuvent par exemple comprendre une mémoire non volatile ou un circuit logique permettant de coder en dur les instructions de référence. [0025] Selon un mode de mise en oeuvre, si aucune instruction de la ligne courante n'est une instruction de branchement, le procédé comprend : [0026] - (c) une exécution des instructions de la ligne courante par l'unité de traitement ; [0027] - (d) un stockage dans une première mémoire volatile de l'adresse de la ligne d'instructions suivante ; et [0028] - (e) un stockage dans une deuxième mémoire volatile des instructions de la ligne d'instructions suivante contenue dans la mémoire programme. [0029] Avantageusement le procédé comprend, après l'exécution des étapes (c), (d) et (e) et lors de la requête de la ligne suivante par l'unité de traitement, une fourniture de la ligne suivante à partir des contenus des première et deuxième mémoires volatiles, et ladite ligne suivante devenant une nouvelle ligne courante, une nouvelle exécution de l'étape (a) et de l'étape (h) ou des étapes (c) à (c). [0030] L'unité de traitement lit ainsi les instructions de la ligne suivante directement dans la deuxième mémoire volatile de sorte que le temps de latence est plus faible que dans le cas d'une lecture dans la mémoire programme. [0031] Avantageusement la durée d'inactivité de l'unité de traitement est nulle. [0032] Selon encore un autre mode de mise en oeuvre, les lignes d'instructions comprennent chacune quatre instructions de 32 bits. [0033] Selon un autre aspect, il est proposé un circuit intégré, comprenant : [0034] - une unité de traitement ; [0035] - une mémoire programme configurée pour stocker des lignes d'instructions d'un programme destiné à être exécuté par l'unité de traitement, chaque ligne comportant au moins une instruction ; [0036] - des moyens de mémoire configurés pour stocker des instructions de référence inter- prétables par l'unité de traitement comme étant des instructions de branchement ; [0037] - l'unité de traitement étant configurée pour émettre séquentiellement des requêtes des différentes lignes d'instructions ; [0038] - le circuit intégré comprend également des premiers moyens de comparaison configurés pour déterminer, en utilisant les instructions de référence, si au moins l'une des instructions d'une ligne courante fournie en réponse à la requête correspondante est ou non une instruction de branchement ; et [0039] - si au moins une instruction est une instruction de branchement, l'unité de traitement est configurée pour exécuter les instructions de la ligne courante avant l'émission d'une requête de la ligne suivante. [0040] Selon un mode de réalisation, le circuit intégré comprend en outre : [0041] - une première mémoire volatile configurée pour stocker l'adresse de la ligne d'instruction suivante ; [0042] - une deuxième mémoire volatile configurée pour stocker les instructions de la ligne suivante ; et [0043] - des moyens de commande configurés pour, si aucune instruction de la ligne courante n'est une instruction de branchement: [0044] o stocker dans la première mémoire volatile l'adresse de la ligne d'instruction suivante ; et [0045] o stocker dans la deuxième mémoire volatile des instructions de la ligne suivante, [0046] l'unité de traitement étant en outre configurée pour exécuter les instructions de la ligne courante également si aucune instruction de la ligne courante n'est une instruction de branchement. [0047] Selon un autre mode de réalisation, le circuit intégré comprend en outre : [0048] - des deuxièmes moyens de comparaison configurés pour, lors de la requête de la ligne suivante par l'unité de traitement, comparer l'adresse contenue dans ladite requête et l'adresse contenue dans la première mémoire volatile ; [0049] - un premier multiplexeur relié à l'unité de traitement et configure pour sélectionner la mémoire programme ou la deuxième mémoire volatile ; et [0050] - un deuxième multiplexeur relié aux premiers moyens de comparaison et configurés pour sélectionner la mémoire programme ou la deuxième mémoire volatile ; [0051] les moyens de commande étant en outre configurés pour commander les premier et deuxième multiplexeurs de sorte que le contenu de la deuxième mémoire volatile soit accessible à l'unité de traitement et aux premiers moyens de comparaison lorsque l'adresse stockée dans la première mémoire volatile et l'adresse contenue dans ladite requête sont identiques ou pour commander les premier et deuxième multiplexeurs de sorte que le contenu de la mémoire programme soit accessible à l'unité de traitement et aux premiers moyens de comparaison lorsque l'adresse stockée dans la première mémoire volatile et l'adresse contenue dans ladite requête ne sont pas identiques. [0052] Selon un autre mode de réalisation, les moyens de commande comprennent une machine d'état. [0053] Selon encore un autre mode de réalisation, les lignes d'instructions comprennent chacune quatre instructions de 32 bits. [0054] Selon un autre aspect, il est proposé un appareil incorporant un circuit intégré tel que défini ci-avant. [0055] D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : [0056] [fig.1] [0057] [fig.2] illustrent des modes de réalisation et de mise en oeuvre de l'invention. [0058] On se réfère à la figure 1 qui représente un exemple de mode de réalisation d'un circuit intégré CI incorporé dans un appareil électronique CF. [0059] Le circuit intégré CI comprend une unité de traitement 4 et une mémoire programme 1 stockant des lignes d'instructions Li et L2 d'un programme APP destiné à être exécuté par l'unité de traitement 4. [0060] L'unité de traitement 4 est configurée pour émettre séquentiellement des requêtes des différentes lignes d'instructions Li et L2. [0061] Chaque ligne comporte par exemple quatre instructions codées chacune sur 32 bits. [0062] Bien entendu, les lignes d'instructions du programme APP peuvent comprendre un nombre différent d'instructions codés sur un nombre différents de bits, chaque ligne comprenant au moins une instruction. [0063] Les lignes Ll et L2 sont respectivement identifiées dans la mémoire programme 1 par les adresses AD1, AD2 et AD3, et contiennent respectivement les instructions INST11, INST12, INST13 et INST14, et INST21, INST22, INST23 et INST24. [0064] Bien entendu la mémoire programme 1 pourrait être extérieure au circuit intégré CI. [0065] Le circuit intégré CI comprend en outre : [0066] des moyens de mémoire, ici une mémoire non volatile 2, stockant des ins- tructions de référence INST interprétables par l'unité de traitement 4 comme étant des instructions de branchement ; des premiers moyens de comparaison 3 configurés pour déterminer en utilisant les instructions de références si au moins l'une des instructions d'une ligne courante fournie en réponse à la requête correspondante est ou non une instruction de branchement. [0067] Dans un souci de clarté de l'exposé, on suppose dans ce qui suit que la ligne Li d'instructions est la ligne courante lue suite à l'émission d'une requête REQ comprenant l'adresse ADI, par l'unité de traitement 4. [0068] L'unité de traitement 4 est en outre configurée pour exécuter les instructions INST11, INST12, INSTI3 et INSTI4 de la ligne courante Li si au moins une instruction INST11, INSTI2, INSTI3 et INSTI4 est une instruction de branchement, avant l'émission d'une requête REQ1 de la ligne suivante. [0069] La requête REQI comprend l'adresse AD d'une ligne d'instructions. [0070] Les instructions de branchement comprennent par exemple les instructions de saut de ligne connues par l'homme du métier sous les dénominations anglo-saxonnes jump », « goto », interprétables par l'unité de traitement. [0071] Le circuit intégré CI comprend : [0072] - une première mémoire volatile 5 configurée pour stocker l'adresse AD2 de la ligne d'instruction L2 suivant la ligne courant LI ; 6 [0073] - une deuxième mémoire volatile 6 configurée pour stocker les instructions INST21, INST22,INST23 et 1NST24 de la ligne L2 suivante; et [0074] - des moyens de commande 7 configurés pour : [0075] o stocker dans la première mémoire volatile 5 l'adresse de la ligne d'instruction L2 ; et [0076] o stocker dans la deuxième mémoire volatile les instructions INST21, INST22, INST23 et INST24, [0077] si aucune instruction INST11, INST22, INST23 et INST24 de la ligne Li n'est une instruction de branchement INST. [0078] L'unité de traitement 4 est en outre configurée pour exécuter les instructions 1NST11, INST22,INST23 et 1NST24 de la ligne Ll si aucune instruction de la ligne Ll n'est une instruction de branchement. [0079] Les moyens de commande 7 comprennent par exemple une machine d'état 7a. [0080] Le circuit intégré CI comprend en outre des deuxièmes moyens de comparaison 8 configurés pour comparer l'adresse AD contenue dans la requête REQ1 et l'adresse contenue dans la première mémoire volatile 5. [0081] Les premiers et deuxièmes moyens de comparaison 3 et 8 sont réalisés par exemple à partir de portes logiques et d'éléments de logique séquentielle. [0082] Le circuit intégré CI comprend également: [0083] - un premier multiplexeur 9 relié à l'unité de traitement et configure pour sé- lectionner la mémoire programme 1 ou la deuxième mémoire volatile 6 ; et [0084] - un deuxième multiplexeur 10 relié aux premiers moyens de comparaison 3 et configurés pour sélectionner la mémoire programme 1 ou la deuxième mémoire volatile 6. [0085] Les moyens de commande 7 sont en outre configurés pour commander les premier et deuxième multiplexeurs 9 et 10 de sorte que le contenu de la deuxième mémoire volatile 6 soit accessible à l'unité de traitement 4 et aux premiers moyens de comparaison 3 lorsque l'adresse AD2 stockée dans la première mémoire volatile 5 et l'adresse AD contenue dans la requête REQ sont identiques. [0086] L'unité de traitement 4 lit alors les instructions INST21, INST22, ST23 et INST24 de la deuxième ligne L2 d'instructions directement dans la deuxième mémoire volatile 6 de sorte que le temps de latence est plus faible que dans le cas d'une lecture dans la mémoire programme 1. [0087] Avantageusement la durée d'inactivité de l'unité de traitement 4 est nulle. [0088] Si l'adresse AD2 stockée dans la première mémoire volatile 5 et l'adresse AD contenue dans la requête REQ ne sont pas identiques, les moyens de commande 7 sont configurés pour commander les premier et deuxième multiplexeurs 9 et 10 de sorte que le contenu de la mémoire programme 1 soit accessible à l'unité de traitement 8 et aux 7 premiers moyens de comparaison 3. [0089] L'unité de traitement 4 est reliée à un bus 11 par l'intermédiaire du premier mul- tiplexeur 9. [0090] La mémoire programme 1, les première et deuxième mémoires volatiles 5 et 6, et les deuxièmes moyens de comparaison 8 sont reliés au bus 11. [0091] Les premiers moyens de comparaison 3 sont reliés au bus 11 par l'intermédiaire du deuxième multiplexeur 10. [0092] La figure 2 illustre un exemple de mise en oeuvre du circuit intégré CI décrit pré- cédemment. [0093] On suppose que les première et deuxième mémoires volatiles 5 et 6 ne contiennent pas d'adresses ni d'instructions du programme APP. [0094] Dans une première étape 20, l'unité de traitement 4 émet la requête REQ sur le bus 11 comprenant l'adresse AD1 de la première ligne Li. [0095] Puis dans une étape 21, les deuxièmes moyens de comparaison 8 comparent l'adresse AD1 au contenu de la première mémoire volatile 5. Les deuxièmes moyens de comparaison 9 transmettent le résultat de la comparaison aux moyens de commande 7. [0096] Comme l'adresse AD1 n'est pas identique au contenu de la première mémoire volatile S. les moyens de commande 7 configurent le premier multiplexeur 9 de sorte que l'unité de traitement 4 lit et exécute la première ligne Ll d'instruction depuis la mémoire programme 1 et configurent le deuxième multiplexeur 10 de sorte que les premiers moyens de comparaison 3 comparent les instructions INST II, INST12, INST13 et INSTI4 de la ligne Li aux instructions INST (étape 22). [0097] Si l'adresse AD1 est identique au contenu de la première mémoire volatile 5, les moyens de commande 7 configurent le premier multiplexeur 8 de sorte que l'unité de traitement 4 lit et exécute la première ligne Li d'instruction à partir de la deuxième mémoire volatile 6 et configurent le deuxième multiplexeur 10 de sorte que les premiers moyens de comparaison 3 comparent les instructions INST II, INST12, INST13 et INSTI4 stockées dans la deuxième mémoire volatile 6 aux instructions INST (étape 23). [0098] Les premiers moyens de comparaison 2 transmettent le résultat de la comparaison aux moyens 7 (étape 24). [0099] Si au moins l'une des instructions INSTII, INSTI2, INSTI3 et INSTI4 contient l'une des instructions INST, on remonte à l'étape 20 et on attend que l'unité de traitement émette la requête suivante REQ1. [0100] Si aucune des instructions INSTII, INSTI2, INSTI3 et INST14 ne contient l'une des instructions INST, les moyens de commande 7 lisent la ligne L2 suivante dans la mémoire programme 1, stockent l'adresse AD2 dans la première mémoire volatile 5, et stockent les instructions INST2I. IN5T22, INST23 et INST24 dans la deuxième 8 mémoire volatile 6 (étape 25). L'unité de traitement 4 exécute la ligne Ll, on remonte à l'étape 20 et on attend la nouvelle requête REQ1. [0101] On suppose dans ce qui suit qu'aucune des instructions INST11, INST12, INST13 et INST14 contient l'une des instructions INST. [0102] On suppose que l'adresse AD contenue dans la requête REQ1 est l'adresse AD2 de la deuxième ligne L2. [0103] Lorsque la nouvelle requête REQ1 est émise (étape 20), les deuxièmes moyens de comparaison 8 comparent l'adresse AD à l'adresse AD2 contenue dans la première mémoire volatile 5. [0104] Comme l'adresse AD est identique à l'adresse AD2 contenue dans la première mémoire volatile 5, l'unité de traitement 4 lit et exécute la ligne L2 d'instruction à partir de la deuxième mémoire volatile 6 et les premiers moyens de comparaison 3 comparent les instructions INST21, INST22, INST23 et INST24 stockées dans la deuxième mémoire volatile 6 aux instructions INST (étape 23). [0105] Puis on poursuit à l'étape 24 tel que décrite précédemment. 9 REVENDICATIONS[Revendication 1] Procédé comprenant : - un stockage dans une mémoire programme (1) de lignes d'instructions (LI, L2) d'un programme destiné à être exécuté par une unité de traitement (4), chaque ligne comportant au moins une instruction (INST11, INST12, INST13, INST14, INST21, INST22, INST23, INST24); - un stockage dans des moyens de mémoire (2), d'instructions de référence (INST) interprétables par l'unité de traitement comme étant des instructions de branchement ; des requêtes séquentielles par l'unité de traitement des différentes lignes d'instructions et pour une ligne courante fournie en réponse à la requête correspondante, (a) une détermination, en utilisant les instructions de référence, si au moins l'une des instructions de la ligne courante est ou non une instruction de branchement ; et si au moins une instruction est une instruction de branchement, (b) une exécution par l'unité de traitement des instructions de la ligne courante avant l'émission d'une requête de la ligne suivante par l'unité de traitement. [Revendication 2] Procédé selon la revendication 1, comprenant, si aucune instruction de la ligne courante n'est une instruction de branchement, (c) une exécution des instructions de la ligne courante par l'unité de traitement (4) ; (d) un stockage dans une première mémoire volatile (5) de l'adresse de la ligne d'instructions suivante ; et (e) un stockage dans une deuxième mémoire volatile (6) des instructions de la ligne d'instructions suivante contenue dans la mémoire programme. [Revendication 3] Procédé selon la revendication 2, comprenant, après l'exécution des étapes (c), (d) et (c) et lors de la requête de la ligne suivante par l'unité de traitement (4), une fourniture de la ligne suivante à partir des contenus des première et deuxième mémoires volatiles (5, 6), et ladite ligne suivante devenant une nouvelle ligne courante, une nouvelle 10 exécution de l'étape (a) et de l'étape (b) ou des étapes (c) à (c). [Revendication 4] Procédé selon l'une des revendications 1 à 3, dans lequel chaque ligne (L1. L2) d'instructions comprend quatre instructions de 32 bits chacune. [Revendication 5] Circuit intégré (CI) comprenant : une unité de traitement (4) ; une mémoire programme (1) configurée pour stocker des lignes (L1, L2) d'instructions d'un programme destiné à être exécuté par l'unité de traitement, chaque ligne comportant au moins une instruction (INST11, INST12, INST13, INST14, INST21, INST22, INST23, INST24) ; des moyens de mémoire (2) configure pour stocker des instructions (INST) de référence interprétables par l'unité de traitement comme étant des instructions de branchement ; l'unité de traitement étant configurée pour émettre séquentiellement des requêtes des différentes lignes d'instructions ; des premiers moyens de comparaison (3) configurés pour déterminer en utilisant les instructions de références si au moins l'une des instructions d'une ligne courante fournie en réponse à la requête correspondante est ou non une instruction de branchement ; et l'unité de traitement (4) étant configurée pour exécuter les instructions de la ligne courante si au moins une instruction est une instruction de branchement avant l'émission d'une requête de la ligne suivante. [Revendication 6] Circuit intégré selon la revendication 5, comprenant en outre : une première mémoire volatile (5) configurée pour stocker l'adresse de la ligne d'instruction suivante ; une deuxième mémoire volatile (6) configurée pour stocker les instructions de la ligne suivante ; et des moyens de commande (7) configurés pour : - stocker dans la première mémoire volatile l'adresse de la ligne d'instruction suivante ; et - stocker dans la deuxième mémoire volatile des instructions de la ligne suivante, 11 [Revendication 7] si aucune instruction de la ligne courante lue n'est une instruction de branchement, , et circuit intégré dans lequel l'unité de traitement est en outre configurée pour exécuter les instructions de la ligne courante si aucune instruction de la ligne courante n'est une instruction dc branchement. Circuit intégré selon la revendication 6, comprenant en outre : des deuxièmes moyens de comparaison (8) configurés pour lors de la requête de la ligne suivante par l'unité de traitement, comparer l'adresse contenue dans ladite requête et l'adresse contenue dans la première mémoire volatile (5) ; un premier multiplexeur (9) relié à l'unité de traitement (4) et configure pour sélectionner la mémoire programme (1) ou la deuxième mémoire volatile (6) ; et un deuxième multiplexeur (10) relié aux premiers moyens de comparaison (3) et configurés pour sélectionner la mémoire programme ou la deuxième mémoire volatile ; les moyens de commande étant en outre configurés pour commander les premier et deuxième multiplexeurs de sorte que le contenu de la deuxième mémoire volatile soit accessible à l'unité de traitement et aux premiers moyens de comparaison lorsque l'adresse stockée dans la première mémoire volatile et l'adresse contenue dans ladite requête sont identiques ou pour commander les premier et deuxième multiplexeurs de sorte que le contenu de la mémoire programme soit accessible à l'unité de traitement et aux premiers moyens de comparaison lorsque l'adresse stockée dans la première mémoire volatile et l'adresse contenue dans ladite requête ne sont pas identiques. [Revendication 8] Circuit intégré selon l'une des revendications 6 et 7, dans lequel les moyens de commande (7) comprennent une machine d'état (7a). [Revendication 9] Circuit intégré selon l'une des revendications 6 à 8, dans lequel chaque ligne (L1, L2) d'instructions comprend quatre instructions de 32 bits chacune. [Revendication 10] Appareil (CP) comprenant un circuit intégré selon l'une quelconque des revendications 6 à 9.