Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas....

Post on 22-Jan-2016

224 views 0 download

Transcript of Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas....

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

©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.

©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

©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).

©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

©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.

©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

©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.

©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

©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.

©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.

©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

©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

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

Los bloques constructivos de la ALU.

©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

©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

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

Una 1ª ALU de 32 bits para MIPS.

©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

©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

©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