Brevet FR3162539A1 — publié le 20251128

L’invention concerne un processeur comprenant : une unité de traitement (ALU) d’opérations entières, une unité de traitement (FPU) d’opérations en virgule flottante, un banc de registres (RGBK), un bus externe de données (DTB), un chemin de données reliant le banc de registres à l’unité de traitement d’opérations en virgule flottante, à l’unité de traitement d’opérations entières, et au bus externe de données, et une chaine de traitement configurée pour traiter au moins partiellement simultanément des instructions d’opération entière et des instructions d’opération en virgule flottante, la chaine de traitement comprenant des étages communs pour traiter une instruction d’opération entière et une instruction d’opération en virgule flottante, et au moins un étage d’exécution supplémentaires pour exécuter une opération en virgule flottante. Figure 1 Processeur à virgule flottante La présente invention concerne le domaine des processeurs et en particulier des microprocesseurs, notamment des microprocesseurs pour systèmes embarqués adaptés aux applications spatiales. Etat de la technique Il existe trois types d’architectures de processeurs pour systèmes embarqués spatiaux : les microcontrôleurs, les processeurs de traitement du signal et les processeurs généralistes. Les microcontrôleurs sont de petits processeurs permettant de piloter des opérations de contrôle-commande à l’aide d’actionneurs et de capteurs, comme par exemple la gestion des panneaux solaires d’un satellite. Les microcontrôleurs n’intègrent pas d’opérateurs de calcul en virgule flottante et fonctionnent seulement à plusieurs dizaines de Méga Hertz. Les processeurs de traitement du signal DSP ("Digital Signal Processor") sont spécialisés dans le calcul intensif. Les DSP peuvent réaliser des opérations en virgule fixe ou en virgule flottante. Pour garantir une grande vélocité (faible latence) et un résultat rapide, les opérations arithmétiques sont exécutées en un seul cycle d’horloge. La fréquence de fonctionnement de ce type de processeur est de plusieurs centaines de MHz. Ces processeurs peuvent être utilisés, par exemple, pour des capteurs stellaires. De tels capteurs sont embarqués dans un satellite pour déterminer une position en fonction de l’emplacement des étoiles. Cette fonction de positionnement doit être exécutée en temps réel et demande une forte puissance de calcul pour traiter et interpréter des images. Enfin, les processeurs généralistes mis en œuvre notamment dans les ordinateurs personnels et téléphones mobiles sont capables de fournir de grandes puissances de calcul en utilisant un parallélisme spatial et temporel. La fréquence de fonctionnement de ces processeurs peut atteindre plusieurs Giga Hertz. Quelle que soit leur architecture, les processeurs peuvent utiliser deux types de jeux d’instructions, à savoir les jeux de type RISC ("Reduced Instruction Set Computer") et les jeux de type CISC ("Complex Instruction Set Computer"). Les jeux de type RISC rassemblent exclusivement des instructions relatives à des opérations simples, de taille fixe. Ces instructions sont donc simples à décoder et rapides à exécuter, mais entrainent une empreinte mémoire étendue. Dans les jeux de type CISC, les instructions sont de taille variable, de 1 à 5 octets, et sont exécutées en un ou plusieurs cycles d’horloge en fonction de leur complexité. Ainsi, elles sont optimisées en termes d’empreinte mémoire. Les processeurs capables d’exécuter des opérations en virgule flottante comprennent généralement un processeur pour les opérations entières et un coprocesseur pour les opérations en virgule flottante. L’association d’un processeur et d’un coprocesseur permet d’effectuer des opérations entières et des opérations en virgule flottante simultanément. Ce type d’architecture possède deux bancs de registres et deux chemins de données distincts. Cependant, les applications telles que les applications spatiales nécessitent des processeurs durcis aux environnements critiques radiatifs. En effet, le comportement d’un circuit peut être altéré lorsqu’il est traversé par des particules énergétiques. L’énergie de ces particules est notamment capable de modifier la valeur contenue dans des registres. Pour pallier ce problème, on a proposé des architectures mettant en œuvre trois ensembles de registres redondants, et de procéder par vote majoritaire, ce qui a pour conséquence une augmentation notable du nombre de registres. Or dans les applications embarquées, il est également souhaitable de limiter le nombre de registres afin de ne pas augmenter la consommation statique et dynamique du processeur. En effet, la consommation des systèmes embarqués notamment dans le domaine spatial est critique car ceux-ci fonctionnent la plupart du temps sur batteries rechargées par des panneaux solaires. Ces différentes contraintes imposent une minimisation du nombre de registres et des cellules mémoires. Cependant, les logiciels embarqués dans les applications spatiales demandent de fortes puissances de calcul en virgule flottante, notamment en double précision sur 64 bits. En effet, le format simple précision (32 bits) est souvent délaissé par crainte de voir apparaitre un dépassement de capacité ("overflow") lors de l’exécution d’un programme. En revanche, une taille de 32 bits pour les nombres entiers est privilégiée pour toutes les opérations de calcul entier telle que les calculs d’adressage des données. Il est donc souhaitable de proposer une architecture de processeur performante pour effectuer des opérations en virgule flottante double précision, qui soit à la fois peu consommatrice d’énergie, compacte en termes de surface de silicium occupée, et présentant un jeu d’instructions permettant de concevoir des programmes ayant une empreinte mémoire réduite. Résumé Des modes de réalisation concernent un processeur comprenant : une unité de traitement d’opérations entières, une unité de traitement d’opérations en virgule flottante, un banc de registres, un bus externe de données, un chemin de données reliant le banc de registres à l’unité de traitement d’opérations en virgule flottante, à l’unité de traitement d’opérations entières, et au bus externe de données, et une chaine de traitement configurée pour traiter au moins partiellement simultanément des instructions d’opération entière et des instructions d’opération en virgule flottante, la chaine de traitement comprenant des étages communs pour traiter une instruction d’opération entière et une instruction d’opération en virgule flottante, et au moins un étage d’exécution supplémentaires pour exécuter une opération en virgule flottante. Selon un mode de réalisation, le processeur comprend un bus d’accès à une mémoire programme distinct du bus externe de données. Selon un mode de réalisation, le processeur comprend un jeu d’instructions de type CISC et est configuré pour transformer les instructions CISC en instructions RISC avant de les exécuter. Selon un mode de réalisation, le banc de registres comprend seulement 32 registres de 32 bits pouvant être exploités sous forme de 16 registres de 64 bits. Selon un mode de réalisation, l’unité de traitement d’opérations entières est configurée pour traiter des opérandes de 32 bits. Selon un mode de réalisation, l’unité de traitement d’opérations en virgule flottante est configurée pour traiter des opérandes de 64 bits. Selon un mode de réalisation, le processeur est configuré pour gérer des dépendances de données dans le chemin de données à l’aide de registres internes. Selon un mode de réalisation, la chaine de traitement comprend : un étage d’acquisition d’une instruction à exécuter, un étage de décodage de l’instruction, un étage de sélection d’opérandes de l’instruction, un premier étage d’exécution d’une opération de l’instruction, comprenant l’écriture du résultat de l’opération dans un registre du banc de registres, et deux étages d’exécution supplémentaires dédiés à l’exécution d’une opération en virgule flottante, entre l’étage de sélection et le premier étage d’exécution. Selon un mode de réalisation, les étages de décodage, de sélection et d’exécution sont séparés par des registres internes. Brève description des figures La présente invention sera bien comprise à l’aide de la description qui suit d’exemples de réalisation en référence aux figures annexées, dans lesquelles des signes de références identiques correspondent à des éléments structurellement et/ou fonctionnellement identiques ou similaires. FIG. 1 La ﬁgure 1 représente schématiquement l’architecture d’un processeur, selon un mode de réalisation, FIG. 2 La ﬁgure 2 représente une chaine de traitement d’instructions simples, mise en œuvre dans le processeur, selon un mode de réalisation, FIG. 3 La ﬁgure 3 représente une chaine de traitement d’instructions en virgule flottante, mise en œuvre dans le processeur, selon un mode de réalisation, FIG. 4 La ﬁgure 4 illustre un cas de traitement par le processeur d’une séquence d’une instruction en virgule flottante suivie de deux instructions entières, selon un mode de réalisation, FIG. 5 Les ﬁgures 5A, 5B, 5C illustrent divers exemples de traitement par le processeur de séries de trois instructions. Description détaillée La ﬁgure 1 représente l’architecture d’un processeur PRC et en particulier l’architecture du chemin de données du processeur, selon un mode de réalisation. Le chemin de données du processeur PRC comprend notamment un banc de registres RGBK, une unité arithmétique et logique ALU, une unité de calcul en virgule flottante FPU, un décodeur d’instruction IDEC, un registre d’instruction IR, et un registre de pointeur d’instruction PC. Le banc de registres RGBK comprend des registres de 32 bits pouvant être associés deux à deux pour former 16 registres de 64 bits. L’unité ALU est configurée pour réaliser des opérations arithmétiques et logiques à un ou deux opérandes d’entrée et un opérande de sortie. L’unité ALU reçoit en entrée une ou deux opérandes sur 32 bits chacune issues du banc de registre RGBK, et fournit une donnée de sortie sur 32 bits qui est transmise par un bus de donnée interne DBI1 vers une entrée du banc de registre RGBK ou vers un bus externe de donnée DTB donnant accès à un espace mémoire de données connecté au processeur PRC et adressé par le bus externe ADB d’adresse. L’unité de calcul FPU est configurée pour exécuter des opérations en virgule flottante. A cet effet, l’unité de calcul FPU est connectée en entrée au banc de registre RGBK par deux bus de donnée de 64 bits (4 x 32bits), et en sortie au bus de données DTB et au banc de registre RGBK par deux bus de données dont le bus DBI1 et un autre bus interne de données DBI2 de 32bits. Le décodeur IDEC détermine à partir de l’instruction dans le registre IR des commandes à exécuter par l’unité ALU ou FPU, et des numéros de registres à sélectionner dans le banc de registre RGBK pour exécuter l’instruction. Le bus de données DTB peut être relié aux bus internes DBI1, DBI2 par exemple par des multiplexeurs / démultiplexeurs, pour sélectionner l’un ou l’autre des bus DBI1, DBI2 à connecter au bus DTB. Le registre PC est connecté à un bus externe APB d’adresse de programme de 24 bits donnant accès à un espace de mémoire programme connecté au processeur PRC. Le registre d’instruction IR est connecté à un bus externe d’instruction PGB de 32 bits pour recevoir une instruction à exécuter, située à l’adresse mémorisée dans le registre PC. L’unité de calcul FPU est par exemple conforme à la norme IEEE 754 relative à l'arithmétique à virgule flottante. Ainsi, le processeur présente une architecture de type Harvard, possédant un bus d’accès à l’espace mémoire programme (PGB/APB) distinct du bus d’accès à l’espace mémoire de données (DTB/ADB). Le processeur PRC comprend un unique chemin de donnée reliant le banc de registre RGBK, les unités ALU et FPU et le bus externe DTB de données. Selon un mode de réalisation, le nombre de registres du banc de registres RGBK est limité à 32 registres de 32 bits. Une telle taille du banc de registres est compatible avec tous les compilateurs de code en langage C, comme le compilateur certifié CompCert utilisé notamment pour coder des applications embarquées critiques, comme dans le spatial. En effet, ce compilateur réalise peu d’optimisations de performances et utilise donc très peu de registres. Il peut donc être inutile de disposer d’un plus grand nombre de registres du point de vue du compilateur. Selon un mode de réalisation, le processeur PRC est de type hybride dans la mesure où il comprend un jeu d’instructions CISC, le décodeur IDEC étant configuré pour décoder et transformer les instructions CISC en instructions RISC. Il en résulte que le processeur PRC peut exécuter rapidement les instructions sur l’unique chemin de données en étant capable d’accéder en parallèle à l’ensemble des ressources du processeur. Ainsi, l’empreinte mémoire des programmes est réduite au maximum, tout en conservant de bonnes performances. Selon un mode de réalisation, le chemin de données est configuré pour gérer les interactions du processeur PRC avec la mémoire externe. Le chemin de données du processeur PRC est en outre configuré pour répartir le traitement de chaque instruction en plusieurs étages successifs d’une chaine de traitement ("pipeline"). Ainsi, l’exécution d’une nouvelle instruction peut être activée dès que le premier étage est disponible, sans attendre que l’exécution de la précédente instruction soit entièrement terminée. Grâce au fait que le processeur PRC intègre un seul et unique chemin de données, la chaine de traitement peut mettre en œuvre un certain nombre d’étages pour traiter indifféremment une instruction entière faisant intervenir l’unité ALU et une instruction en virgule flottante double précision faisant intervenir l’unité FPU, certains étages de la chaine de traitement n’étant utilisés que pour traiter une instruction en virgule flottante. Selon un mode de réalisation, la chaine de traitement comprend trois étages d’exécution d’opération, un seul de ces trois étages d’exécution étant utilisé pour traiter une instruction entière. Selon un exemple de réalisation, la chaine de traitement comprend quatre étages correspondant à quatre étapes de traitement d’un cycle d’horloge chacune, et deux étages supplémentaires d’exécution d’opération correspondant à deux étapes de traitement successives d’un cycle d’horloge chacune, spécifiquement configurés pour exécuter une opération en virgule flottante. Il est donc possible de conserver un certain parallélisme entre le traitement des instructions entières et des instructions en virgule flottante, tout en réduisant le nombre de registres. En outre, les dépendances de données sont complètement gérées par le chemin de données, ce qui permet d’éviter le positionnement d’instructions "nop" (ou "no opération") par le compilateur. La taille du code exécutable se trouve ainsi réduite. Les ﬁgures 2 et 3 représentent des étapes d’un exemple de chaine de traitement. La ﬁgure 2 représente les étapes exécutées respectivement par les étages de la chaine de traitement, durant l’exécution d’une instruction entière faisant intervenir l’unité ALU. Ces étapes comprennent le chargement ACQ de l’instruction située dans le registre IR et la mise à jour du pointeur de programme PC, le décodage DEC de l’instruction, la sélection SEL et la lecture des opérandes dans les registres du banc de registres RGBK, et enfin l’exécution EXC de l’opération entière correspondant à l’instruction, incluant l’écriture du résultat de l’opération dans un registre du banc de registres RGBK. Les étapes ACQ, DEC, SEL et EXC sont exécutées successivement, durant des cycles C1 à C4, respectivement. La ﬁgure 3 représente les étapes exécutées respectivement par les étages de la chaine de traitement durant l’exécution d’une instruction en virgule flottante, faisant donc intervenir l’unité FPU. Ces étapes comprennent les étapes ACQ, DEC et SEL exécutées pour traiter une instruction entière et trois étapes EXC1, EXC2, EXC3 d’exécution de l’opération en virgule flottante correspondant à l’instruction, la troisième et dernière étape EXC3 incluant l’écriture du résultat de l’opération dans un registre du banc de registres RGBK. Les étapes ACQ, DEC, SEL, EXC1, EXC2 et EXC3 sont exécutées successivement, durant des cycles C1 à C6, respectivement. Les chaines de traitement montrées sur les ﬁgures 2 et 3 comprennent des registres internes PR1, PR2, PR3, PR4 (ﬁgure 1) permettant de mettre en œuvre les étapes ACQ, DEC, SEL, EXC/EXC1, EXC2 et EXC3 respectivement durant les cycles C1 à C6. Le cycle C1 de chargement ACQ d’instruction est réalisé en entrée du registre d’instruction IR. Le cycle C2 de décodage DEC d’instruction est réalisé par le décodeur d’instruction IDEC. Le résultat du décodage DEC (opération à exécuter et numéros des registres contenant les opérandes) est mémorisé dans les registres internes PR1. Le cycle C3 de sélection et lecture SEL des opérandes est réalisé dans le banc de registres RGBK. Le résultat de la sélection SEL (opération à exécuter et valeurs des opérandes) est mémorisé dans les registres internes PR2. Le cycle C4 d’exécution EXC/EXC1 est exécuté par l’unité AU ou un premier étage de l’unité FPU. Les cycles C5, C6 d’exécution EXC2 et EXC3 sont réalisées successivement dans l’unité FPU. Des résultats intermédiaires issus des étapes EXC1 et EXC2 d’exécution d’une instruction par l’unité FPU sont mémorisés successivement dans les registres internes PR3 et PR4 dans l’unité FPU. Il est à noter que les opérations en virgule flottante simples comme l’addition et la multiplication peuvent être exécutées en six cycles d’horloge. Cependant, certaines instructions plus complexes comme la division ou la racine carrée sont décomposées en plusieurs opérations en virgule flottante simples, et requièrent donc plus de six cycles d’horloge pour être traitées. La ﬁgure 4 illustre un cas optimal d’une séquence de trois instructions comprenant une instruction de calcul en virgule flottante suivie de deux instructions de calcul entier. Grâce au découpage du traitement de chaque instruction en plusieurs étapes, le traitement de la première instruction de calcul entier peut démarrer dès la fin de l’étape ACQ du traitement de l’instruction de calcul en virgule flottante. De même, le traitement de la deuxième instruction de calcul entier peut démarrer dès la fin de l’étape ACQ du traitement de la première instruction de calcul entier. Du fait que le traitement de l’instruction de calcul en virgule flottante comporte trois étapes d’exécution EXC1, EXC2, EXC3, le traitement de la première instruction de calcul entier se termine (à la fin de l’étape EXC) en même temps que la deuxième étape d’exécution EXC2 du traitement de l’instruction de calcul en virgule flottante, et le traitement de la deuxième instruction de calcul entier se termine en même temps que la troisième étape d’exécution EXC3 du traitement de l’instruction de calcul en virgule flottante. Les trois instructions de la séquence sont donc traitées en parallèle par le processeur PRC en six cycles C1-C6. La ﬁgure 5A illustre un exemple de traitement par le processeur PRC d’une séquence d’une instruction de multiplication en virgule flottante suivie de deux instructions d’addition entières, correspondant au cas optimal illustré par la ﬁgure 4. Cette séquence peut être écrite en assembleur de la manière suivante : fmul r0, r1, r2 ; r0 = r1 * r2 add r3, r4, r5 ; r3 = r4 + r5 add r4, r3, r6 ; r4 = r3 + r6 La première instruction est une multiplication en virgule flottante "fmul" du contenu du registre r1 (sur 32 bits) par le contenu du registre r2 (sur 32 bits), le registre r0 (sur 64 bits) recevant le résultat de la multiplication. La deuxième instruction est une addition entière "add" du contenu du registre r4 (sur 32 bits) avec le contenu du registre r5 (sur 32 bits), le registre r3 (sur 32 bits) recevant le résultat de l’addition. La troisième instruction est une addition entière "add" du contenu du registre r3 (sur 32 bits) avec le contenu du registre r6 (sur 32 bits), le registre r4 (sur 32 bits) recevant le résultat de l’addition. Dans cet exemple, il n’y a pas de conflit d’accès à un registre, notamment le registre r3 puisque la sélection SEL d’un registre peut être effectuée en même temps que l’exécution EXC, EXC3 de l’opération précédente utilisant ce même registre. Ainsi, cette séquence d’instructions peut être traitée par le processeur PRC en six cycles C1-C8 au lieu de 14 cycles si aucun parallélisme n’était mis en œuvre. La ﬁgure 5B illustre un exemple de traitement par le processeur PRC d’une séquence d’une instruction de multiplication en virgule flottante "fmul", suivie de deux instructions d’addition entières "add". Cet exemple ne correspond pas au cas optimal illustré par la ﬁgure 4, du fait que l’instruction qui suit l’instruction en virgule flottante utilise un registre (r0) utilisé également par cette dernière. Cette séquence peut être écrite en assembleur de la manière suivante : fmul r0, r1, r2 ; r0 = r1 * r2 add r3, r0, r4 ; r3 = r0 + r4 add r5, r3, r6 ; r5 = r3 + r6 La première instruction est la multiplication en virgule flottante "fmul" du contenu du registre r1 (sur 32 bits) par le contenu du registre r2 (sur 32 bits), le registre r0 (sur 64 bits) recevant le résultat de la multiplication. La deuxième instruction est une addition entière "add" du contenu du registre r0 (sur 32 bits) avec le contenu du registre r4 (sur 32 bits), le registre r3 (sur 32 bits) recevant le résultat de l’addition. La troisième instruction est une addition entière "add" du contenu du registre r3 (sur 32 bits) avec le contenu du registre r6 (sur 32 bits), le registre r5 (sur 32 bits) recevant le résultat de l’addition. L’accès au registre r0 étant verrouillé par l’exécution de la première instruction "fmul" jusqu’au début de l’étape EXC3 (cycle C6), le séquenceur SEQ attend que deux cycles se soient écoulés avant de commencer le traitement de la deuxième instruction au cycle C4, l’étape SEL de sélection du registre r0 ne pouvant être réalisée qu’à partir de l’étape EXC3 de l’instruction "fmul" (cycle C6). En revanche, l’utilisation du registre r3 dans les deux instructions d’addition ne pose pas de problème car il peut être sélectionné (étape SEL) pendant une étape d’exécution EXC dans laquelle il est utilisé. Ainsi, cette séquence d’instructions peut être traitée par le processeur PRC en huit cycles C1-C8 au lieu de 14 cycles si aucun parallélisme n’était mis en œuvre. La ﬁgure 5C illustre un exemple de traitement par le processeur PRC d’une séquence de trois instructions en virgule flottante, comprenant une multiplication "fmul" suivie de deux addition "fadd". Cette séquence peut être écrite en assembleur de la manière suivante : fmul r0, r1, r2 ; r0 = r1 * r2 fadd r3, r0, r4 ; r3 = r0 + r4 fadd r5, r3, r6 ; r5 = r3 + r6 La première instruction est la multiplication "fmul" en virgule flottante du contenu du registre r1 (sur 32 bits) par le contenu du registre r2 (sur 32 bits), le registre r0 (sur 64 bits) recevant le résultat de la multiplication. La deuxième instruction est une addition "fadd" en virgule flottante du contenu du registre r0 (sur 32 bits) avec le contenu du registre r4 (sur 32 bits), le registre r3 (sur 64 bits) recevant le résultat de l’addition. La troisième instruction est une addition "fadd" en virgule flottante du contenu du registre r3 (sur 32 bits) avec le contenu du registre r6 (sur 32 bits), le registre r5 (sur 64 bits) recevant le résultat de l’addition. Ici encore, l’accès au registre r0 étant verrouillé par l’exécution de la première instruction jusqu’au début de l’étape EXC3 (cycle C6) de l’exécution de l’instruction "fmul". Le séquenceur SEQ attend donc que deux cycles se soient écoulés avant de commencer le traitement de la deuxième instruction "fadd" au cycle C4, l’étape SEL de sélection du registre r0 ne pouvant être réalisée qu’à partir de l’étape EXC3 (cycle C6) de l’exécution de la deuxième instruction "fadd". De même, l’accès au registre r3 étant verrouillé par l’exécution de la deuxième instruction "fadd" jusqu’au début de l’étape EXC3 (cycle C9) de l’exécution de l’instruction "fadd". Il en résulte que le séquenceur SEQ attend que deux cycles se soient écoulés avant de commencer le traitement de la troisième instruction "fadd" au cycle C7, l’étape SEL de sélection du registre r3 ne pouvant être réalisée qu’à partir de l’étape EXC3 (cycle C9) de l’instruction "fadd" précédente. Ainsi, cette séquence d’instructions peut être exécutée en 12 cycles C1-C12, au lieu de 18 si aucun parallélisme n’était mis en œuvre. Il apparaîtra clairement à l’homme de l’art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l’invention n’est pas limitée à un processeur à architecture de type Harvard. En effet, il n’est pas nécessaire que le bus d’accès aux données soit différent du bus d’accès aux instructions de programme, pour bénéficier des avantages offerts par l’architecture de processeur décrite. En particulier, la chaine de traitement précédemment décrite et la mise en œuvre d’un unique chemin de données peuvent être mises en œuvre dans un processeur comportant un unique bus d’accès aux données et aux instructions de programme. Il n’est pas non plus nécessaire que le jeu d’instructions du processeur soit de type CISC ou RISC. En effet, le décodeur d’instruction IDEC du processeur peut être adapté indifféremment à l’un de ces deux types de jeu d’instructions, sachant que le choix du type de jeu d’instructions influe sur l’empreinte mémoire des programmes susceptibles d’être exécutés par le processeur. Par ailleurs, les tailles de bus internes et externes indiqués sur la ﬁgure 1 sont fournies à titre d’exemple. L’architecture de processeur précédemment décrite peut être aisément adaptée à toutes autres tailles de bus de données, de programme et d’adresse. En outre, il peut être prévu que la chaine de traitement comporte des étages de nature et en nombre différents de ceux précédemment décrits. Ainsi la chaine de traitement peut par exemple comporter par exemple cinq étages communs aux traitement des opérations entières et en virgule flottante, et deux étages supplémentaires dédiés à l’exécution des opérations en virgule flottante. Les étages communs peuvent comprendre un étage de chargement de l’instruction à exécuter, un étage de décodage de l’instruction, un étage d’exécution de l’instruction, un étage de transfert entre un registre et la mémoire, et un étage de stockage du résultat de l’exécution dans un registre, Selon d’autres modes de réalisation, certains des étages listés ci-avant sont regroupés en un seul étage. 1. Processeur comprenant : une unité de traitement (ALU) d’opérations entières, une unité de traitement (FPU) d’opérations en virgule flottante, un banc de registres (RGBK), un bus externe de données (DTB), un chemin de données reliant le banc de registres à l’unité de traitement d’opérations en virgule flottante, à l’unité de traitement d’opérations entières, et au bus externe de données, et une chaine de traitement configurée pour traiter au moins partiellement simultanément des instructions d’opération entière et des instructions d’opération en virgule flottante, la chaine de traitement comprenant des étages communs pour traiter une instruction d’opération entière et une instruction d’opération en virgule flottante, et au moins un étage d’exécution supplémentaires pour exécuter une opération en virgule flottante. 2. Processeur selon la revendication 1, comprenant un bus (APB, PGB) d’accès à une mémoire programme distinct du bus externe de données (DTB). 3. Processeur selon la revendication 1 ou 2, dans lequel le processeur (PRC) comprend un jeu d’instructions de type CISC et est configuré pour transformer les instructions CISC en instructions RISC avant de les exécuter. 4. Processeur selon l’une des revendications 1 à 3, dans lequel le banc de registres (RGBK) comprend seulement 32 registres de 32 bits pouvant être exploités sous forme de 16 registres de 64 bits. 5. Processeur selon l’une des revendications 1 à 4, dans lequel l’unité de traitement (ALU) d’opérations entières est configurée pour traiter des opérandes de 32 bits. 6. Processeur selon l’une des revendications 1 à 5, dans lequel l’unité de traitement (FPU) d’opérations en virgule flottante est configurée pour traiter des opérandes de 64 bits. 7. Processeur selon l’une des revendications 1 à 6, configuré pour gérer des dépendances de données dans le chemin de données à l’aide de registres internes (PR1-PR4). 8. Processeur selon l’une des revendications 1 à 7, dans lequel la chaine de traitement comprend : un étage d’acquisition (ACQ) d’une instruction à exécuter, un étage de décodage (DEC) de l’instruction, un étage de sélection (SEL) d’opérandes de l’instruction, un premier étage d’exécution (EXC, EXC3) d’une opération de l’instruction, comprenant l’écriture du résultat de l’opération dans un registre du banc de registres (RGBK), et deux étages d’exécution supplémentaires (EXC1, EXC2) dédiés à l’exécution d’une opération en virgule flottante, entre l’étage de sélection et le premier étage d’exécution. Processeur selon la revendication 8, dans lequel les étages de décodage (DEC), de sélection (SEL) et d’exécution (EXC, EXC1, ECX2, EXC3) sont séparés par des registres internes (PR1-PR4).