Algorithme d'ordonnancement dynamique pour exécution statique
Devant la complexité croissante des applications embarquées, le gain en performances des systèmes associés est crucial et doit respecter des contraintes de coût et de consommation. Les performances des architectures VLIW utilisées dans ces systèmes dépendent du parallélisme d'instructions déduit statiquement. Aussi, la disponibilité d'un compilateur performant est critique pour le développement de ces derniers. Nous présentons ici une nouvelle approche pour optimiser rapidement n'importe quel programme et extraire du parallélisme d'instructions pour un processeur VLIW quelconque en cours de développement ou déjà commercialisé. Le compilateur matériel, qui implémente cette nouvelle approche, utilise un simulateur de l'architecture VLIW cible qui est ensuite modifié pour intégrer un algorithme dynamique d'ordonnancement des instructions. Le binaire est exécuté sur ce simulateur et les ordonnancements observés sont ensuite utilisés pour réordonner le code et l'optimiser. Cette approche a été testée sur les codes entiers des SPEC 2000 et elle permet d'obtenir des accélérations de l'ordre de 20 %.
With the growing complexity of embedded applications, the associated systems performance are becoming more and more crucial and should be increased as much as possible while keeping costs low. The performance of VLIW architectures rely on static exploitation of instruction level parallelism. This implies that the availability of an optimizing compiler is crucial in their design. We introduce a new approach that is aimed at quickly optimizing any program for any VLIW processor. The hardware compiler uses a simulator of the target VLIW processor enhanced with a dynamic scheduling algorithm. The binary is executed on this simulator and the dynamic schedule is then used to re-order the original code and optimize it. This method has been tested on integer codes from the SPEC 2000 and experimental results show a performance increase of about 20 % on these codes.
M.DUPRÉ, N.DRACH
Reçu le 9 octobre 2002.
Accepté le 24 mars 2003.
VLIW, ordonnancement statique, parallélisme d'instructions, performance, algorithme de Tomasulo, simulation.
VLIW, static scheduling, performance, instruction level parallelism, Tomasulo algorithm, simulation.
Français
|