Se connecter avec
S'enregistrer | Connectez-vous

Larrabee côté software

Larrabee côté software
Par

Comme nous l’avons vu dans la première partie de notre dossier, Larrabee n’est pas vraiment un GPU. Par conséquent son mode de fonctionnement est assez particulier notamment au niveau de son driver. Le driver d’un GPU traditionnel est en général séparé en deux modules, un module de haut niveau qui communique avec l’API 3D (Direct3D ou OpenGL) et un module de bas niveau commun aux diverses API qui se charge de réaliser la programmation de la puce à proprement parler. En général on retrouve un mapping quasiment 1:1 entre les fonctions de l’API et les fonctions offertes par la puce, la programmation de cette dernière consiste donc à positionner les registres correspondants aux appels d’API aux bonnes valeurs. En soit ça n’est pas très compliqué mais toute la difficulté de faire un bon driver réside dans le fait d’optimiser au mieux le code pour éviter les changements redondants des valeurs de ces registres car cela reste une opération coûteuse, le tout bien sûr sans introduire de bugs ce qui n’est pas une mince affaire quand on voit la tonne d’états différents qui contrôlent le rendu. L’introduction des shaders a également compliqué la donne puisque désormais les drivers doivent contenir de véritables compilateurs pour transformer le code générique en code spécifique à la puce.

Comme nous l’avons vu Larrabee ne comporte que très peu d’unités fixes par conséquent on ne retrouve pas ce mapping 1:1 entre les appels d’API et des registres sur la puce contrôlant l’état du rendu. Le driver de Larrabee n’en est donc pas vraiment un à proprement parler : on retrouve la couche qui fait l’interface avec les API de haut niveau, et qui se charge de la communication CPU-Larrabee via l’interface PCI Express mais c’est ensuite que les choses divergent par rapport à un GPU classique. Au sein du driver on trouve en effet un moteur de rendu purement logiciel qui tourne sur les cœurs de Larrabee.

En d’autres termes le driver de Larrabee est plus proche des moteurs 3D d’il y a une dizaine d’années comme ceux de Quake ou Unreal : on ne trouve pas sur Larrabee de fonction câblée pour rastériser un triangle comme sur les GPU, c’est donc un bout de code extrêmement optimisé et tournant sur les cœurs de Larrabee qui s’en charge. Mais évidemment depuis l’époque de Quake qui était prévu pour tourner au mieux sur un simple Pentium à une centaine de MHz et les capacités de Larrabee, il y a un monde, aussi ce moteur 3D qui a été spécialement conçu pour exploiter les forces de Larrabee mérite qu’on s’y intéresse de plus près.