Está en la página 1de 66

2022

Arquitectura de las Universidad Nacional de la


Patagonia Austral

Computadoras
Unidad Académica Caleta
Olivia
2022

UNIDAD II – Parte D

Aritmética del Computador

Arquitectura de las computadoras


Estructura del curso
2022

1. Evolución y caracterización de los computadores.


2. Arquitectura del MIPS: Introducción.
3. Tipo de datos.
4. El repertorio de instrucciones.
5. Aritmética del computador.
6. El camino de datos.
7. Sección de control.
8. CPU Segmentada (Pipelining)

2
Arquitectura de las computadoras
Esquema de contenidos
2022
1. Punto fijo
• Operaciones lógicas
• Suma y resta
• Multiplicación
• Multiplicación con signo
2. Punto flotante
• Suma
• Multiplicación

3
Arquitectura de las computadoras
Punto fijo
Unidad aritmética y lógica: ALU (Arithmetic
Logic Unit)
2022 ALU: Dispositivo que realiza las operaciones aritméticas (suma, resta,…) y
lógicas (AND, OR,…).
Construcción de una ALU usando puertas lógicas:
• AND
• OR
• Inversor
• Multiplexor (mux)
Objetivo: Diseño modular = Divide y vencerás
• Módulo: ALU de 1 bit.
• ALU de 32 bits: 32 módulos de 1 bit.
Diseño de la ALU de 1 bit:
• Implementación de todas las operaciones en paralelo.
• Selección de la operación con un multiplexor.
• Ventaja: FÁCIL EXTENSIÓN A MÁS OPERACIONES.

5
Arquitectura de las computadoras
ALU: Operaciones en punto fijo
2022
1. Operaciones lógicas
2. Suma y resta
Las estudiaremos
3. Multiplicación en este curso
4. Multiplicación con signo
5. División

6
Arquitectura de las computadoras
ALU de 1 bit: AND y OR
2022 Proyección directa en componentes hardware:
• Operación AND: Puerta AND
• Operación OR: Puerta OR
Diseño de una ALU de 1 bit:
• Puertas AND y OR
• Multiplexor de selección

Op (control)
Op C
A 0 A and B
B 0
C
1 A or B
1

7
Arquitectura de las computadoras
Suma y resta
2022 • Suma: Los dígitos se suman bit a bit de derecha a izquierda y los
acarreos se pasan de un bit al siguiente.
• Resta: Se niega el sustraendo antes de sumar.
• Ejemplo: Sumar (6)diez más (7)diez

(0) (0) (0) (1) (1) (0) (acarreo)


… 0 0 0 1 1 1

… 0 0 0 1 1 0

… (0)0 (0)0 (0)1 (1)1 (1)0 (0)1

8
Arquitectura de las computadoras
Full Adder (FA): Sumador completo de 1 bit
b a Cin
2022 Un full adder tiene 3 bits de entrada
y genera 2 bits de salida: suma y acarreo.
FA

A B Cin S Cout
Cout S
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
9
Full Adder (FA): Sumador completo de 1 bit

A B Cin S Cout
2022
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Cout = (A’*B*Cin) + (A*B’*Cin) + (A*B*Cin’) + (A*B*Cin) = (B*Cin) + (A*Cin)


+ (A*B)
S = (A’*B’*Cin) + (A’*B*Cin’) + (A*B’*Cin’) + (A*B*Cin)

10
Arquitectura de las computadoras
Full Adder (FA): Sumador completo de 1 bit

2022

11
Arquitectura de las computadoras
ALU de 1 bit: AND, OR, suma
2022
Cin Op (control)

A
B 0
1
Resultado

FA 2

Cout

12
Arquitectura de las computadoras
Carry Ripple Adder: Sumador de acarreo enlazado

2022 Sumador de N bits : N full adders


Entradas: a= aN-1 aN-2…a2 a1 a0
b= bN-1 bN-2…b2 b1 b0

bN-1 aN-1 b2 a2 b1 a 1 b0 a0 0

FA(N-1) … FA(2) FA(1) FA(0)

CN-1 C3 C2 C1
CN SN-1 S2 S1 S0
Resultado: CN SN-1 SN-2 … S2 S1 S0
13
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma
Op (control)
2022 0
a0 Cin
ALU 0 Resultado 0
b0
Cout

a1 Cin
ALU 1 Resultado 1
b1
Cout


Cin
a31
ALU 31 Resultado 31
b31 Cout

14
ALU de 1 bit: AND, OR, suma, resta
2022 Resta: Reutilización del hardware para la suma → Se niega el
sustraendo antes de sumar.

BIT MENOS SIGNIFICATIVO BITS RESTANTES

15
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma,resta
Binvert Op (control)
2022

a0 Cin
ALU 0 Resultado 0
b0
Cout

a1 Cin
ALU 1 Resultado 1
b1
Cout


Cin
a31
ALU 31 Resultado 31
b31 Cout

16
Arquitectura de las computadoras
Desbordamiento
2022 • Desbordamiento (overflow): El resultado obtenido supera
el rango asociado al número de bits utilizado (el resultado
no puede codificarse con los bits disponibles)

TAMAÑO SIN SIGNO CON SIGNO (C-2)


N bits [0, 2N-1] [-2N-1, 2N-1-1]
Byte (8 bits) [0, 255] [-128, 127]
16 bits [0, 65535] [-32768, 32767]
32 bits [0, 4294967295] [-2147483648, 2147483647]

17
Arquitectura de las computadoras
Desbordamiento
2022 • Condiciones de desbordamiento para la suma y la resta

Operación Operando A Operando B Resultado


A+B ≥0 ≥0 <0
A+B <0 <0 ≥0
A-B ≥0 <0 <0
A-B <0 ≥0 ≥0

18
Arquitectura de las computadoras
Desbordamiento
2022 • Desbordamiento (Método práctico de detección):El
desbordamiento se produce cuando el acarreo generado
y el recibido por el último bit son distintos:
C-2 C-2
0110 (6) 1001 (-7)
+0100 (4) +1000 (-8)
01010 (-6) 10001 (1)
overflow overflow

19
Arquitectura de las computadoras
ALU de 32 bits: Desbordamiento
2022 • Desbordamiento (Método práctico de detección):El
desbordamiento se produce cuando el acarreo generado
y el recibido por el último bit son distintos:

Basta con evaluar C31 XOR C32

EXTENSIÓN ALU 31.

20
Arquitectura de las computadoras
ALU de 32 bits: Comparación
2022 • Slt rd, rs, rt
1 if (rs < rt)
rd: 0000 0000 0000 0000 0000 0000 0000 000r r 0 else

• Set on less than:


• Si a < b : out = 1
• En otro caso: out = 0
• Implementación: Recoger el signo de a - b → C32

Resultado = [0 0 … 0 C32]

21
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación
2022 ALU para el bit más significativo.
Binvert

Menor Comparación

Desbordamiento

22
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación
2022 ALU para los otros bits

23
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación
Binvert Op (control)
2022

a0 Cin
b0 ALU 0 Resultado 0
Menor
Cout

a1 Cin
b1 ALU 1 Resultado 1
0 Menor
Cout


a31 Cin Resultado 31
b31 ALU 31 Desbordamiento
0 Menor
Cout Comparación
24
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación
Binvert Op (control)
2022

a0 Cin
b0 ALU 0 Resultado 0
Menor
Cout

a1 Cin
b1 ALU 1 Resultado 1
0 Menor
Cout


a31 Cin Resultado 31
b31 ALU 31 Desbordamiento
0 Menor
Cout Comparación
25
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación
Binvert Op (control)
2022

a0 Cin
b0 ALU 0 Resultado 0
Menor
Cout

a1 Cin
b1 ALU 1 Resultado 1
0 Menor
Cout


a31 Cin Resultado 31
b31 ALU 31 Desbordamiento
0 Menor
Cout Comparación
26
Arquitectura de las computadoras
ALU de 32 bits: Saltos condicionales
2022 • beq $t5, $t6, L

• Restando: (a-b) = 0 a = b
• Añadir hardware para ver si este resultado es 0
• XNOR de los 32 bits de resultado

