UC3M
Fundamentos de Ordenadores II - Examen Junio 05
Ingeniero de Telecomunicación
 
Depto. de Ingeniería Telemática 
Universidad Carlos III de Madrid

 2ª Parte: Problemas

Duración: 3 horas 
Puntuación:  80 puntos (sobre 100)
Fecha: 24 de junio de 2005
Nota: Se podrán usar libros, apuntes y calculadora. 


Requisitos para aprobar el examen:
  1. Nota en el examen >= 50 puntos
  2. Nota del problema 1 >= 12 puntos
  3. Nota del problema 2 + nota del problema 3 >= 12 puntos

PARTE 1: NIVEL DE MÁQUINA CONVENCIONAL

PROBLEMA 1(40 puntos)
Una aplicación de banca por internet requiere a sus usuarios que introduzcan un login y una contraseña que se codifica como un número entero de 64 bits. En todo momento se mantiene una tabla que contiene las direcciones de memoria de los nombres de los usuarios y sus contraseñas. Los nombres son strings acabados en el valor cero y las contraseñas son enteros que ocupan 64 bits (es decir, 8 bytes) y almacenados en little endian. La estructura de esta tabla se muestra en la siguiente figura.

Cada elemento consta de la dirección en la que está almacenado el nombre seguido de los 8 bytes en little endian de la clave.

Se quiere diseñar un programa para comprobar el acceso de usuarios a la aplicación. Para ello es preciso escribir el código ensamblador de las siguientes subrutinas:

  1. (10 puntos) Rutina comparar: Recibe como parámetros a través de la pila las direcciones de comienzo de dos strings. Devuelve también a través de la pila el número 0 si ambos strings son idénticos (letra a letra) y 1 en el caso de que sean diferentes. La rutina debe comprobar si alguno de los parámetros tiene el valor cero, en cuyo caso se devuelve directamente el valor 0 como resultado sin efectuar comparación alguna.

  2. (30 puntos) Rutina busca: Recibe como parámetros a través de la pila en posiciones ascendentes de memoria la dirección base de la tabla de usuarios, el número de entradas en dicha tabla, la dirección del string con el nombre introducido por el usuario, y los 32 bits de menos peso seguidos de los 32 bits de más peso de la clave introducida. La siguiente figura muestra cómo se almacenan estos parámetros en la pila.

    La rutina busca si en la tabla de usuarios (primer parámetro) existe un usuario cuyo nombre y clave sean idénticos a los dados (tercer y cuarto parámetros). La rutina devuelve el resultado a través del registro %eax. Si existe un elemento con nombre de usuario y clave idénticos a los dados devuelve el índice de dicho elemento (la tabla comienza por el índice cero). Si no hay elemento alguno que tenga nombre de usuario y clave idénticos se devuelve el número -1. Para comparar los nombres de usuarios se debe utilizar la rutina comparar del apartado anterior.

Notas (aplicables a ambos apartados):

PARTE 2: FUNCIONAMIENTO INTERNO DEL ORDENADOR

PROBLEMA 2 (24 puntos)

En este ejercicio vamos a trabajar con un ordenador que llamaremos SímplezJun05. El formato de instrucciones de SímplezJun05 se representa en la figura 1.

Figura 1: Formato de instrucciones de SímplezJun05

Como indica la figura 1 las instrucciones de SímplezJun05 pueden ocupar una palabra o 2 de Memoria Principal. La primera palabra contiene el Código de Operación (campo CO) en los 3 bits más significativos y el campo CD (en los 9 bits siguientes), que hace referencia a una palabra de Memoria Principal utilizada por la instrucción.

En aquellas instrucciones que ocupan 2 palabras de Memoria Principal, en la segunda palabra solamente se consideran los 9 bits menos significativos, que identificaremos como campo CD2, que contiene la dirección de una segunda palabra de Memoria Principal utilizadas por la instrucción. La Memoria Principal de SímplezJun05 es idéntica a la de Símplez, es decir, de 512 palabras de 12 bits. La temporización de la Memoria Principal es idéntica a la de Símplez.

En hoja adjunta se presenta la ruta de datos de SímplezJun05. Esta ruta de datos es idéntica a la de Símplez excepto en que aparece un nuevo registro (CD2), que se utilizará para guardar el campo CD2 de una instrucción cuando sea necesario. Este registro tiene una entrada de carga (eri2). Asimismo, el dato contenido en el registro CD2 puede ser llevado al bus Ai activando la microorden sri2.

Se pide:

  1. (12 puntos) Se desea implementar sobre esta ruta de datos una instrucción (que ocupa 2 palabras de Memoria Principal) que haga lo siguiente: suma el contenido del Acumulador con la palabra de Memoria Principal cuya dirección se indica en el campo CD de la instrucción, dejando el resultado en dicha palabra de Memoria Principal. Al final de la ejecución de la instrucción el contenido del Acumulador debe ser el mismo que había justo antes de comenzar la ejecución de dicha instrucción. El campo CD2 se utiliza para identificar la dirección de una palabra de Memoria Principal auxiliar en la que se puede guardar un dato temporalmente. En otras palabras, el contenido de esta segunda palabra de Memoria Principal puede ser modificado libremente, sin que haya que conservar su valor inicial. Dibuje un cronograma que implemente la instrucción pedida.

  2. (12 puntos) Se desea implementar una instrucción (que ocupa 2 palabras de Memoria Principal) que haga lo siguiente: intercambia el contenido de las dos palabras de Memoria Principal cuyas direcciones están en los campos CD y CD2 de la instrucción. Al final de la ejecución de la instrucción el contenido del Acumulador debe ser el mismo que había justo antes de comenzar la ejecución de dicha instrucción. Se observa que no es posible implementar esta instrucción sobre la ruta de datos de SímplezJun05. Indique que modificaciones habría que hacer sobre dicha ruta de datos para poder implementar esta instrucción. Dibuje las modificaciones sobre la ruta de datos de SímplezJun05. Razone la respuesta.

PROBLEMA 3 (16 puntos)

Considere el secuenciador microprogramado de Símplez en el que se modifica el contenido de la memoria de control de la forma siguiente. En la microinstrucción correspondiente a I0 eliminamos incp. En todas las microinstrucciones correspondientes a I1 menos las de BR, BZ y HALT añadimos incp.  Se ejecuta el programa que se presenta en la tabla 1 (inicialmente el contenido de la palabra de dirección 10 es 20 y el de la palabra de dirección 11 es 6). Al terminar la ejecución (es decir, cuando se alcanza la instrucción HALT) se consulta el valor de la palabra de Memoria Principal de dirección 11 y se observa que el valor almacenado es un 4.

Escriba la secuencia de instrucciones que se ejecutan. Indique de forma detallada lo que vaya ocurriendo en cada instrucción. ¿Cuál sería el contenido de la palabra de dirección 10 al finalizar la ejecución?


 
[0] CLR
[1] LD /11
[2] BZ /9
[3] DEC
[4] ST /11
[5] LD /10
[6] DEC
[7] ST /10
[8] BR /1
[9] HALT
Tabla 1: programa en Símplez