Brevet FR3038086A1 (20161230)
REVENDICATIONS1. Procédé d'exécution d'un programme d'ordinateur comportant au moins une fonction paramétrée susceptible d'être exécutée une ou plusieurs fois au cours de l'exécution du programme, cette fonction comportant au moins un paramètre dont la valeur est obtenue au moment où la fonction est appelée pour être exécutée par un microprocesseur ou durant son exécution par le microprocesseur, ce procédé comportant : a) la fourniture d'un code générique de la fonction dans lequel chaque paramètre de 10 la fonction est codé comme une variable de sorte que ce code générique ne contient pas en lui-même la valeur de ce paramètre mais contient une opération de lecture de sa valeur à une adresse spécifiée par le code générique, b) l'enregistrement (60) dans une mémoire de plusieurs codes spécialisés de cette fonction, écrits dans le langage machine du microprocesseur, chaque code spécialisé 15 réalisant, lorsqu'il est exécuté par le microprocesseur, la même fonction que le code générique mais dans le cas particulier où au moins un paramètre de la fonction est spécialisé, la spécialisation d'un paramètre de la fonction consistant à affecter une valeur spécifique à ce paramètre puis à traiter ce paramètre non plus comme une variable mais comme une constante de sorte que le code spécialisé ne comporte 20 aucune opération de lecture de sa valeur à une adresse située en dehors de la plage continue d'adresses où est enregistré ce code spécialisé, les codes spécialisés enregistrés différant les uns des autres par la valeur affectée au même paramètre spécialisé ou par le paramètre qui a été spécialisé, c) pour chaque code spécialisé, la mémorisation (60), dans une table, d'une adresse 25 où est enregistré ce code spécialisé dans la mémoire, d) lors de l'exécution du programme, le microprocesseur obtient (50) une valeur numérique pour chaque paramètre de la fonction, puis e) le microprocesseur recherche (52), dans la table, l'adresse d'un code spécialisé apte, lorsqu'il est exécuté par le microprocesseur, à réaliser la fonction paramétrée 30 avec les valeurs obtenues lors de l'étape d), puis f) si une telle adresse existe dans la table, le microprocesseur réalise la fonction en exécutant directement (54) le code spécialisé enregistré dans la mémoire à cette adresse sans utiliser le code générique, et sinon g) le microprocesseur réalise (58) cette fonction en utilisant son code générique, 35 caractérisé en ce que - l'étape c) comporte également la mémorisation (60), associée à chaque adresse d'un code spécialisé, de la valeur de chacun de ses paramètres spécialisés, et - l'étape e) comporte pour une adresse enregistrée dans la table: 3038086 32 el ) la comparaison (52) de la valeur de chaque paramètre spécialisé, associé dans la table à cette adresse, à la valeur du même paramètre obtenue lors de l'étape d) puis, e2) si lors de l'opération el ), pour chaque paramètre spécialisé sa valeur mémorisée dans la table correspond à la valeur de ce paramètre obtenue lors de l'étape d), alors 5 le microprocesseur sélectionne (52) cette adresse en tant qu'adresse du code spécialisé apte à réaliser la fonction paramétrée avec les valeurs obtenues lors de l'étape d) et, sinon, le microprocesseur sélectionne une adresse suivante dans la table pour laquelle les opérations el ) et e2) n'ont pas encore été réalisées puis réitère les opérations el ) et e2) pour cette adresse suivante.\n<CLM>\1\tProcédé selon la revendication 1, dans lequel : - à chaque fois que l'adresse d'un code spécialisé doit être modifiée, supprimée ou ajoutée dans la table, le microprocesseur génère (60) et enregistre dans la mémoire une routine de recherche écrite dans le langage machine du microprocesseur, cette routine de recherche étant apte, lorsqu'elle est exécutée par le microprocesseur, à réaliser les opérations el ) et e2), cette routine de recherche contenant, codé en tant que constante, chaque adresse et chaque valeur de paramètres spécialisés mémorisés dans la table de sorte que la routine de recherche ne comporte aucune opération de lecture de la valeur d'un paramètre spécialisé ou de l'adresse d'un code spécialisé en dehors de la plage continue d'adresses où est enregistrée cette routine de recherche, et - à chaque fois que l'étape e) est exécutée, le microprocesseur exécute directement cette routine de recherche enregistrée dans sa mémoire.\n<CLM>\1\tProcédé selon la revendication 2, dans lequel : - la génération (60) de la routine de recherche comporte pour chaque adresse d'un code spécialisé contenue dans la table, la génération d'un jeu d'instructions qui code un branchement conditionnel direct vers cette adresse du code spécialisé, et - lorsque ce branchement conditionnel est exécuté par le microprocesseur, seulement si la valeur de chaque paramètre spécialisé associé dans la table à cette adresse est égale à la valeur du même paramètre obtenue lors de l'étape d), alors le microprocesseur remplace la valeur actuelle d'un compteur ordinal du microprocesseur par cette adresse de sorte que la prochaine instruction exécutée par le microprocesseur est directement la première instruction de ce code spécialisé.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - le procédé comporte l'exécution (56) d'une routine de collecte de données statistiques qui incrémente un compteur, associé à un paramètre de la fonction 3038086 33 paramétrée et à une valeur prédéterminée de ce paramètre, à chaque fois qu'une valeur de ce paramètre de la fonction paramétrée obtenue lors de l'étape d) est égale à cette valeur prédéterminée et, en alternance, l'absence d'incrémentation de ce compteur si la valeur obtenue lors de l'étape d) pour ce paramètre est différente de 5 cette valeur prédéterminée, - en réponse au franchissement d'un seuil pré-calculé par ce compteur, la génération (60), lors d'une étape h), d'un nouveau code spécialisé de la fonction paramétrée en spécialisant le paramètre associé à ce compteur avec la valeur prédéterminée associée à ce compteur, puis l'enregistrement de ce nouveau code spécialisé dans la 10 mémoire et la mise à jour de la table pour y incorporer l'adresse où est enregistré ce nouveau code spécialisé et la valeur du paramètre spécialisé.\n<CLM>\1\tProcédé selon la revendication 4, dans lequel le procédé comporte le calcul du seuil pré-calculé à partir d'un rapport Kgen/[Klib-Kdyn], où : 15 - Kgen est un coût pour exécuter l'étape h), - Kdyn est un coût pour exécuter l'étape f), - Klib est un coût pour exécuter l'étape g), et les coûts Kgen, Kdyn et Klib sont chacun des quantités respectives d'une même grandeur physique ou d'une même combinaison de grandeurs physiques qui varie 20 selon que le microprocesseur exécute l'étape f) ou l'étape g).\n<CLM>\1\tProcédé selon la revendication 4 ou 5, dans lequel, lorsque la mémoire est pleine, à chaque fois qu'un nouveau code spécialisé doit être enregistré dans la mémoire, le microprocesseur enregistre ce nouveau code spécialisé à la place du 25 code spécialisé le plus ancien contenu dans cette mémoire.\n<CLM>\1\tProcédé selon les revendications 3 et 4 prises ensemble, dans lequel seulement si aucun des branchements conditionnels directs de la routine de recherche n'a déclenché l'exécution d'un code spécialisé, alors la routine de collecte de données 30 statistiques est exécutée.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - les étapes a) à g) sont exécutées, en alternance, pour, respectivement, une première puis une seconde fonctions paramétrées dont les codes génériques sont 35 différents, et - l'étape c) comporte en plus la mémorisation (60) dans la table d'un identifiant du code générique de la fonction qui a été spécialisée associé à l'adresse de ce code spécialisé, 3038086 34 - lors de l'étape d), le microprocesseur obtient aussi l'identifiant du code générique de la fonction à exécuter, - lors de l'opération el ), le microprocesseur compare l'identifiant, associé dans la table à l'adresse du code spécialisé, à l'identifiant obtenu lors de l'étape d), et 5 - lors de l'opération e2), seulement si lors de l'opération el ), l'identifiant associé à l'adresse du code spécialisé correspond à l'identifiant obtenu lors de l'étape d) et seulement si la valeur de chaque paramètre spécialisé associé dans la table à cette adresse de code spécialisé correspond à la valeur obtenue lors de l'étape d), alors le microprocesseur sélectionne cette adresse en tant qu'adresse du code spécialisé 10 apte à réaliser la fonction paramétrée avec les valeurs obtenues lors de l'étape d).\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - les étapes a) à g) sont exécutées pour une fonction paramétrée comportant au moins un premier et un second paramètres dont les valeurs sont obtenues au 15 moment où cette fonction est appelée pour être exécutée par le microprocesseur ou durant son exécution par le microprocesseur, - l'étape b) comporte : - l'enregistrement d'un premier code spécialisé obtenu en spécialisant le premier paramètre de la fonction avec une première valeur spécifique, et 20 - l'enregistrement d'un second code spécialisé obtenu en spécialisant le second paramètre de la fonction avec une seconde valeur spécifique, - l'étape c) comporte en plus la mémorisation dans la table, associée à chaque adresse d'un code spécialisé de cette table, d'un identifiant du ou des paramètres spécialisés pour obtenir le code spécialisé enregistré à cette adresse, 25 - lors de l'opération el ), le microprocesseur identifie le ou les paramètres de la fonction qui ont été spécialisés pour générer le code spécialisé enregistré à cette adresse à l'aide de l'identifiant du ou des paramètres spécialisés associés, dans la table, à cette adresse, puis le microprocesseur compare seulement les valeurs, obtenues lors de l'étape d), des paramètres de la fonction ainsi identifiés aux valeurs 30 de ces mêmes paramètres associés dans la table à cette adresse.\n<CLM>\1\tSupport d'enregistrement d'informations ou programme d'ordinateur, caractérisé en ce qu'il comporte des instructions pour l'exécution d'un procédé conforme à l'une quelconque des revendications précédentes, lorsque ces instructions sont exécutées 35 par un microprocesseur.\n<CLM>\1\tUnité centrale électronique pour exécuter un programme d'ordinateur comportant au moins une fonction paramétrée susceptible d'être exécutée une ou plusieurs fois 3038086 35 au cours de l'exécution du programme, cette fonction comportant au moins un paramètre dont la valeur est obtenue au moment où la fonction est appelée pour être exécutée par un microprocesseur ou durant son exécution par le microprocesseur, cette unité centrale comportant : 5 - une mémoire ou un ensemble de mémoires (18, 20,\n<CLM>\1\tcontenant : - un code générique de la fonction dans lequel chaque paramètre de la fonction est codé comme une variable de sorte que ce code générique ne contient pas en lui-même la valeur de ce paramètre mais contient une opération de lecture de sa valeur à une adresse spécifiée par le code générique, 10 - plusieurs codes spécialisés de cette fonction, écrits dans le langage machine du microprocesseur, chaque code spécialisé réalisant, lorsqu'il est exécuté par le microprocesseur, la même fonction que le code générique mais dans le cas particulier où au moins un paramètre de la fonction est spécialisé, la spécialisation d'un paramètre de la fonction consistant à affecter une valeur 15 spécifique à ce paramètre puis à traiter ce paramètre non plus comme une variable mais comme une constante de sorte que le code spécialisé ne comporte aucune opération de lecture de sa valeur à une adresse située en dehors de la plage continue d'adresses où est enregistré ce code spécialisé, les codes spécialisés enregistrés différant les uns des autres par la valeur 20 affectée au même paramètre spécialisé ou par le paramètre qui a été spécialisé, - un microprocesseur (2) programmé pour exécuter les étapes suivantes : c) pour chaque code spécialisé, la mémorisation, dans une table, d'une adresse où est enregistré ce code spécialisé dans la mémoire, 25 d) lors de l'exécution du programme, le microprocesseur obtient une valeur numérique pour chaque paramètre de la fonction, puis e) le microprocesseur recherche, dans la table, l'adresse d'un code spécialisé apte, lorsqu'il est exécuté par le microprocesseur, à réaliser la fonction paramétrée avec les valeurs obtenues lors de l'étape d), puis 30 f) si une telle adresse existe dans la table, le microprocesseur réalise la fonction en exécutant directement le code spécialisé enregistré dans la mémoire à cette adresse sans utiliser le code générique, et sinon g) le microprocesseur réalise cette fonction en utilisant son code générique, caractérisé en ce que le microprocesseur (2) est également programmé de manière à 35 ce que : - l'étape c) comporte également la mémorisation, associée à chaque adresse d'un code spécialisé, de la valeur de chacun de ses paramètres spécialisés, et - l'étape e) comporte pour une adresse enregistrée dans la table: 3038086 36 el) la comparaison de la valeur de chaque paramètre spécialisé, associé dans la table à cette adresse, à la valeur du même paramètre obtenue lors de l'étape d), puis e2) si lors de l'opération el ), pour chaque paramètre spécialisé sa valeur mémorisée dans la table correspond à la valeur de ce paramètre obtenue lors de l'étape d), alors 5 le microprocesseur sélectionne cette adresse en tant qu'adresse du code spécialisé apte à réaliser la fonction paramétrée avec les valeurs obtenues lors de l'étape d) et, sinon, le microprocesseur sélectionne une adresse suivante dans la table pour laquelle les opérations el ) et e2) n'ont pas encore été réalisées puis réitère les opérations el ) et e2) pour cette adresse suivante.