Brevet FR3046263A1 (20170630)
REVENDICATIONS1. Système pour l'exécution en temps-réel d'un ensemble d'opérations à exécuter comprenant : -un séquenceur (1) comprenant une mémoire, dite mémoire d'opérations (2), et un compteur (3), ladite mémoire d'opérations stockant une table d'opérations, chaque ligne de ladite table d'opérations étant entièrement stockée dans un seul emplacement mémoire de ladite mémoire d'opérations et comprenant un identifiant d'une opération à exécuter lorsque le compteur pointe sur ledit emplacement mémoire, ainsi que des adresses de stockage d'au moins un opérande et du résultat de ladite opération, -au moins une structure de calcul (4) comprenant : - une mémoire vive, dite mémoire de données (5), comprenant au moins deux ports et configurée pour stocker lesdits opérandes et résultats auxdites adresses de stockage, -un circuit câblé formant une unité arithmétique et logique (ALU) (6) comprenant une pluralité d'opérateurs (7) distincts placés parallèlement les uns aux autres, pour l'exécution des opérations de la table d'opérations.\n<CLM>\1\tSystème selon la revendication précédente dans lequel ladite unité arithmétique et logique (ALU) (6) comprend uniquement les opérateurs (7) nécessaires à l'exécution des opérations à exécuter.\n<CLM>\1\tSystème selon l'une des revendications précédentes dans lequel la taille de la mémoire de données (5) et des adresses des emplacements mémoire de celle-ci sont fonction du nombre 34 3046263 d'opérandes et de résultats de l'ensemble des opérations à exécuter.\n<CLM>\1\tSystème selon l'une des revendications précédentes dans lequel la taille desdits identifiants d'opération est fonction du nombre 5 d'opérateurs (7) compris dans l'unité arithmétique et logique (6), et la taille des emplacements mémoire de la table d'opérations est fonction de ladite taille des identifiants d'opération et de la taille des adresses des emplacements mémoire de la mémoire de données (5). 10\n<CLM>\1\tSystème selon l'une des revendications précédentes dans lequel au moins une ligne de la table d'opérations comprenant une adresse de stockage d'au moins un opérande comprend en outre au moins un bit d'inversion pour requérir une inversion du signe dudit opérande. 15\n<CLM>\1\tSystème selon l'une des revendications précédentes dans lequel ladite unité arithmétique et logique (6) comprend un pipeline d'exécution dont le nombre d'étages est égal à la latence de l'opérateur de latence maximale, exprimée en nombre de coups d'horloge. 20\n<CLM>\1\tSystème selon l'une des revendications précédentes comprenant en outre des moyens de mitigations d'évènements SEU (« Single Event Upset ») ou MBU (« Multi-Bits Upsets ») tels que des dispositifs de correction d'erreur ou de redondance.\n<CLM>\1\tSystème selon l'une des revendications précédentes dans lequel 25 ladite unité arithmétique et logique (6) comprend un bus de données reliant la sortie d'au moins un opérateur et une entrée d'au moins un opérateur, de sorte qu'un résultat de l'exécution d'une opération à exécuter puisse être utilisé comme opérande d'une 35 3046263 autre opération à exécuter sans nécessiter de lecture dudit opérande dans la mémoire de données (5).\n<CLM>\1\tSystème selon l'une des revendications précédentes comprenant en outre un port de lecture de données pour un dispositif externe 5 au système et un bus de données reliant la sortie de l'unité arithmétique et logique (6) et ledit port, de sorte à transmettre audit dispositif externe un résultat d'une opération exécutée, en cours d'exécution de l'ensemble des opérations à exécuter. 10.Système selon l'une des revendications précédentes comprenant 10 une pluralité de structures de calcul (4) pour l'exécution en parallèle sur chacune desdites structures de calcul des opérations à exécuter. 11.Procédé d'exécution en temps réel d'un ensemble d'opérations à exécuter mis en oeuvre par le système selon l'une quelconque des 15 revendications précédentes, dans lequel le séquenceur passe, à la réception d'une commande externe, d'un état d'attente à un état d'exécution desdites opérations dans lequel l'ensemble desdites opérations est exécuté, puis retourne dans l'état d'attente. 12.Procédé d'exécution en temps réel d'un ensemble d'opérations à 20 exécuter selon la revendication précédente, ledit ensemble d'opérations comprenant une série d'opérations, dite fonction, appelée à plusieurs reprises dans la table d'opérations, un marqueur de fin de fonction étant inséré dans la table d'opérations après la dernière opération correspondant au premier 25 appel de cette fonction et les autres appels à cette fonction étant spécifiés dans la table d'opérations sous la forme d'une opération d'appel de fonction indiquant l'adresse dans la mémoire d'opération de la première opération de la fonction à ré-exécuter, 36 3046263 comprenant, lors de l'exécution d'une telle opération d'appel de fonction, -une sauvegarde et un remplacement de la valeur courante du compteur (3) par l'adresse de la première opération de la fonction à 5 ré-exécuter, -une exécution successive des opérations de la fonction à ré-exécuter par incrémentation du compteur jusqu'à atteindre le marqueur de fin de fonction, -une restauration de la valeur sauvegardée du compteur, 10 -une incrémentation de la valeur sauvegardée du compteur pour exécuter l'opération suivant l'appel de fonction dans la table d'opérations.\n<CLM>\1\tProcédé d'exécution d'un ensemble d'opérations à exécuter selon l'une des revendications 11 ou 12 comprenant, à l'issue de 15 l'exécution de chacune des opérations à exécuter : - une interruption temporaire de l'exécution des opérations, - une lecture du contenu de la mémoire de données, - suite de la réception d'un signal d'avancement, une exécution de l'opération suivante parmi l'ensemble d'opérations à exécuter. 20 14.Procédé d'exécution d'un ensemble d'opérations à exécuter selon l'une des revendications 11 à 13 dans lequel une opération à exécuter est insérée dans le pipeline d'exécution si : - aucun opérande de l'opération à exécuter n'est le résultat d'une opération en cours, et, 37 3046263 - aucune opération n'est en cours à un étage du pipeline correspondant à la latence de l'opération à exécuter.\n<CLM>\1\tProcédé d'exécution d'un ensemble d'opérations à exécuter selon l'une des revendications 11 à 14 dans lequel plusieurs versions 5 successives d'une donnée correspondant à des cycles de calcul successifs sont mémorisées en réservant un espace mémoire contigu apte à contenir l'ensemble de ces versions et en employant un adressage virtuel pour spécifier l'adresse des versions enregistrées dans ledit espace mémoire, l'adresse de chaque 10 version de la donnée étant définie par rapport à l'adresse absolue de la dernière version de la donnée mémorisée. 16.Procédé d'exécution d'un ensemble d'opérations à exécuter selon l'une des revendications 11 à 14, dans lequel, la table d'opérations comprenant une opération conditionnelle, tous les calculs spécifiés 15 par ladite opération sont exécutés, quel que soit le résultat d'une condition de ladite opération conditionnelle.\n<CLM>\1\tProcédé de dimensionnement et d'initialisation d'un système pour l'exécution d'un ensemble d'opérations à exécuter selon l'une des revendications 1 à 10 comprenant : 20 - une détermination (El ), à partir d'un descriptif de haut niveau de l'ensemble d'opérations à exécuter indépendant de la structure et du fonctionnement dudit système, des opérateurs (7) nécessaires pour l'exécution desdites opérations, du nombre d'opérandes et de résultats de l'ensemble des opérations à exécuter, 25 - une détermination (E2) de la taille des adresses des emplacements mémoire de la mémoire de données (5) en fonction du nombre d'opérandes et de résultats déterminé, 38 3046263 - une détermination (E3) de la taille des identifiants d'opération en fonction du nombre d'opérateurs (7) déterminé, - un dimensionnement (E4) de la taille de la mémoire de données en fonction du nombre d'opérandes et de résultats déterminé, 5 - un dimensionnement (E5) de la taille des emplacements mémoire de la table d'opérations en fonction de ladite taille des identifiants d'opération et de la taille des adresses des emplacements mémoire de la mémoire de données déterminées, - une initialisation (E6) de la mémoire de données (5) et de la Io mémoire d'opération (2) à partir du descriptif de haut niveau de l'ensemble des opérations à exécuter.\n<CLM>\1\tProcédé de dimensionnement et d'initialisation d'un système pour l'exécution d'un ensemble d'opérations à exécuter selon la revendication précédente dans lequel lors de l'initialisation de la 15 mémoire d'opérations, l'ordre des opérations dans la table d'opérations est optimisé de façon à placer à des lignes successives de la table d'opérations des opérations pouvant être exécutées en même temps. 19.Produit programme d'ordinateur comprenant des instructions de 20 code pour l'exécution d'un procédé selon l'une quelconque des revendications 11 à 18 lorsque ce programme est exécuté par un processeur.