Técnicas Digitales III Ejemplo de multiprocesamiento - Semáforo Universidad Tecnológica Nacional Facultad Regional San Nicolás.

Slides:



Advertisements
Presentaciones similares
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
Advertisements

el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Capitulo 7: Procesamiento batch y el Job Entry Subsystem (JES)
Revisión Nº:Descripción:Fecha: 00Elaboración de la documentación30/06/11 Copia Controlada :Nº: F /REV. 00 ACCESO A LA WEB DEL CPR DE TARAZONA Cód.:
INTELIGENCIA ARTIFICIAL
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
Matemática Financiera 1º ADEUtilización de la Función TIR en el cálculo del tanto efectivo 1 de 37 Cálculo de tantos efectivos Utilización de la función.
TEMA 2 MÚLTIPLOS Y DIVISORES
Funciones lógicas y su simplificación
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
Diseño de Autómatas Finitos
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
MUESTREO (NAGA´s) BOLETÍN 5020
Fernando Escribano Pro 1º de Bachillerato
Medidas de Posición Central:
Ejemplo A continuación aparecen las tasas de retorno de dos fondos de inversión durante los últimos 10 años. 1. ¿Cuál es más riesgoso? 2. ¿En cuál invertiría.
GEOMETRIA PLANA.
Los elementos invertibles de Z6 son 1 y 5
C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281. C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281 1-Ingrese a menú 2-Ingrese a Mensajes 3-Ingrese a Correo 4-Seleccione.
PAGO DE LIQUIDACIONES ADUANERAS MEDIANTE VOLANTE ELECTRONICO DE PAGO
Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2.
APLICAWEB SERVICIOS LEGALES DE PUERTO RICO
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Phone2Wave-Server Manual de Operación.
1 Presentación: Copyright 2004© Nelson Arapé Basado en Introduction to Programming Using Java Versión 4 de David J. Eck Capítulo 1: Introducción a la Computación.
La maquina de Turing La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de.
Parte 3. Descripción del código de una función 1.
Administración de procesos y del procesador.
Tema 1.- Aritmética. 1.-Usar el algoritmo de Euclides para calcular el máximo común divisor de a y b y expresarlo en función de a y b para: a) a= 56,
UNIDAD 2: FUNCIONES.
1.- Si a un número se le restan 2/3 de su quinta parte, quedan 26.
Introducción a los Números Fraccionarios
SISTEMAS DE NUMERACIÓN
Capítulo: 9 Inventarios.
C REACIÓN DE B LOGS EN ESPOL Profesora: Eva María Mera Intriago Escuela Superior Politécnica del Litoral Impulsando la sociedad del conocimiento Instituto.
CÁLCULOS ESTEQUIOMÉTRICOS
Investigación Algorítmica
PROGRAMACION DE ESTRUCTURAS DE DATOS
Similar al ejercicio 1 propuesto Método de sustitución
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
PASOS PARA EL FORMATEO DE UN PC
SISTEMAS OPERATIVOS UNIDAD 1..
La transformada de Laplace
Algorítmo de Mapeo Directo
Objetivo. Dado que ya tenemos la planificación temporal del proyecto, que responde a: ¿Qué se hará?, ¿Quién lo hará?, y ¿Cuándo lo hará? ¿Qué recursos.
REGLAS DE LOS SIGNOS.
las tensiones simples instantáneas de un sistema
“¿Qué Pienso de mi futuro?”
¿ COMO PREPARARSE PARA UNA EVALUACIÓN ?
7a.1 Silberschatz, Galvin y Gagne ©2003 Sistemas Operativos 6ª edición Capítulo 7: Sincronización de procesos parte a.
Bloque 1: Sobre la satisfacción de los Alumnos/as del Centro Educativo. LOGROS IMPORTANCIA Sobre la tarea del profesorado Las enseñanzas recibidas.
SUCESIONES Y PROGRESIONES.
Cálculo diferencial (arq)
Teoría de Sistemas Operativos
SUMA DE FRACCIONES DEL TERCER TIPO.
Entradas FF Sincrónicas y Asincrónicas
Administración del Procesador
ELECTRICIDAD.
Diapositiva No. 1 Abril de 2012 Cámara de Comercio de Córdoba Monitor de Actividad Comercial en Córdoba Información generada por:
Direccionamiento de la red: IPv4
Técnicas Digitales III
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Capítulo 7 Gestión de memoria.
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
Máquinas de estado con VHDL
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Transcripción de la presentación:

