# Fermi (microarchitecture)

Fermi est le nom de code d'une architecture de processeur graphique (GPU) de la société NVidia. Les premiers processeurs, gravés en 40 nm, sont sortis en mars 2010 et comportent plus de 3 milliards de transistors, soit plus qu'un microprocesseur courant. Certaines cartes GeForce 600M disposent de processeurs gravés en 28 nm au lieu de 40 nm.

## Historique

* Mars 2010, NVidia sort la GTX 480, la première carte graphique à utiliser l'architecture Fermi avec le GF 100. Même si la carte est la plus puissante du moment elle souffre d'une surconsommation, de températures très élevées, tout en étant bruyante. À cause de ces inconvénients un des SM est désactivé.
* Novembre 2010, sortie de la GTX 580, par rapport au GF 100 de la GTX 480, son GF 110 dispose des 16 SM de Fermi, et de petites améliorations permettent de réduire un peu la consommation, et l'utilisation d'un refroidissement amélioré réduit les nuisances sonores.
* Mars 2011, lancement de la GTX 590, une carte bi-GPU qui utilise deux GF 110. C'est la plus puissante carte utilisant l'architecture Fermi.
* Avril 2012, arrêt de la fabrication des GTX 580 et abandon de l'architecture Fermi.

## Architecture

On retrouve une puce gravée en 40 nm contenant quatre GPC. Chaque GPC contient quatre SM (Streaming Multiprocessor) qui contiennent diverses unités spécialisées (comme les unités de ROP ou de texture, par exemple). Une puce contient 48 unités de ROP. Pour soutenir les SM, la puce propose deux niveaux de mémoire cache auxquels il faut ajouter la quantité de GDDR5.

### Le GPC

Le GPC ou Graphics Processing Cluster est l’équivalent d'un cœur d'un microprocesseur sauf qu'il est dépourvu de mémoire cache, il est constitué de quatre SM.

### Le SM

Un SM (Streaming Multiprocessor) peut contenir jusqu'à 32 cœurs CUDA et quatre unités de texture dans la version la plus évoluée, ainsi que le premier niveau de mémoire cache. Chaque SM se dote d'un double scheduler (ordonnanceur). Le scheduler est une sorte de chef de gare qui va agencer et distribuer le travail en fonction de la charge et des unités disponibles. Chaque scheduler peut envoyer une instruction à 16 processeurs CUDA à chaque cycle d'horloge. Le SM utilise le système de double cadencement qui multiplie par deux la fréquence des cœurs CUDA.

## GPU utilisant l'architecture Fermi

* GF100 : il est utilisé dans les GTX 480
* GF104 : il est utilisé dans les GTX 460
* GF106 : il est utilisé dans certaines GT 440, dans les GTS 450
* GF108 : il est utilisé dans les GT 430, certaines GT 440, GT 530, certaines GT 630, certaines GT 730
* GF110 : il est utilisé dans les GTX 560 Ti 448 Core, les GTX 570, les GTX 580 et les GTX 590
* GF114 : il est utilisé dans les GTX 560 Ti et les GTX 560
* GF116 : il est utilisé dans les GTX 550 Ti, GeForce GT 640
* GF119 : il est utilisé dans les GT 520, GeForce 605, GeForce GT 610, GeForce GT 620
* GF117 : gravure 28 nm

### Sous la marque GeForce

| Modèles GeForce | GT 520 | GT 545 | GTX 550 Ti | GTX 560 SE | GTX 560 | GTX 560 Ti | GTX 560 Ti 448 | GTX 570 | GTX 580 | GTX 590 |
| Finesse de gravure | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm |
| Code de la puce | GF119-300 | GF116 | GF116-400 | GF114-200 | GF114-325 | GF114-400 | GF110-270 | GF110-275 | GF110-375 | 2x GF110-351 |
| Surface de la puce | 79 mm² | 238 mm² | 238 mm² | 332 mm² | 332 mm² | 332 mm² | 520 mm² | 520 mm² | 520 mm² | 2x 520 mm² |
| Nombre de transistors | 0.29 G | 1.17 G | 1.17 G | 1.95 G | 1.95 G | 1.95 G | 3.0 G | 3.0 G | 3.0 G | 3.0 G |
| Fréquence GPU (MHz) | 810 | 720 | 900 | 736 | 810 | 823 | 732 | 732 | 772 | 608 |
| Fréquence Shaders (MHz) | 1620 | 1440 | 1800 | 1472 | 1620 | 1645 | 1467 | 1467 | 1544 | 1215 |
| Nb. Cœurs CUDA | 48 | 144 | 192 | 288 | 336 | 384 | 448 | 480 | 512 | 2x 512 |
| Nb. TMU | 8 | 24 | 32 | 48 | 56 | 64 | 56 | 60 | 64 | 2x 64 |
| Nb. ROP | 4 | 16 | 24 | 24 | 32 | 32 | 40 | 40 | 48 | 2x 48 |
| Cache L2 (ko) | 128 | 256 | 384 | 384 | 512 | 512 | 640 | 640 | 768 | 768 |
| Type de mémoire | DDR3 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 |
| Capacité mémoire (Go) | 1 | 1.5 | 1 | 1 | 1 | 1 | 1.28 | 1.28 | 1.5 | 2 x 1.5 |
| Largeur du bus mémoire (bits) | 64 | 128 | 192 | 192 | 256 | 256 | 320 | 320 | 384 | 2 x 384 |
| Débit mémoire (Go/s) | 14.4 | 38.4 | 98.5 | 92 | 128 | 128 | 152 | 152 | 192 | 2 x 164 |
| Fréquence mémoire (MHz) | 900 | 800 | 1026 | 957 | 1000 | 1000 | 950 | 950 | 1000 | 854 |
| Enveloppe thermique (W) | 30 | 70 | 116 | 150 | 150 | 170 | 210 | 220 | 244 | 375 |
| Calcul FP32 | 155 GFLOPS | 415 GFLOPS | 691 GFLOPS | 847 GFLOPS | 1.08 TFLOPs | 1.2 TFLOPs | 1.3 TFLOPs | 1.4 TFLOPs | 1.6 TFLOPs | 2.4 TFLOPs |
| Calcul FP64 | 13 GFLOPS | 34 GFLOPS | 57 GFLOPS | 70 GFLOPS | 90 GFLOPS | 105 GFLOPS | 164 GFLOPS | 176 GFLOPS | 197 GFLOPS | 311 GFLOPS |
| Date de sortie | avril 2011 | mai 2011 | mars 2011 | février 2012 | mai 2011 | janvier 2011 | novembre 2011 | décembre 2010 | novembre 2010 | mars 2011 |

### Sous la marque Quadro

| Modèles | Quadro 600 | Quadro 2000 | Quadro 4000 | Quadro 5000 | Quadro 6000 | Quadro 7000 |
| Finesse de gravure | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm | 40 nm |
| Code de la puce | GF108 | GF106-875 | GF100-825 | GF100-850 | GF100-850 | GF110 |
| Surface de la puce | 116 mm² | 238 mm² | 529 mm² | 529 mm² | 529 mm² | 520 mm² |
| Nombre de transistors | 0.58 G | 1.17 G | 3.1 G | 3.1 G | 3.1 G | 3.0 G |
| Fréquence GPU | 640 MHz | 625 MHz | 475 MHz | 513 MHz | 574 MHz | 651 MHz |
| Fréquence Shaders | 1280 MHz | 1250 MHz | 950 MHz | 1026 MHz | 1157 MHz | 1301 MHz |
| Nb. Cœurs CUDA | 96 | 192 | 256 | 352 | 448 | 512 |
| Nb. unités de texture | 16 | 32 | 32 | 44 | 56 | 64 |
| Nb. ROP | 4 | 16 | 32 | 40 | 48 | 48 |
| Cache L2 | 128 Ko | 256 Ko | 512 Ko | 640 Ko | 768 Ko | 768 Ko |
| Type de mémoire | DDR3 | GDDR5 | GDDR5 | GDDR5 | GDDR5 | GDDR5 |
| Capacité mémoire | 1 Go | 1 Go | 2 Go | 2.5 Go | 6 Go | 6 Go |
| Largeur du bus mémoire | 128 bits | 128 bits | 256 bits | 320 bits | 384 bits | 384 bits |
| Débit mémoire | 25.6 Go/s | 41.6 Go/s | 89.8 Go/s | 120 Go/s | 143.4 Go/s | 177.4 Go/s |
| Fréquence mémoire | 800 MHz | 650 MHz | 702 MHz | 750 MHz | 747 MHz | 924 MHz |
| Enveloppe thermique (TDP) | 40 W | 60 W | 140 W | 150 W | 204 W | 204 W |
| Calcul FP32 | 245 GFLOPS | 480 GFLOPS | 486 GFLOPS | 722 GFLOPS | 1.03 TFLOPS | 1.3 TFLOPS |
| Calcul FP64 | 20 GFLOPS | 40 GFLOPS | 243 GFLOPS | 361 GFLOPS | 518 GFLOPS | 667 GFLOPS |
| Date de sortie | décembre 2010 | décembre 2010 | novembre 2010 | février 2011 | décembre 2010 | mai 2012 |

## Nouvelles gammes

Selon la roadmap de Nvidia, les nouvelles gammes de cartes se nomment respectivement Kepler et Maxwell. Les gains en performance annoncés par le constructeur entre chaque gamme sont :
* 4-6 GFLOPS par watt en double précision pour Kepler
* 15-16 GFlops par watt en double précision pour Maxwell.
L'architecture Maxwell était attendue pour 2013 mais elle ne sera pas utilisée avant 2014.