1 www.microse.cic.ipn.mx Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros
2 www.microse.cic.ipn.mx 2 Operaciones aritméticas de enteros Adición 7 10 = 0000 0000 0000 0111 b + 6 10 = 0000 0000 0000 0110 b 13 10 = 0000 0000 0000 1101 b Los cuatro bits menos significativos tienen toda la acción Adición
3 www.microse.cic.ipn.mx 3 … 0 0 1 1 1 b + … 0 0 1 1 0 b Adición (0) 1(1) 0(1) 1(0) 1(0)0 (0)(1) (0) Operaciones aritméticas de enteros
4 www.microse.cic.ipn.mx 4 (adición de un núm. complemento a 2) 6 10 = 0000 0000 0000 0110 b + -5 10 = 1111 1111 1111 1011 b 1 10 = 0000 0000 0000 0001 b 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. Operaciones aritméticas de enteros Substracción
5 www.microse.cic.ipn.mx 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. negativo Resta : núm. negativo - núm. positivo = núm. positivo Suma : núm. positivo + núm. positivo = núm. negativo Suma : núm. negativo + núm. negativo = núm. positivo
6 www.microse.cic.ipn.mx 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.
7 www.microse.cic.ipn.mx 7 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 : detecta el sobre flujo con una excepción (BIOS) 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.
8 www.microse.cic.ipn.mx 8 Operaciones Lógicas Shift : mueven todos los bits de una palabra a la derecha o a la izquierda, llenando los bits vacíos con ceros. $0: 0000 0000 0000 0000 0000 0000 0000 0110 b = 6 10 sll $t2, $0, 8 $t2: 0000 0000 0000 0000 0000 0110 0000 0000 b = 1536 10 MIPS Shift: sll (shift left logical) srl (shift right logical) Shift
9 www.microse.cic.ipn.mx 9 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) $t1: 0000 0000 0000 0000 0000 0000 0000 0110 b and $t0, $t1, $t2 $t2: 0000 0000 0000 0000 0000 0110 0000 1111 b Muy útil para crear “mascaras” de bits $t0: 0000 0000 0000 0000 0000 0000 0000 0110 b AND
10 www.microse.cic.ipn.mx 10 OR : es una operación bit-a-bit, que se realiza entre dos vectores de igual número de bits. (1|X=1)(0|0=0) $t1: 0000 0000 0000 0000 0000 0000 0000 0110 b or $t0, $t1, $t2 $t2: 0000 0000 0000 0000 0000 0110 0000 1111 b $t0: 0000 0000 0000 0000 0000 0110 0000 1111 b MIPS : and, andi (and, and inmediate) or, ori (or, or inmediate) Operaciones LógicasOR
11 www.microse.cic.ipn.mx 11 Resumen: OperaciónOperador de CInstrucción MIPS Desplazamiento a la izq.srl and (bit-a-bit)&and, andi or (bit-a-bit)|or, ori Operaciones LógicasC-MIPS
12 www.microse.cic.ipn.mx 12 Diseñando Si el procesador es el “cerebro” de la computadoras, las unidades funcionales podrían ser las “neuronas”. ALU’s, Sumadores, Multiplicadores, Divisores, SQR, etc. Unidades Funcionales
13 www.microse.cic.ipn.mx 13 ALU 1-bit Las operaciones lógicas son las mas fáciles de implementar por que se mapean directamente a los componentes de hardware. ABDand(C)or (C)inv (C)Mux (C) 000001A 011011B 10010 11110
14 www.microse.cic.ipn.mx 14 ALU Unidad Lógica de 1-Bit /AND/OR
15 www.microse.cic.ipn.mx 15 Sumador de 1-bit
16 www.microse.cic.ipn.mx 16 EntradasSalidas abCinCoutSumaComentarios 000000+0+0=00 001010+0+1=01 010010+1+0=01 011100+1+1=10 100011+0+0=01 101101+0+1=10 110101+1+0=10 111111+1+1=11 Sumador de 1-bit
17 www.microse.cic.ipn.mx 17 Acarreo de salida (Cout) Cout= (!a*b*Cin)+(a*!b*Cin)+(a*b*!Cin)+(a*b*Cin) EntradasSalidas abCinCoutSumaComentarios 000000+0+0=00 001010+0+1=01 010010+1+0=01 011100+1+1=10 100011+0+0=01 101101+0+1=10 110101+1+0=10 111111+1+1=11 Cout= (Cin*b)+(Cin*a)+(a*b)
18 www.microse.cic.ipn.mx 18 Bit de Acarreo Demostrar la simplificación de la ecuación para Cout
19 www.microse.cic.ipn.mx 19 Sumador de 1-bit Suma= (!a*!b*Cin) + (!a*b*!Cin) + (a*!b*!Cin) + (a*b*Cin) EntradasSalidas abCinCoutSumaComentarios 000000+0+0=00 001010+0+1=01 010010+1+0=01 011100+1+1=10 100011+0+0=01 101101+0+1=10 110101+1+0=10 111111+1+1=11 Suma= (a x b) x Cin; x= or exclusiva
20 www.microse.cic.ipn.mx 20 Sumador Demostrar la simplificación de la ecuación para Suma
21 www.microse.cic.ipn.mx 21 Sumador Completo 1-bit
22 www.microse.cic.ipn.mx 22 ALU (AND, OR, SUMA) El sumador puede calcular: a + b a +!b + 1 = a – b (seleccionando invert y Cin)
23 www.microse.cic.ipn.mx 23 Completando una ALU slt (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 Es exactamente la condición de sobre flujo que se da en substracción de enteros con signo. MIPS
24 www.microse.cic.ipn.mx 24 set on less than
25 www.microse.cic.ipn.mx 25 32-bit ALU
26 www.microse.cic.ipn.mx 26 Soportando Saltos Condicionales Estas instrucciones saltan si dos registros son iguales. La forma rápida de ver si (a==b) es haciendo (a-b) y checar si el resultado es cero. OR dinámica
27 www.microse.cic.ipn.mx 27 ALU 32-bits
28 www.microse.cic.ipn.mx 28 Cálculo rápido del bit de acarreo Desde luego existen técnicas para mejorar el desempeño de los circuitos… ¿Investigue como mejorar esta ALU mediante el cálculo rápido del acarreo? ¿Cuales son los sumadores que tienen mejor desempeño?
29 www.microse.cic.ipn.mx 29 Multiplicación 0 1 1 0 X 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 + Desplazamiento
30 www.microse.cic.ipn.mx 30 Multiplicador 0 0 0 0 0 0 1 0 Inicio 0 1 1 0 0
31 www.microse.cic.ipn.mx 31 0 0 0 0 0 0 1 0 1er Ciclo: desplaza a la derecha (Reg. Prod.) 0 1 1 0 0 0 Multiplicador
32 www.microse.cic.ipn.mx 32 0 0 0 0 0 0 0 1 1er Ciclo: estado final 0 1 1 0 1 1 Multiplicador
33 www.microse.cic.ipn.mx 33 0 1 1 0 0 0 0 1 2do Ciclo: estado inicial Suma y …. 0 1 1 0 1 1 Multiplicador
34 www.microse.cic.ipn.mx 34 0 0 1 1 0 0 0 0 2do Ciclo: estado inicial Suma y Desplaza 0 1 1 0 1 1 Multiplicador
35 www.microse.cic.ipn.mx 35 0 0 1 1 0 0 0 0 2do Ciclo: estado final 0 1 1 0 0 0 Multiplicador
36 www.microse.cic.ipn.mx 36 0 0 1 1 0 0 0 0 3er Ciclo: estado inicial 0 1 1 0 0 0 Multiplicador
37 www.microse.cic.ipn.mx 37 0 0 0 1 1 0 0 0 3er Ciclo: estado final desplaza 0 1 1 0 0 0 Multiplicador
38 www.microse.cic.ipn.mx 38 0 0 0 1 1 0 0 0 4er Ciclo: estado inicial 0 1 1 0 0 0 Multiplicador
39 www.microse.cic.ipn.mx 39 0 0 0 0 1 1 0 0 4to Ciclo: estado final Desplaza (fin) 0 1 1 0 0 0 Multiplicador
40 www.microse.cic.ipn.mx 40 Algoritmo de multiplicación Desde luego existen técnicas para mejorar el desempeño de los circuitos… ¿Investigue como mejorar este multiplicador? ¿Cuales son los Multiplicadores que tienen mejor desempeño? Booth