ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

Slides:



Advertisements
Presentaciones similares
Simulación en VHDL del Datapath del MIPS
Advertisements

Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
El modelo de Von Neumann
Diseño de la ruta de datos monociclo para la arquitectura MIPS
ORGANIZACIÓN COMPUTACIONAL
Camino de Datos y Control
TEMA 2 Arquitectura de un Ordenador
Circuitos Digitales II
Introducción a la programación
El procesador: la ruta de datos y el control (II Parte)
Unidad aritmético-lógica
Arquitectura de Conjunto de Instrucciones (ISA)
Circuitos Combinacionales Comunes
Composición Interna de un Procesador
Computadora Digital Arquitectura de John Von Neumann
CLASE 11.
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
Arquitectura del Computador
ISA (Instruction Set Architecture)
MIPS Intermedio.
Unidad 2: Organización del CPU
Sistemas de Numeración
Organización del Computador I Verano Aritmética (1 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004Profesora Borensztejn.
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Arquitectura de Computadoras
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Conceptos Arquitectónicos del computador
El procesador Creando un solo datapath. Universidad de SonoraArquitectura de Computadoras2 Introducción 1. Crear un solo datapath a partir de los datapaths.
Unidad 4: Unidad de Ejecución
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Diseño de la Unidad de Control Multiciclo: Microprogramación
Aritmética PARA COMPUTADORAS
Unidad aritmético-lógica
Datapath para las instrucciones de carga y almacenamiento (load/store)
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
“Organización y Arquitectura de Computadores” William Stallings
Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
CLASE 13.
El procesador Diseño del control.
Diseño del procesador uniciclo
CLASE 14.
ARQUITECTURA DE COMPUTADORES
Teoría de Sistemas Operativos Sistema de I/O. 2 Introducción Una de las funciones principales del sistema operativo es el control de todos los dispositivos.
Capítulo 4 CPU y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 20 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
Organización del Computador I Verano Control Multiciclo Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
introducción al Lenguaje Ensamblador
Simulación en VHDL del Controlador FSM del MIPS
Unidad Central de Proceso
Organización del Computador I Verano Aritmética (2 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
CONJUNTO DE INSTRUCCIONES Maquinas Digitales
ARQUITECTURA DE COMPUTADORES
José Alvarado – Cristian Anzola
UNIDAD 2. DISEÑO LÓGICO DE PROCESADORES: UNIDAD ARITMÉTICO-LÓGICA Ing. Elizabeth Guerrero V.
MIPS Intermedio.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Circuitos Combinacionales I
CAPITULO V Arquitectura de Von Neumann
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
El procesador Diseño del control.
8. Diseño del Procesador Fundamentos de los Computadores
El procesador Datapath y control.
Transcripción de la presentación:

ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11

AGENDA 2do Examen Parcial: Viernes 26/06/2009 Simulador MARS El lenguaje ensamblador MIPS Representación de números binarios con signo Formatos de instrucción MIPS y su implementación en un camino de datos de un solo ciclo

Simulador MARS Mips Assembly and Runtime Simulator (MARS) Requiere el JRE 1.4 (como mínimo) Licencia MIT Desarrollado por: –Pete Sanderson –Kenneth Vollmar Utilizaremos la versión MARS 3.6 (Enero 2009)

Lenguaje ensamblador MIPS

“ Hay 10 tipos de personas en el mundo: Las que entienden los números binarios y las que no entienden los números binarios ”. Dustin Parr

Representación de números binarios con signo A los números positivos y al cero, los hemos representado con n dígitos binarios, pero ¿Cómo representamos los números negativos en binario? Existen tres representaciones de números enteros con signo en binario: –Signo - Magnitud –Signo - Complemento: Complemento a 1 Complemento a 2 La representación utilizada en la actualidad, es el complemento a 2

Representación Signo - Magnitud El bit más significativo indica el signo del número: → → -52 Algunos inconvenientes: –Existen dos ceros +0 : : –¿Cómo podríamos sumar dos dígitos en Signo - Magnitud? Comparar los signos: Iguales → Suma, Distintos → Resta anan a n-1 a n-2...…a0a0 a1a1 a2a2 …a -m Bit de signo n Bits: Parte enteram Bits: Parte decimal Sumar las magnitudes (Circuitería de suma) Colocarle el signo común Detectar el número mayor (Circuitería de detección de mayor) Restarle al número mayor el otro (Circuitería de resta) Asignarle al resultado el signo del mayor

Representación en Complemento a 1 El negativo de un número se obtiene al colocar todos los 1s como 0s y todos los 0s como 1s → → -22 Algunos inconvenientes: –Existen dos ceros +0 : : –¿Cómo podríamos sumar dígitos en Complemento a 1? Se realiza la suma (Circuitería de suma) Si hay un bit de acarreo, se suma (2da suma) Si los signos son distintos, se coloca el signo del mayor (Circuitería de detección del mayor) A = 2 n – a n-1 a n-2...a 1 a 0

Ejemplo de sumas en Complemento a 1 b) → → → -30 a) → → → +74 c) → → → → +30 d) → → → -74

Representación en Complemento a 2 El negativo de un número se obtiene al colocar el número en complemento a 1 y sumarle una unidad (1) → → -22 Una forma rápida de calcular el complemento a 2 es: –Recorriendo el número de derecha a izquierda, deje los 0s sin cambiar –Siguiendo el recorrido, deje al primer 1 sin modificar –A partir de allí, cambie los 0s por 1s y los 1s por 0s Características: –Existe un solo cero: –¿Cómo se sumarían dos dígitos en Complemento a 2? Se realiza la suma (Circuitería de suma) A = 2 n – a n-1 a n-2...a 1 a 0 + 1

c) → → → +30 Ejemplo de sumas en Complemento a 2 b) → → → -30 a) → → → +74 d) → → → -74

Overflow El overflow ocurre cuando se requieren n+1 bits para almacenar el resultado de una operación aritmética. El overflow puede ocurrir al: –Sumar dos números con el mismo signo –Restar dos números de distinto signo a) → → → +10 b) → → → -30

Extensión de signo Se realiza con la finalidad de aumentar la cantidad de bits utilizados para representar un número binario. Para un número en complemento a dos, el bit más significativo es propagado a las nuevas posiciones: –0100 (4), en 8 bits sería: –1010 (-6), en 8 bits sería:

Computador → Máquina de estado Un computador es sólo una gran máquina de estados. –Los registros, memoria cache, memoria RAM y discos duros guardan el estado. –El procesador se mantiene leyendo y actualizando el estado, de acuerdo a las instrucciones de algún programa. Estado CPU

Memorias Resulta más sencillo utilizar dos memorias rápidas para almacenar datos e instrucciones de forma separada. A esta forma de distribución de la memoria se le conoce como Arquitectura Harvard. Debido a que se manejarán palabras de 32 bits, se podrán direccionar 2 30 palabras. Las lineas azules representan señales de control. MemRead y MemWrite deben colocarse en 1 si se va a leer o si se va a escribir a memoria, respectivamente. Read address Instruction memory Instruction [31-0] Read address Write address Write data Data memory Read data MemWrite MemRead

Búsqueda de instrucción (fetching) El procesador se encuentra siempre en un lazo infinito, buscando instrucciones en memoria y ejecutándolas. El registro contador de programa o registro PC almacena la dirección de la instrucción en ejecución. Las instrucciones MIPS son todas de 4 bytes de largo: 32 bits. Es por ello, que el PC debe ser incrementado de 4 en 4 (Para leer la siguiente instrucción, en secuencia) Leer dirección Memoria de Instrucciones Instrucción [31-0] PC Add 4

Formato de instrucción R Las instrucciones aritméticas registro a registro, utilizan el formato de instrucción R. — op es el código de instrucción, y func especifica una operación aritmética particular. — rs, rt y rd son los dos registros fuentes y el registro destino Un ejemplo de una instrucción y su codificación es: add$s4, $t1, $t2 oprsrtrdshamtfunc 6 bits5 bits 6 bits

Registros y ALUs Las instrucciones de formato de instrucción R, deben acceder a los registros y a la UAL. Nuestro Archivo de registros almacena 32 valores de 32 bits. –Cada indicador de registro tiene 5 bits. –Se puede leer de dos registros al mismo tiempo. — RegWrite es 1 si se va a escribir en un registro ALU ALUOp Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite ALUOp Función 000and 001or 010add 110sub 111slt

Ejecución en el formato de instrucción R 1.Se lee una instrucción desde la memoria de instrucciones. 2.Los registros fuente, indicados por los campos rs y rt, se leen desde el archivo de registros. 3.La UAL realiza la operación correspondiente. 4.El resultado es guardado en el registro de destino, el cual es especificado por el campo rd de la instrucción. Leer dirección Memoria de Instrucciones Instrucción [31-0] Leer registro 1 Leer registro 2 Escribir register Escribir data Leer data 2 Leer data 1 Registros RegWrite I [ ] I [ ] I [ ] Resultado Zero ALU ALUOp oprsrtrdshamtfunc

