Taller de Buses. Organización del Computador 1 Primer Cuatrimestre 2016

Documentos relacionados
Organización del Computador I. David Alejandro González Márquez

Organización de Computadoras. Clase 6

Práctica 9. Organización del Computador 1 2do. Cuatrimestre de 2005

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

ESTRUCTURA DE ASIGNACIÓN

Trabajo Práctico 5 Estructura Repetitiva

COMPILACIÓN Y DISCOS DE DISTRIBUCIÓN DE UNA APLICACIÓN

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Práctica 7 - Buses. Organización del Computador 1 1er. Cuatrimestre 2006

Juego Jarras con Agua Guía del Usuario

Velocidades Típicas de transferencia en Dispositivos I/O

MEMORIAS. Arquitectura de Computadoras. (Conceptos Introductorios) M. C. Felipe Santiago Espinosa

TEORÍA BÁSICA PASOS PARA APAGAR EL SISTEMA

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús

Cadenas de caracteres

1: PROCESO BÁSICO DE DESARROLLO CON

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Tema 2: Conceptos básicos. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Examen 22 de Febrero 2006

MANUAL DEL USUARIO J-UML

CICLOS DEL PROCESADOR

PROBLEMAS TEMA 1: Estructuras de interconexión de un computador

GUÍA DE IMPLEMENTACIÓN ADDENDA ELEKTRA

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

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

EVOLUCIÓN HISTÓRICA DE LOS µp

Guía de Instalación de fastpos

CONTROLADOR DE TIMBRE AUTOMÁTICO

Modelo Computacional Binario Elemental

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

MANUAL DE USUARIO PARA EL SISTEMA DE CAPTURA DE OFERTAS DEL SISTEMA DE ADQUISICIONES DEL MINSAL Versión 2.02 Manual de Usuario para el Proveedor

CURSO: MICROCONTROLADORES UNIDAD 4: COMUNICACIÓN SERIE- ARDUINO PROFESOR: JORGE ANTONIO POLANÍA

Laboratorio 06. Diseño e implementación de un sistema digital para la captura de caracteres desde teclado

SISTEMA DE DDJJ AGENTES DE RETENCIÓN/PERCEPCIÓN INDICACIONES PARA SU INSTALACIÓN

Diseño e Implementación de detección de errores mediante CRC y algoritmo que supervisa la comunicación entre dispositivos.

100 ejercicios básicos sobre Linux

Versión 1.19 BOLETIN (JUNIO 2015) a2 SIVPRE Versión a2 softway C. A.

Tema: Uso del programa DFD

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

Universidad Autónoma del Estado de México Facultad de Medicina

INTRODUCCIÓN. Comunicación Serial.

Magellan Content Manager 2.0

Instalación de MySQL, PHP y Servidor Apache en Windows

UNIX. Curso de Modelado Molecular I INTRODUCCIÓN

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal

- 1 - MANUAL DE USUARIO - AFILIADOS CONTENIDO

MANUAL DE USUARIO PARA LA DECLARACIÓN INFORMATIVA SOBRE EL ISR DIFERIDO EN CONSOLIDACION FISCAL 19-A Versión 2.0.0

MANUAL DE INSTALACIÓN ACTUALIZACIÓN VERSIÓN

Tema 0. Introducción a los computadores

SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE

MANUAL DEL USUARIO SISTEMA WEB. Última actualización: Septiembre de 2016

Diagrama de una computadora. Unidad Central de procesamiento (CPU)

Modulo LCD MODULO LCD

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información

Facultad de Informática Universidad Euskal Herriko del País Vasco Unibertsitatea Arquitectura de Computadores I Guión de los laboratorios de E/S 1

Servicios del Sistema Operativo (SO)

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Partes de una computadora. Conceptos Generales. Elementos de Computación (CU) Computación (TIG) El Hardware de una computadora

X-RiteColor Master Web Edition

Tema: Introducción al IDE de Microsoft Visual C#.

Sistemas Operativos Tema 2: Estructura del computador José Miguel Santos Alexis Quesada Francisco Santana

TRIBUNAL DE LO CONTENCIOSO ADMINISTRATIVO DEL ESTADO DE GUANAJUATO JUICIO EN LÍNEA. Manual para el usuario externo (con cuenta registrada) Versión 1.

MANUAL DE REFERENCIA DE INSTALACIÓN RÁPIDA SISTEMA DE CONTROL DE ASISTENCIAS DE PERSONAL ON THE MINUTE VERSION 4.0

Plan de estudios Cómputo II RSM-C-02

MANUAL DE USUARIO ENERO 2015

Java desde Consola Utilizando Java sin Path

Estimado estudiante. Bienvenido!!!! En esta oportunidad veremos Objetos Virtuales de Aprendizaje.

Mª DOLORES CARBALLAR FALCÓN L

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

Generación de Certificados SSL con IIS

MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255

En este apunte nos centraremos en cómo instalar el Klogic en diferentes distribuciones Linux

INGRESO AL AL SISTEMA PORTAL INM. Pago de Derechos por Servicios Migratorios Pesca deportiva

Práctica 2 - Manejo de estructuras de datos y punteros

How to 5 Creación de usuarios y grupos

Manual de Instalación

Introducción a Sistemas Operativos: Ficheros

Guía para el nuevo proceso de postulación de Becas CONACYT Nacionales.

BECAS CONACYT NACIONALES 2014 INVERSION EN EL CONOCIMIENTO GUÍA PARA EL NUEVO PROCESO DE POSTULACIÓN DE BECAS CONACYT NACIONALES.

MANUAL DE INSTALACIÓN DEL DIMM ANEXOS Y FORMULARIOS Linux

Dra. Jessica Andrea Carballido

PROF. ANGEL MENDEZ YALLI.

Cómo hacer pedidos en linea

Plataforma tecnológica para la conformación del Sistema Nacional de Información Básica en Materia de Salud (SINBA)

POLICIA DEL ESTADO BOLÍVAR

TEMA 6: Manejo de archivos, permisos y navegación en GNU/LINUX.

Ing. Rojas Córsico, Ivana

36.- Como Manejar Prevención de Riesgos

AR 1 T. Tutorial 1. Introducción a Arduino Controlando un LED.

Paradigmas de Programación Práctica 6

MANUAL DEL USUARIO CONTROL TRACKER VERSION 3.1

Prácticas de Fundamentos del Software

Interrupciones. Sistemas con Microcontroladores y Microprocesadores.

Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para computadora, en el que cada paso del algoritmo se

Ficha Vista. Grupo Vista de libro

Periféricos Básicos Visualizador LCD

Formato para prácticas de laboratorio

INSTRUCTIVO SIGEVA-UNL MODULO INFORME DE PROYECTOS

Indice. Entorno Gráfico (KDE) Almacenamiento. Definición WRITE (Procesador de Texto) CONCEPTOS BASICO OPEN OFFICE

Transcripción:

Taller de Buses Organización del Computador 1 Primer Cuatrimestre 2016 Introducción Un bus está compuesto por cables o líneas que se pueden dividir según su propósito: para datos, para direcciones o de control. En este taller simularemos el comportamiento de un bus. Cada línea del bus estará representada por un archivo. Estos archivos contendrán un solo número entero: 0, 1 ó 1, identificando el estado de dicha línea. El valor 1 representa el estado de alta impedancia, en el cual el dispositivo se desconecta de la línea. Los dispositivos del sistema que interactúan por medio del bus estarán simulados por programas que leen y escriben estos archivos según corresponda al protocolo. Para no complicar en exceso la simulación a realizar, se simularán protocolos sincrónicos. Este tipo de buses utiliza una línea especial llamada reloj () que varía entre 0 y 1 regularmente. El comportamiento de los dispositivos se divide en dos etapas identificadas por el estado del reloj. Durante el estado 1 (l Hh), los dispositivos pueden escribir en las señales que les correspondan pero no pueden leerlas, ya que las líneas no están estables. Cuando el reloj pasa a valer 0 (estado h Ll) los dispositivos pueden leer las líneas, pero no pueden escribirlas. Ejemplo En este ejemplo se muestra un ciclo de lectura entre un cpu y la memoria de sólo lectura. El bus esta compuesto por siete señales: req, ack, d0, d1, d2, d3 y la señal de sincronía (los dispositivos sólo pueden leerla). La señal req es comandada por el cpu, mientras que la señal ack es comandada por la memoria. El resto de las señales se comparten entre los dos dispositivos. Anotando entre paréntesis la entidad con autoridad sobre cada línea, el protocolo del lectura de este bus consiste en: LL HH LL HH LL HH LL HH LL req (cpu) LLL HHHH L LLLLLLLLLL ack (memoria) LLLLLLLL LLL HHHH LLL d3... d0 mbmb<dddd>m mbmb<dddd>mbmb El cpu coloca en las señales d3... d0 la dirección del dato y levanta la señal req. La memoria detecta que la señal req está levantada y lee d3... d0. El cpu libera las señales d3... d0 y baja la señal req. La memoria coloca el dato de la dirección pedida y levanta la señal ack. El cpu lee el dato. La memoria finaliza el ciclo liberando las señales d3... d0 y bajando su señal ack. La máquina de estados que describe el protocolo implementado por el CPU es: 1

[3-L,4-L,..,n-L] ack==0 [n+1-l] [1-L] ack==0 [1-H] req 1 d3..d0 dir [2-L] ack==0 [2-H,3-H,..,n-H] req 0 d3..d0 Hi-Z ack==1 Leo el dato desde d3..d0 [n+1-h] Sin cambios CPU-EJEMPLO Este protocolo está implentado en los siguientes archivos: reloj.cpp: Programa que escribe regularmente. memoria.cpp: Programa que implementa el comportamiento de la memoria. cpu.cpp: Programa que implementa el comportamiento del cpu. print.cpp: Programa que permite imprimir el bus para los semiciclos bajos (semiciclo de lectura). bus.h: Definición de funciones útiles. bus.cpp: Implementación de funciones útiles. Makefile: Archivo para la generación de los ejecutables. Las funciones implementadas en bus.cpp son: int read(string linea): Dado el nombre de una línea (el nombre del archivo), lee su contenido. void write(string linea, int x): Escribe el valor x en la línea de nombre linea (para Hi-Z se escribe -1). Para poder probar el ejemplo se deben compilar los programas (comando make). Luego deben ser ejecutados siguiendo el siguiente orden: reloj, print, memoria y por último cpu. El programa cpu solicitará los 4 bits de la dirección a ser leída y procesará ese pedido. Para visualizar el bus, ejecutar: python visual.py (sin parámetros). En forma alternativa, se pueden lanzar todos los programas automáticamente con el visualizador gráfico, ejecutando únicamente: python visual.py a a a a, donde a corresponde a un bit de la dirección que el CPU solicita a la memoria. Ejemplo: python visual.py 1 0 0 1 Ejercicio 1 Ingresar a la carpeta ej1 y compilar el código. Luego, abrir tres consolas y en cada una de ellas ejecutar en orden los programas reloj, print y KITT. El visualizador visual.py en este caso se ejecuta sin parámetros. Si se desea que los programas se corran automáticamente se debe ejecutar únicamente: python visual.py 0. Se pide: a) Realizar el diagrama de tiempos para todas las señales b) Modificar el programa KITT para que realice la siguiente secuencia: Paso 1 0 0 0 Paso 2 0 1 0 Paso 3 1 0 1 Paso 4 0 1 0 2

