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