Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Computadoras
Unidad Académica Caleta
Olivia
2022
UNIDAD II – Parte D
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
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
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
bN-1 aN-1 b2 a2 b1 a 1 b0 a0 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.
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)
17
Arquitectura de las computadoras
Desbordamiento
2022 • Condiciones de desbordamiento para la suma y la resta
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:
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
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
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
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.
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.
36
Arquitectura de las computadoras
Multiplicación: Primera versión
Inicio
2022
Multiplicador0=1 1. Comprobar Multiplicador0=0
Multiplicador 0
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
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
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
Sí: 32 repetic.
Fin
41
Multiplicación: Tercera versión
2022 Circuitería para multiplicar
Multiplicando
32 bits
ALU 32-bits
Producto
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).
43
Arquitectura de las computadoras
Multiplicación con signo: Algoritmo de Booth
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.
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
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
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
Sí
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
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
Sí
Desbordamiento
??
No Excepción
57
Arquitectura de las computadoras
Punto flotante en el MIPS
2022
• Elementos:
Nombre Ejemplo
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