MAO > Général > Pentium 4 et Denormalisation

Dernière mise à jour : 13/06/2005

Avertissement : page plus maintenue depuis 2005


Pentium 3 et Pentium 4 : surcharges processeur ?

Actuellement, un certain nombre de logiciels audio et de plugins audio peuvent présenter des problèmes lorsqu'ils sont utilisés sur un PC équipé d'un processeur Pentium 4. Problème de surcharge d'usage processeur (CPU Spikes) atteignant parfois 500%, parfois même en l'absence de traitement d'un signal audio, et provoquant parfois un plantage complet du système (cause : surcharge système). Cela peut affecter certains plugins shareware, mais aussi certains plugins professionnels tels Steinberg Grand et Waldorf Attack.

La cause ?

Une fonctionnalité du Pentium 4 (certains appellent ça un bug) qui fait que le processeur entre dans un mode spécial de "super-précision" appelé "Mode Dénormalisation", dès l'instant où il doit traiter des nombres à virgule flottante de très faible valeur. Ce passage en Mode Dénormalisation est normal, et quasiment tous les processeurs adoptent cette façon de faire avec les nombres à virgule flottante. Malheureusement, les calculs effectués dans ce mode prennent considérablement plus de temps (ils sont donc plus lents) et consomment beaucoup plus de ressources processeur. Aussi, pour des applications temps réel, le processeur ne devrait-il pas perdre trop de temps dans ce Mode Dénormalisation.
Il n'existe pas de procédure certifiée pour désactiver ce mode, du moins de ce que j'en sache. Le problème existait déjà avec le Pentium 3, et il existait des contournements consistant par exemple à ajouter un bruit très faible au signal utile afin de garantir que ce dernier reste toujours au-dessus du seuil de "commutation". Pour le Pentium 4, ce seuil existe toujours, mais est plus haut. D'après quelques tests effectués par des développeurs, ce seuil est passé de 1.0e-25 (pour le P3) à 1.0e-24 (pour le P4), ce qui correspond tout de même à un facteur 10 ! Ce qui signifie que le programme (ou plugin) peut rester dix fois plus longtemps dans le mode Dénormalisation. Ceci pouvant conduire certains programmes ou plugins à des plantages continuels avec un Pentium 4, alors qu'ils fonctionnaient parfaitement avec un Pentium 3 !
Il semblerait toutefois qu'une nouvelle génération de Pentium 4 ne présente plus cet effet de Dénormalisation de façon aussi prononcé. Mais cela n'empêche pas que les développeurs doivent dans tous les cas s'assurer par un moyen ou un autre que le mode Dénormalisation ne s'activera pas, puisqu'il s'agit d'un problème général qui affecte l'ensemble des processeurs travaillant sur des nombres à virgule flottante.
Vous pourrez trouver d'excellentes ressources au sujet de ce problème, notamment sur le site http://www.musicdsp.org.

Je suis développeur de plugins, comment éviter ce phénomène ?

La meilleur et la plus rapide des solutions consiste à ajouter une constante de faible valeur, par exemple une constante de valeur 1.0e-24 à chaque emplacement dans le code où le processeur risque de passer en mode Dénormalisation. Ceci ne changera en pratique rien à votre signal audio, et permettra de rester au-dessus du seuil de commutation. Exemples d'emplacements critiques : boucles de réinjection de filtres, lignes à retard...

Crédits

Ce texte est en majeur partie la traduction d'un extrait de tutoriel écrit par Tobias Fleischer (alias Tobybear), qui propose sur son site http://www.tobybear.de des plugins au format VST et ressources de développement de VST à l'aide de Delphi (entre autre).