Organización del Computador I Microarquitectura del CPU Matı́as Introducción A1 B1 ADD R1, R0 ¿−→? Σ SS Ae A2 A3 Σ S Ae A3 B3 Ae A4 B4 C3 As Σ S C2 As Σ S C1 As As C4 C5 El lenguaje NEG_on NEG_off NEG I Podemos activar señales NEG on : niega los bits de la entrada y los pone a la salida NEG off : pasa los bits sin modificarlos El lenguaje HAB. D SET s3 Q Q CLR HAB. D I Podemos ver alguna parte especı́fica de un registro y usarla para algo... SET s2 Q Q CLR HAB. D SET s1 Q Q CLR HAB. D WriteEnable Q CLR Reset Vale R0[3] SET Q Enable out s0 El lenguaje I Existen caminos (lı́neas) por donde van los datos. I Podemos mover un dato de un registro a otro si hay un camino directo entre ellos I Podemos asignar un valor constante (almacenada) a un registro. R0 R_OUT R1 0xF0CA Vale R1:= R0 R OUT:=R0 . . . No vale R0:=R OUT R1:=R OUT R0:=0xF0CA R1:=x Componentes 0xF0CA 0x0000 CMP_f0ca CMP_0000 I Podemos hacer un comparador CMP_1 CMP 1 := R3 CMP 0000 CMP_2 COMP EQ_cmp El lenguaje I Podemos analizar un bit y actuar en consecuencia if EQ cmp=0 R OUT:=R3 else R OUT:=R2 endif Ejercicio 1 Se cuentan con los siguientes circuitos: I Una ALU con 2 registros de 16 bits (ALU IN1 y ALU IN2) que usa de entradas y 5 registros que usa de salida: ALU OUT de 16 bits y (ALU Z, ALU N, ALU C y ALU V) de 1 bit. Sus señales de control son: Señal ALUadd ALUsub ALUneg ALUand ALUnot Efecto ALU OUT ALU OUT ALU OUT ALU OUT ALU OUT := := := := := ALU IN1 + ALU IN2 ALU IN1 - ALU IN2 - ALU IN1 ALU IN1 AND ALU IN2 NOT ALU IN1 I Un extensor de signo complemento a 2 (SIGN EXT) con un registro de entrada de 16 bits (EXT IN) y un registro de salida de 16 bits (EXT OUT). Sus señales de control son: Señal Efecto SIGN EXTon activa la operación de extensión de signo de 8 bits a 16 bits SIGN EXToff copia el contenido de EXT IN en EXT OUT 1) Suponiendo que se encuentra resuelta la decodificación y el acceso a memoria de la máquina, diseñar el camino de datos de la arquitectura de la máquina ORGA1. No dibujar la unidad de control para simplificar el diagrama. Ejercicio 1 Se cuentan con los siguientes circuitos: I Una ALU con 2 registros de 16 bits (ALU IN1 y ALU IN2) que usa de entradas y 5 registros que usa de salida: ALU OUT de 16 bits y (ALU Z, ALU N, ALU C y ALU V) de 1 bit. Sus señales de control son: Señal ALUadd ALUsub ALUneg ALUand ALUnot Efecto ALU OUT ALU OUT ALU OUT ALU OUT ALU OUT := := := := := ALU IN1 + ALU IN2 ALU IN1 - ALU IN2 - ALU IN1 ALU IN1 AND ALU IN2 NOT ALU IN1 I Un extensor de signo complemento a 2 (SIGN EXT) con un registro de entrada de 16 bits (EXT IN) y un registro de salida de 16 bits (EXT OUT). Sus señales de control son: Señal Efecto SIGN EXTon activa la operación de extensión de signo de 8 bits a 16 bits SIGN EXToff copia el contenido de EXT IN en EXT OUT 2) Indicar cuál es la secuencia de señales (o microoperaciones) que debe realizar la unidad de control para ejecutar las siguientes instrucciones: I I I MOV R5, R1 AND R7, R1 NEG R4 Ejercicio 1 - Solución SIGN_EXT_on SIGN_EXT_off EXT_IN R0 ... R7 SIGN_EXT EXT_OUT SP PC ALU_IN2 ALU_IN1 ALU_Z Z N V ALU ALU_add ALU_sub ALU_neg ALU_and ALU_not ALU_N ALU_V ALU_C C ALU_OUT CPU Orga1 Ejercicio 1 - Solución I 16 bits: R0, .., R7, SP, PC, EXT IN, EXT OUT, ALU IN1, ALU IN2, ALU OUT I 1 bit: Z, N, V, C, ALU Z, ALU N, ALU V, ALU C I Bus interno: 16 lı́neas. I Los flags están conectados a las 4 lı́neas menos significativas del bus. Ejercicio 1 - Solución: Secuencias de microoperaciones I MOV R5,R1 1. R5 := R1 I AND R7, R1 1. 2. 3. 4. 5. 6. 7. 8. ALU IN1 := R7 ALU IN2 := R1 ALUand R7 := ALU OUT Z := ALU Z N := ALU N C := ALU C V := ALU V I NEG R4 1. 2. 3. 4. 5. 6. 7. ALU IN1 := R4 ALUneg R4 := ALU OUT Z := ALU Z N := ALU N C := ALU C V := ALU V Ejercicio 2 Se cuenta con una memoria con palabra y direccionamiento de 16 bits. La misma está conectada por medio de un bus a la CPU. En la CPU se agrega un controlador de bus que cuenta con 2 registros de entrada de 16 bits (ADDR, WRT DATA) y 1 de salida de 16 bits (RD DATA). Sus señales de control son: I MEM WRITE: Lanza el protocolo de escritura del contenido del registro WRT DATA en la dirección de memoria indicada por el ADDR I MEM READ: Lanza el protocolo de lectura del contenido de la dirección de memoria indicada por el ADDR, colocando el valor en el registro RD DATA. 1. Extender el camino de datos de la arquitectura de la máquina ORGA1 para poder utilizar la memoria. No dibujar la unidad de control para simplificar el diagrama. 2. Indicar cuál es la secuencia de señales (o microoperaciones) que debe realizar la unidad de control para ejecutar las siguientes instrucciones: I I I I I MOV R2, R5 MOV R2, [R5] MOV R2, [0xFF00] MOV [0xFF00], [0xFF01] JE 0xFF Ejercicio 2: Solución 0x0001 .... .... ADDR IR0 WRT_DATA IR1 RD_DATA IR2 CPU Orga1 MEM_READ MEM_WRITE Controlador del Bus bus externo Memoria Ejercicio 2 - Solución: secuencias de microoperaciones I I MOV R2, R5 1. 2. 3. 4. 5. 1. R2 := R5 I MOV R2, [R5] 1. ADDR := R5 2. MEM READ 3. R2 := RD DATA I MOV R2, [0xFF00] 1. ADDR := IR1 2. MEM READ 3. R2 := RD DATA MOV [0xFF00], [0xFF01] I ADDR := IR2 MEM READ WRT DATA := RD DATA ADDR := IR1 MEM WRITE JE 0xFF 1. IF Z = 0 2. EXT IN := IR0 3. SIGN EXT on 4. ALU IN 1 := PC 5. ALU IN 2 := EXT OUT 6. ALU add 7. PC := ALU OUT Ejercicio 3 La computadora STACK1 es una máquina de pila con direccionamiento a byte, tamaño de palabra de 16 bits y direcciones de memoria de 12 bits. Trabaja con aritmética complemento a 2 de 16 bits. Posee el siguiente set de instrucciones: Instrucción PUSH [M] POP [M] ADD SUB JUMP SKIP N SKIP Z SKIP GE CodOp 0000 0001 0010 0011 0100 0101 0110 0111 Significado push [X] [X] := pop push(pop+pop) push(pop-pop) PC := pop (sólo los 12 bits menos significativos) ignora la próxima instrucción si top es < 0 ignora la próxima instrucción si top es 0 ignora la próxima instrucción si top es >= 0 El formato de instrucción de STACK1 es el que sigue: CodOp 4 bits Dirección 12 bits 1) Definir el camino de datos y la organización del CPU de STACK1 para soportar la implementación de, al menos, estas instrucciones. 2) Describa la secuencia de microoperaciones que realiza la unidad de control para realizar un fetch de una instrucción. 3) Implementar las siguientes instrucciones: i) JUMP ii) SKIP Z iii) PUSH [X] iv) ADD Ejercicio 3: Solución Se utiliza un circuito incrementador con 2 señales: INC +2 que suma 2 a la entrada, y INC −2 que resta 2 a la entrada. I 12 bits: SP, PC, INC IN, INC OUT, ADDR. I 16 bits: WRT DATA, RD DATA, IR, ALU IN1, ALU IN2, ALU OUT, CMP 1. I 1 bit: EQ cmp ALU_IN2 SP PC ALU_IN1 IR MEM_READ MEM_WRITE ALU ADDR Memoria bus externo WRT_DATA ALU_add ALU_sub RD_DATA Controlador del Bus CMP_1 ALU_OUT 0x0000 INC_IN INC COMP INC_OUT CMP_0000 EQ_cmp INC_+2 INC_­2 CPU STACK1 Ejercicio 3 - Solución: fetch 1. ADDR := PC 2. MEM READ 3. IR := RD DATA // cargo el IR 4. INC IN := PC 5. INC +2 6. PC := INC OUT // incremento PC Ejercicio 3 - Solución: secuencia de microoperaciones I SKIP Z I JUMP 1. 2. 3. 4. 5. 6. INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ PC := RD DATA[11:0] 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. INC IN := SP INC +2 ADDR := INC OUT MEM READ CMP 1 := RD DATA CMP 0000 if EQ cmp = 1 INC IN := PC INC +2 PC := INC OUT endif Ejercicio 3 - Solución: secuencia de microoperaciones I PUSH [X] 1. ADDR := IR[11:0] 2. MEM READ 3. WRT DATA := RD DATA 4. ADDR := SP 5. MEM WRITE 6. INC IN := SP 7. INC −2 8. SP := INC OUT I ADD 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ ALU IN1 := RD DATA // primer operando INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ ALU IN2 := RD DATA // segundo operando ALU add WRT DATA := ALU OUT ADDR := SP MEM WRITE // push resultado INC IN := SP INC −2 SP := INC OUT Cómo sigue Orga1... Con lo visto hoy pueden hacer toda la práctica 7. I Jueves: taller de Microprogramación