Brevet FR3071642A1 (20190329)

REVENDICATIONS1. Procédé d'exécution d'un programme par un appareil électronique, ce pro- gramme comportant une fonction à réaliser, caractérisé en ce que le procédé com5 porte : a) la fourniture (102) : - d'une signature préenregistrée qui identifie sans ambiguïté une fonction prédéterminée, cette signature comportant à cet effet au moins une séquence préenregistrée d'identifiants d'opcodes placés les uns derrière les autres dans l'ordre 10 où ces opcodes identifiés doivent être exécutés pour réaliser ladite fonction prédéterminée, - associé à chaque signature préenregistrée, un jeu prédéterminé d'instructions, ce jeu prédéterminé d'instructions étant choisi dans le groupe consistant en : - un jeu prédéterminé d'instructions de configuration d'un accélérateur matériel 15 configurable, ce jeu prédéterminé d'instructions étant apte, lorsqu'il est chargé dans cet accélérateur matériel, à configurer cet accélérateur matériel pour qu'il réalise ladite fonction prédéterminée, et - un code-machine directement exécutable par le microprocesseur ou par un coprocesseur, ce code-machine étant apte, lorsqu'il est exécuté par ce 20 microprocesseur ou ce coprocesseur, à faire réaliser par le microprocesseur ou le coprocesseur ladite fonction prédéterminée, b) lorsqu'une fonction du programme est exécutée par le microprocesseur, la collecte (124) d'une signature de cette fonction, cette collecte comportant la collecte des identifiants des opcodes exécutés, dans leur ordre d'exécution, pour obtenir une 25 séquence collectée d'identifiants d'opcodes, puis c) la comparaison (128) de la signature collectée à la signature préenregistrée, cette comparaison comportant la comparaison de la séquence collectée à la séquence préenregistrée, la signature collectée correspondant à la signature préenregistrée seulement si la séquence collectée correspond à la séquence préenregistrée, puis 30 d) si la signature collectée correspond à la signature préenregistrée, l'association (132) de l'adresse de branchement dans le programme où débute l'exécution de cette fonction, au jeu d'instructions associé à cette signature préenregistrée, et e) si la signature collectée ne correspond pas à la signature préenregistrée, l'absence d'association de l'adresse de branchement dans le programme où débute l'exécution 35 de cette fonction, au jeu d'instructions associé à cette signature préenregistrée, puis f) si l'exécution du programme retourne à une adresse de branchement associée à un jeu d'instructions, le déclenchement (120) de l'exécution de ladite fonction prédéterminée par un accélérateur matériel configuré avec ce jeu d'instructions ou le déclenchement de l'exécution par le microprocesseur ou un coprocesseur du code- 40 machine de ce jeu d'instructions. 29\n<CLM>\1\tProcédé selon la revendication 1, dans lequel : - lors de l'étape a) (102), la signature préenregistrée comporte en plus une cartographie préenregistrée des accès mémoires de la fonction prédéterminée, cette cartographie définissant les positions relatives, les uns par rapport aux autres, de N mots-machine lus ou écrits en mémoire lors de l'exécution de la fonction prédéterminée par le microprocesseur, où N est un nombre entier supérieur ou égal à quatre, - l'étape b) (124) comporte en même temps que la collecte des identifiants d'opcodes 10 exécutés, la collecte, dans l'ordre d'exécution des opcodes de lecture ou d'écriture en mémoire, des adresses des mots-machine lus ou écrits par la fonction exécutée pour obtenir un séquence collectée d'adresses, - l'étape c) (128) comporte la recherche, dans la séquence collectée d'adresses, d'un ensemble de N mots-machine dont les positions relatives, les uns par rapport aux 15 autres, correspondent aux positions relatives définies par la cartographie préenregistrée, la signature collectée correspondant à la signature préenregistrée seulement si un tel ensemble de N mots-machine est trouvé dans la séquence collectée d'adresses. 20\n<CLM>\1\tProcédé selon la revendication 2, dans lequel : - lors de l'étape a) (102), la cartographie préenregistrée associe à au moins l'un des N mots-machine, une séquence d'identifiants d'opcodes exécutés immédiatement avant ou après la lecture et l'écriture d'une donnée dans ce mot-machine, - l'étape b) (124) comporte, en même temps que la collecte de la séquence 25 d'adresses, la collecte pour chacun des mots machines lu et écrit lors de l'exécution de la fonction, de la séquence d'identifiants d'opcodes exécutés immédiatement avant ou après la lecture ou l'écriture dans ce mot-machine, - lors de l'étape c) (128), la signature collectée correspondant à la signature préenregistrée seulement si pour chacun des N mots-machine de l'ensemble trouvé, 30 la séquence collectée d'identifiants d'opcodes exécutés immédiatement avant ou après la lecture ou l'écriture dans ce mot-machine correspond à la séquence d'identifiants d'opcodes associée à ce mot-machine par la cartographie préenregistrée. 35\n<CLM>\1\tProcédé selon la revendication 3, dans lequel chaque séquence d'identifiants d'opcodes de la signature préenregistrée est associée à un mot-machine dont la position relative par rapport aux N-1 autres mots-machine est définie par la cartographie préenregistrée. 40\n<CLM>\1\tProcédé selon la revendication 2, dans lequel aucun des N mots-machine dont 30 les positions relatives, les uns par rapport aux autres, sont définies par la cartographie préenregistrée, n'est associé à une séquence d'identifiants d'opcodes exécutés immédiatement avant ou après la lecture ou l'écriture d'une donnée dans ce mot-machine. 5\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel - la fonction prédéterminée est une fonction paramétrable, les valeurs du ou des paramètres de cette fonction prédéterminée étant connues uniquement au moment de son exécution par le microprocesseur, - lors de l'étape a) (102), la signature préenregistrée identifie sans ambiguïté seulement la fonction prédéterminée paramétrée avec des valeurs prédéterminées et le jeu d'instructions de configuration est seulement apte à configurer l'accélérateur matériel pour qu'il exécute la fonction prédéterminée paramétrée avec ces valeurs prédéterminées et le code machine est seulement apte, lorsqu'il est exécuté par le microprocesseur ou le coprocesseur, à faire réaliser par ce microprocesseur ou ce coprocesseur ladite fonction prédéterminée paramétrée avec ces valeurs prédéterminées, - lors de l'étape d), l'association (132) de l'adresse de branchement à ces valeurs prédéterminées des paramètres, et - avant de déclencher l'exécution de la fonction prédéterminée, le procédé comporte la vérification (118) que les valeurs actuelles des paramètres avec lesquels la fonction est appelée correspondent aux valeurs prédéterminées de ces mêmes paramètres associées à cette adresse de branchement et l'étape f) est déclenchée uniquement si les valeurs actuelles et les valeurs prédéterminées des paramètres sont identiques.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - l'étape a) (102) comporte la fourniture de plusieurs signatures préenregistrées différentes qui identifient chacune sans ambiguïté une variantes d'implémentations respective de la même fonction prédéterminée, toutes ces signatures préenregistrées qui identifient sans ambiguïté la même fonction prédéterminée étant associées au même jeu prédéterminé d'instructions, - lors de l'exécution du programme, l'étape c) (128) est exécutée pour chacune de ces signatures préenregistrées. 35\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - l'étape a) (102) comporte la fourniture de plusieurs signatures préenregistrées qui identifient chacune sans ambiguïté des fonctions prédéterminées respectives différentes, chacune de ces signatures préenregistrées étant associée à un jeu 40 prédéterminé d'instructions différent de ceux auxquels sont associés les autres 31 signatures préenregistrées, et - lors de l'exécution du programme, l'étape c) (128) est exécutée pour chacune des signatures préenregistrées. 5\n<CLM>\1\tSupport d'enregistrement lisible par un microprocesseur sur lequel est enregis- tré un programme d'ordinateur, caractérisé en ce qu'il comporte des instructions de code de programme d'ordinateur pour l'exécution des étapes d'un procédé conforme à l'une quelconque des revendications précédentes, lorsque ces instructions sont exécutées par le microprocesseur. 10\n<CLM>\1\tAppareil électronique apte à exécuter un programme comportant une fonction à réaliser, cet appareil électronique comportant à cet effet : - un microprocesseur (10) programmable apte à exécuter le programme, et - une mémoire (6), 15 caractérisé en ce que : - la mémoire (6) comporte : - une signature préenregistrée qui identifie sans ambiguïté une fonction prédéterminée, cette signature comportant à cet effet au moins une séquence préenregistrée d'identifiants d'opcodes placés les uns derrière les autres dans 20 l'ordre où ces opcodes identifiés doivent être exécutés pour réaliser ladite fonction prédéterminée, - associé à chaque signature préenregistrée, un jeu prédéterminé d'instructions, ce jeu prédéterminé d'instructions étant choisi dans le groupe consistant en : 25 - un jeu prédéterminé d'instructions de configuration d'un accélérateur matériel configurable, ce jeu prédéterminé d'instructions étant apte, lorsqu'il est chargé dans cet accélérateur matériel, à configurer cet accélérateur matériel pour qu'il réalise ladite fonction prédéterminée, et - un code-machine directement exécutable par le microprocesseur ou par 30 un coprocesseur, ce code-machine étant apte, lorsqu'il est exécuté par ce microprocesseur ou ce coprocesseur, à faire réaliser par le microprocesseur ou le coprocesseur ladite fonction prédéterminée, - le microprocesseur (10) est programmé pour réaliser les étapes suivantes : b) lorsqu'une fonction du programme est exécutée par le microprocesseur, la collecte 35 d'une signature de cette fonction, cette collecte comportant la collecte des identifiants des opcodes exécutés, dans leur ordre d'exécution, pour obtenir une séquence collectée d'identifiants d'opcodes, puis c) la comparaison de la signature collectée à la signature préenregistrée, cette comparaison comportant la comparaison de la séquence collectée à la séquence 40 préenregistrée, la signature collectée correspondant à la signature préenregistrée seulement si la séquence collectée correspond à la séquence préenregistrée, puis 32 d) si la signature collectée correspond à la signature préenregistrée, l'association de l'adresse de branchement dans le programme où débute l'exécution de cette fonction, au jeu d'instructions associé à cette signature préenregistrée, et e) si la signature collectée ne correspond pas à la signature préenregistrée, l'absence 5 d'association de l'adresse de branchement dans le programme où débute l'exécution de cette fonction, au jeu d'instructions associé à cette signature préenregistrée, puis f) si l'exécution du programme retourne à une adresse de branchement associée à un jeu d'instructions, le déclenchement de l'exécution de ladite fonction prédéterminée par un accélérateur matériel configuré avec ce jeu d'instructions ou le déclenchement 10 de l'exécution par le microprocesseur ou un coprocesseur du code-machine de ce jeu d'instructions.\n<CLM>\1\tAppareil selon la revendication 10, caractérisé en ce qu'il comporte un accélé- rateur matériel (12) configurable dans lequel le jeu prédéterminé d'instructions est 15 apte à être changé pour configurer cet accélérateur matériel pour qu'il réalise ladite fonction prédéterminée.\n<CLM>\1\tAppareil selon la revendication 11, dans lequel l'accélérateur matériel (12) est un composant FPGA (« Field-Programmable Gate Array »). 20\n<CLM>\1\tAppareil selon la revendication 10, caractérisé en ce qu'il comporte un copro- cesseur (152) apte à exécuter le jeu prédéterminé d'instructions pour qu'il réalise ladite fonction prédéterminée.