Your SlideShare is downloading. ×
Unidad iv
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Unidad iv

167

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
167
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 4.1.- Configuraciones memoria compartida distribuidaComputación paralelaUn computador paralelo es un conjunto de procesadores capaces de cooperar en la soluciónde un problema.El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones.Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs.Técnicas computacionales que descomponen un problema en sus tareas y pistas que puedenser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.¿Por qué utilizar computación paralela?Reducir el tiempo de procesamiento.Resolver problemas de gran envergadura.Proveer concurrencia.Utilizar recursos remotos de cómputo cuando los locales son escasos.Reducción de costos usando múltiples recursos ”baratos” en lugar de costosassupercomputadoras.Ampliar los límites de memoria para resolver problemas grandes.El mayor problema de la computación paralela radica en la complejidad de sincronizar unastareas con otras, ya sea mediante secciones críticas, semáforos o paso de mensajes, paragarantizar la exclusión mutua en las zonas del código en las que sea necesario.La computación paralela está penetrando en todos los niveles de la computación, desdecomputadoras masivamente paralelas usados en las ciencias de larga escala computacional,hasta servidores múltiples procesadores que soportan procesamiento de transacciones. Losprincipales problemas originados en cada uno de las áreas básicas de la informática (porejemplo, algoritmos, sistemas, lenguajes, arquitecturas, etc.) se vuelven aún más complejosdentro del contexto de computación paralela. 4.1.1.- De circuitos basados en bus, anillo o con
  • 2. conmutadorEn la topología de bus todos los nodos (computadoras) están conectadas a un circuitocomún (bus).La información que se envía de una computadora a otra viaja directamente oindirectamente, si existe un controlador que en ruta los datos al destino correcto.La información viaja por el cable en ambos sentidos a una velocidad aproximada de 10/100Mbps y tiene en sus dos extremos una resistencia (terminador).Se pueden conectar una gran cantidad de computadores al bus, si un computador falla, lacomunicación se mantiene, no sucede lo mismo si el bus es el que falla.El tipo de cableado que se usa puede ser coaxial, par trenzado o fibra óptica.Topología de anillo:En la topología de anillo los nodos computadoras (nodos) están conectadas a la siguiente,formando un anillo. Cada computadora tiene una dirección única.Cuando un mensaje es enviado, este viaja a través del lazo de computadora encomputadora. Cada una de ellas examina la dirección de destino.
  • 3. Si el mensaje no está direccionado a ella, reenvía el mensaje a la próxima computadora, yasí hasta que el mensaje encuentre la computadora destino.Si se daña el cable, la comunicación no es posible.
  • 4. 4.2.- Modelos de consistenciaLa duplicidad de los bloques compartidos aumenta el rendimiento, pero produce unproblema de consistencia entre las diferentes copias de la página en caso de una escritura.Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por lared provoca que el tiempo de espera aumente demasiado, convirtiendo este método enimpracticable. Para solucionar este problema se proponen diferentes modelos deconsistencia, que establezcan un nivel aceptable de acercamiento tanto a la consistenciacomo al rendimiento. Nombramos algunos modelos de consistencia, del más fuerte al másdébil: consistencia estricta, secuencial, causal, PRAM, del procesador, débil, de liberacióny de entrada. 4.2.1.- Estricta, causal, secuencial, débil, de liberación y de entradaConsistencia EstrictaEl modelo de consistencia más restrictivo es llamado consistencia estricta y es definido porla siguiente condición Cualquier lectura sobre un ítem de dato x retorna un valorcorrespondiente con la más reciente escritura sobre x.a) Un almacenamiento estrictamente consistente.b) Un almacenamiento que no es estrictamente consistente.Consistencia Causal:El modelo de consistencia causal (Hutto and Ahamad, 1990) es un debilitamiento de laconsistencia secuencial. Se hace una diferenciación entre eventos que están potencialmenterelacionados en forma causal y aquellos que no. Las operaciones que no están causalmenterelacionadas se dicen concurrentes.La condición a cumplir para que unos datos sean causalmente consistentes es:Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todoslos procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un ordendiferente sobre diferentes máquinas.
  • 5. Esta secuencia es permitida con un almacenamiento causalmente consistente, pero no conun almacenamiento secuencialmente consistente o con un almacenamiento consistente enforma estricta.Consistencia secuencial:La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta.Satisface la siguiente condición:El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todoslos procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones decada proceso individual aparecen en esta operaciones de cada proceso individual aparecenen esta secuencia en el orden especificado por su programa.a) Un dato almacenado secuencialmente consistente.b) Un dato almacenado que no es secuencialmente consistente.Consistencia Débil:Los accesos a variables de sincronización asociadas con los datos almacenados sonsecuencialmente consistentes.Propiedades:No se permite operación sobre una variable de sincronización hasta que todas las escriturasprevias de hayan completado. No se permiten operaciones de escritura o lectura sobre ítemsde datos hasta que no se hayan completado operaciones previas sobre variables desincronización.Consistencia liberación (Release):El modelo de consistencia release, se basa en el supuesto de que los accesos a variablescompartidas se protegen en secciones críticas empleando primitivas de sincronización,como por ejemplo locks. En tal caso, todo acceso esta precedido por una operaciónadquiere y seguido por una operación release. Es responsabilidad del programador que estapropiedad se cumpla en todos los programas.Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que hansido modificadas mientras se encuentren protegidas en la sección crítica, la actualización decualquier modificación puede postergarse hasta el momento en que se lleva a cabo laoperación release.La operación release no se da por completada hasta que la actualización haya sidopropagada a todos aquellos procesadores en donde haya replicas. Con RC, la propagaciónde un conjunto de modificaciones a memoria compartida se lleva a cabo con un costo fijo.Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuenciaobtuvo un valor inconsistente para la variable leída.
  • 6. 4.3.- Mcd en base a páginasEl esquema de MCD propone un espacio de direcciones de memoria virtual que integre lamemoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginasquedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intentaacceder a una posición virtual de memoria, se comprueba si esa página se encuentra de formalocal. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página alresto de computadoras. El sistema funciona de forma análoga al sistema de memoria virtualtradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta quela petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primeravista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en larealidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca untráfico de páginas excesivo.Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones enuna zona local y privada y una zona de memoria compartida, que se usará únicamente porprocesos que necesiten compartir datos. Esta abstracción se acerca a la idea deprogramación mediante la declaración explícita de datos públicos y privados, y minimiza elenvío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse. 4.3.1.- Diseño, replica, granularidad, consistencia, propietario y copiasDiseñoDe la descripción del sistema DSM-PEPE, es evidente que la especificación de losprotocolos que implementan los distintos modelos de consistencia de memoria se encuentradispersa entre los componentes del sistema. Esto está relacionado con el hecho que losprotocolos implementados desencadenan sus acciones de consistencia bajo distintascondiciones. En el caso del protocolo de consistencia secuencial, las acciones deconsistencia se desencadenan a partir de faltas de página detectadas por el sistemaoperativo, y en el caso del protocolo de consistencia de entrada, por acciones desincronización explícitas dentro del código del usuario.El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación denuevos protocolos de consistencia como la modificación de los ya existentes, debido a quelos componentes tienen además de su funcionalidad básica responsabilidades que no lescorresponden. Por ejemplo, los objetos DSMPage y DSMLock se encargan de ejecutaracciones de consistencia, a pesar que no es función de ellos manejar este tipo de acciones.Específicamente la clase DSMPage debería encargarse de realizar actualizaciones de laspáginas y mantener el estado de ellas; la clase DSMLock debería manejar únicamenteacciones de sincronización como el envío y recepción del token de exclusión mutua. Seríadeseable con el propósito de tener un mejor diseño que estas clases no incluyeran accionesligadas a los protocolos de consistencia como ocurre en este momento.
  • 7. Para mejorar el diseño de este sistema es necesario extraer y luego encapsular laespecificación de los protocolos de consistencia de manera que sea el aspecto quien tomelas acciones de consistencia necesaria. Más aún, a partir del hecho que los protocolos deconsistencia dependiendo de su tipo toman acciones de consistencia en diferentescomponentes se propone que cada modelo de consistencia de memoria en DSM-PEPE seaconsiderado como un aspecto.A partir del análisis de los protocolos de consistencia de DSM-PEPE ya explicadosejemplificaremos nuestra propuesta, detallando las modificaciones que se deben realizarpara conseguir un mejor diseño.Replica 1. Replicar los bloques de sólo lectura 2. Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.GranularidadLos distintos tipos de grafo se diferencian por la granularidad de sus nodos y la informacióncontenida en las aristas. En todos los casos, los nodos del grafo contienen un apuntador auna operación de la representación en WHIRL. A su vez, las operaciones de larepresentación intermedia también tienen asociado un apuntador que les va a permitiracceder al nodo correspondiente del grafo de dependencias. En el grafo de dependenciasentre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que enel grafo de niveles de dependencia, los nodos apuntan a sentencias, que son elementos demayor granularidad.Respecto a las aristas, estas van a contener vectores de dependencia en el grafo dedependencias entre arrays o una etiqueta indicando el nivel de la dependencia en el caso delgrafo de niveles de dependencia.La figura muestra de forma esquemática como se guardan los grafos. La estructura de datosque se utiliza es la clase ARRAY DIRECTED GRAPH16, que se declara en /be/com/depgraph.h. El tipo de dato que se utiliza para declarar las aristas es una unión de tres tiposdistintos, que son DEPV ARRAY para el grafo de dependencias entre arrays, LEVEL
  • 8. STRUCT para el de niveles de dependencia y DEP STRUCT para el utilizado engeneración de código.La clase DEPV ARRAY contiene una lista de vectores de dependencia, cada uno de ellosde tipo DEPV. Cada dimensión de un vector de dependencia guarda un elemento de tipoDEP, que es un entero de dieciséis bits organizado de la siguiente forma:Bit 15: indica si la distancia es constante.Bits 12-14: señalan la dirección de la dependencia.Bits 0-11: indica la distancia, en caso que esta sea constante, o un límite en caso contrario.Consistencia*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías deconsistencia que un sistema otorga sobre los valores que los procesos leen de los objetos,dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos puedenactualizar los objetos.*La principal interrogante que se plantea al caracterizar un modelo de consistencia dememoria es: cuándo se realiza un acceso de lectura sobre una posición de memoria, quéaccesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.*Cualquier lectura realizada antes.*La ultimo lectura.*Etc.PropietarioEl modelo de consistencia secuencial dice que todos los nodos deben ver las escriturassobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) deuna página y es sólo él quien puede escribir en ella. En caso que alguien más desee escribiren ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodoreceptor pasa a ser el nuevo propietario. La información de los propietarios de cada páginase mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indicaquién es su probable propietario.Las acciones de consistencia se generan en cuatro tipos de eventos, que corresponden amétodos del objeto.DSMPage: faltas de páginas locales para lectura (ReadFault), faltas de página locales paraescritura (WriteFault), faltas de página remotas para lectura (RemoteReadFault), y faltas depágina remotas para escritura (RemoteWriteFault). En cada uno de esos casos se toman lasacciones necesarias para invalidar páginas, enviar copias actualizadas a quien las pide, y
  • 9. actualizar los propietarios. La figura 1 muestra una descripción parcial de los objetosinvolucrados con el protocolo de consistencia secuencial.En el caso de la falta de lectura local, se envía una petición al probable propietario de lapágina utilizando el atributo probOwner; eventualmente el mensaje llegará al propietarioactual, y éste enviará un mensaje con la copia actualizada de la página. En el caso de lafalta de escritura local, se realiza el mismo procedimiento para hallar al propietario actualde la página, pero éste junto con enviar la copia actualizada, además invalida su copia localy todas las copias que ha distribuido entre los demás nodos mientras fue propietario, yentrega la propiedad de la página al nodo receptor. Las faltas remotas se utilizan para ubicaral propietario de la página. Cuando llega una falta remota, el nodo evalúa si él es elpropietario de la página; si es así, contesta con la acción de copia o invalidacióncorrespondiente, y si no es así, reenvía la petición a quien él cree que es el probablepropietario utilizando su atributo probOwner. La recepción de faltas remotas se hace através de un objeto receptor de mensajes llamado msgMgrThread, el cual transmite elevento de falta de página al objeto DSMPage correspondiente.CopiasEn el caso del protocolo de consistencia secuencial, se propone extraer de la especificacióndel objeto DSMPage la información relativa al probable propietario de la página y de losnodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo deconsistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolode consistencia. Esto significa eliminar de la especificación del objeto DSMPage el atributoprobOwner, y también los métodos que manejan la consistencia actualmente, ReadFault,WriteFault, RemoteReadFault, y RemoteWriteFault.El sistema operativo y el objeto msgMgrThread generan los puntos de entrada a lasacciones de consistencia. La detección de una falta de página por el sistema operativo o larecepción de un mensaje por el msgMgrThread corresponden a los puntos de unión delaspecto encargado del protocolo de consistencia secuencial con el resto del sistema. Elaspecto recibirá el nombre de sequentialAspect. La figura muestra las modificacionespropuestas y los puntos de unión para el aspecto sequentialAspect.El aspecto sequentialAspect será el encargado de invalidar las páginas y enviar las copiasactualizadas cuando reciba un mensaje de falta de página remota y el nodo sea elpropietario de la página, o bien de redirigir mensajes de consistencia hacia los probablespropietarios de las páginas cuando no lo sea y reciba este mismo mensaje. Además, tendráque generar mensajes solicitando la página que se requiera cuando se produzca una falta depágina local.Con esto el diseño del objeto DSMPage se hace más cohesionado, ya que ahora contienesólo la funcionalidad referente a la representación de una página de memoria y elmsgMgrThread se encarga sólo de la recepción de mensajes entre los nodos y transmisiónde estos mensajes hacia los objetos.
  • 10. 4.4.- Mcd en base a variablesLa compartición falsa se produce cuando dos procesos se pelean el acceso a la mismapágina de memoria, ya que contiene variables que requieren los dos, pero estas no son lasmismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relaciónexistente entre variables de la misma página.En los MCD basados en variables se busca evitar la compartición falsa ejecutando unprograma en cada CPU que se comunica con una central, la que le provee de variablescompartidas, administrando este cualquier tipo de variable, poniendo variables grandes envarias páginas o en la misma página muchas variables del mismo tipo, en este protocolo esmuy importante declarar las variables compartidas.En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulaciónde la info. Y repartida a través de la red, estos objetos serán definidos por el Programador ylas CPU´s cambiaran los estados según procedan con los accesos. 4.5.- Mcd en base a objetosUna alternativa al uso de páginas es tomar el objeto como base de la transferencia dememoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismotiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente.Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidoshan de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admitenprogramas no modulares y se consideran incompatibles.

×