La Unidad Aritmética

Documentos relacionados
Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

ALU. Unidad aritmético-lógica

Plataformas de soporte computacional: arquitecturas avanzadas,

Algoritmos Multiplicación División

Unidad 3. Facultad de Ciencias Departamento de Electrónica

UNIVERSIDAD DE CORDOBA ESTRUCTURA DE COMPUTADORAS UNIDAD III

El Conjunto de Instrucciones de la Arquitectura Lagarto I

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División

22/03/2012. La división es una de las operaciones menos frecuentes. Revisemos la forma de ejecutarla

Tratamiento de Excepciones en MIPS

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Números con y sin signo Suma y resta Operaciones Lógicas Construyendo una ALU Multiplicación División Punto Flotante

TEMA III: OPERACIONES CON LOS DATOS

Organización procesador MIPS

ARQUITECTURA DE LOS SISTEMAS BASADOS EN MICROPROCESADOR

Componentes Digitales Estructurados

ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN

Práctica 3: Programación en ASM Orga 1

El procesador. Datapath para las instrucciones de brinco

Introducción al lenguaje ensamblador DLX: instrucciones de enteros.

Organización del Computador I Verano. MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy

Tema: Microprocesadores

Estructura de Computadores. 1. Ejercicios Resueltos 1.1. Tema 6. La unidad aritmética y lógica

El repertorio de instrucciones

Ejercicios del tema 4. El procesador

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Organización del Computador I Verano. Aritmética (4 de 5) Basado en el capítulo 4 del libro de Patterson y Hennessy Multiplicaciones y Divisiones

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES 1º I.T.I.G. I.T.I.S.

La Unidad de Control y el Camino de Datos

Guía práctica de estudio 06: Lenguaje binario

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús

Formatos de datos y aritmética de los computadores

Guía práctica de estudio 06: Lenguaje binario

Circuitos electrónicos digitales. Unidades Aritméticas Lógicas. Departamento de Tecnología Electrónica Universidad de Sevilla

Fundamentos de los Computadores Grado en Ingeniería Informática

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Fundamentos de Computadores. Tema 5. Circuitos Aritméticos

Estructura y Tecnología de Computadores II (Gestión y Sistemas)

CICLOS DEL PROCESADOR

Circuitos electrónicos digitales

Ya repasamos el repertorio de instrucciones MIPS, que como observamos, es lo suficientemente completo como para implementar cualquier programa.

INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Implementación de instrucciones para el procesador MIPS de ciclo único.

Tema 3 (I) Fundamentos de la programación en ensamblador

Modelo de von Neumann

Fundamentos y Arquitectura de Computadores (ITTSE UV)

En este capítulo se habla sobre las distintas arquitecturas y algoritmos de multiplicación rápida que se encontraron en la bibliografía.

EXCEPCIONES ARQUITECTURA DEL PROCESADOR II

Laboratorio de Arquitectura de Redes. Operadores y expresiones en lenguaje C

Estructura de los sistemas de cómputo

Informática Ingeniería en Electrónica y Automática Industrial

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Arquitectura del MIPS: Introducción

Organización de Computadoras. Principios de Conjuntos de Intrucciones

Aritmética del computador

FUNCIONAMIENTO DEL ORDENADOR

LOGICA DIGITAL ARITMETICA DE COMPUTADORAS ASPECTOS FUNDAMENTALES 1. FORMA DE REPRESENTAR LOS NUMEROS ( FORMATO BINARIO)

Los números naturales y enteros en el 80X86 y en LAN

REPERTORIO DE INSTRUCCIONES MIPS

TEMA VI DISEÑO DEL PROCESADOR

Arquitectura de Computadores

Tema 7. Entrada / Salida


Fundamentos de los Computadores Grado en Ingeniería Informática

Fundamentos y Arquitectura de Computadores (ITTSE UV)

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA. Notación científica. Hernández Ortiz Cuauhtémoc. Osnaya Medrano Pedro

Arquitectura de Computadores. Resumen para Certamen 2 Por Franco Zuccar

ESCUELA POLITÉCNICA NACIONAL

TEMA 6 UNIDAD ARITMÉTICO LÓGICA

