As-tu fais des mesures ou est-ce juste une estimation pour la version soft ?
Dans ton calcul, tu ne parles pas du tout de la gestion des constantes que tu retrouves dans toute approximation polynomiale. Ces constantes doivent être chargé depuis quelques part et parfois, ce n'est vraiment pas efficace et surtout pas gratuits. 9 loads, cela peut prendre 1 ou 2 x9 cycles depuis le cache L1, et beaucoup plus sinon.
Il semble que la fonction f2xm1 soit vraiment une des fonctions x87 les plus lente.
Si j'ai bien compris la description x87, à l'origine ce genre de fpu, est fait à partir de l’algorithme cordic rapide uniquement si on ne dispose pas de multiplieur rapide. On pourrait penser que le microcode sache utiliser le multiplier disponible mais cela ne semble pas le cas.
Ensuite, il est peut-être possible de faire faire des travaux sse pendant que la fpu x87 tourne ?
[^] # Re: À propos de SSE et AVX
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Intel Sandy Bridge et Linux : état des lieux. Évalué à 2.
As-tu fais des mesures ou est-ce juste une estimation pour la version soft ?
Dans ton calcul, tu ne parles pas du tout de la gestion des constantes que tu retrouves dans toute approximation polynomiale. Ces constantes doivent être chargé depuis quelques part et parfois, ce n'est vraiment pas efficace et surtout pas gratuits. 9 loads, cela peut prendre 1 ou 2 x9 cycles depuis le cache L1, et beaucoup plus sinon.
Il semble que la fonction f2xm1 soit vraiment une des fonctions x87 les plus lente.
Si j'ai bien compris la description x87, à l'origine ce genre de fpu, est fait à partir de l’algorithme cordic rapide uniquement si on ne dispose pas de multiplieur rapide. On pourrait penser que le microcode sache utiliser le multiplier disponible mais cela ne semble pas le cas.
Ensuite, il est peut-être possible de faire faire des travaux sse pendant que la fpu x87 tourne ?
"La première sécurité est la liberté"