Академический Документы
Профессиональный Документы
Культура Документы
Grado en
Ing. Informtica
Arquitectura de Computadores.
Algunos ejercicios resueltos
Tema 1. Arquitecturas Paralelas: Clasificacin y Prestaciones
Material elaborado por los profesores responsables de la asignatura:
Mancia Anguita, Julio Ortega
Licencia Creative Commons
Ejercicios
Ejercicio 1.
Ejercicio 2. (Tenga en cuenta que la redaccin de este ejercicio no coincide totalmente con la redaccin del
ejercicio 2 de la relacin de problemas del tema 2) En un procesador no segmentado que funciona a 300
MHz, hay un 20% de instrucciones LOAD que necesitan 4 ciclos, un 10% de instrucciones STORE que
necesitan 3 ciclos, un 25% de instrucciones con operaciones de enteros que necesitan 6 ciclos, un 15% de
instrucciones con operandos en coma flotante que necesitan 8 ciclos, y un 30% de instrucciones de salto que
necesitan 3 ciclos. Las operaciones con enteros se realizan en una ALU con un retardo de 3 ciclos, y las de
coma flotante en una unidad funcional con un retardo de 5 ciclos.
(a) Cul es la mxima ganancia que se puede obtener por reduccin en el tiempo en la ALU de las
operaciones con enteros? y (b) cul es la mxima ganancia que se puede obtener por reduccin en el
tiempo en la unidad funcional de las operaciones en coma flotante?
Solucin
Datos del ejercicio:
Tipo i de instr. CPIi (c/i)
LOAD
4
STORE
3
ENTEROS
6
FP
8
BR
3
TOTAL
NIi/NI
0,20
0,10
0,25
0,15
0,30
100
Comentarios
2 / 14
Arquitectura de Computadores
Por lo tanto, para resolver el problema utilizando esta expresin habra que evaluar los valores de f en cada
uno de los casos que se indican.
Tipo i de instr. CPIi (c/i) NIi/NI CPIi con mejora max. ENT. en ALU CPIi con mejora max. FP en UF
LOAD
4
0,20
4
4
STORE
3
0,10
3
3
ENTEROS
6
0,25
3 (se eliminan los 3 de la ALU)
6
FP
8
0,15
8
3 (se eliminan los 5 de la UF)
BR
3
0,30
3
3
TOTAL
100
Ejercicio 3. Un circuito que implementaba una operacin en Top=450 ns. se ha segmentado mediante un
cauce lineal con cuatro etapas de duraccin T1=100 ns., T2=125 ns., T3=125 ns., y T4=100 ns.
respectivamente, separadas por un registro de acoplo que introduce un retardo de 25 ns. (a) Cul es la
3 / 14
mxima ganancia de velocidad posible? Cul es la productividad mxima del cauce? (b) A partir de qu
nmero de operaciones ejecutadas se consigue una productividad igual al 90% de la productividad mxima?
Solucin
100ns
25ns
125ns
25ns
125ns
25ns
100ns
25ns
Ejercicio 4. En un procesador sin segmentacin de cauce, determine cul de estas dos alternativas para
realizar un salto condicional es mejor:
ALT1: Una instruccin COMPARE actualiza un cdigo de condicin y es seguida por una instruccin BRANCH
que comprueba esa condicin.
ALT2: Una sola instruccin incluye la funcionalidad de las instrucciones COMPARE y BRANCH.
Hay que tener en cuenta que hay un 20% de saltos condicionales en ALT1; que las instrucciones BRANCH en
ALT1 y COMPARE+BRANCH en ALT2 necesitan 4 ciclos mientras que todas las dems necesitan slo 3; y que
el ciclo de reloj de la ALT1 es un 25% menor que el de la ALT2, dado que en ste caso la mayor funcionalidad
de la instruccin COMPARE+BRANCH ocasiona una mayor complejidad en el procesador.
Solucin
Datos del ejercicio:
4 / 14
Arquitectura de Computadores
Tiempo de ciclo de ALT1 = 0,75 * Tiempo de ciclo de ALT2 = Tiempo de ciclo de ALT2 0,25 * Tiempo de ciclo
de ALT2
T1ciclo = T2ciclo 0,25* T2ciclo = 0,75* T2ciclo
ALT1
Instrucciones i
BRANCH en ALT1
RESTO en ALT1
TOTAL
ciclos NIi/NI1
4
0,2
3
0,8
ALT2
Instrucciones i
ciclos NIi/NI1
COMPARE+BRANCH
ALT2
RESTO en ALT2
Proporcin (%)
20
80
100
en
0,2
0,6
TOTAL
0,8
Comentarios
Incluye instrucciones COMPARE
Proporcin (%)
Comentarios
ALT2
no
tendr
aparte
las
20*100/80 =
instrucciones COMPARE, que son un
25
20% en ALT1
ALT2
no
tendr
aparte
las
(8020)*100/80 = instrucciones COMPARE, que son un
20% en ALT1
75
NI2 = 0,8 * NI1 (al no tener instr.
100
COMPARE aparte)
donde CPI es el nmero medio de ciclos por instruccin, NI es el nmero de instrucciones, y TCICLO el tiempo
de ciclo del procesador.
Para la alternativa primera ALT1, se tiene:
CPI(1)=0.2*4+0.8*3=3.2
y por tanto
TCPU(1)=CPI(1)*NI(1)*Tciclo(1)=3.2*NI(1)*Tciclo(1)= 3.2*NI(1)*0,75*Tciclo(2)=2,4*NI(1)*Tciclo(2)
Para la alternativa primera ALT2, se tiene:
TCPU(2)=CPI(2)*NI(2)*Tciclo(2)=(0.2*4+0.6*3)*NI(1)/NI(2) *NI(2)*Tciclo (2)= 2.6*NI(1)*Tciclo(2)
A continuacin se calcula el tiempo de CPU para la segunda alternativa, ALT2, que se expresar en trminos
del nmero de instrucciones y del tiempo de ciclo de la alternativa ALT1.
Por una parte, se tiene que como en ALT2 no se ejecutan instrucciones COMPARE, se ejecutarn:
-
CPI (2) =
5 / 14
Adems, se tiene que el ciclo de reloj de ALT2 es ms largo que el de ALT1. Concretamente, se dice que el
ciclo de ALT1 es un 25% menor que el de ALT2, lo que implica que:
TCICLO (1) = 0.75*TCICLO(2) TCICLO (2) = 1.33*TCICLO(1)
Sustituyendo NI(2), CPI(2), y TCICLO(2) en la expresin de TCPU(2) se tiene que:
TCPU (2) = 3.25 *(0.8 * NI (1)) *(133
. * TCICLO (1)) = 3.458 * NI (1) * TCICLO (1)
As, como TCPU(1) < TCPU(2) se tiene que ALT2 no mejora a la ALT1. Es decir, aunque un repertorio con
instrucciones ms complejas puede reducir el nmero de instrucciones de los programas, reduciendo el
nmero de instrucciones a ejecutar, esto no tiene que suponer una mejora de prestaciones si al implementar
esta opcin la mayor complejidad del procesador lo hace algo ms lento.
Ejercicio 5. Qu ocurrira en el problema anterior si el ciclo de reloj fuese nicamente un 10% mayor para
la ALT2?
Solucin
Como en el problema anterior, para la primera alternativa, ALT1, se tiene:
.
0.2 * NI (1) * 4 + 0.6 * NI (1) * 3 0.8 + 18
=
= 3.25
0.8 * NI (1)
0.8
No obstante, como ahora el tiempo de ciclo de ALT2 es un 10% mayor que el de la ALT1 se cumple que:
TCICLO (2) = 1.10*TCICLO(1)
y sustituyendo,
TCPU (2) = 3.25 *(0.8 * NI (1)) *(110
. * TCICLO (1)) = 2.86 * NI (1) * TCICLO (1)
As, ahora TCPU(2) < TCPU(1) y por lo tanto, la segunda alternativa s que es mejor que la primera. Es decir, el
mismo planteamiento que antes no mejoraba la situacin de partida ahora s lo consigue. Slo ha sido
necesario que el aumento del ciclo de reloj que se produce al hacer un diseo ms complejo del procesador
sea algo menor.
La situacin reflejada en estos dos ejercicios (4 y 5) pone de manifiesto la necesidad de estudiar la
arquitectura del computador desde un enfoque cuantitativo, y no slo teniendo en cuenta razonamientos
que pueden ser correctos, pero que pueden llevar a resultados finales distintos segn el valor de las
magnitudes implicadas.
Ejercicio 6. Considere un procesador no segmentado con una arquitectura de tipo LOAD/STORE en la que las
operaciones slo utilizan como operandos registros de la CPU. Para un conjunto de programas
6 / 14
Arquitectura de Computadores
representativos de su actividad se tiene que el 43% de las instrucciones son operaciones con la ALU (3 CPI),
el 21% LOADs (4 CPI), el 12% STOREs (4 CPI) y el 24% BRANCHs (4 CPI).
Adems, un 25% de las operaciones con la ALU utilizan operandos en registros, que no se vuelven a utilizar.
Se mejoraran las prestaciones si, para sustituir ese 25% de operaciones se aaden instrucciones con un
dato en un registro y otro en memoria, teniendo en cuenta que para ellas el valor de CPI es 4 y que
ocasionaran un incremento de un ciclo en el CPI de los BRANCHs, pero que no afectan al ciclo de reloj?
Solucin
Datos del ejercicio:
Alternativa 1
Ii
CPIi1 Fraccin fi1 (NIi1=fi1*NI1)
LOAD
4
0,21
STORE
4
0,12
1
ALU
0,43
BR
TOTAL
0,24
1
Ii 2
Comentarios
Alternativa 2
CPIi2 Fraccin fi (NIi2=fi2*NI1)
LOAD
STORE
ALU r-r
ALU r-m
BR
TOTAL
4
3
4
5
0,12
0,75 * 0,43 = 0,3225
0,25 * 0,43 = 0,1075
0,24
0,8925
Comentarios
El 25 % de 43% desaparece al usarse ese mismo nmero de
operaciones con la ALU que acceden a memoria
En primer lugar se calcula el tiempo de CPU para la situacin inicial. Para ello, se tiene que:
CPI(1)=0.43*3+0.21*4+0.12*4+0.24*4 = 1.29 + 0.57*4 = 1.29 + 2.28 = 3.57
y, por tanto:
TCPU (1) = CPI (1) * NI (1) * TCICLO (1) = 357
. * NI (1) * TCICLO (1)
TCPU(1)=CPI(1)*NI(1)*Tciclo=3.57*NI(1)*Tciclo
En segundo lugar se calcula el tiempo de CPU para la alternativa 2. Para ello, se tiene que:
CPI(2)=[0.3225*3+(0.12+0,1025+0,1075)*4+5*0,24]*NI(1)/NI(2)= (0,9675+0,33*4+0,24*5)*NI(1)/NI(2) =
(0.9675+1,32+1,2)*NI(1)/NI(2)= 3.4875*NI(1)/NI(2)
y, por tanto:
TCPU(2)=CPI(2)*NI(2)*Tciclo=3.4875*NI(1)/NI(2) *NI(2)*Tciclo = 3.4875*NI(1)*Tciclo
En la Tabla anterior para Alternativa 2 se muestra que, al introducir las nuevas instrucciones de operacin
con la ALU con uno de los operandos en memoria:
- Se reduce el 25% de las 0.43*NI(1) instrucciones de operacin con la ALU y operandos en registros a
las que las nuevas instrucciones sustituyen.
- Se reduce en 0.25*0.43*NI(1) el nmero de LOADs, ya que segn se indica en el enunciado, esos
LOADs slo estn en el programa para cargar uno de los operandos de las operaciones con la ALU,
que no se vuelven a utilizar nunca ms.
7 / 14
Hay que contabilizar las 0.25*0.43*NI(1) nuevas instrucciones de operacin con la ALU que se
introducen en el repertorio (y que sustituyen a las operaciones con la ALU y operandos en registros).
Como resultado, al sumar todas las instrucciones que se tienen en la nueva situacin, el nmero
total de instrucciones se reduce (lgicamente, ya que se han ahorrado instrucciones LOADs)., siendo
igual a
NI(2)=0.8925*NI(1)
Teniendo en cuenta la nueva distribucin de instrucciones y sus nuevos CPIs, se tiene que:
CPI (2) =
= 3.908
Como el tiempo de ciclo no vara se tiene que:
TCPU (2) = CPI (2) * NI (2) * TCICLO (2) = 3.908 * 0.8925 * NI (1) * TCICLO (1) = 3.488 * NI (1) * TCICLO (1)
Como se puede ver, en este caso, TCPU(1) > TCPU(2), y por lo tanto se mejoran las prestaciones, pero si el
porcentaje de instrucciones sustituidas fuese un 20% en lugar de un 25%, en ese caso, se puede ver que
CPI(2) = 3.9302
NI(2) = 0.914*NI(1)
y, por tanto:
TCPU (2) = CPI (2) * NI (2) * TCICLO (2) = 3.9302 * 0.914 * NI (1) * TCICLO (1) = 359
. * NI (1) * TCICLO (1)
Ahora, en cambio, la segunda opcin no mejora la primera. Como conclusin, se puede indicar que una
determinada decisin de diseo puede suponer una mejora en el rendimiento del computador
correspondiente segn sean las caractersticas de las distribuciones de instrucciones en los programas que
constituyen la carga de trabajo caracterstica del computador.
Por tanto, queda clara tambin la importancia que tiene el proceso de definicin de conjuntos de
benchmarks para evaluar las prestaciones de los computadores, y las dificultades que pueden surgir para
que los fabricantes se pongan de acuerdo en aceptar un conjunto de benchmarks estndar.
Ejercicio 7. Se ha diseado un compilador para la mquina LOAD/STORE del problema anterior. Ese
compilador puede reducir en un 50% el nmero de operaciones con la ALU, pero no reduce el nmero de
LOADs, STOREs, y BRANCHs. Suponiendo que la frecuencia de reloj es de 50 Mhz. Cul es el nmero de
MIPS y el tiempo de ejecucin que se consigue con el cdigo optimizado? Comprelos con los
correspondientes del cdigo no optimizado.
Solucin
Datos del ejercicio:
Alternativa 1
Ii
CPIi1
LOAD
4
STORE
4
ALU
3
BR
4
TOTAL
1
8 / 14
Arquitectura de Computadores
Alternativa 2
CPIi2
Ii
LOAD
4
STORE
4
ALU r-r
3
BR
4
TOTAL
2
Fraccin fi (NIi2=fi2*NI1)
0,21
0,12
0,5 * 0,43 = 0,215
0,24
0,785
Comentarios
TCPU(1)=CPI(1)*NI(1)*Tciclo=3.57*NI(1)*Tciclo
y, por lo tanto
MIPS (1) =
NI (1)
NI (1)
f ( MHz) 50
=
= 14.005 MIPS
6 =
6 =
TCPU (1)( sg.) *10
(CPI (1) * NI (1) * TCICLO (1)) *10
CPI (1) 357
.
TCPU(1)=CPI(1)*NI(1)*Tciclo=3.57*NI(1)*Tciclo
En segundo lugar se calcula el tiempo de CPU para la alternativa 2. Para ello, se tiene que:
CPI(2)=[0.215*3+(0.21+0,12+0,24)*4]*NI(1)/NI(2)= (0,645+0.57*4)*NI(1)/NI(2) = (0.645+2.28)*NI(1)/NI(2)=
2.925*NI(1)/NI(2)
y, por tanto:
TCPU(2)=CPI(2)*NI(2)*Tciclo=2.925*NI(1)/NI(2) *NI(2)*Tciclo = 2.925*NI(1)*Tciclo
MIPS(2) = NI(2) / (CPI(2)*NI(2)*Tciclo*106)=f(MHz)/CPI(2) = 50 * 0.785/ 2.925 MIPS = 13,4188 MIPS
En la Tabla de la Alternativa 2 se muestra que se reduce el nmero de operaciones con la ALU a la mitad, y
que, por tanto, tambin se reduce el nmero total de instrucciones a ejecutar, NI(2):
NI(2)=0.785*NI(1)
Teniendo en cuenta la nueva distribucin de instrucciones y sus nuevos CPIs, se tiene que:
CPI (2) =
0.24
012
0.21
0.43 0.43 / 2
.
* 4 = 3.72
*4 +
*4 +
*3+
0.785
0.785
0.785
0.785
MIPS (2) =
NI (2)
NI (2)
f ( MHz)
50
=
=
=
= 13.44 MIPS
TCPU (2)( sg.) * 106 (CPI (2) * NI (2) * TCICLO (2)) *106
CPI (2)
3.72
Como se puede ver, se consigue una reduccin de tiempo de ejecucin (TCPU(2) es un 21% menor que
TCPU(1)), pero sin embargo, el nmero de MIPS para la segunda opcin es menor. Se tiene aqu un ejemplo de
que los MIPS dan una informacin inversamente proporcional a las prestaciones. La razn de esta situacin,
en este caso, es que se ha reducido el nmero de las instrucciones que tenan un menor valor de CPI. As, se
incrementan las proporciones de las instrucciones ms lentas en el segundo caso (por eso crece el valor de
CPI), y claro, el valor de los MIPS se reduce. No obstante, hay que tener en cuenta que aunque las
instrucciones que se ejecutan son ms lentas, hay que ejecutar un nmero mucho menor de instrucciones, y
al final, el tiempo se reduce.
9 / 14
Ejercicio 8.
Ejercicio 9.
Ejercicio 10. Suponga que en el cdigo siguiente N=109 , y que a[] es un array de nmeros de 32 bits en
coma flotante y b es otro nmero de 32 bits en coma flotante:
for (i=0; i<N; i++)
a[i+2]=(a[i+2]+a[i+1]+a[i])*b
Teniendo en cuenta que el programa debe completarse en menos de 0.5 segundos, conteste a las siguientes
cuestiones:
(a) Cuntos GFLOPS se necesitan como mnimo suponiendo que el producto y la suma en coma
flotante tienen un coste similar?
(b) Suponga que el programa en ensamblador tiene 7N instrucciones y que se ha ejecutado en un
procesador de 32 bits a 2 GHz. Cual es el nmero medio de instrucciones que el procesador tiene
que poder completar por ciclo?.
(c) Estimando que el programa pasa el 75% de su tiempo de ejecucin realizando operaciones en coma
flotante, cunto disminuira como mucho el tiempo de ejecucin si se redujesen un 75% los
tiempos de las unidades de coma flotante?
Solucin
(a) Puesto que hay tres operaciones en coma flotante por iteracin (dos sumas y un producto, con igual
coste para el producto y la suma) el nmero de operaciones en coma flotante a realizar tras las N iteraciones
es Nflot=3*N = 3* 109.
Por lo tanto, GFLOPS = Nflot/(t*109) donde t es el tiempo en segundos. As:
GFLOPS = Nflot/(t*109) = 3* 109/0.5* 109 = 6 GFLOPS
(b) Si el programa tiene NI= 7N = 7 109 instrucciones, teniendo en cuenta que
T = NI*CPI*Tciclo = NI*CPI/f = (7 109 instrucciones) * CPI / (2*109 ciclos/s) = 0.5 s
Al despejar CPI = 0.5/3.5, y el nmero de instrucciones por ciclo IPC = 1/CPI = 7
(c) Para resolver la ltima cuestin se puede recurrir a la ley de Amdahl. En este caso f=0.25 es la fraccin de
tiempo en el que no se puede aprovechar la mejora; el incremento de velocidad es p=1/0.25 (si el tiempo de
las operaciones en coma flotante era t, el tiempo de las operaciones en coma flotante con la mejor es 0.25t,
dado que se ha reducido un 75%); y la mejora de velocidad que se observara se obtiene aplicando la ley de
Amdahl, sustituyendo convenientemente:
S p /(1+f(p-1)) = 4 / (1+0.25*3) = 2.286
Como S = Tsin_mejora/Tcon_mejora 2.286 se tiene que Tsin_mejora/2.286 = 0.437*Tsin_mejora Tcon_mejora. Es decir, el
tiempo con la mejora podra pasar a ser el 43.7% del tiempo sin la mejora.
10 / 14
Arquitectura de Computadores
Ejercicio 11.
Cuestiones
Cuestin 1. Indique cul es la diferencia fundamental entre una arquitectura CC-NUMA y una arquitectura
SMP.
Solucin.
Ambos, SMP y CC-NUMA, son multiprocesadores, es decir, comparten el espacio de direcciones fsico.
Tambin en ambos se mantiene coherencia entre caches de distintos procesadores (CC- Cache-Coherence).
En un SMP (Symmetric Multiprocessor) la memoria se encuentra centralizada en el sistema a igual distancia
(latencia) de todos los procesadores mientras que, en un CC-NUMA (Cache-Coherence Non Uniform Memory
Access), cada procesador tiene fsicamente cerca un conjunto de sus direcciones de memoria porque los
mdulos de memoria estn fsicamente distribuidos entre los procesadores y, por tanto, los mdulos no
estn a igual distancia (latencia) de todos los procesadores.
La memoria centralizada del SMP hace que el tiempo de acceso a una direccin de memoria en un SMP sea
igual para todos los procesadores y el tiempo de acceso a memoria de un procesador sea el mismo
independientemente de la direccin a la que se est accediendo; por estos motivos se denomina
multiprocesador simtrico (Symmetric Multiprocessor) o UMA (Uniform Memory Access).
Los mdulos de memoria fsicamente distribuidos entre los procesadores de un CC-NUMA hacen que el
tiempo de acceso a memoria dependa de si el procesador accede a una direccin de memoria que est en la
memoria fsica que se encuentra en el nodo de dicho procesador (cercana, por tanto, al procesador que
accede) o en la memoria fsica de otro nodo. Por este motivo el acceso no es uniforme o simtrico y recibe el
nombre de NUMA.
Cuestin 4. Indique qu niveles de paralelismo implcito en una aplicacin puede aprovechar un PC con un
procesador de 4 cores, teniendo en cuenta que cada core tiene unidades funcionales SIMD (tambin
llamadas unidades multimedia) y una microarquitectura segmentada y superscalar. Razone su respuesta.
11 / 14
Solucin.
Paralelismo a nivel de operacin. Al ser una arquitectura con paralelismo a nivel de instruccin por tener una
arquitectura segmentada y superescalar, puede ejecutar operaciones en paralelo, luego puede aprovechar el
paralelismo a nivel de operacin.
Paralelismo a nivel de bucle (paralelismo de datos). Las operaciones realizadas en las iteraciones del bucle
sobre vectores y matrices se podran implementar en las unidades SIMD de los cores, lo que reducira el
nmero de iteraciones de los bucles. Adems las iteraciones de los bucles, si son independientes, se podran
repartir entre los 4 cores.
Paralelismo a nivel de funcin. Las funciones independientes se podran asignar a cores distintos para que se
puedan ejecutar a la vez.
Paralelismo a nivel de programa. Los programas del mismo o distinto usuario se pueden asignar a distintos
cores para as ejecutarlos al mismo tiempo.
Cuestin 5. Si le dicen que un ordenador es de 20 GIPS puede estar seguro que ejecutar cualquier
programa de 20000 instrucciones en un microsegundo?
Solucin. Los MIPS se definen como el nmero de instrucciones que puede ejecutar un procesador (en
millones) divididos por el tiempo que tardan en ejecutarse.
MIPS =
Numero _ de _ Instrucciones
tiempo( sg.) *106
Los MIPS suelen utilizarse como medida de las prestaciones de un procesador, pero realmente slo
permiten estimar la velocidad pico del procesador, que solo permitira comparar procesadores con el mismo
repertorio de instrucciones en cuanto a sus velocidades pico. Esto se debe a que esta medida
-
De ah que incluso se haya dicho que MIPS significa Meaningless Information of Processor Speed
(informacin sin sentido de la velocidad del procesador).
En relacin a la pregunta que se plantea, la respuesta puede tener en cuenta dos aspectos:
-
12 / 14
Arquitectura de Computadores
Cuestin 7. Deduzca la ley de Amdahl para la mejora de la velocidad de un procesador suponiendo que hay
una probabilidad f de no utilizar un recurso del procesador cuya velocidad se incrementa en un factor p.
Solucin: El tiempo necesario para ejecutar un programa en el procesador sin la mejora es igual a:
Tsin_mejora=f*Tsin_mejora+(1-f)*Tsin_mejora
donde f*Tsin_mejora es el tiempo que no podra reducirse al aplicar la mejora, y (1-f)*Tsin_mejora es el tiempo que
podra reducirse como mximo en un factor igual a p al aplicar la mejora. Por tanto, el tiempo al aplicar la
mejora sera:
Tcon_mejora f*Tsin_mejora+((1-f)*Tsin_mejora)/p
Segn esto, la ganancia de velocidad que se podra conseguir sera:
S = Tsin_mejora/Tcon_mejora Tsin_mejora/( f*Tsin_mejora+((1-f)*Tsin_mejora)/p) = 1/(f + (1-f)/p) = p/(1+f(p-1))
y as llegamos a la expresin que se utiliza para describir la Ley de Amdahl: S p/(1+f(p-1))
Cuestin 8. Es cierto que para una determinada mejora realizada en un recurso se observa
experimentalmente que, al aumentar el factor de mejora, llega un momento en que se satura el incremento
de velocidad que se consigue? (Justifique la respuesta)
Solucin: Para responder a esta pregunta recurrimos a la ley de Amdahl, que marca un lmite superior a la
mejora de velocidad. Como se tiene que S p/(1+f(p-1)), donde p es el factor de mejora y f la fraccin de
tiempo sin la mejora en el que dicha mejora no puede aplicarse, se puede calcular la derivada de p/(1+f(p-1))
con respecto a p, y ver qu pasa cuando cambia p. As:
d(p/(1+f(p-1))/dp = ((1+f(p-1))-pf)/(1+f(p-1))2 = (1-f)/ (1+f(p-1))2
y como puede verse, a medida que aumenta p el denominador se va haciendo mayor, y como (1-f) se
mantiene fijo, la derivada tiende a cero. Eso significa que la pendiente de la curva que describe la variacin
de p/(1+f(p-1)) con p va hacindose igual a cero y por lo tanto no aumenta la ganancia de velocidad: se
13 / 14
satura, o lo que es lo mismo, llega a una asntota que estar situada en 1/f (que es al valor al que tiende
p/(1+f(p-1) cuando p tiende a infinito).
Cuestin 9. Es cierto que la cota para el incremento de velocidad que establece la ley de Amdahl crece a
medida que aumenta el valor del factor de mejora aplicado al recurso? (Justifique la respuesta).
Solucin: La respuesta a esta pregunta se deduce de la misma expresin de la derivada de la cota que
establece la ley de Amdahl, calculada al responder la cuestin 4:
d(p/(1+f(p-1))/dp = ((1+f(p-1))-pf)/(1+f(p-1))2 = (1-f)/ (1+f(p-1))2
dado que (1-f) es positivo (solo en el peor de los casos, si no se pudiera aplicar el factor de ganancia a
ninguna parte del programa, tendramos que (1-f)=0 y no se obtendra ninguna ganancia de velocidad), y
puesto que (1+f(p-1))2 siempre es positivo, la derivada es positiva. Eso significa que 1+f(p-1) crece al crecer p.
Lo que ocurre es que, tal y como se ha visto en la cuestin 4, este crecimiento es cada vez menor (tiende a
0).
Cuestin 10. Qu es mejor, un procesador superescalar capaz de emitir cuatro instrucciones por ciclo, o un
procesador vectorial cuyo repertorio permite codificar 8 operaciones por instruccin y emite una instruccin
por ciclo? (Justifique su respuesta).
Solucin: Considrese una aplicacin que se codifica con N instrucciones de un repertorio de instrucciones
escalar (cada instruccin codifica una operacin). La cota inferior para el tiempo que un procesador
superescalar podra tardar en ejecutar ese programa sera
Tsuperescalar = (N*Tciclo_superesc)/4
Un procesador vectorial ejecutara un nmero de instrucciones menor puesto que su repertorio de
instrucciones permitira codificar hasta ocho operaciones iguales (sobre datos diferentes) en una instruccin.
Si suponemos que la aplicacin permite que todas las operaciones que hay que ejecutar se puedan
empaquetar en instrucciones vectoriales, el procesador vectorial tendra que ejecutar N/8 instrucciones.
Por tanto, considerando tambin que el procesador vectorial consigue terminar instrucciones segn su
velocidad pico (como supusimos en el caso del superescalar), la cota inferior para el tiempo que tarda la
ejecucin del programa en el procesador vectorial sera:
Tvectorial = (N/8)*Tciclo_vectorial/1
Por tanto
Tsuperescalar / Tvectorial = 8*Tciclo_superesc/4*Tciclo_vectorial = 2 * Tciclo_superesc/Tciclo_vectorial
Segn esto, si los dos procesadores funcionan a la misma frecuencia, el procesador vectorial podra ser
mejor (siempre y cuando las hiptesis que se estn considerando de que estn procesando instrucciones
segn su mximo rendimiento se puedan considerar suficientemente aproximada a la realidad).
No obstante, hay que tener en cuenta que usualmente, los procesadores superescalares han sido los que
ms rpidamente han incorporado las mejoras tecnolgicas, y normalmente, los procesadores
superescalares funcionan a frecuencias ms altas que los procesadores vectoriales contemporneos. En el
ejemplo, si la frecuencia del superescalar fuera ms del doble de la del vectorial, sera mejor utilizar un
procesador superescalar.
14 / 14
Arquitectura de Computadores
Adems, hay que tener en cuenta que para que los procesadores vectoriales sean eficientes (se puedan
admitir las hiptesis en cuanto a codificacin de las operaciones y funcionamiento segn la velocidad pico)
es necesario que el programa tenga un alto grado de paralelismo de datos (son procesadores ms
especficos que los superescalares). Por eso, para dar una respuesta ms precisa habra que conocer ms
detalles de la carga de trabajo que se piensa ejecutar en los procesadores.
2 curso / 2 cuatr.
Grado en
Arquitectura de Computadores.
Algunos ejercicios resueltos
Tema 2. Programacin paralela
Ing. Informtica
Ejercicios
Procesadores
4
3
4
3
60%
TP
20%
1
20%
Tiempo
paralelo
0,6*Tp
0,2*Tp
TS ?
T S = 0 , 2 T P + 3 0 , 6 T P + 4 0 , 2 T P = (0 , 2 + 1,8 + 0 ,8 ) T P = 2 ,8 T P = 2 ,8 40 s = 112 s
2 / 12
Arquitectura de Computadores
S ( 4) =
TS
2,8 T P (4 )
=
= 2,8
T P (4 )
T P (4 )
Eficiencia, E(p)?:
E (4) =
S ( p ) S ( 4 ) 2 ,8
=
=
= 0 ,7
p
4
4
Ejercicio 2.
Ejercicio 3. Cul es fraccin de cdigo paralelo de un programa secuencial que, ejecutado en paralelo en 8
procesadores, tarda un tiempo de 100 ns, durante 50ns utiliza un nico procesador y durante otros 50 ns
utiliza 8 procesadores (distribuyendo la carga de trabajo por igual entre los procesadores)?
Solucin
Datos del programa:
Procesadores
8
7
6
5
4
3
2
1
1
50ns
TP
Tiempo
paralelo
50ns
50ns
fp =
50ns
fP
8 50 ns
8 50 ns
8
=
=
TS
50 ns + 8 50 ns
9
Ejercicio 4.
Ejercicio 5.
Ejercicio 6.
Ejercicio 7. Se quiere paralelizar el siguiente trozo de cdigo:
{Clculos antes del bucle}
for( i=0; i<w; i++) {
Cdigo para i
}
{Clculos despus del bucle}
Los clculos antes y despus del bucle suponen un tiempo de t1 y t2, respectivamente. Una iteracin del ciclo
supone un tiempo ti. En la ejecucin paralela, la inicializacin de p procesos supone un tiempo k1p (k1
3 / 12
constante), los procesos se comunican y se sincronizan, lo que supone un tiempo k2p (k2 constante); k1p+ k2p
constituyen la sobrecarga.
(a) Obtener una expresin para el tiempo de ejecucin paralela del trozo de cdigo en p procesadores
(Tp).
(b) Obtener una expresin para la ganancia en velocidad de la ejecucin paralela con respecto a una
ejecucin secuencial (Sp).
(c) Tiene el tiempo Tp con respecto a p una caracterstica lineal o puede presentar algn mnimo? Por
qu? En caso de presentar un mnimo, para qu nmero de procesadores p se alcanza?
Solucin
Datos del ejercicio:
{Clculos antes del bucle}
for( i=0; i<w; i++) {
Cdigo para i
}
{clculos despus del bucle}
t1
ti
t2
S ( p, w) =
TS
=
T P ( p , w)
t + w ti
w
t + ti + k p
p
w
TP ( p , w) = t + ti + k p
p
(1)
En la expresin (1), el trmino englobado en lnea continua, o tiempo de clculo paralelo, tiene tendencia a
decrecer con pendiente que va disminuyendo conforme se incrementa p (debido a que p est en el p
divisor), y el trmino englobado con lnea discontinua o tiempo de sobrecarga (kxp), crece conforme se
incrementa p con pendiente k constante (ver ejemplos en Figura 3, Figura 4, Figura 5 y Figura 6). Las
oscilaciones en el tiempo de clculo paralelo se deben al redondeo al entero superior del cociente w/p, pero
la tendencia, como se puede ver en las figuras, es que Tp va decreciendo. Dado que la pendiente de la
sobrecarga es constante y que la pendiente del tiempo de clculo decrece conforme se incrementa p, llega
un momento en que el tiempo de ejecucin en paralelo pasa de decrecer a crecer.
4 / 12
Arquitectura de Computadores
TP(p)= 4 + 200/p 3 + 4p
_______
p=200*3/4 = 12,25
300
Tiempo clculo
Tiempo paralelo
Tiempo clculo
Tiempo sobrecarga
200
Tiempo sobrecarga
200
Tiempo paralelo
250
Tiempo paralelo
150
150
100
100
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
30
28
26
24
22
20
18
16
14
12
10
0
8
0
6
50
50
Tiempo paralelo
250
300
TP (p)= 4 + 50/p 30 + 4p
______
p=50*30/4 = 19,36
Figura 3. Tiempo de ejecucin paralelo para un caso Figura 4. Tiempo de ejecucin paralelo para un caso particular
particular en el que w=200, ti es 3 unidades de
en el que w=50, ti es 30 unidades de tiempo, t son 4
tiempo, t son 4 unidades de tiempo y k son 4
unidades de tiempo y k son 4 unidades de tiempo. El
unidades de tiempo. El mnimo se alcanza para p=12
mnimo se alcanza para p=17. Aqu el efecto del
redondeo se ve ms claramente que en la Figura 3
300
TP (p)= 4 + 50/p 20 + 4p
______
p=50*20/4 = 15,81
600
Tiempo paralelo
250
500
Tiempo paralelo
Tiempo clculo
Tiempo sobrecarga
T iem p o p aralelo
Tiempo clculo
Tiempo sobrecarga
400
Tie m po pa ra le lo
200
150
300
100
200
50
100
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Figura 5. Tiempo de ejecucin paralelo para un caso Figura 6. Tiempo de ejecucin paralelo para un caso particular
particular en el que w=50, ti es 20 unidades de
en el que w=30, ti es 32 unidades de tiempo, t son 4
tiempo, t son 4 unidades de tiempo y k son 4
unidades de tiempo y k son 15 unidades de tiempo. El
unidades de tiempo. El mnimo se alcanza para p=17.
mnimo se alcanza para p=10.
Se puede encontrar el mnimo analticamente igualando a 0 la primera derivada de Tp. De esta forma se
obtiene los mximos y mnimos de una funcin continua. Para comprobar si en un punto encontrado de esta
forma hay un mximo o un mnimo se calcula el valor de la segunda derivada en ese punto. Si, como
resultado de este clculo, se obtiene un valor por encima de 0 hay un mnimo, y si, por el contrario, se
obtiene un valor por debajo de 0 hay un mximo. Para realizar el clculo se debe eliminar el redondeo de la
expresin (1) (ms abajo se comentar la influencia del redondeo en el clculo del mnimo):
T P ( p, w) = t +
5 / 12
w
ti + k p
p
T ' P ( p , w) = 0
w
ti + k
p2
w
ti = k
p2
p=
w ti
k
( 2)
El resultado negativo de la raz se descarta. En cuanto al resultado positivo, debido al redondeo, habr que
comprobar para cul de los naturales prximos al resultado obtenido (incluido el propio resultado si es un
nmero natural) se obtiene un menor tiempo. Debido al redondeo hacia arriba de la expresin (1), se
deberan comprobar necesariamente:
1.
El natural p menor o igual y ms alejado al resultado p generado con (2) para el que w = w
p'
(obsrvese, que en el ejemplo de la Figura 4, aunque de (2) se obtiene 19,36, el p con menor tiempo
es 17 debido al efecto del redondeo) y
2. El natural p mayor y ms prximo al p generado con (2) para el que w = w -1 (obsrvese, que en
p'
el ejemplo de la Figura 5, aunque de (2) se obtiene 15,81, el p con menor tiempo es 17 debido al
redondeo).
En cualquier caso, el nmero de procesadores que obtengamos debe ser menor que w (que es el grado de
paralelismo del cdigo).
La segunda derivada permitir demostrar que se trata de un mnimo:
T P ( p , w) = t +
T ' ' P ( p , w) = +
w
ti + k p
p
2 p w ti
p
+0=
2 w ti
p3
>
La segunda derivada es mayor que 0, ya que w, p y ti son mayores que 0; por tanto, hay un mnimo.
Ejercicio 8.
Ejercicio 9. Se va a paralelizar un decodificador JPEG en un multiprocesador. Se ha extrado para la aplicacin
el siguiente grafo de tareas que presenta una estructura segmentada (o de flujo de datos):
Entrada: Bloque de la
imagen a decodificar
(supone 8x8 pixels de
la imagen)
T3
T1
T2
T4
T5
Salida: Bloque
decodificado de 8x8
pixels
La tareas 1, 2 y 5 se ejecutan
en un tiempo igual a t,
mientras que las tareas 3 y 4
suponen 1,5t
El decodificador JPEG aplica el grafo de tareas de la figura a bloques de la imagen, cada uno de 8x8 pxeles. Si
se procesa una imagen que se puede dividir en n bloques de 8x8 pxeles, a cada uno de esos n bloques se
aplica el grafo de tareas de la figura. Obtenga la mayor ganancia en prestaciones que se puede conseguir
paralelizando el decodificador JPEG en (suponga despreciable el tiempo de comunicacin/sincronizacin): (a)
5 procesadores, y (b) 4 procesadores. En cualquier de los dos casos, la ganancia se tiene que calcular
suponiendo que se procesa una imagen con un total de n bloques de 8x8 pxeles.
Solucin
6 / 12
Arquitectura de Computadores
Para obtener la ganancia se tiene que calcular el tiempo de ejecucin en secuencial para un tamao del
problema de n bloques Ts(n) y el tiempo de ejecucin en paralelo para un tamao del problema de n y los p
procesadores indicados en (a), (b) y (c) Tp(p,n).
Tiempo de ejecucin secuencial Ts(n). Un procesador tiene que ejecutar las 5 tareas para cada bloque de
8x8 pxeles. El tiempo que dedica el procesador a cada bloque es de 3t (tareas 1, 2 y 5) + 3 t (tareas 2 y 4) =
6t, luego para n bloques el tiempo de ejecucin secuencial ser el siguiente:
T S = n (6 t )
(a) Tiempo de ejecucin paralelo y ganancia en prestaciones para 5 procesadores Tp(5,n), S(5,n). Cada
tarea se asigna a un procesador distinto, por tanto todas se pueden ejecutar en paralelo (ver asignacin de
tareas a procesadores en la Tabla 1). El tiempo de ejecucin en paralelo en un pipeline consta de dos
tiempos: el tiempo que tarda en procesarse la primera entrada (ver celdas con fondo verde en la tabla) + el
tiempo que tardan cada uno del resto de bloques (entradas al cauce) en terminar. Este ltimo depende de la
etapa ms lenta, que en este caso es la etapa 3 (1,5t frente a t en el resto de etapas).
Ts (n)
n 6t
=
grande.
Tabla 1. Asignacin de tareas a procesadores, ocupacin de las etapas del cauce para los primeros bloques
procesados y tiempo de procesamiento del primer bloque y de los siguientes para 5 procesadores
P3(1,5t)
T3
P1 (t)
P2 (t)
T1
T2
P5 (t)
P4(1,5t)
T5
T4
Etapa 1 (t)
T1 (procesador
P1)
0 - Bloque 1 - t
t - Bloque 2 - 2t
2t - Bloque 3 - 3t
3t - Bloque 4 - 4t
4t - Bloque 5 - 5t
5t - Bloque 6 - 6t
6t - Bloque 7 - 7t
Etapa 2 (t)
T2 (procesador
P2)
t - Bloque 1 - 2t
2t- Bloque 2 - 3t
3t - Bloque 3 - 4t
4t - Bloque 4 - 5t
5t - Bloque 5 - 6t
6t - Bloque 6 - 7t
Etapa 3 (1,5t)
T3 (procesador P3) y
T4 (procesador P4)
Etapa 4 (t)
T5 (procesador P5)
2t - Bloque 1 - 3,5t
3,5t - Bloque 2 - 5t
3,5t - Bloque 1 - 4,5t
5t - Bloque 3 - 6,5t
5t - Bloque 2 - 6t
6,5t - Bloque 4 - 8t
6,5t - Bloque 3 - 7,5t
8t - Bloque 5 - 9,5t
8t - Bloque 4 - 9t
Terminado
Tiempo procesa.
Procesamiento
Bloque 1 (4,5t)
Bloque 1
Bloque 2
Bloque 3
Bloque 4
t + t + 1,5t + t = 4,5t
4,5t + 1,5t = 6t
6t + 1,5t = 7,5t
7,5t + 1,5t = 9t
(b) Tiempo de ejecucin paralelo y ganancia en prestaciones para 4 procesadores Tp(4,n), S(4,n). Se
deben asignar las 5 tareas a los 4 procesadores de forma que se consiga el mejor tiempo de ejecucin
paralelo, es decir, el menor tiempo por bloque una vez procesado el primer bloque. Una opcin que nos
lleva al menor tiempo por bloque consiste en unir la Etapa 1 y 2 del pipeline del caso (a) en una nica etapa
asignando T1 y T2 a un procesador (ver asignacin de tareas a procesadores en la Tabla 2). Con esta
asignacin la etapa ms lenta supone 2t (Etapa 1); habra adems una etapa de 1,5 t (Etapa 2) y otra de t
(Etapa 3). Si, por ejemplo, se hubieran agrupado T3 y T4 un procesador la etapa ms lenta supondra 3t.
T P ( 4, n ) = 4,5t + ( n 1) 2t = 2,5t + n 2t
Grado en Ingeniera Informtica
S ( 4, n ) =
7 / 12
Ts (n)
n 6t
=
grande.
Tabla 2. Asignacin de tareas a procesadores, ocupacin de las etapas del cauce para los primeros bloques
procesados y tiempo de procesamiento del primer bloque y de los siguientes para 4 procesadores
P2(1,5t)
T3
P1 (2t)
T1
P4 (t)
T2
T5
P3(1,5t)
T4
Etapa 1 (2t)
T1 y T2 (procesador P1)
Etapa 2 (1,5t)
T3 (procesador P2) y
T4 (procesador P3)
0 - Bloque 1 - 2t
2t - Bloque 2 - 4t
4t - Bloque 3 - 6t
6t - Bloque 4 - 8t
8t - Bloque 5 - 10t
10t - Bloque 6 - 12t
12t - Bloque 7 - 14t
Etapa 3 (t)
T5 (procesador P4)
Terminado
Tiempo procesamiento
Procesamiento Bloque 1
(4,5t)
2t - Bloque 1 - 3,5t
4t- Bloque 2 - 5,5t
3,5t - Bloque 1 - 4,5t
6t - Bloque 3 - 7,5t
5,5t - Bloque 2 - 6,5t
8t - Bloque 4 - 9,5t
7,5t - Bloque 3 - 8,5t
10t - Bloque 5 - 11,5t
9,5t - Bloque 4 - 10,5t
12t - Bloque 6 - 13,5t
11,5t - Bloque 5 - 12,5t
Bloque 1
Bloque 2
Bloque 3
Bloque 4
Bloque 5
2t + 1,5t + t =
4,5t + 2t =
6,5t + 2t =
8,5t + 2t =
10,5t + 2t =
4,5t
6,5t
8,5t
10,5t
12,5t
Ejercicio 10. Se quiere implementar un programa paralelo para un multicomputador que calcule la siguiente
expresin para cualquier x (es el polinomio de interpolacin de Lagrange): P( x) = (bi Li ( x) ) , donde
n
i =0
Li ( x) =
(x a0 ) ...(x ai 1 ) (x ai +1 ) ...(x an ) =
(x a )
j
j =0
j i
ki
i = 0,1,..., n
ki
n
i = 0,1,..., n
j =0
j i
Inicialmente ki, ai y bi se encuentra en el nodo i y x en todos los nodos. Slo se van a usar funciones de
comunicacin colectivas. Indique cul es el nmero mnimo de funciones colectivas que se pueden usar,
cules seran y en qu orden se utilizaran y para qu se usan en cada caso.
Solucin
Los pasos ((1) a (5)) del algoritmo para n=3 y un nmero de procesadores de n+1 seran los siguientes:
Pr.
P0
P1
P2
P3
Situacin
Inicial
a0
a1
a2
a3
x
x
x
x
k0
k1
k2
k3
b0
b1
b2
b3
(x-a0)
(x-a1)
(x-a2)
(x-a3)
(x-a0).(x-a1).(x-a2).(x-a3)
(x-a0).(x-a1).(x-a2).(x-a3)
(x-a0).(x-a1).(x-a2).(x-a3)
(x-a0).(x-a1).(x-a2).(x-a3)
i =0
8 / 12
Arquitectura de Computadores
Pr.
(3) Clculo de todos los Li(x) (4) Clculo en paralelo Ci =bi . Li (5) Reduccin del contenido de Ci
en paralelo Li= Bi./( Ai. ki)
(bi . Li (x) se obtiene en Pi)
con resultado en P0
(Li(x) se obtiene en Pi)
(P(x) se obtiene en P0)
P0
(x-a1).(x-a2).(x-a3)/ k0
b0 .(x-a1).(x-a2).(x-a3)/ k0
P1
P2
P3
(x-a0).(x-a2).(x-a3)/ k1
(x-a0).(x-a1). (x-a3)/ k2
(x-a0).(x-a1).(x-a2)/ k3
b1 .(x-a0).(x-a2).(x-a3)/ k1
b2 .(x-a0).(x-a1). (x-a3)/ k2
b3 .(x-a0).(x-a1).(x-a2)/ k3
i =0
i =0
P = (C i ) = (bi Li )
Como se puede ver en el trazado del algoritmo para n=3 mostrado en las tablas, se usan un total de 2
funciones de comunicacin colectivas (pasos (2) y (5) en la tabla). En el paso (2) del algoritmo se usa una
operacin de todos reducen para obtener en todos los procesadores los productos de todas las restas (xai). En el paso (5) y ltimo se realiza una operacin de reduccin para obtener las sumas de todos los
productos (bi x Li) en el proceso 0.
Ejercicio 11. (a) Escriba un programa secuencial con notacin algortmica (podra escribirlo en C) que
determine si un nmero de entrada, x, es primo o no. El programa imprimir si es o no primo. Tendr
almacenados en un vector, NP, los M nmeros primos entre 1 y el mximo valor que puede tener tener un
nmero de entrada al programa.
(b) Escriba una versin paralela del programa anterior para un multicomputador usando un estilo de
programacin paralela de paso de mensajes. El proceso 0 tiene inicialmente el nmero x y el vector NP en su
memoria e imprimir en pantalla el resultado. Considere que la herramienta de programancin ofrece
funciones send()/receive() para implementar una comunicacin uno-a-uno asncrona, es decir, con funcin
send(buffer,count,datatype,idproc,group)
no
bloqueante
y
receive(buffer,count,datatype,idproc,group) bloqueante. En las funciones send()/receive() se
especifica:
datatype: tipo de los datos a enviar o recibir (entero de 32 bits, entero de 64 bits, flotante de 32
reciben.
bits, flotante de 64 bits, ).
Solucin
(a) Programa secuencial que determina si x es o no primo
Versin 1 Pre-condicin
x: nmero de entrada {2,,MAX_INPUT}. MAX_INPUT: mximo valor de la entrada
M: nmero de primos entre 2 y MAX_INPUT (ambos incluidos).
NP: vector con M+1 componentes (los M n primos desde 2 hasta MAX_INPUT en NP[0] hasta NP[M1], a NP[M] se asignar en el cdigo x+1)
Versin 1 Pos-condicin
Imprime en pantalla si el nmero x es primo o no
9 / 12
Cdigo
Versin 1 A
Versin 1 B
if (x>NP[M-1]) {
print(%u supera el mximo primo a
detectar %u \n, x, NP[M-1]);
exit(1);
}
NP[M]=x+1;
i=0;
while (x<NP[i]) do i++;
if (x>NP[M-1]) {
print(%u supera el mximo primo a
detectar %u \n, x, NP[M-1]);
exit(1);
}
NP[M]=x+1;
if (x==NP[i])
printf(%u ES primo\n, x);
else printf(%u NO ES primo\n, x);
if (x==NP[i])
printf(%u ES primo\n, x);
else printf(%u NO es primo\n, x);
Versin 2 Pos-condicin
Imprime en pantalla si el nmero x es primo o no
Cdigo
Versin 2
if (x>NP[M-1]) {
print(%u supera el mximo primo a detectar %u \n, x, NP[M-1]);
exit(1);
}
xr = sqrt(x);
for ( i=0 ; (NP[i]<=xr) && (x % NP[i]!=0); i++) {} ; // % = mdulo
if (NP[i]<=xr) printf(%u ES primo, x);
else printf(%u NO ES primo, x);
10 / 12
Arquitectura de Computadores
Se van a repartir las iteraciones del bucle entre los procesadores del grupo. Todos los procesos ejecutan el
mismo cdigo
Pre-condicin
x: nmero de entrada {2,,MAX_INPUT}; MAX_INPUT: mximo valor de la entrada
xr: almacena la raz cuadrada de x (slo se usa en la versin 2)
M: nmero de primos entre 2 y MAX_INPUT (ambos incluidos)
grupo: identificador del grupo de procesos que intervienen en la comunicacin.
num_procesos: nmero de procesos en grupo.
idproc: identificador del proceso (dentro del grupo de num_procesos procesos) que ejecuta el cdigo
tipo: tipo de los datos a enviar o recibir
NP: vector con los M n primos entre 2 y MAX_INPUT (en la versin 1 tendr M+1 componentes)
b, baux: variables que podrn tomar dos valores 0 (=false) o 1 (=true, si se localiza x en la lista de nmeros
primos)
Pos-condicin
Imprime en pantalla si el nmero x es primo o no
Cdigo
Versin 1
if (x>NP[i]) {
print(%u supera el mximo primo a
detectar %u \n, x, NP[M-1]);
exit(1);
}
NP[M]=x+1;
Versin 2
if (x>NP[i]) {
print(%u supera el mximo primo a
detectar %u \n, x, NP[M-1]);
exit(1);
}
//Difusin de x y NP
if (idproc==0)
for (i=1; i<num_procesos) {
send(NP,M+1,tipo,i,grupo);
send(x,1,tipo,i,grupo);
}
else {
receive(NP,M+1,tipo,0,grupo);
receive(x,1,tipo,0,grupo);
}
//Difusin de x y NP
if (idproc==0)
for (i=1; i<num_procesos) {
send(NP,M,tipo,i,grupo);
send(x,1,tipo,i,grupo);
}
else {
receive(NP,M,tipo,0,grupo);
receive(x,1,tipo,0,grupo);
}
//Comunicacin resultados
if (idproc==0)
for (i=1; i<num_procesos) {
receive(baux,1,tipo,i,grupo);
b = b | baux;
}
else send(b,1,tipo,0,grupo);
//Comunicacin resultados
if (idproc==0)
for (i=1; i<num_procesos) {
receive(baux,1,tipo,i,grupo);
b = b | baux;
}
else send(b,1,tipo,0,grupo);
11 / 12
nr/num_procesos.
Ejercicio 12.
12 / 12
Arquitectura de Computadores
Ejercicio 13.
Ejercicio 14.
2 curso / 2 cuatr.
Grado en
Ing. Informtica
Arquitectura de Computadores.
Algunos ejercicios resueltos
Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Profesores responsables: Mancia Anguita, Julio Ortega
Licencia Creative Commons
Ejercicios
Ejercicio 1. En un multiprocesador SMP con 4 procesadores o nodos (N0-N3) basado en un bus, que
implementa el protocolo MESI para mantener la coherencia, supongamos una direccin de memoria incluida
en un bloque que no se encuentra en ninguna cache. Indique los estados de este bloque en las caches y las
acciones que se producen en el sistema ante la siguiente secuencia de eventos para dicha direccin:
1.
2.
3.
4.
5.
Solucin
Datos del ejercicio
Se accede a una direccin de memoria cuyo bloque k no se encuentra en ninguna cache, luego debe
estar actualizado en memoria principal y el estado en las caches se considera invlido.
Estado del bloque en las caches y acciones generadas ante los eventos que se refiere a dicho bloque
Hay 4 nodos con cache y procesador (N0-N3). Intervienen N1, N2 y N3. En la tabla se van a utilizar las
siguentes siglas y acrnimos:
MP: Memoria Principal.
PtLec(k): paquete de peticin de lectura del bloque k.
PtLecEx(k): paquete de peticin de lectura del bloque k y de peticin de acceso exclusivo al bloque k.
RpBloque(k): paquete de respuesta con el bloque k.
Se va a suponer que no existe en el sistema paquete de peticin de acceso exclusivo a un bloque sin
lectura (no existe PtEx).
ESTADO
INICIAL
N1) Invlido
N2) Invlido
N3) Invlido
EVENTO
P1 lee k
ACCIN
ESTADO
SIGUIENTE
N1)
Exclusivo
1.- N1 (el controlador de cache de N1) genera y deposita en
el bus una peticin de lectura del bloque k (PtLec(k)) porque N2) Invlido
N3) Invlido
no lo tiene en su cach vlido
2.-MP (el controlador de memoria de MP), al observar
PtLec(k) en el bus, genera la respuesta con el bloque
(RpBloque(k)).
2/6
Arquitectura de Computadores
N1) Exclusivo
N2) Invlido
N3) Invlido
P2 lee k
N1) Compartido
N2) Compartido
N3) Invlido
N1) Compartido
N2) Compartido
N3) Invlido
N1) Modificado
P1 escribe 1.- N1 genera peticin de lectura con acceso exclusivo del
bloque k (PtLecEx(k)) (suponemos que no hay peticin de N2) Invlido
en k
acceso exclusivo sin lectura, no hay PtEx). N1 modifica la N3) Invlido
copia de k que tiene en su cache y lo pasa a estado
modificado.
2.- N2 observa PtLecEx(k) y, como la peticin incluye acceso
exclusivo (Ex) a un bloque que tiene en su cache en estado
compartido, pasa su copia a estado invlido. MP genera
RpBloque(k) porque observa en el bus una peticin de k con
lectura (Lec), pero esta respuesta no se va a recoger del bus.
N1 no recoge RpBloque(k) depositada por la memoria
porque tiene el bloque vlido.
N1) Modificado
N2) Invlido
N3) Invlido
N1) Invlido
P2 escribe 1.- N2 genera peticin de lectura con acceso exclusivo de k
N2) Modificado
(PtLecEx(k))
en k
N3) Invlido
2.- N1 observa PtLecEx(k) y, como tiene el bloque en estado
modificado (es la nica copia vlida en todo el sistema),
inhibe la respuesta de MP y genera respuesta con el bloque
RpBloque (k), y adems, como el paquete pide acceso
exclusivo a k (Ex), invalida su copia del bloque k.
3.- N2 recoge RpBloque(k), introduce k en su cache, lo
modifica y lo pone en estado modificado
N1) Invlido
N2) Modificado
N3) Invlido
N1) Invlido
P3 escribe 1.- N3 genera peticin de lectura con acceso exclusivo de k
N2) Invlido
PtLecEx(k)
en k
N3) Modificado
2.- N2 observa PtLecEx(k) y, como tiene el bloque en estado
modificado, inhibe la respuesta de MP y genera respuesta
con el bloque RpBloque (k), y adems, como el paquete pide
acceso exclusivo a k (Ex), invalida su copia de k.
3.- N3 recoge RpBloque(k), introduce el k en su cache, lo
modifica y lo pone en estado modificado
Ejercicio 2. .
3/6
Ejercicio 3. .
Ejercicio 4. Supongamos que se va a ejecutar en paralelo el siguiente cdigo (inicialmente x e y son 0):
P2
P1
x=1;
x=2;
print y ;
y=1;
y=2;
print x ;
4/6
Arquitectura de Computadores
instrucciones anteriores que escriben en x (P1 en los puntos 1.1 y 1.2 del cdigo) o en y (P2 en los puntos
2.1 y 2.2). Esto es as porque no se garantiza el orden W->R y, por tanto, una lectura puede adelantar a
escrituras que estn antes en el cdigo secuencial. P1 puede leer y (1.3) antes de escribir en x 2 (1.2) o
incluso antes de escribir en x 1 (1.1). Igualmente P2 puede leer x (2.3) antes de escribir en y 2 (2.2) o antes
de escribir en y 1 (2.1).
Teniendo esto en cuenta P1 puede imprimir 1 o 2 o 0, y P2 1 o 2 o 0. Todas las combinaciones son posibles.
Ejercicio 5.
Ejercicio 6. .
Ejercicio 7. .
Ejercicio 8. .
Ejercicio 9. .
Ejercicio 10. Se quiere paralelizar el siguiente ciclo de forma que la asignacin de iteraciones a los
procesadores disponibles se realice en tiempo de ejecucin (dinmicamente):
For (i=0; i<100; i++) {
Cdigo que usa i
}
Nota: Considerar que las iteraciones del ciclo son independientes, que el nico orden no garantizado por el
sistema de memoria es W->R, que las primitivas atmicas garantizan que sus accesos a memoria se realizan
antes que los accesos posteriores y que el compilador no altera el cdigo.
(a) Paralelizar el ciclo para su ejecucin en un multiprocesador que implementa la primitiva Fetch&Or
para garantizar exclusin mutua.
(b) Paralelizar el anterior ciclo en un multiprocesador que adems tiene la primitiva Fetch&Add.
Solucin
Se debe tener en cuenta que el nico orden que no garantiza el hardware es el orden W->R.
(a) Paralelizar el ciclo para su ejecucin en un multiprocesador que implementa la primitiva Fetch&Or para
garantizar exclusin mutua.
Bucle
for (i=0;i<100;i++) {
cdigo para i }
5/6
Dinmica
while (Fetch_&_Or(k,1)==1) {}; //lock(k)
n=i; i=i+1;
mov k,0; //unlock(k)
while (n<100) {
cdigo para n ;
while (Fetch_&_Or(k,1)==1) {};
n=i; i=i+1;
mov k,0; //unlock(k)
Nota: la variable i estara inicializada a 0 (por
ejemplo, se puede iniciar cuando se declara)
Dinmica
n=Fetch_&_Add(i,1);
while (n<100) {
cdigo para n ;
n=Fetch_&_Add(i,1);
}
Nota: la variable i estara inicializada a 0 (por
ejemplo, se puede iniciar cuando se declara)
Ejercicio 11.
Ejercicio 12.
Ejercicio 13. Se ha extrado la siguiente implementacin de cerrojo (spin-lock) para x86 del kernel de Linux
(http://lxr.free-electrons.com/source/arch/x86/include/asm/spinlock.h):
typedef struct {
unsigned int slock;
} raw_spinlock_t;
6/6
Arquitectura de Computadores
ArquitecturadeComputadores.EjerciciosyCuestiones
2curso/2cuatr.
Gradoen
Tema4.ArquitecturasconParalelismoaniveldeInstruccin(ILP)
Materialelaboradoporlosprofesoresresponsablesdelaasignatura:
Ing.Informtica JulioOrtega,ManciaAnguita
LicenciaCreativeCommons
Ejercicios
Ejercicio1. Paraelfragmentodecdigosiguiente:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
lw
lw
add
mul
add
add
add
sub
sub
sw
sw
r1,0x1ac
r2,0xc1f
r3,r0,r0
r4,r2,r1
r3,r3,r4
r5,r0,0x1ac
r6,r0,0xc1f
r5,r5,#4
r6,r6,#4
(r5),r3
(r6),r4
;
;
;
;
;
;
;
;
;
;
;
r1
r2
r3
r4
r3
r5
r6
r5
r6
M(r5)
M(r6)
M(0x1ac)
M(0xc1f)
r0+r0
r2*r1
r3+r4
r0+0x1ac
r0+0xc1f
r5 - 4
r6 - 4
r3
r4
ysuponiendoquesepuedencaptar,decodificar,yemitircuatroinstruccionesporciclo,indiqueelordenen
queseemitirnlasinstruccionesparacadaunodelossiguientescasos:
a)Unaventanadeinstruccionescentralizadaconemisinordenada
b)Unaventanadeinstruccionescentralizadaconemisindesordenada
c)Unaestacindereservadetreslneasparacadaunidadfuncional,conenvoordenado.
Nota:considerequehayunaunidadfuncionalparalacarga(2ciclos),otraparaelalmacenamiento(1ciclo),
tresparalasuma/resta(1ciclo),yunaparalamultiplicacin(4ciclos).Tambinpuedeconsiderarque,enla
prctica, no hay lmite para el nmero de instrucciones que pueden almacenarse en la ventana de
instruccionesoenelbufferdeinstrucciones.
Solucin
Acontinuacinsemuestranlaevolucintemporaldelasinstruccionesensusdistintasetapasparacadauna
delasalternativasquesepiden.Enesasfigurassesuponequetrasladecodificacindeunainstruccin,sta
puedepasaraejecutarsesinconsumirciclosdeemisinsilosoperandosylaunidadfuncionalquenecesita
estn disponibles. Por esta razn, no se indicarn explcitamente los ciclos dedicados a la emisin en los
casos(a)y(b),yalenvoenelcaso(c)
a)Emisinordenadaconventanacentralizada
Comosemuestralatablacorrespondiente,lasinstruccionesseempiezanaejecutarenordenrespetandolas
dependenciasdedatosoestructuralesqueexistan.Porejemplolasegundainstruccindeaccesoamemoria
lwdebeesperarqueterminelainstruccinlwanteriorporquesolohayunaunidaddecargadememoria.La
2/17
ArquitecturadeComputadores
INSTRUCCIN
lw
r1, 0x1ac
IF
ID
EX
EX
lw
r2, 0xc1f
IF
ID
add
r3, r0, r0
IF
ID
mul
r4, r2, r1
IF
ID
add
r3, r3, r4
IF
add
add
sub
r5, r5, #4
sub
r6, r6, #4
sw
(r5), r3
sw
(r6), r4
10
11
12
13
14
EX
EX
EX
EX
EX
EX
EX
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
EX
b)Emisindesordenadaconventanacentralizada
En este caso, hay que respetar las dependencias de datos y las estructurales. En cuanto las instrucciones
tenganunaunidaddisponibleylosdatosquenecesitansepuedenemitir,siemprequenoseanmenosde
cuatrointruccionesporciclolasqueseemitan.Enestecaso,comomuchoseemitentresinstruccionesen
losciclos4y5
INSTRUCCIN
10
11
12
lw
r1, 0x1ac
IF
ID
EX
EX
lw
r2, 0xc1f
IF
ID
EX
EX
add
r3, r0, r0
IF
ID
EX
mul
r4, r2, r1
IF
ID
EX
EX
EX
EX
add
r3, r3, r4
IF
ID
EX
add
IF
ID
EX
add
IF
ID
EX
sub
r5, r5, #4
IF
ID
EX
sub
r6, r6, #4
IF
ID
EX
sw
(r5), r3
IF
ID
EX
sw
(r6), r4
IF
ID
EX
c)Estacindereservacontreslneasparacadaunidadfuncional,yenvoordenado.
Enestaalternativa,sehasupuestoquelasinstruccionesdecodificadasseemitenaunaestacindereserva
desdelaqueseaccedealaunidadfuncionalcorrespondienteenviandolasinstruccionesdeformaordenada
(por eso las dos instrucciones sw se ejecutan ordenadamente). La asignacin de instrucciones de suma o
resta a las tres estaciones de reserva que existen para suma/resta se ha hecho de forma alternativa pero
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
3/17
tratandodeminimizartiempos.Esdecir,sehaasignadoaunaestacindereservaquenotuvierasuunidad
funcionalcorrespondienteparaobtenerlostiemposmsfavorables.
ESTACIN DE
INSTRUCCIN
RESERVA
10
11
12
13
LW
lw
r1, 0x1ac
IF
ID
EX
LW
lw
r2, 0xc1f
IF
ID
ADD(1)
add
r3, r0, r0
IF
ID
MULT(1)
mul
r4, r2, r1
IF
ID
ADD(2)
add
r3, r3, r4
IF
ID
ADD(3)
add
IF
ID
EX
ADD(1)
add
IF
ID
EX
ADD(3)
sub
r5, r5, #4
IF
ID
EX
ADD(1)
sub
r6, r6, #4
IF
ID
EX
SW
sw
(r5), r3
IF
ID
SW
sw
(r6), r4
IF
ID
EX
EX
EX
EX
EX
EX
Ejercicio2. Considerequeelfragmentodecdigosiguiente:
1. lw
2. addi
3. add
4. lw
5. lw
6. mult
7. add
8. add
9. sw
10.sw
11.sub
r3,0x10a
r2,r0,#128
r1,r0,0x0a
r4,0(r1)
r5,-8(r1)
r6,r5,r3
r5,r6,r3
r6,r4,r3
0(r1),r6
-8(r1),r5
r2,r2,#16
;
;
;
;
;
;
;
;
;
;
;
r3 M(0x10a)
r2 r0+128
r1 r0+0x0a
r4 M(r1)
r5 M(r1-8)
r6 r5*r3
r5 r6+r3
r6 r4+r3
M(r1) r5
M(r1-8) r5
r2 r2-16
Ejerciciosdeltema4
4/17
ArquitecturadeComputadores
elprocesadorutilizaunbufferdereordenamiento(ROB)paraquelafinalizacindelprocesamientode las
instrucciones sea ordenada. Por ello, las etapas WB de las instrucciones (momento en que se retiran las
instruccionesdelROByseescribenenlosregistrosdelaarquitectura)debenestarordenadas(tantoenel
caso de emisin ordenada como desordenada). La etapa marcada como ROB es la que corresponde a la
escrituradelosresultadosenelROB(sehasupuestoquelasinstruccionesdeescrituraenmemoriatambin
consumenunciclodeescrituraenelROByunciclodeescrituraWBenelbancoderegistros,aunqueestos
ciclossepodranevitarparaestasinstrucciones).
Tambin tiene que comprobarse que no se decodifican, emiten, ni escriben en el ROB ms de dos
instruccionesporciclo,niseretiranmsdetresinstruccionesporciclo.
INSTRUCCIN
lw
r3, 0x10a
10
11
12
13
14
15
16
17
18
19
IF
ID
EX
addi
IF
ID
EX ROB
add
IF
ID
WB
EX ROB WB
lw
r4, 0(r1)
IF
ID
EX
ROB WB
lw
r5, 8(r1)
IF
ID
EX
mult
r6, r5, r3
IF
ID
add
r5, r6, r3
IF
add
r6, r4, r3
EX ROB WB
IF
sw
0(r1), r6
IF
ID
EX ROB WB
sw
8(r1), r5
IF
ID
sub
IF
ROB WB
ROB WB
EX
ID
ROB WB
ID
EX ROB WB
ID
EX ROB WB
EX ROB WB
b) Enelcasodeemisindesordenada,latrazadeejecucindelasinstruccioneseslasiguiente:
INSTRUCCIN
lw
r3, 0x10a
IF
ID
EX
addi
IF
ID
EX ROB
add
IF
ID
lw
r4, 0(r1)
IF
ID
EX
ROB WB
lw
r5, 8(r1)
IF
ID
EX
mult
r6, r5, r3
IF
ID
add
r5, r6, r3
IF
add
r6, r4, r3
IF
sw
0(r1), r6
IF
ID
sw
8(r1), r5
IF
ID
sub
IF
ROB WB
WB
EX ROB
10
11
12
13
14
15
16
17
18
WB
ROB WB
EX
ID
ID
ROB WB
EX ROB
EX ROB
ID
EX
ROB
EX ROB WB
WB
WB
EX ROB WB
WB
Tambin en este caso hay que tener en cuenta que no se pueden decodificar, emitir, ni escribir en el
ROBmsdedosinstruccionesporciclo(obsrvesequelainstruccinswr2,r2,#16debeesperarunciclo
parasuetapaROBporestarazn),nisepuedenretirarmsdetresinstruccionesporciclo.
Ejercicio3. En el problema anterior, (a) indique qu mejoras realizara en el procesador para reducir el
tiempo de ejecucin en la mejor de las opciones sin cambiar el diseo de las unidades funcionales
(multiplicador,sumador,etc.)ysincambiareltipodememoriasnilainterfazentreprocesadorymemoria
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
5/17
(no vara el nmero de instrucciones captadas por ciclo. (b) Qu pasara si se reduce el tiempo de
multiplicacinalamitad?.
Solucin
(a)
Enprimerlugar,seconsideraquesedecodificanelmismonmerodeinstruccionesquesecaptan,ya
que no existen limitaciones impuestas por las instrucciones al ritmo de decodificacin (ste viene
determinado por las posibilidades de los circuitos de descodificacin y la capacidad para almacenar las
instruccionesdecodificadashastaqueseemitan).Tambinseconsideraquenoexistenlimitacionesparael
nmerodeinstruccionesporcicloqueseemiten,escribenelROB,yseretiran.Porltimo,seconsideranque
estn disponibles todas las unidades funcionales que se necesiten para que no haya colisiones (riesgos
estructurales).
INSTRUCCIN
lw
r3, 0x10a
10
11
12
13
14
15
IF
ID
EX
addi
IF
ID
EX ROB
add
WB
IF
ID
EX ROB
lw
r4, 0(r1)
WB
IF
ID
EX
lw
r5, 8(r1)
IF
ID
EX
ROB WB
ROB WB
mult
r6, r5, r3
IF
ID
add
r5, r6, r3
IF
ID
add
r6, r4, r3
IF
ID
sw
0(r1), r6
IF
ID
sw
8(r1), r5
IF
ID
ROB WB
EX
ROB WB
EX ROB
EX ROB WB
WB
WB
EX ROB
EX ROB WB
Teniendoencuentalascaractersticasdelatraza,siseredujeseeltiempodelamultiplicacinalamitad
(esdecirtresciclos)eltiempodeejecucindedichatrazasereduciratambinenesosmismostresciclosya
quetodaslasinstruccionesquesiguenalamultiplicacinseencuentranesperandoaquetermineestapara
poderproseguir.Esdecir,laoperacindemultiplicacineselcuellodebotellaenestecaso.
INSTRUCCIN
lw
r3, 0x10a
IF
ID
EX
addi
IF
ID
EX ROB
add
IF
ID
EX ROB
lw
r4, 0(r1)
IF
ID
lw
r5, 8(r1)
IF
ID
mult
r6, r5, r3
IF
ID
add
r5, r6, r3
IF
ID
add
r6, r4, r3
IF
ID
sw
0(r1), r6
IF
ID
sw
8(r1), r5
IF
ID
sub
IF
ID
10
11
12
WB
WB
EX ROB WB
EX ROB WB
ROB WB
EX
EX ROB WB
EX ROB
ROB WB
EX ROB
EX ROB
WB
WB
EX ROB WB
WB
Porlotantosetendran12ciclos.Sisetieneencuentaquesetienen11instrucciones,queeltiempomnimo
que tarda la primera instruccin en salir son 6 ciclos (lo tomamos como tiempo de latencia de inicio del
cauce),yqueeltiempototaldeejecucinenestecasoesde12ciclos,sepuedeescribir:
Ejerciciosdeltema4
6/17
ArquitecturadeComputadores
Y,sisedespeja,setienequeelprocesadorsuperescalarpresentaunamediade0.6ciclosporinstruccin,o
loqueeslomismo,ejecuta1.67instruccionesporciclo.Tieneuncomportamientosuperescalar,peroest
muylejosdelastresinstruccionesporcicloquepuedenterminarcomomximo.
Ejercicio4. Enelcasodescritoenelproblema3,indiquecmoevolucionaraelbufferdereorden,utilizado
paraimplementarfinalizacinordenada,enlamejordelasopciones.
Solucin
La Tabla que se proporciona a continuacin muestra la evolucin del buffer de reordenamiento (ROB)
marcandoennegritaloscambiosqueseproducenencadaciclo.
Enelciclo2sedecodificanlasinstrucciones(1)(4)yseintroducenenelROB.
Enelciclo3sedecodificanlasinstrucciones(5)(8)yseintroducenenelROB.
Enelciclo5seescribeenelROBelresultadodelainstruccin(1).
En el ciclo 6 se retiran las tres primeras instrucciones y se escriben los resultados de las
instrucciones(4),(5)y(11)enelROB.
En el ciclo 8 se activa el bit valor vlido de la instruccin (9) en el ROB, indicando que la
instruccindealmacenamientoyahaescritoenmemoria.
Enelciclo9seescribeelresultadodelainstruccin(6)enelROB.
Enelciclo10seretiralainstruccin(6)yseescribeelresultadodelainstruccin(7)enel
ROB.
Enelciclo11seretiranlasinstrucciones(7),(8)y(9)yseindicaquelainstruccin(10)yaha
escritoenmemoria.
Enelciclo12seretiranlasdosltimasinstruccionesdelROB.
CICLO
CDIGO
OPERACIN
REGISTRO
DESTINO
VALOR
VALOR
VLIDO
Lw
r3
Addi
r2
Add
r1
Lw
r4
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
7/17
CICLO
CDIGO
OPERACIN
REGISTRO
DESTINO
VALOR
VALOR
VLIDO
Lw
r3
Addi
r2
Add
r1
Lw
r4
Lw
r5
Mult
r6
Add
r5
Add
r6
Lw
r3
Addi
r2
128
Add
r1
0x0a
Lw
r4
Lw
r5
Mult
r6
Add
r5
Add
r6
Sw
Sw
10
Sub
r2
Lw
r3
[0x1a]
Addi
r2
128
Add
r1
0x0a
Lw
r4
Lw
r5
Mult
r6
Add
r5
Add
r6
Sw
Sw
10
Sub
r2
Lw
r4
[0x0a]
Lw
r5
[0x0a 8]
Mult
r6
Add
r5
Add
r6
Sw
Sw
10
Sub
r2
112
Ejerciciosdeltema4
8/17
ArquitecturadeComputadores
CICLO
CDIGO
OPERACIN
REGISTRO
DESTINO
VALOR
VALOR
VLIDO
mult
r6
add
r5
add
r6
r4 + r3
sw
sw
10
sub
r2
112
mult
r6
add
r5
add
r6
r4 + r3
sw
sw
10
sub
r2
112
mult
r6
r5 r3
add
r5
add
r6
r4 + r3
sw
sw
10
sub
r2
112
add
r5
r6 + r3
add
r6
r4 + r3
sw
sw
10
sub
r2
112
sw
10
sub
r2
112
10
11
mul
add
sub
add
r2,r0,r1
r3,r1,r2
r2,r0,r1
r3,r3,r2
;
;
;
;
r2
r3
r2
r3
r0*r1
r1+r2
r0-r1
r3+r2
Solucin
Las instrucciones se renombra de forma ordenada, aunque podran emitirse desordenadamente a medida
que estn disponibles los operandos y las unidades funcionales. La estructura tpica de un buffer de
renombramiento con acceso asociativo podra ser la que se muestra a continuacin, en la que se ha
supuesto que se han hecho las asignaciones (renombrados) de r0 y r1 (las lneas 0 y 1 tienen valores de
Entradavlidaa1correspondientealosregistrosr0yr1,consusvaloresvlidoscorrespondientesylos
bitsdeltimoa1indicandoquehansidolosltimosrenombramientosdeesosregistros)
:
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
9/17
#
0
1
2
3
4
5
6
7
8
Entradavlida
1
1
0
0
0
0
0
0
0
Registodestino
r0
r1
Valor
[r0]
[r1]
ValorVlido
1
1
Bitdeltimo
1
1
Aldecodificarselainstruccinmul r2,r0,r1losvaloresder0yr1setomarndelaslneas0y1delbuffer
derenombradoyserenombrarr2.Lainstruccinsepuedeemitir parasuejecucinyelresultado dela
mismasealmacenarenlalnea2delbufferderenombrado.ElcontenidodelcampoValorvlidodeesta
lneaseriguala0hastaqueelresultadonosehayaobtenido
#
Entradavlida Registodestino
Valor
ValorVlido
Bitdeltimo
0 1
r0
[r0]
1
1
1 1
r1
[r1]
1
1
2 1
r2
0
1
3 0
4 0
5 0
6 0
7 0
8 0
#
Entradavlida Registodestino
Valor
ValorVlido
Bitdeltimo
0 1
r0
[r0]
1
1
1 1
r1
[r1]
1
1
2 1
r2
0
1
3 1
r3
0
1
4 0
5 0
6 0
7 0
8 0
Cuando se decodifica la instruccin sub r2,r0,r1, se realiza otro renombramiento de r2. Como r0 y r1
tienen valores vlidos, esta instruccin podra empezar a ejecutarse si existe una unidad funcional
disponible.Elresultadodeestaoperacinsealmacenarenlalnea4(ltimorenombradoder2)ydeahse
tomarnlosoperandosr2eninstruccionesposteriores(paraesoseutilizaelBitdeltimo):
Ejerciciosdeltema4
10/17
ArquitecturadeComputadores
#
0
1
2
3
4
5
6
7
8
Entradavlida
1
1
1
1
1
0
0
0
0
Registodestino
r0
r1
r2
r3
r2
Valor
[r0]
[r1]
ValorVlido
1
1
0
0
0
Bitdeltimo
1
1
0
1
1
Laltimainstruccin,add r3,r3,r2,originaotrorenombradoder3.Susoperandosr3yr2setomarande
laslneas3y4respectivamenteporquesonlosltimosrenombradosquesehanhechoparar3yr2.Como
notienenvaloresvlidos,seutilizarnlasmarcascorrespondientesadichaslneas3y4delbufferparaque
se escriban los resultados correspondientes en la lnea de la ventana de instrucciones donde se almacena
estainstruccinhastaquepuedaemitirse.
#
Entradavlida Registodestino
Valor
ValorVlido
Bitdeltimo
0 1
r0
[r0]
1
1
1 1
r1
[r1]
1
1
2 1
r2
0
0
3 1
r3
0
0
4 1
r2
0
1
5 1
r3
0
1
6 0
7 0
8 0
Ejercicio6.
Ejercicio7. Enlasituacindescritaenelproblemaanterior.Culdelostresesquemasesmseficazpor
trminomediosihayun25%deprobabilidadesdequecseamenoroiguala0,un30%dequeseamayoro
iguala10;yun45%dequeseacualquiernmeroentre1y9,siendotodosequiprobables?
Solucin
En el ejercicio 6 se ha determinado la penalizacin de la secuencia para cada tipo de predictor, en este
ejerciciodetratadeutilizarladistribucindeprobabilidaddelavariablecquesedaenelenunciadopara
evaluar la penalizacin media de cada predictor, y por lo tanto cul es el mejor para este cdigo y estas
circunstancias.Paraelcasodelpredictorfijo,yteniendoencuentaquetodoslosvaloresdecentre1y9son
equiprobables,tenemos:
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
11/17
0.25 44 0.45
10 c 4
c 1
0.30 0 20 ciclos
Paraelpredictorestticotenemos:
Pesttico 0.25 Pesttico1 0.45 Pesttico2 0.30 Pesttico3 0.25 4 0.45 4 0.30 4 4 ciclos
Yparaelpredictordinmico:
Pdinmico 0.25 Pdinmico1 0.45 Pdinmico2 0.30 Pdinmico3 0.25 8 0.45 8 0.30 0 5.6 ciclos
Comosepuedever,paraestebucle,yparaladistribucindeprobabilidaddelosvaloresdec,elesquemade
prediccinmseficientecorrespondealaprediccinesttica.
Encualquiercaso,estasituacindependedelasprobabilidadesdelosdistintosvaloresdec.Si,porejemplo,
laprobabilidaddequecestentre1y9fuerade0.15,lapenalizacinparalaprediccindinmicacon1bit
dehistoriaserade3.2ciclos,mientrasquelaprediccinestticaseguirapresentandounapenalizacinde4
ciclos.
Ejercicio8. En un programa, una instruccin de salto condicional (a una direccin de salto anterior) dada
tieneelsiguientecomportamientoenunaejecucindedichoprograma:
SSNNNSSNSNSNSSSSSN
dondeSindicaqueseproduceelsaltoyNqueno.Indiquelapenalizacinefectivaqueseintroducesise
utiliza:
a)Prediccinfija(siempreseconsideraquesenosevaaproducirelsalto)
b)Prediccinesttica(sieldesplazamientoesnegativosetomaysiespositivono)
c)Prediccindinmicacondosbits,inicialmenteenelestado(11).
d)Prediccindinmicacontresbits,inicialmenteenelestado(111).
Nota:La penalizacinpor saltosincorrectamentepredichoses de5ciclosyparalossaltoscorrectamente
predichoses0ciclos.
Solucin
En el caso de usar prediccin fija, seproducira un fallo del predictor cada vez que se tome el salto, tal y
comomuestralaTablasiguiente.Portanto,lapenalizacintotalserade:
Ejerciciosdeltema4
12/17
ArquitecturadeComputadores
PREDICCIN
FIJA
N N N N N N N N N N N N N N N N N N
EJECUCIN
S S N N N S
N S
N S
N S
S S S N
P P
P P P
PENALIZACI
N
Siseusaelpredictoresttico,comoladireccindedestinodelsaltoesanterior,seproducirunfalloenla
prediccin cuando no se produzca el salto, tal y como muestra la tabla correspondiente. Por tanto, la
penalizacintotalserade:
S S S S S
EJECUCIN
S S N N N S
N S
PENALIZACI
N
P P P
S S S S
N S
N S
S S S N
Encuantoalpredictordinmicocondosbitsdehistoria,latablasiguientemuestraelestadodelpredictor
antesdeejecutarelsalto,laprediccinquerealizaelpredictor,elcomportamientodelsaltoysiseproduce
onopenalizacin.Teniendoencuantalosfallosqueseproducen,lapenalizacintotalserade:
11 11 11 10 01 00 01 10 01 10 01 10 01 10 11 11 11 11
PREDICCIN
DINMICA S S S S N N N
(2BITS)
EJECUCIN
PENALIZACIN
S S N N N S
P P
P P
S N S N S N S
S S S S
N S N S N S
S S S N
Porltimo,paraelpredictordinmicodetresbits,enlatablasiguienteseindicanlosbitsdehistoriaque
existenantesdequeseejecutelainstruccin,laprediccinquedeterminanesosbits,yloquefinalmente
ocurre(segnseindicaenlasecuenciaobjetodelproblema).Laltimafilaindicasihahabidopenalizacin
(no coinciden la prediccin y lo que ocurre al final). Teniendo en canta esta informacin, tenemos que la
penalizacintotalesde:
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
13/17
ESTADO
111 111 111 011 001 000 100 110 011 101 010 101 010 101 110 111 111 111
PREDICCIN
DINMICA S S S S N N N
(3BITS)
EJECUCIN
PENALIZACIN
S S N N N S
P P
P P
S N S N S
S S S S
N S N S N S
S S S N
Comosepuedever,enlasecuenciadeejecucionesdelainstruccindesaltoconsideradaenesteproblema,
el mejor esquema de prediccin es la prediccin esttica que aqu se utiliza. El esquema de prediccin de
saltodinmicocondosbitsesigualdebueno(omalo)quelaprediccinfija.
As,sepuedeindicarquelaeficaciadeunesquemadesaltodependedelperfildesaltosaquedelugarla
correspondienteinstruccindesaltocondicional.Enlaprctica,losesquemasdeprediccindinmicasuelen
funcionar mejor que los de prediccin esttica porque las instrucciones de salto suelen repetir el
comportamientodesuejecucinprevia.Enesesentido,lasecuenciautilizadaenesteproblemaesbastante
atpica.
Ejercicio9. (NOTA:eltratamientodeexcepcionesnoentraenelexamen)
Ejercicio10. Enunprocesadortodaslasinstruccionespuedenpredicarse.Paraestablecerlosvaloresdelos
predicadosseutilizanintruccionesdecomparacin(cmp)conelformato(p)p1,p2cmp.cndx,ydondecnd
eslacondicinquesecompruebaentrexey(lt,ge,eq,ne).Silacondicinesverdaderap1=1yp2=0,ysies
falsa, p1=0 y p2=1. La instruccin slo se ejecuta si el predicado p=1 (habr sido establecido por otra
instruccindecomparacin).
En estas condiciones, utilice instrucciones con predicado para escribir sin ninguna instruccin de salto el
siguientecdigo:
if (A>B) then { X=1;}
else {if (C<D) then X=2; else X=3;}
Solucin
Acontinuacinsemuestraelcdigoqueimplementaelprogramaanteriorusandopredicados:
lw
lw
p1,p2 cmp.gt
(p1)
addi
(p1) p3
cmp.ne
(p1) p4
cmp.ne
(p2)
lw
(p2)
lw
(p2) p3,p4 cmp.lt
(p3)
addi
(p4)
addi
sw
r1,a
r2,b
r1,r2
r5,r0,#1
r0,r0
r0,r0
r3,c
r4,d
r3,r4
r5,r0,#2
r5,r0,#3
r5,x
;r1=A
;r2=B
;Sia>bp1=1yp2=0(sino,p1=0yp2=1)
;Inicializamosp3a0
;Inicializamosp4a0
;r3=c
;r4=d
;Slosip2=1p3op4puedenser1
;Seejecutasip3=1(yp2=1)
;Seejecutasip4=1(yp2=1)
;Almacenamoselresultado
Ejerciciosdeltema4
14/17
ArquitecturadeComputadores
Cuestiones
Cuestin1. QutienenencomnunprocesadorsuperescalaryunoVLIW?Enqusediferencian?
Solucin
Tanto un procesador superescalar como uno VLIW son procesadores segmentados que aprovechan el
paralelismoentreinstrucciones(ILP)procesandovariasinstruccionesuoperacionesescalaresencadaunade
ellas.Ladiferenciaprincipalentreellosesquemientrasqueelprocesadorsuperescalarincluyeelementos
hardware para realizar la planificacin de instrucciones (enviar a ejecutar las instrucciones decodificadas
independientes para las que existen recursos de ejecucin disponibles) dinmicamente, los procesadores
superescalaressebasanenelcompiladorpararealizardichaplanificacin(planificacinesttica).
Cuestin2. Quesunbufferderenombramiento?Quesunbufferdereordenamiento?Existealguna
relacinentreambos?
Solucin
Un buffer de renombramiento es un recurso presente en los procesadores superescalares que permite
asignaralmacenamientotemporalalosdatosasignadosaregistrosdelbancoderegistrosdelaarquitectura.
La asignacin de registros de la arquitectura la realiza el compilador o el programador en ensamblador.
Mediante la asignacin de registros temporales a los registros de la arquitectura se implementa el
renombramientodeestosltimosconelfindeeliminarriesgos(dependencias)WAWyWAR.
Unbufferdereordenamientopermiteimplementarlafinalizacinordenadadelasinstruccionesdespussu
ejecucin.
Es posible implementar el renombramiento de registros aprovechando la estructura del buffer de
reordenamiento.
Cuestin3. Qu es una ventana de instrucciones? Y una estacin de reserva? Existe alguna relacin
entreellas?
Solucin
Unaventanadeinstruccioneseslaestructuraalaquepasanlasinstruccionestrasserdecodificadasparaser
emitidasdesdeahalaunidaddedatosdondeseejecutarncuandodichaunidadestlibreylosoperandos
quesenecesitanpararealizarlacorrespondienteoperacinestndisponibles.Laemisindesdeesaventana
deinstruccionespuedeserordenadaodesordenada.
Una estacin de reserva es una estructura presente en los procesadores superescalares en los que se
distribuyelaventanadeinstruccionesdeformaqueenlasinstruccionesdecodificadasseenvanaunauotra
estacin de reserva segn la unidad funcional (o el tipo de unidad funcional) donde se va a ejecutar la
instruccin.
Unaventanadeinstruccionespuedeconsiderarseuncasoparticulardeestacindereservadesdelaquese
puedeaccederatodaslasunidadesfuncionalesdelprocesador.Latransferenciadeunainstruccindesdela
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
15/17
Cuestin4. Quutilidadtienelapredicacindeinstrucciones?EsexclusivadelosprocesadoresVLIW?
Solucin
La predicacin de instrucciones permite eliminar ciertas instrucciones de salto condicional de los cdigos.
Porlotanto,contribuyeareducirelnmeroderiesgosdecontrol(saltos)enlaejecucindeprogramasen
procesadoressegmentados.
Aunque es una tcnica muy importante en el contexto de los procesadores VLIW, porque al reducir
instruccionesdesaltocondicionalsecontribuyeaaumentareltamaodelosbloquesbsicos(conjuntode
instruccionesconunpuntodeentradayunpuntodesalida),existelaposibilidaddeutilizarpredicadostanto
enprocesadoressuperescalarescomoVLIW.Porejemplo,enelconjuntodeinstruccionesdeARMsepueden
predicartodaslasinstrucciones.
Cuestin6. Quprocesadoresdependenmsdelacapacidaddelcompilador,unprocesadorsuperescalar
ounoVLIW?
Solucin
Losprocesadoressuperescalarespuedenmejorarsurendimientograciasaalgunastcnicasaplicadasporel
compilador,sobretodoenlosprocesadoresdeIntelapartirdelamicroarquitecturaP6quellevabaacabo
una traduccin de las instrucciones del repertorio x86 a un conjunto de microoperaciones internas con
estructurasfijascomolasinstruccionesdelosrepertoriosRISC.Sinembargo,elpapeldelcompiladorenun
procesador VLIW es fundamental, ya que es l el que se encarga de realizar la planificacin de las
instruccionesparaaprovecharelparalelismoentreinstrucciones.Enlosprocesadoressuperescalaresexisten
estructuras como las estaciones de reserva, los buffer de renombramiento, los buffer de reordenamiento,
etc.queextraenelparalelismoILPdinmicamente.
Ejerciciosdeltema4
16/17
ArquitecturadeComputadores
Losprocesadoressuperescalaressonlosquetienenunamicroarquitecturamscompleja.Precisamente,la
ideadedejarqueseaelcompiladorelresponsabledeextraerelparalelismoentreinstruccionespersegua
conseguirncleosdeprocesamientomssencillosdesdeelpuntodevistahardwareparareducirelconsumo
energtico y/o sustituir ciertos elementos hardware por un mayor nmero de unidades funcionales que
permitiesenaumentarelnmerodeoperacionesfinalizadasporciclo.
Estructurascomolasestacionesdereserva,losbuffersderenombramiento,ylosbuffersdereordenamiento
sontpicasdelosprocesadoressuperescalares.
Cuestin8. Hagaunalistacon5microprocesadoressuperescalaresoVLIWquesehayancomercializadoen
losltimos5aosindicandoalgunadesuscaractersticas(frecuencias,ncleos,tamaodecache,etc.)
Solucin
Procesador
Ao
Frecuencia(GHz)
Corei7
2008 2.663.33
Fabricante Observaciones
Intel
Intelx8664.
HyperThreading
Tecnologade45nmo32nm
QPI
Transistores: 1.170 millones en el Core i7
980x, con 6 ncleos y 12 MB de memoria
cach
PhenomII
2008 2.53.8
AMD
x8664
Proceso:45nm
Serie 1000: 6 ncleos con 3MB de cache L2
(512KB por ncleo) y 6MB de cache L3
compartidos
Intel
24Cores
CacheL2:256kB(D)+512kB(I)
CacheL3:1024MB
QPI
Proceso:65nm
POWER7
2010 2.44.25
IBM
Repertorio:PowerArch.
4,6,8Cores
Proceso45nm
CacheL132+32KB/core
CacheL2256KB/core
CacheL332MB
Xeon5600
2010 2.43.46
Intel
6Cores(HT:12threads)
QPI
Cache12MB
GradoenIngenieraInformtica.ETSIIT.UniversidaddeGranada
Prof.responsables:J.Ortega,M.Anguita
17/17
Ejerciciosdeltema4