Vous êtes sur la page 1sur 3

VLIW

Del ingles Very Long Instruction Word. Esta arquitectura de CPU implementa una
forma de paralelismo a nivel de instruccin. Es similar a las arquitecturas
superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALU,
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 nmero de
instrucciones diferentes, pero muy grandes en cuanto al tamao de cada
instruccin. Esto es as porque en cada instruccin se especifica el estado de
todas y cada una de las unidades funcionales del sistema, con el objetivo de
simplificar el diseo del hardware al dejar todo el trabajo de planificar el cdigo en
manos del programador/compilador, en oposicin a un procesador superescalar,
en el que es el hardware en tiempo de ejecucin el que planifica las instrucciones.
Un microprocesador tpico VLIW es el IA-64.

Ventajas
La planificacin de la ejecucin esttica de instrucciones es realizada por el
compilador:
Menos lgica en la unidad de control del procesador
Mayor frecuencia de reloj (organizacin ms sencilla)
Mayor disponibilidad de espacio para otras unidades
Es una arquitectura muy difundida en circuitos embebidos
DSPs
Multimedia (placas de sonido, video, etc.)

Limitaciones
Tamao del cdigo
Mucho desperdicio de memoria por instrucciones NOP
Compatibilidad de cdigo objeto
Hay que recompilar todo el cdigo fuente para cada nueva versin de
procesador
Baja ocupacin de las unidades funcionales
Conflictos en el acceso al banco de registros desde varias unidades
Conflictos de prediccin esttica de accesos a memoria
Imposibilidad de determinacin de latencias en caso de posibles fallos en
accesos a RAM o cach
Dificultades en la prediccin esttica de saltos

Ejemplo:
Por ejemplo, supongamos el siguiente programa para una mquina 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 cdigo vera que la segunda instruccin
depende de la primera (hasta que no est calculado R3 no se puede ejecutar la
suma), y que en cambio la tercera instruccin es independiente de las otras dos.
Por tanto, probablemente iniciara simultneamente la multiplicacin y la resta en
unidades diferentes y, una vez acabada la multiplicacin, ejecutara la suma. Todo
este trabajo de planificacin lo llevara a cabo la circuitera interna del
microprocesador.
En una mquina VLIW, toda la planificacin anterior la hara el compilador (o el
propio programador si programa en ensamblador), y el cdigo resultante sera algo
as:
1 MULT(R1,R2,R3) - REST(R1,R4,R6)
2 - SUM(R3,R4,R5) -

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





EPIC
Procesamiento de instrucciones explcitamente en paralelo (del ingls EPIC:
Explicitly Parallel Instruction Computing) es un paradigma de programacin
tambin se conoce como arquitecturas de Independencia. Fue utilizado por Intel y
HP para el desarrollo de la arquitectura de Intel IA-64 y se ha implementado en la
lnea de procesadores de servidor Intel Itanium e Itanium 2. El objetivo de EPIC
era aumentar la capacidad de los microprocesadores para ejecutar instrucciones
de software en paralelo mediante el uso del compilador, en lugar de la compleja
circuitera en cpsula (die), para identificar y aprovechar las oportunidades para la
ejecucin en paralelo. Esto permitira escalar el rendimiento ms rpidamente en
los futuros diseos de procesadores, sin tener que recurrir a frecuencias de reloj
cada vez ms altas, las cuales se han convertido desde ese momento en una
problemtica importante debido a problemas de alimentacin y refrigeracin.

Como se aplica EPIC en VLIW?
EPIC resuelve dos desperfectos del VLIW: excesiva expansin de cdigo y falta
de escalabilidad, aade numerosas caractersticas para disminuir las deficiencias
de VLIW:

Cada grupo de instrucciones de software mltiples recibe el nombre de
paquete (bundle en ingls). Cada uno de los paquetes contiene informacin
que indica si algn paquete subsiguiente depende de este conjunto de
operaciones. Con esta habilidad, se pueden construir implementaciones
posteriores que enven varios paquetes en paralelo. El compilador se
encarga de calcular la informacin de dependencia de modo que libere al
hardware de la tarea de ejecutar comprobaciones sobre la dependencia de
operandos.
Se utiliza una instruccin de carga especulativa como un tipo de bsqueda
anticipada de datos. Esta bsqueda anticipada aumenta las probabilidades
de xito de encontrar los datos requeridos en la cach primaria para las
cargas normales.
As mismo, una instruccin de carga de comprobacin ayuda a las cargas
especulativas mediante la comprobacin de que una carga no depende de
un almacenamiento anterior.

Vous aimerez peut-être aussi