COMPUTADORES SEGMENTADOS (DLX)

Arquitectura Interna del 8088

Práctica 3 - Aritmética del Computador

El procesador. Diseño del control

ESCUELA POLITÉCNICA NACIONAL

Unidad 5 Unidad central de proceso

Lógica Computacional. Aritmética binaria

LABORATORIO DE SISTEMAS MICROPROCESADOS PRÁCTICA N 2 ALGORITMOS ADICIONALES. Revisar algunos algoritmos que se emplearan en prácticas futuras.

4. Aritmética y operadores

4. Aritmética y operadores

Apellidos, Nombre: No se considerarán como válidas las respuestas en las que no se justifiquen los cálculos realizados

Cap 1: Operaciones en Datos

SISTEMAS OPERATIVOS Arquitectura de computadores

Sistemas numéricos -aritmética- Taller de programación

Organización del Computador 1. Sistemas de numeración y representación de la información

Introducción a la arquitectura de computadores

Repaso concepto de programa

1.2.- EL MICROPROCESADOR.

Segundo Parcial Programación en Mikro C PIC16F877

Introducción rápida a la programación (estructurada ) con C++

TEMA 5 JUEGO DE INSTRUCCIONES DE UN COMPUTADOR

Arquitectura de Computadoras

Tema 2: Conceptos básicos. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

El procesador. Datapath y control

Generación de un ejecutable

Ejercicio 1. Considere el siguiente fragmento en ensamblador:

TEMA 1: Conceptos generales. 1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y hexadecimal.

Transcripción:

Prof. Rodrigo Araya E. raraya@inf.utfsm.cl Universidad Técnica Federico Santa María Departamento de Informática Valparaíso, 1 er Semestre 2006

1 2 3 4 5

En este capítulo profundizaremos la aritmética computacional Cómo realmente un computador suma, resta, multiplica y divide? Comenzaremos esta discusión retomando algunas ideas de representación de números.

En el lenguaje C, es posible definir números con signo y sin signo: int x; unsigned int y; Ejemplo de números sin signo: Contadores Direcciones de memoria Cómo se comparan números sin signo? // con signo // sin signo

Comparaciones con y sin signo Deben existir dos instrucciones de comparación: Con signo slt (set on less than) slti (set on less than inmediate) Sin signo sltu (set on less than unsigned) sltiu (set on less than inmediate unsigned)

Comparaciones con y sin signo Ejemplo: sltu $t1, $s2, $s3 Interpretación: if($s2 < $s3) $t1=1 else $t1=0

Comparaciones con y sin signo Ejemplo 2 Si el contenido del registro $16 es: 1111 1111 1111 1111 1111 1111 1111 1100 Y el contenido del registro $17 es: 0000 0000 0000 0000 0000 0000 0000 0001 slt $8, $16, $17 // $8 == 1 sltu $9, $16, $17 // $9 ==0

Comparaciones con y sin signo Tratamiento de Overflow La máquina MIPS detecta overflow vía una excepción. Las son llamadas no planificadas a subrutinas. Se denomina interrupción a eventos externos que causan una llamada a subrutina y excepción a eventos internos. Interrupciones y excepciones son eventos que cambian el flujo normal de instrucciones. Ejemplo de excepción: overflow, división por cero. Ejemplo de interrupción: término de transferencia de disco, falla de poder, llegada de un paquete de datos por el adaptador de red.

Tratamiento de Overflow Qué pasa frente a una interrupción o excepción? Salvar el PC+4 en el registro EPC. Transferir el control a direcciones específicas.

Tratamiento de Overflow Cómo se sabe la razón de la interrupción o excepción? Hay dos métodos: Algunos procesadores tienen un registro de HW donde queda registrada la causa. En este caso se transfiere el control a una dirección única. Interrupciones vectorizadas: la dirección a la cual se transfiere el control contiene la causa. Las direcciones están separadas en 8 palabras de 32b.

Tratamiento de Overflow Normalmente el vector de interrupción está almacenado en la zona baja de memoria (IRQ en PC).