Ejercicio 2 Completar el esqueleto de cpu provisto para simular el comportamiento de un ciclo de escritura para un bus sincrónico con las señales req, ack, r/w, d0, d1, d2 y d3: LL HH LL HH LL HH LL HH LL HH LL HH LL HH LL req (cpu) LLL HHHHH HHHHHHHHHHHH HHHHHHH LLL r/w (cpu) mbmbmlllll LLLLLLLmbmbmbmbm mbmbmbmbmbmbmbmbmb ack (memoria) LLLLLLLL LLL HHHH LLLLL LLL HHHH LLL d3... d0 mbmb<ddddd DDDDDDd><dDDDD DDDDDDD>mbmbm El cpu baja la señal r/w, coloca en las señales d3... d0 la dirección en donde desea escribir y levanta la señal req. La memoria lee la señal req activa y la dirección en d3... d0. El cpu mantiene sus señales a la espera de una señal de la memoria. La cantidad de ciclos que tarda en aparecer no es conocida por el cpu. La memoria levanta la señal ack durante un ciclo, indicándole al cpu que ya puede colocar el dato que desea guardar en d3... d0. El cpu libera la señal r/w y coloca en d3... d0 el dato que desea almacenar. La memoria lee el dato colocado por el cpu y procede a almacenarlo en la dirección leída previamente. El cpu mantiene sus señales a la espera de una señal de la memoria. La cantidad de ciclos que tarda en aparecer no es conocida por el cpu. La memoria levanta nuevamente la señal ack durante un ciclo de reloj indicándole al cpu que ya almacenó el dato y que puede finalizar el ciclo de escritura. El cpu baja todas sus señales y libera las señales d3... d0. La memoria finaliza el ciclo de escritura bajando su señal ack. Se pide: Realizar la máquina de estados del CPU que describa el protocolo. Agregar el código necesario dentro del archivo cpu.cpp en la carpeta ej2 para simular el comportamiento de una CPU compatible con el protocolo descripto. Si se utiliza el visualizador visual.py se debe ejecutar de la siguiente forma: python visual.py a a a a v v v v, donde a indica un bit de dirección y v un bit del valor en esa dirección. Si se ejecuta sin parámetros se asume que los procesos se lanzarán manualmente. Ejercicio 3 Utilizando de base lo desarrollado hasta ahora, construir una simulación del comportamiento de un ciclo de lectura para un bus sincrónico con las señales req, ack, r/w, d0, d1, d2 y d3. El comportamiento se describe por el siguiente diagrama de tiempos: LL HH LL HH LL HH LL HH LL HH LL HH LL HH LL req (cpu) LLL HHHHH HHHHHHH LLLLL LLL HHHH LLL r/w (cpu) mbmbmhhhhh HHHHHHHmbmbmbmbm mbmbmbmbmbmbmbmbm ack (memoria) LLLLLLLL LLL HHHH LLLL H HHHHHHH LLL d3... d0 mbmb<ddddd DDDDDDd>mbmbmm<D DDDDDDD>mbmbm El cpu levanta la señal r/w, coloca en las señales d3... d0 la dirección que desea leer y levanta la señal req. La memoria lee la señal req activa, la dirección en d3... d0 y comienza la búsqueda del dato requerido por el cpu. El cpu mantiene sus señales a la espera de una señal de la memoria. La cantidad de ciclos que tarda en aparecer no es conocida por el cpu. 3

La memoria levanta la señal ack durante un ciclo de reloj indicándole al cpu que ya puede liberar las líneas d3... d0 para que la memoria escriba los datos. El cpu libera la señal r/w, las líneas d3... d0 y baja la línea de req. La memoria espera un ciclo de reloj a que el cpu libere las líneas d3... d0 donde escribirá el dato. La memoria escribe en las líneas d3... d0 el dato requerido por el cpu y levanta su señal ack. La memoria mantiene sus señales a la espera de una señal del cpu. La cantidad de ciclos que tarda en aparecer no es conocida por la memoria. El cpu levanta la señal req durante un ciclo de reloj indicándole a la memoria que ya leyó el dato y que puede finalizar el ciclo de lectura. La memoria baja todas sus señales y libera las señales d3... d0. Se pide: Realizar la máquina de estados del CPU que describa el protocolo. Completar el programa dado de forma que permita tomar una dirección y procesar un ciclo de lectura. Para esto agregue el código necesario dentro del archivo cpu.cpp en la carpeta ej3. El visualizador en este ejercicio debe invocarse como: python visual.py a a a a. Ejercicio 4 (optativo) Se desea simular un nuevo sistema diferente al de los dos ejercicios anteriores. En este caso se poseen tres dispositivos, donde cada uno puede leer o escribir en cualquiera de los otros dos. El dispositivo que realice la lectura o escritura se llamará maestro y el que responda al pedido se llamará esclavo. El sistema requiere simular dos protocolos independientes, uno para adquirir el bus y otro para utilizarlo. r/w dev0... dev1 addr0... addr3 data0... data3 dispositivo 1 dispositivo 2 dispositivo 3 ack1 req1 ack2 req2 ack3 req3 árbitro Adquisición del bus Además de los tres dispositivos, el sistema posee un árbitro que permite organizar las solicitudes del bus. Cada dispositivo posee dos señales que lo conectan con el bus, req y ack. El dispositivo i puede escribir en req i y leer de ack i. Mientras que el árbitro puede leer req i y escribir ack i. Para adquirir el bus, el dispositivo debe encender su señal req i sincrónicamente y esperar una respuesta del árbitro. El árbitro en algún ciclo de reloj posterior, levantará la señal ack i correspondiente al dispositivo que solicitó el bus. Al ciclo siguiente el dispositivo puede hacer uso del bus. Cuando el dispositivo desea liberar el bus, debe bajar sincrónicamente su señal req i y al ciclo siguiente el árbitro bajará la señal ack i indicando la liberación del bus. req i (dispositivo i ) ack i (árbitro) bus LL HH LL HH LL HH LL HH LL HH LL HH LL HH LL LLL HHHHHHH HHHHHHHH HHHH H LLLLLLL LLLLLLLLLL L HHHHHHH HHHH HHHHH LLL mbmbmbmbmbmbmbmbm bmbmbmb<ddd DDDD D>mbmbmbmbmbm 4

