Oui. Mais dans la plupart des cas, pas grâce au passage à 64 bits. Ils le sont grâce au doublement du nombre de registres en passant de x86-32 à x86-64 ou de ARMv7 à ARMv8.
Et c’est pas un hasard si ces deux architectures ont toutes les deux doublé le nombre de registres en passant du 32 au 64 bits : c’est tout simplement pour compenser la perte de performances du au doublement de la taille des pointeurs…
Parce que doubler la taille des pointeurs, ça implique que, pour une même tâche, tu fais plus d’échanges de données entre la mémoire et le CPU. Or les accès mémoire, c’est LE point faible d’un CPU, c’est le moment où il perd énormément de temps à attendre que les données arrivent.
Donc pour compenser le fait qu’on augmente les accès d’un côté, on augmente le nombre de registres de l’autre côté pour réduire la fréquence des accès.
L’utilisation de registres plus grand est bénéfique UNIQUEMENT quand on travaille sur des nombres plus grand que la taille initiale. Si tu travailles sur des entiers de 32 bits, avoir des registres de 64 bits n’apporte strictement aucun gain de performances (en fait, en pratique, même sur un CPU 64 bits, quand tu travailles sur des entiers 32 bits, tu continues à le faire avec des registres 32 bits… sinon c’est même un peu plus lent, non pas parce que le calcul est plus long, mais parce que tu dois du coup gérer à la main les éventuels overflow).
Ils sont justement l’exemple parfait qu’il n’est pas utile de tout passer en 128 bits ou plus : on utilise les instructions SSE ou AVX là où elles sont utiles, et on obtient un gain de performances là où plus de 64 bits sont utiles…
Les benchs d’AVX512 se font uniquement sur des cas particuliers qui tirent bénéfice d’AVX512. Ça ne se fait pas sur des applications qui sont entièrement en 512 bits, applications qui seraient beaucoup plus lentes que des applications 64 bits avec juste quelques portions en 512 bits.
De plus l’AVX-512 ne s’utilise le plus souvent pas comme un moyen de faire des calculs 512 bits, mais plutôt comme un moyen de faire plusieurs calculs 32 ou 64 bits identiques en parallèle. Va voir la liste des instructions AVX-512, tu verras que la plupart sont des instructions vectorielles (c’est d’ailleurs dans le nom du jeu d’instructions). Je suis pas sûr qu’il y ait dans AVX-512 une instruction pour faire par exemple une simple addition ou multiplication 512 bits.
EDIT : après vérification, je confirme AVX ne travaille que sur des opérandes de 64 bits maximum, à part sur quelques instructions de logique binaire basiques (il peut faire par exemple un AND bit à bit sur 512 bits). Sans doute qu’Intel a jugé inutile d’implémenter des opérations arithmétiques sur plus que les 256 bits permis par le SSE… Sans doute à raison, car les cas où il y a besoin d’une telle précision sont anecdotiques, surtout chez les grand public…
D’ailleurs, même les 64 bits, en pratique ils ne sont que rarement nécessaire, au point que quand AMD à défini l’AMD64, il a choisi de conserver 32 bits comme taille d’opérande par défaut. Seules les pointeurs sont passés à 64 bits par défaut.
Excel ne gère ni les entiers sur plus de 64 bits ni les flottants sur plus de 64 bits. Donc si tu peux te contenter d’Excel pour tes « rendus mathématiques », tu n’auras strictement aucun gain en passant à du 128 bits.
En fait sur les entiers la précision d’Excel n’est même pas de 64 bits mais d’à peine une cinquantaine (sans doute parce qu’il stocke même les entiers sous forme de float). C’est facile à vérifier, tu te fait une série avec les puissances de 2 en partant de 2 en A1 puis en copiant dans toutes les cellules d’en dessous une formule qui fait x2 par rapport à la cellule d’au-dessus, et tu verras qu’à partir de la ligne 50 le calcul n’est plus juste (à la ligne 49, on a un nombre se terminant par 2, le doubler doit donc donner un nombre se terminant par 4, Excel donne un nombre se terminant par 0).
Donc si dans ton travail la « faible » précision d’Excel n’est pas un problème, tu n’aurais strictement RIEN à gagner à avoir un Excel 128 bits : un Excel 128 bits ne serait pas plus rapide, il serait juste plus précis. Ce dont tu n’as visiblement pas besoin, sinon tu utiliserais déjà autre chose qu’Excel.
Calcul compliqué != calcul nécessitant plus de 64 bits de précision
Grâce aux registres supplémentaires. Pas grâce aux 64 bits.
Lol. Non, rien à voir… Blowfish est un algorithme qui a été écrit au début des années 90, il n’y avait pas de CPU 64 bits à l’époque, donc non, il n’a pas été optimisé pour des registres de 64 bits…
Tu dis n’importe quoi… Une instruction s’exécute toujours sur un seul cœur à la fois, chaque cœur de CPU a son propre pipeline d’instructions et à aucun moment une instruction traitée par un cœur ne va aller squatter le pipeline des autres cœurs…
Oui, une instruction AVX-512 est découpée en plusieurs… Mais parce que c’est justement le besoin auquel elle répond : elle est pas là pour faire des calculs sur des opérandes 512 bits mais pour faire un même calcul sur plusieurs opérandes plus petites. Parce que c’est en fait un usage bien plus courant que de calculer sur 512 bits…
Et non, ces plusieurs morceaux ne sont pas exécutés sur plusieurs cœurs, ils vont s’exécuter en parallèle sur le même cœur : aujourd’hui, un cœur n’a plus une seule ALU et une seule FPU, chaque cœur a plusieurs ALU et plusieurs FPU et peut donc traiter plusieurs opérations en simultané (par exemple un cœur Rocket Lake peut faire l’équivalent de jusqu’à 32 opérations sur des FP64 en un seul cycle et sur chaque cœur).