Comprendre la lecture mémoire par un GPU
Analyse technique des mécanismes internes et des implications de l'accès mémoire sur les unités de traitement graphique.
Lu et jugé par Fellow · impact léger
Article pédagogique analysant la latence mémoire d'une RTX 4090, sans découverte scientifique ni évolution produit.

Traduit et résumé par IA à partir de l'article de blog.doubleword.ai ↗ · Comment Fellow travaille
Développement
· Généré par GLM 4.7↓ LIRE LE DÉVELOPPEMENT · 3 MIN← MASQUER LE DÉVELOPPEMENT
L'analyse détaillée d'une instruction de chargement global sur une architecture GPU moderne, telle que le RTX 4090, révèle une complexité matérielle souvent masquée par les abstractions de programmation. En se concentrant sur le parcours d'une instruction `LDG.E` au sein d'un kernel d'addition vectorielle, on observe que la lecture d'une donnée ne se résume pas à une simple requête, mais à un voyage en cascade à travers plusieurs sous-systèmes de mémoire. Chaque étape de ce trajet, du registre jusqu'aux puces GDDR6X, introduit des latences spécifiques qui, cumulées, peuvent immobiliser un warp pendant environ 255 ns, soit près de 660 cycles d'horloge.
Le processus s'initie au niveau du Streaming Multiprocessor (SM), où le scheduler sélectionne un warp éligible. L'instruction demande la lecture de quatre octets par lane, soit 128 octets pour l'ensemble des 32 threads. Avant même d'atteindre la mémoire, l'unité de chargement (LSU) et le coalescer interviennent pour optimiser la bande passante. Leur rôle consiste à fusionner les accès mémoire contigus afin de minimiser le nombre de transactions sur le bus. Dans le cas présent, les 32 requêtes individuelles sont combinées en une demande unique d'une ligne de cache de 128 octets, divisée en quatre secteurs de 32 octets. Cette agrégation est cruciale pour éviter de saturer les unités de traitement avec des demandes redondantes.
Une fois les adresses résolues, la requête parvient au cache L1. Ce cache, organisé de manière associative 4 voies, utilise l'adresse virtuelle pour son indexation, ce qui permet des accès extrêmement rapides de l'ordre de 15 ns en cas de succès. Toutefois, lors du premier accès à des données, le phénomène de "miss" est systématique. La requête doit alors descendre dans la hiérarchie mémoire, nécessitant une traduction d'adresse virtuelle vers physique via une Unité de Translation de Mémoire (MMU). Cette opération, qui repose sur des tables de pages gérées par le pilote, ajoute une latence d'environ 11 ns lors d'un échec dans le Translation Lookaside Buffer (TLB), illustrant les coûts de la gestion de l'espace mémoire virtuelle sur GPU.
Après traduction, la requête traverse le crossbar, une interconnexion autorisant n'importe quel SM à accéder à n'importe quelle part du cache L2. Ce dernier, découpé en 36 tranches de 2 MiB sur le RTX 4090, est adressé physiquement et offre une capacité de 72 MiB. Une absence de donnée dans le L2, coûtant environ 127 ns, déclenche l'accès à la mémoire vidéo (VRAM). C'est ici que les goulots d'étranglement les plus sévères apparaissent. Les contrôleurs de mémoire dialoguent avec les puces GDDR6X via des canaux et des banques. L'accès implique l'activation d'une ligne spécifique dans la matrice de condensateurs (opération coûteuse), suivie de la lecture des colonnes nécessaires. Les données sont ensuite sérialisées en symboles PAM4 sur les bus de données avant de remonter la hiérarchie pour finalement remplir les registres du thread demandeur.
Ce trajet aller-retour, totalisant 255 ns pour une seule instruction, soulève des questions critiques sur l'optimisation des charges de travail d'Intelligence Artificielle. Bien que l'architecture masque cette latence grâce au multithreading massif — permettant à d'autres warps de s'exécuter pendant qu'un warp attend la mémoire — la compréhension fine de ces mécanismes reste essentielle. Elle permet d'expliquer pourquoi des patterns d'accès mémoire non coalescés ou aléatoires peuvent dégrader drastiquement les performances, indépendamment de la puissance de calcul brute disponible. La maîtrise de ces subtilités, par des techniques de reverse engineering appliquées aux compteurs matériels, devient donc un levier privilégié pour l'optimisation des kernels sur les générations actuelles et futures de GPU.
Une question sur cet article ?
Fellow répond à partir de ce qu'il a publié et cite chaque source. Réponses rédigées par une IA.
À lire aussi
- gpuvis : un outil de visualisation de traces GPU2 octobre 2026
- GPGPU-Sim : simulateur au cycle près de GPU Nvidia pour charges de travail CUDA ou OpenCL10 octobre 2026
- Analyse technique du GPU Adreno X2 de Qualcomm19 septembre 2026
- Warnock : amplification géométrique GPU pour graphismes vectoriels25 août 2026
- Reverse-engineering du GPU Apple M1 : projet achevé27 août 2026
- IA à la maison, épisode 2 : dériver avec plusieurs GPU20 août 2026