• [^] # Re: Explications sur 64 bits

    Posté par . En réponse au journal x86_64 en général et sur Mdv en particulier. Évalué à 3.

    Beaucoup de contre-vérités...

    Un registre supplémentaire, c'est autant d'accès bus en moins, et çà, ça fait une très grande différence sur un processeur de PC.

    Il n'y a pas d'accès bus externe puisque la pile locale reste presque toujours quelque part dans le cache L1. Je ne dis pas que l'amélioration est inexistante (un adressage de registre est toujours plus léger qu'un adressage indirect) mais c'est loin d'être "une très grande différence".

    Gros avantage, au niveau du traitement des blocs de données : Tu traites tes zones par blocs de 8 octets et plus 4 et donc à chaque fois que tu as une boucle, tu divises par deux l'overhead dû au traitement des invariants. Or, la copie de blocs de données est extrêmement fréquente en informatique.

    Faux, non seulement on pouvait déjà transférer des données sur 64 bits (en utilisant par exemple les registres MMX qui sont présents sur tous les CPU depuis dix ans), mais en plus les transferts mémoires sont limités par la bande passante externe du CPU, qui est minuscule par rapport à la puissance de traitement disponible au coeur du CPU.

    Tout ceci n'est réellement valable que si ton bus et ta mémoire sont eux-aussi en 64 bits

    C'est déjà le cas depuis le Pentium (depuis 1995 !).

    Les "double" tiennent enfin, à nouveau, sur un seul registre.

    Encore faux. Les "double" ont toujours tenu sur un seul registre, puisqu'ils ont toujours eu des registres dédiés au sein de l'unité de calcul à virgule flottante (en tout cas depuis que cette dernière existe, c'est-à-dire bien longtemps).

    Le double a une mantisse beaucoup plus large pour le même prix.

    Le même prix ? C'est vite dit. Il prend deux fois plus de place en mémoire, ce qui n'est pas très gênant certes, mais surtout les opérations effectuées sur les double sont plus lourdes que sur les float, ce qui fait que la plupart des CPU peuvent en exécuter moins par cycle.

    Le principal ennui, donc, en changeant d'architecture est que la taille des données d'un même programme double pratiquement, du simple fait d'être recompilé.

    Encore faux, seuls les pointeurs doublent de taille, les entiers selon les cas restent sur 32 bits (int) ou passent à 64 (long), quand aux flottants leur taille est inchangée comme expliqué plus haut.