Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. (1.5 puntos) En un procesador vectorial a 1 GHz, con registros vectoriales de 64 componentes, tres unidades de
carga/almacenamiento de memoria (LV/SV), un sumador y un multiplicador, se ejecuta el bucle:
Determine el valor de R∞ teniendo en cuenta que el procesador puede encadenar y solapar los cauces y que cada uno de
esos cauces, por separado, puede terminar un componente por ciclo.
(Nota: TLI(Mult) = 16 ciclos; TLI(Suma) = 8 ciclos; TLI(LV/SV) = 8 ciclos; TBASE = 8 ciclos; TBUCLE = 10 ciclos).
2. (1.5 puntos) 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] > 2) then {Y[i]=X[i]; X[i]=3*X[i];} else if (X[i]>0) then {Y[i]= –X[i]; X[i]=5*X[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.
3. (2 puntos) Suponga un procesador superescalar en el que se decodifican dos instrucciones por ciclo, se emiten tres
instrucciones por ciclo como máximo, y se retiran hasta dos instrucciones por ciclo. La emisión es desordenada y no
alineada y se realiza directamente a las unidades de ejecución, es decir, que el procesador no dispone de estaciones de
reserva. La ejecución también es desordenada, y para permitir la finalización ordenada, se dispone de un buffer de reorden
(ROB) en el que se introducen las instrucciones una vez decodificadas y del que se retiran en orden una vez que ha
finalizado.
Indique las dependencias entre las instrucciones, los ciclos en los que se emiten para su ejecución y cómo evolucionaría en
buffer de reorden hasta que se hayan retirado todas las instrucciones de la siguiente secuencia almacenada en la cola de
instrucciones captadas:
Suponiendo una frecuencia de 2 GHz, ¿cuánto tarda en procesarse la secuencia de instrucciones? ¿Cuál es la velocidad
pico del procesador?
Nota: La suma y la resta consumen 1 ciclo de reloj y la multiplicación tres ciclos. Considere que no hay limitaciones en la
capacidad de los buffers ni en el número de unidades funcionales. Se supone que f1, f2 y f5 tienen valores previos.
4. (1.5 puntos) Se han encontrado dos posibles alternativas para la ejecución de una función F en un cauce con 4 etapas
S1, S2, S3 y S4. La alternativa 1 visita las etapas según la secuencia S1 S3 S1 S3 S2 S3 S4, y la alternativa 2 en el orden
S1 S2 S3 S4 S2 S3. (A) ¿Cuál de las dos alternativas permite ejecutar un número mayor de funciones por unidad de
tiempo? Demuestre razonadamente su respuesta. (B) Obtenga además la ganancia en velocidad que ofrece cada una de las
alternativas con respecto a su ejecución sin cauce para 500 operaciones, teniendo en cuenta que sin cauce la función
requiere un tiempo de 15 ns; que las etapas del cauce suponen unos tiempos de ejecución de: 4 ns para S1, 5 ns para S2,
2 ns para S3 y 4 ns para S4; y que los registros de acoplo entre etapas introducen un retardo de 0.25 ns.
5. (1.5 puntos) En un computador con tres procesadores, A, B y C, cada uno dispone de dos niveles de cache, L1 y L2,
con política de actualización 'write-back' y protocolo MESI, con 'write-once', para mantener la coherencia de cache (sin
'allocate-on-write' en L1). Suponga una dirección de memoria no contenida en las memorias caches, e indique los estados
por los que va pasando la correspondiente línea en las caches L1 y L2 de cada procesador tras cada uno de los siguientes
eventos: (1) Escritura generada por el procesador A; (2) Lectura generada por el procesador B; (3) Escritura generada por
el procesador C; (4) Escritura generada por el procesador B; (5) Lectura generada por el procesador A; (6) Escritura
generada por el procesador A; (7) Lectura generada por el procesador C.
Solución al Problema 1:
Dado que el tamaño de los registros vectoriales del procesador propuesto en el problema es MVL = 64 y que el vector que deseamos
procesar tiene un tamaño n = 342 mayor, tendremos que aplicar la técnica de strip-mining para trocear el vector y procesarlo
iterativamente. El compilador realizará un cambio al código similar a este:
low = 1;
VL = (n mod MVL); /* resto de la division */
for ( j = 0 ; j <= (n / MVL) ; j++)
{
for ( i = low ; i < low + VL ; i++)
Z(i):= Z(i)+X(i)*Y(i);
low += VL;
VL = MVL;
}
Al traducir este código a ensamblador, el bucle que se encuentra sombreado se cambiará por instrucciones vectoriales y el resto de
instrucciones permanecerán tal y como están.
el primer paso consistirá en estimar el tiempo Tk. Para ello, debemos determinar las instrucciones vectoriales que se ejecutarán dentro
del bucle interno y la forma en que se solaparán y encadenarán. Dichas instrucciones serán tres cargas vectoriales de X, Y, y Z, una
multiplicación, una suma y un almacenamiento del resultado en Z. El diagrama de tiempos de estas instrucciones es el siguiente:
TLI=8 LV VX, RX
TLI=8 LV VY, RY
TLI=8 LV VZ, RZ
TLI=8 SV RZ, VZ
8 64 64 8
Como sólo tenemos tres unidades de carga/almacenamiento, la instrucción SV debe esperar a que terminen las instrucciones LV, por
tanto, tenemos que el tiempo por componente es TPC = 2 y que el tiempo de latencia inicial TLI = 8 + 8 = 16, ya que la multiplicación y
la suma han quedado solapadas con las instrucciones de carga y de almacenamiento. Con estos valores de TLI y TPC y con los valores
de TBASE y TBUCLE que nos dan en el enunciado del problema, podemos calcular Tk como:
⎡ k ⎤
Tk = TBASE + ⎢ (TLI + TBUCLE ) + k ⋅ TPC = 8 + ⎡⎢ k ⎤⎥(16 + 10) + 2·k ciclos
⎢ MLV ⎥⎥ ⎢ 64 ⎥
Tras desenrollar e introducir las operaciones con predicados, sólo nos queda reorganizar el código respetando las dependencias de datos
para construir las instrucciones VLIW:
Teniendo en cuenta estas dependencias, las instrucciones se ejecutarían como se muestra en la siguiente figura:
Instrucción / Ciclo 1 2 3 4 5 6 7 8
(1) multd f1, f1, f5 ID ISS EX EX EX WB
(2) addd f2, f2, f5 ID ISS EX WB
(3) addd f4, f1, f2 ID ISS EX WB
(4) addd f6, f1, f5 ID ISS EX WB
(5) multd f5, f2, f2 ID ISS EX EX EX WB
(6) subd f6, f1, f2 ID ISS EX WB
Para la calcular la velocidad pico, como sólo se pueden retirar dos instrucciones por ciclo, suponiendo que no hubiera atascos en el
cauce se podrían ejecutar 2 instrucciones por ciclo
Alternativa 1 Alternativa 2
1 2 3 4 5 6 7 1 2 3 4 5 6
S1 X X S1 X
S2 X S2 X X
S3 X X X S3 X X
S4 X S4 X
Una vez calculadas las tablas de reservas es fácil obtener las latencias prohibidas y los vectores de colisiones de cada una de las
alternativas:
Para calcular determinar qué alternativa tiene la máxima productividad, realizamos un diagrama de estados a partir de cada vector de
colisiones:
Alternativa 1 Alternativa 2
3
1010 100
3 1 2 4
1
5
1
1011 1111 101 110 111
3 2
MLM1 = 3 MLM2 = 2
Para ver qué alternativa es capaz de ejecutar más operaciones por unidad de tiempo basta con calcular la productividad máxima de cada
una de ellas. La productividad máxima se define como:
n n 1
Wmax = lim W (n ) = lim = lim =
n →∞ n →∞ T (n ) n →∞ TLI + MLM ( n − 1) MLM
1 1 1 1
W1 max = = = 0,3 W 2 max = = = 0,5
MLM 1 3 MLM 2 2
con lo que podemos concluir que la segunda alternativa es mejor que la primera.
Para responder a la segunda cuestión, debemos calcular tanto el tiempo secuencial como el de cada una de las alternativas para realizar
500 operaciones. En el caso secuencial tenemos que:
Tclock = máx{TS1, TS2, TS3, TS4} + Tacoplo = máx {4, 5, 2, 4} + 0,25 = 5 + 0,25 = 5,25 ns
Por tanto, la ganancia en velocidad de cada una de las alternativas respecto al caso secuencial es de: