Organización del Computador I Nombre: 1er. Parcial 5-Octubre-2006 L.U.: Justifique cada una de sus respuestas. Especifique, en caso de ser necesario, todos los cálculos intermedios utilizados. El examen debe ser entregado en tinta. En el parcial puede tener la cartilla de instrucciones Assembler pero no se puede compartir. Para aprobar el parcial, son necesarios 6(seis) puntos. Para promocionar, 8 (ocho) puntos 1) (2.5p) Se tiene un computador con direcciones y palabras de 16 bits, dotado un banco de 32 registros de 16 bits que ejecuta exclusivamente el siguiente juego de instrucciones: MOVE fuente, destino, condición; instrucciones: CODOP operando1, operando2, destino (donde CODOP puede ser ADD, SUB, MUL, DIV, AND, OR, XOR) y una instrucción SHIFT fuente, destino, tipo, contador Este juego de instrucciones soporta los siguientes modos de direccionamiento: Inmediato, Registro, Indirecto a Registro para los accesos a posiciones de memoria. Por otra parte, las condiciones a evaluar en la instrucción MOVE son acarreo (C) y cero (Z), y sus contrarias; no acarreo (NC) y no cero (NZ). Finalmente, las operaciones de cálculo se pueden realizar sobre datos en alguna de las siguientes representaciones: Entero sin signo, Entero en complemento a 2, Reales en punto flotante Diseñar el formato de instrucción para este juego de instrucciones. ¿Se puede pensar en un diseño ortogonal? Solución: Se puede hacer un formato de instrucción ortogonal Como lo pienso ortogonal directamente, entonces el código de operación no debe contener información alguna sobre el modo de direccionamiento de los operandos, ni sobre el formato de representación de los mismos. Bits necesarios 4 2 2 5 2 Distingue entre 9 instrucciones diferentes (CO) 3 modos de direccionamiento distintos (MD) 3 sistemas de representación diferentes (SR) 32 registros 4 condiciones (COND) MOVE fuente, destino, condición CO SR MD1 MD2 COND NoUsado dato dato dato dato (4) (2) (2) (2) (2) (4) (16) (16) (16) (16) CODOP operando1, operando2, CO SR MD1 MD2 MD3 NoUsado dato (4) (2) (2) (2) (2) (4) (16) Shift fuente, CO SR MD1 MD2 TIPO (4) (2) (2) (2) (2) destino dato dato (16) (16) destino, tipo, CONT dato dato (4) (16) (16) contador En el tipo, considero 4 tipos de shifts diferentes, simplemente porque si no me sobrarían dos bits (opción también válida) Aunque todos los datos ocupan 16 bits, su formato interno dependerá de su modo de direccionamiento Inmediato los 16 bits estarán en uno de los posibles sistemas de representación: entero sin signo, complemento a dos o coma flotante Directo a registro Registro No usado (5) (11) Relativo el campo Desplazamiento no se usará en el modo directo a registro Registro Desplazamiento (5) (11) 2) (1p) a) Probar si estos dos circuitos son o no equivalentes Organización del Computador I Nombre: 1er. Parcial 5-Octubre-2006 L.U.: Respuesta: Los circuitos son equivalentes. Para el primer circuito se tiene: ┐ ( ┐ ( A B ) ┐ ( ┐ ( ┐ C B ) ) ) = ┐ ( ┐ ( A B ) ┐ ┐ ( ┐ C B ) + ┐ D ) = ┐ ( ┐ (AB) ( ┐ C B + ┐ D ) ) = ┐ ( ┐ (AB) ( B ┐ C + ┐ D ) ) Para el segundo circuito se tiene: ┐ ┐ ( A B + ┐ B D + C D ) = ┐ ( ┐ ( A B ) ┐ ( ┐ B D ) ┐ ( C D ) ) = ┐ ( ┐ ( A B ) ┐ ( ( ┐ B D ) + ( C D ) ) ) = ┐ ( ┐ ( A B ) ┐ ( ( ┐ B + C ) D ) = ┐ ( ┐ ( A B ) ( ┐ ( ┐ B + C ) + ┐ D ) = ┐ ( ┐ ( A B ) ( B┐ C + ┐ D ) ) Como se ve, se llegó a la misma fórmula en ambos casos, lo que demuestra que son circuitos equivalentes. Otra forma más simple pero más larga, hubiera sido a través de las tablas de verdad de cada circuito (1.5p) b) Diagrame un temporizador de 4 salidas que corresponda a la siguiente tabla: salida 1 s. 2 s. 3 s. 4 s. 5 s. 6 s. 7 s. 8 s. S0 0 1 1 1 0 1 1 1... S1 0 0 0 1 0 0 0 1... S2 0 0 1 1 0 0 1 1... S3 0 0 1 1 0 0 1 1... Se cuenta con osciladores de frecuencia fija (2^15 Hz), contadores binarios de 8 bits, y compuertas lógicas individuales. Solución: Osc (clock) Contador de 8 Bits Contador de 8 Bits S7 S7 S0 S0 e1 e2 Deco s0 s1 s2 s0 s1 s2 s3 que serían la salida del circuito Organización del Computador I Nombre: 1er. Parcial 5-Octubre-2006 L.U.: 3) (1p) a) Dado el número A4B23C05 en hexadecimal ¿Que número decimal representa si se supone que está en notación IEEE? Respuesta: A 4 B 2 3 C 0 5 1010 0100 1011 0010 0011 1100 0000 0101 Se trata de IEEE simple precisión, dado que son 32 bits Bit de signo=1 por lo tanto es un número negativo Exponente = 01001001= 73 – 127 = -54 (recordar que se representa en notación exceso 127) Mantisa = 01100100011110000000101 = 2-2 + 2-3 + 2-6 + 2-10 + 2-11 + 2-12 + 2-13 +2-21 +2-23 = 0,39245665073394775390625. A este número hay que sumarle 1 por el bit implícito, lo que queda 1,39245665073394775390625 * 10 -54 (1p) b) Sea un número binario X de 6 bits expresado en un sistema (p, k). Se sabe que la representación de numero es X+15=000010, X-3=110000, 2*X =100110, todas ellas expresadas en el mismo sistema de representación (p, k). ¿Cuál o cuáles de las variantes del sistema (p, k) se utilizó para su representación? ¿Cuál es el valor de X expresado en decimal? Sistema (p,k) sin signo: Según la primer ecuación, 000010 representa un 2. Por lo que X+15=2 y despejando, X=-13. Como se trataría de un número negativo, no se puede representar en ese sistema Sistema (p,k) con signo: X+15=2 entonces X=-13 X-3 = -16 (110000 es -16) entonces X=-13 2*X = -6 (100110 es -6) entonces X= -3 Por lo tanto no puede ser en notación con signo Sistema (p,k) C2: X+15=2 entonces X=-13 X-3 = -16 (110000 es -16) entonces X=-13 2*X = -26 (100110 es -6) entonces X= -13 Por lo tanto, en sistema (p,k) complemento a 2 se puede representar y el valor de X es -13 4) (1p) Decida si las siguientes afirmaciones son verdaderas o falsas. Justificar a) ¿Durante el ciclo de ejecución de una instrucción, el PC se incrementa siempre de la misma forma? F. Por ejemplo en el JMP el PC no se incrementa b) ¿El nivel de lenguaje de máquina representa como se acceden y almacenan los datos? V 5) (2p) Se tienen dos vectores de dimensión N almacenados en memoria a partir de las direcciones identificadas por VEC1 y VEC2. VEC1 está compuesto por números en notación complemento a 2 de 16 bits y cada uno de ellos indica una posición dentro de VEC2. Se pide realizar un algoritmo en Assembler de ORGA1, que como resultado de su ejecución, reemplace el contenido de cada posición del vector 1 con el valor del vector 2 apuntado por dicho elemento. Esto es, si VEC1[J]=K, entonces se ejecutará: VEC1[J]=VEC2[K]. En caso de que algún elemento de VEC1 se encuentre fuera de los límites de VEC2 , l a p o s i c i ó n d e b e l l e n a r s e c o n e l v a l o r e s p e c i a l “ -1 ” . Resolución: MOV R0, VEC1 ; R0 puntero del vector 1 MOV R3, 1 ; R3 contador CMP [N], 0 ; Verifico si hay elementos en vector 1 JE FIN CICLO: MOV R1, VEC2 ; R1 puntero del vector 2 CMP [R0], 0000h ; Verifico si se va de rango por negativo JL F_de_R CMP [R0], [M] ; Verifico si se va de rango por se mayor que M JG F_de_R ADD R1, [R0] ; Si esta en rango, me posiciono en el vector 2 MOV [R0], [R1] ; Reemplazo el valor de vector 1 con el de vector 2 JMP AVANZAR F_de_R: MOV [R0], FFFFh ; Si se va de rango, reemplazo con FFFFh AVANZAR: ADD R0, 1 ; Me muevo al siguiente elemento del vector 1 ADD R3, 1 ; Verifico si terminé con todos los elementos de vector 1 Organización del Computador I Nombre: FIN: CMP JG JMP RET R3, [N] FIN CICLO 1er. Parcial 5-Octubre-2006 L.U.: