FR 3046263 A1 20170630 FR 1563200 A 20151223 3046263 Système pour l'exécution en temps-réel d'un ensemble d'opérations à exécuter DOMAINE TECHNIQUE GENERAL L'invention concerne le domaine du calcul temps réel. Elle a plus particulièrement pour objet un système de calcul temps réel embarqué tel qu'un calculateur traitant les signaux de divers capteurs pour leur exploitation dans un gyroscope d'aéronef. ETAT DE LA TECHNIQUE Les systèmes de calcul temps réel modernes nécessitent une puissance de calcul croissante pour mettre en oeuvre des traitements de plus en plus élaborés dans un temps contraint. Dans le cas de systèmes embarqués dans différents types de 15 véhicules, tels que ceux embarqués dans les aéronefs, de tels calculateurs doivent également respecter des contraintes fortes d'encombrement et de consommation d'énergie. Enfin, dans le cas de véhicules présentant de fortes contraintes de sureté de fonctionnement comme les aéronefs ou les voitures, de tels 20 calculateurs embarqués doivent fonctionner de la manière la plus déterministe possible afin de pouvoir justifier de leur capacité à exécuter des opérations avec une probabilité d'erreur connue et ne présentant aucun risque pour les passagers du véhicule. De tels calculateurs doivent également présenter une résistance suffisante aux évènements de type 25 SEU (« Single Event Upset ») ou MBU (« Multi-Bits Upsets »). 2 3046263 Une première catégorie de dispositifs de calcul pouvant être utilisés consiste en des calculateurs à base de microprocesseurs exécutant des opérations de manière logicielle. De tels calculateurs peuvent être utilisés en parallèle, et à une fréquence de fonctionnement plus élevée pour 5 augmenter la puissance de calcul d'un tel dispositif de calcul. Les microprocesseurs présentent néanmoins les inconvénients d'être couteux et peu performants d'un point de vue énergétique notamment dans le cas des solutions à base d'interruptions du fait de l'exécution de nombreuses manipulations sans valeur ajoutée vis-à-vis des opérations de calcul à 10 exécuter. Les microprocesseurs ont également un comportement peu déterministe rendant leur certification difficile, et permettent rarement la correction d'erreurs SEU/MBU. L'utilisation de plusieurs microprocesseurs en parallèle renforce en général les inconvénients cités ci-dessus, n'est pas adaptée au traitement d'opérations non-parallélisables et rend de plus un tel calculateur peu compact. Une deuxième catégorie de dispositifs de calcul pouvant être utilisés consiste en des calculateurs à base de logique câblée, tels que des FPGA (« Field-Programmable Gate Array ») ou ASIC (« ApplicationSpecific Integrated Circuit »). La puissance de calculs de tels calculateurs peut être augmentée facilement en augmentant le nombre de portes logiques intégrées, tout en ayant un fonctionnement déterministe et en permettant l'implémentation de moyens de correction d'erreur contre les évènements SEU/MBU. De tels calculateurs peuvent être répartis en deux sous-familles : - Les calculateurs à architecture parallèle dans lesquels chaque opération à exécuter se présente sous la forme d'un opérateur physique dans le circuit du calculateur, comme représenté en Figure 1. De tels calculateurs présentent l'inconvénient d'avoir une taille, un coût et une consommation énergétique qui augmentent 3 3046263 rapidement avec l'augmentation du nombre d'opérations exécutables par le calculateur. - Les calculateurs à architecture séquencée, comprenant un nombre réduit d'opérateurs, parfois un seul, par type d'opération à exécuter 5 et une machine à état (FSM « Finite State Machine ») pour piloter l'exécution des opérations à exécuter de manière séquentielle par ces opérateurs, comme représenté en Figure 2. De tels calculateurs présentent une taille, une consommation énergétique et un coût matériel réduits. Par contre la complexité de leur 10 machine à état augmente de manière exponentielle avec le nombre d'opérations à exécuter, rendant le développement de tels calculateurs complexe et donc couteux. De plus, le risque d'erreur dans la définition d'une telle machine à état, de par sa complexité, et la complexité de l'évolution de la machine à état au cours de 15 l'exécution des opérations à exécuter rendent difficile la certification de tels calculateurs. Les calculateurs à base de logique câblée présentent enfin également l'inconvénient d'être très peu flexibles, rendant difficile l'adaptation d'un calculateur existant à un ensemble d'opérations à exécuter différent. 20 Il existe donc un besoin d'un système de calcul temps-réel doté d'une puissance de calcul suffisante qui soit à la fois peu couteux, efficace d'un point de vue énergétique, compact, qui présente un fonctionnement déterministe facile à certifier, qui permette la correction d'erreurs de type 25 SEU/MBU et qui puisse facilement s'adapter à l'exécution de divers ensemble d'opérations. 4 3046263 PRESENTATION DE L'INVENTION La présente invention se rapporte selon un premier aspect à un système pour l'exécution en temps-réel d'un ensemble d'opérations à exécuter comprenant : 5 -un séquenceur comprenant une mémoire, dite mémoire d'opérations, et un compteur, 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 10 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 comprenant : - une mémoire vive, dite mémoire de données, comprenant au moins deux ports et configurée pour stocker lesdits opérandes et résultats 15 auxdites adresses de stockage, -un circuit câblé formant une unité arithmétique et logique (ALU) comprenant une pluralité d'opérateurs distincts placés parallèlement les uns aux autres, pour l'exécution des opérations de la table d'opérations. 20 Un tel système permet de réaliser des calculs en temps réel de manière autonome, avec une architecture séquencée réduisant la surface occupée et la consommation énergétique. La séparation de la définition des opérations à exécuter (dans la table d'opérations) et de leur exécution dans la structure de calcul permet d'implémenter simplement un ensemble 25 d'opérations à exécuter sans avoir besoin de connaitre le fonctionnement de la structure qui réalise de manière autonome chaque calcul défini par une simple ligne de la table d'opérations. Les opérations d'un ensemble donné d'opérations à exécuter seront toujours exécutées dans le même 5 3046263 ordre et dans le même temps, quelles que soient les données d'entrée auxquelles ces opérations sont appliquées. Le système fonctionne ainsi de manière purement déterministe, ce qui facilite sa certification. Ladite unité arithmétique et logique (ALU) peut comprendre 5 uniquement les opérateurs nécessaires à l'exécution des opérations à exécuter. La taille de la mémoire de données et des adresses des emplacements mémoire de celle-ci peuvent être fonction du nombre d'opérandes et de résultats de l'ensemble des opérations à exécuter. Io La taille desdits identifiants d'opération peut être fonction du nombre d'opérateurs compris dans l'unité arithmétique et logique, et la taille des emplacements mémoire de la table d'opérations peut être 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. 15 L'encombrement, le coût et la consommation énergétique du système peuvent ainsi être limités au strict nécessaire pour l'exécution des opérations à exécuter. Au moins une ligne de la table d'opérations comprenant une adresse de stockage d'au moins un opérande peut par ailleurs 20 comprendre en outre au moins un bit d'inversion pour requérir une inversion du signe dudit opérande. Une telle inversion de signe permet de réaliser une soustraction avec un opérateur d'addition, ou bien encore de combiner en une seule opération un changement de signe et une autre opération. 25 Ladite unité arithmétique et logique peut comprendre 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. 6 3046263 Plusieurs opérations indépendantes et de latences résiduelles distinctes peuvent ainsi être exécutées en parallèle. Ceci permet de diminuer la durée globale d'exécution des opérations. Le système selon le premier aspect peut comprendre en outre des 5 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. La sureté de fonctionnement du système peut ainsi être améliorée facilement. Une continuité de fonctionnement peut être assurée pour des 10 tâches critiques, sans nécessiter une redondance du système. Ladite unité arithmétique et logique peut comprendre 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 autre opération à 15 exécuter sans nécessiter de lecture dudit opérande dans la mémoire de données. L'exécution des opérations est ainsi accélérée lorsqu'une opération dépend du résultat de l'opération précédente. Le système selon le premier aspect peut comprendre en outre un 20 port de lecture de données pour un dispositif externe au système et un bus de données reliant la sortie de l'unité arithmétique et logique 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. 25 Un résultat de calcul d'une opération peut ainsi être communiqué à un système externe sans avoir à attendre la fin de l'exécution de toutes les opérations définies dans la table d'opérations, et en garantissant au système externe la validité de la donnée qui lui est transmise. 7 3046263 Le système selon le premier aspect peut comprendre une pluralité de structures de calcul pour l'exécution en parallèle sur chacune desdites structures de calcul des opérations à exécuter. L'exécution des opérations à exécuter est ainsi parallélisable sans 5 avoir à utiliser plus d'un séquenceur, permettant d'économiser des ressources et de minimiser le coût total. Selon un deuxième aspect, l'invention concerne un 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 le premier aspect, dans lequel le séquenceur 10 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. Toutes les opérations spécifiées dans la table d'opérations sont ainsi exécutées, de manière déterministe, par le séquenceur. 15 Dans un mode de mise en oeuvre, 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 appel de cette fonction et les autres appels à 20 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, le procédé selon le deuxième aspect peut comprendre, lors de l'exécution d'une telle opération d'appel de fonction, 25 -une sauvegarde et un remplacement de la valeur courante du compteur par l'adresse de la première opération de la fonction à ré-exécuter, 8 3046263 -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, 5 -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. La taille de la table d'opérations est ainsi réduite, en évitant d'y répéter les opérations faisant l'objet de l'appel de fonction. Dans un autre mode de mise en oeuvre, ledit procédé selon le 10 deuxième aspect peut comprendre, à l'issue de 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 15 l'opération suivante parmi l'ensemble d'opérations à exécuter. Le résultat de l'exécution de chaque opération peut ainsi être contrôlé avant de passer à l'opération suivante, afin de garantir le bon fonctionnement du système. Selon le procédé selon le deuxième aspect, une opération à 20 exécuter peut n'être insérée dans le pipeline d'exécution que si : - aucun opérande de l'opération à exécuter n'est le résultat d'une opération en cours, et, - aucune opération n'est en cours à un étage du pipeline correspondant à la latence de l'opération à exécuter. 9 3046263 Une opération ne commence ainsi à être exécutée que si tous les opérandes nécessaires à son calcul sont disponibles. De plus, on évite ainsi que deux opérations puissent se terminer en même temps, ce qui poserait problème pour enregistrer simultanément les résultats des deux 5 opérations. Selon un mode de mise en oeuvre du procédé selon le deuxième aspect, plusieurs versions successives d'une donnée correspondant à des cycles de calcul successifs peuvent être mémorisées en réservant un espace mémoire contigu apte à contenir l'ensemble de ces versions et en 10 employant un adressage virtuel pour spécifier l'adresse des versions enregistrées dans ledit espace mémoire, l'adresse de chaque 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. On évite ainsi de déplacer inutilement en mémoire les versions 15 précédentes d'une donnée à l'issue de chaque calcul. La table d'opérations comprenant une opération conditionnelle, tous les calculs spécifiés par ladite opération peuvent être exécutés, quel que soit le résultat d'une condition de ladite opération conditionnelle. Le déterminisme de l'exécution des opérations est ainsi assuré, zo quel que soit le résultat de l'évaluation de la condition de l'opération. Selon un troisième aspect, l'invention concerne un procédé de dimensionnement et d'initialisation d'un système pour l'exécution d'un ensemble d'opérations à exécuter selon le premier aspect comprenant : - une détermination, à partir d'un descriptif de haut niveau de l'ensemble 25 d'opérations à exécuter indépendant de la structure et du fonctionnement dudit système, des opérateurs 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, 10 3046263 - une détermination de la taille des adresses des emplacements mémoire de la mémoire de données en fonction du nombre d'opérandes et de résultats déterminé, - une détermination de la taille des identifiants d'opération en fonction du 5 nombre d'opérateurs déterminé, - un dimensionnement de la taille de la mémoire de données en fonction du nombre d'opérandes et de résultats déterminé, - un dimensionnement de la taille des emplacements mémoire de la table d'opération en fonction de ladite taille des identifiants d'opération et de la 10 taille des adresses des emplacements mémoire de la mémoire de données déterminées, - une initialisation de la mémoire de données et de la mémoire d'opération à partir du descriptif de haut niveau de l'ensemble des opérations à exécuter. 15 Dans un mode de mise en oeuvre du procédé selon le troisième aspect, lors de l'initialisation de la 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. 20 Le temps nécessaire à l'exécution des opérations est ainsi minimisé. Selon un quatrième aspect, l'invention concerne produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon le deuxième ou troisième aspect lorsque ce programme est 25 exécuté par un processeur. 11 3046263 De tels produits programmes d'ordinateur présentent les mêmes avantages que ceux évoqués pour le procédé selon le deuxième ou troisième aspect. 5 PRESENTATION DES FIGURES D'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1 illustre schématiquement un calculateur à architecture parallèle selon l'état de la technique; - la figure 2 illustre schématiquement un calculateur à architecture séquencée selon l'état de la technique; - la figure 3 illustre un exemple de système pour l'exécution en temps-réel d'un ensemble d'opérations à exécuter selon l'invention; 15 - la figure 4 est un diagramme schématisant un exemple de mise en oeuvre d'un procédé de dimensionnement et d'initialisation d'un système pour l'exécution d'un ensemble d'opérations à exécuter selon l'invention; - la figure 5 illustre un exemple de table permettant de sélectionner 20 automatiquement les opérateurs à implémenter dans le système selon l'invention, parmi un ensemble d'opérateurs disponibles ; - la figure 6 illustre un exemple de table permettant de définir les variables à mémoriser dans la table de données selon l'invention ; - la figure 7 illustre un exemple de table permettant de définir 25 l'ensemble d'opérations à exécuter à implémenter dans la table d'opérations de la mémoire d'opérations selon l'invention. 12 3046263 DESCRIPTION DETAILLEE Un mode de réalisation de l'invention concerne un système pour l'exécution en temps-réel d'un ensemble d'opérations à exécuter comme 5 représenté en figure 3. Un tel système ressemble à un calculateur à base de logique câblée à architecture séquencée mais propose de remplacer la machine à états de tels calculateurs par un composant permettant de définir plus simplement les opérations à exécuter. 10 Un tel système peut comprendre un séquenceur 1 comprenant une mémoire, dite mémoire d'opérations 2. Comme expliqué ci-dessus, ce séquenceur a pour but de remplacer une machine à état. Pour cela ladite mémoire d'opérations 2 stocke une table d'opérations, dont chaque ligne définit une opération à réaliser. Les opérations à exécuter successivement 15 par le système de calcul peuvent ainsi être définies simplement dans la succession de lignes de la table d'opérations. Mémoire d'opérations Afin d'améliorer l'efficacité du système de calcul, chaque ligne de ladite table d'opérations est entièrement stockée dans un seul emplacement 20 mémoire, c'est-à-dire en un mot mémoire, de ladite mémoire d'opérations. Le séquenceur 1 comprend également un compteur 3, et chaque ligne de ladite table d'opérations comprend 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 25 ladite opération. La totalité des informations nécessaires à la description d'une opération est ainsi spécifiée dans une ligne de la table d'opération. Ces informations tiennent en un seul mot de la mémoire d'opérations et sont donc lisibles en une seule opération de lecture. Le compteur 3 est 13 3046263 incrémenté à chaque lecture de façon à pointer sur l'opération suivante dans la table d'opérations. Au moins une ligne de la table d'opérations peut comprendre au moins un bit d'inversion pour requérir une inversion du signe d'un opérande de 5 l'opération définie dans cette ligne. Une telle inversion de signe permet de réaliser une soustraction avec un opérateur d'addition, ou bien encore de combiner en une seule opération un changement de signe et une autre opération. Une telle mémoire peut être une mémoire non volatile, réinscriptible ou 10 non, tel qu'une mémoire de type EEPROM ou flash. Alternativement, une telle mémoire peut être une mémoire vive RAM. Une telle mémoire peut comporter au moins deux ports dont un port interne au séquenceur utilisé par le séquenceur pour la lecture des informations stockées dans la table d'opération, et un port accessible de l'extérieur du système selon 15 l'invention pour permettre l'écriture du contenu de la mémoire d'opérations, par exemple lors de son initialisation. Structure de calcul Le système comprend également au moins une structure de calcul 4. Une telle structure peut comprendre une mémoire vive, dite mémoire de 20 données 5, configurée pour stocker les opérandes et les résultats des opérations à exécuter aux adresses de stockage indiquées ci-dessus. Chaque donnée stockée dans la mémoire peut être stockée à une adresse constante servant d'identifiant de cette donnée. La mémoire de données peut comprendre des emplacements mémoire pour le stockage 25 d'autres données nécessaires à l'exécution des opérations à exécuter, telles que des constantes, des paramètres, des variables intermédiaires etc... Optimisation de la mémoire de données 14 3046263 Selon un mode de réalisation, la taille de la mémoire de données et des adresses des emplacements mémoire de celle-ci sont fonction du nombre d'opérandes et de résultats de l'ensemble des opérations à exécuter. A titre d'exemple, la mémoire de données peut comprendre le nombre 5 d'emplacements mémoires minimum nécessaire pour que les opérations à exécuter puissent être exécutées, c'est-à-dire le nombre d'emplacements mémoires nécessaires au stockage des opérandes et des résultats de ces opérations ainsi que des données supplémentaires nécessaires décrites ci-dessus (constantes etc...). La taille de ces emplacements mémoires 10 peut également être ajustée en fonction de la taille des données à y stocker. Les adresses de ces emplacements mémoires peuvent être codées sur le nombre de bits strictement nécessaire pour définir autant d'adresses différentes que le nombre de ces emplacements mémoires. La largeur des bus d'adresse et de données pour l'accès à la mémoire de 15 données peut également être fixée en fonction des tailles de la mémoire de données et des adresses des emplacements mémoire de celle-ci. La mémoire de données peut ainsi être dimensionnée au plus juste afin de maximiser les performances tout en réduisant l'encombrement et la consommation énergétique. Selon un autre exemple de mise en oeuvre, zo les tailles de la mémoire de données et des adresses et bus des emplacements mémoire de celle-ci peuvent être fixées à des valeurs supérieures aux valeurs minimales nécessaires. Ceci rend le système un peu moins optimisé mais plus adaptable au traitement d'autres ensembles d'opérations à exécuter. 25 Mémoire double/triple port Une telle mémoire peut être de type mémoire ROM réinscriptible ou bien de type mémoire RAM et comprend au moins deux ports de lecture/écriture : 15 3046263 - selon une première variante, la mémoire de données comprend deux ports, dont un premier port pour la lecture de données utilisées pour les opérations à exécuter, et un deuxième port utilisable en priorité pour l'écriture de résultats de l'exécution de ces 5 opérations et de manière secondaire pour la lecture/écriture dans la mémoire de données depuis l'extérieur du système. Une telle lecture/écriture depuis l'extérieur peut intervenir lors de l'initialisation de la mémoire ou lors de la lecture des résultats dans la mémoire de données après la fin de l'exécution de l'ensemble 10 des opérations à exécuter. La lecture de deux opérandes d'une opération et l'écriture d'un résultat d'une opération, représentant trois accès mémoire, nécessitent alors deux cycles d'horloge pour leur mise en oeuvre. Seules les opérations à un seul opérande peuvent ne nécessiter qu'un seul cycle d'horloge. 15 - Selon une deuxième variante, la mémoire de données peut comprendre trois ports dont deux ports pour la lecture de données utilisées pour les opérations à exécuter et un port pour l'écriture de résultats de l'exécution de ces opérations et la lecture/écriture dans la mémoire de données depuis l'extérieur du système. Une telle 20 mémoire triple-ports permet la lecture de deux opérandes et l'écriture d'un résultat en un seul cycle d'horloge. Il est ainsi possible de commander une opération courte à deux opérandes et d'obtenir son résultat en un seul cycle d'horloge. Une telle mémoire peut être constituée de deux mémoires à deux ports mettant en 25 commun leurs deuxièmes ports. Selon un mode de mise en oeuvre, chaque port de la mémoire de données peut être utilisé pour la lecture/écriture dans la mémoire de données depuis l'extérieur du système, augmentant ainsi la bande passante totale d'accès aux données stockées dans la mémoire de données depuis l'extérieur du système. 16 3046263 ALU La structure de calcul 4 comprend également 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 5 l'exécution des opérations de la table d'opérations. Les opérateurs étant distincts, l'ALU comprend un seul opérateur par type d'opération. Chaque opérateur est ainsi un circuit câblé configuré pour exécuter une opération de base du système, telle qu'une addition, une soustraction, une multiplication, une division, une comparaison, un changement de type 10 (d'entier à flottant ou inversement par exemple), un déplacement de donnée en mémoire, une copie ou une opération logique (or, and, xor...), une opération de comparaison, un test conditionnel etc... Une opération particulière est l'opération nulle (« NOP ») qui ne nécessite aucun opérande et n'a pas de résultat. Pour la définition d'une telle opération, la 15 table d'adresse peut par conséquent comprendre des adresses d'opérande et de résultat nulles. Chaque opérateur reçoit les opérandes à traiter en provenance de la mémoire de données 5 et peut commencer l'exécution de son opération à chaque cycle d'horloge. Certains opérateurs peuvent nécessiter 20 l'activation d'un signal de commande pour démarrer l'exécution de leur calcul. Ceci peut permettre de diminuer la consommation énergétique du système en mettant au repos des opérateurs complexes constitués de nombreuses portes logiques. Selon un mode de réalisation, l'unité arithmétique et logique (ALU) 25 comprend uniquement les opérateurs nécessaires à l'exécution des opérations à exécuter mémorisées dans la table d'opérations. Ceci permet de réduire l'encombrement et la consommation énergétique de l'ALU au strict nécessaire pour l'exécution d'un ensemble d'opérations à exécuter donné. 17 3046263 Alternativement, l'ALU peut comprendre davantage d'opérateurs que le strict nécessaire, par exemple un opérateur pour chaque type d'opération parmi un ensemble d'opérations pouvant être implémentées sur un tel système. Ceci permet de rendre l'architecture de l'ALU indépendante de 5 l'ensemble d'opérations à exécuter. Le système peut ainsi être adapté à divers ensembles d'opérations à exécuter sans nécessiter une modification de l'ALU, tant que l'ALU comporte les opérateurs correspondant aux opérations à exécuter mémorisées dans la table d'opérations. 10 Pipeline Chaque opérateur de l'ALU présente une certaine latence correspondant au temps nécessaire à l'obtention d'un résultat en sortie à partir des opérandes en entrée. Une telle latence peut être réduite à un cycle d'horloge pour les opérateurs les plus simples comme les opérateurs 15 logiques, ou atteindre plusieurs cycles d'horloge pour les opérateurs complexes comme la division flottante. Lorsqu'un opérateur complexe est occupé à exécuter une opération pendant plusieurs cycles d'horloge, d'autres opérations de plus faible latence pourraient être exécutées simultanément par les autres opérateurs de l'ALU inoccupés. 20 Pour cela, l'ALU peut comprendre 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. Chaque étage d'un tel pipeline correspond à une certaine latence résiduelle, c'est-à-dire à un nombre de cycles d'horloges nécessaires pour obtenir le résultat d'une opération 25 éventuellement en cours d'exécution dans cet étage du pipeline. Un étage du pipeline peut contenir des informations sur l'opération éventuellement en cours d'exécution dans cet étage telles qu'un bit de validité indiquant si une opération est en cours d'exécution ou non, le cas échéant quelle est cette opération et quelle est l'adresse d'écriture du résultat dans la 18 3046263 mémoire de données. Chaque étage peut également mémoriser d'éventuelles actions spécifiques à appliquer au résultat de l'opération, telle qu'une redirection comme expliqué ci-après. Lorsqu'une opération est présentée en entrée de l'ALU, le pipeline vérifie 5 qu'aucun opérande de l'opération n'est le résultat d'une opération en cours (et donc que tous les opérandes sont disponibles) par comparaison des adresses des opérandes et des adresses des résultats des opérations en cours. Le pipeline vérifie également qu'aucune opération en cours n'a pour 10 latence résiduelle la latence de l'opération en entrée, c'est-à-dire qu'aucune opération n'est en cours à l'étage du pipeline correspondant à la latence de l'opération en entrée, en observant la valeur du bit de validité de cet étage. Le pipeline vérifie ainsi qu'aucune opération en cours ne va se terminer au même moment que l'opération en entrée si l'exécution de 15 celle-ci était lancée à l'instant courant, ce qui produirait un conflit en sortie de l'ALU : - Si ces conditions sont respectées, le pipeline accepte l'opération en entrée et démarre son exécution, en insérant les informations relatives à l'opération à réaliser dans l'étage du pipeline 20 correspondant à la latence de cette opération. Le pipeline modifie également la valeur du bit de validité de cet étage et active l'opérateur concerné si nécessaire. - Si une de ces conditions n'est pas respectée l'opération en entrée de l'ALU ne peut pas être exécutée immédiatement et cette 25 opération est mise en attente jusqu'au prochain cycle d'horloge. Puis, à chaque cycle d'horloge les opérations en cours dans le pipeline sont toutes décalées d'une position vers la sortie du pipeline. Ainsi 19 3046263 plusieurs opérations de latences résiduelles différentes les unes des autres peuvent être exécutées en parallèle par des opérateurs distincts. Afin de garantir le déterminisme des opérations, il est nécessaire d'attendre que le pipeline de l'ALU soit vide avant de mettre en oeuvre un 5 déplacement de données dans la mémoire de données. Afin que le temps de calcul d'une opération conditionnelle, par exemple If... Then... Else, soit constant, le système peut exécuter toutes les calculs prévus après les mots-clés Then et Else, quel que soit le résultat de la condition If évaluée. Un ensemble d'opérations à exécuter est alors 10 toujours exécuté en temps constant. L'ALU comprend également un multiplexeur 8 relié à la sortie des opérateurs. Celui-ci sélectionne à chaque cycle d'horloge la sortie de l'opérateur correspondant à l'opération stockée dans le dernier étage du pipeline et émet la donnée en sortie de cet opérateur comme donnée de 15 sortie de l'ALU à destination de la mémoire de données pour que le résultat de cette opération y soit stocké. Un tel stockage du résultat dans la mémoire de données peut être conditionné à la vérification d'une condition, par exemple dans le cas d'une opération de type If... Then... Else. 20 Le système câblé décrit ci-dessus est générique et peut être implémenté sous la forme de diverses familles de circuits câblés, par exemple sous forme de circuit FPGA ou AS IC. Optimisation de la mémoire d'opérations Selon un mode de réalisation la taille des identifiants d'opération utilisés 25 dans la table d'opérations est fonction du nombre d'opérateurs compris dans l'unité arithmétique et logique. A titre d'exemple, les identifiants d'opération peuvent être codés sur le nombre minimum de bits nécessaire pour définir autant d'identifiants d'opération différents que le nombre 20 3046263 d'opérateurs dans l'ALU. L'espace mémoire occupé dans la table d'opération par les identifiants d'opération est ainsi minimisé. Alternativement, un nombre de bits supérieur à ce minimum peut être employé afin de rendre le système plus évolutif. 5 La taille des emplacements mémoire de la table d'opération peut alors être définie 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. A titre d'exemple les emplacements mémoire de la table d'opération peuvent être d'une taille exactement égale à la somme des 10 tailles : - d'un identifiant d'opération, - de deux adresses d'emplacements mémoires d'opérande de la mémoire de données, - d'une adresse d'emplacement mémoire de résultat de la mémoire 15 de données. Ceci permet de réduire au minimum la taille de la mémoire d'opérations. Alternativement une taille supérieure peut être choisie afin de rendre le système plus évolutif. Les emplacements mémoires peuvent également être d'une taille 20 supérieure afin de pouvoir inclure une ou plusieurs informations supplémentaires dans la définition d'une opération, parmi : - une commande de redirection vers un port de lecture de données (voir ci-dessous), - une inversion du signe d'un premier opérande de l'opération, 25 - une inversion du signe d'un deuxième opérande de l'opération. Appel de fonction 21 3046263 Afin d'optimiser davantage la mémoire d'opérations, il est souhaitable de prévoir un mécanisme permettant de ré-exécuter une série d'opérations à plusieurs reprises sans avoir à faire figurer à chaque fois toutes ces opérations dans la table d'opération. Pour cela, un mécanisme d' « appel 5 de fonction » peut être utilisé selon lequel, lorsqu'une série d'opérations, dite fonction, doit être exécutée à plusieurs reprises : - un marqueur de fin de fonction est inséré dans la table d'opérations après la dernière opération correspondant à la première exécution de cette fonction, 10 - la commande de toute réexécution de cette fonction est spécifiée 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, - Lors de l'exécution d'une telle opération d'appel de fonction, la 15 valeur courante du compteur 3 est sauvegardée et remplacée par l'adresse de la première opération de la fonction à ré-exécuter, puis les opérations de la fonction à ré-exécuter sont exécuter les unes après les autres par incrémentation du compteur jusqu'à atteindre le marqueur de fin de fonction. La valeur sauvegardée du compteur 20 est alors restaurée puis incrémentée pour exécuter l'opération suivant l'appel de fonction dans la table d'opérations. Un tel appel de fonction étant exécuté en un temps constant à chaque appel, l'ensemble des opérations de la table d'opérations reste toujours exécuté en un temps constant malgré l'utilisation d'un tel appel de 25 fonction. Le déterminisme du système est ainsi préservé. Rebouclage Dans certains cas, le résultat d'une opération peut être utilisé comme opérande de l'opération suivante dans la table d'opération. Afin de 22 3046263 permettre l'utilisation d'un résultat de l'exécution d'une opération à exécuter comme opérande d'une autre opération à exécuter sans nécessiter de lecture de cet opérande dans la mémoire de données, l'ALU peut comprendre un bus de données reliant la sortie d'au moins un 5 opérateur et une entrée d'au moins un opérateur. Le résultat de la première opération exécutée est ainsi rebouclé en entrée de l'opérateur exécutant l'opération suivante et celle-ci peut être exécutée plus rapidement que si le résultat de la première opération avait dû être écrit dans la mémoire de données puis relu dans celle-ci en tant qu'opérande. 10 Avantageusement, le résultat de chaque opération est tout de même stocké dans la mémoire de données pour y être mémorisé de manière pérenne. Redirection Afin d'éviter tout risque d'accès concurrent à la mémoire de données et de 15 corruption de celle-ci, les accès en lecture/écriture à la mémoire de données depuis l'extérieur du système sont interdits tant que des opérations sont en cours d'exécution, c'est-à-dire tant que toutes les opérations de l'ensemble d'opérations à exécuter stockées dans la table d'opérations n'ont pas été exécutées. Néanmoins, il peut être nécessaire 20 dans le cadre d'un calcul temps réel qu'un dispositif externe au système puisse disposer du résultat d'une opération avant que l'ensemble des opérations à exécuter n'aient été exécutées. Pour cela, le système peut comprendre un port de lecture de données pour un dispositif externe au système et un bus de données reliant la sortie de l'unité arithmétique et 25 logique et ledit port. Ainsi, la sortie de l'ALU peut être émise vers l'extérieur accompagnée de son adresse de stockage dans la mémoire de données (pour l'identifier) via ce port de redirection. Un dispositif externe peut ainsi se voir transmettre un résultat d'une opération exécutée en cours d'exécution de l'ensemble des opérations à exécuter. Le fait que le 30 résultat soit envoyé par le système à destination du dispositif externe, au 23 3046263 lieu de faire lire le résultat par le dispositif externe dans la mémoire de données, permet d'attendre la fin du cycle d'exécution des opérations calculant ce résultat pour transmettre le résultat. La validité de la donnée transmise est ainsi garantie. Une telle redirection du résultat d'une 5 opération peut être requise à l'aide d'une valeur indiquant une telle action spécifique stockée dans la définition de l'opération dans la table d'opérations, puis dans l'étage du pipeline correspondant à cette opération. Un signal de validation peut être émis par le système afin de signifier la disponibilité du résultat aux dispositifs extérieurs au système. 10 Mode pas-à-pas Dans le mode de réalisation décrit ci-dessus, le système exécute sans s'arrêter, suite à une commande externe de démarrage, toutes les opérations stockées dans sa table d'opérations, de la première à la dernière, avant de donner accès à sa mémoire de données pour une 15 lecture des résultats. Le système peut également proposer un mode « pas à pas » dans lequel : - l'exécution des opérations est interrompue temporairement à la fin de chaque opération, - le contenu de la mémoire de données peut être lu à la fin de 20 chaque opération, - l'opération suivante n'est exécutée (par incrémentation du compteur 3) qu'à la suite de la réception d'un signal d'avancement. Un tel fonctionnement pas à pas permet de vérifier les résultats des calculs des opérateurs et l'état de la mémoire de données à la fin de 25 chaque opération, par exemple à des fins de débogage ou de certification. SEU/MBU 24 3046263 Afin d'améliorer la fiabilité d'un tel système, celui-ci peut comprendre 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. A titre d'exemple, les mémoires utilisées peuvent être 5 de type ECC afin de détecter et corriger les erreurs et certains éléments du système peuvent être dupliqués ou triplés afin de palier par redondance à la défaillance d'un de ces éléments. L'utilisation d'une logique câblée permet d'assurer facilement une continuité de fonctionnement en cas de bascule d'un élément à un élément redondant. 10 Structures de calcul parallèles Selon un mode de réalisation, le système peut comprendre un seul séquenceur comme décrit ci-dessus, relié à plusieurs structures de calcul identiques. Un tel arrangement permet de faire exécuter en parallèle les mêmes opérations à exécuter, stockées dans la table d'opérations du 15 séquenceur, sur chacune des différentes structures de calcul. Le déterminisme de l'exécution des opérations stockées dans la table d'opérations permet de garantir que ces opérations seront bien exécutées à l'identique par chacune de ces structures de calcul. Ceci permet de ne pas avoir à dupliquer le séquenceur pour appliquer le même traitement à 20 différentes séries de données, provenant par exemple de plusieurs voies redondantes. Un tel système peut avantageusement être appliqué au traitement de signaux issus de capteurs utilisés dans l'aéronautique tels que des gyroscopes à résonance hémisphérique GRH. Le système proposé 25 permet d'appliquer de nombreux traitements aux données issues de tels capteurs, en temps-réel à une fréquence élevée, par exemple de l'ordre de quelques kHz, et jusqu'à plus de 100 MHz. Une architecture disposant de trois structures de calcul parallèles peut être employée pour appliquer les mêmes traitements aux données correspondant aux trois axes X, Y et 25 3046263 Z d'un repère lié à un tel gyroscope. L'architecture proposée permet de certifier facilement un tel système selon les normes applicables au secteur de l'aéronautique telles que les normes D0254 et D0178. Un tel système est adapté au traitement d'un nombre élevé d'opérations et de variables, 5 typiquement quelques milliers de variables et d'opérations. Vieillissement de variable Certains calculs, des filtrages par exemple, peuvent définir leur résultat de calcul courant Sr, en fonction d'une entrée courante En et des entrées et sorties du même calcul lors de cycles de calcul précédents Ero, En-2, , 10 Sn-1, Sn_2... Le résultat de chaque calcul étant stocké dans la mémoire de données à un emplacement prédéfini, il serait alors nécessaire avant de calculer la sortie du calcul au cycle suivant de déplacer chaque donnée En_ 1, En-2, --- Sn-1, Sn-2 dans l'emplacement mémoire correspondant à l'instant précédent. Par exemple la donnée Er,_1 devrait être décalée dans l'espace 15 mémoire correspondant à la donnée En-2. Pour éviter de tels déplacements de données en grand nombre dans la mémoire de données, le système selon l'invention peut disposer d'un mécanisme de vieillissement de variable permettant de « vieillir » des données à chaque cycle de calcul, sans avoir à effectivement les déplacer 20 dans la mémoire de données. Pour cela un adressage virtuel peut être utilisé. Pour chaque variable (E, S,...) devant subit un vieillissement, un espace mémoire contigu est alloué dans la mémoire de donnée. Cet espace doit être de taille suffisante pour stocker le nombre d'itérations de la variable (En, En_1, En_2...) nécessaires au calcul. Un compteur de 25 vieillissement est incrémenté à chaque cycle de calcul et permet de mémoriser où se trouve la version la plus récente de la variable dans l'espace mémoire qui lui a été alloué. Lors d'un accès à la mémoire de données pour accéder à une variable gérée par un tel mécanisme de vieillissement, l'adresse fournie correspond à l'adresse du premier 26 3046263 emplacement mémoire de l'espace mémoire alloué à la variable additionnée de l'ancienneté de la donnée à laquelle l'accès est requis. Le système utilise l'adresse fournie et la valeur du compteur de vieillissement pour calculer l'adresse réelle de la donnée dans la mémoire de données. 5 Un tel mécanisme permet d'optimiser le temps de calcul de tels calculs « récursifs » et l'espace mémoire des mémoires d'opérations et de données. Dimensionnement et initialisation L'invention concerne également un procédé permettant de dimensionner 10 et d'initialiser le système décrit ci-dessus pour l'exécution d'un ensemble donné d'opérations à exécuter. Un tel procédé doit permettre de construire un tel système d'un point de vue matériel en définissant les opérateurs nécessaires et en dimensionnant les mémoires d'opérations et de données, mais aussi d'un point de vue logiciel en chargeant la table 15 d'opérations avec une définition des opérations à exécuter et en chargeant la mémoire de données avec les variables et autres données nécessaires au calcul. Avantageusement un tel dimensionnement et une telle initialisation peuvent être mis en oeuvre à partir d'un descriptif de haut niveau des 20 opérations à exécuter indépendant de la structure et du fonctionnement du système. Un tel descriptif de haut niveau est un descriptif ne nécessitant que la connaissance des opérations pouvant être appelées dans la table d'opérations. Un tel descriptif ne nécessite ainsi pas de connaissance de la structure du système, notamment du fonctionnement des opérateurs et 25 de la structure des mémoires et des adresses de leurs emplacements mémoire. Un tel procédé illustré en figure 4 peut comprendre les étapes suivantes : - une détermination El, à partir d'un descriptif de haut niveau de l'ensemble d'opérations à exécuter, des opérateurs nécessaires 27 3046263 pour l'exécution desdites opérations, du nombre d'opérandes et de résultats de l'ensemble des opérations à exécuter, - une détermination E2 de la taille des adresses des emplacements mémoire de la mémoire de données en fonction du nombre 5 d'opérandes et de résultats déterminé, - une détermination E3 de la taille des identifiants d'opération en fonction du nombre d'opérateurs 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é, 10 - 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 et de la mémoire 15 d'opération à partir du descriptif de haut niveau de l'ensemble des opérations à exécuter. De plus, lors de la mise en oeuvre de ces étapes, des fonctions peuvent également être définies pour pouvoir réaliser des appels de fonction dans la table d'opérations comme défini précédemment. Les mémoires 20 d'opération et de données peuvent également être optimisées comme décrit ci-dessus. Le temps d'exécution des opérations est constant pour une initialisation donnée des mémoires de données et d'opérations. Afin de simplifier la mise en oeuvre d'un tel procédé, celui-ci peut être 25 réalisé de manière assistée par ordinateur. Un exemple illustratif est décrit dans les paragraphes suivants, selon lequel ce procédé est mis en oeuvre par le biais d'un tableur. 28 3046263 La figure 5 donne un exemple de table permettant de sélectionner les opérateurs à implémenter dans le système, parmi un ensemble d'opérateurs disponibles. Dans cet exemple, le système est dimensionné pour comprendre huit opérateurs différents. Chaque opérateur peut se voir 5 assigner un identifiant (colonne val). La figure 6 donne un exemple de table permettant de définir les variables à mémoriser dans la table de données. Dans cet exemple, la mémoire de données est dimensionnée pour comprendre 8 variables de registre, deux variables d'entrée et deux variables de sortie. Une telle table peut 10 également servir pour faire appel au mécanisme de vieillissement de variable défini ci-dessus. En l'occurrence des espaces mémoires sont réservés pour le vieillissement de deux variables sur quatre cycles de calcul, pour un total de vingt variables. Dans cet exemple, une telle table est conçue pour assigner aux variables requises des adresses dans la 15 mémoire de données, indiquées dans les colonnes grisées de la table sous forme décimale, binaire et hexadécimale. La figure 7 donne un exemple de table permettant de définir l'ensemble d'opérations à exécuter à implémenter dans la table d'opérations de la mémoire d'opérations. Dans cet exemple, la table d'opérations est remplie 20 avec 17 opérations dont 11 opérations pour le calcul des variables de sortie sortie_1 et sortie_2. Chaque opération est définie par son opérateur, ses opérandes et sa variable de résultat. A partir des deux tables précédentes et des opérations définies, les colonnes de droite grisées peuvent être remplies. Ces colonnes traduisent les opérations définies en 25 termes d'adresses des opérandes et des résultats dans la mémoire de données et d'identifiants des opérateurs appelés. A partir de ces tables, le système peut être instancié en générant automatiquement un fichier HDL de paramétrage définissant les opérations à exécuter et l'état des mémoires à l'aide d'un langage de bas 29 3046263 niveau. Un tel fichier peut présenter l'avantage d'être commenté, rendant plus aisée sa vérification. La certification du fonctionnement du système est ainsi facilitée. Optionnellement, lors de l'initialisation du système, l'ordre des opérations 5 dans la table d'opérations peut être optimisé de manière à tirer parti au maximum de la capacité de l'ALU à exécuter plusieurs opérations de latences différentes en parallèle, grâce à son pipeline d'exécution. Pour cela, les opérations peuvent être ordonnées, lorsque cela est possible sans modifier les résultats de calcul, de façon à placer à des lignes 10 successives de la table d'opérations des opérations pouvant être exécutées en même temps, c'est-à-dire de manière à ce que les opérations présentant une grande latence soient suivies d'opérations de courte latence indépendantes des précédentes, et donc pouvant être exécutées sans attendre le résultat de l'opération de forte latence 15 précédente. Selon un mode de réalisation, un tel système peut être réinitialisé par l'application d'un patch de mise à jour. Le contenu des mémoires peut alors être remplacé afin de définir un nouvel ensemble d'opérations à 20 exécuter, faisant éventuellement appel à des opérateurs différents de ceux appelés précédemment, si ces nouveaux opérateurs ont été implémentés dans le système. Exécution L'invention concerne également un procédé d'exécution en temps réel 25 d'un ensemble d'opérations à exécuter mis en oeuvre par le système décrit ci-dessus. Dans un tel procédé le séquenceur peut passer, à la réception d'une commande externe, d'un état d'attente à un état d'exécution des 30 3046263 opérations. Dans un tel état d'exécution, l'ensemble des opérations peut être exécuté, puis le séquenceur peut retourner dans l'état d'attente. Dans un tel procédé d'exécution en temps réel d'un ensemble d'opérations à exécuter, un appel de fonction comme décrit ci-dessus peut 5 être mis en oeuvre. Pour cela, ledit ensemble d'opérations peut comprendre une série d'opérations, dite fonction, appelée à plusieurs reprises dans la table d'opérations. Un marqueur de fin de fonction peut être inséré dans la table d'opérations après la dernière opération correspondant au premier appel de cette fonction et les autres appels à 10 cette fonction peuvent être 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. Lors de l'exécution d'une telle opération d'appel de fonction les étapes suivantes peuvent être mises en oeuvre : 15 -une sauvegarde et un remplacement de la valeur courante du compteur 3 par l'adresse de la première opération de la fonction à 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, 20 -une restauration de la valeur sauvegardée du compteur, -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. Le procédé d'exécution peut également être mis en oeuvre en mode pas à pas dans lequel, à l'issue de l'exécution de chacune des opérations à 25 exécuter, sont mises en oeuvre : - une interruption temporaire de l'exécution des opérations, 31 3046263 - 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. Dans ce procédé d'exécution, une opération à exécuter peut être insérée 5 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, - aucune opération n'est en cours à un étage du pipeline correspondant à la latence de l'opération à exécuter. 10 Afin de mettre en oeuvre le vieillissement de variables décrit ci-dessus, plusieurs versions successives d'une donnée correspondant à des cycles de calcul successifs peuvent être 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 15 enregistrées dans ledit espace mémoire, l'adresse de chaque 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. Afin de garantir le déterminisme de l'exécution des opérations, lorsque la table d'opération comprend une opération conditionnelle, telle qu'une 20 opération If... Then... Else, tous les calculs spécifiés par ladite opération peuvent être exécutés, quel que soit le résultat d'une condition de ladite opération conditionnelle. Un tel système et de tels procédés permettent ainsi de réaliser des calculs 25 temps-réel, avec un encombrement et une consommation d'énergie restreints. Un tel système peut aisément inclure des moyens de mitigation contre les évènements SEU/MBU afin d'améliorer sa sureté de 32 3046263 fonctionnement. L'architecture séquencée du système et la définition des opérations à exécuter à l'aide d'une table d'opérations permettent d'adapter facilement le système pour l'exécution d'ensembles d'opérations variés. Enfin une telle table d'opérations et la structure câblée purement 5 déterministe du système permettent une certification facile de celui-ci. 33 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. 2. Systè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. 3. Systè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. 4. Systè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 5. Systè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 6. Systè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 7. Systè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. 8. Systè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). 9. Systè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. 13. Procé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. 15. Procé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. 17. Procé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. 18. Procé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.