Windows 11 : une mise à jour pour améliorer les perfs des CPU Ryzen, de Zen 3 à 5

Les nouveaux CPU exploitant l’architecture Zen 5 sont disponibles depuis peu. Suite à la publication des premiers résultats parfois un peu décevants, AMD était sorti du bois : « la communauté nous a dit qu’elle attendait, à juste titre, des performances de jeu encore plus élevées avec la série Ryzen 9000 ».

AMD avance plusieurs explications (protocoles de test, choix des jeux, configuration utilisée…) concernant les différences, mais précise aussi que sa nouvelle architecture « intègre une capacité en prédiction de branches plus large que les générations "Zen" précédentes ».

Le fabricant indiquait au passage qu’une mise à jour serait proposée avec Windows 11 24H2, soit la prochaine version majeure à venir du système d’exploitation. AMD revendiquait des hausses de performances pouvant atteindre 13 % sur Far Cry 6.

Si l’architecture Zen 5 sera la principale à en profiter, « cette mise à jour de Windows améliorera également les performances de "Zen 4" et "Zen 3" » affirmait AMD, mais dans une moindre mesure évidemment.

Les utilisateurs de la version actuelle de Windows 11 sur le canal stable, la 23H2, devaient donc attendre. Mais AMD a finalement ouvert les vannes : « Les optimisations sont désormais disponibles pour tous les utilisateurs de Windows 11 via une mise à jour facultative », la KB5041587.

Plusieurs de nos confrères se sont évidemment lancés dans des tests pour comparer les résultats. HardwareLUXX voit une hausse des performances jusqu’à 24,5 %, mais aussi parfois une petite baisse. Chez Hardware Unboxed, il ne semble y avoir que des hausses.

Commentaires (19)


Si vous avez un cpu intel, vu les correctifs coté explorateur de fichiers (qui arriveront dans le patch mensuel de septembre ), ça vaut aussi le coup, c'est plus réactif.
Maintenant qu'il y a + de jeu qui tourne sur linux, on pourrait comparer les OS sur ces processeurs ! :D
Phoronix fait des benchmarks, pas trop de jeu (open source) mais les performances entre zen 4 et zen 5 y ait bien plus grande que sur Windows.
« intègre une capacité en prédiction de branches plus large » → on parle du pre fetch là ?
Non, pas vraiment. La prédiction de branche, elle sert à exécuter des instructions en avance au cas où.

Exemple: a = a + 1; si a = b alors c = c + 1
Le processeur peut commencer c=c+1 avant même d'atteindre la comparaison s'il considère que ça l'arrange.

Ca s'applique bien sur le prefetch, mais pas forcément sur toute la longueur (schématiquement quand le "si" est l'avant-avant dernière instruction, on s'en préoccupe). Et je ne sais pas si il s'applique sur des instructions x86 ou sur les micro opérations générées.

Par contre j'ai du mal à admettre qu'un mise à jour permette de débloquer autant de perf sur de l'optimisation pour le CPU sur un OS.
Que TOUT recompiler en mode Zen5 augmente les perfs, je n'en doute pas. Que certains point précis touchés par cette màj débloque 10%, je n'en reviens pas (bon, à voir la taille de la màj).

Par ailleurs, quel impact pour les autres archis?
Dans le cas du Zen5, les unités du prédicat de branchements agissent à la fois au niveau du micro-opérations, mais également se sert des unités de prédictions pour agir avant la phase de décodage des instructions en prédisant les branchements à l'avance avant le décodage des instructions à proprement parlé. Mais je ne crois pas qu'AMD est encore sorti (hors NDA) beaucoup d'infos à ce sujet.


Comme toi, je suis curieuse de connaître plus de détails sur ce point de comment MS a géré ça.
Par contre 10% ne me choque pas dans la mesure où j'ai du vu ce genre de gain si tu aides le compilateur a gérer plus finement une prédiction, soit en l'écrivant de sorte à favoriser le cas le plus probable soit en faisant en sorte (à la main, en aidant le compilo) à utiliser du conditional-move.
Oui, sur des routines ciblées, je le conçois. Mais juste sur le coeur du sydtème, ça m'étonne.
Justement le coeur du système c'est là que tout se passe. C'est d'autant plus visibles que ces modifications doivent touché des élements très utilisées (e.g., task scheduler, mémoire...).

Un exemple parmi d'autres (mais pour c'est pour l'idée).
Imagine une fonction qui vérifie qu'une page mémoire existe. Tu veux évidemment gérer le cas où la page mémoire n'existe pas. On peut s'attendre à un truc du genre:

//Du code ici
if (mypage==NULL)
return -1;

//Du code là


Le truc, c'est comment le compilateur va le gérer. Par exemple, GCC tant à considérer que la 1er condition est celle qui est, par défaut, la plus probable. Ainsi, GCC va supposer que c'est très souvent le cas (en pratique ce n'est pas le cas, c'est une situation exceptionnelle donc improbable) et va mettre le code en conséquence. Sauf que voilà, le prédicat de branchement va suivre le truc et vite comprendre qu'il s'est trompé entraînant (au niveau du kernel) un stall complet le temps de flusher le pipeline, de restaurer les registres et de repartir sur des bases saines.

Si maintenant, tu réécris ce code pour faire comprendre au compilo c'est un cas improbable le prédicat de branchement va parier sur le fait que la condition est toujours fausse et que donc il peut passer cette étape enchaîné la suite. Ce qui dans la majorité des cas est vrai et donc gain en vitesse car ton prédicat de branchement est ok.