1 El dispositivo i levanta la señal req i. 2 El dispositivo i espera que el árbitro levante la señal ack i para utilizar el bus, lo cual puede tardar una cantidad variable de ciclos en ocurrir. 3 El árbitro levanta la señal ack i otorgando el bus al dispositivo i. 4 El dispositivo i puede utilizar el bus libremente durante los ciclos que desee. 5 Uso del bus por parte del dispositivo i. 6 El dispositivo i libera las señales y baja su señal req i. 7 El árbitro del bus baja la señal ack i liberando el bus para un nuevo pedido. Protocolo de bus El bus cuenta con las siguientes señales, sin enumerar el reloj (): dev 0, dev 1 : Indica el dispositivo con el cual interactuar. addr 0 addr 3 : Indica la dirección donde leer o escribir. data 0 data 3 : Indica el dato enviado o recibido por los dispositivos. r/w: Indica si se trata de un ciclo de lectura o escritura. Las señales dev 0 y dev 1 indican el dispositivo con el cual interactuar dependiendo de la siguiente tabla: Ciclo de lectura: dev 1 dev 0 0 0 ninguno 0 1 dispositivo 1 1 0 dispositivo 2 1 1 dispositivo 3 dev 0 dev 1 r/w addr 0 addr 3 data 0 data 3 LL HH LL HH LL HH LL mbmbmhhhhhhhhhmbmbm mbmbm<dddd>bmbmbmbmbm mbmbmbmbmbm<dddd>bmbmb 1 El dispositivo maestro setea las señales dev 0 y dev 1 indicando el dispositivo donde leer, levanta la señal r/w y setea las señales de addr 0 addr 3 indicando la dirección a leer durante un ciclo de reloj. El dispositivo esclavo reconoce que debe atender el pedido y lee la dirección del bus para comenzar el ciclo de lectura. 2 El dispositivo esclavo setea las señales data 0 data 3 con el dato requerido durante un ciclo de reloj. 3 El dispositivo maestro baja sus líneas y setea dev 0 y dev 1 a dispositivo ninguno. Ciclo de escritura: dev 0 dev 1 r/w addr 0 addr 3 data 0 data 3 LL HH LL HH LL HH LL mbmbmlllllllllmbmbm mbmbm<dddddddd>bmbmb mbmbm<dddddddd>bmbmb 1-2 El dispositivo maestro setea las señales dev 0 y dev 1 indicando el dispositivo en el cual escribir, baja la señal r/w, setea las señales de addr 0 addr 3 indicando la dirección a donde escribir y coloca el dato en las señales data 0 data 3. Todo esto durante dos ciclos de reloj. El dispositivo esclavo reconoce que debe atender el pedido y comienza la escritura del dato en la dirección indicada. 3 El dispositivo maestro baja sus líneas y setea dev 0 y dev 1 a dispositivo ninguno. 5

Se pide: Completar el programa dado de forma que permita: a) Responder a un ciclo de lectura b) Responder a un ciclo de escritura c) Generar un ciclo de lectura d) Generar un ciclo de escritura Para esto agregue el código necesario dentro del archivo dispositivo.cpp en la carpeta ej4. A. Comandos útiles para usar linux A continuación se listan comandos necesarios para la ejecución del taller. cd nombredirectorio Cambia del directorio actual al subdirectorio llamado nombredirectorio cd.. cambia del directorio actual al directorio inmediatamente superior pwd imprime en pantalla el directorio actual ls lista el contenido del directorio actual make ejecuta las instrucciones especificadas adentro del archivo Makefile python visual.py ejecuta el visualizador unicamente en modo visualización, se deben lanzar los procesos de manera independiente./ejecutable lanza el programa compilado en el archivo ejecutable. Por ejemplo, para el programa del clock hacemos./clock Control + c para terminar la ejecución de un programa 6