Está en la página 1de 10

Apuntes de Principios de Computadores

6 de mayo de 2011

Captulo 1

Unidad Aritmtico Lgica


La unidad aritmtico lgica (ALU) es la seccin del computador que realiza las operaciones aritmticas y lgicas con los datos procesados por el computador. Aunque la ALU de hoy en da pueden realizar muchas operaciones, las operaciones bsicas- suma, resta, multiplicacin y divisin - continan siendo las mas importantes. En particular, todas las operaciones aritmticas pueden realizarse mediante sumas: Resta: Sumando el sustraendo complementado a dos al minuendo Multiplicacin: Repeticin de sumas Divisin: Repeticin de restas. Por tanto el elemento bsico aritmtico es el sumador binario. De acuerdo con esto, la unidad aritmtica bsica constar de un conjunto de registros donde se almacenarn los operandos, los resultados intermedios y los nales, un sumador binario (trabajando en binario puro o BCD) y una unidad de control. Debe recordarse que la unidad de control dirige la operacin de la ALU. Lo que la ALU hace es sumar, restar etc..., cuando se le suministra la secuencia correcta de seales de entrada. Es funcin del elemento de control proporcionar estas seales, como es funcin de la unidad de memoria proporcionar al elemento aritmtico la informacin que va a usarse. Las operaciones aritmticas pueden realizarse en serie o en paralelo. La organizacin serie requiere nicamente un sumador binario y es mucho ms barata que la organizacin paralelo. Sin embargo, la organizacin paralelo es mucho ms rpida. La velocidad del sistema serie depende de la frecuencia del reloj y de la longitud de la palabra. Entonces
una velocidad de tipo medio puede conseguirse con un bajo coste mediante una frecuencia rpida de reloj y una pequea longitud de palabra.

1.1. Sumador y Restador Binario


Las reglas de la suma binaria se corresponden con la tabla 1

CAPTULO 1.

UNIDAD ARITMTICO LGICA

0 1

B 0 0 1

1 1 (0,1)

1.1.1. Semisumador
Un mdulo bsico usado en elementos de aritmtica binaria es el semisumador. La funcin del semisumador es sumar dos dgitos binarios, produciendo una salida de suma y un arrastre o acarreo de acuerdo con las reglas de la tabla anterior. A B S C 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1
S =A+B =AB+AB

(1.1) (1.2)

C =AB

1.1.2. Semirestador
El semirestador es muy parecido al semisumador, ya que slo se diferencia en el bit de prstamo respecto al semisumador. A B D P 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0
D =A+B =AB+AB

(1.3) (1.4)

P =AB

Esto permite implementar un semirestador a partir de un semisumador. Esto se va a utilizar como manera de abaratar el hardware.

1.1.3. Sumador Completo


El sumador completo y el restador completo deben tener en cuenta el acarreo o prstamo del dgito anterior. Su tabla de verdad es:

CAPTULO 1.

UNIDAD ARITMTICO LGICA

Ai

Bi

Ci1

Si

Ci

0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 En trminos del acarreo anterior, las ecuaciones lgicas se pueden escribir como:
Si = Ai Bi Ci1 + Ai Bi Ci1 + Ai Bi Ci1 + Ai Bi Ci1

(1.5) (1.6)

C = Ai Ci1 + Ai Bi + Bi Ci1

1.2. Algoritmos de Multiplicacin


1.2.1. Multiplicacin en punto jo
La multiplicacin requiere, evidentemente, ms hardware que la suma y por ello puede ser no incluida en el repertorio de instrucciones de algunos ordenadores, sobre todo siendo estos pequeos (como por ejemplo los microprocesadores). Sin embargo, es una operacin muy til en casi todas las operaciones de clculo. La multiplicacin se implementa normalmente mediante sucesivas adiciones: a) Una forma muy simple, pero sin embargo muy lenta, consiste en sumar el multiplicando M consiguo mismo Q veces, siendo Q el multiplicador. b) Un mtodo ms razonable consiste en multiplicar M por k bits de Q cada vez y sumar los trminos resultantes: Ejemplo: k=1 y anlogamente a como lo haramos con lpiz y papel. 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1

1 0

0 1 0

1 0 0 0

Las operaciones utilizadas son sumas y desplazamientos. El algoritmo anterior es ineciente dado que los productos de 1 bit xj2iy deben almacenarse hasta que se ha completado la ltima adicin. (Se puede utilizar la resta para tratar nmeros en complemento a dos).

CAPTULO 1.

UNIDAD ARITMTICO LGICA

Figura 1.1: Circuito Multiplicador c) En las implementaciones es deseable sumar cada trmino a los anteriores para formar un nmero Pi+1 denominado producto parcial. 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 multiplicando y multiplicador x P0=0 x3*y P1=P0+x3*y x2*y*2 P2=P1+x2*y*2 x1*y*22 P3=P2+x1*y*22 x0*y*23 P4=P3+x0*y*23

0 0 0 0 1

0 0 0 0 1 0

0 0 0 1 1 0 0

0 0 0 0 0 1 1 0

Los clculos anteriores pueden describirse mediante una sentencia de transferencia entre registros de la forma:
Pi+1 = Pi + xj 2i y

(1.7)

Donde multiplicar y por 2i es equivalente a desplazar y en i posiciones hacia la izquierda. El circuito siguiente se va a utilizar para multiplicar dos nmeros x e y expresados en la forma magnitud-signo. Cada nmero es una palabra de 8 bits. 1) El bit ms a la izquierda es el bit de signo

CAPTULO 1.

UNIDAD ARITMTICO LGICA

C 0 0 0
1

0 0

A3 0 1 0 1 0
1

A2 0 1 1 1 0 0 1 1 0 0

A1 0 0 1 0
1

A0 0
1

1 1

0 1

Q3 1 1
1 1 1

Q2 0 0 1
1

Q1 1 1 0 0 1
1 1 1

Q0
1 1

C0 0 0 0 1 1 2 2 3 3

M3 1

M2 1

SHIFT SHIFT
NO ADD ADD

ADD

M1 0

M0 1

0 1 0

0 0 0 0

0 1 1 PRODUCTO

0 1

1 1

1 1

SHIFT SHIFT
ADD

Cuadro 1.1: Ejemplo 2) Los 7 bits restantes representan la magnitud del nmero. Esta se supone, si es fraccional, que el punto binario est a la izquierda del bit ms signicativo. 3) Por simplicidad hemos obviado el circuito que procesa el bit de signo. 4) Hay tres registros principales a) El registro M almacena el multiplicando Y. b) El registro Q almacena el multiplicador X. c) El acumulador de 8 bits se utiliza como un registro de trabajo en combinacin con el registro para almacenar resultados intermedios. La mitad ms signicativa del resultado nal se almacena en A. d) Los registros Q y A estn conectados fsicamente para formar un nico registro de desplazamiento que recibiendo la seal de control RIGHT-SHIFT desplaza su contenido en una posicin a la derecha. e) El acarreo del sumador es almacenado en el ip-op C, que se muestra en el ejemplo a la izquierda del Acumulador.
Ejemplo de multiplicacin de dos nmeros de 4 bits

Un algoritmo potente para la multiplicacin de nmeros con signo es el algoritmo de Booth. Este genera un producto de 2n bits y trata igual a los nmeros positivos que a los negativos. Consideremos una operacin de multiplicacin en la cual un nmero positivo tiene un bloque simple de unos con al menos un cero en cada nal, por ejemplo 0011110. Para obtener el producto podemos aadir cuatro versiones apropiadamente desplazadas del multiplicando como en el procedimiento estandar. Sin embargo, el nmero de operaciones puede reducirse observando que el multiplicador de esta forma se puede considerar como la diferencia de dos nmeros como sigue:
Algoritmo de Booth

CAPTULO 1.

UNIDAD ARITMTICO LGICA

0 0 0

1 0 0

0 0 1

0 0 1

0 0 1

0 1 1

0 0 0

32 2 30

Esto sugiere generar el producto por una operacin de adicin y otra de sustraccin. En particular, en el caso anterior haciendo 25 x multiplicando 21 x multiplicando se obtiene el resultado deseado. Por conveniencia en posteriores discusiones representaremos en el esquema estndar el multiplicador como 0, 0, +1, +1, +1, +1, 0, y en el nuevo esquema como 0, +1, 0, 0, 0, 1, 0. Notemos que en el nuevo esquema debemos seleccionar 1 x multiplicando desplazado en las fronteras de 0 a 1 y +1 x multiplicando desplazado en las fronteras de 1 a 0 segn se escanea el multiplicador de derecha a izquierda. La siguiente gura ilustra los dos esquemas: 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 +1 0 1 0 0 0 1 0 0 +1 0 1 1 0 1 1 +1 0 1 0 1 1 +1 0 0 1 0 +1 0 1 1 0 0

0 0

0 0 0

0 0 0 1

0 1 0 0 0

0 1 0 0 0 1

0 1 0 1 0 0 0

0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 1 0 0 1 0

1 0 -1 0 1

1 1 0 0

0 1 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 1 0 0 0 1 0 1

0 1 0 0 0 0 0 0

0 1 0 0 0 1 0 1

0 1 0 0 0 1 0 0

Complemento a dos del multiplicando

Multiplicando 0 0 1 1 0

Esto claramente se puede extender a cualquier nmero de bloques de unos en el multiplicador, incluyendo la situacin donde un uno simple se considera como un bloque. Hasta ahora hemos mostrado nmeros positivos. Puesto que al menos hay un cero al extremo izquierdo de cualquier multiplicador, una operacin +1 puede ser puesta a la izquierda de cada operacin -1 para preservar la correccin de la operacin. Tambin es cierto que si aplicamos el mtodo a un multiplicador negativo, tendremos la respuesta correcta. Para mostrar la correccin de esta tcnica necesitamos introducir una propiedad de la representacin de nmeros negativos en complemento a dos.

CAPTULO 1.

UNIDAD ARITMTICO LGICA

La siguiente tabla resume la tcnica de Booth: Multiplicador Bit i 0 0 1 1 Bit i-1 0 1 0 1 Operacin
0xM 1xM 1xM 0xM

La transformacin que hemos visto para el algoritmo de Booth se denomina la tcnica de "saltar sobre unos". El motivo es que en los casos en que el multiplicador tiene unos agrupados en un pocos bloques contiguos, slose necesita sumar dos versiones del multiplicando para obtener el resultado nal. En este caso la multiplicacin se ve acelerada. Sin embargo, en el peor caso de unos y ceros alternantes en el multiplicador, cada bit del multiplicador selecciona un sumando. De hecho esto resulta en ms sumandos que si no usamos el algoritmo de Booth. Este algoritmo persigue dos caractersticas principalmente: 1. Tratamiento uniforme tanto de los nmeros positivos como de los negativos 2. Alguna eciencia en el nmero de sumandos generados cuando el multiplicador tiene unos pocos bloques grandes de unos. La aceleracin posible debido al salto sobre los unos es claramente dependiente de los datos.

1.3. Divisin en punto jo


Dados dos nmeros, divisor V y dividendo D, se trata de calcular un tercer nmero denominado cociente Q, tal que:

D = QxV + R

(1.8)

donde el resto R se requiere que sea ms pequeo que V, . Si se utiliza un formato de fraccin, el nmero de bits en el cociente no tiene por qu estar limitado:
0,2 : 0,3 = 0,6666666...

Se necesita, por tanto, limitar el nmero de bits del cociente generados en el proceso de divisin. Los circuitos de divisin se disean para producir cocientes de alguna longitud especca. En la inmensa mayora de los casos, slo se necesita el cociente y el resto se desprecia (R puede ser utilizado para generar dgitos en el cociente mediante una segunda divisin R : V ). La relacin D = QxV sugiere que hay una gran similitud entre la multiplicacin y la divisin. Esta correspondencia signica que se pueden utilizar circuitos y algoritmos similares para implementar la multiplicacin y la divisin. MULTIPLICACIN: El multiplicando desplazado se suma para producir el resultado DIVISN: El divisor desplazado se resta para producir el cociente.

CAPTULO 1.

UNIDAD ARITMTICO LGICA

Uno de los mtodos ms simples es el algoritmo secuencial dgito a dgito, similar al utilizado con lpiz y papel. D, V enteros positivos,Q = q0 , q1 , q2 , ..., Se calcula un bit cada vez. En el paso i, se compara 2i xV , que representa el divisor desplazado i bits a la derecha, con el resto parcial actual Ri . El bit qi del cociente se ja a 0 (1) si es mayor (menor) que Ri y se calcula un nuevo resto parcial Ri+1 de acuerdo a la relacin:
Algoritmo secuencial.

Ri+1 Ri qi 2i V

(1.9)

En la implementacin es ms fcil desplazar el resto parcial a la izquierda con respecto al divisor jo y entonces (1) es equivalente a:
Ri+1 2Ri qi V

(1.10)

Veamos un ejemplo: 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0
q0 = 0

1
q1 = 1 R0 = D R1 = R0 q0 V R2 = R1 q1 V 2 R3 = R2 q2 V 4 R4 = R3 q3 V 8

0
q2 = 1

1
q3 = 1

R1 1 1 0 0 1 R2 0 1 1 R3 R4

El problema central en la divisin es determinar el dgito qi del cociente. Si utilizamos la base r, entonces qi debe escogerse de los posibles valores de R. Si r=2, qi puede obtenerse comparando V y 2Ri en el paso i-simo. Si V > 2Ri entonces qi = 0. Si V < 2Ri entonces qi = 1. Si V es grande la implementacin de un circuito comparador pude ser imposible, y entonces qi se obtiene realizando una resta entre V y 2Ri y examinando el signo de la diferencia. Los circuitos utilizados en el captulo anterior para la multiplicacin pueden modicarse fcilmente para realizar la divisin. El par de registros de n bits A y Q se utilizan para almacenar los resultados parciales. Inicialmente el dividendo, que puede tener 2n bits de longitud, se alamacena en estos dos registros. El divisor V se ubicar en el registro M donde permanecer a lo largo de todo el proceso de divisin. En cada paso A y B se desplazan a la izquierda. Las celdas que van quedando vacas por la derecha del registro Q se utilizarn para almacenar los bits del cociente que estn siendo generados. Cuando el proceso de divisin termina el registro Q contendr el cociente, mientras que el registro A contendr el resto.
Divisin con restauracin

Sumando V al resultado se puede obtener Ri+1 . Esta tcnica se denomina divisin con restauracin. A continuacin describiremos el mtodo

CAPTULO 1.

UNIDAD ARITMTICO LGICA

para nmeros enteros positivos. En cada paso se realiza la operacin:


Ri+1 2Ri V

(1.11)

Cuando el resultado de la resta es negativo se realiza una suma con restauracin:


Ri+1 Ri+1 + V

(1.12)

Si la probabilidad de qi = 1 es 1/2 entonces este algoritmo requiere n restas y un promedio de n/2 adiciones. Ejemplo Inicializar 0 0 0 0 0 1 0 0 0 0 0 0 1 1 L-Shift Resta Restaurar q0=0 L-Shift Resta Restaurar q1=0 L-Shift Resta q2=1 L-Shift Resta Restaurar q3=0 0 1
1

0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0

0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0

0 0 1
1

0 0 1 1 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1

1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0

0 0

0 0

0 0

0 0 1
0

0 0

0 0

0 0

0 0 1
1

0 0

0 0

0 1

0 0

0 0

0 1 Resto

0 1 0 Cociente

También podría gustarte