La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón

Presentaciones similares


Presentación del tema: "Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón"— Transcripción de la presentación:

1 Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón

2 ALU Circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos números. Un microprocesador moderno (y los mainframes) pueden tener múltiples núcleos, cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU.

3 Símbolo esquemático para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida. Lo que es la unidad de control, ajusta los circuitos que indican a la ALU qué operaciones realizar.

4 Estructura La ALU se compone básicamente de: Circuito Operacional, Registros de Entradas, Registro Acumulador y un Registro de Estados, conjunto de registros que hacen posible la realización de cada una de las operaciones. Circuito Operacional.- contiene los circuitos electrónicos necesarios para la realización de las operaciones con los datos procedentes de los Registros de Entradas, en las cuales se almacenan los operandos y a través de un selector de operaciones comandadas por las micro ordenes procedentes del secuenciador de la Unidad de Control, la misma que concretará la operación correspondiente en ejecución.

5 Registros de Entrada.- Las variables de entrada suministradas al ordenador. Registro Acumulador.- Esta almacena los resultados de las operaciones ejecutadas por el Circuito Operacional, también se encuentra conectado con los Registros de Entradas como una realimentación para realizar las operaciones encadenadas, por supuesto que se encuentra conectado con el bus de datos del sistema con el propósito de enviar los resultados a la Memoria principal o (RAM) o a algún periférico.

6 Registro de Estados.- Se conoce por registro de estados a un grupo de bits que utiliza un procesador para orientarse durante las operaciones en la ALU. Cada modelo de procesador tiene sus propios registros de estados pero los más comunes son: Z = Zero flag. el resultado es cero N = Negative flag. el resultado es negativo V = Overflow flag. el resultado supera el número de bits que puede manejar la alu P = Parity flag. I = Interrupt flag. C = Carry flag.

7 Estructura de una ALU simple de 2 bits

8 Funcionamiento Operaciones simples: -Operaciones aritméticas de números enteros -Operaciones lógicas de bits -Operaciones de desplazamiento de bits Los desplazamientos pueden ser interpretados como multiplicaciones o divisiones por 2.

9 Operaciones complejas: Diseñar una ALU muy compleja que calcule una operación en específico en un solo paso. Esto es llamado cálculo en un solo ciclo de reloj. Diseñar una ALU compleja que calcule dicha operación con varios pasos, es llamado cálculo interactivo, y generalmente confía en el control de una unidad de control compleja con microcódigo incorporado.

10 Diseñar una ALU simple en el procesador y vender un procesador separado que es llamado coprocesador o unidad de coma flotante. Emular la existencia del coprocesador, que es llamado emulación por software. Decir a los programadores que no existe coprocesador y no hay emulación.

11 Para que el operador realice la operación, los operandos se llevan a la ALU y se guardan en unos registros denominados registros de trabajo. El resultado de la operación se guarda también en un registro antes de ser llevado a la memoria o a la Unidad de Entradas y Salidas. Frecuentemente se utiliza un mismo registro para guardar uno de los operandos y, también, el resultado, denominado registro Acumulador.

12 Operaciones con datos de memoria y registros Para que la unidad aritmética y lógica sea capaz de realizar una operación, se le deben proporcionar los siguientes datos: 1. El código que indique la operación a efectuar. 2. La dirección de la celda donde está almacenado el primer sumando. 3. La dirección del segundo sumando implicado en la operación. 4. La dirección de la celda de memoria donde se almacenará el resultado.

13 Tipos de registros -Los registros de datos son usados para guardar números enteros. -Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. -Los registros de propósito general pueden guardar tanto datos como direcciones. -Los registros de coma flotante son usados para guardar datos en formato de coma flotante. -Los registros constantes tienen valores creados por hardware de sólo lectura. -Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.

14 Unidad de control Es la que realiza el secuenciamiento del programa que se está ejecutando; eso es, la ejecución de la instrucción actual y la obtención de la siguiente. Su función es obtener las señales de temporización y control para ejecutar según los datos que entran, determinando el funcionamiento de la CPU y su comunicación interna. La unidad de control (UC) interpreta y ejecuta las instrucciones almacenadas en la memoria principal y genera las señales de control necesarias para ejecutarlas.

15 El operador, además de calcular el valor de la operación, modifica el registro de estado según el resultado de la operación. Así, si el resultado es un valor negativo, se modifica un bit de dicho registro, llamado bit negativo o bit N, poniéndose a 1; por el contrario, el bit N permanecerá en estado 0 mientras el contenido del acumulador no sea negativo. De igual forma indicara la ALU a la UC si el resultado ha sido cero, o si ha producido algún acarreo, etc.

16 Diseño de una ALU en HDL Usando VHDL como el lenguaje de programación se tiene para una ALU de operaciones simples: nibble1=A nibble2=B

17 library IEEE; use IEEE. STD_LOGIC_1164. ALL; use IEEE. NUMERIC_STD
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity ALU_VHDL is port (Nibble1, Nibble2 : in std_logic_vector(3 downto 0); Operation : in std_logic_vector(2 downto 0); Carry_Out : out std_logic; Flag : out std_logic; Result : out std_logic_vector(3 downto 0) ); end entity ALU_VHDL; architecture Behavioral of ALU_VHDL is signal Temp: std_logic_vector(4 downto 0); begin process(Nibble1, Nibble2, Operation, temp) is begin Flag <= '0‘; case Operation is when "000" => -- res = nib1 + nib2, flag = carry = overflow Temp <= std_logic_vector((unsigned("0" & Nibble1) + unsigned(Nibble2))); Result <= temp(3 downto 0); Flag <= temp(4); when "001" => -- res = |nib1 - nib2|, flag = 1 iff nib2 > nib1

18 if (Nibble1 >= Nibble2) then Result <= std_logic_vector(unsigned(Nibble1) - unsigned(Nibble2)); Flag <= '0‘; else Result <= std_logic_vector(unsigned(Nibble2) - unsigned(Nibble1)); Flag <= '1‘; end if; when "010" => Result <= Nibble1 and Nibble2; when "011" => Result <= Nibble1 or Nibble2; when "100" => Result <= Nibble1 xor Nibble2; when "101" => Result <= not Nibble1; when "110" => Result <= not Nibble2; when others => -- res = nib1 + nib2 + 1, flag = Temp <= std_logic_vector((unsigned("0" & Nibble1) + unsigned(not Nibble2)) + 1); Result <= temp(3 downto 0); Flag <= temp(4); end case; end process; end architecture Behavioral;

19 Símbolo generado


Descargar ppt "Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón"

Presentaciones similares


Anuncios Google