Вы находитесь на странице: 1из 10

Sistema Paralelo

Un sistema paralelo es aquel que se realiza al mismo tiempo que otro, siendo
ejecutados ambos de modo simultáneo. Cuando hablamos de sistemas paralelos en un
ordenador, nos referimos a aquellos procesos que se ejecutan y/o procesan a la vez,
anteponiéndose a los procesos lineales o secuenciales, que serán ejecutados de uno en
uno.

El sistema paralelo sólo es posible si disponemos de varias unidades de proceso,


generalmente núcleos o procesadores. Esto se debe a que los procesadores son
secuenciales, esto es, ejecutan las órdenes una por una, y por tanto no pueden
ejecutar dos a la vez. Para solucionar esto se han inventado diversas fórmulas, como
añadirles coprocesadores, derivar las operaciones a otros equipos conectados entre sí,
disponer de múltiples núcleos... etc. Vamos, en definitiva tener un sistema con una
estructura capaz de trabajar junta y compartir tareas, lo que se llama un proceso
cooperativo.

El sistema en paralelo tiene muchas ventajas sobre el sistema secuencial clásico.


Permite salvar el llamado cuello de botella, algo que sucede en los atascos y también
en el ordenador: si un proceso funciona lentamente, los demás deben esperar a que se
termine para ejecutarse, con lo cual el rendimiento del ordenador se verá afectado en
gran medida. Con un sistema en paralelo, aunque un proceso sea lento, el resto
continúan ejecutándose, lo que permite evitar este efecto. Sin embargo, el proceso en
paralelo tiene un gran inconveniente: es mucho más complejo, básicamente porque
para que un sistema trabaje en paralelo debes indicarle a donde derivar cada proceso,
y esta tarea requiere ser hecha de antemano, o al menos tomar decisiones en el
momento previo a ejecutar los procesos. Esto puede ralentizar el inicio de las tareas, al
requierir cálculos previos. Además algunas tareas pueden no ser divisibles, o el
programa haber sido diseñado para que los pasos se hagan uno a uno, con lo cual el
procesamiento paralelo lejos de ayudar puede entorpecer la ejecución.
Existen varios métodos para hacerlo: uno es descomponiendo cada proceso en
procesos más pequeños de los cuales se encargará cada núcleo individualmente (esto
es, dividir las tareas en otras más pequeñas) y otro sería derivar los procesos según el
tipo que sean hacia la unidad más adecuada para ejecutarlos. Pongamos un ejemplo
en donde se verá bien esto último: un programa que va a realizar dos tareas, tocar
música y hacer unos cálculos. Si disponemos de una tarjeta de sonido, la música irá a
ella para que se ejecute y los cálculos al coprocesador matemático. Cada tarea viaja
entonces a un sistema que las procesará muy eficientemente pues ha sido diseñado
con ese fin.

Como vemos, el proceso en paralelo es algo que se puede dar dentro de un ordenador
con un solo procesador, o bien en un ordenador con múltiples procesadores, e incluso
en múltiples ordenadores conectados entre si por medio de una red. En este sentido,
ya existen en Internet desde hace tiempo redes de ordenadores interconectados que
emplean los procesos paralelos para ahorrar tiempo y costes en proyectos de gran
envergadura.

Taxonomia de Flynn
En 1966 Michael Flynn propuso un mecanismo de clasificación de las computadoras. El
método de Flynn se basa en el número de instrucciones y de la secuencia de datos que
la computadora utiliza para procesar información. Puede haber secuencias de
instrucciones sencillas o múltiples y secuencias de datos sencillas o múltiples. Esto da
lugar a 4 tipos de computadoras, de las cuales solamente dos son aplicables a las
computadoras paralelas

Esquema de la Taxonomía de Flynn


Una instrucción, un dato (SISD)

