Nombres à virgule flottante.
Les nombres à virgule flottante, de type A × 10<sup>B</sup>, sont ainsi nommés car, dans cette représentation numérique, la virgule de la première partie du nombre (A, la « mantisse » ou « chiffre significatif ») peut être placée librement ; elle peut se positionner n’importe où, selon ce qui convient le mieux aux calculs à effectuer, et la valeur de l’exposant (B) peut être ajustée pour que la magnitude du nombre reste constante. Voir la figure 1 : 1,234 × 10<sup>6</sup> est identique à 1234 × 10<sup>3</sup>. La pratique la plus courante consiste à présenter et à stocker les nombres dans un format standardisé avec la virgule décimale placée après le premier chiffre non nul.


Pour l'ingénieur travaillant avec des représentations numériques de signaux du monde réel, comme l'audio haute définition, l'intérêt majeur du traitement des nombres à virgule flottante réside non seulement dans la liberté de positionner la virgule décimale, mais aussi dans la variété des nombres que cette notation peut représenter. La norme la plus fréquemment utilisée en traitement et calcul du signal est la norme IEEE 754. Dans cette norme, un nombre dit « simple précision » peut prendre une valeur comprise entre -10³⁹ et +10³⁹ environ. La notation à virgule flottante est un sujet à part entière, et une recherche sur Internet à ce sujet, ou sur la norme IEEE 754, fournira des informations bien plus détaillées que ce que la plupart des non-mathématiciens imaginent, notamment sur le stockage binaire des nombres, la gestion des nombres « spéciaux » (comme zéro) et les distinctions précises entre l'arithmétique à virgule flottante, à virgule fixe et entière.


Peu importe où se situe le nombre dans la plage, la partie mantisse a toujours une résolution d'environ 23 bits, ce qui la rend bien adaptée au signal de contenu tel que l'audio 24 bits.


Maintien de la fidélité du signal :
Les défis fondamentaux auxquels sont confrontés les ingénieurs lors de la conception d'une chaîne de traitement audio n'ont peut-être pas changé depuis le passage de l'analogique au numérique. Les signaux audio possèdent une large plage dynamique contenant des informations essentielles à une reproduction fidèle du contenu, informations qui doivent être préservées aux deux extrémités de cette plage : les niveaux les plus forts et les plus faibles. Tout au long du trajet du signal audio, celui-ci peut être filtré, mixé, ajusté ou amplifié à plusieurs étapes de traitement. En analogique, le concepteur devait surveiller en permanence les niveaux de signal pour s'assurer qu'ils restent supérieurs au bruit de fond, tout en veillant à ce que les crêtes du signal n'approchent pas trop les niveaux maximaux des amplificateurs ; le risque de perte d'informations par ajout de bruit dans les basses fréquences ou par écrêtage des crêtes était constant.

Utilisation2Une situation similaire se présente lors du traitement du signal dans le domaine numérique. Les valeurs des données représentant le contenu doivent se situer dans une plage numérique définie afin d'éviter toute perte d'information, que ce soit par surcharge ou par corruption. De nombreuses étapes du traitement du signal, notamment le filtrage, nécessitent des opérations mathématiques successives – principalement des multiplications – qui peuvent faire varier la valeur absolue des données sur de très larges plages. Lorsque la plage numérique est limitée, il convient de veiller particulièrement à ce que la « fenêtre de variation » des valeurs relatives – dans le cas du contenu audio, du niveau le plus fort au niveau le plus faible – reste dans la plage disponible ; dans le domaine analogique, au-dessus du bruit de fond mais en dessous de la tension d'alimentation.


Traditionnellement, les dispositifs de traitement numérique du signal utilisant l'arithmétique à virgule flottante sont nettement plus coûteux que leurs homologues à virgule fixe. Une approche courante consiste à développer une première version d'un projet de traitement du signal dans un environnement à virgule flottante, permettant aux valeurs numériques de prendre librement n'importe quelle valeur dans le vaste espace numérique disponible. Une fois les algorithmes fonctionnels conformément aux spécifications, le prototype est converti sur un matériel à virgule fixe moins onéreux. Ce processus implique notamment l'inspection des valeurs numériques générées par le produit fonctionnel tout au long de la chaîne de traitement du signal et l'introduction de facteurs d'échelle aux points appropriés afin de maintenir les valeurs dans des plages utilisables. L'approche inverse est également possible : les chefs de projet peuvent choisir d'adapter les conceptions à un matériel cible plus coûteux afin de raccourcir et de réduire les coûts du processus de développement.


Les progrès technologiques permettent de miniaturiser les unités de calcul en virgule flottante (FPU).
Les deux méthodes décrites précédemment reposent sur le principe que les coprocesseurs à virgule flottante occupent une grande surface de silicium, ce qui augmente leur coût. Cependant, les technologies actuelles de fabrication du silicium rendent cette hypothèse caduque. Il est désormais possible d'intégrer un cœur de microprocesseur 32 bits – du type de ceux présents dans les microcontrôleurs de milieu de gamme – à une unité à virgule flottante entièrement conforme à la norme IEEE 754, le tout dans un boîtier économique. Par exemple, les microcontrôleurs AVR UC3 d'Atmel offrent déjà d'excellentes performances pour le traitement numérique du signal, avec une prise en charge des calculs en virgule fixe et en virgule entière. L'ajout d'une unité à virgule flottante simple précision modifie considérablement les possibilités offertes aux concepteurs.

