ac cap2 aritmetica ent 3
TRANSCRIPT
Capitulo 2
INSTITUTO POLITÉCNICO NACIONALCENTRO DE INVESTIGACION EN COMPUTACION
LABORATORIO DE MICROTECNOLOGÍA Y SISTEMAS EMBEBIDOS Grupo de Arquitectura de Computadoras y Sistemas Embebidos
Arquitecturas de ComputadorasCurso Propedéutico
Capitulo 2Aritmética de enteros
Marco Antonio Ramírez SalinasHerón Molina Lozano
Capitulo 2
Operaciones aritméticas de enteros
Adición
710= 0000 0000 0000 0111b
+610= 0000 0000 0000 0110b
2
1310= 0000 0000 0000 1101b
Los cuatro bits menos significativos tienen toda la acción
Capitulo 2
Operaciones aritméticas de enteros
3
… 0 0 1 1 1b
+… 0 0 1 1 0b
Adición
(0) 1(1) 0 (1) 0(0) 1 (0)0
(0)(1)(1)(0)
Capitulo 2
Operaciones aritméticas de enteros
Substracción (adición de núm. complemento a 2)
610 = 0000 0000 0000 0110b
+-510 = 1111 1111 1111 1011b
4
110 = 0000 0000 0000 0001b
Se puede decir que “ocurre” un sobre flujo en la salida. Pero cuando se suman operandos de distinto signo, el resultado es menor que uno de los operandos.
Capitulo 2
Sobre-flujo
La suma o resta de dos números de 32-bits, podría arrojar un resultado que requiera de 33-bits para ser expresado totalmente. Esto significa que el acarreo ocurre en el bit de signo.Ocurre sobre flujo en los siguientes casos :Resta : núm. positivo - núm. negativo = núm. negativoResta : núm. negativo - núm. positivo = núm. positivoSuma : núm. positivo + núm. positivo = núm. negativoSuma : núm. negativo + núm. negativo = núm. positivo
Capitulo 2
Sobre-flujo (Sin Signo)
La suma o resta de dos números sin signo, son comúnmente utilizados en direccionamiento de memoria. El sobre flujo se ignora! .Los arquitectos de computadoras deben proporcionar una forma de ignorar el sobre flujo en algunos casos y reconocerlo en otras. MIPS proporciona dos tipos de instrucciones: Suma (add), Suma un inmediato (addi) y Resta (sub) causan excepciones de sobre-flujo. Suma sin signo (addu), suma un inmediato sin signo (addiu) y resta sin signo (subu) ignoran sobre-flujo.
Capitulo 2
Implicaciones de programación
C ignora el sobre-flujo: el compilador de C para MIPS siempre genera las versiones sin signo de las instrucciones aritméticas (addu, addiu, subu) no importa el tipo de variable. EL procesador MIPS (BIOS) : detecta el sobre flujo con una excepción, para corregir el código. Se utiliza el registro EPC (Exception Program Counter) para almacenar la dirección de la instrucción que causó la excepción, utiliza la instrucción mfsc0 (move from system control ) para copiar EPC a un registro de propósito general y regresar el control del programa.
7
Capitulo 2
Operaciones Lógicas
Shift: mueven todos los bits de una palabra a la derecha o a la izquierda, llenando los bits vacios con ceros.
8
$0: 0000 0000 0000 0000 0000 0000 0000 0110b = 610sll $t2, $0, 8
$t2: 0000 0000 0000 0000 0000 0110 0000 0000b = 153610
MIPS Shift: sll (shift left logical)srl (shift right logical)
Capitulo 2
Operaciones Lógicas
AND: es una operación bit-a-bit, que se realiza entre dos vectores de igual numero de bits. (1&1=1)(1&0=0)
9
$t1: 0000 0000 0000 0000 0000 0000 0000 0110b
and $t0, $t1, $t2
$t2: 0000 0000 0000 0000 0000 0110 0000 1111b
Muy útil para crear “mascaras” de bits
$t2: 0000 0000 0000 0000 0000 0000 0000 0110b
Capitulo 2
Operaciones Lógicas
OR: es una operación bit-a-bit, que se realiza entre dos vectores de igual numero de bits. (1|X=1)(0|0=0)
10
$t1: 0000 0000 0000 0000 0000 0000 0000 0110b
and $t0, $t1, $t2
$t2: 0000 0000 0000 0000 0000 0110 0000 1111b
$t2: 0000 0000 0000 0000 0000 0110 0000 1111bMIPS :
and, andi (and, and inmediate)or, ori (or, or inmediate)
Capitulo 2
Operaciones Lógicas C-MIPS
11
Operación Operador de C Instrucción MIPS
Desplazamiento a la izq. << sll
Desplazamiento a la der. >> srl
and (bit-a-bit) & and, andi
or (bit-a-bit) | or, ori
Resumen:
Capitulo 2
Diseñando Unidades Funcionales
Si el procesador es el “cerebro” de la computadoras, las unidades funcionales son las “neuronas”. ALU’s, Sumadores, Multiplicadores, Divisores, SQR, etc.
12
Capitulo 2
ALU 1-bit
Las operaciones lógicas son las mas fáciles de implementar por que se mapean directamente a los componentes de hardware.
13
A B D and(C) or (C) inv (C) Mux (C)0 0 0 0 0 1 A0 1 1 0 1 1 B1 0 0 1 01 1 1 1 0
Capitulo 2
ALU
Unidad Lógica de 1-Bit /AND/OR
14
B
A0
1Resultado
Operación
Capitulo 2
Sumador de 1-bit
15
+ Suma
Cin
Cout
a
b
Capitulo 2
Sumador de 1-bit
16
Entradas Salidas
a b Cin Cout Suma Comentarios
0 0 0 0 0 0+0+0=00
0 0 1 0 1 0+0+1=01
0 1 0 0 1 0+1+0=01
0 1 1 1 0 0+1+1=10
1 0 0 0 1 1+0+0=01
1 0 1 1 0 1+0+1=10
1 1 0 1 0 1+1+0=10
1 1 1 1 1 1+1+1=11
Capitulo 2
Acarreo de salida (Cout)
17
Entradas Salidas
a b Cin Cout Suma Comentarios
0 0 0 0 0 0+0+0=00
0 0 1 0 1 0+0+1=01
0 1 0 0 1 0+1+0=01
0 1 1 1 0 0+1+1=10
1 0 0 0 1 1+0+0=01
1 0 1 1 0 1+0+1=10
1 1 0 1 0 1+1+0=10
1 1 1 1 1 1+1+1=11
Cout= (!a*b*Cin)+(a*!b*Cin)+(a*b*!Cin)+(a*b*Cin)Cout= (Cin*b)+(Cin*a)+(a*b)
Capitulo 2
Bit de Acarreo
18
Demostrar la simplificación de la ecuación para Cout
Capitulo 2
Sumador de 1-bit
19
Entradas Salidas
a b Cin Cout Suma Comentarios
0 0 0 0 0 0+0+0=00
0 0 1 0 1 0+0+1=01
0 1 0 0 1 0+1+0=01
0 1 1 1 0 0+1+1=10
1 0 0 0 1 1+0+0=01
1 0 1 1 0 1+0+1=10
1 1 0 1 0 1+1+0=10
1 1 1 1 1 1+1+1=11
Suma= (!a*!b*!Cin) + (!a*b*!Cin) + (a*!b*!Cin) + (Cin*a*b)Suma= (a x b) x Cin; x= or excluiva
Capitulo 2
Suma
20
a
b
Cin
Suma
Demostrar la simplificación de la ecuación para Suma
Capitulo 2
Sumador Completo 1-bit
21
a
Cout
b
Cin
Suma
Capitulo 2
ALU (AND, OR, SUMA)
22
B
A
Resultado
Operación
+
0
1
Cin
Cout
invert
0
1
2
El sumador puede calcular: a + b a +!b + 1 = a – b (seleccionando invert y Cin)
Capitulo 2
Completando una ALU para MIPSslt (set on less than) , slt $1, $2, $3
Detecta cuando a < b, $1 = 01 si $2 < $3 , $1 = 00 de otra manera.Si hacemos:(a – b) < 0(a – b) + b < 0 + b a < b
23
Es exactamente la condición de sobre flujo que se da en substracción de enteros con signo (Diapositiva 24)
Capitulo 2
(set on less than)
24
b0
a0
o0
Op
era
ció
n
+
0 1
Cin
Co
ut
inv
ert
0123
b3
1
a31
o3
1
Op
era
ció
n
+
0 1
Cin
So
bre
flujo
inv
ert
0123L
es
s
Se
t
De
tección
de so
bre flu
jo
Se
t
Capitulo 2
32-bit ALU
25
a0 OpCininv
Less Cout
b0o0
a1 OpCininv
b1o1
a2 OpCininv
b2o2
a31 OpCininv
b31o31
Inv Operación
Less Cout 0
Less Cout 0
Less Sflujo 0Less
Sobre flujo
Capitulo 2
Soportando Saltos Incondicionales
Estas instrucciones saltan si dos registros son iguales. La forma rapida de ver si (a==b) es haciendo (a-b) y checar si el resultado es cero.
26
o0 o1 o2 o3 o31
CLK
/Cero
Prec
Eval
Capitulo 2
ALU 32-bits
27
a0 OpCininv
Less Cout
b0o0
a1 OpCininv
b1o1
a2 OpCininv
b2o2
a31 OpCininv
b31o31
Inv Operación
Less Cout 0
Less Cout 0
Less Sflujo 0Less
Sobre flujo
Detección de Cero /Cero
ALU
Operación
/Cero
Sobre flujo
Resultado
A
B
Carry out
Capitulo 2
Calculo rápido del bit de acarreo
?28
Capitulo 2
Multiplicación
0 1 1 0X 0 0 1 0
29
0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 1 0 0
+
Capitulo 2
Multiplicador
30
0 0 0 0 0 0 1 0
Inicio
0 1 1 0
0
Capitulo 2
Multiplicador
31
0 0 0 0 0 0 1 0
1er Ciclo: desplaza a la derecha (Reg. Prod.)
0 1 1 0
0
0
Capitulo 2
Multiplicador
32
0 0 0 0 0 0 0 1
1er Ciclo: estado final
0 1 1 0
1
1
Capitulo 2
Multiplicador
33
0 1 1 0 0 0 0 1
2do Ciclo: estado inicialSuma y ….
0 1 1 0
1
1
Capitulo 2
Multiplicador
34
0 0 1 1 0 0 0 0
2do Ciclo: estado inicialSuma y Desplaza
0 1 1 0
1
1
Capitulo 2
Multiplicador
35
0 0 1 1 0 0 0 0
2do Ciclo: estado final
0 1 1 0
0
0
Capitulo 2
Multiplicador
36
0 0 1 1 0 0 0 0
3er Ciclo: estado inicial
0 1 1 0
0
0
Capitulo 2
Multiplicador
37
0 0 0 1 1 0 0 0
3er Ciclo: estado finaldesplaza
0 1 1 0
0
0
Capitulo 2
Multiplicador
38
0 0 0 1 1 0 0 0
4er Ciclo: estado inicial
0 1 1 0
0
0
Capitulo 2
Multiplicador
39
0 0 0 0 1 1 0 0
4er Ciclo: estado finalDesplaza (fin)
0 1 1 0
0
0
Capitulo 2
Algoritmo de multiplicación de Booth
40
?
Capitulo 2
División
41
0010 0 1 1 1
0 0 0 0 1 0 0 0 0
0 0 0 0
0 0 1 0
-
0 0 0 1 1-
-
0 0 0 1 1
0 0 1 1
0 0 1 0-
0 0 0 1