Les nœuds de calcul Blue Gene/P ont chacun 4 cœurs. Ces 4 cœurs se partagent l'accès à une mémoire de 2 Go. Pour masquer les latences, càd les temps d'accès à cette dernière, plusieurs niveaux de cache sont intégrés sur les puces Blue Gene/P.
Une mémoire cache est une mémoire située entre un cœur et la mémoire centrale afin de masquer les latences. Ces mémoires intermédiaires se trouvent beaucoup plus près des cœurs et ont des temps d'accès réduits. Malheureusement, elles sont beaucoup plus chères et sont donc de taille assez limitée. Sur la Blue Gene/P, 3 différents niveaux existent. Le premier niveau est le plus petit mais aussi le plus rapide. Le deuxième niveau est en réalité une unité de prefetching dont le rôle est d'essayer de charger de manière spéculative des données avant même qu'elles soient demandées par l'application. Le troisième niveau de taille plus importante mais plus lent sert de dernier niveau avant d'aller vers la mémoire centrale.
Vous trouverez plus de détails sur les principes de fonctionnement des caches sur la page concernant l'optimisation séquentielle sur Babel et également sur Wikipedia.
Les caractéristiques principales des caches et de la mémoire sur Babel sont données dans le tableau suivant :
| Cache | Taille | Politique de remplacement | Associativité |
|---|---|---|---|
| L1 | 32 ko-D + 32 ko-I | Round-Robin | 64-way set-associative, 16 ensembles (sets), lignes de 32 octets |
| L2 | 2 x 15 x 128 octets | Round-Robin | Fully associative, lignes de 128 octets |
| L3 | 2 x 4 Mo | Least Recently Used | 8-way set-associative, lignes de 128 octets |
| DRAM | 2 Go | - | Lignes de 128 octets |
Les caractéristiques principales du cache de niveau L1 sont :
Ses performances sont détaillées ci-après :
Les caractéristiques principales du cache de niveau L2 sont :
Ses performances sont détaillées ci-après :
Les caractéristiques principales du cache de niveau L3 sont :
Ses performances sont détaillées ci-après :
Les caractéristiques principales de la mémoire centrale sont :
Ses performances sont détaillées ci-après :
La figure suivante présente le débit mesuré avec l'outil CacheBench dans le cas du test de lecture/modification/écriture de nombres flottants en double précision. On y voit très bien la transition lorsque l'on sort du cache L1. Les autres niveaux n'apparaissent pas dans ce test car l'unité de prefetching du cache de niveau 2 arrive à les masquer. On y voit également que le débit est meilleur lorsque l'unité double de calcul en virgule flottante (double FPU) est utilisée.