EXAMEN FINAL D’IC CURS 2004-2005 Q1 20 DE GENER DE 2005 • Duració de l’examen 2 hores i 30 minuts. • Els problemes 1 i 4 s’han de resoldre en els FULLS D’EXAMEN. Els problemes 2 i 3, en FULLS SEPARATS. • No es pot fer servir calculadora, ni mòbil ni apunts. • La solució de l’examen sortirà publicada al “Racó” demà a la tarda. • Les notes es publicaran el 31 de gener. • La revisió es realitzarà el dia 1 de febrer a les 15:00 a l’aula D6004, i les notes definitives es publicaran el 2 de febrer. Pregunta 1. (1.5 punts) (Objetivo 4.8) k C4 l R2 C3 j g R1 OUT a IN b c C1 d h f C2 i e El siguiente circuito secuencial está inmerso en un sistema más complejo. Se sabe que la entrada IN viene directamente de un registro, que podemos denominar RIN, y que la salida OUT va directamente a otro registro, que podemos denominar ROUT. Vamos a calcular el tiempo de ciclo mínimo del sistema suponiendo que el camino crítico del sistema pasa por este circuito. En el circuito los bloques C1, C2, C3 y C4 son combinacionales y R1 y R2 son registros. Clk Preguntas a) Para obtener el camino crítico primero tienes que obtener todos los posibles caminos de este circuito. Indica en la siguiente tabla cada camino escribiendo los bloques combinacionales y registros involucrados en el camino, separados por flechas. Numera los posibles caminos. Camino 1 2 … Ci Æ Cj … Apellidos y Nombre: ……………………………………………………………. b) El tiempo de propagación de los bloques combinacionales que hay en este circuito es el siguiente (TCi n-m indica el tiempo de propagación del bloque Ci desde la entrada n a la salida m, que se mide en unidades de tiempo, u.t.): Bloque C1 TC1 u.t. a-d 40 b-d 50 c-d 10 Bloque C3 TC3 u.t. g-j 20 h-j 70 Bloque C2 TC2 u.t. i-e 30 i-f 60 Bloque C4 TC4 u.t. k-l 80 El tiempo de propagación de cualquier registro del sistema (RIN, R1, R2, ROUT) es de 100 u.t. Escribe en la siguiente tabla el tiempo de cada uno de los posibles caminos que has encontrado en la pregunta anterior, indicando los sumandos y la suma total. … TCi x-y + TCj p-q … Camino 1 Tcamino 2 c) ¿Cuál es el camino crítico del sistema? d) ¿Cuál es el tiempo de ciclo mínimo del sistema? Pregunta 2. (2.5 punts) Ens demanen que dissenyem un circuit lògic seqüencial que calculi la part entera del logaritme neperià d’un valor codificat amb 8 bits i mantingui el resultat a la sortida durant 3 cicles de clock. X INICI 1 CLK 8 INT(ln X) 1 FI 3 LNX Donada la complexitat del circuit el disseny s’ha dividit en subcircuits més simples de la següent manera: INICI X 1 8 iniCalc 1 SLS1 1 fiCalc SLS2 ldRes 3 CLK load 1 1 Res REGISTRE 3 FI LNX Tenint en compte que: - INICI és un senyal que es posa a 1 indicant que X estarà disponible en el següent cicle. Si INICI es posa a 1 durant el càlcul s’ignora. SLS1 posa el senyal iniCalc a 1 durant només un cicle indicant a SLS2 que el valor X que hi ha en aquest moment és el valor sobre el qual es vol fer el càlcul. SLS2 triga més d’un cicle en calcular el resultat SLS2 posa el senyal fiCalc a 1 durant un únic cicle indicant que el resultat de l’operació està disponible a Res durant aquell mateix cicle Com que SLS2 no manté el resultat durant més d’un cicle cal afegir REGISTRE per mantenir el resultat durant 3 cicles de rellotge tal com demana l’enunciat El senyal FI només s’ha de posar a 1 durant els tres cicles en els que el resultat està disponible a la sortida El senyal INICI es pot posar a 1 durant l’últim cicle de l’operació anterior (l’últim dels tres cicles on mostrem el resultat) indicant que comença una nova operació Trobeu el graf de Moore de SLS1 utilitzant la següent llegenda: (objectiu 4.6) INICI fiCalc NOM ESTAT iniCalc LdRes FI NOTA: no us preocupeu pels noms dels estats, podeu anomenar-los E0, E1, E2, etc. Pregunta 3. (4 punts) (Objectiu 9.5) Volem afegir dues noves instruccions al llenguatge màquina SISA-I: DOBZ Rd, Offset; Decrement One and Branch on Zero DOBNZ Rd, Offset; Decrement One and Branch on Not Zero La primera instrucció decrementa una unitat el valor que conté el registre Rd, guarda el resultat en aquest mateix registre i si el nou valor és zero, fa un salt a PC+Offset. Rd=Rd-1; if (Rd=0) then PC=PC+ExtSgn(Offset) else PC=PC+1 La segona instrucció funciona de la mateixa manera, però salta quan el resultat del decrement és diferent de zero. Rd=Rd-1; if (Rd<>0) then PC=PC+ExtSgn(Offset) else PC=PC+1 Offset és un nombre enter codificat en Ca2 amb 8 bits. Es demana: a) Codificació de les dues noves instruccions. b) Modificacions que s’han de fer a l’ALU i a la Unitat de Procés del SISP-I-1. (Dibuixeu les parts del circuit que varien o que afegiu. Les parts que no són afectades per les noves instruccions, no cal que les dibuixeu). c) Modificacions que s’han de fer a la Lògica de Control del SISP-I-1. (Dibuixeu les parts del circuit que varien o que afegiu. Les parts que no són afectades per les noves instruccions, no cal que les dibuixeu). d) El següent codi fa una còpia d’un vector. Escriu de nou una versió modificada del codi que faci servir la instrucció DOBNZ, de manera que es mantingui la seva funcionalitat i es redueixi el número d'instruccions a 10: .data a: .word 30,1,-3,128,0,671,-23,30,-100,78 b: .space 10 .text MOVI R0,10 MOVI R1,lo(a) MOVHI R1,hi(a) MOVI R2,lo(b) MOVHI R2,hi(b) bucle: LD R3,0(R1) ST 0(R2),R3 ADDI R0,R0,-1 DDI R1,R1,1 ADDI R2,R2,1 NZ R0,bucle .end e) Quants cicles triga en executar-se el codi original al processador SISP-I-1, i quants trigarà la versió modificada? f) Suposant que implementéssim les noves instruccions al processador SISP-I-2, i que s’executessin en dos cicles, quants cicles trigaria en executar-se el codi original al processador SISP-I-2, i quants la versió modificada? Y e X ALU X Y MVI X Y F CMP A DD X Y AL F 3 F b0 b1 b2 OP 3 7 6 5 4 3 2 1 0 MUX z z 0 1 2 W SISP-I-1 z +1 OP e Tk nBr W rIO WrM In/Ld InL d/Alu W rD @D @A F Rb/I @B IMME D @IO !C lk I NSTRU CTI ON M EMORY REG 1 0 MUX C lk PC + PC ADDR -INS Tk nBr ADD OP e Tk nBr W rIO W rMem In/ Ld InL d/Alu W rD @D @A F Rb/I @B IMMED @IO 8- SE R D-INS INS Ins t ructio n In/ Ld 1 0 M UX InL d/Alu 1 0 M UX !Clk WrIO W rD Clk D WrD RD-D ATA @D @D WrM !Clk R D-IO INPU T/ OU TP UT DataRdM z DataRdIO SISP-I- 1 CONTROL LOGIC Clk R EGFIL E @A @A @B @B A W r-Io B A D ATA M EMOR Y W r-D at a B W R-IO R D-D ATA IMMED R b/ I AD DR -IO @IO X z 1 0 M UX Y ADDR-DATA F e OP z ALU ALUou t F e OP b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 b15 b14 b13 b12 INS IMMED OP b0 b1 b2 b0 b1 b2 b0 b1 b2 1 0 3MUX b0 b1 b2 @ IO 8 1 0 3MUX b0 b1 b2 e 7 6 5 2 4 1 3 0 2 1 0 Dec z 5-6-8-S E SISP-I-1 CONTROL LOGIC OP 3 @B 3 F 3 @A 3 @D OP 3 e Rb /I In /Ld In Ld/Alu W rD W rIO W rMe m TknBr Apellidos y Nombre: ……………………………………………………………. Pregunta 4. (2 punts) Responded a las preguntas respecto al siguiente fragmento de código: .data D: A: .space 3 .word 1056, -345 INI: MOVI MOVI MOVHI LD ADD ST .text R0, 2 R1, lo(A) R1, hi(A) R2, 1(R1) R3, R0, R2 0(R1), R3 .end Suponed que tanto la sección de definición de datos (.data) como subsección de las instrucciones (.text) se comienzan a ensamblar a partir de la dirección 0 de memoria (de datos y de instrucciones respectivamente). Para vuestra ayuda os damos la tabla resumen del formato y codificación de las instrucciones SISA-I. Func 000 001 010 011 100 101 110 111 AND OR XOR NOT ADD SUB SHA SHL Preguntas a) Indicad el contenido de todas las posiciones de la memoria de datos y de instrucciones, cuyo contenido es distinto de 0, después de ensamblar el código anterior y cargarlo en las memorias de datos e instrucciones. Suponed que todas las posiciones de las dos memorias contienen el valor 0 antes de cargar el programa. Responded en la siguiente tabla (Objetivo 8.1): Memoria de Datos Dirección con 4 Contenido con 4 dígitos en dígitos en Hexadecimal Hexadecimal Memoria de Instrucciones Dirección con 4 Contenido con 4 dígitos en dígitos en Hexadecimal Hexadecimal b) Suponed que el estado del computador antes de comenzar a ejecutarse el programa cargado en las memorias es el siguiente: Memoria de datos: tal como quedó después de cargarse el programa. Memoria de instrucciones: tal como quedó después de cargarse el programa. Registros generales: el contenido de todos los registros Ri es 0. Registros Especiales: PC = 0 Puertos de Entrada/Salida: no usados, no es necesario especificarlos Indica en la siguiente tabla cómo queda el estado del computador después de ejecutar cada una de las instrucciones del programa. Sólo hay que indicar el nuevo valor (en hexadecimal) de la parte del estado del computador que modifica cada instrucción. (En un programa, el estado del computador antes de iniciar la ejecución de una instrucción es el estado que dejó la instrucción que se ejecutó anteriormente) (Objetivo 8.2). Instrucción MOVI R0, 2 MOVI R1, lo(A) MOVHI R1, hi(A) LD R2, 1(R1) ADD R3, R0, R2 ST 0(R1), R3 Estado modificado, en Hexadecimal, después de ejecutar cada instrucción del programa