VLIW, initiales de very long instruction word en anglais, traduit littéralement par « mot d'instruction très long », dénote une famille d'ordinateurs dotés d'un processeur à mot d'instruction très long (couramment supérieur à 128 bits).
VLIW est une technologie reportant une partie de la gestion du pipeline d'exécution d'un processeur dans les compilateurs. Cette technologie, semblable à l'EPIC proposée par l'Itanium d'Intel va donc fournir une instruction longue qui sera une agrégation d'instructions courtes indépendantes.
Sur ces processeurs, chaque instruction peut faire 128, 256 bits de long, voire plus. Sont codées à l'intérieur de ces instructions les opérations à effectuer par les différentes unités de calcul disponibles dans l'unité centrale.
Il est de la responsabilité du compilateur de générer un code qui prend en compte la disponibilité des ressources et ne provoque pas de problèmes matériels 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 une multiplication flottante à un slot dédié aux instructions arithmétiques entières, par 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.