Objetivos Cómo ejecuta el hardware las operaciones básicas (suma, resta, división y multiplicación). Qué pasa si una operación genera un número más grande de lo que puede ser representado. Operaciones con números reales. Universidad de Sonora2
Suma Sumar 7 más 6: Hay que tomar en cuenta los acarreos: Universidad de Sonora3
Resta Restar 7 – 6. Se puede hacer directo: O se puede usar una suma, recordando que 7 – 6 = 7 + (- 6): En conclusión, la resta se puede hacer con una suma. Universidad de Sonora4
Pero… Por cuestiones de eficiencia las sumas no se hacen bit a bit (sumador de ripple carry). Si dos bits se pueden sumar en un ciclo de reloj, dos números de n bits necesitan al menos 2n ciclos (un ciclo para la suma y otro para pasar el carry al siguiente paso). Hay algoritmos para hacer sumas rápidas. El más común se llama sumador de carry-lookahead (carry adelantado). Universidad de Sonora5
Suma de dos números de 1 bit abSC Universidad de Sonora6 S = a b C = a. b
Suma de tres números de 1 bit Entrada: Dos números, a y b, de 1 bit. Un carry de entrada, c0, de 1 bit. Salida: La suma, S, de 1 bit. Un carry de salida, c1, de 1 bit. Universidad de Sonora7
Sumador completo (full adder) Universidad de Sonora8 abc0Sc S = a b c0 c1 = a. c + a. b + b. c
Suma de dos números de dos bits Entrada: Un número de 2 bits, A = a1a0. Un número de 2 bits, B = b1b0. Un carry de entrada, c0, de 1 bit. Salida: La suma, S, de dos bits, S = s1s0. Un carry de salida, c2, de 1 bit. Un carry intermedio, c1, de 1 bit. Universidad de Sonora9
Ecuaciones para los carries La suma es el or exclusivo de ai, bi, y ci. Nos enfocamos en los carries, ci. c1 = (b0. c0) + (a0. c0) + (a0. b0) c2 = (b1. c1) + (a1. c1) + (a1. b1) Sustituyendo c1 en c2: c2 = (a1. a0. b0) + (a1. a0. c0) + (a1. b0. c0) + (b1. a0. b0) + (b1. a0. c0) + (b1. b0. c0) + (a1. b1) Se puede calcular c1 y c2 en paralelo. Universidad de Sonora10
Pero… La ecuación para ci se expande conforme i crece. Con números de dos bits se requieren: 6 compuertas AND de 3 entradas. 1 compuerta AND de 2 entradas. 1 compuerta OR de 7 entradas. Para números de 32 bits el costo del hardware y de energía es prohibitivo. Hay que buscar otra solución, aunque no sea las más rápida. Universidad de Sonora11
Sumador de carry lookahead Se parte del principio: ci+1 = (bi. ci) + (ai. ci) + (ai. bi) = (ai. bi) + (ai + bi). ci Se reescribe la ecuación para c2: c2 = (a1. b1) + (a1. b1). ((a0. b0) + (a0 + b0). c0) Se nota que se repiten los factores (ai. bi) y (ai + bi). Se definen los factores genera (gi) y propaga (pi): gi = ai. bi pi = ai + bi Universidad de Sonora12
Genera y propaga Se rescribe la ecuación para ci+1: ci+1 = gi + pi. ci Si gi = 1: ci+1 = 1. Si gi = 0 y pi = 1: ci+1 = ci Universidad de Sonora13
Genera y propaga Usando la ecuación de ci+1 se definen los carries: c1 = g0 + (p0. c0) c2 = g1 + (p1. g0) + (p1. p0. c0) c3 = g2 + (p2. g1) + (p2. p1. g0) + (p2. p1. p0. c0) c4 = g3 + (p3. g2) + (p3. p2. g1) + (p3. p2. p1. g0) + (p3. p2. p1. p0. c0) Se pueden calcular los carries en paralelo. Las ecuaciones se complican rápidamente. Hay que buscar una forma de simplificar las ecuaciones. Universidad de Sonora14
Usando un segundo nivel de abstracción Suponer que se cuenta con un sumador de 4 bits con carry-lookahead. Se puede construir un sumador de 16 bits conectando 4 sumadores de 4 bits en serie (ripple). El carry de salida del sumador j se conecta al carry de entrada de sumador j + 1. El carry de entrada del sumador 0 es el carry inicial. El carry de salida del sumador 3 es el carry final. Universidad de Sonora15
Propaga de segundo nivel Se define la señal “súper” propaga: P0 = p3. p2. p1. p0 P1 = p7. p6. p5. p4 P2 = p11. p10. p9. p8 P3 = p15. p14. p13. p12 Universidad de Sonora16
Genera de segundo nivel Se define la señal “súper” genera G0 = g3 + (p3. g2) + (p3. p2. g1) + (p3. p2. p1. g0) G1 = g7 + (p7. g6) + (p7. p6. g5) + (p7. p6. p5. g4) G2 = g11 + (p11. g10) + (p11. p10. g9) + (p11. p10. p9. g8) G3 = g15 + (p15. g14) + (p15. p14. g13) + (p15. p14. p13. g12) Universidad de Sonora17
Carries de segundo nivel Los carries para cada sumador de 4 bits: C1 = G0 + (P0. c0) C2 = G1 + (P1. G0) + (P1. P0. c0) C3 = G2 + (P2. G1) + (P2. P1. G0) + (P2. P1. P0. c0) C4 = G3 + (P3. G2) + (P3. P2. G1) + (P3. P2. P1. G0) + (P3. P2. P1. P0. c0) Universidad de Sonora18
Conclusión Para hacer un sumador de 16 bits con carry-lookahead se necesitan: 4 sumadores con carry- lookahead de 4 bits. 1 unidad de carry-lookahead. Los carries de entrada de cada sumador de 4 bits se toma de la unidad de carry-lookahead. Universidad de Sonora19
Universidad de Sonora20
Ejemplo Calcular gi, pi, Pi, Gi y el carry final (C4) al sumar los siguientes dos números de 16 bits: Se obtiene gi = ai. bi y pi = ai + bi: Universidad de Sonora21
Ejemplo Se calculan los “súper” propaga (P0, P1, P2, P3): Y los “súper” genera: Universidad de Sonora22
Ejemplo Por último, el carry final (C4) En conclusión, al sumar a y b se obtiene un carry final. Universidad de Sonora23
Comparación Un sumador de 16 bits de ripple-carry necesita 32 ciclos. Un sumador de 16 bits de carry-lookahead necesita 5 ciclos: 1 ciclo para obtener pi y gi en paralelo. 2 ciclos para obtener Pi y Gi en paralelo. 2 ciclos para obtener C4. Universidad de Sonora24
Multiplicación Universidad de Sonora25
Algoritmo Universidad de Sonora26
Ejemplo Multiplicar 3 x 2 Universidad de Sonora27
Números con signos distintos Multiplicar 3 x (-2). Se le quita el signo al -2 y se guarda en alguna variable. Se multiplica 3 x 2 usando el algoritmo ya visto. Se multiplica el resultado por -1 para obtener -6. Universidad de Sonora28
Conclusión Para número de n bits, el algoritmo visto requiere al menos n ciclos. Existen algoritmos más rápidos (ver Universidad de Sonora29
División Universidad de Sonora30
Algoritmo Universidad de Sonora31
Ejemplo Dividir 7 / 2. Universidad de Sonora32
Números con signos distintos Si los signos del divisor y el dividendo difieren, se guarda un -1 en una variable, s, en otro caso s = 1. Se les quita el signo negativo y se procede con el algoritmo anterior. El resultado se multiplica por s. Universidad de Sonora33
Conclusión El algoritmo de división visto requiere al menos n + 1 ciclos para números de n bits. Hay algoritmos más rápidos (ver Universidad de Sonora34
Overflow El overflow ocurre cuando el resultado de una operación no se puede representar en el hardware. Con 4 bits, el rango de enteros con signo, usando complemento a dos para los negativos, es de -8 a +7. La suma genera overflow. La resta -5 – 6 genera overflow. Universidad de Sonora35
Overflow Sumando con 4 bits: 0101 (+5) (+6) (-5) ⇦ ¡error! Restando -5 – 6 con 4 bits: 1011 (-5) (-6) (+5) ⇦ ¡error! Universidad de Sonora36
Detectando overflow El overflow ocurre en la suma cuando: Al sumar dos positivos el resultado es negativo. Al sumar dos negativos el resultado es positivo. El overflow ocurre en la resta cuando: Al restar un negativo de un positivo el resultado es negativo. Al restar un positivo de un negativo el resultado es positivo. Universidad de Sonora37
Detectando overflow OperaciónABResultado indicando overflow A + B> 0 < 0 A + B< 0 > 0 A – B> 0< 0 A – B< 0> 0 Universidad de Sonora38
Detectando overflow Hacer la operación y revisar los signos de los operandos y del resultado. Si la operación es una suma, revisar que si los operandos son positivos el resultado sea positivo. Los demás casos se hacen igual. Universidad de Sonora39
Punto flotante Permite representar números reales con precisión finita. = … es un número real es número real 7 x es un número real en notación científica y está normalizado. 0.5 x 10 4 no está normalizado. Universidad de Sonora40
En binario x x x x 2 -3 = En notación científica normalizada: x 2 4 Un número real normalizado siempre tiene un 1 en el lugar de las unidades. Universidad de Sonora41
Signo y magnitud Es un método para representar número de punto flotante en binario. Con 32 bits: s = 0 positivo; s = 1 negativo. El exponente incluye el signo del exponente. El número no debe ir normalizado. Universidad de Sonora42
Signo y magnitud El número se reconstruye: (-1) s x F x 2 E s es el signo (0 = positivo, 1 = negativo). F es la fracción de 23 bits. E es el exponente de 8 bits. Universidad de Sonora43
Ejemplo Representar x 2 4 en signo y magnitud. Se desnormaliza x 2 -3 Universidad de Sonora44 sEF
Overflow y underflow Se produce un overflow cuando un exponente positivo es tan grande que no cabe en el campo exponente. Se produce un underflow cuando un exponente negativo es tan grande que no cabe en el campo exponente. Se puede evitar el overflow y/o el undeflow usando precisión doble en lugar de precisión sencilla. Universidad de Sonora45
Precisión sencilla vs doble En Java: Universidad de Sonora46 TipoPrecisiónTamañoRango floatsencilla4 bytes e-45 a e+38 (positivo o negativo) doubledoble8 bytes e-324 a e+308 (positivo o negativo)
Standard IEEE Standard del IEEE (Institute of Electrical and Electronic Engineers) para cálculos de punto flotante. El standard define: Formatos para representar números Formatos de intercambio Reglas de redondeo Operaciones Manejo de excepciones Usado por toda CPU diseñada desde Universidad de Sonora47
Formatos Universidad de Sonora48 Ver
Precisión sencilla Los 32 bits se dividen en: 1 bit de signo (1 negativo, 0 positivo). 8 bits para el exponente. 23 bits para la mantisa. Universidad de Sonora49
Precisión sencilla Notas: 1. El exponente se guarda en exceso a En el campo de mantisa se guarda solo la parte fraccionaria, el 1 de la parte entera no se almacena. 3. La mantisa se guarda justificada a la izquierda rellenando de cero a la derecha si es necesario. 4. El número se reconstruye así: N = (-1) s x (1 + mantisa) x 2 E – 127 Universidad de Sonora50
Ejemplo Representar en el standard IEEE con precisión sencilla. El bit de signo es 0 Se pasa a binario … Se normaliza …x 2 4 El exponente, 4, en exceso 127 es 131. En binario es La parte fraccionaria de la mantisa extendida a 23 bits es En conclusión, se representa en binario como Universidad de Sonora51
Ejemplo Representar en el standard IEEE con precisión sencilla. El bit de signo es en binario es El binario normalizado es × 2 6 El exponente, 6, en exceso 127 es 133. En binario es La parte fraccionaria de la mantisa, rellenando con ceros a la derecha, es En conclusión se representa en binario como Universidad de Sonora52
Características principales Dos ceros: Cero positivo (+0): s = 0, e = 0, m = 0 Cero negativo (-0): s = 1, e = 0, m = 0 Dos infinitos: Infinito positivo: s = 0, e = 255, m = 0 Infinito negativo: s = 1, e = 255, m = 0 Dos NaN (not a number): NaN positivo: s = 0, e = 255, m > 0 NaN negativo: s = 1, e = 255, m > 0 Universidad de Sonora53
Características principales Números más grandes: Positivo: = × Negativo: = × Números más pequeños: Normalizado positivo: = × Normalizado negativo: = × Denormal positivo: = × Denormal negativo: = × Universidad de Sonora54
Resumen Universidad de Sonora55