Les cartes mères
Les cartes mères
Les cartes mères
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Une voie possible de parallélisme dans un<br />
moteur de jeu consiste à se dire que l’on ne<br />
va pas attendre qu’un sous-système ait fini<br />
son travail pour démarrer ceux qui en<br />
dépendent, ceux-ci vont juste travailler avec<br />
les derniers résultats disponibles.<br />
son travail pour démarrer ceux qui en<br />
dépendent, ceux-ci vont juste travailler<br />
avec les derniers résultats disponibles<br />
au moment de leur démarrage. <strong>Les</strong><br />
résultats définitifs ne seront alors utilisés<br />
qu’à l’itération suivante. Cela n’est<br />
possible qu’en concevant les sous-systèmes<br />
de façon à ce que leur tâche<br />
puisse être découpée en plusieurs<br />
étapes, chacune d’elle effectuant une<br />
nouvelle mise à jour dans les données «<br />
globales », qui seront utilisées par les<br />
autres sous-systèmes.<br />
Ainsi, à titre d’exemple, on peut imaginer<br />
que le moteur de simulation de la<br />
physique n’attende pas que toutes les<br />
collisions aient été résolues, mais récupère<br />
les dernières informations disponibles<br />
fournies par le sous-système de<br />
collision. On supprime ainsi les attentes<br />
entre les différents sous-systèmes,<br />
mais il faut cependant s’assurer de la<br />
cohérence des échanges entre les<br />
sous-systèmes. Si le module de collision<br />
met à jour une position, pas question<br />
que le module de physique ne la<br />
récupère avant qu’elle soit complètement<br />
mise à jour. Cette méthode<br />
nécessite donc un nouveau sous-système<br />
dont le seul rôle est d’assurer la<br />
synchronisation des différents soussystèmes,<br />
et d’éviter ainsi les conflits.<br />
Plus facile à dire qu’à faire, car en pratique<br />
la décomposition et la synchronisation<br />
des sous-système est un vrai<br />
casse-tête. Qui plus est le processus<br />
n’est pas gratuit, car la nécessité d’un<br />
sous-système dédié à la gestion et à la<br />
synchronisation des sous-systèmes<br />
signifie un travail supplémentaire du<br />
processeur. Si cette gestion est compensée<br />
par la puissance de calcul d’un<br />
processeur multi-core, il implique en<br />
revanche une charge de travail non<br />
négligeable pour un processeur monocore<br />
… ainsi, un moteur de jeu multithreads<br />
tournera sans problème sur un<br />
Le schéma classique d’un moteur de jeu regroupe les sous-systèmes principaux dans un thread.<br />
Le rendu graphique peut s’effectuer de façon asynchrone, étant en grande partie pris en charge par le GPU.<br />
Voici une approche possible d’un moteur multi-threadé. Un thread est affecté à chaque sous-système,<br />
et un sous-système de contrôle assure la synchronisation, afin d’éviter les conflits d’accès aux données entre les<br />
différents threads. Chaque sous-système peut alors tourner à sa fréquence propre, dépendant des besoins du moteur,<br />
mais également de la puissance CPU disponible.<br />
L’avis de l’expert<br />
Lors d’une interview en août 2005, Gabe Newel, responsable de Valve et programmeur<br />
principal d’Half Life 2, clamait que les développeurs devaient craindre l’avènement du dualcore.<br />
Selon lui, la conception d’un moteur de jeu multi-core fait encore l’objet de recherches<br />
et que tous les problèmes ne sont pas encore résolus.<br />
<strong>Les</strong> processeurs multi-core ne concernent pas que le monde du PC, ainsi le processeur de<br />
la X-Box 360, le Xenon, comporte trois cores, et le processeur Cell de la future PS3 va encore<br />
plus loin avec pas moins de 8 cores DSP (Digital Signal Processor). Malgré cela, dans cette<br />
même interview, Gabe Newel se montre peu optimiste quant à la pérennité du multi-core, ce<br />
qui ne justifie pas d’y consacrer tant d’efforts. Le multi-core, une mode passagère ?<br />
processeur mono-core, mais plus lentement<br />
que ne le ferait un moteur monothread<br />
! Cela peut en partie expliquer la<br />
réticence qu’ont les développeurs à<br />
paralléliser leur moteur de jeu dans l’immédiat,<br />
car la grande majorité des systèmes<br />
actuels utilise encore un processeur<br />
mono-core.<br />
DAVANTAGE DE SOUPLESSE<br />
Le développement d’un moteur multithreadé<br />
est en revanche très pertinent à<br />
terme. Avec la multiplication du nombre<br />
de cores, le gain de performance qui en<br />
découle se fait de façon totalement<br />
transparente, sans qu’il soit besoin d’apporter<br />
la moindre modification au moteur.<br />
Plutôt rentable sur le long terme !<br />
En outre, l’intérêt d’un moteur de jeu<br />
multi-threadé ne se limite pas à la seule<br />
exploitation du multi-core. Le découpage<br />
des sous-systèmes et leur séparation<br />
dans différents threads permet une grande<br />
souplesse en comparaison à un<br />
moteur mono-thread. En effet, il devient<br />
alors possible de faire tourner les différents<br />
sous-systèmes avec des fréquences<br />
de rafraîchissement différentes.<br />
Un moteur de jeu multi-threads<br />
tournera sans problème sur un<br />
processeur mono-core, mais<br />
plus lentement que ne le ferait<br />
un moteur mono-thread !<br />
PC Update mars / avril 06