Você está na página 1de 31

FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

CAPÍTULO 2. UNIDAD ARITMÉTICA Y LÓGICA

La unidad aritmética y lógica, más conocida por el acrónimo ALU del in-
glés Arithmetic Logic Unit, es un sistema combinacional y/o secuencial
que lleva a cabo operaciones aritméticas, como la suma y la resta, y
lógicas, como AND y OR. Normalmente, la ALU recibe dos datos de en-
trada y produce un resultado a la salida.

La estrategia básica de este capítulo, para el diseño de una ALU, es in-


corporar funciones lógicas básicas a la UBC. Posteriormente, se define e
incorpora nuevas funciones aritméticas.

Finalmente, se aprovecha la ALU para generar más variables de estado


de proceso, también llamados señalizadotes o “banderas”.

Ing. Marcelo Ramírez M. Página 24


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.1. FUNCIONES LÓGICAS.


Es imposible no tener en cuenta el uso de funciones lógicas entre varia-
bles de n bits.

La operación AND entre dos valores de n bits se efectúa bit a bit entre
bits del mismo peso y puede ser descrita esquemáticamente así:

Figura 2. 1 - Función AND multibit

El diagrama puede simplificarse así:

Figura 2. 2 - AND multibit simplificado

De igual forma, se recurre a las otras dos funciones lógicas básicas: OR


y OR exclusivo (XOR). Sus respectivos diagramas de n bits simplifica-
dos son mostrados a continuación:

Figura 2. 3 - Función OR

Figura 2. 4 - Función XOR

Ing. Marcelo Ramírez M. Página 25


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.2. UNIDAD ARITMÉTICA Y LÓGICA SIMPLE.


Es sencillo combinar las funciones lógicas con las funciones aritméticas:
basta con diseñar una estructura que
emplee los bloques de las tres funcio-
nes lógicas y de la UBC.

Figura 2. 5 - Funciones aritméticas y lógi-


cas

Para combinar las salidas en una sola


es necesario emplear n multicanaliza-
dores (en nombre corto, mux) de di-
mensión 4 a 1.

La Figura 2. 6 muestra el esquema


completo y el simplificado.

Figura 2. 6 - Multicanalizador 4 a 1 de n bits

Ing. Marcelo Ramírez M. Página 26


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Luego, se obtiene la estructura del diagrama a continuación. Nótese que


la variable C permanece independiente.

Figura 2. 7 - Unidad Aritmética y Lógica (ALU)

Es inevitable combinar las señales de selección del multicanalizador con


la palabra de control de la UBC y formar así la palabra de control de la
ALU.

Por comodidad, se asume la siguiente relación de señales de selección:

S6 S5 Salida selecta
0 0 AND
0 1 OR
1 0 XOR
1 1 UBC
Tabla 2. 1 - Selección del mux

Parecería ser que se cuenta ahora con un sistema dotado de siete seña-
les de control (S6:0) que genera 27 = 128 funciones. Sin embargo, las
combinaciones de S4:0 sólo tienen significado si S6:5=112. El sistema
tiene, en realidad, 27 funciones: 24 de la UBC y las 3 lógicas reciente-
mente añadidas.

Al tomar en cuenta las observaciones de la sección 1.4.2 es posible con-


tar sólo con las funciones básicas simples y omitir tanto las funciones
complejas como las redundantes. Con la aplicación de los conceptos
vertidos es posible obtener un conjunto mínimo de funciones básicas.

Ing. Marcelo Ramírez M. Página 27


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Al hacer el ejercicio, a partir de la Tabla 1.15, se obtiene lo siguiente:

S4 S3 S2 S1 S0 C R FUNCIÓN
0 0 0 0 0 0 0 constante, borrar salida
0 0 0 0 1 0 1 constante, uno positivo
0 0 0 1 0 0 -1 constante, uno negativo
0 0 0 1 1 1 0 constante, borrar salida
0 0 1 0 0 0 -1 constante, uno negativo
0 0 1 0 1 1 0 constante, borrar salida
0 0 1 1 0 1 -2 constante, dos negativo
0 0 1 1 1 1 -1 constante, uno negativo
0 1 0 0 0 0 y leer y
0 1 0 0 1  y+1 incrementar y
0 1 0 1 0 0 -y-1 complemento a 1 de y, invertir y
0 1 0 1 1  -y complemento a 2 de y, negar y
0 1 1 0 0  y-1 decrementar y
0 1 1 0 1 1 y leer y
0 1 1 1 0  -y-2 función compleja
0 1 1 1 1 1 -y-1 complemento a 1 de y, invertir y
1 0 0 0 0 0 x leer x
1 0 0 0 1  x+1 incrementar x
1 0 0 1 0  x-1 decrementar x
1 0 0 1 1 1 x leer x
1 0 1 0 0 0 -x-1 complemento a 1 de x, invertir x
1 0 1 0 1  -x complemento a 2 de x, negar x
1 0 1 1 0  -x-2 función compleja
1 0 1 1 1 1 -x-1 complemento a 1 de x, invertir x
1 1 0 0 0  x+y sumar
1 1 0 0 1  x+y+1 función compleja
1 1 0 1 0  x-y-1 función compleja
1 1 0 1 1  x-y restar y de x
1 1 1 0 0  -x+y-1 función compleja
1 1 1 0 1  y-x restar x de y
1 1 1 1 0  -x-y-2 función compleja
1 1 1 1 1  -x-y-1 función compleja
Tabla 2. 2 - Selección de funciones básicas

La elección es como sigue (la preferencia por x no sugiere nada):

 La función de interés del grupo de las constantes es 0, las demás


son superfluas y repetidas.

 Del grupo de funciones de x, se elige la lectura, el incremento, el


decremento y los complementos (inversión de x y negativo de x).

 En el grupo de funciones donde el argumento variable es y, sólo


se elige la función que transmite y a la salida; las demás ya están
elegidas para x.

Ing. Marcelo Ramírez M. Página 28


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

 Finalmente, del grupo de funciones de dos variables se elige a la


suma y a la resta en la que x hace de minuendo.

A continuación, se obtiene una nueva tabla funcional más simple:

S6 S5 S4 S3 S2 S1 S0 C R FUNCIÓN
1 1 0 0 0 0 0 0 0 constante, borrar salida
1 1 1 0 0 0 0 0 x leer x
1 1 0 1 0 0 0 0 y leer y
1 1 1 0 1 0 1 1 -x negar x
1 1 1 0 1 0 0  -x-1 invertir x
0 0 0 0 0 0 0 0 xy x and y
0 1 0 0 0 0 0 0 xy x or y
1 0 0 0 0 0 0 0 xy x xor y
1 1 1 1 0 0 0  x+y sumar
1 1 1 1 0 1 1  x-y restar y de x
1 1 1 0 0 0 1  x+1 incrementar x
1 1 1 0 0 1 0  x-1 decrementar x
Tabla 2. 3 - Funciones aritméticas y lógicas selectas

Como ya se ha visto anteriormente, las funciones seleccionadas permi-


ten calcular funciones más complejas mediante operación secuencial.

Un diagrama simplificado de una ALU integrada es el siguiente:

Figura 2. 8 - ALU integrada

2.3. ALU CODIFICADA.


En las condiciones descritas es posible materializar en laboratorio, a ba-
jo costo, una ALU básica de, por ejemplo, 4 bits, mediante el empleo de
compuertas lógicas y sumadores completos. Sin embargo, la palabra de
control es algo “larga”. En un ambiente experimental, llevar a ejecución

Ing. Marcelo Ramírez M. Página 29


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

estas operaciones puede ser tedioso en el momento de generar la pala-


bra de control manualmente, en especial si la cantidad de operaciones a
ser ejecutadas es significativa.

Una solución a esta situación es codificar las palabras de control me-


diante asignación arbitraria a un código mínimo (menor cantidad de bits
posible). En este caso 4 bits son suficientes para codificar las 12 opera-
ciones elegidas. Así, para invocar una operación, se introduce el código
respectivo al sistema, el descodificador genera la palabra de control y la
operación se ejecuta.

El sistema resultante es el siguiente:

Figura 2. 9 - ALU codificada

Además de la ALU, se aprecia es-


pecialmente la palabra de control
(S6:0), el descodificador de opera-
ciones y el código de operación.

Se reitera que la asignación del


código es totalmente arbitraria.
Existen combinaciones no usadas
del código; éstas estarán disponi-
bles para operaciones adicionales.
La tabla funcional codificada se
muestra a continuación. Los nom-
bres de las funciones han sido lige-
ramente simplificados.

C3 C2 C1 C0 C FUNCIÓN
0 0 0 0 0 borrar
0 0 0 1 0 leer x
0 0 1 0 0 leer y
0 0 1 1 1 negar x
0 1 0 0  not x
0 1 0 1 0 and
0 1 1 0 0 or
0 1 1 1 0 xor
1 0 0 0  sumar
1 0 0 1  restar
1 0 1 0  incrementar x
1 0 1 1 0 decrementar x
Tabla 2. 4 - Funciones de la ALU codificada

Como siempre, el acarreo C refleja el estado de la última operación. En


este sentido C se constituye en una variable de estado de proceso.

Ing. Marcelo Ramírez M. Página 30


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.3.1. Diseño del descodificador.

El diseño del descodificador representa el desarrollo de un sistema


combinacional de 4 entradas (los bits de código) y 7 salidas (las señales
de control).

Supóngase que, luego de haber sido diseñado el descodificador, se in-


corpora una nueva especificación de diseño: se requiere controlar el pa-
so del acarreo hacia la salida.1 Existe un motivo para ello: es posible
que surja la necesidad de que algunas operaciones generen un acarreo
nulo como, por ejemplo, las operaciones lógicas.2

La adición de un control de paso para el acarreo implica la necesidad de


una nueva señal de control. Lejos de tener que rediseñar el descodifica-
dor para incorporar una nueva función de salida es preferible registrar
las palabras de control en una memoria no volátil (ROM) y asociar el
código a las direcciones de memoria. En ese caso el descodificador se
vuelve convenientemente flexible y permite la adición de bits a la pala-
bra de control.

Figura 2. 10 - ROM como descodificador de operaciones

Con una ROM de 8 bits es posible incorporar a S7 como octavo bit a la


palabra de control. Si fuese necesario incorporar aún más bits de con-
trol, basta con añadir otro banco de ROM para aumentar el ancho de la
palabra.

1
En algunos microprocesadores, las funciones de incremento y decremento no afectan al aca-
rreo. En estos casos conviene inhibir el paso del bit C.

