Cette semaine dans La Question Technique, il est question de SGRAM, ou GDDR si vous préférez. Comment la mémoire graphique qui équipe nos cartes 3D a évolué, quel est son rôle, et son influence est-elle primordiale sur les performances ?
Comme la mémoire vive centrale, la RAM dédiée à l’affichage (celle qui équipe nos cartes graphiques) a connu une croissance importante de sa capacité et de ses performances au fil des années. Mais à quoi sert exactement cette débauche de transistors ? Et en quoi diffère-t-elle de la RAM du CPU ?
Les débuts : les framebuffers
Au tout début de l’informatique, les écrans étaient des afficheurs vectoriels : un tube cathodique à la surface duquel pouvait se déplacer un faisceau d’électrons pour tracer des formes à l’écran (on trouvait encore ce type d’écrans dans les oscilloscopes analogiques il y a quelques années).
Si ces écrans étaient plutôt performants en termes de qualité de rendu (pas d’aliasing), ils étaient par contre très limités sur le plan de la diversité de ce qui pouvait être affiché (pas de formes complexes, difficultés à produire des images en couleurs, etc.).
Pour élargir les possibilités de l’affichage informatique, l’image vectorielle produite par les ordinateurs a été remplacée par une image pixélisée. C’est ainsi qu’est apparu dans les années 1970 le framebuffer, la première ébauche de mémoire dédiée à l’affichage, avant même l’arrivée des premiers circuits graphiques. Son rôle était de stocker l’image à afficher, sous forme d’une série de codes couleurs correspondant aux différents pixels qui doivent constituer l’image.
Proposé initialement sous forme de cartes d’extension, le framebuffer était exploité par deux éléments de l’ordinateur : le CPU, qui y effectuait des écritures, et le RAMDAC, qui y effectuait des lectures. Ce composant, toujours présent sur les cartes graphiques d’aujourd’hui, sert à convertir les données présentes dans le framebuffer en un signal vidéo analogique destiné à piloter l’écran.
Pour des performances optimales, le CPU et le RAMDAC doivent pouvoir accéder simultanément au framebuffer. Il était donc souvent constitué d’un type particulier de mémoire, accessible sur deux bus en parallèle (mémoire « dual ported »), mais très onéreuse, ce qui limitait la définition de l’image et réservait initialement les framebuffers aux stations de travail les plus puissantes, tandis que les ordinateurs plus classiques se contentaient d’un affichage en mode texte : le CPU écrivait des caractères dans une petite zone de mémoire vidéo et un circuit graphique se chargeait ensuite de convertir ces caractères en pixels, puis en signal vidéo analogique.
La VRAM et les premières cartes graphiques
Arrivée dans les années 1980, la VRAM a permis de réduire grandement le coût du framebuffer. Il s’agit d’une DRAM légèrement adaptée pour permettre des accès simultanés par le RAMDAC et par le CPU (ou les premiers circuits d’accélération graphique, arrivés à la même époque).
Lors de la lecture des données, une mémoire DRAM classique charge toute une ligne de mot, puis sélectionne uniquement les quelques bits demandés par le lecteur et ignore le reste (voir La Question Technique consacrée à la DRAM). Comme le RAMDAC lit la mémoire séquentiellement pour construire le signal vidéo, lorsqu’il accède au premier mot d’une ligne, il va ensuite forcément réclamer les mots suivants. L’astuce de la VRAM consiste donc tout simplement à stocker dès la première requête du RAMDAC la ligne de mots complète dans un buffer (implémenté avec un registre à décalage, qui à chaque cycle va sortir le mot suivant), pour ensuite la renvoyer mot par mot au RAMDAC au fil de ses demandes.
Ainsi, le CPU ou le GPU peuvent accéder à d’autres zones de la RAM malgré les requêtes du RAMDAC, qui sont le plus souvent servies à partir du buffer. Les circuits d’adressage de la mémoire n’étant pas dupliqués (le RAMDAC utilise le même bus d’adresse que le CPU/GPU pour passer ses commandes, seul le bus de données en sortie du buffer est dédié au RAMDAC), cette mémoire est moins coûteuse que de la RAM « dual ported ».
La VRAM de la carte graphique servait initialement quasi exclusivement à contenir le framebuffer, le circuit graphique n’étant qu’un accélérateur destiné à exécuter des primitives graphiques à la place du processeur (« tracer une ligne bleue de tel point à tel point », « placer ici un carré rouge de 5 pixels »…), en « traçant » directement les résultats des calculs dans le framebuffer.
La définition maximale de l’affichage dépendait donc de la taille de la VRAM. Par exemple, un affichage en 1600 x 1200 avec des couleurs 24 bits nécessitait 5.5 Mo de RAM, excluant donc les cartes graphiques dotées de 4 Mo ou moins, qui devaient se contenter soit d’une définition inférieure, soit d’une profondeur de couleur moindre. Pour l’anecdote, l’arrivée du 1280 x 1024, une définition exotique (ratio de 5:4 alors que quasiment tous les écrans étaient en 4:3), vient d’une volonté d’optimiser l’utilisation du framebuffer : en 8 bits, cette définition permettait d’utiliser jusqu’au dernier octet les 5 puces de 256 Ko de mémoire dont étaient dotées les premières cartes graphiques 1280 x 1024.
L’explosion des besoins avec la 3D
Si la RAM vidéo s’était contentée de servir de framebuffer, la quantité et les performances de la mémoire vidéo se seraient vraisemblablement stabilisées depuis une dizaine d’années. Le pilotage d’un écran UHD en 24 bits se contente en effet d’un framebuffer d’un peu moins de 24 Mo ou 48 Mo avec double buffering, et, à 60 Hz, il suffit d’une bande passante de 1.4 Go/s. Les limites de définition des cartes graphiques d’aujourd’hui ne proviennent donc plus de la quantité de mémoire disponible, mais des limites des interfaces (performances du RAMDAC pour le VGA, limites des différents protocoles pour les interfaces numériques) ou de limitations arbitraires imposées par les pilotes.
Alors pourquoi a-t-on aujourd’hui des cartes graphiques embarquant plusieurs Go de mémoire et disposant d’une bande passante pouvant atteindre plusieurs centaines de Go/s ? À cause de la 3D.
Depuis le milieu des années 90, les processeurs graphiques ne sont en effet plus de simples accélérateurs pour des primitives 2D, ils sont devenus des calculateurs 3D, effectuant des calculs géométriques de plus en plus complexes (et même de véritables petits programmes, les shaders), manipulant de plus en plus de données (en particulier les textures, toujours plus nombreuses et détaillées), et nécessitant de fait de plus en plus de mémoire et de bande passante, d’autant plus que les GPU sont devenus des unités de calcul massivement parallèles.
Pour accompagner cette montée en puissance, de nouveaux types de mémoire spécialisées et de plus en plus performantes ont été développées, avec en premier lieu la SGRAM (Synchronous Graphics RAM). Dérivée de la SDRAM, elle n’est plus « dual ported », contrairement à la VRAM, mais offre tout de même la possibilité d’accéder à deux pages simultanément, pour que le RAMDAC (ou désormais les puces gérant les sorties numériques des cartes) et le CPU ou le GPU puissent toujours accéder à la mémoire en parallèle.
La SGRAM propose également de nouveaux modes d’accès spécialisés dans les traitements graphiques :
– l’écriture par bloc, qui permet de remplir toute une zone mémoire avec une même valeur (remplissage d’une zone d’affichage avec une couleur unie)
– le bit masking, qui permet de ne modifier qu’une partie des données lors de l’écriture (par exemple, pour modifier uniquement la composante rouge des pixels sans toucher aux composantes verte et bleue)
Comme la SDRAM, la SGRAM a ensuite évolué avec des technologies DDR, pour augmenter la bande passante. Ces mémoires SGRAM DDR sont baptisées GDDR et ont connu plusieurs évolutions, calquées sur celles de la DDR SDRAM : la GDDR utilise les principes de la DDR, la GDDR2 reprends une partie des améliorations de la DDR2, la GDDR3 est basée sur la DDR2 et les GDDR4 et GDDR5 sont basées sur la DDR3. Par rapport à leurs homologues SDRAM, les SGRAM sont généralement plus coûteuses, mais optimisées pour pouvoir monter plus haut en fréquence, pour satisfaire les besoins en bande passante des GPU.
Les mémoires SGRAM étant plus coûteuses que leurs homologues SDRAM, les cartes graphiques n’utilisent toutefois pas toutes de la mémoire spécialisée. On trouve ainsi aujourd’hui des cartes graphiques d’entrée de gamme utilisant de la DDR3 SDRAM, tandis que la Voodoo² utilisée ci-dessus en illustration utilisait de la mémoire EDO DRAM, un type de mémoire qui était utilisée comme RAM centrale avant l’avènement de la SDRAM et qui a équipé de nombreuses cartes graphiques pour palier au coût de la VRAM.
L’impact sur les performances
Alors que du côté de la RAM centrale, les écarts de performances liés aux spécifications de la RAM restent relativement modestes, la grande gourmandise des GPU rend les spécifications de la mémoire particulièrement cruciales : un GPU ne pourra pas exprimer son potentiel s’il n’est pas couplé avec de la mémoire à la hauteur de ses performances.
C’est d’autant plus vrai sur les cartes d’entrée de gamme, où il faut faire particulièrement attention à cette variable : alors qu’un GPU haut de gamme est généralement toujours livré avec de la mémoire rapide de dernière génération, les cartes d’entrée de gamme sont souvent déclinées en plusieurs variantes, utilisant diverses spécifications de mémoire. Un GPU aux performances correctes lorsqu’il est couplé à de la GDDR5 peut ainsi se transformer en limace une fois couplé à de la DDR3…
Outre la technologie employée, les performances de la mémoire dépendent de deux facteurs : la fréquence, comme pour la RAM centrale, mais aussi la largeur du bus, qui peut fortement varier d’un modèle à l’autre (de 64 à 512 bits sur les cartes actuellement disponibles, de quoi faire varier les performances en bande passante d’un facteur 8 pour une même fréquence de fonctionnement).
Dans les jeux, la quantité de mémoire a par contre relativement peu d’impact sur les performances au-delà de 2 Go, voir même de seulement 1 Go. Les textures des jeux sont en effet généralement moins volumineuses, d’autant plus que seules les textures nécessaires au calcul de la scène sont chargées dans la RAM vidéo. Une carte dotée de 2 Go aura donc rarement à passer par le goulet d’étranglement du PCI-Express pour aller chercher des textures en RAM centrale… sauf dans quelques cas extrêmes.
L’utilisation de définitions élevées augmente en effet la quantité de mémoire nécessaire, pour le framebuffer évidemment, mais aussi pour le stockage de textures plus fines. Ajoutez à ça un anti-aliasing poussé à son maximum, qui peut augmenter fortement le nombre de pixels calculés (certaines portions de la scène sont calculées à une définition plus élevée, avant d’être réduite à la définition d’affichage), et les performances en prendront un coup en cas de manque de mémoire (si le logiciel ne refuse pas carrément l’activation de certaines options), mais seuls les adeptes des définitions supérieures au Full HD (UHD, multi-écrans, etc.) et de jeux très riches en textures auront éventuellement à se soucier de cette question, et encore, puisque les cartes capables de fonctionner dans ces conditions sont d’habitude généreusement dotées en mémoire.
Pour les autres, les modèles 2 Go sont aujourd’hui le meilleur compromis. Du côté des cartes d’entrée de gamme, pas spécialement destinées aux jeux, 512 Mo peuvent largement faire l’affaire, même si les services marketing des constructeurs essayent de nous faire croire que 4 Go de mémoire DDR3 ont du sens sur une modeste GeForce GT 630 (la même avec 1 Go de GDDR5 sera largement plus performante)… Notez tout de même que dans le cas de cartes multi-GPU ou de montages SLI/CrossFire, la quantité de mémoire doit être multipliées par le nombre de GPU : les différents GPU ont chacun leur espace mémoire, non partagé avec les autres GPU, et toutes les données nécessaires au calcul d’une scène 3D sont donc dupliquées dans chaque espace mémoire.
Un petit rappel assez concis clair et suffisamment détaillé pour être bien noté, un petit alinéa aurait pu être ajouté pour les APU ne serais-ce que sur les modes de gestion de la RAM dans ces cas de figure et surtout parce qu’il a été question, de la part d’AMD, d’offrir la possibilité de peupler certaines CM avec de la GDDR5 à l’instar du matériel fourni à Sony pour la PS.
Ca me fait penser aux gens qui me demandent des cartes graphiques avec au moins 1Go de mémoire car pour leur 512Mo est pas assez puissante… soupir
C’est triste, mais c’est normal. Pour le grand public, le marché des CPU est vaguement compréhensible : il y a le nombre de cœurs, et la fréquence, soit deux valeurs simples. Les initités savent bien que c’est largement insuffisant pour estimer correctement les preformances d’un CPU, mais ça donne une vague idée.
Pour les GPU c’est beaucoup plus compliqué, car la fréquence n’est pas déterminante et il n’y a pas vraiment de cœurs à proprement parler, quoi qu’en dise NVIDIA. De plus, les différences architecturales d’une génération à l’autre sont considérables, ce qui rend les comparaisons très difficiles, sans parler des caractéristiques de la GDDR détaillées ici.
Bref, pour M. Tout-le-Monde, estimer les performances d’une carte graphique à partir de son nom, qui n’est généralement accompagné d’aucune spécification si ce n’est la quantité de RAM, c’est impossible. Donc il se base sur ce qu’il sait et qu’il comprend (à peu près) : la quantité de RAM. Les fabricants le savent bien et c’est pour ça qu’ils en abusent avec des cartes merdiques dotées de copieuses (et excessives) quantités de RAM lente.
Bah ça dépend à quels jeux et dans quelles résolutions ils jouent, parfois 512 Mo c’est pas assez…
Je sais que GTA 4 n’est pas forcément un bon exemple mais avec 512 Mo tu seras limité d’office (je prends aussi cet exemple car c’est un des rares jeux qui affiche la quantité de mémoire nécéssaire en fonction des réglages…)
@Nelson34> Moi ce qui me fait le plus soupirer c’est votre mépris envers des personnes qui ne se revendiquent pas initiés, plutôt que de les prendre de haut vous feriez mieux de vous montrez plus bienveillant, d’autant plus que dit comme ça on aurait tendance à leur donner raison puisque rien que pour la plupart des jeux récents 512 Mo c’est insuffisant y compris en GDDR5, la base c’est plutôt 1 Go, et pour le confort 2 Go suffisent.
@hugotboss> Mon commentaire, bien que ambigu, ne critique pas les acheteurs, mais les commerciaux.
Je m’explique : Nous sommes revendeurs ASUS, ASUS a 2 gamme distinque : une pour les revendeurs, une pour les grandes surfaces. Les version revendeur sont garantie 2ans, fournit avec sacoche/souris, ont en general 500Go de HDD et 4Go de RAM. Les versions grandes surface ont 750 ou 1To de HDD et 6 à 8Go de RAM, de l’i3 et ceux pour le meme prix, mais en echange pas d’accessoire et une garantie de 1an. Ca montre bien le monde dans lequel on vit, soit on est avisé et on preferera une garantie 2ans et un materiel largement sufissant, soit on y cromprend pas grand chose et a prix egal on compare celui qui a les plus gros chiffres.
Quand je voit des Tour Compaq de gabarit standard, ou a l’interieur vous trouvé une carte mere ITX avec 2 sata et aucun PCI/PCIE, vous vous dites que là, il y a grosse arnaque! Mais sur la tour c’est noté « DualCore AMD Vision, 4Go de RAM, 750Go de HDD, Wifi, Lecteur de Carte » Prix? 300€
Bah la je comprend que une personne qui comprend pas grand chose a l’info, bah saute les 2 pieds dedans…
Et des aberrations technico/commercial, j’en est tout un panier.
Et encore, 12Go, c’est négligeable quand on n’a déjà pas assez de mémoire sur le CPU associé (sans parler des temps de transferts mollassons !).
Bon article !
Rhôôôô, une Voodoo 2, j’ai eu la même en 1996 !!!
Magique cette carte ! Sauf que pour Half-life elle était déjà trop juste…
Donc acheté une NVidia Maxi gamer Guillemot 32 mo.
Aujourd’hui il faut 1 Giga minimum…Les temps changent…
@Poupousse> Qu’est-ce que tu raconte ?
La voodoo2 était juste nickel pour jouer à Half life. Mais à cette époque je jouait plutôt à carma2.
Sniff: fait chier ! je suis vieux.
Sinon je merci, j’avais jamais compris le truc du Ramdac
Carma…Que de souvenirs…Ils n’ont pas les c..illes de sortir des jeux comme ça de nos jours…SOF, Carma, etc…
@Poupousse> Qu’est-ce que tu raconte encore ?
Camaggedon réincarnation est accessible en alpha sur steam et pour ne pas avoir hésité un instant à ouvrir ma bourse je peux déjà dire que certe le jeux à encore une bonne et longue ( trop longue) année de développement devant lui mais que déjà ce que j’ai pu en tester me plait énormément.
@Morph 910> Au temps pour moi…^_^
j’étais convaincu du contraire…J’aimerai bien retrouver un SOF version boucherie « artistique » ! Ça me défoulait pas mal !
Un bon Manhunt aussi, tout en finesse…
@Matt C’est un essai pour pénétrer PCW? :p
Edit : lol l’aveugle j’avais même pas remarqué que tu te tapais toutes les LQT…
En fin d’article vous auriez pu citer la AMD W9100 qui 16go de mémoire GDDR5 🙂
En effet. Je croyais qu’elle était bi-GPU, mais en fait non ^^