Se connecter avec
S'enregistrer | Connectez-vous

Une hiérarchie mémoire digne d'un CPU

GeForce GTX 480 et 470 : révélation ou déception ?
Par , Chris Angelini

Pendant longtemps le sous-système mémoire a été le parent pauvre des GPU.Il faut dire que les accès mémoires des premiers GPU étaient tellement simples qu'une hiérarchie mémoire n'avait pas vraiment sa place : un simple cache de texture et un petit cache de sommets (pre et post transformation) et le tour était joué. Avec l'avènement du GPGPU les choses se sont nettement complexifiées et un sous-système mémoire aussi basique ne faisait plus l'affaire.

Pour répondre à ces nouvelles exigences NVIDIA avait introduit la Shared Memory avec son G80. La Shared Memory est une petite zone de mémoire extrêmement rapide intégrée à chaque multiprocesseur et permettant de partager des données entre les threads. Bien que l'utilisation de cette zone mémoire était totalement à la charge du programmeur et demandait donc un effort supplémentaire, le concept a été bien accueilli et s'est d'ailleurs retrouvé dans les GPU AMD qui ont suivi.Finalement Microsoft l'a intégré à Direct3D 11 et Khronos a OpenCL.

Mais si ce genre de mémoire gérée manuellement par le programmeur offre d'excellentes performances dans les algorithmes ayant des accès mémoires bien prédictibles, elle ne peut en revanche pas supplanter une mémoire cache dés lors que les accès mémoires sont irréguliers. Avec le GF100 NVIDIA tente donc de combiner le meilleur des deux mondes en proposant une zone mémoire de 64 Ko par multiprocesseur. Cette zone mémoire peut être configurée de deux façons différentes :

  • 16Ko de cache L1 et 48Ko de Shared Memory
  • 48Ko de cache L1 et 16Ko de Shared Memory

Ce cache L1 peut être utilisé comme un buffer pour sauvegarder les registres lorsque ceux-ci viennent à manquer, ce qui n'est pas un mal car si leur nombre a augmenté par rapport au GT200 comme nous l'avons vu, l'augmentation ne s'est pas faite dans la même proportion que celle du nombre d'unités de calculs.

Mais ce n'est pas tout, comme nous l'avons vu plus haut NVIDIA a également ajouté une véritable mémoire cache de niveau 2 à son GPU. En effet le GT200 contenait déjà un cache de niveau 2 de 256Ko mais celui-ci n'était accessible qu'en lecture et uniquement par les unités de texture. Avec le GF100 NVIDIA a dôté son GPU d'un cache de niveau 2 généraliste c'est à dire accessible en lecture/écriture aussi bien aux instructions de texture qu'aux instructions de chargement/rangement. Ce cache remplace également le cache des ROP mais aussi les pre et post vertex transform cache des GPU précédents. Le cache de texture de niveau 1 de par son fonctionnement un peu particulier reste toutefois présent et conserve la même taille que sur le GT200 : 12Ko.