ARQUITECTURA DE COMPUTADORES

Slides:



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

El modelo de Von Neumann
Diseño de la ruta de datos monociclo para la arquitectura MIPS
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
ORGANIZACIÓN COMPUTACIONAL
Camino de Datos y Control
Arquitectura de Computadores I
ARQUITECTURA DE COMPUTADORES - VON NEUMANN MODEL
TEMA 2 Arquitectura de un Ordenador
CICLO DE EJECUCION DE UNA INSTRUCCION
Circuitos Digitales II
Arquitectura de Computadores
VAX Diego Esteban Moreno Germán Aguado Llorente Félix Huete García.
Introducción a la programación
El procesador: la ruta de datos y el control (II Parte)
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
Arquitectura de Conjunto de Instrucciones (ISA)
Composición Interna de un Procesador
CLASE 11.
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
ISA (Instruction Set Architecture)
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Unidad 2: Organización del CPU
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
(CC) , José M. Foces-Morán.
Arquitecturas de Computadoras Curso Propedéutico
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 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.
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.
Diseño de la Unidad de Control Multiciclo: Microprogramación
Datapath para las instrucciones de carga y almacenamiento (load/store)
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
Organización del Computador
“Organización y Arquitectura de Computadores” William Stallings
CLASE 13.
El procesador Diseño del control.
Diseño del procesador uniciclo
CLASE 14.
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.
Informática Clase Arquitectura de la Computadora.
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
Principio unidad 1.
Unidad Central de Proceso
UNIDAD 2. DISEÑO LÓGICO DE PROCESADORES: UNIDAD ARITMÉTICO-LÓGICA Ing. Elizabeth Guerrero V.
Universidad Metropolitana Introducción a la Computación Universidad Metropolitana Introducción a la Computación Septiembre, 2007 Arquitectura Von Newman.
MIPS Intermedio.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
CAPITULO V Arquitectura de Von Neumann
Arquitectura de Computadores Clase 6 Ciclo y Conjunto de Instrucciones IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
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.
Estructura y funcionamiento de un sistema de cómputo
El procesador Diseño del control.
Pipelining Datapath y control.
Creando un solo datapath
Organización del Computador
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 12

AGENDA 2do Examen Parcial: Martes 30/06/2009 Arquitectura MIPS de un solo ciclo El lenguaje ensamblador MIPS Ejercicios

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 230 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 [31-0] Read address Write data Data memory 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 op rs rt rd shamt func 6 bits 5 bits 000000 01001 01010 10100 00000 100000

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 Leer registro 1 registro 2 Escribir registro data data 2 data 1 Registros RegWrite ALUOp Función 000 and 001 or 010 add 110 sub 111 slt ALU ALUOp

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 registro 1 Leer registro 2 Escribir register data data 2 data 1 Registros RegWrite Resultado Zero ALU ALUOp Leer dirección Instrucción [31-0] I [25 - 21] I [20 - 16] Memoria de Instrucciones I [15 - 11] op rs rt rd shamt func 31 26 21 16 11 6 5 0

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) op rs rt dirección 6 bits 5 bits 16 bits 100011 11101 01000 1111 1111 1111 1100 101011 11101 00100 0000 0000 0001 0000

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 data Memoria de Datos MemWrite MemRead 1 M u x MemToReg Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] RegDst registro 1 registro 2 registro data 2 data 1 Registros RegWrite Signo extend ALUSrc Resultado Zero ALU ALUOp

Memoria de Instrucciones 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 data Memoria de Datos MemWrite MemRead 1 M u x MemToReg Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] RegDst registro 1 registro 2 registro data 2 data 1 Registros RegWrite Signo extend ALUSrc Resultado Zero ALU ALUOp

Memoria de Instrucciones 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). op rs rt dirección lw $rt, dirección($rs) Leer dirección Escribir data Memoria de Datos MemWrite MemRead 1 M u x MemToReg Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] RegDst registro 1 registro 2 registro data 2 data 1 Registros RegWrite Signo extend ALUSrc Resultado Zero ALU ALUOp

Saltos 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 j Etiq 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á 0000 0000 0000 0011 como campo de dirección. Las instrucciones tienen 4 bytes de largo, por lo que el desplazamiento real es de 12 bytes. 000100 00001 00000 0000 0000 0000 0011 op rs rt address

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 + 4 + (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.

Memoria de Instrucciones Hardware para saltos Necesitamos un segundo sumador, ya que la UAL está ocupada haciendo la resta para beq. 4 Shift left 2 PC Add M u x 1 PCSrc Leer dirección Escribir data Memoria de Datos MemWrite MemRead MemToReg Memoria de Instrucciones Instruction [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] RegDst registro 1 registro 2 registro data 2 data 1 Registros RegWrite Signo extend ALUSrc Resultado Zero ALU ALUOp  PCSrc = 1 # salto a PC+4+(offset4)  PCSrc = 0 continúa a PC+4. Multiplicación constante por 4, para obtener el desplazamiento

El camino de datos final 4 Shift left 2 PC Add M u x 1 PCSrc Leer dirección Escribir data Memoria de Datos MemWrite MemRead MemToReg Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] RegDst registro 1 registro 2 registro data 2 data 1 Registros RegWrite Signo extend ALUSrc Resultado Zero ALU ALUOp

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 Operacion RegDst RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg add 1 010 sub 110 and 000 or 001 slt 111 lw sw X beq 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.

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 [31 - 26] I [5 - 0] RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg RegDst PCSrc Zero

Instrucciones aritméticas

Instrucciones lógicas

Instrucciones de transferencia de datos

Instrucciones de salto condicional

Instrucciones de salto incondicional

Ejemplo 1 Programa en C: Programa en ensamblador: int f, g = 3, h = 1; int i = 4, j = 4; if (i==j) f=g+h; else f=g-h; Programa en ensamblador: addi $s1,$zero,3 addi $s2,$zero,1 addi $s3,$zero,4 addi $s4,$zero,4 bne $s3,$s4,Else add $t0,$s1,$s2 j Fin Else:sub $t0,$s1,$s2 Fin:

Ejemplo 2 Programa en C: Programa en ensamblador: int i = 0, j = 5; while (vector[i]==j) i+=1; Programa en ensamblador: li $s1,0 li $s2,0 # vector en $s6=0x10010040 While: sll $t1,$s1,2 add $t1,$t1,$s6 lw $t2,0($t1) bne $t2,$s2,Fin addi $s1,$s1,1 j While Fin:

Ejemplo 3 Programa en C: Programa en ensamblador: x = 0; for(int i=0;i<100;i++) { x = x+i; } Programa en ensamblador: li $s1,0 # i = 0 li $s2,0 # x = 0 For: slti $t0,$s1,100 beq $t0,$zero,Fin add $s2,$s2,$s1 addi $s1,$s1,1 j For Fin:

Tarea Realizar un programa en lenguaje ensamblador MIPS, que calcule el factorial de un número (De manera no recursiva). Realizar un programa en lenguaje ensamblador MIPS, que calcule la multiplicación de dos números a través de sumas sucesivas.