410 likes | 592 Vues
INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACION EN COMPUTACION LABORATORIO DE MICROTECNOLOGÍA Y SISTEMAS EMBEBIDOS Grupo de Arquitectura de Computadoras y Sistemas Embebidos. Arquitecturas de Computadoras Curso Propedéutico Capitulo 2 Aritmética de enteros.
E N D
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 Computadoras Curso Propedéutico Capitulo 2 Aritmética de enteros Marco Antonio Ramírez Salinas Herón Molina Lozano
Operaciones aritméticas de enteros Adición 710= 0000 0000 0000 0111b + 610= 0000 0000 0000 0110b 1310= 0000 0000 0000 1101b Los cuatro bits menos significativos tienen toda la acción
Operaciones aritméticas de enteros Adición … 0 0 1 1 1b + … 0 0 1 1 0b (0) (1) (1) (0) (0)0 (0) 1 (1) 0 (1) 0 (0) 1
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 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.
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.
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.
Operaciones Lógicas Shift: mueven todos los bits de una palabra a la derecha o a la izquierda, llenando los bits vacios con ceros. $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 (shiftleftlogical) srl(shiftrightlogical)
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 0110b $t2: 0000 0000 0000 0000 0000 0110 0000 1111b and $t0, $t1, $t2 $t2: 0000 0000 0000 0000 0000 0000 0000 0110b Muy útil para crear “mascaras” de bits
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) $t1: 0000 0000 0000 0000 0000 0000 0000 0110b $t2: 0000 0000 0000 0000 0000 0110 0000 1111b and $t0, $t1, $t2 $t2: 0000 0000 0000 0000 0000 0110 0000 1111b MIPS : and, andi (and, and inmediate) or, ori(or, orinmediate)
Operaciones Lógicas C-MIPS Resumen:
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.
ALU 1-bit Las operaciones lógicas son las mas fáciles de implementar por que se mapean directamente a los componentes de hardware.
ALU Unidad Lógica de 1-Bit /AND/OR
Acarreo de salida (Cout) Cout= (!a*b*Cin)+(a*!b*Cin)+(a*b*!Cin)+(a*b*Cin) Cout= (Cin*b)+(Cin*a)+(a*b)
Bit de Acarreo Demostrar la simplificación de la ecuación para Cout
Sumador de 1-bit Suma= (!a*!b*!Cin) + (!a*b*!Cin) + (a*!b*!Cin) + (Cin*a*b) Suma= (a x b) x Cin; x= orexcluiva
Suma Demostrar la simplificación de la ecuación para Suma
ALU (AND, OR, SUMA) El sumador puede calcular: a + b a +!b + 1 = a – b (seleccionando invert y Cin)
Completando una ALU para MIPS 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 (Diapositiva 24)
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.
Multiplicación 0 1 1 0 X 0 0 1 0 0 0 0 0 Desplazamiento 0 1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
Multiplicador 0 1 1 0 Inicio 0 0 0 0 0 0 1 0 0
Multiplicador 0 1 1 0 1er Ciclo: desplaza a la derecha (Reg. Prod.) 0 0 0 0 0 0 0 1 0 0
Multiplicador 0 1 1 0 1er Ciclo: estado final 1 0 0 0 0 0 0 0 1 1
Multiplicador 0 1 1 0 2do Ciclo: estado inicial Suma y …. 1 0 1 1 0 0 0 0 1 1
Multiplicador 0 1 1 0 2do Ciclo: estado inicial Suma y Desplaza 1 0 0 1 1 0 0 0 0 1
Multiplicador 0 1 1 0 2do Ciclo: estado final 0 0 0 1 1 0 0 0 0 0
Multiplicador 0 1 1 0 3er Ciclo: estado inicial 0 0 0 1 1 0 0 0 0 0
Multiplicador 0 1 1 0 3er Ciclo: estado final desplaza 0 0 0 0 1 1 0 0 0 0
Multiplicador 0 1 1 0 4er Ciclo: estado inicial 0 0 0 0 1 1 0 0 0 0
Multiplicador 0 1 1 0 4er Ciclo: estado final Desplaza (fin) 0 0 0 0 0 1 1 0 0 0
División 0 0 1 1 0010 0 1 1 1 - 0 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 11 - 0 0 1 0 0 0 01 1 - 0 0 1 0 0 0 01