Aritmética y Computadores. - ¡Bienvenido a paloalto.unileon.es!

Download Report

Transcript Aritmética y Computadores. - ¡Bienvenido a paloalto.unileon.es!

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

Enteros sin-signo. Supondremos una configuración big endian para MIPS.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 0 0 0 0 0

Byte en Mem[1248] Byte Alto

0 0 0 0 0 0 0 0

Byte en Mem[1249] ...

0 0 0 0 0 0 0 0

Byte en Mem[1250] ...

9 0

Word 32

8 0 7 0 6 5 4 3 2 1 0 0 1 1 0

Byte en Mem[1251] Byte bajo

1 0 1

(0 x 2 31 )+...+(1 x 2 4 )+(1 x 2 3 )+(1 x 2 2 )+(1 x 2 1 )+(1 x 2 0 ) = 27 10

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

Enteros con-signo: Complemento a 2.

Bit de signo

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10

1

1 1 1 1 1

Byte en Mem[1248] Byte Alto

1 1 1 1 1 1 1 1

Byte en Mem[1249] ...

1 1 1 1 1 1 1 1

Byte en Mem[1250] ...

9 1

Word 32

8 1 7 1 6 5 4 3 2 1 1 1 1 1 1

Byte en Mem[1251] Byte bajo

0 0 0

( -1 x 2 31 )+(1 x 2 30 )+(1 x 2 29 )+(1 x 2 28 )+ ... + (1 x 2 2 ) + (1 x 2 1 ) + (1 x 2 0 ) = -4 decimal

©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 2 32 -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 distinto del producido por una puede ser 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).

sltu $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 slt

slt $t0, $s0, $s1

slti

slti $t0, $s0, Imm

SIN-SIGNO sltu

sltu $t0, $s0, $s1

sltiu

sltiu $t0, $s0, Imm

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

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

$s0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 8 1 7

1

6

0

5

1

4

0

3

1

2

0

1

1

0

0

Ÿ Ÿ

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

Ÿ Ÿ

lbu $s0, 1240 Load Byte Unsigned Extensión con ceros $s0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 8 0 7

1

6

0

5

1

4

0

3

1

2

0

1

1

0

0

11111111 00000000 00000000 00000000

10101010

00000000 00000000 00000000 11111111 00000000 00000000 00000000

1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 ©2003, José Mª Foces Morán.

Nuevas instrucciones de suma y resta.

SUMA SIN SIGNO No se detecta overflow.

addu

addu $t0, $s0, $s1

addiu

addiu $t0, $s0, 100

CON-SIGNO Sí se detecta overflow add

add $t0, $s0, $s1

addi

addi $t0, $s0, 100

RESTA SIN SIGNO No se detecta overflow.

subu

subu $t0, $s0, $s1

CON-SIGNO Sí se detecta overflow sub

sub $t0, $s0, $s1

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

sll $t2, $s0, 8

; $t2 = $8 << 8

producido con un 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.

Operaciones lógicas AND and

addu $t0, $s0, $s1

andi

andi $t0, $s0, 0x000000FF

OR or

or $t0, $s0, $s1

ori

ori $t0, $s0, 0x11111111

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

a b Oper ación 0 1 Result ado Car r yIn a + Sum b Car r yOut

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

ALU de 1 bit: AND, OR y suma.

a b Car r yIn Oper ación 0 1 Result ado + 2 Car r yOut

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

a b Binver t 0 1 Result ado Car r yOut

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

+ Car r yIn Oper ación 0 1 Result ado 2

Celda con overflow y set. CarryIn Binvert a 0 1 Operación Resultado b 0 1 CarryOut + 2 Less Set Desbordamiento Detector de desbordamiento

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

ALU de 32 bits: 31 celdas (R) y 1 celda (os) a ALU operation ALU Zero Result Overflow b CarryOut

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