Paralelismo

Universidad Nacional AUTÓNOMA de Honduras
ParalelismoParalelismo.pdf


Danny Noel Ramírez Flores 20061006296
03/05/2017


Se describe que es el paralelismo en el procesador y tipos de paralelismo




Introducción


Definimos como procesamiento paralelo al concepto de agilizar la ejecución de un programa mediante su división en fragmentos que pueden ser ejecutados simultáneamente, cada uno en un procesador. De este modo un programa que se ejecute en N _procesadores podría ejecutarse N _veces más rápido que usando un solo procesador, al menos en teoría...

El uso de la computación paralela se vuelve cada día en más grande y más rápida. El paralelismo se ha usado para muchas temáticas diferentes, desde bioinformática, para hacer plegamiento de proteínas, hasta economía  para hacer simulaciones matemáticas.

Paralelismo

Es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir que puede realizar varis cálculos al mismo tiempo, basado  en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados e paralelo.

Tipos de paralelismo

·         A nivel de bit
·         Nivel de instrucción
·         Nivel de datos
·         Nivel de tareas
El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para computación de alto rendimiento, teniendo en cuenta las generaciones de procesadores y sus características.

Ventajas:

1.       Brinda  a las empresas, instituciones y usuarios  en general el beneficio de la velocidad.
2.       Ventaja competitiva, provee una mejora de los tiempos para la producción de nuevos productos y servicios.
3.       Colaboración y flexibilidad  operacional

Desventajas

1.        Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos.
2.       Encontrar hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes  de costos, seguridad y disponibilidad.

  Clasificación de los sistemas paralelos en la informática

Flujo de control; las instrucciones se van ejecutando según el orden en el que se encuentran en memoria.
Flujo de datos; el flujo de ejecución es conducido por los datos; una instrucción será ejecutada cuando los operandos estén disponibles.
Reducción; la ejecución se realiza por demanda, una instrucción será ejecutada cuando otra necesite sus resultados. Son una clase de las de flujo de datos.
·         SISD; arquitectura de simple construcción sobre simple dato. Serie en datos e instrucciones, arquitectura Von Neumann.
·         SIMD; un solo flujo de instrucciones y múltiples en datos. Computadores matriciales. Una unidad de control que gobierna varias unidades aritmético-lógicas.
·         MISD; varios flujos de instrucciones y uno solo de datos. Arquitectura no implementada, consecuencia teórica de la clasificación. Superestructura Pipeline, varios conjuntos de unidad de control más unidad aritmético lógica realizan partes de una operación sobre un flujo de datos.
·         MIMD; arquitectura multiprocesador con varios flujos tanto de instrucciones como de datos. Varios procesadores serie convencionales que manejan cada uno un flujo de instrucciones sobre un flujo de datos.

Sucesos concurrentes del proceso de computación

·         Sucesos paralelos, pueden darse en diferentes recursos durante el mismo intervalo de tiempo.
·         Sucesos simultáneos, aquellos que se producen en el mismo instante de tiempo.
·         Sucesos solapados, los que se producen en intervalos de tiempo superpuestos.
·         Granularidad, tamaño de tarea computable.
·         Planificación, asignación de recursos a las tareas.
·         Comunicación, sincronización de tareas dependientes.
·         Paralelismo de grano grueso, programa o trabajo y modulo.
·         Paralelismo de grano medio, modulo proceso y task.
·         Paralelismo de grano fino, bucle e Instrucción sentencia.
·         Paralelismo a nivel de procesador, segmentación, división funcional, procesadores vectoriales.
·         Paralelismo en multiprocesadores, memoria compartida, memoria distribuida.
·         Paralelismo en multicomputadores, clusters, sistemas distribuidos.

Segmentación: encauzamiento o pipeline

Es una técnica para explotar concurrencia en sistemas monoprocesador. Consiste en dividir una función en subfunciones independientes que pueden realizarse de manera concurrente (solapados). En un instante de tiempo determinado se está trabajando a la vez sobre un número de elementos igual al número de etapas.
Es una estructura segmentada si cada unidad independiente procesa una subfuncion en un periodo T/n, en el tiempo T se habrán podido procesar n funciones

La segmentación se puede aplicar a cualquier operación compleja concretamente en la unidad de control y en la ALU.

