Capítulo 2 - Unidad Aritmética y Lógica PDF

August 17, 2024 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Capítulo 2 - Unidad Aritmética y Lógica PDF...

Description

FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES

CAPÍTULO 2.

Unidad Aritmética y Lógica

UNIDAD ARITMÉTICA Y LÓGICA

La unidad aritmética y lógica, más conocida por el acrónimo ALU del inglé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 entrada y produce un resultado a la salida. La estrategia básica de este capítulo, para el diseño de una ALU, es incorporar 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

2.1.

Unidad Aritmética y Lógica

FUNCIONES LÓGICAS.

Es imposible no tener en cuenta el uso de funciones lógicas entre variables 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 simplificados 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

2.2.

Unidad Aritmética y Lógica

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 funciones lógicas y de la UBC. Figura 2. 5 - Funciones aritméticas y lógicas

Para combinar las salidas en una sola es necesario emplear n multicanalizadores (en nombre corto, mux) de dimensió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ñales 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 recientemente añadidas. Al tomar en cuenta las observaciones de la sección 1.4.2 es posible contar 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

S3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0

S2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1

S1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0

S0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 1 1

0 0 1 1

1 1 0 0

1 1 0 0

0 1 0 1

1 1

1 1

0 0

1

1

1

1 1

1 1

1 1

1

1

1

C 0 0 0 1 0 1 1 1 0  0   1  1 0  

1 0   1 

R 0 1 -1 0 -1 0 -2 -1 y y+1 -y-1 -y y-1 y -y-2 -y-1 x x+1 x-1 x -x-1 -x

FUNCIÓN constante, borrar salida constante, uno positivo constante, uno negativo constante, borrar salida constante, uno negativo constante, borrar salida constante, dos negativo constante, uno negativo leer y incrementar y complemento a 1 de y, invertir y complemento a 2 de y, negar y decrementar y leer y función compleja complemento a 1 de y, invertir y leer x incrementar x decrementar x leer x complemento a 1 de x, invertir x complemento a 2 de x, negar x

-x-2 -x-1 x+y x+y+1

función compleja complemento a 1 de x, invertir x sumar función compleja

  1 0 x-y-1 función compleja  1 1 x-y restar y de x  0 0 -x+y-1 función compleja  0 1 y-x restar x de y  1 0 -x-y-2 función compleja  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 1 1 1 1 1 0 0 1 1 1

S5 1 1 1 1 1 0 1 0 1 1

1 1

1 1

S4 0 1 0 1 1 0 0 0 1 1

S3 0 0 1 0 0 0 0 0 1 1

S2 0 0 0 1 1 0 0 0 0 0

S1 0 0 0 0 0 0 0 0 0 1

S0 0 0 0 1 0 0 0 0 0 1

C 0 0 0 1  0 0 0 

R 0 x y -x -x-1 xy xy xy x+y x-y

FUNCIÓN constante, borrar salida leer x leer y negar x invertir x x and y x or y x xor y sumar restar y de x

  1 0 0 0 1 x+1 incrementar x  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 permiten 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 bajo 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 palabra 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 mediante 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 operaciones 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 especialmente la palabra de control (S6:0), el descodificador de operaciones 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 disponibles para operaciones adicionales. La tabla funcional codificada se muestra a continuación. Los nombres de las funciones han sido ligeramente simplificados.

C3 0 0 0 0 0 0 0 0 1

C2 0 0 0 0 1 1 1 1 0

C1 0 0 1 1 0 0 1 1 0

1 0 1 0 1 0 Tabla 2. 4

C0 0 1 0 1 0 1 0 1 0

C 0 0 0 1  0 0 0  

FUNCIÓN borrar leer x leer y negar x not x and or xor sumar

0 1 restar  1 0 incrementar x 1 1 0 decrementar x - 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

2.3.1.

Unidad Aritmética y Lógica

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 incorpora una nueva especificación de diseño: se requiere controlar el paso 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 descodificador 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 palabra 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 control, 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 acarreo. 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 embargo el bit de acarreo proviene de la UBC y la selección del mux no lo afecta. Debido a la simultaneidad de ejecución de operaciones en la etapa de cálculo de la ALU y a que los subsistemas son combinacionales, los operandos también afectan a la UBC. Es posible adoptar una convenció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ógico 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 descodificador 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 observació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 descripció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: Código de operación 0 1 2 3 4 5 6 7 8 9 A B

Operación (abreviatura mnemónica) clr leer a leer b neg not and or xor add sub

Variable de estado C 0 0 0 0* 0* 0 0 0 

 

Descripción de la función Cero aL Resultado LEER dato A a la salida LEER dato B a la salida NEGativo de a NOT a AND entre a y b OR entre a y b XOR entre a y b ADicionar Datos a y b SUBstraer b de a

inc INCrementar a 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 ninguna 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 sentencias: 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 mediante la función add. 2. Se reescribe el resultado en la entrada A, se coloca y en la entrada 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 (abreviaturas mnemónicas) a código de operación. El listado descriptivo resultante es:

8 9 4 8 B B B

; calcular f(x,y,z) ; colocar x en A y en B add ; colocar resultado en A y en B sub ; colocar z en A y resultado en not ; colocar resultado en A add ; colocar resultado en A dec ; colocar resultado en A dec ; colocar resultado en A dec ; listo

; R=2x ; R=2x-y B ; R= z ; R=2x-y+ z ; R=2x-y+ z -1 ; R=2x-y+ z -2 ; R=2x-y+ z -3

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

2.4.

Unidad Aritmética y Lógica

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 totalmente 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 lectura;



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



en caso de identificar la palabra leída en la tabla de operaciones, 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 precede al comentario, de tal modo que el traductor reconozca rápidamente el sufijo y recurra a una tabla de directivas que le conduzcan a ejecutar tareas específicas. En forma práctica, para finaIng. 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 directiva: .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 columna de los códigos de operación, la columna de las directivas y nombres de funciones y la columna de los comentarios. Los comentarios que preceden a los nombres de las funciones determinan tareas que debe cumplir el operador en el momento de la operativa.

Ing. Marcelo Ramírez M.

Página 36

FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES

2.5.

Unidad Aritmética y Lógica

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 funciones de multiplicación, suma BCD, comparación y más variables de estado de proceso. Es necesario, en esta instancia, dimensionar el sistema. 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 multiplicador es 0, entonces el producto parcial es 0. Ej. 2.1: Considérese el siguiente ejemplo de multiplicación binaria. Multiplicando

1

1

0

0

1

0

*

1 0

1 0 0

0 0 1 0

1 1 0 1 0 0

1 0 0 0

0 1 0

1 0

Multiplicador

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 multiplicando 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 comprobar que el producto de dos números tiene el tamaño combinado de ambos 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 memoria 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érIng. 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 posició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 innecesaria. 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 propagació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). Asimismo 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

2.5.2.

Unidad Aritmética y Lógica

Sumador BCD.

La suma de dígitos BCD permite calcular sumas en base decimal sin necesidad 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, entonces el acarreo (aquí denominado H) en 1 también indica que se requiere corrección. En resumen, se necesita corrección cuando: 

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



9

1

0

X

X

3

No signados

<

0

0

X

X

4

Signados

=

X

1

0

0

5

Signados

+>+

X

0

0

0

6

Signados

+>-

X

0

0

0

7

Signados

+>-

X

0

1

1

8

Signados

->-

X

0

0

0

9

Signados

+
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF