aritmética y computadores. refresco de aritmética binaria. operaciones aritméticas y lógicas....

20
Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División Punto Flotante

Upload: silvestre-rozario

Post on 22-Jan-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

Aritmética y Computadores.

Refresco de aritmética binaria.Operaciones aritméticas y lógicas.Construcción de una ALU para MIPS.Multiplicación y DivisiónPunto Flotante

Page 2: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Enteros sin-signo.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1

(0 x 231)+...+(1 x 24)+(1 x 23)+(1 x 22)+(1 x 21)+(1 x 20) = 2710

Byte en Mem[1248]Byte Alto

Byte en Mem[1249]...

Byte en Mem[1250]...

Byte en Mem[1251]Byte bajo

Word 32

Supondremos una configuración big endian para MIPS.

Page 3: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Enteros con-signo: Complemento a 2.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0

(-1 x 231)+(1 x 230)+(1 x 229)+(1 x 228)+ ... +

(1 x 22) + (1 x 21) + (1 x 20) = -4decimal

Byte en Mem[1248]Byte Alto

Byte en Mem[1249]...

Byte en Mem[1250]...

Byte en Mem[1251]Byte bajo

Word 32

Bit de signo

Page 4: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Las direcciones de memoria son enteros sin-signo.

Las direcciones de memoria en la ISA de MIPS son enteros no negativos de ancho 32 bits:

Los representamos como enteros sin-signo y su ancho es de 32 bits.

Por tanto, la primera dirección de memoria es la 0. La última es la 232-1. No todos los sistemas basados en MIPS tienen una memoria

principal tan amplia: ¡4 Gbytes!

Recordemos los siguientes aspectos importantes: Cada dirección de memoria está asociada a un byte (8 bits). Cada Word está formada por cuatro bytes, o sea, cada word se

extiende a lo largo de 4 direcciones de memoria. Puesto que cada uno de los bits de una word tiene su peso, el

orden en el que se almacenan los bytes de una word en direcciones de memoria sucesivas afecta al valor almacenado.

MIPS comumente emplea el ordenamiento de bytes extremista superior (Big-endian).

Page 5: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Comparación con-signo y sin-signo.

Al comparar dos enteros de signo distinto, el resultado de la comparación depende del algoritmo empleado.

Ejemplo:

$s0 = 1111 1111 1111 1111 1111 1111 1111 1111 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001

¿Qué valor aparece en $t0 después de ejecutar la sig. instrucción?slt $t0, $s0, $s1

¿Qué valor aparece en $t0 después de ejecutar la sig. instrucción?sltu $t0, $s0, $s1

Page 6: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

sltu efectúa una comparación de datos sin-signo (Unsigned).

El resultado de una comparación con signo puede ser distinto del producido por una comparación sin signo:

$s0 = -1 (Con-signo) = 4.294967.295 (Sin-signo)

$s1 = 1 (Con-signo) = 1 (Sin-signo)

Set-on-less-than (Signed).

slt $t0, $s0, $s1 En $t0 aparece un 1.

Set-on-less-than (UNSigned).

sltuu $t0, $s0, $s1 En $t0 aparece un 0.

Page 7: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Más variedades de slt.

set-on-less-than

CON SIGNO

SIN-SIGNO

sltslt $t0, $s0, $s1

sltislti $t0, $s0, Imm

sltusltu $t0, $s0, $s1

sltiusltiu $t0, $s0, Imm

Page 8: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

lb y lbu: Dos formas de cargar un byte desde memoria.

00000000

10101010 1240

1 2 4 1

00000000

00000000 1 2 4 2

1 2 4 3

00000000

11111111 1 2 3 6

1 2 3 7

00000000

00000000 1 2 3 8

1 2 3 9

00000000

11111111 1 2 4 4

1 2 4 5

00000000

00000000 1 2 4 6

1 2 4 7

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0

$s0

$s0

lbu $s0, 1240Ÿ Load Byte UnsignedŸ Extensión con cer os

lb $s0, 1240Ÿ Load ByteŸ Extensión del signo.

Page 9: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Nuevas instrucciones de suma y resta.

adduaddu $t0, $s0, $s1addiuaddiu $t0, $s0, 100

SIN SIGNONo se detecta over fl ow.

addadd $t0, $s0, $s1addiaddi $t0, $s0, 100

C O N-SIGNOSí se detecta over fl ow

SUMA

subusubu $t0, $s0, $s1

SIN SIGNONo se detecta over fl ow.

subsub $t0, $s0, $s1

C O N-SIGNOSí se detecta over fl ow

RESTA

Page 10: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Instrucciones de desplazamiento lógico.

Desplazar todos los bits de un registro a la vez.

A la izquierda (Hacia pesos superiores) Cada desplazamiento a la izquierda equivale a una

multiplicación por 2.

A la derecha (Hacia pesos inferiores). Cada desplazamiento a la derecha equivale a una división por 2.

Cada desplazamiento llena el espacio vacío producido con un cero.

sll $t2, $s0, 8 ; $t2 = $8 << 8 Desplazar $s0 8 veces a la izquierda y poner el resultado en

$t2.

srl $t2, $s0, 8 ; $t2 = $8 >> 8 Desplazar $s0 8 veces a la derecha y poner el resultado en $t2.

Page 11: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Instrucciones lógicas.

AND Efectúa un AND lógico de los dos registros fuente.

and $t0, $t1, $t2 ; $t0 = $t1 & $t2 Evaluar $t1&$t2 y poner el resultado en $t0.

OR Efectúa un OR lógico de los dos registros fuente.

or $t0, $t1, $t2 ; $t0 = $t1 | $t2 Evaluar $t1|$t2 y poner el resultado en $t0.

Page 12: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Instrucciones lógicas: Más variedades.

andaddu $t0, $s0, $s1andiandi $t0, $s0, 0x000000FF

AND

oror $t0, $s0, $s1or iori $t0, $s0, 0x11111111

O R

O peraciones lógicas

Page 13: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Una ALU para el µP MIPS.

En general una ALU efectúa: Operaciones aritméticas

Suma Resta Multiplicación División Cambio de signo. Comparación.

Operaciones lógicas AND OR XOR NOT

Page 14: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Los bloques constructivos de la ALU.

Page 15: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

La celda básica AND/OR y el sumador completo de 1 bit.

0

1Resulta do

O per a ción

b

a

+

a

b

Car r yIn

Car r yO ut

Sum

Page 16: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

ALU de 1 bit: AND, OR y suma.

+

0

1

Resulta do

O per a ción

b

a

2

Car r yO ut

Car r yIn

Page 17: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Una 1ª ALU de 32 bits para MIPS.

Page 18: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Celda capaz de restar (R).

+

0

1

Resulta do

O per a ción

b

a

2

Ca r r yO ut

Ca r r yIn

0

1Resulta do

Binver t

Page 19: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

Celda con overflow y set.

+

0

1

Resultado

Operación

b

a

2

CarryOut

CarryIn

0

1

Binvert

Detector de desbordamiento Desbordamiento

Set

Less

Page 20: Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División

©2003, José Mª Foces Morán.

ALU de 32 bits: 31 celdas (R) y 1 celda (os)

ALU ResultZero

Overflow

a

b

ALU operation

CarryOut