Processeur à virgule flottante et à virgule fixe

Processeur à virgule flottante et à virgule fixe - Divers - Programmation

Marsh Posté le 25-01-2007 à 15:45:34    

Bonjour,
 
je voulais porter JACK audio (http://jackaudio.org/) sous PDA où il y a Linux installé dessus (version Familiar - http://familiar.handhelds.org). Mais le souci, c'est que j'utilise un PDA dont le processeur est un Xscale PXA270 qui serait à virgule fixe (information que je n'ai pas encore vérifié, mais je donnerais l'info dès que je l'ai) alors que JACK Audio a été développé pour les processeurs à virgule flottante.  
 
Ma question est en quoi le fait que le processeur soit à virgule flottante ou à virgule fixe vient changer le programme ou plutôt la façon de coder ?
 
Merci par avance,
 
Ker

Reply

Marsh Posté le 25-01-2007 à 15:45:34   

Reply

Marsh Posté le 25-01-2007 à 15:57:30    

problème de précision et d'optimisation certainement.
 
virgule fixe : à priori, c'est simplement un entier auquel on indique qu'un certain nombre de chiffres sont après la virgule (mettons que tu un int32, on a les 16 premiers bits pour la partie entière et les 16 suivants pur la partie décimale). du coup, en interne, le processeur ne fait que gérer des entiers.
 
alors qu'en virgule flottante, le nombre est une fraction de deux nombres entiers. tout ce qui est calcul est donc très différent, et les optimisations largement différentes.
 
les calculs en virgule flottante garantissent un maximum de précision tout au long des calculs, alors qu'en virgule fixe, à priori, tu vas perdre de la précision à chaque calcul.
 
pour du traîtement audio, je ne pense pasque ce soit critique, étant donné que l'oreille va avoirdu mal à distinguer des nuances minimes et que le son se traîte facilement sur les processeurs modernes.
 
bon, je dis ça, mais c'est 100% des supposition, je ne connais pas suffisament pour affirmer de façon sûre ce que j'avance ;)
 
faudra demander à harko :)

Reply

Marsh Posté le 25-01-2007 à 16:25:52    

Ok. J'ai trouvé l'info :  
The PXA27x processor complies with the ARM*
Architecture V5TE instruction set (excluding floating point instructions) and follows the ARM*
programmer’s model.
ftp://download.intel.com/design/p [...] 000003.pdf
 
Merci pour ta réponse, mais tu me décris plus la différence entre un processeur à virgule fixe et à virgule flottante. Ce que je voulais savoir, c'était, y a-t-il une différence entre la façon de coder entre un processeur à virgule flottante et à virgule fixe ?
 
Par contre, je me doute qu'il y a une différence dans le compilateur, car, comme il est dit dans la datasheet, les instructions à virgule flottante, qui étaient présentes dans les ARM, ne le sont plus dans les Xcale :(
 
Mais, je pensais utiliser une compilation croisée avec un compilateur dédié au Xscale...
 

Reply

Marsh Posté le 25-01-2007 à 16:39:53    

ben oui, tout comme il y a une différence dans la façon de coder quand tu travailles sur un 8086 avec des registres 8 bits alors que tu veux faire des calculs sur des entiers de 32 bits...
 
là où dans un cas ça va se faire tout seul, dans l'autre tu vas devoir faire des bidouilles à la main pour t'en sortir.
 
ceci dit, cela concerne à mon avis uniquement des zones précises dans le code :
-> parties fortement optmisées
-> parties où la précision doit être maximale
 
pour le reste, logiquement, le compilateur devrait être capable de faire les mêmes calculs à partir du même code sur deux processeurs différents. c'est d'ailleurs le but du compilo d'un langage évolué.
 
tu peux parfaitement manipuler des entiers 32 bits sur un 8086 en C. seul problème : le compilateur va devoir rajouter du code spécifique afin de saucissonner les nombres et les calculs, car ils vont devoir passer dans des registres 8 bits (ou 16 bits, je sais plus pour le 8086).
 
la seule différence, c'est que ça va être bien plus lent, et là où 32 bits de précision sont inutiles, au lieu d'utiliser "int" dans ton code tu aurais préféré "byte" si tu avais prévu dès le départ de bosser avec un proco 8 bits.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed