1 / 35

Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy

Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy. Verano 2004. Profesora Borensztejn. MULTIPLICACIONES. Si el multiplicador y el multiplicando son de n bits, el número de dígitos del producto puede tener hasta 2n bits.

seanna
Télécharger la présentation

Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Organización del Computador I VeranoAritmética (3 de 3)Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn

  2. MULTIPLICACIONES • Si el multiplicador y el multiplicando son de n bits, el número de dígitos del producto puede tener hasta 2n bits. • El algoritmo de multiplicación básico es igual al que todos sabemos: Repetir 32 veces: • Comprobar el bit mas bajo del multiplicador, si es uno, sumar el multiplicando al producto • Desplazar el multiplicando 1 bit a la izquierda • Desplazar el multiplicador 1 bit a la derecha

  3. Multiplicando Shift Left 64 bits Shift Right Multiplicador suma ALU de 64 bits 32 bits bit0 Producto Control Write 64 bits Hardware del multiplicador El multiplicando se inicializa con la mitad superior en cero. El multiplicando, el multiplicador y el producto se guardan en registros. • El control genera las señales apropiadas, en el momento apropiado: • Chequea el bit0 • Si bit0=1, activa write del producto • Activa las señales shift left y shift right.

  4. Sistemas secuenciales y combinacionales • Un registro está formado por un conjunto de elementos de memoria • Un elemento de memoria almacena un estado, y su salida en un instante del tiempo depende de su entrada y de su estado en el instante anterior. Se llaman secuenciales. • En los sistemas combinacionales, las salidas solo dependen de las entradas. Por ejemplo: la ALU xt qt yt+1=f(xt, qt)

  5. Sistemas secuenciales • Por ejemplo, un contador módulo 4. • Los sistemas secuenciales pueden ser síncronos o asíncronos. En el primer caso, se utiliza una señal de reloj como entrada para señalar los tiempos en que el elemento de estado se debe actualizar. Q(t)=0 Q(t)=1 Q(t)=2 Q(t)=3 yt+1=1 yt+1=2 yt+1=3 yt+1=3

  6. Elementos de EstadoRelojes Flanco de bajada T Flanco de subida El reloj es una señal con un tiempo de ciclo fijo.

  7. Elementos de Estado : Memoria • Tienen dos Estados : Q=0 y Q=1 • Pueden ser síncronos o asíncronos • Síncronos: disparados por flanco o por nivel • Flip-Flop = biestable síncrono por flanco

  8. S Q R Q Biestable Asíncrono S-R S R Q Q 0 0 Q Q 1 0 1 0 0 1 0 1 1 1 prohibida S=set R=reset

  9. Biestable Asíncrono S-R (1-0) 1 S(t) 0 S 1 0 Q R(t) R 1 0 Q(t) Q 1 0 Q(t) Q(t+tpd)=S(t)+Q(t)=1+0=0 Q(t+2tpd)=R(t+tpd)+Q(t+tdp)=0+0=1 Q(t+tpd)=R(t)+Q(t)=0+1=0 Q(t+2tpd)=S(t+tpd)+Q(t+tdp)=1+0=0

  10. Biestable Asíncrono S-R S Q 1 S(t) 0 R 1 0 Q R(t) 1 0 Q(t) 1 0 Q(t) Q=0 Q=1 Q=0

  11. Combinación Inestable 1-1 S Q R Q 1 S(t) 0 1 0 R(t) 1 0 Q(t) 1 0 Q(t) Q=0 oscilación Estado desconocido

  12. Biestables Síncronos: Tipo D • Se construye a partir del biestable S-R. • No tiene restricción respecto a las entradas • Síncrono por flanco. D Q D D Q Q 0 0 1 1 1 0 clk Q

  13. D0..7 clk D6 D7 D5 D4 D3 D2 D1 D0 Write Q0..7 Registros • Se construyen a partir de n biestables D. • La entrada se carga en el registro cuando la señal Write está habilitada y el clk da el flanco. • Un registro desplazamiento tiene dos señales adicionales: una para desplazar a la izquierda y otra a la derecha. Shift Left Shift Right

  14. Mejora al algoritmo de la multiplicación • Suma el multiplicando a la parte alta del producto, luego de sumar desplaza a la derecha el producto. Trabaja con un sumador de 32 bits. Multiplicando 32 bits Shift Right Multiplicador suma ALU de 32 bits 32 bits bit0 Shift Right Producto Control Write 64 bits

  15. Multiplicando 32 bits suma ALU de 32 bits Shift Right Producto Control Write bit0 64 bits Más mejoras al algoritmo de la multiplicación • Guarda el multiplicador en la parte baja del registro producto.

  16. Multiplicaciones con signo • No funciona! • ¿Que sucede si el multiplicando es negativo? • Hay que extender el signo mientras lo acumulamos en el registro producto Incorrecto! Correcto!

  17. Multiplicaciones con signo • No funciona! • ¿Que sucede si el multiplicador es negativo? • No tiene sentido!!!! Incorrecto!

  18. Multiplicaciones con signo • No funciona si interpretamos los números con signo! • Alternativas: • Convertir el multiplicando y el multiplicador a números positivos, luego multiplicar, y luego aplicar el signo correspondiente al producto, recordando extender el signo a la izquierda. • Buscar otros algoritmos

  19. Multiplicaciones con signo 00111100= 25+24 +23 +22 = 26-22 01101111= 26+25 +23 +22 +21 +20 = 27-25 +24 -20 Esto quiere decir que podemos generar el producto de forma diferente: restando al inicio de la cadena de unos sumando al final de una cadena de unos 00111100= 25+24 +23 +22 = 26-22 01101111= 26+25 +23 +22 +21 +20 = 27-25 +24 -20

  20. Multiplicaciones con signo Observación: M * 1100= M* (23+22)= M* (24-22) Incorrecto! Correcto!! Desplazar Desplazar Desplazar Desplazar Sumar Restar Sumar Desplazar

  21. Algoritmo de Both (multiplicar) • Observa de a dos bits del multiplicador • Bit Bit String Acción • Actual Anterior • 0 0 cadena de ceros -- • 0 1 fin cadena de 1’s suma • 1 0 principio cadena de 1’s resta • 1 1 cadena de 1’s -- El algoritmo cambia el primer paso del algoritmo anterior en función de los dos bits observador. En el segundo paso, se desplaza el producto a la derecha. El número de iteraciones es igual a n.

  22. Algoritmo de Both (multiplicar) desplaza desplaza desplaza desplaza ¿Porqué funciona para números con signo?

  23. actual anterior (ai-1-ai) ai ai-1 nada 0 0 0 sumar b 0 1 1 1 0 -1 restar b 0 nada 1 1 Demostración El producto, para n=4, se puede escribir de la siguiente manera:

  24. Demostración Observemos dos términos consecutivos:

  25. Demostración Recordando que a-1 =0 a en C2 Conclusión: El algoritmo de Booth trata al multiplicador como un número en complemento a 2.

  26. MIPS: MULT y MULTU 31 26 21 16 11 6 0 • mult rs, rt • Ambas instrucciones dejan la palabra de menos peso en el registro Lo y la palabra de mas peso en el registro Hi. • Ambas instrucciones ignoran el desbordamiento si el producto no cabe en 32 bits. • Desbordamiento para números sin signo: el registro Hi es distinto de cero. • Desbordamiento para números con signo: el registro Hi es distinto de la extensión de signo del registro Lo. 0 0x18 0 rs rt • multu rs, rt 31 26 21 16 11 6 0 0 0x19 0 rs rt

  27. La División Dividendo Divisor 1001010 1000 - 1000 1001 El algoritmo de división básico es igual al que todos sabemos: Repetir 33 veces • Resto=Resto menos Divisor • Si Resto es mayor o igual a cero • desplazar a la izquierda el cociente y escribir un 1 en su bit menos significativo Sino • restaurar el valor original del Resto, desplazar el cociente e introducir un cero en su bit menos significativo • Desplazar el divisor 1 bit a la derecha • Ir a 1 00010 Cociente 101 1010 - 1000 10 Resto

  28. Hardware del divisor Divisor Shift Right 64 bits Shift Left Cociente El resto se inicializa con el dividendo. El divisor, a cada iteración se desplaza a la derecha para alinearse con el dividendo. Ocupa inicialmente los 32 bits más altos del registro de 64 bits. resta ALU de 64 bits suma 32 bits Resto Control Write 64 bits El control genera las señales apropiadas, en el momento apropiado. El algoritmo es el de prueba y error. Si hubo error (nocabe) hay que restaurar el valor del resto.

  29. Ejemplo: 7 div 2 El divisor es de 32 bits, y se va desplazando a la derecha en un registro de 64 bits  se puede ahorrar espacio, y hardware si en lugar de desplazar el divisor a la derecha, se desplaza el resto a la izquierda. (mismo cambio que en el multiplicador). La ALU queda ahora de 32 bits.

  30. Mejora al algoritmo de la división Divisor 32 bits Shift Left Cociente suma ALU de 32 bits resta 32 bits Shift Left Resto Control Write 64 bits

  31. Divisor 32 bits suma ALU de 32 bits Shift Right Resto Control Shift Left Write 64 bits Más mejoras al algoritmo de la división • Guarda el cociente en la parte baja del registro resto. resta

  32. Ejemplo : 7 div 2

  33. Divisor 32 bits Multiplicando suma 32 bits ALU de 32 bits suma ALU de 32 bits Shift Right Resto Control Shift Left Write Shift Right 64 bits Producto Control Write bit0 64 bits Mismo hw para multiplicar y dividir resta

  34. División con signo • La solución mas simple es operar con los valores absolutos. • Luego se ajustan los signos del cociente y del resto. • Se debe cumplir que: • Dividendo=Cociente*Divisor + Resto • Regla: El dividendo y el resto deben tener el mismo signo

  35. FIN Aritmética(3 de 3)

More Related