Sie sind auf Seite 1von 26

CI1323-1-2017-Prctica1 de EX1 modificada Se marca con un NO los ejercicios que no son parte de la materia que se

er
evala este I sem 2017 en el 1 examen

1er EXAMEN - II SEM 2016 J 13 de Octubre G1

1. La siguiente es la mezcla de instrucciones de un programa MIPS con instrucciones solo para enteros, que corre en
un procesador en el que se implementa un pipeline para enteros como el visto en clase (con solucin de branches
en ID), que tiene forwarding para conflictos de datos y usa prediccin de branch "NO TOMADO"
30% IC son "branches" de los cuales 2/3 partes son no tomados
40% IC son Op. Arit, de las que el 30% de ellas depende de un LW inmediato anterior para un registro fuente,
el 10% de estas instrucciones depende de una aritmtica inmediata anterior y de una aritmtica tras-
anterior para sus regs fuente respectivamente. El restante 60% no tiene conflictos de datos.
10% IC son SWs (almacena el valor de un registro en memoria), de las cuales, la mitad tiene conflicto de datos para el
registro que almacenar en memoria, con un LW tras- anterior (ninguna tiene fallo de cach)
20% IC son LWs de los cuales, 1/5 parte tiene fallo de cach de datos, el cual atrasa 30 ciclos.
a) (15 pts) Calcule el CPI para este programa, justificndose con pequeas tablas de tiempo , para cada uno de
los casos que arriba se describen para sus instrucciones dinmicas. (No tome en cuenta fallos de cach por
"fetch" de instrucciones)
b) NO (15 pts)Use Amdahl para calcular la aceleracin que lograra este programa si los fallos de cach de
datos se resolvieran en la mitad del tiempo.
c) (2 pts) Sin tomar la mejora para los fallos de cach, calcule el tiempo que tarda ejecutndose este
programa (en nanosegundos), si se sabe que la velocidad del reloj del procesador es de 2GHz.
2. Estas son secciones de cdigo de dos hilos o de dos procesos escritos en cierto lenguaje de alto nivel que corren
en paralelo, cada uno en uno de los dos ncleos del procesador.
a) (13 pts) Escriba en ensamblador MIPS las instrucciones que resolveran la seccin de cdigo 1 y la seccin 2.
b) (15 pts) Suponiendo que las comparaciones en lenguaje de mquina correspondientes a las comparaciones de los IF
se realizan simultneamente, Qu resultados se daran en cada una de esas comparaciones si los cdigos
pertenecen a dos hilos de un mismo proceso (C y L variables "globales")? Explique por qu Qu resultados se
daran en cada una de las comparaciones si los cdigos pertenecen a dos procesos? Explique por qu.

Seccin de cdigo 1 Seccin de cdigo 2

L=0; C=0;
... ...
C=1; L=1;
IF(L==0) IF(C==0)
c) (10 pts) Si las cachs de datos en cada ncleo fueran WB, Write Allocate, de igual capacidad y ambas de mapeo
directo, y suponiendo que C y L estn en bloques diferentes de memoria (tanto para el caso de hilos como de
procesos), cul podra ser el estado de los bloques (el que contiene a C y el que contiene a L) al final del IF.
Explique el caso en el que fueran 2 hilos de un mismo proceso, y tambin para el caso en el que fueran 2 procesos.
3. NO [15 pts] Para el siguiente cdigo MIPS, escriba la tabla de tiempos, calcule el CPI, indique "forwardings" con
una flecha e indique el registro del cual se necesita su valor. (Para op. de Flotantes, recuerde: suma 4 ciclos,
multiplicacin, 7)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ADD.D F9, F10, F11
SUB.D F5, F6, F7
DADDI R15, R0, #17
DSUB R16, R16, R15
ADD.D F1, F5, F2
MUL.D F20, F9,F5

4. [15 pts] Suponga que se tiene un procesador de un ncleo que tiene solo una cach de datos Wth, NO W.ALL,
Mapeo directo para asignacin de bloque, bloques de 2 palabras y con capacidad para 8 bloques.

En memoria est la matriz de enteros A almacenada por filas a partir de la posicin 0 de memoria. Consta de 4 filas
por 4 columnas. Tambin el vector de enteros V con 8 elementos, almacenado a partir del byte 80 de memoria.
1
Suponga que ah corre este fragmento de cdigo Calcule el nmero de fallos de cach y de palabras
for i=0, i < 4. i++ escritas a memoria que se dan durante la ejecucin de
for j= 0, j<4, j++ { dicho cdigo. Explique sus clculos

x+= A[i][j];
A[i][j] ++;
}

1er EXAMEN - II SEM 2016 J 13 de Octubre G2

1. La siguiente es la mezcla de instrucciones de un programa MIPS con instrucciones solo para enteros, que corre en un
procesador en el que se tiene un pipeline para enteros como el visto en clase (con solucin de branches en ID), que NO
tiene forwarding para conflictos de datos y NO usa prediccin de branch "NO TOMADO"
Se sabe que el CPI para este programa es 2.95
20% IC son "branches" de los cuales 3/5 partes son no tomados
30% IC son Op. Arit, de las que el 1/3 parte depende de un LW inmediato anterior para un registro fuente, el 10% de
estas instrucciones depende de una aritmtica tras- anterior para uno de sus regs fuente. El resto no tiene
conflictos de datos.
10% IC son SWs (almacena el valor de un registro en memoria), de las cuales, la mitad tiene conflicto de datos para el
registro que almacenar en memoria, con un LW tras- anterior
20% IC son LWs de los cuales, 1/5 parte tiene fallo de cach de datos, el cual atrasa 40 ciclos.
20% IC no tiene conflictos de datos ni retrasos por accesos a memoria

a) (15 pts) Calcule la aceleracin de este programa si se tuviera forwarding para conflictos de datos y prediccin
NO TOMADO para branches. Justifique sus clculos con tablas de tiempo. (No se toman en cuenta fallos de
cach por "fetch" de instrucciones).
b) NO (15 pts) Use Amdahl para calcular la aceleracin que lograra este programa si los fallos de cach de datos se
resolvieran en la mitad del tiempo. (sin forwarding ni prediccin de branches, es decir, con CPI inicial de 2.95)

2. Estas son secciones de cdigo de dos hilos o de dos procesos escritos en cierto lenguaje de alto nivel que corren en
paralelo, cada uno en uno de los dos ncleos de un procesador MIPS.
a) (15 pts) Escriba en ensamblador MIPS las instrucciones que resolveran la seccin de cdigo 1 y la seccin 2.
b) (15 pts) Suponiendo que las comparaciones en lenguaje de mquina correspondientes a las comparaciones de los IF
se realizan simultneamente, qu resultados se daran en cada una de las comparaciones si los cdigos
pertenecen a dos hilos de un mismo proceso (C y L variables "globales")? Explique por qu Qu resultados se
daran en cada una de las comparaciones si los cdigos pertenecen a dos procesos? Explique por qu.
Seccin de cdigo 1 Seccin de cdigo 2
A=1; B=1;
... ...
B=0; A=0;
IF(A==0) IF(B==0)
c) (10 pts) Si las cachs de datos en cada ncleo fueran Wth, No Write Allocate, de igual capacidad y ambas de
mapeo directo, y suponiendo que A y B estn en bloques diferentes de memoria (tanto para el caso de hilos como
de procesos), qu quedara en la cach de cada ncleo al final del IF? Dibuje las cachs y escriba en ellas lo que
habra a raz de estas ejecuciones. Explique. Hgalo tanto para el caso en el que fueran 2 hilos de un mismo
proceso, y tambin para el caso en el que fueran 2 procesos.

3. NO [15 pts] Para el siguiente cdigo MIPS, escriba la tabla de tiempos, calcule el CPI, indique "forwardings" con una
flecha e indique el registro del cual se necesita su valor. (Para op. de Flotantes, recuerde: suma 4 ciclos, multiplicacin,
7)
Resuelva los conflictos explicando cmo los hace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ADD.D F6, F7, F8
SUB.D F30, F6, F11
L.D F6, 100(R20)
MUL.D F12, F10, F6
2
4. [15 pts] Suponga que se tiene un procesador de un ncleo que tiene solo una cach de datos WB, W.ALL, Mapeo
directo para asignacin de bloque, bloques de 2 palabras y con capacidad para 8 bloques.

En memoria est la matriz de enteros A almacenada por filas a partior de la posicin 0 de memoria. Consta de 4 filas
por 4 columnas. Tambin el vector de enteros V con 8 elementos, almacenado a partir del byte 80 de memoria.
Suponga que ah corre este fragmento de cdigo Calcule el nmero de fallos de cach y de palabras
for i=0, i < 4. i++ escritas a memoria que se dan durante la ejecucin de
for j= 0, j<4, j++ { dicho cdigo. Explique sus clculos

x+= A[i][j];
A[i][j] ++;
}
for i=0, i < 8, i= i+2
y+= V[i+1];

3
1er EXAMEN 2016-I-SEM L 23 Mayo (22 %) - 11 am

