Processeur VLIW
Un article de Wikipédia, l'encyclopédie libre.
VLIW, initiales de Very Long Instruction Word en anglais, dénote une famille d'ordinateurs dotés d'un processeur à mot d'instruction très long (couramment supérieur à 128 bits).
Sommaire |
[modifier] Principe
Sur ces processeurs, chaque instruction peut faire 128, 256 bits de long, voire plus. Sont codés à l'intérieur de ces instructions les opérations à effectuer par les différentes unités de calcul disponible dans l'unité centrale.
Il est de la responsabilité du compilateur de générer un code qui prend en compte la disponibilités des ressources et ne provoque pas de problèmes matériel lors de son exécution.
Un mot VLIW est parfois appelé un bundle, selon l'architecture. Chaque bundle peut contenir plusieurs instructions. Ces instructions sont positionnées à un certain emplacement du bundle : un slot. En général chaque slot correspond à un type d'instruction, c'est-à-dire que le compilateur ne peut pas affecter à un slot dédié aux instructions arithmétiques entières une multiplication flottante, par exemple.
[modifier] Exemple
Prenons un exemple de source en assembleur VLIW pour illustrer le problème d'affectation des ressources. Le processeur pour lequel on génère du code n'a que 4 unités : une unité de calcul sur des entiers, une unité flottante, une unité de chargement/rangement (accès mémoire), et une unité de branchement (un mot VLIW ne pourra contenir plus de 4 instructions) :
Code source :
... I1 ADD R1, R1, -2 I2 FMUL R2, R1, 10 I3 STORE R3, #100 I4 JE R2, FinCode I5 LOAD R4, R1(4) ...
On voit ici une dépendance de type RAW (Read After Write, lecture après écriture), qui empêche d'exécuter I2 en même temps que I1. En revanche on peut paralléliser I1 et I3, car il n'y a pas de dépendance et parce qu'elles n'utilisent pas les mêmes ressources matérielles (l'unité entière pour I1 et l'unité de branchement pour I2).
Le compilateur produira le mot machine suivant :
L'exécution de ce mot se fera de la manière suivante :
Le fait que le processeur ne réorganise pas les données qu'il va exécuter le caractérise comme étant un processeur in-order (dans l'ordre).
Le compilateur a donc la charge d'organiser correctement les instructions parmi les bundles, tout en respectant les types de dépendances habituelles (aléa de donnée, etc.) qui sont normalement gérées au niveau matériel par les architectures classiques (en général via l'algorithme de Tomasulo).
Outre les instructions classiques (celles qui seront exécutées), le compilateur doit « remplir les slots vides du bundle » pour que chaque mot ait la taille idoine (128, 256, 384 bits). Pour ce faire il y place des instructions ne faisant rien (NOP, pour No Operation), comblant ainsi les emplacements vides.
La faible densité de code résultant de ces instructions très longue peut être compensée par une décompression à la volée du code au moment de son exécution.
[modifier] Pipeline interne
Ces architectures dépendent aussi d'un pipeline interne, dont on peut représenter la façon dont sont exécutées les opérations :
[modifier] Implémentations commerciales
La première machine utilisant cette architecture a été produite par la société Multiflow entre les années 1984 à 1985. Malheureusement seules quelques centaines de machines ont été vendues, et la concurrence des processeurs RISC tua le concept à ce moment là. Le modèle 7/300 possède des instructions de 256 bits, soit 8 groupes de 32 bits.
Cydrome connu le même sort avec son modèle Cydra-5, à mots de 256 bits codant 6 opcodes de 40 bits.
Plus récemment divers microprocesseurs utilisent les concepts du VLIW, comme le TriMedia de Philips, le Crusoe de Transmeta (128 bits), et même l'Itanium, du fondeur Intel (en fait il s'agit d'une architecture spéciale car les mots machines renseignent le compilateur sur les dépendances inter-instructions, et permettent de procéder à une exécution out-of-order). Les études menées lors de la conception de ces machines ont tout de même laissé un héritage non négligeable dans le domaine de la compilation.
[modifier] Historique
On peut rapprocher les machines VLIW aux processeurs microprogrammés horizontalement, très en vogue dans les années 1960 - 1970 à travers les mainframes IBM 360 et 370 par exemple.
[modifier] Références
[modifier] Liens internes
[modifier] Liens externes
- Reservoir Labs la société crée par les employés de Multiflow.