ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.

Slides:



Advertisements
Presentaciones similares
El modelo de Von Neumann
Advertisements

Diseño de la ruta de datos monociclo para la arquitectura MIPS
ORGANIZACIÓN COMPUTACIONAL
Camino de Datos y Control
Arquitectura de Computadores I
Integrantes: Moyolehuani Tatéi Temai
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
INSTITUTO TECNOLOGICO DE APIZACO Integrantes del equipo: José Luis Cocoletzi López Edgar Lozano Velázquez TEMA: Lenguaje Ensamblador.
Computación PROGRAMACIÓN.
Circuitos Digitales II Alineamiento en Memoria y Ejecución de un programa Semana No.8 Semestre Prof. Gustavo Patiño Prof. Eugenio.
Sistemas Operativos Funcionamiento general de una computadora bajo el control de un programa.
Circuitos Digitales II
Ingeniería de sw.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Unidad aritmético-lógica
Arquitectura de Conjunto de Instrucciones (ISA)
UNIDAD 1:SISTEMA DE NUMEROS
Composición Interna de un Procesador
Computadora Digital Arquitectura de John Von Neumann
CLASE 11.
Arquitectura del Computador
ISA (Instruction Set Architecture)
Representación de Números en un Registro Binario
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
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.
(CC) , José M. Foces-Morán.
Instrucciones: FORMATO DE INSTRUCCIONES
Unidad III Elementos del lenguaje C++
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Tema 2: Los tipos de datos
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
El procesador Creando un solo datapath. Universidad de SonoraArquitectura de Computadoras2 Introducción 1. Crear un solo datapath a partir de los datapaths.
Tema 1: DATOS Y REGISTROS
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Diseño de la Unidad de Control Multiciclo: Microprogramación
Aritmética PARA COMPUTADORAS
Unidad aritmético-lógica
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Tema 2: Lenguaje máquina
Arquitectura de Von Neumann
Datapath para las instrucciones de carga y almacenamiento (load/store)
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
CLASE 13.
El procesador Diseño del control.
CLASE 14.
ARQUITECTURA DE COMPUTADORES
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 15/08/2006.
Capítulo 4 CPU y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
Organización de la Computadora
introducción al Lenguaje Ensamblador
Modos de direccionamiento
Unidad Central de Proceso
Fundamentos de Programación
CONJUNTO DE INSTRUCCIONES Maquinas Digitales
ARQUITECTURA DE COMPUTADORES
José Alvarado – Cristian Anzola
Unidad de transferencia de memoria
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
El procesador Diseño del control.
8. Diseño del Procesador Fundamentos de los Computadores
Transcripción de la presentación:

ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

AGENDA 2do Examen Parcial: Martes 30/06/2009 Repaso Ejercicios

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

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

Arquitectura MIPS

Componentes de la arquitectura El Contador de Programa (PC) Unidad de Control Unidad Aritmético-Lógica Registros Memoria de Datos Memoria de Instrucciones

Programa almacenado John von Neumann introdujo, por primera vez, en 1945, la idea de almacenar el programa en memoria El programa es almacenado dentro de la máquina para luego ser procesado internamente Las instrucciones y los datos son guardados en memoria como números Varios usuarios pueden utilizar un mismo computador para diferentes conductas, resultando en diferentes aplicaciones y dándole un carácter universal, como herramienta, al computador

Conjuntos de instrucciones Para darle órdenes al hardware de un computador, debemos hablar su idioma Las palabras del idioma de los computadores se denominan instrucciones, y su vocabulario es llamado conjunto de instrucciones Una instrucción, en lenguaje de máquina, es un código formado por voltajes altos y bajos Un conjunto de instrucciones debería: –Facilitar (Simplicidad) la construcción del hardware y el compilador –Maximizar el rendimiento –Minimizar el costo y el consumo de energía

Almacenamiento de variables en hardware add $t1,$s6,$s7 A diferencia de los programas de alto nivel, en el hardware se cuenta con un número limitado de localidades de memoria para ubicar allí los operandos y resultados temporales de operaciones aritméticas La arquitectura MIPS cuenta con 32 de estas localidades de memoria, denominadas registros Cada registro en MIPS, tiene un tamaño o capacidad de 32 bits.

Almacenamiento de datos Los lenguajes de programación permiten tener estructuras que pueden contener muchos más datos o variables que los que se pueden guardar en 32 registros: ¿Cómo hace el computador para acceder y representar tal cantidad de datos? Los datos se mantienen en memoria Por lo tanto, se requieren instrucciones (Capacidades) para 1.Leer un dato desde memoria y guardarlo en un registro 2.Tomar un dato guardado en un registro y guardarlo en una localidad de memoria En MIPS, se pueden direccionar 2 30 palabras de memoria: Memory[0], Memory[4], Memory[8],..., Memory[ ]

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

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

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

Arquitectura MIPS

El camino de datos final

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

Instrucciones aritméticas

Instrucciones lógicas

Instrucciones de transferencia de datos

Instrucciones de salto condicional

Instrucciones de salto incondicional

Ejemplo 2 Programa en C: int i = 0, j = 5; while (vector[i]==j) i+=1; Programa en ensamblador: li $s1,0 li $s2,5 # vector en $s6=0x 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: 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.

Ejemplo 4 Programa en C: int i, x = 8,f=1; for(i=2;i<=x;i++) { f = f * i; } Programa en ensamblador: li $s1,2 # i = 2 li $s2,8 # x = 8 li $t0,1 # f = 1 For: slt $t1,$s2,$s1 bne $t1,$zero,Fin mult $t0,$s1 mflo $t0 addi $s1,$s1,1 j For Fin:

Ejemplo 5 Programa en C: int a = 4, b = 5; int suma = a; for(int = 1; i<b; i++) { suma = suma + a; } Programa en ensamblador: li $s0,1 # i = 1 li $s1,4 # a = 4 li $s2,5 # b = 5 add $t0,$zero,$s1 For: slt $t1,$s0,$s2 bne $t1,$zero,Fin add $t0,$t0,$s1 addi $s0,$s0,1 j For Fin: