soltercera evaluacion-2-2012

14
ORGANIZACIÓN Y ARQUITECTURA DE COMPUTADORES TERCERA EVALUACION – SEGUNDO TÉRMINO 2012-2013 NOMBRE:_________________________________________________ INSTRUCCIONES El examen es totalmente individual, a libro cerrado y no se podrá consultar a ninguna otro tipo de fuente que no sea usted mismo (no libros, no apuntes, no teléfono celular, no Internet, no archivos electrónicos). Toda respuesta deberá colocarse en este documento y no se aceptarán ni hojas ni otro documento aparte. El examen puede ser resuelto en menos de dos horas aún cuando tengan que responder en el computador. Se le permite tener máximo tres hojas en blanco, un lápiz o pluma, un borrador y una regla. Las hojas le permitirán realizar los cálculos que se requieran para obtener las respuestas a ciertas preguntas del examen. Antes de empezar el examen coloque su nombre en las hojas en blanco que va a utilizar y muéstrelas al profesor. Al terminar el examen deberá llamar al profesor para que le reciba el archivo del examen. No se aceptará otro método de recepción. Al guardar este archivo guárdelo con el nombre de su apellido y su nombre en ese orden. Además de entregar el archivo entregue las tres hojas que haya o no utilizado durante el examen para hacer los cálculos. Cualquier otra instrucción que falte en este documento se las dará en clase. No hay consultas de ningún tipo.

Upload: ronny-moran

Post on 24-Oct-2015

49 views

Category:

Documents


0 download

TRANSCRIPT

ORGANIZACIÓN Y ARQUITECTURA DE COMPUTADORES TERCERA EVALUACION – SEGUNDO TÉRMINO 2012-2013

NOMBRE:_________________________________________________

INSTRUCCIONES

• El examen es totalmente individual, a libro cerrado y no se podrá consultar a ninguna otro tipo de fuente que no sea usted mismo (no libros, no apuntes, no teléfono celular, no Internet, no archivos electrónicos).

• Toda respuesta deberá colocarse en este documento y no se aceptarán ni hojas ni otro documento aparte.

• El examen puede ser resuelto en menos de dos horas aún cuando tengan que responder en el computador.

• Se le permite tener máximo tres hojas en blanco, un lápiz o pluma, un borrador y una regla. Las hojas le permitirán realizar los cálculos que se requieran para obtener las respuestas a ciertas preguntas del examen.

• Antes de empezar el examen coloque su nombre en las hojas en blanco que va a utilizar y muéstrelas al profesor.

• Al terminar el examen deberá llamar al profesor para que le reciba el archivo del examen. No se aceptará otro método de recepción.

• Al guardar este archivo guárdelo con el nombre de su apellido y su nombre en ese orden.

• Además de entregar el archivo entregue las tres hojas que haya o no utilizado durante el examen para hacer los cálculos.

• Cualquier otra instrucción que falte en este documento se las dará en clase. • No hay consultas de ningún tipo.

Pregunta # 1 (7 puntos) Asuma para que la variable a está en el registro $s0, b está en $s1 y c está en $s2. Convierta el siguiente fragmento escrito en C directamente a lenguaje ensamblador de MIPS. Comente correctamente su código para indicar que hace cada línea.

a=0; for(b=10; b > 0, b = b-1){

for (c=b; c>0; c=c-1) {

a = a + b*c; }

} Label Instrucción Comentarios add $s0, $zero, $zero Inicio constante a con valor cero addi $s1, $zero, 10 Inicio contador b del lazo externo con

valor 10 forExt: beq $s1, $zero, Exit1 Comparo b si es mayor que cero, si es

igual a cero salgo del lazo externo add $s2, $zero, $s1 Inicio contador c del lazo interno con el

valor del contador b del lazo externo forInt: beq $s2, $zero, Exit2 Comparo c si es mayor que cero, si es

igual a cero salgo del lazo interno mult $s1, $s2 Multiplico b*c mfhi $s3 Guardo la parte alta del resultado de la

multiplicación b*c mflo $s3 Guardo la parte bajo del resultado de la

multiplicación b*c add $s0, $s0, $s3 Sumo el producto b*c con el valor de a addi $s2, $s2, -1 Decremento contador c j forInt Exit2: addi $s1, $s1, -1 Decremento contador b j forExt Exit1:

Pregunta # 2 (6 puntos) Suponga que tiene un computador que funciona a 2GHz. Si este computador ejecuta un codificador de video MPEG-4 que procesa 1000 millones de instrucciones que tienen la siguiente distribución de instrucciones:

20% Floating point CPI = 3 10% Integer CPI = 1 30% Load CPI = 2 20% Store CPI = 1 15% Branches CPI = 4 5% Other CPI = 1.5

a. ¿Cuál es el CPI promedio para este codificador de video? (1.5 puntos) 0.20x3 + 0.10x1 + 0.30x2 + 0.2x1 + 0.15x4 + 0.05x1.5 = 0.60 + 0.10 + 0.60 + 0.2 + 0.6 + 0.075 = 2.175 b. ¿Cuánto tiempo le tomará al codificador ejecutar todas las instrucciones? (1 puntos) 2.175 x 0.5x10-9 x 1x109 = 1.0875 sec. c. Asuma que tiene un compilador inteligente que puede reducir las instrucciones de floating-point a la mitad triplicando las instrucciones de enteros. Comparando con el CPI original, cuál es el porcentaje de mejoramiento de CPI? (Hint, requiere calcular nuevamente los porcentajes de las instrucciones.) (3.5 puntos) (10 + 30 + 30 + 20 + 15 + 5) = 110

10/110% Floating point CPI = 3 30/110% Integer CPI = 1 30/110% Load CPI = 2 20/110% Store CPI = 1 15/110% Branches CPI = 4 5/110% Other CPI = 1.5

9.09% Floating point CPI = 3 27.27% Integer CPI = 1 27.27% Load CPI = 2 18.18% Store CPI = 1 13.64% Branches CPI = 4 4.55/110% Other CPI = 1.5

0.0909x3 + 0.2727x1 + 0.2727x2 + 0.1818x1 + 0.1364x4 + 0.0455x1.5 = 0.2727 + 0.2727 + 0.5454 + 0.1818 + 0.5456 + 0.0683 = 1.8865 (2.175-1.8865)/2.175x100 = 13.26% Pregunta # 3 (2 puntos) Representación de Punto Flotante: Escriba la representación binaria siguiendo el estándar IEEE 754 de simple precisión (32-bits) del número en decimal -13 y 5/32. Recuerde el número mágico (127) que se añade al exponente. Muestre cada paso de la conversión. -135/32 = -13.15625 -1101.00101 = -1.10100101 x 23+127 = -1.10100101 x 2130 128 64 32 16 8 4 2 1 1 0 0 0 0 0 1 0 1 10000010 10100101000000000000000 Pregunta # 4 (6 puntos) Un procesador trabaja a 2 GHz y tiene un CPI de 1.2 sin incluir los ciclos de “stall” debido a búsquedas no acertadas en cache (misses). Las instrucciones de “load” and “store” cuentan por el 30% de todas las instrucciones. El procesador tiene un I-cache y un D-cache. El tiempo cuando se acierta (hit time) es de 1 ciclo reloj. La I-cache tiene un 3% de “miss rate”. La D-cache tiene un 5% de “miss rate” en las instrucciones de “load” y “store”. La penalidad por un “miss” es de 40 ns, que es el tiempo de acceso y transferencia de un bloque de cache entre la memoria principal y el procesador. . a. Cuál es el tiempo de acceso promedio para el acceso a una instrucción en ciclos de

reloj? (1 punto) Miss penalty = 40 ns * 2 GHz = 80 clock cycles AMAT = hit time + miss rate * miss penalty = 1 + 0.03 * 80 = 3.4 clock cycles

b. Cuál es el tiempo promedio de acceso a memoria para acceso de datos en ciclo de reloj? (1 punto)

AMAT = 1 + 0.05 * 80 = 5 clock cycles c. Cuál es el número de ciclos de espera (stall) por instrucción y el total de CPI? (2

puntos) Stall cycles per instruction = 1 * 0.03 * 80 + 0.3 * 0.05 * 80 = 3.6 cycles Overall CPI = 1.2 + 3.6 = 4.8 cycles per instruction d. Usted está considerando reemplazar el CPU de 2 GHz por uno idéntico pero que

trabaja a 3 GHz. Cuán más rápido es el nuevo procesador? Asuma que el tiempo de acertar (hit time) en la I-cache y la D-cache es 1 ciclo de reloj en el nuevo procesador, y que el tiempo de acceso y de transferencia de un bloque de cache entre la memoria y el procesador es todavía de 40 ns. (2 puntos)

For the new processor running at 3 GHz: Miss penalty = 40 ns * 3 GHz = 120 clock cycles Stall cycles per instruction: (1 * 0.02 + 0.3 * 0.05) * 120 = 5.4 cycles Overall CPI = 1.2 + 5.4 = 6.6 cycles per instruction Speedup = (CPIc / CPId) * (Clock Rated / Clock Ratec) = (4.8 / 6.6) * (3/2) = 1.0909 Problema # 5 (17.5 puntos) Para el datapath de MIPS mostrado a continuación, algunas líneas han sido marcadas con “X”. A continuación se desea ejecutar el siguiente código:

Código Ejemplo

Instrucción

Loop:

addi $s1, $zero, 3 addi $s2, $zero, 2 add $s3, $s2, $s3 sw $s1, 0($s2) add $s1, $s2, $t0 add $s2, $s1, $t1 beq $s1, $s2, loop

Los valores iniciales de los registros y de memoria son los siguientes: Registro Valor Memoria Direccion Valor $s1 0x0003 0x0000 0x0000 $s2 0x0002 0x0004 0x0001 $s3 0x0000 0x0008 0x0002 $t0 0x0002 0x000C 0x0002 $t1 0x0000 0x0010 0x0003 a. Si no se corta ninguna línea:¿Cuáles son los valores de los registros al realizar una

iteración del lazo? ¿El procesador queda dentro de un lazo o no? (3.5 puntos)

Instruc. C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13

addi $s1, $zero, 3 IF

ID

EX

MEM

WB

addi $s2, $zero, 2 IF

ID

EX

MEM

WB

Loop:

add $s3, $s2, $s3

IF

ID

EX

MEM

WB

sw $s1, 0($s2)

IF

ID

EX

MEM

WB

add $s1, $s2, $t0

IF

ID

EX

MEM

WB

add $s2, $s1, $t1 IF

ID

EX

MEM

WB

beq $s1, $s2, loop

IF

ID

EX

MEM

WB

$s1 3 3 3 3 3 3 3 3 4 4

$s2 2 2 2 2 2 2 2 2 2 4

$s3 0 0 0 0 0 0 2 2 2 2

Registro Valor Memoria

Direccion Valor

$s1 0x0004 0x0000 0x0000 $s2 0x0004 0x0004 0x0001 $s3 0x0002 0x0008 0x0002 $t0 0x0002 0x000C 0x0002 $t1 0x0000 0x0010 0x0003 Si se queda en el lazo porque $s1 = $s2 b. Describa en palabras la consecuencia negativa de cortar solo la línea 1. ¿Cuáles son

los valores de los registros al realizar una iteración del lazo? ¿El procesador queda dentro de un lazo o no? (3.5 puntos)

Línea Descripción

1 No puede escribir a un registro. Esto significa que cualquier instrucción tipo R y cualquier otra instrucción que guarde en registro no lo puede hacer

Ninguna instrucción podrá escribir a los registros y por lo tanto los valores de los registros no cambiarán Registro Valor Memoria

Direccion Valor

$s1 0x0003 0x0000 0x0000 $s2 0x0002 0x0004 0x0001 $s3 0x0000 0x0008 0x0002 $t0 0x0002 0x000C 0x0002 $t1 0x0000 0x0010 0x0003 No se queda en el lazo porque $s1 <> $s2 c. Describa en palabras la consecuencia negativa de cortar solo la línea 2. ¿Cuáles son

los valores de los registros al realizar una iteración del lazo? ¿El procesador queda dentro de un lazo o no? (3.5 puntos)

Línea Descripción

2 El Forwarding del primer operando falla.

Instruc. C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13

addi $s1, $zero, 3 IF

ID

EX

MEM

WB

addi $s2, $zero, 2 IF

ID

EX

MEM

WB

add $s3, $s2, $s3

IF

ID

EX

MEM

WB

sw $s1, 0($s2) IF

ID

EX

MEM

WB

add $s1, $s2, $t0

IF

ID

EX

MEM

WB

add $s2, $s1, $t1 IF

ID

EX

MEM

WB

beq $s1, $s2, loop

IF

ID

EX

MEM