Técnicas Digitales III Ejemplo de multiprocesamiento - Semáforo Universidad Tecnológica Nacional Facultad Regional San Nicolás

Multiprocesamiento Figura 1 - Sistema con dos procesadores

Multiprocesamiento Cada procesador posee su bus, memoria y E/S locales.

Multiprocesamiento Y ambos comparten un bus, memoria y E/S de sistema.

Multiprocesamiento Ejemplo: Se trata de un sistema de dos procesadores conectados como indica la figura 1. El primero de ellos (P1) adquiere datos de 5 temperaturas de un proceso cada 30 segundos. Luego de realizar la conversión a ºC los debe enviar al otro procesador (P2) para realice los cálculos apropiados de acuerdo a un modelo matemático y evalúe las correcciones necesarias. P1 P2 30 s t

Multiprocesamiento Para comunicar los procesadores se desea utilizar una tabla de 5 valores en la memoria compartida o de sistema

T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ Tabla 1 Multiprocesamiento T1 (0) indica el valor de temperatura 1 adquirido en el muestreo 0. La dirección del primer dato es acordada entre los dos procesadores y las de los restantes siguen en orden consecutivo. El procesador P2 debe poder leer la tabla en forma asincrónica, es decir, cuando lo estime conveniente, sin previo aviso de P1. Los 5 valores deben ser considerados como un “conjunto” de datos, que sólo es válido cuando hayan sido obtenidos en el mismo ciclo de muestreo (▲). P1P2

T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ Tabla 2 Multiprocesamiento El inconveniente que se puede presentar es que P2 lea la tabla de datos mientras P1 la está actualizando. En este caso, el conjunto de valores será una mezcla de datos nuevos, adquiridos en el muestreo (1) y viejos (0) (ver Tabla 2). El dato T4 leído por P2 no es válido (▼). P1 P2

T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ Tabla 3 (habilitada) Multiprocesamiento Para intentar la solución de este problema aprovecharemos las facilidades de HW y SW de ambos procesadores y agregaremos una posición mas en la tabla, que será una bandera o semáforo para controlar el acceso a la tabla. La misma en 00 indica que el conjunto de datos es coherente y corresponde al mismo muestreo. En este estado puede ser leído por P2. Con criterio mas amplio, la tabla está “habilitada”. P1P2 FLAG (00)

T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ Tabla 4 (bloqueada) Multiprocesamiento La bandera en FF indica que la tabla está siendo actualizada por P1 o leída por P2. En este estado, podemos decir que la tabla está “bloqueada” por el procesador que la está accediendo. P1 P2 FLAG (FF)

T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ Tabla 3 (habilitada) Multiprocesamiento Partimos de la situación en que los datos son coherentes y FLAG=00. Cuando P2 decide leer, verifica primero si FLAG=00. Si es así, pone FLAG=FF y luego lee los 5 datos. Si en el primer intento FLAG=FF, espera e intenta nuevamente. Luego de leer todos los datos, P2 pone FLAG=00. Cuando P1 necesita actualizar los datos, verifica primero si FLAG=00. Si es así, pone FLAG=FF, escribe los 5 datos y pone FLAG=00. P1P2 FLAG (00)

Multiprocesamiento Parecería que con este simple artilugio de SW es suficiente para solucionar nuestro problema, sin embargo no es así: P1 y P2 leen la memoria de sistema y la llevan a un registro interno donde determinarán su valor (00 o FF). Obsérvese que P1 y P2 no pueden utilizar el bus al mismo tiempo y además, la decisión de leer o no en función del valor de FLAG no se puede tomar en un solo ciclo de reloj. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00)

Multiprocesamiento Haremos la secuencia paso a paso, avanzando con cada ciclo de reloj. El estado inicial es la tabla habilitada. Ambos procesadores copian FLAG a un registro interno, pero no lo pueden hacer a la vez. Supongamos que P1 lo hace primero, leyendo (00). Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (xx) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (habilitada) P1 FLAG (00) Tiempo = 1

Multiprocesamiento Ahora lee P2, el mismo valor (00), ya que al ser el siguiente ciclo de reloj P1 no pudo aún bloquear la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (habilitada) P2 FLAG (00) Tiempo = 2

Multiprocesamiento P1 bloquea la tabla escribiendo FF, registra ese estado en su memoria local y se dispone a acceder a la tabla para actualizar los valores de T1 a T5. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (00) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) P1 FLAG (FF) (FF) Tiempo = 3

Multiprocesamiento Ahora lee P2, el mismo valor (00), ya que al ser el siguiente ciclo de reloj P1 no pudo aún bloquear la tabla. Al mismo tiempo, P1 realiza el cálculo de T1 y se dispone a escribirlo en la tabla. Supusimos que este cálculo demora 3 unidades de tiempo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(00) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) P2 FLAG (00) (FF) (T1) (1) Tiempo = 4

Multiprocesamiento P1 está en su segundo ciclo de cálculo y P2 se prepara para leer los valores de la tabla. A esta tarea le asignamos tres unidades de tiempo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(00) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) FLAG (FF) (FF) (T1) (2)(L1) (1) Tiempo = 5

Multiprocesamiento P1 está en su último ciclo de cálculo y P2 en su segundo paso de preparación para leer los valores de la tabla. Los símbolos ▲ indican que estos valores son coherentes, ya que corresponden al mismo muestreo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T1)(00) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) FLAG (FF) (FF) (T1) (3)(L1) (2) Tiempo = 6

Multiprocesamiento P1 escribe el valor T1 en la tabla (recordemos que para él está accesible porque fue quien la bloqueó), mientras P2 está en su último paso de preparación para leer los valores de la tabla. Los símbolos ▼ indican que estos valores no son coherentes, ya que corresponden a diferente muestreo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T1)(00) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ (bloqueada) FLAG (FF) (FF) (L1) (3) P1 Tiempo = 7

Multiprocesamiento P1 realiza el cálculo de T2 y se dispone a escribirlo en la tabla. Supusimos que este cálculo demora 3 unidades de tiempo. Al mismo tiempo, P2 lee el valor de T1 desde la tabla, que para él está habilitada, ya que él la bloqueó. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(T1) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ (bloqueada) P2 FLAG (00) (FF) (T2) (1) Tiempo = 8

Multiprocesamiento P1 está en su segundo ciclo de cálculo y P2 se prepara para leer el próximo valor de la tabla. A esta tarea le asignamos una unidad de tiempo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(00) T5 (0) ▲ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ (bloqueada) FLAG (FF) (FF) (T2) (2)(L2) Tiempo = 9

Multiprocesamiento P1 está en su último ciclo de cálculo. Al mismo tiempo, P2 lee el valor de T2 desde la tabla. Observe que este dato no corresponde al mismo muestreo que el anterior. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T2) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ (bloqueada) P2 FLAG (00) Tiempo = 10 (FF) (T2) (3)

Multiprocesamiento P1 escribe el valor T2 en la tabla, mientras P2 está en su último paso de preparación para leer los valores de la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T2)(00) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (FF) (L3) P1 Tiempo = 11

Multiprocesamiento P1 realiza el cálculo de T3 y se dispone a escribirlo en la tabla. Supusimos que este cálculo demora 3 unidades de tiempo. Al mismo tiempo, P2 lee el valor de T3 desde la tabla. Observe que este dato no corresponde al mismo muestreo que el anterior. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(T3) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (1) ▲ T1 (1) ▲ (bloqueada) P2 FLAG (00) Tiempo = 12 (FF) (T3) (1)

Multiprocesamiento P1 está en su segundo ciclo de cálculo y P2 se prepara para leer el próximo valor de la tabla. A esta tarea le asignamos una unidad de tiempo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(00) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (FF) (T3) (2)(L4) Tiempo = 13

Multiprocesamiento P1 realiza el cálculo de T3 y se dispone a escribirlo en la tabla. Supusimos que este cálculo demora 3 unidades de tiempo. Al mismo tiempo, P2 lee el valor de T3 desde la tabla. Observe que este dato no corresponde al mismo muestreo que el anterior. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T3)(T4) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (1) ▲ T1 (1) ▲ (bloqueada) P2 FLAG (00) Tiempo = 14 (FF) (T3) (3)

Multiprocesamiento P1 escribe el valor T3 en la tabla, mientras P2 está en su último paso de preparación para leer los valores de la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T3)(00) T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (FF) (L5) P1 Tiempo = 15

Multiprocesamiento P1 realiza el cálculo de T4 y se dispone a escribirlo en la tabla. Supusimos que este cálculo demora 3 unidades de tiempo. Al mismo tiempo, P2 lee el valor de T5 desde la tabla. Observe que este dato no corresponde al mismo muestreo que el anterior. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (xx)(T5) T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) P2 FLAG (00) Tiempo = 16 (FF) (T4) (1)

Multiprocesamiento Como se puede apreciar, en el tiempo 16 el procesador P2 leyó los 5 valores, pero T1 corresponde a una muestra distinta (mas nueva) que los restantes (T2 a T5). Por otra parte P1 continúa actualizando la tabla. En este momento falta escribir dos valores. T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ P2 T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ P1

Multiprocesamiento Recordemos que esto ocurrió porque los dos procesadores “vieron” el FLAG en 00 y por lo tanto consideraron que estaban habilitados para para operar con la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) LOCK

Multiprocesamiento Los procesadores diseñados para trabajar en sistemas de procesadores múltiples cuentan con un prefijo (instrucción LOCK) para bloquear el bus con la señal LOCK. Mientras el bus está bloqueado por P1, P2 no puede acceder al mismo. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) LOCK

Multiprocesamiento Los procesadores diseñados para trabajar en sistemas de procesadores múltiples cuentan con una instrucción XCHG para intercambiar un registro y memoria. Esta instrucción requiere dos ciclos de bus. Adicionándole el prefijo LOCK, se puede verificar la bandera y al mismo tiempo bloquearla, para que el otro procesador vea el estado correcto y pueda actuar en consecuencia. Veremos la secuencia nuevamente. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (00) XCHG

Multiprocesamiento Haremos la secuencia paso a paso, avanzando con cada ciclo de reloj. El estado inicial es la tabla habilitada, aunque para esta forma de trabajo es indiferente. P1 carga FF en el registo A para luego hacer LOCK XCHG. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (FF)(xx) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (habilitada) FLAG (00) Tiempo = 1

Multiprocesamiento P1 hace LOCK XCHG. Esta instrucción, en el primer ciclo de bus lee el FLAG y lo deposita en un registro temporario del procesador. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (xx) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (habilitada) P1 FLAG (00) Tiempo = 2a LOCK

Multiprocesamiento En el segundo ciclo, (recordemos que el bus está bloqueado) escribe FF (que estaba en el registro A) en el FLAG de la tabla. Luego copia el temporario en A, para poder operar con su valor. P2 carga FF en A. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) P1 FLAG (FF) Tiempo = 2b LOCK

Multiprocesamiento El bus está desbloqueado, pero ya no es problema porque la tabla está bloqueada por el FLAG en FF. P2 lee el FLAG con LOCK XCHG (de la misma forma que lo había hecho P1). Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (00)(FF) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) FLAG (FF) Tiempo = 3 P2 (habilitado)

Multiprocesamiento Con TEST AL,AL verifica que no puede acceder a la tabla porque FLAG está en FF. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (00)(FF) T5 (0) ▲ T4 (0) ▲ T3 (0) ▲ T2 (0) ▲ T1 (0) ▲ (bloqueada) FLAG (FF) Tiempo = 4 (habilitado)(bloqueado)

Multiprocesamiento P1 escribe T1 en la tabla. P2 permanece bloqueado por FLAG = FF. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T1)(FF) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (0) ▼ T1 (1) ▲ (bloqueada) P1 FLAG (FF) (habilitado) Tiempo = 8 (bloqueado)

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T2)(FF) T5 (0) ▼ T4 (0) ▼ T3 (0) ▼ T2 (1) ▲ T1 (1) ▲ (bloqueada) P1 FLAG (FF) (habilitado) Tiempo = 12 (bloqueado) P1 escribe T2 en la tabla. P2 permanece bloqueado por FLAG = FF.

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T3)(FF) T5 (0) ▼ T4 (0) ▼ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) P1 FLAG (FF) (habilitado) Tiempo = 16 (bloqueado) P1 escribe T3 en la tabla. P2 permanece bloqueado por FLAG = FF.

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T4)(FF) T5 (0) ▼ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) P1 FLAG (FF) (habilitado) Tiempo = 20 (bloqueado) P1 escribe T4 en la tabla. P2 permanece bloqueado por FLAG = FF.

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T5)(FF) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) P1 FLAG (FF) (habilitado) Tiempo = 24 (bloqueado) P1 escribe T5 en la tabla. P2 permanece bloqueado por FLAG = FF.

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (FF) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (habilitada) P1 FLAG (00) (habilitado) Tiempo = 25 (bloqueado) P1 escribe 00 en FLAG, ya que terminó de actualizar los cinco valores.

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (xx)(FF) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (habilitada) FLAG (00) (en espera) Tiempo = 26 (bloqueado) P2 intenta verificar si puede acceder a la tabla. Carga FF en el registo A para luego hacer LOCK XCHG.

Multiprocesamiento P2 hace LOCK XCHG. Esta instrucción, en el primer ciclo de bus lee el FLAG y lo deposita en un registro temporario del procesador. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (habilitada) P2 FLAG (00) Tiempo = 27a LOCK (bloqueado)

Multiprocesamiento Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (00)(FF) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) P2 FLAG (FF) Tiempo = 27b LOCK (bloqueado) En el segundo ciclo, (recordemos que el bus está bloqueado) escribe FF (que estaba en el registro A) en el FLAG de la tabla. Luego copia el temporario en A, para poder operar con su valor.

Multiprocesamiento Con TEST AL,AL, P2 verifica que puede acceder a la tabla porque FLAG está en 00. En FLAG quedó el FF que puso XCHG, lo que inhabilitará a P1 cuando intente acceder. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) Tiempo = 28 (en espera)(habilitado)

Multiprocesamiento En un intento por escribir en la tabla, P1 carga FF en el registo A para luego hacer LOCK XCHG. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) Tiempo = 29 (habilitado) T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF)

Multiprocesamiento P1 hace LOCK XCHG. Esta instrucción, en el primer ciclo de bus lee el FLAG y lo deposita en un registro temporario del procesador. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) P1 Tiempo = 30a LOCK T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)

Multiprocesamiento En el segundo ciclo, (recordemos que el bus está bloqueado) escribe FF (que estaba en el registro A) en el FLAG de la tabla. Luego copia el temporario en A, para poder operar con su valor. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) Tiempo = 30b LOCK P1 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)

Multiprocesamiento P1 hace TEST AL,AL, verificando que FLAG estaba en FF y por ende queda bloqueado para escribir. P2 lee el primer valor de la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T1) Tiempo = 31 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)(bloqueado) P2

Multiprocesamiento P2 lee T2. P1 puede intentar escribir, pero encontrará FF en FLAG y deberá esperar. Esto no afectará las posteriores lecturas de P2 sobre la tabla. Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T2) Tiempo = 33 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)(bloqueado) P2

Multiprocesamiento P2 lee T3 Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T3) Tiempo = 35 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)(bloqueado) P2

Multiprocesamiento P2 lee T4 Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T4) Tiempo = 37 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)(bloqueado) P2

Multiprocesamiento P2 lee T5 Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (FF) (T5) Tiempo = 39 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (bloqueada) FLAG (FF) (habilitado)(bloqueado) P2

Multiprocesamiento P2 escribe 00 en FLAG, liberando la tabla al otro procesador Bus Sistema (multibus) CPU latch8289 E/S MEM CPU latch8289 # 1# 2 (00) (FF)(00) Tiempo = 40 T5 (1) ▲ T4 (1) ▲ T3 (1) ▲ T2 (1) ▲ T1 (1) ▲ (habilitada) FLAG (00) (en espera)(bloqueado) P2

Técnicas Digitales III Fin de la presentación Visítenos en: Universidad Tecnológica Nacional Facultad Regional San Nicolás