• Zero = (Resultado0 + Resultado1 + .. + Resultado31)

NOR de los bits de resultado

27
Arquitectura de las computadoras
ALU de 32 bits: AND, OR, suma, resta,
desbordamiento, comparación,cero
Binvert Op (control)
2022

a0 Cin
Resultado 0
b0 ALU 0
Menor
Cout

a1 Cin Cero
b1 ALU 1 Resultado 1
0 Menor
Cout


a31 Cin Resultado 31
b31 ALU 31 Desbordamiento
0 Menor
Cout Comparación
28
Arquitectura de las computadoras
ALU de 32 bits: Símbolo universal
2022 Operación ALU
3

a
32
Cero
ALU Resultado
32
Desbordamiento
b
32

Cout

29
ALU de 32 bits: Señales de control
1 – ADD 1 – AND
2022 2 – SUB 2 – OR
10 – ADD

AND

OR 3 líneas de
CONTROL

First bit (LSB)

Operations: AND, OR, ADD, SUB


Control lines: 000 001 010 110
30
Arquitectura de las computadoras
ALU de 32 bits: Señales de control
2022

Líneas de control Función


000 AND
001 OR
010 Suma
110 Resta
111 Set on less than

31
Arquitectura de las computadoras
Otras operaciones lógicas
2022 Desplazamiento lógico: Desplaza los bits a la izquierda o a la
derecha rellenado con cero los bits vacíos
• Implementado fuera de la ALU.

Operación lógica Operador en C Instrucción MIPS


Despl. Izquierda << Sll (Shift Left Logical)
Despl. Derecha >> Srl (Shift Right Logical)

Ejemplo: Desplazamiento de 8 posiciones a la izquierda de:


0000 0000 0000 0000 0000 0000 0000 1101
Resultado:
0000 0000 0000 0000 0000 1101 0000 0000
32
Arquitectura de las computadoras
Multiplicación
2022 • Más compleja que la suma
• Implementada con: Sumas y desplazamientos.
• Coste área y tiempo
• 3 versiones del algoritmo lápiz y papel:
0010 (multiplicando)
x_1011 (multiplicador)
0010 1 -> copia & shift
0010 1 -> copia & shift
0000 0 -> shift
0010 1 -> copia & shift
00010110 Suma Productos parciales

33
Arquitectura de las computadoras
Multiplicación: Primera versión
2022
• Las siguientes operaciones se realizan en
paralelo:
– Shift del multiplicando
– Shift del multiplicador
– Suma del multiplicando al producto si el bit
del multiplicador es 1
• Un ciclo por suma parcial. No esta mal, si la
frecuencia de multiplicaciones es baja.

Arquitectura de las computadoras


Multiplicación: Primera versión
2022 Iteración Paso Multiplicador Multiplicando Producto
0 Valores iniciales 0011 0000 0010 0000 0000
1 1a: 1 →Prod=Prod+Mcando 0011 0000 0010 0000 0010
2: Desplazar el Mcando a la izquierda 0011 0000 0100 0000 0010
3: Desplazar el Mcador a la derecha 0001 1(se pierde) 0000 0100 0000 0010
2 1a: 1 →Prod=Prod+Mcando 0001 0000 0100 0000 0110
2: Desplazar el Mcando a la izquierda 0001 0000 1000 0000 0110
3: Desplazar el Mcador a la derecha 0000 1(se pierde) 0000 1000 0000 0110
3 1a: 0 →Ninguna operación 0000 0000 1000 0000 0110
2: Desplazar el Mcando a la izquierda 0000 0001 0000 0000 0110
3: Desplazar el Mcador a la derecha 0000 0(se pierde) 0001 0000 0000 0110
4 1a: 0 →Ninguna operación 0000 0001 0000 0000 0110
2: Desplazar el Mcando a la izquierda 0000 0010 0000 0000 0110
3: Desplazar el Mcador a la derecha 0000 0(se pierde) 0010 0000 0000 0110

36
Arquitectura de las computadoras
Multiplicación: Primera versión
Inicio

