Parcial 1 2C/2010 (Organización del Computador I)

De Cuba-Wiki

Plantilla:Back

Ejercicio 1 (25 puntos)[editar]

Sea la siguiente codificación de números de punto flotante de 13 bits. El exponente está en notación exceso 31 de 6 bits. La mantisa ocupa 6 bits y está normalizada con "1." implícito. Signo, exponente y mantisa se presentan en el siguiente orden:

Signo Exponente Mantisa

Se pide, justificando cada respuesta:

a) (7ptos) Exponentes mínimo y máximo representables.

b) (6ptos) ¿Qué números representan en este sistema: 0x0000 y 0x0FFB?

c) (6ptos) Dar el rango de todos los números representables.

d) (6ptos) ¿Qué números reales propone dejar de representar para codificar el , y el ?

Ejercicio 2 (25 puntos)[editar]

Sea el siguiente circuito formado por 4 flip-flops JK. Suponiendo que inicialmente todos los flip-flops almacenan el valor 0, indicar qué secuencia de valores toman las salidas por cada tick del reloj.

(circuito que no sé cómo uplodear)

Ejercicio 3(25 puntos)[editar]

Considere el siguiente programa escrito para la arquitectura Orga1.

main: MOV R0, [[iter]]

CALL fdec

JNE main

iter: DW 0x0001

fdec: SUB R0, 0x0001

RET

a) (10ptos) Ensamble el programa. ¿Cuál es el valor de las etiquetas asumiendo que el programa se carga en memoria a partir de la dirección 0x0000?

b) (10ptos) Realice el seguimiento de las primeras 6 instrucciones. Asumiendo que los registros y el resto de la memoria están inicializados en 0; PC es 0 y SP es 0xFFEF.

c) (5ptos) ¿Cambiaría el resultado del seguimiento realizado si la primera instrucción fuera: MOV R0, iter?

Ejercicio 4 (25 puntos)[editar]

Se desea desarrollar una nueva arquitectura para una máquina que tiene 64 registros de propósito general y direcciones de memoria de 14 bits. El tamaño de los registros es de 16 bits. Esta máquina posee 2 tipos de instrucciones aritméticas: 1) instrucciones para aritmética entera, comienzan con I... y usan los registros como operandos, 2) instrucciones para aritmética de punto flotante de 16 bits, comienzan con F... y usan la pila operan con los valores guardados en la pila.

Instrucción Descripción Instrucción Descripción

MOV X1, X2 X1 := X2 FPUSH Ri apilar(Ri)

FPOP Ri Ri := desapilar()

IADD Ri, Rj Ri:=Ri+Rj FADD apilar(desapilar() + desapilar())

ISUB Ri, Rj Ri:=Ri-Rj FSUB apilar(desapilar() - desapilar())

IMUL Ri, Rj Ri:=Ri*Rj FMUL apilar(desapilar() * desapilar())

IDIV Ri, Rj Ri:=Ri/Rj FDIV apilar(desapilar() / desapilar())

ICMP Ri, Rj Compara según ISUB Ri,Rj FCMP Compara los 2 elementos superiores

IMOD Ri, Rj Ri:=Ri módulo (Rj) FPOW apilar(desapilar() ^ desapilar())

JMP Despl PC:=PC+Despl FLOG apilar(log(desapilar())

JC Despl Salta si hay carry FLOG2 apilar(log2(desapilar())

JFZ Despl Salta el tope de la pila es 0 FSQRT apilar

JE Despl Salta si está encendido el flag Z FSIGN apilar(signo(desapilar())

JG Despl Salta si es mayor (con signo) FNEG apilar(-desapilar())

JGU Despl Salta si es mayor (sin signo)

JGF Despl Salta si es mayor (tras un FCMP)

donde: X1 representa un registro o un acceso directo o indirecto registro y X2 representa un registro o un operando inmediato (16 bits), o un acceso directo o indirecto registro.

Ri y Rj representan registros.

Despl representa un desplazamiento relativo de 10 bits.

a) (10ptos) Diseñar un formato de instrucción de 16 bits excepto para únicamente la instrucción MOV que puede ocupar hasta 32 bits.

b) (10ptos) ¿Es posible codificar saltos absolutos en lugar de saltos relativos con las restricciones impuestas?

c) (5ptos) Escribir un programa en el lenguaje ensamblador de esta arquitectura para realizar esta cuenta matemática suponiendo que R0, R1, R2 y R3 almacenan números de punto flotante de 16 bits.

R7 = (R0 + (R1 * R2))/R3