Descargar

Aritmética de enteros

Enviado por Pablo Turmero


    edu.red

    Operaciones aritméticas de enteros SubAdición

    710= 0000 0000 0000 0111b + 610= 0000 0000 0000 0110b 1 1310= 0000 0000 0000 1101b

    Los cuatro bits menos significativos tienen toda la acción

    edu.red

    Operaciones aritméticas de enteros 2 Sub … 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)

    edu.red

    Operaciones aritméticas de enteros SubSubstracción (adición de núm. complemento a 2)

    610 = 0000 0000 0000 0110b + -510 = 1111 1111 1111 1011b 3 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.

    edu.red

    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

    edu.red

    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.

    edu.red

    Implicaciones de programación SubC 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. 6

    edu.red

    Operaciones Lógicas SubShift: mueven todos los bits de una palabra a la derecha o a la izquierda, llenando los bits vacios con ceros. 7 $0: 0000 0000 0000 0000 0000 0000 0000 0110b = 610 sll $t2, $0, 8 $t2: 0000 0000 0000 0000 0000 0110 0000 0000b = 153610 MIPS Shift: sll (shift left logical) srl (shift right logical)

    edu.red

    Operaciones Lógicas SubAND: es una operación bit-a-bit, que se realiza entre dos vectores de igual numero de bits. (1&1=1)(1&0=0) 8 $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

    edu.red

    Operaciones Lógicas SubOR: es una operación bit-a-bit, que se realiza entre dos vectores de igual numero de bits. (1|X=1)(0|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 $t2: 0000 0000 0000 0000 0000 0110 0000 1111b MIPS : and, andi (and, and inmediate) or, ori (or, or inmediate)

    edu.red

    Operaciones Lógicas C-MIPS 10 SubResumen:

    edu.red

    Diseñando Unidades Funcionales SubSi el procesador es el “cerebro” de la computadoras, las unidades funcionales son las “neuronas”. ALU’s, Sumadores, Multiplicadores, Divisores, SQR, etc. 11

    edu.red

    ALU 1-bit SubLas operaciones lógicas son las mas fáciles de implementar por que se mapean directamente a los componentes de hardware. 12

    edu.red

    ALU SubUnidad Lógica de 1-Bit /AND/OR 13

    edu.red

    Sumador de 1-bit 14

    edu.red

    Sumador de 1-bit 15

    edu.red

    Acarreo de salida (Cout) 16 SubCout= (!a*b*Cin)+(a*!b*Cin)+(a*b*!Cin)+(a*b*Cin) Cout= (Cin*b)+(Cin*a)+(a*b)

    edu.red

    Bit de Acarreo 17 Demostrar la simplificación de la ecuación para Cout

    edu.red

    Sumador de 1-bit 18 SubSuma= (!a*!b*!Cin) + (!a*b*!Cin) + (a*!b*!Cin) + (Cin*a*b) Suma= (a x b) x Cin; x= or excluiva

    edu.red

    Suma 19 Demostrar la simplificación de la ecuación para Suma

    edu.red

    Sumador Completo 1-bit 20

    edu.red

    ALU (AND, OR, SUMA) 21 SubEl sumador puede calcular: a + b a +!b + 1 = a – b (seleccionando invert y Cin)

    edu.red

    Completando una ALU para MIPS Subslt (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

    22 Es exactamente la condición de sobre flujo que se da en substracción de enteros con signo (Diapositiva 24)

    edu.red

    (set on less than) 23

    edu.red

    32-bit ALU 24

    edu.red

    Soportando Saltos Incondicionales SubEstas 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.

    25

    edu.red

    ALU 32-bits 26

    edu.red

    Calculo rápido del bit de acarreo Sub? 27

    edu.red

    Multiplicación Sub 0 1 1 0 X 0 0 1 0 28 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 + Desplazamiento

    edu.red

    Multiplicador 29 0 0 0 0 0 0 1 0 Inicio 0 1 1 0 0

    edu.red

    Multiplicador 30 0 0 0 0 0 0 1 0 1er Ciclo: desplaza a la derecha (Reg. Prod.) 0 1 1 0 0 0

    edu.red

    Multiplicador 31 0 0 0 0 0 0 0 1 1er Ciclo: estado final 0 1 1 0 1 1

    edu.red

    Multiplicador 32 0 1 1 0 0 0 0 1 2do Ciclo: estado inicial Suma y …. 0 1 1 0 1 1

    edu.red

    Multiplicador 33 0 0 1 1 0 0 0 0 2do Ciclo: estado inicial Suma y Desplaza 0 1 1 0 1 1

    edu.red

    Multiplicador 34 0 0 1 1 0 0 0 0 2do Ciclo: estado final 0 1 1 0 0 0

    edu.red

    Multiplicador 35 0 0 1 1 0 0 0 0 3er Ciclo: estado inicial 0 1 1 0 0 0

    edu.red

    Multiplicador 36 0 0 0 1 1 0 0 0 3er Ciclo: estado final desplaza 0 1 1 0 0 0

    edu.red

    Multiplicador 37 0 0 0 1 1 0 0 0 4er Ciclo: estado inicial 0 1 1 0 0 0

    edu.red

    Multiplicador 38 0 0 0 0 1 1 0 0 4er Ciclo: estado final Desplaza (fin) 0 1 1 0 0 0

    edu.red

    Algoritmo de multiplicación de Booth 39 Sub?

    edu.red

    División 40 Sub 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