Post on 28-Oct-2020
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