Cauce de procesamiento: cuantas subfuciones o elementos de procesamiento se están procesando a la vez.
Condiciones que permiten segmentar una función:
·         Debe admitir su descomposición en etapas. Es necesario que las entradas de una etapa estén determinadas únicamente por la salida de la anterior.
·         Cada etapa debe poder ser realizada por un circuito específico de forma más rápida que el conjunto de proceso.
·         Los tiempos de ejecución de cada etapa deben ser parecidos.
Tipos de cauce:
·         Operadores aritméticos segmentados: ejecutan una o varias op. de la ALU y pueden ser lineales o no lineales (cíclicos: procesamiento iterativos)
·         Cauces para el flujo de instrucciones: Son lineales y algunas de sus fases puede subsegmentarse. Caso común; ejecución

Procesadores vectoriales: maquinas segmentadas con unidades de ejecución vectoriales (especialmente diseñadas para optimizar las operaciones con estructuras vectoriales)
·         Vector: conjunto de escalares del mismo tipo almacenados en memoria
·         Procesamiento vectorial: aplicaciones de procesos sobre vectores
·         Operaciones vectoriales: repetición de la misma operación sobre un conjunto de datos.

Sistemas multiprocesadores.

Contiene dos o más unidades de procesamiento que comparten acceso a módulos comunes de memoria de E/S y otros dispositivos periféricos.
·         Estrechamente acoplados. Los procesadores se comunican entre sí a través de una MP compartida.
·         Ligeramente acoplados. Cada procesador posee un conjunto de sistemas de E/S y una gran memoria local propia. Los procesadores se comunican por medio de del paso de mensajes.
·         Maestro esclavo
Sistemas multicomputador. Conjunto de computadores independientes (Con sus propios recursos) que se comunican entre sí a través del paso del mensajes a través de la red de interconexión.

El paralelismo de los computadores en dos grandes ramas:
·         Paralelismo implícito o de bajo nivel
·         Paralelismo explícito o de alto nivel
Las técnicas de paralelismo implícito están dirigidas al reforzamiento del nivel de concurrencia dentro de la CPU, de manera que queda oculta a la arquitectura del ordenador. Por lo tanto pueden ser vistos como sistemas de un sólo procesador.
Paralelismo Implícito:
·         Segmentación
·         Procesadores Auxiliares
·         Múltiples ALUs




El paralelismo explícito o de alto nivel hace referencia a aquellos sistemas en los cuales se interconectan varios procesadores para cooperar en la ejecución de los programas de aplicación.
Se trata de sistemas que ofrecen una infraestructura explícita para el desarrollo del software del sistema y aplicaciones que exploten el paralelismo. Centrándonos en las arquitecturas MIMD con memoria distribuida.
Clasificación Paralelismo Explícito:

Paralelismo Explícito
1.       MISD (Procesadores Vectoriales)
2.       SIMD (Procesadores Matriciales)
3.       MIMD
3.1.    Memoria Compartida Multiprocesadores (SMP)
3.2.    Memoria Distribuida Multicomputadores (Cluster)


Una vez resuelto el sistema de intercomunicación física de los equipos, deben abordarse los mecanismos para lograr la coordinación entre los procesadores. Analizamos las características básicas de los dos modelos de interacción entre procesadores (paso de mensajes y memoria compartida).

Paralelismo Explícito o de Alto Nivel

El paralelismo explícito o de alto nivel hace referencia a aquellos sistemas en los cuales se interconectan varios procesadores para cooperar en la ejecución de los programas de aplicación.
Se trata de sistemas que ofrecen una infraestructura explícita para el desarrollo del software del sistema y aplicaciones que exploten el paralelismo.

La forma más común de clasificar los sistemas de procesadores paralelos fue la introducida por Flynn, la cual establece las siguientes categorías de computadores:

·         SISD (“Single Instruction Single Data”, Flujo de instrucciones único y flujo de datos único): Un procesador interpreta una secuencia de instrucciones para operar con los datos almacenados en una memoria. De este modo en cualquier momento sólo se está ejecutando una única instrucción. Esta categoría responde a la arquitectura de Von Neumann, también llamados computadores serie escalares.
·         SIMD (“Single Instruction Multiple Data”, Flujo de instrucciones único y flujo de datos múltiple): Una única instrucción es aplicada sobre diferentes datos al mismo tiempo. En las máquinas de este tipo un cierto número de elementos procesadores son controlados y sincronizados mediante una unidad de control. Cada elemento procesador tiene una memoria asociada, de manera que cada instrucción es ejecutada simultáneamente por todos los elementos procesadores pero sobre un conjunto de datos diferentes. Debido a su utilidad en el procesamiento de matrices, a este tipo de máquinas se les llama procesadores matriciales.
·         MISD (“Multiple Instruction Single Data”, Flujo de instrucciones múltiple y flujo de datos único): Varias instrucciones actúan simultáneamente sobre un único trozo de datos. Este tipo de máquinas se pueden interpretar de dos maneras. En principio, podemos considerarlas como máquinas formadas por varias unidades de procesamiento, las cuales reciben instrucciones distintas que operan sobre los mismos datos. Esta clase de arquitectura ha sido clasificada por numerosos arquitectos de computadores como impracticable o imposible, y en estos momentos no existen ejemplos que funcionen siguiendo este modelo. Otra forma de interpretar el modelo MISD es considerarlo como una clase de máquinas donde un mismo flujo de datos fluye a través de numerosas unidades de procesamiento. Arquitecturas altamente segmentadas, como la que poseen los arrays sistólicos o los procesadores vectoriales, son clasificadas a menudo bajo esta categoría. Estas arquitecturas realizan el procesamiento vectorial a través de una serie de etapas, cada una ejecutando una función particular produciendo un resultado intermedio. La razón por la cual dichas arquitecturas son clasificadas como MISD es que los elementos de un vector pueden ser considerados como pertenecientes al mismo dato, y todas las etapas del cauce representan múltiples instrucciones que son aplicadas sobre ese vector.
·         MIMD (“Multiple Instruction Multiple Data”, Flujo de instrucciones múltiple y flujo de datos múltiple): Un conjunto de unidades de procesamiento ejecuta simultáneamente diferentes secuencias de instrucciones sobre conjuntos de datos diferentes. Es la organización que poseen los sistemas multiprocesadores y multicomputadores en general.

SPMD es una versión restringida de MIMD en la cual todos los procesadores ejecutan el mismo programa. Al contrario que SIMD, cada procesador ejecuta una secuencia de instrucciones diferente.
En la organización MIMD, los procesadores son de uso general, puesto que deben ser capaces de procesar todas las instrucciones necesarias para realizar las transformaciones apropiadas de los datos. Las arquitecturas MIMD se pueden subdividir además según la forma que tienen los procesadores para comunicarse. Si los procesadores comparten una memoria común, entonces cada procesador accede a los programas y datos almacenados en la memoria compartida, y los procesadores se comunican unos con otros a través de esa memoria. Este tipo de sistemas se conocen como multiprocesadores fuertemente acoplados o simplemente multiprocesadores.

Si cada procesador tiene una memoria dedicada, entonces cada elemento de proceso es en sí mismo un computador. La comunicación entre los computadores se realiza a través de caminos fijos o mediante algún mecanismo de conmutación de mensajes. Este tipo de sistemas se conocen como multiprocesadores débilmente acoplados o multicomputadores.











Conclusiones


Un sistema de múltiples procesadores que trabajen de forma paralela en un problema debería ser más asequible que un único procesador de alta gama trabajando en el mismo.
Hay gran cantidad de sistemas paralelos en teoría, pero no todos pueden ser llevados a la práctica hoy en día debido a las limitantes tecnológicas actuales.
El uso y aplicación de  un sistema u otro dependerá del problema dado y de las limitantes lógicas, físicas y tecnológicas que se enfrenten.

Bibliografía

(s.f.). Recuperado el 02 de mayo de 2017, de www.dia.eui.upm.es: http://www.dia.eui.upm.es/asignatu/arq_com/Paco/1-Introduccion.pdf
beta.redes-linux.com. (s.f.). Recuperado el 03 de mayo de 2017, de beta.redes-linux.com: http://beta.redes-linux.com/manuales/cluster/mpi-spanish.pdf
ecured. (s.f.). Recuperado el 1 de mayo de 2017, de https://www.ecured.cu: https://www.ecured.cu/Paralelismo_(_inform%C3%A1tica)

galeon. (s.f.). Recuperado el 03 de mayo de 2017, de rubmarin.galeon.com: http://rubmarin.galeon.com/sisd.htm

Comentarios

Entradas populares