2
Una función lógica es visible a la salida por selección del multicanalizador de la ALU, sin em-
bargo el bit de acarreo proviene de la UBC y la selección del mux no lo afecta. Debido a la si-
multaneidad de ejecución de operaciones en la etapa de cálculo de la ALU y a que los subsiste-
mas son combinacionales, los operandos también afectan a la UBC. Es posible adoptar una con-
vención al respecto: si el valor lógico de una señal de control puede estar indefinido sin afectar
la ejecución de la operación a cuya palabra de control pertenece, puede definirse con valor lógi-
co 0. En este caso, la combinación de señales de control S4:0 que actúan sobre la UBC estará en
00000, que corresponde a la operación borrar y, por tanto, el acarreo de salida es 0.

Ing. Marcelo Ramírez M. Página 31


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

La incorporación descrita modifica la arquitectura del sistema como se


muestra en el diagrama.

Figura 2. 11 - ALU con control de acarreo

2.3.2. Funcionamiento.

El funcionamiento de la ALU codificada es como sigue:

1. Se introduce la información de proceso en las entradas A y B de


datos.

2. Se introduce el código de operación a la entrada del descodifica-


dor de operaciones. El código de operación “invoca” a la función
mediante el descodificador que genera una palabra de control
luego de un tiempo de retardo (tiempo de acceso de lectura de la
ROM que actúa como descodificador de operaciones).

3. Cada uno de los bits de control actúa sobre los componentes de


una manera predeterminada y la operación se lleva a cabo luego
de un tiempo de retardo de la ALU.

4. Finalmente, el resultado está disponible a la salida para su ob-


servación.

Para calcular una expresión algebraica con operadores aritméticos y ló-


gicos es posible establecer mentalmente la secuencia de operaciones a
ejecutarse, como se hace normalmente con una calculadora de mano
simple; sin embargo, es mejor planificar previamente la secuencia para
asegurar éxito al primer intento. Anteriormente se mostró algunos
ejemplos de descripción simbólica literal del cálculo de una función de
cierta complejidad a partir de funciones simples.

Ing. Marcelo Ramírez M. Página 32


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Para la ALU codificada es posible establecer un esquema adicional de


codificación de las operaciones, esta vez no hacia el ámbito lógico del
sistema electrónico, sino hacia el del operador. De acuerdo con la des-
cripción operativa de cada función es conveniente codificar su nombre
mediante un anagrama o una abreviatura mnemónica que facilite su
uso.

Asimismo, en lugar de usar el sistema binario en la representación del


código, se empleará el sistema numérico hexadecimal.

La tabla resultante es la siguiente:

Operación Variable
Código de
(abreviatura de estado Descripción de la función
operación
mnemónica) C
0 clr 0 Cero aL Resultado
1 leer a 0 LEER dato A a la salida
2 leer b 0 LEER dato B a la salida
3 neg 0* NEGativo de a
4 not 0* NOT a
5 and 0 AND entre a y b
6 or 0 OR entre a y b
7 xor 0 XOR entre a y b
8 add  ADicionar Datos a y b
9 sub  SUBstraer b de a
A inc  INCrementar a
B dec 0 DECrementar a
Tabla 2. 5 - Funciones de la ALU codificada

En los casos de neg y not (*), se desea que C=0, debido a que ningu-
na de ambas operaciones debería generar acarreo.

Ej. 2.1: Diseñar una secuencia operativa para calcular la función:

f ( x , y , z)  2 x  y  z  3

Solución. Para describir la operativa se recurre a dos tipos de senten-


cias: los nombres de las funciones y los comentarios que describen las
tareas que debe realizar el operador.

1. Inicialmente se coloca x en ambas entradas para obtener 2x me-


diante la función add.

2. Se reescribe el resultado en la entrada A, se coloca y en la entra-


da B y, a continuación, se usa sub para obtener 2x-y.

3. Esto es interesante: el resultado intermedio puede reescribirse en


la entrada B aunque no se usará de inmediato. En la entrada A se
introduce z y se calcula su inverso. Luego se coloca este valor en
la entrada B y se invoca a add para obtener 2x-y+ z .

Ing. Marcelo Ramírez M. Página 33


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

4. Finalmente se reescribe el resultado anterior en A y se invoca a la


función dec para obtener 2x-y+ z -1. Luego se procede de igual
manera dos veces más para obtener la función f(x,y,z).

; calcular f(x,y,z)
; colocar x en A y en B
add ; R=2x
; colocar resultado en A y en B
sub ; R=2x-y
; colocar z en A y resultado en B
not ; R= z
; colocar resultado en A
add ; R=2x-y+ z
; colocar resultado en A
dec ; R=2x-y+ z -1
; colocar resultado en A
dec ; R=2x-y+ z -2
; colocar resultado en A
dec ; R=2x-y+ z -3
; listo

Antes de proceder con la fase operativa (llevar a ejecución la secuencia


descriptiva planeada), se debe traducir el código simbólico (abreviatu-
ras mnemónicas) a código de operación. El listado descriptivo resultante
es:

; calcular f(x,y,z)
; colocar x en A y en B
8 add ; R=2x
; colocar resultado en A y en B
9 sub ; R=2x-y
; colocar z en A y resultado en B
4 not ; R= z
; colocar resultado en A
8 add ; R=2x-y+ z
; colocar resultado en A
B dec ; R=2x-y+ z -1
; colocar resultado en A
B dec ; R=2x-y+ z -2
; colocar resultado en A
B dec ; R=2x-y+ z -3
; listo

A continuación, sólo resta pasar a la etapa de laboratorio y seguir lo


planificado en el listado.

Ing. Marcelo Ramírez M. Página 34


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.4. LENGUAJE SIMBÓLICO DE PROGRAMACIÓN


(Primera parte).
La tarea de traducir el código simbólico es muy sencilla sin embargo,
con una secuencia de cientos o miles de operaciones, puede llegar a ser
excesivamente tediosa. Para afrontar tal situación es posible recurrir a
un traductor automático. En esta instancia es necesario considerar que,
si bien la asignación de un código binario a cada operación es totalmen-
te arbitraria, al igual que la asignación de un código simbólico mnemó-
nico, el autómata debe seguir un procedimiento previo en el marco de
reglas claramente establecidas.

El traductor deberá operar de la siguiente manera:

1. Leer el texto de la secuencia descriptiva una línea a la vez.

2. Discriminar las sentencias, para ello debe:

a) Ignorar los comentarios. Los comentarios, por tanto, deben ir


precedidos de un carácter que reconozca el traductor, por
ejemplo: “;”, “*”, “/*” y “//”, entre otros. Al leer tal símbolo, el
traductor omitirá lo que sigue y empezará a leer una nueva lí-
nea de texto.

b) Reconocer las abreviaturas mnemónicas.

3. Para reconocer abreviaturas mnemónicas el traductor debe:

 leer la palabra carácter por carácter hasta completar su lec-


tura;

 comparar la palabra leída contra la tabla de operaciones;

 en caso de identificar la palabra leída en la tabla de opera-


ciones, recuperar el código mnemónico asociado e insertarlo
en el listado de origen (listado fuente);

 en caso de que la palabra leída no se encuentre en la tabla


de mnemónicos, generar un mensaje de error y continuar
con la siguiente línea de texto.

4. Para que el autómata finalice su trabajo es preciso que reconozca


la sentencia final, en tal caso es posible incorporar una sentencia
que constituya una orden para el autómata. En la perspectiva de
incorporar más órdenes o directivas para el traductor es muy
práctico preceder tales órdenes con un símbolo similar al que pre-
cede al comentario, de tal modo que el traductor reconozca rápi-
damente el sufijo y recurra a una tabla de directivas que le con-
duzcan a ejecutar tareas específicas. En forma práctica, para fina-

Ing. Marcelo Ramírez M. Página 35


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

lizar la tareas de traducción, se puede incorporar la siguiente di-


rectiva:

.fin

Entonces, el aspecto del listado traducido queda así:

La legibilidad de la secuencia descriptiva se basa en dos aspectos: la


claridad de los comentarios y el orden tabular del listado. Nótese la co-
lumna de los códigos de operación, la columna de las directivas y nom-
bres de funciones y la columna de los comentarios.

Los comentarios que preceden a los nombres de las funciones determi-


nan tareas que debe cumplir el operador en el momento de la operati-
va.

Ing. Marcelo Ramírez M. Página 36


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.5. EXPANSIÓN DE LA ALU.


Es posible incrementar la versatilidad de la ALU mediante la adición de
bloques funcionales. En este subcapítulo se considera el diseño de fun-
ciones de multiplicación, suma BCD, comparación y más variables de
estado de proceso. Es necesario, en esta instancia, dimensionar el sis-
tema. Para los casos que se plantea a continuación, se empleará una
ALU de 8 bits.

2.5.1. Multiplicación binaria.

2.5.1.1. Multiplicación binaria empleando sumadores.

Para diseñar un multiplicador es útil escribir una multiplicación binaria


como normalmente se hace manualmente con factores decimales. En el
caso de los números binarios, no es necesaria una multiplicación de dí-
gitos: si el dígito de interés en el multiplicador es 1, el producto parcial
es simplemente el multiplicando; si, por el contrario, el bit del multipli-
cador es 0, entonces el producto parcial es 0.

Ej. 2.1: Considérese el siguiente ejemplo de multiplicación binaria.

Multiplicando 1 0 1 0 * 1 1 0 1 Multiplicador
1 0 1 0
0 0 0 0
1 0 1 0
1 0 1 0
1 0 0 0 0 0 0 1 0 Producto

El diseño para el primer producto parcial se obtiene así: el bit menos


significativo (lsb) del multiplicador determina el paso o no del multipli-
cando al producto parcial, es decir:

Figura 2. 12 - Primer producto parcial: multiplicando x lsb multiplicador

La materialización se logra mediante sumadores


completos de un bit:

Figura 2. 13 - Sumador completo de 1 bit

Ing. Marcelo Ramírez M. Página 37


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

La regla de control es la siguiente:

Figura 2. 14 - Regla de control para el multiplicador binario

El producto final es: P7P6P5P4P3P2P1P0

Entonces:

Figura 2. 15 - Multiplicador binario de 4 bits

Un ejercicio de rigurosidad teórica interesante para el lector es compro-


bar que el producto de dos números tiene el tamaño combinado de am-
bos factores, en número de dígitos, en cualquier sistema numérico.

2.5.1.2. Multiplicación binaria tabular.

Una alternativa de implementación es el uso de una ROM.

Figura 2. 16 - ROM como multiplicador

Los factores se combinan linealmente para formar la dirección de me-


moria donde se encuentra el producto. Por ejemplo: 5x9 en binario es:
0101x1001 y corresponde a la dirección de la ROM 5916 o 59h (recuér-

Ing. Marcelo Ramírez M. Página 38


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

dese la sencillez de conversión de binario a hexadecimal). En esa posi-


ción de memoria se almacena el producto en binario, aquí expresado en
hexadecimal por simplicidad: 5hx9h=2Dh=00101101b.

La tabla completa de multiplicación de números de 4 bits contiene 256


productos. Debido a la repetición de productos, 166 en total, se cuenta
con 90 valores únicos y diferentes entre sí. El ahorro en cantidad de
productos diferentes llevaría a establecer un esquema de conmutación
de factores para mantenerlos en cierto orden conveniente sin importar
su combinación original; ello añadiría una complejidad excesiva e inne-
cesaria.

La solución de almacenar la tabla completa en una ROM deriva en un


diseño rápido y económico. Además, el tiempo de retardo de propaga-
ción es menor que la implementación mediante sumadores.

El diseño de la ALU, con la adición de un bloque de multiplicación, se


muestra a continuación; en este caso se obtiene una ALU de 8 bits y
nótese que las entradas al multiplicador son de 4 bits (x3:0 y y3:0). Asi-
mismo nótese el redimensionamiento del multicanalizador.

Figura 2. 17 - ALU con multiplicación

Es posible extender la idea a multiplicadores de mayor capacidad. Existe


literatura muy interesante sobre diseño de multiplicadores binarios de
alto desempeño.

Ing. Marcelo Ramírez M. Página 39


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.5.2. Sumador BCD.

La suma de dígitos BCD permite calcular sumas en base decimal sin ne-
cesidad de conversión numérica posterior, por eso es interesante incluir
esta funcionalidad en la ALU.

Al aplicar dos dígitos BCD a un sumador binario de 4 bits el resultado


puede tener cualquier combinación de 4 bits. Si la suma está entre 0 y
9 la suma BCD es correcta. Si el resultado está entre 10 y 15, entonces
necesita corrección para ajustarse a BCD. Si el resultado supera 15, en-
tonces el acarreo (aquí denominado H) en 1 también indica que se re-
quiere corrección. En resumen, se necesita corrección cuando:

 H=1 debido a que >15, o cuando

 9<  15, o sea, algunos bits de la suma son: 

Siendo bc es el bit indicador de corrección, lo anterior se expresa como:

bc  H   3   2    3   1  Ec. 2. 1

La corrección consiste en sumar el valor 6 (01102) al resultado. Si no


se requiere corrección entonces no se suma valor alguno. Sin embargo,
debido a que la corrección implica el uso de un sumador, en el caso de
que no se necesite corrección se sumará el valor 0 (00002).

Para ello se puede aprovechar el bit de corrección y establecer una su-


ma con un sumando de corrección variable. El valor de corrección está
condicionado al indicador, entonces: corrector  0bcbc02 (¡las ventajas
de manipular números binarios!).

Todo lo anterior se traduce en el siguiente diseño:

Figura 2. 18 - Ajuste decimal de la suma

Por simplicidad los acarreos de entrada son omitidos. Si bien el acarreo


de entrada del primer sumador puede ser variable, el correspondiente al

Ing. Marcelo Ramírez M. Página 40


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

segundo sumador debe estar en cero. El esquema puede simplificarse


de la siguiente manera:

Figura 2. 19 - Diagrama simplificado ADA

Se destaca el acarreo del bit 3 al bit 4 (H en la Fig. 2.18), también co-


nocido como semiacarreo o acarreo auxiliar, ya que participa en la de-
terminación de la corrección. También se destaca el nuevo nombre del
sumador de corrección: ADA (Ajuste Decimal de la Adición).

Se puede extender el concepto a un sumador BCD empaquetado de 8


bits, por subdivisión del sumador de 8 bits en dos partes de 4 bits cada
una. El esquema final queda así:

Figura 2. 20 - Esquema completo ADA 8 bits

El lector, a manera de ejercicio, puede redactar una descripción de la


estructura y/o completar el diagrama. Es imposible dejar de notar la
presencia de los tres acarreos, C, D y H, que proporcionan mucha in-
formación sobre la operación de suma.

La idea se puede extender a n bits. Un diagrama más simple se muestra


a continuación:

Figura 2. 21 – Sumador y subsistema ADA completo simplificado

Ing. Marcelo Ramírez M. Página 41


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

El subsistema ADA puede ser incluido en la ALU como un nuevo bloque,


para ello el esquema simplificado puede ser redistribuido como se
muestra en la figura 2.22.

Figura 2. 22 - ADA esquematizado como subsistema sumador BCD

La ALU se modifica correspondientemente para incluir el bloque suma-


dor BCD.

Figura 2. 23 - ALU modificada

Ing. Marcelo Ramírez M. Página 42


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

En microprocesadores que cuentan con ajuste decimal, esta funcionali-


dad está documentada como un subsistema auxiliar de la ALU o, senci-
llamente, incorporada en ésta.

Figura 2. 24 - ALU con ajuste decimal

Algunos procesadores actuales aún mantienen la función de ajuste de-


cimal para 8 bits pero no han incorporado diseños de suma BCD para
16, 32 o 64 bits.

2.5.3. Variables de estado adicionales.

Hasta ahora se cuenta con tres variables de estado, también llamadas


“banderas”: el acarreo C, el acarreo auxiliar H y el acarreo decimal. Es
posible contar con más variables de estado que arrojan aún más infor-
mación sobre la más reciente operación, ejecutada en la ALU, que los
afectó.

2.5.3.1. Detector de cero.

Es posible detectar que un resultado de la ALU es cero mediante una


compuerta OR negada:

Figura 2. 25 - Detector de cero

2.5.3.2. Detector de número negativo.

El bit más significativo del resultado determina el signo del valor, esto
es: N=r7.

 N  0  R es positivo
si 
N  1  R es negativo

Ing. Marcelo Ramírez M. Página 43


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Es necesario recordar que la UBC no tiene noción de números signados;


los datos son, para ella, un conjunto homogéneo de bits cuyo orden,
incluso, tampoco es de su incumbencia. El concepto de número signado
está en la mente del operador del sistema y la UBC es sólo un sistema
electrónico digital.

Por ejemplo, se observa a una persona que está sumando, en papel,


dos números como en el caso siguiente:

483
+ 736

No es posible saber si está haciendo una suma de dos números positi-


vos o si, en realidad, está haciendo una resta de:

483
- 264

El número 736 es el complemento a 10 de 264.

2.5.3.3. Detector de exceso o desborde (overflow).

El acarreo es el indicador adecuado para detectar desborde en las ope-


raciones aritméticas entre números no signados. Sin embargo, para el
caso de los números signados es necesario encontrar otro detector de
desborde.

El desborde en los números sin signo ocurre cuando el resultado excede


el tamaño de la palabra de datos del sistema, lo cual se observa tam-
bién al comprobar que el resultado está fuera del rango de representa-
ción. Para números de 8 bits el rango de representación es [0,255] y
para números de 16 bits es [0,65535]. Para el caso de números signa-
dos de 8 bits, el rango es [-128,127]. Para números signados de 16
bits, el rango de representación es [-32768,32767].

La bandera C, en el caso de números signados, no aporta información


decisiva. Por ejemplo, para números signados de 8 bits, el lector puede
comprobar que 127+2=129 con C=0 y que -128-1=-129 con C=1. En
ambos casos existe desborde porque el resultado excede el rango de
representación.

Existen dos situaciones de desborde con números signados: la suma y


la resta. Considérese, por ejemplo, dos números signados de 8 bits y un
resultado, que puede derivar de una suma o de una resta, de la forma:

a7 a6 a5 a4 a3 a2 a1 A0
+/- b7 b6 b5 b4 b3 b2 b1 B0
-------------------------------------------
r7 r6 r5 r4 r3 r2 r1 r0

Ing. Marcelo Ramírez M. Página 44


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

En estas condiciones, debe existir coherencia entre los signos de los


operandos y el resultado. Por ejemplo, la suma de dos operandos con
signos iguales debe arrojar un resultado con el mismo signo. En caso de
no existir una correspondencia de los signos, entonces ocurre un des-
borde, es decir, el resultado de la operación excede el rango de repre-
sentación de los números signados. La situación completa se resume en
la siguiente tabla:

# Operación a7 b7 r7 Desborde
1 Suma 0 0 0 No
2 Suma 0 0 1 Sí
3 Suma 0 1 X No
4 Suma 1 0 X No
5 Suma 1 1 0 Sí
6 Suma 1 1 1 No
7 Resta 0 0 X No
8 Resta 0 1 0 No
9 Resta 0 1 1 Sí
10 Resta 1 0 0 Sí
11 Resta 1 0 1 No
12 Resta 1 1 X No
Tabla 2. 6 - Lógica del exceso (X=0 o 1)

En el caso de la suma de dos números signados de diferente signo,


nunca existirá desborde, así que r7 puede tener cualquier valor. Igual-
mente, en el caso de la resta de dos números del mismo signo, el resul-
tado puede ser positivo o negativo, entonces no existe desborde.

Se observa que las combinaciones #2 y #7 son similares, sin embargo


existe desborde en el caso de la suma y no así en el caso de la resta. Es
necesario entonces incorporar una variable que discrimine ambas ope-
raciones. Se designa a la variable de detección de desborde con V.

Sea SR una señal de control que determine la operación, es decir:

0 ; en caso de suma
SR  
1; en caso de resta

Al revisar las palabras de control de la tabla 2.3, se encuentra que, para


las funciones del subsistema aritmético de la ALU (recuerde la UBC):

S4 S3 S2 S1 S0 FUNCIÓN
1 1 0 0 0 Sumar
1 1 0 1 1 Restar y de x
Tabla 2. 7 – Diferencia entre suma y resta

En toda la tabla 2.3, sólo la suma y la resta tienen a S4 y S3 en 1 simul-


táneamente y basta S1 o S0 para discriminar ambas, por tanto:

Ing. Marcelo Ramírez M. Página 45


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

0 ; en caso de suma
SR  S4  S3  S0   Ec. 2. 2
1; en caso de resta

Finalmente, de la tabla 2.6 se obtiene:

V  a7  b7  r7  a7 b7 r7   SR  a7b7   r7  SR Ec. 2. 3

V  a7  b7  r7  a7 b7 r7   SR  a7  b7  a7  b7   r7  SR Ec. 2. 4

El diagrama lógico resultante es el siguiente:

Figura 2. 26 - Detector de exceso

2.5.3.4. Detector de paridad.

Un bit de paridad es un dígito binario que se añade a un conjunto de


bits de información para asegurar que el número de unos (1) sea par o
impar. El uso del bit de paridad es la técnica más simple de detección
de errores, principalmente aplicada a la transmisión binaria.

Cuando la cantidad total de bits en 1, incluido el bit de paridad, es par,


se dice que éste es de paridad par. Consiguientemente, si la cantidad
total de bits en 1 es impar, incluido el bit de paridad, éste es llamado
bit de paridad impar.

La función OR exclusivo (XOR) es perfecta


para el caso de paridad par.

Figura 2. 27 - Detector de paridad par

Ing. Marcelo Ramírez M. Página 46


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Y la función OR exclusivo negado (XNOR) es apta para detectar la pari-


dad impar:

Figura 2. 28 - Detector de paridad impar

2.5.4. Comparación.

Una función muy interesante y de una trascendencia notoria en la


computación es la comparación, operación que es la base fundamental
de la inteligencia computacional (aspecto sobre el cual se comentará
más adelante).

Es posible diseñar un comparador combinacional o un comparador se-


cuencial, sin embargo, al contar con un variado conjunto de indicadores
o banderas, no es necesario incorporar un nuevo elemento de cálculo
en la ALU sino más bien una lógica de comparación basada en las ban-
deras de estado de proceso.

La comparación numérica es, básicamente, una resta entre dos núme-


ros x e y. Dependiendo de la naturaleza de los números (signados o
no), se emplea diferentes subconjuntos de banderas.

En la tabla a continuación se resume los estados de las banderas que


reflejan la condición resultante de una operación de comparación aso-
ciada a operadores relacionales. Los estados marcados con “x” indican
que la variable no interviene en la condición (no importa).

x y Condición re-
# Naturaleza C Z N V
sultante
1 No signados = 1 1 X X C  Z 1
2 No signados > 1 0 X X C  Z 1
3 No signados < 0 0 X X C  Z 1
4 Signados = X 1 0 0 Z 1
5 Signados +>+ X 0 0 0
6 Signados +>- X 0 0 0
Z  NV   1
7 Signados +>- X 0 1 1
8 Signados ->- X 0 0 0
9 Signados +<+ X 0 1 0
10 Signados -<+ X 0 1 0
Z  NZ   1
11 Signados -<+ X 0 0 1
12 Signados -<- X 0 1 0
Tabla 2. 8 - Estados de banderas y condiciones relacionadas

Ing. Marcelo Ramírez M. Página 47


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

La igualdad en una comparación por resta se refleja en la bandera Z,


tanto para números signados como para no signados. Sin embargo, con
los no signados, la desigualdad se determina analizando C y Z. Con los
números signados es necesario considerar Z, N y V.

Se alienta al lector a aplicar un análisis similar para obtener condiciones


emergentes de operadores relacionales compuestos:  y  , tanto para
números con signo como para números sin signo (ver ejercicio #9).

2.5.5. ALU + banderas.

Al consolidar los subsistemas detectores en el diagrama de la ALU se


obtiene el siguiente esquema:

Figura 2. 29 - ALU + banderas

Ing. Marcelo Ramírez M. Página 48


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Los subsistemas de detección pueden integrarse en la ALU de tal forma


que se puede emplear un diagrama simplificado.

Figura 2. 30 - Diagrama simplificado ALU y banderas

2.6. PALABRA DE ESTADO.


Es interesante considerar que algunas banderas de estado se vean afec-
tadas por solamente algunas operaciones de la ALU. Por ejemplo, las
operaciones leer A y leer B no deberían afectar a ninguna bandera
porque, de hecho, solamente transfieren información de la entrada a la
salida.

Es perfectamente debatible que las transferencias citadas afecten a las


banderas de paridad y/o cero, sin embargo el criterio podría basarse en
que las banderas deben reflejar el estado de la última (es decir, la más
reciente) operación ejecutada por la ALU.

2.6.1. Operaciones lógicas.

Las operaciones lógicas bien podría afectar a las banderas de signos, de


cero y de paridad pues, por ejemplo, el empleo de máscaras y opera-
ciones lógicas sirve para determinar si uno o más bits del resultado son
cero.

En tal caso las banderas de acarreo (C) y acarreo auxiliar (H) se verían
afectadas debido a que los valores de proceso alimentan simultánea-
mente a los bloques de funciones lógicas y a la UBC. Por ello conviene,
más bien, ajustar las variables H y C a un valor fijo que podría ser cero.

Ing. Marcelo Ramírez M. Página 49


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

2.6.2. Operaciones aritméticas.

Las operaciones aritméticas de suma y resta afectan a todas las bande-


ras. Las operaciones de incremento y decremento afectan a todas las
banderas excepto al acarreo, debido a que una operación de este tipo
podría generar una transición de un número negativo (-1) a uno neutro
(0) y viceversa. En este caso el acarreo carece de significado práctico y
no debe ser tomado en cuenta.

Para que el acarreo no cambie de estado durante el proceso más bien


conviene ajustarlo a un valor fijo, por ejemplo, cero.

2.6.3. Palabra de estado de proceso.

Finalmente, la tabla funcional de la ALU puede expresarse de la manera


que se muestra a continuación.

Operación Palabra de estado


Código de
(abreviatura Descripción de la función
operación N Z V H P C
mnemónica)
0 clr 0 1 0 0 0  Cero aL Resultado
1 leer a       LEER dato A a la salida
2 leer b       LEER dato B a la salida
3 neg       NEGativo de a
4 not       NOT a
5 and    0  0 AND entre a y b
6 or    0  0 OR entre a y b
7 xor    0  0 XOR entre a y b
8 add       ADicionar Datos a y b
9 sub       SUBstraer b de a
A inc       INCrementar a
B dec       DECrementar a
Tabla 2. 9 - ALU y estados de banderas

Donde:

 = la bandera adopta el valor según al estado de la operación.


 = la bandera no cambia.

Según lo anterior, algunos valo-


res de banderas deben reflejar el
efecto de la operación, de tal
forma que el esquema de control
debe ser:

Fig. 2. 1 - Control de bandera

Ing. Marcelo Ramírez M. Página 50


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Si la señal de control (ctl) es 0, entonces se fuerza la bandera a cero.


Si ctl es 1, la bandera refleja el efecto de la operación.

En el capítulo 3 se verá en detalle cómo se controla cada bandera indi-


vidualmente y la asociación de todas las banderas en una sola palabra
de estado de proceso.

2.7. EJERCICIOS.
1. Un diagrama de temporización para la ALU codificada es co-
mo se ve en la figura:

Fig. 2. 2 - Temporización de la ALU codificada

Determine todos los tiempos que contribuyen al tiempo de


ejecución que es, en esencia, el retardo del sistema combina-
cional.

2. Diseñe un registro de desplazamiento de 8 bits con capacidad


de desplazamiento hacia la izquierda. Destaque las señales
de control y de pulso necesarias. Incorpore este subsistema a
la ALU.

3. Elabore el diagrama de la temporización del sistema resultan-


te en el ejercicio #2.

4. Diseñe la palabra de control para la función de multiplicación.

5. Diseñe la palabra de control para la función de suma BCD.

6. Analice el caso de la resta BCD y diseñe una solución comple-


ta.

7. Diseñe los siguientes esquemas de desplazamiento en una


sola etapa usando mux, destacando el subsistema de control.
Considere a C como un bit que contiene, inicialmente, cual-
quier valor. Detalle las señales de control.

Ing. Marcelo Ramírez M. Página 51


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Fig. 2. 3 - Ejercicio 7.a

Fig. 2. 4 - Ejercicio 7.b

Fig. 2. 5 - Ejercicio 7.c

Fig. 2. 6 - Ejercicio 7.d

Fig. 2. 7 - Ejercicio 7.e

Fig. 2. 8 - Ejercicio 7.f

Ing. Marcelo Ramírez M. Página 52


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

Fig. 2. 9 - Ejercicio 7.g

8. Diseñe un acoplamiento entre el subsistema diseñado en el


punto anterior y la ALU desarrollada en el capítulo.

9. Establezca las condiciones, en forma de expresiones boolea-


nas que empleen banderas como variables, para detectar las
comparaciones de la tabla:

x y Condición re-
# Naturaleza C Z N V
sultante
1 No signados 
2 No signados 
3 Signados 
4 Signados 
Tabla 2. 10 - Condiciones con operadores relacionales compuestos

10. Escriba las secuencias descriptivas, empleando la tabla de


funciones de la ALU desarrollada en 2.3, para calcular las ex-
presiones a continuación. Tenga en cuenta la diferencia entre
operadores aritméticos y lógicos, muy evidente con la no-
menclatura y simbología empleadas en este texto. Asimismo,
aplique estrictamente la formalidad sintáctica desarrollada.
Finalmente, genere los listados traducidos a código de opera-
ción.

a) f (x)  4  x  x  2

b) f (w)  3  x  1  3  1  x 

c) f (z)  z  3  0F16

d) f (x, y )  3  x  2  y y  2  x 

e) f (x, y )  x  x  y  y   101010102

f) f (x, y )  x  y   x y  x  y 

g) f (x, y, z)  x  2  y  3  z  4

h) f (x, y, z)  x  2  y   y  3  z   z  4  x 

i) f (x, y, z)  x  y   y  z   z  x   010101012

Ing. Marcelo Ramírez M. Página 53


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Aritmética y Lógica

j) f (alfa, omega)  3  alfa  omega  omega  2  alfa

11. Dibuje un diagrama esquemático en bloques de la ALU desa-


rrollada en 2.3, incluyendo un bloque que concentre todas las
banderas.

12. Investigue la ALU SN74181. Analice su estructura y funciona-


lidad. Compárela con la ALU desarrollada en este libro de tex-
to y emita conclusiones.

13. Investigue otras ALUs y elabore un informe técnico descripti-


vo para cada caso que encuentre.

2.8. PRÁCTICAS DE LABORATORIO.


Para aterrizar las ideas de este capítulo en laboratorio se requiere el di-
seño y la implementación de una ALU, en uno o más de los varios sabo-
res desarrollados, mientras sea económico en tiempo y en recursos. Se
sugiere dos sesiones: el diseño de la ALU y el diseño de las banderas de
estado.

Las guías modelo están disponibles en el anexo de prácticas de labora-


torio.

Ing. Marcelo Ramírez M. Página 54

Você também pode gostar