03.07.2013 Views

Les cartes mères

Les cartes mères

Les cartes mères

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!