Examen de Arquitectura de Computadores 2

5 downloads 136 Views 115KB Size Report
23 Dic 2011 ... Examen de Arquitectura de Computadores 2. 23 de diciembre ... no pertenecen a un diccionario fijo precargado en memoria. Por ejemplo, si ...
Arquitectura de Computadores 2

Período Diciembre 2011

Examen de Arquitectura de Computadores 2 23 de diciembre del 2011 • • • • • • • • •

Indique su nombre completo y número de cédula en cada hoja. Numere todas las hojas e indique el total de hojas en la primera. Escriba las hojas de un solo lado. Comience cada ejercicio en una hoja nueva. Solo se responderán dudas de letras. No se responderán preguntas en los últimos 30 minutos del examen. El examen es individual y sin material. Es obligatorio responder al menos la mitad del ejercicio teórico de forma correcta (2 de las 4 preguntas). Es obligatorio tener al menos un ejercicio y medio bien. Duración del examen : 3 horas

Ejercicio 1 Un sistema recibe como entrada palabras y genera como salida las mismas palabras, pero descartando las que no pertenecen a un diccionario fijo precargado en memoria. Por ejemplo, si recibe como parte de la entrada “de sur a norte ...” y el diccionario contiene las palabras {no, norte, nos, su, sur}, la salida será “sur norte ”. La entrada se recibe secuencialmente, de a un carácter por vez, en codificación ASCII, a través del puerto de lectura de un byte ENTRADA. Las palabras en la entrada están separadas entre sí por el carácter que representa un espacio en blanco. La salida se genera con el mismo formato, también secuencialmente, a través del puerto de escritura de un byte SALIDA. Para el diccionario se utiliza una estructura Trie, con la siguiente declaración en alto nivel. n

typedef nodoPtr = nodo*; typedef struct { byte FlagFin; nodoPtr [256] SiguienteLetra; } nodo;

o r

s

s u r

t e

Esta estructura representa un árbol, en el cual cada nodo interno tiene hasta 256 hijos, uno por cada carácter ASCII (campo SiguienteLetra). Para buscar una palabra en el diccionario se desciende desde la raíz del árbol haciendo coincidir los caracteres de la palabra con las aristas del árbol. Si se agotan los caracteres de la palabra, el campo FlagFin del nodo actual indica si la palabra pertenece (1) o no pertenece (0) al diccionario. Si por el contrario se llega a una hoja del árbol y todavía no se han agotado los caracteres de la palabra, entonces la palabra no pertenece al diccionario. En la parte derecha de la figura se ilustra la representación del diccionario con el contenido {no, norte, nos, su, sur} (sólo se representan las aristas correspondientes a punteros no nulos). Los nodos oscuros tienen el campo FlagFin en 1 y los nodos blancos en cero. Se pide: A) Escribir en alto nivel y compilar en ensamblador Intel 8086 la rutina BUSCAR, que reciba por parámetro una palabra y devuelve un valor de tipo boolean indicando si la palabra pertenece o no al diccionario. La raíz del diccionario está en el desplazamiento DICC con respecto a ES. La palabra de entrada es una cadena de bytes terminada por un espacio en blanco. Especificar el protocolo de pasaje de parámetros. B) Escribir en alto nivel y compilar en ensamblador Intel 8086 todas las rutinas para implementar el sistema completo, que está dedicado a esta tarea. Cada vez que llega un byte a la entrada se genera una interrupción

Página 1 de 6

Arquitectura de Computadores 2

Período Diciembre 2011

atendida por INT_ENTRADA. Cuando se escribe un byte en la salida debe esperarse a que se genere la interrupción INT_SALIDA para poder enviar el siguiente carácter. Asumimos que una palabra puede enviarse completamente a la salida en el tiempo que transcurre entre la llegada de dos caracteres de entrada consecutivos. El largo de las palabras del diccionario está acotado por N.

Ejercicio 2 Se considera una computadora con procesador RISC con pipeline (idealmente un ciclo por instrucción, no se consideran penalizaciones) y memoria cache de datos e instrucciones. Durante la ejecución de un determinado programa se obtienen las siguientes estadísticas: Miss Rate Instrucciones (IMR): 1.5% Miss Rate Datos (DMR): 4.0% Porcentaje de instrucciones de acceso a memoria (MI): 30% El procesador opera a una frecuencia F ciclos/segundo y el acceso a memoria principal demanda 70/F segundos cuando se da un fallo de cache, es decir, Miss penalty (MP) = 70/F segundos. No existe penalización en un cache hit (es decir, el cache provee datos e instrucciones a la velocidad que el procesador los consume). Asuma asimismo que el tamaño del bloque es una palabra. Se quiere mejorar la computadora con respecto a este programa, pero el presupuesto disponible sólo permite una de estas alternativas: A) Instalar un nuevo procesador el doble de rápido que el actual (frecuencia 2F); la cache del nuevo procesador también es el doble de rápida. B) Instalar memoria principal el doble de rápida. ¿Cuál es la mejor opción? Explique detalladamente y muestre una comparación cuantitativa que justifique la respuesta.

Ejercicio 3 Pregunta A Cuando se cuenta con una cache dentro de la jerarquía de memoria, se busca optimizar los accesos a memoria principal. Los casos en que los datos/instrucciones no están en cache y se deben obtener de memoria principal se clasifican en fallos: Compulsivos, de Capacidad y por Conflicto. Describa en detalle cada uno de ellos.

Pregunta B Una de las causas que detienen la aceleración en un sistema con pipeline, es el fallo en la predicción de saltos. Describa en detalle (realizando diagramas de estado cuando corresponda) las estrategias de predicción: a) Estática: Taken, NotTaken. b) Dinámica: predictor de dos bits.

Pregunta C Dado el sistema de ventanas de registros de la arquitectura SPARC: a) Describa brevemente el funcionamiento, y compare esta técnica con las arquitecturas con stack. b) Comente la utilidad de las operaciones SAVE y RESTORE, y mencione si las utilizaría en el caso de una rutina “leaf”. Justifique su respuesta.

Pregunta D Describa los siguientes elementos de la arquitectura IA-32 de INTEL, indicando su utilidad: a) Anillos de privilegios b) Modos de Operación Real, Protegido, Virtual.

Página 2 de 6

Arquitectura de Computadores 2

Período Diciembre 2011

Solución: Ejercicio 1 Parte A

boolean BUSCAR(char *palabra) { nodoPtr p = DICC; while (p && *palabra != ' ') { p = p->siguienteLetra[*palabra]; palabra++} } return p && p->FlagFin; }

Ensamblador 8086 Parámetro de entrada en DS:SI, resultado en AX BUSCAR proc push ax push bx push si push di mov di, DICC xor bh, bh loop: or di, di jz finloop mov bl, [si] cmp bl, ' ' je finloop mov di, es:[di + bx + 1] inc si jmp loop finloop: xor ax, ax or di, di jz fin mov al, es:[di] fin: pop di pop si pop bx pop ax ret BUSCAR endp

Parte B char buffer[N+1] int pos = 0; bool listo, flagEmitir = false; main() { inicializar puntero a diccionario instalar interrupciones while (true)

Página 3 de 6

Arquitectura de Computadores 2 {

}

Período Diciembre 2011

if (flagEmitir) { emitir(buffer); flagEmitir = false; }

}

INT_ENTRADA() { char c = in(ENTRADA); if (pos