2022
Multiplicador0=1 1. Comprobar Multiplicador0=0
Multiplicador 0

1a. Sumar el multiplicando al producto y


guardar el resultado en el registro producto

2. Desplazar el registro multiplicando


1 bit a la izquierda

3. Desplazar el registro multiplicador


1 bit a la derecha

Sí: 32 repetic. No: < 32 repetic.


¿32 repetición?

Fin

35
Arquitectura de las computadoras
Multiplicación: Primera versión
2022 0000000000000……0010 Circuitería para multiplicar
Multiplicando (64 bits)
Desp. Izq
64 bits

000000……..1011
MSB LSB
Multiplicador (32 bits)
ALU 64-bits
Desp. Der.

LSB=0?

Producto
Control test
Escribir
64 bits

Inicializo Producto = 000000…00

34
Multiplicación: Segunda versión
2022
• Para que usar un sumador de 64 bits si la
mitad del registro multiplicando está
vacío?
• Idea:
– Dejar fijo el multiplicador y hacerlo de 32 bits
– Sumar el multiplicando a la parte alta
del producto, con un sumador de 32 bits
– En cada iteración, desplazar el producto a
la derecha

37
Multiplicación: Segunda versión
2022
Iteración Paso Multiplicando Producto Multiplicador
0 Valores iniciales 0010 0000 0000 0000 0011
1 1a: 1 →Prod=Prod+Mcando 0010 0010 0000 0000 0011
2: Desplazar el Producto a la derecha 0010 0001 0000 0000 0011
3: Desplazar el Mcador a la derecha 0010 0001 0000 0000 0001 1
2 1a: 1 →Prod=Prod+Mcando 0010 0011 0000 0000 0001
2: Desplazar el Producto a la derecha 0010 0001 1000 0000 0001
3: Desplazar el Mcador a la derecha 0010 0001 1000 0000 0000 1
3 1a: 0 →Ninguna operación 0010 0001 1000 0000 0000
2: Desplazar el Producto a la derecha 0010 0000 1100 0000 0000
3: Desplazar el Mcador a la derecha 0010 0000 1100 0000 0000 0
4 1a: 0 →Ninguna operación 0010 0000 1100 0000 0000
2: Desplazar el Producto a la derecha 0010 0000 0110 0000 0000
3: Desplazar el Mcador a la derecha 0010 0000 0110 0000 0000 0
8 1a: 0 →Ninguna operación 0010 0000 1100 0000 0000
2: Desplazar el Producto a la derecha 0010 0000 0110 0000 0000
3: Desplazar el Mcador a la derecha 0010 0000 0110 0000 0110 0

39
Arquitectura de las computadoras
Multiplicación: Segunda versión
Inicio

2022
No 1. Comprobar Si
Multiplicador = 0

1a. Sumar el multiplicando a la parte izquierda


del producto y guardar el resultado en
la mitad izquierda del registro Producto

2. Desplazar el registro Producto


1 bit a la derecha

3. Desplazar el registro multiplicador


1 bit a la derecha

No: < 32 repetic.


¿32 repetición?

Sí: 32 repetic.

Fin 38
Arquitectura de las computadoras
Multiplicación: Segunda versión
2022 Circuitería para multiplicar
Multiplicando Se coloca en la parte alta del registro
sumador de la ALU para iniciar el
32 bits algoritmo

ALU 32-bits

Producto Multiplicador
Control test
( 32 bits) (32 bits)
64 bits

37
Multiplicación: Versión Final
2022
Iteración Paso Multiplicando Producto
0 Valores iniciales 0010 0000 0011
1 1a: 1 → Prod=Prod+Mcando 0010 0010 0011
2: Desplazar el Producto a la derecha 0010 0001 0001
2 1a: 1 → Prod=Prod+Mcando 0010 0011 0001
2: Desplazar el Producto a la derecha 0010 0001 1000
3 1a: 0 → Ninguna operación 0010 0001 1000
2: Desplazar el Producto a la derecha 0010 0000 1100
4 1a: 0 → Ninguna operación 0010 0000 1100
2: Desplazar el Producto a la derecha 0010 0000 0110