Diagramme d'utilisationLe premier avantage, découlant des observations précédentes sur les systèmes de nombres à virgule flottante, est l'élimination de nombreuses problématiques liées aux plages et aux échelles numériques. Grâce aux étapes successives du processus et à la vaste plage disponible, la valeur du signal peut (dans une large mesure) prendre n'importe quelle valeur absolue requise ; l'information essentielle – la plage dynamique du signal – est toujours contenue dans la représentation fractionnaire 24 bits de la mantisse du nombre à virgule flottante. Ceci élimine la nécessité de surveiller constamment l'échelle pour maintenir le nombre dans les limites.
Les avantages d'une unité de calcul en virgule flottante (FPU) intégrée ne se limitent toutefois pas à une simple liberté de conception ; les performances sont également améliorées car la FPU peut effectuer des opérations telles que la multiplication et la division précises en quelques cycles d'horloge seulement, opérations qui consomment plusieurs dizaines de cycles sur un cœur non augmenté. Dans les microcontrôleurs AVR UC3, l'unité de calcul en virgule flottante (FPU) exécute la plupart des instructions à virgule flottante 32 bits en un seul cycle, et une multiplication-accumulation 32 bits en deux cycles d'horloge, contre 30 à 50 cycles nécessaires pour effectuer la même opération arithmétique sans FPU. Ce gain de performance permet d'accroître considérablement la capacité de traitement du signal d'un microcontrôleur, ou de réduire significativement la consommation d'énergie pour obtenir un résultat donné.
L'association microcontrôleur + FPU ouvre ainsi un champ d'applications plus vaste.


Il existe de nombreux exemples de systèmes critiques où le code doit respecter des délais temps réel et exploiter la capacité d'effectuer des calculs de haute précision en quelques cycles CPU seulement. La transmission de puissance automobile en est un exemple : un calculateur de gestion moteur doit traiter les entrées de capteurs présentant de très grandes plages dynamiques, mais le temps disponible pour chaque cycle de calcul est entièrement déterminé par la vitesse de rotation du moteur. Des contraintes similaires s'appliquent à des systèmes comme l'ABS (système antiblocage des roues) ou la suspension active. Dans la commande précise des moteurs électriques, la capacité à gérer de larges plages de valeurs est également précieuse, car les algorithmes nécessitent l'application séquentielle de nombreuses transformations complexes sans perte de données due à une panne ; cependant, là encore, le temps de calcul est déterminé par la période de rotation du moteur. Dans ces cas, précision et rapidité représentent toutes deux des atouts majeurs. Le traitement numérique du signal par FFT (transformée de Fourier rapide) est un exemple bien connu des ingénieurs confrontés à des problèmes qui peuvent être résolus grâce à l'accélération apportée par les calculs mathématiques en virgule flottante. Dans un autre domaine d'application, celui des systèmes graphiques et d'édition, la qualité visuelle des résultats dépend de la précision des calculs géométriques qui permettent l'affichage des textures graphiques et des polices imprimées. Dans ce cas, les limitations liées au temps réel sont moins importantes, mais les performances et l'efficacité du système sont directement influencées par la capacité de l'unité de calcul en virgule flottante (FPU) à effectuer les calculs en un nombre réduit de cycles. Traditionnellement, chacun de ces secteurs a accès aux calculs en virgule flottante, mais ce n'est généralement pas le cas pour les concepteurs travaillant avec des cœurs de microcontrôleurs.

Utilisation3La disponibilité de l'arithmétique à virgule flottante dans ce type de processeur modifie la dynamique du choix des composants pour de nombreuses conceptions, notamment dans le domaine audio grand public. La chaîne de traitement du signal audio illustre clairement l'avantage qu'offre une architecture à virgule flottante aux concepteurs. Dans la plupart des cas, voire la majorité, la source du signal est une représentation numérique convertie au format numérique requis en quelques cycles seulement. À la fin de la chaîne, le signal est reconverti dans le domaine analogique. Après normalisation (une opération effectuée en un seul cycle), un convertisseur numérique-analogique est appliqué aux nombres fractionnaires représentés par la mantisse, qui contient toutes les données nécessaires. Toute déviation du signal sur l'ensemble de la plage des nombres à virgule flottante est simplement ignorée ; l'exposant n'est pas utilisé et la précision maximale est maintenue tout au long du processus.


Les concepteurs travaillant sur l'acquisition et le traitement du signal dans d'autres environnements, tels que les systèmes industriels ou l'instrumentation médicale, et qui doivent également effectuer de multiples étapes de traitement sur les données et requièrent une large plage dynamique, constateront que l'intégration d'un cœur de microcontrôleur à usage général avec une unité de calcul en virgule flottante (FPU) modifie leurs options. Auparavant, un chemin de signal avec traitement en virgule flottante impliquait inévitablement de combiner un microprocesseur ou un microcontrôleur avec un processeur de signal numérique (DSP) dédié, avec les coûts, la taille et la consommation d'énergie que cela implique. L'option de baser l'ensemble de la conception sur un DSP était souvent écartée car ce dernier ne possédait pas les capacités nécessaires pour gérer les fonctions de contrôle requises par le projet.


Conclusion :
Les marchés généralement associés aux microcontrôleurs — où des facteurs tels que la facilité de connexion aux signaux et événements externes, le faible coût et la consommation d'énergie limitée ont été prédominants — n'avaient pas auparavant accès aux calculs mathématiques en virgule flottante.


Le terme FPU a longtemps été associé à des connotations telles que la complexité, le haut de gamme et les systèmes basés sur le traitement numérique du signal (DSP). En réalité, grâce aux progrès des procédés de fabrication, les FPU sont désormais accessibles à un éventail de projets beaucoup plus large. Les ingénieurs peuvent ainsi tirer parti de la précision de calcul, de la large plage dynamique et de la simplicité de programmation offertes par les calculs mathématiques en virgule flottante.

Auteur : Haakon Skar, directeur marketing AVR, Atmel.

Pour plus d'informations ou un devis