Au départ, la question a été posée concernant la différence de performances entre les ajouts par éléments effectués dans une boucle combinée boucle versus boucles séparées. Cependant, il a ensuite été modifié pour rechercher des informations sur les comportements du cache qui conduisent à ces variations de performances. boucles que dans une boucle combinée ?
Analyse du comportement du cache
Pourriez-vous fournir des informations un aperçu solide des détails qui conduisent aux différents comportements du cache, comme illustré par les cinq régions du graphique ?
L'ensemble de données est si petit que les performances sont dominées par les frais généraux, tels que les boucles et les branchements, plutôt que par le comportement du cache.
Région 2 :Auparavant attribuée à des problèmes d'alignement, une analyse plus approfondie suggère que la baisse des performances dans cette région nécessite une enquête plus approfondie. Les conflits de banques de cache pourraient toujours être un facteur.
Région 3 :La taille des données dépasse la capacité du cache L1, ce qui entraîne des limitations de performances imposées par la bande passante du cache L1 à L2.
Région 4 :La pénalité de performances observée dans la version à boucle unique est probablement due à de faux blocages d'alias dans le processeur. charger/stocker les unités causées par l’alignement des baies. Un faux alias se produit lorsque le processeur exécute de manière spéculative des opérations de chargement et rencontre un deuxième chargement à la même adresse avec une valeur différente. Dans ce cas, le processeur doit ignorer la charge spéculative et recharger la valeur correcte, ce qui entraîne une pénalité de performances.
Région 5 :À ce stade, la taille des données dépasse la capacité des deux les caches L1 et L2, ce qui entraîne des limitations de performances imposées par la bande passante mémoire.Architectural Différences
Question :Il pourrait également être intéressant de souligner les différences entre les architectures CPU/cache, en fournissant un graphique similaire pour ces CPU.
Le graphique fourni représente les données collectées à partir de deux processeurs Intel Xeon X5482 Harpertown à 3,2 GHz. Des tests similaires sur d'autres architectures, telles que l'Intel Core i7 870 à 2,8 GHz et l'Intel Core i7 2600K à 4,4 GHz, produisent des graphiques présentant des régions similaires, bien que les valeurs de performances spécifiques puissent varier. Ces variations peuvent être attribuées à des différences dans la taille du cache, la bande passante mémoire et d'autres caractéristiques architecturales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!