Home Dossiers et tutos Hardware Nvidia Fermi : l'architecture - Streaming Multiprocesseur

01

Oct

2009

Nvidia Fermi : l'architecture - Streaming Multiprocesseur

Écrit par sirius   
Hits

Troisième génération de Streaming Multiprocesseur

 

fermi-cuda-core

La troisième génération SM introduit plusieurs innovations au sein de l’architecture

512 CUDA cores Haute Performance

Chaque SM dispose de 32 processeurs CUDA une concentration quatre fois supérieure au design SM précédent.

Chaque processeur CUDA dispose d’une unité logique arithmétique sous pipeline pour les entiers (ALU) ainsi qu’une unité pour virgule flottante (FPU).

A la différence, qu’au préalable les GPUs utilisaient le standard pour l’arithmétique à virgule flottante de type IEEE 754-1985. L’architecture Fermi utilise le nouveau standard IEEE 754-2008 disposant de l’instruction multiplication-addition (FMA) fusionnée pour simple et double précision arithmétique.

FMA améliore les instructions multiplication-addition (MAD) avec une simple étape finale sans perte de précision dans l’addition. FMA est plus précis que l’exécution des opérations séparées. Pour mémoire le GT200 disposait d’une double précision FMA.

A contrario du GT200 dont la valeur de l’entier ALU était limité à 24-bit de précision pour les opérations de multiplications, Fermi supporte pleinement 32bit de précision pour toutes les instructions, en accord avec les pré-requis des langages de programmation.

Le ALU est optimisé pour les opérations 64-bit et à précision étendu. Beaucoup d’autres sont supportées, comme : Boolean ; shift ; move ; compare ; convert ; bit-field extract ; bit-reverse insert et population count.

16 Unités de chargement/stockage

Chaque SM a 16 unités de chargement/stockage, ce qui permet un calcul de l’allocation des adresses source et destination pour 16 tâches par cycles Supportant par unités la charge et le stockage des données à chaque adresses du cache ou de la DRAM.

Quatre unités de fonctions spéciales

Les « Spécial Function Units (SFUs) exécutent les instructions comme sin, cosine, reciprocal et racine carré. Chaque SFU exécute une instruction par tâche, par cycle ; un ensemble s’exécute sur huit horloges. Le pipeline SFU est découplé de l’unité de répartition (dispatch), ce qui permet à l’unité de répartition de transmettre à une autre unité d’exécution pendant que le SFU est occupé.

Conçu pour la double précision

L’arithmétique à double précision est le cœur des applications HPC comme l’algèbre linéaire, la simulation numérique et la chimie quantique. L’architecture Fermi a été spécialement désignée pour offrir des performances sans précédent dans la double précision ; jusqu'à 16 opérations multiplication-addition fusionnées peuvent être exécutées par SM, par cycle, un bon en avant par rapport au GT200.

fermi-double-precision

Planificateur Dual Warp

Le SM planifie les tâches en groupe de 32 tâches parallèles appelés « warps » (chaînes). Chaque SM dispose de deux planificateurs warp et de deux instructions d’unités de répartition, ce qui permet à deux warps d’êtres assigné et exécutées en même temps.

Le planificateur double du Fermi sélectionne deux warps et assigne une instruction pour chacun des warp à un groupe de 16 cores, 16 unités de chargement/stockage, ou quatre SFUs.

Parce que les warps s’exécutent indépendamment, le planificateur du Fermi n’a pas besoin de vérifier les dépendances du flux d’instruction. En utilisant ce modèle de double-assignation, Fermi réussie des pointes de performances.

fermi-warp-scheduler

Beaucoup d’autres instructions peuvent être doublement assignées.

64KB de mémoire partagée configurable et cache L1

Un des points clé de l’architecture qui permet une grande amélioration aussi bien pour les performances que pour les applications GPU c’est la mémoire partagée on-chip (sur-puce).

La mémoire partagée permet aux tâches au sein d’un même bloc de tâches de coopérer, faciliter la réutilisation des données on-chip et de grandement réduire le traffic off-chip et donc d’économiser de l’énergie.

La mémoire partagée est l’élément déterminant pour beaucoup d’applications hautes performances CUDA.

A titre de comparaison le G80 et le GT200 ont 16KB de mémoire partagée par SM. Dans l’architecture Fermi, chaque SM a 64KB de mémoire on-chip qui peuvent être configurés à 48KB de mémoire partagée avec 16KB de cache de niveau 1 (L1) ou a 16KB de mémoire partagée avec 48KB de cache L1.

De par le triplement des yields de mémoire partagée, les applications gourmandes en mémoire partagée se retrouvent avec des améliorations de performances significatives.

En fait, les applications et logiciels comme les gestionnaires de cache, peuvent prendre avantage du cache hardware, pendant qu’ils peuvent toujours accéder au 16KB de mémoire partagée.

Encore plus fort, les applications qui n’utilisent pas la mémoire partagée, bénéficient automatiquement du cache L1, permettant la construction de programmes CUDA haute performance en un minimum de temps et d’efforts.

Résumé

fermi-specs

 

Articles

Test Danger Den Double Wide Tower - 21 Black Series Edition

Test Danger Den Double Wide Tower - 21 Black Series Edition

Aujourd'hui nous allons tester le boîtier Danger Den Double Wide Tower...

Lire la suite

Test Asus Sabertooth X58

Test Asus Sabertooth X58

Asus que l’on ne présente plus, met à jour sa gamme...

Lire la suite

GOOC 2010 France : La Finale !

GOOC 2010 France : La Finale !

C'est la finale du GOOC 2010 France. Et c'est parti ! Notre...

Lire la suite
HitParade