[offtopic]
Kochise>
ah ben encore heureux que le cache fasse son effet.. t'as une idee du cout en cycles d'un cache-miss, meme sur le L1?
le probleme c'est que c'est quand meme un acces memoire, et meme si c'est deja en L1, tu te farcis un stall systematique, meme si tu loade 20 fois la meme adresse
et je suis pas sur de savoir de quoi tu parle en disant ecriture en copy-back ? tu parle d'un load-hit-store, ou de si le cache se fait invalider par un autre core qui ecrit a la meme adresse / a une adresse qui se fait mapper dans la meme banque du cache?
(enfin dans le premier cas, yen a pas, et dans le second, faudrait quand meme le faire expres pour que ca arrive en synchro avec les iterations de la boucle

(et l'impact serait autrement plus important))
et heu, ouai, les offsets 10h,20h,30h, c'est parceque c'est un float4 qui est loade, donc 16 octets a la fois, ca c'est rien de particulier, c'est dans le code d'origine de toutes facons, et oui la memoire est alignee, sinon ca serait des movups au lieu de movaps (meme si en pratique la difference de perfs entre les deux est assez negligeable sur les CPU recents)
bref la le gros probleme c'est que l'acces memoire produit un stall du pipeline d'execution a chaque instruction, cache ou pas cache.
(btw, vu que tu parle de cache, dans le cas concret de cette boucle, ca sert a rien de prefectch manuellement, vu que le pattern d'acces a la memoire est tres previsible (totalement lineaire, avec les memes offsets a chaque fois, et une cache-line par boucle), l'auto-prefetch du cpu fonctionne mieux que les prefetch manuels)
[/offtopic]