42
Arquitectura de las computadoras
Multiplicación: Versión Final
Inicio

2022
Producto0=1 1. Comprobar Producto0=0
Multiplicador 0

1a. Sumar el multiplicando a la parte izquierda


del producto y guardar el resultado en
la mitad izquierda del registro Producto

2. Desplazar el registro Producto


1 bit a la derecha

No: < 32 repetic.


¿32 repetición?

Sí: 32 repetic.

Fin

41
Multiplicación: Tercera versión
2022 Circuitería para multiplicar

Multiplicando
32 bits

ALU 32-bits

Producto

Multiplicando Multiplicador Control test


Desp. Der. Escribir
64 bits
LSB=0?

49
Multiplicación con signo
2022 • No funciona!
• ¿Que sucede si el
multiplicando es
negativo?
1011 • Hay que extender
-5 1011
X 4 el signo mientras
0100 lo acumulamos en 0100
× ×
0000 el registro 0000
0000 producto 0000
1011 111011
0000 0000
00101100 11101100

43
Arquitectura de las computadoras
Multiplicación con signo
2022 • Multiplicadores vistos hasta ahora: números sin signo.
• Para números con signo: no funcionan
• Posibilidad:
• Transformar los operandos a positivos.
• Multiplicar los valores positivos.
• Negar el resultado (si es necesario).

|c| = |a| . |b|


signo(c) = signo(a) XOR signo(b)

Optimizable → Algoritmo de Booth

43
Arquitectura de las computadoras
Multiplicación con signo: Algoritmo de Booth

2022 • Observación Booth (para números positivos):


0 0 0 1 1 1 1 0 (un bloque de 1s rodeado de 0s)
M x (0 0 0 1 1 1 1 0)

Nótese: 2n + 2n-1 + . . . + 2n-k = 2n+1 – 2n-k


Ej. M x (0 0 0 1 4 1 3 1 2 1 1 00) = M x (24 + 23+ 22+ 21)
M x (0 0 15 0 0 0 1 1 0 0) = M x (25 - 21)
= M x 30

44
Arquitectura de las computadoras
Multiplicación con signo: Algoritmo de Booth
1. Procesar desde el LSB al MSB.
2022 2. Si la posición es 0 colocar 0 en la posición del número recodificado.
3. Si se encuentra un 1, colocar un -1 en la posición del número recodificado.
Saltar todos los 1s del bloque colocando un 0 en cada bit salteado.
4. Reemplazar el primer 0 encontrado con un 1.Si se llega al MSB sin
encontrar ningún 0, no hacer nada.

001111011001 = 512 + 256 + 128 + 64 + 16 + 8 +1 = 985

010001101011 = 1024 – 64 + 32 -8 +2 -1 = 985

Fácil adaptación de la circuitería de multiplicación para incluir el


algoritmo de Booth: Análisis de dos bits

45
Arquitectura de las computadoras
Multiplicación con signo: Algoritmo de Booth

2022

• Algoritmo de Booth:
• Restar cuando comienza una cadena de unos (1-0)
• Sumar cuando finaliza una cadena de unos (0-1)
Bit en curso Bit de la izquierda Codificación Explicación
0 0 (00) 0 Nada
0 1 (10) -1 Restar Multiplicando
1 0 (01) 1 Sumar Multiplicando

1 1 (11) 0 Nada

Arquitectura de las computadoras


Multiplicación versión final con signo
aplicando el Algoritmo de Booth
2022
Para el primer paso se considera el LSB = 0, son 4 iteraciones dado que se usan 4 bits para representar a cada cifra decimal

Valores Paso Multiplicando = Producto = - 6 en