Tratamiento de Overflow La dirección de la instrucción que produjo overflow se guarda en un registro especial de la CPU llamado EPC (Exception Program Counter). La instrucción: mfc0 $r1, $epc // Copia EPC en el registro $r1. Con la instrucción jr se puede volver a la dirección original.

Tratamiento de Overflow En la dirección del vector de interrupciones que corresponde al overflow, se pone la dirección de la subrutina que atiende el overflow. En la máquina MIPS sólo causan excepciones de overflow las instrucciones aritméticas con signo. Como los compiladores de C no consideran overflow, se genera código utilizando: addu, addiu, subu.

Además de las instrucciones aritméticas, todos los procesadores incluyen instrucciones que permiten realizar corrimientos de bits y operaciones lógicas. Estas instrucciones sirven, por ejemplo para optimizar operaciones aritméticas y fundamentalmente para trabajar en bajo nivel programando drivers de dispositivos.

Instrucción de desplazamiento Corrimiento lógico a la izquierda: sll $t0, $s1, 8 # $t0 $s1 << 8b La instrucción de corrimiento va llenando con ceros. sll es una instrucción tipo R La instrucción srl es equivalente a sll y corre a la derecha.

Instrucciones lógicas And: and $s1, $s2, $s3 # $s1 $s2&$s3 Or: or $s1, $s2, $s3 # $s1 $s2 $s3 Ambas instrucciones son del tipo R. Existen además instrucciones inmediatas: andi y ori.

Creación de Constantes Ejemplo La instrucción load upper inmediate (lui) carga una constante en los 16 bits más significativos del registro destino. Si el contenido inicial de $s1 es: 11111111111111111111111111111100 lui $s1, 3 Queda finalmente: 00000000000000110000000000000000 Los 16 bits menos significativos quedan con ceros. Esto es lo mismo que multiplicar por 2 16. Usando lui y ori se pueden crear constantes en forma rápida.

Hasta ahora sólo hemos visto como se realizan operaciones aritméticas y operaciones lógicas simples, pero Cómo se multiplica o divide? Existen dos estrategias: Software Hardware

Por software: Generar bibliotecas que mediante algoritmos puedan realizar operaciones más complejas en base a las operaciones básicas. Por Hardware: Utilizando unidades llamadas coprocesadores. Cuál es mejor?

No hay duda que el hardware es mucho más rápido que el software. Todos los procesadores modernos incluyen poderosos coprocesadores que permiten realizar multiplicaciones y divisiones utilizando tiempos muy cortos.

Multiplicación Como se multiplica por Hardware? La forma más simple es utilizar los algoritmos que usamos manualmente.

Multiplicación

Multiplicación

Segunda Versión La solución anterior necesita que el registro multiplicando sea de 64b. Esto significa que la ALU también debe ser de 64b. En otras palabras, se usa una ALU de 64b para generar un resultado de 32b. La segunda versión que se presenta sólo requiere de una ALU de 32b, pero es necesario hacer modificaciones en el HW.

Multiplicación (Segunda Versión)

Multiplicación (Segunda Versión)

Tercera Versión Una optimización adicional que se puede lograr es ahorrar el registro Multiplicador (Mulr). Como este registro es de sólo lectura se puede poner en los 32 bits menos significativo del registro Producto (Prod). En la medida que se corre se va ganando espacio.

Multiplicación (Tercera Versión)

Multiplicación (Tercera Versión)

División Contenido Cómo se divide por hardware? Nuevamente, la forma más simple es la que usamos para dividir a mano.

División Contenido

División Contenido

Segunda Versión La solución anterior necesita que la ALU sea de 64b. En lugar de mover el Divisor resulta más conveniente mover el dividendo. Una observación importante es que el primer paso del algoritmo no puede producir un uno en el cuociente. Es posible invertir las operaciones de corrimientos y restas.

División (Segunda Versión)

División (Segunda Versión)

Tercera Versión Al igual que la multiplicación, es posible eliminar el registro Cuociente, utilizando la mitad menos significativa del Dividendo para almacenar el cuociente. Como el cuociente se mueve en conjunto con el resto, es necesario incorporar una fase correctiva al final.

División (Tercera Versión)

División (Tercera Versión)

Fin... Contenido Fin...