aritmtica y lgica (numeros enteros) scar David Robles Snchez ngel Serrano Snchez de Len Luis Rincn Crcoles Estructura y Tecnologa de Computadores (ITIG) 2 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Programa 1. Introduccin. 2. Construccin de una ALU bsica. 3. Multiplicacin bsica y su circuitera. 4. Divisin bsica y su circuitera. 5. Bibliografa. Conceptos bsicos: Unidad aritmtico-lgica, operaciones lgicas, sumador, restador, indicador de resultado, algoritmos de multiplicacin de enteros sin signo, algoritmos de divisin de enteros sin signo (divisin por restauracin). 2 2 3 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1. Introduccin Una unidad aritmtica y lgica (UAL) es un circuito combinacional que realiza las operaciones aritmticas y lgicas bsicas en el computador. Operaciones aritmticas bsicas: suma, resta, multiplicacin, divisin. Operaciones lgicas bsicas: NOT, AND, OR, NAND, NOR. En ingls: ALU (arithmetic and logic unit). En algunos sitios: unidad aritmtico-lgica. A L U operando1 operando2 operacin indicador de resultado resultado 4 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 2. Construccin de una ALU bsica La implementacin de circuitos para operaciones lgicas es muy sencilla: basta simplemente con una batera de puertas lgicas y un multiplexor accionado por las correspondientes seales de seleccin. Ejemplo: unidad lgica de 1 bit con las funciones AND y OR: Operacin: seal de seleccin de 1 bit. 2.1. Operaciones lgicas b 0 1 Result Operation a Operacin MUX 3 3 5 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 2.2. Sumador completo Sumador completo (tema 6): 3 entradas (a, b y AcarreoE). 2 salidas (Suma y AcarreoS). 1+1+1=11 1 1 1 1 1 1+1+1=10 0 1 0 1 1 1+0+1=10 0 1 1 0 1 1+0+0=01 1 0 0 0 1 0+1+1=10 0 1 1 1 0 0+1+0=01 1 0 0 1 0 0+0+1=01 1 0 1 0 0 0+0+0=00 0 0 0 0 0 Suma AcarreoS AcarreoE b a Operacin Salidas Entradas Suma AcarreoE AcarreoS a b AcarreoE b a oE abAcarre AcarreoE b a AcarreoE b a AcarreoE b a Suma = = + + + = ab aAcarreoE bAcarreoE AcarreoS + + = 6 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Aadimos el sumador completo a nuestra ALU, haciendo ms grande el multiplexor: b 0 2 Operacin a 1 AcarreoE AcarreoS Resultado 4 4 7 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 2.3. Restador Resta en complemento a 2: suma del negado ms 1. 1 b a 1) b ( a (-b) a b - a + + = + + = + = Resta: AcarreoE = InvertirB = 1 8 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 2.4. Operacin slt (activar si menor que) slt $rd, $rs, $rt 0 3 Resultado Operacin a 1 AcarreoE 0 1 InvertirB b 2 Menor Comparacin Desbordamiento Deteccin del Desbordamiento Bits 0 - 30 Bit 31 $rd = 00000001 16 si $rs < $rt $rd = 00000000 16 si $rs $rt 5 5 9 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Resta: AcarreoE = InvertirB = 1 Suma: AcarreoE = InvertirB = 0 Ambas se pueden combinar en una nica seal NegarB. Comparacin a31 0 Resultado0 AcarreoE a0 Resultado1 a1 0 Resultado2 a2 0 Operacin b31 b0 b1 b2 Resultado31 Desbordamiento InvertirB AcarreoE AcarreoE ALU0 Menor AcarreoS AcarreoE ALU1 Menor AcarreoS AcarreoE ALU2 Menor AcarreoS AcarreoE ALU31 Menor 10 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Comparacin a31 0 Resultado0 a0 Resultado1 a1 0 Resultado2 a2 0 Operacin b31 b0 b1 b2 Resultado31 Desbordamiento InvertirB Cero AcarreoE ALU31 Menor AcarreoE ALU0 Menor AcarreoS AcarreoE ALU1 Menor AcarreoS AcarreoE ALU2 Menor AcarreoS 2.5. Indicador de resultado: Detector de ceros 6 6 11 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) set on less than 111 resta 110 suma 010 or 001 and 000 Funcin Lineas de control de la ALU ALU Resultado Cero Desbordamiento a b Operacin ALU AcarreoS NegarB Seales de control del MUX 2.6. Resumen de la ALU hasta ahora 12 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 3. Multiplicacin bsica y su circuitera 0010 0011 0010 0010 0000 + 0000 0000110 Multiplicando Multiplicador Producto Vamos a estudiar tres algoritmos de multiplicacin para enteros sin signo. 7 7 13 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Primera versin del algoritmo y su circuiteria 1 registro y desplazador hacia la izquierda de 64 bits (multiplicando). 1 registro desplazador hacia la derecha de 32 bits (multiplicador). 1 registro de 64 bits (producto). ALU para datos de 64 bits. Circuitera de control. 14 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 4 3 2 1 0000 0110 0010 0000 0000 3: Despl. Mcador. dcha. 0000 0110 0010 0000 0000 2: Despl. Mcando. izda. 0000 0110 0001 0000 0000 1: Ninguna operacin 0000 0110 0001 0000 0000 3: Despl. Mcador. dcha. 0000 0110 0001 0000 0000 2: Despl. Mcando. izda. 0000 0110 0000 1000 0000 1: Ninguna operacin 0000 0110 0000 1000 0000 3: Despl. Mcador. dcha. 0000 0110 0000 1000 0001 2: Despl. Mcando. izda. 0000 0110 0000 0100 0001 1a: Prd. = Prd. + Mcando. 0000 0010 0000 0100 0001 3: Despl. Mcador. dcha. 0000 0010 0000 0100 0011 2: Despl. Mcando. izda. 0000 0010 0000 0010 0011 1a: Prd. = Prd. + Mcando. 0000 0000 0000 0010 0011 Valores iniciales 0 Producto Multiplicando Multiplicador Operacin Iteracin Resultado 0010 0011 = ? 8 8 15 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Segunda versin del algoritmo y su circuitera La mitad de los bits del multiplicando en el algoritmo anterior son 0. La ALU de 64 bits es un despilfarro. Al desplazar, se introducen ceros por la derecha del multiplicando, que ya no afectarn a los bits menos significativos del producto. Por tanto: multiplicando fijo y desplazamiento del producto a la derecha. 16 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1 registro de 32 bits (multiplicando). 1 registro desplazador hacia la derecha de 32 bits (multiplicador). 1 registro desplazador hacia la derecha de 64 bits (producto). ALU para datos de 32 bits. Circuitera de control. 9 9 17 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 4 3 2 1 0000 0110 0010 0000 3: Despl. Mcador. dcha. 0000 0110 0010 0000 2: Despl. Prd. dcha. 0000 1100 0010 0000 1: Ninguna operacin 0000 1100 0010 0000 3: Despl. Mcador. dcha. 0000 1100 0010 0000 2: Despl. Prd. dcha. 0001 1000 0010 0000 1: Ninguna operacin 0001 1000 0010 0000 3: Despl. Mcador. dcha. 0001 1000 0010 0001 2: Despl. Prd. dcha. 0011 0000 0010 0001 1a: Prd. = Prd. + Mcando. 0001 0000 0010 0001 3: Despl. Mcador. dcha. 0001 0000 0010 0011 2: Despl. Prd. dcha. 0010 0000 0010 0011 1a: Prd. = Prd. + Mcando. 0000 0000 0010 0011 Valores iniciales 0 Producto Multiplicando Multiplicador Operacin Iteracin Resultado 0010 0011 = ? 18 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) El registro producto tiene espacio desaprovechado, en el que encaja el multiplicador: A medida que dicho espacio desaparece, los bits del multiplicador tambin. El registro multiplicador se pone en la mitad derecha del registro producto. Versin final del algoritmo y su circuitera 10 10 19 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1 registro de 32 bits (multiplicando). 1 registro desplazador hacia la derecha de 64 bits (producto). ALU para datos de 32 bits. Circuitera de control. 20 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 0000 0110 0010 2: Despl. Prd. dcha. 0000 1100 0010 1: Ninguna operacin 4 0000 1100 0010 2: Despl. Prd. dcha. 0001 1000 0010 1: Ninguna operacin 3 0001 1000 0010 2: Despl. Prd. dcha. 0011 0001 0010 1a: Prd. = Prd. + Mcando. 2 0001 0001 0010 2: Despl. Prd. dcha. 0010 0011 0010 1a: Prd. = Prd. + Mcando. 1 0000 0011 0010 Valores iniciales 0 Producto Multiplicando Operacin Iteracin Resultado 0010 0011 = ? 11 11 21 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 111 10 -10 11 011 -10 01 Divisor Cociente Dividendo Resto No existe un bloque combinacional divisor. Hacer un circuito que resuelva la operacin rpido es ms complicado que en la multiplicacin. Secuencia de sumas, restas, comparaciones y desplazamientos. La divisin ofrece la posibilidad de dividir por 0. Vamos a estudiar tres algoritmos de divisin por restauracin para enteros sin signo. 4. Divisin bsica y su circuitera 22 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1 registro desplazador hacia la derecha de 64 bits (divisor). 1 registro desplazador hacia la izquierda de 32 bits (cociente). ALU para datos de 64 bits. 1 registro de 64 bits (resto). Circuitera de control. Primera versin del algoritmo y su circuiteria 12 12 23 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 0000 0001 0000 0001 0011 3: Despl. Div. dcha. 0000 0001 0000 0010 0011 2a: Rst.0 Despl. Coc., Coc 0 =1 5 0000 0001 0000 0010 0001 1: Rst. = Rst. Div. 0000 0011 0000 0010 0001 3: Despl. Div. dcha. 0000 0011 0000 0100 0001 2a: Rst.0 Despl. Coc., Coc 0 =1 4 0000 0011 0000 0100 0000 1: Rst. = Rst. Div. 0000 0111 0000 0100 0000 3: Despl. Div. dcha. 0000 0111 0000 1000 0000 2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc 0 =0 3 1111 1111 0000 1000 0000 1: Rst. = Rst. Div. 0000 0111 0000 1000 0000 3: Despl. Div. dcha. 0000 0111 0001 0000 0000 2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc 0 =0 2 1111 0111 0001 0000 0000 1: Rst. = Rst. Div. 0000 0111 0001 0000 0000 3: Despl. Div. dcha. 0000 0111 0010 0000 0000 2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc 0 =0 1 1110 1011 0010 0000 0000 1: Rst. = Rst. Div. 0000 0111 0010 0000 0000 Valores iniciales 0 Resto Divisor Cociente Operacin Iteracin 0111 0010 = ? Resto Cociente 24 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) Segunda versin del algoritmo y su circuitera Como mucho, slo la mitad del divisor contiene informacin til. Se pueden reducir el registro Divisor y la ALU a la mitad. Desplazar el resto a la izquierda consigue el mismo efecto (alineacin) que desplazar el divisor a la derecha. Se simplifica as la circuitera necesaria. 13 13 25 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1 registro de 32 bits (divisor). 1 registro desplazador hacia la izquierda de 32 bits (cociente). ALU para datos de 32 bits. 1 registro desplazador hacia la izquierda de 64 bits (resto). Circuitera de control. 26 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) De forma anloga a la multiplicacin, se puede introducir el registo Cociente en el de Resto. Resto se inicializa con el dividendo en su mitad derecha y el cociente en su izquierda. Esta mejora hace que el resto sufra un desplazamiento a la izquierda de ms, lo que requiere una rectificacin final. Versin final del algoritmo y su circuitera 14 14 27 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 1 registro de 32 bits (divisor). 1 registro desplazador derecha-izquierda de 64 bits (resto). ALU para datos de 32 bits. Circuitera de control. 28 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 0001 0011 0010 Despl. 1 bit a la dcha. la mitad izda. del Rst. 5 0010 0011 0010 3a: Rst.0 Despl. Rst. izda., Rst 0 =1 0001 0001 0010 2: Rst. = Rst. Div. 4 0011 0001 0010 3a: Rst.0 Despl. Rst. izda., Rst 0 =1 0001 1000 0010 2: Rst. = Rst. Div. 3 0011 1000 0010 3b: Rst.<0 Rst.=Rst.+Div., despl. Rst. izda., Rst 0 =0 1111 1100 0010 2: Rst. = Rst. Div. 2 0001 1100 0010 3b: Rst.<0 Rst.=Rst.+Div., despl. Rst. izda., Rst 0 =0 1110 1110 0010 2: Rst. = Rst. Div. 1 0000 1110 0010 Despl. Rst. izda. 0000 0111 0010 Valores iniciales 0 Resto Divisor Operacin Iteracin 0111 0010 = ? Resto Cociente 15 15 29 Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros) 5. Bibliografa D.A. PATTERSON, J.L HENNESSY. Computer Organization and Design. Morgan Kaufmann, 2005. D. A. PATTERSON, J. L. HENNESSY. Estructura y diseo de computadores. Revert, 2000. DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnologa de Computadores. 2 edicin. Sanz y Torres, 2000. D. A. PATTERSON, J. L., HENNESSY. Computer Organization and Design. Morgan Kaufmann, 2005. J.M. ANGULO, J.GARCA. Sistemas Digitales y Tecnologa de Computadores. Paraninfo, 2002. P. DE MIGUEL. Fundamentos de los Computadores. 7 edicin. Paraninfo, 1999. W. STALLINGS. Organizacin y Arquitectura de Computadores. 5 edicin, Prentice Hall, 2000.