VLIW
# VLIW

La arquitectura de CPU de palabra de instrucción muy larga (VLIW, del inglés very long instruction word) implementa una forma de paralelismo a nivel de instrucción. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc.) para lograr ese paralelismo.

Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener juegos de instrucciones muy simples en cuanto a número de instrucciones diferentes, pero muy grandes en cuanto al tamaño de cada instrucción. Esto es así porque en cada instrucción se especifica el estado de todas y cada una de las unidades funcionales del sistema, con el objetivo de simplificar el diseño del hardware al dejar todo el trabajo de planificar el código en manos del programador/compilador, en oposición a un procesador superescalar, en el que es el hardware en tiempo de ejecución el que planifica las instrucciones.

Un microprocesador típico VLIW es el IA-64.

## Planificación

Por ejemplo, supongamos el siguiente programa para una máquina superescalar "normal":

En este programa, el planificador de código vería que la segunda instrucción depende de la primera (hasta que no esté calculado R3 no se puede ejecutar la suma), y que en cambio la tercera instrucción es independiente de las otras dos. Por tanto, probablemente iniciaría simultáneamente la multiplicación y la resta en unidades diferentes y, una vez acabada la multiplicación, ejecutaría la suma. Todo este trabajo de planificación lo llevaría a cabo la circuitería interna del microprocesador.

En una máquina VLIW, toda la planificación anterior la haría el compilador (o el propio programador si programa en ensamblador), y el código resultante sería algo así:

Se puede ver como en cada instrucción se especifica el estado de cada unidad funcional, de modo que en la primera instrucción se activan el multiplicador y el restador, dejando el sumador ocioso al no poder calcular aún la suma, y en la siguiente instrucción se hace la suma que faltaba.

## Ventajas

* Simplificación de la arquitectura hardware al no tener que planificar el código.
* Menor potencia y consumo.

## Inconvenientes

* Requiere compiladores mucho más complejos.
* Cualquier mejora en la arquitectura hardware implica un cambio en el juego de instrucciones (compatibilidad hacia atrás nula).

Aunque los inconvenientes hacen las arquitecturas VLIW poco adecuadas para la computación de propósito general, dichos inconvenientes son irrelevantes en la computación embebida. El menor consumo y bajo coste del hardware los hace muy adecuados para dichos sistemas. Podemos encontrar VLIW en TVs HD, discos duros multimedia, reproductores bluray, etc.

## Implementaciones

El microprocesador Elbrús es un microprocesador VLIW ruso de 512 bits desarrollado por el MCST y fabricado por TSMC.