En computación, SISD (del inglés Single Instruction, Single Data, en español: "una
instrucción, un dato") es un término que se refiere a una arquitectura computacional
en la que un único procesador ejecuta un sólo flujo de instrucciones, para operar sobre
datos almacenados en una única memoria. Se corresponde con la arquitectura de Von
Neumann.

Según Michael J. Flynn, SISD puede tener características del procesamiento


concurrente. La carga de instrucciones y la ejecución segmentada de instrucciones son
ejemplos comunes encontrados en las computadoras SISD más modernas.

Caracteristicas:

 La CPU procesa únicamente una instrucción por cada ciclo de reloj


 Únicamente un dato es procesado en cada ciclo de reloj
 Es el modelo más antiguo de computadora y el más extendido

Múltiples instrucciones, un dato (MISD):

En computación, MISD (del inglés Multiple Instruction, Single Data, en español:


"múltiples instrucciones, un dato") es un tipo dearquitectura computacional
(particularmente de computación paralela) donde muchas unidades funcionales
realizan diferentes operaciones en los mismos datos. Las arquitecturas segmentadas
pertenecen a este tipo, aunque en un extremo se podría llegar a decir que los datos son
diferentes después de ser procesados por cada etapa en el pipeline, con lo cual no
entraría en esta categoría.

Las máquinas tolerantes a fallos ejecutan la misma instrucción redundantemente para


detectar y corregir errores, utilizando task replication, son consideradas de este tipo. No
existen muchos ejemplos de esta arquitecura dado que las técnicas más comunes de
procesamiento de datos en paralelo suelen ser más apropiadas para MIMD y SIMD.
Específicamente, facilitan el escalamiento y el uso de recursos computacionales mejor
que MISD.

Características del modelo MISD:

 Cada unidad ejecuta una instrucción distinta


 Cada unidad procesa el mismo dato
 Aplicación muy limitada en la vida real

Una instrucción, múltiples datos (SIMD)

En computación, SIMD (del inglés Single Instruction, Multiple Data, en español: "una
instrucción, múltiples datos") es una técnica empleada para conseguir paralelismo a
nivel de datos.

Los repertorios SIMD consisten en instrucciones que aplican una misma operación
sobre un conjunto más o menos grande de datos. Es una organización en donde una
única unidad de control común despacha las instrucciones a diferentes unidades de
procesamiento. Todas éstas reciben la misma instrucción, pero operan sobre
diferentes conjuntos de datos. Es decir, la misma instrucción es ejecutada de manera
sincronizada por todas las unidades de procesamiento.
Características del modelo SIMD:

 Todas las unidades ejecutan la misma instrucción


 Cada unidad procesa un dato distinto
 Todas las unidades operan simultáneamente

Múltiples instrucciones, múltiples datos (MIMD)

En computación, MIMD (del inglés Multiple Instruction, Multiple Data, en español


"múltiples instrucciones, múltiples datos") es una técnica empleada para lograr
paralelismo. Las máquinas que usan MIMD tienen un número de procesadores que
funcionan de manera asíncrona e independiente. En cualquier momento, cualquier
procesador puede ejecutar diferentes instrucciones sobre distintos datos. La
arquitectura MIMD pueden utilizarse en una amplia gama de aplicaciones como el
diseño asistido, simulación, modelado y en interruptores. Las computadoras MIMD
pueden categorizarse por tener memoria compartida o distribuida, clasificación que se
basa en cómo el procesador MIMD accede a la memoria. La memoria compartida de las
máquinas puede estar basada en buses, extensiones, o de tipo jerárquico. Las máquinas
con memoria distribuida pueden tener esquemas de interconexión en hipercubo o malla
Características del modelo MIMD:

 Cada unidad ejecuta una instrucción distinta


 Cada unidad procesa un dato distinto
 Todas las unidades operan simultáneamente

Clasificaciones Adicionales

También existe una extensión común a esta taxonomía que es:

 Un programa, múltiples datos (SPMD) - múltiples procesadores autónomos


que trabajan simultáneamente sobre el mismo conjunto de instrucciones
(aunque en puntos independientes) sobre datos diferentes. También se le
llama 'un proceso, múltiples datos'.

 Múltiples programas, múltiples datos (MPMD) - múltiples procesadores


autónomos que trabajan simultáneamente sobre al menos dos programas
independientes. Normalmente este sistema elige a un nodo para ser el host o
administrador, que corre el programa y otorga los datos a todos los demás
nodos que ejecutan un segundo programa. Esos demás nodos devuelven sus
resultados directamente al administrador. Un ejemplo podría ser la consola de
Sony PlayStation 3, que tiene la arquitectura de procesador SPU/PPU.
Arquitecturas Paralelas
• Modelo estándar de computación:
Arquitectura de Von Neumann.
•CPU única.
• Ejecuta un programa (único).
• Accede a memoria.
•Memoria única. Neumann János
• Operaciones read/write.
•Dispositivos.
• Modelo robusto, independiza al programador de la arquitectura subyacente.
• Permitió el desarrollo de las técnicas de programación (estándar).

Arquitectura de Von Neumann


•Extendiendo el modelo a la computación paralela, para lograr abstraer el hardware
subyacente.
•Existen varias alternativas, genéricamente contempladas en el modelo del
multicomputador:
•Varios nodos (CPUs de Von Neumann).
•Un mecanismo de interconexión entre los nodos.
Concurrencia y Granularidad

Concurrencia:

La concurrencia es la capacidad del CPU para procesar más de un proceso al mismo


tiempo, ¿simple no? Pero que implica esto realmente. Pues bien, para comprender
esto es necesario entender cómo funciona un procesador. Un procesador puede
procesar al mismo tiempo el mismo número de procesos que el número de CORES que
tiene, de esta forma, si un procesador tiene un CORE, entonces solo podrá ejecutar un
proceso a la vez, por otro parte, si tenemos 8 CORES, entonces podremos ejecutar
hasta 8 procesos al mismo tiempo.

Ya con este punto claro, solo quedaría agregar que, en la concurrencia, los procesos en
ejecución no tienen por qué estar relacionados, es decir, cualquiera puede iniciar y
terminar en el momento que sea, y el resultado de uno no afecta al otro.
Granularidad

La Granularidad sigue la filosofía de “divide y vencerás”, ya que consiste en tomar un


único problema, y mediante concurrencia llegar a una solución más rápido. La
Granularidad lo que hace es tomar el problema inicial, dividir el problema en fracciones
más pequeñas, y luego cada fracción es procesada de forma concurrente, aprovechando
al máximo la capacidad del procesador para resolver el problema. La principal diferencia
de la granularidad contra la concurrencia es que, en la granularidad, todos los procesos
concurrentes están íntimamente relacionados a resolver el mismo problema, de tal
forma que el resultado de los demás procesos afecta al resultado final.

NOTA: En la granularidad debe de haber un paso final que se encargue de unir los
resultados de todos los procesos para poder arrojar un resultado final.

Puede resultas complicado entenderlo a primera vista, pero observemos la imagen


anterior. Primero que nada, llega un proceso grande (Amarillo), el cual es divididos en
cuatro partes (Naranja), las cuales coinciden con el número de CORES del
procesador(Verde). Ahora bien, por cada CORE disponible se lanza un proceso
concurrente para resolver una fracción del problema. Cuando el proceso de un CORE
termina, deja su resultado como una parte del resultado final (Naranja), así al terminar
todos los procesos concurrentes, tenemos un resultado final (Amarillo).
Conclusiones
Brandon La Computación Paralela sin lugar a dudas constituye un área que no debe ser pasada
por alto como una alternativa viable para acelerar los procesos de cómputo. Su creciente uso y
potenciación demuestran su eficiencia ante los límites de procesamiento teórico que pueden
ser alcanzados en algunos años en la fabricación de microprocesadores. Si bien en principio fue
un área prácticamente circunscrita al sector científico con la implantación en gigantescos
clústeres de computadoras, ya ha comenzado a potenciarse en el sector empresarial, donde los
recursos disponibles de la pequeña y mediana empresa son aún insuficientes para suplir las
necesidades de cómputo. La competitividad conlleva al desarrollo de sistemas informáticos
mucho más exigentes.

Вам также может понравиться