* No ms de 5 renglones por pregunta, con excepcin de las que ocupan tablas de tiempo
1. (9 pts) Escriba un fragmento de cdigo MIPS para enteros, de manera que durante su ejecucin se produzca un conflicto
de datos, tal que se hace un forwarding desde el registro M/WB.LMD al MUX de la entrada a memoria (cach de
datos) en MEM. Escriba su tabla de tiempos y explique en ella cuando es que se da dicho conflicto y cmo se resuelve.
2. (8 pts) En qu consiste la definicin de la arquitectura del conjunto de instrucciones de un procesador? qu tan
importante es esta definicin comparada con el diseo lgico de un procesador?
3. (8 pts) Explique en qu casos tiene sentido utilizar procesos y en qu casos hilos cuando se va a resolver un problema
con programacin paralela. Por qu?
4. (15 pts)Responda con referencia al proyecto del curso
a. Cmo se logra implementar en su proyecto, la simulacin de que los relojes de los 3 procesadores son de la
misma velocidad?
b. Por qu al pedirse que la asignacin de la CPU a los hilillos se hiciera utilizando un algoritmo de planificacin por
turno rotatorio (round robin), se hizo indispensable la creacin de una estructura de contextos para cada CPU?
5. (20 pts)Escriba la tabla de tiempos para el siguiente cdigo MIPS para enteros, el cual se ejecuta en un procesador con
igual pipeline al visto en clase, solucin de branches en EX y Mem, sin prediccin de branches y con forwarding para
conflictos de datos. Utilice flechas que muestren con total claridad de donde en donde se realizan los "forwardings".

Valores Iniciales: Segmento de cdigo


M[80] = 0 DADDI R5, R0, #40
R3 = 20 LW R8, 40(R5)
R2 = -15 DSUB R4, R5, R3
BNEZ R8, Etiq
DADD R4, R4, R2
SW R4, 200(R0)
DADDI R8, R8, # 50
Etiq DDIV R6 , R4, R8
SW R6, 40(R0)

6. (8 pts)Cuando se trabaja con paralelismo en el nivel de hilos, explique qu es y cundo es que se trabaja con memoria
compartida distribuida. Explique de manera somera cmo sera un protocolo de directorios para realizar la coherencia
de cach en este tipo de memoria compartida.

7. (8 pts)Por qu puede ocurrir que si el procesador no trabaja con Reglas de Alineacin para las direcciones de
memoria, los accesos a memoria puedan tardar ms tiempo? qu son estas reglas?

8. (8 pts)Indique en cul o cules estrategias de asignacin de bloques en cach (formas de decidir en qu posicin de la
cach se va a almacenar o copiar un bloque) tiene utilidad aplicar tambin estrategias de reemplazo de bloques (LRU,
FIFO, Random) por qu? qu utilidad tiene usarlas?

9. (8 pts)Una aplicacin secuencial que corre en un de 4 ncleos (quad core) gasta una quinta parte de su tiempo en
ejecutar una seccin de cdigo que es paralelizable cul sera la aceleracin mxima que se podra lograr para este
programa si se paraleliza?

10. (8 pts)Suponga que Chicungunya, en un programa en C C++ que utiliza MPI y va a correr en el cluster, declara un
vector V de la siguiente manera: int* V. Una vez lleno ese vector con 100 valores por parte del proceso 0 desea hacer un
broadcast de V. Esto se hizo de la siguiente manera:
MPI_Bcast ( &V, 100, MPI_INT, 0, MPI_COMM_WORLD );
est bien la forma en la que lo program Chicungunya? Justifique

4
1er EXAMEN 2016-I-SEM L 23 Mayo (22 %) - 3 pm
* No ms de 5 renglones por pregunta, con excepcin de las que ocupan tablas de tiempo

1. (9 pts) Escriba una secuencia de instrucciones MIPS, las cuales al correr en un pipeline MIPS con "Forwarding" (como
mecanismo para disminuir los ciclos de retraso en la solucin de conflictos de datos) obligue a que se realice un forwarding
desde el registro M/WB.LMD al primer operando del ALU y al mismo tiempo un forwarding desde EX/M.AluOutput al
segundo operando del ALU. Escriba la tabla de tiempos y seale los forwarding con flechas.

2. (8 pts) Explique en qu casos tiene sentido utilizar procesos y en qu casos hilos cuando se va a resolver un problema
con programacin paralela. Por qu?

3. (8 pts) Cuando se trabaja con paralelismo en el nivel de hilos, qu caracteriza a la arquitectura de memoria compartida
centralizada? (a diferencia de la de memoria compartida distribuida) De manera simple, explique cmo se puede lograr la
coherencia de cach en este tipo de memoria compartida.

4. (8 pts) En un juicio el acusado es el "pipeline", es decir, la ejecucin de instrucciones en paralelo en los procesadores. Se
le culpa porque de no haber sido por "l", nunca se habra tenido conflictos de datos, de control -branches y jumps- y
estructurales, y los programas correran ms rpido. Usted es su abogada o abogado defensor (a), qu argumentos
presentara en la corte para contradecir lo que la fiscala afirma? Justifquelos

5. (8 pts) Amalia disea compiladores para el procesador X y Marino hace programas en lenguajes de alto nivel que
correran en una mquina con el procesador X. Entre ellos dos, para quin es indispensable saber si en ese procesador
X se trabaja con Reglas de Alineacin para las direcciones de memoria? por qu?

6. (8 pts)Por qu en igualdad de condiciones, es ms rpido el acceso a una cach cuya estrategia para asignar bloques
(decidir en qu posicin de la cach se almacena o sube un bloque) es la de mapeo directo?

7. NO (8 pts) 3/4 partes del tiempo de ejecucin de mi programa secuencial se dedica a resolver operaciones paralelizables.
Por qu, aunque se paralelice "eficientemente", NUNCA se obtendr una aceleracin mayor que 4, aunque el nmero
de ncleos de este procesador fuera infinito?

8. (8 pts) Suponga que Vuvucella, en un programa en C C++ que utiliza MPI y va a correr en el cluster, declara un vector V
de la siguiente manera: int* V. Una vez lleno ese vector con 100 valores por parte del proceso 0 desea hacer un broadcast
de V. Esto se hizo de la siguiente manera:
MPI_Bcast ( &V[0], 100, MPI_INT, 0, MPI_COMM_WORLD );
est bien la forma en la que lo program Vuvucella? Justifique

9. (20 pts) Escriba la tabla de tiempos para el siguiente cdigo MIPS para enteros, el cual se ejecuta en un procesador con
igual pipeline al visto en clase, solucin de branches en EX y Mem, sin prediccin de branches y con forwarding para
conflictos de datos. Utilice flechas que muestren con total claridad de donde en donde se realizan los "forwardings".

Valores iniciales: Segmento de cdigo


M[80] = -25 DADDI R5, R0, #40
R3 = 20 LW R8, 40(R5)
R2 = -15 BNEZ R8, Etiq
R4 = 100 DSUB R4, R5, R3
Etiq DDIV R6 , R4, R8
DADD R4, R4, R2
SW R4, 200(R0)
DADDI R9, R4, # 50
SW R9, 40(R0)

10. (15 pts) Responda con referencia al proyecto del curso


a. Por qu para el proyecto no estamos utilizando una TLB (Translation Lookaside Buffer) ni una Tabla de Pginas?
b. Cmo se maneja el quantum en su proyecto? Qu ocurre en su simulacin cuando se le termina el quantum a un
hilillo?

5
1er EXAMEN 2016-I-SEM L 23 Mayo (22 %) - 5 pm
* No ms de 5 renglones por pregunta, con excepcin de las que ocupan tablas de tiempo

11. NO (8 pts) Zika no comprende por qu mi programa secuencial que corra en un procesador con 4 ncleos, si fuera
paralelizado correctamente, solo lograra una aceleracin mxima de 2. Puede explicarle ud con los clculos adecuados
por qu ocurrira esto?

12. (15 pts) Responda con referencia al proyecto del curso


a. En su simulacin, qu problemas se tendran si cuando en un procesador se da un fallo de cach, aumentramos el
reloj en 16 ciclos de una sola vez.
b. Cmo se maneja el quantum en su proyecto? Qu ocurre en su simulacin cuando se le termina el quantum a un
hilillo?
13. (8 pts) Suponga que Melquiades en un programa en C C++ que utiliza MPI y va a correr en el cluster, declara un vector
V de la siguiente manera: int* V. Una vez lleno ese vector con 100 valores por parte del proceso 0 desea hacer un
broadcast de V. Esto se hizo de la siguiente manera:
MPI_Bcast ( V, 100, MPI_INT, 0, MPI_COMM_WORLD );
est bien la forma en la que lo program Melquiades? Justifique

14. (20 pts) Escriba la tabla de tiempos para el siguiente cdigo MIPS para enteros, el cual se ejecuta en un procesador con
igual pipeline al visto en clase, solucin de branches en EX y Mem, sin prediccin de branches y con forwarding para
conflictos de datos. Utilice flechas que muestren con total claridad de donde en donde se realizan los "forwardings".

Valores Iniciales: Cdigo MIPS:


M[160] = 0 LW R5, 160 (R0)
M[40] = 0 LW R8, 40(R5)
R3 = 20 DSUB R4, R5, R3
R2 = -15 BNEZ R8, Etiq
DADD R4, R4, R2
SW R4, 200(R0)
DADDI R8, R4, #0
Etiq DDIV R6 , R4, R8
SW R6, 40(R0)

15. (9 pts) Escriba una secuencia de instrucciones MIPS, las cuales al correr en un pipeline MIPS con "Forwarding" (como
mecanismo para disminuir los ciclos de retraso en la solucin de conflictos de datos) obligue a que se realice un forwarding
desde el registro EX/M.AluOutput al primer operando del ALU y al mismo tiempo un forwarding desde M/WB.AluOutput
al segundo operando del ALU. Escriba la tabla de tiempos y seale los "forwarding" con flechas
16. (8 pts)Siempre que se utilicen procesos y/o hilos en la solucin programada de un problema, se va gastar menos
tiempo de ejecucin en comparacin con una solucin "secuencial"? Por qu?

17. (8 pts) Cuando se trabaja con paralelismo en el nivel de hilos, qu caracteriza a la arquitectura de memoria compartida
distribuida? qu tipo de protocolo se utilizara para la coherencia de cach?

18. (8 pts) Qu se gana con la ejecucin en paralelo de instrucciones (pipeline)?

19. (8 pts) Qu ventaja se tiene cuando en un procesador se debe cumplir con Reglas de Alineacin para las
direcciones de memoria? qu son estas reglas?

20. (8 pts) Entre las estrategias para asignar bloques a cach (decidir en qu posicin de la cach se almacena o sube un
bloque) se encuentra la "completamente asociativa". Si en el proyecto del curso la cach de instrucciones hubiera sido
completamente asociativa, qu diferencias habra tenido su programa, en comparacin con la forma en que se hace
actualmente la asignacin y la bsqueda de un bloque en esta cach?

6
1er EXAMEN 2016-I-SEM L 23 Mayo (22 %) - Reposicin
* No ms de 5 renglones por pregunta, con excepcin de las que ocupan tablas de tiempo
1. (15 pts) Asumiendo forwarding escriba la tabla de tiempos para el siguiente fragmento MIPS

Instruccin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
LW R2, 20(R8)
DMUL R8, R2, R4
DSUB R5, R2, R8
SW R5, 20(R8)

2. (8 pts) Explique cmo un compilador podra disminuir los conflictos de datos que tendra un programa al ejecutarse en
determinado procesador.

3. (8 pts) Explique en qu casos tiene sentido utilizar procesos y en qu casos hilos cuando se va a resolver un problema
con programacin paralela. Por qu?

4. (8 pts) Explique por qu es ms difcil y menos eficiente hacer prediccin de branch "TOMADO" de manera esttica (es
decir, fija, siempre igual), que hacer la de "NO TOMADO".

5. (15 pts) Responda con referencia al proyecto del curso


a. Cmo se logra implementar en su proyecto, la simulacin de que los relojes de los 3 procesadores son de la
misma velocidad?
b. Cmo se maneja el quantum en su proyecto? Cmo se procede en su simulacin si un hilillo finaliza antes de que
se le termine el quantum?

6. (12 pts) Explique utilizando un ejemplo, por qu cuando hay prediccin de branch "NO tomado", el programa se ahorra 3
ciclos de retraso si el branch es falso, en comparacin con su corrida con las mismas condiciones, pero en una mquina
que trabaja sin prediccin alguna para los "branches". Sugerencia: Escriba para ello tablas de tiempos para un cdigo MIPS
que ud defina. Suponga el procesador MIPS de 5 etapas para enteros con solucin de branches en EX y Mem.

7. NO (8 pts) Cuando se trabaja con paralelismo en el nivel de hilos, explique qu es y cundo es que se trabaja con
memoria compartida distribuida. Explique de manera somera cmo sera un protocolo de directorios para realizar la
coherencia de cach en este tipo de memoria compartida.

8. (10 pts) Un tcnico, indicando que con esto acortara el tiempo de ejecucin de programas, propone modificar el pipeline
del MIPS para enteros de manera que se unan en una sola etapa la etapa de acceso a Memoria ( Mem) y la etapa write
back (WB) . El pipeline quedara de esta manera: IF ID EX Z en donde Z sera la nueva etapa que incluye lo que se
realiza en Mem y en WB). Usted ha sido contratado(a) para evaluar la propuesta y decidir si tiene sentido o no. Escriba su
decisin y al menos 3 argumentos fuertes que soporten esta decisin.

9. NO (8 pts) Una aplicacin secuencial que corre en un procesador de 8 ncleos gasta una cuarta parte de su tiempo en
ejecutar una seccin de cdigo que es paralelizable cul sera la aceleracin mxima que se podra lograr para este
programa si se paraleliza? Explique su clculo

10. (8 pts) En una tarea de MPI, se pidi escribir un programa tal que el proceso raz solicitara al usuario un nmero n, para luego
enviarlo a todos los procesos. Los estudiantes Cuchufleto y Filpero presentran a continuacin el fragmento de su programa que
resuelve esto. Cul de los dos hace mejor su programa? por qu?

Cuchufleto: Filpero:
... ...
if (id == 0) {
if (id == 0) { printf("Digite el valor de n: ");
printf("Digite el valor de n: "); scanf("%d",&n);
fflush(stdout); for (i = 1; i < p; i++)
scanf("%d",&n); MPI_Send(&n, 1, MPI_INT, i, 555, MPI_COMM_WORLD);
} } else { /* id <> 0 */
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Recv(&n, 1, MPI_INT, 0, 555, MPI_COMM_WORLD, &status);
}
7
1er EXAMEN 2015, II sem. L 19 de OCTUBRE (22%) G1

1. Como parte de la definicin de una computadora, se encuentra el diseo de la arquitectura del conjunto de
instrucciones.
a. (5 pts)Qu es el conjunto de instrucciones de una computadora?
b. (10 pts) Indique al menos dos elementos que forman parte de la arquitectura del conjunto de instrucciones, y
explique de qu manera influye cada uno de esos elementos en el desempeo de la computadora que se est
definiendo.
2. (10 pts)Por qu en un pipeline (por ejemplo en el pipeline de MIPS para entero de 5 etapas, conocido) tiene sentido
tener una cache L1 (nivel 1) para instrucciones y otra cach L1 para datos en lugar de una sola cach unificada L1
(Una sola para datos e instrucciones)?
3. (10 pts)Por qu entre dos cachs del mismo tamao, una completamente asociativa y la otra de mapeo directo para
sus estrategias de asignacin de bloques, la completamente asociativa tiene una menor tasa de fallos?

4. Relacionado con el proyecto del curso, primera parte.


a. (10 pts) Suponga que en cierto momento, en el ncleo 1 estaba corriendo el hilillo 1, pero de pronto se le acaba su
quantum, qu debe hacerse?, cul de los hilos de su simulacin se encarga de realizar esto que ud. indica?, en
qu momento lo hace?
b. (15 pts) Si se hubiera pedido que se implementara "pipeline", es decir, ejecucin de las instrucciones en paralelo en
cada uno de los dos ncleos, indique al menos 2 de las principales (ms importantes) diferencias que habra
tenido que incluir en el diseo de cada ncleo. Explique por qu.
5. En un multiprocesador corre un proceso que ha creado varios hilos y que utiliza memoria compartida. Si un hilo
solicita a su cach escribir, o sea modificar una palabra de un bloque vlido (no modificado anteriormente) que se
encuentra en dicha cach
a. (5 pts)Por qu no lo puede modificar inmediatamente? a qu se debe esperar?
b. (10 pts)Cmo se realiza este proceso si se trata de memoria compartida centralizada? y Cmo se realizara si se
tratara de memoria compartida distribuida?

6. El siguiente fragmento de cdigo de un programa MIPS que corre en un procesador con forwarding para conflicto de
datos):
DADDI R4, R0, #15

DADD R5, R10, R11

DSUB R6, R4, R5

LW R7, 20(R6)

a. (10 pts) Escriba su tabla de tiempos, indique con una flecha los forwardings que se den (si los hay) explicando
aparte, desde qu registro del pipeline se hace el envo y en dnde se recibe.
b. (5 pts) Si el fragmento de cdigo corri en un procesador de 3GHz cuntos nanosegundos (ns) tard este
fragmento ejecutndose? justifique

7. (10 pts) En un curso de MPI, Vespaciano, Gurrupeto y Melquiades presentaron cada uno su cdigo escrito en lenguaje C
con comandos MPI en un concurso en donde se les peda que escribieran un programa en el que el proceso 0 creara
un vector dinmicamente y luego se lo enviara a todos los procesos que corren. Ac las partes del cdigo que
interesan de cada uno, que interesan. Suponga que las variables etiq, i , n y p (nmero total de procesos corriendo)
estn bien definidas. Califique el trabajo de cada uno (indique si est 1.bien y eficiente), 2. mal, o 3. bien pero
ineficiente explicando la razn de su calificacin. A quin le dara el primer premio?

8
Vespaciano Gurrupeto Melquiades

int* V; int* V; int* V;

V = new int[n]; V = new int[n]; V = new int[n];

... ac se insertan datos en el vector por


... ac Proc. 0 llena el vector ... ac se insertan datos en el vector por
parte del proceso 0
parte del proceso 0
Lo que sigue lo hacen todos los procesos:
Lo que sigue lo hacen todos los
procesos: Lo que sigue lo hacen todos los
if (my_rank == 0) { procesos:

for (i = 1; i < p; i++)


MPI_Bcast (&V, n, MPI_INT, 0,
MPI_COMM_WORLD); MPI_Bcast (V, n, MPI_INT, 0,
MPI_COMM_WORLD);
MPI_Send (&V[0],n, MPI_INT, i, etiq,
MPI_COMM_WORLD);

} else {

MPI_Recv(V, n, MPI_INT, 0, etiq,


MPI_COMM_WORLD, &status);

CI1323 Arquitectura de Computadoras 2015, II sem. L 19 de Octubre


ECCI-UCR 1er EXAMEN (22%) G2 prof. Ileana Alpzar

1. NO (10 pts) Un programa secuencial que corre en un procesador de 8 ncleos (cada uno de un hilo) tarda
ejecutndose 100000 segundos, de los cuales la mitad la gasta en realizar operaciones que son paralelizables.
Calcule la mayor aceleracin que podra lograr este programa si se paralelizara . Explique sus clculos.

2. (15 pts) Como parte de la definicin de una computadora, se encuentra el diseo de la arquitectura del conjunto de
instrucciones, el cual incluye, entre otras cosas, la definicin de:
i. El almacenamiento operandos (de donde toma el ALU sus operandos para una operacin aritmtica)
ii. Los diferentes modos de obtener una direccin de memoria (modos direccionamiento)
iii. Las operaciones que realizara
iv. La codificacin de las instrucciones en lenguaje de mquina (formatos de codificacin y tamao)
Explique para cada una de estas cosas que deben definirse, qu caractersticas deberan tener para cuando se define
una mquina RISC (Reduced Instruction Set Computer, o Computadora cuyo conjunto de instrucciones es reducido)

3. (10 pts) Entre dos cachs del mismo tamao, una completamente asociativa y la otra de mapeo directo para sus
estrategias de asignacin de bloques Cul es la ms rpida? por qu?

4. NO En un multiprocesador corre un proceso que ha creado varios hilos y que utiliza memoria compartida
distribuida. Si un hilo solicita a su cach leer (LW) una palabra de un bloque que no est en su cach,
a. ( 5 pts)Por qu el controlador de su cach debe enviar un mensaje al directorio casa de ese bloque
solicitndolo?
b. (10 pts)Cmo se realiza este proceso si se tratara de memoria compartida centralizada?
5. Relacionado con el proyecto del curso, primera parte.
9
a. (10 pts) Si cada ncleo hubiese manejado un reloj propio, independiente del otro ncleo, cmo afectara esto en
cuanto a que la simulacin se apegara ms a la "realidad" en cuanto al paso del tiempo?
b. (15 pts) Si se hubiera pedido que se implementara "pipeline", es decir, ejecucin de las instrucciones en paralelo
en cada uno de los dos ncleos, indique al menos 2 de las principales (ms importantes) diferencias que
habra tenido que incluir en el diseo de cada ncleo. Explique por qu.

6. Dado el siguiente fragmento de cdigo de un programa MIPS que correen un procesador con forwarding para conflicto
de datos):
LW R8, 40(R0)
DADDI R5, R0,#5
DSUB R9, R8, R5
SW R5, 80(R0)

a. (10 pts) Escriba su tabla de tiempos, indique con una flecha los forwardings que se den (si los hay) explicando
aparte, desde qu registro del pipeline se hace el envo y en dnde se recibe.
b. (5 pts) Si el fragmento de cdigo corri en un procesador de 2GHz cuntos nanosegundos (ns) tard este
fragmento ejecutndose? justifique

7. (10 pts) Gumersinda y Segismunda participaron en un concurso organizado por los estudiantes de Arqui. Deban hacer un
programa en C con comandos de MPI y que corra en el cluster de la ECCI, de manera que el proceso 0 cre un arreglo
de enteros, cuyo nmero de elementos sea igual a 100 * nmero de procesos corriendo y que luego reparta en orden
y de 100 en 100 elementos a cada uno de los procesos que corren (incluyendo 100 para el proceso 0).
Ac las partes del cdigo que interesan de cada una. Suponga que las variables etiq, i , numprocesos (nmero total de
procesos corriendo) estn bien definidas. Cul de las dos ganara el concurso? Explique por qu.

Gumersinda Segismunda

... ...

int numprocesos, *sendbuf; int numprocesos, *sendbuf;

int root, rbuf[100]; int root, rbuf[100];

... ...

MPI_Comm_size(comm, & numprocesos); MPI_Comm_size(comm, & numprocesos);

sendbuf = (int *) malloc ( numprocesos * 100 * sizeof(int) ); sendbuf = (int *) malloc ( numprocesos * 100 * sizeof(int) );

Ac el proceso 0 guarda valores enteros en senbuf Ac el proceso 0 guarda valores enteros en senbuf

... ...

Lo que sigue lo hacen todos los procesos: Lo que sigue lo hacen todos los procesos:

MPI_Scatter(sendbuf, 100, MPI_INT, rbuf, 100, MPI_INT, if (my_rank == 0) {


0, comm);
for (i = 1; i < numprocesos; i++)

MPI_Send (sendbuf + i*100, 100,MPI_INT,i,etiq,MPI_COMM..);

} else {

MPI_Recv (rbuf,100,MPI_INT,0,etiq,MPI_COMM...,&status);

10
1er EXAMEN 2015, I sem. J 14 de Mayo (26%) G1
I. Resuelva

1. (35 pts) En un multiprocesador de 2 ncleos corren en paralelo dos hilos de un mismo proceso utilizando memoria
compartida centralizada. Las cachs de datos de cada uno de los ncleos son de mapeo directo, tienen
capacidad para 4 bloques, cada uno de 2 palabras, estrategia Write Back para hits de escritura y estrategia
Write Allocate para fallos de escritura. Actualmente las cachs de datos y la memoria compartida tiene el siguiente
estado:

Las siguientes peticiones ocurren en este mismo orden, para cada una escriba los cambios en los diagramas de arriba, y
explique lo que ocurre:
a. Ncleo 0 pide a su cach escribir el valor -20 en la palabra 0 del bloque 6 y al mismo tiempo el ncleo 1 pide
a su cach escribir el valor 25 en la palabra 1 del bloque 6.

b. El Ncleo 0 pide a su cach leer la palabra 1 del bloque 3 de memoria y al mismo tiempo el ncleo 1 pide a su
cach leer la pal 1 del bloque 1

c. El ncleo 0 y el ncleo 1 piden en el mismo instante a su cach escribir en la palabra 0 del bloque 1 un 5 y un
27 respectivamente.

2. (25 pts) La matriz A, de 8 filas y 8 columnas, est almacenada por filas en memoria a partir del byte 0. Un
programa, que corre en este procesador (que es de solo un ncleo y un hilo) contiene el doble ciclo que se presenta
a continuacin. Calcule el nmero de fallos de cach, y el nmero de palabras escritas a memoria durante la
ejecucin de dicho doble ciclo, si se sabe que solo hay una cach de datos nivel 1, que es de mapeo directo, write
Back para aciertos de escritura, write allocate para fallos de escritura, con capacidad para 8 bloques de 4
palabras, y en la cual no se encuentra ningn bloque que tenga parte del contenido de esta matriz. R es una
variable cuyo valor fue inicializado en 0 y que fue leda antes de este doble for.

for (i = 0; i < 8; i++) {


for (j = 0; j < 8; j++) {
R = R + A[i] [j];
}
A[i,0] = R;
}

3. (15 pts) Dado el siguiente cdigo de un programa en c que corre en el cluster con MPI, si se corre con un "mpiexec -n 5
...", qu se espera se despliegue en pantalla al finalizar los 5 procesos?
11
#include <stdio.h>
#include <pthread.h>
#include "mpi.h"
main(int argc, char* argv[])
{
pthread_t hilo0, hilo1;
int id0=0, id1=1;
void imprime_mensaje(void *ptr);

MPI_Init(&argc, &argv);
pthread_create(&hilo0, NULL, (void *) & mensaje, (void *) &id0);
pthread_create(&hilo1, NULL, (void *) & mensaje, (void *) &id1);

pthread_join(hilo0, NULL);
pthread_join(hilo1, NULL);
MPI_Finalize();
return 0;
}
void mensaje(void *ptr) {
int id=0, yo ;
id = *(int *) ptr;
MPI_Comm_rank(MPI_COMM_WORLD, &yo);
printf(" Hilo num %d de proceso %d \n", id, yo);
return;
}

II. Respuesta corta, no ms de 3 renglones por pregunta (5 pts cada una)

4. NO Si en un multiprocesador corren varios hilos de un mismo proceso con la modalidad de memoria compartida
distribuda (NUMA). Indique en qu casos no es necesario revisar el directorio casa de un bloque en el que se
desea hacer una operacin de memoria en una de sus palabras (LW SW), y explique por qu.

5. NO Si mi programa (con mismas condiciones iniciales), al pasar de correr del procesador A al procesador B logra una
aceleracin igual a 4, pero al pasar de correr del procesador A al procesador C logra una aceleracin igual a 3, Cul es
la aceleracin que lograra si se pasa de correr de el procesador C al procesador B? Haga sus clculos

6. Cuando se comenzaron a utilizar la computadoras stas eran programadas exclusivamente en lenguaje de mquina.
Luego Grace Hopper cre el primer compilador, y de ah en adelante, poco a poco, se comenz a programar en
lenguajes de alto nivel. Qu tanto habra crecido la industria de los procesadores, si nunca a nadie se le hubiera
ocurrido la idea de los compiladores? Por qu?

NO Para las siguientes dos preguntas use esta informacin:


Suponiendo que ya su grupo de trabajo en el curso finaliz el proyecto con los 3 procesadores para correr hilos con
memoria compartida distribuida, y el protocolo de directorios para coherencia de cach. Si de los mismos hilos que
usamos de "prueba" para esta primera parte del proyecto, se asignan los primeros 3 hilos, uno a cada procesador para
que corran en paralelo,

7. ****Quedaran los mismos resultados que se obtenan con la primera parte al finalizar de correr los primeros 3 hilos? Es
decir, si en el procesador i, corri el hilo i, al finalizar quedaran los mismos valores en cach, memoria, y registros,
como los que quedaban al finalizar de correr cada hilo en la primera parte del proyecto? Explique por qu.

8. ****Qu informacin quedara en el directorio del procesador 1 y en el directorio del procesador 2 para los bloques del 8
al 15, y del 16 al 23 respectivamente? Por qu?

12
CI1323 Arquitectura de Computadoras 2015, I sem. J 14 de Mayo

ECCI-UCR prof. Ileana Alpzar


1er EXAMEN (26%) G2
I. Respuesta corta, no ms de 3 renglones por pregunta (5 pts cada una)
1. Si en un multiprocesador corren varios hilos de un mismo proceso con la modalidad de memoria compartida
centralizada (UMA). Por qu, cuando un hilo va a modificar un bloque que est en su cach como compartido pone ese
mensaje en el bus? Cules controladores de cach deben poner atencin al mensaje en el bus? Por qu?

2. NO Tengo un programa secuencial que corre en una mquina de 4 ncleos. Ese programa tarda 80000 segundos
ejecutndose. Si s que la mitad de ese tiempo, o sea 40000 segundos, se gastan en cosas que pueden ser
completamente paralelizables. Cul sera la aceleracin mxima que podra lograr al paralelizarlo. Justifique.

3. Suponga que dos hilos MIPS de un mismo proceso (hilo1 e hilo2) corren cada uno en un ncleo del mismo procesador,
utilizando memoria compartida centralizada. En la cach del ncleo en donde corre el hilo 1, as como en la cach del
ncleo en donde corre el hilo 2, se encuentra el bloque 8 como compartido (C) y en su palabra 0 est el valor 17. Si de
manera simultnea el hilo 1 solicita a su cach leer la palabra 0 de este bloque, y el hilo 2 le solicita a su cach
escribir el valor 85 en la pal 0 del bloque 8, Es posible que el hilo 1 termine leyendo el valor 85? Por qu?
Cambiara su respuesta si se trabajara con memoria compartida distribuida? Por qu?

4. Si se tiene un programa en C, que usa comandos MPI, que corre en el cluster y que al correrse, cada proceso crea
hilos, como en su Tarea Corta 2, Cmo se hace la comunicacin entre los hilos de un mismo proceso? Por medio de
paso de mensajes, o por medio de memoria compartida? Explique.

5. NO Suponiendo que ya su grupo de trabajo en el curso finaliz el proyecto con los 3 procesadores (P0, P1 y P2) para
correr hilos con memoria compartida distribuida, y el protocolo de directorios para coherencia de cach. Sabiendo
que todos los hilos de prueba que se usaron para la primera parte solo trabajan con la parte compartida de la memoria
local de P0 se podra asignar alguno de estos hilos para correr en P1 en P2? por qu?

II. Resuelva

6. (25 pts) La matriz M, de 4 filas y 16 columnas, est almacenada por filas en memoria a partir del byte 0. Un programa,
que corre en este procesador (que es de solo un ncleo y un hilo) contiene el doble ciclo que se presenta a continuacin.
Calcule el nmero de fallos de cach, y el nmero de palabras escritas a memoria durante la ejecucin de dicho doble
ciclo, si se sabe que solo hay una cach de datos nivel 1, que es de mapeo directo, write Back para aciertos de
escritura, write allocate para fallos de escritura, con capacidad para 8 bloques de 4 palabras, y en la cual no se
encuentra ningn bloque que tenga parte del contenido de esta matriz.
Suponga que el compilador es eficiente y trata de minimizar fallos y escrituras constantes a memoria

for (i = 0; i < 2; i++) {


for (j = 0; j < 15; j++) {
M[i] [j] = M[i] [j] + M[i+2] [j];
}
}

7. (15 pts) Dado el siguiente fragmento de cdigo C con comandos de MPI, indique qu hace, qu problema tiene y
explique de qu manera se podra hacer ms eficiente

float A[p][m]; /* hay p procesos corriendo, p = nmero de filas de A */


...
if (my_rank == 0) {
for (i = 1; i < p; i++)
MPI_Send(&(A[i][0]), m, MPI_FLOAT, i, 911, MPI_COMM_WORLD);

} else { /* my_rank !0 */
MPI_Recv(&(A[my_rank][0]), m, MPI_FLOAT, 0, 911, MPI_COMM_WORLD, &status);
G2-pg2

13
8. NO (35 pts) En un multiprocesador de 2 ncleos corren en paralelo dos hilos de un mismo proceso utilizando memoria
compartida distribuida. Las cachs de datos de cada uno de los ncleos son de mapeo directo, tienen capacidad para
4 bloques, cada uno de 2 palabras, estrategia Write Back para hits de escritura y estrategia Write Allocate para
fallos de escritura. Actualmente las cachs de datos, los directorios y las memorias compartidas tienen el siguiente
estado:

Las siguientes peticiones ocurren en este mismo orden, para cada una escriba los cambios en los diagramas de arriba, y
explique si se da fallo o no, y cuando es una lectura, indique el valor ledo:

a. Procesador 1 pide a su cach escribir el valor -20 en la palabra 0 del bloque 5 y al mismo tiempo el
Procesador 2 pide a su cach escribir el valor 25 en la palabra 1 del bloque 2.

b. El Procesador 1 pide a su cach leer la palabra 1 del bloque 5 de memoria y al mismo tiempo el Procesador 2
pide a su cach escribir un 45 en la pal 1 del bloque 5

c. El Procesador 1 y el 2 piden en el mismo instante a su cach escribir en la palabra 0 del bloque 3 un 5 y un 27


respectivamente

14
1er EXAMEN II SEM 2014 26% G1

1. Suponga que en un programa en C C++ que utiliza MPI y va a correr en el cluster, se declara un vector V de
la siguiente manera: int* V. Una vez lleno ese vector con 100 valores por parte del proceso 0 se desea
hacer un broadcast de V. Suponga que quien programa lo hace de la siguiente manera:
MPI_Bcast ( &V, 100, MPI_INT, 0, MPI_COMM_WORLD );

qu ocurre luego de la ejecucin de este broadcast? Por qu?

2. Un programa, encargado de hacer la multiplicacin de una matriz de dimensin n x n por un vector de


dimensin n, es utilizado muchsimas veces como parte de varias aplicaciones que hacen clculos
matemticos en un instituto de investigacin aqu en San Pedro. El procesador es un quad-core (cuatro
ncleos, un hilo por ncleo). Suponga que Milo, un famoso programador, fue contratado por el instituto para
que paralelizara este programa. Milo hizo un programa tal que una vez que lee la dimensin de la matriz (el
valor n), el programa crea n hilos, cada uno encargado de hacer la multiplicacin de una fila por el vector. Al
final el hilo principal tan solo toma el resultado. Milo est preocupado porque esper que su programa fuera
siempre n veces ms rpido que antes, pero result que no siempre ocurri esto. Cul es la aceleracin
mxima que lograra Milo con su cambio al usarse para una matriz 20 x 20 ?

1er EXAMEN II SEM 2014 26% G2

3. Este es un fragmento de un programa Saludos.c, que se encarga de que cada proceso (con excepcin del
proceso 0) enve un mensaje de saludo al proceso 0 con MPI.
Explique el principal problema que se tiene con esta estructura de recepcin de mensajes del proceso 0 al
recibirlos en orden por nmero de proceso. Indique cul sera la mejor manera de resolverlo.
if (my_rank != 0) {
sprintf (mensaje, "Hola! Saludos desde el proceso %d!", my_rank);
destino = 0;
MPI_Send (mensaje, strlen(mensaje)+1, MPI_CHAR, destino, etiqueta, MPI_COMM_WORLD);
} else { /* my_rank == 0 */
for (fuente = 1; fuente < numeroProcesos; fuente++) {
MPI_Recv (mensaje, 100, MPI_CHAR, fuente, etiqueta, MPI_COMM_WORLD, &status);
printf("%s\n", message);
}
}

4. Explique por qu son indispensables los registros entre etapas del MIPS (IF/ID, ID/EX, EX/M, M/WB) para
lograr efectivamente el paralelismo en el nivel de instrucciones (pipeline).
5. Cuando se trabaja con hilos de un mismo proceso todos ellos pueden compartir memoria qu modelos o
tipos de memoria compartida existen? Explique brevemente cada uno.

1er EXAMEN I SEM 2014 25%

6. Suponga que se tiene un procesador con 2 ncleos, en donde corre una aplicacin con dos hilos, cada uno en un ncleo.
Las cachs de datos son de mapeo directo, Write Back, y Write Allocate. Se utiliza el protocolo de snooping
para coherencia de cach.
Suponga que este es el estado actual en las cachs de datos, y que los bloques que no estn en las cachs como
compartidos, o que no estn, tiene en memoria principal el valor igual al nmero de bloque en cada palabra. Ej: el bloque 13
tendr como valores 13 13 13 13.

15
Cach Datos Ncleo 0 Cach Datos Ncleo 1

0 1 2 3 0 1 2 3

p0 -7 25 9 15 p0 -5 25 9 5

p1 -8 26 10 5 p1 -8 26 10 6

p2 -9 27 11 17 p2 3 27 11 7

p3 -10 28 12 20 p3 4 28 12 8

Etiq. 4 5 22 3 Etiq. 36 5 22 11

Estado M C C I Estado M C C I

Para cada una de las siguientes 3 preguntas haga las modificaciones en la cach respectiva y explique lo que ocurre
en memoria. NOTA: Las acciones se producen en la misma secuencia de las preguntas. Suponga que en igualdad de
condiciones, el bus lo puede ganar cualquier ncleo. Si en una pregunta se da el caso, escoja ud. quien gana el bus,
indquelo y proceda de acuerdo con dicha decisin.

a) (4 pts) En este momento el hilo que corre en el ncleo 1 solicita leer el dato de la palabra 2, bloque 8.
b) (4 pts) En este momento el hilo que corre en el ncleo 0 solicita leer la palabra 0 del bloque 5 y al mismo tiempo el
hilo que corre en el ncleo 1 solicita escribir un 999 en la palabra 0 del bloque 5. (explique lo que ocurre)
c) (7pts) En este momento tanto el hilo que corre en el ncleo 0, como el hilo que corre en el ncleo 1 solicitan
escribir en el bloque 22. El hilo del ncleo 0 desea escribir un 88 en la palabra 0 y el hilo del ncleo 1 desea escribir
un 45 en la palabra 0. (explique lo que ocurre)

7. NO (En un multiprocesador corren varios hilos de un mismo proceso utilizando memoria compartida distribuida
NUMA. Todas las cachs de datos utilizan la estrategia para hits de escritura Write Back y Write allocate para
fallos de escritura. Se usan directorios para manejar coherencia de cach. Cada procesador contiene 4 bloques de la
memoria compartida. Los procesadores, cada uno de un ncleo, los identificaremos como p0, p1, p2, p3, etc...
Suponga que en este momento en la cach del p0 y en la del p1 est el bloque 4 y es vlido en ambas (en directorio se
tiene como entrada para este bloque una C, un 1 en p0 y en p1, para los dems procesadores hay 0s. Explique la
secuencia de pasos que ud considera correcta luego de que el procesador 0 solicita a su cach realizar una
escritura al bloque 4.

8. Explique en qu consiste el TLB (translation lookaside buffer) en una jerarqua de memoria y cul es su utilidad.
(Recuerde que en realidad es una cach, o varios niveles de ellas)
9. Suponga que ud. program un simulador para MIPS (mquina virtual para todo efecto prctico), el cual est corriendo
actualmente en un procesador Xen de Intel. Si usted desea que un programa escrito en lenguaje de alto nivel C corra
en su mquina virtual MIPS a qu lenguaje de mquina debe compilarse ese programa? Explique.
10. Por qu para implementar pipeline fue necesario pasar de procesadores CISC a RISC?

PRIMER EXAMEN II SEM 2013 (VALOR 32 %) Lunes 30 de Setiembre 2013


1. Cuando se trabaja con hilos de un mismo proceso todos ellos pueden compartir memoria qu modelos o tipos de
memoria compartida existen? Explique brevemente cada uno.
2. Es cierto que para cualquier lenguaje ensamblador, cualquiera de sus instrucciones se codifica como una sola
instruccin del lenguaje de mquina para luego ser ejecutada directamente por el hardware de la computadora?

3. Imagine una nueva arquitectura la cual es igual al MIPS conocido pero en la cual adems se deben ejecutar por
hardware operaciones aritmticas para las que uno de sus operandos es un dato de memoria.
Estas seran de la forma "OP Rd, Rf, n(Rx)" en donde el resultado es: Rd Rf OP M[n+Rx].

16
Por ejemplo DSUBM R12, R15, 30(R9) cuyo resultado es R12 R15 - M[30+R9]

Disee el "pipeline" para esta arquitectura indicando claramente cules son las etapas y lo que se hace en cada una de
ellas (si hay diferencia con el pipeline MIPS conocido). No es necesario que lo dibuje.

4. Explique lo que realiza el sig fragmento de programa en C y MPI (rank = id del proceso, size = total de procesos)
...

next = (rank+1)%size;
if (rank == 0
{
token= 88;
MPI_Send(&token, 1, MPI_INT, next, 9, MPI_COMM_WORLD);
MPI_Recv(&token, 1, MPI_INT, size-1, 9, MPI_COMM_WORLD, &status);
printf("Se recibi el valor %d.\n", token);
}
else {
MPI_Recv(&token, 1, MPI_INT, rank-1, 9, MPI_COMM_WORLD, &status);
MPI_Send(&token, 1, MPI_INT, next, 9, MPI_COMM_WORLD);
}
MPI_Finalize();
return 0;
}

PRIMER EXAMEN II SEM 2012 G1 (VALOR 30 %)

1. Explique el principal problema que se tendra si en el pipeline MIPS para enteros (el de 5 etapas conocido), se eliminaran todos los
registros entre etapas (IF/ID, ID/EX, EX/M, M/WB).
2. En qu consiste un procesador de control microprogramado para la ejecucin de instrucciones?

Escriba F V

1.______ Si el procesador de la computadora A y el procesador de la computadora B implementan una misma arquitectura del
conjunto de instrucciones (ISA), entonces tanto A como B deben utilizar los mismos compiladores.

2.______ El tiempo de ejecucin de cualquier programa en una mquina doble ncleo es menor que el tiempo de ejecucin que
lograra ese mismo programa en una mquina con el mismo procesador pero de un ncleo.

3.______ El programa X puede tener diferente nmero de instrucciones dinmicas (IC) para dos ejecuciones distintas en la
misma mquina.

4.______ Si mi mquina MIPS tiene una velocidad de 1 GHz, entonces al correr un programa en el que no hubiera ciclos de retraso
por ningn motivo, cada instruccin tardar ejecutndose (desde su IF hasta WB) exactamente 1 ns (nanosegundo). Recuerde que
9 9
1Hz => 1 ciclo por segundo, 1 seg = 10 nanosegundos (ns), 1 GHz = 10 Hz

5.______ Se tienen dos procesadores (A y B) de un ncleo y un hilo cada uno. Ambos procesadores implementan el mismo
conjunto de instrucciones. El procesador A tiene un pipeline de 6 etapas y la longitud de su ciclo de reloj ( LCRA ) es de2 ns. El
procesador B tiene un pipeline con 8 etapas con una LCRB = 1,5 ns. Un programa que fue compilado para este conjunto de
instrucciones (no para cada mquina especfica) correr en cada mquina. Suponiendo que no hay retraso alguno para este programa
entonces el programa tardar menos tiempo ejecutndose en el procesador A

6.______ Cuando se trabaja con MPI en el cluster de la ECCI definiendo varios procesos, se trabaja con memoria compartida
distribuida.

17
PRIMER EXAMEN II SEM 2012 G2 (VALOR 30 %)
Escriba F V si la afirmacin es Falsa o Verdadera respect. (Escriba en su cuaderno la justificacin para cada una en 3 renglones
o menos) (48 pts 6c/u)

1.______ Si el procesador de la computadora A y el procesador de la computadora B implementan una misma arquitectura del
conjunto de instrucciones (ISA), entonces los compiladores para A y los compiladores para B deben producir ejecutables escritos en
el mismo lenguaje de mquina.

2.______ El tiempo de ejecucin de cualquier programa en una mquina de un ncleo es mayor que el tiempo de ejecucin que
lograra ese mismo programa en una mquina con el mismo procesador pero con varios ncleos.

3.______ Si se trabaja con hilos de un mismo proceso se debe trabajar siempre con memoria compartida centralizada

4.______ Si mi mquina MIPS tiene una velocidad de 3 GHz, entonces al correr un programa en el que no hubiera ciclos de retraso
por ningn motivo, cada instruccin tardar ejecutndose (desde su IF hasta WB) exactamente 1 ns (nanosegundo). Recuerde que
9 9
1Hz => 1 ciclo por segundo, 1 seg = 10 nanosegundos (ns), 1 GHz = 10 Hz
1._________

5.______ Una mquina virtual de MIPS, programada en C++, corre en una computadora con un procesador Xen de Intel. Si deseo
correr un programa en la mquina virtual MIPs, este programa debe estar en lenguaje de mquina del Xen.

6.______ Se tiene dos procesadores (A y B) de un ncleo y un hilo cada uno. Ambos procesadores implementan el mismo conjunto
de instrucciones. El procesador A tiene un pipeline de 6 etapas y la longitud de su ciclo de reloj ( LCRA ) es de2 ns. El procesador B
tiene un pipeline con 8 etapas con una LCRB = 1,5 ns. Un programa que fue compilado para este conjunto de instrucciones (no para cada
mquina especfica) correr en cada mquina. Suponiendo que no hay retraso alguno para este programa entonces el programa tardar
menos tiempo ejecutndose en el procesador A

18
PRIMER EXAMEN G1- I SEM 2012 (25%)

1. Qu indica la velocidad del reloj de la CPU de una computadora y por qu no sirve para medir el desempeo de dicha mquina?
Cmo puede medirse entonces el desempeo?
2. NO Explique qu es un multiprocesador de memoria compartida distribuida. Indique adems una ventaja y una desventaja que
tenga este tipo de multiprocesadores en comparacin con los multiprocesadores de memoria compartida centralizada.
F V:

1.______ El modo de codificacin de las instrucciones del conjunto de instrucciones de un procesador (es decir los formatos de
codificacin) que se defina cuando se est diseando un procesador, no afecta de manera alguna la forma en la que se comportar
el procesador.
2.______ En el curso de MPI se dej de tarea hacer un programa en lenguaje "C" el cual entre otras cosas que deba hacer, estaba
la tarea de que el proceso raz solicitara al usuario un nmero n, para luego enviarlo a cada uno de los otros procesos. Los
estudiantes Junpero y Filipondio presentran a continuacin el fragmento de su programa que se encarga de repartir el nmero n a los
dems procesos. Tomando en cuenta el tiempo de ejecucin que se tendra para "ese fragmento" la profesora del curso debi
ponerle mejor nota a Filipondio.

Junpero: Filipondio:

#include "mpi.h" #include "mpi.h"


main(int argc, char* argv[]) { main(int argc, char* argv[]) {
int i, n, p, id; int i, n, p, id;
MPI_Status status; MPI_Status status;
... ...
MPI_Init(&argc, &argv); MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &p); MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &id); MPI_Comm_rank(MPI_COMM_WORLD, &id);

if (id == 0) { if (id == 0) {
printf("Digite el valor de n: "); printf("Digite el valor de n: ");
fflush(stdout); fflush(stdout);
scanf("%d",&n); scanf("%d",&n);
for (i = 1; i < p; i++) }
MPI_Send(&n, 1, MPI_INT, i, 555, MPI_COMM_WORLD); MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
} else { /* id <> 0 */
...
MPI_Recv(&n, 1, MPI_INT, 0, 555, MPI_COMM_WORLD, MPI_Finalize();
&status); } /* main */
}
...
MPI_Finalize();
} /* main */

3.______ La comunicacin entre procesos que corren en un cluster se realiza a travs de memoria compartida.

Tome la informacin del siguiente cuadro para responder las 2 preguntas (****) que se indican a continuacin. El cuadro contiene
datos reales para 4 procesadores, los primeros 2 bastante viejos y los 2 ltimos fueron sacados al mercado durante este ao.

19
1. **** Note que el primer procesador, el SPARC de la SUN, el cual es un procesador RISC, tiene una sola cach de nivel 1 (L1) para
datos como para instrucciones. De qu manera afecta esto la ejecucin en paralelo de instrucciones, es decir el pipeline?
Respuesta: Esto evita que se paralelice la lectura de una instruccin y la lectura o escritura de un dato para ocurrir en el mismo ciclo,
es decir, en el pipeline se tendra un conflicto estructural y una de las dos etapas debera detenerse para esperar a que la otra
finalice.

2. ****En la SPARC T4 corre un programa y tarda ejecutndose 6000 ciclos de su reloj. En el Xen, el mismo programa tard 5000
ciclos de su reloj. En cul de las dos mquinas corre ms rpido el programa? Calcule la aceleracin que logra el programa al
pasar de la computadora en la que tarda ms a la computadora en la que se ejecuta ms rpido. Escriba y documente sus clculos.
Respuesta: (Puntaje 4 pts tiempos ejecucin y 1pt la aceleracin)

Vel SPARC T4 = 2.85 GHz => LCR = 1/2.85 ns = 0.3509 ns, entonces Tiempo ejecucin programa = 6000x0.3509=2105.26 ns

Vel Xen = 2.4 GHz => LCR = 1/2.4 ns = 0.4167 ns, entonces Tiempo ejecucin programa = 5000x0.4167=2083.33 ns

En la Xen corre ms rpido el programa, y la aceleracin al pasar del a SPARC T4 a sta es 2105.26/2083.33= 1.0105

3. Los multiprocesadores corriendo hilos de un mismo proceso trabajan con memoria compartida (es decir los hilos comparten el
mismo espacio de direcciones) pueden tener una sola memoria centralizada, o tener la memoria compartida distribuida en las
memorias locales de cada procesador. Por qu a los multiprocesadores de memoria compartida se les llama tambin "UMAs"
(uniform memory access) o tambin se dice que son SMPs (symmetric (shared-memory) multiprocessors), por su parte, a los
multiprocesadores de memoria compartida distribuida se les llama tambin "NUMAs" (nonuniform memory access). Explique por qu
a los de memoria centralizada se les llama UMAs y por qu a los de memoria compartida distribuida se les llama NUMAs.

Respuesta: UMAs al tener una memoria centralizada a la cual se tiene acceso con un nico bus, ninguno de los procesadores que
conforman el multiprocesador tienen ventaja alguna sobre los dems para utilizar la memoria, todos entonces estn en igualdad de
condiciones, adems el tiempo de respuesta para cada procesador de la memoria es igual, hay uniformidad. Con los NUMAs el
tiempo de respuesta de la memoria es diferente si el acceso se hizo a su memoria local o si se hace a una memoria remota, por lo
que no hay uniformidad en cuanto al uso de la memoria.

4. Explique lo que hace este segmento de programa C con MPI al ejecutarse con 2 procesos (mpiexec -n 2 ./programa)