WB

$s1 3 3 3 3 3 3 3 3 4 4

$s2 2 2 2 2 2 2 2 2 2 4

$s3 0 0 0 0 0 0 2 2 2 2

Hay cinco dependencias que utilizan el forwarding (líneas azules). De izquierda a derecha, y de arriba hacia abajo, la primera y la segunda están relacionadas con el registro $s2 como primer operando por lo tanto el forwarding de $s2 fallará. La tercera y cuarta dependencia están relacionadas con el registro $s1 como primer operando por lo tanto el forwarding de $s1 fallará también. Los valores finales de los registros serán: Registro Valor Memoria

Direccion Valor

$s1 0x0003/0x0004 0x0000 0x0000 $s2 0x0004 0x0004 0x0001 $s3 0x0002 0x0008 0x0002 $t0 0x0002 0x000C 0x0002 $t1 0x0000 0x0010 0x0003 Si se queda en el lazo d. Describa en palabras la consecuencia negativa de cortar solo la línea 3. ¿Cuáles son

los valores de los registros al realizar una iteración del lazo? ¿El procesador queda dentro de un lazo o no? (3.5 puntos)

Línea Descripción

3 La dirección destino de un salto de una instrucción branch no trabaja.

Registro Valor Memoria

Direccion Valor

$s1 0x0004 0x0000 0x0000 $s2 0x0004 0x0004 0x0001 $s3 0x0005 0x0008 0x0002 $t0 0x0002 0x000C 0x0002 $t1 0x0000 0x0010 0x0003 No se queda en el lazo pues no se habilita el branch e. Describa en palabras la consecuencia negativa de cortar las líneas 1, 2 y 3. ¿Cuáles

son los valores de los registros al realizar una iteración del lazo? ¿El procesador queda dentro de un lazo o no? (3.5 puntos)

Instruc. C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13

addi $s1, $zero, 3 IF

ID

EX

MEM

WB

addi $s2, $zero, 2 IF

ID

EX

MEM

WB

add $s3, $s2, $s3

IF

ID

EX

MEM

WB

sw $s1, 0($s2) IF

ID

EX

MEM

WB

add $s1, $s2, $t0

IF

ID

EX

MEM

WB

add $s2, $s1, $t1 IF

ID

EX

MEM

WB

beq $s1, $s2, loop

IF

ID

EX

MEM

WB

$s1 3 3 3 3 3 3 3 3 3 3

$s2 2 2 2 2 2 2 2 2 2 2

$s3 0 0 0 0 0 0 0 0 0 0

No se queda en el lazo pues no se habilita el branch

Problema # 6 (10 puntos) A continuación se le proporciona un segmento de código. 1 add $s4, $s1, $s0 2 sub $s9, $s3, $s4 3 add $s4, $s5, $s6 4 lw $s2, 100($s3) 5 sw $s2, 100($s4) 6 lw $s2, 0($s2) 7 and $s2, $s2, $s1 a. Realice el diagrama de pipeline e identifique las dependencias y hazards. Para el

diagrama se le proporciona la siguiente tabla y se le da un ejemplo con la primera instrucción: (5 puntos)

b. Reescriba el código incluyendo instrucciones NOP (de ser necesario) para

resolver los hazards. (2 puntos)

1 add $s4, $s1, $s0 nop nop 2 sub $s9, $s3, $s4 3 add $s4, $s5, $s6 4 lw $s2, 100($s3) nop nop 5 sw $s2, 100($s4) 6 lw $s2, 0($s2) nop

nop 7 and $s2, $s2, $s1 17 ciclos

Instruc. C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13

add $s4, $s1, $s0 IF ID EX MEM WB

sub $s9, $s3, $s4 nop nop IF ID EX MEM WB

add $s4, $s5, $s6 IF ID EX MEM WB

lw $s2, 100($s3) IF ID EX MEM WB

sw $s2, 100($s4) nop nop IF ID EX MEM WB

lw $s2, 0($s2) IF ID EX MEM WB

and $s2, $s2, $s1 nop nop IF ID EX MEM WB

c. Reordene el código de tal forma que obtenga el mejor desempeño posible. Indique

el número de ciclos reloj que toma la ejecución. (3 puntos) 1 add $s4, $s1, $s0 4 lw $s2, 100($s3) 2 sub $s9, $s3, $s4 3 add $s4, $s5, $s6 5 sw $s2, 100($s4) 6 lw $s2, 0($s2) 7 and $s2, $s2, $s1