Avec des processeurs dont la largeur du décodeur augmente (8-way pour le Zen 5 et il peut fonctionner en 2x4-way en SMT), des registres d'entrées plus nombreux et un plus grands nombres de registres, il est clair qu'un échec de prédiction est clairement plus significatif en coût.

Zen 5 changeant la donne sur la partie prédicat de branchement, il est probable que ce genre de non-optimisations est devenue plus voyant, forçant MS à agir.
AMD lache les informations au compte goutte, mais y'a pas mal d'indices qui semblent pointer vers une protection contre un type de side-channel attack (BTC, Branch Type Confusion) qui serait activée alors que les Zen 3-5 ne sont pas vulnérables. Les protections contre ce genre de failles réduisent l'efficacité de la prédiction de branche (volontairement), ce qui serait cohérent avec les gains observés. Mais c'est pure spéculation pour le moment.
Je suis d'accord avec ton raisonnement quand on bosse côté soft, ce que je conçois pour optimiser.

Mon propos, c'est que qu'un patch niveau OS permette 10% de gain, il faut déjà passer pas mal de temps dans l'OS - et c'est ce qui m'étonne. Ou alors ils ont optimisé directX dans ce patch. Mais ça n'explique pas les gain ailleurs.

Ca ressemble du coup plus à un patch "scheduler" je trouve.

Je trouve que dire que de réduire ce patch à une meilleure considération vis-à-vis de la prédiction de branches au fin fond du CPU, c'est montrer un arbre qui cache la forêt, non?
Je pense que tu fais une erreur de raisonnement depuis le début ici. La mise à jour concerne :
Optimized AMD-specific branch prediction code


Il s'agit donc du micro-code AMD, pas du code de Windows lui même. Cela augmente donc les perfs de tous les logiciels qui tournent.
Merci! Je ne l'avais pas compris comme ça. Effectivement en jouant sur le microcode et en l'adaptant à l'OS c'est tout à fait probable.
Je n'avais pas réalisé que Ms pouvait fournir des microcodes adaptés.
il semblerait que ce ne soit pas ça mais que l'intégrité mémoire soit désactivé par défaut en installant une 24H2 clean. En testant la KB sur une 23H2 il y a un peu de gain mais pas autant qu'en désactivant l'intégrité mémoire et c'est pour ça qu'il y avait aussi des gains sur CPU intel. Hardware Canucks viens de le publier : https://www.youtube.com/watch?v=lyME2IM8jjY
Tu n'aurais pas une source qu'on peut lire ? Les vidéos, c'est gavant.
J'ai essayé la transcription, mais c'est assez compliqué. Néanmoins, j'ai compris que le monsieur a remarqué que l'intégrité mémoire n'était pas activée par défaut sur la future 24H2. Je pense que c'est temporaire parce que ce serait un énorme revirement de la part de Microsoft d'affaiblir la sécurité par défaut. On a encore eu un article ici qui disait que le patron de Microsoft demandait de privilégier la sécurité dans les choix fait par ses employés.

Que cette désactivation augment les perfs, c'est assez normal. Que l'annonce d'AMD concerne ce point au niveau de l'augmentation de perf, j'ai un doute puisqu'ils disent explicitement avoir apporté des améliorations à cette prédiction de branche et que c'est elle qui apporte de meilleurs perfs. Je pense qu'ils savent faire des tests en ne modifiant pas 2 paramètres en même temps pour annoncer leurs meilleures perfs.
malheureusement ils ont un site mais ils ne le mettent plus à jour tout est sur utube maintenant. Si j'ai bien compris c'est que ils font une install clean pour faire leur test (ce qu'a fait aussi hardware luxx et hardware unboxed) et ils avaient les même augmentations incroyable à 2 chiffres alors qu'amd annonce que 1 chiffre d'amélioration et donc ils ont chercher et ont trouvé le soucis que par défaut en installant une 24H2 l'intégrité mémoire est désactivée et qu'en la réactivant ils tombent plus proche des affirmations d'amd d'amélioration de 3-7% en fonction des jeux.

Donc pour le coup amd a publié juste et c'est la preview de windows 24h2 qui ajoute un gain important de perf en désactivant l'intégrité mémoire. En checkant sur mes pc elle est aussi désactivé sans que je l'ai désactivée moi après j'ai fait des migration depuis 10 et non des install propre de 11 donc n'est pas forcément représentatif.

Ensuite ils ont aussi testé avec la kb en restant sous 23H2 avec l'intégrité mémoire active et les perfs sont parfois meilleures avec la kb qu'avec windows 24H2 avec l'intégrité mémoire d'active. Il y a aussi plein de cas ou il n'y a aucun gain voir une régression avec la 24H2 avec l'intégrité mémoire active donc c'est pas un bon plan pour le moment de mettre la 24H2 en gros.
Malheureusement l'histoire ne dit pas si le problème est spécifique à Windows 11 ou affecte aussi Windows 10...
SI, si, ça le dit. Les CPUs Ryzen pourraient profiter des mêmes optimisations dans Win10, mais il ne faut pas s'attendre à voir un patch arriver pour un OS en fin de vie :-)
ce qu'il serait intéressant de savoir c'est si dans le monde réel il y a un impact car bon tester des jeux en étant cpu limited c'est pas vraiment un cas du monde réel ça permet juste de faire un classement des cpus. Genre en 4k est ce que ça change quoi que ce soit ?
sur mon bon vieux 3700X le gain est vraiment notable
Fermer