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
Publicar un comentario