# Tesla (microarchitecture)

Tesla est le nom de code d’une microarchitecture de GPU développée par Nvidia et publiée en 2006, en tant que successeur de la microarchitecture Curie (en). Il a été nommé d’après l’ingénieur électricien pionnier Nikola Tesla. En tant que première microarchitecture de Nvidia à implémenter des shaders unifiés, elle a été utilisée dans les GPU GeForce 8, GeForce 9, GeForce 100, GeForce 200 et GeForce 300, fabriqués en 90 nm, 80 nm, 65 nm, 55 nm et 40 nm. Il était également présent dans la GeForce 405 et dans les modules de calcul Quadro FX, Quadro x000, Quadro NVS et Tesla.
Tesla a remplacé les anciennes microarchitectures à pipeline fixe, représentées au moment de leur introduction par la série GeForce 7. Il était en concurrence directe avec la première microarchitecture de shader unifiée d’AMD nommée TeraScale, un développement du travail d’ATI sur la Xbox 360 qui utilisait un design similaire. Tesla a été suivi par Fermi.

## Description

Tesla est la première microarchitecture de Nvidia mettant en œuvre le modèle de shader unifié. Le pilote prend en charge l’architecture Direct3D 10 Shader Model 4.0 / OpenGL 2.1 (les pilotes ultérieurs prennent en charge OpenGL 3.3). La conception est un changement majeur pour NVIDIA dans la fonctionnalité et la capacité des GPU, le changement le plus évident étant le passage des unités fonctionnelles séparées (pixel shaders, vertex shaders) au sein des GPU précédents à une collection homogène de processeurs universels à virgule flottante (appelés « processeurs de flux ») qui peuvent effectuer un ensemble plus universel de tâches.
L’architecture de shader unifiée de GeForce 8 se compose d’un certain nombre de processeurs de flux (SP, stream processor). Contrairement à l’approche de traitement vectoriel adoptée avec les anciennes unités de shader, chaque SP est scalaire et ne peut donc fonctionner que sur un seul composant à la fois. Cela les rend moins complexes à construire tout en étant assez flexibles et universels. Les unités de shader scalaire ont également l’avantage d’être plus efficaces dans un certain nombre de cas par rapport aux unités de shader vectoriel de la génération précédente qui s’appuient sur un mélange d’instructions et un ordre idéaux pour atteindre un débit maximal. Le débit maximal plus faible de ces processeurs scalaires est compensé par l’efficacité et par leur fonctionnement à une fréquence d’horloge élevée (rendue possible par leur simplicité). Les différentes parties du coeur du GPU GeForce 8 fonctionnent à des fréquences d’horloge différentes (domaines d’horloge), similaires au fonctionnement des GPU de la série GeForce 7 précédentes. Par exemple, les processeurs de flux de la GeForce 8800 GTX fonctionnent à une fréquence d’horloge de 1,35 GHz tandis que le reste de la puce fonctionne à 575 MHz.
La GeForce 8 effectue un filtrage des textures (en) nettement meilleur que ses prédécesseurs qui utilisaient diverses optimisations et astuces visuelles pour accélérer le rendu sans nuire à la qualité du filtrage. La gamme GeForce 8 met en oeuvre un algorithme de filtrage anisotrope indépendant de l’angle ainsi qu’un filtrage de texture trilinéaire complet. Le G80, mais pas ses petits frères, est équipé d’une capacité arithmétique de filtrage de texture beaucoup plus importante que la série GeForce 7. Cela permet un filtrage de haute qualité avec un impact de performance beaucoup plus faible qu’auparavant.
Nvidia a également introduit de nouvelles méthodes d’anticrénelage des bords polygonaux, y compris la capacité des ROP du GPU à effectuer à la fois l’anticrénelage multi-échantillons (en) (MSAA, multi-sample anti-aliasing) et l’éclairage HDR en même temps, corrigeant diverses limitations des générations précédentes. La carte GeForce 8 peut effectuer des MSAA avec les formats de texture FP16 et FP32. Elle prend en charge le rendu HDR 128 bits, une amélioration par rapport à la prise en charge 64 bits des cartes précédentes. La nouvelle technologie anticrénelage de la puce, appelée anticrénelage par échantillonnage de couverture (CSAA, coverage sampling anti-aliasing), utilise les informations Z, couleur et couverture pour déterminer la couleur finale des pixels. Cette technique d’optimisation des couleurs permet au CSAA 16X d’afficher des images nettes et contrastées.