Capítulo 2 - Unidad Aritmética y Lógica PDF
August 17, 2024 | Author: Anonymous | Category: N/A
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 xy xy xy 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