Organización de computadoras. Clase 4. Universidad Nacional de Quilmes. Lic. Martínez Federico

Documentos relacionados
Guía de ejercicios # 4 Rutinas: modularización y reuso

Organización de computadoras. Clase 3. Universidad Nacional de Quilmes. Lic. Martínez Federico

Organización de computadoras. Clase 5. Universidad Nacional de Quilmes. Lic. Martínez Federico

Organización de computadoras. Clase 2. Universidad Nacional de Quilmes. Lic. Martínez Federico

Operaciones lógicas y repetición

Organización de computadoras. Clase 8. Universidad Nacional de Quilmes. Lic. Martínez Federico

Guía de ejercicios # 8 Flags y Saltos

Ejercicio motivador. El siguiente ejercicio es motivador, motívese:

Organización de Computadoras

Arquitectura de Computadoras

Arquitectura de Computadores II Clase #3

Conceptos de Arquitectura de Computadoras Curso 2015

Guía de ejercicios # 3 Memoria, Buses, Q2 y Accesos

Memoria principal e Interconexión

Seguimiento. Organización del Computador I. Gustavo Cairo Carlos A. Di Pietro Carolina Lang. 1 er Cuatrimestre de 2016

Organización de computadoras. Clase 6. Universidad Nacional de Quilmes. Lic. Martínez Federico

Modularización y Reuso: Rutinas en Q3

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Práctica 7 - Microarquitectura del CPU

Unidad Nº II Capacidad de la unidad central. de procesamiento. Instituto Universitario Politécnico. Santiago Mariño

Elementos constituyentes de la ejecución de un programa

Introducción al simulador

Práctica 4 - Microarquitectura del CPU

Práctica 3: Programación en ASM Orga 1

Práctica 3 - Arquitectura del CPU

Guía de ejercicios # 10: Iteraciones, arreglos y recorridos

Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017

El nivel ISA (II)! Conjunto de Instrucciones

Arquitectura de Computadores II Clase #3

Memoria y Buses. Organización de Computadoras Universidad Nacional de Quilmes

Arquitectura de Computadores

Práctica de Estructura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2010/2011

Repaso concepto de programa

Presentación. Vinculación

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Interrupciones y entrada/salida

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

Organización de Computadoras. Clase 6

Guía de ejercicios # 2 Primeros pasos en programación - Arquitectura Q1

Estructura de los sistemas de cómputo

Ejercicios del tema 4. El procesador

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones

Arquitectura de Computadoras Organización del CPU Basadas en las Notas de Teórico Versión 5.1 del Dpto. de Arquitectura-InCo-FIng

Programación de IA-32 Modo Real

Organización de Computadoras. Clase 7

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

EVOLUCIÓN HISTÓRICA DE LOS µp

Guía de ejercicios # 11 - Jerarquía de memoria

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Estructura de Computadores (EdC-ISW-G1) Boletín 4: Programación AVR

Unidad de Entrada-Salida Software de sistemas Parámetros característicos Ejemplo

PROGRAMA de Organización de Computadoras

TEMA VI DISEÑO DEL PROCESADOR

FUNDAMENTOS DE MICROPROCESADORES SOLUCIONES A LOS PROBLEMAS DE LA UNIDAD-3.- EL PROCESADOR I: EL LENGUAJE MAQUINA

Vista de Alto Nivel del Funcionamiento del Computador Interconectividad

Instituto Tecnológico de Morelia

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

Registros de direcciones de 32 bits A0 a A7 (A7 puntero de pila SP)

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

Funciones y Datos en Intel 8086

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Construyendo Programas más Complejos

Arquitectura de Computadores II Clase #4

Arquitectura de Computadores II Clase #4

Tema 4. Fundamentos del ensamblador

Dada la CPU con la estructura interna que se muestra en la figura,

Tema 4 (II) El procesador

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES I. Tema X Modos de Direccionamientos

Ejercicios del tema 4. El procesador

TEMA 1: Conceptos generales. 1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y hexadecimal.

Ensamblador martes, 9 de septiembre de :11

Procesadores ISA Macroarquitecura - Interfaces

Fundamentos de los Computadores Grado en Ingeniería Informática (hasta final del diseño monociclo)

Arquitectura Interna del 8088

Introducción Ejercicio Interrupciones Ejercicio DMA Cierre. Entrada/Salida. Organización del Computador I. Facundo Pessacg

MODOS DE DIRECCIONAMIENTO

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

ARQUITECTURA DEL PIC16F84A

Microcontrolador PIC16F84: Arquitectura

Práctica 4 - Arquitectura CPU

Funcionamiento de la Pila (o stack)

Tema 3 (III) Fundamentos de la programación en ensamblador

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

Examen de Arquitectura de Computadores 15 de septiembre de 2004

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES 1º I.T.I.G. I.T.I.S.

Arquitectura de Computadores

Arquitectura de Conjunto de Instrucciones (ISA) Integer Java Virtual Machine (IJVM) para Mic-1

Entorno de Ejecución del Procesador Intel Pentium

Tema 7. Entrada / Salida

Transcripción:

Organización de computadoras Clase 4 Universidad Nacional de Quilmes Lic. Martínez Federico

Memoria: Organización Lectura Escritura Direcciones Qué pasó?

Qué pasó? Memoria: Organización Lectura Escritura Direcciones Buses: Qué son? Tipos Efecto en el tamaño de la memoria

Qué pasó? Memoria: Organización Lectura Escritura Direcciones Buses: Qué son? Tipos Efecto en el tamaño de la memoria Q2: Modo de direccionamiento directo

Qué pasó? Memoria: Organización Lectura Escritura Direcciones Buses: Qué son? Tipos Efecto en el tamaño de la memoria Q2: Modo de direccionamiento directo Fetch de operandos

Qué pasó? Memoria: Organización Lectura Escritura Direcciones Buses: Qué son? Tipos Efecto en el tamaño de la memoria Q2: Modo de direccionamiento directo Fetch de operandos Accesos a memoria

Y ahora? Program Counter Modularización Reuso Especificación por contratos Llamadas a subrutinas Q3

Inicio Búsqueda de la instrucción Decodificación de la instrucción Hay operandos en memoria? SÍ Escribir SÍ Guardar resultado? NO Ejecución de la instrucción Obtener operandos Fin

Inicio Búsqueda de la instrucción Decodificación de la instrucción Hay operandos en memoria? SÍ Escribir SÍ Guardar resultado? NO Ejecución de la instrucción Obtener operandos Fin

Cómo sabe la CPU cual es la próxima instrucción?

Cómo sabe la CPU cual es la próxima instrucción?

Cómo sabe la CPU cual es la próxima instrucción? R O G R A M O U N T E R

Cómo sabe la CPU cual es la próxima instrucción? R ó X I M A O S A

Valor del PC Dirección Contenido 0x0001 0xFFF0 0x0002 0xAA0E 0x0003 0x00E7 0x0004 0x0672 0x0005 0x2059 0x0006 0x5BD3 Instrucción que se está ejecutando

Registros importantes IR (Instruction Register): contiene la instrucción que se está ejecutando MBR (Memory Buffer Register): Registro desde donde se lee o escribe a memoria. MAR (Memory Address Register): Registro para indicar la dirección para escribir o leer

Ejemplo Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0000

Busqueda de la instrucción Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0001 IR = 0x1200

Interpretación Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0001 IR = 0x1200 Mov [?? ], Inm

Búsqueda de instrucción Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0002 IR = 0x1200 0x0008 Mov [?? ], Inm

Interpretación Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0002 IR = 0x1200 0x0008 Mov [ 0x0008 ], Inm

Búsqueda de instrucción Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0003 IR = 0x1200 0x0008 0x1111 Mov [ 0x0008 ], Inm

Interpretación Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x0000 PC = 0x0003 IR = 0x1200 0x0008 0x1111 Mov [ 0x0008 ], 0x1111

Ejecución de la instrucción Dirección 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Contenido 0x1200 0x0008 0x1111 0x29C8 0xA0A0 0x0000 0x0000 0x0000 0x1111 PC = 0x0003 IR = 0x1200 0x0008 0x1111 Mov [ 0x0008 ], 0x1111

Rutina

Rutina Programa que queremos utilizar mas de una vez con otros de nuestros programas

Rutina Programa que queremos utilizar mas de una vez con otros de nuestros programas Implementa una cierta lógica acotada

Rutina Programa que queremos utilizar mas de una vez con otros de nuestros programas Implementa una cierta lógica acotada Nos permite modularizar y reusar código

Ejemplo Hacer un programa que calcule n 5 para los números que están en las celdas 0x1000,., 0x1007

Ejemplo Hacer un programa que grabe un 1 o un 0 en 0x0000,, 0x0005 según si los números de 0xF000,, 0xF0005 son impares o no

Modularizar

Modularizar Partir un problema en varios mas chicos Problemita 1 Problemón Problemita 1 Problemita 1

Modularizar Usar llamadas a función

Reuso

Reuso Escribir funciones que puedan ser usadas para resolver otros problemas. Y aprovecharlas! f1 Problema 1 f3 f2 f3 f1 f2 f3 f4 f4 Problema 2 f4 f2

Especificación Por qué? Queremos poder reutilizar subrutinas No podemos andar leyendo cada una para saber donde hay que pasarle los parámetros Ni para saber que hacen Lo documentamos!

Especificación por contratos

Especificación por contratos Modelamos con: Requiere Retorna Modifica

Especificación por contratos Pedimos lo que necesitamos: Requiere Notificamos qué vamos a devolver: Informamos que registros, celdas de memoria, flags, etc; vamos a modificar: Modifica

Requiere Dónde están los operandos? Ej: 0x0F0A es la dirección de uno de los números y en R1 el otro.

Requiere Dónde están los operandos? Ej: 0x0F0A es la dirección de uno de los números y en R1 el otro. Qué características deben tener? Ej: Ningúno de los número es 0, la suma de los dos operandos no se va de rango, etc

