Fabien Deschodt wrote:
> > A moins que.....
> A moins que optimisé Pentium ne signifie utilisation d'instructions propres
> au Pentium pour accélérer l'exécution.
> Question aux spécialistes: C'est pas ca, "optimisé Pentium"?
Non.
Optimiser Pentium (et+), c'est pas utiliser de nouvelles instructions
(faut deja les connaitre, et voir si ca apporte vraiment qqchose. Par
exemple MMX ou SSE=0).
En fait, le plus important sur les dernieres generations de proc, c'est
l'alignement memoire et la meilleure gestion possible du cache.
Les pentiums permettent : 

- d'executer une instruction simple (mov,shl,shr... en asm Intel) en
meme temps qu'une instruction "compliquee" (=simples + add, mul...).
Pour certaines instructions, suivant la facon dont on l'utilise, on peut
les utiliser en parallelle (add ax,bx ok mais pas add ax,[si+3] par ex.)

- Le cache permet d'eviter d'attendre la reponse de la memoire, mais
quand ce a quoi on veut acceder n'y est pas, on perd enormement de
temps, d'ou l'idee de "prechauffer" le cache (expression venant de la
demoscene): par exemple on lit le premier octet de donnees que l'on veut
traiter avant d'entrer dans une boucle. En fait la gestion du cache est
primordialle sur Pentium pour optimiser du code en assembleur, sinon on
perd beaucoup de temps car le proc perd un cycle asm (au -) a acceder a
la memoire. La egcs a l'air de bien se debrouiller.

- Des boucles assembleurs trop petites (< 4 cycles assembleur) font que
le proc se prend les pieds dans le tapi en essayant de les optimiser,
d'ou AGI (me souvient plus de la signification du sigle) = grosse pause
dans le programme ("grosse", tout est relatif! On perd 1 cycle).

- On peut utiliser la FPU et les calculs entiers en parallele. Par
exemple, sur Pentium l'affichage d'un polygone 3D (sans carte 3D!) en
utilsant a la fois la FPU et le calcul entier est plus rapide qu'un
affichage en n'utilisant que le calcul entier.

C'est grace a tout ca que des tares (prenez le pas mal si vous vous
sentez vises) d'assembleur arrive a faire du code pouvant, par exemple,
egaler en vitesse une carte 3D (souvent pas en qualite, mais c'est une
autre histoire).

J'espere etre reste clair dans ces explications.

Répondre à