l'article est ici et est interressant a lire car les donnees cachent des infos sur la microarchitecture interne des processeurs en question. En appliquant "little's law" et en connaissant la taille de la ligne de cache (64 octets) on peut en deduire le nombre de requetes en parallele dans la machine allant vers la memoire. Pour maintenir ces requetes chac core a besoin de buffers avec un nombre d'entrees correspondant pour contenir ces requetes. Ces buffers sont difficiles a maintnir pleins en permanence donc il en faut un peu plus qu'il n y a de requetes en parallele en moyenne.
Voila ce que ca donne sur les donnees de l'article (s'espere que c est ok de les reproduire ici, je censurerai si c'est un probleme)
Buf = Lat * bw / line_size
Code:
conf Lat Bw-pk Bw-1T Buf-pk buf-use Cores needed for saturation
980x 78.8 19.2 10.9 23.6 13.4 2
980x 75.5 19.2 11.1 22.7 13.1 2
980x 71.2 19.2 11.4 21.4 12.7 2
980x 68.8 25.6 12.4 27.5 13.3 3
980x 64.2 25.6 12.7 25.7 12.7 3
980x 60.2 25.6 13.1 24.1 12.3 2
980x 61.5 32.0 13.5 30.7 13.0 3
980x 58.6 32.0 13.8 29.3 12.6 3
980x 57.7 32.0 13.8 28.8 12.4 3
980x 57.6 38.4 14.1 34.6 12.7 3
980x 56.1 38.4 14.4 33.7 12.6 3
980x 38.4
975x 79.3 19.2 11.2 23.8 13.9 2
975x 74.9 19.2 11.6 22.5 13.6 2
975x 70 19.2 12 21.0 13.1 2
975x 65.7 25.6 13.2 26.3 13.6 2
975x 62.3 25.6 13.5 24.9 13.1 2
975x 58.5 25.6 13.8 23.4 12.6 2
975x 58.9 32.0 14.5 29.4 13.3 3
975x 56.4 32.0 14.7 28.2 13.0 3
975x 55.2 32.0 14.7 27.6 12.7 3
975x 52.3 38.4 15.8 31.4 12.9 3
975x 50.1 38.4 17 30.1 13.3 3
975x 38.4
AM3-1090T 67.6 12.8 6.5 13.5 6.9 2
AM3-1090T 64.7 12.8 6.7 12.9 6.8 2
AM3-1090T 61.5 12.8 6.9 12.3 6.6 2
AM3-1090T 58 17.1 7.6 15.5 6.9 3
AM3-1090T 55.6 17.1 7.8 14.8 6.8 3
AM3-1090T 52.6 17.1 8 14.0 6.6 3
AM3-1090T 51.4 21.3 8.5 17.1 6.8 3
AM3-1090T 49.8 21.3 8.7 16.6 6.8 3
AM3-1090T 47.5 21.3 8.9 15.8 6.6 3
AM3-1090T 48 25.6 9.1 19.2 6.8 3
AM3-1090T 45.8 25.6 9.3 18.3 6.7 3
AM3-1090T 44 25.6 9.5 17.6 6.5 3
AM3-965 75.3 12.8 6.2 15.1 7.3 3
AM3-966 72.2 12.8 6.4 14.4 7.2 2
AM3-967 68.6 12.8 6.6 13.7 7.1 2
AM3-968 64 17.1 7 17.1 7.0 3
AM3-969 61.4 17.1 7.2 16.4 6.9 3
AM3-970 58.8 17.1 7.5 15.7 6.9 3
AM3-971 55.3 21.3 8.1 18.4 7.0 3
AM3-972 54.1 21.3 8.2 18.0 6.9 3
AM3-973 52.2 21.3 8.3 17.4 6.8 3
AM3-974 51.8 25.6 8.6 20.7 7.0 3
AM3-975 50.2 25.6 8.8 20.1 6.9 3
AM3-976 48.7 25.6 9 19.5 6.8 3
860 67 12.8 11 13.4 11.5 2
860 63.9 12.8 11.3 12.8 11.3 2
860 60.6 12.8 11.5 12.1 10.9 2
860 55.5 17.1 13.8 14.8 12.0 2
860 54.7 17.1 14.2 14.6 12.1 2
860 53.3 17.1 14.5 14.2 12.1 2
860 52 21.3 15.7 17.3 12.8 2
860 50.1 21.3 16 16.7 12.5 2
860 48.4 21.3 16.5 16.1 12.5 2
860 47.6 25.6 17 19.0 12.6 2
860 46.4 25.6 17.4 18.6 12.6 2
860 44.9 25.6 17.5 18.0 12.3 2
La lecture est assez aisee. On se rend vite compte que les processeurs Intel ont au moins 14 buffers par core (probablement 16) et les processeurs AMD en ont au moins 7 (probablement 8). Ceci explique l'avantage en bande passante des Intel sur les AMD tant qu'un seul core est actif. Avec seulement 8 buffers un core ne peut pas saturer la bande passante memoire. Au final il faut plus de cores pour saturer la memoire, mais vu que le nombre necessaire reste de 3 pour AMD et 2 pour Intel sur la plupart des plateformes testees par HFR, au final cela ne pose pas de probleme particulier pour saturer la bande passante quand les 4 cores sont actifs.
Quand on jette un oeil aux chiffres de perf multithreadees, AMD a encore un desavantage (mais nettement moins flagrant) qui dans ce cas ne peut provenir du buffering dans chaque core, mais plus probablement de l'architecture du controleur memoire lui meme.
Quant a ces 8 buffers vs 16, il est plus que probable que la presence de plus de buffers dans les archi Intel vient du fait que leurs prefetcher sont generalement plus agressifs et qu'ils ont plus d'espace pour stocker les prechargements en cours (il est peu probable que les 16 requetes soient des L1 miss).