Вы находитесь на странице: 1из 5

En un procesador VLIW cuyas

instrucciones pueden codificar tres


operaciones (tres campos o slots en
cada instrucción VLIW), todas las
operaciones pueden predicarse. Para
establecer los valores de los predicados
se utilizan instrucciones de comparación
(cmp) con el formato (p) p1[, p2]
cmp.cnd x,y donde cnd es la condición
que se comprueba entre x e y (lt, ge, eq,
ne, …). Si la condición es verdadera
p1=1 [y p2=0], y si es falsa, p1=0 [y
p2=1]. La operación sólo se ejecuta si el
predicado p=1 (habrá sido establecido
por otra instrucción de comparación).
Indique cómo se escribiría la sentencia:

for i=1 to 2 do if ((X[i]>Y[i]) and (Y[i] ≥0))


then X[i]=-X[i]
else if (Y[i]<0) then X[i]=Y[i]

sin ninguna operación de salto y con el


mínimo número de instrucciones VLIW,
teniendo en cuenta que las instrucciones de
comparación sólo pueden aparecer en el
primer campo o slot de la instrucción
VLIW(el resto de las instrucciones pueden
aparecer en cualquier campo). Considere
que dispone del número de unidades
funcionales que necesite en cada momento.
Solución:

La secuencia de instrucciones debe quedar sin


ningún salto, por lo tanto debemos desenrollar
el bucle y predicar las instrucciones que
contiene en su interior. A continuación se
muestran el organigrama del programa una vez
que se ha desenrollado el bucle y se han
predicado las instrucciones y su respectivo
código en ensamblador.
Tras desenrollar e introducir las operaciones
con predicados, podemos reorganizar el código
respetando las dependencias de datos para
construir las instrucciones VLIW:

Вам также может понравиться