Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAsunción Carrasco Peña Modificado hace 9 años
1
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
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
Hardware del multiplicador
ALU de 64 bits Multiplicando Multiplicador Producto Control Write Shift Left Shift Right suma bit0 32 bits 64 bits 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 Estado Relojes
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
Biestable Asíncrono S-R
Q R S S R Q Q 0 0 Q Q 1 1 prohibida S=set R=reset
9
Biestable Asíncrono S-R (1-0)
R(t) Q(t) 1 Q R S Q(t+tpd)=S(t)+Q(t)=1+0=0 Q(t+tpd)=R(t)+Q(t)=0+1=0 Q(t+2tpd)=R(t+tpd)+Q(t+tdp)=0+0=1 Q(t+2tpd)=S(t+tpd)+Q(t+tdp)=1+0=0
10
Biestable Asíncrono S-R
R(t) Q(t) 1 Q R S Q=0 Q=1 Q=0
11
Combinación Inestable 1-1
Q R S S(t) 1 R(t) 1 Q(t) 1 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
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. clk D0..7 D7 D6 D5 D4 D3 D2 D1 D0 Q0..7 Write 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 ALU de 32 bits suma 32 bits bit0 Shift Right Producto Control Write 64 bits
15
Más mejoras al algoritmo de la multiplicación
Guarda el multiplicador en la parte baja del registro producto. ALU de 32 bits Multiplicando Producto Control Write suma bit0 32 bits 64 bits Shift Right
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
Incorrecto! No funciona! ¿Que sucede si el multiplicador es negativo? No tiene sentido!!!!
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
= = 26-22 = = 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 = = 26-22 = =
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 cadena de ceros fin cadena de 1’s suma principio cadena de 1’s resta 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
Demostración actual anterior ai ai-1 (ai-1-ai) sumar b 1 -1 nada
1 -1 nada restar b 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 mult rs, rt multu rs, rt
mult rs, rt rs rt 0x18 multu rs, rt rs rt 0x19 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.
27
La División Dividendo Divisor 1001010 1000 - 1000 1001 00010 Cociente
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 Cociente 101 1010 - 1000 10 Resto
28
Hardware del divisor El resto se inicializa con el dividendo.
Shift Right 64 bits Shift Left Cociente ALU de 64 bits resta 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. suma 32 bits Resto Write Control 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
Más mejoras al algoritmo de la división
Guarda el cociente en la parte baja del registro resto. ALU de 32 bits Divisor Resto Control Write suma 32 bits 64 bits Shift Right Shift Left resta
32
Ejemplo : 7 div 2
33
Mismo hw para multiplicar y dividir
ALU de 32 bits Divisor Resto Control Write suma 32 bits 64 bits Shift Right Shift Left ALU de 32 bits Multiplicando Producto Control Write suma bit0 32 bits 64 bits Shift Right 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)
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.