Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros
2 Operaciones aritméticas de enteros Adición 7 10 = b = b = b Los cuatro bits menos significativos tienen toda la acción Adición
3 … b + … b Adición (0) 1(1) 0(1) 1(0) 1(0)0 (0)(1) (0) Operaciones aritméticas de enteros
4 (adición de un núm. complemento a 2) 6 10 = b = b 1 10 = 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
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
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 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 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: b = 6 10 sll $t2, $0, 8 $t2: b = MIPS Shift: sll (shift left logical) srl (shift right logical) Shift
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: b and $t0, $t1, $t2 $t2: b Muy útil para crear “mascaras” de bits $t0: b AND
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: b or $t0, $t1, $t2 $t2: b $t0: b MIPS : and, andi (and, and inmediate) or, ori (or, or inmediate) Operaciones LógicasOR
11 Resumen: OperaciónOperador de CInstrucción MIPS Desplazamiento a la izq.<<sll Desplazamiento a la der.>>srl and (bit-a-bit)&and, andi or (bit-a-bit)|or, ori Operaciones LógicasC-MIPS
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 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) A B
14 ALU Unidad Lógica de 1-Bit /AND/OR
15 Sumador de 1-bit
16 EntradasSalidas abCinCoutSumaComentarios = = = = = = = =11 Sumador de 1-bit
17 Acarreo de salida (Cout) Cout= (!a*b*Cin)+(a*!b*Cin)+(a*b*!Cin)+(a*b*Cin) EntradasSalidas abCinCoutSumaComentarios = = = = = = = =11 Cout= (Cin*b)+(Cin*a)+(a*b)
18 Bit de Acarreo Demostrar la simplificación de la ecuación para Cout
19 Sumador de 1-bit Suma= (!a*!b*Cin) + (!a*b*!Cin) + (a*!b*!Cin) + (a*b*Cin) EntradasSalidas abCinCoutSumaComentarios = = = = = = = =11 Suma= (a x b) x Cin; x= or exclusiva
20 Sumador Demostrar la simplificación de la ecuación para Suma
21 Sumador Completo 1-bit
22 ALU (AND, OR, SUMA) El sumador puede calcular: a + b a +!b + 1 = a – b (seleccionando invert y Cin)
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 set on less than
bit ALU
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 ALU 32-bits
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 Multiplicación X Desplazamiento
30 Multiplicador Inicio
er Ciclo: desplaza a la derecha (Reg. Prod.) Multiplicador
er Ciclo: estado final Multiplicador
do Ciclo: estado inicial Suma y … Multiplicador
do Ciclo: estado inicial Suma y Desplaza Multiplicador
do Ciclo: estado final Multiplicador
er Ciclo: estado inicial Multiplicador
er Ciclo: estado final desplaza Multiplicador
er Ciclo: estado inicial Multiplicador
to Ciclo: estado final Desplaza (fin) Multiplicador
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