NVIDIA GeForce 6800 Ultra

14 avril 2004 à 15h00
0

Les pipes, le chip, la mémoire et l'interface



0000009600083420-photo-nv40-puce-gf6800u.jpg
Souvenez-vous... Le GeForce FX 5950 Ultra (NV38) dispose d'une architecture de type 4x2 (4 pixel pipelines avec 2 unités de texture par pipe) qui peut fonctionner en mode 8x0 en ne traitant que des données Z ou les textures. Chez ATI, la gamme des R3xx dispose pour sa part d'une véritable architecture 8x1. Pour revenir dans la course, NVIDIA se devait de mettre le paquet sur la puissance brute en dotant son chip du plus grand nombre possible de pipes. Le résultat est ahurissant puisque le NV40 qui nous préoccupe aujourd'hui est, tenez-vous bien, doté de 16 pixels pipelines comportant chacun une unité de texturing. Les pipelines sont arrangés pour former quatre groupes SIMD de 4 pipelines ce que NVIDIA appelle les Quad Pipelines. L'architecture du GeForce 6800 Ultra est donc de type 16x1 et peut fonctionner en 32x0 selon le même principe que le NV3x. Ces seize pipelines, et c'est important de le préciser, sont entiers, non limités, fonctionnent à pleine vitesse et sont épaulés de 32 registres. Ils peuvent tous travailler avec une précision de calcul maximale de 128 bits même à pleine fréquence. Le fillrate théorique du GeForce 6800 Ultra est donc de 6.4 gigapixels par seconde pour une puissance géométrique de 600 millions de polygones par seconde. Voilà donc un véritable progrès qui explique en partie la taille imposante du processeur et de son die, d'autant que le GeForce 6800 intègre en plus six unités de vertex. Chacune de ces six unités est de type MIMD (multiple instruction data) et dispose d'un Vertex Texture Fetch relié à une mémoire cache L2 dédiée aux textures pour réduire au maximum les problèmes de latence.

Avec un tel nombre de pipelines, il n'est pas surprenant d'apprendre que le NV40 comporte le nombre record de 222 millions de transistors. Mesurant 40 mm x 40 mm le die de la puce reste fabriqué en 0.13µ par et est cadencé à 400 MHz. Physiquement, le NV40 conserve un packaging de type "flip-chip" mais son die est apparent, alors qu'une sorte de "placer" métallique recouvre les extrémités de la puce. Ce nombre élevé de transistors implique une forte consommation électrique et NVIDIA conseille d'ailleurs de disposer d'une alimentation de 450 Watts minimum, la puce et sa mémoire consommant en théorie entre 100 et 110 Watts ! Dans les faits vous devriez pouvoir vous en sortir avec une alimentation 350 Watts pour peu que votre système ne soit pas trop chargé. Question mémoire, le NV40 dispose d'une interface 256 bits et fait appel à de la GDDR3 cadencée à 1.1 GHz. La mémoire GDDR3 représente une évolution significative de la DDR2, puisque grâce à une plus grande finesse de gravure, les puces sont plus rapides et chauffent moins. Cela se ressent directement sur la bande passante mémoire, le NV40 pouvant délivrer près de 35.2 Go par seconde. Précisons que le GeForce 6800 dispose d'un contrôleur mémoire Crossbar fonctionnant sur quatre voies. Toutefois et malgré une fréquence élevée de 550 MHz, il aurait fallu que la DDR3 tourne à 600 MHz pour que les seize pipes du NV40 soient pleinement exploités. L'architecture a donc encore un certain potentiel d'évolution avec les prochaines montées en puissance tant de la mémoire que de l'interface qui est pour l'instant en AGP 8x.

000000C800083422-photo-nv40-die.jpg

Le die du NV40

Pour cette première version, le GeForce 6800 Ultra se limite à l'interface AGP 8x, faute de plates-formes PCI-Express disponibles. L'utilisation du bus AGP 8x se fait de manière native, NVIDIA n'ayant pas recours avec le NV40 au fameux bridge (ou HSI), du moins pour le moment. Du coup toutes les fonctionnalités classiques de l'AGP 8x sont supportées comme les fast writes. Il faudra vraisemblablement attendre l'arrivée du NV45 pour que le PCI-Express soit supportée nativement par les GeForce 6 haut de gamme.


Une architecture superscalaire massivement parallèle !



Le NV40 se distingue de ses prédécesseurs grâce à son architecture de type superscalaire. Celle-ci se caractérise par la présence de deux unités de shaders par texturing unit qui permettent d'exécuter un maximum de quatre instructions par cycle soit un total de huit opérations par pixel. Cette architecture superscalaire a toutefois une limite, puisque lorsque le GPU doit traiter à la fois des pixels et des textures, il ne peut alors exécuter que quatre opérations par pixel.

000000C800083675-photo-nv40-deux-unit-s-de-shaders-par-tmu.jpg

Typiquement les architectures DirectX 9.0 peuvent fonctionner en mode 'Co-Issue' c'est-à-dire exécuter deux instructions indépendantes au sein de la même unité de shaders en mode 3/1 (trois opérations + une opération). Le NV40 redéfinit le fonctionnement Co-Issue en autorisant de plus larges combinaisons avec un fonctionnement 3/1 ou 2/2. Mais grâce à la seconde unité de shaders, NVIDIA parvient à autoriser l'exécution de deux instructions dans le même cycle d'horloge dans les deux unités de shaders et ce aussi bien en mode 3/1 qu'en mode 2/2. Dès lors, le NV40 peut traiter en Dual-Issue quatre instructions par pixel et par cycle contre deux instructions par pixel et par cycle pour le R3xx, ceci dans le but d'augmenter le parallélisme pour des performances toujours plus élevées. Le Dual-Issue permet donc au NV40 d'être plus souple et plus flexible à programmer. Pour avoir une idée tangible du gain de performance induit par le Dual Issue et l'architecture superscalaire, on peut prendre un shader comportant 26 opérations arithmétiques et quatre textures. Un NV35 le traitera en douze passes, alors que le NV40 s'acquittera de cette tâche en seulement six passes... En d'autres termes, cette architecture parallèle permet à chacun des pipelines du NV40 d'exécuter différentes instructions, sur différents jeux de données en même temps.

0000008C00083436-photo-nv40-architecture-superscalaire.jpg

Une des autres avancées de l'architecture NV40 tient à ce que NVIDIA appelle l'Opportunistic Instruction Execution. Il s'agit en fait d'une fonction de prefetching ou de prédicition de branchement en français dans le texte qui permet au processeur de deviner quelles données seront requises par l'étape suivante d'un shader en cours d'exécution. Grâce à cette fonction le processeur précharge les données qu'il estime bientôt nécessaires ce qui permet d'accélérer encore les temps d'exécution et donc les performances des shaders.
Modifié le 01/06/2018 à 15h36
0 réponses
0 utilisateurs
Suivre la discussion

Les actualités récentes les plus commentées

Normandie : la plus grande route solaire du monde est un échec
Windows Defender obtient 3 fois le score maximum aux tests AV-Test
Sur Reddit, les développeurs d'Apex Legends dérapent et insultent leur communauté
Matrix 4 officiellement annoncé, avec Keanu Reeves et Carrie-Ann Moss
WoW Classic : Blizzard dit s’attendre à des files d’attente monstrueuses à l’ouverture
Minecraft s'offre un boost graphique... réservé aux possesseurs de cartes NVIDIA RTX
PS5 : la fuite d'un brevet révèle un design plutôt original
L'astéroïde Apophis qui frôlera la Terre en 2029 est-il vraiment dangereux ?
Starman et sa Tesla Roadster viennent d'achever leur première orbite autour du Soleil
Selon Google, 1,5% des mots de passe seraient compromis

Notre charte communautaire

1. Participez aux discussions

Nous encourageons chacun à exprimer ses idées sur les sujets qui l'intéressent, et à faire profiter l'ensemble de la communauté de son expertise sur un sujet particulier.

2. Partagez vos connaissances

Que vous soyez expert ou amateur passionné, partagez vos connaissances aux autres membres de la communauté pour enrichir le niveau d'expertise des articles.

3. Échangez vos idées

Donnez votre opinion en étayant votre propos et soyez ouverts aux idées des autres membres de la communauté, même si elles sont radicalement différentes des vôtres.

4. Faites preuve de tolérance

Qu'il s'agisse de rédacteurs professionnels ou amateurs, de lecteurs experts ou passionnés, vous devez faire preuve de tolérance et vous placer dans une démarche d'entraide.

5. Restez courtois

Particulièrement lorsque vous exprimez votre désaccord, critiquez les idées, pas les personnes. Évitez à tout prix les insultes, les attaques et autres jugements sur la forme des messages.

6. Publiez des messages utiles

Chaque participation a vocation à enrichir la discussion, aussi les partages d'humeurs personnelles ne doivent pas venir gêner le fil des échanges.

7. Soignez votre écriture

Utilisez la ponctuation, prohibez le langage SMS et les majuscules, relisez-vous afin de corriger un peu les fautes de frappe et de français : trop de fautes n’engagent ni à lire le message, ni à répondre à une question.

8. Respectez le cadre légal

Ne publiez pas de contenus irrespectueux, racistes, homophobes, obscènes ou faisant l'apologie de courants radicaux, qu'ils soient politiques ou religieux. N'utilisez pas plusieurs comptes utilisateurs.

9. Ne faites pas de promotion

Ne profitez pas d'une discussion pour faire la publicité d'un produit, d'un service ou même de votre site web personnel.

10. Ne plagiez pas

Exprimez uniquement vos opinions ou partagez des idées en citant vos sources.

scroll top