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.
Pratique<br />
DUAL CORE, 64 BITS<br />
LA LOI D’AMDAHL<br />
Le gain de performance engendré par la parallélisation d’un programme en vue de lui faire exploiter<br />
plusieurs processeurs peut être évalué grâce à la loi d’Amdahl. Cette loi se base sur le fait qu’une partie<br />
seulement du traitement peut être parallélisée, le reste devant s’effectuer de façon séquentielle. La loi<br />
s’énonce ainsi :<br />
• « Temps parallèle » est le temps d’exécution avec parallélisation.<br />
• « Temps série » est le temps d’exécution sans parallélisation.<br />
• « %s » est la portion du programme qui s’exécute en série, (1-%s) la portion qui s’exécute en parallèle.<br />
• N est le nombre de processeurs.<br />
L’accélération induite par la parallélisation est donc :<br />
Considérons par exemple que 70% du moteur de jeu peut être parallélisé (%s = 30/100). L’accélération<br />
avec deux processeurs vaut alors 1,54, soit un gain théorique de 54%. Le graphe suivant nous montre<br />
l’évolution du gain de performance en fonction du nombre de processeurs présents, et ce pour un code<br />
parallélisé à 70% et un code parallélisé à 80%.<br />
Performance (en %)<br />
500<br />
450<br />
400<br />
350<br />
300<br />
250<br />
200<br />
150<br />
Loi d'Amdahl - Evolution de la performance en fonction du nombre de processeurs<br />
100<br />
1 2 4 8 16 32 64<br />
Evolution de la performance en fonction du nombre de processeurs<br />
Il apparaît un phénomène intéressant : avec deux et quatre processeurs, une parallélisation de 70% du<br />
code offre des gains proches de ceux obtenus avec un code parallélisé à 80%. A partir de 8 processeurs<br />
en revanche, il devient nécessaire d’augmenter la quantité de code parallélisé afin de conserver un gain<br />
notable. Ainsi, les configurations actuelles à deux cores (voire celles à quatre cores qui arriveront bientôt)<br />
peuvent se contenter d’une parallélisation partielle tout en fournissant un bon gain de performance.<br />
le moteur physique, le moteur de collisions,<br />
la gestion des particules, le<br />
moteur d ‘intelligence artificielle. La<br />
parallélisation « intra-frame » consiste<br />
alors à s’efforcer de traiter simultanément<br />
ces sous-systèmes, mais là encore<br />
ce n’est pas chose facile.<br />
En effet, ces sous-systèmes possèdent<br />
de fortes interactions, et cela se conçoit<br />
aisément : le résultat de l’IA reposition-<br />
PC Update mars / avril 06<br />
70% du code parallélisé 80% du code parallélisé<br />
Nombre de processeurs<br />
ne les objets, qui seront soumis à<br />
d’éventuelles collisions, créant donc de<br />
nouvelles composantes dans le moteur<br />
physique, qui va ainsi modifier les positions,<br />
utilisées par l’étape d’IA du calcul<br />
de l’image suivante … et ainsi de suite.<br />
Dépendance temporelle donc, mais<br />
également de données, certaines pouvant<br />
être partagées par plusieurs sous-<br />
systèmes. Difficile dans ce contexte de<br />
concevoir un fonctionnement simultané<br />
des sous-systèmes.<br />
A ce stade, deux choix s’offrent aux<br />
développeurs du moteur de jeu. Le<br />
choix facile, rapide, consiste à utiliser la<br />
puissance de calcul disponible du<br />
second core à d’autres fins, en ajoutant<br />
par exemple des effets spéciaux<br />
(visuels et sonores). Le noyau même du<br />
moteur reste affecté à un seul processeur,<br />
et donc le nombre d’image par<br />
secondes ne change pas par rapport à<br />
la version mono-processeur. Le jeu est<br />
plus joli, mais pas plus fluide.<br />
L’avantage de cette méthode est de ne<br />
presque pas toucher au noyau monothread<br />
du moteur existant, et permet<br />
ainsi de créer une version dual-core<br />
rapidement, et pour un coût modeste.<br />
En revanche, si le jeu peine à tourner de<br />
façon fluide sur un processeur monocore,<br />
l’ajout du second core n’y changera<br />
rien. Pire encore, le jeu sera bien<br />
souvent moins fluide, car les processeurs<br />
dual-core sont en général cadencés<br />
à des fréquences inférieures à<br />
celles de leur pendant mono-core. Le<br />
joueur se retrouve donc avec un jeu<br />
plus joli, mais moins fluide.<br />
L’autre solution consiste à refondre le<br />
moteur de jeu afin de lui faire bénéficier<br />
des cores présents. Refondre est un<br />
terme optimiste, et revient en pratique à<br />
refaire complètement le moteur de jeu,<br />
ce qui demande du temps et engendre<br />
un coût non négligeable. Le jeu en vaut<br />
la chandelle cependant, car le gain de<br />
performance peut s’avérer plus qu’intéressant.<br />
Si 70% des routines du moteur<br />
profitent d’une exécution en parallèle, le<br />
gain de performance dépasse 50%<br />
avec deux processeurs (voir encadré «<br />
Loi d’Amdahl »). La politique actuelle<br />
des constructeurs de microprocesseurs<br />
tend à multiplier les core d’exécution,<br />
ce qui ne pourra que bénéficier à des<br />
moteurs de jeu multi-threadés.<br />
Gageons que les processeurs quadcore<br />
arriveront avant longtemps sur nos<br />
PC, et la loi d’Amdahl nous permet de<br />
prédire un gain de performance de<br />
110%, soit un frame rate multiplié par<br />
deux environ.<br />
PARALLÉLISER<br />
L’IMPARALLÉLISABLE<br />
Concevoir un moteur de jeu multithreadé<br />
n’est cependant pas chose<br />
facile, du fait des dépendances entre<br />
les sous-systèmes.<br />
Une voie possible de parallélisme<br />
consiste à se dire que l’on ne va pas<br />
attendre qu’un sous-système ait fini