Escolar Documentos
Profissional Documentos
Cultura Documentos
6 Multiplicacin
La multiplicacin es una operacin mas complicada que la suma y que la resta. Para
entender como es que el hardware realiza esta operacin, con base en la ALU desarrollada,
daremos un repaso de cmo se realiza esta operacin de manera manual, recordando as los
nombres de los diferentes elementos que intervienen en la operacin. Por ejemplo, si
multiplicamos 1000 por 1001, tenemos:
Multiplicando 1000
Multiplicador x 1001
1000
0000
0000
1000
Producto 1001000
Otra observacin importante es que, sin importar la base numrica en la que se obtenga el
producto, al multiplicar un nmero de n-dgitos con otro de m-dgitos, el resultado puede
llegar a requerir, a lo mas, de n + m dgitos. En el caso de MIPS se multiplicarn dos
registros de 32 bits, de manera que el resultado puede requerir hasta de 64 bits para su
representacin.
Usando nmeros de 4 bits, para reducir espacio, multiplicar 6diez x 3diez. (0110dos x 0011dos).
Respuesta:
La nueva versin para el hardware se muestra en la figura 3.16, mientras que en la figura
3.17 se muestra la nueva versin para el algoritmo. Se conservan las 32 iteraciones y los 3
pasos en cada iteracin.
Fig. 3.16 Hardware de la multiplicacin (segunda versin)
Respuesta:
En el hardware mostrado en la figura 3.16 pueden notarse que, el registro del multiplicador
y el registro del producto se desplazan a la derecha, y que cuando el algoritmo comienza no
importa lo que haya en la mitad derecha del registro del producto, por que se va a perder. Y
cuando el algoritmo termina, el registro del multiplicador queda con 0s, es decir, su valor se
va perdiendo durante el desarrollo del algoritmo.
De manera que puede obtenerse una versin mejorada del hardware, si al comienzo del
algoritmo se coloca al multiplicador a la mitad derecha del producto. Con ello, adems de
reducir los recursos, da pie a un algoritmo mas rpido, por que en lugar de 2
desplazamientos slo se realizar 1. En la figura 3.18 se muestra la versin final del
hardware para la multiplicacin y en la figura 3.19 se muestra al algoritmo que desarrollar
el control en esta versin final. Puede notarse que en cada iteracin se ha reducido a 2 el
nmero de pasos.
Respuesta:
En este caso la tabla slo cuenta con una columna para el multiplicando y otra para el
producto:
3.7 Divisin
1010 Cociente
Divisor 100 101011 Dividendo
- 100
101
- 100
11 Residuo
Usando nmeros de 4 bits, para reducir espacio, dividir 7diez 2diez. (0111dos x 0010dos).
Respuesta:
En cada iteracin se subraya en el residuo al bit mas significativo, por que este bit
determina si se continuar con el paso 2a o con el paso 2b (indica se el resultado de la resta
es mayor o menor que cero).
Observando a la figura 3.20 y analizando con detalle el desarrollo del algoritmo, puede
notarse que la parte significativa de la resta es de 32 bits, por que en los otros 32 se estn
restando 0s, por lo que la ALU que realiza las restas puede reducirse a 32 bits. Adems, se
consigue el mismo resultado si en lugar de desplazar el divisor a la derecha, ste se
mantiene fijo y se desplaza al registro del residuo a la izquierda.
Debe recordarse que al comienzo del algoritmo, el registro del residuo deber contener al
dividendo en sus 32 bits ms a la derecha.
En la figura 3.22 se muestra la segunda versin del hardware de la divisin; la resta se
realiza entre los 32 bits ms significativos del residuo y el divisor. No se muestra al
algoritmo que sigue el control, por que prcticamente sera el mismo al mostrado en la
figura 3.21, con la nica diferencia que en el paso 3, en lugar de desplazar a la derecha al
divisor, se desplazar a la izquierda al residuo.
El hardware mostrado en la figura 3.22 puede mejorarse si se observa que tanto el registro
del cociente y el registro del residuo se desplazan a la izquierda, adems en cada
desplazamiento que realiza el registro del residuo, se introduce un 0 en el bit menos
significativo, de manera que cuando el algoritmo termina, el residuo queda en los 32 bits
ms significativos, mientras que los 32 bits menos significativos quedan llenos de 0s.
Entonces, el hardware puede modificarse de manera que los bits que se introduzcan sean
los que correspondan al cociente, con ello, adems de reducir un poco los recursos de
hardware, produce un algoritmo ms rpido, puesto que en lugar de realizar dos
desplazamientos, slo se realizar 1. Al final del algoritmo, en un registro de 64 bits se
tendr al residuo (en los 32 bits ms significativos) y al cociente (en los 32 bits menos
significativos).
En las figuras 3.23 y 3.24 se muestra la versin final del hardware y del algoritmo de la
divisin respectivamente.
Fig. 3.23 Hardware para la divisin (versin final)
Con la versin final del algoritmo, dividir 7diez 2diez. (0111dos x 0010dos).
Respuesta:
Con esta nueva versin slo se requerir de 4 iteraciones y en cada iteracin se realizarn
dos pasos:
Despus de las 4 iteraciones se desplaza a la izquierda la mitad izquierda del registro del
residuo. En los 4 bits menos significativos se tiene al cociente.
Otros tipos de datos importantes son los nmeros de punto flotante, los cuales son una
aproximacin a los nmeros reales. La mayora de computadoras utilizan al estndar IEEE
754 el cual establece una representacin de 32 bits para nmeros en punto flotante en
simple precisin y 64 bits para nmeros en punto flotante en doble precisin (MIPS no es la
excepcin, tambin emplea ese formato).
El estndar IEEE 754 representa a los nmeros en notacin cientfica normalizada (en base
2). La versin normalizada deja un dgito a la izquierda del punto decimal y los dgitos
restantes se sitan a la derecha; por ejemplo, el nmero: 0.000111, una vez normalizado es
1.11 x 2-4 y el nmero 11000000 al normalizarse queda como: 1.1 x 27, de manera que
cualquier nmero puede ser aproximado con una expresin de la forma:
1.xxxxxxdos x 2yyyyyy
Pero adems, los nmeros en punto flotante pueden ser positivos o negativos, de manera
que en la representacin de un nmero debe considerarse un campo para el signo, un campo
para el exponente y otro para la mantisa. De los 32 bits que se disponen en simple
precisin, la distribucin de los campos es:
31 30 29 28 . . . 24 23 22 21 20 19 . . . 3 2 1 0
signo Exponente Mantisa
1 bit 8 bits 23 bits
Se han dedicado 8 bits para el exponente, lo que significa que se tienen 256 combinaciones,
de las cuales deben considerarse algunas mayores y otras menores que cero, para
representar nmeros muy pequeos y nmeros muy grandes. Sin embargo y debido a que es
ms fcil manipular nmeros sin signo, las combinaciones se conservarn desde el valor 0
hasta el 255, y para obtener el valor representado, al valor del exponente se le restar un
nmero conocido como desplazamiento.
La mantisa corresponde a los dgitos que quedan a la derecha del punto decimal, despus de
la normalizacin. La representacin contiene a un 1 que no se escribe por que todos los
nmeros normalizados lo incluirn.
El valor del desplazamiento es de 127 para simple precisin, por lo que el nmero ms
cercano al cero se obtiene con una cadena de 32 ceros (correspondera a 1 x 2-127), y esta en
el orden de 10-39. Por convencin, esta combinacin es interpretada como 0.0, puesto que
en simple precisin no es posible encontrar un nmero mas cercano al 0.
El nmero ms alejado del 0, se obtiene con una cadena de 1s (a excepcin del bit de signo,
que puede tener 0). Esta combinacin est en el orden de 1038, que aunque es un nmero
grande, difiere de lo que consideramos como infinito.
Las operaciones en punto flotante pueden producir resultados mas pequeos (bajo flujo) o
resultados mas grandes (sobre flujo), por lo que en ocasiones ser necesario contar con mas
bits para la representacin.
El estndar IEEE 754 incluye una representacin de doble precisin, la cual utiliza 64 bits,
por lo que los tamaos de los campos crecen significativamente:
31 30 29 28 . . . 21 20 19 18 17 . . . 3 2 1 0
signo Exponente Mantisa
1 bit 8 bits 23 bits
31 30 29 28 . . . 3 2 1 0
Mantisa
32 bits
Para el campo del exponente se dispone de 11 bits, mientras que para la mantisa se tienen
52; con ello, el nmero mas cercano al 0 est en el orden de 10-308 y el mas alejado del 0
esta en el orden de 10308.
Para obtener el valor que se est representando, se emplea la misma expresin utilizada en
simple precisin, con la diferencia de que el valor del desplazamiento ser de 1023.
1 10000001 01000000000....
signo exponente mantisa
Respuesta:
Respuesta:
1 01111110 1 0 0 0 0 0 0 0 0 0 0 0. . . .
signo exponente mantisa
Para entender como sera el algoritmo y hardware para sumar nmeros en punto flotante,
repasaremos como se hara la operacin si se tratase de nmeros decimal. Sumaremos los
nmeros 9.999diez x 101 con 1.610diez x 10-1, suponiendo que slo podemos almacenar
cuatro dgitos decimales en la mantisa y dos en el exponente.
a) Para que la suma sea correcta, primero se deben alinear los nmeros adecuadamente, es
decir, se debe buscar que el exponente sea el mismo para los dos nmeros. Para ello,
desplazaremos el nmero con el exponente mas pequeo para que alcance al del
exponente mas grande:
1.610diez x 10-1 = 0.1610diez x 100 = 0.01610diez x 101
d) Finalmente, puesto que solo se pueden almacenar 4 dgitos para la mantisa, el resultado
debe redondearse a 4 dgitos, el redondeo consiste en aproximar al nmero inmediato
superior el penltimo dgito, si el dgito menos significativo es mayor o igual a 5 y en
caso contrario, aproximar al inmediato inferior. Obtenindose como resultado final:
1.002 x 102
En el inciso (c) al normalizar la suma puede ocurrir un error de sobre flujo si el valor del
exponente es mayor al que se puede representar o bajo flujo en caso de que sea menor. El
algoritmo para la suma en punto flotante se muestra en la figura 3.25, en donde se muestra
que despus de un redondeo, puede ser necesaria otra normalizacin. La deteccin del
sobre flujo o bajo flujo depende de la precisin que se este utilizando para la representacin
de los nmeros.
Sumar los nmeros 0.5diez y 0.4375 diez en binario, usando el algoritmo de la figura 3.25
Respuesta:
1) Se desplaza al nmero con exponente mas pequeo (a la derecha), hasta alinearlo con el
exponente mayor:
- 1.110dos x 2-2 = - 0.111dos x 2-1
2) Se suman las mantisas: 1.000dos x 2-1 + (- 0.111dos x 2-1 ) = 0.001dos x 2-1
Puesto que 127 > - 4 > - 126, no hay sobre flujo ni bajo flujo (El exponente desplazado
sera 4 + 127 = 123, y est entre 1 y 254).
Muchas mquinas dedican hardware para ejecutar operaciones de punto flotante tan rpido
como sea posible. En la figura 3.26 se esboza la organizacin bsica del hardware para la
suma en punto flotante.
Probemos con los exponentes desplazados para asegurarnos que obtenemos el mismo
resultado: 10 + 127 = 137, y 5 + 127 = 122, de manera que:
Nuevo exponente = 137 + 122 = 259
Hay tres dgitos a la derecha de cada factor, de manera que deber haber 6 dgitos a la
derecha del punto decimal del producto: 10.212000diez
Suponiendo que slo se pueden mantener 3 dgitos a la derecha del punto decimal, el
producto resultante sera: 10.212diez x 105
c) Este resultado no esta normalizado, de manera que tenemos que normalizarlo para
obtener: 1.0212diez x 106
d) Puesto que asumimos que la mantisa era de 4 dgitos, se debe redondear al producto, de
manera que: 1.0212diez x 106 es redondeado a 1.021diez x 106
e) El signo del producto depende de los signos de los factores, si son iguales el producto
es positivo y si son diferentes, el producto ser negativo.
En este caso el resultado es: + 1.021diez x 106
El signo en la suma fue determinado por la suma de las mantisas, pero en el producto el
signo se determina por los signos de los operandos. En la figura 3.27 se muestra el
algoritmo de multiplicacin binaria en punto flotante. En donde se muestra que despus de
la normalizacin, es posible que ocurra un error de sobre flujo o bajo flujo; y despus del
redondeo, es posible que se requiera normalizar nuevamente.
Siguiendo el algoritmo:
El producto es 1.110000 dos x 2-3, pero necesitamos mantenerlo en 4 bits por lo que
obtenemos: 1.110 dos x 2-3
5) Los signos de los operandos son diferentes, de manera que el resultado es:
- 1.110 dos x 2-3
MIPS soporta a los formatos del estndar IEEE 754 para simple y doble precisin, con las
instrucciones:
El cdigo MIPS para cargar 2 nmeros de punto flotante de simple precisin, desde la
memoria, para sumarlos y almacenar el resultado en memoria es:
TAREA
1. Escribir un programa, en cualquier lenguaje de alto nivel, que siga los pasos de la
versin final del algoritmo de la multiplicacin.
Por simplicidad usar datos de 16 bits, los cuales se debern pedir al usuario para
almacenarse en 2 arreglos. Luego se seguir al algoritmo paso a paso, para dejar el
resultado en un arreglo de 32 bits.
2. Construir una tabla donde se muestren los resultados de dividir al 13diez entre el 3diez,
con base en el algoritmo mostrado en la versin final de la divisin.
3. Mostrar la representacin binaria IEEE 754 en simple precisin para los nmeros
10.5diez y 2/3diez. (En el ltimo caso se obtendr una aproximacin).