iniciales + 2 (0010) C2 (1010)
0 Valores iniciales 0010 0000 1010 0
1 0 0 → Ninguna operación 0010 0000 1010 Paso 1 / 0 Act. 0 Sig.
No op. Desplaza la derecha
Desplazar el Producto a la derecha 0010
- 0000 0101 0 Paso 2 Act. 0 Sig.
2 1 0 → Prod=Prod-Mcando 0010 1110 0101 0000 – 0010 = 0000 + (1010) =
1010 (MS) -> 1110 (c2)
Desplazar el Producto a la derecha 0010 + 1111 0010 1 0000 + 1110 = 1110
3 0 1 → Prod=Prod+Mcando 0010 0001 0010 Paso 3 / 1 Act. 0 Sig.
1111 + 0010 = 0001
Desplazar el Producto a la derecho 0010 0000 1001 0
Paso 4 Act. 0 Sig.
4 1 0 → Prod=Prod-Mcando 0010 1110 1001
0000 – 0010 =
Desplazar el Producto a la derecha 0010 1111 0100 1 0000 + 1110 = 1110

C2=1111 0100 C1=11110011 - MS 10001100 = - 12 (10)

47
Arquitectura de las computadoras
Multiplicación en el MIPS
2022 • Utilización del hardware existente: ALU y
desplazadores
• Registros de propósito general para almacenar el
producto de 64 bits (Hi, Lo)
• Dos instrucciones de multiplicación:
• Mult: con signo ( →Booth)
• Multu: sin signo
• Dos instrucciones para mover los contenidos de Hi y
Lo a registros de propósito general: mflo, mfhi
• No hay hardware para detección de overflow
=> Detección con software

48
Arquitectura de las computadoras
División en el MIPS
2022
• Hardware adicional: registros de 64-bits capaces
de SLL/SRL
• Hi contiene el resto (mfhi)
• Lo contiene el cociente (mflo)
• Instructiones
• Div: división con signo
• Divu: división sin signo
• No hay hardware para detección de overflow
⇒ Detección con software
• División por cero: chequeada con software

49
Arquitectura de las computadoras
Punto flotante
(PF)
Operaciones en punto flotante
2022
1. Suma Las estudiaremos
2. Multiplicación en este curso

3. División

51
Aritmética en punto flotante
• Las operaciones aritméticas en punto flotante tienen una
2022
implementación compleja por dos motivos principalmente:
• Alineamiento de la mantisa
• Redondeo
• Paradójicamente la suma presenta más problemas que la
multiplicación
• Los sistemas más sencillos no soportan aritmética en punto flotante
• Por su elevado coste y consumo de potencia
• Las operaciones en punto flotante se realizan en punto fijo
• Los microprocesadores que habitualmente utilizamos soportan todo
tipo de operaciones en punto flotante
• Simple y doble precisión
• Exponenciación, logaritmos, trigonométricas,…

52
Arquitectura de las computadoras
SUMA: Suma y resta PF no son asociativas

2022
Suma y resta en PF no son asociativas:
• x = – 1.5 x 1038, y = 1.5 x 1038, z = 1.0
• x + (y + z) = –1.5x1038 + (1.5x1038 + 1.0)
= –1.5x1038 + (1.5x1038) = 0.0
• (x + y) + z = (–1.5x1038 + 1.5x1038) + 1.0
= (0.0) + 1.0 = 1.0
Motivo:
• El resultado PF sólo aproxima el resultado real
• 1.5 x 1038 es mucho más grande que 1.0 → 1.5 x
1038 + 1.0 ~ 1.5 x 1038

53
Arquitectura de las computadoras
Suma en PF
2022 1.5e2 + 1.3e4 = 0.015e4 + 1.3e4 = 1.315e4 (alineo los exponentes)
Es necesario alinear los números para que tengan el mismo exponente.
Desplazar a la derecha el numero de menor valor hasta igualar los exponentes
Ejemplo
A: 00000101100010100010010101000110
B: 00000011110010000111000000111101
Exponente A = 11 (11-127 =-116) Exponente B = 7 (7-127=-120)
Alineamos – 120 a – 116
1.10010000111000000111101 x 2 -120
0.110010000111000000111101 x 2 -119
0.0110010000111000000111101 x 2 -118
0.00110010000111000000111101 x 2 -117
0.000110010000111000000111101 x 2 -116
54
Arquitectura de las computadoras
Suma en PF
2022
1.0001 0100 0100 1010 1000 110
+ 0.0001 1001 0000 1110 0000 011 1101
1.0010 1101 0101 1000 1001 001 1101
R: 0000010110010 1101 0101 1000 1001 001

