En el presente artículo nos adentraremos en el mundo de VLIW, explorando sus distintas facetas y significados. VLIW despierta un interés constante en la sociedad, ya sea por su impacto en la historia, su relevancia en el presente o su proyección hacia el futuro. A lo largo de estas líneas, nos sumergiremos en un análisis detallado de VLIW, examinando sus orígenes, evolución y posibles implicaciones. Ya sea que se trate de una figura icónica, un fenómeno cultural o un acontecimiento relevante, VLIW despierta el interés de especialistas y aficionados por igual, brindando un terreno fértil para la reflexión y el debate.
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.
Por ejemplo, supongamos el siguiente programa para una máquina superescalar "normal":
1 Multiplicar R1 por R2 y guardarlo en R3 2 Sumar R3 con R4 y guardarlo en R5 3 Restar R1 de R4 y guardarlo en R6
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í:
1 MULT(R1,R2,R3) - REST(R1,R4,R6) 2 - SUM(R3,R4,R5) -
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.
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.
El microprocesador Elbrús es un microprocesador VLIW ruso de 512 bits desarrollado por el MCST y fabricado por TSMC.