Cuál es el valor (o valores) que retorna y dónde. Ej: En R0 devuelve la suma de los valores. En R1 devuelve 1 si y solo si el número que estaba en R2 era impar.

Modifica Cambia el valor de algún registro? Cambian celdas de memoria?

Ejemplo Hacer un programa que divide dos números, el primero está en R0 y lo divide por el que está en R1, guardando el resultado en R7

Ejemplo Hacer un programa que divide dos números, el primero está en R0 y lo divide por el que está en R1, guardando el resultado en R7 Hacer un programa que sume los números que está en R1, R2 y R3 guardando el resultado en R3

Llamadas a subrutinas

Llamadas a subrutinas R0_a_5: MOV R1, R0 MUL R1, R0 MUL R1, R0 MUL R1, R0 MUL R1, R0 Cómo hago para calcular R7, R6 y R5 a la 5 usando esa función?

Llamadas a subrutinas Queremos dejar de ejecutar el código actual y pasar a ejecutar el de la subrutina

Llamadas a subrutinas Queremos dejar de ejecutar el código actual y pasar a ejecutar el de la subrutina

Llamadas a subrutinas Queremos dejar de ejecutar el código actual y pasar a ejecutar el de la subrutina

Llamadas a subrutinas Queremos dejar de ejecutar el código actual y pasar a ejecutar el de la subrutina

Llamadas a subrutinas Queremos dejar de ejecutar el código actual y pasar a ejecutar el de la subrutina Movemos el PC

CALL y RET Necesitamos nuevas instrucciones para poder ir a la rutina y volver a donde estábamos

CALL y RET Necesitamos nuevas instrucciones para poder ir a la rutina y volver a donde estábamos Se cambia el valor de PC

CALL y RET Necesitamos nuevas instrucciones para poder ir a la rutina y volver a donde estabamos Se cambia el valor de PC Se recupera el valor para volver

CALL y RET Necesitamos nuevas instrucciones para poder ir a la rutina y volver a donde estabamos Se cambia el valor de PC Se recupera el valor para volver Se usa la pila (Mas de esto el viernes!)

CALL y RET CALL: salta, pero guarda la dirección a donde tiene que volver (Mas adelante veremos cómo) RET: Salta al valor que guardo el CALL

CALL y RET Qué pasa si la rutina no hace ret?

Sigue corriendo!!

CALL y RET Qué pasa si la rutina no hace ret?

Modos de direccionamiento Modo Código Inmediato 000000 Registro 100RRR Directo 001000

Formato de instrucción: Instrucciones tipo 1: Cod Op (4bits) Modo Destino (6 bits) Modo origen (6 bits) Destino (16 bits) Origen (16 bits)

Operación Código Efecto MUL 0000 Dest Dest * Origen MOV 0001 Dest Origen ADD 0010 Dest Dest + Origen SUB 0011 Dest Dest - Origen DIV 0111 Dest Dest% Origen

Formato de instrucción: Instrucciones tipo 2: Cod Op (4 bits) Relleno (000000) Modo Origen (6 bits) Origen (16 bits)

Operaciones tipo 2: Operación Código Efecto CALL 1011 [SP] PC; SP SP-1; PC Origen

Formato de instrucción: Instrucciones tipo 3: Cod Op (4 bits) Relleno (000000000000)

Operaciones tipo 4: Operación Código Efecto RET 1100 PC [SP+1]; SP SP + 1

Etiquetas Le ponen nombre a posiciones de memoria donde queremos ir, para no tener que calcular posiciones de memoria a mano

Ejemplo Hacer un que calcule n 5 para los números que están en las celdas 0x1000,., 0x1007

Ejemplo Hacer un programa que grabe un 1 o un 0 en 0x0000,, 0x0005 según si los números de 0xF000,, 0xF0005 son pares o no

Qué deberían llevarse en la cabeza

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente)

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente) Pila SP Push y Pop

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente) Pila SP Push y Pop Subrtuinas Herramienta para modularizar y reusar

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente) Pila SP Push y Pop Subrtuinas Herramienta para modularizar y reusar Contratos Documentación de subrutinas Requiere, Asegura y Modifica

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente) Pila SP Push y Pop Subrtuinas Herramienta para modularizar y reusar Contratos Documentación de subrutinas Requiere, Asegura y Modifica Call y Ret Qué? Cómo?

Qué deberían llevarse en la cabeza Ciclo de instrucción: PC e IR MAR, MBR (ligeramente) Pila SP Push y Pop Subrtuinas Herramienta para modularizar y reusar Contratos Documentación de subrutinas Requiere, Asegura y Modifica Call y Ret Qué? Cómo?

Preguntas?

Bibliografía Organización y Arquitectura de computadoras, Stallings, Capítulo9.4, pág 333-336. Organización y Arquitectura de computadoras, Stallings, Capítulo9.4, pág 312, 317, 353-357