arquitectura de sistemas paralelos. 3º ing. tec. en informatica de

Anuncio
ARQUITECTURA DE SISTEMAS PARALELOS.
3º ING. TEC. EN INFORMATICA DE SISTEMAS. SEPTIEMBRE, 2005.
NOMBRE:
C1. (1.5 puntos). Suponga un procesador con direcciones virtuales y físicas ambas de 32 bits, tamaño de
página de 1KB y TLB asociativa de 4 vías con 128 entradas. Qué cantidad de memoria se necesita para el
TLB (incluyendo etiquetas y 1 bit de validez)?
Respuesta:
Las direcciones tanto virtuales como físicas están divididas en dos campos: 10 bits menos significativos
para dirección dentro de la página (de 1KB), y el resto (22 bits) para dirección de página virtual y marco
de memoria física, respectivamente.
La TLB es asociativa 4 vías, 128 entradas: son pues 32 conjuntos por lo que de los 22 bits de la dirección
de página virtual (que es con lo que se busca en la TLB) 5 son de índice y los 17 restantes son de etiqueta.
Cada entrada del TLB es de 22 bits (un marco de memoria física). Si añadimos el bit de validez, queda:
128*(1+17+22)=5120bits=640bytes
C2. (1 punto) Suponga un dispositivo E/S, con un único puerto de entrada de 8 bits, con el bit más
significativo (MSB) normalmente a 1. Cuando baja a 0, indica que ha llegado un nuevo dato por los 7 bits
restantes. Al leerlos, automáticamente el MSB vuelve a 1. Escriba una función que espere un dato y lo
devuelva en una variable char.
Respuesta (función C):
char recibe() {
while(inportb(PUERTO)&0x80)!=0)
;
return (inportb(PUERTO)&0x7F);
}
C3. (1.5 puntos). Describa brevemente los mecanismos para mantener la coherencia de caché en sistemas
multiprocesadores
Respuesta:
C4. (3 puntos) Escriba una función en ensamblador 8086 llamable desde C en modelo Small con el
siguiente prototipo:
int funcion1 (long *num);
La función1 debe tomar el valor de num, y pasarlo a otra función que se supone ya hecha y cuyo prototipo
es
long funcion2 (long num).
Del resultado devuelto por funcion2 deben extraerse los 16 bits más significativos, que serán los que
devuelve funcion1.
Respuesta:
.MODEL small
.CODE
PUBLIC _funcion
_funcion PROC
push bp
mov bp,sp
mov bx,[bp+4]
push WORD PTR [bx+2]
push WORD PTR [bx]
call _funcion2
add sp,4
mov ax,dx
pop bp
ret
_funcion ENDP
END
C5. (3 puntos) Se dispone de un procesador segmentado de 4 etapas: A B C D. Los saltos condicionales
se toman al final de la tercera etapa y los incondicionales al final de la segunda. El procesador apuesta por
salto no tomado. Además, los saltos condicionales suponen el 10% del total de instrucciones (de los que
el 65% se toman) y los incondicionales un 5%. Se pide:
a) Calcular la aceleración que se consigue respecto a la máquina no segmentada.
b) ¿Tiene sentido apostar por salto tomado? Justificar la respuesta. En caso afirmativo, repetir los
cálculos del apartado a suponiendo salto tomado.
c) Calcular de nuevo la aceleración suponiendo una BTB en la que se acierta el 90% de las
ocasiones. En este caso, el procesador resuelve todos los saltos en la etapa B.
Respuesta:
CPI=CPIideal+CPB
S=CPIno_segmentado/CPI segmentado
a)
Salto condicional
salto (i)
ABCD
instrucción (i+1) A - A B C D (tomado)
instrucción (i+1) A - B C D (no tomado)
Salto incondicional
salto (i)
ABCD
instrucción (i+1)
AABCD
CPB=0.1*(0.65*2+0.35*1)+0.05*1=0.215
CPI=1+0.215=1.215
S=4/1.215=3.29
b) Se puede apostar por salto tomado porque la dirección se calcula en una etapa anterior a la etapa en la
que se evalúa la condición (independientemente de si es más o menos efectivo)
CPB=0.1*(0.35*2+0.65*1)+0.05*1=0.185
CPI=1+0.215=1.185
S=4/1.185=3.38
c) La BTB afecta tanto a los saltos condicionales (condición y destino) como a los incondicionales
(destino)
Acierto: 0 ciclos de bloqueo
Fallo: 2 ciclos de bloqueo (hay que añadir una penalización por actualización)
CPB=(0.1+0.05)*(1-0.9)*2=0.03
CPI=1+0.03
S=4/1.03=3.88
Descargar