# Ada Lovelace (microarchitecture)

Ada Lovelace, appelée également Lovelace, est le nom de code d'une microarchitecture de processeur graphique (GPU) développée par Nvidia pour succéder à l'architecture Ampere, annoncée officiellement le 20 septembre 2022. Elle est nommée d'après la mathématicienne anglaise Ada Lovelace qui est souvent considérée comme la première programmeuse d'ordinateur et est la première architecture de Nvidia à comprendre le nom et le prénom de l'éponyme. Nvidia a annoncé l'architecture en même temps que les nouveaux GPU grand public GeForce 40 series et les cartes graphiques pour stations de travail RTX 6000 Ada Generation. Les nouveaux GPU utilisent le nouveau procédé 5 nm "4N" de TSMC qui offre une meilleure efficacité par rapport aux procédés précédents Samsung 8 nm et TSMC N7 utilisés par Nvidia sur sa précédente génération d'architecture, Ampere.

## Historique

L'architecture Ada Lovelace succède à l'architecture Ampere qui avait été introduite en 2020. L'architecture Ada Lovelace a été annoncée par le CEO de Nvidia Jensen Huang lors d'une "keynote" au GTC 2022 le 20 septembre 2022, architecture équipant les futurs GPU Nvidia pour les cartes graphiques pour jeux vidéo, les stations de travail et les centres de données.

## Détails architecturaux

Les améliorations architecturales de l'architecture Ada Lovelace sont les suivantes :
* CUDA Compute Capability 8.9
* Procédé TSMC 4N (conçu spécialement pour NVIDIA) - à ne pas confondre avec le procédé standard N4 de TSMC
* Coeurs Tensor de 4ème génération supportant les formats FP8, FP16, bfloat16, TensorFloat-32 (TF32) et l'accélération du traitement des matrices creuses
* Coeurs Ray Tracing de 3ème génération, avec ray tracing concurrent, ombrage et calcul
* Shader Execution Reordering (SER)
* Codeur/décodeur vidéo Nvidia (NVENC/NVDEC) avec codage matériel à fonction fixe de AV1 en 8K 10-bit 60 FPS$^,$
* Pas de support de NVLink$^,$

### Streaming multiprocessors (SMs)
#### Coeurs CUDA

128 coeurs CUDA sont présents dans chaque SM. L'architecture en elle-même ne change pas par rapport à la génération Ampère. Nous avons 4 clusters SIMD16 à double voie (FP32 et/ou INT32) et 4 autres SIMD16 à unique voie (INT32). Rajoutons les 4 clusters SIMD4 pour les opérations spéciales (SFU). Les calculs à double précisions (FP64) sont assurés avec un ALU unique à chaque SM.

#### Coeurs RT

Ada Lovelace possède des coeurs RT de troisième génération. La carte RTX 4090 possède 128 coeurs RT, à comparer aux 84 de la génération précédente RTX 3090 Ti. Ces 128 coeurs RT peuvent fournir une puissance de calcul allant jusqu'à 191 TFLOPS, avec 1,49 TFLOPS par coeur RT. Un nouvel étage dans le pipeline de ray tracing appelé Shader Execution Reordering (SER) est ajouté dans l'architecture Lovelace, pour lequel Nvidia revendique une augmentation de la performance d'un facteur deux dans les taches de ray tracing.

#### Coeurs Tensor

La 4ème génération de coeurs Tensor de Lovelace supporte la technologie IA utilisée dans les techniques de génération d'images DLSS 3. Tout comme Ampere, chaque SM contient 4 coeurs Tensor mais au total Lovelace contient un plus grand nombre de coeurs Tensor, étant donné son nombre plus important de SM.

### Fréquence d'horloge

Il y a une augmentation significative des fréquences d'horloge avec l'architecture Ada Lovelace, la fréquence d'horloge de base de la RTX 4090 étant plus élevée que la fréquence d'horloge Boost de la RTX 3090 Ti.
| | RTX 2080 Ti | RTX 3090 Ti | RTX 4090 |
| Architecture | Turing | Ampere | Ada Lovelace |
| Fréquence horloge de base (MHz) | 1350 | 1560 | 2235 |
| Fréquence horloge Boost (MHz) | 1635 | 1860 | 2520 |

### Sous-système mémoire et mémoire cache

