Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porCristián Mora Giménez Modificado hace 8 años
2
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
3
Suma Sumar 7 más 6: Hay que tomar en cuenta los acarreos: Universidad de Sonora3
4
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
5
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
6
Suma de dos números de 1 bit abSC 0000 0110 1010 1101 Universidad de Sonora6 S = a b C = a. b
7
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
8
Sumador completo (full adder) Universidad de Sonora8 abc0Sc1 00000 00110 01010 01101 10010 10101 11001 11111 S = a b c0 c1 = a. c + a. b + b. c
9
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
10
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
11
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
12
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
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
Universidad de Sonora20
21
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
22
Ejemplo Se calculan los “súper” propaga (P0, P1, P2, P3): Y los “súper” genera: Universidad de Sonora22
23
Ejemplo Por último, el carry final (C4) En conclusión, al sumar a y b se obtiene un carry final. Universidad de Sonora23
24
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
25
Multiplicación Universidad de Sonora25
26
Algoritmo Universidad de Sonora26
27
Ejemplo Multiplicar 3 x 2 Universidad de Sonora27
28
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
29
Conclusión Para número de n bits, el algoritmo visto requiere al menos n ciclos. Existen algoritmos más rápidos (ver https://en.wikipedia.org/wiki/Multiplication_algorithm). https://en.wikipedia.org/wiki/Multiplication_algorithm Universidad de Sonora29
30
División Universidad de Sonora30
31
Algoritmo Universidad de Sonora31
32
Ejemplo Dividir 7 / 2. Universidad de Sonora32
33
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
34
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 https://en.wikipedia.org/wiki/Division_algorithm). https://en.wikipedia.org/wiki/Division_algorithm Universidad de Sonora34
35
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 5 + 6 genera overflow. La resta -5 – 6 genera overflow. Universidad de Sonora35
36
Overflow Sumando 5 + 6 con 4 bits: 0101 (+5) + 0110 (+6) ------------- 1011 (-5) ⇦ ¡error! Restando -5 – 6 con 4 bits: 1011 (-5) + 1010 (-6) ------------ 0101 (+5) ⇦ ¡error! Universidad de Sonora36
37
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
38
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
39
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
40
Punto flotante Permite representar números reales con precisión finita. = 3.1415926… es un número real 0.00007 es número real 7 x 10 -5 es un número real en notación científica y está normalizado. 0.5 x 10 4 no está normalizado. Universidad de Sonora40
41
En binario 10100.101 1 x 2 4 + 1 x 2 2 + 1 x 2 -1 + 1 x 2 -3 = 20.625 10 En notación científica normalizada: 1.0100101 x 2 4 Un número real normalizado siempre tiene un 1 en el lugar de las unidades. Universidad de Sonora41
42
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
43
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
44
Ejemplo Representar 1.0100101 x 2 4 en signo y magnitud. Se desnormaliza. 10100101 x 2 -3 Universidad de Sonora44 sEF 01111 11010000000000000010100101
45
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
46
Precisión sencilla vs doble En Java: Universidad de Sonora46 TipoPrecisiónTamañoRango floatsencilla4 bytes1.40129846432481707e-45 a 3.40282346638528860e+38 (positivo o negativo) doubledoble8 bytes4.94065645841246544e-324 a 1.79769313486231570e+308 (positivo o negativo)
47
Standard IEEE 754-2008 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 1980. Universidad de Sonora47
48
Formatos Universidad de Sonora48 Ver https://en.wikipedia.org/wiki/IEEE_floating_pointhttps://en.wikipedia.org/wiki/IEEE_floating_point
49
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
50
Precisión sencilla Notas: 1. El exponente se guarda en exceso a 127. 2. 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
51
Ejemplo Representar 17.15 en el standard IEEE 754-2008 con precisión sencilla. El bit de signo es 0 Se pasa 17.15 a binario 10001.00100110011001… Se normaliza 1.000100100110011001…x 2 4 El exponente, 4, en exceso 127 es 131. En binario es 10000011 La parte fraccionaria de la mantisa extendida a 23 bits es 00010010011001100110011 En conclusión, 17.15 se representa en binario como 01000001100010010011001100110011 Universidad de Sonora51
52
Ejemplo Representar -118.675 en el standard IEEE 754-2008 con precisión sencilla. El bit de signo es 1 118.675 en binario es 1110110.101 El binario normalizado es 1.110110101 × 2 6 El exponente, 6, en exceso 127 es 133. En binario es 10000101 La parte fraccionaria de la mantisa, rellenando con ceros a la derecha, es 11011010100000000000000 En conclusión -118.675 se representa en binario como 11000010111011010100000000000000 Universidad de Sonora52
53
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
54
Características principales Números más grandes: Positivo: 2 127 = 1.7014118 × 10 38 Negativo: -2 127 = -1.7014118 × 10 38 Números más pequeños: Normalizado positivo: 2 -126 = 1.175494351 × 10 -38 Normalizado negativo: 2 -126 = -1.175494351 × 10 -38 Denormal positivo: 2 -149 = 1.4012985 × 10 -45 Denormal negativo: -2 -149 = -1.4012985 × 10 -45 Universidad de Sonora54
55
Resumen Universidad de Sonora55
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.