La Unidad Aritmética - users.dcc.uchile.clclgutier/Capitulo_7.pdf · slt $8, $16, $17 // $8 == 1...

Post on 28-Oct-2020

4 views 0 download

Transcript of La Unidad Aritmética - users.dcc.uchile.clclgutier/Capitulo_7.pdf · slt $8, $16, $17 // $8 == 1...

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

La Unidad Aritmetica

Prof. Rodrigo Araya E.raraya@inf.utfsm.cl

Universidad Tecnica Federico Santa MarıaDepartamento de Informatica

Valparaıso, 1er Semestre 2006

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

1 Introduccion

2 Numeros con signo y sin signo

3 Interrupciones y Excepciones

4 Operaciones Logicas y Desplazamientos

5 Coprocesadores Matematicos

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Introduccion

En este capıtulo profundizaremos la aritmetica computacional

¿Como realmente un computador suma, resta, multiplica ydivide?

Comenzaremos esta discusion retomando algunas ideas derepresentacion de numeros.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Numeros con signo y sin signo

En el lenguaje C, es posible definir numeros con signo y sinsigno:

int x; // con signounsigned int y; // sin signo

Ejemplo de numeros sin signo:

ContadoresDirecciones de memoria

¿Como se comparan numeros sin signo?

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Comparaciones con y sin signo

Deben existir dos instrucciones de comparacion:

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)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Comparaciones con y sin signo

Ejemplo:

sltu $t1, $s2, $s3Interpretacion:

if($s2 < $s3)$t1=1

else$t1=0

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

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 == 1sltu $9, $16, $17 // $9 ==0

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Comparaciones con y sin signo

Tratamiento de Overflow

La maquina MIPS detecta overflow vıa una excepcion.

Las Interrupciones y Excepciones son llamadas no planificadasa subrutinas.

Se denomina interrupcion a eventos externos que causan unallamada a subrutina y excepcion a eventos internos.

Interrupciones y excepciones son eventos que cambian el flujonormal de instrucciones.

Ejemplo de excepcion: overflow, division por cero.

Ejemplo de interrupcion: termino de transferencia de disco,falla de poder, llegada de un paquete de datos por eladaptador de red.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tratamiento de Overflow

¿Que pasa frente a una interrupcion o excepcion?

Salvar el PC+4 en el registro EPC.Transferir el control a direcciones especıficas.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tratamiento de Overflow

¿Como se sabe la razon de la interrupcion o excepcion?

Hay dos metodos:

Algunos procesadores tienen un registro de HW donde quedaregistrada la causa. En este caso se transfiere el control a unadireccion unica.

Interrupciones vectorizadas: la direccion a la cual se transfiereel control contiene la causa. Las direcciones estan separadasen 8 palabras de 32b.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tratamiento de Overflow

Normalmente el vector de interrupcion esta almacenado en lazona baja de memoria (IRQ en PC).

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tratamiento de Overflow

La direccion de la instruccion que produjo overflow se guardaen un registro especial de la CPU llamado EPC (ExceptionProgram Counter).

La instruccion:mfc0 $r1, $epc // Copia EPC en el registro $r1.

Con la instruccion jr se puede volver a la direccion original.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tratamiento de Overflow

En la direccion del vector de interrupciones que corresponde aloverflow, se pone la direccion de la subrutina que atiende eloverflow.

En la maquina MIPS solo causan excepciones de overflow lasinstrucciones aritmeticas con signo.

Como los compiladores de C no consideran overflow, se generacodigo utilizando: addu, addiu, subu.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Operaciones Logicas y Desplazamientos

Ademas de las instrucciones aritmeticas, todos losprocesadores incluyen instrucciones que permiten realizarcorrimientos de bits y operaciones logicas.

Estas instrucciones sirven, por ejemplo para optimizaroperaciones aritmeticas y fundamentalmente para trabajar enbajo nivel programando drivers de dispositivos.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Instruccion de desplazamiento

Corrimiento logico a la izquierda:

sll $t0, $s1, 8 # $t0← $s1 << 8b

La instruccion de corrimiento va llenando con ceros.

sll es una instruccion tipo R

La instruccion srl es equivalente a sll y corre a la derecha.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Instrucciones logicas

And: and $s1, $s2, $s3 # $s1← $s2&$s3

Or: or $s1, $s2, $s3 # $s1← $s2|$s3

Ambas instrucciones son del tipo R.

Existen ademas instrucciones inmediatas: andi y ori.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Creacion de Constantes

La instruccion load upper inmediate (lui) carga una constanteen los 16 bits mas significativos del registro destino.

Ejemplo

Si el contenido inicial de $s1 es:

11111111111111111111111111111100

lui $s1, 3 Queda finalmente:

00000000000000110000000000000000

Los 16 bits menos significativos quedan con ceros. Esto es lomismo que multiplicar por 216.Usando lui y ori se pueden crear constantes en forma rapida.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Coprocesadores Matematicos

Hasta ahora solo hemos visto como se realizan operacionesaritmeticas y operaciones logicas simples, pero ¿Como semultiplica o divide?

Existen dos estrategias:

SoftwareHardware

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Coprocesadores Matematicos

Por software: Generar bibliotecas que mediante algoritmos puedanrealizar operaciones mas complejas en base a lasoperaciones basicas .

Por Hardware: Utilizando unidades llamadas coprocesadores.

¿Cual es mejor?

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Coprocesadores Matematicos

No hay duda que el hardware es mucho mas rapido que elsoftware.

Todos los procesadores modernos incluyen poderososcoprocesadores que permiten realizar multiplicaciones ydivisiones utilizando tiempos muy cortos.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion

¿Como se multiplica por Hardware?

La forma mas simple es utilizar los algoritmos que usamosmanualmente.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Segunda Version

La solucion anterior necesita que el registro multiplicando seade 64b. Esto significa que la ALU tambien debe ser de 64b.

En otras palabras, se usa una ALU de 64b para generar unresultado de 32b.

La segunda version que se presenta solo requiere de una ALUde 32b, pero es necesario hacer modificaciones en el HW.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion (Segunda Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion (Segunda Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tercera Version

Una optimizacion adicional que se puede lograr es ahorrar elregistro Multiplicador (Mulr).

Como este registro es de solo lectura se puede poner en los 32bits menos significativo del registro Producto (Prod).

En la medida que se corre se va ganando espacio.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion (Tercera Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Multiplicacion (Tercera Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division

¿Como se divide por hardware?

Nuevamente, la forma mas simple es la que usamos paradividir a mano.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Segunda Version

La solucion anterior necesita que la ALU sea de 64b.

En lugar de mover el Divisor resulta mas conveniente mover eldividendo.

Una observacion importante es que el primer paso delalgoritmo no puede producir un uno en el cuociente.

Es posible invertir las operaciones de corrimientos y restas.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division (Segunda Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division (Segunda Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Tercera Version

Al igual que la multiplicacion, es posible eliminar el registroCuociente, utilizando la mitad menos significativa delDividendo para almacenar el cuociente.

Como el cuociente se mueve en conjunto con el resto, esnecesario incorporar una fase correctiva al final.

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division (Tercera Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Division (Tercera Version)

RAE La Unidad Aritmetica

ContenidoIntroduccion

Numeros con signo y sin signoInterrupciones y Excepciones

Operaciones Logicas y DesplazamientosCoprocesadores Matematicos

Fin...

Fin...

RAE La Unidad Aritmetica