| | RTX 2080 Ti | RTX 3090 Ti | RTX 4090 |
| Architecture | Turing | Ampere | Ada Lovelace |
| Cache de données L1 | 6.375 Mo (96 ko par SM) | 10.5 Mo (128 ko par SM) | 16 Mo (128 ko par SM) |
| Cache L2 | 5.5 Mo | 6 Mo | 72 Mo |
La puce AD102 Lovelace pleinement fonctionnelle possède 96 Mo de cache L2, une augmentation d'un facteur 16 par rapport aux 6 Mo dans la puce GA102 basée sur Ampere. Le GPU ayant accès à une grande quantité de cache L2, cela avantage les opérations complexes comme le ray tracing comparé à un GPU recherchant ses données dans la mémoire vidéo GDDR qui est plus lente. Reposant moins sur des accès mémoire pour stocker des données volumineuses et fréquemment accédées signifie qu'un bus mémoire plus étroit peut être utilisé en tandem avec un grand cache L2.
Chaque contrôleur mémoire utilise une connexion 32 bits, avec un nombre maximum de 12 contrôleurs, donnant une largeur de bus mémoire combinée de 384 bits. L'architecture Lovelace peut utiliser soit la mémoire GDDR6, soit la GDDR6X. La mémoire GDDR6X est présente dans les modèles GeForce RTX 40 series (ordinateurs fixes) tandis que la mémoire GDDR6 plus sobre en énergie est utilisée dans les versions correspondantes pour portables et dans les GPU pour stations de travail RTX A6000.

### Efficacité énergétique et procédé de fabrication

L'architecture Ada Lovelace peut utiliser des tensions d'alimentation plus faibles que son prédécesseur. Nvidia revendique une augmentation de performance d'un facteur deux pour la carte RTX 4090 au même niveau de puissance 450 W, par rapport au vaisseau amiral de la génération précédente RTX 3090 Ti.
La meilleure efficacité énergétique peut être attribuée en partie au procédé de fabrication ("process node") plus fin utilisé par l'architecture Lovelace. L'architecture Ada Lovelace est fabriquée avec le procédé de pointe 4N de TSMC, un procédé customisé pour Nvidia. L'architecture de la génération précédente Ampere utilisait le procédé 8N de Samsung datant de 2018, qui était déjà âgée de deux ans lors du lancement d'Ampere$^,$. La puce AD102 avec ses 76,3 milliards de transistors a une densité de transistors de 125,5 millions par mm$^2$, une augmentation de 178 % de la densité par rapport aux 45,1 millions par mm$^2$ du GA102.

### Moteur multimédia

L'architecture Lovelace utilise le nouveau codeur vidéo de 8ème génération de Nvidia NVENC (en) et le décodeur vidéo de 7ème génération NVDEC introduit par Ampere.
Le codage matériel de AV1 supportant jusqu'à une résolution 8K à 60 FPS en couleur 10 bits a été rajouté dans NVENC, permettant une meilleure qualité vidéo avec un débit binaire plus faible comparé aux codecs H.264 et H.265. Nvidia estime que son codeur de AV1 dans NVENC intégré dans l'architecture Lovelace est 40 % plus efficace que le codeur H.264 de l'architecture Ampere.
L'architecture Lovelace a été critiquée pour ne pas supporter la connexion DisplayPort 2.0 qui permet une bande passante plus élevée et utilise à la place la version plus ancienne DisplayPort 1.4a qui est limitée à une bande passante maximale de 32 Gbps. En conséquence, les GPU Lovelace pourraient être limités par le débit maximal de DisplayPort 1.4a malgré la capacité du GPU à supporter des débits plus élevés. Les GPU Intel Arc qui sont également sortis en octobre 2022 supportent DisplayPort 2.0. L'architecture RDNA 3 concurrente d'AMD sortie juste deux mois plus tard que Lovelace supporte DisplayPort 2.1.

## Puces Ada Lovelace

Comparison des puces Ada Lovelace :
| Puce | AD102 | AD103 | AD104 | AD106 | AD107 |
| Taille de puce (mm$^2$) | 609 | 379 | 294 | 188 | 159 |
| Nb. transistors (G) | 76.3 | 45.9 | 35.8 | 22.9 | 18.9 |
| Densité de transistors (MTr/mm$^2$) | 125.3 | 121.1 | 121.8 | 121.8 | 118.9 |
| Nb. Graphics processing clusters (GPC) | 12 | 7 | 5 | 3 | 2 |
| Nb. Streaming multiprocessors (SM) | 144 | 80 | 60 | 36 | 24 |
| Nb. coeurs CUDA | 18432 | 10240 | 7680 | 4608 | 3072 |
| Nb. TMU | 576 | 320 | 240 | 144 | 96 |
| Nb. ROP | 192 | 112 | 80 | 64 | 32 |
| Nb. coeurs tenseur (en) | 576 | 320 | 240 | 144 | 96 |
| Nb. coeurs RT | 144 | 80 | 60 | 36 | 24 |
| Cache L1 | 18 Mo | 10 Mo | 7,5 Mo | 4,5 Mo | 3 Mo |
| 128 ko par SM |||||
| Cache L2 (Mo) | 96 | 64 | 48 | 32 | 32 |

