 |
Q & R : Benchmarks : Efficacité Multi-Coeur |
De quoi s'agit-il?
Benchmark spécialement conçu pour mesurer l'efficacité des différents processeurs multi-coeurs avec leurs différentes architectures et pour comparer leur performance aux systèmes multi-processeurs (SMP) traditionnels.
Les benchmarks de mesure de la performance n'indiquent pas les différences entre les processeurs multi-coeur et la façon dont les programmes multi-threading devraient être conçus pour tirer avantage de l'architecture multicouche tout en évitant les "pièges courants" .
Ce benchmark ne teste pas la performance de calcul du processeur, c'est-à-dire la vitesse des coeurs de processeurs; il ne teste que la vitesse de connexion entre eux.
Pourquoi ces mesures?
Beaucoup de processeurs multi-coeur sont disponibles, et sont tellement nombreux que les processeurs simple-coeur disparaissent; même (certains) systèmes multi-processeurs traditionnels sont remplacés pour un simple processeur multi-coeur. Cependant, tous ne sont pas égaux car leur architecture diffère grandement.
Par exemple, qui est le plus rapide? Un nouveau processeur double-coeur simple ou un système à double-processeur simple coeur traditionnel?
|
Que signifient les résultats?
- Bande Passante Inter-coeurs Combinée (Mo/s):
- Moyenne des bandes passantes de transfert Taille de Chaîne x Taille de Bloc testée en Mo/s (méga-octets par seconde).
- Plus le score est élevé, mieux c'est (transfert plus rapide).
- Etant une moyenne, les scores individuels ont un impact sur sa valeur.
- Latence Inter-coeurs (ns):
- La durée la plus courte pour transférer la plus faible quantité de données d'un coeur à l'autre en ns (nano-secondes, 10-9 secondes).
- Plus le score est faible, mieux c'est (la durée du transfert est plus faible).
- La réceptivité de l'inter-connexion entre les coeurs et le protocole de synchronisation des données correspondantes a un impact sur le score.
- Bande Passante Inter-coeurs (pour une Taille de Chaîne x Taille de Bloc):
- Vitesse à laquelle un bloc de données - d'un Bloc d'une certaine taille - peut être transféré d'un coeur à un autre. La Taille de Chaîne est le nombre de blocs transférés entre les coeurs.
- Plus le score est élevé, mieux c'est (transfert plus rapide).
- Le chemin des données d'une inter-connexion entre les coeurs a un impact direct sur le score. Cela peut être un cache L2/L3 partagé, un commutateur cross-bar, ou le traditionnel Front-Side-Bus (FSB) qui connecte des processeurs individuels.
- Planification des paires de threads (CPUx-CPUy): Indique comment les paires productrices/consommatrices sont planifiées sur les coeurs du processeur disponible (pour information).
|
|
Résultats Typiques des Périphériques du Marché
Tester les différents périphériques courants ou vérifier simplement les résultats de référence pour clarifier la différence entre architectures et implémentations. Voyons quelques exemples:
| Processeur |
Bande passante Inter-coeurs |
Latence Inter-coeurs |
Commentaire |
|
AMD Athlon X2
|
2.88GB/s @ 2.6GHz |
98ns @ 2.6GHz |
Le contrôleur de mémoire intégré et l'interface SRI/Crossbar permet une latence inter-coeurs très lente mais, le manque de caches L2 partagé signifie que la bande passante inter-coeurs ne convient pas. Cependant, le passage des données entre threads est plus rapide qu'un système SMP comparatif. |
|
AMD Phenom X4
|
3.93GB/s @ 2.4GHz |
159ns |
Avec un cache L3 partagé, la bande passante inter-coeurs pour les petite/moyens transferts sera élevée avec une latence faible alors que les transferts plus importants tireront encore bénéfice des contrôleurs de mémoire intégrés. L'efficacité de sa bande passante est plus élevée, résultant d'un accès plus élevé à cette dernière. |
|
Intel Core Duo
|
2.9GB/s @ 1.67GHz |
160ns @ 1.67GHz |
La première présentation avec un cache L2 partagé, les résultats sont très bons bien que le cache L2 soit plus petit et la bande passante inférieure à celle des nouveaux processeurs à 2 Coeurs. |
|
Intel Core 2 Duo
|
8.11GB/s @ 2.67GHz |
90ns @ 2.67GHz |
Vous voyez clairement que la performance du double-coeur est plus exemplaire du fait d'un cache L2 partagé plus important. Excepté la combinaison la plus large, tous les autres n'utilisent que le cache L2 partagé et ne nécessite aucun réglage de la mémoire principale. Le passage des données entre les threads est extrêmement rapide, la latence très faible, avec pratiquement aucune pénalité contrairement aux systèmes SMP traditionnels! |
|
Intel Core 2 Quad
|
17.54GB/s @ 3GHz |
79ns @ 3GHz |
Effectivement 2 Coeurs 2 Duos en 1 package, en couplant soigneusement les threads pour que la pénalité de sortie des puces entre les deux dies puisse être gérée; 2 paires de thread utilisent chacun des caches partagés L2. Un logiciel utilisant 2 threads ou plus nécessite d'assurer que les données d'échange de threads soient planifiées sur le même die alors que les threads fonctionnant différemment peuvent le faire avec des dies différents.
|
|
Intel Pentium D
|
700MB/s @ 2.67GHz |
265ns @ 2.67GHz |
Le premier double-coeurs conçu avec 2 processeurs en 1 package. Le transfert des données entre threads via le FSB partagé vers/depuis la mémoire principale est très lent, complètement dépendant de la bande passante mémoire. Les gros caches L2 n'aident pas dans ce cas, sauf en tamponnant toute donnée commune qui ne change pas ceux qui libèrent le FSB pour d'autres transferts. C'est ainsi que se comporte les systèmes SMP traditionnels et il n'est donc pas pire qu'un double CPU et pas mieux non plus. |
Comment fonctionne t-il?
Le benchmark opère en deux étapes:
1. Planification: tout d'abord, il définit la meilleure planification producteur/consommateur en essayant toutes les combinaisons - si vous avez plus de 2 processeurs (bien sûr, si vous n'en possédez que deux, il n'y aura qu'une combinaison).
Si vous avez, disons, 4 processeurs, il y aura 6 combinaisons de test (0-1, 0-2, 0-3, 1-2, 1-3, 2-3) et la plu srapide sera définie pour le test en cours. Si vous examinez le Gestionnaire de Tâches, vous verrez l'utilisation des différents processeurs monter puis descendre.
Pourquoi ces tests? Bien sûr nous connaissons la meilleure planification en fonction des coeurs par package/SMT par coeur/noeuds NUMA, après tout Sandra n'a t-elle pas son propre planificateur que les autres benchmarks utilisent pour planifier les threads de la façon la plus efficace? Oui, nous pouvons faire cela, mais les données collectées en essayant les mauvaises combinaisons sont également utiles.
2. Test: maintenant que nous avons la planification optimum de thread, les tampons sont créés, les chaînes producteur/consommateur sont initialisées et le test commence. Les taille de chaîne x taille de tampon suivantes sont testées: 2x 8Ko, 4x 8Ko, 2x 32Ko, 4x 32Ko, 16x 8Ko, 2x 128Ko, 16x 32Ko, 64x 8Ko, 16x 128Ko, 64x 32Ko, 64x 128Ko. Une valeur combinée est calculée en fonction des résultats individuels.
Différentes combinaisons de taille de chaîne x bloc transfèrent de même l'ensemble des quantités de données, les variations indiquent les différences de mise en tampon des données et le transfert d'un bloc volumineux comparé à des blocs plus petits et les transfère lorsqu'ils sont complets.
Informations Techniques
- Algorithme/paradigme: basé sur le paradigme producteur/consommateur utilisant différentes taille de chaînes et tailles de blocs de transfert
- Systèmes pris en charge: systèmes multi-coeurs, SMP, SMT, SMP/SMT multi-coeurs, systèmes NUMA
- Systèmes d'exploitation pris en charge: natif 32-bit, 64-bit ports; Windows XP/Serveur 2003/Vista/Serveur 2008
- Threading: autant de threads que les processeurs utilisent
- Jeux d'instructions: SSE2 requis
- Options: L'opération est entièrement automatique; Aucun paramètre configurable par l'utilisateur n'affectent l'exécution du benchmark.
Merci de nous faire savoir ce que vous pensez de cet article en votant via les icônes/liens ci-dessous. Merci de nous avoir lu.
|