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).