## Produits basés sur Ada Lovelace
### Cartes graphiques pour jeux vidéo

* GeForce 40 series
** GeForce RTX 4050 (mobile) (AD107)
** GeForce RTX 4060 (mobile) (AD107)
** GeForce RTX 4060 Ti (AD106)
** GeForce RTX 4070 (mobile) (AD106)
** GeForce RTX 4070 (AD104)
** GeForce RTX 4070 Ti (AD104)
** GeForce RTX 4080 (mobile) (AD104)
** GeForce RTX 4080 (AD103)
** GeForce RTX 4090 (mobile) (AD103)
** GeForce RTX 4090 (AD102)

### Domaine professionnel
#### Stations de travail de bureau

| Modèle | Date de lancement | Prix de lancement (USD) | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | Cache | Cache | Fréq. horloge | Fréq. horloge | Fillrate$^,$ | Fillrate$^,$ | Mémoire | Mémoire | Mémoire | Mémoire | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | TDP (W) |
| Modèle | Date de lancement | Prix de lancement (USD) | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | L1 (Mo) | L2 (Mo) | Coeurs (MHz) | Mémoire (Gb/s) | Pixel (GPx/s) | Texture (GTex/s) | Type | Taille (Go) | Bande passante (Go/s) | Largeur de bus (bits) | Demi-précision (boost) | Simple précision (boost) | Double précision (boost) | Calcul tensoriel [sparse] | TDP (W) |
| RTX 4000 SFF Ada Generation | 21 mars 2023 | 1250 | AD104-400 | 35.8 | 294.5 | 6144 192:80:48:192 | 48 | 6 | 48 | 1290 (1565) | 16 | 103.2 (125.2) | 247.68 (300.48) | GDDR6 | 20 | 320 | 160 | | (19.2) | | 153.4 [306.8] | 70 |
| RTX 6000 Ada Generation | 20 janvier 2023 | 6799 | AD102-300 | 76.3 | 608.4 | 18176 568:192:142:568 | 142 | 17.75 | 96 | 915 (2505) | 20 | 175.68 (480.96) | 519.72 (1422.84) | GDDR6 | 48 | 960 | 384 | | (91.1) | | 728.5 [1457.0] | 300 |
* ↑ Nb. coeurs CUDA : Nb. TMU : Nb. ROP : Nb. coeurs Ray tracing : Nb. coeurs Tensor (en)
* ↑ Nombre de Streaming multi-processors dans le GPU.
* ↑ Les valeurs Core boost (si disponibles) sont indiquées sous la valeur de base entre parenthèses.
* ↑ Le taux de remplissage des pixels (Pixel fillrate) est obtenu en faisant le produit du nombre de render output units (ROP) et de la fréquence d'horloge de base (ou de boost).
* ↑ Le taux de remplissage des textures (Texture fillrate) est obtenu en faisant le produit du nombre de texture mapping units (TMU) et de la fréquence d'horloge de base (ou de boost).

#### Stations de travail portables

| Modèle | Date de lancement | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | Cache | Cache | Fréq. horloge | Fréq. horloge | Fillrate$^,$ | Fillrate$^,$ | Mémoire | Mémoire | Mémoire | Mémoire | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | TGP (W) |
| Modèle | Date de lancement | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | L1 (Mo) | L2 (Mo) | Coeurs (MHz) | Mémoire (Gb/s) | Pixel (GPx/s) | Texture (GTex/s) | Type | Taille (Go) | Bande passante (GB/s) | Largeur de bus (bits) | Demi-précision (boost) | Simple précision (boost) | Double précision (boost) | Calcul tensoriel [sparse] | TGP (W) |
| RTX 2000 Max-Q Ada Laptop | 21 mars 2023 | AD107 | | 146 | 3072 96:32:24:96 | 24 | 3 | 12 | 930 (1455) | 14 | 29.76 (46.56) | 89.28 (139.68) | GDDR6 | 8 | 224 | 128 | | | | | 35 |
| RTX 2000 Ada Laptop | 21 mars 2023 | AD107 | | 146 | 3072 96:32:24:96 | 24 | 3 | 12 | 1635 (2115) | 16 | 52.32 (67.68) | 156.96 (203.04) | GDDR6 | 8 | 256 | 128 | | (14.5) | | 115.8 [231.6] | 35–140 |
| RTX 3000 Ada Laptop | 21 mars 2023 | AD106 | 22.9 | 190 | 4608 144:48:36:144 | 36 | 4.5 | 32 | 1395 (1695) | 16 | 66.96 (81.36) | 200.88 (244.08) | GDDR6 | 8 | 256 | 128 | | (19.9) | | 159.3 [318.6] | 35–140 |
| RTX 3500 Ada Laptop | 21 mars 2023 | AD104 | 35.8 | 294.5 | 5120 160:64:40:160 | 40 | 5 | 48 | 1290 (1665) | 18 | 82.56 (106.56) | 206.4 (266.4) | GDDR6 | 12 | 432 | 192 | | (23.0) | | 184.3 [368.6] | 60–140 |
| RTX 4000 Ada Laptop | 21 mars 2023 | AD104 | 35.8 | 294.5 | 7424 232:80:58:232 | 58 | 7.25 | 48 | 1290 (1665) | 18 | 103.2 (133.2) | 299.28 (386.28) | GDDR6 | 12 | 432 | 192 | | (33.6) | | 269.0 [538.0] | 80–175 |
| RTX 5000 Ada Laptop | 21 mars 2023 | AD103 | 45.9 | 378.6 | 9728 304:112:76:304 | 76 | 9.5 | 64 | 1335 (1695) | 18 | 149.52 (189.84) | 405.84 (515.28) | GDDR6 | 16 | 576 | 256 | | (42.6) | | 340.9 [681.8] | 80–175 |
* ↑ Nb. coeurs CUDA : Nb. TMU : Nb. ROP : Nb. coeurs Ray tracing : Nb. coeurs Tensor (en)
* ↑ Nombre de Streaming multi-processors dans le GPU.
* ↑ Les valeurs Core boost (si disponibles) sont indiquées sous la valeur de base entre parenthèses.
* ↑ Le taux de remplissage des pixels (Pixel fillrate) est obtenu en faisant le produit du nombre de render output units (ROP) et de la fréquence d'horloge de base (ou de boost).
* ↑ Le taux de remplissage des textures (Texture fillrate) est obtenu en faisant le produit du nombre de texture mapping units (TMU) et de la fréquence d'horloge de base (ou de boost).

### Centre de données

| Modèle | Date de lancement | Prix de lancement (USD) | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | Cache | Cache | Fréq. horloge | Fréq. horloge | Fillrate$^,$ | Fillrate$^,$ | Mémoire | Mémoire | Mémoire | Mémoire | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | Puissance de calcul (TFLOPS) | TBP (W) |
| Modèle | Date de lancement | Prix de lancement (USD) | Nom de code | Transistors (milliards) | Taille de puce (mm$^2$) | Configuration des coeurs | Nombre de SM | L1 (Mo) | L2 (Mo) | Coeurs (MHz) | Mémoire (MHz) | Pixel (GPx/s) | Texture (GTex/s) | Type | Taille (Go) | Bande passante (GB/s) | Largeur de bus (bits) | Demi-précision (boost) | Simple précision (boost) | Double précision (boost) | Calcul tensoriel [sparse] | TBP (W) |
| L4 | 21 mars 2023 | $ | AD104-???-A1 | 35.8 | 295 | 7680 240:80:60:240 | 60 | 7.5 | 48 | 795 (2040) | 1313 | 63.6 (163.2) | 190.8 (489.6) | GDDR6X | 24 | 504.2 | 192 | | | | | 285 |
| L40 | 13 octobre 2022 | $ | AD102-895-A1 | 76.3 | 608.4 | 18176 568:192:142:568 | 142 | 17.75 | 96 | 735 (2490) | 2250 | 58.8 (199.2) | 176.4 (597.6) | GDDR6 | 48 | 864 | 384 | | | | | 300 |
| L40G | 13 octobre 2022 | $ | AD102-???-A1 | 76.3 | 608.4 | 18176 568:192:142:568 | 142 | 17.75 | 48 | 1005 (2475) | 2250 | 80.4 (198.0) | 241.2 (594.0) | GDDR6 | 24 | 864 | 384 | | | | | 300 |
| L40 CNX | 13 octobre 2022 | $ | AD102-???-A1 | 76.3 | 608.4 | 18176 568:192:142:568 | 142 | 17.75 | 48 | 1005 (2475) | 2250 | 80.4 (198.0) | 241.2 (594.0) | GDDR6 | 24 | 864 | 384 | | | | | 300 |
* ↑ Nb. coeurs CUDA : Nb. texture mapping units : Nb. ROP : Nb. coeurs Ray tracing : Nb. coeurs Tensor (en)
* ↑ Nombre de Streaming multi-processors dans le GPU.
* ↑ Les valeurs Core boost (si disponibles) sont indiquées sous la valeur de base entre parenthèses.
* ↑ Le taux de remplissage des pixels (Pixel fillrate) est obtenu en faisant le produit du nombre de render output units (ROP) et de la fréquence d'horloge de base (ou devboost).
* ↑ Le taux de remplissage des textures (Texture fillrate) est obtenu en faisant le produit du nombre de texture mapping units (TMU) et de la fréquence d'horloge de base (ou decboost).