b'\n_START_ARTICLE_\nVLIW\n_START_PARAGRAPH_\nDel ingl\xc3\xa9s Very Long Instruction Word. Esta arquitectura de CPU implementa una forma de paralelismo a nivel de instrucci\xc3\xb3n. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc) para lograr ese paralelismo._NEWLINE_Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener juegos de instrucciones muy simples en cuanto a n\xc3\xbamero de instrucciones diferentes, pero muy grandes en cuanto al tama\xc3\xb1o de cada instrucci\xc3\xb3n. Esto es as\xc3\xad porque en cada instrucci\xc3\xb3n se especifica el estado de todas y cada una de las unidades funcionales del sistema, con el objetivo de simplificar el dise\xc3\xb1o del hardware al dejar todo el trabajo de planificar el c\xc3\xb3digo en manos del programador/compilador, en oposici\xc3\xb3n a un procesador superescalar, en el que es el hardware en tiempo de ejecuci\xc3\xb3n el que planifica las instrucciones._NEWLINE_Un microprocesador t\xc3\xadpico VLIW es el IA-64.\n_START_SECTION_\nPlanificaci\xc3\xb3n\n_START_PARAGRAPH_\nPor ejemplo, supongamos el siguiente programa para una m\xc3\xa1quina superescalar "normal":_NEWLINE_1 Multiplicar R1 por R2 y guardarlo en R3_NEWLINE_2 Sumar R3 con R4 y guardarlo en R5_NEWLINE_3 Restar R1 de R4 y guardarlo en R6_NEWLINE_En este programa, el planificador de c\xc3\xb3digo ver\xc3\xada que la segunda instrucci\xc3\xb3n depende de la primera (hasta que no est\xc3\xa9 calculado R3 no se puede ejecutar la suma), y que en cambio la tercera instrucci\xc3\xb3n es independiente de las otras dos. Por tanto, probablemente iniciar\xc3\xada simult\xc3\xa1neamente la multiplicaci\xc3\xb3n y la resta en unidades diferentes y, una vez acabada la multiplicaci\xc3\xb3n, ejecutar\xc3\xada la suma. Todo este trabajo de planificaci\xc3\xb3n lo llevar\xc3\xada a cabo la circuiter\xc3\xada interna del microprocesador._NEWLINE_En una m\xc3\xa1quina VLIW, toda la planificaci\xc3\xb3n anterior la har\xc3\xada el compilador (o el propio programador si programa en ensamblador), y el c\xc3\xb3digo resultante ser\xc3\xada algo as\xc3\xad:_NEWLINE_1 MULT(R1,R2,R3)        -       REST(R1,R4,R6)_NEWLINE_2       -        SUM(R3,R4,R5)        -_NEWLINE_Se puede ver como en cada instrucci\xc3\xb3n se especifica el estado de cada unidad funcional, de modo que en la primera instrucci\xc3\xb3n se activan el multiplicador y el restador, dejando el sumador ocioso al no poder calcular a\xc3\xban la suma, y en la siguiente instrucci\xc3\xb3n se hace la suma que faltaba.'