Formato de instrucción I Las instrucciones lw, sw y beq instructions utilizan el formato de instrucción I. — rt es el destino para lw, pero una fuente para beq y sw. — dirección es una constante, con signo, de 16 bits. Dos ejemplos: lw$t0, – 4($sp) sw$a0, 16($sp) oprsrtdirección 6 bits5 bits 16 bits

Acceso a datos de memoria Para una instrucción como lw $t0, – 4($sp), el registro base $sp es sumado a la constante de extensión de signo para obtener la dirección de memoria final. Esto significa que la UAL debe aceptar: o un operando de registro para una instrucción aritmética, o un operando inmediato con signo extendido para las instrucciones lw y sw. Agregaremos un multiplexor, controlado por ALUSrc, para seleccionar un operando de registro (0) o un operando constante (1). Leer dirección Escribir address Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [ ] I [ ] I [ ] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

De memoria a registro La entrada “Escribir data” del archivo de registros, tiene un problema similar. Debe ser capaz de guardar, ya sea la salida de la UAL, en una instrucción R; o el dato de memoria para una instrucción lw. Añadiremos un multiplexor, controlado por MemToReg, para escoger entre guardar el resultado de la UAL (0) o el dato de salida de memoria (1) para los registros. Leer dirección Escribir dirección Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [ ] I [ ] I [ ] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

RegDst Una molestia final es el registro destino de lw, el cual se encuentra en rt, en lugar de en rd. Añadiremos un multiplexor adicional, controlado por RegDst, para seleccionar el registro destino, desde el campo de instrucción rt (0) o desde el campo rd (1). oprsrtdirección lw $rt, dirección($rs) Leer dirección Escribir dirección Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [ ] I [ ] I [ ] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

Para las instrucciones de salto, la constante no es una dirección, sino un desplazamiento de instrucción desde el contador de programa actual, hasta la dirección deseada. beq$at, $0, Etiq add$v1, $v0, $0 add$v1, $v1, $v1 jEtiq Etiq:add$v1, $v0, $v0 La dirección destino Etiq está tres instrucciones después de beq, por lo que la codificación de la instrucción de salto tendrá como campo de dirección. Las instrucciones tienen 4 bytes de largo, por lo que el desplazamiento real es de 12 bytes. Saltos oprsrtaddress

Pasos al ejecutar beq 1.Buscar la instrucción (Fetch) en memoria, como por ejemplo: beq $at, $0, desplazamiento 2.Leer los registros fuente, $at y $0, desde el archivo de registros. 3.Comparar los valores, restándolos en la UAL. 4.Si la resta es 0, Los operandos fuente eran iguales y se debe cargar en el PC la dirección destino: PC (desplazamiento x 4). 5.Si la resta no es 0, no se debe ejecutar el salto, y el PC sólo debe ser actualizado a PC + 4 para buscar la siguiente instrucción en secuencia.

Hardware para saltos Necesitamos un segundo sumador, ya que la UAL está ocupada haciendo la resta para beq. Multiplicación constante por 4, para obtener el desplazamiento  PCSrc = 1 # salto a PC+4+(offset  4)  PCSrc = 0 continúa a PC+4.

El camino de datos final

Control La unidad de control es la responsable de darle valores a las señales de control para que cada instrucción se ejecute correctamente. –La entrada de la unidad de control son los 32 bits de la instrucción. –Su salida son los valores para las señales de control del camino de datos. La mayoría de las señales pueden ser generadas a partir, únicamente, del opcode, sin requerir el resto de bits de la instrucción.

Tabla de señales de control sw y beq son las únicas instrucciones que no escriben en registros. lw y sw son las únicas instrucciones que utilizan un campo constante. Ellas también dependen de la UAL para calcular la dirección de memoria efectiva. ALUOp para el formato R depende del campo de instrucciones func. La señal de control PCSrc (no listada) debe ser establecida si la instrucción es beq y la salida Zero de la UAL es 1. OperacionRegDstRegWriteALUSrcALUOpMemWriteMemReadMemToReg add sub and or slt lw swX X beqX X

Señales de control generales La unidad de control requiere 13 bits de entrada. –Seis bits del opcode de instrucción. –Seis bits del campo de instrucción func. –La salida Zero de la UAL. La unidad de control genera 10 bits de salida, correspondientes a las señales mencionadas en la lámina anterior. Leer dirección Memoria de Instrucciones Instrucción [31-0] Control I [ ] I [5 - 0] RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg RegDst PCSrc Zero