






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Redes de área local apuntes, para todos
Tipo: Apuntes
1 / 10
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







Se recomienda la realización de los siguientes ejercicios del libro: Fuente: Computer Architecture: A Quantitative Approach. 5 Ed Hennessy and Patterson. Morgan Kaufmann. 2012.
Apéndice C: Ejercicios C.1, C.2, C.3, C.4 y C.5.
Capítulo 3: Ejercicios 3.1, 3.2, 3.3, 3.4, 3.6, 3.7, 3.10, 3.12.
Ejercicio 1 Examen de junio de 2015.
Considere un procesador tipo MIPS con arquitectura segmentada (pipeline) que tiene dos bancos de registros separados uno para números enteros y otro para números en coma otante. El banco de registros enteros dispone de 32 registros. El banco de registros de coma otante dispone de 16 registros de doble precisión ($f0, $f2,... , $f30). Se supone que se dispone de suciente ancho de banda de captación y decodicación como para que no se generen detenciones por esta causa y que se puede iniciar la ejecución de una instrucción en cada ciclo, excepto en los casos de detenciones debidas a dependencias de datos. La siguiente tabla muestra las latencias adicionales de algunas categorías de instrucciones, en caso de que haya dependencia de datos. Si no hay dependencia de datos la latencia no es aplicable. La instrucción bnez usa bifurcación retrasada con una ranura de retraso (delay slot). En esta máquina se desea ejecutar el siguiente código: b u c l e : ldc1 $ f 0 , ( $t0 ) ldc1 $ f 2 , ( $t1 ) add.d $ f 4 , $ f 0 , $ f 2 mul.d $ f 4 , $ f 4 , $ f 6 sdc1 $ f 4 , ( $t2 )
J. Daniel Garcia et al. 1 Arquitectura de Computadores
Cuadro 1: Latencias adicionales por instrucción Instrucción Latencia adicional Operación
ldc
+2 Carga un valor de 64 bits en un registro de coma otante.
sdc
+2 Almacena un valor de 64 bits en memoria principal.
add.d
+4 Suma registros de coma otante de doble precisión.
mul.d
+6 Multiplica registros de coma otante de doble precisión.
addi
+0 Suma un valor a un registro entero.
subi
+0 Resta un valor a un registro entero.
bnez
+1 Salta si el valor de un registro no es cero.
addi $t0 , $t0 , 8 addi $t1 , $t1 , 8 subi $t3 , $t3 , 1 bnez $t3 , b u c l e addi $t2 , $t2 , 8 Inicialmente los valores de los registros son:
$t0: 0x00100000.
$t1: 0x00140000.
$t2: 0x00180000.
$t3: 0x00000100.
Se pide:
IMPORTANTE: Se considerarán incorrectas soluciones que no usen registros realmente existentes (p. ej. $f2' o $f2 son nombres no válidos).
Ejercicio 2 Examen de enero de 2015.
Sea el siguiente fragmento de código se encuentra almacenado a partir de la dirección de memoria 0x1000100C en una máquina en la que todas las instrucciones ocupan 4 bytes:
J. Daniel Garcia et al. 2 Arquitectura de Computadores
b u c l e : lw $ f 0 , 0 ( $ r 1 ) lw $ f 2 , 0 ( $ r 2 ) m u l. f $ f 4 , $ f 0 , $ f 2 add.d $ f 6 , $ f 6 , $ f 4 addi $r1 , $r1 , 4 addi $r2 , $r2 , 4 sub $r3 , $r3 , 1 bnez $r3 , b u c l e
No hay hardware de forwarding. La arquitectura permite que una instrucción escriba en un registro y otra instrucción lea ese mismo registro sin problemas. Las bifurcaciones se tratan vaciando el pipeline. Las referencias a memoria requieren un ciclo de reloj. La dirección efectiva de salto se calcula en la etapa de ejecución.
Hay hardware completo de forwarding. Asuma que las bifurcaciones se tratan prediciendo todos los saltos como tomados.
Ejercicio 4 Octubre de 2014.
Sea el siguiente fragmento de código: b u c l e : lw $ f 0 , 0 ( $ r 1 ) lw $ f 2 , 0 ( $ r 2 ) s u b. f $ f 4 , $ f 0 , $ f 2 mul.d $ f 4 , $ f 4 , $ f 4 add.d $ f 6 , $ f 6 , $ f 4 addi $r1 , $r1 , 4 addi $r2 , $r2 , 4 sub $r3 , $r3 , 1 bnez $r3 , b u c l e
J. Daniel Garcia et al. 4 Arquitectura de Computadores
No hay hardware de forwarding. La arquitectura permite que una instrucción escriba en un registro y otra instrucción lea ese mismo registro sin problemas en el mismo ciclo de reloj. Las bifurcaciones se tratan vaciando el pipeline. Las referencias a memoria requieren un ciclo de reloj. La dirección efectiva de salto se calcula en la etapa de ejecución.
Hay hardware completo de forwarding. Asuma que las bifurcaciones se tratan prediciendo todos los saltos como tomados.
Ejercicio 5 Examen de junio de 2014.
En un determinado procesador se dispone de la tabla 2 de latencia entre instrucciones:
Cuadro 2: Latencia entre instrucciones Instrucción que produce el resultado Instrucción que usa el resultado Latencia Operación ALU FP Otra operación ALU FP 6 Operación ALU FP Almacenar doble 3 Cargar doble Operación ALU FP 2 Cargar doble Almacenar doble 0
En esta máquina se desea ejecutar el siguiente trozo de código: BUCLE: L.D F0 , 0 (R1) L.D F2 , 0 (R2) ADD.D F4 , F0 , F S.D F4 , 0 (R3) DADDUI R1 , R1 , #− 8 BNE R1 , R4 , BUCLE Inicialmente se tienen los siguientes valores:
R1: Último elemento de primer array origen.
R2: Último elemento de segundo array origen.
R3: Último elemento de array destino.
R4: Precalculado. Tal que 8(R4) sea el primer elemento del primer array origen.
Todos los arrays tienen un tamaño de 4000 elementos. Se pide:
J. Daniel Garcia et al. 5 Arquitectura de Computadores
Ejercicio 8 Examen de octubre de 2013.
Se dispone del siguiente código escrito en el ensamblador de MIPS. Suponga que, antes de empezar la ejecución las instrucciones R3 y R5 contienen, respectivamente, las direcciones de memoria del primer y último elemento de un array de 9 entradas (Valor inicial de R1=0x010 y valor inicial de R5=0x018).
Loop : LD R4 0 (R1) DIV R2 R2 R ADD R1 R1 # SUB R5 R5 # SD R4 0 (R5) SUB R6 R1 R BNEZ R6 Loop
Ejercicio 9 Examen de octubre de 2013.
Considere el siguiente fragmento de código: Bucle : LD R4 , 0 ( R2) LD R5 , 0 ( R3) ADD R6 , R4 , R SD R6 , 0 ( R3) BNZ R6 , Bucle
Ejercicio 10 Examen de junio de 2013.
J. Daniel Garcia et al. 7 Arquitectura de Computadores
Dado el siguiente código, donde cada instrucción como coste asociado un ciclo además de los indicados en la siguiente tabla. Suponga además que la máquina en la que ejecuta es capaz de emitir una instrucción por ciclo, salvo las esperas debidas a detenciones y que es un procesador segmentado con un único camino de datos (pipeline). Debido a riesgos estructurales, las detenciones de una instrucción (stalls) se realizan siempre, inde- pendientemente de que haya o no dependencia de datos con las instrucciones siguientes. Inicialmente se tiene que R1=0, R2=24, R3=16. Loop1 : LD F2 , 0 (R1) ADDD F2 , F0 , F Loop2 : LD F4 , 0 ( R3) MULTD F4 , F0 , F DIVD F10 , F4 , F ADDD F12 , F10 , F ADDI R1 , R1 ,# SUB R18 , R2 , R BNZ R18 , Loop SD F2 , 0 ( R3) ADDI R3 , R3 , # SUB R20 , R2 , R BNZ R20 , Loop
Cuadro 3: Costes adicionales por instrucción Instrucción Latencia LD 3 SD 1 ADD 2 MULTD 4 DIVD 10 ADDI 0 SUB 0 BNZ 1
Ejercicio 11 Examen de enero de 2013.
Se dispone del siguiente código escrito en el ensamblador de MIPS. En el mismo se lee y escribe la misma posición de memoria un número de veces. Inicialmente los valores de R1 y R2 son R1=1 y R2=1000. ADDI R3 , R3 , 1 Loop : LD R4 , 0 ( 1 6 ) MULT R5 , R4 , R ADD R5 , R3 , R SD R5 , 0 ( 1 6 ) DADDI R3 , R4 , 1 DADDI R1 , R1 , 1 BNE R1 , R2 , Loop
J. Daniel Garcia et al. 8 Arquitectura de Computadores
Cuadro 4: Latencias adicionales Instrucción que produce el resultado (previa)
Instrucción que usa el resultado (poste- rior)
Latencia
Operación ALU FP Operación ALU FP 5 Operación ALU FP Cargar/almacenar double 4 Operación ALU FP Instrucción de salto 4 Cargar doble Operación ALU FP 2 Cargar doble Cargar doble 1 Almacenar doble Operación ALU FP 2
J. Daniel Garcia et al. 10 Arquitectura de Computadores