Salut les gars,
VLIW, ça veut dire Very Long Instruction Word.
Les deux coprocesseurs vectoriels fonctionnent avec cette méthode.
Chaque ligne de code est double. C'est-à-dire que le coprocesseur est en mesure d'effectuer deux instructions en même temps. En plus, ces coprocesseurs (et le main cpu aussi en passant) sont SIMD. Single Instruction Multiple Data. Ce qui veut dire que qu'avec une instruction, on peut traiter plusieurs données.
Pour résumer, ça veut dire que, par exemple, avec une ligne de code, on peut faire :
- 4 multiplications / additions en float (upper instruction)
- loader les 4 prochaines valeurs (lower instruction)
C'est bin cool...
Ça donne de quoi du genre :
Code :
LOOP1:
MULw.xyzw VF29, VF31, VF00w DIV Q, VF00w, VF31w
MULAx.xyzw ACC, VF08, VF26x LQI.xyzw VF25, (VI07++)
MADDAy.xyzw ACC, VF09, VF26y LQI.xyzw VF30, (VI06++)
MADDAz.xyzw ACC, VF10, VF26z IADDIU VI14, VI14, 3
MADDw.xyzw VF24, VF11, VF26w IADDI VI11, VI11, -1
[...]
Heureusement, on a besoin de programmer comme ça juste pour les boucles critiques, une cinquantaine de lignes au max.
Bon, je retourne analyser les exemples...
Ciao.