main(int argc, char* argv[ ]) {


float A[10][10];
float B[10][10];

if (my_rank == 0) {
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
A[i][j] = (float) i;
MPI_Send(&(A[2][5]),10,MPI_FLOAT,1,0, MPI_COMM_WORLD);
} else {
MPI_Recv(&(B[4][9]),10, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, &status);

SOLUCIN:

20
PRIMER EXAMEN I SEM 2011 (VALOR 25 %) GRUPO 1
Escriba una F V si la afirmacin es Falsa o Verdadera respectivamente. Justifique tanto las falsas como las verdaderas

9
1.______ Si la velocidad del reloj de un procesador es de 1 GHz (10 ciclos de reloj en un segundo), entonces
se puede afirmar que el tiempo que una instruccin tarda en la etapa del pipeline ms lenta es un
-9
poco menos que 1 nanosegundo (1 nanosegundo = 10 seg)

2.______ En los procesadores de control microprogramado no es posible modificar el microprograma (o


microcdigo) de una instruccin del ensamblador de dicha mquina.
3.______ Todas las recientes arquitecturas del conjunto de instrucciones (ISAs) son "load-store" (es decir
RISC).

4.______ Al correr un programa en un procesador UltraSpic de un ncleo, un hilo, tard ejecutndose


80000 ciclos de reloj. Cuando el mismo programa con los mismos datos iniciales corre en otro
procesador UltraSpic , con la misma velocidad de reloj, pero con varios ncleos de un hilo cada
uno, tarda ejecutndose 30000 ciclos . Por lo indicado anteriormente, se puede afirmar que el
segundo procesador UltraSpic tiene al menos 3 ncleos y que el programa es paralelizado.

1. En la memoria de una computadora desde el byte 80 y hasta el byte 479 inclusive, est almacenado un programa
MIPS en lenguaje de mquina. No se tiene el programa en lenguaje ensamblador, ni en lenguaje de alto nivel. Es
posible "rescatar" el programa y pasarlo al menos al ensamblador MIPS? Si responde que s, explique todos
los pasos que ud. seguira para lograrlo. Si responde que no, explique cules son los problemas que tiene por los
que no se puede hacer esto.

2. El siguiente es un fragmento de un programa esta escrito en C con llamados a MPI

main(int argc, char* argv[]) {


int vectorS[20];
int vectorR[20];
...
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
if (my_rank == 0) {
for (i = 0; i < 20; i++)
21
vectorS[i] = i;
/* } */
for (i = 1; i < p; i++)
MPI_Send(vectorS + 2*i, 2, MPI_INT, i, 0, MPI_COMM_WORLD);
} else { /* my_rank < > 0 */
MPI_Recv(vectorR + 2*my_rank, 2, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
}
...
Suponga que se elimina el comentario de la lnea 9. Sustituya las lneas 10, 11, 12 y 13 por un solo llamado a
MPI del comando Scatter. Recuerde:
MPI_Scatter (SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, MPI_COMM_WORLD)

PRIMER EXAMEN I SEM 2011 (VALOR 25 %) GRUPO 2


1. Gandumbas Mendoza es el dueo de una empresa productora de software. Hace unos das la "Men S.A."
(Mendoza Software Association) como se llama la empresa de Gandumbas, formaliz un contrato con los
fabricantes de procesadoras MIPS (el MIPS estudiando en el curso). La idea es que la MenSA producir el
paquete ensamblador MIPS, es decir, el encargado de pasar un programa escrito en ensamblador MIPS a
lenguaje de mquina MIPS. Gandumbas defini la manera de trabajar a sus empleados y les dio varios
lineamientos:
a. El paquete ser programado en lenguaje C++
b. Los formatos de codificacin seguirn siendo de la misma longitud, sin embargo, se modificarn de la
siguiente forma:
El cdigo de operacin seguir siendo de 6 bits pero se colocar al final de la instruccin
Se usarn 10 bits para la identificacin de registros
Las constantes (inmediatos) se codificarn en 8 bits.
c. Cada "No op" encontrado en el cdigo en ensamblador ser eliminado
Haga un anlisis de cada uno de los lineamientos definidos por Gandumbas indicando si estn bien mal, y las
razones para considerarlos de esa manera.

2. Explique por qu el que la mayora de la programacin se haga en lenguajes de alto nivel (utilizando
compiladores o interpretadores) permite que la industria de los microprocesadores pueda experimentar con
nuevas ISA's y por tanto adems con nuevos diseos de procesadores.

3. El siguiente es un fragmento de un programa esta escrito en C con llamados a MPI


main(int argc, char* argv[]) {
int vectorS[20];
int vectorR[20];
...
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

if (my_rank == 0) {
for (i = 0; i < 20; i++)
vectorS[i] = i;
/* } */
for (i = 1; i < p; i++)
MPI_Send(vectorS + 2*i, 2, MPI_INT, i, 0, MPI_COMM_WORLD);

} else { /* my_rank < > 0 */


MPI_Recv(vectorR + 2*my_rank, 2, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
}
...
Suponga que se elimina el comentario de la lnea 9.
Sustituya las lneas 10, 11, 12 y 13 por un solo llamado a MPI del comando Scatter.

Recuerde:

MPI_Scatter (SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, MPI_COMM_WORLD)


22
Escriba una F V si la afirmacin es Falsa o Verdadera respectivamente. Justifique tanto las falsas como las verdaderas

9
1.______ Si la velocidad del reloj de un procesador es de 1 GHz (10 ciclos de reloj en un segundo), entonces se
puede afirmar que el tiempo que una instruccin tarda en la etapa del pipeline ms lenta es un poco
-9
menos que 1 nanosegundo (1 nanosegundo = 10 seg)

2.______ En los procesadores de control microprogramado no es posible modificar el microprograma (o


microcdigo) de una instruccin del ensamblador de dicha mquina.

3.______ Todas las recientes arquitecturas del conjunto de instrucciones (ISAs) son "load-store" (es decir RISC).

4.______ Al correr un programa en un procesador UltraSpic de un ncleo, un hilo, tard ejecutndose 80000
ciclos de reloj. Cuando el mismo programa con los mismos datos iniciales corre en otro procesador
UltraSpic , con la misma velocidad de reloj, pero con varios ncleos de un hilo cada uno, tarda
ejecutndose 30000 ciclos . Por lo indicado anteriormente, se puede afirmar que el segundo procesador
UltraSpic tiene al menos 3 ncleos y que el programa es paralelizado.

PRIMER EXAMEN II SEM 2010- G1 (25%)

1. Por qu fue necesario adoptar la filosofa RISC para poder implementar el paralelismo en el nivel de instrucciones
(pipeline)? (use 10 renglones o menos)
2. Suponga que se tiene un procesador MIPS de 1 ncleo el cual es doble hilo. Se sabe que entre las caractersticas que
debe poseer este procesador es que debe contar con 2 registros PC y dos juegos de los registros R0, R1 ... R31 Por
qu es esto necesario? (use 10 renglones o menos) axca

F V JUSTIFIQUE CADA RESPUESTA EN EL ESPACIO PROVISTO (6 PTS CADA UNA)

1.______ Mi programa P fue compilado para correr en el procesador A y tambin fue compilado para correr en el procesador B
. Se sabe que tanto A como B son de 3GHz, por lo tanto P debe tardar el mismo tiempo ejecutndose en A como en
B.

2.______ Una mquina MIPS es CISC

3.______ La aceleracin que logr el programa P al pasar de correr de la mquina A a la B fue igual a 4. Pero al pasar de la
mquina A a la C la aceleracin fue de 8. Entonces podemos afirmar que si se pasara P de correr de la mquina
B a la C su aceleracin sera igual a 2.

4.______ El CPI de un programa corriendo en la computadora A es de 6, si el programa corre en la mq.B con los mismos
datos de entrada con los que us para la mquina A y su CPI es de 3 ciclos. Entonces podemos afirmar que el
tiempo de ejecucin de ese programa en B es menor que el tiempo de ejecucin en A.

5.______ En MPI es posible enviar (y recibir) subvectores (es decir, una parte de un vector). Esto se usa tanto en MPI_Send
como en MPI_Recv, al indicar a partir de cul entrada del vector se hace el envo y adems indicando cuntos de
los elementos del vector se enviarn a partir de ah (y recibirn) . Observe el siguiente ejemplo e indique si se
puede afirmar que el proceso 1 (rank 1) de dicho ejemplo despliega 50 veces el valor 0
#include <stdio.h>

#include "mpi.h"
main(int argc, char* argv[]) {
int vector[100];
MPI_Status status;
int p;
int my_rank;
int i;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

/* Initialize vector and send */


if (my_rank == 0) {
23
for (i = 0; i < 50; i++)
vector[i] = 0;
for (i = 50; i < 100; i++)
vector[i] = 1;

MPI_Send(vector+25, 50, MPI_INT, 1, 0, MPI_COMM_WORLD);

} else { /* my_rank == 1 */

MPI_Recv(vector+25, 50, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);

for (i = 25; i < 75; i++)


printf("%d ",vector[i]);
printf("\n");
}
MPI_Finalize();
} /* main */

PRIMER EXAMEN, II SEM 2010- G2 (25%)

1. Qu indica la velocidad del reloj de la CPU de una computadora y por qu no sirve para medir el desempeo dicha
mquina? Cmo puede medirse entonces el desempeo?

2. Por qu para que un procesador pueda implementarse con pipeline es necesario que las instrucciones aritmticas y
lgicas tengan sus operandos en registros y no sean obtenidos estos de memoria? (el ALU obtiene sus operandos de
registros)
FV

111__________________ El MPI permite que en el comando MPI_Send y MPI_Recv se enve y reciba una parte de una matriz. Para ello se indica la
direccin a partir de la cual est el primer elemento a enviar (es decir , la direccin de la entrada correspondiente -fila y
columna- ) y luego se debe indicar el nmero de elementos que se enviarn (recibirn) a partir de ah. Observe el siguiente
ejemplo e indique si se puede afirmar que el proceso 1 (rank = 1) despliega en pantalla 10 veces el valor 0.

#include <stdio.h>
#include "mpi.h"

main(int argc, char* argv[]) {


int p;
int my_rank;
int A[10][10];
MPI_Status status;
int i, j;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

if (my_rank == 0) {
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
A[i][j] = i;

MPI_Send(&(A[2][0]), 10, MPI_INT, 1, 0, MPI_COMM_WORLD);

} else { /* my_rank = 1 */

MPI_Recv(&(A[2][0]), 10, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);

for (j = 0; j < 10; j++)


printf("%d", A[2][j]);
printf("\n");
}

MPI_Finalize();
} /* main */

24
222__________________ La aceleracin que logr el programa P al pasar de correr de la mquina A a la B fue igual a 4. Al pasar P de la mquina A a
la C la aceleracin fue de 8. Entonces podemos afirmar que si se pasara P de correr de la mquina B a la C su aceleracin
sera igual a 2.

SEGUNDO EXAMEN I SEM 2010 (VALOR 20 %) G1

1. En el grfico de la figura 1.1 del libro (del cual se copia ac un pedacito) se muestra que a travs de los aos los
procesadores fueron aumentando su desempeo. Este grfico se hizo tomando como referencia un procesador VAX (el 11/780,
que sali al mercado en 1978 y que no podemos ver ac en esta parte del grfico). Si suponemos que esos desempeos se
midieron al correr en todas las mquinas el mismo programa X, entonces los nmeros que aparecen en el grfico junto al nombre
de cada procesador indica la aceleracin que el programa X lograra si se pasa de correr del procesador VAX 11/780 a ese
proce-sador. Por ejemplo el 481 que aparece ac indica que el programa X logra una aceleracin igual a 481 si se pasa de
correr de la VAX a correr en el procesador Alpha 21164 de 0,5 GHz

Usando los datos que aparecen en la parte del grfico que est a la izquierda, calcule la
aceleracin que lograra el programa X al pasarse de correr del procesador PowerPC
604 de 0,1 GHz al procesador Alpha 21164 de 0,5 GHz.

Explique por qu su clculo realmente da la aceleracin.

SOLUCIN

Del grfico obtenemos que


a) Cuando el programa X se pas a correr de la VAX a la Power PC se obtuvo una aceleracin igual a 117, o sea que

tiempo ejecucin programa X en la VAX = T.ej X VAX = 117 => T.ej X Pw.PC = T.ej X VAX
tiempo de ejecucin del programa X en la Power PC T.ej X Pw.PC 117

b) Cuando el programa X se pas a correr de la VAX a la Alpha 21164 de 0,5GHz se obtuvo una aceleracin igual a 481, o
sea que

tiempo ejecucin programa X en la VAX = T.ej X VAX = 481 => T.ej X Alpha = T.ej X VAX
tiempo de ejecucin del programa X en la Alpha 21164 T.ej X Alpha 481

Si queremos calcular la aceleracin que lograra el programa X al pasarse de correr de la


PowerPC a la Alpha de 0.5, debemos calcular :
T.ej X Pw.PC
T.ej X Alpha

Tiempos que obtuvimos en la parte 1. Entonces:

T.ej X Pw.PC = T.ej X VAX /117 = 481/117 = 4.1111


T.ej X Alpha T.ej X VAX /481

Respuesta: La aceleracin que lograra el programa X al pasarse de correr de la Power PC a la Alpha 21164 de 0.5GHz
es igual a 4.1111. Es decir, mientras el progarma X corre 1 vez en la Power PC, correra 4.1111 veces en la Alpha.

25
Marque F V segn considere se trata de una afirmacin Falsa o Verdadera respectivamente (15 preg/ 4 pts cada una), justifique
las falsas en la lnea que est luego de cada pregunta (si no se justifica, aunque sea F pierde los puntos).

1.______ Suponga que se tiene un procesador MIPS como el que conocemos pero con la diferencia de que no es pipelineado.
Podemos afirmar entonces que en este procesador no se necesitaran los registros IF/ID, ID/EX, EX/MEM, MEM/WB

2.______ Si el procesador de la computadora A es de 2 GHz y el de la B es de 3 Ghz, y mi programa tarda 2000 ciclos de reloj en
A y 6000 ciclos de reloj, entonces la aceleracin de mi programa, al pasar de la mquina A a la B es igual a 2

3.______ Suponga un procesador MIPS como el que conocemos pero con la diferencia de que no es pipelineado ( y por lo tanto
las instrucciones solo ejecutan las etapas que realmente deben o sea pasaran solo por las etapas de ejecucin que realmente
necesitan). Suponga que tanto en el pipelineado como el no pipelineado ofrecen las mismas instrucciones, las ejecutan de la misma
manera, tienen las mismas unidades funcionales (ALUs, cachs, sumadores etc). Puede afirmarse entonces que al correrse un
programa igual en ambos procesadores, con las mismas condiciones iniciales, una operacin LW (load: carga de memoria a un
registro) con la que no habr fallo de cach de datos ni de instrucciones, tardar ejecutndose ms tiempo en el MIPS pipelineado
que el tiempo que tardara en el MIPS no pipelineado

4.______ Un programa X en cierto lenguaje de alto nivel fue compilado para correr en una mquina RISC y tambin fue compilado
para correr en una mquina CISC. Al correr en cada una, con los mismos datos iniciales se espera que el nmero de instrucciones
dinmicas sea menor en la mquina RISC.

5.______ La escogencia entre 2 computadoras que ofrecen las mismas funcionalidades se debe basar siempre en la velocidad
del reloj de cada una.

6.______ Pepe program el PPMIPS en lenguaje C el cual es un simulador de MIPS, es decir el PPMIPS recibe programas MIPS
y los ejecuta simulando el comportamiento de un procesador MIPS: el paso de etapas por pipeline de instrucciones en paralelo (IF,
ID,EX, etc, utilizando un ALU simulado, usando cachs, etc. Suponga que Pepe compil su PPMIPS para correr en una computadora
que tiene determinado procesador AMD. Entonces si se desea correr en el simulador un programa MIPS, este debe estar en el
lenguaje de mquina del procesador AMD.

26

Das könnte Ihnen auch gefallen