Instruc. C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13

add $s4, $s1, $s0 IF ID EX MEM WB

lw $s2, 100($s3) IF ID EX MEM WB

sub $s9, $s3, $s4 nop IF ID EX MEM WB

add $s4, $s5, $s6 IF ID EX MEM WB

sw $s2, 100($s4) nop nop IF ID EX MEM WB

lw $s2, 0($s2) IF ID EX MEM WB

and $s2, $s2, $s1 nop nop IF ID EX MEM WB

16 ciclos

Problema # 7 (4.5 puntos)

a. ¿Cuáles son las dos características de accesos a memoria de programa que la memoria cache explota? (1.5 puntos)

localidad temporal, y localidad especial

b. ¿Cuál es la longitud en bits de tag, index y offset de bloque para una cache de datos de 128KB con mapeo directo que utiliza una dirección de 32-bits y 16 bytes por bloque? (1.5 puntos)

128KB = 128*1024 bytes = 32*1024 words = 8*1024 blocks

Bits Decimal 8 256 9 512 10 1024 11 2048 12 4096 13 8192

Index = 13 bits Offset = 4 bits Tag = 32 – 13 – 4 = 15 bits

c. ¿Cuál es la longitud en bits de tag, index y offset de bloque para una cache asociativa de 8-vias que tiene 16 bloques y 32 bytes por bloque. Asuma una dirección de 32 bits? (1.5 puntos)

16 blocks = 2 sets of 8-vias

Bits Decimal 8 256 9 512 10 1024 11 2048 12 4096 13 8192

Index = 1 bit (# de sets) Offset = 5 bits Tag = 32 – 5 + 1 = 26 bits Pregunta # 8 (7.5 puntos) Considere una memoria cache con mapeo directo con 64 bloques. El tamaño de cada bloque es de 32 bytes.

a. Encuentre el número de bits para tag, bits para indice, y bits de osffset en una

dirección de 32-bit. (1.5 puntos) Offset bits = 5 Index bits = 6 Tag bits = 32 – 11 = 21 bits b. Encuentre el número de bits requerido para almacenar todos los bits de validación y

de tags de la memoria cache. (2 puntos) Total number of tag and valid bits = 64* (21 + 1) = 1408 bits c. Dada la siguiente secuencia de referencia a direcciones en decimal: 20000, 20004, 20008, 20016, 24108, 24112, 24116, 24120 Iniciando con una cache vacía, muestre el indice, tag y offset para cada referencia e indique si hubo un “hit” o un “miss”. (A continuación se proporciona una tabla para que la vaya llenando con la información adecuada. (4 puntos) 20000 / 32 = 625 bloques 625 mod 64 = 49 (# del bloque o index) 24108 / 32 = 753.3750 753 mod 64 = 49 0.3750 * 32 = 12 Address = Hex Tag (21 bits) Index (6) bits) Offset (5) bits 20000 = 0x4E20

01001-110001-00000 01001 =0x09= 9 110001=0x31=49 00000=0x00=0

24108 = 0x5E2C

01011-110001-01100 01011 =0x0B= 11 110001=0x31=49 01100=0x0C=12

Address = Hex Offset (5) bits)

Index (6) bits)

Tag Hit or Miss 20000 = 0x4E20 0x00 = 0 0x31 = 49 9 Miss (initially empty)

20004 = 0x4E24 0x04 = 4 0x31 = 49 9 Hit

20008 = 0x4E28 0x08 = 8 0x31 = 49 9 Hit

20016 = 0x4E30 0x10 = 16 0x31 = 49 9 Hit

24108 = 0x5E2C 0x0C = 12 0x31 = 49 11 Miss (different tag)

24112 = 0x5E30 0x10 = 16 0x31 = 49 11 Hit

24116 = 0x5E34 0x14 = 20 0x31 = 49 11 Hit

24120 = 0x5E38 0x18 = 24 0x31 = 49 11 Hit

Pregunta # 9 (1 punto) Cuàl de las siguientes proposiciones es verdadera?

a. El examen evaluó lo que aprendimos en las clases b. El examen evaluó material que no vimos en las clases c. El examen fue tan fácil que no fue necesario estudiar el material visto en

clase.