Este documento presenta un examen de diseño de sistemas digitales con dos problemas de teoría y dos problemas de desarrollo. El primer problema de teoría involucra identificar aspectos de la arquitectura de un computador. El segundo problema compara las arquitecturas CISC y RISC. Los problemas de desarrollo analizan un código MIPS con dependencias de datos y diseñan un programa para encontrar el número más grande en una lista.
1. Instituto Tecnológico de Costa Rica I Semestre 2008
Escuela de Ingeniería Electrónica
EL-3310 Diseño de Sistemas Digitales Profesor: Dr.-Ing. Paola Vega Castillo
Nombre: _____________________________________ Puntaje total: 50 puntos
EXAMEN
DISEÑO DE SISTEMAS DIGITALES
EXCEPTO que se indique lo contrario, para resolver este examen se
asume arquitectura MIPS.
Teoría: Valor 18 puntos
1. ¿Qué aspectos definen la arquitectura de un computador? (2 puntos)
Registros, tipos de datos, modos de direccionamiento, formato de instrucciones
y operaciones
2. ¿Qué factores determinan la codificación de instrucciones? (3 puntos)
Registros y modos de direccionamiento
Dificultad de implementación
Impacto en tamaño de instrucciones y programas
3. Compare las arquitecturas CISC y RISC en al menos tres aspectos. (1
puntos)
CISC: muchos modos direccionamiento complejos, RISC: pocos y simples
CISC: ISA amplio y versátil, instrucciones complejas. RISC: pocas
instrucciones simples
CISC: codificación de tamaño variable. RISC: codificación de tamaño fijo
4. Mencione dos ventajas del control microprogramado. (2 puntos)
Fácil de corregir
Permite corrección por microcódigo y upgrading sin modificar el hardware
5. ¿Cómo contribuye el encauzamiento a mejorar el rendimiento? (1 punto)
No disminuye la latencia de instrucción, sino que traslapa instrucciones de
forma que aumenta el throughput
6. ¿Cuál es el CPI de un procesador encauzado ideal y por qué? (1 punto)
CPI ideal=1. Procesador entrega un resultado (se completa una instrucción)
cada ciclo de reloj.
7. ¿Cuáles son las causas de la no idealidad de la microarquitectura
encauzada? Mencione al menos 2. (1 punto) H9,24
Atascos debido a riesgos
Efectos de arranque y drenado
8. Mencione dos factores de la arquitectura que impactan el encauzamiento de
un procesador (2 puntos) H9,23
Instrucciones de longitud y formato fijo
Alineamiento de operandos en memoria
9. ¿Cuáles son las causas de fallos de caché y cómo puede reducirse cada tipo
de fallo? (3 puntos)
Obligatorios: aumentando el tamaño de bloque o línea, prefetching
De conflicto: aumentando asociatividad
De capacidad: aumentando el tamaño de cache, caché L2
10. ¿Qué ventajas tiene el uso de memoria virtual? Mencione al menos 2. (1
punto) H13,2-3
Da la ilusión de memoria más grande que memoria física
Permite que programas compartan la memoria de manera segura
11. ¿Por qué se necesita un buffer de traducciones (TLB)? (1 punto)
Para tratar de evitar accesar dos veces memoria principal: una para leer la
traducción en la tabla de páginas y otra para leer el bloque de memoria
principal
Problemas de desarrollo: (Valor 17 puntos)
Problema 1: (10 puntos)
El siguiente código de ensamblador MIPS corre en una microarquitectura MIPS
encauzada.
addi $t0,$zero,1
loop: mul $t1,$t0,$t5
add $t2, $t2, $t1
beq $t2,$t4,finish
lw $t3, 0($t2)
add $t4, $t4, $t3
sw $t4, 0($t2)
addi $t0, $t0,1
j loop
finish:
Al inicio, todos los registros están inicializados en cero, excepto los registros
$t4 y $t5, los cuales guardan el valor 1210 y 410, respectivamente.
a) Determine las dependencias presentes en el código (1 punto)
Dependencia Instrucciones
Datos, $t0 1 y2
Datos, $t1 2 y 3
Datos, $t2 3 y 4
Datos, $t2 3 y 5
Datos, $t3 5 y 6
Datos, $t4 6 y 7
También hay dependencias de control de las instrucciones después de beq.
2. b) Muestre los riesgos presentes en el código. Utilice para ello un
diagrama tarea-tiempo. (1 puntos)
RAW $t0
1 IF ID EX MEM WB
RAW $t1
2 IF ID EX MEM WB
3 IF ID EX MEM WB
RAW $t2
4 IF ID EX MEM WB
5 IF ID EX MEM WB
RAW $t3
6 IF ID EX MEM WB
RAW $t4
7 IF ID EX MEM WB
8 IF ID EX MEM WB
c) Indique cómo resolver los riesgos indicados en la parte b) insertando la
menor cantidad de burbujas posible. Muestre el diagrama tarea-tiempo
resultante. (6 puntos)
Adelantamiento desde EX
Adelantamiento desde EX
1 F D E M W
2 F D E M W
3 F D E M Adelantamiento W
desde EX
4 F D E M Adelantamiento W
desde MEM
5 F D E M W
6 F D E M W
7 F D E M W
8 F D E M W
Adelantamiento desde MEM+ burbuja
2 burbujas
d) ¿Cómo se puede reducir la pena de toma de rama? Describa una
técnica. ¿A cuántas burbujas se reduce la pena de acuerdo con la
técnica que describió? (2 puntos) (Hay varias respuestas, aquí se
muestra una)
Con técnica de rama retrasada y reordenamiento del código para que la
instrucción que sigue a la rama sea útil y no presente dependencia de
control de la rama. Se reduce a dos burbujas.
Problema 2: (7 puntos)
Un computador con ancho de palabra de 32 bits y microarquitectura multiciclo,
período de reloj T = 1ns, tiene las siguientes características:
-Memoria caché de 2 KB, con bloques de 8 palabras, de mapeo de conjunto
asociativo de 2 vías, postescritura con carga ante fallo de escritura y tiempo de
acceso T, tasa de aciertos de 92%
-Memoria principal de 4 MB, mínima unidad direccionable de un byte, tamaño
de página de 1kB, tiempo de acceso a palabra 15T y tiempo de acceso a
bloque 30T, tasa de aciertos de 97,5%
-Disco duro, con tiempo de acceso de 100T por palabra
a) Determine el tiempo promedio de acceso de la jerarquía (2 puntos)
Tiempo promedio de acceso = 0.92T+0.08*(0.975*(30T+15T*8)+0.025*100T*8)
Se corre un programa de 100 instrucciones con la frecuencia de instrucciones y
CPI por instrucción indicado en la tabla 1. Los CPI de las instrucciones de
acceso a memoria indicados toman en cuenta sólo los aciertos de caché.
Tabla 1. Frecuencia de Instrucciones y CPI del programa corrido
Tipo de instrucción Frecuencia Ciclos por Instrucción
Carga 22% 5
Almacenamiento 11% 4
Aritmético-lógicas 48% 4
Ramas 16% 3
Saltos 3% 3
Asuma en este programa para el caso de operaciones de almacenamiento se
cumple que:
• En caso de fallo, en el 20% de los casos debe sustituirse un
bloque de caché
• En todos los casos los datos están memoria principal (tanto en
caso de acierto como en caso de fallo de caché)
b) Calcule el CPI de las instrucciones de acceso a memoria tomando en
cuenta los fallos en la jerarquía de memoria (4 puntos)
Para almacenamiento, del 8% del fallo de cache, 20% son sustitución, que
implica postescritura. De acuerdo con la aclaración para este programa,
cuando ocurre un fallo de caché los datos siempre están en MP, por lo que no
hace falta buscarlos en el DD.
Se tiene: para acierto, CPI ya está dado y es 4.
Para 0.2*(8*15T+30T)*2 la pena por fallo de almacenamiento para sustitución
de bloques = 60T (1 punto)
0.8*( 8*15T+30T) es la pena por el fallo de almacenamiento SIN sustitución de
bloques = 120T (1 punto)
Entonces 180T es la pena total para instrucciones de almacenamiento
0.08*180T=14.4T 1punto, CPI almacenamiento=4T (véase tabla 1)+14.4T
=18.4T (1 punto)
Para load se tiene la pena de pérdida de la jerarquía completa=
166T=(0.975*(30T+15T*8)+0.025*100T*8)
CPI carga=CPI ideal+ pena de pérdida*tasa de pérdidas=5T (véase tabla
1)+0.08*(0.975*(30T+15T*8)+0.025*100T*8) =18.28T (1 punto)
c) Calcule el tiempo de ejecución del programa tomando los CPI calculados
en el punto b) para las instrucciones de acceso a memoria. (1 punto).
3. Tej=
100*(0.22*18.28+0.11*18.4+0.48*4+0.16*3+0.03*3)*T=100*8,536*T=853,6ns
Diseño y programación: (Valor 15 puntos)
Problema 3: (6 puntos)
Una lista de números enteros positivos se almacena en memoria empezando
en la dirección dada por el registro $s1. La longitud de la lista está almacenada
en el registro $s2. Escriba un programa en lenguaje ensamblador MIPS que
encuentre el número más grande de la lista y lo almacene en el registro $t0.
lw $t0, 0($s1)
add $t1, $zero, $zero
lazo: addi, $t1, $t1,1
beq $t1, $s2, listo
addi $t2, $t2,4
add $t2, $t2, $s1
lw $t3,0($t2)
slt $t4, $t0, $t3
beq $t4, $zero, lazo
add $t0, $t3, $zero
j lazo
listo:
Problema 4: (9 puntos)
Se tiene un microprocesador multiciclo MIPS. Se desea agregar la siguiente
instrucción:
lws rd, rs, rt # rd = Mem[rt + (4 × rs)]
El código de operación para la ALU es ALUOp = 100 para multiplicación y 010
para suma.
a) ¿Qué tipo de direccionamiento indica la instrucción lws? (1 punto)
Indirecto escalado indexado
b) Realice las modificaciones necesarias a la microarquitectura multiciclo
(modifique la ruta de datos, las señales de control o ambas, de ser
necesario) (3 puntos) (este es un ejemplo de solución, puede haber
otras)
-Ampliar mux ALUSrcA, agregando una entrada conectada a la salida de
ALUOut
Debe mostrarse: 1) conexión de ALUOut al mux ALUSrcA
2) ampliación del mux ALUSrcA
3) ampliación de señal de control ALUSrcA
Véase solución en diagrama de microarquitectura
c) Modifique, según sea necesario, el diagrama de estados para incluir la
instrucción lws (2 puntos)
Véase solución en diagrama de estados
d) Escriba el microprograma que implementará esta instrucción. Si reutiliza
microinstrucciones de otros estados, indíquelo. (2 puntos)
Microprograma debe mostrar: secuenciamiento, señales de mux ALUScrA y
B, ALUop, como mínimo
e) ¿Cuántos ciclos de reloj tomará la ejecución de la instrucción? (1 punto)
De acuerdo con esta solución, 6 ciclos
ALUOp=100
ALUSrcA=01
ALUSrcB=01
ALUOp=010
ALUSrcA=10
ALUSrcB=00
LWS
4. 2
0 1 2
Rendimiento = 1
TiempodeEjecución
Rendimiento
e final e inicial % %
, ,
T T T afectado e
= e
+ T noafectado
factor demejora
efectivo i IC x CPI CPI Σ=
Σ=
=
n
e e i T
i
n
T
1
,
1 Σ=
=
n
e aiTe i
i
n
T
1
,
1
i
n
i
=
1
T IC CPI T CPU = ⋅ ⋅
n
Rendimiento
x =
y
a s i t = h ⋅ t + (1− h) ⋅ t