{"id":61201,"date":"2008-06-09T18:34:56","date_gmt":"2008-06-09T16:34:56","guid":{"rendered":"https:\/\/cms.galaxiemedia.fr\/tomshardware\/2008\/06\/09\/nvidia-cuda-la-fin-des-cpu\/"},"modified":"2023-06-23T14:47:23","modified_gmt":"2023-06-23T12:47:23","slug":"nvidia-cuda-la-fin-des-cpu","status":"publish","type":"post","link":"https:\/\/www.tomshardware.fr\/nvidia-cuda-la-fin-des-cpu\/","title":{"rendered":"nVidia CUDA : la fin des CPU ?"},"content":{"rendered":"

Introduction<\/h2>\n

\n<\/span><\/span>Petit retour vers le pass\u00e9. Nous sommes en 2003, depuis plusieurs ann\u00e9es Intel et AMD se livrent une lutte acharn\u00e9e afin d\u2019offrir des microprocesseurs toujours plus puissants. En quelques ann\u00e9es la fr\u00e9quence a rapidement augment\u00e9 du fait de cette concurrence et plus encore sous l\u2019impulsion d\u2019Intel et l\u2019arriv\u00e9e de son Pentium 4. Pourtant cette situation va soudainement arriver \u00e0 son terme : apr\u00e8s avoir b\u00e9n\u00e9fici\u00e9 d\u2019une augmentation de fr\u00e9quence soutenue (entre 2001 et 2003 la fr\u00e9quence des Pentium 4 a ainsi \u00e9t\u00e9 multipli\u00e9e par deux, passant de 1.5 \u00e0 3 GHz) les utilisateurs doivent d\u00e9sormais se contenter de quelques MHz grappill\u00e9s difficilement par les fondeurs (entre 2003 et 2005 la fr\u00e9quence est pass\u00e9e de 3 \u00e0 3.8 GHz).<\/p>\n

M\u00eame les architectures optimis\u00e9es pour les hautes fr\u00e9quences comme le Prescott se sont cass\u00e9es les dents sur ce probl\u00e8me, et pour cause : cette fois il ne s\u2019agissait pas d\u2019un simple d\u00e9fi industriel, les fondeurs venaient tout simplement de se heurter aux lois de la physique. Certains Cassandres se sont mis alors \u00e0 proph\u00e9tiser la fin de la loi de Moore mais c\u2019\u00e9tait loin d\u2019\u00eatre le cas. Bien qu\u2019elle ait souvent \u00e9t\u00e9 d\u00e9tourn\u00e9e de son sens initial, le v\u00e9ritable sujet de la loi de Moore concerne le nombre de transistors sur une surface de silicium donn\u00e9e. Pendant longtemps la croissance du nombre de transistors des CPU s\u2019est certes accompagn\u00e9e d\u2019une augmentation de performance dans le m\u00eame temps, ce qui explique sans doute la confusion. Mais d\u00e9sormais les choses allaient se montrer plus compliqu\u00e9es : les architectes qui concevaient les CPU se heurtaient \u00e0 la loi des rendements d\u00e9croissants. Le nombre de transistors \u00e0 ajouter pour obtenir un gain de performance donn\u00e9 devenait de plus en plus important et menait tout droit dans une impasse.<\/p>\n

<\/span><\/span><\/p>\n

Pendant ce temps\u2026<\/h2>\n

\nPendant que les fabricants de CPU se creusaient la t\u00eate pour trouver une solution \u00e0 leurs probl\u00e8mes, les fabricants de GPU continuaient \u00e0 b\u00e9n\u00e9ficier plus que jamais des avantages de la loi de Moore.<\/p>\n

<\/span><\/p>\n

Pourquoi n\u2019\u00e9taient ils pas handicap\u00e9s comme leurs confr\u00e8res qui concevaient des CPU ? Pour une raison toute simple : les CPU sont con\u00e7us pour tirer le maximum de performances d\u2019un flux d\u2019instructions, celui-ci op\u00e8re sur des donn\u00e9es diverses (entiers, flottants), effectue des acc\u00e8s m\u00e9moire al\u00e9atoires, des branchements\u2026 Jusqu\u2019ici les architectes cherchaient \u00e0 extraire d\u2019avantage de parall\u00e9lisme d\u2019instructions, c\u2019est-\u00e0-dire \u00e0 lancer le plus d\u2019instructions possibles en parall\u00e8le. Ainsi le Pentium a introduit l\u2019ex\u00e9cution superscalaire en permettant de lancer, sous certaines conditions, deux instructions enti\u00e8res par cycle. Le Pentium Pro a pour sa part apport\u00e9 l\u2019ex\u00e9cution des instructions dans le d\u00e9sordre afin d\u2019utiliser au mieux les unit\u00e9s d\u2019ex\u00e9cution. Le probl\u00e8me est qu\u2019il ya une limite au parall\u00e9lisme qu\u2019il est possible d\u2019extraire d\u2019un flux s\u00e9quentiel d\u2019instructions. Par cons\u00e9quent, augmenter aveugl\u00e9ment le nombre d\u2019unit\u00e9s d\u2019ex\u00e9cution est vain car elles resteront pour la plupart inutilis\u00e9es la majeure partie du temps.<\/p>\n

A l\u2019inverse le fonctionnement d\u2019un GPU est on ne peut plus simple : le travail consiste \u00e0 prendre un ensemble de polygones d\u2019un c\u00f4t\u00e9 et \u00e0 g\u00e9n\u00e9rer un ensemble de pixels de l\u2019autre. Les polygones et les pixels sont ind\u00e9pendants les uns des autres et peuvent donc \u00eatre trait\u00e9 par des unit\u00e9s parall\u00e8les. Un GPU peut donc se permettre de consacrer une grosse quantit\u00e9 de son die \u00e0 des unit\u00e9s de calcul qui, \u00e0 l\u2019inverse de celles d\u2019un CPU seront effectivement utilis\u00e9es.<\/p>\n

<\/span><\/span><\/p>\n

Autre point de divergence entre les deux unit\u00e9s : les acc\u00e8s m\u00e9moire d\u2019un GPU sont extr\u00eamement coh\u00e9rents : lorsqu\u2019un texel est lu, quelques cycles plus tard on lira le texel voisin, de la m\u00eame fa\u00e7on lorsqu\u2019un pixel est \u00e9crit quelques cycles plus tard un pixel voisin sera \u00e9crit. En organisant la m\u00e9moire de fa\u00e7on intelligente les performances se rapprochent fortement de la bande passante th\u00e9orique. Un GPU \u00e0 l\u2019inverse d\u2019un CPU n\u2019a donc pas besoin d\u2019un \u00e9norme cache, son r\u00f4le est principalement destin\u00e9 \u00e0 acc\u00e9l\u00e9rer les op\u00e9rations de texturing : quelques Ko sont donc suffisants pour contenir les quelques texels utilis\u00e9s dans les filtres bilin\u00e9aire ou trilin\u00e9aire.<\/p>\n

<\/span><\/span><\/p>\n

Vive le GeForce FX !<\/h2>\n

Ces deux mondes sont donc rest\u00e9s \u00e9trangers l\u2019un \u00e0 l\u2019autre pendant longtemps : on travaillait avec un (ou plusieurs) CPU, le GPU n\u2019\u00e9tait bon qu\u2019\u00e0 produire de jolies images rapidement. Mais un \u00e9v\u00e8nement va venir bouleverser tout \u00e7a : l\u2019apparition de la programmabilit\u00e9 dans les GPU. Encore une fois initialement il n\u2019y a pas lieu de s\u2019inqui\u00e9ter pour les CPU : les premiers GPU vant\u00e9s comme programmables (NV20, R200) sont loin d\u2019\u00eatre une menace : le nombre d\u2019instructions pour un programme reste limit\u00e9 \u00e0 une dizaine et ils travaillent sur des types de donn\u00e9es exotiques : 9 ou 12 bits \u00e0 virgule fixe.<\/p>\n

<\/span><\/span><\/p>\n

Mais la loi de Moore va encore faire son \u0153uvre : non seulement l\u2019augmentation du nombre de transistors permet d\u2019augmenter le nombre d\u2019unit\u00e9s de calcul mais elle permet \u00e9galement d\u2019augmenter leur flexibilit\u00e9. L\u2019apparition du NV30 va donc \u00eatre marquante \u00e0 plusieurs \u00e9gards. S\u2019il s\u2019agit d\u2019un GPU qui ne restera pas dans les annales pour les joueurs, il va apporter deux \u00e9l\u00e9ments importants pour commencer \u00e0 consid\u00e9rer le GPU autrement que comme un b\u00eate acc\u00e9l\u00e9rateur graphique :<\/p>\n