Академический Документы
Профессиональный Документы
Культура Документы
Un circuito que implementaba una operación en T = 450 ns se ha segmentado mediante un cauce lineal con cuatro etapas de duración t1 = 100 ns,
t2 = 125 ns, t3 = 125 ns, y t4 = 100 ns respectivamente, separadas por un registro de acoplo que introduce un retardo d = 25 ns.
c) ¿A partir de qué número de operaciones ejecutadas se consigue una productividad igual al 90% de la productividad máxima?
Solución
A) máxima ganancia de velocidad posible
2. Supongamos que las etapas de una unidad funcional segmentada S1, S2, S3, S4 y S5 se utilizan en el orden S1, S3,
S5, S1, S3, S4, S1, S3, S2, S5, S4, S2. ¿Cuál es el tiempo (número de ciclos) de latencia de inicio del cauce?
3. Considere un procesador con arquitectura DLX que implementa un cauce segmentado en cinco etapas (IF, ID, EX, MEM, WB). Para los
números en coma flotante se añaden además un sumador con una latencia de 2 ciclos y un multiplicador con una latencia de 3 ciclos. Existen
caminos de bypass desde la salida de las unidades de ejecución y desde la etapa de memoria a las entradas de la ALU. Las instrucciones de salto se
procesan en la etapa de decodificación, por lo que la nueva dirección a la que se ha de acceder si se produce el salto estará disponible al final de
dicha etapa. Se implementa salto retardado en el que no se anula nunca la siguiente instrucción que se haya podido introducir en el cauce tras un
salto (el salto se resuelve en la etapa de decodificación). Considerando el código siguiente:
a) ¿Se ejecutaría el programa correctamente tal y como está? ¿Qué cambios haría para aprovechar el salto retardado?
Solución
El programa se ejecuta correctamente, ya que en cada iteración se ejecutará la instrucción de almacenamiento que hay detrás del salto y el efecto que
tendrá será simplemente el de almacenar la suma parcial acumulada en f0.
En este caso, la instrucción de después del salto retardado se utiliza para incrementar el puntero al siguiente elemento de X, instrucción que hay que
realizar de todas formas, con lo que el cuerpo del bucle pasa a tener una instrucción menos que antes. Además, la instrucción de resta se ha colocado
detrás la instrucción de carga para ocultar su retardo carga-uso.
B) Para obtener la productividad del cauce primero tenemos que calcular cuánto tiempo tarda en ejecutarse el programa para un vector de N
elementos.
Para ello es necesario realizar una traza de su ejecución, tal y como muestra la Figura 1.
INSTRUCCIÓN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
add r1, r0, r0 IF ID EX MEM WB
subd f0, f0, f0 IF ID EX EX MEM WB
ld f2, X(r1) IF ID EX Stall MEM WB
subi r3, r3, #8 IF ID Stall EX MEM WB
multd f6, f2, f4 IF Stall ID EX EX EX MEM WB
addd f0, f0, f6 Stall IF ID Stall EX EX MEM WB
bnez r3, bucle IF Stall ID
addi r1, r1, #8 Stall IF ID EX MEM WB
sd R, f0 IF ID EX MEM WB
Sabiendo el tiempo de ejecución, la productividad del cauce se puede expresar en términos de resultados por ciclo:
Nº instrucciones 6N 3
WN instr./ciclo
Tiempo 9N 8
Nº resultados N
o de instrucciones por ciclo: WN resultados/ciclo
Tiempo 9N 8
5. Considere el procesador segmentado que simula WINDLX y considere que implementa un salto retardado en el que la instrucción
situada a continuación de la instrucción de salto condicional no se anula nunca. Escriba el programa DLX que permite ejecutar:
a) Realice las transformaciones necesarias para obtener un código eficiente en el que se aproveche la instrucción ubicada
tras la instrucción de salto condicional.
Solución
Para el caso en que el procesador no anule nunca la instrucción situada a continuación del salto, el código del programa sería el siguiente:
Como el código utiliza la ALU para hacer todas las operaciones aritméticas, la latencia de todas las operaciones es de un ciclo, con lo que suponiendo
que existen caminos de bypass, no existirían atascos en el cauce. Para aprovechar el salto retardado se ha retrasado la instrucción que incrementa r1,
que se ejecutará tanto si se salta como si no.
Para el caso de que el procesador anule la instrucción a continuación del salto si no se salta (se supone que siempre se va a saltar), el código anterior
funcionaría sin problemas, ya que sólo se anularía el incremento de r1 en la última iteración, cuando ya no hace falta volver a usarlo. Por último, si
el procesador anulara siempre la instrucción que está situada a continuación del salto, habría que subir el incremento de r1 antes del salto y colocar
tras el salto una instrucción nop, para que su anulación no nos cause ningún problema.
7. Suponga que en el siguiente programa N = 108, a y c son dos vectores de números en coma flotante, y b es un escalar en coma flotante.
a) Si el programa anterior se implementa en un procesador segmentado con salto retardado y un hueco para instrucciones tras la instrucción de salto, indique si
hay algún problema en la ejecución del código anterior si el salto: (1) se anula siempre; (2) no se anula nunca; (3) se anula si se salta; (4) se anula si no se salta.
b) ¿Qué cambios haría en el código en el caso en que hay problemas y para que, si es posible, se mejoren las prestaciones?
Solución
Una posible codificación del bucle anterior podría ser:
Dependiendo de la implementación del salto retardado, puede que sea necesario cambiar el código del programa para asegurar su correcto
funcionamiento:
1. En el caso en el que la instrucción que entra en el cauce tras el salto se anule siempre, sería necesario insertar una instrucción nop
entre el salto y la suma, ya que en la última iteración, en la que no se debe saltar, se anularía la siguiente instrucción al salto y la
operación de almacenamiento final no accedería a la dirección correcta.
2. Si la instrucción siguiente al salto no se anula nunca, el programa podría fallar si dicha instrucción afecta a los registros que se
usan en el bucle. En este ejemplo concreto, como dicha instrucción afecta a r5, que no se usa en el bucle, el programa funcionaría
correctamente, aunque ejecutaría la instrucción siguiente al salto en todas las iteraciones, desperdiciando un tiempo de
computación que podría usarse en algún cálculo útil.
3. Si la siguiente instrucción al salto se anula sólo si se toma el salto, el programa se puede dejar tal y como está, ya que sólo se
ejecutará cuando se termine el bucle.
4. Por último, si la siguiente instrucción al salto se anula sólo si no se salta, ocurre igual que en el caso 2, el programa podría fallar si
dicha instrucción afecta a los registros que se usan en el bucle. Pero en este ejemplo concreto el programa funcionaría
correctamente si el bucle itera más de una vez, ya que se fijaría en r5 el valor del puntero donde empieza la matriz c en todas las
iteraciones menos en la última, por lo que en el almacenamiento se accedería a la dirección correcta. En este caso, también sería
conveniente modificar el programa para ejecutar la instrucción siguiente al salta una sola vez tras la última iteración y aprovechar
el slot del salto para realizar algún cálculo útil. B) La Error! Reference source not found. muestran las modificaciones
que serían necesarias para optimizar el programa en cada caso. Cualquiera de las soluciones de los casos 2 y 4 son
intercambiables para ambos casos.
Con ayuda de la Tabla 1, podemos obtener sus latencias prohibidas F = {2, 4, 6}, y su vector de colisiones C = (101010):
53
MLM 4 ciclos
2
ETAPA 1 2 3 4 5 6 7 8
S1 X X X
S2 X
S3 X
S4 X X
S5 X
7+
7+
7+ 101010
3
7+ 5 1
5
101111 101011 111111
3 5
En cuanto al circuito original, el tiempo de operación para n operaciones sería: Torig n n T 16n ns
Torig n
S n
16n 4n
Por tanto, la ganancia en velocidad S(n) del cauce será:
Tseg n 20n 1 5n 1
4 200
La ganancia obtenida para 200 operaciones : S 200 0.799
5200 1
n 109
W n
n n
La productividad : operacione s/ns operacione s/s
Tseg n 20n 1 20n 1
Por último, la ganancia y la productividad máximas del cauce se obtienen aplicando el límite cuando n → ∞ a la ganancia y a la productividad
respectivamente:
Solución
12. Se pretende utilizar un cauce con cuatro etapas, A, B, C, D, para aumentar el rendimiento en la ejecución de una unidad
funcional F. Las etapas se pueden utilizar según una de las dos secuencias S1 y S2 siguientes:
S1: ABACACABD
S2: ADBCCABD
Si la duración de cada etapa (incluyendo el registro de acoplo) es de 50ns, y la operación que implementa la unidad funcional F sin
pipeline tarda 350ns en ejecutarse ¿Cuál de las dos posibilidades es mejor?
13. Se han encontrado dos posibles alternativas para la ejecución de una función F en un cauce con 4 etapas S1, S2, S3, S4.
La alternativa 1 visita las etapas según la secuencia S1 S3 S1 S3 S2 S4 S4, y la alternativa 2 en el orden S1 S2 S3 S2 S3 S4 S2.
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 ofrecen cada una de las alternativas con respecto a su ejecución sin
cauce para 1000 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: 4ns para S1, 4 ns para S2, 3 ns S3 y 4 ns para S4; y que los registros
introducen retardos de 0.1 ns.
Solución
A partir de estas tablas se pueden obtener las latencias prohibidas y los vectores de colisiones de los dos cauces:
ETAPA 1 2 3 4 5 6 7
S1 X X
S2 X
S3 X X
S4 X X
Tabla 2. Tabla de reservas para la primera alternativa del cauce del problema 13.
ETAPA 1 2 3 4 5 6 7
S1 X
S2 X X X
S3 X X
S4 X
Tabla 3. Tabla de reservas para la segunda alternativa del cauce del problema 13.
11
MLM 1 3 3
Para determinar qué alternativa tiene la máxima productividad. 1 6
MLM 2 3.5
2
Figura 3. Diagrama de estados para la primera alternativa del cauce del problema 13.
1011
1 4
6 6
1111 1011
Figura 4. Diagrama de estados para la primera alternativa del cauce del problema 13.
Una vez calculadas las MLM de los dos cauces, sus tiempos de ejecución se calculan mediante:
ETAPA 1 2 3 4
S1 A, C B, C
S2 A, B, C A A
S3 B C
Solución
A partir de la tabla de reservas del enunciado se pueden obtener las latencias prohibidas del cauce:
11 10 10
M A 11, M B 00 , M C 10
11 10 10
Siguiendo una planificación avariciosa del cauce, se pasarían por los estados que muestra la Figura 5, por lo que el tiempo total de ejecución de la
secuencia sería de 16 ciclos, como si indica en el diagrama de tiempos de la Figura 6.
1 1
A3
1 1
1 0
C3
B1
B3
1 1 1
C1
0 0 1
1 0 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A
B
C
B
A
C
Para calcular la productividad máxima para esta secuencia tenemos que tener en cuenta que la siguiente iteración:
TLI n 1 MLM 28 n 1 27
T n 27n 1 ns
F 109
Y la productividad máxima:
n 109
Wmax lim W n lim
n
lim 37.04 106 iteracione s/s
n n T n n 28 n 1 27
2. Un procesador segmentado tiene 5 etapas S1, S2, S3, S4, S5 y todas tardan un ciclo excepto la etapa S3 (etapa de ejecución)
que, según las instrucciones puede tardar 2 o 3 ciclos. ¿Cuál es la velocidad pico de ese procesador si funciona a 500 MHz?
¿Qué mejora podría implementar para mejorar esa velocidad pico? ¿Qué valor alcanzaría entonces?
Solución
Teniendo en cuenta que una etapa dura dos ciclos para un tipo de instrucciones y tres ciclos para otro tipo, en el mejor de los casos, si todas las
instrucciones del programa son de aquellas en las que la etapa S3 duran dos ciclos, se puede terminar una instrucción cada dos ciclos.
F 500 106
Rpico 250 106 instruccio nes/s
CPI 2
FAA = {1}, FBA = {1}
ETAPA 1 2 3 4 5 6 7
S1 A, B
S2 A, B
S3 A, B A, B B
S4 A B
S5 A B
A2+ B2 B3+
0 1
1 1
A3
A) velocidad pico
n F 500 106
Wmax lim W n lim
n F
lim 250 106 instruccio nes/s
n n T n n k n 1 MLM MLM 2
B) Para mejorar la velocidad del procesador, una posible mejora consiste en añadir otras dos etapas S3 que puedan funcionar simultáneamente.
S3
S1 S2 S3 S4 S5
S3
C) Con estas modificaciones, el tiempo de latencia inicial de cualquier instrucción sería de 7 ciclos, y cada ciclo terminaría de ejecutarse una
instrucción. De esta forma, la velocidad pico sería:
F 500 106
Rpico 500 106 instruccio nes/s
CPI 1
10.La Tabla 6 muestra la tabla de reservas de un sumador segmentado con cuatro etapas S1, S2, S3, S4. Indique cuál es la
productividad máxima de este cauce si se utiliza un reloj con una frecuencia de 2 GHz. ¿A partir de qué número de sumas
segmentadas consecutivas se alcanza el 90% de la productividad máxima? ¿Qué cambios haría en la etapa S3 para mejorar el
rendimiento del cauce?
ETAPA 1 2 3 4 5
S1 X X
S2 X
S3 X X
S4 X
Solución
latencias prohibidas del cauce es F = {1, 4}, su vector de colisiones es C = (1001). MLM = 2.5.
A) La productividad del cauce es:
n F n 2 109
W n
n 8n
108 operacione s/s
T n TLI n 1 MLM 5 n 1 2.5 n 1
3,
100
3, 5+ 2
101
Para determinar el valor de n con el que se alcanza el 90% de la productividad máxima se despeja n de la igualdad:
0.9 Wmax 0.9 8 108 8n
n 1
108
obteniéndose n = 9.
B) Para mejorar las prestaciones del cauce, se podría segmentar la etapa S3 en dos nuevas etapas de la mitad de duración,
lugar de 4 se tendrían 5 etapas y la única latencia prohibida sería F = {4}. Si se hace el diagrama de estados partiendo de C = (1000) se
observa que la mínima latencia media que se obtiene en este caso es menor que 2.5.
ETAPA 1 2 3 4 5
S1 X X
S2 X
S31 X
S32 X
S4 X
W1 n
n n
operacione s/s
Tseg1 n 7 n 1 3 t
W2 n
n n
operacione s/s
Tseg 2 n 7 n 1 3.5 t
lim W2 n lim
n 1 1
Wmax 2 operacione s/s
n n k n 1 MLM t MLM 2 t 3.5 t
2 2
De estas expresiones se puede concluir que la productividad de la primera alternativa es mayor que la de la segunda.
Para responder a la segunda cuestión, primero debemos calcular el tiempo de ejecución secuencial para n operaciones:
Torig n n 15 15n ns
y el tiempo de ciclo de los circuitos segmentados:
Torig n
S1 n
15n 15n
Tseg1 n 7 n 1 3 4.1 12.3n 16.4
Torig n
S 2 n
15n 15n
Tseg 2 n 7 n 1 3.5 4.1 14.35n 1
Así que para obtener la ganancia obtenida al procesar 1000 operaciones, sólo hay que sustituir n = 1000 en las ecuaciones anteriores:
Torig 1000
S1 1000 1.22
Tseg1 1000
Torig 1000
S 2 1000 1.04
Tseg 2 1000