Escolar Documentos
Profissional Documentos
Cultura Documentos
Utiliza grupos de folios separados para responder a las cuestiones de cada parte
SOLUCIONES
Solucin
Solucin
a) Para calcular el tiempo en segundos que tarda la aplicacin en ejecutarse vamos a aplicar la
conocida formula:
Tejec = N I CP I Treloj
Lo primero tenemos que calcular el CPI para este procesador superescalar especulativo con grado
de emisin 1. Dicho CPI ser la mezcla del CPI calculado para cada tipo distinto de operaciones.
Entonces:
CP IF P = 7
CP Ibranches = 1 + 0,05 10 = 1,5 (al ser la profundidad del pipeline 11, en el caso del fallo en la
prediccin del salto esperamos hasta la conrmacin del salto para recuperarnos, lo que implica
un retardo de 10 ciclos)
CP Ild/st = 0,5 1 + 0,5 0,9 10 + 0,5 0,1 150 = 12,5
CP Ient = 1
Entonces, tenemos que el CPI medio de los benchmarks dados es el siguiente:
b) En este apartado hemos aumentado el grado de emisin de instrucciones a 4, lo que nos provoca
un aumento del riesgo de datos y de riesgos estructurales, mantenindose los CPI medios para
cada tipo de instruccin. Entonces:
Tejec = 4 1012
CP I
0,5 109 = 3625 segs
4
c) Para contestar esta cuestin de forma cualitativa, tenemos que acordarnos de la Ley de Amdhal,
por la que una mejora que realicemos en una parte del procesador resultar en mayor benecio en
funcin del peso que tenga dicha parte. Mirando a los resultados obtenidos en el primer apartado,
podemos comprobar que en el clculo del CPI medio de la aplicacin tiene un mayor peso el CPI
de las operaciones de memoria, por lo que las mejoras que hagamos en esta parte del procesador
tendrn una mayor repercusin.
Vamos ahora a calcular lo dicho anteriormente de forma cuantitativa. En el caso de la mejora en
el tamao del BTB, tenemos que mejoramos el ratio de acierto de lo saltos, por lo que
CP Ibranches = 1 + 0,01 10 = 1,1
Entonces:
Tejec = 4 1012
CP I
0,5 109 = 3585 segs
4
En el caso de la mejora en el tamao de la cache L2, tenemos que mejoramos el ratio de acierto
de dicha cache, por lo que
CP Ild/st = 0,5 1 + 0,5 0,95 10 + 0,5 0,05 150 = 9
Entonces:
Tejec = 4 1012
CP I
0,5 109 = 3100 segs
4
d) Finalmente se nos pide cmo podramos mejorar el tiempo de ejecucin de la aplicacin sin
realizar ninguna mejora hardware en el procesador, tan slo por medio de mejoras software.
Por tanto, lo que nos estn pidiendo es cmo podramos mejorar el algoritmo de la aplicacin
para que se ejecutara en un tiempo menor en el mismo procesador. A partir de los datos que nos
dan en el problema, vemos claramente que el principal cuello de botella es de la aplicacin son las
operaciones de memoria. Por tanto, la principal mejora que podramos realizar sera re-escribir
la aplicacin para intentar disminuir los fallos en la cache, tanto a nivel de L1 como de L2.
4
a ) Programa de memoria compartida sobre un ABI de paso de mensajes sobre un multiprocesador de paso de mensajes.
b ) Programa de memoria compartida sobre un ABI de memoria compartida sobre un multiprocesador de paso de mensajes.
c) (0,25 puntos ) Cules son las dos mtricas ms usadas para evaluar las prestaciones de un
computador paralelo? Pon un ejemplo en el que se muestre cundo cada una de las dos mtricas
es preferible frente a la otra.
d) (0,25 puntos ) Explica en qu consiste un esquema de directorio distribuido basado en cache.
e) (0,50 puntos ) Se est diseando el protocolo de coherencia de cache para un multiprocesador
cc-NUMA. Se sabe que el tiempo de acceso a cache es de 10 ciclos y a memoria de 200 ciclos.
El multiprocesador no emplea caches de directorio. Teniendo en cuenta lo anterior, justica si
es preferible un protocolo de directorio con estados MSI o MOSI (estados de los bloques en las
caches).
f) (0,25 puntos ) De entre las cuatro categoras de fallos de cache que pueden ocurrir en un multiprocesador de memoria compartida, explica qu se entiende por fallo de coherencia. Cmo
pueden clasicarse los fallos de coherencia?
g) (0,50 puntos ) Explica en qu consiste la propiedad de la atomicidad de las escrituras requerida
por la consistencia secuencial. Para el siguiente fragmento de cdigo ejecutado por 3 procesadores:
P1
A = 1;
P2
while (A != 1)
B = 1;
P3
while (B != 1)
print A;
Suponiendo que inicialmente A y B valen 0, se imprimira por pantalla lo mismo en un multiprocesador que no garantizase la atomicidad de las escrituras que en uno que implementase el
modelo de consistencia secuencial? Justica la respuesta.
h) (0,50 puntos ) Muestra cmo podra usarse el par de instrucciones LL (load linked ) y SC (store
conditional ) para implementar la instruccin compare&swap reg1, reg2, mem estudiada en
clase. La instruccin compare&swap reg1, reg2, mem lee el contenido de la posicin de memoria mem y si coincide con el contenido de reg1 intercambia los contenidos del registro reg2 y de
la citada posicin de memoria.
i) (0,25 puntos ) Explica el algoritmo de encaminamiento edge cube para hipercubos.
Solucin
compare&swap:
nocambio:
LL
bne
SC
beqz
move
ret
regX, mem
regX, reg1, nocambio
mem, reg2
compare&swap
reg2, regX
i) Cada nodo en un hipercubo viene identicado por un nmero binario. Para hacer llegar un
mensaje desde un nodo origen hasta uno destino se calcula la operacin XOR de los identicadores
binarios de origen y destino y se cruzan (en un determinado orden) aquellas dimensiones para
las que el resultado de la operacin XOR es 1.
4. (2 puntos) Para una arquitectura SMP se est estudiando la posibilidad de resolver el problema
de la coherencia de las caches mediante un protocolo snoopy basado en invalidacin con estados
MOSI (suponer que en el estado O la memoria principal no est actualizada). Responder a las
siguientes cuestiones:
a) (0,25 puntos) Explicar brevemente la semntica de cada uno de los 4 estados (M, O, S, I).
b) (0,75 puntos) Dibuja el diagrama de transicin de estados para dicho protocolo. Las transacciones de bus de que dispone el diseador son BusRd, BusRdX y BusUpgr, las acciones que
generan los procesadores son ProcRd y ProcWr y como respuesta a una transaccin de bus
el controlador de cache puede ejecutar las acciones FlushCache enva el bloque de datos
a la memoria cache que lo solicita y FlushCacheMem adems de lo anterior, se actualiza
memoria.
c) (0,5 puntos) Para la siguiente secuencia de operaciones realizadas por 3 procesadores sobre el
mismo bloque de datos, indica las transacciones de bus que se generan segn el nuevo protocolo,
el vector de estados para el bloque de datos en cada caso, y quin proporciona el bloque de datos
caso de ser necesario:
r1 r2 w1 r2 r3 w2 r1 w2 r3 w1
d) (0,5 puntos) Repite el apartado anterior para el protocolo Dragon estudiado en clase.
Solucin
no est actualizada. Esta es la nica copia del mismo (estado propietario y exclusivo).
O: El bloque de datos est en estado propietario en la cache local y la memoria principal
no est actualizada. Pueden existir varias copias del bloque de datos en otras caches (no es
un estado exclusivo).
S: El bloque de datos est en estado compartido en la cache local, puede haber varias copias
del mismo en otras caches y la memoria principal podra o no estar actualizada.
I: El bloque de datos no se encuentra en la cache local.
7
ProcRd/
ProcWr/
M
ProcWr/BusUpgr
ProcRd/
BusRd/FlushCache
BusRd/FlushCache
BusRdX/FlushCache
BusUpgr/
ProcWr/BusUpgr
ProcWr/BusRdX
BusRdX/FlushCache
S
BusUpgr/
ProcRd/BusRd
BusRd/
ProcRd/ BusRdX/
c) Inicialmente, el vector de estados para el bloque de datos ser V(p1, p2, p3) = (I, I, I). Las
transacciones de bus que se generaran son:
r1 : BusRd. Una vez completada la transaccin de bus, el vector de estados quedara de
la forma V(p1, p2, p3) = (S, I, I). El bloque de datos es proporcionado por la memoria
principal.
r2 : BusRd. V(p1, p2, p3) = (S, S, I). El bloque de datos es proporcionado por la memoria
principal.
w1 : BusUpgr. V(p1, p2, p3) = (M, I, I). No se proporciona el bloque de datos.
r2 : BusRd. V(p1, p2, p3) = (O, S, I). El bloque de datos es proporcionado por p1.
r3 : BusRd. V(p1, p2, p3) = (O, S, S). El bloque de datos es proporcionado por p1.
w2 : BusUpgr. V(p1, p2, p3) = (I, M, I). No se proporciona el bloque de datos.
r1 : BusRd. V(p1, p2, p3) = (S, O, I). El bloque de datos es proporcionado por p2.
w2 : BusUpgr. V(p1, p2, p3) = (I, M, I). No se proporciona el bloque de datos.
r3 : BusRd. V(p1, p2, p3) = (I, O, S). El bloque de datos es proporcionado por p2.
w1 : BusRdX. V(p1, p2, p3) = (M, I, I). El bloque de datos es proporcionado por p2.
8
d) Para el protocolo DRAGON, el vector de estados para el bloque de datos ser inicialmente V(p1,
p2, p3) = (NC, NC, NC). Las transacciones de bus que se generaran son:
r1 : BusRd. Una vez completada la transaccin de bus, el vector de estados quedara de la
forma V(p1, p2, p3) = (E, NC, NC). El bloque de datos es proporcionado por la memoria
principal.
r2 : BusRd. V(p1, p2, p3) = (SC, SC, NC). El bloque de datos es proporcionado por la
memoria principal.
w1 : BusUpd. V(p1, p2, p3) = (SM, SC, NC). No se proporciona el bloque de datos.
r2 : . V(p1, p2, p3) = (SM, SC, NC). Acierto en cache.
r3 : BusRd. V(p1, p2, p3) = (SM, SC, SC). El bloque de datos es proporcionado por p1.
w2 : BusUpd. V(p1, p2, p3) = (SC, SM, SC). No se proporciona el bloque de datos.
r1 : . V(p1, p2, p3) = (SC, SM, SC). Acierto en cache.
w2 : BusUpd. V(p1, p2, p3) = (SC, SM, SC). No se proporciona el bloque de datos.
r3 : . V(p1, p2, p3) = (SC, SM, SC). Acierto en cache.
w1 : BusUpd. V(p1, p2, p3) = (SM, SC, SC). No se proporciona el bloque de datos.
5.
Solucin
Bus
Con 4 procesadores: B =
b
4
b
64
b n
n
Con 64 procesadores: B =
Con n procesadores: B =
malla 2D
4b
4 =b
64 procesadores: B = 112b
64 = 1, 9b
n
n procesadores: B = 2 n( nn1)b
Con 4 procesadores: B =
Con
Con
2b
La conclusin es clara y se reere a los problemas de escalabilidad que presenta una arquitectura
multiprocesador basada en un Bus comn. Como podemos ver, conforme aumentamos el nmero de
nodos, el ancho de banda medio por nodo para transmitir informacin se reduce (llegando a cero
en el caso lmite de innitos procesadores).
Por contra, en el caso de topologas ms escalables (como la malla en este caso), dicho ancho de
banda se mantiene constante e incluso aumenta con el nmero de procesadores.