Arquitectura de las computadoras 56


Suma en PF
Inicio

2022
1.Comparar los exponentes de los dos números. Desplazar el número menor a la
derecha hasta que su exponente coincida con el mayor

2. Sumar las mantisas

3. Normalizar la suma, ya sea desplazando


a la derecha, incrementando el exponente
o a la izquierda decrementándolo


Desbordamiento
??
Excepción
No
4. Redondear la mantisa al número
de bits apropiado

Normalizado Sí
No ??

Fin

55
Arquitectura de las computadoras
Suma PF
Patterson Pag.254

2022

Arquitectura de las computadoras


57
Multiplicación en PF
2022
A = mA 2eA
(eA+eB)

B = mB 2eB A x B = (mA x mB) x 2

A: 01000101100010100010010101000110
B: 00100011110010000111000000111101
Exponentes:
Exponente A = 139 (139-127=12)
Exponente B = 71 (71-127=-56)
139 + 71= 210 – (127+127) = -44
=> Exponente = -44 = 01010011

58
Arquitectura de las computadoras
Multiplicación en punto flotante
2022 A: 01000101100010100010010101000110
B: 00100011110010000111000000111101

Producto de mantisas:

1.00010100010010101000110
1.10010000111000000111101 x

1.1011000010100110101111111010011000000110101110

Resultado = 00101001110110000101001101011111

59
Arquitectura de las computadoras
Multiplicación en PF
Patterson Pag.255
Inicio
2022
1.-Sumar los exponentes segados de los dos números y luego restar el exceso para obtener el nuevo exponente: ej 1.110x1010x9.200x10-5
(10 + 127) + (-5+127) = 10+(-5) +127+127 = 5+127*2 = 259 – 127 = 132 exponente con sesgo, 133 –127=5 exponente original

2. Multiplicar las mantisas

3. Normalizar el producto, si es preciso, desplazando a la


derecha incrementando el exponente


Desbordamiento
??

No Excepción

4. Redondear la mantisa al número


de bits apropiado

No Sí 5. Poner el signo del producto como positivo


Normalizado si los signos de los operandos originales Fin
?? eran iguales o como negativo si eran diferentes

57
Arquitectura de las computadoras
Punto flotante en el MIPS
2022
• Elementos:
Nombre Ejemplo

32 registros de coma flotante $f0, $f1, …$f31

230 palabras de memoria Memoria[0]


Memoria[4]

Memoria[4294967292]

60
Arquitectura de las computadoras
Punto flotante en el MIPS
Categoría Instrucción Ejemplo Significado
2022
Aritmética FP add single add.s $f2, $f4, $f6 $f2= $f4+ $f6
FP substract single sub.s $f2, $f4, $f6 $f2= $f4- $f6
FP multiply single mul.s $f2, $f4, $f6 $f2= $f4x $f6
FP divide single div.s $f2, $f4, $f6 $f2= $f4/ $f6
FP add double add.d $f2, $f4, $f6 $f2= $f4+ $f6
FP substract double sub.d $f2, $f4, $f6 $f2= $f4- $f6
FP multiply double mul.d $f2, $f4, $f6 $f2= $f4x $f6
FP divide double div.d $f2, $f4, $f6 $f2= $f4/ $f6
Transferencia load word copr. 1 lwc1 $f1, 100($s2) $f1 = Mem[$s2+100]
de datos store word copr. 1 swc1 $f1,100($s2) Mem[$s2+100]= $f1
Salto branch on FP true bclt 25 si (cond==1) ir a
condicional PC + 4 +100
branch on FP false bclf 25 si (cond == 0) ir a
PC + 4 + 100
FP compare single c.lt.s $f2, $f4 si ($f2 < $f4) cond =1;
(eq,ne,lt,le,gt,ge) si no cond = 0;
FP compare double c.lt.d $f2, $f4 si ($f2 < $f4 ) cond =1;
61
Arquitectura de las computadoras
(eq,ne,lt,le,gt,ge) si no cond = 0

También podría gustarte