PrécédentSommaire

Déstructuration

Les compilateurs destinés aux processeurs VLIW nécessitent des optimisations particulières pour ne pas gaspiller les possibilités offertes par ces matériels. En effet, comme à certains endroits du code il ne sera pas possible de trouver beaucoup d'instructions à exécuter en parallèle, il peut être judicieux d'en "remonter" d'autres pour les traiter de façon anticipée. Si elles correspondent à une portion du programme où il faut effectivement passer les résultats sont déjà là, sinon ce n'est qu'un espace vide qui a été rempli sans aucune perte de performances.

Sauf qu'une telle méthode peut tout de même provoquer des anomalies. Par exemple, si la portion déplacée contient un accès à une position n d'un tableau et qu'elle doit être exécutée ou non en fonction d'un test sur l'indice n lui-même, son traitement prématuré peut générer une exception qui arrêtera le programme parce que la lecture se fera en dehors des limites du tableau. Pour ne pas s'encombrer de trop de restrictions il faut donc un système d'exceptions retardées pour signaler ce genre de problèmes, mais seulement s'ils auraient bien eu lieu avec une architecture séquentielle classique (puisque quasiment tous les langages de programmation sont basés implicitement sur l'architecture de von Neumann).

Des optimisations supplémentaires compliquent évidemment les compilateurs mais ce n'est pas le seul inconvénient apporté par le VLIW. Les processeurs sont "allégés" au maximum et par rapport aux machines superscalaires (déjà classiques) le travail de parallélisation est déplacé du moment de l'exécution à celui de la génération de code. Cela signifie que là où un effort unique était fait pour valider le fonctionnement complet d'un microprocesseur fourni aux concepteurs de compilateurs, ce seront ces derniers qui devront chacun travailler plus pour s'assurer de donner des résultats exacts. Bien que le logiciel soit plus facile à modifier que le matériel, la multiplicité des programmes concurrents peut de cette façon amener à une augmentation des bugs y subsistant. A moins que l'architecture VLIW ne soit tellement sensible à ce genre d'ennuis que même s'il y a plus d'erreurs au début de leur développement celles-ci ne pourront pas passer inaperçues jusqu'à la phase finale en plus grand nombre qu'auparavant. Il est probable que seul l'avenir le dira.